La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

C++ 2ème cours Patrick Reuter maître de conférences

Présentations similaires


Présentation au sujet: "C++ 2ème cours Patrick Reuter maître de conférences"— Transcription de la présentation:

1 C++ 2ème cours Patrick Reuter maître de conférences

2 Préchauffement /* Programme écrit par Patrick Reuter */ #include // Debut du programme int main() { float radius; float circ; float aire; // Afficher le radius à lecran std::cout << « Entrer un nombre! " << endl; }

3 Proc 64bit 2,93 GHz : 2,93 Giga-Instructions par seconde

4 Organisation de la mémoire Mémoire de 512 MegaOctets #0 #1 #2 #3 #4 #5... # # #

5

6 Organisation de la mémoire Bit est une unité de mesure en informatique désignant la quantité élémentaire d'information représentée par un chiffre binaire.unité de mesure en informatiqueinformationchiffrebinaire Un bit ne peut prendre que deux valeurs : 0 ou 1. Selon le contexte, numérique, logique (voir algèbre de Boole), ou électronique numérique, on les appelle « faux » et « vrai » ou « ouvert » et « fermé » :numérique logiquealgèbre de Booleélectronique numérique Contexte logique : FAUX, VRAI Conexte numérique : 0, 1 On note que la valeur 0 est associée à « ouvert » en électronique, car dans cet état le courant ne passe pas (on parle d'interrupteur ouvert ou de circuit ouvert). Le nombre de bits traités simultanément par un microprocesseur courant d'ordinateur a varié de 4 en 1973 à 64 en 2004.microprocesseurordinateur Le plus petit paquet traitable (ou adressable) est appelé byte (octet).adressablebyte Lorsqu'un microprocesseur est conçu pour traiter simultanément plusieurs bytes, on appelle « mot » le paquet de bytes. Les tailles de mot les plus courantes sont de 8, 16, 32 et 64 bits. On parlera alors par exemple de « microprocesseur 64 bits ».

7 Organisation de la mémoire Un octet peut prendre 2 8 =256 valeurs différentes, entre et kilo-octet (ko ou Ko) = 2 10 octets = octets –(et pas octets comme on pourrait le supposer), soit 2 à la puissance méga-octet (Mo) = 2 20 octets = ko = octets. 1 giga-octet (Go) = 2 30 octets = Mo = octets. 1 téra-octet (To) = 2 40 octets = Go = octets.

8 Déclaration de variables Comme dans un livre de recettes Ingrédients(pour 8-10 personnes) : - 1 kg de couscous roulé - 1 kg de mouton - 1 poignée de pois chiches - 2 oignons secs tomates fraîches ou 1 cuil. à soupe de concentré de tomate pommes de terre navets carottes courgettes - 1 tranche de courge - 4 cuillères à soupe d'huile - 1/2 cuillère à café de cannelle - 1 pincée de poivre noir - 1/2 cuillère à soupe de piment rouge doux ou de paprika - 1/2 cuillère à soupe de ras-el-hanout - 1 piment rouge sec g de beurre ou 3 cuillères à soupe d'huile - sel Préparation : La veille, mettez les pois chiches dans un bol d'eau. Le jour même, roulez le couscous. Si vous utilisez du couscous roulé et séché, rincez-le à l'eau froide, égouttez-le et laissez- le gonfler pendant 30 mn. Coupez la viande en morceaux. Pelez les oignons et coupez-en 1 en morceaux. Lavez et passez les tomates à la moulinette. Mettez la viande dans une marmite et ajoutez les morceaux d'oignon, les tomates ou le concentré de tomate dilué dans 1 verre d'eau, l'huile, le poivre, le piment, la cannelle et du sel. Faites revenir …..

9 Déclaration de variables int compteur; float diviseur; char c; double precision; string nom; bool masculin; diviseur = 1.1; compteur = 1; Nom = Gerhard; Nombre entier Nombre à virgule flottante Nombre à virgule flottante avec double précision caractère Chaîne de caractère VRAI/FAUX

10 Types de base Type binaire : bool 1 bitFALSE, TRUE (FAUX, VRAI) Nombre entiers : unsigned char 1 Octet0 à 255 signed char1 Octet-128 à 127 unsigned int4 Octets0 à signed int4 Octets à Nombre à virgule flottante : float4 Octets-3.4* à 3.4*10 38 double 8 Octets1.8 * à 1.8 * Rappel : 1 Octet = 8 bits = 2 8 possibilités 4 Octets = 32 bits = 2 32 possibiltés

11 Octet (character) Quest-ce quon peut faire avec un octet ? Code ASCII (American Standard Code for Information Interchange) 95 printable characters

12 Octet - Code ASCII

13 Organisation de la mémoire Un octet peut prendre 2 8 =256 valeurs différentes, entre et Octets non-signé : Par exemple :

14 Organisation de la mémoire Octet signé de -128 jusquà 127 Valeurs négatives : = -1 à = Valeurs positives : = 0 à = 127 Calculer les valeurs négatives : -Prendre le complément -Ajouter 1 -Exemple: Complément Ajouter

15 Nombre à virgule flottante Float, single, double, real,.. Approximations rationnelles de nombres réels.nombres réels Les nombres à virgule flottante possèdent –un signe s (dans {-1, 1}) –une mantisse entière m (parfois appelée significande)mantisseentière –un exposant e.exposant s * m * b e - Avec b la base de représentation (parfois 2, 16, ou autre) - En faisant varier e, on fait « flotter » la virgule décimale. Généralement, m est d'une taille fixée.

16 1,4 0, ,231*10^ ,866*10^3 1,451,45*10^1 …

17 1,4 0, ,231*10^ ,866*10^3 1,451,45*10^1 … base b=10 mantisse m (entier, sans le virgule) signe s {+1,-1} exposant e

