Cour Algorithme [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

I. Introduction à la programmation 1. Qu’est-ce que l’algorithmique ? a) Algorithmique et pseudo-code Définition : Un algorithme est une suite finie d'instructions à appliquer dans un ordre bien déterminé dans le but de résoudre un problème donné. Remarque : Un algorithme est indépendant du langage de programmation dans lequel on va l’exprimer et de l’ordinateur utilisé pour le faire tourner. En programmation, le pseudo-code est une façon de décrire un algorithme sans référence à un langage de programmation. Aucun compilateur ne peut transformer ce pseudo-code en programme exécutable. L'écriture en pseudo-code permet souvent de bien prendre en compte la difficulté de la mise en œuvre de l'algorithme, et de développer une démarche structurée dans la construction de celui-ci. Ce pseudo-code sera ensuite traduit et codé dans le langage de programmation désiré. b) Langage de programmation Définition: On appelle langage de programmation, un ensemble fini de mots (syntaxes) qui permettent de traduire les instructions de l’algorithme afin de l’exécuter par l’ordinateur. Exemple: Turbo Pascal, Cobol, Fortran, C, Visual Basic (VB), C++, Java etc... 1

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

2. Les étapes de résolution d’un problème Pour résoudre un problème donné on doit suivre les étapes suivantes : ➢ Etape-1 : comprendre la nature du problème à résoudre (lire et comprendre bien l’énoncé du problème à résoudre : analyse du problème). ➢ Etape-2 : 1. Définir les résultats du problème (préciser les donnes de sortie (output)) ; 2. Définir les données du problème (préciser les donnes de sortie (input)). 3. Définir le traitement (les relations permettant d’obtenir les résultats à partir des données (les actions). ➢ Etape-3 : écrire l’algorithme en respectant la structure pseudo-code. Problème

Analyse

Algorithme Sur papier

Programme Sur machine

Résultats

Figure : Processus de programmation. 3. Les éléments de base d’un algorithme On peut considérer un algorithme comme une machine fonctionnant en trois étapes : 1. Les éléments dont on part : les entrées. 2. Les instructions (actions) à effectuer sur ces éléments : le traitement 3. Les résultats obtenus : les sorties.a. Les entrées Dans cette partie figure ce qu’on appelle l’entrée des données, qui peut se manifester par la saisie de caractères ou de nombres sur le clavier, ou encore par la lecture d’un fichier contenant ces nombres ou ces caractères.

2

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

Remarque : Il est parfois utile d’utiliser des variables auxiliaires pour ne pas perturber les données initiales. b. Le traitement Il s’agit de déterminer toutes les étapes des traitements à faire et donc des ≪instructions ≫à donner. Si ces instructions s’exécutent en séquence, on parle d’algorithme séquentiel. c. Les sorties Les résultats obtenus peuvent être affichés sur l’écran, ou imprimés sur papier, ou bien conservés dans un fichier.

Exemple: On veut écrire l’algorithme qui permet de calculer la surface d’un disque. Quelles sont les données d’entrée nécessaires à ce calcul ? La variable R qui contiendra le rayon du disque. Quels sont les traitements à effectuer sur les données d’entrée ? Pour calculer la surface d’un disque, on utilise la formule mathématique : S = PIxR2 ou encore S = PI x R x R. PI est une constante valant environ 3.14159. Quelles seront les données de sortie ? La valeur de la variable S sera la surface du disque. Le Rayon: R

3

S=Pi*R*R

La Surface: S

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

4. Structure d’un algorithme On peut présenter un algorithme à l’aide d’un pseudo-code ou d’un organigramme. Un algorithme écrit en pseudo code est composé de trois parties : 1) L’en-tête : nom de l’algorithme. 2) La partie déclarative : déclaration des variables et des constantes (noms et types) que l’on va utiliser. 3) Le corps: opérations sur les données (algorithme proprement dit), délimité par les mots début et fin. Les opérations sur les données utilisent des « instructions » : affectations, opérateurs arithmétiques ou de comparaison, structures (alternatives, répétitives). L’ensemble des instructions constituent ce qu’on appelle le « corps de l’algorithme » Un algorithme a la structure suivante : (En-tête)

