Vous êtes sur la page 1sur 74

iUT

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

Pourquoi un cours d "Algo" ?


Objectif : obtenir de la machine quelle effectue un travail notre place Problme : expliquer la machine comment elle doit s'y prendre Mais... comment le lui dire ? Comment le lui apprendre ? Comment s'assurer qu'elle fait ce travail aussi bien que nous ? Mieux que nous?
Algorithmique 1 : Introduction 1

Objectif de cet enseignement


rsoudre des problmes comme une machine savoir expliciter son raisonnement savoir formaliser son raisonnement concevoir (et crire) des algorithmes :
- squence dinstructions qui dcrit comment rsoudre un problme particulier

Algorithmique 1 : Introduction

Thmes abords en Algo


Apprentissage dun langage Notions de base
- algorithmes de base pour problmes lmentaires

Structures de donnes
- des plus simples aux plus complexes

Rsolution de problmes complexes


- algorithmes astucieux et efficaces

Algorithmique 1 : Introduction

L'algorithmique, vous la pratiquez tous les jours et depuis longtemps...


Briques de LEGO suite de dessins Meuble en kit notice de montage Cafetire instructions Laine modle Farine, oeufs, chocolat, etc.... recette
Algorithmique 1 : Introduction 4

Camion de pompiers Cuisine quipe

Expresso Pull irlandais

Fort noire

De l'importance de l'algorithme
Informations parses Machine Rsultats mis en forme

Donnes structures Traitement

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

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.
Algorithmique 1 : Introduction 6

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?
Algorithmique 1 : Introduction 7

Les instructions de base

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 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

