• Aucun résultat trouvé

Introduction à l’algorithme

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction à l’algorithme"

Copied!
30
0
0

Texte intégral

(1)

Introduction à l’algorithme

Licence 1

ère

année Génie Informatique Dr Daouda Traoré

Université de Ségou

email: [email protected]

(2)

Algorithme : Définition

Algorithme : procédure de calcul bien définie qui prend en entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble de valeurs. Un algorithme est donc une séquence d’étapes de calcul qui transforment l’entrée en sortie.

L’algorithmique est le permis de conduire de l’informatique

(3)

Algorithmique : premier pas

Calcul de la somme de deux entiers

variable a, b : entier variable s : entier Debut

afficher(" Donner le premier entier ") saisir(a)

afficher(" Donner le deuxième entier ") saisir(b)

s<- a+b

afficher(" La somme de a et b est : ") afficher("s")

Fin

(4)

Algorithmique : les étapes

Initialisation des variables

 Permet de donner des valeurs initiales aux variables qui seront utilisées dans la résolution du problème posé

Traitement

 Résolution du problème étape par étape.

Affichage du résultat ou retour du résultat

 Affichage du résultat du problème à l’écran, dans un fichier, ou sauvegarde du résultat du programme dans une variable

(5)

Algorithmique : pseudo code

Dans ce cours les algorithmes seront exprimés sous la forme de programmes écrits en pseudo-code.

Un pseudo code n’est pas un « vrai code », il permet

d’employer l’écriture qui semble être la plus claire et

la plus concise pour spécifier un algorithme.

(6)

Pseudo code : déclaration de variables

Pour déclarer une variable dans notre pseudo algorithme, il faut d’abord préciser le mot variable, suivi du nom de la variable, suivi de deux points et le type de la variable.

La syntaxe d’une déclaration de variable est la suivante : variable Nom_variable : type

Exemple : variable nom : chaine de caractère

L’opérateur d’affectation d’une variable :

Exemple : a 5

Il est possible de déclarer plusieurs variables sur une même ligne

La syntaxe d’une déclaration de variable est la suivante : variable variable1, variable2, …: type

Déclaration d’une constante

constante Nom_constante: type

(7)

Pseudo code : les entrées-sorties

La fonction afficher(<liste des noms de variables, de

constantes ou d’expression>) permet d’afficher à l’écran les informations fournies à son entrée.

La fonction saisir(<liste des noms de variables>) permet de stocker dans les variables en entrées les informations fournies par l’utilisateur.

(8)

Pseudo code : exemple

Calcul de la surface d’un cercle

variable r : réel variable S : réel Debut

constante PI : réel PI 3.14

afficher(" Donner le rayon du cercle") saisir(r)

S r*r*PI

afficher(" La surface est :") afficher(r)

Fin

(9)

Pseudo-code : Traitement conditionnel

Un traitement conditionnel permet d’effectuer des choix (alternative) ou de faire un choix parmi plusieurs.

Instruction : « si-alors-sinon »

si (expression conditionnelle égale à vraie) alors faire séquence1 d’ instructions sinon séquence2 d’ instructions finsi

Suite du programme Sequence1

d’instructions

Sequence2 d’instructions

vraie fausse

Expression conditionnelle

(10)

Pseudo code : maximum de deux entieres

Calcul du maximum de deux entiers

Entrée : deux entiers a et b Sortie : un entier max

Debut

afficher(" Donner deux entiers") saisir(a)

saisir(b) si a > b

alors max a sinon max b finsi

Fin

(11)

Les différentes formes du si

si avec sinon si E

alors A1

sinon B1

finsi

si sans sinon si E

alors A1

E

A1, B1,

si

E

A1

si

vrai faux

faux vrai

(12)

Les différentes formes du si

si emboités si E1

alors si E2

alors A1; A2, ...; An;

sinon B1; B2, ...; Bn;

finsi

sinon C1; C2, ...; Cn;

finsi

E1

E2

A1,A2;..An; B1,B2;..Bn; C1,C2;..Cn;

si

faux vrai

vrai

faux

(13)

Exemple de si emboité