Algorithme NOM_ALGORITHME ;

Constants :

(Déclaration)

NOM_CONST = Valeur_de_const; Variables : NOM_VAR : Nom_type_var;

(Corps de L’algorithme)

Début (Actions) … Fin

4

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

A) L’en-tête d’un algorithme L’en-tête est constitué du mot Algorithme, suivi d’un nom identifiant l’algorithme. Exemple : -Algorithme Factorielle -Algorithme Moyenne_Notes B) La partie déclarative d’un algorithme La partie déclarative comprend une liste des variables et des constantes utilisées et manipulées dans le corps de l’algorithme. Ce sont les données d’un Algorithme. C) Le corps d’un algorithme et notion de bloc Le corps d’un d’algorithme est une suite d’instructions ou des tâches à exécuter. On dit que des actions s'enchaînent séquentiellement, quand la fin d'une action déclenche l'exécution de l'action suivante. On appelle bloc d'actions, un ensemble d'actions enchaînées séquentiellement. L'exécution de ce bloc ne peut commencer que par la première action et ne peut se terminer que parla dernière. Notation: Début Instruction 1 Instruction 2

Bloc d'actions (ou d’instructions)

…… Instruction n Fin Remarque: Le plus important pour un algorithme sont les déclarations ainsi que les instructions qui constituent le corps de l’algorithme. Il existe des instructions qui ne servent qu’à la clarté de l’algorithme (l’ordinateur les ignore complètement), ce sont les commentaires. Un commentaire a la syntaxe suivante : /* ceci est un commentaire */ ou bien on peut utiliser, // Ceci est un commentaire 5

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

II. Les données d’un algorithme Les données sont des informations nécessaires au bon déroulement d’un algorithme. Pour chaque algorithme, on distingue : • Les données d’entrée : ce sont les données fournies à l’algorithme. • Les données de sortie : ce sont les résultats produits par

l’algorithme. • Les données intermédiaires : (compteurs, données de stockage

des résultats intermédiaires, etc.). On distingue deux catégories : les constantes et les variables. 1. Les Variables Elles sont caractérisées par un identificateur, une valeur et un type. 1.1. Les variables Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par l’utilisateur (saisies au clavier). Ces données peuvent être de plusieurs types : elles peuvent être des nombres, du texte, etc. Dès que l’on a besoin de stocker une information au cours d’un programme, on utilise une variable. c/c Une variable est quelque chose qui varie (la valeur peut être modifiée durant l'exécution du programme). Elle peut être considérée comme une boite dans laquelle on met des données que l’on peut lire ou écrire. 1.2. Déclaration des variables La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui coller une étiquette. Ceci se fait tout au début de l’algorithme, avant même les instructions proprement dites. 6

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

C’est ce qu’on appelle la déclaration des variables. Une variable ne peut être utilisée que si elle est déclarée. Remarque: Lorsqu’on déclare une variable, on lui attribue un nom (identificateur) et on lui réserve un emplacement mémoire. La taille de cet emplacement mémoire dépend du type de la variable. C’est pour cette raison qu’on doit préciser lors de la déclaration le type de la variable. En pratique, il n’y a ni boite ni étiquette dans l’ordinateur, mais une adresse de la variable (par ex : 10010111). La déclaration se fait par la donnée du nom de la variable et du type de la variable. La syntaxe est : Variable Nom_Variable : Type ou Variables Nom_Variable1, Nom_Variable2,… : Type Remarques Chaque variable manipulée dans le corps du programme doit être déclarée. Les variables du même type peuvent être déclarées dans une même ligne et séparées par des virgules. Chaque ligne du corps du programme doit contenir une seule instruction. Exemple : Variable Age : entier Variables A, B, C : réel 1.3. Les différents types de variables Lorsqu’on déclare une variable, il ne suffit pas de créer une boîte (réserver un emplacement mémoire); il faut préciser ce que l’on voudra mettre dedans, car cela dépend de la taille de la boîte (l’emplacement mémoire) et le type de codage utilisé. Nous pouvons classer les données en trois grandes classes en fonction de la naturedes valeurs qu'elles peuvent prendre :

7

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

- Les données numériques - Les données alphanumériques - Les données logiques (ou booléennes) Les principaux types utilisés en algorithmique sont : ➢ Le type entier, exemple : âge, numéro d’inscription…. ➢ Le type réel, exemple : poids, taille, masse…. ➢ Le type caractère : lettres+ chiffres+ caractères spéciaux, exemple : section d’études ➢ Le type chaîne de caractères, exemple : nom, prénom…. ➢ Le type booléen (ou logique): peut prendre deux valeurs Vrai ou Faux, exemple : pile ou face. 1.3.1. Type numérique Commençons par le cas très fréquent, celui d’une variable destinée à recevoir des nombres. Généralement, les langages de programmation offrent les types suivants : a) Le type entier Une variable est dite entière si elle prend ses valeurs dans Z (ensemble des entiers relatifs). La syntaxe d’une déclaration est: Variable nb_etudiant: entier Variables i, j, k : entier b) Le type réel Le type réel comprend les variables numériques qui ont des valeurs réelles.  Exemple :