{dclarations: rservation d'espace-mmoire}

Les trois tapes dun algorithme


Prparation du traitement
- donnes ncessaires la rsolution du problme

Traitement
- rsolution pas pas, aprs dcomposition en sousproblmes si ncessaire

Edition des rsultats


- impression lcran, dans un fichier, etc.

Algorithmique 1 : Instructions de base

10

Dclarer une variable


variable <liste didentificateurs> : type

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

Saisir une donne


saisir(<liste de noms de variables>)

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

Afficher une donne, un rsultat


afficher(<liste de noms de variables, de constantes ou d expressions>)

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

Dclarer une constante


constante (<identificateur> : type) <expression>

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

Saisies et affichages : exemples


Algorithme ParExemple {Saisit un prix HT et affiche le prix TTC correspondant} constantes (TVA : rel) 20.6 (Titre : chane) "Rsultat" variables prixHT, prixTTC : rels {dclarations} dbut afficher("Donnez-moi le prix hors taxe :") saisir(prixHT) prixTTC prixHT * (1+TVA/100) {prparation du traitement}

{calcul du prix TTC}

afficher(Titre) {prsentation du rsultat} afficher(prixHT, euros H.T. devient ", prixTTC, euros T.T.C.") Fin Affichage :
Algorithmique 1 : Instructions de base 15

Affecter une valeur une variable


<identificateur> <expression> ou <constante> ou <identificateur>

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 ! "

Algorithmique 1 : Instructions de base

17

Affectation : exemples (suite)


afficher(mot) afficher(" valA = ", valA) afficher(" valB = ", valB) afficher(" compteur =", compteur ) afficher(tom) Affichage :

Algorithmique 1 : Instructions de base

18

Simulation d'un algorithme


Algorithme CaFaitQuoi? {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} valA valB valB valA {prsentation du rsultat} afficher("Maintenant , mes donnes sont : ", valA, " et ", valB) Fin Affichage :
Algorithmique 1 : Instructions de base 19

Ce quil fallait faire


Dclarer une variable supplmentaire
variables valA, valB, valTemp : entiers

Utiliser cette variable pour stocker provisoirement une des valeurs


saisir(valA, valB) valTemp valA valA valB valB valTemp

Algorithmique 1 : Instructions de base

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

Une autre criture


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 : ") saisir(val) si val < SEUIL alors val val 2 fsi fin
Algorithmique 1 : Instructions de base 23

{ saisie de la valeur entire}

{comparaison avec le seuil }

afficher("Voici la valeur finale : ", val)

Quand la condition se complique : les conditionnelles embotes


Problme : afficher "Reu avec mention" si une note est suprieure ou gale 12, "Passable" si elle est suprieure 10 et infrieure 12, et "Insuffisant" dans tous les autres cas. si note 12 alors afficher( "Reu avec mention" ) sinon si note 10 alors afficher( "Passable" ) sinon afficher( "Insuffisant" ) fsi fsi
Algorithmique 1 : Instructions de base 24

La slection sur choix multiples


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.
Algorithmique 1 : Instructions de base 25

Linstruction selon : exemple


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

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

Quand il faut rpter un traitement ...


Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal donnes qu'il saisit}

variables dbut

nbVal, cpt : entiers valeur, totalValeurs : rels

{initialisation du traitement}

afficher("Combien de valeurs voulez-vous saisir ?") saisir(nbVal)


{initialisation du total 0 avant cumul}

totalValeurs 0

{traitement qui se rpte nbVal fois}

pour cpt 1 nbVal faire afficher("Donnez une valeur :") saisir(valeur) totalValeurs totalValeurs + valeur fpour
{dition des rsultats}

{cumul}

afficher("Le total des ", nbVal, "valeurs est " , fin


Algorithmique 1 : Instructions de base 27

Simulation de la boucle pour


Donnes : 3 3 -1 10 Tableau de simulation :

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

Algorithmique 1 : Instructions de base

29

Les champs de la boucle pour


constante, variable, ou expression arithmtique

pour <variable> <valeur


initiale>

<valeur finale>

par <valeur faire


du "pas">

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)

Algorithmique 1 : Instructions de base

30

Smantique de la boucle pour


Implicitement, linstruction pour:
- initialise une variable de boucle (le compteur) - incrmente cette variable chaque 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 cpt MAX fpour Interdit !

Algorithmique 1 : Instructions de base

31

Quand le nombre d'itrations nest pas connu...


Algorithme FaitLeTotal {Cet algorithme fait la somme des donnes quil saisit, arrt la lecture de -1) constante (STOP : entier) -1 variables val, totalValeurs : entiers dbut totalValeurs 0 afficher("Donnez une valeur, " , STOP, " pour finir.") {amorage} saisir(val) tant que val STOP faire totalValeurs totalValeurs + val {traitement} afficher("Donnez une autre valeur, " , STOP, " pour finir.") saisir(val) {relance} ftq afficher("La somme des valeurs saisies est " , totalValeurs) fin
Algorithmique 1 : Instructions de base 32

Simulation de la boucle tant que


Donnes : 3 -3 10 -1 Tableau de simulation :
STOP = 1

Affichage :
Algorithmique 1 : Instructions de base 33

La boucle tant que faire


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

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

Smantique de la boucle tant que


amorage: initialisation de la variable de condition condition d'excution du traitement

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

Comparaison boucles pour et tant que


pour cpt 1 nbVal faire afficher("Donnez une valeur :") saisir(valeur) totalValeurs totalValeurs + valeur fpour

{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

Comparaison boucles pour et tant que


(suite)

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}
Algorithmique 1 : Instructions de base 37

Choisir pour... Choisir tant que...

si le nombre ditrations est connu lavance,

choisir la boucle pour


si la boucle doit s'arrter quand survient un vnement ,

choisir la boucle tant que


Algorithmique 1 : Instructions de base 38

La boucle rpter : un 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
Algorithmique 1 : Instructions de base 39

Simulation de la boucle rpter


Donnes : -2 0 4 Tableau de simulation :

Affichage :
Algorithmique 1 : Instructions de base 40

La boucle rpter ...tant que


rpter (r)affectation de la (des) variable(s) de condition traitement {suite dinstructions} 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 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)

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.
Algorithmique 1 : Instructions de base 43

Choisir pour... tant que rpter


Boucle tant que

Nombre ditrations connu ?

non

Traitement excut au moins une fois ?

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

Le problme dune boucle : il faut en sortir!


tant que A faire B rpter B tant que A
quelque chose dans la suite dinstructions B doit amener A prendre la valeur Faux.
la suite dinstructions B doit modifier au moins une variable de lexpression logique A val1 2 ; val2 3 (mauvais) exemple :
tant que val1 < 100 faire val2 val2 val1 ftq

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 et s'arrter ds que leur somme dpasse 500

Algorithmique 1 : Instructions de base

De l'nonc la boucle (suite)


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 des donnes tant que leur somme ne dpasse un seuil donn
Algorithmique 1 : Instructions de base 48

Exemple dun mauvais choix de boucle


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 somme 0 rpter afficher( "Entrez un nombre") saisir(val) somme somme + val tant que somme SEUIL afficher( "La somme atteinte est" , somme - val) fin
Algorithmique 1 : Instructions de base 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

