Professional Documents
Culture Documents
ORSAY
Universit Paris XI
I.U.T. d'Orsay
Dpartement Informatique
Anne scolaire 2003-2004
Algorithmique : Volume 1
Introduction
Instructions de base
Logique propositionnelle
Ccile Balkanski, Nelly Bensimon, Grard Ligozat
Algorithmique 1 : Introduction
Structures de donnes
- des plus simples aux plus complexes
Algorithmique 1 : Introduction
Camion de pompiers
suite de dessins
Meuble en kit
Cuisine quipe
notice de montage
Cafetire
Expresso
instructions
Laine
Pull irlandais
modle
Fort noire
recette
Algorithmique 1 : Introduction
De l'importance de l'algorithme
Rsultats
mis en forme
Informations
parses
Machine
Donnes
structures
Obtention
de rsultats
Traitement
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?
Algorithmique 1 : Introduction
Algorithmique 1 : Instructions de
base
Un premier algorithme
Algorithme ElveAuCarr
{Cet algorithme calcule le carr du nombre que lui fournit l'utilisateur}
variables unNombre, sonCarr: entiers
{dclarations: rservation
d'espace-mmoire}
dbut
{prparation du traitement}
afficher("Quel nombre voulez-vous lever au carr?")
saisir(unNombre)
{traitement : calcul du carr}
sonCarr unNombre unNombre
{prsentation du rsultat}
afficher("Le carr de ", unNombre)
afficher("c'est ", sonCarr)
fin
Algorithmique 1 : Instructions de base
Traitement
- rsolution pas pas, aprs dcomposition en sousproblmes si ncessaire
10
Fonction :
Instruction permettant de rserver de lespace mmoire
pour stocker des donnes (dpend du type de ces
donnes : entiers, rels, caractres, etc.)
Exemples :
variables
11
Fonction :
Instruction permettant de placer en mmoire les
informations fournies par l'utilisateur.
Exemples:
saisir(unNombre)
saisir(nom, prnom)
saisir(val)
Algorithmique 1 : Instructions de base
12
Fonction :
Instruction permettant de visualiser les informations
places en mmoire.
Exemples:
afficher(unNombre, "est diffrent de 0")
afficher("La somme de", unNombre, "et" , val , "est",
unNombre + val)
Algorithmique 1 : Instructions de base
13
Fonction :
Instruction permettant de rserver de lespace mmoire
pour stocker des donnes dont la valeur est fixe pour tout
lalgorithme
Exemples :
constantes
14
{prparation du traitement}
afficher(Titre)
{prsentation du rsultat}
afficher(prixHT, euros H.T. devient ", prixTTC, euros T.T.C.")
Fin
Affichage :
Algorithmique 1 : Instructions de base
15
Fonction :
Instruction permettant dattribuer la variable identifie
par l'lment plac gauche du symbole la valeur
de l'lment plac droite de ce symbole.
Exemple:
nom "Venus"
val 50
val val 2
Algorithmique 1 : Instructions de base
16
Affectation : exemples
constante
variables
valA 0.56
valB valA
valA valA (10.5 + SEUIL)
compteur 1
compteur compteur + 10
mot " Bonjour "
tom "Au revoir ! "
tableau de simulation :
valA valB
comp-
mot
tom
teur
17
18
{dclarations}
dbut
{prparation du traitement}
afficher("Donnez-moi deux valeurs :")
saisir (valA, valB)
afficher("Vous m'avez donn ", valA, " et ", valB)
{traitement mystre}
valA valB
valB valA
{prsentation du rsultat}
afficher("Maintenant , mes donnes sont : ", valA, " et ", valB)
Fin
Affichage :
Algorithmique 1 : Instructions de base
19
20
Traitement faire si
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
Algorithmique 1 : Instructions de base
21
Linstruction 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).
Algorithmique 1 : Instructions de base
22
23
24
[autres : instructions]
25
si abrviation = "M"
alors afficher( "Monsieur" )
sinon si abrviation = "Mme"
alors afficher("Madame")
sinon si abrviation = "Mlle"
alors afficher( "Mademoiselle" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi
Algorithmique 1 : Instructions de base
26
fsi
variables
dbut
{initialisation du traitement}
totalValeurs 0
{cumul}
27
Affichage :
Algorithmique 1 : Instructions de base
28
La boucle pour
pour <var> valInit valfin [par <pas>] faire
{suite dinstructions}
traitement
fpour
Fonction:
rpter une suite dinstructions un certain nombre de fois
29
<valeur
finale>
traitement
type entier ou
rel,
le mme pour
ces 4
informations
30
Attention :
- le traitement ne doit pas modifier la variable de boucle
pour cpt 1 MAX faire
si () alors cpt MAX
fpour
Interdit !
31
32
Affichage :
Algorithmique 1 : Instructions de base
33
Fonction:
- rpter une suite dinstructions tant quune condition est
remplie
remarque : si la condition est fausse ds le dpart, le
traitement nest jamais excut
Algorithmique 1 : Instructions de base
34
saisir(val)
tant que val STOP faire
totalValeurs totalValeurs + val
afficher("Donnez une autre valeur, " , STOP, " pour finir. " )
saisir(val)
ftq
traitement
excuter
afficher("La somme des valeurs saisies est " , totalValeurs)
affichage
rsultats
relance:
r-affectation
de la variable
de condition
Algorithmique 1 : Instructions de base
si la condition
est vrifie
35
{cumul}
...quivaut :
cpt 0
tant que cpt < nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs totalValeurs + valeur
{cumul}
cpt cpt + 1
{compte le nombre de valeurs traites}
ftq
Algorithmique 1 : Instructions de base
36
37
38
39
Affichage :
Algorithmique 1 : Instructions de base
40
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
Algorithmique 1 : Instructions de base
41
Comparaison boucles
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
Algorithmique 1 : Instructions de base
42
Comparaison boucles
rpter et tant que (suite)
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)
43
non
i
ou
Nombre
ditrations
connu ?
Traitement
excut au moins
une fois ?
n
o
n
Boucle rpter
oui
Boucle pour
Algorithmique 1 : Instructions de base
44
Remarque
fsi, ftq et fpour peuvent tre omis si le corps
se limite une seule instruction
Exemples:
si val > 0 alors afficher( fini! )
pour i 1 MAX faire afficher(i val)
Algorithmique 1 : Instructions de base
45
46
De l'nonc la boucle
afficher le carr des
valeurs saisies tant
quon ne saisit pas 0
saisir(val)
tant que val 0 faire
afficher(val val)
saisir(val)
ftq
saisir(val)
somme val
tant que somme 500 faire
saisir(val)
somme somme + val
ftq
47
somme 0
rpter
saisir(val)
somme somme + val
tant que somme 500
48
49
Version corrige
Algorithme Somme
{Cet algorithme fait la somme dune suite de nombres tant que cette somme
ne dpasse un seuil donn)
constante
(SEUIL : entier) 1000
variables
val, somme : entiers
dbut
50
51
Exemple
constantes
(STOP : entier) -1
(MAX : entier) 5
nbVal , val : entiers
variables
dbut
nbVal 0
{compte les saisies traites}
saisir(val)
{saisie de la 1re donne}
tant que val STOP et nbVal < MAX faire
nbVal nbVal + 1
Attention :
La valeur darrt nest jamais traite (et donc, jamais comptabilise)
Algorithmique 1 : Instructions de base
52
Simulation de la boucle
test 1 : 3 5 -1
test 2 : 3 5 -6 4 0 8
test 3 : 3 5 -6 4 0 1
test 4 : -1
53
54
55
56
Logique propositionnelle
Algorithmique 1 : Logique
57
Algorithmique 1 : Logique
58
Proposition :
expression qui peut prendre la valeur VRAI ou FAUX
Exemples de propositions:
2 et 2 font 4
1 et 1 font 10
il pleut
x>y
Algorithmique 1 : Logique
59
Variable propositionnelle :
- une proposition considre comme indcomposable
Connecteurs logiques:
- ngation
- implication
non,
- conjonction et,
- disjonction ou,
p q) q) (p q)
Algorithmique 1 : Logique
60
q
p
pqprp
p q p r p
Algorithmique 1 : Logique
61
Tables de vrit
Reprsentation des valeurs de vrit
associes une expression logique
Ngation
p p
Conjonction
p q pq
Disjonction
p q pq
Implication
p q pq
p et q : variables propositionnelles
Algorithmique 1 : Logique
62
Equivalences classiques
Commutativit
- pq
- pq
quivalent
quivalent
qp
qp
Associativit
- p (q r)
- p (q r)
quivalent
quivalent
(p q) r
(p q) r
Distributivit
- p (q r)
- p (q r)
quivalent
quivalent
(p q) (p r)
(p q) (p r)
Algorithmique 1 : Logique
63
p q (p q) p q p q
Algorithmique 1 : Logique
64
Formules :
quelques classes et relations
Les tautologies :
- vraies pour toute assignation de valeurs de vrit aux
variables.
p p pp
- exemple : p p
65
Formules :
quelques classes et relations (suite)
Les formules quivalentes:
- mme valeur de vrit pour toute assignation de la mme
valeur de vrit aux variables.
- exemples : p q est quivalent p q
p q est quivalent q p
p
pq p
q pq
Algorithmique 1 : Logique
66
q pq p( pq)
Algorithmique 1 : Logique
pq
67
Applications l'algorithmique
Interprter (et bien comprendre!) larrt des itrations
la sortie dune boucle.
68
69
Le Type BOOLEEN
Deux constantes boolennes :
VRAI , FAUX
Des variables de type boolens :
variables
Algorithmique 1 : Logique
70
{initialisation de la variable
de boucle boolenne }
{relance}
71
encore faux
val 0
tant que non encore faire
val val + 1
afficher(val )
encore val > 2
ftq
afficher( "fini " )
Algorithmique 1 : Logique
72
fin Volume 1
Algorithmique 1
73