Petit résumé pour IFT1166

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Petit résumé pour IFT1166"

Transcription

1 Petit résumé pour IFT1166 C est un langage populaire (cours IFT 1810, IFT 1160). JAVA (IFT 1870, IFT 1170, IFT 1176) utilise surtout la syntaxe du C++. De plus, Java est un langage purement orienté objet. C++ (cours IFT 1166) est une extension du langage C qui est plus populaire que C. Ses nouveautés rendent plus agréable le C et permettent aussi de faire la programmation orientée objet (POO). Dans le cours IFT 1166, on présente le langage C++ et la programmation orientée objet. Il faut connaître déjà un langage de programmation (C du IFT 1810 ou IFT 1969) avant de suivre le cours IFT Par cette raison, durant les deux premières semaines du cours, on ne ré-explique pas c'est quoi une boucle, un tableau ou un sous-programme. On explique seulement la notion de pointeur (notion inexistante en JAVA)ainsi que les nouveautés du langage C++ vs C. Les autres semaines seront réservées pour les matières plus avancées en C++ ainsi que la POO avec C++. Pour ceux ou celles qui connaissent le C ou le C++ sans orienté objet : vous apprenez la programmation orientée objet durant ce cours. De toute manière, après les deux premières semaines du cours, la plupart entre vous seront capables de se débrouiller peu importe les langages de préalables. 1

2 Quelques mots sur la POO : La programmation orientée objet est un ensemble de nouveaux concepts de programmation dont l'objectif commun est de développer des "modules" réutilisables. Programmation traditionnelle : Algorithmes + Structures de données = Programmes Programmation orientée objet : Données + Méthodes agissant sur ces données = Objet Quels sont les caractéristiques d'un rectangle? - un objet comme rectangle est caractérisé par sa longueur et sa largeur Que peut-on faire avec un rectangle? - déclarer et construire un rectangle à partir de sa longueur (exemple 15) et sa largeur (exemple 12) : Rectangle r1(15, 12); // détails plus tard sur la construction d'un objet On dit que r1 est un objet de la classe Rectangle. - appliquer des méthodes appropriées sur ce rectangle :. une méthode permettant de calculer son périmètre: r1.perimetre(). une méthode permettant de calculer sa surface : r1.surface(). une méthode permettant de l'afficher : r1.afficher("r1"); (à venir : comment déclarer une classe? comment écrire les méthodes? ). Les trois nouveaux concepts de la POO : Les 3 nouveaux concepts dans la POO sont : encapsulation, héritage et polymorphisme. 2

3 Encapsulation: Ce concept propose de fusionner d'un bloc de données et d'un bloc de code en une seule unité qui s appelle une classe : class Rectangle // classe des rectangles { // les données d'un rectangle : private : int longueur, largeur; // les méthodes pour manipuler un rectangle public : // construire un rectangle à partir de sa // longueur et sa largeur Rectangle(int lo, int la) { longueur = lo; largeur = la; // calcul et retourne le périmètre d'un rectangle int perimetrerectangle() { return 2 * (longueur + largeur); etc... Dans une même capsule, on trouve les données et les méthodes agissant sur ces données :. les données donnent leur raison d'être au codage. le codage qui donne vie aux données Le concept encapsulation est romantique : main dans la main (pour les données et ses méthodes!). Les deux autres concepts seront élaborés plus tard. 3

4 Entrées/Sorties en C++ Les entrées et sorties sont gérées dans C++ à travers des objets particuliers appelés streams ou bien flots. Écriture sur la sortie standard: Écriture en C : #include <stdio.h> void main() { printf("bonjour"); Écriture en C++ : #include <iostream.h> // indispensable pour utiliser cout void main() { cout << "bonjour"; // équivalent à printf("bonjour"); du langage C - cout est un flot de sortie prédéfini associé à la sortie standard (stdout du C). - << est un opérateur dont l opérande de gauche (cout) est un flot et l opérande de droite, une expression de type quelconque. Lecture sur l entrée standard: Lecture en C : #include <stdio.h> void main() { float valeur1, valeur2, valeur3; printf ("entrez 3 valeurs : "); scanf ("%f%f%f", &valeur1, &valeur2, &valeur3); 4

5 Lecture en C++ : #include <iostream.h> void main () { float valeur1, valeur2, valeur3; cout << "entrez 3 valeurs : "; cin >> valeur1 >> valeur2 >> valeur3; cin est le flot d entrée associé à l entrée standard (équivalent à stdin du langage C). Exemple 1: /* Fichier cincout1.cpp Premier exemple entrée/sortie avec cin et cout Fichier d'inclusion : iostream.h => input/output stream header file (fichier d'en-tête des flots d'entrée et de sortie avec cin, cout de C++) #include <iostream.h> void main() { float taille1, taille2; // Afficher le message d'incitation à taper les données cout << "Entrez les deux tailles "; // Saisir les 2 données cin >> taille1 >> taille2; // Affichage des informations cout << "La taille la plus grande parmi " << taille1 << " et " << taille2 << " est : " ; if ( taille1 > taille2 ) cout << taille1; else cout << taille2; // endl désigne "end of line" qui provoque un changement de ligne cout << " metre " << endl ; 5

