380 likes | 488 Views
3. Expressions logiques et répétitives. Les expressions logiques La répétitive La variante for La variante do.. while 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 for La variante do..while 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
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 faut 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 • 13
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 • 14
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 • 15
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 • 16
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 • 17
Morphogramme de la répétitive Joan S. Morales - Introduction à l'algo. et la programmation • 18
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 • 19
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
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
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
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 Pour Compteur = 2 à Nombre -1 { Si Nombreest divisible par Compteur sans reste { Premier = faux } } Joan S. Morales - Introduction à l'algo. et la programmation
PréparationExercice 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
PréparationExercice 3.15 (suite) Lire Nombre Pour Ligneallant de 1 à Nombre Afficher_une_ligne Afficher_une_ligne: Pour Colonneallant de 1 à Nombre Afficher un “o” Joan S. Morales - Introduction à l'algo. et la programmation
Exercice supp.1 : Le menu • Un menu doitafficher 3 choix à l’usager: • Afficher “Bonjour” • Afficher “Allo” • Quitter le programme • Le programme doitattendrequel’usager entre un choix. Il doitrecommencer la lecture du choixtantque le choixn’est pas valide • Le programme effectue le choix de l’usager et recommence tantquel’usager ne veut pas quitter le programme • Réalisezcetexercice avec: • des boucles while • des boucles do ... while Joan S. Morales - Introduction à l'algo. et la programmation
Exercice supp.2 : Le plus grand • Le programme doitdéterminer le plus grand nombreparmiunesérie de nombresentrés par l’usager • Les nombredoiventêtrecompris entre 0 et 100 inclusivement • Si le nombreentréest incorrect, le programme doitafficherl’erreur et redemander le nombre • Le programme arrête de demander des nombreslorsquel’usager entre le nombre 0 • Le programme doitalorsafficher le plus grand nombre • Réalisezcetexercice avec: • des boucles while • des boucles do ... while Joan S. Morales - Introduction à l'algo. et la programmation
Exercice supp.3 : La matrice • Le programme doitafficher la matrice de multiplication suivante: • Vousdevez utiliser deux boucles imbriquées • Réalisezcetexercice avec • des boucles while • des boucles for Joan S. Morales - Introduction à l'algo. et la programmation
Exercice supp.4 : Le XO • Le programme doitafficher le dessinsuivant: oxxxxx ooxxxx oooxxx ooooxx ooooox • Vousdevez utiliser des boucles pour réalisercetexercice! Joan S. Morales - Introduction à l'algo. et la programmation
Exercice supp.5 : Le sapin • Le programme doitafficher le dessinsuivant: * --- ***** ------- ********* ----------- ************* --------------- ***************** ------------------- • Vousdevez utiliser des boucles pour réalisercetexercice! Joan S. Morales - Introduction à l'algo. et la programmation