Variable note : réel

Variables x, y : réel Remarque: Le type de variable choisi pour un nombre va déterminer les valeurs maximales et minimales des nombres pouvant être stockés dans la variable. Par exemple, si on réserve un octet pour coder un nombre (entier positif), on ne pourra coder que 28 = 256 valeurs différentes. Si on réserve deux octets, on a droit à 216 =65 536 valeurs, etc. 8

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

1.3.2. Type alphanumérique On dispose donc également du type alphanumérique, également appelé type caractère et type chaîne (en anglais, le type string). Dans une variable de ce type, on stocke des caractères : lettres, de signes de ponctuation, d’espaces, ou même de chiffres. Un groupe de caractères est appelé chaîne de caractères. Exemple :

Variable Opérateur : caractère Variables nom, prénom : chaîne de caractères En pseudo-code, une chaîne de caractères (ou texte) est écrite entre

guillemets (" ") (ex : "Bonjour !"). 1.3.3. Type booléen Le dernier type de variables est le type booléen: on y stocke uniquement les valeurs logiques Vrai ou Faux (en anglais (True ou False).  Exemple: Variable etat : booléen Le tableau suivant regroupe des exemples des différents types de données. Numérique

Type de données

Entier

Réel

Alphanumérique Caractère

Booléen

Chaîne de caractères

-121

-3

'A'

''Bonjour''

Vrai

17

-12.36

'@'

''Mohamed''

Faux

2015

589. 3

'+'

Exemples

'? '

Remarques : - L'identificateur (nom de la variable), peut être composé de n'importe quelle combinaison de lettres et de chiffres mais doit nécessairement commencer par une lettre. -Ne pas utiliser les mots clés du langage de programmation. -Le nombre maximal de caractères qui composent le nom d’une variable dépend du langage utilisé. 9

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

-Les lettres minuscules sont différenciées des majuscules ainsi somme et SOMME sont deux identificateurs différents et peuvent être utilisés dans le même programme.

2. Les constantes Une constante est une donnée fixe qui ne varie pas durant l’exécution d’un algorithme. Une constante est caractérisée par son nom et sa valeur (fixe). Les constantes sont déclarées comme suit : Constante Nom _Constante  valeur : type  Exemple : Constante Pi  3.14 :

Remarque: • Parfois le type, des constantes, n’est pas forcément préciséparce que la valeur qu’elles contiennent permet de savoir de quel type elles sont. • Toutes les variables et les constantes doivent être déclarées au début de l’algorithme dans la section déclaration. Habituellement, on sépare les constantes des variables en 2 sous-sections.  Exemple : Algorithme exemple // Déclaration Constantes PI  3.14 TVA  0.17 Variables R : réel i,j, k : entier Nom, Prénom: chaînes de caractères Début ….Instructions… Fin

III. Expressions et opérateurs 1. Expressions Une expression est un ensemble de variables (ou valeurs) reliées 10

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

par des opérateurs et dont la valeur du résultat de cette combinaison est unique. Les expressions peuvent être constituées de variables, constantes, éléments de tableaux et références à des fonctions combinés entre eux à l’aide d’opérateurs.  Exemple : 5+4*x + 15 – y/2. où x et y sont des variables numériques (réels ou entiers) . 2. Les opérateurs Un opérateur est un signe qui relie deux variables pour produire un résultat. On distingue différentes catégories d’opérateurs : • Les opérateurs arithmétiques • Les opérateurs relationnels • Les opérateurs logiques a) Opérateurs arithmétiques Ils permettent d'écrire des expressions mathématiques mettant en jeu des opérandes numériques. Exemple dans x+ y : x est l’opérande gauche, + est l’opérateur ; y est l’opérande droite ; x + y est appelé une expression. Si par exemple x vaut 2 et y vaut 3, l’expression x + y vaut 5.

