340 likes | 453 Views
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
E N D
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 Joan S. Morales - Introduction à l'algo. et la programmation
L’expressionlogique • Appartient à la famille des expressions booléennes • Est soit vraie ou fausse • Permet de représenter une condition • Met en relation deux expressions relationnelles !(Age < AgeAdulte) (Age >= AgeAdulte) && (Age < AgeRetraite) (Age < AgeAdulte) || (Age >= AgeRetraite) Joan S. Morales - Introduction à l'algo. et la programmation
L’opérateur logique NON Joan S. Morales - Introduction à l'algo. et la programmation
L’opérateur logique ET Joan S. Morales - Introduction à l'algo. et la programmation
L’opérateur logique OU Joan S. Morales - Introduction à l'algo. et la programmation
Opérateurslogiques N.E.O! Joan S. Morales - Introduction à l'algo. et la programmation • 6
Exemple • Le prix normal du billet est de 10$ • Un rabais de 3$ estaccordési le client a moins de 18 ansou 65 ans et plus • Le client doitprésentersa carte d’identité. • Calculer le prix du billet. Joan S. Morales - Introduction à l'algo. et la programmation
Exemple (suite) intPrixDuBillet = 10; int Age; bool Carte; cin >> Age; cin >> Carte; if( ) { PrixDuBillet = PrixDuBillet -3; } Joan S. Morales - Introduction à l'algo. et la programmation
Exercice 1 • (12 > 8) && (14 < 12) • (12 > 8) && ! (14 < 12) • ! ((12 > 8) && (14 < 12)) • (3 <= 3) || (12 > 8) && (14 < 12) • (12 > 8) && ! (14 < 12) || (3 <= 3) • (12 > 8) && (14 < 12) || ! (3 <= 3) • (12 > 8) && ! (14 < 12) || ! (3 <= 3) • !((12 > 8) && ! (14 < 12) || ! (3 <= 3)) • !(!(12 > 8) && ! (14 < 12) || ! (3 <= 3)) • !(!(12 > 8) && ! (14 < 12) || ! (3 <= 3)) || (42 >= 0) Joan S. Morales - Introduction à l'algo. et la programmation
Exercice 2 • p || q • p && q • ! (p && q) • ! ((p || q) && q) • (p || q) && ! (p) • p || q && ! (p) • p && q || !(p && q) • p && q || !(p || q) • !(p && q) && !(p || q) • !(p || q) && !(p && q) • p || !(q) && !(p) && q Joan S. Morales - Introduction à l'algo. et la programmation
Exercice 1 - Solution • Faux • Vrai • Vrai • Vrai • Vrai • Faux • Vrai • Faux • Vrai • Vrai Joan S. Morales - Introduction à l'algo. et la programmation
Exercice 2 - Solution • 1,2,3 • 1 • 2,3,4 • 2,4 • 3 • 1,2,3 • 1,2,3,4 • 1,4 • 4 • 4 • 1,2 Joan S. Morales - Introduction à l'algo. et la programmation
Les erreurs de logique • La Tautologie: expression logique qui est toujours vraie! Age > 18 || Age < 65 • La contradiction: expression logique qui est toujours fausse Age < 18 && Age > 65 Joan S. Morales - Introduction à l'algo. et la programmation
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
La répétitive Contexte Vous devez afficher à l’écran les nombres entiers de 1 à 5 inclusivement Solution 1 - Représentation linéaire cout << "1"; cout << "2"; cout << "3"; cout << "4"; cout << "5"; Et si on veut compter jusqu’à 50?? Joan S. Morales - Introduction à l'algo. et la programmation • 15
La répétitive (suite) Solution 2 - Représentation de transition Compteur = 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; Joan S. Morales - Introduction à l'algo. et la programmation • 16
La répétitive (suite) Solution 3 - Représentation itérative Les instructions qui se répètent sont cout << Compteur; Compteur = Compteur + 1 Voici la structure répétitive constint Max = 50; int Compteur = 1; while(Compteur <= Max) { cout << Compteur; Compteur = Compteur + 1; } Notezl’absence de ; Joan S. Morales - Introduction à l'algo. et la programmation • 17
Les composantsd’unerépétitiveclassique constint Max = 50; int Compteur = 1; while(Compteur <= Max) { cout << Compteur; Compteur = Compteur + 1; } Initialisation de la variable de contrôle Condition de poursuite Traitement Modification de la variable de contrôle Joan S. Morales - Introduction à l'algo. et la programmation • 18
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 Joan S. Morales - Introduction à l'algo. et la programmation • 19
Morphogramme de la répétitive Joan S. Morales - Introduction à l'algo. et la programmation • 20
Boucle à compteur constint Min = 20; constint Max = 30; int Compteur = Min; while(Compteur <= Max) { cout << Compteur; Compteur = Compteur + 1; } Boucle conditionnelle constint Fin = 0; int Nombre; cin >> Nombre; while (Nombre != Fin) { cout << Nombre << endl; cin >> Nombre; } Joan S. Morales - Introduction à l'algo. et la programmation • 21
PréparationExercice 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
PréparationExercice 3.14 (suite) Lire Nombre Premier = vrai Compteur = 2 TantqueCompteur <= Nombre -1 { Si Nombreest divisible par Compteur sans reste { Premier = faux } } Joan S. Morales - Introduction à l'algo. et la programmation
Le développementgraduel(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
Le développementgraduel(suite) Lire Nombre Ligne = 1 TantqueLigne <= Nombre Afficher_une_ligne Ligne = Ligne + 1 Afficher_une_ligne: Colonne = 1 TantqueColonne <= Ligne Afficher un “o” Colonne = Colonne +1 Changer de ligne Joan S. Morales - Introduction à l'algo. et la programmation
La variante do … while On 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 VC do { Traitement Modification de la VC } while(condition); Notez la présence du ; Joan S. Morales - Introduction à l'algo. et la programmation
Morphogramme d’un do…while Joan S. Morales - Introduction à l'algo. et la programmation
Exemple d’un do…while en C++ • Le menu const int Quitter = 0; intChoix; do { cout << ″Menu...″ << endl; cin >> Choix; } while (Choix!=Quitter); Joan S. Morales - Introduction à l'algo. et la programmation
La variante for for (initialisation de la VC ; condition ; modification de la VC) { // Traitement } Joan S. Morales - Introduction à l'algo. et la programmation
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
Autre exemple d’un for… Vieillefaçon de faire un cout << ... Joan S. Morales - Introduction à l'algo. et la programmation
Opérateurs arithmétiques d’affectation Opérateurs d’incrémentation C++ Joan S. Morales - Introduction à l'algo. et la programmation
Exemple d’utilisation en C++ constint Min = 20; constint 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
Tous (presque) les opérateurs et leurs priorités Joan S. Morales - Introduction à l'algo. et la programmation