si emboités

si moyenne >=12

alors afficher("admis") sinon si moyenne >=10

alors afficher(" admis avec crédits ") sinon afficher(" ajourné ")

finsi finsi

(14)

Pseudo-code : Traitement conditionnel

Un traitement conditionnel permet d’effectuer des choix (alternative) ou de faire un choix parmi plusieurs.

Instruction : « selon »

selon <identificateur>

(liste de ) valeur (s) : séquence1 d’instructions (liste de ) valeur (s) : séquence1 d’instructions

[autres : instructions par défaut]

(15)

Exemple de selon

selon

selon codeCouleur

"0" : afficher("vert") "1" : afficher("jaune") "2" : afficher("rouge") autres : afficher("noir")

(16)

Les boucles permettant d’exécuter plusieurs fois la même série d’instructions jusqu’à ce qu’une condition ne soit plus réalisée.

Les variantes se différencient par la manière de caractériser le nombre de boucles effectivement réalisées.

pour : on exprime le décompte exact de boucles

Tant que : on exprime la condition de continuation

Répéter … Tant que : on exprime la condition d’arrêt

Traitement répétitif (boucle)

(17)

La boucle pour permet d’exécuter plusieurs fois la même série d’instructions. Dans sa syntaxe, il suffit de préciser :

Le nom de la variable qui sert de compteur (et éventuellement sa valeur de départ),

La condition sur la variable pour laquelle la boucle s’arrête (basiquement une condition qui teste si la valeur dépasse une limite)

Une instruction qui incrémente (ou décrémente) le compteur.

Elle se présente sous la forme suivante :

pour <Cpt> CptInit à CptFin [par <pas>] faire séquence d’ instructions;

finpour

La boucle pour

(18)

Exemple : exécuter l’instruction A, puis exécuter N fois l’instruction B; puis après l’instruction C

La boucle pour

B

C variable i : entier; A

A;pour i=1 à N faire B;

finpour C;

Répéter N fois

(19)

La boucle pour : schéma détaillé de l’exemple

B

C A variable i : entier

A;pour i=1 à 10 par 1 faire B;

finpour C;

Répéter 10 fois

i=1

i!=10

i=i+1

(20)

La boucle pour : exemple

{Saisie de n nombres et calcul de la moyenne }

variable n : entier variable i : entier

variable noteCourant, somme : réel Début

somme 0 {initialisation du calcul} -> commentaire

afficher("Donnez le nombre de notes que vous voulez saisir:");

saisir(n);

pour i 1 à n faire afficher("Note",i ) afficher(" : ")

saisir(noteCourant)

somme somme+noteCourant;

finpour

afficher("Moyenne : ",(somme)/n);

Fin

(21)

La boucle tant que permet d’exécuter plusieurs fois la même série d’instructions. Elle se présente sous la forme suivante :

tant que (expression est vraie ) faire séquence d’ instructions;

fintanque

Exemple : exécuter l’instruction A, puis tant que E est vraie faire B et si E est fausse faire C;

La boucle tant que

E B

C A vrai

faux A;

Tant que E faire B;

fintanque C;

(22)

Expression constitue la condition de poursuite de la boucle. La présence des parenthèses permet de délimiter cette condition.

Expression est évaluée avant le premier tour de boucle. Il est donc nécessaire que sa valeur soit définie à ce moment.

On doit assurer la convergence (arrêt de la boucle) : la condition doit à un moment donné s’évaluer à faux.

Condition nécessaire : la condition doit faire intervenir une variable qui sera modifiée dans le corps de boucle

Dans le cas d’une conjonction de conditions (tant que ( E1 Et E2)…)

L’arrêt est provoquée quand l’une des deux conditions s’évalue à faux

La condition d’arrêt est alors : !E1 Ou !E2

La boucle tant que

Tant que (Expression) faire sequence d’instructions;

fintanque

(23)

{ Moyenne d’une série de notes saisies au clavier } -> commentaire

variable note, somme : réel somme 0;

variable nbNote : entier Debut

nbNote <- 0;

afficher(" Donnez une note >=0 ou -1 pour terminer : ");