11

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

N.B : Les opérateurs mod et div s’appliquent sur des données de type entier. Exemple : 11 div 2 vaut 5 11 mod 2 vaut 1 11 / 2 vaut 5.5 11^2 vaut 121 b) Opérateurs relationnels ( ou de comparaison) infériorité stricte


=

égalité inégalité

12

= < >

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

c) Opérateurs logiques On distingue trois opérateurs logiques: o le ET logique o le OU logique o le NON Table de vérité : A et B sont deux variables booléennes.

Remarque: - La valeur nulle ( 0 ) correspond à Faux - Toute valeur non nulle correspond à Vrai. Exemple :

- L’expression : 3 < 2 ET 3.14>2 est fausse - L’expression : 3 >= 2 OU 3.14 < 2 est vraie Lois de De Morgan

Les deux lois usuelles de logique qui sont particulièrement importantes à connaître (voir les structures de contrôle) sont: Non (A ET B) est identique à (Non A) OU (Non B) Non (A OU B) est identique à (Non A) ET (Non B)

IV. Les instructions de base 1. L’affectation L’affectation est une opération qui consiste à attribuer une valeur à une variable ou de changer sa valeur. Elle est représentée par une flèche orientée à gauche. On la notera avec le signe ← . Syntaxe : Variable  Valeur ; Variable  Expression; Variable1  Variable2 ou Variable  constante. A  B se lit « A reçoit B » Exemple :

13

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

Y2 // Y prend la valeur 2 X  2*Y+1 // puis X la valeur 5 (* désigne le produit) X  3*X +2 // puis X prend la valeur 17

Remarque : Le type de la valeur doit être du même type de la variable.  Exemple : A  3 (A de type entier ou réel) B  4*A+4.12 (B de type réel) Lettre  'Z' (Lettre de type caractère)  Exemple : A  3 signifie que le contenu de la variable A est 3, après l'exécution de l'instruction. Question : que se passe-t-il si la variable A contient déjà quelque chose ? Réponse : le contenu de A sera effacé (écrasé, remplacé, perdu).

 Exemple : Algorithme puissance Variable A : entier Début A  12^2 Fin Cet algorithme nous donne le carré de 12 soit 144. Exercice : Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? Algorithme exemple Variables A, B : entier Début A←1 B←A+3 A←3 Fin Réponse : Instruction Valeur des variables après exécution A←1 A=1 B= ? B←A+3 A=1 B= 4 A←3 A=3 B= 4 14

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

2. Instructions de lecture et d’écriture (Entrée/Sorties) Pour bien, fonctionner, un algorithme doit en général acquérir des données (entrées) sur un périphérique (exemple : clavier, disque) et fournir en conséquence des résultats (sorties) sur un autre périphérique (écran, imprimante). Les instructions d’Entrée/Sortie (ou de Lecture/Ecriture) permettent d’introduire des données dans un programme ou d’afficher des résultats à partir de celui-ci. 2.1. L’instruction d'entrée L’instruction d’entrée ou de lecture permet à l’utilisateur desaisir des données au clavier pour qu’elles soient utilisées par l’algorithme. Syntaxe : Lire (nom de la variable) ou Lire (identificateur)  Exemple :

