1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références
2 Programme C++ ● Un programme C++ se compose de – Instructions (« Statement ») ● Déclarations, expressions ● De forme libre, ils doivent seulement finir par ; ● Peuvent être groupés en blocs avec { } – Fonctions ● Groupent les instructions (déclarations et expressions) dans une unité nommée ● Chaque programme C++ doit contenir une fonction main – C'est cette fonction qui est exécutée par le programme – Elle doit retourner un nombre entier ● Le programme C++ plus simple int main() { return 0; }
3 Variables, objets, types... ● Objet = un secteur de la mémoire de l'ordinateur ● Valeur = le contenu actuel en mémoire occupée par l'objet (la configuration binaire) ● Type d'objet - spécifie comment la configuration binaire (valeur de l'objet) peut être manipulée ● Variable = l'association entre le nom et l'objet int i = 1; float x = 15.6; couleur c = bleu; ● La déclaration de variable = une instruction qui crée la variable i: int 1 x: float 15.6 c: couleur bleu int= 1i typ e no m initialisatio n obligatoir e optionne l – On préfère déclarer les variables juste avant leur utilisation
4... Variables, objets, types const float pi = ; ● La déclaration const de variable - crée la variable qui ne peut pas être modifiée plus tard const float pi = ; pi = 5.18;
5 Types et opérations fondamentales... ● Les types prédéfinis – Bool – valeur vrai/faux ● bool – Nombres entiers ● short int, int, long int – Nombres à point mobile ● float, double, long double – Caractères ● char ● Il peuvent avoir des valeurs spéciales: – \n (une nouvelle ligne) – \b (backspace).... enum couleur { rouge; bleu, vert; }; ● Les types définis par le programmeur – Enum = un ensemble de valeurs entières ordonné – Classes – seront expliquées en détails plus tard
6... Types et opérations fondamentales ● Opérateurs – fournis en C++ pour les types prédéfinis – Unaire ou binaire – Arithmétiques: x ++; ++ x; x --; -- x; + x; - x; x * y; x / y; x % y; x + y; x - y; – Relationnels: x y; x >= y; x == y; x != y; – Logiciels: !x; x && y; x || y – Bitwise: ~i; i & j; i ^ j; i | j; i > j; – Assignement: = ; +=; -=; *=; /=; %=; >>=; <<=; ^=; |= – Pointeurs: *p; &x; new T; new T[n]; delete p; delete [] p ● Conversion de type – Si l'opérateur binaire est appelé sur des variables de types différents, la conversion de type automatique est effectuée si possible int i = 1; float x = 15.6; float sum = x + i; Conversion de type int en float
7 Tests if ( expression ) { statement;... } if ( expression ) { statement;... } else { statement;... } if ( x < 0 ) { abs = -x; sign = -1; } if ( x < 0 ) { abs = -x; sign = -1; } else { abs = x; signe = 1; } ● Syntaxe: ● Exemple: – Il est bien de choisir le style de découpage et de l'utiliser constamment – Les { } ne sont pas nécessaires si l'expression ne dépasse pas une ligne if ( x < 0 ) abs = -x; if ( x < 0 ) abs = -x; else abs = x;
8 Boucles... while ( expression ) {... } int i = 0; sum = 0; while ( i < 10 ) { sum += i++; } int sum = 0; for ( int i = 0; i < 10; i++ ) { sum += i; } ● Syntaxe: ● Exemple: – On préfère while quand il est possible que le bloc ne soit pas exécuté – On préfère do si le bloc doit toujours être exécuté (au moins une fois) do {... } while ( expression ); for ( init-stmt; cont-expr; incr-expr ) {... } int i = 0; int sum = 0; do { sum += i++; } while ( i < 10 );
9... Boucles for ( int i = 0; i < 10; i++ ) { if ( i == j ) continue; if ( i > k ) break; // faire quelque chose } ● break – permet de termin er la boucle plus t ô t ● continue – permet de sauter une itération – Mais attention il ne faut pas en abuser
10 Pointeurs ● Pointeur = un objet qui réfère à un autre objet ● Le type du pointeur – formé par le type d'objet pointé et * – Ex. int*, float* ● La valeur du pointeur = l'adresse de l'objet pointé i: int 1 p: int* int i = 1; int* p = &i; Opérateur d'adresse ● L'accès à l'objet par son pointeur: *p = 5; Opérateur d'adressage indirect i: int 5 p: int*
11 Références ● Référence = un nom d'emprunt (un alias) pour un objet existant ● La déclaration de référence: le type d'objet plus & – Ex. int&, float& i: ir: int 1 int i = 1; int& ir = i; ● Les différences entre référence et pointeur: – Le pointeur pointe sur un objet, on peut le changer pour qu'il pointe sur un autre objet, il occupe la mémoire (comme le pointeur est aussi un objet lui- même) – La référence agit comme un autre nom de l'objet, elle ne peut pas être changé pour pointer sur un autre objet, elle n'occupe pas la mémoire int* p; int* p = 0; int& ir; int& ir = 0; On ne peut pas déclarer la référence sans l'initialiser; la référence ne peut pas être initialisée à 0