Vous êtes sur la page 1sur 25

12/03/2013

COURS ALGORITHMIQUE
ET PROGRAMMATION
INFORMATIQUE

DUT INFORMATIQUE
S1
Marie-Agns peraldi-frati
Mitre de confrences en informatique
UNS/IUT de Nice cte dazur

1
M AP @ U N I C E . F R

MAP - UNS

RFRENCES

Algorithmes D.E Knuth CSLI Publications 2011

Introductipon a la science informatique G. Dowek Ed RPA 2010

Elments pour une histoire de linformatique, D.E Knuth CSLI


Publications 2011

Cours et exercices corrigs dalgorithmique- J. Julliand Ed Vuibert


Fev 2010

Algorthmique mthodes et modles , P Lignelet Ed Masson 1988

Cours algorithme Ccile Balkanski, Nelly Bensimon, Grard Ligozat


IUT Orsay

MAP - UNS 2

1
12/03/2013

OBJECTIF DU COURS API

Notions de base en algorithmique


Types de donnes et lien avec la machine
Notion de sous-programmes et lien avec la compilation
Qualit
nommage des variables, assertions, documentation ,
pr et post conditions
Structures algorithmiques fondamentales: .
Implantation des algorithmes dans un langage de
programmation.
Introduction au test unitaire, bote noire,
Algorithmes fondamentaux de recherche recherche dun
lment, parcours, tri,
Avoir une premire notion des performances des algorithmes
utiliss MAP - UNS 3

NOTION DE BASE EN
ALGORITHMIQUE
4

MAP - UNS

2
12/03/2013

CONCEPTS IMPORTANTS EN
INFORMATIQUE

Algorithme : mot driv du nom du mathmaticien


al_Khwarizmi qui a vcu au 9me sicle, tait
membre dun acadmie des sciences Bagdad .
Un algorithme prend des donnes en entre,
exprime un traitement particulier et fournit des
donnes en sortie.

Programme : srie dinstructions pouvant sexcuter


en squence, ou en parallle (paralllisme
matriel) qui ralise (implmente) un algorithme

MAP - UNS 5

POURQUOI UN COURS D "ALGO" ?

Pour obtenir de la machine quelle effectue


un travail notre place

Problme: expliquer la machine comment


elle doit s'y prendre

Besoins :
savoir expliciter son raisonnement
savoir formaliser son raisonnement
concevoir (et crire) des algorithmes:
squence dinstructions qui dcrit comment rsoudre un
problme particulier

MAP - UNS 6

3
12/03/2013

ALGORITHME

Savoir expliquer comment faire un travail sans la


moindre ambigut
langage simple : des instructions (pas lmentaires)
suite finie d'actions entreprendre en respectant une
chronologie impose
Lcriture algorithmique : un travail de programmation
vise universelle
un algorithme ne dpend pas du langage dans lequel il est
implant,
ni de la machine qui excutera le programme correspondant.

MAP - UNS 7

EXEMPLE DALGORITHMES

Recette de cuisine
Notice de montage de meuble
en kit

Mathmatiques : problme 3n+1: lmentaire mais


redoutable
si n est pair, on le divise par 2 ;
si n est impair, on le multiplie par 3 et on ajoute 1.
Est-il vrai que lon finira tt ou tard par tomber sur 1 ?

MAP - UNS 8

4
12/03/2013

LES PROBLMES FONDAMENTAUX


EN ALGORITHMIQUE

Complexit
En combien de temps un algorithme va -t-il atteindre le
rsultat escompt?
De quel espace a-t-il besoin?
Calculabilit:
Existe-t-il des tches pour lesquelles il n'existe aucun
algorithme ?
Etant donne une tche, peut-on dire s'il existe un
algorithme qui la rsolve ?
Correction
Peut-on tre sr qu'un algorithme rponde au problme
pour lequel il a t conu ?

MAP - UNS 9

EXEMPLE DE LANGAGE ALGORITHMIQUE

MAP - UNS 10

5
12/03/2013

ETAPES DUN ALGORITHME

Prparation du traitement
donnes ncessaires la rsolution du problme
Traitement
rsolution pas pas,
aprs dcomposition en sous-problmes si
ncessaire
Edition des rsultats
impression lcran,
dans un fichier, etc.

