Mission Carthage

Accueil › Devoirs › 2ème TI

Devoir de contrôle n°1 : 1er trimestre

2ème année Technologies de l'informatique (TI), 1er trimestre. Durée : 1 heure. Sur 20 points.

Les algorithmes s'écrivent en notation algorithmique, les programmes en Python. Barème sur 20 points.

Exercice 1 : lire un programme (5 pts)

On considère le programme Python suivant.

a = 17
b = 5
c = a // b
d = a % b
if c > d:
    print("A")
else:
    print("B")
x = a / b
print(c, d, x)
s = ""
for i in range(1, 5):
    s = s + str(i * 2)
print(s)

Exercice 2 : nombre d'Armstrong (7 pts)

Un nombre à trois chiffres est un nombre d'Armstrong si la somme des cubes de ses chiffres est égale à lui-même. Exemple : 153 = 1³ + 5³ + 3³ = 1 + 125 + 27.

Écrire un programme qui lit un entier n compris entre 100 et 999 (la saisie est répétée tant que n n'est pas dans cet intervalle), puis affiche « n est un nombre d'Armstrong » ou « n n'est pas un nombre d'Armstrong ».

Exemple : si l'utilisateur saisit 50, puis 1000, puis 370, le programme affiche : 370 est un nombre d'Armstrong

Exercice 3 : une chaîne de caractères (8 pts)

Écrire un programme qui lit une chaîne ch non vide et affiche, sur trois lignes : sa longueur, son nombre de voyelles (a, e, i, o, u, y, en majuscule ou en minuscule) et la chaîne lue à l'envers.

Exemple : pour Carthage, le programme affiche :

Longueur : 8
Voyelles : 3
Inversée : egahtraC

Correction détaillée

Ce devoir est un exemple gratuit : sa correction est ouverte à tous.

Exercice 1 : lire un programme

1) Affichage

On calcule les variables ligne par ligne : c = 17 // 5 = 3 et d = 17 % 5 = 2. Comme 3 > 2, le programme affiche A. Ensuite x = 17 / 5 = 3.4 et on affiche c, d et x sur une même ligne. La boucle ajoute à s les textes "2", "4", "6", "8" (i prend les valeurs 1, 2, 3, 4).

a = 17
b = 5
c = a // b
d = a % b
if c > d:
    print("A")
else:
    print("B")
x = a / b
print(c, d, x)
s = ""
for i in range(1, 5):
    s = s + str(i * 2)
print(s)

Affichage : A puis 3 2 3.4 puis 2468.

2) Rôle de c et de d

c est le quotient de la division entière de 17 par 5 et d en est le reste : 17 = 5 × 3 + 2.

3) Types

x est de type réel (float) car l'opérateur / donne toujours un réel. s est une chaîne de caractères (str), car on lui ajoute des textes obtenus avec str(). Ce n'est pas le nombre 2468 mais le texte "2468".

Erreurs fréquentes

Exercice 2 : nombre d'Armstrong

Analyse

Tableau de déclaration des objets (TDO)

Algorithme

0) Début Armstrong
1) Répéter
     Ecrire("Donner n : ")
     Lire(n)
   Jusqu'à (n >= 100) ET (n <= 999)
2) c ← n div 100
3) d ← (n div 10) mod 10
4) u ← n mod 10
5) Si (c^3 + d^3 + u^3 = n) Alors
     Ecrire(n, " est un nombre d'Armstrong")
   Sinon
     Ecrire(n, " n'est pas un nombre d'Armstrong")
   FinSi
6) Fin Armstrong

Programme Python

Python n'a pas de boucle « répéter … jusqu'à » : on lit n une première fois, puis on relit tant que la condition d'arrêt est fausse. La condition devient donc l'inverse de celle du Jusqu'à : n < 100 ou n > 999.

n = int(input())
while n < 100 or n > 999:
    n = int(input())
c = n // 100
d = (n // 10) % 10
u = n % 10
if c ** 3 + d ** 3 + u ** 3 == n:
    print(n, "est un nombre d'Armstrong")
else:
    print(n, "n'est pas un nombre d'Armstrong")

Vérification à la main

Pour 123 : 1³ + 2³ + 3³ = 1 + 8 + 27 = 36, qui est différent de 123. Pour 370 : 27 + 343 + 0 = 370.

Erreurs fréquentes

Exercice 3 : une chaîne de caractères

Analyse

TDO

Algorithme

0) Début Chaine
1) Lire(ch)
2) nv ← 0
3) Pour i de 0 à long(ch) - 1 Faire
     Si pos(minus(ch[i]), "aeiouy") <> -1 Alors
       nv ← nv + 1
     FinSi
   FinPour
4) inv ← ""
5) Pour i de long(ch) - 1 à 0 (pas = -1) Faire
     inv ← inv + ch[i]
   FinPour
6) Ecrire("Longueur : ", long(ch))
7) Ecrire("Voyelles : ", nv)
8) Ecrire("Inversée : ", inv)
9) Fin Chaine

Programme Python

ch = input()
nv = 0
for i in range(len(ch)):
    if ch[i].lower() in "aeiouy":
        nv = nv + 1
inv = ""
for i in range(len(ch) - 1, -1, -1):
    inv = inv + ch[i]
print("Longueur :", len(ch))
print("Voyelles :", nv)
print("Inversée :", inv)

Remarques

Sujet original écrit pour Mission Carthage, dans le style des devoirs du 1er trimestre.

Tout le programme : 2ème année Technologies de l'informatique (TI)