Vous êtes sur la page 1sur 97

Cours dintroduction

linformatique
Partie 2 : Comment crire un algorithme ?
Quest-ce quune variable ? Expressions et instructions
Quest-ce quun
algorithme ?
Une recette de cuisine

Protocole exprimental

Des instructions pour aller quelque part

Des consignes de scurit

Dans ce cours, une mthode de rsolution dun


problme, crite de manire non ambige et
susceptible dtre code sur ordinateur
Ambiguit
Quelques exemples viter:

vends tricycle pour infirme en bon tat

Deux conducteurs taient interpells par les


gendarmes en tat d'ivresse. (Var Matin, 13/07/1994)

J'ai lu la critique de Chomsky

Le franais ne convient pas, il faut avoir des rgles


de syntaxe et un vocabulaire prcis (si possible pas
trop grand pour ne pas sencombrer lesprit !!!).

http://www.limsi.fr/Individu/gendner/analyse_texte/2002/03-ambiguite.html
Les deux bases des
algorithmes

Les variables, dans lesquelles on stocke


linformation et qui dcrivent la manire permettant
daccder la mmoire de lordinateur.

Les instructions qui permettent de modifier ltat


de ces variables
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

Affichage pour lutilisateur


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 Modification de la valeur dune variable!
= affectation
Affichage pour lutilisateur
Ecrire un algorithme
99% des algorithmes se dcomposent en 3 parties!
1) ce quon demande lutilisateur
Algorithme
2) ce quonPuissance
calcule (la partie difficile en gnral)
// algorithme qui calcule une puissance dun nombre
3) ce quon restitue lutilisateur (qui ne peut pas dmonter
Variables
x,puissancepour
lordinateur : rels;
voir ltat de la mmoire !)
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

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.

Chaque case porte ainsi un numro (adresse) pour


sy retrouver.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.
Mmoire de l'ordinateur trs grand espace
dcoup en cases.

Chaque case porte ainsi un numro (adresse) pour


sy retrouver.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.
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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
Petite remarque en passant, il suffit de savoir stocker

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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.
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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.

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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.
anne

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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Accder la mmoire de
lordinateur.
anne

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.

On peut consulter/modifier le contenu dune case


en question ds quon en connait ladresse.
Les variables
Les variables sont caractrises par:

un nom (identifiant)

car nommer cest abstraire

un type

de ce qui est stock dans la variable (i.e., combien de cases


mmoires physiques sont ncessaires pour stocker linformation)

numrique (entier/rel), chanes de caractres, boolens, autres


choses plus compliques (cf. plus tard).

une valeur courante (qui peut tre modifie).


Les variables
Les variables sont caractrises par:

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)

numrique (entier/rel), chanes de caractres, boolens, autres


choses plus compliques (cf. plus tard).

une valeur courante (qui peut tre modifie).


Les types de base
1 - Les numriques entiers
Les entiers en maths = lments de

Les entiers en informatique = un sous ensemble des


entiers en maths (ceux quon peut crire selon une rgle
dcriture donne et qui dpend du langage informatique).

Les int en C (sur mon mac) sont les entiers entre


-2147483648=-231 et 2147483647

Les entiers en javascript (partout) sont tous les entiers


entre -9007199254740992=-253 et 9007199254740991
plus quelques autres qui ne se suivent pas forcment
Les types de base
1 - Les numriques entiers
La ralit: on utilise une dcomposition binaire des entiers
Les entiers135=10000111=1*128+0*64++1*4+1*2+1*1
en maths = lments !
de
Si on utilise 8 bits on peut crire tous les nombres entre
Les entiers en informatique
00000000=0 et=11111111=255
un sous ensemble des
entiers en maths (ceux quon! peut crire selon une rgle
ou encore tous les nombres entre -128 et 127 si on rserve un bit pour
dcriture donne et qui le dpend
signe. du langage informatique).
!
Les int
Moralit: on peutencoder
C (surles mon
entiersmac) sont les entiers
avec uniquement des bits (0entre
et 1).
-2147483648=-231 et 2147483647

Les entiers en javascript (partout) sont tous les entiers


