Faculté Polytechnique de Mons Programmation en Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be 2010
Variables : déclarations, initialisations Y=X2 et Z=X3 ?? Y = X * X ; Z = Y * X ; // ou Z=X*X*X …. corps du programme void main(void) // ou void main() { } int X, Y, Z; // déclaration des Variables : identificateur X = 2 ; // initialisation Variables : déclarations, Syntaxe : Type identificateur1, id2,…. ; char c1, c2, c3; int i, j, var_ent; float f, variable; Exemple: initialisations int i=9; ou int i; i=9; char c1= 'A'; ou char c1; c1= 'A';
Fichier source / Fichier exécutable Le code source doit obligatoirement fournir au compilateur le « point d’entrée » : la fonction main ()
Identificateurs Les identificateurs nomment les objets C++ (fonctions, variables ...). Le C++ distingue les minuscules des majuscules. Exemple: ab, Ab, AB sont des identificateurs valides et tous différents. Identificateurs valides : xx y1 somme_5 _position Noms Programme_1 Identificateurs invalides : 3eme commence par un chiffre x#y caractère non autorisé (#) no-commande caractère non autorisé (-) taux change caractère non autorisé (espace)
Un identificateur ne peut pas être un mot réservé du langage : asm auto bool break case catch char class const continue default delete do double else enum extern float for friend goto if inline int long mutable namespace new operator private protected public register return short signed sizeof static struct switch template this typedef union unsigned using virtual void volatile while Les mots réservés du langage C++ doivent être écrits en minuscules.
Directives du préprocesseur Affichage !! Y=X2 et Z=X3 ?? #include < iostream > using namespace std; Directives du préprocesseur accès avant la compilation void main(void) // ou void main() { int Y, Z, X; // déclaration des Variables X = 2 ; // instruction1 Y = X * X ; // instruction2 Z = Y * X ; // instruction3 } using namespace std; /* espace de nommage std pour importer les symboles de la bibliothèque standard C++ */ cout Y cout Z
Directives du préprocesseur Une directive préprocesseur est une directive de compilation (précédées par un #) Exemples d’inclusion de librairies standards: Gestion des Entrées-Sorties standard <iostream> Fonctions mathématiques <cmath> Traitement de chaînes de caractères <string> Contrôler les paramètres d'affichage <iomanip>
: 7 Les entrées /sorties : cin et cout définies dans la librairie <iostream> cout, le flux standard de sortie, habituellement associé à l'écran, Syntaxe : cout << expression << expression … ; cin, le flux standard d’entrée, habituellement associé au clavier, Syntaxe : cin >> valeur >> valeur >> valeur … ; : 7 #include <iostream> using namespace std; void main() { cout <<" Salut a vous tous" << endl; cout << " oui tous " ; } endl signifie un saut de ligne
Résultat : \t \t \t cout <<"Qu'il est agreable d'utiliser " <<"cout en\t C++,\nlorsqu'on l'utilise " <<endl << "\t\tproprement"; Résultat : Qu'il est agreable d'utiliser cout en C++, lorsqu'on l'utilise proprement \t \t \t Caractères Signification CODE ASCII (hexadécimal) \n ou endl Génère une nouvelle ligne (newline) 0x0A \t Tabulation horizontale 0x09 \v Tabulation verticale 0x0B \b Retour d’un caractère en arrière (backspace) 0x08 \r Retour chariot (return) 0x0D \f Saut de page (form feed) 0x0C .. setw(x) : la prochaine sortie sera sur une largeur de x setfill(c) : utilisera c comme caractère de remplissage.
#include < iostream > Y=X2 et Z=X3 ?? using namespace std; Y=X2 et Z=X3 ?? void main(void) // ou void main() { int Y, Z, X; // déclaration des Variables X = 2 ; Y = X * X ; Z = Y * X ; } cout << " valeur de Y = " << Y << endl; cout << " valeur de Z = " << Z; valeur de Y= 4 valeur de Z = 8 cout << " valeur de Y = " << Y << endl << " valeur de Z = " << Z; cout << " valeur de Y = " << Y << " \nvaleur de Z = " << Z;
X !! -3 #include < iostream > using namespace std; void main(void) { int Y, Z, X; // déclaration des Variables X = 2 ; Y = X * X ; Z = Y * X ; } -3 valeur de Y= 9 valeur de Z = -27 cout << " ??valeur de X = "; cin >> X; cout << " valeur de Y = " << Y << endl; cout << " valeur de Z = " << Z; valeur de Y= 4 valeur de Z = 8
cout << "Entrez n, x et C : "; #include <iostream> using namespace std; void main () { int n=2; float x= 3.4; char C= 'A' ; cout << " Entier n = "<< n << " ; Entrez un nouveau = " ; cin >> n ; cout << " Float x = "<< x << " ; Entrez un nouveau = " ; cin >> x ; cout << " Char C = "<< C << " ; Entrez un nouveau = " ; cin >> C ; cout << "\n L'entier vaut maintenant : " << n << endl; cout << " Le flottant vaut maintenant :" << x << endl; cout << " Le caractere vaut maintenant :" << C << endl ; } int n=2; float x= 3.4; char C= 'A' ; cout << "Entrez n, x et C : "; cin >> n >> x >> C; cout << C << ' ' << x << ' ' << n; Entrez n, x et C : 5 9.9 V V 9.9 5 Entier n = 2 ; Entrez un nouveau = 3 Float x = 3.4 ; Entrez un nouveau = 5.67 Char C = A ; Entrez un nouveau = y L'entier vaut maintenant : 3 Le flottant vaut maintenant :5.67 Le caractere vaut maintenant :y
Constantes : déclarations+initialisations Si X est une constante !! #include < iostream > using namespace std; void main(void) { int Y, Z, X; // déclaration des Variables Y = X * X ; Z = Y * X ; } valeur de Y= 16 valeur de Z = 64 const int X = 4 ; cout << " valeur de Y = " << Y << endl; cout << " valeur de Z = " << Z; Constantes : déclarations+initialisations Syntaxe : const Type identificateur1=Val1, identificateur2=Val2, …,…. ; const char c = 'A'; const int i=5, var_ent=8; Exemple: const int i; i= 5;
#include < iostream > TP Affichage !! #include < iostream > using namespace std; void main(void) {/* programme disque1 Ce programme calcule la circonférence et la surface d’un disque de rayon 2 */ const float PI= 3.14159; int rayon = 2; float circonference, surface; circonference = 2* PI*rayon; surface = PI * rayon *rayon ; } cout circonference cout surface
#include < iostream > using namespace std; TP : suite void main(void) { /* programme disque2 : Ce programme calcule et affiche la circonférence et la surface d’un disque de rayon 2. */ const float PI= 3.14159; int rayon = 2; float circonference, surface; circonference = 2* PI*rayon; surface = PI * rayon *rayon ; } rayon !! La circonference = 12.56636 La surface = 12.56636 cout << " La circonference = " << circonference << endl; cout << " La surface = " << surface;
#include < iostream > using namespace std; TP : suite Seulement si ( rayon >= 0 ) !! void main(void) { /* programme disque2 : Ce programme calcule et affiche la circonférence et la surface d’un disque de rayon quelconque positif. */ const float PI= 3.14159; int rayon = 2; float circonference, surface; circonference = 2* PI*rayon; surface = PI * rayon *rayon ; } cout << " ?valeur rayon = "; cin >> rayon; cout << " La circonference = " << circonference << endl; cout << " La surface = " << surface;
Les opérateurs logiques Les opérateurs de comparaison < plus petit <= plus petit ou égal > plus grand >= plus grand ou égal == égal != différent Le résultat d'une expression logique est un booléen. Il vaut true si elle est vraie et false sinon. ! Toute valeur non nulle est considérée comme vraie et la valeur nulle comme fausse. Les opérateurs logiques ! && et || ou (non exclusif) ! non
Les structures de contrôle Alternative: if-else Itérations: for, while, do-while Rupture de Contrôle: break, continue, return … Choix Multiple: switch-case programme programme oui non Condition vraie oui Condition vraie non Bloc d’instructions Bloc 1 d’instructions Bloc 2 d’instructions Suite du programme do-while Bloc d’instructions oui Condition vraie Suite du programme non Suite du programme if-else while
Les structures de contrôle Les décisions - if … else void main() { // corps du programme déclaration des Cstes et Var ; instruction1 ; instruction2 ; …. } int a, b; a = 1; oui Condition vraie non if (Condition vraie) { BLOC 1 D'INSTRUCTIONS } else BLOC 2 D'INSTRUCTIONS Bloc 1 d’instructions Bloc 2 d’instructions if (i) if (i != 0) Suite du programme
Les décisions - if … else programme if ( X== Y) { X= X+1; Y= Y+2; } else { X = X-1 ; Y = Y- 2 ; if (Condition vraie) { BLOC 1 D'INSTRUCTIONS } else BLOC 2 D'INSTRUCTIONS oui Condition vraie non Bloc 1 d’instructions Bloc 2 d’instructions if (Condition vraie) instruction A; else instruction B; if (a<b) min=a; min=b; Suite du programme Bloc 1 d’instructions oui non Suite du programme Condition vraie if (Condition vraie) { instruction 1; instruction 2; instruction 3; … instruction N; } if ( temperature > 70.0) cout << " Alarme "<<endl;
cout <<" i < 0 \n"; cout <<" Il faut un i > 0 \n"; int i = 1; if(i < 0) cout <<" i < 0 \n"; cout <<" Il faut un i > 0 \n"; cout <<" alors!! \n"; … non oui Condition vraie Bloc 1 d’instructions Il faut un i > 0 alors!! int i = 1; if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl; } cout <<" alors!! \n"; alors!!
cout <<" i < 0 \n"; int i = 1; if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl; } cout <<" alors!! \n"; non oui Condition vraie Bloc 1 d’instructions alors!! int i = -1; if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl; } cout <<" alors!! \n"; i < 0 Il faut un i > 0 alors!!
else (i>=0) { … int i = -1; if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl; } cout <<" alors!! \n"; i < 0 Il faut un i > 0 alors!! non int i = -1; if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl; } else { cout <<" alors!! \n"; oui Condition vraie Bloc 1 d’instructions Bloc 2 d’instructions i < 0 Il faut un i > 0 else (i>=0) { …
Ce programme calcule la circonférence et la surface d’un disque de rayon quelconque positif if ( rayon < 0 ) { cout << "je ne peux calculer avec un rayon négatif!\n"; } else { ….
#include < iostream > using namespace std; TP : suite Ce programme calcule et affiche la circonférence et la surface d’un disque de rayon quelconque positif. void main(void) { const float PI= 3.14159; float circonference, surface; int rayon; cout << " ?valeur rayon = "; cin >> rayon; if ( rayon < 0 ) { cout << "je ne peux calculer avec un rayon négatif!\n"; } else{ circonference = 2* PI*rayon; surface = PI * rayon *rayon ; cout << " La circonference = " << circonference << endl; cout << " La surface = " << surface;
Les itérations – for i=0 i=1 i=2 i=3 for( init ;(Condition vraie); itération) { /* liste d'instructions */ } #include <iostream> using namespace std; void main() { int i=0; cout << "i = " << i << endl; i++; } i=0 i=1 i=2 i=3 for (i = 0; i <4; i++) { cout << "i = " << i << endl; } for (i = 0; i <4; ) { cout << "i = " << i << endl; i++ ; }
setw(x) : la prochaine sortie sera sur une largeur de x #include <iomanip > 7 10 5 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 for (int i = 1; i < 8; i++) cout << setw(7) << i << setw(10) << i+1 << setw(5) << i+2 << endl;
#include < iostream > using namespace std; TP : suite ??? rayon=2.0 rayon=4.0 rayon=6.0 rayon=8.0 void main(void) { const float PI= 3.14159; float circonference, surface; float rayon; cout << " rayon\t circonference \t surface\n"; for (rayon=2.0; rayon <= 8.0; rayon+=2.0) { circonference = 2* PI*rayon; surface = PI * rayon *rayon ; cout << rayon << "\t " << circonference << "\t " << surface << endl; }
# 8 Instructions d'échappement for (i = -10; i <= 10; i++) { int i, j=1; char a; for (i = -10; i <= 10; i++){ while(j!=0) { cin >> a ; if(a=='x') break; } } Pour rompre le déroulement séquentiel d'une suite d'instructions while (Condition vraie) { ............ ; continue; break; } 8 # for (i = -10; i <= 10; i++) { if (i == 0) continue; // pour éviter la division par zéro cout << 1 / i; } return (expression); permet de sortir de la fonction qui la contient exit (expression); La fonction est interrompue. ‘expression’ : un entier indiquant le code de terminaison du processus
switch = AU CAS OU ... FAIRE ... … switch(variable de type char ou int) // au cas où la variable vaut: { case valeur1: ......; // variable=valeur1 : exécutez ce bloc d'instructions. .......; break; case valeur2:........; // variable=valeur2: exécutez ce bloc d'instructions. ........; break; . . // etc ... default: .......; /* aucune des valeurs précédentes: exécutez ce bloc ........; d'instructions, pas de "break" ici.*/ } Le bloc "default" n'est pas obligatoire. valeur1, valeur2, …. doivent être des expressions constantes. L’instruction switch correspond à une cascade d’instructions if ...else
switch : instruction commode pour les "menus" …. void main( ) { const float PI= 3.14159; float rayon = 3.5; float diametre, circonference, surface; int choix; cout << "1. Calculer la circonference\n"; cout << "2. Calculer la surface\n"; cout << "3. Calculer le diametre\n"; cout << "Votre choix?"; cin >> choix; switch (choix) { case 1 : circonference = 2*PI*rayon; break; case 2 : surface = PI*rayon*rayon; break; case 3 : diametre = 2*rayon; break; default : cout << "Mauvais choix…\n"; } char choix; switch(choix) { case '1': … float f; switch(f) { case 2: .... ! switch(i) { case 2 * j: ....
Corrigez, si nécessaire, ce programme pour ne plus avoir d’erreurs lors de la compilation. Qu’affiche-t-il à l’écran (après correction)? Si choix = 1 Si choix = 5 char choix; cout << " Case 1 : 1\n"; cout << " Case 2 : 2" <<endl; cout << "\nVOTRE CHOIX: "; cin >> choix; switch(choix) { case 1 : cout << "case 1"; case 2 : cout << "case 2"; default : cout << "\n Default "; } int choix; EXCES ' ' break;
void main(void) { float rayon = 3.5; float diametre, circonference, surface; int choix; cout << "1. Calculer la circonference\n"; cout << "2. Calculer la surface\n"; cout << "3. Calculer le diametre\n"; cout << "Votre choix?"; cin >> choix; switch (choix) { case 1 : circonference = 2*PI*rayon; break; case 2 : surface = PI*rayon*rayon; break; case 3 : diametre = 2*rayon; break; default : cout << "Mauvais choix…\n"; } /* poursuite du programme….*/
tant que, pas jusqu’à ce que! La boucle TANT QUE ... FAIRE ... Boucle pré-testée Il s'agit de l'instruction while : tant que (expression vraie) faire{ BLOC D'INSTRUCTIONS } Organigramme: (Boucles) tant que, pas jusqu’à ce que! Syntaxe: while (Condition vraie) { ............; /* bloc d'instructions */ ............; } Le test se fait d'abord, le bloc d'instructions n'est pas forcément exécuté. oui Condition vraie non Bloc 1 d’instructions Suite du programme
tant que, pas jusqu’à ce que! Exemples i=1; while(i<5) { cout<<"Interieur " <<i << endl; i++; } cout<<"Exterieur " <<i << endl; Interieur 1 Interieur 2 Interieur 3 Interieur 4 Exterieur 5 itération int j = 5; cout<<"start\n"; while(j == 0) cout<<"j = "<<j--<<endl; cout<<"end\n"; start end tant que, pas jusqu’à ce que! i=1; while(i<5); { cout<<"Interieur " <<i << endl; i++; } "tant que l'expression est vraie attendre".
(garantit l’exécution au moins une fois) do while = REPETER … tant que (garantit l’exécution au moins une fois) do { ............; /* bloc d'instructions */ ............; } while (Condition vraie); programme Bloc d’instructions oui Condition vraie non Suite du programme int j = 5; do cout<<"j = "<<j--<<endl; while(j > 0); cout <<"stop\n"; int j = 5; do { cout<<"j = "<<j <<endl; j--; } while(j > 0); cout <<"stop\n"; j = 5 j = 4 j = 3 j = 2 j = 1 stop
Les itérations for( init ;(Condition vraie); itération) { /* liste d'instructions */ } for (i = 0; i <4; i++) { cout << "i = " << i << endl; } while (Condition vraie) { ............; /* bloc d'instructions */ ............; } int i = 0; while(i < 4) { cout<<"i = "<< i <<endl; i++; } do { ............; /* bloc d'instructions */ ............; } while (Condition vraie); int i = 0; do { cout<<"i = "<< i <<endl; i++; } while(i < 4);