Vous êtes sur la page 1sur 20

Cours Algorithmes :

Définition d’un programme :

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).

Un programme écrit doit être exécuté.

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.

La forme générale d’un algorithme :

Algorithme nom de l’algorithme ; Partie 1

Variables
Déclaration de variables ; Partie 2

Début
Action 1 ;
Action 2 ;
Action 3 ;
.
Partie 3
.
.
.
Action N ;

3
Fin.

Partie 1 : Entête du programme (non obligatoire)


Partie 2 : Partie déclaration des variables
Partie 3 : Partie Action

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.

Comment déclaré une variable ?

Nom de la variable : Type ;

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 ;

Interprétation de l’action déclarative 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 ?

Nom de la variable : = valeur ;

Exemple : Comment affecter la valeur 8 à la variable déclarée AB ?

AB : = 8 ;

Lecture : La variable AB reçoit la valeur 8

Lecture : La valeur 8 est affectée à la variable AB

Interprétation :

AB := 8 --------> A l'exécution
RAM
Code binaire de 8 AB

Comment afficher un texte (message) à l’écran ?

Il faut utiliser la procédure :

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 ?

Il faut aussi utiliser la procédure :

ECRIRE

Syntaxe :

Ecrire ( Nom de la variable ) ;

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.

Ecrire (A) ; L’écran affiche la contenu de la variable A. 7

Ecrire (‘A’) ; L’écran affiche le caractère A. A

Fin.

Comment affecter une valeur à une variable (par un utilisateur) au moment de l’exécution ?
La procédure utilisée est :

Lire

Syntaxe :

Lire ( Nom de la variable ) ;

3
Exemple :

Début
Ecrire (‘Saisir une valeur’) ; ---------> //A l’exécution, l’écran affiche : Saisir une valeur

La valeur saisie est 5.

Lire (A) ; ----------> //A l’exécution, la valeur 5 est affectée à la variable A.

Fin.

FIN DU PREMIER COURS

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 ) ;

Ecrire ( ' Saisir la deuxième Valeur : ' ) ;


Lire ( B ) ;

S := A + B ;

Ecrire ( ' La somme est : ' , S ) ;


Fin .

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 ) ;

Ecrire ( ' Saisir la Valeur du diviseur : ' ) ;


Lire ( B ) ;
S := A / B ;
Ecrire ( ' Le résultat de la division est : ' , S ) ;
Fin .

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 ) ;

Ecrire ( ' Saisir la Valeur du diviseur : ' ) ;


Lire ( B ) ;

Ecrire ( ' Le résultat de la division est : ' , A / B ) ;


Fin .

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.

La Condition = Une Comparaison = Un Test

La condition est sous l'une des formes suivantes :

Nom Variable Opérateur Valeur

ou

Nom Variable Opérateur Nom Variable


ou

Nom Variable Opérateur expression arithmétique

Les opérateurs possibles :


< inférieur
> Supérieur
>= Supérieur ou égal
<= inférieur ou égal
= égal
<> différent

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;

Ecrire ('La plus petite valeur est : ',Min)


Fin.

Interprétation Algorithme ------Pascal :


Algorithme Pascal Algorithme Pascal

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);

write('Donner la deuxieme valeur : ');


read(b);

write('La somme est : ',a/b:00);


readkey; Lire touche
end.

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.

a/b:00 : Pour afficher deux chiffres après la virgule seulement.

- 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

Autre syntaxe du SI:


Si Condition Alors Début
Action1;
Action2;
Fin
Sinon Début
Action 3;

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.

Si condition alors Action 1 ;

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.

Comment déclarer une variable caractère ?


Nom Variable : Caractère ;
Exemple :

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;

if Min > c Then min :=c ;


write(' La plus petite valeur est : ', Min );
readkey;
end.

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 :

Si cond1 alors Si cond2 alors Si cond3 alors Action1

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;

write('Donnez la valeur de A : ');


read(A);
write('Donnez la valeur de B : ');
read(B);

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

Il existe trois types de Boucle :


1- La boucle Tant que.
2- La boucle Pour.
3- La boucle Répéter.

Syntaxe de la boucle Tant que :

Tant que Condition Faire


Début
Action 1 ;
Action 2 ;
Action N ;
Fin ;

Interprétation de la boucle Tant que :


Si la condition est vraie alors on entre dans la boucle pour exécuter toutes les actions de cette boucle puis arrivé au
"fin;" on remonte tester la condition. Si elle est toujours vraie alors on entre dans la boucle une deuxième fois pour

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é.

Vous aimerez peut-être aussi