Lire (A)

Cette instruction permet à l’utilisateur de saisir une valeur au clavier qui sera affectée à la variable A. Lors d’une lecture, l’algorithme attend que l’utilisateur fournisse, à partir du clavier, les valeurs à affecter respectivement aux variables dont les noms sont dans la liste de l’instruction Lire.

2.2. L’instruction de sortie Instruction de sortie (d’écriture) permet d'afficher des informations à l’utilisateur à travers l’écran. Syntaxe : Ecrire (expression) Expression peut être une valeur, un résultat, un message, le contenu d’une variable… Ecrire (variable) Ecrire (''message'') Ecrire (''message : '', variable)  Exemple : Soit A est une variable. Ecrire (A) : signifie afficher sur l’écran le contenu de la variable A. Ecrire (''donnez votre nom : '') : signifie afficher sur l’écran le message donnez votre nom : 15

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

Remarque : On peut aussi afficher plusieurs messages et les contenus des variables sur la même ligne : Ecrire (''message1 :'', variable1, ''message2: '', variable2, …,''messagen: '', variablen)

 Exemple : Ecrire un programme qui demande un nombre entier à l’utilisateur, puis calcule et affiche le double de ce nombre.

Figure : Instructions de lecture et d’écriture (Entrée/Sorties) permettant le dialogue avec l'utilisateur.  Exemple : Ecrire ('' Entrez trois valeurs : '') Lire (A, B, C) Somme  A+B+C Ecrire (''La somme vaut : '', Somme) Ainsi, si l’utilisateur fournit les valeurs 12, 3 et 7, l’instruction Ecrire affichera l’écriture suivante : La somme vaut : 22

Conseil: Avant de lire une variable, il est conseillé d’écrire des messages à l’écran, afin de prévenir l’utilisateur de ce qu’il doit saisir. Exercice : Un algorithme qui demande la valeur du rayon pour calculer la surface d’un disque. 16

A.U 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

 Exemple : Algorithme somme Variables A, B, SOMME : entier Début Ecrire (''Entrer le premier nombre : '')Lire (A) Ecrire (''Entrer le deuxième nombre : '')Lire (B) SOMME ← A + B Ecrire (''La somme de ces deux nombres est : '')Ecrire (SOMME) Fin

17

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

Exemple :

Algorithme Somme Variables A, B, S : entier Début Ecrire (''Donner la valeur de A : '') Lire (A) Ecrire (''Donner la valeur de B : '') Lire (B) S←A+B Ecrire ('' La somme est : '' , S) Fin

Début

Ecrire (''Donner la valeur de A: '') Lire (A) Ecrire (''Donner la valeur de B: '') Lire (B) S←A+B

Ecrire (''la somme est: '', S)

Fin

Organigramme Remarque Il existe certains caractères spéciaux (retour à la ligne, tabulation etc..). Par exemple: \n est un caractère spécial qui représente un retour à la ligne, cela est plus commode pour l’affichage. \t est un caractère spécial qui représente une tabulation horizontale.  Exemple : Ecrire ('' Entrez trois valeurs : '') Lire (A, B, C) Somme  A+B+C Ecrire (''La somme vaut : \n'', Somme) Ainsi, si l’utilisateur fournit les valeurs 12, 3 et 7, l’instruction Ecrire affichera le message suivant : La somme vaut : 22

18

A.U 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

V.

Les structures de contrôle

Les instructions de contrôle servent à contrôler le déroulement de l’enchaînement des instructions à l’intérieur d’un programme. Ces instructions peuvent être des instructions conditionnelles ou itératives (boucles).

