الرئيسية › الدروس › الدوال والإجراءات
الدوال والإجراءات (fonctions وprocédures)
قسّم مشكل كبير لقطع صغيرة تتعاود تستعملها.
دروس هذا الفصل
- الدوال (Fonctions)
- الإجراءات (Procédures)
- التحليل إلى وحدات
الدرس 10.1 : الدوال (Fonctions)
الـ sous-programme هو برنامج صغير عندو اسم تنجم تناديه وقت ما تحب، قدّاش ما تحب من مرّة. يغنيك على نسخ نفس الكود. فما زوز أنواع: الدوال (fonctions) (ترجّع قيمة) والإجراءات (procédures) (تعمل عمل).
كتابة دالة
- Algorithme:
DEF FN nom (paramètre : Type) : Type du résultat، corps بينDébutوFin، وRetourner valeur. - Python:
def nom(paramètre):وبعدها bloc مزاح فيهreturn valeur. - النداء:
carre(7): القيمة المرجّعة تعوّض النداء في الـ expression.
الـ paramètres
الـ paramètres هي القيم اللي الدالة تاخذها (الـ entrées). return تعطي النتيجة وتوقّف الدالة: السطور اللي بعد return تتخدم ما تتقراش.
انتبه : دالة من غير return ترجّع None (والو). كان البرنامج متاعك يكتب None، أكيد نسيت الـ return.
بـ Python
نعرّفو الدالة قبل ما نستعملوها. البرنامج الرئيسي تحتها.
def carre(x):
return x * x
print("Donner un nombre :")
n = int(input())
print("Son carré est", carre(n))
بـ algorithme
الدالة تتكتب قبل الـ algorithme الرئيسي.
DEF FN carre (x : Entier) : Entier
Début
Retourner x * x
Fin
Algorithme Principal
Début
Ecrire("Donner un nombre :")
Lire(n)
Ecrire("Son carré est ", carre(n))
Fin
TDO
Objet | Type/Nature
n | Entier
الدرس 10.2 : الإجراءات (Procédures)
الـ procédure تعمل عمل (تكتب، تبدّل…) أما ما ترجّع والو. نناديوها كيما تعليمة. في الـ algorithme: DEF PROC nom (paramètres). في Python، هي دالة من غير return.
- Fonction: نستعملوها في expression (
x ← carre(3) + 1). - Procédure: نناديوها وحدها (
bonjour("Amira")).
نصيحة : قاعدة: كان الـ sous-programme لازم يعطي نتيجة للبرنامج الرئيسي، هو دالة. كان لازم برك يكتب ولا يبدّل حاجة، هو procédure.
انتبه : المتغيّرات اللي تتصنع داخل sous-programme هي locales: موجودة برك وقت يتخدم. البرنامج الرئيسي ما يشوفهاش.
بـ Python
الـ procédure bonjour تتنادى مرّتين، بزوز paramètres مختلفين.
def bonjour(nom):
print("Bonjour", nom)
bonjour("Amira")
bonjour("Sami")
بـ algorithme
الـ procédure تتنادى بإسمها برك.
DEF PROC bonjour (nom : Chaîne)
Début
Ecrire("Bonjour ", nom)
Fin
Algorithme Principal
Début
bonjour("Amira")
bonjour("Sami")
Fin
الدرس 10.3 : التحليل إلى وحدات
الـ analyse modulaire معناها نقسّمو مشكل لـ modules: كل module هو sous-programme يعمل حاجة وحدة. البرنامج الرئيسي يناديهم بالترتيب الصحيح. أسهل في الكتابة والاختبار والتصليح.
الطريقة
- اقرا الـ énoncé واكتب شنوّة لازم تحسب وشنوّة لازم تكتب.
- دوّر على المهام الصغيرة اللي تتعاود: « هذا العدد أولي؟ » هو module مليح.
- اكتب كل module واختبرو وحدو قبل ما تجمّعهم.
نصيحة : في الفرض، يطلبو منك برشا تعطي الـ TDO ودور كل module. تعوّد تكتب في جملة وحدة شنوّة يعمل كل sous-programme.
بـ Python
الـ module est_premier يجاوب على سؤال وحيد. البرنامج الرئيسي يعدّ الأعداد الأولية من 1 لـ n.
def est_premier(n):
if n < 2:
return False
for d in range(2, n):
if n % d == 0:
return False
return True
n = int(input())
c = 0
for k in range(1, n + 1):
if est_premier(k):
c = c + 1
print("Nombre de premiers :", c)
بـ algorithme
المتغيّرات الـ locales متاع الـ module تتعرّف في الـ TDO متاعو، قبل الـ Début متاعو.
DEF FN est_premier (n : Entier) : Booléen
TDO
Objet | Type/Nature
d | Entier
Début
Si n < 2 Alors
Retourner faux
FinSi
Pour d de 2 à n - 1 Faire
Si n mod d = 0 Alors
Retourner faux
FinSi
FinPour
Retourner vrai
Fin
Algorithme Premiers
Début
Lire(n)
c ← 0
Pour k de 1 à n Faire
Si est_premier(k) Alors
c ← c + 1
FinSi
FinPour
Ecrire("Nombre de premiers : ", c)
Fin
TDO
Objet | Type/Nature
n, c, k | Entier
تدرّب مجانًا
كل درس فيه 3 تمارين مجانية مع تلميحات باش تطبّق الفصل هذا مع هنّيبوت.
← الفصل اللي قبل : الجداول (Tableaux) · الفصل اللي بعد : صفحات الويب: HTML →
كل الفصول · شوف فروض 2 تكنولوجيا المصلّحة
الدروس كتبناها لـ Mission Carthage على أساس البرنامج الرسمي. الأستاذ متاعك يبقى المرجع.