6 /* Exécution : Entrez les deux tailles La taille la plus grande parmi 1.75 et 1.62 est : 1.75 metre Exemple 2: #include <iostream.h> void main() { int age ; double taille, poids ; char sexe ; cout << "Entrez f ou m suivi de l'age " ; cin >> sexe >> age ; cout << "Entrez la taille et le poids " ; cin >> taille >> poids ; if ( sexe == 'f' sexe == 'F' ) cout << "sexe : feminin\n" ; else cout << "sexe : masculin\n" ; cout << "age : " << age << " an(s) " << endl ; cout << "taille : " << taille << " metre\n" ; cout << "taille ajoutee 0.3 cm : " << taille << " metre\n" ; cout << "poids : " << poids << " kgs" << endl ; /* Exécution: Entrez f ou m suivi de l'age f 23 Entrez la taille et le poids sexe : feminin age : 23 an(s) taille : 1.72 metre taille ajoutee 0.3 cm : 1.75 metre poids : 65.4 kgs Formatage de la sortie: Pour formater les sorties, on utilise des manipulateurs de sortie => ne produisent pas de sortie mais spécifient un paramètre de mise en page qui remplace le paramètre de défaut. Pour utiliser les manipulateurs, il faut inclure les fichiers <iostream.h> et <iomanip.h>. 6

7 1. Variables numériques setw (i) : i est la largeur minimale de la prochaine donnée à afficher. int var = 12; cout << setw(7) << var; cette instruction permet d inscrire 5 espaces devant la valeur 12 cout << setw(7) << -12; provoque l ajout de 4 espaces devant le nombre 12. cout.setf( ios :: mode1 ios :: mode2 ios :: mode3 ) : précise un ou des modes d affichage L affichage d un réel peut se faire en mode point flottant, ios::fixed (ex: ) ou en notation scientifique, ios::scientific (ex: E+00). On peut préciser plus d un argument en les séparant par un point virgule ou par l opérateur. setprecision (i) : nombre de chiffres significatifs pour float et double Instructions Affichage cout.setf(ios::fixed); cout << 3.14; 3.14 cout << setw(4) << setprecision(1) << ; 3.1 cout << setw(2) << setprecision(6) << ; Si on veut par exemple afficher le nombre 7 comme un réel (7.0), on utilise l expression ios :: showpoint pour afficher le point décimal cout << 7.0; 7 cout.setf(ios::showpoint); cout << 7.0;

8 2. Variables de type chaîne de caractères : cout << setw(i) << chaîne_de_caractères; Si le nombre de caractères (i) spécifié est insuffisant pour que s inscrivent tous les caractères, l opérateur << ignore ce nombre et affiche la chaîne au complet. Si le nombre i dépasse la longueur de la chaîne, la chaîne est complétée avec des blancs par la gauche. 3. Autres manipulateurs : endl : insère une fin de ligne cout << "merci" << endl; équivalente à cout << "merci" << "\n"; setfill(c): Fixe le caractère de remplissage(blanc par défaut) cout << setfill( * ) << setw(6) << 12; L'affichage sera : ****12 Exemple 3 : #include <iostream.h> #include <iomanip.h> /* pour format d'affichage const float FACTEUR = ; /* 1 pied = metre = 12 pouces void main() { int nbpieds = 5, nbpouces = 7 ; float taille = (nbpieds + nbpouces / 12.0) * FACTEUR; int nbcol, nbdec ; cout << "La taille :\n"; cout << " - en metre : " << taille << endl ; cout << " - en systeme imperial : " << nbpieds << " pied(s) et " << nbpouces << " pouce(s) " << endl ; cout << "Format d'un entier (ici nbpieds) : " << endl ; for ( nbcol = 1 ; nbcol <= 10 ; nbcol++) cout << setw(nbcol) << nbpieds << endl ; /* afficher le point de décimal cout.setf(ios::showpoint); 8

9 /* afficher la partie décimale en mode point flottant fixe cout.setf(ios :: fixed); cout << "Format d'un reel (ici taille) : " << endl ; for ( nbdec = 1 ; nbdec <= 5 ; nbdec++) cout << setw(10) << setprecision(nbdec) << taille << endl ; /* Exécution: La taille : - en metre : en systeme imperial : 5 pied(s) et 7 pouce(s) Format d'un entier (ici nbpieds) : Format d'un reel (ici taille) :

10 Pointeurs et références Adresses: En programmation, on utilise très souvent les caractéristiques suivants d'une variable : 1. son nom (identificateur) 2. son contenu (sa valeur) 3. son type (entier, réel, caractère,...) Grâce au type de la variable, le compilateur connaît le nombre d'octets (byte) pour mémoriser une telle variable. Le C et C++ disposent d'un opérateur nommé sizeof pour cet effet : sizeof(char) vaut 1, signifie qu'on utilise 1 octet pour mémoriser un caractère sizeof(float) vaut 4, signifie qu'on utilise 4 octets pour mémoriser un réel etc... Si a est une variable de type "int", sizeof(a) est équivalent à sizeof(int) : sizeof (un type) <==> sizeof(une variable du type) En C et C++, on ajoute une caractéristique de plus à une variable : son adresse (son emplacement en mémoire) déterminée par l opérateur & (adresse de). Exemple d'illustration des adresses : #include <iostream.h> void main() { int nbcafe = 3, nbpieds = 5 ; cout << "Demonstration sur les adresses :\n"; cout << "nbcafe vaut : " << nbcafe << endl; cout << "sizeof(nbcafe) = " << sizeof(nbcafe) << " octets\n"; cout << "&nbcafe = " << ((unsigned int) &nbcafe) << endl; 10

11 cout << "\n\n"; cout << "nbpieds vaut : " << nbpieds << endl; cout << "sizeof(nbpieds) = " << sizeof(nbpieds) << " octets\n"; cout << "&nbpieds = " << ((unsigned int) &nbpieds) << endl; cout << "\n\n"; cout << "L operateur * (contenu de l adresse) : " << endl; cout << "Le contenu a l adresse " << ((unsigned int) &nbcafe) << " est " << *(&nbcafe)<< endl; cout << "Le contenu a l adresse " << ((unsigned int) &nbpieds) << " est " << *(&nbpieds)<< endl; /* Exécution: Demonstration sur les adresses : nbcafe vaut : 3 sizeof(nbcafe) = 4 octets &nbcafe = nbpieds vaut : 5 sizeof(int ) = 4 octets &nbpieds = L'operateur * (contenu de l'adresse) : Le contenu a l'adresse est 3 Le contenu a l'adresse est 5 Schéma d'explication : Une case d'un octet dispose d'une adresse en mémoire. Dépendant du type de la variable le compilateur alloue un nombre de cases (4 cases pour un entier, 4 pour un float, 1 pour un caractère, etc.). Nom valeur Adresse nbpieds (adresse du début de nbpieds) nbcafe (adresse du début de nbcafe)

12 On voit aussi l'opérateur "*" dont : *(adresse) <===> le contenu (la valeur) qui se trouve à cette adresse Ainsi : *(&nbcafe) <==> le contenu à l'adresse <==> 3 (valeur de nbcafe) *(&nbpieds) <==> le contenu à l'adresse <==> 5 (valeur de nbpieds) Pointeurs: La valeur d'une variable entière est un entier : int age = 23 ; La valeur d'une variable de type réel est un réel: float poids = 62.0 ; La valeur d'un pointeur est une adresse. Exemple d'illustration des pointeurs : #include <iostream.h> void main() { double taille = 1.72, poids = 56.7 ; double * p = &poids; cout << "Demonstration sur les pointeurs :\n"; cout << "taille : " << taille << endl; cout << "sizeof(taille) = " << sizeof(taille) << " octets\n"; cout << "&taille = " << ((unsigned int) &taille) << endl; cout << "\n"; cout << "poids vaut : " << poids << endl; cout << "sizeof(double) = " << sizeof(double) << " octets\n"; cout << "&poids = " << ((unsigned int) &poids) << endl; cout << "\n"; cout << "p vaut : " << p << " qui est : " << ((unsigned int) p) << " (adresse de poids)" << endl; cout << "sizeof(p) = " << sizeof(p) << " octets\n"; cout << "&p = " << ((unsigned int) &p) << endl; cout << "*p vaut " << *p << "\n"; *p = ; cout << "Et maintenant : *p vaut " << *p << endl; cout << "poids est change aussi : poids vaut " << poids << endl; 12

13 /* Exécution : Demonstration sur les pointeurs : taille : 1.72 sizeof(taille) = 8 octets &taille = poids vaut : 56.7 sizeof(double) = 8 octets &poids = p vaut : 0x0012FF70 qui est : (adresse de poids) sizeof(p) = 4 octets &p = *p vaut 56.7 Et maintenant : *p vaut poids est change aussi : poids vaut Schéma d'illustration: double * p = &poids; ==> p est un pointeur vers le type double la valeur de P est l adresse de poids 56.7 poids p 1. p est un pointeur (il pointe vers poids qui est de type double) : p > 56.7 poids 2. valeur de p est (adresse de poids). 3. *p est de type double. Sa valeur est le contenu à l'adresse , ici c'est si *p (valeur pointée par p) change, la valeur de poids change aussi Référence: Définition : une référence est un alias à un espace mémoire. Syntaxe : Type& var =valeur; 13

14 Utilité : En général, pour éviter d avoir affaire aux pointeurs. En particulier, lors des passages de paramètres (des classes, des structures), afin d éliminer la surcharge causée par la copie de grandes quantités de données. Une fois que la référence est déclarée alias d une autre variable, toutes les opérations qu on croit effectuer sur l alias (c est à dire la référence) sont en fait exécutées sur la variable d origine. Exemple d'illustration des références : /* Fichier Reference.cpp exemple simple pour comprendre la référence #include <iostream.h> #include <iomanip.h> void main() { int age = 23 ; int & z = age ; // z est une référence de age (un alias de age) int nbcafe = 4 ; cout << "Les adresses de :\n"; cout << " age : " << setw(12) << &age << setw(15) << (unsigned int) &age << " (en entier) "<< endl; cout << " z : " << setw(12) << &z << setw(15) << ( unsigned int) &z << "\n (en entier : meme location que age) " << endl; cout << " nbcafe : " << setw(12) << &nbcafe<< setw(15) << (unsigned int) &nbcafe << " (en entier) " << endl; cout << "\nage = " << age << " et z = " << z << endl << endl; cout << "Conclusion : z et age ont meme adresse en memoire => meme valeur\n\n"; z = 99 ; cout << "\net maintenant, age = " << age << " et z = " << z << endl << endl; /* Exécution : Les adresses de : age : 0x0012FF7C (en entier) z : 0x0012FF7C (en entier) (en entier : meme location que age) 14

15 nbcafe : 0x0012FF (en entier) age = 23 et z = 23 Conclusion : z et age ont meme adresse en memoire => meme valeur Et maintenant, age = 99 et z = 99 Passage de paramètres: En C++ il y a 3 types de passages de paramètres : - par valeur ( C & C++) - par pointeur (C & C++) - par référence (C++ seulement) Cas 1 : (par valeur) Quand on utilise des résultats à l'intérieur du corps d'une fonction, on n'a que des paramètres transmis par valeur. Exemple : Écrire une fonction permettant de compter et d'afficher le nombre de diviseurs d'un entier n positif donné. Écrire 2 appels permettant d'afficher le nombre de diviseurs de 720 et 984. Solution : void compter ( int n ) { int k = 1, // n est un diviseur de lui-même i ; // boucle for for ( i = 1 ; i <= n / 2 ; i++ ) if ( n % i == 0 ) k++ ; cout << "Le nombre de diviseurs de "<< n << "est" << k << endl; Appels : compter(720); compter(984); 15

16 Cas 2 : (par pointeur) La fonction calcule et retourne des résultats à travers des paramètres transmis par pointeur. Pour modifier le paramètre réel, on passe son adresse plutôt que sa valeur. Arguments transmis par pointeur : L'en-tête : void nom (..., type_résultat * P,... ) ^ Appel : v nom (..., &variable du type_résultat,... ) ; Sur l'en-tête c'est un pointeur qui pointe vers le type du résultat calculé. A l'appel c'est une adresse de la variable qui reçoit le résultat. Exemple de simulation : #include <iostream.h> void calculer ( float a, float b, float c, float * p1, float * p2) { *p1 = (a+b+c) / 3 ; if (a > b ) *p2 = a ; else *p2 = b ; if (c > *p2) *p2 = c ; void main() { float val1, val2 ; calculer(1.72, 1.80, 1.76, &val1, &val2); cout << val1 << val2 << endl; /* Exécution : val1 = 1.76 et val2 =

17 Avec l appel : et l en-tête : calculer(1.72, 1.80, 1.76, &val1, &val2); { void calculer ( float a, float b, float c, float * p1, float * p2) On a : a b c p1 p val1 Dans calculer : *p1 = (a+b+c) / 3 ; val2 déposer (a+b+c) / 3 qui est 1.76 à la variable pointée par p1 => val1 vaut 1.76 On a : a b c p1 p val1 val2 Avec : if (c > *p2) *p2 = c ; on a 1.76 > 1.80? la réponse est fausse, on n exécute pas *p2 = c. Fin de fonction calculer, fin de l appel, les nouvelles valeurs de val1, val2 sont : 1.76 et 1.80 Exemple 2 : /* Fichier : Pointeur1.cpp Transmission par pointeur : Voir aussi : Reference1.cpp pour la version avec la transmission par référence 17

18 #include <iostream.h> #include <iomanip.h> // permuter 2 entiers : par pointeur void echanger(int * p1, int * p2) { int tempo = *p1; *p1 = *p2 ; *p2 = tempo ; // calculer : 3 valeurs : minimale, maximale et moyenne transmises par pointeur void calculer(double t[], int n, double *ptrmin, double * ptrmax, double * ptrmoy) { double somme, min, max ; min = max = somme = t[0]; for (int i = 1 ; i < n ; i++) { if ( t[i] < min) min = t[i]; if ( t[i] > max) max = t[i]; somme += t[i]; *ptrmin = min; *ptrmax = max ; *ptrmoy = somme / n ; // afficher une valeur réelle avec format... void afficher(char message[], double valeur, char * mess2) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << message << setw(7) << setprecision(2) << valeur << mess2 << endl ; void main() { int age1 = 23, age2 = 41 ; cout << "Avant l'echange : " << " age1 = " << setw(3) << age1 << " ans\n"; cout << "Avant l'echange : " << " age2 = " << setw(3) << age2 << " ans\n\n"; echanger(&age1, &age2); cout << "Apres l'echange : " << " age1 = " << setw(3) << age1 << " ans\n"; cout << "Apres l'echange : " << " age2 = " << setw(3) << age2 << " ans\n\n"; double poids[10] = { 65.2, 35.8, 100.7, 76.6, 67.3, 50.9 ; int nbpers = 6 ; double poidsmin, poidsmax, poidsmoy; // 3 r sultats calculer calculer (poids, nbpers, &poidsmin, &poidsmax, &poidsmoy); cout << endl << "Le poids : " << endl ; 18

19 cout << " - le plus leger : " << poidsmin << " kgs\n"; cout << " - le plus lourd : " << poidsmax << " kgs\n"; cout << " - moyen : " << poidsmoy << " kgs\n"; double taille[6] = { 1.75, 1.70, 1.80, 1.65, 1.85 ; nbpers = 5 ; double taillemin, taillemax, taillemoy; // 3 résultats calculer calculer (taille, nbpers, &taillemin, &taillemax, &taillemoy); cout << endl << "La taille : " << endl ; afficher(". la plus petite", taillemin, " metre "); afficher(". la plus grande", taillemax, " metre "); afficher(". moyenne ", taillemoy, " metre "); /* Exécution : Avant l'echange : age1 = 23 ans Avant l'echange : age2 = 41 ans Apres l'echange : age1 = 41 ans Apres l'echange : age2 = 23 ans Le poids : - le plus leger : 35.8 kgs - le plus lourd : kgs - moyen : kgs La taille :. la plus petite 1.65 metre. la plus grande 1.85 metre. moyenne 1.75 metre Exemple 3 : /* Fichier pointeur2.cpp Exercices : 1. ajouter une fonction avec return afin de calculer la taille moyenne. On affiche la taille moyenne. 2. ajouter une fonction de type void afin de calculer et de retourner via pointeur la taille moyenne. On affiche la taille moyenne. 3. ajouter une fonction avec return afin de compter le nombre de personnes dont la taille dépasse la taille moyenne. On affiche ce nombre. 4. ajouter une fonction de type void afin de compter le nombre de personnes : - dont la taille dépasse la taille moyenne. - dont la taille dépasse une borne et de transmettre via pointeurs ces deux compteurs 19

20 On affiche ces deux valeurs (dont la borne est 1.75 mètre) #include <iostream.h> void calculer (int a, int * p1, int * p2) { *p1 = 2 * a ; *p2 = 3 * a ; void determiner (double t[], int nbelem, double * pmax, double *pmin) { double minimum = 100.0, maximum = 0.0 ; int i ; for (i = 0 ; i < nbelem ; i++) { if ( t[i] < minimum ) minimum = t[i]; if ( t[i] > maximum ) maximum = t[i]; *pmax = maximum ; *pmin = minimum ; void afficher1( double taille[], int nbpers) { int i; cout << "Liste un des tailles :\n"; for ( i = 0 ; i < nbpers ; i++ ) cout << i << ") " << taille[i] << endl ; cout << "\n\n"; void afficher2( double * p, int nbpers) { int i; cout << "Liste deux des tailles :\n"; for ( i = 0 ; i < nbpers ; i++ ) cout << i << ") " << * (p+i) << endl ; cout << "\n\n"; void afficher3( double * p, int nbpers) { int i; cout << "Liste trois des tailles :\n"; for ( i = 0 ; i < nbpers ; i++ ) cout << i << ") " << *p++ << endl ; cout << "\n\n"; 20

21 void demoparametrepointeur() { int age = 25, ledouble, letriple; double taille[10] = { 1.72, 1.65, 1.58, 1.80, 1.62, 1.84 ; int nbpers = 6; double taillemax, taillemin; afficher1(taille, nbpers); cout << "Transmission des parametres via les pointeurs :\n"; calculer(age, &ledouble, &letriple); cout << "Le double de " << age << " est : " << ledouble << endl; cout << "Le triple de " << age << " est : " << letriple << endl; afficher2(taille, nbpers); afficher3(taille, nbpers); determiner(taille, nbpers, &taillemax, &taillemin); cout << "Taille la plus grande : " << taillemax << " metre" << endl; cout << "Taille la plus petite : " << taillemin << " metre" << endl; void main() { demoparametrepointeur(); /* Exécution: Liste un des tailles : 0) ) ) ) 1.8 4) ) 1.84 Transmission des parametres via les pointeurs : Le double de 25 est : 50 Le triple de 25 est : 75 Liste deux des tailles : 0) ) ) ) 1.8 4) )

22 Liste trois des tailles : 0) ) ) ) 1.8 4) ) 1.84 Taille la plus grande : 1.84 metre Taille la plus petite : 1.58 metre Cas 3 : (par référence) La fonction calcule et retourne des résultats à travers des paramètres transmis par référence. Le paramètre formel est un alias de l emplacement mémoire du paramètre réel. Arguments transmis par référence : L'en-tête : void nom (..., type_résultat & P,... ) ^ Appel : v nom (..., variable du type_résultat,... ) ; Exemple 1 : Sur l'en-tête c'est une référence du résultat calculé. A l'appel, on envoie le nom du résultat à calculer. /* Fichier : Référence1.cpp Transmission par référence : Voir aussi : Pointeur1.cpp pour la version avec la transmission par pointeur #include <iostream.h> #include <iomanip.h> // permuter 2 entiers : par référence void echanger(int & p1, int & p2) { int tempo = p1; p1 = p2 ; 22

23 p2 = tempo ; // calculer : 3 valeurs : minimale, maximale et moyenne transmises par référence void calculer(double t[], int n, double & min, double & max, double & moy) { min = max = somme = t[0]; for (int i = 1 ; i < n ; i++) { if ( t[i] < min) min = t[i]; if ( t[i] > max) max = t[i]; somme += t[i]; moy= somme / n ; // afficher une valeur réelle avec format... void afficher(char message[], double valeur, char * mess2) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << message << setw(7) << setprecision(2) << valeur << mess2 << endl ; void main() { int age1 = 23, age2 = 41 ; cout << "Avant l'echange : " << " age1 = " << setw(3) << age1 << " ans\n"; cout << "Avant l'echange : " << " age2 = " << setw(3) << age2 << " ans\n\n"; echanger(age1, age2); cout << "Apres l'echange : " << " age1 = " << setw(3) << age1 << " ans\n"; cout << "Apres l'echange : " << " age2 = " << setw(3) << age2 << " ans\n\n"; double poids[10] = { 65.2, 35.8, 100.7, 76.6, 67.3, 50.9 ; int nbpers = 6 ; double poidsmin, poidsmax, poidsmoy; // 3 résultats calculer calculer (poids, nbpers, poidsmin, poidsmax, poidsmoy); cout << endl << "Le poids : " << endl ; cout << " - le plus leger : " << poidsmin << " kgs\n"; cout << " - le plus lourd : " << poidsmax << " kgs\n"; cout << " - moyen : " << poidsmoy << " kgs\n"; double taille[6] = { 1.75, 1.70, 1.80, 1.65, 1.85 ; nbpers = 5 ; double taillemin, taillemax, taillemoy; // 3 r sultats calculer calculer (taille, nbpers, taillemin, taillemax, taillemoy); cout << endl << "La taille : " << endl ; afficher(". la plus petite", taillemin, " metre "); 23

24 afficher(". la plus grande", taillemax, " metre "); afficher(". moyenne ", taillemoy, " metre "); /* Exécution : Avant l'echange : age1 = 23 ans Avant l'echange : age2 = 41 ans Apres l'echange : age1 = 41 ans Apres l'echange : age2 = 23 ans Le poids : - le plus leger : 35.8 kgs - le plus lourd : kgs - moyen : kgs La taille :. la plus petite 1.65 metre. la plus grande 1.85 metre. moyenne 1.75 metre Exemple 2 : /* Fichier reference2.cpp Exercices : 1. ajouter une fonction de type void afin de calculer et de transmettre par reference la taille moyenne. On affiche la taille moyenne. 2. ajouter une fonction avec return afin de compter le nombre de personnes dont la taille depasse la taille moyenne. On affiche la taille moyenne. 3. ajouter une fonction de type void afin de compter le nombre de personnes : - dont la taille depasse la taille moyenne. - dont la taille depasse une borne et de transmettre par reference ces deux compteurs On affiche ces deux valeurs (dont la borne est 1.75 metre) #include <iostream.h> void calculer(int a, int & deuxfois, int & troisfois) { deuxfois = 2 * a ; troisfois = 3 * a ; 24

25 void determiner (double t[], int nbelem, double & minimum, double & maximum) { minimum = 100.0, maximum = 0.0 ; int i ; for (i = 0 ; i < nbelem ; i++) { if ( t[i] < minimum ) minimum = t[i]; if ( t[i] > maximum ) maximum = t[i]; void demoparametrereference() { int age = 25, ledouble, letriple; double taille[10] = { 1.72, 1.65, 1.58, 1.80, 1.62, 1.84 ; int nbpers = 6; double taillemax, taillemin; cout << "Transmission des parametres par reference :\n"; calculer(age, ledouble, letriple); cout << "Le double de " << age << " est : " << ledouble << endl; cout << "Le triple de " << age << " est : " << letriple << endl; determiner(taille, nbpers, taillemax, taillemin); cout << "Taille la plus grande : " << taillemax << " metre" << endl; cout << "Taille la plus petite : " << taillemin << " metre" << endl; void main() { demoparametrereference(); /* Exécution: Transmission des parametres par reference : Le double de 25 est : 50 Le triple de 25 est : 75 Taille la plus grande : 1.58 metre Taille la plus petite : 1.84 metre Manipulations d un tableau: #include <iostream.h> #include <iomanip.h> void afficher(int age[], int nbpers) { cout << "Affichage classique (avec indice) :\n"; for(int i = 0 ; i < nbpers ; i++) cout << setw(3) << i << setw(5) << age[i] << endl; cout << endl; 25

26 void afficher(int nbpers, int * p) { cout << "Affichage utilisant pointeur :\n"; for(int i = 0 ; i < nbpers ; i++) cout << setw(3) << i << setw(5) << *(p+i) << endl; cout << endl; void afficher(int * p, int nbpers, char message[]) { cout << "Affichage utilisant " << message << endl; for(int i = 0 ; i < nbpers ; i++) cout << setw(3) << i << setw(5) << p[i] << endl; cout << endl; void main() { int age[10] = { 45, 21, 12, 56, 32, 18, 24 ; int nbpers = 7; cout << "age = " << setw(12) << age << setw(15) << (unsigned int) age << "(en entier)" << endl ; cout << "&age[0] = " << setw(12) << &age[0] << setw(15) << (unsigned int) &age[0] << "(en entier)" << endl ; cout << "Conclusion 1 : en C, C++, le nom du tableau\n" << "(ici age) est une CONSTANTE, c'est l'adresse\n" << "du premier element indice 0 (ici &age[0])\n\n"; int * p = age ; // équivalent à : int * p = &age[0];(conclusion 1) cout << "*(p+3) vaut " << setw(5) << *(p+3) << endl; cout << "age[3] vaut " << setw(5) << age[3] << endl; cout << "p[3] vaut " << setw(5) << p[3] << endl; cout << "Conclusion 2 : en C, C++, Si p pointe vers age[0] alors:\n"; cout << " *(p+i) <==> age[i] <==> p[i]\n\n"; afficher(age, nbpers); afficher(nbpers, age); afficher(age, nbpers, "encore des pointeurs"); /* Exécution : age = 0x0012FF (en entier) &age[0] = 0x0012FF (en entier) Conclusion 1 : en C, C++, le nom du tableau (ici age) est une CONSTANTE, c'est l'adresse du premier element indice 0 (ici &age[0]) *(p+3) vaut 56 age[3] vaut 56 p[3] vaut 56 Conclusion 2 : en C, C++, Si p pointe vers age[0] alors: *(p+i) <==> age[i] <==> p[i] 26

27 Affichage classique (avec indice) : Affichage utilisant pointeur : Affichage utilisant encore des pointeurs

Les entrées sorties en C/C++

Les entrées sorties en C/C++ Les entrées sorties en C/C++ Dans ce chapitre, nous allons voir les fonctions d entrée/sortie du langage C++, extension du langage C. Écriture sur la sortie standard Fonction printf et opérateur

Plus en détail

Entrée et sortie standards (stdin,stdout et cin,cout)

Entrée et sortie standards (stdin,stdout et cin,cout) Chapitre 4 Entrée et sortie standards (stdin,stdout et cin,cout) Pour réaliser les opérations élémentaires d écriture sur l écran ou de lecture des informations du clavier, le C utilise un ensemble de

Plus en détail

3 Lien entre pointeurs et tableaux.

3 Lien entre pointeurs et tableaux. programme sont dit dynamiques. On se limite ici aux tableaux statiques à une seule dimension, analogue aux vecteurs manipulés en mathématiques. Ils se déclarent sous la forme : type_d_élément variable_tableau[taille];

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

Langage C notes de cours

Langage C notes de cours Langage C notes de cours K. El Omari IUT GTE, UPPA 1 Présentation générale 1.1 Introduction La programmation par le langage C (ainsi que par d autres langages dit compilés) est basée sur : 1. la rédaction

Plus en détail

Algorithmique et programmation : les bases (C) Corrigé

Algorithmique et programmation : les bases (C) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours C, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage C des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Tableaux dynamiques avec vector

Tableaux dynamiques avec vector Tableaux dynamiques avec vector Tableaux statiques Les tableaux que nous avons vus jusqu'ici sont des tableaux statiques: int tab[3]; Cette forme de tableaux vient du langage C, et est encore très utilisée.

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

Plus en détail

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte:

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte: PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de

Plus en détail

Cours Langage C. Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique

Cours Langage C. Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique Cours Langage C Passage de paramètres à la fonction main Pointeur de fonction Allocation dynamique I Passage de paramètres à la fonction main Tout exécutable C doit comporter une fonction main dont le

Plus en détail

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 1 6. Lecture/écriture formatées et Fichiers printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 2 Références Site du zèro : Programmer en C http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

Plus en détail

INF 2005 Programmation orientée objet avec C++ Texte 2

INF 2005 Programmation orientée objet avec C++ Texte 2 INF 2005 Programmation orientée objet avec C++ Texte 2 1. Mots clés du langage C++ et premiers pas... 2 1.1 Les mots clés du langage C++... 2 1.2 Familiarisation avec le langage... 3 2. Les entrées-sorties...

Plus en détail

ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++

ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++ ULCO-L1-Algo1-CM : Initiation à l algorithmique avec le langage C++ Table des matières 1 Généralités 3 1.1 Définitions/Glossaire....................................... 3 1.2 Exemples d algorithmes de la

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

Normes de programmation en langage C++

Normes de programmation en langage C++ Normes de programmation en langage C++ Bakhtouchi Abdelghani EMP, Bordj El Bahri bakhtouchi@yahoo.fr ANNEE: 2009/2010 Sommaire 1. Introduction.. 1 2. Présentation.. 1 2.1. Format des fichiers source. 1

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Pointeurs et tableaux

Pointeurs et tableaux Pointeurs et tableaux Pointeur Tout mot (octet) de la mémoire est identifié par un numéro unique : son adresse mémoire On peut donc identifier toute zone mémoire servant au stockage d une variable par

Plus en détail

L1-S2 MPI : Programmation Impérative

L1-S2 MPI : Programmation Impérative L1-S2 MPI : Programmation Impérative Correspondances Langage de Réalisation C++ Ce résumé constitue un aide-mémoire rédigé sous forme d exemples qui illustrent partiellement l utilisation des différentes

Plus en détail

LIF 1 TP 3 : Passage de paramètres / Tableaux 1D

LIF 1 TP 3 : Passage de paramètres / Tableaux 1D LIF 1 TP 3 : Passage de paramètres / Tableaux 1D Objectifs : Traduction d algorithmes en langage C Mode de passage des paramètres : données, données/résultats (cas particulier des tableaux). Utilisation

Plus en détail

IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot

IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot ESIEE 2011 2012 IN3T01 Programmation C TP 2 corrigé Jean-Claude Georges - Michel Landschoot PARTIE 1: LES FONCTIONS ET LES POINTEURS fichier fonctions.h #ifndef _FONCTION_H_ #define _FONCTION_H_ #include

Plus en détail

Travaux Pratiques d Informatique 1

Travaux Pratiques d Informatique 1 Faculté Polytechnique de Mons Service d Informatique Travaux Pratiques d Informatique 1 par Mohammed BENJELLOUN Avec la participation de : J-F Bauwens, Assistant S. Mahmoudi, Assistant E. Malengreau, Assistante

Plus en détail

Complément du cours Langage C

Complément du cours Langage C Complément du cours Langage C Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2013/2014 2013/2014 Pr. Ben Mamoun 1 Chapitre 9 Types structures, unions

Plus en détail

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch Informatique III: Programmation en C++ Lundi 24 Octobre 2005 Chargé de cours François Fleuret francois.fleuret@epfl.ch Assistant Mathieu Salzmann mathieu.salzmann@epfl.ch Assistants étudiants Ali Al-Shabibi

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Petit manuel de survie pour C++

Petit manuel de survie pour C++ Département d Informatique ENS de Cachan Petit manuel de survie pour C++ François Laroussinie fl@lsv.ens-cachan.fr Année 2004-2005 Petit manuel de survie pour C++ à compléter avec les précieux commentaires

Plus en détail

Ch1 : Eléments de base du langage C

Ch1 : Eléments de base du langage C Ch1 : Eléments de base du langage C Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Généralités 2 Avantages 3 Structure d un programme en C 4 Les diverse phases d un programme

Plus en détail

Flux. Gestion des Exceptions. SmartPointer. Entrées-sortiessorties Fichiers. F. Cloppet POO Avancée M1 C++ 271

Flux. Gestion des Exceptions. SmartPointer. Entrées-sortiessorties Fichiers. F. Cloppet POO Avancée M1 C++ 271 Notions Complémentaires Flux Entrées-sortiessorties Fichiers Gestion des Exceptions SmartPointer F. Cloppet POO Avancée M1 C++ 271 Généralités Flux = séquence d octets (byte) Flux s écoulent des périphériques

Plus en détail

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs

L1 Informatique Université Paris 8-2010-2011 Programmation Impérative I Rim Chaabane rchaabane@ai.univ-paris8.fr - Cours 6 - Les pointeurs Les pointeurs Le langage C permet de manipuler des adresses d objets ou de fonctions par le biais de pointeurs. Pour ce faire on peut désigner des variables dites de type pointeur, destinées à contenir

Plus en détail

Algorithmique Correction du DS1

Algorithmique Correction du DS1 Algorithmique Correction du DS1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Exercice 1 Exercice 1 Un service de reprographie facture : 0.10

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ D après les notes d introductives au C++ de Stéphane Menozzi http://www.proba.jussieu.fr/~menozzi/ Maxime Pallud IMACS/X-TEC Bat 404 Tel: 01 69 33 46 86 Mail: pallud@imacs.polytechnique.fr

Plus en détail

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre.

Cours C++ Lorsque je lance Dev C++, il apparaître l'écran ci-contre. Cours C++ Définition : Le langage C est un langage de programmation inventé par MM. Kernighan et Ritchie au début des années 70. Au début des années 90, Bjarne Stroustrup fait évoluer le langage vers le

Plus en détail

Cours d informatique. 1 ère année 2014 2015

Cours d informatique. 1 ère année 2014 2015 Cours d informatique en Langage C è 1 ère année 2014 2015 L informatique à l IOGS 1A : Langage C : apprentissage d un langage de programmation structuré 3 séances Matlab : analyse numérique 2A : Langage

Plus en détail

Fonctions de gestion de fichiers

Fonctions de gestion de fichiers Fonctions de gestion de fichiers 1. Ouverture et fermeture d un fichier Le C offre la possibilité de lire et d'écrire des données dans un fichier. Pour des raisons d'efficacité, les accès à un fichier

Plus en détail

Langage C. E. Boucharé

Langage C. E. Boucharé Langage C E. Boucharé Table des Matières Introduction.............................................................................. 1 Chapitre 1. Les types de données de C....................................................

Plus en détail

Les flux d'entrées/sorties en C++

Les flux d'entrées/sorties en C++ 1- introduction Les flux d'entrées/sorties en C++ En langage C-ANSI, la librairie d'entrées/sorties (stdio) fournie des fonctions d'entrées/sorties sur les 3 flux d'entrées/sorties standards (stdin, stdout

Plus en détail

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Les fonctions et les procédures en C

Les fonctions et les procédures en C Les fonctions et les procédures en C Séance 6 de l'ue «introduction à la programmation» Bruno Bouzy bruno.bouzy@parisdescartes.fr Fonctions et procédures Fonction, déclaration, définition, utilisation

Plus en détail

Rappels Entrées -Sorties

Rappels Entrées -Sorties Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk

Plus en détail

Tableaux à deux dimensions

Tableaux à deux dimensions Cours 8 Tableaux à deux dimensions Un tableau à deux dimensions (tableau 2D) est un tableau contenant des lignes et des colonnes comme celui-ci : 4 22 55 2 5 2 4 4 2 24 2 12 Ce tableau à deux dimensions

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

Informatique II : Cours de programmation (C++) INTRODUCTION

Informatique II : Cours de programmation (C++) INTRODUCTION Informatique II : Cours de () INTRODUCTION Haroud Laboratoire d Intelligence Artificielle Faculté I&C Informatique II Cours 1 : Introduction 1 / 65 Objectifs du d aujourd hui Présenter le Objectifs («Quoi?»)

Plus en détail

Programmation Orientée Objet C++ Cours 1

Programmation Orientée Objet C++ Cours 1 Programmation Orientée Objet C++ Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265 Ouvrages de référence B. W. Kernighan et D. M. Ritchie - Le langage C : Norme

Plus en détail

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

Plus en détail

Fascicule de Génie Electrique (Terminale S option SI)

Fascicule de Génie Electrique (Terminale S option SI) Le langage C Ressource Centre d intérêt CI10 : Traitement de Thématique I11 - Les systèmes numériques : Mise en œuvre d un microcontrôleur avec des composants logiciels réutilisables. 1 Les constantes

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Bases de la programmation : Cours de C. IUT de Villetaneuse.

Bases de la programmation : Cours de C. IUT de Villetaneuse. Bases de la programmation : Cours de C 1ère année IUT de Villetaneuse. Hanène Azzag, Frédérique Bassino, Bouchaïb Khafif, François Lévy,Mustapha Lebbah 28 février 2012 IUT de Villetaneuse 2 Table des matières

Plus en détail

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges Module SIN221 Rendre un syste me communicant Analyse UML et algorithmie Objectifs : Modifier des diagrammes UML suite à la modification du cahier des charges. Caractériser et valider une classe en C++.

Plus en détail

Les sous-programmes. Chapitre 6. 6.1 Définition d un sous-programme. Déclaration algorithmique d un sous-programme

Les sous-programmes. Chapitre 6. 6.1 Définition d un sous-programme. Déclaration algorithmique d un sous-programme Chapitre 6 Les sous-programmes 6.1 Définition d un sous-programme Un sous-programme est un élément de programme nommé et éventuellement paramétré, que l on définit afin de pouvoir ensuite l appeler par

Plus en détail

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic.

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic. Vers C++ venant Licence 3 info Université de Lille 1 Janvier 2015 Généralités Le C++ est un langage de programmation développé à partir de 1980 par Bjarne Stroustrup. Nous utiliserons la normalisation

Plus en détail

Cours Langage C/C++ Mémoire et allocation dynamique

Cours Langage C/C++ Mémoire et allocation dynamique Cours Langage C/C++ Mémoire et allocation dynamique Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.1 La pile et le tas La mémoire La mémoire dans un ordinateur est une succession d octets (soit 8 bits),

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Abrégé de programmation en Langage C

Abrégé de programmation en Langage C Abrégé de programmation en Langage C Denis Robilliard version 2010 Laboratoire d Informatique du Littoral Université du Littoral-Côte d'opale Table des matières I Introduction 2 1 Origines..................................................

Plus en détail

Système et Programmation (en C)

Système et Programmation (en C) Système et Programmation (en C) ENSTA - TC 1ère année François Pessaux U2IS 2015-2016 francois.pessaux @ ensta-paristech.fr Introduction François Pessaux IN102 Système et Programmation (en C) 2/31 But

Plus en détail

Introduction au langage

Introduction au langage Introduction au langage Un langage de programmation : de haut niveau interprété orienté objet si on le souhaite rapide à écrire et proche du pseudo-code simple tant qu on fait des choses simples Un programme

Plus en détail

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée Programmation C++ Le langage impératif Stéphane Vialette LIGM, Université Paris-Est Marne-la-Vallée 12 novembre 2012 Stéphane Vialette (LIGM UPEMLV) Programmation C++ 12 novembre 2012 1 / 67 C++ : chronologie

Plus en détail

Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice)

Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice) Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice) #include #include #define NDIM1 3 #define NDIM2 5 // pour printf, puts, putchar // pour malloc, free // par

Plus en détail

LE LANGAGE C++ TODO : - Flux d entrées/sorties - 5.1.4 : déclaration d accès (à revoir)

LE LANGAGE C++ TODO : - Flux d entrées/sorties - 5.1.4 : déclaration d accès (à revoir) LE LANGAGE C++ TODO : - Flux d entrées/sorties - 5.1.4 : déclaration d accès (à revoir) v1.5.4.3 14/02/2014 peignotc(at)arqendra(dot)net / peignotc(at)gmail(dot)com Toute reproduction partielle ou intégrale

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

Objectifs. Pointeurs : rappels. Fonctions. Pointeurs : suite. Annexes. Jamila Sam. Objectifs. Pointeurs : rappels. Fonctions.

Objectifs. Pointeurs : rappels. Fonctions. Pointeurs : suite. Annexes. Jamila Sam. Objectifs. Pointeurs : rappels. Fonctions. du cours d aujourd hui suite suite Informatique II : Cours de programmation (C++), & Rappeler ce qu est un pointeur et aborder des exemples d utilisation typiques de ce concept : allocation dynamique,

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

Plus en détail

Cours Langage C/C++ - Première partie

Cours Langage C/C++ - Première partie Cours Langage C/C++ - Première partie Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.2 Historique (1/3) Introduction En 1970, Ken Thompson, créa un nouveau langage : Le B, descendant du BCPL (Basic Combined

Plus en détail

Travaux Pratiques en Dev C++ (1 GIM)

Travaux Pratiques en Dev C++ (1 GIM) Université Sidi Mohammed Ben Abdellah École Supérieure de Technologie de Fès Filière Génie Industriel et Maintenance Travaux Pratiques en Dev C++ (1 GIM) Mr KHATORY TABLE DE MATIERES PREMIERS PAS EN DEV

Plus en détail

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3)

Les tableaux (ou vecteurs) (1/3) Cours numéro 3: Programmation impérative LI213 Types et Structures de données. Les tableaux (3/3) Les tableaux (2/3) Les tableaux (ou vecteurs) (1/3) Le type tableau est une des réponses à la question : LI213 Types et Structures de données Licence d Informatique Université Paris 6 comment agréger un très grand nombre

Plus en détail

Généralités Composants élémentaires d'un programme Instructions simples. JL Damoiseaux - Dpt R&T

Généralités Composants élémentaires d'un programme Instructions simples. JL Damoiseaux - Dpt R&T JAVA - I Généralités Composants élémentaires d'un programme Instructions simples 2 JAVA? Un langage de programmation (orienté objets) Une architecture basée sur une Machine Virtuelle Un ensemble très important

Plus en détail

Fonctions et procédures. Procedures: déclaration et appel

Fonctions et procédures. Procedures: déclaration et appel Cours 5 : fonctions, procédures, passage des paramètres 1 Fonctions et procédures Idée : capitaliser sur le code déjà écrit pour introduire des nouvelles commandes et opérations. On souhaite donner un

Plus en détail

Programmation : Exercices

Programmation : Exercices Programmation : Exercices IUT de Villetaneuse R&T 1 ère année Laure Petrucci 6 novembre 2007 1 Premiers programmes Exercice 1.1 : Machine à dessiner On souhaite écrire un programme pour afficher des dessins.

Plus en détail

Informatique (Algorithmique et Langage C) TABLE DES MATIÈRES 1. Algorithme et organigramme 2

Informatique (Algorithmique et Langage C) TABLE DES MATIÈRES 1. Algorithme et organigramme 2 Licence 3 IST INFORMATIQUE Informatique (Algorithmique et Langage C) TABLE DES MATIÈRES 1. Algorithme et organigramme 2 1.1. Généralités 2 1.2. Principales structures algorithmiques 3 2. Le passage au

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Période 3 Les tableaux

Période 3 Les tableaux Département Génie Électrique et Informatique Industrielle Période 3 Les tableaux 1/ Recopie de certains éléments d un tableau Soit les déclarations suivantes : int Tabint[10]={65,21, 9,23, 1,32,5, 69,12,

Plus en détail

Langage C : Algorithmes + Programmation. Bastien Morier

Langage C : Algorithmes + Programmation. Bastien Morier Langage C : Algorithmes + Programmation Bastien Morier 2007/2008 Sommaire I. Introduction... 3 II. Analyse... 3 III. Variables... 3 IV. Règles d'écriture des variables et des constantes... 3 V. Opérateurs...

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance 7 de cours/td Université Paris-Diderot Objectifs: Savoir écrire un programme en entier (structure du programme avec une procédure main et des déclarations de fonctions,

Plus en détail

Langage de programmation C++

Langage de programmation C++ Langage de programmation C++ Mohamed Tounsi Institut Supérieur d'informatique et Mathématiques Monastir Janvier 2013 Mohamed Tounsi (ISIMM) Langage de programmation C++ Janvier 2013 1 / 14 La notion de

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

Programmation sous Python

Programmation sous Python Erwan Biland Lycée Chateaubriand - BCPST 1C Année scolaire 2014-2015 Objects du Utilisation de la console (shell ) Python calculatrice Fichier machin.py Manipulation des variables Création/affectation,

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Langages de haut niveau

Langages de haut niveau Langages de haut niveau Introduction Un assembleur est un programme traduisant en code machine un programme écrit à l'aide des mnémoniques Les langages d'assemblage représentent une deuxième génération

Plus en détail

Et également retour sur le TP2. Prog Web Server - 2015-2016

Et également retour sur le TP2. Prog Web Server - 2015-2016 Et également retour sur le TP2 C'est un moyen simple de passer en revue un tableau Deux syntaxes À chaque itération, la valeur de l'élément courant est assignée à $value et le pointeur interne à la liste

Plus en détail

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 Ce qu il faut rendre : A la fin du TP il faudra archiver et compresser l ensemble de votre travail (y compris le rapport avec vos noms) avec la commande

Plus en détail

Travaux pratiques 9 : Qu y a-t-il au menu?

Travaux pratiques 9 : Qu y a-t-il au menu? Université Paris-Nord L1 Institut Galilée Année 2009-2010 Licence 1-1er semestre Travaux pratiques 9 : Qu y a-t-il au menu? Correction. Note aux chargés de TD. L objectif du TP est de les familiariser

Plus en détail

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ; s Introduction Naissance d'un programme Exercice I-1: Apprendre à décomposer une tâche en sous-tâches distinctes a. Objets nécessaires : 1 tableau, 1 clou, 2 pointes, 1 ficelle, 1 marteau, 1 crayon, 1

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE ING1025 : INFORMATIQUE EXAMEN INTRA Date Vendredi 10 octobre 2003 Heure De 8h30 à 10h20 Notes Ce questionnaire contient 4 questions sur

Plus en détail

Affectation d'une valeur à une variable

Affectation d'une valeur à une variable Affectation d'une valeur à une variable Fonctions calculs d'images Faire fonctionner l'algorithme ci contre avec a = 2 et b = 5. Quelle est la réponse affichée par l'algorithme? (question subsidiaire :

Plus en détail

Le langage C++ Henri Garreta

Le langage C++ Henri Garreta Faculté des Sciences de Luminy Département d Informatique Le langage C++ Henri Garreta Table des matières 1 Eléments préalables 3 1.1 Placement des déclarations de variables................................

Plus en détail

Analyse lexicale 2014-2015

Analyse lexicale 2014-2015 Analyse (lexicale, syntaxique) L3 MIAGE Analyse lexicale Université de Lille, France 2014-2015 1 Rappels Rôle de l analyse lexicale Outils 2 Mise en oeuvre Lexème Vers l analyseur syntaxique Codage d un

Plus en détail

Programmation trame GPS

Programmation trame GPS Lycée polyvalent DIDEROT 61, rue David d Angers 75019 PARIS http://www.diderot.org Département IRIS TP Programmation trame GPS Manipulation de trame GPS NMEA Auteur Version - Date Nom du fichier G.VALET

Plus en détail