• Aucun résultat trouvé

Chapitre 2: Notions d'algorithme et de programme

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 2: Notions d'algorithme et de programme"

Copied!
90
0
0

Texte intégral

(1)

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

(2)

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

(3)

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]

(4)

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

(5)

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.

(6)

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

(7)

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.

(8)

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

(9)

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 )

(10)

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

(11)

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

(12)

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.

(13)

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

(14)

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.

(15)

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;

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

Structure d'un algorithme / programme

Types des variables

Algorithme PASCAL Exemples

Entier 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

(25)

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

(26)

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.

(27)

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

(28)

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

(29)

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

(30)

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.

(31)

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

(32)

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.

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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)

(39)

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)

(40)

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)

)

(41)

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

(42)

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.

(43)

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)

(44)

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;

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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)

(50)

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

(51)

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.

(52)

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.

(53)

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)

(54)

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

(55)

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 :

(56)

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

(57)

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.

(58)

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,

(59)

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 :

(60)

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)

(61)

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

(62)

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

(63)

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

(64)

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;

(65)

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

(66)

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

(67)

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

(68)

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

(69)

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.

(70)

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)

(71)

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

(72)

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

(73)

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

(74)

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

(75)

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!!!

(76)

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.

(77)

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)

(78)

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

(79)

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

(80)

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

(81)

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.

(82)

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

(83)

Représentation en organigramme

Quelques représentions

Lire(x)

x ← <expression>

Fin Ecrire(x)

Début Lecture

Ecriture

Affectation

Début

Fin

(84)

Représentation en organigramme

Quelques représentions

Condition simple

Condition double

<instructions>

Condition

Oui

Non

<instructions>

Condition

Non Oui

<instructions>

(85)

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

(86)

Représentation en organigramme

<instructions>

Condition

Oui

Non

Quelques représentions

Boucle Répéter

(87)

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

(88)

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

(89)

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)

(90)

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

Références

Documents relatifs

Un peu d’histoire : Le mot « algorithme » vient du nom d’un mathématicien arabe du VIIIème siècle après J.C., Al-Khwarizmi. Ce mathématicien écrivit en langue arabe le

La présentation du dispositif ressemble un peu aux TPE, 2h par semaines dans l'emploi du temps par exemple, des thèmes imposés : - la nature et le corps humain ;

En tant que Directeur fondateur de cette école privée, professeur de mathématique au collège d’une expérience de 17 ans de classe ayant exploité

Ce scénario décrit les processus qui surviennent lors des interventions de maintenance précédant généralement un avis de panne pour un objet technique (vous avez également

Elle est d’autant plus importante que la masse de la charge est grande et s’oppose à la mise en mouvement. Elle est caractérisée par le moment d’inertie J, qui s’exprime en

Si l'on en croit Jesse Fox, auteur principal d'une étude et professeur assistante en communication à l'Université de l'Ohio, les hommes qui publient beaucoup de selfies sur

La mission a été chargée d’actualiser le cadre de gestion environnementale et sociale (CGES) de l’EPT par opposition à une évaluation d'impacts

- Syntaxe : ecrire (&#34; message&#34;); (ex: ecrire (&#34;bonjour&#34;);) - Pour afficher la valeur d'une variable avec cette même. fonction, on utilise en fait ‘ecrire’ de la