0% ont trouvé ce document utile (0 vote)
254 vues31 pages

Cours Algo

Ce document décrit l'histoire de l'algorithme et sa nécessité dans la résolution de problèmes. Il présente également la structure générale d'un algorithme et ses éléments constitutifs tels que le corps, les structures de contrôle et les instructions de base.

Transféré par

Youcef Beskri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
254 vues31 pages

Cours Algo

Ce document décrit l'histoire de l'algorithme et sa nécessité dans la résolution de problèmes. Il présente également la structure générale d'un algorithme et ses éléments constitutifs tels que le corps, les structures de contrôle et les instructions de base.

Transféré par

Youcef Beskri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬

‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫الفصل األول‪ :‬تقديم الصياغة المتبعة‬


‫ضرورة الصياغة الخوارزمية‬ ‫‪.1‬‬
‫تقديم الصياغة المتبعة‬ ‫‪.2‬‬
‫هيكل الخوارزمي (‪)Structure d'un algorithme‬‬ ‫‪1.2‬‬
‫جسد الخوارزمي ( ‪)Le corps de l'algorithme‬‬ ‫‪2.2‬‬
‫تراكيب المراقبة ( ‪)Les structures de contrôle‬‬ ‫أ‪.‬‬
‫التسلسل (‪)L’enchainement‬‬ ‫‪-‬‬
‫التناوب ( ‪)L’alternative‬‬ ‫‪-‬‬
‫التكرار (‪)La répétitivité‬‬ ‫‪-‬‬
‫تعليمات أساسية أخرى‬ ‫ب‪.‬‬
‫اإلسناد (‪)L’affectation‬‬ ‫‪-‬‬
‫العبارات (‪)Les expressions‬‬ ‫‪-‬‬
‫القراءة (‪)La lecture‬‬ ‫‪-‬‬
‫الكتابة (‪)L’écriture‬‬ ‫‪-‬‬

‫الفصل الثاني‪ :‬المتغيرات واألنواع‬


‫المتغيرات (‪)Les variables‬‬ ‫‪.1‬‬
‫التصريحات ( ‪)Les déclarations‬‬ ‫‪.2‬‬
‫التصريح بالثوابت ( ‪)Déclaration des constantes‬‬ ‫‪1.2‬‬
‫التصريح باألنواع (‪)Déclaration des types‬‬ ‫‪2.2‬‬
‫األنواع القياسية ( ‪)Les types standards‬‬ ‫أ‪.‬‬
‫األنواع غير القياسية ( ‪)Les types non-standards‬‬ ‫ب‪.‬‬
‫التصريح بالمتغيرات ( ‪)Déclaration des variables‬‬ ‫‪3.2‬‬

‫الفصل الثالث‪ :‬عناصر لغة البرمجة (لغة بسكال ‪)Langage PASCAL‬‬


