Chapitre 2: Notions d'algorithme et de programme
Université Abderrahmane Mira Bejaïa Faculté des technologies
Département Technologie
Présenté par:
Dr Wahiba LARBI-MEZEGHRANE
Cours destiné aux étudiants de 1 année Technologie
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Introduction
Dans la vie courante, chacun de nous a déjà été confronté, consciemment ou non, a exécuter ou formuler des algorithmes, beaucoup d’exemple peuvent être cités:
• Utiliser un mode d’emploi pour faire fonctionner un appareil;
• Monter le chemin à une personne égarée;
• Expliquer à un enfant comment se laver les mains;
…
Le mot Algorithme est inventé par le mathématicien Al-
Khwârismî [780- 850]
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Notions d’algorithme
Un algorithme est une suite finie ordonnée d’instructions (ordres ou actions) qui indique la démarche à suivre pour résoudre un problème particulier.
Plusieurs algorithmes différents peuvent être formulés pour résoudre un même problème.
Le langage utilisé dans un algorithmique est un
compromis entre un langage naturel et un langage de
programmation.
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Démarche et analyse d'un problème
Pour résoudre un problème, un enchainement logique et cohérent doit être suivi.
Ce processus de résolution est comme suit:
➢ Il commence par la réflexion humaine qui permet d’analyser et d’étudier le problème en question pour trouver une solution;
➢ Cette solution sera par la suite formulée et écrite sous forme d’algorithme (en langage naturel suivant une certaine structure );
➢ Pour que cette solution soit traitée par un ordinateur, l’algorithme doit être traduit en programme écrit dans un langage de
programmation ( C, C
++, Java, Pascal,… );
➢ L’ordinateur (le processeur) compile et exécute le programme pour
récupérer les résultats.
Démarche et analyse d'un problème
Réflexion et Analyse du problème à résoudre
Algorithme
Écriture de l’algorithme
Programme
Traduction de l’algorithme en un programme
Problème
Démarche et analyse d'un problème
Un langage de programmation est une notation conventionnelle qui définit un ensemble de règles syntaxiques (le vocabulaire utilisé ) et sémantiques (le sens affecté à chaque objet ou instruction).
C’est le langage PASCAL qui sera utilisé dans ce cours.
Son nom vient du mathématicien BLAISE Pascal, inventé par NIKLAUS
Wirth dans les années 1970. Il est utilisé pour des fins pédagogiques
(enseignement de la base de programmation )
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Structure d'un algorithme / programme
L’application d’un algorithme sur des données en entrée, nous permet d’obtenir des résultats en sortie, qui représentent la solution au problème. L’algorithme peut avoir recours à des données supplémentaires pour réaliser le traitement prévu, ces données ne sont ni d’entrée ni de sortie.
Ceci peut être schématisé comme suit:
Données en entrée (Inputs)
Données en Sortie
Algorithme (Traitement)
Données supplémentaires
Structure d'un algorithme / programme
L’écriture d’un algorithme doit suivre une certaine structure, cette structure est composée de trois parties:
➢Entête : c’est la partie qui permet de déclarer le nom de l'algorithme, en utilisant un identificateur.
➢ Déclarations : c’est la partie qui permet de déclarer et d’identifier toutes les données manipulées par l'algorithme, en utilisant des identificateurs.
➢ Corps : c’est la partie qui regroupe toutes les instructions à exécuter.
Structure d'un algorithme / programme
La structure d’un algorithme / programme est la suivante :
Algorithme <Nom_algo>
< Déclarations >
Début
<Instruction 1 >;
<Instruction 2>;
…
<Instruction n>;
Fin
Program Nom_Pg ; uses wincrt;
<Déclarations>;
Begin
<Instruction 1 >;
<Instruction 2>;
…
<Instruction n>;
End.
Pascal Algorithme
Traduction
Entête
La partie Déclarations
Corps
Structure d'un algorithme / programme
Parmi les règles à respecter dans l’écriture d’un programme Pascal, nous pouvons citer:
✓Un programme Pascal commence toujours par la mot réservé Program, suivi du nom du programme, suivi d'un point-virgule (;)
✓Le bloc d'instructions est encadré par les mots réservés Begin et End.
✓Le dernier end est suivi d’un point final ( .),
✓Tout ce qui est écrit après le point final sera ignoré par le compilateur.
✓Les instructions sont séparées par des ' ;' .
✓Les commentaires sont mis entre accolades { } ou (* *), ils peuvent être
placés en n'importe quel endroit du programme. Ils permettent d’ajouter des
explications dans le programme afin de faciliter sa compréhension. Les
commentaires ne sont pas interprétés par le compilateur.
Structure d'un algorithme / programme
Entête
Dans l’entête d’un algorithme, le nom utilisé pour l’identifier ne possède aucune restriction (tout nom utilisé est accepté); Contrairement au
programme PASCAL, la syntaxe est très importante.
L’entête doit commencer par le mot réservé Program suivi d'un
identificateur valide (le nom du programme), suivi d'un point-virgule, Un identificateur est un nom ( une chaîne de caractères ) utilisé pour
nommer (identifier) un objet dans un programme. Ces objets peuvent être des variables, des constantes, des types ou des sous-programmes
(procédures et fonctions).
Un identificateur ne peut être affecté qu’à un seul objet;
Structure d'un algorithme / programme
En Pascal, les identificateurs doivent commencer par une lettre et peuvent être poursuivis par n'importe quelle combinaison de lettres (A-Z, a-z),
chiffres (0-9) ou trait souligné(_),
Un identificateur ne peut pas être un mot réservé.
Lettre Lettre
Chiffre ( _ )
Construction d’un identificateur
Identificateur valide
Structure d'un algorithme / programme
Begin, End, If, Array, Const, Div, Do, Downto, Else, End, False, File, For, Function, Goto, If, Mod, Not, Of, Or, Procedure, Program, Repeat, String, Then, To, Type, True, Until, Uses, Var, While, With…
Un mot réservé
C’est un mot réservé à l'usage par un langage de programmation, et ne peut en aucun cas être utilisé comme identifiant.
Chaque langage de programmation possède sa propre liste de mots réservés.
Exemples de mots réservés en PASCAL
Structure d'un algorithme / programme
Val : est un identificateur valide.
Val1 : est un identificateur valide.
Val_1 : est un identificateur valide.
Val 1 : est un identificateur non valide (présence d’un espace).
Val-1 : est un identificateur non valide (présence du tiret 6 ( - )).
1Val : est un identificateur non valide (commence un caractères numérique).
True : est un identificateur non valide ( mot réservé)
Exemples d’identificateurs
Structure d'un algorithme / programme
Il peut s’agir d’une:
➢ Déclaration des constantes;
➢ Déclaration des variables;
➢ Déclaration des types;
➢ Déclaration des fonctions;
➢ Déclaration des procédures.
La partie Déclaration
Structure d'un algorithme / programme
Une constante est un emplacement réservé en mémoire, qui contient la valeur d'une donnée non modifiable. Les constantes sont déclarées dans la partie des déclarations d'un programme, après le mot réservé Const, suivant la syntaxe ci-dessous:
Const <Nom_Constante > = <ValeurConstante> ; Plusieurs constantes peuvent être déclarées, sans répéter le mot Const.
Déclaration des constantes
;
Constantes Pi = 3,14 Val = 1024 Bool = False
Const
Pi = 3.14 ; Val = 1024 ; Bool = False ;
Pascal Algorithme
Traduction
Une variable est un emplacement réservé en mémoire, qui contient la valeur d'une donnée modifiable. Chaque variable possède un nom unique (identificateur) par lequel on peut accéder à son contenu.
Les variables sont déclarées dans la partie déclarations d'un programme, après le mot réservé Var, suivant la syntaxe ci-dessous:
Var <Nom_variable > : <type_variable> ;
Remarques:
✓Plusieurs variables peuvent être déclarées sans répéter le mot Var.
✓Chaque variable possède un type,
✓Les variables de même type seront séparées par des virgules.
Structure d'un algorithme / programme
Déclaration des variables
Un type: représente un format des données que peut contenir une variable, ceci permet de prévoir la taille de l'espace mémoire qui lui est nécessaire.
Il existe 5 types de variables simples:
entier, réel, booléen, caractère et chaine de caractères;
Structure d'un algorithme / programme
Déclaration des variables
✓ Le type entier: Les valeurs de ce type forment un sous-ensemble de l'ensemble des nombres entiers, les bornes de ce sous ensemble dépendent de l'implémentation du compilateur.
✓ Le type réel: De même que le type entier, les valeurs de ce type forment un sous-ensemble de l'ensemble de nombres réels.
✓ Le type booléen (logique): Ce type ne peut prendre que deux valeurs possibles : true (vrai) et false (faux).
✓ Le type caractère: Ce type ne peut prend qu’un seul caractère. Un caractère peut être tout symbole imprimable. Un caractère doit être écrit entre deux apostrophes.
✓ Le type chaine de caractères: Ce type peut être une séquence d’un ou plusieurs caractères ( un mot ou une phrase).
Structure d'un algorithme / programme
Types des variables
Structure d'un algorithme / programme
Types des variables
Algorithme PASCAL ExemplesEntier Integer 123, -99
Réel Real 0.65, 234.56
Booléen Boolean True, false Caractère Char ‘A’ , ‘&’, ‘1’
Chaîne de caractère
String ‘bonjour’ , ‘true’
;
Variables x,y,z: réel
a: entier
nom: Chaîne de caractère
Var
x, y, z : real;
a : integer;
nom : string;
Pascal Algorithme
Traduction
Structure d'un algorithme / programme
Déclaration des Types
;
Type N_eliminatoire = 0..5 Variables x: N_eliminatoire
Type N_eliminatoire = 0..5 ; Var x : N_eliminatoire ;
Pascal Algorithme
Traduction
En plus des types de base, Il est possible de créer de nouveaux types, qui une fois déclarés peuvent être utilisés de la même manière que les types de base.
Exemple : créer un type intervalle Type NomType = Val_inf..Val_sup
Structure d'un algorithme / programme
Déclaration des fonctions / procédures
Les fonctions et les procédures sont des sous-programmes dont le code sera défini une seule fois (dans la partie déclarations), et que l'on appellera un ou plusieurs fois dans le corps du programme principal.
La déclaration des fonctions et des procédures se fait par l’utilisation des mots réservés Function/ procedure (respectivement).
Le chapitre 4 sera consacré à ces deux concepts.
Structure d'un algorithme / programme
Regroupes toutes les instructions devant être exécutées séquentiellement par le processeur afin de retrouver la solution.
Les instructions peuvent être classées en 4 grandes catégories
✓ Les entrées /sorties ;
✓ Les affectations;
✓ Les structures de contrôle conditionnelles;
✓Les structures de contrôle répétitives.
La partie Corps du programme
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Les opérations sur les variables/constantes
Les opérateurs permettent d’effectuer des calculs, d'écrire des expressions qui seront évaluées par l'ordinateur. La valeur d'une expression est soit affectée à une variable, affichée ou bien utilisée dans un test.
Nous avons trois types d'opérateurs :
✓ Opérateurs arithmétiques;
✓Opérateurs logiques;
✓Opérateurs relationnels ;
Opérateurs
Les opérations sur les variables/constantes
Opérateurs arithmétiques
Remarques:
Si x et y sont deux entiers, alors:
x/y : le résultat est de type réel.
x div y : le résultat est de type entier.
x mod y : le résultat est de type entier
Opérateurs de signe + / -
Multiplication *
Division entière Div
Division réelle /
Modulo (reste de la division ) Mod
Addition +
Soustraction -
Les opérateurs arithmétiques opèrent sur des variables de type entier ou réel.
Les opérations sur les variables/constantes
Opérateurs logiques
Opérateurs logiques opèrent sur les variables booléennes.
Table de vérité des opérateurs: Not, And, et Or (Avec P et Q des variables booléennes) And Et logique
Or Ou logique Not Négation
P Q Not P P And Q P Or Q
True True False True True
True False False False True
False True True False True
False False True False False
Les opérations sur les variables/constantes
Opérateurs relationnels
> Supérieur
>= Supérieur ou égal
< Inférieur
<= Inférieur ou égal
= Egal
<> Différent Remarques:
1. Le = et <> opèrent sur tous les types de variables précédemment définis, par contre les autres opérateurs ne peuvent pas s'appliquer sur des opérandes de type booléen.
Les opérations sur les variables/constantes
Les fonctions standards
Fonctions arithmétiques
Fonction Signification Type de l'argument Type du résultat
ABS(x) │x│ Entier ou Réel De même type
SQR(x) X² Entier ou Réel De même type
SQRT(X) Racine(x) Entier ou Réel ≥ 0 Réel
SIN(X) SIN(X) Entier ou Réel Réel
COS(X) COS(X) Entier ou Réel Réel
LN(X) Log(x) Entier ou Réel ≥ 0 Réel
Exp(X) ex Entier ou Réel Réel
Les opérations sur les variables/constantes
Les fonctions standards
Fonctions de conversion
Fonction Signification Type de l'argument Type du résultat
Trunc(X) Partie entière de X Réel Entier
Round(X Arrondi X à l'entier le plus proche
Réel Entier
ORD(X) Rang de X Entier, Caractère,
ou Booléen
Entier CHR(X) Caractère correspondant
au code ASCII
Entier Caractère
Les opérations sur les variables/constantes
Les fonctions standards
Fonctions d'ordre
Fonction Signification Type de l'argument Type du résultat
PRED(X) Valeur qui précède X Entier, Caractère, ou Booléen
De même type SUCC(X) Valeur qui suit X Entier, Caractère, ou
Booléen
De même type ODD(X) Vrai si X est impaire,
Faux si X est pair
Entier Booléen
Les opérations sur les variables/constantes
Évaluation des expressions
➢ Les expressions booléennes (logiques)
L’évaluation d’une expression booléenne donne un résultat de type booléen. Elle peut comporter des opérateurs arithmétiques, des opérateurs de relation et des opérateurs booléens.
Ex: (13 < 9+2) AND (1-5 < 0)
Une expression est une combinaison d'opérandes (variables, constantes), d'opérateurs (arithmétiques, logiques, relationnels ) et de fonctions.
Deux types d’expressions sont à distinguer :
➢ Les expressions arithmétiques
Ces expressions sont composées d'opérandes numériques reliés par des opérateurs arithmétiques.
Ex: 3*5 - (6+6) / 2
Les opérations sur les variables/constantes
➢ Règle d'évaluation des expressions
La priorité d'exécution des opérateurs se fait dans l'ordre suivant : 1. Les parenthèses
2. Les fonctions
3. Le moins unaire, le NOT 4. * , /, DIV,MOD, AND 5. + ,-,OR
1. En premier lieu, le contenu des parenthèses est évalué, en commençant par les parenthèses les plus internes.
2. Ensuite, les fonctions seront évaluées.
3. Puis, les opérateurs en commençant par ceux ayant une plus grande priorité.
4. Dans le cas des opérateurs de même priorité, l’évaluation commence par le plus à gauche.
➢ Les priorités dans les opérateurs
Évaluation des expressions
Les opérations sur les variables/constantes
Évaluation des expressions
-5 + (3*3) div 2 + 25 mod (3*sqrt(16)) 9
4
12 -5
4
1 -1
(4)(7) (1) (5) (8) (6) (3) (2)
Les opérations sur les variables/constantes
Évaluation des expressions
( 24 <> (2*5/2)) And Not (10<15) Or True 10
5 True
True False False
True (3) (1)(2) (6) (5) (4) (7)
Les opérations sur les variables/constantes
Évaluation des expressions
Exemple d’expression incorrecte:
Soient a,b,c,d,e des opérandes numériques
(a-c) < b Or c ≤ (d+e) En appliquant les règles de priorités:
➢(a-c) sera exécuté en premier, puis
➢(d+e), puis
➢b Or c qui n’a pas de sens ( un opérateur logique sur des opérandes numériques) d’où l’expression incorrecte
L'expression correcte est:
(
(a-c) < b)
Or(
c ≤ (d+e))
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Types d'instructions
Comme vu précédemment, les instructions peuvent être classées en 4 grandes catégories:
✓Les Entrées /Sorties ;
✓Les affectations;
✓ Les structures de contrôle conditionnelles;
✓ Les structures de contrôle répétitives.
Types d'instructions
Les Entrées / Sorties
Ce sont des échanges d'informations entre la mémoire (variables et constantes) et les périphériques (clavier, écran ...).
Un programme a besoin de données sur lesquelles il opère. Ces données peuvent être:
✓ Renseignées dans le programme , sous forme de constantes ou d'affectation;
✓ Renseignées par l’utilisateur (les entrées )
Dans le premier cas, les données restent inchangées et les résultats retournés par le programme seront les mêmes à chaque exécution.
Par contre, dans le deuxième cas, les résultats retournés changent à chaque exécution, en fonction des valeurs introduites par l’utilisateur. Donc la solution est générique et applicable sur tous les problèmes similaires.
➢ Les Entrées (Lecture)
Types d'instructions
Les Entrées / Sorties
➢ Les Entrées (Lecture) Syntaxe
Lire ( <id_var1> )
Lire (<id_var1> , <id_var2> )
Lire (<id_var1>, <id_var2> …<id_varn> )
Read (<id_var1> );
Read (<id_var1> , <id_var2> );
Read (<id_var1> , <id_var2>…<id_varn> );
Readln(<id_var1>, <id_var2>,<id_var3> );
Pascal Algorithme
Traduction
Remarques:
➢Read (v1, v2, v3, ..., vn); <=> Read(v1); Read(v2);... Read(vn));
➢Readln (v1, v2, v3, ..., vn); permet de lire les valeurs en paramètre, et de passer ensuite à la ligne suivante, en ignorant ce qui reste éventuellement sur la ligne;
Types d'instructions
Les Entrées / Sorties
Le sorties permettent d'afficher tous les paramètres var1, var2,. . . , varn spécifiés dans l’instruction d’écriture .
Il peut s’agir d’un résultat ( valeur fixe, contenu d’une variable ou une valeur calculée à travers une expression) ou bien un message (chaîne de caractères).
➢Les Sorties (Ecriture)
Syntaxe
Ecrire (<id_var1> )
Ecrire (<id_var1> , <id_var2> )
Ecrire(<id_var1>,<id_var2>…<id_varn>)
Write (<id_var1> );
Write (<id_var1> , <id_var2> );
Write (<id_var1>,<id_var2>…<id_varn>);
Writeln (<id_var1>,<id_var2>…<id_varn>);
Pascal Algorithme
Traduction
Types d'instructions
Les Entrées / Sorties
➢Les Sorties (Ecriture) Remarques:
➢Write (v1, v2, v3, ..., vn); <=> write(v1); write(v2);... write(vn)
➢Writeln (v1, v2, v3, ..., vn); permet d’écrire les valeurs en paramètre, et de passer ensuite à la ligne suivante.
➢Writeln peut être employée sans paramètre, dans ce cas, elle permet de faire un retour chariot ( saut la ligne)
Exemples:
1. write (‘Test') { Affiche le message Test }
2. write (y) { Affiche la valeur de la variable y}
3. write (‘y') {Affiche le caractère y)
4. write (10+7) {Affiche le résultat de l’évaluation de l’expression 10+7 donc 17 .}
5. write (x+y) {Affiche le résultat de l’évaluation de l’expression x+y.}
Types d'instructions
Les Affectations
L’affectation consiste à mettre une valeur dans une variable, Cette valeur peut être sous forme directe , sous forme d'une expression ou le contenu d’une variable.
Syntaxe
<id_var> <valeur>|<expr>|<id_var> <id_var> := <valeur>|<expr>|<id_var> ; Pascal
Algorithme
Traduction
Exemples: Var a, b, c : integer; f:boolean;
1. a :=10 ; { Affecte la valeur 10 à la variable a }
2. b :=a+5 ; {Affecte à la variable b la valeur de la variable a à laquelle nous ajoutons 5, on aura 15 }
3. c :=sqr(a+b) ; { Affecte à la variable c, le carré de a+b donc 25² } 4. a:=c; { Affecte la valeur de la variable c à la variable a }
5. f:= a<b { Affecte le résultat d’évaluation de l’expression booléenne
Types d'instructions
Les Affectations
Exercice :
Écrire un programme qui permet de résoudre une équation du premier degré de la forme ax+b = 0 (avec a ≠ 0 ). Les valeurs de a et b seront lues en entrée.
Solution
Types d'instructions
Les Affectations
Exercice :
Écrire un programme qui permet de résoudre une équation du premier degré de la forme ax+b = 0 (avec a ≠ 0 ). Les valeurs de a et b seront lues en entrée.
Solution
Algorithme Resol_Equa_1deg variables a, b, x : real
Début
lire(a, b) x -b/a écrire (x) Fin
Instruction d’entrée
Instruction d’affectation
Instruction de sortie (résultat)
Types d'instructions
Les Affectations
Exercice :
Écrire un programme qui permet de résoudre une équation du premier degré de la forme ax+b = 0 (avec a ≠ 0 ). Les valeurs de a et b seront lues en entrée.
Solution
Instruction de sortie (message)
Instruction d’affectation Instruction de sortie (résultat) Instruction
d’entrée
Types d'instructions
Les Affectations
Remarques :
✓ Après une affectation, l'ancienne valeur de la variable est écrasée par la nouvelle valeur;
✓ Ne pas confondre := avec le = réservé à la comparaison des variables dans un test;
✓ Une affectation ne peut se faire qu'entre une variable et une expression de même type (si A est réel, l’écriture A:='bonjour‘ est incorrecte);
✓ L’écriture B*C:=A est incorrecte;
✓ La partie gauche de (:=) est toujours un nom d'une variable (un identifi-
cateur) qui va recevoir le résultat.
Types d'instructions
Structures de contrôle conditionnelles
Les structures de contrôles conditionnelles sont utilisées pour décider de l'exécution d'un bloc d'instruction ou non en fonction du résultat de l’évaluation d’une expression booléenne posée dans ce test. Ou bien pour choisir entre l'exécution de deux blocs différents, appelées respectivement:
➢Structures de contrôle conditionnelles simple;
➢Structures de contrôle conditionnelles alternatives double.
Types d'instructions
Structures de contrôle conditionnelles
Syntaxe
Si <Condition> Alors
<instruction_1>
<instruction_2>
…
<instruction_n>
Fin si
if <Condition> Then Begin
<instruction_1>;
<instruction_2>;
…
<instruction_n>;
End;
Pascal Algorithme
Traduction
➢ Structures de contrôle conditionnelles simple
Explications
Les instructions 1, 2,3…n Ne seront exécutées que lorsque la condition est vérifiée (vraie)
Types d'instructions
Structures de contrôle conditionnelles
➢ Structures de contrôle conditionnelles simple
Remarques :
✓ Dans cette variante de condition, il existe un seul bloc d’instructions, il est délimité par Begin et End;
✓ Le Begin et le End sont facultatifs lorsque le bloc contient une seule instruction,
✓ Finsi est traduit par:
➢ ; Lorsqu’il s’agit d’une seule instruction
Types d'instructions
Structures de contrôle conditionnelles
➢ Structures de contrôle conditionnelles simple
…
Si Note < 5 Alors
Ecrire (‘l’étudiant possède une note éliminatoire’) Fin si
…
…
if Note < 5 then
Write (‘l’étudiant possède une note éliminatoire’);
…
Exemple :
Types d'instructions
Structures de contrôle conditionnelles
Syntaxe
Si <Condition> Alors
<instruction_1_1>
…
<instruction_1_n>
Sinon
<instruction_2_1>
…
<instruction_2_n>
Fin si
if <Condition> Then Begin
<instruction1_1>;
…
<instruction1_n>;
End else
Begin
<instruction2_1>;
Pascal Algorithme
Traduction
➢ Structures de contrôle conditionnelles alternatives double
Types d'instructions
Structures de contrôle conditionnelles
➢ Structures de contrôle conditionnelles alternatives double
Explications :
La condition est évaluée en premier, ensuite, le premier bloc { instruction_1_1 … instruction_1_n} sera exécuté lorsque la condition est vérifiée (Vrai) et le deuxième bloc
{ instruction_2_1 … instruction_2_n} sera exécuté lorsque la condition est Fausse.
Types d'instructions
Structures de contrôle conditionnelles
➢ Structures de contrôle conditionnelles alternatives double
Remarques :
✓ Dans cette variante de condition, il existe deux blocs d’instructions, ils sont délimités chacun par Begin et End;
✓ Le Begin et le End sont facultatifs lorsque le bloc contient une seule instruction,
✓ Ne jamais mettre un point virgule ";" avant le Else;
✓ Une seule condition ne peut gérer que deux cas, pour traiter plus de cas,
Types d'instructions
Structures de contrôle conditionnelles
➢ Structures de contrôle conditionnelles alternatives double
…
Si Moyenne < 10 Alors
Ecrire (‘Etudiant ajourné’) Sinon
Ecrire (‘Etudiant admis’) Fin si
…
…
if Moyenne < 10 Then
Write (‘Etudiant ajourné’) Else
Ecrire (‘Etudiant admis’);
Exemple :
Types d'instructions
Structures de contrôle conditionnelles
Exercice :
Écrire un algorithme puis un programme qui permet de résoudre une équation du deuxième degré de la forme ax²+bx+c = 0 (avec a ≠ 0 ). Les valeurs de a, b et c seront lues en entrée.
Solution Algorithme resol_equation_2deg Variables
a,b,c,x1,x2,∆: réel;
Début
Lire (a,b,c)
∆←b²- 4ac Si∆ > 0 alors
x1 ← −𝑏 + ∆2𝑎
x2 ← −𝑏 − ∆2𝑎
Ecrire(‘il existe deux solutions’) Ecrire(x1, x2)
Sinon
Si x = 0 alors
x1 ← −𝑏2𝑎
Ecrire(‘il existe une solution double’) Ecrire(x1)
Types d'instructions
Structures de contrôle conditionnelles
Exercice :
Écrire un programme qui permet de résoudre une équation du deuxième degré de la forme ax²+bx+c = 0 (avec a ≠ 0 ). Les valeurs de a, b et c seront lues en entrée.
Solution
Types d'instructions
Structures de contrôle répétitives
Les structures de contrôle répétitives permettent de répéter l’exécution d’une séquence d'instructions un nombre fixe de fois. Ces instructions sont également appelées boucles.
Il existe trois variantes:
➢ Instruction For – Do
➢ Instruction While – Do
➢ Instruction Repeat - Until
Types d'instructions
Structures de contrôle répétitives
La boucle For-Do permet d'incrémenter une variable (compteur ) à partir d'une valeur initiale jusqu'à une valeur finale et d'exécuter une ou plusieurs instructions à chaque itération. Le compteur doit être de type entier.
La boucle sera répétée (vf-vi+1) fois
➢ Instruction For - Do
Syntaxe
Pour <cpt> <vi> à <vf> Faire
<instruction_1>
<instruction_2>
…
<instruction_n>
Fin Pour
For <cpt> := <vi> To<vf> Do Begin
<instruction_1>;
<instruction_2>;
…
<instruction_n>;
End;
Pascal Algorithme
Traduction
Types d'instructions
Structures de contrôle répétitives
➢ Instruction For - Do
Explications :
L’exécution de la boucle For se fait comme suit:
Etape1: Le compteur <cpt> est initialisé à la valeur initiale <vi> ; Etape2: La valeur du compteur est comparée à celle de <vf> ;
Etape2_a: Si la valeur du <cpt> est supérieure à celle de <vf> la boucle est quittée et le programme passe à l’exécution de la prochaine instruction, i.e. celle qui se trouve après la boucle;
Etape2_b: Si la valeur du <cpt> est inférieure ou égale à celle de <vf>; le bloc d’instructions est exécuté;
Etape3: Le compteur <cpt> est incrémenté automatiquement, i.e. <cpt>←<cpt> + 1;
Types d'instructions
Structures de contrôle répétitives
➢ Instruction For - Do
Remarques :
✓ La boucle Pour est généralement utilisée lorsque le nombre de fois que le bloc d’instructions à exécuter est connu;
✓ Le compteur <cpt> est toujours de type entier;
✓ Le compteur <cpt> est incrémenté d'une unité ( le pas est toujours égal à 1) de manière implicite à chaque itération, i.e. l’ajout de l’instruction d’incrémentation
<cpt>←<cpt> + 1 n’est pas nécessaire.
✓ Le Begin et le End sont facultatifs lorsque le bloc contient une seule instruction,
✓ Il est possible de remplacer TO par DOWNTO pour utiliser le compteur d’une manière décroissante, i.e. d’une valeur Supérieure jusqu’à une valeur Inférieure;
✓ Le compteur peut boucler de < vi> jusqu’à <vf > sans exécuter aucune instruction si le ; est placé après le DO. Do;
✓ La boucle POUR est souvent utilisée pour la manipulation des variables indicées ( x
Types d'instructions
Structures de contrôle répétitives
➢ Instruction For - Do
Exemple :
✓ Afficher tous les nombres appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières.
Pouri a à b Faire Ecrire (i)
Fin Pour
For i a To b Do Writeln (i)
;
Algorithme Pascal
Types d'instructions
Structures de contrôle répétitives
➢ Instruction For - Do
Le code complet correspondant est:
Algorithme Afficher_nb;
variables a, b, i : entier;
Début lire(a, b);
Pour i a à b Faire écrire (i)
Fin Pour Fin
Algorithme Pascal
Types d'instructions
Structures de contrôle répétitives
Cette instruction permet de répéter une séquence d'instructions tant que une condition (expression booléenne) est évaluée à vraie (TRUE). À chaque itération, la condition est réévaluée, lorsqu’elle retourne FALSE, l’exécution de la boucle Tant-que est arrêtée.
➢ Instruction While - Do
Syntaxe
Tantque <Condition> Faire
<instruction_1>
<instruction_2>
…
<instruction_n>
While <Condition> Do Begin
<instruction_1>;
<instruction_2>;
…
Pascal Algorithme
Traduction
Types d'instructions
Structures de contrôle répétitives
➢ Instruction While - Do
Explications :
L’exécution de la boucle Tant que se fait comme suit:
Etape1: La condition est évaluée ;
Etape1_a : Si la condition est Fausse (False), la boucle est quittée et le programme passe à l’exécution de la prochaine instruction, i.e. celle qui se trouve après la boucle;
Etape1_b: Si la condition est vraie (True), le bloc d’instructions est exécuté;
Etape3: Les étapes 1 et 2 seront réexécutées. (La condition sera réévaluée …) ;
En d’autres termes, l’exécution des instructions1…n sera répétée tant que la
condition est vraie.
Types d'instructions
Structures de contrôle répétitives
➢ Instruction While - Do
Remarques :
✓ La boucle Tantque peut travailler avec un compteur, i.e. elle peut remplacer la boucle Pour, mais le contraire n’est pas toujours possible.
✓ Avec Tantque, le compteur peut être un réel Et le pas peut être diffèrent de 1 Les instructions suivantes doivent être rajoutées:
<cpt> <vi>
Tantque <cpt> <= <vf> Faire
<instruction_1>
<instruction_2>
…
<cpt> := <vi> ;
While <cpt> <= <vf> Do Begin
<instruction_1>;
<instruction_2>;
Pascal Algorithme L’initialisation du
compteur
La condition d’arrêt (à l’entrée
de la boucle)
Types d'instructions
Structures de contrôle répétitives
➢ Instruction While - Do
Remarques :
✓ La boucle Tantque est utilisée généralement lorsque le nombre de fois que le bloc d’instructions à exécuter est inconnu;
✓ Le choix de la condition de la boucle est très important, cette condition doit devenir fausse après un certain nombre d’itérations pour éviter les boucles infinies.
✓ La boucle While peut boucler à l’infini dans les situations suivantes:
✓ La condition est toujours vraie;
✓ Mettre un (;) après le Do;
✓ Oublier le Begin et le End lorsque le bloc contient plus d’une instruction;
✓ Oublier l’incrémentation du compteur (lorsque la boucle Tantque utilise un
compteur);
Types d'instructions
Structures de contrôle répétitives
➢ Instruction While - Do
Exemple :
✓ Afficher tous les nombres divisibles par x appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières.
Pascal i a
Tantque i <= b Faire
Si (i mod x =0) alors écrire ( i) Finsi
i i+1 Fin Tant-que
i := a;
While i <= b Do Begin
If (i mod x =0) Then writeln ( i ) ; i := i+1;
End;
Pascal Algorithme
Types d'instructions
Structures de contrôle répétitives
➢ Instruction While - Do
Le code complet correspondant est:
Algorithme Afficher_multip;
variables a, b, i , x : entier;
Début lire(a, b);
lire(x);
i a
Tantque i <= b Faire
Si (i mod x =0) alors écrire ( i) finsi
i i+1 Fin Tant-que Fin
Algorithme Pascal
Types d'instructions
Structures de contrôle répétitives
L’instruction Répéter permet de réexécuter un bloc d’instructions lorsque la condition (expression booléenne) est évaluée à Faux (False). À chaque itération, la condition est réévaluée, lorsqu’elle retourne True, la boucle est arrêtée, et le programme continue avec la prochaine instruction.
➢ Instruction Repeat - Until
Syntaxe
Répéter
<instruction_1>
<instruction_2>
Repeat
<instruction_1>;
<instruction_2>;
…
Pascal Algorithme
Traduction
Types d'instructions
Structures de contrôle répétitives
➢ Instruction Repeat - Until
Explications :
L’exécution de la boucle Répéter se fait comme suit:
Etape1: Le bloc d’instructions est exécuté;
Etape2 : Ensuite, La condition est évaluée ;
Etape2_a: Si la condition est vraie (True), la boucle est quittée et le programme
passe à l’exécution de la prochaine instruction, i.e. celle qui se trouve après la boucle;
Etape2_b: Si la condition est Fausse (False), le bloc d’instructions est réexécuté;
Etape3: L’étape 2 sera répétée. (La condition sera réévaluée …) ;
En d’autres termes, l’exécution des instructions1…n sera répétée jusqu’à ce que la
condition devienne vraie; on répète tant qu’elle est fausse!!!
Types d'instructions
Structures de contrôle répétitives
➢ Instruction Repeat - Until
Remarques :
✓ Dans la boucle Repeat, le bloc d’instructions est exécuté au moins une fois, même si la condition est vraie, puisque son évaluation est effectuée à la sortie de la boucle.
✓ Le Begin et le End ne sont pas nécessaire pour délimiter le bloc d’instructions, Repeat et until jouent déjà ce rôle.
✓ Le choix de la condition de la boucle est très important, cette condition doit devenir vraie après un certains nombre d’itération pour éviter les boucles infinies.
✓ De la même manière que While, la boucle repeat peut travailler avec des
compteurs réels, avec un pas qui peut être diffèrent de 1.
Types d'instructions
Structures de contrôle répétitives
➢ Instruction Repeat - Until
<cpt> <vi>
Répéter
<instruction_1>
<instruction_2>
…
<cpt> ← <cpt> + 1 Jusqu’à <cpt> > <vf>
<cpt> := <vi> ; Repeat
<instruction_1>;
<instruction_2>;
…
<cpt>:=<cpt> + 1 ; Until<cpt> > <vf>
Pascal Algorithme
L’initialisation du compteur
La condition d’arrêt (à la sortie de la L’incrémentation
du compteur
Syntaxe : Repeat (avec compteur)
Types d'instructions
Structures de contrôle répétitives
Exemple :
✓ Afficher tous les nombres divisibles par x appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières.
Pascal i a
Repeat
Si (i mod x =0) alors écrire ( i) Finsi
i i+1 Jusqu’à i > b
i := a;
Repeat
If (i mod x =0) Then writeln ( i ) ; i := i+1;
Until i > b ;
Pascal Algorithme
➢ Instruction Repeat - Until
Types d'instructions
Structures de contrôle répétitives
Le code complet correspondant est:
Algorithme Afficher_multip;
variables a, b, i , x : entier;
Début lire(a, b);
lire(x);
i a Repeat
Si (i mod x =0) alors écrire ( i) Finsi
i i+1 Jusqu’à i > b Fin
Algorithme Pascal
➢ Instruction Repeat - Until
Représentation en organigramme
Structure d'un algorithme / programme Notions d’algorithme
Démarche et analyse d'un problème
Les opérations sur les variables/constantes Types d'instructions
1
2 3
6
4 5
Plan de présentation
Représentation en organigramme
Un organigramme est une représentation graphique ( schématisation ) des différentes étapes ou instructions permettant de trouver la solution à un problème. Ces étapes sont symbolisées par des formes géométriques, tel qu’un rectangle, un cercle, un losange, … et le chemin d’exécution est représenté par des flèches.
Dans un algorithme, seule la partie Instruction (Corps ) est concernée par la représentation sous forme d’organigramme.
Représentation en organigramme
Les différents symboles utilisés dans un organigramme sont représentés comme suit :
: Lecture et l’écriture
: Affectation
: Condition (Expression booléenne) : Début et la fin de l’algorithme
: Connecteurs
Représentation en organigramme
Quelques représentions
Lire(x)
x ← <expression>
Fin Ecrire(x)
Début Lecture
Ecriture
Affectation
Début
Fin
Représentation en organigramme
Quelques représentions
Condition simple
Condition double
…
<instructions>
Condition
Oui
Non
…
…
<instructions>
Condition
Non Oui
<instructions>
Représentation en organigramme
Quelques représentions
Boucle Pour
Boucle Tantque …
<instructions>
condition Oui
Non
…
<instructions>
<cpt><=vf Oui Non
…
<cpt>← <cpt>+1
<cpt>← 1
Représentation en organigramme
…
<instructions>
Condition
Oui
Non
…
Quelques représentions
Boucle Répéter
Représentation en organigramme
Quelques représentions
Organigramme correspondant à la résolution de l’équation du 2ème degré
x1 ← −𝑏 + ∆2𝑎
∆ > 0 Oui Non
Lire (a,b,c)
∆ ← b²- 4ac
Ecrire(x1)
Début
Ecrire(‘il existe deux solutions’) x = 0
x2 ← −𝑏 − ∆2𝑎 x1 ← −𝑏2𝑎
Ecrire(‘il existe une solution double’) Ecrire (‘L'équation
de possède pas de solutions réelles'’)
Ecrire(x1,x2) Oui
Non
Représentation en organigramme
Quelques représentions
i <= b Oui Non
Lire (a,b)
i ← a Début
i ← 𝑖 + 1 Ecrire(i)
L’organigramme correspondant à l’affichage de tous les nombres appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières
(Avec la boucle For)
Algorithme Afficher_nb;
variables a, b, i : entier;
Début lire(a, b);
Pour i a à b Faire écrire (i)
Fin Pour Fin
Représentation en organigramme
Quelques représentions
Algorithme Afficher_multip;
variables a, b, i , x : entier;
Début lire(a, b);
lire(x);
i a
Tantque i <= b Faire
Si (i mod x =0) alors écrire ( i ) Finsi
i i+1 Fin Tant-que Fin
i <= b Oui Non
Lire (a,b)
i ← a Début
i ← 𝑖 + 1
Ecrire(i) Lire (x)
i mod x=0
Oui
Non
L’organigramme correspondant à l’affichage de tous les nombres divisibles par x appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières.
(Avec la boucle Tantque)
Représentation en organigramme
Quelques représentions
Non Lire (a,b)
i ← a Début
i ← 𝑖 + 1
Ecrire(i) Lire (x)
i mod x=0
Oui
L’organigramme correspondant à l’affichage de tous les nombres divisibles par x appartenant à l’intervalle [a,b] avec a, b sont des valeurs entières.
(Avec la boucle Répéter)
Algorithme Afficher_multip;
variables a, b, i , x : entier;
Début lire(a, b);
lire(x);
i a Repeat
Si (i mod x =0) alors écrire ( i ) Finsi
i i+1 Jusqu’à i > b Fin