2.1 - Historique Chapitre 2 : Introduction au langage C++ Principales Améliorations : Ajout du type booléen C C++ AP4 - Programmation Orientée Objet
2.2 - Implantation de module en C++ Chapitre 2 : Introduction au langage C++ 2.2 - Implantation de module en C++ Programme simple AP4 - Programmation Orientée Objet
2.2 - Implantation de module en C++ Chapitre 2 : Introduction au langage C++ 2.2 - Implantation de module en C++ Fichier Interface Programme simple AP4 - Programmation Orientée Objet
2.2 - Implantation de module en C++ Chapitre 2 : Introduction au langage C++ 2.2 - Implantation de module en C++ Fichier Interface Programme simple Fichier d’implémentation AP4 - Programmation Orientée Objet
2.2 - Implantation de module en C++ Chapitre 2 : Introduction au langage C++ 2.2 - Implantation de module en C++ Extension : Fichier Interface .h (Header) Programme simple .c Ou .cpp Fichier d’implémentation AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : int main() { ; } AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : int main() { ; } en tête AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : int main() { ; } en tête Équivalent du begin et end en ADA AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : } int main() { ; } en tête Équivalent du begin et end en ADA Bloc d’instructions AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : } int main() { ; } en tête Équivalent du begin et end en ADA Bloc d’instructions Instruction vide AP4 - Programmation Orientée Objet
2.3 - Structure d'un programme en C++ Chapitre 2 : Introduction au langage C++ 2.3 - Structure d'un programme en C++ Une fonction principale main() Exemple n°1 : } int main() { ; } en tête Équivalent du begin et end en ADA Bloc d’instructions Instruction vide Quelques règles AP4 - Programmation Orientée Objet
2.4 - Les commentaires en C++ Chapitre 2 : Introduction au langage C++ 2.4 - Les commentaires en C++ 2 méthodes : AP4 - Programmation Orientée Objet
2.4 - Les commentaires en C++ Chapitre 2 : Introduction au langage C++ 2.4 - Les commentaires en C++ 2 méthodes : Exemple n°2 : /* Voila comment ajouter des commentaires à vos programmes */ Cette méthode permet de faire un commentaires sur plusieurs lignes AP4 - Programmation Orientée Objet
2.4 - Les commentaires en C++ Chapitre 2 : Introduction au langage C++ 2.4 - Les commentaires en C++ 2 méthodes : Exemple n°2 : Exemple n°3 : /* Voila comment ajouter des commentaires à vos programmes */ int main() // Voila comment //ajouter des commentaires à vos //programmes Cette méthode permet de faire un commentaires sur plusieurs lignes Cette méthode permet de faire un commentaires sur une seule ligne AP4 - Programmation Orientée Objet
2.5 - Les types de base en C/C++ Chapitre 2 : Introduction au langage C++ 2.5 - Les types de base en C/C++ char Caractère int Entier float Réel double Réel très précis void Type rien utilisé pour faire des procédures bool Booléen (seulement en C++) AP4 - Programmation Orientée Objet
2.6 - Les définitions de variables en C/C++ Chapitre 2 : Introduction au langage C++ 2.6 - Les définitions de variables en C/C++ Exemple n°4 : int main() { int A, B; double C; B=A; } En C, pas de déclarations possible après la première instruction AP4 - Programmation Orientée Objet
2.6 - Les définitions de variables en C/C++ Chapitre 2 : Introduction au langage C++ 2.6 - Les définitions de variables en C/C++ Exemple n°4 : int main() { int A, B; double C; B=A; } En C, pas de déclarations possible après la première instruction Exemple n°5 : int main() { int A, B; B=A; double C; } En C++, tout est possible !! AP4 - Programmation Orientée Objet
2.7 - Les constantes en C/C++ Chapitre 2 : Introduction au langage C++ 2.7 - Les constantes en C/C++ Exemple n°6 : Const int A=2; AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.1 - Opérateurs Arythmétique A+B Addition A–B Soustraction A*B Produit A/B Division A%B Modulo -A Opérateur Unaire AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.1 - Opérateurs Arythmétique Exemple n°7 : int main() { int A, B; double C; C = A + B; A = C + 1; char D = 'b'; D = D + 1; } Possible : A + B int C double Et double > int AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.1 - Opérateurs Arythmétique Exemple n°7 : int main() { int A, B; double C; C = A + B; A = C + 1; char D = 'b'; D = D + 1; } Possible : C sera tronqué Mieux vaut écrire ça : A = (int)C+ 1; AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.1 - Opérateurs Arythmétique Exemple n°7 : int main() { int A, B; double C; C = A + B; A = C + 1; char D = 'b'; D = D + 1; } Possible : Code ASCII de 'b' = 98 Donc 98 + 1 = 99 99 soit 'c' Donc D = 99 AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.2 - Opérateurs relationnel == Égal != différent Exemple n°8 : if ( A == B ) { A++; C = A; } A=(B==2)*4 À évité : Si B est égale à 2 alors (B==2) vaudra 1 et donc A vaudra 1*4=4 AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.3 - Opérateurs logique && ET logique || OU logique ! NON logique Exemple n°9 : if (A < 1 && B > 3) { instructions; } AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.4 - Affectation Ordinaire Exemple n°10 : A = B + 3; B + C = A; INTERDIT!!! AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.5 - Incrémentation et Décrémentation i = i + 1; i++; ou ++i; i = i – 1; i--; ou --i; Exemple n°11 : Incrémentation avant affectation int i = 3; int n; n = ++i – 3; // n vaut 1, i vaut 4 n = i++ - 3; // n vaut 0, i vaut 4 Incrémentation après affectation AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.6 - Affectation élargie i = i + 2; i += 2; A = 3 * A; A *= 3; B = B / 3; B /= 3; C = C - 2; C -= 2; Exemple n°12 : AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.7 - Opérateurs de décalages et logique bit à bit A = A << 1; A *= 2; A = A >> 1; A /= 2; ~ Complément à 1 & ET logique | OU logique ^ OU Exclusif logique AP4 - Programmation Orientée Objet
2.8 - Les opérateurs et expression en C/C++ Chapitre 2 : Introduction au langage C++ 2.8 - Les opérateurs et expression en C/C++ 2.8.8 - Priorités des opérateurs Catégorie d'opérateurs Opérateurs Assoc fonction, tableau, membre de structure, pointeur sur un membre de structure () [] . -> G=>D opérateurs unaires - ++ -- ! ~ * & sizeof (type) D=>G multiplication, division, modulo * / % addition, soustraction + - opérateurs binaires de décalage << >> opérateurs relationnels < <= > >= opérateurs de comparaison == != et binaire & ou exclusif binaire ^ ou binaire | et logique && ou logique || opérateur conditionnel ?: opérateurs d'affectation = += -= *= /= %= &= ^= |= <<= >>= opérateur virgule , AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.1 - Notion de Bloc Un bloc est une suite d'instructions qui est délimité par { et } Exemple n°13 : { int X=1; X *= 2; } cout << X; AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.1 - Notion de Bloc Un bloc est une suite d'instructions qui est délimitée par { et } Exemple n°14 : { int X=1; X *= 2; } cout << X; Bloc "Père" AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.1 - Notion de Bloc Un bloc est une suite d'instructions qui est délimité par { et } Exemple n°14 : { int X=1; X *= 2; } cout << X; Bloc "Fils" AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.2 - L'instruction if Structure générale : Exemple n°13 : if (Condition) { instructions; } else if (C==0) { cout << "perdu" << endl; C = 1; } else cout << "gagné << endl; Les {} ne sont pas obligatoire si il n'y a qu'une seule instructions dans le bloc AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.2 - L'instruction if Structure générale : Exemple n°13 : if (Condition) { instructions; } else if (C==0) { cout << "perdu" << endl; C = 1; } else cout << "gagné << endl; Exemple n°14 : if (C==0) i++; Le bloc else n'est pas obligatoire si il ne contient pas d'instructions. AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.2 - L'instruction if Exemple n°15 : if (i==0) if (A>10) { instructions; } else AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.3 - L'instruction switch Exemple n°16 : int i = 2; switch (i) { case 0 : instructions; break; case 1 : instructions; case 2 : instructions; default : instructions; } Toujour en char ou int AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.3 - L'instruction switch Exemple n°16 : int i = 2; switch (i) { case 0 : instructions; break; case 1 : instructions; case 2 : instructions; default : instructions; } On termine toujours par break si on ne souhaite pas que les instructions des autres case soit executer . AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.3 - L'instruction switch Exemple n°16 : int i = 2; switch (i) { case 0 : instructions; break; case 1 : instructions; case 2 : instructions; default : instructions; } Le default n'est pas obligatoire La valeur de i n'est évaluer qu'une seule fois AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.4 - L'instruction do...while Exemple n°17 : p = i = 1; do { p = p * i; i++; } while (i != 10); La répétitive est exécutée au moins une fois AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.5 - L'instruction while Exemple n°18 : p = i = 1; while (i != 10) { p *= i; i++; } Pas d'obligation d'exécution AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.6 - L'instruction for Exemple n°18 : { int i, Somme = 0; for ( i = 1; i <= 10 ; i++ ) Somme += i; } A = 0; Partie d'initialisation AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.6 - L'instruction for Exemple n°18 : { int i, Somme = 0; for ( i = 1; i <= 10 ; i++ ) Somme += i; } A = 0; Partie d'initialisation Condition de continuité AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.6 - L'instruction for Exemple n°18 : { int i, Somme = 0; for ( i = 1; i <= 10 ; i++ ) Somme += i; } A = 0; Partie d'initialisation Partie Incrémentation Condition de continuité AP4 - Programmation Orientée Objet
2.9 - Les instructions de contrôle Chapitre 2 : Introduction au langage C++ 2.9 - Les instructions de contrôle 2.9.6 - L'instruction for Exemple n°18 : { int i, Somme = 0; for ( i = 1; i <= 10 ; i++ ) Somme += i; } A = 0; 1 2 4 3 1 2 3 2 4 3 2 4 AP4 - Programmation Orientée Objet
2.10 - Les fonctions 2.10.1 - Les Déclarations Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.1 - Les Déclarations Exemple n°19 : float F1 (int, char, int, float); main () { A = F1(3,'c',2,3.14); void F2(); } Peut s'écrire : void F2(void); Mais pas void F2; AP4 - Programmation Orientée Objet
2.10 - Les fonctions 2.10.2 - Les Définitions Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.2 - Les Définitions Exemple n°20 : float F1 (int, char, int, float); { instructions; return A; } int Max (int A, int B, int C) int M = (A > B)? A : B; return (M > C)? M : C; Équivalent à : if (A > B) M = A; else M = B; AP4 - Programmation Orientée Objet
2.10 - Les fonctions 2.10.3 - Appel d'une fonction Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.3 - Appel d'une fonction Une Fonction peut être appelée que si sa déclaration est accessible AP4 - Programmation Orientée Objet
2.10.4 - Les variables locales et les variables globales Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.4 - Les variables locales et les variables globales Exemple n°21 : void F(); int A = 0; main() { int B = 0; float A; F(); char C; instructions; } A++; int C; Variable Globale AP4 - Programmation Orientée Objet
2.10.4 - Les variables locales et les variables globales Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.4 - Les variables locales et les variables globales Exemple n°21 : void F(); int A = 0; main() { int B = 0; float A; F(); char C; instructions; } A++; int C; Variable Globale Variables locales à main() AP4 - Programmation Orientée Objet
2.10.4 - Les variables locales et les variables globales Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.4 - Les variables locales et les variables globales Exemple n°21 : void F(); int A = 0; main() { int B = 0; float A; F(); char C; instructions; } A++; int C; Variable Globale Variables locales à main() Variables locales à ce bloc AP4 - Programmation Orientée Objet
2.10.4 - Les variables locales et les variables globales Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.4 - Les variables locales et les variables globales Exemple n°21 : void F(); int A = 0; main() { int B = 0; float A; F(); char C; instructions; } A++; int C; Variable Globale Variables locales à main() Variables locales à ce bloc Variables locales à F() AP4 - Programmation Orientée Objet
2.10.5 - Les variables statiques Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.5 - Les variables statiques Exemple n°22 : int A; main () { instructions; F(); } void F(void) int B = 1; static int C = 1; B++; C++; La variable C est statique dans la fonction F() AP4 - Programmation Orientée Objet
2.10.6 - Passage de paramètres 2.10.6.1 - Passage par valeurs (IN) Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.6 - Passage de paramètres 2.10.6.1 - Passage par valeurs (IN) Exemple n°23 : void Echange(int A, int B) { int C = A; A = B; B = C; } int main() int X1 = 1, X2 = 2; Echange(X1,X2); instructions; Paramètres formels Paramètres réels passés par valeur AP4 - Programmation Orientée Objet
2.10.6 - Passage de paramètres Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.6 - Passage de paramètres 2.10.6.1 - Passage par référence (seulement C++) Exemple n°24 : Equivalent au mode IN OUT void Echange2(const int &A, int &B) { int C = A; A = B; B = C; } int main() int X1 = 1, X2 = 2; Echange2(X1,X2); instructions; AP4 - Programmation Orientée Objet
2.10.6 - Passage de paramètres Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.6 - Passage de paramètres 2.10.6.2 - Passage par référence (seulement C++) Exemple n°25 : tst.cpp Exemple n°26 : lib.cpp Exemple n°27 : lib.h #include "lib.h" int F(int, int); #include "lib.h" int F(int X1, int X2) { instructions; } #include "lib.h" main() { int A=1, B=2; int C; C=F(A,B); } Ou #include "lib.h" int F(int, int=0); AP4 - Programmation Orientée Objet
2.10.6 - Passage de paramètres Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.6 - Passage de paramètres 2.10.6.3 - Passage par adresse On remet ça à plus tard AP4 - Programmation Orientée Objet
2.10 - Les fonctions 2.10.7 - la fonction inligne Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.7 - la fonction inligne Exemple n°28 : -> Récursivité impossible -> Pas instanciée donc pas de pointeur -> Le compilateur ne respecte pas forcement ce mot clé! inligne int Min(int A, int B) { return A<B?A:B; } AP4 - Programmation Orientée Objet
2.10.8 - Surcharge des fonctions Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.8 - Surcharge des fonctions Deux fonctions portant le même nom seront disctinctes : -> si elles n'ont pas le même nombre de paramètres -> si le type de paramètres est différents AP4 - Programmation Orientée Objet
2.10.9 - Types de résultats d'une fonction Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.9 - Types de résultats d'une fonction Il faut éviter de retourner une référence à une variable locale Exemple n°29 : int F() { int C; C=1; return C; } Il ne faut pas mettre &C AP4 - Programmation Orientée Objet
2.10 - Les fonctions 2.10.10 - Exemple Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.10 - Exemple Exemple n°30 : Déclaration de la variable A extern int A; void F1(); static void F2 (); void F3(); int main; { F1(); F2(); } void F1() static int X=1; int Y=1; static void F2() instructions; Déclaration de la fonction F1() Déclaration de F2() mais pas instanciable à partir d'un autre fichier Déclaration de la fonction F3() Déclaration et affectation de la variable statique X Définition de la fonction F1() Définition de la fonction F2() AP4 - Programmation Orientée Objet
} } 2.10 - Les fonctions 2.10.10 - Exemple Chapitre 2 : Introduction au langage C++ 2.10 - Les fonctions 2.10.10 - Exemple Exemple n°31 : Déclaration de la variable globale A int A; static int B; int C; void F3(); static void F4; void F3() { instructions; } static void F4() Déclaration de la variable statique globale B Déclaration de la variable globale C } Définition de la fonction F3() } Définition de la fonction F4() AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.1 - Les tableaux à un indice 2.11.1.1 - Exemple d'utilisation tableau en C Exemple n°32 : #include <stdio.h> int main(void) { int i, som, nbm ; double moy ; int t[20] ; for (i=0 ; i<20 ; i++) printf ("donnez la note numéro %d : ", i+1) ; scanf ("%d", &t[i]) ; } for(i=0, som=0 ; i<20 ; i++) som += t[i] ; moy = som / 20 ; printf ("\n\n moyenne de la classe : %f\n", moy) ; for (i=0, nbm=0 ; i<20 ; i++ ) if (t[i] > moy) nbm++ ; printf ("%d élèves ont plus de cette moyenne", nbm) ; return 0 ; AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.1 - Les tableaux à un indice 2.11.1.2 - Quelques règles L'affectation globale de tableau est impossible en C : Exemple n°33 : int Tab1[10], Tab2[10]; for(int i=0;i<10;i++) Tab1[i]=1; Tab1 = Tab2; Interdit car pas géré pas le language C Un indice peut prendre la forme de n'importe quelle expression arithmétique de type entier (ou caractère, compte tenu des règles de conversion systématique). AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.1 - Les tableaux à un indice 2.11.1.2 - Quelques règles La dimension d'un tableau (son nombre d'éléments) ne peut être qu'une constante ou une expression constante. Aucun contrôle de "débordement d'indice" n'est mis en place par la plupart des compilateurs. AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.2 - Les tableaux à plusieurs indices Exemple n°34 : Création d'un tableau de 5 lignes et 3 colonnes int tab1[5][3]; tab1[i-3][i +j]=1; Assignation de la valeur 1 à la cellule placé à la (i-4)ème ligne et la (i+j-1)ème colonne du tableau d'entiers Tab1 AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.1 - Introduction Exemple n°35 : réserve une variable nommée ad comme étant un "pointeur" sur des entiers int * ad; int n; n = 20; ad = &n; *ad = 30; cette instruction place dans la variable ad l'adresse de la variable n affecter à la lvalue *ad la valeur 30 AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.2 - Quelques exemples Exemple n°36 : Les variables ad1, ad2 et ad sont donc des pointeurs sur des entiers int * ad1, * ad2; int n = 10, p = 20; ad1 = &n; ad2 = &p; ad1 = * ad2 + 2; *ad1 +=3 ; On place dans ad1 et ad2 les adresses de n et p affecte à *ad1 la valeur de l'expression : *ad2 + 2 une déclaration telle que: int * ad réserve un emplacement pour un pointeur sur un entier. Elle ne réserve pas en plus un emplacement pour un tel entier. AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.3 - Incrémentation de pointeurs *ad++; incrémente la valeur sur laquelle pointe ad ad++; incrémente l'adresse contenue dans ad de manière qu'elle désigne l'objet suivant AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.1 - Comment simuler une transmission par adresse avec un pointeur Un nom de tableau est un pointeur constant : 9 int Tab[10]; int *Ptr; Ptr=Tab; Tab: AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.1 - Comment simuler une transmission par adresse avec un pointeur Un nom de tableau est un pointeur constant : 9 int Tab[10]; int *Ptr; Ptr=Tab; Tab: Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.3 - Notion de pointeur – les opérateurs * et & 2.11.3.1 - Comment simuler une transmission par adresse avec un pointeur Un nom de tableau est un pointeur constant : 9 int Tab[10]; int *Ptr; Ptr=Tab; Tab: Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 1ère solution : 9 int Tab[10]; for(int i=0;i<10;i++) Tab[i]=1; Tab: i AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 1ère solution : 9 int Tab[10]; for(int i=0;i<10;i++) Tab[i]=1; Tab: i AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 1ère solution : 9 int Tab[10]; for(int i=0;i<10;i++) Tab[i]=1; Tab: 1 i AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 1ère solution : 9 int Tab[10]; for(int i=0;i<10;i++) Tab[i]=1; Tab: 1 i 1 AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 1ère solution : 9 int Tab[10]; for(int i=0;i<10;i++) Tab[i]=1; Tab: 1 i 1 AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab: Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab: Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab 1 i Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab 1 i 1 Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab 1 i 1 2 Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : 9 int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; Tab 1 i 1 2 Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.1 - Cas de tableaux à un indice Rédiger un pgrm qui définit et remplit un tableau de 10 entiers avec la valeur 1 : 2ère solution : int Tab[10], *Ptr; Ptr=Tab; for(int i=0;i<10;i++,Ptr++) *Ptr=1; *Ptr=1; Tab[i]=1; *(Tab+i)=1; AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.2 - Cas de tableaux à plusieurs indices 3 int Tab[3][4]; Int *Ptr; Ptr=Tab; Tab: 2 Lignes Colonnes Tab[2][3] AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.2 - Cas de tableaux à plusieurs indices 3 int Tab[3][4]; Int *Ptr; Ptr=Tab; Tab: 2 Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.2 - Cas de tableaux à plusieurs indices 3 int Tab[3][4]; Int *Ptr; Ptr=Tab; Tab: 2 Ptr AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.4 - Utilisation des pointeurs dans les tableaux 2.11.4.2 - Cas de tableaux à plusieurs indices 3 int Tab[3][4]; Int *Ptr; Ptr=Tab; Tab: 2 Ptr (Tab+1): (Tab+2): AP4 - Programmation Orientée Objet
} 2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.5 - Tableaux transmis en argument 2.11.5.1 - Cas de tableaux à un indice a) Tableaux de taille fixe : En pile : void Remplir(int T[]) // ou void Remplir(int T[10]) // ou void Remplir(int *T) { for(int i=0;i<10;i++) T[i]=5; } int main() int Tab[10]; Remplir(Tab); } Tab main 9 AP4 - Programmation Orientée Objet
} } 2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.5 - Tableaux transmis en argument 2.11.5.1 - Cas de tableaux à un indice a) Tableaux de taille fixe : En pile : } void Remplir(int T[]) // ou void Remplir(int T[10]) // ou void Remplir(int *T) { for(int i=0;i<10;i++) T[i]=5; } int main() int Tab[10]; Remplir(Tab); T i Remplir } Tab main 9 AP4 - Programmation Orientée Objet
} 2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.5 - Tableaux transmis en argument 2.11.5.1 - Cas de tableaux à un indice b) Tableaux à nombre d'éléments variable En pile : Ajouter un 2ème paramètre : la taille du tableau N void Remplir2(int T[], int Nb) { for(int i=0;i<Nb;i++) T[i]=5; } int main() int Tab[10], N=10; Remplir2(Tab, N); } Tab main N-1 AP4 - Programmation Orientée Objet
} } 2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.5 - Tableaux transmis en argument 2.11.5.1 - Cas de tableaux à un indice b) Tableaux à nombre d'éléments variable En pile : Ajouter un 2ème paramètre : la taille du tableau N } void Remplir2(int T[], int Nb) { for(int i=0;i<Nb;i++) T[i]=5; } int main() int Tab[10], N=10; Remplir2(Tab, N); T Nb Remplir2 10 } Tab main N-1 AP4 - Programmation Orientée Objet
2.11 - Les tableaux et les pointeurs Chapitre 2 : Introduction au langage C++ 2.11 - Les tableaux et les pointeurs 2.11.5 - Tableaux transmis en argument 2.11.5.2 - Cas de tableaux à plusieurs indices Obligatoire void Toto(bool T[][15]) { T[1][4]=true; } int main() bool Tab[10][15]; Toto(Tab); AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z F } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F 2 } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F 2 } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 2 1 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
Résumé sur les passages Chapitre 2 : Introduction au langage C++ Résumé sur les passages En pile : int main() { int A=1, B=1, C=1; F(A, B, &C); } void F(int X, int &Y, int *Z) X=2; Y=2; *Z=2; } X Y Z 1 F 2 } Passage par valeur (IN) A B C main Passage par référence (IN/OUT) 1 1 2 1 2 Passage par adresse (IN/OUT) AP4 - Programmation Orientée Objet
2.12 - Allocation dynamique de mémoire Chapitre 2 : Introduction au langage C++ 2.12 - Allocation dynamique de mémoire C'est de l'allocation d'espace mémoire à l'exécution et non à la compilation En C: int main() { int N; cout << "Nb d'étudiants"; cin >> N; //Allocation mémoire d'un tableau de N entiers int *Tab, *Pi; Pi=(int *)malloc(sizeof(int)); Tab=(int *)malloc(N*sizeof(int)); if ((Pi != NULL) && (Tab != NULL)) //instructions; free(Pi); free(Tab); } AP4 - Programmation Orientée Objet
2.12 - Allocation dynamique de mémoire Chapitre 2 : Introduction au langage C++ 2.12 - Allocation dynamique de mémoire C'est de l'allocation d'espace mémoire à l'exécution et non à la compilation En C ++: int main() { int N; cout << "Nb d'étudiants"; cin >> N; //Allocation mémoire d'un tableau de N entiers int *Tab, *Pi; Pi=new int; Tab=new int[N]; if ((Pi != NULL) && (Tab != NULL)) //instructions; delete Pi; delete[] Tab; } AP4 - Programmation Orientée Objet
2.12 - Allocation dynamique de mémoire Chapitre 2 : Introduction au langage C++ 2.12 - Allocation dynamique de mémoire C'est de l'allocation d'espace mémoire à l'exécution et non à la compilation En C ++: int main() { int N; cout << "Nb d'étudiants"; cin >> N; //Allocation mémoire d'un tableau de N entiers int *Tab, *Pi; Pi=new int; Tab=new int[N]; if ((Pi != NULL) && (Tab != NULL)) //instructions; delete Pi; delete[] Tab; } Attention : Ne pas croiser les allocations/libérations dynamiques entre les instructions C et C++ AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ #define AffChaine(Ch) cout << Ref++ << "—" << Ch << endl #define AffCarac(Car) cout << Ref++ << "—" << Car << endl; int main () { char Ref='A'; char *Chaine="merci"; char Mot[]="beaucoup"; char *p=Mot; char *Tab[3]={"ZERO","UN","DEUX"}; AffChaine(Chaine); AffCarac(Chaine[23]);; AffChaine(Mot+3); AffCarac(*++p); AffCarac(++*++p); AffChaine(Tab[1]); AffChaine(Tab[2]+1); Tab[0][2]='\Ø'; AffChaine (*Tab); retour 0; } quand on rencontrera ça on remplacera jusqu'aux bout de la ligne AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ #define AffChaine(Ch) cout << Ref++ << "—" << Ch << endl #define AffCarac(Car) cout << Ref++ << "—" << Car << endl; int main () { char Ref='A'; char *Chaine="merci"; char Mot[]="beaucoup"; char *p=Mot; char *Tab[3]={"ZERO","UN","DEUX"}; AffChaine(Chaine); AffCarac(Chaine[23]);; AffChaine(Mot+3); AffCarac(*++p); AffCarac(++*++p); AffChaine(Tab[1]); AffChaine(Tab[2]+1); Tab[0][2]='\Ø'; AffChaine (*Tab); retour 0; } quand on rencontrera ça on remplacera jusqu'au bout de la ligne obligatoire car il n'y en pas à la fin du #define inutile car le ";" est déjà présent a la fin du #define 1 2 3 AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' A--merci Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' A -- merci B -- r Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' A -- merci B -- r C -- ucoup Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' 'D' A -- merci B -- r C -- ucoup D -- e Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' 'D' 'E' A -- merci B -- r C -- ucoup D -- e E -- b Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot b p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' 'D' 'E' 'F' A -- merci B -- r C -- ucoup D -- e E -- b F -- UN Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot b p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' 'D' 'E' 'F' 'G' A -- merci B -- r C -- ucoup D -- e E -- b F -- UN G -- EUX Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot b p Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.13 - Exemple Chapitre 2 : Introduction au langage C++ En Mémoire : Affichage : Ref 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' A -- merci B -- r C -- ucoup D -- e E -- b F -- UN G -- EUX H -- ZE Chaine M E R C I \Ø 1 2 b e a u c o p \Ø Mot mot+1 mot+2 mot+3 Mot b p \Ø Tab Z E R O \Ø U N \Ø D E U X \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.1 - Convention La chaine de caractère se termine par le caractère '\Ø' de code ASCII 0 Chaque caractère est stocké sur un octet AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.2 - Cas des chaines constantes p char p*; p="Toto"; while (*p) cout << *p++; T o t \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.2 - Cas des chaines constantes p char p*; p="Toto"; while (*p) cout << *p++; T o t \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.2 - Cas des chaines constantes p char p*; p="Toto"; while (*p) cout << *p++; T o t \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.2 - Cas des chaines constantes p char p*; p="Toto"; while (*p) cout << *p++; T o t \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.2 - Cas des chaines constantes p char p*; p="Toto"; while (*p) cout << *p++; T o t \Ø code ASCII = 0 AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.3 - Initialisation des Tableaux de caractères char p[20]; p="Toto"; char p[20]="Toto"; // ou char p[20]={'T','o','t','o','\Ø'}; char p[]="Toto"; 19 p AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.3 - Initialisation des Tableaux de caractères char p[20]; p="Toto"; char p[20]="Toto"; // ou char p[20]={'T','o','t','o','\Ø'}; char p[]="Toto"; 19 p p T o t \Ø 19 AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.4 - Initialiser de tableaux de pointeurs sur des chaines char *Tab[7]={"lundi","mardi",...}; Tab l u n d i \Ø m a r d i \Ø AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.1 - Représentation des chaines 2.14.1.4 - Initialiser de tableaux de pointeurs sur des chaines char *Tab[7][9]; Tab 8 l u n d i \Ø m a r 6 AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.2 - généralités sur les fonctions portant sur des chaines renvoie la longueur de la chaine #include <cstring> // en c #include <string.h> // en c++ char Ch[]="Toto"; int lg=strlen(Ch); strcat(ch1;ch2); strcat(ch1;ch2;lgmax); strcmp(ch1;ch2); strcpy(ch1;ch2); AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.2 - généralités sur les fonctions portant sur des chaines renvoie la longueur de la chaine opère la concaténation de la ch2 dans la ch1 #include <cstring> // en c #include <string.h> // en c++ char Ch[]="Toto"; int lg=strlen(Ch); strcat(ch1;ch2); strcat(ch1;ch2;lgmax); strcmp(ch1;ch2); strcpy(ch1;ch2); AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.2 - généralités sur les fonctions portant sur des chaines renvoie la longueur de la chaine opère la concaténation de la ch2 dans la ch1 #include <cstring> // en c #include <string.h> // en c++ char Ch[]="Toto"; int lg=strlen(Ch); strcat(ch1;ch2); strcat(ch1;ch2;lgmax); strcmp(ch1;ch2); strcpy(ch1;ch2); compare lexicographique ch1 et ch2 et retourne : 0 si ch1 et ch2 identiques <0 si ch1 < ch2 >0 si ch1 > ch2 AP4 - Programmation Orientée Objet
2.14 - Les chaînes de caractères Chapitre 2 : Introduction au langage C++ 2.14 - Les chaînes de caractères 2.14.2 - généralités sur les fonctions portant sur des chaines renvoie la longueur de la chaine opère la concaténation de la ch2 dans la ch1 #include <cstring> // en c #include <string.h> // en c++ char Ch[]="Toto"; int lg=strlen(Ch); strcat(ch1;ch2); strcat(ch1;ch2;lgmax); strcmp(ch1;ch2); strcpy(ch1;ch2); compare lexicographique ch1 et ch2 et retourne : 0 si ch1 et ch2 identiques <0 si ch1 < ch2 >0 si ch1 > ch2 copie la ch2 dans la ch1 AP4 - Programmation Orientée Objet
2.15 - Les Entrées/Sorties 2.15.1 - En C++ Chapitre 2 : Introduction au langage C++ 2.15 - Les Entrées/Sorties 2.15.1 - En C++ cout << "qu'elle heure est-il?"; cin >> Heure; int main() { int A=12; float B=123.4567; cout << setw(5) << A; } Opérateur dans iostream AP4 - Programmation Orientée Objet
2.15 - Les Entrées/Sorties 2.15.1 - En C++ Chapitre 2 : Introduction au langage C++ 2.15 - Les Entrées/Sorties 2.15.1 - En C++ cout << "qu'elle heure est-il?"; cin >> Heure; int main() { int A=12; float B=123.4567; cout << setw(5) << A; } Opérateur dans iostream setw() définie l'espace d'affichage setprecision() précision après la virgule AP4 - Programmation Orientée Objet
2.15 - Les Entrées/Sorties 2.15.2 - En C Chapitre 2 : Introduction au langage C++ 2.15 - Les Entrées/Sorties 2.15.2 - En C int main() { int A; float B; char C; char D[10]; printf("bonjour, %d, %f toto %c %s\n",A,B,C,D); scanf("%d %f %c %s", &A, &B, &C, D); } spécification de format ici entier réel caractère chaine de caractère AP4 - Programmation Orientée Objet
2.16.1.1 - Ouverture / Fermeture Chapitre 2 : Introduction au langage C++ 2.16 - Les fichiers 2.16.1 - Les fichiers en C 2.16.1.1 - Ouverture / Fermeture FILE *file; File=fopen("NomPhysique",Mode); fclose(File);//File == NomLogique Ne pas oublier d'inclure : cstdio en C++ ou stdio.h en C Modes Disponibles "a" appened ouverture d'un fichier existant pour ajouter à la suite. si le fichier n'existe pas il sera créé "r" read only "r+" ouverture en lecture/écriture d'un fichier existant "w" création et ouverture en write only. Si existant remplacement "w+" création et ouverture en lecture et écriture. Si existant remplacement Attention : fopen() retourne NULL si le fichier n'a pu être ouvert AP4 - Programmation Orientée Objet
2.16 - Les fichiers 2.16.1 - Les fichiers en C 2.16.1.2 - Read / Write Chapitre 2 : Introduction au langage C++ 2.16 - Les fichiers 2.16.1 - Les fichiers en C 2.16.1.2 - Read / Write int fgetc(File *Flux); int fputc(int c, File *Flux); char * fgets(char*Ch; int n, FILE * Flux); int fputs(const char * Ch, File * Flux); fscanf(File * Flux, char * Ch); fprintf(File * Flux, char * Ch); fwrite(&Client,sizeof(enregistrement),NbElement,File * Flux); fread(&Client,sizeof(enregistrement),NbElement,File * Flux); fseek(FILE * Flux , long Dplcmt, int Origine); rewind(File * Flux); ftell(File * Flux); Lien pour plus d'infos sur ces fonctions : http://www.cplusplus.com/ref/cstdio/ AP4 - Programmation Orientée Objet
2.16 - Les fichiers 2.16.1 - Les fichiers en C 2.16.1.2 - Read / Write Chapitre 2 : Introduction au langage C++ 2.16 - Les fichiers 2.16.1 - Les fichiers en C 2.16.1.2 - Read / Write int A=1; Tab[10]={1,2,3,4,5,6,7,8,9,10}; File * Fich; Fich=fopen("Essai","w"); if (Fich) { fwrite(tab,sizeof(int),7,Fich); fwrite(&A,sizeof(int),1,Fich); //fprintf(Fich,"%d",A); fclose(Fich); } fseek(Fich,Deplacement,Origine);//fonction de positionnement rewind(Fich); //reviens au début int ftell(Fich); //positionnement dans le fichier par rapport au début AP4 - Programmation Orientée Objet
2.16.1 - Quelques bases sur les fichiers en C++ Chapitre 2 : Introduction au langage C++ 2.16 - Les fichiers 2.16.1 - Quelques bases sur les fichiers en C++ AP4 - Programmation Orientée Objet
2.16.1 - Quelques bases sur les fichiers en C++ Chapitre 2 : Introduction au langage C++ 2.16 - Les fichiers 2.16.1 - Quelques bases sur les fichiers en C++ AP4 - Programmation Orientée Objet
2.17.1 - Définition et utilisations Chapitre 2 : Introduction au langage C++ 2.17 - Les Espaces de noms 2.17.1 - Définition et utilisations namespace ProjetA{ int i; int j=10; void f(){cout << "lol";}; void g(); } int main() { using namespace ProjetA; j++; } AP4 - Programmation Orientée Objet
2.18 - Direction de prétraitement Chapitre 2 : Introduction au langage C++ 2.18 - Direction de prétraitement 2.18.1 - Forme d'une directive #........... 2.18.2 - #define #define LONG 100 #define LARG (LONG-10) #define MAX(a,b) ((a)<(b)?(a):(b)) int main() { int B = 2*LARG } AP4 - Programmation Orientée Objet
2.18 - Direction de prétraitement Chapitre 2 : Introduction au langage C++ 2.18 - Direction de prétraitement 2.18.3 - #undef #undef LONG 2.18.4 - #include #include <. . . .> // Fichiers de base du langage #include ". . . ." // Fichiers autres AP4 - Programmation Orientée Objet
2.18 - Direction de prétraitement Chapitre 2 : Introduction au langage C++ 2.18 - Direction de prétraitement 2.18.3 - Compilation Conditionelle #if..... ... #endif #ifdef.... #ifndef... #if LANGUE==1 #define ERREUR"Faute" #elseif LANGUE==2 #define ERREUR"Error" #endif test.cpp Pile.cpp Pile.h "include "Pile.h" int main() { F(); } #include "Pile.h" void F() { cout << "Salut"; } #ifndef PILE_H #define PILE_H void F(); #endif AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.1 - Déclaration 2.19.2 - Accès aux membres Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.1 - Déclaration struct Client { char Nom[25]; int Age; }; Indispensable!! 2.19.2 - Accès aux membres Client UnClient; Client * PtrClient; PtrClient= & UnClient; UnClient.Age=20; PClient->Age=30;//(*PClient).Age=30; UnClient PtrClient Nom Age AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.3 - Utilisation Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.3 - Utilisation struct Elt { Client Donnees; Elt *pSuivant; }; pDebut Client1 AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.3 - Utilisation Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.3 - Utilisation struct Elt { Client Donnees; Elt *pSuivant; }; pDebut Client1 Client2 AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.3 - Utilisation Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.3 - Utilisation struct Elt { Client Donnees; Elt *pSuivant; }; pDebut Client1 Client2 AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.3 - Utilisation Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.3 - Utilisation struct Elt { Client Donnees; Elt *pSuivant; }; pDebut Client1 Client2 Client3 AP4 - Programmation Orientée Objet
2.1 - Structures 2.19.3 - Utilisation Chapitre 2 : Introduction au langage C++ 2.1 - Structures 2.19.3 - Utilisation struct Elt { Client Donnees; Elt *pSuivant; }; pDebut Client1 Client2 Client3 AP4 - Programmation Orientée Objet