Académique Documents
Professionnel Documents
Culture Documents
Un programme est considéré comme la solution automatique d'un problème. C’est une suite logique d’étapes
simples à suivre (suite d’opérations) pour arriver à un résultat (Produit fini).
Un programme est un fichier qui contient des commandes (instructions, ordres, actions).
Lorsqu’un on exécute un programme toutes les commandes du programme vont être exécutées
séquentiellement de la première jusqu’à la dernière.
Un algorithme est aussi un programme. C’est la solution automatique d'un problème. Il est écrit sur papier.
Variables
Déclaration de variables ; Partie 2
Début
Action 1 ;
Action 2 ;
Action 3 ;
.
Partie 3
.
.
.
Action N ;
3
Fin.
La partie déclaration :
- Dans la partie déclaration, on doit déclarer toutes les variables utilisées dans la partie action (partie 3).
- Dans la partie déclaration on doit définir toutes les variables utilisées dans la partie action.
- Déclarer une variable veut dire spécifier son nom et son type.
- Donc déclarer une variable veut dire spécifier le champ de valeur que peut prendre la variable.
Entier = (Z)
Type
Réel = (R)
Exemple : Comment déclarer la variable AB de tel sorte qu’elle reçoit des réels ?
AB : Réel ;
AB : Réel ; A l'exécution, On a une réservation d’une case mémoire dans la RAM et cette case mémoire
va recevoir des réels.
RAM
AB
3
Comment affecter une valeur à une variable déclarée par le programmeur ?
AB : = 8 ;
Interprétation :
AB := 8 --------> A l'exécution
RAM
Code binaire de 8 AB
ECRIRE
Syntaxe :
Ecrire ( ‘ Texte ’ ) ;
Exemple :
Ecrire ( ‘ Saisir une valeur : ‘ ) à l’exécution l’écran affiche : Saisir une valeur :
3
Comment afficher le contenue d’une variable à l’écran ?
ECRIRE
Syntaxe :
Exemple :
Soit la partie Action suivante :
Début
A : =8 ; // La case réservée à la variable A reçoit la valeur 8.
A : =7 ; // La case réservée à la variable A reçoit la valeur 7. Donc, la valeur 8 est écrasée par 7.
Fin.
Comment affecter une valeur à une variable (par un utilisateur) au moment de l’exécution ?
La procédure utilisée est :
Lire
Syntaxe :
3
Exemple :
Début
Ecrire (‘Saisir une valeur’) ; ---------> //A l’exécution, l’écran affiche : Saisir une valeur
Fin.
3
Exercice N°1:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières puis affiche la somme de ces deux
valeurs.
Algorithme Somme ;
Variables
A : Entier ;
B : Entier ;
S : Entier ;
Début
Ecrire ( ' Saisir la première Valeur : ' ) ;
Lire ( A ) ;
S := A + B ;
Exercice N°2:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières A et B puis affiche le résultat de la division de A
sur B.
Analyse :
- L'opérateur de division utilisé est le slash ( / ). Le slash retourne un résultat réel.
- La variable qui reçoit le résultat de la division doit être déclarée de type réel.
Algorithme division ;
Variables
A, B : Entier ;
S : Réel ;
Début
3
Ecrire ( ' Saisir la Valeur du divisé : ' ) ;
Lire ( A ) ;
Remarque : L'affichage du résultat se fait en virgule flottante car le réel est stockée en mémoire en virgule
flottante.
Exercice N°3:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières A et B puis affiche le résultat de la division de A
sur B en utilisant seulement deux variables (Pour minimiser le nombre de variable utilisée= optimisation de la
mémoire).
Algorithme division ;
Variables
A, B : Entier ;
Début
Ecrire ( ' Saisir la Valeur du divisé : ' ) ;
Lire ( A ) ;
Exercice N°4:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières A et B puis réalise la permutation des deux
variables en utilisant une variable intermédiaire.
Algorithme permutation;
variable
a, b, c : entier ;
Début
Ecrire (' Donner la première valeur de a : ' ) ;
Lire (a) ;
Ecrire ( ' Donner la deuxième valeur de b : ' );
3
Lire (b);
c:=a ;
a:=b ;
b:=c ;
Ecrire (' La nouvelle valeur de a est : ' ,a);
Ecrire (' La nouvelle valeur de b est : ' ,b);
Fin.
Exercice N°5:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières A et B puis réalise la permutation des deux
variables sans utiliser une variable intermédiaire.
Algorithme permutation1;
variable
a, b : entier ;
Début
Ecrire (' Donner la première valeur de a : ' ) ;
Lire (a) ;
Ecrire ( ' Donner la deuxième valeur de b : ' );
Lire (b);
a:= a + b ;
b:= a - b ;
a:= a - b ;
Ecrire (' La nouvelle valeur de a est : ' ,a);
Ecrire (' La nouvelle valeur de b est : ' ,b);
Fin.
Exercice N°6:
Ecrire l’algorithme qui demande à l’exécution deux valeurs entières A et B puis affiche la plus petite valeur.
Analyse du Problème :
Pour pouvoir déterminer la plus petite valeur entre A et B, il faudra comparer le contenu de A avec le contenu de B et
pour cela on doit utiliser une structure Algorithmique qui permet ce test. Cette structure est appelée : Structure de
contrôle ou structure conditionnelle.
3
L'instruction Alternative SI :
Syntaxe :
Si Condition Alors Action1
Sinon Action2 ;
Interprétation :
A l'exécution de l'instruction conditionnelle, le processeur teste si la condition est vraie, dans ce cas il exécute l'action1
et non pas l'action2. Mais si le teste de la condition s'avère faux alors l'action2 est exécutée et non pas l'action1.
Donc, l'exécution de l'instruction de contrôle implique soit l'exécution de l'action1 ou de l'action2 mais pas les deux et
cela dépend de la condition.
ou
Solution de l'exercice N° 6 :
Algorithme comparaison;
variable
a, b, c : entier ;
Début
Ecrire('Donner une valeur : ');
3
Lire (a);
Ecrire ('Donner une autre valeur : ');
Lire (b);
c:=a-b;
if c<0 Alors Ecrire ('La plus petite valeur est : ',a)
Sinon Ecrire ('La plus petite valeur est : ',b);
Fin.
Autre Solution:
Algorithme comparaison;
variables
a, b: Entier ;
Début
Ecrire ('Donner une valeur : ');
Lire(a);
Ecrire ('Donner une autre valeur : ');
Lire (b);
if a<b Alors Ecrire ('La plus petite valeur est : ',a)
Sinon Ecrire ('La plus petite valeur est : ',b);
Fin.
Autre Solution:
Algorithme comparaison;
variables
a, b, Min: Entier ;
Début
Ecrire ('Donner une valeur : ');
Lire(a);
Ecrire ('Donner une autre valeur : ');
Lire (b);
if a<b Alors Min := a
Sinon Min := b;
3
Algorithme Program Caractère Char
Variables Var Si If
Début Begin Alors Then
Fin End Sinon Else
Entier Integer
Réel Real
Ecrire Write
Lire Read
Exercice
Ecrire le programme Pascal qui affiche le résultat de la division de A sur B.
program somme;
uses crt;
var
a,b:integer;
begin
clrscr; Cette Instruction efface l'écran (Clear screen)
write('Donner la premiere valeur : ');
read(a);
Remarque :
- Readkey est utilisée pour bloquer l'exécution des instructions. C'est à dire que l'utilisateur peut voir le message affiché
par l'instruction : write('La somme est : ',a/b:00);
- Pour pouvoir utiliser dans un programme "Readkey" et "Clrscr", il faudra déclarer la bibliothèque "CRT".
- La déclaration des bibliothèque se fait avant la déclaration des variables.
- Dans le cas où on veut calculer le résultat de la division entière de A sur B, on utilise la fonction Pascal : DIV
- Dans le cas où on veut calculer le reste de la division entière de A sur B, on utilise la fonction Pascal : MOD
3
Exemple :
5 Div 2 --------> 2
12 Mod 7 ----------> 5
Exercice
Ecrire le programme Pascal qui affiche le résultat et le reste de la division entière de A sur B.
program division;
uses crt;
var
a,b,resu,rest:integer;
begin
clrscr;
write('Donner la valeur du divise : ');
read(a);
write('Donner la valeur du diviseur : ');
read(b);
resu:=a div b;
rest:=a-(b*resu);
writeln;
writeln('Le resultat de la division est : ',resu);
write('Le reste de la division est : ',rest);
readkey;
end.
Remarque :
- Dans le cas où la valeur du diviseur donnée est zéro alors le programme affiche un message d'erreur Pascal. Donc, il
faut faire un test.
- Dans le cas où plusieurs actions doivent être exécutées si la condition est vraie alors ces actions doivent être entre un
Début et un fin
3
Action 4;
Fin;
Autres solution:
program division;
uses crt;
var
a,b,resu,rest:integer;
begin
clrscr;
write('Donner la valeur du divis‚ : ');
read(a);
write('Donner la valeur du diviseur : ');
read(b);
writeln;
if b=0 then begin
write('Erreur division par z‚ro');
readkey;
end
else begin
resu:=a div b;
rest:=a mod b;
writeln(' Le r‚sultat de la division est : ',resu);
write(' Le reste de la division est : ',rest);
readkey;
end;
end.
Exercice
Ecrire l'algorithme qui demande une valeur entière puis affiche si cette valeur est pair ou impair.
program division;
uses crt;
var
3
a : integer;
begin
clrscr;
write('Donner une valeur : ' );
read(a);
Si A MOD 2 = 0 Alors write(A, ' est pair ')
Sinon write(A, ' est impair ')
readkey;
end.
Remarque :
Dans le cas où des instructions doivent être exécutées seulement dans le cas où la condition est vraie alors on utilise un
Si sans sinon.
Autres Syntaxe de l'instruction de contrôle SI.
Exercice :
Ecrire l'algorithme qui demande une valeur entre 1 et 7 puis affiche le jour correspondant.
program jours_de_semaine;
uses crt;
var
a:integer;
begin
clrscr;
write('Donner un chiffre entre 1 et 7 : ');
read(a);
writeln;
if (a<1) or (a>7) then write('Erreur, vous devez donner un chiffre entre 1 et 7. ')
else begin
if a=1 then write('Le jour correspondant est le dimanche');
if a=2 then write('Le jour correspondant est le lundi');
if a=3 then write('Le jour correspondant est le mardi');
if a=4 then write('Le jour correspondant est le mercredi');
if a=5 then write('Le jour correspondant est le jeudi');
if a=6 then write('Le jour correspondant est le vendredi');
if a=7 then write('Le jour correspondant est le samedi');
end;
readkey;
end.
3
Exercice :
Ecrire l'algorithme qui demande un caractère R ou O ou V puis affiche le message correspondant Stop ou Attention
ou Passage autorisé.
Remarque :
A l'exécution du programme, l'utilisateur doit donner un caractère et non pas une valeur entière ou un Réel. Donc,
l'espace réservé dans la RAM doit pouvoir stocker un caractère. d'où la nécessité d'utilisation d'un type caractère.
Le type Caractère:
Dans le cas où on déclare une variable de type caractère alors cette variable ne reçoit que des caractères.
Début
A:= 5 ; ( La variable A reçoit la valeur 5 )
C := 'A' ; ( La variable caractère C reçoit le caractère A majuscule )
C := '5' ; ( La variable caractère C reçoit le caractère 5 )
C := 'a' ; ( La variable caractère C reçoit le caractère a minuscule )
Fin.
Remarque :
- La condition peut être composée de plusieurs conditions en utilisant l'opérateur "et" ou l'opérateur "ou". Dans ce cas
chaque condition doit être délimitée par des parenthèses.
- Sous Pascal la récupération d'un caractère de chez l'utilisateur se fait par "Readln".
program Feux ;
uses crt;
var
a:integer;
begin
clrscr;
write('Donner une lettre R ou O ou V : ');
readln (a);
writeln;
if (a< >' R ' ) and (a < > ' O ' ) and ((a < > ' V ' ) then write(' Erreur ')
else begin
3
if a=' R ' then write(' Stop ');
if a=' O ' then write(' attention ');
if a=' V ' then write(' Passage autorisé ');
end;
readkey;
end.
Exercice :
Ecrire l'algorithme qui demande trois valeurs entières puis affiche la plus petite valeur.
1ère Solution :
program Minim;
uses crt;
var
a, b, c, min : integer;
begin
clrscr;
write('Donner la 1 valeur : ' );
read(a);
write('Donner la 2 valeur : ' );
read(b);
write('Donner la 3 valeur : ' );
read(c);
if a < b Then min :=a
Else min :=b;
2 ème Solution :
program Minim;
uses crt;
var
a, b, c, min : integer;
begin
clrscr;
write('Donner 3 valeurs : ' );
read(a, b, c);
3
if a < b Then if b < c Then min :=a
Else If a < c Then min :=a
Else min := c
Else if b < c Then min :=b
Else min := c;
alors
write(' La plus petite valeur est : ', Min );
readkey;
end.
L'instruction de contrôle Imbriquée :
Sinon On gère
Sinon On gère
Sinon On gère ;
Exercice :
Ecrire l'algorithme qui résoud l'équation du premier degré.
program equation;
uses crt;
var
a, b, c : real ;
begin
clrscr;
writeln(' *** Programme qui résoud une equation du type A x + B = 0 *** ');
writeln;writeln;writeln;
if a=0 then if b=0 then write('Toutes les valeurs sont des solutions')
else write('Erreur, equation incorrecte')
3
else write('La solution est : ',-B / A) ;
readkey;
end.
Exercice :
Ecrire l'algorithme qui résoud l'équation du deuxième degré.
program equation;
uses crt;
var
a,b,c,d : real ;
begin
clrscr;
writeln(' *** Programme qui résoud une equation du type A x² + B x + C = 0 *** ');
writeln;writeln;writeln;
write('Donnez la valeur de A : ');
read(A);
write('Donnez la valeur de B : ');
read(B);
write('Donnez la valeur de C : ');
read(C);
if a=0 then if b=0 then if c=0 then write('Toutes les valeurs sont des solutions')
else write('Erreur, equation incorrecte')
else write('La solution est : ',-b/c)
else begin
d:=b*b-4*a*c;
if d<0 then write('Pas de solutions a votre equation dans R');
if d=0 then write('Solution double X1=X2=',-b/(2*a));
if d>0 then write(' Il y a deux solutions a votre equation : X1= ',(-b+sqrt(d))/(2*a),' X2=',(-b-sqrt(d))/(2*a));
end;
readkey;
end.
Exercice :
Ecrire l'algorithme qui affiche le message "Bonjour" dix fois verticalement.
Algorithme Exo ;
Début
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
3
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Ecrireln(' Bonjour ');
Fin.
Inconvénient du programme :
Dans le cas où on doit afficher 1000 fois le message "Bonjour" alors on doit répéter l'écriture de l'instruction :
Ecrireln(' Bonjour '); 1000 fois. Donc, on a un problème de répétition.
Solution :
Eviter la répétition.
Comment ?
Utiliser une nouvelle structure Algorithmique dans laquelle on écrit l'instruction :
Ecrireln(' Bonjour '); une seule fois mais elle doit s'exécuter 1000 fois.
Cette nouvelle structure est appelée :
La Boucle
3
exécuter toutes les actions puis on remonte tester la condition et ainsi de suite jusqu'a ce que la condition devient
fausse. à ce moment là on sort de la boucle pour exécuter les actions qui viennent après le "Fin;" de la boucle.
Remarque :
La condition doit faire intervenir une variable appelée "Compteur" et cette variable doit absolument recevoir une
nouvelle valeur à chaque fois qu'on entre dans la boucle pour que la condition devienne vraie à un moment donné.