‫هيكل البرنامج (‪)Structure d'un programme‬‬ ‫‪.1‬‬
‫التصريحات‬ ‫‪.2‬‬
‫جسد البرنامج‬ ‫‪.3‬‬
‫اإلسناد‬ ‫‪1.3‬‬
‫العبارات الحسابية‬ ‫‪2.3‬‬
‫التعليمة ‪IF‬‬ ‫‪3.3‬‬
‫التعليمة ‪FOR‬‬ ‫‪4.3‬‬
‫التعليمة ‪WHILE‬‬ ‫‪5.3‬‬
‫التعليمة ‪REPEAT‬‬ ‫‪6.3‬‬
‫إجراءات اإلدخال ‪READ, READLN‬‬ ‫‪7.3‬‬
‫إجراءات اإلخراج ‪WRITE, WRITELN‬‬ ‫‪8.3‬‬
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Les objets structures ( ‫ المتغيرات المركبة‬:‫الفصل الرابع‬


)Les vecteurs ‫الجداول ذات بعد واحد (األشعة‬ .1
)Le tri( ‫الترتيب‬ .2
)Tri par selection( ‫الترتيب باالختيار‬ 1.2
)Tri par transposition( ‫الترتيب بالتبديل‬ 2.2
)”Tri “bulles( ‫الترتيب بالفقاقيع‬ 3.2
)Tri par comptage ( ‫الترتيب بالعد‬ 4.2
)Les tableaux à deux dimensions( B‫الجداول ذات بعدين‬ .3
)Les chaines de caractères( ‫سالسل الحروف‬ .4
‫ثوابت سالسل الحروف‬ 1.4
‫متغيرات سالسل الحروف‬ 2.4
‫اإلجراءات والدوال الخاصة بسالسل الحروف‬ 3.4
)Les ensembles( ‫المجموعات‬ 4.4
)Les enregistements ( ‫التسجيالت‬ 5.4

)Les sous programmes( ‫ البرامج الجزئية‬:‫الفصل الخامس‬


)La modularité ‫التجزئة (التقسيم إلى وحدات‬ .1
) Objets globaux et objets locaux( ‫الكائنات الكلية والمحلية‬ .2
)Passage des paramètres( ‫تمرير المعايير‬ .3
)Les fonctions( ‫الدوال‬ .4
‫اإلجراءات‬ .5

‫قائمة المراجع‬
1. Cormen, Leiserson, Rivest « Introduction à l'algorithmique » Editeur : Dunod, 2002

2. Michel Quercia « cours et exercices » Editeur Vuibert, 2002

3. P.-C. Scholl, M.-C. Fauvet, F. Lagnier, F. Maraninchi, « Cours d'informatique : langages et


programmation », Masson, Paris (Fr), 1993.

4. Robert Michel di Scala « L’essentiel de l’informatique et de la programmation » Editeur : Berti


2004

5. Thomas Cormen, Charles Leiserson, Ronald Rivest « Introduction à l'algorithmique » 2002


‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫الخوارزمية مفهوم قديم يعود إلى مطلع القرن التاسع الميالدي في زمن الدولة العباسية‪ .‬وقد ظهر االهتمام بها كثيرا منذ ظهور‬
‫الحواسيب‪ ،‬فشاع استخدامها والتركيز على مبادئها في الكتب واألبحاث العلمية والتطبيقية‪.‬‬
‫الخوارزمي هو محمد بن موسى الخوارزمي‪ ،‬قيل أنه ولد حوالي ‪164‬هـ ‪781‬م في مدينة‪ B‬خوارزم في إقليم خراسان اإلسالمي‬
‫(والتي تسمى ’’خيوا‘‘ في العصر الحالي‪ ،‬في جمهورية أوزبكستان)‪ .‬انتقل إلى بغداد‪ B‬وعاش فيها إلى سنة ‪847‬م‪ ،‬في عصر‬
‫الخليفة المأمون وتوفي فيها‪ .‬برز الخوارزمي في علوم الرياضيات والفلك وترك أثرا واضحا ً فيها‪ .‬فهو أول من وضع مبادئ علم‬
‫الجبر‪ ،‬واصطلح على تسميته بهذا االسم حين ألف كتابا سماه "الجبر والمقابلة"‪ ،‬وعنه أخذت كلمة الجبر بأشكالها المختلفة في‬
‫جميع اللغات‪ .‬ويقول الخوارزمي إن الخليفة المأمون هو من طلب منه وضع كتابه هذا وشجعه على ذلك‪ .‬كما وضع الخوارزمي‬
‫كتابا آخر في فن الحساب نقل إلى الالتينية‪ B‬تحت عنوان‪"Algoritmi de Nemero Indriun“ :‬‬
‫بقي الحساب العشري وجداول الضرب والقسمة تعرف باسم الخوارزميات واأللواح الخوارزمية لقرون في أوربا‪ .‬لكن هذا‬
‫المصطلح تطور مع الزمن ليرتبط‪ ،‬مؤخرا ارتباطا وثيقا ببرمجة الحواسيب‪.‬‬

‫الفصل األول‪ :‬تقديم الصياغة المتبعة‬


‫ضرورة الصياغة الخوارزمية‬ ‫‪.1‬‬
‫يتع ّرض اإلنسان في حياته إلى العديد‪ B‬من المشاكل التي تستوجب الوصول إلى حل لها إن أمكن‪ .‬هذا الحل ليس بالضرورة وحيدا‪،‬‬
‫فقد يكون لمسألة ما عدة حلول‪ .‬للوصول لحل مسألة ما يجب اإلجابة على سؤالين مهمين‪:‬‬
‫هل المسألة قابلة للحل؟ وإن كانت كذلك‪ ،‬فكيف نصل إليه؟‬ ‫‪-‬‬
‫حل مسألة في الواقع‪ ،‬هو تصميم ووضع طريقة استدالل تسمح بالوصول للحل من خالل مجموعة من المراحل انطالقا من‬
‫عرض كمي ونوعي للمسألة (مختلف الموارد المستعملة)‪.‬‬
‫إذن‪ ،‬فالخوارزمي هو وصف لطريقة االستدالل كتتابع لمراحل عنصرية وسيطة إليجاد الحل‪.‬‬
‫تعريف ‪ :1‬حسب موسوعة ‪ ،Universalis‬الخوارزمي هو تحديد‪ B‬مخطط حساب على هيئة متتالية منتهية‪ B‬من العمليات‬
‫العنصرية تخضع لتسلسل محدد‪ .‬الهدف من الخوارزميات هو تصميم وتقييم وتحسين األساليب الحسابية في الرياضيات وعلوم‬
‫الحاسوب‪.‬‬
‫تعريف ‪ :2‬الخوارزمي هو مجموعة من العمليات المتتالية مكتوبة بلغة خوارزمية‪ ،‬والتي في حالة تنفيذها من طرف معالج (‬
‫‪ )Processeur‬تسمح بحل مسألة والتي يمكن برمجتها بأي لغة‪.‬‬
‫خصائص الخوارومي‪:‬‬
‫يجب أن يأخذ بعين االعتبار كل الحاالت الممكنة للمسألة (معالجة الحالة العامة والحاالت الخاصة)‬ ‫‪-‬‬
‫مثال‪ :‬حل معادلة من الدرجة الثانية‬
‫الحالة العامة‪ :‬يوجد حالن س‪ 1‬وس‪2‬‬
‫الحاالت الخاصة‪ :‬المعادلة ال تقبل حال أو تقبل حال مضاعفا‪.‬‬
‫يجب أن يحتوي دائما على عدد منته من العمليات‪.‬‬ ‫‪-‬‬
‫في غالب األحيان يكون تكراريا‪.‬‬ ‫‪-‬‬
‫ال يكون خاصا بلغة برمجة معينة أو بجهاز ما‪.‬‬ ‫‪-‬‬
‫تعريف الخوارزمية (‪ :)L’algorithmique‬هي مجموعة القواعد والتقنيات المستعملة في كتابة وتصميم الخوارزميات‪ ،‬أو هي‬
‫معرفة كيفية كتابة وقراءة وتقييم وتحسين الخوارزميات‪.‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫لحل مسألة ما‪ ،‬من األفضل التفكير في الخوارزمي قبل كتابة البرنامج‪.‬‬

‫ترميز‬ ‫تفكير‬
‫برنامج‬ ‫خوارزمي‬ ‫مسألة‬

‫تتميز عملية حل مسألة بأربع مراحل‪:‬‬


‫فهم طبيعة اإلشكال المطروح‬ ‫‪-‬‬
‫تحديد المعطيات (المدخالت ‪)input‬‬ ‫‪-‬‬
‫تحديد النتائج المطلوبة (المخرجات ‪)Output‬‬ ‫‪-‬‬
‫تحديد العمليات المتبعة‪ B‬لتحويل المدخالت إلى مخرجات‪.‬‬ ‫‪-‬‬
‫مخطط كتابة برنامج‬
‫‪ .1‬استعمال شبه لغة (‪ )pseudo langage‬تحتوي كل التعليمات القاعدية الخاصة بلغة البرمجة‪.‬‬
‫‪ .2‬ترجمة شبه اللغة إلى لغة برمجة متطورة مثل ‪Pascal, C, C++, Java :‬‬
‫‪ .3‬بعدها تترجم اللغة المتطورة إلى شبه لغة‪.‬‬

‫تقديم الصياغة المتبعة‬ ‫‪.2‬‬


‫هيكل الخوارزمي ( ‪)Structure d'un algorithme‬‬ ‫‪1.2‬‬

‫)‪ (Entête‬الرأس‬ ‫‪ALGORITHME Nom_Algorithme‬‬

‫‪Environnement (Déclaration des objets et‬‬


‫)‪ (Environnement‬المحيط‬
‫)‪modules utilisés dans l’algorithme‬‬

‫‪DEBUT‬‬

‫‪Corps de l’algorithme‬‬
‫)‪ (Le Corps‬الجسد‬

‫‪FIN.‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫جسد الخوارزمي ( ‪)Le corps de l'algorithme‬‬ ‫‪2.2‬‬


‫تراكيب المراقبة ( ‪)Les structures de contrôle‬‬ ‫أ‪.‬‬
‫تعريف‪ :‬البرنامج هو مجموعة من التعليمات المتتالية المنفذة بواسطة الحاسوب‪ ،‬هذه التعليمات يمكن أن تكون‪:‬‬

‫متسلسلة الواحدة تلو األخرى‪ ،‬في هذه الحالة نتكلم عن تتابع العمليات (‪.)Séquence d’instructions‬‬ ‫‪‬‬
‫تنفذ في بعض الحاالت دون سواها‪ ،‬وفي هذه الحالة نتكلم عن تركيبة متناوبة ( ‪.)Structure alternative‬‬ ‫‪‬‬
‫يعاد تنفيذها عدة مرات‪ ،‬وفي هذه الحالة نتكلم عن تركيبة تكرارية (‪.)Structure répétitive‬‬ ‫‪‬‬

‫التسلسل ( ‪)L’enchainement‬‬ ‫‪-‬‬


‫التعليمة هي عملية يكون الجهاز قادرا على تنفيذها‪ .‬كل لغة برمجة تحتوي على مجموعة من التعليمات‪.‬‬
‫في التسلسل‪ ،‬تكون التعليمات مكتوبة واحدة تلو األخرى ويتم تنفيذها جميعا حسب الترتيب الذي ُكتبت به‪.‬‬
‫مثال‪ :‬تعليمة ‪1‬‬
‫تعليمة ‪2‬‬
‫‪....‬‬
‫تعليمة ن‬
‫مخطط (‪ )Organigramme‬تسلسل العمليات‬

‫تعليمة ‪1‬‬
‫تعليمة ‪2‬‬
‫‪............‬‬

‫التناوب (‪)L’alternative‬‬ ‫‪-‬‬


‫في بعض األحيان يكون تنفيذ تعليمة أو عدة تعليمات مرهونا بتحقق شرط أو مجموعة من الشروط‪ ،‬وفي هذه‬
‫الحالة نستعمل تركيبة تناوبية‪ :‬إذا تحقق الشرط نقوم بعملية وإال نقوم بأخرى‪.‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫مخطط تركيبة تناوبية ( ‪)Organigramme d’une structure alternative‬‬

‫ال‬
‫الشرط‬ ‫نعم‬
‫)‪(Condition‬‬
‫تعليمات ‪2‬‬ ‫تعليمات ‪1‬‬

‫قاعدة الكتابة‪:‬‬
‫‪SI (Condition) ALORS‬‬
‫‪DSI‬‬
‫‪Action1‬‬
‫‪FSI‬‬
‫‪[SINON‬‬
‫‪DSIN‬‬
‫‪Action2‬‬
‫]‪FSIN‬‬
‫العارضتان [] تعنيان أن الجزء الخاص بـ ‪ Sinon‬هو اختياري‪.‬‬
‫‪ : Condition‬للتعبير عن شرط نستعمل العمليات الشرطية التالية‪>< = => < => > :‬‬
‫‪ :Action‬هي إما ‪:‬‬
‫تعليمة واحدة أولية‪.‬‬ ‫‪‬‬
‫مجموعة تعليمات‬ ‫‪‬‬
‫تركيبة متناوبة أخرى‬ ‫‪‬‬
‫تركيبة تكرارية‪.‬‬ ‫‪‬‬
‫مالحظة‪ :‬في حالة ما إذا كانت التركيبة ‪ SI‬أو ‪ SINON‬تحتوي تعليمة واحدة فقط فإنه يمكننا االستغناء عن ‪DSI‬‬
‫‪ FSI‬أو ‪.DSIN FSIN‬‬
‫مثال‪ :‬حساب القيمة المطلقة‬
‫‪SI (a < 0) ALORS‬‬
‫‪DSI‬‬
‫;)‪abs  a * (-1‬‬
‫‪FSI‬‬
‫‪SINON‬‬
‫‪DSIN‬‬
‫;‪abs  a‬‬
‫‪FSIN‬‬
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

DSIN ‫ وعن‬DSI FSI ‫ تحتويان تعليمة واحدة فقط فيمكننا االستغناء عن‬SINON ‫ و‬SI ‫في هذه الحالة التركيبتان‬
.FSIN
SI (a < 0) ALORS
abs  a * (-1);
SINON
abs  a;
‫ إظهار تقدير الطالب حسب معدله‬: 2 ‫مثال‬
SI (N >= 16) Alors
DSI
ECRIRE (‘Très Bien’);
FSI
SINON
DSIN
SI (N >= 14) Alors
DSI
ECRIRE (‘BIEN’) ;
FSI
SINON
DSIN
SI (N >= 12) Aors
DSI
ECRIRE (‘Assez Bien’);
FSI
SINON
DSIN
SIN (N>=10) Alors
DSI
Ecrire (‘Passable’);
FSI
SINON
DSIN
Ecrire (‘Echec’);
FSIN
FSIN
FSIN
FSIN
.DSIN FSIN ‫ وعن‬DSI FSI ‫ تحتويان تعليمة واحدة فقط فيمكننا االستغناء عن‬SINON ‫ و‬SI ‫ التركيبتان‬،‫في هذه الحالة أيضا‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫التكرار (‪)La répétitivité‬‬ ‫‪-‬‬


‫في غالب األحيان نكون بحاجة إلى إعادة عملية أو مجموعة من العمليات عدة مرات‪ ،‬لذلك نلجأ إلى استخدام التراكيب التكرارية‪.‬‬
‫توجد ثالثة أنواع من التراكيب التكرارية‬
‫التركيبة ‪POUR‬‬ ‫‪‬‬
‫التركيبة ‪TANTQUE‬‬ ‫‪‬‬
‫التركيبة ‪REPETER‬‬ ‫‪‬‬
‫التركيبة ‪ :POUR‬عند معرفة عدد‪ B‬التكرارات نستعمل تركيبة تكرارية بعداد‪ ،‬حيث نتوقف حين يصل العداد إلى قيمته النهائية‪.‬‬
‫قاعدة الكتابة‪:‬‬
‫‪POUR compteur ALLANT DE valeur_initiale A valeur_finale FAIRE‬‬
‫‪DPOUR‬‬
‫‪Action‬‬
‫‪DFIN‬‬
‫مالحظة‪ :‬سنقوم باستخدام قاعدة الكتابة ‪Pour compteur  valeur_initiale à valeur_finale faire:‬‬
‫شرح طريقة العمل‪:‬‬
‫من أجل كل قيمة من قيم ‪ Compteur‬التي تتغير من القيمة االبتدائية‪ valeur_initiale B‬إلى القيمة النهائية ‪valeur_finale‬‬
‫ومقدار التغير (الخطوة ‪ )Pas‬يساوي ‪ ،1‬تنفذ التعليمات المحتواة في ‪.Action‬‬
‫كل تنفيذ للمجمع ‪ Action‬يسمى تكرارا (‪.)itération‬‬
‫تقوم التعليمة ‪ POUR‬بالعمليات التالية‪:‬‬
‫ابتداء العداد (إعطاء قيمة ابتدائية‪ B‬للعداد)‬ ‫‪-‬‬
‫زيادة قيمة العداد عند كل تكرار‬ ‫‪-‬‬
‫مراقبة شرط التوقف (وصول العداد إلى قيمته النهائية)‬ ‫‪-‬‬
‫مخطط الحلقة ‪POUR‬‬

‫‪cpt v_init‬‬

‫]‪Compteur ∈ [v_init.. v_fin‬‬


‫‪NON‬‬
‫‪ POUR‬الحلقة‬
‫‪OUI‬‬

‫‪Action‬‬

‫‪Cpt cpt + 1‬‬

‫أمثلة‪:‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫‪Exp1‬‬ ‫‪Exp2‬‬ ‫‪Exp2‬‬


‫‪Pour I  1 à 10 faire‬‬ ‫‪Pour i  1 à 100 Faire‬‬ ‫‪Pour i  1 à 10 Faire‬‬
‫‪DPOUR‬‬ ‫;‪Ecrire(i) ‬‬ ‫‪Pour j  1 à 5 Faire‬‬
‫;)’‪Ecrire(‘Bonjour‬‬ ‫;‪Ecrire(i*j) ‬‬
‫‪FPOUR‬‬

‫التركيبة ‪ :TANTQUE‬عند عدم معرفة عدد التكرارات وفي حالة ارتباط التكرار بتحقق شرط معين نستعمل الحلقة ‪.TANTQ‬‬
‫مخطط الحلقة ‪TANTQUE‬‬

‫الشرط‬
‫ال‬
‫نعم‬

‫‪Action‬‬

‫قاعدة الكتابة‪:‬‬
‫‪TANTQUE Condition FAIRE‬‬
‫‪DTQ‬‬
‫‪Action‬‬
‫‪FTQ‬‬
‫شرح طريقة العمل‪:‬‬
‫تكرر العملية مادام الشرط صحيحا‪ .‬في بداية كل كرة يقيم الشرط‪ ،‬إذا كان صحيحا تنفذ التعليمات ‪ Action‬وإال نمر إلى التعليمة‬
‫الموالية‪.‬‬
‫مالحظة‪ :‬يمكن أن ال تكرر التعليمات وال مرة واحدة‪ ،‬وهذا في حالة عدم تحقق الشرط من البداية‪.‬‬
‫أمثلة‪:‬‬
‫إظهار مربع األعداد مادام العدد المدخل مختلفا عن الصفر ‪Exp1:‬‬ ‫إدخال أعداد والتوقف عندما يكون المجموع أكبر من ‪Exp1: 500‬‬

‫;)‪Lire(val‬‬ ‫;)‪Lire(val‬‬
‫‪Tantque (val <> 0) faire‬‬ ‫;‪Somme  val ‬‬
‫‪DTQ‬‬ ‫‪Tantque (Somme <= 500) faire‬‬
‫;‪Ecrire (val * val) ‬‬ ‫‪DTQ‬‬
‫;‪Lire(val) ‬‬ ‫;‪Lire(val) ‬‬
‫‪FTQ‬‬ ‫;‪Somme  Somme + val ‬‬
‫‪FTQ‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫التركيبة ‪:REPETER – JUSQU’A‬‬


‫مخطط الحلقة ‪REPETER‬‬

‫‪Action‬‬

‫ال‬
‫الشرط‬

‫نعم‬

‫قاعدة الكتابة‪:‬‬
‫‪Répéter‬‬
‫‪Action‬‬
‫‪Jusqu’à Condition‬‬
‫شرح طريقة العمل‪:‬‬
‫التعليمات ‪ Action‬يعاد تنفيذها حتى يتحقق الشرط ‪.Condition‬‬
‫في نهاية كل كرة يقيم الشرط‪ ،‬إذا كان خاطئا يعاد تنفيذ التعليمات ‪ Action‬وإذا كان صحيحا نمر إلى التعليمة الموالية‪.‬‬
‫مالحظة‪ :‬التعليمات ‪ Action‬تنفذ على األقل مرة واحدة‪ ،‬وهذا ألن الشرط ال تتم مراقبته إال بعد تنفيذ التعليمات ‪.Action‬‬
‫أمثلة‪:‬‬
‫إظهار مربع األعداد مادام العدد المدخل مخالفا عن الصفر ‪Exp1:‬‬ ‫إدخال أعداد والتوقف عندما يكون المجموع أكبر من ‪Exp1: 500‬‬

‫‪Répéter‬‬ ‫;‪Somme  0 ‬‬


‫;)‪Lire(val‬‬ ‫‪Répéter‬‬
‫;‪Ecrire (val * val) ‬‬ ‫;‪Lire(val) ‬‬
‫)‪Jusqu’à (val = 0‬‬ ‫;‪Somme  Somme + val ‬‬
‫)‪Jusqu’à (Somme > 500‬‬

‫االختيار بين الحلقات الثالث‬

‫‪TANTQUE‬‬
‫ال‬
‫تنفذ التعليمات على األقل مرة واحدة‬ ‫ال‬
‫نعم‬ ‫معرفة عدد التكرارات‬
‫‪REPETER‬‬
‫نعم‬

‫‪POUR‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫تعليمات أساسية أخرى‬ ‫ب‪.‬‬


‫اإلسناد (‪)L’affectation‬‬ ‫‪-‬‬
‫‪Variable ← Valeur‬‬ ‫القاعدة‪:‬‬
‫وتقرأ ‪ :‬المتغير يستقبل القيمة (‪ .)variable reçoit valeur‬وتعني حفظ القيمة ‪ valeur‬في مكان يسمى ‪.variable‬‬
‫; ‪delta ←b*b – 4*a*c ; letter ← ‘d’ ; somme ← somme + i‬‬ ‫أمثلة‪somme ← 0 ; pi ← 3.14 :‬‬

‫العبارات ( ‪)Les expressions‬‬ ‫‪-‬‬


‫العبارة هي مجموعة متناسقة ( ‪ )ensemble cohérent‬تتكون من حدود (‪ )opérandes‬وعمليات (‪ ،)opérateurs‬وتحتوي أحيانا‬
‫على أقواس (‪ .)parenthèses‬عند حسابها تعطينا قيمة‪.‬‬

‫الحد ( ‪)L’opérande‬يمكن أن يكون ‪:‬‬


‫متغيرا (‪a, note, nom :)variable‬‬ ‫‪-‬‬
‫ثابتا (‪’10, 10.323, ‘a :)constante‬‬ ‫‪-‬‬
‫دالة (‪SQR, SQRT :)fonction‬‬ ‫‪-‬‬

‫العملية (‪ )l’opérateur‬يمكن أن تكون ‪:‬‬


‫عملية حسابية (‪/ ,* ,- ,+ ,DIV, MOD :)arithmétique‬‬ ‫‪-‬‬
‫عملية عالقاتية (‪= >< =< => < > :)de relation‬‬ ‫‪-‬‬
‫عملية منطقية (‪et, ou, non :)logique‬‬ ‫‪-‬‬

‫مالحظة‪ :‬يمكن أن تختصر العبارة في حد واحد (‪)… ,somme ,10‬‬

‫أمثلة عن العبارات‪:‬‬

‫(‪)4 - j(/)a+b‬‬ ‫‪‬‬


‫‪a+ b div c‬‬ ‫‪‬‬
‫‪mod i 99‬‬ ‫‪‬‬
‫(‪ou (SQRT(b div4) < 7) )a>9‬‬ ‫‪‬‬
‫))‪Non((a>9) ou (SQRT(b div4) < 7‬‬ ‫‪‬‬

‫العبارة الخوارزمية‬ ‫العبارة الرياضية‬


‫‪2‬‬
‫‪a*b*c + d*d‬‬ ‫‪abc+d‬‬
‫(‪)2*a(/)b+SQRT(b*b-4*a*c)-‬‬ ‫‪−b+ √ b −4 ac‬‬
‫‪2‬‬

‫‪2a‬‬
‫(‪et(b/c <>0))i<= n/2‬‬ ‫‪n b‬‬
‫≤‪i‬‬ ‫‪et ≠ 0‬‬
‫‪2 c‬‬
‫األولويات‪:‬‬

‫األولوية ‪NON :1‬‬ ‫‪-‬‬


‫األولوية ‪DIV MOD ET / * :2‬‬ ‫‪-‬‬
‫األولوية ‪OU - + :3‬‬ ‫‪-‬‬
‫األولوية‪ : 4‬العمليات العالقاتية (‪= >< =< < => > : )opérateurs de realtion‬‬ ‫‪-‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫حساب قيمة عبارة ( ‪:)Evaluation des expressions‬‬

‫‪b * b - 4 * a * c‬‬ ‫)‪(-b - SQRT(b * b - 4 * a * c))/(2 * a‬‬


‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬ ‫‪4‬‬
‫‪4‬‬
‫‪5‬‬

‫)‪(n mod 2 <> 0 ) ou (n div 10 > 3‬‬


‫‪1‬‬ ‫‪3‬‬

‫‪2‬‬ ‫‪4‬‬

‫‪5‬‬

‫القراءة ( ‪)La lecture‬‬ ‫‪-‬‬


‫القاعدة‪LIRE(variable1, variable2, .., variableN) :‬‬ ‫‪‬‬
‫طريقة العمل‪ :‬القيم المدخلة عن طريق لوحة المفاتيح تسند بالترتيب للمتغيرات ‪ ،variable1, variable2,.., variableN‬مع األخذ‬ ‫‪‬‬
‫بعين االعتبار توافق النوع‬

‫مثال‪lire(a), lire(a, b, c) :‬‬

‫الكتابة (‪)L’écriture‬‬ ‫‪-‬‬


‫القاعدة‪Ecrire(Expression1, Expression2, .., ExpressionN) :‬‬ ‫‪‬‬
‫طريقة العمل‪ :‬العبارات ‪ Expression1, Expression2, .., ExpressionN‬يتم تقييمها والنتائج يتم إظهارها‪.‬‬ ‫‪‬‬

‫مثال‪Ecrire(‘la somme de ’, a , ‘ et ’, b , ‘ est ’, a+b) ; Ecrire (‘x1 = ’, (-b-SQRT(b*b – 4*a*c))/(2*a)) :‬‬


‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫الفصل الثاني‪ :‬المتغيرات واألنواع‬


‫المتغيرات ( ‪)Les variables‬‬ ‫‪.1‬‬
‫يتكون الخوارزمي من جزأين‪:‬‬

‫جزء التصريحات‪ :‬يحتوي كل المتغيرات المستعملة في البرنامج‬ ‫‪-‬‬


‫جزء العمليات‪ :‬يحتوي على التعليمات التي ينفذها البرنامج‬ ‫‪-‬‬

‫عند تنفيذ البرنامج‪ ،‬يتم تحميله في الذاكرة المركزية‪ ،‬والقيم المسندة إلى المتغيرات يجب حفظها طيلة فترة التنفيذ‪ .‬كما يجب حجز‬
‫األماكن الضرورية لهذه المتغيرات‪ ،‬ولهذا يتوجب التصريح بالمتغيرات قبل استعمالها‪.‬‬

‫إذن‪ ،‬فالمتغيرات يمكن تمثيلها بخانات في الذاكرة ( ‪ )cases mémoires‬وتحتوي قيمة‪ ،‬حيث أن هذه القيمة ليست بالضرورة‬
‫ثابتة‪ .‬وتتميز المتغيرات بـ‪:‬‬

‫القيمة‪ :‬القيمة المسندة للمتغير‪ ،‬ويمكن أن تتغير أثناء البرنامج‪.‬‬ ‫‪-‬‬


‫االسم‪ :‬لكل متغير اسم وحيد يسمى المعرف (‪ )identificateur‬وهو عبارة عن تسلسل حروف وأرقام (َ‬ ‫‪-‬‬
‫‪ )Alphanumérique‬ويبدأ بالضرورة بحرف‪ .‬يستحسن أن يكون معبرا عن القيم المسندة للمتغير‪ ،‬فمن األفضل‬
‫استعمال األسماء ‪ Nom, Delta, Somme‬بدال من ‪N,D, S‬‬

‫مثال‪ a, a1, a_1, nom, age :‬يمكن أن تكون أسماء لمتغيرات‬ ‫‪-‬‬
‫‪ âge, 1nom‬ال يمكن أن تكون أسماء لمتغيرات‬

‫النوع‪ :‬ويكون ثابتا‪ ،‬فال يمكن تغييره أثناء البرنامج‪ ،‬ويمثل‪:‬‬ ‫‪-‬‬
‫طبيعة المعلومات المسندة للمتغير‬ ‫‪‬‬
‫مجال تعريف القيم المسندة للمتغير‬ ‫‪‬‬
‫العمليات القابلة للتنفيذ على المتغيرات‬ ‫‪‬‬

‫التصريحات ( ‪)Les déclarations‬‬ ‫‪.2‬‬


‫التصريح بالثوابت ( ‪)Déclaration des constantes‬‬ ‫‪1.2‬‬
‫الثابت هو كائن تكون قيمته ثابتة طيلة فترة تنفيذ البرنامج‬

‫القاعدة‪:‬‬
‫‪CONSTANTE‬‬
‫‪Identificateur_Constante = valeur‬‬
‫مثال‪:‬‬
‫‪CONSTANTE‬‬
‫‪Pi=3.14‬‬
‫’‪Titre=’Résultat‬‬
‫‪Cent=100‬‬
‫’‪Virgule = ‘,‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫التصريح باألنواع ( ‪)Déclaration des types‬‬ ‫‪2.2‬‬


‫يعرف النوع مجال القيم التي يمكن أن تأخذها المتغيرات كما يعرف العمليات القابلة للتنفيذ على المتغيرات‬

‫األنواع‬

‫األنواع المركبة‬ ‫األنواع البسيطة‬

‫األنواع غير القياسية‬ ‫األنواع القياسية‬

‫األنواع القياسية ( ‪)Les types standards‬‬ ‫أ‪.‬‬


‫توجد أربعة أنواع قياسية‪:‬‬

‫‪ -‬النوع الصحيح (‪)Type entier‬‬

‫‪ -‬النوع الحقيقي (‪)Type réel‬‬

‫‪ -‬النوع المنطقي (‪)Type booléen‬‬

‫‪ -‬النوع الحرفي (‪)Type caractère‬‬


‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Type entier ( ‫ النوع الصحيح‬-

ENTIER (INTEGER) : ‫التسمية‬

: ‫مجال القيم‬
-1 0 1

-∞ Min entier Max entier +∞

PASCAL ‫النوع الصحيح في لغه‬

)type( ‫النوع‬ )intervalle( ‫المجال‬ )taille en octets( ‫الطول‬


Shortint 127 .. 128- octet (8 bits) 1
Integer 767 32 .. .. 768 32- octets 2
Longint 647 483 147 2 .. .. 648 483 147 2- octets 4
Byte 255 .. 0 octet 1
Word 535 65 .. 0 octets 2
PASCAL (Free Pascal) ‫النوع الصحيح في لغه‬

)taille en octets( ‫الطول‬ )intervalle ( ‫المجال‬ )type( ‫النوع‬


1 0 .. 255 Byte
1 -128 .. 127 Shortint
2 -32768 .. 32767 Smallint
2 0 .. 65535 Word
2 smallint Integer
4 Longword Cardinal
4 -2147483648 .. 2147483647 Longint
4 0 .. 4294967295 Longword
8 -9223372036854775808 .. 9223372036854775807 Int64
8 0 .. 18446744073709551615 Qword

)valeurs non signées( ‫ تمثل قيما بدون إشارة‬Byte, Word, Cardinal, Longword, Qword : ‫مالحظه‬

:‫أمثلة‬

Entiers sans signe : 0 1 113 08


Entier : 0 -1 1 +05 -12 85
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

‫العمليات القابلة للتنفيذ‬


>< = => > =< < : ‫العمليات العالقاتية‬
DIV MOD / * - + :‫العمليات الحسابية‬
U0 = 1, U1 = 1, Un = Un-1 + Un-2 : ‫ المعرفة كمايلي‬Fibonacci ‫ حساب حدود متتالية‬:‫مثال‬

program fibonacci;
var
next, first, second, n, i : integer;
begin
writeln('donner n :');
Readln(n);
first := 1;
second:=1;

For i:=2 to n do
begin
next := first + second;
second := first;
first:= next;
end;
writeln(next);
readln;
end.
28657 = 22 ‫قيمة الحد‬ -
Range ‫ والذي يعني‬exit code 201 ‫( يعطينا الخطأ‬46368 ‫ )والتي تساوي‬23 ‫ قيمة الحد‬B‫في حين أنه إذا حاولنا حساب‬ -
32767 = ‫ والتي‬Integer ‫ أي تجاوز القيمة الكبرى للنوع‬Check Error
: ‫ ويصيح البرنامج كما يلي‬Int64 ‫ أو‬longint ‫لتجاوز هذا الخطأ نستعمل النوع‬
program fibonacci;
var
next, first, second : Int64;
n, i : integer;
begin
writeln('donner n :');
Readln(n);
first := 1;
second:=1;

For i:=2 to n do
begin
next := first + second;
second := first;
first:= next;
end;
writeln(next);
readln;
end.
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫‪ -‬النوع الحقيقي (‪)Type réel‬‬

‫التسمية ‪Réel :‬‬ ‫‪0‬‬


‫)‪(REAL‬‬

‫مجال القيم ‪:‬‬ ‫∞‪-‬‬ ‫‪Min réel‬‬ ‫‪Max réel‬‬ ‫∞‪+‬‬

‫النوع الحقيقي في لغه ‪PASCAL‬‬

‫تمثل األنواع الحقيقية أعدادا في صيغة ( ‪)virgule flottante‬‬

‫الطول (‪)taille en octets‬‬ ‫المجال ( ‪)intervalle‬‬ ‫النوع (‪)type‬‬


‫‪6‬‬ ‫‪2.9 E-39 .. 1.7 E38‬‬ ‫‪Real‬‬
‫‪4‬‬ ‫‪1.5 E-45 .. 3.4 38‬‬ ‫‪Single‬‬
‫‪8‬‬ ‫‪5.0 E-324 .. 1.7E308‬‬ ‫‪Double‬‬
‫‪10‬‬ ‫‪3.4 E-4932 .. 1.1 E4932‬‬ ‫‪Extended‬‬
‫‪8‬‬ ‫‪-2E64+1 .. 2E63-1‬‬ ‫‪Comp‬‬

‫النوع الحقيقي في لغه )‪PASCAL (Free Pascal‬‬

‫الطول (‪)taille en octets‬‬ ‫المجال (‪)intervalle‬‬ ‫النوع (‪)type‬‬


‫‪ou 8 4‬‬ ‫‪platform dependant‬‬ ‫‪Real‬‬
‫‪4‬‬ ‫‪1.5E-45 .. 3.4E38‬‬ ‫‪Single‬‬
‫‪8‬‬ ‫‪5.0E-324 .. 1.7E308‬‬ ‫‪Double‬‬
‫‪10‬‬ ‫‪1.9E-4932 .. 1.1E4932‬‬ ‫‪Extended‬‬
‫‪8‬‬ ‫‪-2E64+1 .. 2E63-1‬‬ ‫‪Comp‬‬
‫‪8‬‬ ‫‪-922337203685477.5808 .. 922337203685477.5807‬‬ ‫‪Currency‬‬

‫العمليات القابلة للتنفيذ‬

‫<>‬ ‫>= =‬ ‫>‬ ‫العمليات العالقاتية ‪=< < :‬‬

‫العمليات الحسابية‪/ * - + :‬‬

‫‪ -‬النوع الحرفي (‪)Type caractère‬‬


‫التسمية ‪CAR (CHAR) :‬‬
‫القيم‪ :‬مجموعة الحروف (‪ )jeu de caractères‬المتوفرة في النظام‬
‫تمثيل الحروف يكون بالحرف نفسه موضوع بين حدين ( )‪ )Quotes (apostrophes‬مثال ‪'a' :‬‬
‫تكون هذه الحروف مرتبة حسب الرموز الداخلية الخاصة بها ( ‪)Code ASCII‬‬
‫'‪'c' 'A' ',‬‬ ‫أمثلة‪'0' '+' :‬‬
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

‫العمليات القابلة للتنفيذ‬


>< = => > =< < : ‫العمليات العالقاتية‬
SUCC PRED : ‫عمليات التتابع‬
ORD CHR :‫عمليات التحويل‬
CODE ASCII (American Standard Code for Information Interchange)
‫) ألنها تسمح القيام بعمليات مثل الرجوع‬caractères de contrôle ( ‫ ليست حروفا تسمي حروف المراقبة‬:31..0 -
)touche Entrée( ‫إلى السطر‬
)Majuscule( ‫ تمثل الحروف الكبيرة‬:90..65 -
)32 = ‫) (الفرق‬Miniscule( ‫ تمثل الحروف الصغيرة‬:122..97 -
)Espace( ‫ يمثل الفراغ‬:32 -
‫ األرقام‬:57..48 -
‫ برنامج يظهر الحروف ورموزها‬: ‫مثال‬
Programme Résultat
program ascii; /.-,+*)('&%$#"! :caractères de 32 à 47 sont
var caractères de 48 à 57 (Chiffres) sont: 0123456789
i : integer; @?>=<;: :caractères de 58 à 64 sont
begin
caractères de 65 à 90 (Majuscule) sont:
write ('caractères de 32 à 47 sont: ');
ABCDEFGHIJKLMNOPQRSTUVWXYZ
for i:= 32 to 47 do
write(chr(i)); `_^]\[ :caractères de 91 à 96 sont
writeln; caractères de 97 à 122 (Miniscules)sont:
write ('caractères de 48 à 57 (Chiffres) sont: '); abcdefghijklmnopqrstuvwxyz
for i:= 48 to 57 do ⌂~}|{ :caractères de 123 à 127 sont
write(chr(i));
writeln;
write ('caractères de 58 à 64 sont: ');
for i:= 58 to 64 do
write(chr(i));
writeln;
write ('caractères de 65 à 90 (Majuscule) sont: ');
for i:= 65 to 90 do
write(chr(i));
writeln;
write ('caractères de 91 à 96 sont: ');
for i:= 91 to 96 do
write(chr(i));
writeln;
write ('caractères de 97 à 122 (Miniscules)sont: ');
for i:= 97 to 122 do
write(chr(i));
writeln;
write ('caractères de 123 à 127 sont: ');
for i:= 123 to 127 do
write(chr(i));
Readln;
end.
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Type booléen ( ‫ النوع المنطقي‬-


Booléen (Boolean) : ‫التسمية‬

‫ خطأ‬:0 ‫ صحيح‬: 1 :‫القيم‬

‫العمليات القابلة للتنفيذ‬

>< = => > =< < : ‫العمليات العالقاتية‬

et(AND) ou(OR) non(NOT) :‫العمليات المنطقية‬

:‫مثال‬

program var_booleen;
var
a, b : boolean;
begin
a:=true;
b:=false;
writeln (a, ' and ', b ,' = ', a AND b) ;
writeln (a, ' OR ', b ,' = ', a OR b) ;
writeln('NOT (',a,') = ', NOT(a));
writeln('NOT (',b,') = ', NOT(b));

if(a > b) then


write (a ,' > ', b)
else
write (a, ' < ', b);
readln;
end.
:‫النتيجة‬

TRUE and FALSE = FALSE

TRUE OR FALSE = TRUE

NOT (TRUE) = FALSE

NOT (FALSE) = TRUE

TRUE > FALSE


‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Les types non-standards ( ‫األنواع غير القياسية‬ .‫ب‬


)Type énuméré( ‫ النوع المعدود‬-
)‫يمثل مجموعة مرتبة من القيم ممثلة بمتغيرات (ثوابت‬
:‫مثال‬
Type
Jours =(dim, lun, mar, mer, jeu, ven, sam)
Couleur = (bleu, vert, jaune, rouge)
Direction = ( North, East, South, West )
)Type intervalle( ‫ النوع المجال‬-
‫يمثل مجاال معرفا على مجموعة قيم مرتبة‬
‫يعرف المجال بالحد األصغر والحد األكبر‬
:‫مثال‬
Type
Indice : 1..10
Chiffre:’0’..’9’
Majuscule=’A’..’Z’
)Déclaration des variables ( ‫التصريح بالمتغيرات‬ 3.2
)non standard( ‫األنواع غير القياسية‬
TYPE
Identiicateur_Type = Type;

‫التصريح بالمتغيرات‬
VAR
Identificateur_Var: Type;
:1‫مثال‬
VAR
N: entire; X1, X2 : reel;
C: Char; B: Booléen;

:2 ‫مثال‬
TYPE
T_Mois = 1..31;
T_Alpha : ‘A’..’Z’;
VAR
M: T_Mois;
A: T_Alpha;
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Langage PASCAL ‫ عناصر لغة البرمجة (لغة بسكال‬:‫الفصل الثالث‬


)Structure d'un programme( ‫هيكل البرنامج‬ .1

‫( الرأس‬Entête) Program Nom_Program;

CONST // Déclaration des constantes


‫( المحيط‬Environnement) Nom_Constante = valeur ;

TYPE //Déclaration des types
Nom_Type1= type ;

VAR //Déclaration des variables
Nom_Variable : type ;

BEGIN
Corps du programme
‫( الجسد‬Le Corps)

END.

‫التصريحات‬ .2
‫التصريح بالثوابت‬ 1.2
‫قاعدة‬
CONST
Nom_Constante = valeur;
Exemple
CONST
pi=3.14;
‫التصريح باألنواع‬ 2.2
)standard ( ‫األنواع القياسية‬ .‫أ‬
CHAR : caractère                
INTEGER      : entier            
REAL             : réel            
BOOLEAN    : booléen
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Types non standard( ‫األنواع غير القياسية‬ .‫ب‬

:‫قاعدة‬
TYPE
Nom_Type = Type;
‫مثال‬
TYPE
Jours = (Dim, Lun, Mar, Mer, Jeu, Ven, Sam, Dim );
Indice = 1..10 ;
‫التصريح بالمتغيرات‬ 3.2
:‫قاعدة‬
VAR
Nom_Variable : Type ;
‫مثال‬
VAR
a, b : integer;
lettre1, lettre2 : char ;
bool : Boolean ;
x, y : real ;
j : Jours;
i : Indice ;

‫جسد البرنامج‬ .3
‫اإلسناد‬ 1.3
;Nom_variable := Expression :‫قاعدة‬
:‫مثال‬
a: = 2;
a:= b;
a:= 2*b + 3;
‫العبارات‬ 2.3
:‫أنواع العمليات‬

/ ,* ,- ,+ ,DIV, MOD :)arithmétique( ‫عملية حسابية‬

= >< =< => < > :)de relation( ‫عملية عالقاتية‬

AND, OR, NOT :)logique( ‫عملية منطقية‬


‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

IF ‫التعليمة‬ 3.3
:‫قاعدة‬
IF (Condition) THEN
BEGIN
Instruction 1;
…..
Instruction n;
END
ELSE
BEGIN
Intruction n+1;
….
Instruction n+m;
END;
‫ صحيحين‬B‫ مقارنة عددين‬:‫مثال‬
PROGRAM Comparaison;
USES CRT;
VAR
a, b : integer;
BEGIN
CLRSCR;
Read(a);
Read(b);
IF(a > B) THEN
WRITE (a, ' > ', b)
ELSE
IF(a < b) THEN
WRITE (a, ' < ', b)
ELSE
WRITE (a, ' = ', b);
READKEY;
END.
CASE ‫التعليمة‬ 4.3
:‫قاعدة‬
CASE variable OF
Value1 : BEGIN Action1 END;
Value2 : BEGIN Action2 END;
...
[ELSE
BEGIN Action_n END;]
End;
integer / character / string :‫ هي متغير من نوع‬variable :‫مالحظة‬
‫ هو اختياري‬ELSE ‫الجزء الخاص ب‬
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)7 ‫ إلى‬1 ‫ إظهار اليوم الموافق للعدد (من‬:‫مثال‬

IF CASE
Program IF_test; Program Case_test;
uses crt; uses crt;
Var a:Integer ; Var a:Integer ;

BEGIN BEGIN
clrscr; clrscr;
read(a); read(a);
IF(a =1) then WriteLn('Dimance') Case a of
ELSE 1:WriteLn('Dimance');
IF(a=2) then WriteLn('Lundi') 2:WriteLn('Lundi');
ELSE 3:WriteLn('Mardi');
IF(a=3) then WriteLn('Lundi') 4:WriteLn('Mercredi');
ELSE 5:WriteLn('Jeudi');
IF(a=4) then WriteLn('Mardi') 6:WriteLn('Vendredi');
ELSE 7:WriteLn('Samedi');
IF(a=5) then WriteLn('Mercredi') else
ELSE write('valeur non valide');
IF(a=6) then WriteLn('jeudi') End;
ELSE readkey;
IF(a=7) then WriteLn('Vendredi') END.
ELSE WriteLn(' valeur non valide ');

READKEY ;
END.
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

FOR ‫التعليمة‬ 5.3


:‫قاعدة‬
FOR Compteur : = Val_Initiale TO Val_Finale DO
BEGIN
Instruction 1;
…..
Instruction n;
END;

‫ صحيحين‬B‫ حساب مجموع األعداد الفردية المحصورة بين عددين‬:‫مثال‬


PROGRAM Boucle_FOR;
USES CRT;
VAR
a, b, i, somme : integer;
BEGIN
CLRSCR;
READ (a);
READ (b);
somme := 0;
FOR i:= a to b do
IF(i mod 2 = 1 ) THEN
somme:= somme +i;
WRITE(somme);
READKEY;
END.
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

WHILE ‫التعليمة‬ 6.3


:‫قاعدة‬
WHILE (Condition) DO
BEGIN
Instruction 1;
…..
Instruction n;
END;
‫ إظهار إن كان العدد أوليا أو ال‬:‫مثال‬
PROGRAM Premier;
USES CRT;
VAR
a, i : integer;
BEGIN
CLRSCR;
READ (a);
i := 2;
WHILE (i<= a div 2) and (a mod i <> 0) do
i:= i+1;

IF ( i <= a div 2) THEN


WRITE (a, ' n''est pas premier')
ELSE
WRITE (a, ' est premier');

READKEY;
END.
REPEAT ‫التعليمة‬ 7.3
:‫قاعدة‬
REPEAT
Instruction 1;
…..
Instruction n;
UNTIL (Condition);

‫ إظهار إن كان العدد أوليا أو ال‬:‫مثال‬


PROGRAM Premier;
USES CRT;
VAR
a, i : integer;
BEGIN
CLRSCR;
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

READ (a);
i := 1; // la valeur initiale de i est 1
REPEAT
i:= i+1;
UNTIL (i > a div 2) OR (a mod i = 0);

if( i <= a div 2) then


write (a, ' n''est pas premier')
else
write (a, ' est premier');

READKEY;
END.
READ, READLN ‫إجراءات اإلدخال‬ 8.3
:‫قاعدة‬
READ (Variable_1, Variable_2,.., Variable_n);
READLN (Variable_1, Variable_2,.., Variable_n);

WRITE, WRITELN ‫إجراءات اإلخراج‬ 9.3


:‫قاعدة‬
WRITE (Expression_1, Expression_2,.., Expression_n);
WRITELN (Expression_1, Expresson_2,.., Expression_n);
‫السنة األولى إعالم آلي‬ -‫القبة‬- ‫المدرسة العليا لألساتذة‬
2022 - 2021 : ‫الموسم‬ ‫قسم المعلوماتية‬

)Les commentaires ( ‫التعليقات‬


‫ يتم استخدامه لشرح كود البرنامج‬.‫التعليق هو نص يضاف إلى كود البرنامج يتجاهله الكمبيوتر عند تنفيذ البرنامج‬

:1 ‫قاعدة‬
(*C’est un commentaire*)
:2 ‫قاعدة‬

//Syntaxe2
:3 ‫قاعدة‬

{Syntaxe3}
{ ligne1
Ligne2
Ligne2}
‫مثال‬
program PGCD;
(*pour utiliser la commande CLRSCR il faut utiliser la bibliothèque CRT*)
uses crt;
VAR
a, b : integer;
BEGIN
{
La commande clrscr permet d'éffacer l'écran et de déplacer le curseur
dans le coin supérieur gauche de l'écran
}
CLRSCR;
WRITELN('Donner la valeur du premier nombre');
READ(a);
WRITELN('Donner la valeur du deuxieme nombre');
READ(b);
WHILE(a <> b) DO
BEGIN
IF(a>b) THEN
a := a -b
ELSE
b := b-a;
END;
WRITE ('Le PGCD = ',a);
//ReadKey est une commande de la bibliothèque crt
//Elle permet d'effectuer la lecture d’une touche enfoncée au clavier.
READKEY;
END.
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫معالجة االستثناء (‪)Gestion des exceptions‬‬


‫تعتبر االستثناءات الطريقة المالئمة لبرمجة األخطاء ومعرفة نوعها و معالجتها‪.‬‬
‫مثال‬
‫; ‪Program Division‬‬
‫;‪Uses CRT‬‬
‫‪VAR‬‬
‫; ‪a, b : integer‬‬
‫‪BEGIN‬‬
‫;‪CLRSCR‬‬
‫; )‪READ(a, b‬‬
‫; )‪WRITE(a/b‬‬
‫; ‪READKEY‬‬
‫‪END.‬‬
‫إذا كانت قيمة ‪ b‬تساوي ‪ 0‬فإن البرنامج يتوقف نظرا لوجود الخطأ المتمثل في القسمة على الصفر‪ ،‬غير أن المستخدم ال يمكنه معرفة السبب‪.‬‬
‫كذلك‪ ،‬إذا كانت قيمة ‪ a‬أو ‪ b‬غير عددية (حرف مثال) فإن البرنامج سيتوقف أيضا‪.‬‬
‫لمعالجة هذه األخطاء وجعلها واضحة للمستخدم نستخدم االستثناءات‪.‬‬
‫مالحظة‪ :‬لمعالجة االستثناءات نستخدم النمط {‪ }MODE OBJFPC$‬أو النمط {‪ }MODE DELPHI$‬كما نستخدم المكتبة ‪SysUtil‬‬
‫القاعدة‪:‬‬
‫‪TRY‬‬
‫‪Action‬‬
‫‪EXCEPT‬‬
‫;‪ON codeerreur1 DO instructionexception1‬‬
‫;‪ON codeerreur2 DO instructionexception2‬‬
‫‪….‬‬
‫;‪END‬‬
‫في حالة عدم معرفة ‪ CodeErreur‬نستخدم القاعدة‪:‬‬
‫;)‪On e: Exception do Writeln([Link], ' ', [Link]‬‬

‫مثال‪:‬‬
‫;‪Program Divison‬‬
‫}‪{$MODE Delphi‬‬
‫;‪Uses SysUtils, CRT‬‬
‫‪Var‬‬
‫;‪a,b :Integer‬‬
‫‪BEGIN‬‬
‫;‪clrscr‬‬
‫‪Try‬‬
‫;)‪read(a‬‬
‫;)‪read(b‬‬
‫;)‪WriteLn(a/[Link]‬‬
‫‪Except‬‬
‫;)'‪On EZeroDivide do WriteLn('Division par 0‬‬
‫;)‪On e: Exception do Writeln([Link], ' ', [Link]‬‬
‫;‪End‬‬
‫;‪readkey‬‬
‫‪END.‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫عند تنفيذ هذا البرنامج‬


‫إذا كان ‪ b‬يساوي ‪ 0‬فإنه يظهر لنا ‪Division par 0 :‬‬ ‫‪-‬‬
‫إذا كانت قيمة ‪ a‬أو ‪ b‬غير عددية (حرف مثال) فإنه يظهر لنا ‪ EInOutError Invalid input :‬حيث أن‬ ‫‪-‬‬
‫‪ EInOutError‬تمثل نوع الخطأ (‪)Code Erreur‬‬
‫‪ Invalid input‬تمثل رسالة الخطأ ( ‪)Message‬‬

‫بعض المكتبات الخاصة ب ‪Free Pascal‬‬


‫مكتبة البرامج هي مجموعة من البرامج والحزم التي يتم توفيرها لالستخدام المشترك‪.‬‬

‫المكتبة ‪ :CRT‬تقوم بتنفيذ‪ B‬الكتابة باأللوان‪ ،‬وتحريك المؤشر والقراءة من لوحة المفاتيح‪.‬‬ ‫‪.1‬‬
‫‪Reserved Word‬‬ ‫‪Description‬‬
‫‪Clrscr‬‬ ‫‪Clears the screen; can be combined with a background color‬‬
‫)‪Gotoxy(int,int‬‬ ‫‪Takes the cursor to the specified x,y position‬‬
‫‪Textbackground(word/‬‬ ‫‪Background color‬‬
‫)‪int‬‬
‫)‪Textcolor(word/int‬‬ ‫‪Color of text‬‬
‫‪Readkey‬‬ ‫‪Reads a key; Can be assigned to a variable‬‬
‫)‪Delay(int‬‬ ‫‪Suspends execution for the specified time in milliseconds‬‬

‫‪ ;textcolor(black); Textbackground(white); clrscr‬تسمح بجعل الخط أسود والخلفية بيضاء‪.‬‬ ‫مثال‪:‬‬

‫المكتبة ‪ :MATH‬تحتوي هذه الوحدة على إجراءات رياضية مشتركة (الدوال المثلثية ‪ ،‬اللوغاريتمات ‪ ،‬إلخ) باإلضافة‬ ‫‪.2‬‬
‫إلى إجراءات أكثر تعقيدًا (مجموعات المصفوفات ‪ ،‬إلخ)‪.‬مثل ‪))COS, ArcCos, Power :‬‬
‫المكتبة ‪ :matrix‬توفر إجراءات معالجة المصفوفات‪.‬‬ ‫‪.3‬‬
‫السنة األولى إعالم آلي‬ ‫المدرسة العليا لألساتذة ‪-‬القبة‪-‬‬
‫الموسم ‪2022 - 2021 :‬‬ ‫قسم المعلوماتية‬

‫الفصل الرابع‪ :‬المتغيرات المركبة ( ‪)Les objets structures‬‬


‫الجداول ذات بعد واحد (األشعة ‪)Les vecteurs‬‬ ‫‪.1‬‬
‫الترتيب (‪)Le tri‬‬ ‫‪.2‬‬
‫الترتيب باالختيار (‪)Tri par selection‬‬ ‫‪1.2‬‬
‫الترتيب بالتبديل (‪)Tri par transposition‬‬ ‫‪2.2‬‬
‫الترتيب بالفقاقيع ( ‪)”Tri “bulles‬‬ ‫‪3.2‬‬
‫الترتيب بالعد (‪)Tri par comptage‬‬ ‫‪4.2‬‬
‫الجداول ذات بعدين ( ‪)Les tableaux à deux dimensions‬‬ ‫‪.3‬‬
‫سالسل الحروف ( ‪)Les chaines de caractères‬‬ ‫‪.4‬‬
‫ثوابت سالسل الحروف‬ ‫‪1.4‬‬
‫متغيرات سالسل الحروف‬ ‫‪2.4‬‬
‫اإلجراءات والدوال الخاصة بسالسل الحروف‬ ‫‪3.4‬‬
‫المجموعات ( ‪)Les ensembles‬‬ ‫‪4.4‬‬
‫التسجيالت (‪)Les enregistements‬‬ ‫‪5.4‬‬

‫الفصل الخامس‪ :‬البرامج الجزئية (‪)Les sous programmes‬‬


‫التجزئة (التقسيم إلى وحدات ‪)La modularité‬‬ ‫‪.1‬‬
‫الكائنات الكلية والمحلية ( ‪) Objets globaux et objets locaux‬‬ ‫‪.2‬‬
‫تمرير المعايير ( ‪)Passage des paramètres‬‬ ‫‪.3‬‬
‫الدوال ( ‪)Les fonctions‬‬ ‫‪.4‬‬
‫اإلجراءات‬ ‫‪.5‬‬

Vous aimerez peut-être aussi