Algorithmique - Séance 4 -Séance 3Séance 5

Nos connaissances actuelles ne nous permettent pas de faire des programmes utilisant la capacité de l'ordinateur de répéter rapidement et sans erreur beaucoup de calculs. Nous allons donc remédier immédiatement à cela. Chaque structure de contrôle forme une instruction (qui peut donc être utilisée dans une autre structure de contrôle).

Instruction IF – THEN – ELSE

La forme la plus simple de l’instruction est : IF condition THEN instructions.
Si la condition est remplie alors l’instruction sera exécutée.
Voici un exemple simple :

PROGRAM exemple_if_then;
VAR a : INTEGER;
BEGIN
Write(‘Entrez un chiffre :’);
Readln(a);
IF a=3 THEN BEGIN
Writeln(‘Le chiffre était trois’);
END;
END.

Le programme commence par demander la saisie d’un chiffre. La valeur est attribuée à a.
Dans la ligne suivante, il y a une instruction IF … THEN. La condition est a=3. En clair « est-ceque a est égal à 3 ? ».
Si c’est la cas, l’instrcution après le THEN (Writeln(‘Le chiffre était trois’);) est exécutée.
Si ce n’est pas le cas, il ne se passe rien et le programme se termine.

On va améliorer ce programme. On veut que le programme réagisse quand la condition n’est pas réalisée. Pour cela on utilise l’instruction ELSE (sinon) :

PROGRAM exemple_if_then_else;
VAR a : INTEGER;
BEGIN
Write(‘Entrez un chiffre :’);
Readln(a);
IF a=3 THEN BEGIN
Writeln(‘Le chiffre était trois’);
END
ELSE BEGIN
Writeln(‘Le chiffre n’était pas trois’);
END;
END.

Cette fois si la condition n’est pas réalisée, le programme l’indique en exécutant l’instruction après le ELSE.

Exercice :
Faire un jeu qui demande de trouver le nombre entre 0 et 10 choisi par l'ordinateur.
On utilisera la fonction Random(N) qui renvoie un entier entre 0 et N-1 compris.
L'instruction à utiliser est valeur_choisie := Random(11). Si le joueur trouve le nombre, le programme écrira « Gagné ! », sinon, il écrira « Perdu :( ».

La boucle FOR – DO

FOR variable : = valeur_de_début TO valeur_de_fin DO instruction;

Une boucle est une structure de contrôle. Cette boucle FOR – DO permet d’indiquer que l’instruction doit êtreexécuter à plusieur reprise. On maître le nombre de répétition à priori.

Exemple :

PROGRAM exemple_for_do;
VAR a : INTEGER;
BEGIN
FOR a:=1 TO 5 DO BEGIN
Writeln(’ Ceci est un exemple’);
END;
END.

Ce programme affiche :
Ceci est un exemple
Ceci est un exemple
Ceci est un exemple
Ceci est un exemple
Ceci est un exemple

a est appelée l’indice de la boucle.

On peut obtenir des valeurs décroissantes de a en remplaçant TO par DOWNTO.

On peut utiliser l’indice dans les instructions mais il ne faut jamais modifier l’indice dans les instructions à exécuter !

Exercice :
Ecrire un programme qui affiche les 25 premiers multiples de 17.

La boucle REPEAT – UNTIL

REPEAT instruction UNTIL condition;

Cette boucle va répéter l’instruction tant que la condition n’est pas réaliser. Il se peut que la condition ne se réalise pas et alors la boucle se répète indéfiniment. On ne connait pas à priori le nombre de répétitions.
Exemple :

PROGRAM exemple_repeat_until;
VAR a,mult : INTEGER;
BEGIN
a:=0; on initialise la variable indice de boucle à 0
REPEAT
Mult:=a*7; on cacule la valeur du multiple
Writeln (mult); on écrit le résultat
a:=a+1; on incrémente l’indice pour le calcul du multiple suivant
UNTIL a*7>=100;on vérifie que le multiple n'est pas supérieur à 100
END.

Ce programme va écrire tous les multiples de 7 inéfrieur à 100.