الرئيسية › الامتحانات › 2 تكنولوجيا الإعلامية
Devoir de contrôle n°1 : 1er trimestre
اكتب البرامج متاعك بـ Python ولا بالـ algorithme وثبّت فيهم في بلاصتهم، وبعد حلّ الإصلاح تمرين بتمرين.
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)
- 1) Donner l'affichage exact produit par ce programme (3 pts).
- 2) Que représentent c et d par rapport à a et b ? (1 pt)
- 3) Donner le type de x et le type de s. (1 pt)
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 ».
- 1) Donner l'algorithme avec son tableau de déclaration des objets (4 pts).
- 2) Traduire l'algorithme en Python (3 pts).
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
- 1) Donner l'analyse du problème : les résultats et les traitements (2 pts).
- 2) Écrire l'algorithme (3 pts).
- 3) Traduire en Python (3 pts).
الإصلاح المفصّل
الامتحان هذا مثال بلاش: الإصلاح متاعو مفتوح للناس الكل.
Exercice 1 : lire un programme
1) شنوّة يطلّع البرنامج
نحسبو الـ variables سطر بسطر: c = 17 // 5 = 3 وd = 17 % 5 = 2. خاطر 3 > 2، البرنامج يطلّع A. وبعد x = 17 / 5 = 3.4 ونطلّعو c وd وx في نفس السطر. الـ boucle تزيد لـ s النصوص "2" و"4" و"6" و"8" (i ياخو القيم 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)
اللي يطلّعو البرنامج: A وبعد 3 2 3.4 وبعد 2468.
2) الدور متاع c وd
c هو الـ quotient متاع القسمة الصحيحة متاع 17 على 5، وd هو الباقي: 17 = 5 × 3 + 2.
الأفكار الأساسية:
- c هو الخارج متاع القسمة الصحيحة متاع 17 على 5.
- d هو الباقي متاع القسمة هذي: 17 = 5 × 3 + 2.
3) الأنواع
x نوعو réel (float) خاطر الـ opérateur / ديما يعطي réel. وs هي chaîne de caractères (str)، خاطر نزيدولها نصوص جايين من str(). موش العدد 2468، النص "2468".
الغلطات اللي ترجع برشا
- تكتب 3.4 لـ c: الـ // يعطي entier موش réel.
- تجمع الأعداد (2 + 4 + 6 + 8 = 20) في بلاصة ما تلصقهم: s هي chaîne، والـ + يلصق (concatène).
Exercice 2 : nombre d'Armstrong
التحليل
- النتيجة: ميساج يتبدّل حسب المقارنة بين n ومجموع الـ cubes متاع الأرقام.
- رقم المئات: c = n div 100.
- رقم العشرات: d = (n div 10) mod 10.
- رقم الآحاد: u = n mod 10.
- قراءة مراقبة (saisie contrôlée): نعاودو نقراو لين n يكون بين [100, 999].
الـ algorithme
Algorithme Armstrong
Début
Répéter
Ecrire("Donner n : ")
Lire(n)
Jusqu'à (n >= 100) ET (n <= 999)
c ← n div 100
d ← (n div 10) mod 10
u ← n mod 10
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")
Fin Si
Fin
| Objet | Type/Nature |
|---|---|
| n, c, d, u | Entier |
البرنامج بـ Python
Python ما فيهاش boucle « répéter … jusqu'à »: نقراو n مرّة لولة، وبعد نعاودو نقراو ما دام شرط الوقوف غالط. يعني الشرط يولّي العكس متاع شرط الـ Jusqu'à: n < 100 ولا 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 * c * c + d * d * d + u * u * u == n:
print(n, "est un nombre d'Armstrong")
else:
print(n, "n'est pas un nombre d'Armstrong")
التثبّت باليد
لـ 123: 1³ + 2³ + 3³ = 1 + 8 + 27 = 36، وهو موش 123. ولـ 370: 27 + 343 + 0 = 370.
الغلطات اللي ترجع برشا
- تنسى الـ saisie contrôlée ولا تقلب شرط الوقوف (تحطّ نفس شرط الـ Jusqu'à في الـ while).
- تكتب c * c * c + d * d * d + u * u * u = n بـ = وحدة: باش تقارن تكتب ==.
- تستعمل n / 100: تاخو réel. للأرقام نستعملو // (div) و% (mod).
Exercice 3 : une chaîne de caractères
التحليل
- النتائج: الطول، عدد الـ voyelles nv، والـ chaîne المقلوبة inv.
- الطول ناخذوه بـ long(ch) (len(ch) في Python).
- باش نعدّو الـ voyelles، نتعدّاو على المواقع من 0 لـ long(ch)-1 ونثبّتو كان الحرف، بعد ما نردّوه majuscule، موجود في « AEIOUY ».
- باش نقلبو، نتعدّاو على الـ chaîne من الآخر للأوّل ونزيدو كل حرف لـ inv.
الـ algorithme
Algorithme Chaine
Début
Lire(ch)
nv ← 0
Pour i de 0 à long(ch) - 1 Faire
Si pos(majus(ch[i]), "AEIOUY") <> -1 Alors
nv ← nv + 1
Fin Si
Fin Pour
inv ← ""
Pour i de long(ch) - 1 à 0 (pas = -1) Faire
inv ← inv + ch[i]
Fin Pour
Ecrire("Longueur : ", long(ch))
Ecrire("Voyelles : ", nv)
Ecrire("Inversée : ", inv)
Fin
| Objet | Type/Nature |
|---|---|
| ch, inv | Chaîne |
| nv, i | Entier |
البرنامج بـ Python
ch = input()
nv = 0
for i in range(len(ch)):
if ch[i].upper() 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)
ملاحظات
- range(len(ch) - 1, -1, -1) يبدا من آخر indice ويوقف في 0: الحد -1 ما يدخلش.
- من غير .upper()، الـ voyelles الصغار (minuscules) ما يتحسبوش (a موش هو A).
- الـ indices متاع chaîne يبداو من 0: آخر حرف هو ch[len(ch) - 1]، موش ch[len(ch)] اللي يعمل IndexError.
موضوع أصلي كتبناه لـ Mission Carthage، على نفس الشكل متاع امتحانات القسم. الأستاذ متاعك يبقى هو المرجع.
البرنامج الكل: السنة الثانية ثانوي تكنولوجيات الإعلامية · عاود اقرا الكور · الامتحانات الكل