البرمجة الإجرائية

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 9

‫ما هي البرمجة اإلجرائية‬

‫‪Procedural Programming‬‬

‫البرمجة اإلجرائية ‪ Procedural Programming‬هي أحد نماذج البرمجة التي‬


‫تعتمد بشكل أساسي على إخبار الحاسوب بالمهام التي تريد منه القيام به بدقة‬
‫وخطوة بخطوة من خالل كتابة إجراءات ‪ procedures‬أو دوال برمجية‬
‫‪ functions‬تؤدي كل منها مهمة محددة‪.‬‬
‫سابًقا في بدايات البرمجة كانت البرامج تتألف من إجراء واحد يتكون من سلسلة‬
‫متتالية من التعليمات البرمجية التي تنفذ بالتسلسل من أعلى الكود إلى أسفله‬
‫لتؤدي المطلوب وكان هذا يجعل الكود مكرًر ا وطوياًل جًدا‪ ،‬أما مع أسلوب البرمجة‬
‫اإلجرائية أصبح بإمكان المبرمج تقسيم البرامج الطويلة إلى مجموعة من‬
‫اإلجراءات تحل كل منها مشكلة فرعية منفصلة وإعادة استخدامها عند الحاجة‬
‫ضمن اإلجراء الرئيسي أو ضمن إجراءات أخرى لتحقيق الهدف الكلي للبرنامج‪.‬‬

‫عرض عام للغة الباسكال‬