entre -9007199254740992=-253 et 9007199254740991
plus quelques autres qui ne se suivent pas forcment
Les types de base
2 - Les numriques rels
Les rels en maths = lments de R

Les entiers en informatique = Les flottants un sous


ensemble des rels en maths (ceux quon peut crire
selon une rgle dcriture donne et qui dpend du
langage informatique et souvent dune norme).

Les float en C sont certains rels dont les


positifs sont compris entre 3.4*10-38 et 3.4*1038

Les Numbers en javascript sont


Rels vs flottants: les nombres
en (Algo/java)Script
Lordinateur ne sait manipuler nativement que des
entiers et en nombre fini.

Lastuce pour reprsenter un nombre rel, cest de le


noter sous une notation ingnieur:
0.00001123=1.123e-5=1123e-8 et comme 1123
(mantisse) et -8 (exposant) sont des entiers, on peut
les coder en machine.

En javascript, la mantisse est un nombre compris entre


-253 et 253-1 et lexposant est compris entre -210 et 210-1.
Rels vs flottants: les nombres
en (Algo/java)Script
Lordinateur ne sait manipuler nativement que des
entiers et en nombre fini.

Lastuce pour reprsenter un nombre rel, cest de le


noter sous une notation ingnieur:
0.00001123=1.123e-5=1123e-8 et comme 1123
(mantisse) et -8 (exposant) sont des entiers, on peut
les coder en machine.
Moralit: on peut coder les flottants avec deux entiers et donc
uniquement des bits (0 et 1) !
En javascript, la mantisse est un nombre compris entre
-253 et 253-1 et lexposant est compris entre -210 et 210-1.
Les types de base
3 - Les caractres
Une des finalits de linformatique, cest de communiquer

Les caractres en informatique = ce que lon souhaite


crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.

Il faut des normes de codage pour cela (ASCII, Unicode,)


Les types de base
3 - Les caractres
la table ASCII
Une des finalits de linformatique, cest de communiquer

Les caractres en informatique = ce que lon souhaite


crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.

Il faut des normes de codage pour cela (ASCII, Unicode,)


Les types de base
3 - Les caractres
la table ASCII
Une des finalits de linformatique, cest de communiquer

Les caractres en informatique = ce que lon souhaite


crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.

Il faut des normes de codage pour cela (ASCII, Unicode,)


Les types de base
3 - Les caractres
la table ASCII
Une des finalits de linformatique, cest de communiquer
la table Unicode partir du code 20000
Les caractres en informatique = ce que lon souhaite
crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.

Il faut des normes de codage pour cela (ASCII, Unicode,)


Les types de base
3 - Les caractres
la table ASCII
Une des finalits de linformatique, cest de communiquer
la tableetUnicode
NB: en javascript partir du
dans le langage code 20000 un caractre est
algorithmique,
un symbole entour de deux quotes
Les caractres en informatique = ce que lon souhaite
crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.

Il faut des normes de codage pour cela (ASCII, Unicode,)


Les types de base
3 - Les caractres
la table ASCII
Une des finalits de linformatique, cest de communiquer
la tableetUnicode
NB: en javascript partir du
dans le langage code 20000 un caractre est
algorithmique,
un symbole entour de deux quotes
Les caractres en informatique = ce que lon souhaite
crire..

Avant 80, on souhaite crire des messages en anglais


(alphabet latin, pas daccents, quelques caractres de
ponctuation et de contrle).

Aprs 80, on veut crire des caractres accentus, des


caractres dans des alphabets non latin.
Moralit: on peut coder les caractres avec un entier en utilisant une
table de correspondance normaliseau niveau international et
Il faut des normes de codage
donc uniquement pour
des cela
bits (0 et 1)(ASCII,
! Unicode,)
Les types de base
3 - Les chanes de caractres
Ce sont des suites de caractres (0,1, 1000 caractres)

En javascript et dans le langage algorithmique, elles sont


notes comme une suite de caractres entoure de deux
quotes

Bonjour, Au revoir, premire ligne\ndeuxime ligne,


.

: la chane de caractres vide joue un rle trs


important
Les types de base
3 - Les chanes de caractres
Ce sont des suites de caractres (0,1, 1000 caractres)