MAP - UNS 11

LANGAGE ALGORITHMIQUE

Algorithme NomAlgorithme Algorithme Bonjour


{ ceci est un commentaire} {il dit juste bonjour mais en anglais !
Dbut Dbut
... Actions afficher('Hello world !!!')
Fin ALaLigne
Fin

Il faut avoir une criture rigoureuse


Il faut avoir une criture soigne : respecter lindentation
Il est ncessaire de commenter les algorithmes
Il existe plusieurs solutions algorithmiques un problme pos
Il faut rechercher lefficacit de ce que lon crit

MAP - UNS 12

6
12/03/2013

DCLARATION DES DONNES

Variable <nom de donne>: type

Instruction permettant de rserver de lespace


mmoire pour stocker des donnes
Dpendant du type des donnes : entiers, rels,
caractres, etc.)
Exemples :
Variables val, unNombre: entiers
nom, prnom : chanes de caractres

MAP - UNS 13

DCLARATION DES DONNES

Constante <nom de donne>: type valeur ou


expression

Instruction permettant de rserver de lespace


mmoire pour stocker une constante dont la valeur
ne varie pas.
Exemples :
Constante MAX : entier 10
DEUXFOISMAX : entier MAX x 2

MAP - UNS 14

7
12/03/2013

LECTURE CRITURE DE DONNES

Saisir<nom de donne, >


Afficher<nom de donne, >

Fonction : Instructions permettant


de placer en mmoire les informations fournies par l'utilisateur.
De visualiser des donnes places en mmoire

Exemples:
Saisir(unNombre)
Afficher ( le nom est , nom, et le prnom est ,
prnom )
Saisir(val)

MAP - UNS 15

PHASE DANALYSE

Consiste extraire de lnonc du


problme des lments de modlisation
Technique : Distinguer en soulignant de
diffrentes couleurs quelles sont
Quel est le but du programme (traitement
raliser)
Donnes en entre du problme :
O vont se situer les rsultats en sortie

MAP - UNS 16

8
12/03/2013

EXEMPLE DNONC DUN PROBLME

On souhaite calculer et afficher , partir dun prix


hors taxe saisi, la TVA ainsi que le prix TTC
Le montant TTC dpend de :
Du prix HT
Du taux de TVA de 20,6

MAP - UNS 17

EXEMPLE DNONC DUN PROBLME

On souhaite calculer et afficher , partir dun prix


hors taxe saisi, la TVA ainsi que le prix TTC
Le montant TTC dpend de :
Du prix HT
Du taux de TVA de 20,6

Traitement raliser

MAP - UNS 18

9
12/03/2013

EXEMPLE DNONC DUN PROBLME

On souhaite calculer et afficher , partir dun prix


hors taxe saisi, la TVA ainsi que le prix TTC
Le montant TTC dpend de :
Du prix HT
Du taux de TVA de 20,6

Donnes en entre

MAP - UNS 19

EXEMPLE DNONC DUN PROBLME

On souhaite calculer et afficher , partir dun prix


hors taxe saisi, la TVA ainsi que le prix TTC
Le montant TTC dpend de :
Du prix HT
Du taux de TVA de 20,6

Donnes en sortie

MAP - UNS 20

10
12/03/2013

ALGORITHME TVA

Algorithme CalculTVA
{Saisit un prix HT et affiche le prix TTC correspondant}
Constantes (TVA : rel) 20.6
(Titre : chane) "Rsultat"
Variables prixHT : rel
Variable prixTTC, montantTVA : rels {dclarations}

Dbut {prparation du traitement}


afficher("Donnez-moi le prix hors taxe :")
saisir(prixHT)
prixTTC prixHT* (1+TVA/100) {calcul du prix TTC} Code peu efficace
montantTVA prixTTC- prixHT

afficher(Titre) {prsentation du rsultat}