‫اخُتِرعت لغة باسكال (التي اتخذت اسمها من عالم الرياضيات الفرنسي‬
‫(بليز باسكال)‬
‫باسكال هي لغة برمجة متعددة االستخدام تعتمد على األوامر‪ .‬وهي معروفة‬
‫بوضوحها وقوتها وسهولة إنشاء البرامج عن طريقها‪ .‬وهو ما يجعل‬
‫من باسكال اللغة البرمجية األكثر استعماال في التدريس حتى األوقات الحالية‪.‬‬

‫وجد هناك العديد والعديد من لغاِت البرمجة المختلفة التي تشترك فيما بينها بخواٍص وميزاٍت‬
‫عدٍة‪ ،‬وال يزال إنشاء الكثير منها مستمًر ا كل عاٍم‪ .‬ولكن تبقى لغة باسكال هي الخطوة األولى‬
‫لتعلم أي لغة‪ ،‬وهي تستخدم على نطاٍق واسٍع كلغٍة للتعليم الجامعي‪ ،‬كونها لغة برمجة سهلة‬
‫للغاية وتساعدك على فهم أساسيات عالم البرمجة‪ .‬وهذا ساعد المبرمجين المبتدئين على‬
‫تعريفهم بلغاٍت أخرى مثل ‪ C ، C ++ ، Java‬أو ‪ # C‬إًذا فهي عتبة لغات البرمجة عالية المستوى‬
‫األخرى‪.‬‬

‫خصائص البرمجة اإلجرائية‬

‫يتضمن نموذج البرمجة اإلجرائية مجموعة من الخصائص أو الميزات الرئيسية وأبرزها‪:‬‬

‫النمطية‬ ‫‪.1‬‬
‫الدوال المعرفة مسبًقا‬ ‫‪.2‬‬
‫تصميم البرنامج من أعلى ألسفل‬ ‫‪.3‬‬
‫تمرير المعامالت ‪parameters‬‬ ‫‪.4‬‬
‫المتغيرات العامة‬ ‫‪.5‬‬
‫المتغيرات المحلية‬ ‫‪.6‬‬
structure d'un langage pascal
Un programme Pascal est composé d'une entête, des déclarations et des
instructions (délimitées par BEGIN et END).
PROGRAM cercle (input,output);
(* entête *) VAR perimetre, diametre : REAL ;
(* déclarations *) BEGIN readln(diametre);
(* instruction *) perimetre := 3 .

Exemple :

Program MonProg; Program Algorithme somme:


var MonProg; Variable a,b:entier;
i : integer; var S:Real;
begin i : Debut;
i:=1; integer; Ecrire(‘Donner les valeur’) ;
end. j : string; Lire(a,b) ;
begin S a+b ;
i:=1; Ecrire(‘la somme des a,b :’,S) ;
j:='Bonjour Fin
à tous';
end.

Algorithme Moyen;
Var n:entier;
Debut ;
Ecrire(‘donnez votre
chiffre entre 0et 3’) ;
Lire(n) ;
Cas n vaut
0 :Ecrire(‘zero’) ;
1 :Ecrire(‘Un’)
2 :Ecrire(‘Deux’)
;

Sinon ecrire(‘vous n’avez


pas’),
Fin cas
Fin.
Algorithme Exo1; Program Exo1; Const Pi=3.14;
Constantes Pi=3.14; Var R,P,S : real;
Variables R,P,S : réel;
Début {Entrées} Begin {Entrées} Write('Donner la
Écrire('Donner la valeur du valeur du rayon R :') ; Read(R) ;
rayon R :') ; Lire(R) ; {Traitement} P := 2*PI*R; S :=
{Traitement} P 2*Pi*R; ← PI*R*R ; {Sorties}
2*PI*R; S Pi*R*R ; ← Writeln('Périmètre =' , P) ;
2*Pi*R; {Sorties} Write('Surface = ', S) ; End.
Écrire('Périmètre =' , P) ;
Écrire('Surface = ', S) ;
Fin
Procedure
1.2 Appels On peut tres bien appeler une procedure P1 depuis une procedure
P2, mais il faut que la procedure P1 aie ´ été déclarée avant la procédure P2.
Exemple donnant le même résultat.
PROGRAM exemple2;
VAR x, y, t : intègre;
PROCEDURE Affiche_xy;
BEGIN
writeln (x, ’ ’, y);
END;
PROCEDURE Echange_xy;
BEGIN
t := x; x := y; y := t;
Affiche_xy;
END;
BEGIN
x := 3; y := 4;
Affiche_xy; Echange_xy; Echange_xy;
END.
Ecrire Un Algorithme Qui Utilise Les Ensembles
Exercice. Fusion de deux listes triées Écrire un algorithme permettant, à partir
de deux listes triées, de construire « l’union » triée de ces deux listes. À partir
des listes [3, 6, 9] et [1, 6, 8, 12, 15], on obtiendra la liste [1, 3, 6, 6, 8, 9, 12,
15]. On supposera que l’utilisateur entre correctement les deux listes triées…
Réponse. L’idée est la suivante : on parcourt en parallèle les éléments des deux
listes d’entrée et, à chaque tour, on rajoute en fin de la liste résultat le plus
petit des deux éléments courants, puis on progresse dans la liste dont
l’élément a été retenu. À la fin de cette séquence de comparaisons (ou au
début si l’une des deux listes est vide), il reste des éléments non traités dans
l’une des deux listes. Il suffit alors de recopier cette fin de liste dans la liste
résultat…
L’algorithme est le suivant :
Algorithme fusionListes
# cet algorithme permet de fusionner deux listes triées

variables liste1, liste2, listeFusion : listes d’entiers naturels


n, i1, i2, nbEléments1, nbEléments2, nbMin : entiers naturels
début
# initialisation liste1
liste1 <- [ ]
# boucle de lecture liste1
Entrer ( n )
tantque ( n ≠ 0 )
# on rajoute l’entier n en fin de liste
liste1 <- liste1 + [ n ]
# on lit la valeur suivante
Entrer ( n )
fin_tantque

# initialisation liste2
liste2 <- [ ]
# boucle de lecture liste2
Entrer ( n )
tantque ( n ≠ 0 )
liste2 <- liste2 + [ n ]
Entrer ( n )
fin_tantque

# initialisations pour fusion


nbEléments1 <- nombreEléments ( liste1 )
nbEléments2 <- nombreEléments ( liste2 )
listeFusion <- [ ]
i1 <- 0 i2 <- 0
si ( nbEléments1 < nbEléments2 )
alors nbMin <- nbEléments1
sinon nbMin <- nbEléments2
fin_si

# boucle principale de fusion


tantque ( i1 < nbEléments1 ) et ( i2 < nbEléments2 )
faire
si ( liste1 [ i1 ] < liste2 [ i2 ] )
alors listeFusion <- listeFusion + [ liste1 [ i1 ] ]
i1 <- i1 + 1
sinon listeFusion <- listeFusion + [ liste2 [ i2 ] ]
i2 <- i2 + 1
fin_si
fin_tantque
# on recopie la fin de la liste non épuisée
si ( i1 < nbEléments1)
alors
# on recopie la fin de liste1
listeFusion <- listeFusion + liste1 [ i1, nbEléments1 – 1 ]
sinon
# on recopie la fin de liste2
listeFusion <- listeFusion + liste2 [ i2, nbEléments2 – 1 ]
# on affiche la liste fusionnée
pour i de 0 à nbEléments1 + nbEléments2 – 1
faire Afficher ( listeFusion [ i ] )
fin_pour
fin

Exercice 8. Suppres

Ecrire Un Algorithme Qui Utilise Les articles


Définition
Les enregistrements

Un enregistrement
est un type de données défini par
l’utilisateur
et qui permet
degrouper un nombre fini d’éléments (ou champs) de types
éventuellement différents
Déclaration
d’une structure enregistrement
Puisque l'enregistrement est un nouveau type, on commence par sa déclaration

Déclaration:
TypeFiche
=enregistrement nom, prénom : Chaînesexe : Caractèrenuméro :
Entier non signémoyenne : Réelnum_cin: Entier long
Fin Fiche Variable élève: fiche

Affectation de valeurs à cette variable :


élève.nom← "Boucetta"
élève.prénom← " Rayane"
élève.sexe← "M"
élève.numéro← 18
élève.moyenne← 13.25
élève.num_cin← EE123456

Exercices du chapitre 6 Sommaire Exercices 01-*-Saisie et affichage


de notes 1
2 02-*-Saisie et affichage de notes 2
2 03-*-Saisie et affichage de notes 3
2 04-*-Affichage d'un tableau de notes avec une valeur sentinelle
2 05-**- Saisie et affichage de notes d'étudiants pour plusieurs
matières
2 063 09-***-Structure contenant un tableau
3 10-***-Modélisation d'un système scolaire : classe, étudiant,
matière
3 Corrigés 01-*-Saisie et affichage de notes 1
2 02-*-Saisie et affichage de notes 2
2 03-*-Saisie et affichage de notes 3
3 04-*-Affichage d'un tableau de notes avec une valeur sentinelle
4 05-**- Saisie et affichage de notes d'étudiants pour plusieurs
matières
6 07-**-Initialisation partielle d'un tableau à 2 dimensions
7 08-**-Date du lendemain
8 09-***-Structure contenant un tableau
9 10-***-Modélisation d'un système scolaire : classe, étudiant,
matière 10
01-*-Saisie et affichage de notes 1 Ecrire un algorithme qui permet
la saisie des notes de 10 étudiants, puis l'affichage de toutes les
notes.
On ne fera pas de saisie contrôlée des notes.
02-*-Saisie et affichage de notes 2 Ecrire un algorithme qui permet
la saisie du nombre de notes à saisir, puis des notes. On sait
simplement que le nombre de notes ne peut dépasser 50. On affiche
ensuite les notes.
03-*-Saisie et affichage de notes 3 Sans réécrire tout l'algorithme
précédent, écrire la portion d'algorithme qui permettra d'afficher à la
fin, la note maximale, la note minimale, la moyenne.
04-*-Affichage d'un tableau de notes avec une valeur sentinelle
Ecrire un algorithme qui permet l'affichage du tableau de notes de
taille 10. Le tableau aura été initialisé en dur dans l'algorithme (c’est
à dire qu’il est déjà rempli). Les notes sont stockées dans le début du
tableau et la valeur -1 indique la fin (logique) du tableau de notes. Le
tableau peut contenir 10 notes.

12 8 6 15 2 -1

Affichage : [12, 8, 16, 5,]


05- Saisie et affichage de notes d'étudiants pour plusieurs matières
Il y a un certain nombre de matières à envisager dont le nombre ne
peut pas dépasser 7. Ecrire un algorithme qui permet la saisie du
nombre de matières, du nombre d'étudiants et des notes par
matière et par étudiant, puis l'affichage de l'ensemble des notes ainsi
que les moyennes par matière et étudiant.

CORRIGES

01-*-Saisie et affichage de notes 1 Algorithme


SaisieAffichageNotes1 /* Déclarations
*/ Constantes MAX_NB_NOTES = 50
/* le nombre maximal de notes
*/ Variables nbNotes : entier
/* nombre de notes à saisir
*/ notes : tableau[1..MAX_NB_NOTES] de réel
/* les notes
*/ i : entier /* indice */ /* Instructions
*/ Début écrire("Saisie des notes") écrire ("combien de notes ? ")
lire(nbNotes)
pour i de 1 à nbNotes
écrire ("note numéro ", i)
lire(notes[i])
finpour
écrire("Affichage des notes")
pour i de 1 à nbNotes écrire ("note numéro ", i, , " : ", notes[i])
finpour
Fin

02-*-Saisie et affichage de notes 2


Algorithme SaisieAffichageNotes2
/* Déclarations */ Constantes MAX_NB_NOTES = 50 /* le nombre
maximal de notes */ Variables nbNotes : entier /* nombre de notes à
saisir */ notes : tableau[1..MAX_NB_NOTES] de réel /* les notes */
i : entier /* indice */ reponse : chaine /* réponse oui/non */ /*
Instructions
*/ Début reponse "oui" i 0
écrire("Saisie des notes")
tantque reponse = "oui" et i < MAX_NB_NOTES i
i+1
écrire ("note numéro ", i)
lire(notes[i])
écrire ("encore une note ? (oui/non) ")
lire(reponse)
fintantque
nbNotes i
écrire("Affichage des notes")
pour i de nbNotes à 1 par pas de -1
écrire ("note numéro ", i, " : ", notes[i])
finpour Fin

DVD-MIAGE Corrigés
Algorithmique Exercices ch. 6 Page 3/15 03-*-Saisie et affichage de
notes 3 Algorithme SaisieAffichageNotes2 /* Déclarations */
Constantes MAX_NB_NOTES = 50 /* le nombre maximal de notes */
MIN = 0 /* borne inférieure des notes */ MAX = 20 /* borne
supérieure des notes */ Variables nbNotes : entier /* nombre de
notes à saisir */ notes : tableau[1..MAX_NB_NOTES] de réel /* les
notes */ i : entier /* indice */ reponse : chaine /* réponse oui/non */
max : réel /* note maximale */ min : réel /* note minimale */ moy :
réel /* moyenne des notes */ /* Instructions */ Début min MAX max
MIN moy 0 reponse "oui" i 0 écrire("Saisie des notes") tantque
reponse = "oui" et i < MAX_NB_NOTES i i + 1 écrire ("note numéro ",
i) lire(notes[i]) /* Détermination du min et du max */ si notes[i] >
max alors max notes[i] sinon si notes[i] < min alors min notes[i] finsi
finsi /* Cumul pour le calcul de la moyenne */ moy moy + notes[i] /*
Saisie de la réponse */ écrire ("encore une note ? (oui/non) ")
lire(reponse) fintantque nbNotes i moy moy / nbNotes
écrire("Affichage des notes") pour i de nbNotes à 1 par pas de -1
écrire ("note numéro ", i, " : ", notes[i]) finpour écrire("note
minimale : ", min) écrire("note maximale : ", max) écrire("moyenne :
", moy) Fin DVD-MIAGE Corrigés Algorithmique Exercices ch. 6 Page
4/15 04-*-Affichage d'un tableau de notes avec une valeur sentinelle
Algorithme AffichageTableauValeurSentinelle /* Déclarations */
Constantes TAILLE = 10 /* la taille du tableau */ SENTINELLE = -1 /*
valeur sentinelle */ Variables notes : tableau[1..MAX_NB_NOTES] de
réel = {12, 8, 16, 5, -1,,,,,} /* les notes */ i : entier /* indice */ /*
Instructions */ Début i 1 écrire("[") tantque notes[i] <> SENTINELLE
et i <= TAILLE écrire (notes[i], ", ") i i + 1 fintantque écrire("]") Fin

Vous aimerez peut-être aussi