3. expressions logiques et répétitives

34
Joan S. Morales - Introduction à l'algo. et la programmation 1 3. Expressions logiques et répétitives Les expressions logiques La répétitive La variante do..while La variante for Opérateurs d’incrémentation

Upload: chul

Post on 07-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

3. Expressions logiques et répétitives. Les expressions logiques La répétitive La variante do.. while La variante for Opérateurs d’incrémentation. L’expression logique. Appartient à la famille des expressions booléennes Est soit vraie ou fausse Permet de représenter une condition - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 1

3. Expressions logiques et répétitives

– Les expressions logiques– La répétitive

– La variante do..while– La variante for

– Opérateurs d’incrémentation

Page 2: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 2

L’expression logiqueAppartient à la famille des expressions

booléennesEst soit vraie ou faussePermet de représenter une condition Met en relation deux expressions

relationnelles

!(Age < AgeAdulte)(Age >= AgeAdulte) && (Age < AgeRetraite)(Age < AgeAdulte) || (Age >= AgeRetraite)

Page 3: 3. Expressions logiques et répétitives

L’opérateur logique NON

p ! p

Vrai Faux

Faux Vrai

Joan S. Morales - Introduction à l'algo. et la programmation 3

Page 4: 3. Expressions logiques et répétitives

L’opérateur logique ET

p q p && q

Vrai Vrai Vrai

Vrai Faux Faux

Faux Vrai Faux

Faux Faux Faux

Joan S. Morales - Introduction à l'algo. et la programmation 4

Page 5: 3. Expressions logiques et répétitives

L’opérateur logique OU

p q p || q

Vrai Vrai Vrai

Vrai Faux Vrai

Faux Vrai Vrai

Faux Faux Faux

Joan S. Morales - Introduction à l'algo. et la programmation 5

Page 6: 3. Expressions logiques et répétitives

Priorité

OpérateurAssociativi

téOpérat

eurPseudocode

C++

1 NON ! Unaire

2 ET && Binaire

3 OU || Binaire

Joan S. Morales - Introduction à l'algo. et la programmation 6

Opérateurs logiques

6

N.E.O!

Page 7: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation

ExempleLe prix normal du billet est de 10$Un rabais de 3$ est accordé si le client a

moins de 18 ans ou 65 ans et plusLe client doit présenter sa carte d’identité.Calculer le prix du billet.

7

Page 8: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation

Exemple (suite)int PrixDuBillet = 10;int Age;bool Carte;cin >> Age;cin >> Carte;if( ){ PrixDuBillet = PrixDuBillet -3;}

8

Page 9: 3. Expressions logiques et répétitives

Exercice 1a) (12 > 8) && (14 < 12)b) (12 > 8) && ! (14 < 12)c) ! ((12 > 8) && (14 < 12))d) (3 <= 3) || (12 > 8) && (14 < 12) e) (12 > 8) && ! (14 < 12) || (3 <= 3)f) (12 > 8) && (14 < 12) || ! (3 <= 3)g) (12 > 8) && ! (14 < 12) || ! (3 <= 3)h) !((12 > 8) && ! (14 < 12) || ! (3 <= 3))i) !(!(12 > 8) && ! (14 < 12) || ! (3 <= 3))j) !(!(12 > 8) && ! (14 < 12) || ! (3 <= 3)) || (42 >= 0)

Joan S. Morales - Introduction à l'algo. et la programmation 9

Page 10: 3. Expressions logiques et répétitives

Exercice 2a) p || qb) p && qc) ! (p && q)d) ! ((p || q) && q)e) (p || q) && ! (p)f) p || q && ! (p)g) p && q || !(p && q)h) p && q || !(p || q)i) !(p && q) && !(p || q)j) !(p || q) && !(p && q)k) p || !(q) && !(p) && q

Joan S. Morales - Introduction à l'algo. et la programmation 10

p qvrai

vrai

vrai

faux

faux

vrai

faux

faux

Page 11: 3. Expressions logiques et répétitives

Exercice 1 - Solution

a) Fauxb) Vraic) Vraid) Vraie) Vrai

f) Fauxg) Vraih) Fauxi) Vraij) Vrai