afficher(prixHT, euros H.T. + TVA ",TVA, devient ,prixTTC,
eurosT.T.C.") MAP - UNS 21
Fin

INSTRUCTIONS SQUENTIELLES
RSULTAT DUN ALGORITHME

Constante (SEUIL : rel) 13.25


Variables valA, valB: rels
compteur : entier
mot , tom : chanes
valA0.56
valBvalA
valAvalA(10.5 + SEUIL)
compteur 1
compteur compteur + 10
mot " Bonjour "
tom "Au revoir ! "

Quelles sont les diffrentes valeurs des variables ?


MAP - UNS 22

11
12/03/2013

SIMULATION DUN ALGORITHME

Algorithme CaDoitEchanger?
{Cet algorithme .........................................}
Variables valA, valB: rels {dclarations}
Dbut {prparation du traitement}
Afficher ("Donnez-moi deux valeurs :")
Saisir (valA, valB)
Afficher ("Vous m'avez donn ", valA, " et ", valB)
{traitement mystre}
valAvalB
valBvalA {prsentation du rsultat}
Afficher("Maintenant , mes donnes sont : ", valA, " et ", valB)
Fin

Que fait cet algorithme ? Pas ce qui est prvu !


MAP - UNS 23

CE QUIL MANQUE

Dclarer une variable supplmentaire


Variables valA, valB, valTemp: entiers

Utiliser cette variable pour stocker provisoirement


une des valeurs

Saisir(valA, valB)
valTempvalA
valAvalB
valBvalTemp

MAP - UNS 24

12
12/03/2013

STRUCTURE ALTERNATIVE
SI ALORS SINON FSI (1)

Exemple :
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entire et affiche son double si
cette donne est infrieure un seuil donn.)
constante (SEUIL : entier) 10
Variable val : entier
dbut
Afficher("Donnez-moi un entier : ") { saisie de la valeur entire}
Saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors Afficher ("Voici son double :" , val 2)
sinon Afficher ("Voici la valeur inchange :" , val)
fsi
fin

MAP - UNS 25

STRUCTURE ALTERNATIVE
SI ALORS SINON FSI (2)

Ou instruction conditionnelle
si <expression logique>
alors instructions
[sinon instructions]
fsi

Si lexpression logique (la condition) prend la valeur


vrai, le premier bloc dinstructions est excut;
si elle prend la valeur faux, le second bloc est
excut (sil est prsent, sinon, rien).

MAP - UNS 26

13
12/03/2013

STRUCTURE ALTERNATIVE
SI ALORS SINON FSI (3)

Autre criture de lexemple :


Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entire et affiche son double si cette
donne est infrieure un seuil donn.)
constante (SEUIL : entier) 10
Variable val : entier
dbut
Afficher("Donnez-moi un entier : ") { saisie de la valeur entire}
Saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors val val 2
Fsi
Afficher ("Voici la valeur val :" , val)
MAP - UNS 27
fin

STRUCTURES ALTERNATIVES
IMBRIQUES
Problme: afficher :
"Reu avec mention Assez Bien " si une note est suprieure ou
gale 12,
" Reu mention Passable" si elle est suprieure 10 et
infrieure 12, et
"Insuffisant" dans tous les autres cas.

si note 12
alors afficher( "Reu avec mention AB" )
sinon si note 10
alors afficher( Reu mention Passable" )
sinon afficher("Insuffisant" )
fsi
fsi

MAP - UNS 28

14
12/03/2013

SELECTION CHOIX MULTIPLES


SELON (1)

selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions

[autres: instructions]

Sil y a plus de deux choix possibles, linstruction


selon permet une facilit dcriture

MAP - UNS 29

SLECTION CHOIX MULTIPLES


SELON (2)
selon abrviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )

quivalent avec instruction Conditionnelle