En javascript et dans le langage algorithmique, elles sont


notes comme une suite de caractres entoure de deux
quotes

Bonjour, Au revoir, premire ligne\ndeuxime ligne,


.

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

Ce sont les valeurs vrai et faux (ou true et false)


Les types de base
4 - Les boolens

Ce sont les valeurs vrai et faux (ou true et false)

Moralit: Voici finalement le type de base unique de linformatique que


lon peut videmment coder avec des bits (0=faux et 1=vrai) !
Pourquoi porter autant dattention aux
types alors que tout peut se coder par
des bits ?

1. Parce quil est plus pratique dcrire Bonjour que


01000010011011110110111001101010011011110111010101110010

2. Parce quon a besoin de savoir combien de place


(en nombre de bits) il faut rserver en mmoire
pour stocker une variable.

3. Parce que les calculs quon peut faire changent


dun type lautre..
Les Expressions
Oprations de base, syntaxe,.
Oprations de base pour
1 - Les entiers
Les oprations + (addition), - (soustraction), *
(multiplication), div (division entire) et mod (reste
de la division entire)

5+3 vaut 8

17 div 5 vaut 3 et 17 mod 5 vaut 2

Les comparaisons =,,<,>,, entre deux nombres


entiers. Le rsultat dune comparaison est un
boolen (12 = 4*3 vaut vrai et 12<7 vaut faux)
Oprations de base pour
2 - Les rels
Les oprations + (addition), - (soustraction), *
(multiplication), / (division)

5/3 vaut 8

17/5 vaut 3.6666666667

Les comparaisons =,,<,>,, entre deux nombres


rels.
Oprations de base pour
2 - Les rels
Les oprations + (addition), - (soustraction), *
(multiplication), / (division)
Attention ! Les calculs se font sur des nombres flottants ! Ont ne peut pas tout
5/3 vaut 8 reprsenter ! Par exemple :
!
!
17/5 vaut 3.6666666667

Les comparaisons =,,<,>,, entre deux nombres


rels.
Oprations de base pour
3 - Les caractres
Les comparaisons =,,<,>,, entre deux
caractres se fait en comparant leur deux codes
Ascii (ainsi A < a est vrai car le code ASCII de A
est 65 et celui de a est 97, de mme e = est
faux car ces deux symboles ont des codes
diffrents).

Les fonctions Caractere_vers_Ascii(Z) et


Ascii_vers_Caractere(110).
Oprations de base pour
4 - Les chanes de caractres
La concatnation de deux chanes de caractres note +

Bon + jour vaut la chane Bonjour

Obtenir la longueur dune chane de caractres.

Longueur(Bonjour) vaut 7