Joan S. Morales - Introduction à l'algo. et la programmation 11

Page 12: 3. Expressions logiques et répétitives

Exercice 2 - Solution

a) 1,2,3b) 1c) 2,3,4d) 2,4e) 3f) 1,2,3

g) 1,2,3,4h) 1,4i) 4j) 4k) 1,2

Joan S. Morales - Introduction à l'algo. et la programmation 12

Page 13: 3. Expressions logiques et répétitives

Les erreurs de logiqueLa Tautologie: expression

logique qui est toujours vraie!Age > 18 || Age < 65

La contradiction: expression logique qui est toujours fausseAge < 18 && Age > 65

Joan S. Morales - Introduction à l'algo. et la programmation 13

Page 14: 3. Expressions logiques et répétitives

Les lois de De Morgan

! (p && q) = ! p || ! q–NON(il fait beau ET il fait chaud) =

il ne fait pas beau OU il ne fait pas chaud

! (p || q) = ! p && ! q–NON(il pleut OU il neige) =

il ne pleut pas ET il ne neige pas

Joan S. Morales - Introduction à l'algo. et la programmation 14

Page 15: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 15

La répétitiveContexte

– Vous devez afficher à l’écran les nombres entiers de 1 à 5 inclusivement

Solution 1 - Représentation linéairecout << "1";cout << "2";cout << "3";cout << "4";cout << "5";

Et si on veut compter jusqu’à 50??15

Page 16: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 16

La répétitive (suite)Solution 2 - Représentation de transitionCompteur = 1;cout << Compteur; // Permet d'écrire 1

Compteur = Compteur + 1;cout << Compteur; // Permet d'écrire 2

Compteur = Compteur + 1;cout << Compteur; // Permet d'écrire 3

Compteur = Compteur + 1;...cout << Compteur; // Permet d'écrire 50

Compteur = Compteur + 1;

16

Page 17: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 17

La répétitive (suite)Solution 3 - Représentation itérativeLes instructions qui se répètent sont

cout << Compteur;Compteur = Compteur + 1

Voici la structure répétitiveconst int Max = 50;int Compteur = 1;while (Compteur <= Max){ cout << Compteur; Compteur = Compteur + 1;} 17

Notez l’absence de ;

Page 18: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 18

Les composants d’une répétitive classique

 const int Max = 50;int Compteur = 1;while (Compteur <= Max){ cout << Compteur; Compteur = Compteur + 1;}

18

Initialisation de la variable de

contrôleCondition de

poursuite

Modification de la variable de

contrôle

Traitement

Page 19: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 19

Remarques  Il faut correctement initialiser la variable de

contrôle Vérifiez la condition de poursuite Le traitement ne devrait pas modifier la valeur de

la variable de contrôle Il ne faut pas oublier de modifier la variable de

contrôle après le traitement Attention aux boucles infinies!! Les opérations de cette forme de répétitives ne

seront pas exécutées si la condition est fausse au départ

19

Page 20: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 20

Morphogramme de la répétitive

20

Condition

V

Initialisation de la variable de contrôle

Modification de la variable de contrôle

Traitement

F

Page 21: 3. Expressions logiques et répétitives

Joan S. Morales - Introduction à l'algo. et la programmation 21

Boucle à compteurconst int Min = 20;const int Max = 30;int Compteur = Min;while (Compteur <= Max){ cout << Compteur; Compteur = Compteur + 1;}

Boucle conditionnelleconst int Fin = 0;int Nombre;cin >> Nombre;while (Nombre != Fin){ cout << Nombre << endl; cin >> Nombre;}

21

Page 22: 3. Expressions logiques et répétitives

Préparation Exercice 3.14

Écrire un programme qui demande à l’utilisateur un nombre entier entre 1 et 100 et qui trouve si ce nombre est premier ou non. Les nombres premiers inférieurs à 100 sont 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 et 97.

Joan S. Morales - Introduction à l'algo. et la programmation 22

Page 23: 3. Expressions logiques et répétitives

Préparation Exercice 3.14 (suite)

Lire NombrePremier = vraiCompteur = 2Tant que Compteur <= Nombre -1{ Si Nombre est divisible par Compteur sans reste

{ Premier = faux

}}