Algorithmique 1 : Instructions de base

50

Quand utiliser la boucle tant que?

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
Exemple: saisir des valeurs, les traiter, et sarrter la saisie de la valeur darrt 1 ou aprs avoir saisi 5 donnes.

Algorithmique 1 : Instructions de base

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

Algorithmique 1 : Instructions de base

53

Interprter l'arrt des itrations


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 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. ") fsi
Algorithmique 1 : Instructions de base 54

De limportance du test de sortie de boucle ( et donc de la logique)


tant que val STOP et nbVal < MAX faire

dans la boucle : val STOP et la sortie de boucle :

nbVal < MAX est vrai

soit val STOP est faux val = STOP soit nbVal < MAX est faux nbVal MAX

que tester la sortie de boucle?


si val = STOP alors si nbVal MAX alors voir transparent prcdent. mauvais test car message dpend de la dernire valeur saisie.
55

Algorithmique 1 : Instructions de base

Conclusion: Quelques leons retenir


Le moule d'un algorithme
Algorithme AuNomEvocateur {Cet algorithme fait..............en utilisant telle et telle donne.........} constantes variables dbut {prparation du traitement : saisies,....} {traitements, si itration, la dcrire } {prsentation des rsultats: affichages,... } 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
Algorithmique 1 : Instructions de base 56

Logique propositionnelle

Algorithmique 1 : Logique

57

En quoi la logique est-elle utile au programmeur ?


La logique : une faon de formaliser notre raisonnement Il ny a pas une logique mais DES logiques La logique propositionnelle : modle mathmatique qui nous permet de raisonner sur la nature vraie ou fausse des expressions logiques

Algorithmique 1 : Logique

58

Retour sur les conditions d'itration


tant que somme SEUIL faire... tant que val STOP et nbVal < MAX faire tant que valeur < 0 ou (valeur % 2) 0 faire...

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

Elments de logique propositionnelle


Formule :
- expression logique compose de variables propositionnelles et de connecteurs logiques

Variable propositionnelle :
- une proposition considre comme indcomposable

Connecteurs logiques:
- ngation - implication
((

non,

- conjonction et, - disjonction ou,

Exemple : p et q variables propositionnelles


p q) q) (p q)
Algorithmique 1 : Logique 60

Reprsentations d'une formule


(p q) ((p r) p )
Par un arbre syntaxique :

q p

r p

En utilisant la notation prfixe (polonaise) :

pqprp

En utilisant la notation postfixe :

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

Equivalences classiques (suite)


Lois de Morgan
(p q) quivalent ( p) ( q) (p q) quivalent ( p) ( q) p q 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

Les formules contradictoires :


- fausses pour toute assignation de valeurs de vrit aux variables. p p pp - exemple : p p
Algorithmique 1 : Logique 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 q pq p q pq

Algorithmique 1 : Logique

66

Du bon usage de la logique


Vrification de l'quivalence de deux formules "tre mineur (p) ou majeur (p) non imposable (q) " quivaut "tre mineur (p) ou non imposable (q) "

q pq p( pq)

pq

Algorithmique 1 : Logique

67

Applications l'algorithmique Interprter (et bien comprendre!) larrt des itrations


la sortie dune boucle.

tant que <cond> faire


la sortie : donc si la sortie : cest a dire non(<cond>) est vrai cond = p et q non (p et q) non p ou non q

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...

Vrifier la validit d'une condition


si Valeur< 10 et Valeur >100 alors cas improbable

Ecrire la ngation dune condition


si on veut P et Q et R : rpter . tant que non P ou non Q ou non R ou
Algorithmique 1 : Logique 69

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)

Dans les conditionnelles et itratives :


tant que ok faire si continuer alors ...

Algorithmique 1 : Logique

70

Le Type BOOLEEN : exemple


Algorithme Logique constantes (MAX : entier) 5 (STOP : entier) -1 variables nbVal, val : entiers ok : boolen dbut nbVal 0 saisir (val) ok val STOP et nbVal < MAX tant que ok faire nbVal nbVal + 1 saisir(val) ok val STOP et nbVal < MAX ftq si val = STOP alors ...
Algorithmique 1 : Logique

{initialisation de la variable de boucle boolenne }

{relance}

71

Boolens : encore des exemples


variables val : entier encore : boolen dbut encore faux val 0 rpter afficher( "bonjour " ) val val 1 encore val > 0 tant que encore afficher( "fini " ) fin

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

Vous aimerez peut-être aussi