1. Les structures alternatives (ou conditionnelles)  Exemple : Algorithme Inverse Variables X, Y : réel Début Ecrire ("Saisir une valeur :") Lire (X) Y 1/X Ecrire ("L’inverse est:", Y) Fin L’algorithme ci-dessus calcule l’inverse d’un nombre réel. Si l’utilisateur tape la valeur 0 il y aura une erreur d’exécution (division par 0). Ce problème ne peut pas être résolu que par l’utilisation des structures de contrôle. Définition :

Une instruction conditionnelle permet à un programme de modifier son traitement en fonction d’une condition. a) Les conditions simples Syntaxe : Si condition Alors Instruction (ou suite d'instructions) Fin Si  Exemple : Si x < 0 Alors Ecrire (" Valeur négative ") Fin Si

1

A.u 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

b) L'instruction Si … Alors … Sinon … Fin Si : Syntaxe :

Si condition Alors bloc1 d’instructions Sinon bloc2 d’instructions Fin Si

Organigramme :

Remarque : La valeur de l'expression conditionnelle est évaluée. Si condition est vraie (non nulle), alors toutes les instructions du bloc1 seront exécutées. Si elle est fausse (nulle), toutes les instructions du bloc2 seront exécutées.  Exemple :

Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre est positif ou négatif (on laisse de côtéle cas où le nombre vaut zéro). Solution

Algorithme test Variable n : entier Début Ecrire ("Entrez un nombre : ") Lire (n) Si n > 0 Alors Ecrire ("Ce nombre est positif”) Sinon Ecrire ("Ce nombre est négatif") Fin Si Fin 2

A.u 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

Exemple : Algorithme Inverse Variables X, Y : réel Début Ecrire ("Saisir une valeur :") Lire (X) Si X < > 0 Alors Y 1/X Ecrire ("L’inverse est:", Y) Sinon Ecrire (" Erreur division par 0") Fin Si Fin c) Structures alternatives imbriquées ( Si … Alors … Sinon Si… Sinon … Fin Si) Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre est positif ou négatif (on inclut cette fois le traitement du cas où le nombre vaut zéro). /* Exemple signe (version 1): Les conditions simples */ Algorithme signe-entier Variable n : entier Début Ecrire ("Entrez un nombre : ") Lire (n) Si (n < 0) Alors Ecrire ("Ce nombre est négatif") Fin Si Si (n = 0) Alors Ecrire ("Ce nombre est nul") Fin Si Si (n > 0) Alors Ecrire ("Ce nombre est positif") Fin Si Fin Il peut arriver que l’une des parties d’une structure alternative contienne à son tour une structure alternative. Dans ce cas, on dit qu’on a des structures alternatives imbriquées les unes dans les autres. 3

A.u 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

/* Exemple signe (version2) : Si … Alors .. Sinon Si… Sinon … Fin Si) */ Algorithme signe-entier Variable n : entier Début Ecrire ("Entrez un nombre : ") Lire (n) Si (n < 0) Alors Ecrire ("Ce nombre est négatif") Sinon //(ça veut dire que n >= 0) Si n = 0 Alors Ecrire("Ce nombre est nul") Sinon //(ça veut dire que n>0) Ecrire("Ce nombre est positif") Fin Si FinSi Fin Remarque:

-Dans la version 1, on fait trois tests alors que dans la version 2, si le nombre est négatif on ne fait qu'un seul test. -Dans le cas de tests imbriqués, le Sinon et le Si peuvent être fusionnés en un SinonSi. On considère alors qu’il s’agit d’un seul bloc de test, conclu par un seul FinSi

4

A.u 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

Syntaxe : Si ( ) Alors

SinonSi () Alors

….. SinonSi () Alors

Sinon

Fin Si Les expressions < expression 1> ... < expression N> sont évaluées du haut vers le bas jusqu'à ce que l'une d'elles soit différente de zéro. Le bloc d'instructions qui lui est lié est alors exécuté et le traitement de la commande est terminé.  Exemple :

/* Exemple signe d’un entier (version 3) */ Algorithme signe-entier Variable n : entier Début Ecrire ("Entrez un nombre : ") Lire (n) Si (n < 0) Alors Ecrire ("Ce nombre est négatif") SinonSi (n = 0) Alors Ecrire ("Ce nombre est nul") Sinon Ecrire ("Ce nombre est positif") Fin Si Fin Remarque :

