Académique Documents
Professionnel Documents
Culture Documents
ORSAY
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
Fort noire
De l'importance de l'algorithme
Informations parses Machine Rsultats mis en forme
Obtention de rsultats
Un algorithme, traduit dans un langage comprhensible par lordinateur (ou langage de programmation, ici le C++), donne un programme, qui peut ensuite tre excut, pour effectuer le traitement souhait.
Algorithmique 1 : Introduction 5
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 7
Un premier algorithme
Algorithme ElveAuCarr {Cet algorithme calcule le carr du nombre que lui fournit l'utilisateur} variables unNombre, sonCarr: entiers 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 9
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 val, unNombre : entiers nom, prnom : chanes de caractres
Algorithmique 1 : Instructions de base 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 (MAX : entier) 100 (DOUBLEMAX : entier) MAX 2
Algorithmique 1 : Instructions de base 14
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 (SEUIL : rel) 13.25 valA, valB : rels compteur : entier mot , tom : chanes
tableau de simulation :
valA valB compteur mot tom
valA 0.56 valB valA valA valA (10.5 + SEUIL) compteur 1 compteur compteur + 10 mot " Bonjour " tom "Au revoir ! "
17
18
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
Sil y a plus de deux choix possibles, linstruction selon permet une facilit dcriture.
Algorithmique 1 : Instructions de base 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
pour cpt 1 nbVal faire afficher("Donnez une valeur :") saisir(valeur) totalValeurs totalValeurs + valeur fpour
{dition des rsultats}
{cumul}
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
valeur dont varie la variable de boucle entre deux passages dans la boucle, 1 par dfaut (peut tre ngatif)
30
Attention :
- le traitement ne doit pas modifier la variable de boucle
pour cpt 1 MAX faire si () alors cpt MAX fpour Interdit !
31
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
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
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
...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
non
n o n
i ou
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
cest lexpression logique A (et elle seule!) qui en prenant la valeur Faux provoque larrt de la boucle.
Algorithmique 1 : Instructions de base 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
saisir des donnes tant que leur somme ne dpasse un seuil donn
Algorithmique 1 : Instructions de base 48
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 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 {traitement de la valeur saisie} saisir(val) {relance} ftq afficher(val, nbVal) {valeurs en sortie de boucle} (STOP : entier) -1 (MAX : entier) 5 nbVal , val : entiers
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
soit val STOP est faux val = STOP soit nbVal < MAX est faux nbVal MAX
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
Algorithmique 1 : Instructions de base 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,
q p
r 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
V F F V
Conjonction p q pq
V V F F V F V F V F F F
Disjonction p q pq
V V F F V F V F V V V F
Implication p q pq
V V F F V F V F V F V V
p et q : variables propositionnelles
Algorithmique 1 : Logique 62
Equivalences classiques
Commutativit
- pq - pq quivalent quivalent qp qp (p q) r (p q) r (p q) (p r) (p q) (p r)
Associativit
- p (q r) - p (q r) - p (q r) - p (q r) quivalent quivalent quivalent quivalent
Distributivit
Algorithmique 1 : Logique
63
Algorithmique 1 : Logique
64
Algorithmique 1 : Logique
66
q pq p( pq)
pq
Algorithmique 1 : Logique
67
Exemple : avec <cond> gal : val STOP et nbVal < MAX non(<cond>) gal : val = STOP ou nbVal MAX
Algorithmique 1 : Logique 68
Applications l'algorithmique (suite) Simplifier une criture par substitution d'une formule
quivalente
si (Age = "Mineur" ou (non (Age = "Mineur") et non (Fisc = "Imposable"))) alors... Equivalent : si (Age = "Mineur" ou non (Fisc = "Imposable")) alors...
Le Type BOOLEEN
Deux constantes boolennes :
VRAI , FAUX Des variables de type boolens :
variables ok, continuer : boolen ok (rep = O ou rep = o ) continuer (val > O et val < 9)
Algorithmique 1 : Logique
70
{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