Extraire un caractre dune chane (notation ch[n], le premier caractre de


la chane est ch[0].

Si la variable ch contient comme valeur la chane de caractres


Bonjour, ch[3] vaut j

Les comparaisons =,,<,>,, entre deux chanes de caractres se font


en utilisant lordre lexicographique (i.e., lordre du dictionnaire).
Oprations de base pour
5 - Les boolens

Les oprations logiques: et, ou et non


Tables de vrit (1)

non Vrai

Faux

77
Tables de vrit (1)

non Vrai Faux

Faux

77
Tables de vrit (1)

non Vrai Faux

Faux Vrai

77
Tables de vrit (2)

Vrai Vrai

Vrai Faux
et
Faux Vrai

Faux Faux

78
Tables de vrit (2)

Vrai Vrai Vrai

Vrai Faux
et
Faux Vrai

Faux Faux

78
Tables de vrit (2)

Vrai Vrai Vrai

Vrai Faux Faux


et
Faux Vrai

Faux Faux

78
Tables de vrit (2)

Vrai Vrai Vrai

Vrai Faux Faux


et
Faux Vrai Faux

Faux Faux

78
Tables de vrit (2)

Vrai Vrai Vrai

Vrai Faux Faux


et
Faux Vrai Faux

Faux Faux Faux

78
Tables de vrit (3)

Vrai Vrai

Vrai Faux
ou
Faux Vrai

Faux Faux

79
Tables de vrit (3)

Vrai Vrai Vrai

Vrai Faux
ou
Faux Vrai

Faux Faux

79
Tables de vrit (3)

Vrai Vrai Vrai

Vrai Faux Vrai


ou
Faux Vrai

Faux Faux

79
Tables de vrit (3)

Vrai Vrai Vrai

Vrai Faux Vrai


ou
Faux Vrai Vrai

Faux Faux

79
Tables de vrit (3)

Vrai Vrai Vrai

Vrai Faux Vrai


ou
Faux Vrai Vrai

Faux Faux Faux

79
Syntaxe dune expression
Une expression est soit:

une valeur (25, 3.8, Bonjour, la variable x,)

de la forme (expression) opration (expression), o les parenthses sont


facultatives est sont uniquement l pour lever des ambiguts.

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

Attention aux notations en javascript !!

le test dgalit = scrit == (ex: x == 5)

diffrent scrit != (ex: x != 5)

ou gal et scrivent <= et >= (ex: x <= 5)


Les oprations boolennes
en javascript
Attention aux notations en javascript !!

le et logique scrit && (ex: (5 < x) && (x<10)


)

le ou logique scrit || (ex: (x < -1) || (x > 1) )

le non logique scrit ! (ex: !(x < -1))


Les Instructions
Instructions de base, squentialit,.
Instructions de base
Lexcution dun algorithme consiste en lexcution
dun suite dinstruction dans le but de changer ltat
de la mmoire.
Il y a trois instructions de base:
les affectations
Les saisies
Les affichages

Chaque instruction trouve les variables dans un tat


et les laisse dans un nouvel tat
Les affectations
Les instructions dcrivent les changements de
ltat de la mmoire

Elles scrivent

nom_variable expression

ex: x 5 ou nom Bourdon, o x est une


variable de type numrique et nom est une variable
de type chane de caractres.
Les saisies
Ce sont les instructions qui permettent dinteragir en
entre avec lutilisateur (qui peut entrer des valeurs).

Elles scrivent

nom_variable Saisie()

ex: x Saisie()

NB: en TP, on fera la distinction entre les diffrents types


de valeurs que lon peut saisir et on utilisera SaisieEntier(),
SaisieReel() ou encore Saisie() qui permet quant lui de
saisir une chane de caractres.
Les affichages
Ce sont les instructions qui permettent dinteragir en
sortie avec lutilisateur (affichage dun rsultat).

Elles scrivent

Ecrire(expression)

ex: Ecrire(Bonjour le monde)

NB: en TP, on utilisera dautres modes pour restituer un


rsultat, comme par exemple par un affichage
graphique ou une sortie sonore
En javascript

Laffectation a 5 scrit a=5 (un seul gal)

La saisie scrit a=Saisie();

Laffichage scrit Ecrire(Bonjour);


La squentialit
Un algorithme comporte une suite dinstructions qui
s'excutent (par dfaut) l'une aprs lautre dans l'ordre
dcriture.

on parle de squentialit

Afin de marquer quune instruction succde une


autre instruction, on utilise le symbole ; (et par
convention et clart dcriture, on passe la ligne).

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

Valeur de la variable vi aprs lexcution


de toutes les instructions jusqu I2
Bilan
Un algorithme est une suite squentielle
dinstructions qui modifient ltat de la mmoire.

On accde la mmoire par le biais de variables


qui possdent un nom, un type et une valeur
courante.

Un historique dexcution est un outil primordial


pour comprendre et tudier un algorithme.
Bilan
Algorithme Calcule ge
Un algorithme
Variables est une suite squentielle
anne : entierqui modifient ltat de la mmoire.
dinstructions
! age: entier
On accde la mmoire par le biais de variables
Dbut
!
anne Saisie();
qui possdent un nom, un type et une valeur
courante.
age 2020 - anne;
!
Ecrire(age);
Un historique dexcution est un outil primordial
!
pour comprendre et tudier un algorithme.
Fin
Bilan
Algorithme Calcule ge
Un algorithme
Variables est une suite
!
squentielle
anne : entierqui modifient
dinstructions ltat de la mmoire.
en Javascript:!
! age: entier !
On accde la mmoire// par
Dbut le biaisCalcule
Algorithme de variables
age

!
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