Pour des raisons de compréhension et de lisibilité, il est préférable de se limiter à deux niveaux maximums : au-delà, il devient plus difficile d’analyser le code. 5

A.u 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

d) Instruction Selon – cas (switch-case) Pour éviter les imbrications d’instructions Si, on utilise l'instruction Selon qui permet des choix multiples uniquement sur des entiers ou des caractères. Syntaxe:

 Exemple :

Algorithme mois Variable n : entier Début Ecrire("Entrer le numéro du mois : ") Lire(n) Selon n Faire cas 1 : Ecrire("janvier") cas 2 : Ecrire("février") … Cas 12 : Ecrire("décembre") SiNon : Ecrire("numéro de mois erroné") Fin Selon Fin Remarque :

Le bloc " SiNon " n'est pas obligatoire.

6

A.u 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE

2. Structures répétitives (ou boucles) Problème Écrire un algorithme permettant d’afficher 100 fois le message : Bonjour tout le monde. Cas classique /* Afficher Bonjour version-1*/ Algorithme Bonjour Début Ecrire (''Bonjour tout le monde \n '') 1 Ecrire ('' Bonjour tout le monde \n'') 2 . . Ecrire (''Bonjour tout le monde \n '') 100 Fin Une structure répétitive sert à répéter un ensemble d’instructions. Il existe trois formes de structures répétitives : Pour, Tant Que , Répéter.

a) Structure (Boucle) Pour Cette structure permet de répéter des instructions un nombre de fois. Elle est utile quand on connaît à l’avance le nombre d’itérations à effectuer. Sa syntaxe est :

Pour cpt← val_Ini à val_Fin pas de Faire Instruction(s) à répéter Fin Pour La variable cpt (compteur) est une variable de type entier. val_Ini et val_Fin sont respectivement la valeur initiale et la valeur finale prise par le compteur. Ce sont des valeurs entières. Incrément est la valeur d’augmentation progressive du compteur (i.e. le compteur augmente de l'incrément (i.e. le pas) à chaque répétition du traitement). La valeur par défaut du pas est de 1.

7

A.u 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

Remarque : Pour un pas positif, la valeur initiale doit être inférieure à la valeur finale. Pour un pas négatif, la valeur initiale doit être supérieure à la valeur finale. Si la valeur initiale est égale à la valeur finale, la boucle sera exécutée une seule fois.  Exemple : Ecrire un algorithme qui permet d'afficher tous les nombres pairs qui existent entre 1 et 10. 1ère solution Pour i←2 à 10 pas 2 Faire Ecrire (i) Fin Pour 2ème solution Pour i←2 à 10 Faire Si (i mod 2)=0 Alors Ecrire (i) Fin Si Fin Pour 3ème solution Pour i←1 à 5 Faire Ecrire (2*i) Fin Pour 8

A.u 2022-2023

GEER_1&GECSI_1

Pr. ILYASS ELMYASSE Exemple : /* Afficher Bonjour version-2*/

Algorithme Bonjour Variable i: entier Début Pour i←1 à 100 Faire Ecrire ('' Bonjour tout le monde \n '') Fin Pour Fin

b) La structure Tant Que Cette structure permet de répéter les instructions tant qu’une condition est satisfaite. Sa syntaxe est : Tant Que condition Faire Instruction(s) à répéter Fin Tant Que

Tant que condition est vérifiée (i.e. vraie), instruction (ou bloc d’instructions) est exécutée. Si expression (condition) est nulle au départ, instruction (ou bloc d’instructions) ne sera jamais exécutée. Cette structure diffère de la première (la boucle Pour) par le fait qu’on va répéter des instructions pour un nombre de fois inconnu au préalable.

9

A.u 2022-2023

Pr. ILYASS ELMYASSE

GEER_1&GECSI_1

Exemple :

Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100. Algorithme somme Variables som, i : entier Début i←0 som← 0 Tant Que (som