si abrviation = "M "
alors afficher( "Monsieur" )
sinon si abrviation = Mlle
alors afficher("Mademoiselle")
sinon si abrviation = "Mme"
alors afficher( "Madame" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi MAP - UNS 30
fsi

15
12/03/2013

SLECTION CHOIX MULTIPLES


EXEMPLE (3) AVEC INVERSION DES TESTS

selon abrviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )
quivalent avec instruction Conditionnelle
si abrviation = "Mme "
alors afficher( Madame" )
sinon si abrviation = Mlle
alors afficher("Mademoiselle")
sinon si abrviation = "M"
alors afficher( "Monsieur" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi MAP - UNS 31
fsi

SLECTION CHOIX MULTIPLES


EXEMPLE (4) AVEC SI ALORS FSI SQUENTIELS
selon abrviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )

quivalent avec instruction Conditionnelle


si abrviation = "Mme "
alors afficher( Madame" )
fsi
si abrviation = Mlle
alors afficher("Mademoiselle")
fsi
si abrviation = "M"
alors afficher( "Monsieur" )
sinon afficher( "Monsieur,Madame " )
fsi

MAP - UNS 32

16
12/03/2013

TO DO

Calculez le nombre dinstructions ncessaires pour


valuer lexcution dans le cas de 24 tudiants et 2
tudiantes clibataires.
Traiter les 3 cas de exemple 2, 3 et 4.

MAP - UNS 33

RPTITION DUN TRAITEMENT


BOUCLE POUR

Exemple
Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal donnes qu'il saisit}
variables nbVal, cpt : entiers
valeur, totalValeurs: rels
dbut
{initialisation du traitement}
afficher("Combien de valeurs voulez-vous saisir ?")
saisir(nbVal)
{initialisation du total 0 avant cumul}
totalValeurs0
{traitement qui se rpte nbVal fois}
pour cpt 1 nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurstotalValeurs+ valeur {cumul}
fpour
{dition des rsultats}
afficher("Le total des ", nbVal, "valeurs est " , totalValeurs)
MAP - UNS 34
fin

17
12/03/2013

BOUCLE POUR
Valeur Valeur
initiale finale

pour <var> valInit valfin [par <pas>] faire


traitement {suite dinstructions}
fpour
Valeur ajouter
<var> chaque
passage dans la
boucle

Fonction: rpter une suite dinstructions un certain


nombre de fois
Pour utilise quand le nombre ditration est connu

MAP - UNS 35

SMANTIQUE BOUCLE POUR

linstruction pour:
initialise une variable de boucle (le compteur)
incrmente cette variable de la valeur de pas
vrifie que cette variable ne dpasse pas la borne suprieure
Attention :
-le traitement ne doit pas modifier la variable de boucle

Pour cpt 1 MAX faire


si () alors INTERDIT !
cpt MAX
fpour

MAP - UNS 36

18
12/03/2013

RPTITION DUN TRAITEMENT


NOMBRE ITRATIONS INCONNU
TANT QUE FAIRE
Exemple
Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal donnes qu'il saisit, arrt
la lecture de -1 }
constante (STOP : entier) -1
variables val, totalValeurs: entiers
dbut
totalValeurs0
afficher("Donnez une valeur,", STOP, " pour finir.") {amorage}
saisir(val)
tant que val STOP faire
totalValeurstotalValeurs+ val {traitement}
afficher("Donnez une autre valeur,", STOP, " pour finir.")
saisir(val) {relance}
ftq
afficher("La somme des valeurs saisies est", totalValeurs)
fin MAP - UNS 37

BOUCLE TANT QUE FAIRE


initialisation de la (des)
variable(s) de condition
amorage
tant que <expression logique (vraie)> faire
traitement suite dinstructions
relance excuter si condition
ftq vraie
r-affectation de la
(des) variable(s) de
condition

Fonction: rpter une suite dinstructions un certain


nombre de fois

MAP - UNS 38

19
12/03/2013

BOUCLE TANT QUE FAIRE

Structure itrative "universelle"


n'importe quel contrle d'itration peut se traduire par le
"tant que "
Structure itrative irremplaable ds que la
condition d'itration devient complexe

MAP - UNS 39

BOUCLE TANT QUE FAIRE

Exemple:
saisir des valeurs, les traiter, et sarrter la saisie de
la valeur darrt 1 ou aprs avoir saisi 5 donnes.
Constantes (STOP : entier) -1
(MAX : entier) 5
Variables nbVal, val : entiers
Dbut
nbVal0 {compte les saisies traites}
saisir(val) {saisie de la 1re donne}
tant que val STOP et nbVal< MAX faire
nbValnbVal+ 1{traitement de la valeur saisie}
saisir(val) {relance}
Ftq
afficher(val, nbVal) {valeurs en sortie de boucle}

Remarque : La valeur darrt nest jamais traite (et donc, jamais


comptabilise)
MAP - UNS 40

20
12/03/2013

BOUCLE TANT QUE FAIRE

Interprter l'arrt des itrations



nbVal0 {compte les saisies traites}
saisir(val) {saisie de la 1re donne}
tant que val STOP et nbVal< MAX faire
nbValnbVal+ 1{traitement de la valeur saisie}
saisir(val) {relance}
Ftq
si val = STOP
alors {la dernire valeur teste tait la valeur darrt}
afficher(Sortie de boucle car saisie de la valeur darrt )
{toutes les donnes significatives ont t traites.}
sinon {il y avait plus de 5 valeurs tester}
afficher(Sortie de boucle car nombre maximum de valeurs traiter
atteint ) { des donnes significatives nont pas pu t traites.}
MAP - UNS 41
fsi

COMPARAISON BOUCLES
POUR ET TANT QUE (1)
pour cpt 1 nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurstotalValeurs+ valeur {cumul}
fpour

Est quivalent
cpt 0
tant que cpt <nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurstotalValeurs+ valeur {cumul}
cpt cpt + 1 {compte le nombre de valeurs traites}
ftq

MAP - UNS 42

21
12/03/2013

COMPARAISON BOUCLES
POUR ET TANT QUE (2)

Implicitement, linstruction pour:


initialise un compteur
incrmente le compteur chaque pas
vrifie que le compteur ne dpasse pas la borne
suprieure
Explicitement, linstruction tant que doit
initialiser un compteur {amorage}
incrmenter le compteur chaque pas {relance}
vrifier que le compteur ne dpasse pas la borne
suprieure {test de boucle}

MAP - UNS 43

QUAND CHOISIR
POUR OU TANT QUE ?

Nombre ditration connu lavance : POUR


Parcours de tableaux
Test sur un nombre donn de valeurs

Boucle sarrte sur vnement particulier : TANT


QUE
Itration avec arrt dcid par saisie utilisateur

MAP - UNS 44

22
12/03/2013

MAIS ON NA PAS FINI DITRER !

Boucle rpter tant que : exemple

Algorithme Essai
{Cet algorithme a besoin dune valeur positive paire}
Variables valeur : entier
Dbut
Rpter
afficher("Donnez une valeur positive non nulle : ")
saisir(valeur)
tant que valeur 0
afficher("La valeur positive non nulle que vous avez saisie est ")
afficher( valeur ){traitement de la valeur saisie}
fin

MAP - UNS 45

BOUCLE RPTER TANT QUE

Rpter
(r)affectation de la (des) variable(s) de condition
traitement
Tant que <expression logique (vraie)>

Fonction: excuter une suite dinstructions au moins une fois


et la rpter tant quune condition est remplie

Remarque: le traitement dans lexemple prcdent se limite


la r-affectation de la variable de condition (saisir(valeur))

MAP - UNS 46

23
12/03/2013

COMPARAISON
RPTER ET TANT QUE

Rpter
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que(valeur < 0 ou(valeur % 2) 0)

quivaut

afficher("Donnez une valeur positive paire :") saisir(valeur)


tant que(valeur < 0 ou(valeur % 2) 0) faire
afficher("Donnez une valeur positive paire:")
saisir(valeur)
ftq

MAP - UNS 47

COMPARAISON
RPTER ET TANT QUE

boucle tant que


condition vrifie avant chaque excution du traitement
le traitement peut donc ne pas tre excut
de plus : la condition porte surtout sur la saisie de nouvelles
variables (relance)

boucle rpter tant que


condition vrifie aprs chaque excution du traitement
=>le traitement est excut au moins une fois
de plus: la condition porte surtout sur le rsultat du traitement

Remarque: la boucle rpter est typique pour les saisies avec


vrification

MAP - UNS 48

24
12/03/2013

DE LNONC LA BOUCLE

saisir des donnes et s'arrter ds que leur somme


dpasse 500
somme 0
rpter
saisir(val)
somme somme + val
tant que somme 500

saisir(val)
somme val
tant que somme 500 faire
saisir(val)
somme somme + val
ftq

MAP - UNS 49

DE LNONC LA BOUCLE

saisir des donnes et s'arrter ds que leur somme


dpasse 500
somme 0
rpter
saisir(val)
somme somme + val
tant que somme 500

MAP - UNS 50

25