Vous êtes sur la page 1sur 31

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

‫الموسم ‪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(e.ClassName, ' ', e.Message‬‬

‫مثال‪:‬‬
‫;‪Program Divison‬‬
‫}‪{$MODE Delphi‬‬
‫;‪Uses SysUtils, CRT‬‬
‫‪Var‬‬
‫;‪a,b :Integer‬‬
‫‪BEGIN‬‬
‫;‪clrscr‬‬
‫‪Try‬‬
‫;)‪read(a‬‬
‫;)‪read(b‬‬
‫;)‪WriteLn(a/b:0:2‬‬
‫‪Except‬‬
‫;)'‪On EZeroDivide do WriteLn('Division par 0‬‬
‫;)‪On e: Exception do Writeln(e.ClassName, ' ', e.Message‬‬
‫;‪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