Joan S. Morales - Introduction à l'algo. et la programmation 23

Page 24: 3. Expressions logiques et répétitives

Le développement graduel(Exercice 3.15)Écrire un programme qui demande un

nombre entre 1 et 40 et qui affiche un motif.  Par exemple, voici les motifs avec N=10:

ooooooooooooooooooooooooooooooooooooooooooooooooooooooo

 Joan S. Morales - Introduction à l'algo. et la

programmation 24

Page 25: 3. Expressions logiques et répétitives

Le développement graduel(suite)

Lire NombreLigne = 1Tant que Ligne <= Nombre Afficher_une_ligne

Ligne = Ligne + 1

Afficher_une_ligne:Colonne = 1Tant que Colonne <= Ligne Afficher un “o”

Colonne = Colonne +1Changer de ligne

Joan S. Morales - Introduction à l'algo. et la programmation 25

Page 26: 3. Expressions logiques et répétitives

La variante do … whileOn utilise une boucle do...while lorsqu’on désire

une répétitive dont le bloc d’instructions doit nécessairement s’exécuter au moins une fois.Initialisation de la VCdo{ Traitement Modification de la VC}while(condition);

Joan S. Morales - Introduction à l'algo. et la programmation 26

Notez la présence du ;

Page 27: 3. Expressions logiques et répétitives

Morphogramme d’un do…while

Joan S. Morales - Introduction à l'algo. et la programmation 27

Condition

V

F

Traitement

Initialisation de la VC

Modification de la VC

Page 28: 3. Expressions logiques et répétitives

Exemple d’un do…while en C++Le menu

const int Quitter = 0;int Choix;do{ cout << ″Menu...″ << endl;

cin >> Choix;}while (Choix!=Quitter);

Joan S. Morales - Introduction à l'algo. et la programmation 28

Page 29: 3. Expressions logiques et répétitives

La variante forfor (initialisation de la VC ; condition ; modification de la VC){ // Traitement}

Joan S. Morales - Introduction à l'algo. et la programmation 29

Page 30: 3. Expressions logiques et répétitives

Exemple d’un while en C++

Cpt = Min;while (Cpt <= Max){ cout << Cpt << endl; ++Cpt;}

Exemple d’un for en C++for (Cpt = Min; Cpt <= Max; ++Cpt){

cout << Cpt << endl;}

Joan S. Morales - Introduction à l'algo. et la programmation 30

Page 31: 3. Expressions logiques et répétitives

Autre exemple d’un for…

Joan S. Morales - Introduction à l'algo. et la programmation 31

Vieille façon de faire un cout

<< ...

Page 32: 3. Expressions logiques et répétitives

Opérateurs arithmétiques d’affectationOpérate

urExemple Équivalent

+= Nombre += 1 ; Nombre = Nombre + 1;-= Nombre -= 1 ; Nombre = Nombre – 1;*= Nombre *= 2 ; Nombre = Nombre * 2;/= Nombre /= 2 ; Nombre = Nombre / 2;%= Nombre %= 2 ; Nombre = Nombre % 2;

Joan S. Morales - Introduction à l'algo. et la programmation 32

Opérateur

Exemple Équivalent

++ ++Nombre ; Nombre = Nombre + 1;-- --Nombre ; Nombre = Nombre – 1;

Opérateurs d’incrémentation

C++

Page 33: 3. Expressions logiques et répétitives

Exemple d’utilisation en C++const int Min = 20;const int Max = 30;int Compteur; Compteur = Min;while (Compteur <= Max){ cout << Compteur << endl; ++Compteur; // ou Compteur += 1}

Joan S. Morales - Introduction à l'algo. et la programmation 33

Page 34: 3. Expressions logiques et répétitives

Tous (presque) les opérateurs et leurs priorités

1

(x)

x++

x--

2

+x-x!x++x

--x

3x * yx / yx % y

4x + yx - y

Joan S. Morales - Introduction à l'algo. et la programmation 34

6

x < y

x > yx <= yx >= y

7x == yx != y

8 &&

9 ||

10

x = yx += yx -= yx *= yx /= yx %= y