linformatique
Partie 2 : Comment crire un algorithme ?
Quest-ce quune variable ? Expressions et instructions
Quest-ce quun
algorithme ?
Une recette de cuisine
Protocole exprimental
http://www.limsi.fr/Individu/gendner/analyse_texte/2002/03-ambiguite.html
Les deux bases des
algorithmes
LesUnvariables,
algorithme est donc
dans compos
lesquelles dune suite
on stocke
dinstructions
linformation qui,dcrivent
et qui partant dune description
la manire en
permettant
mmoire dun
daccder problme de
la mmoire nonlordinateur.
rsolu, donnent les
modifications de la mmoire permettant darriver
une description en mmoire du problme rsolu.
Les instructions qui permettent de modifier ltat
de ces variables
Un exemple
Un exemple
k
Ex: calcul de 2
x ,
Le problme est bien dcrit ds quon connat les
valeurs de x et de k (deux variables).
Le problme est rsolu aprs lexcution dune suite
dinstructions du type puissance puissance2
Le rsultat est dcrit par la valeur courante de la
variable puissance.
!
Les interactions avec lutilisateur sont galement
dcrites par lalgorithme grce des instructions
dentre/sortie (ex: entre de x et k par lutilisateur et
sortie de puissance).
Ecrire un algorithme
Algorithme Puissance
// algorithme qui calcule une puissance dun nombre
Variables
x,puissance : rels;
k,i : entier;
Dbut
x Saisie(); // Lutilisateur doit entrer un rel
k Saisie(); // Lutilisateur doit entrer un entier
puissance x; // initialisation de la variable puissance
Pour i allant de 1 k faire // rpter k fois nexiste pas
puissance puissance * puissance;
fin pour
Ecrire(puissance);
Fin
Ecrire un algorithme
Algorithme Puissance
// algorithme qui calcule Entte
une puissance dun nombre
Variables
x,puissance : rels; Dclarations
k,i : entier;
Dbut
x Saisie(); // Lutilisateur doit entrer un rel
k Saisie(); // Lutilisateur doit entrer un entier
puissance x; // initialisation de la variable puissance
Pour i allant de 1 k faire // rpter k fois nexiste pas
puissance puissance * puissance;
fin pour Corps=Description du calcul et des
Ecrire(puissance); interactions
Fin
Ecrire un algorithme
Commentaires
Algorithme Puissance
// algorithme qui calcule une puissance dun nombre
Variables
x,puissance : rels;
k,i : entier;
Dbut
x Saisie(); // Lutilisateur doit entrer un rel
k Saisie(); // Lutilisateur doit entrer un entier
puissance x; // initialisation de la variable puissance
Pour i allant de 1 k faire // rpter k fois nexiste pas
puissance puissance * puissance;
fin pour
Ecrire(puissance);
Fin
Ecrire un
Saisie par lutilisateur
algorithme
Commentaires
Algorithme Puissance
// algorithme qui calcule une puissance dun nombre
Variables
x,puissance : rels;
k,i : entier;
Dbut
x Saisie(); // Lutilisateur doit entrer un rel
k Saisie(); // Lutilisateur doit entrer un entier
puissance x; // initialisation de la variable puissance
Pour i allant de 1 k faire // rpter k fois nexiste pas
puissance puissance * puissance;
fin pour
Ecrire(puissance);
Fin
Ecrire un
Saisie par lutilisateur
algorithme
Commentaires
Algorithme Puissance
// algorithme qui calcule une puissance dun nombre
Variables
x,puissance : rels;
k,i : entier;
Dbut
x Saisie(); // Lutilisateur doit entrer un rel
k Saisie(); // Lutilisateur doit entrer un entier
puissance x; // initialisation de la variable puissance
Pour i allant de 1 k faire // rpter k fois nexiste pas
puissance puissance * puissance;
fin pour
Ecrire(puissance);
Fin
Fin
Ecrire(puissance);
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme
Variables
!
Dbut
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
!
Dbut
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
!
Dbut
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
anne Saisie();
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
anne Saisie();
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
anne Saisie();
age 2020 - anne;
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge
Variables
anne : entier
! age: entier
Dbut
!
anne Saisie();
age 2020 - anne;
!
Ecrire(age);
!
Fin
Un exercice typique ?
Ecrire un algorithme qui demande lutilisateur de saisir une anne de naissance
et calcule lge quaura la personne au 31 dcembre 2020 minuit.
Algorithme Calcule ge !
Variables en Javascript:!
anne : entier !
! age: entier // Algorithme Calcule age
var annee,age;
Dbut !
!
anne Saisie(); annee = Saisie();
age 2020 - anne; age = 2020 - annee;
! Ecrire(age);
Ecrire(age);
!
Fin
Les Variables
Nom, types, etc.
Accder la mmoire de
lordinateur.
Mmoire de l'ordinateur trs grand espace
dcoup en cases.
lordinateur.
des entiers (et mme, uniquement les valeurs 0 et 1)
pour pouvoir tout stocker.
32 18
13
27
31
185
Mmoire de l'ordinateur 3 trs grand espace
12
dcoup en cases.
75 13 2 131
154
27
Chaque case31
porte ainsi un numro (adresse) pour
sy retrouver.
140734539115496
32 18
14
13
07
27
34
53 31
91 185
Mmoire de l'ordinateur 3 trs grand espace
140
15
49
12
2
734
dcoup en cases. 539
75 13 2 131
115
4 88
14073 154
45391
1 5 4 84
27
Chaque case
140734539115
31
porte ainsi
480
un numro (adresse) pour
sy retrouver.
140734539115496
32 18
14
13
07
age 27
34
53 31
x 91 185
Mmoire de l'ordinateur 3 trs grand espace
140
15
49
.. 12
2
734
dcoup en cases. 539
75 13 2 131
115
4 88
14073 154
45391
1 5 4 84
27
Chaque case
140734539115
31
porte ainsi
480
un numro (adresse) pour
sy retrouver.
140734539115496
32 18
14
13
07
age 27
34
53 31
x 91 185
Mmoire de l'ordinateur 3 trs grand espace
140
15
49
.. 12
2
734
dcoup en cases. 539
75 13 2 131
115
4 88
14073 154
45391
1 5 4 84
27
Chaque case
140734539115
variable nom
porte ainsi un numro
31 une (ou un ensemble de) case(s)
480
(adresse) pour
sy retrouver.
pour simplifier laccs la mmoire.
un nom (identifiant)
un type
un nom (identifiant)
NB:
car un jour il faudra
nommer se poser la question de comment
cest abstraire
grer les cas o un programme est crit plusieurs
qui peuvent utiliser les mmes noms de variables.
un type
Rponse dans 2 cours.
de ce qui est stock dans la variable (i.e., combien de cases
mmoires physiques sont ncessaires pour stocker linformation)
Moralit: on peut
: la chane decoder les chanesvide
caractres de caractres
jouepar
unune suite
rle de
trs
plusieurs entiers et donc uniquement avec des bits (0 et 1) !
important
Les types de base
4 - Les boolens
5+3 vaut 8
5/3 vaut 8
Longueur(Bonjour) vaut 7
non Vrai
Faux
77
Tables de vrit (1)
Faux
77
Tables de vrit (1)
Faux Vrai
77
Tables de vrit (2)
Vrai Vrai
Vrai Faux
et
Faux Vrai
Faux Faux
78
Tables de vrit (2)
Vrai Faux
et
Faux Vrai
Faux Faux
78
Tables de vrit (2)
Faux Faux
78
Tables de vrit (2)
Faux Faux
78
Tables de vrit (2)
78
Tables de vrit (3)
Vrai Vrai
Vrai Faux
ou
Faux Vrai
Faux Faux
79
Tables de vrit (3)
Vrai Faux
ou
Faux Vrai
Faux Faux
79
Tables de vrit (3)
Faux Faux
79
Tables de vrit (3)
Faux Faux
79
Tables de vrit (3)
79
Syntaxe dune expression
Une expression est soit:
Ainsi, tout ce qui suit reprsente des expressions valides (on suppose que x est
une variable)
15
3+8
1 + (2 * x - 1)
Bon+jour
(5*3) + (12 -8)
1+2+3+4+5*2
3 + Longueur(Bonjour)
Syntaxe dune expression
Une expression est soit:
Une expression
une reprsente
valeur (25, donc un
3.8, Bonjour, calcul
la variable valide que lon peut utiliser au
x,)
sein des instructions de lalgorithme !
de la forme (expression) opration! (expression), o les parenthses sont
Unefacultatives
expression estpossde
sont uniquement
donc unelvaleur
pour (obtenue
lever des aprs
ambiguts.
lvaluation de
cette expression).
Ainsi, tout ce qui suit reprsente des expressions
! valides (on suppose que x est
une variable)
Attention, lorsquil y a des ambiguts dans une expression, elles sont leves
en imposant15 des prfrences (ex: la concatnation sera prfre laddition)
3+8 !
ex: dans 1 +le(2
cas
* xde
- 1)lexpression 12 + Bonjour, lopration choisie sera la
concatnation et le rsultat de lvaluation de lexpression sera la chane de
Bon+jour
caractres 12Bonjour ! (cf TD pour plus de dtails).
(5*3) + (12 -8)
1+2+3+4+5*2
3 + Longueur(Bonjour)
Les comparaisons en
javascript
Elles scrivent
nom_variable expression
Elles scrivent
nom_variable Saisie()
ex: x Saisie()
Elles scrivent
Ecrire(expression)
on parle de squentialit
ex: x 5;
y x+10; //La valeur de x utilise ici est 5
Exemple dvaluation
y 5 * (x + 10);
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Etape no 2 : on value lexpression 5*(x+10). Pour cela, il
faut chercher en mmoire la valeur associe la variable x
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Etape no 2 : on value lexpression 5*(x+10). Pour cela, il
faut chercher en mmoire la valeur associe la variable x
x
12
y
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Etape no 2 : on value lexpression 5*(x+10). Pour cela, il
faut chercher en mmoire la valeur associe la variable x
Etape no 3 : lexpression est donc 5*(12+10). Compte-tenu
des priorits (classiques) des oprations, lexpression vaut 110.
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Etape no 2 : on value lexpression 5*(x+10). Pour cela, il
faut chercher en mmoire la valeur associe la variable x
Etape no 3 : lexpression est donc 5*(12+10). Compte-tenu
des priorits (classiques) des oprations, lexpression vaut 110.
Etape no 4 : on affecte la valeur 110 la variable y.
Exemple dvaluation
y 5 * (x + 10);
Etape no 1 : on reconnat que linstruction est une affectation
car elle est bien de la forme variable expression.
Etape no 2 : on value lexpression 5*(x+10). Pour cela, il
faut chercher en mmoire la valeur associe la variable x
Etape no 3 : lexpression est donc 5*(12+10). Compte-tenu
des priorits (classiques) des oprations, lexpression vaut 110.
Etape no 4 : on affecte la valeur 110 la variable y.
x
110 12
y
Lhistorique dexcution
Pour bien comprendre le fonctionnement dun algorithme, on peut
construire un tableau reprsentant lvolution de ltat de la
mmoire au cours dune excution de lalgorithme.
!
Instructions Variable 1 Variable 2
!Avant excution de linstruction 1 ? ?
Aprs excution de linstruction 1
!
Aprs excution de linstruction 2
!
Aprs excution de linstruction 3
Exemple
Algorithme Voyage
Variables:
! position, dplacement: entiers;
Dbut
position 25 ;
! dplacement 11 ;
position position + dplacement ;
Ecrire(position);
!
Fin
!
Instructions position dplacement
Avant excution de linstruction 1 ? ?
! excution de linstruction 1
Aprs 25 ?
Aprs excution de linstruction 2 25 11
Aprs excution de linstruction 3 36 11
Aprs excution de linstruction 4 36 11
Construire un historique
dexcution
1. Numroter les instructions (n)
2. Slectionner les variables suivre (m)
3. Construire un tableau n+2 lignes * m+1 colonnes :
! v v v
Instructions
Avant
! Aprs
Aprs
Aprs
!
anne Saisie();
qui possdent vartype
un nom, un annee,age;
et une valeur
courante. !
age 2020 - anne; annee = Saisie();
!
Ecrire(age); age = 2020 - annee;
Un historique dexcution est un outil primordial
! Ecrire(age);
pour comprendre et tudier un algorithme.
Fin