18 Nombre à virgule flottante Float, single, double, real,.. Approximations rationnelles de nombres réels.nombres réels Les nombres à virgule flottante possèdent –un signe s (dans {-1, 1}) –une mantisse entière m (parfois appelée significande)mantisseentière –un exposant e.exposant s * m * b e -Avec b la base de représentation (parfois 2, 16, ou autre) signeexposantmantisse Simple précision (float, 32 bits)1 bit8 bits23 bits Double précision(double,64 bits)1 bit11 bits52 bits Simple précision (b=2): (-1)S * (1 + M ) * 2 (E-127) Double précision (b=2):(-1) S * (1 + M ) * 2 (E-1023)

19 Conversion dun nombre x Nombre x = (-1) s * m * 2 e (base b = 2) –signe s : 0 pour positive, 1 pour négative –Exposant e: e = log 2 (x) –Mantisse m: m = (x/2 e – 1) * 2 23

20 Conversion dun nombre x Nombre x = (-1) s * m * 2 e (base b = 2) –signe s : 0 pour positive, 1 pour négative –Exposant e: e = log 2 (x) –Mantisse m: m = (x/2 e – 1) * 2 23 Exemple : x = +11,25 Signe s = positive -> 0 binaire Exposant e = log 2 (11,25) = 3,49 = = 130 -> binaire Mantisse m = (11,25/2 3 – 1) * 2 23 = ) = binaire Solution :

21 Nombre à virgule flottante Float, single, double, real,.. Approximations rationnelles de nombres réels.nombres réels Les nombres à virgule flottante possèdent –un signe s (dans {-1, 1}) –une mantisse entière m (parfois appelée significande)mantisseentière –un exposant e.exposant s * m * b e Limitation : précision limitée qui se traduit par des arrondis qui peuvent s'accumuler de façon gênante.

22 Organisation de la mémoire char lettre; ( 1 octet (byte) ) #0 #1 #2 #3 #4 #5... # # #

23 Organisation de la mémoire char lettre; #0 #1 #2 #3 lettre #4 #5... # # #

24 Organisation de la mémoire char lettre; lettre = a; ou bien lettre := 97; #0 #1 #2 #3 lettre #4 #5... # # #

25 Organisation de la mémoire int nombre; #4 #5... # # # nombre #0 nombre #1 nombre #2 nombre #3

26 Organisation de la mémoire int nombre; ( 4 byte (octets) ) nombre = 125; nombre #0 #4 #5... # # # nombre #1 nombre #2 nombre #3

27 Définition de constantes const int A = 26; const float Pi =

28 Mémoire vive Proc 64bit 2,93 GHz : 2,93 Giga-Instructions par seconde

29 Organisation de la mémoire Mémoire de 512 MegaOctets #0 #1 #2 #3 #4 #5... # # # # : adresse dans la mémoire vive

30 Déclaration de variables int counter; float diviseur; char c; double precision; string nom; bool masculin; diviseur = 1.1; compteur = 1; Nom = « Gerhard »; // Nombre entier // Nombre à virgule flottante // Nombre à virgule flottante avec double précision // caractère // Chaîne de caractère // VRAI/FAUX

31 Type : tableaux (angl. ARRAY) Déclaration dune variable de type tableau Défintion : type nom_du_tableau[taille]; Exemples : int jours[12]; int score[10]; int vies[10] -structure de données la plus connu -structure homogène, chaque élément est du même type de base

32 Type : tableaux (angl. ARRAY) Déclaration dune variable de type tableau Affectation : int jours[12]; nom_du_tableau[index] = valeur ; Exemples : jours[1] = 31; jours[2] = 28; … jours[12] = 31; jours[13] Erreur !!! jours[14] Erreur !!! …

33 Type : tableaux (angl. ARRAY) #include int main() { // Declaration de variables int jours[12]; int i, nombre; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; // initialisation} i:=1; nombre := 0; // boucle while (i<=12) { if (jours[i] = 30) nombre := nombre + 1; i := i +1; } // end while std::cout << "Il y a" << nombre << "de mois à 30 jours" << std::endl; } // end main

34 Type : tableaux (angl. ARRAY) #include int main() { // Declaration de variables int jours[12]; int i, nombre; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; // initialisation} i:=1; nombre := 0; // boucle while (i<=12) { if (jours[i] = 30) nombre := nombre + 1; i := i +1; } // end while std::cout << "Il y a" << nombre << "de mois à 30 jours" << std::endl; } // end main Jours[1]Jours[2]...Jours[12]inombre ….

35 Organisation de la mémoire var jours : array[1..12] of byte; {12 octets} #0 jours[1] # # # jours[3] #2002 jours[12] # jours[2] #

36 Organisation de la mémoire Jours[1]:=31; jours[2]:=30; … #0 jours[1] # # # jours[3] #2002 jours[12] # jours[2] #

37 Organisation de la mémoire var jours : array[1..12] of byte; {12 octets} #0 jours[1] # # # jours[3] #2002 jours[12] # Occupe de la place successive dans la mémoire jours[2] #

38 Organisation de la mémoire char jours[12]; {12+1=13 octets} #0 jours[1] # # # jours[index] #(2000+index-1) jours[3] #2002 jours[12] # Occupe de la place successive dans la mémoire jours[2] #

39 Organisation de la mémoire int i; jours[1] # # # jours[3] #2002 jours[12] # jours[2] # i #0

40 Type : tableaux (angl. ARRAY) -structure de données la plus connu -structure homogène, chaque élément est du même type de base -occupe de la place successive dans la mémoire -« random access » = accès aux différentes éléments se fait au coût égal

41


Télécharger ppt "C++ 2ème cours Patrick Reuter maître de conférences"

Présentations similaires


Annonces Google