saisir(note);

tant que note ≠-1) faire somme somme + note;

nbNote nbNote+1;

afficher (" Donnez une note >=0 ou -1 pour terminer : ");

saisir(note) fintanque

afficher(" Le nombre de notes saisies est :", nbNote);

afficher(" La moyenne est des notes saisies est : ", (somme)/nbNote));

Fin

La boucle pour : exemple

(24)

Le pour est un cas particulier du tant que

pour i=binf à bsup faire P i binf

finpour tant que(i <= bsup) faire P

i i+1 fintanque

Plus généralement :

pour Cpt<-CptInit à CptMax par k faire P Cpt CptInit;

finpour tant que Cpt <= CptMaxfaire faire P

Cpt Cpt+k fintanque

Equivalence d’un tant que et d’un pour

(25)

 L’a boucle répéter…tant que est un autre moyen d’exécuter plusieurs fois la même série d’instructions. Elle est toujours parcourue au moins une fois. La condition d’arrêt n’est

examinée qu’à la fin de chaque répétition. Elle se présente sous la forme suivante :

répéter

séquence d’ instructions;

tant que (expression est vraie );

La boucle répéter…tant que

(26)

La boucle répéter…tant que : exemple

variable n : entier Début

répéter

afficher("Donnez un entier strictement supérieur a zéro :") saisir(n)

afficher("Vous avez fourni :" ,n) tant que (n <=0) ;

afficher("La valeur positive strictement supérieure à zéro est :");

afficher(n);

Fin

(27)

{Saisie avec filtre : saisie d’une note entre 0 et 20}

variable note : réel Début

afficher(" Donnez une note : ") saisir(note)

tant note < 0 ou note > 20 faire

afficher("la note saisie est incorrecte, veuillez ressaisir : ") saisir("note)

fintanque Fin

La boucle tant que : exemple

(28)

{PGCD (plus grand commun diviseur)}

Algorithme PGCD

Entrée : deux entiers a et b variable x, y : entier

Début

x<-a, y<-b;

si (a < 0) alors x=-a;

si (b < 0) alors y=-b;

tant que (x≠y) faire si(x < y)

alors y y-x;

sinon x x-y;

finsi fintanque

afficher("Le pgcd de ", a, b);

afficher("est :", x)

Fin

Algorithme du plus grand commun diviseur

(29)

La boucle pour : exemple

{ Incrément de n en n : affichage des multiples de n inférieurs à 100 }

variable n : entier variable i : entier variable max : entier max 99

afficher("Donnez un nombre inferieur à 100 :") saisir(n);

pour i n à max par n faire afficher( i);

afficher( " ");

finpour

(30)

Algorithme du calcul de puissance

{ calcul de x a la puissance n } variable x , n, p, resultat : entier resultat 1

afficher("Donnez la valeur de x :");

saisir(x);

afficher("Donnez la valeur de n :");

saisir(n);

pour p=1 à n faire

resultat resultat*x;

finpour

afficher("Resultat : ",resultat);

Références

Documents relatifs

Pour justifier le résultat d’une opération dans une boucle, on doit exhiber un invariant de boucle : c’est une propriété portant sur les variables intervenant dans la boucle et

 Les boucles sont des structures permettant d’exécuter plusieurs fois la même série d’instructions jusqu’à ce qu’une condition ne soit plus réalisée..  Les variantes

Rédiger un programme permettant de savoir si un nombre entier naturel est divisible par 7 et afficher le

Problématique : Donner plusieurs fois le même ordre au robot Les langages pour penser et communiquer.. Problématique : Donner plusieurs fois le même ordre

Problématique : Donner plusieurs fois la même séquence d'ordres au robot.. Les langages pour penser

exécuter des instructions si la condition est vraie, ce qui s´écrit en pseudo code:.

Cette surface est du huitième degré (et par conséquent du qua- trième degré conforme); elle est doublement cerclée, et tous ses cercles sont tangents à quatre

Il vient dans la structure où vous faite une formation en infographie et votre formateur souhaite réaliser ce projet avec vous, il vous appelle donc et vous pose les