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

Patrick Reuter maître de conférences

Présentations similaires


Présentation au sujet: "Patrick Reuter maître de conférences"— Transcription de la présentation:

1 Patrick Reuter maître de conférences http://www.labri.fr/~preuter/c++
C++ 2ème cours Patrick Reuter maître de conférences

2 Préchauffement /* Programme écrit par Patrick Reuter */
#include <iostream> // Debut du programme int main() { float radius; float circ; float aire; // Afficher ‘le radius à l’ecran’ 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 # # ... #1.000 ... #5 #4 #3 #2 #1 #0

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. 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é » : 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. Le plus petit paquet traitable (ou adressable) est appelé byte (octet). 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 28=256 valeurs différentes, entre et 1 kilo-octet (ko ou Ko) = 210 octets = 1 024 octets (et pas 1 000 octets comme on pourrait le supposer), soit 2 à la puissance 10. 1 méga-octet (Mo) = 220 octets = 1 024 ko = 1 048 576 octets. 1 giga-octet (Go) = 230 octets = 1 024 Mo = 1 073 741 824 octets. 1 téra-octet (To) = 240 octets = 1 024 Go = 1 099 511 627 776 octets.

8 Déclaration de variables
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 ….. 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

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 caractère Nombre à virgule flottante avec double précision Chaîne de caractère VRAI/FAUX

10 Types de base Type binaire : bool 1 bit FALSE, TRUE (FAUX, VRAI)
Nombre entiers : unsigned char 1 Octet 0 à 255 signed char 1 Octet à 127 unsigned int 4 Octets 0 à signed int 4 Octets à Nombre à virgule flottante : float 4 Octets -3.4* à 3.4*1038 double 8 Octets 1.8 * à 1.8 * 10308 Rappel : 1 Octet = 8 bits = 28 possibilités 4 Octets = 32 bits = 232 possibiltés

11 Octet (character) Qu’est-ce qu’on 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 28=256 valeurs différentes, entre et Octets non-signé : Par exemple :

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

15 Nombre à virgule flottante
Float, single, double, real, .. Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be - 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 0, ,231*10^-3 ,866*10^3 1,45 1,45*10^1 1,4

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

18 Nombre à virgule flottante
Float, single, double, real, .. Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be Avec b la base de représentation (parfois 2, 16, ou autre) signe exposant mantisse Simple précision (float, 32 bits) 1 bit 8 bits 23 bits Double précision(double,64 bits) 1 bit 11 bits 52 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 d’un nombre x
Nombre x = (-1)s * m * 2e (base b = 2) signe s : 0 pour positive, 1 pour négative Exposant e: e = └log2 (x)┘ Mantisse m: m = (x/2e – 1) * 223

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

21 Nombre à virgule flottante
Float, single, double, real, .. Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be 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) ) # # ... #1.000 ... #5 #4 #3 #2 #1 #0

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

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

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

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

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 # # ... #1.000 ... #5 #4 #3 #2 #1 #0 # : 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 // caractère // Nombre à virgule flottante avec double précision // Chaîne de caractère // VRAI/FAUX

31 Type : tableaux (angl. ARRAY)
Déclaration d’une 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 d’une 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 <iostream> 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 <iostream> 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] i nombre 31 28 31 1 2 3 4 1 ….

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

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

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

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

39 Organisation de la mémoire
int i; # # ... jours[12] #2011 31 ... jours[3] #2002 31 jours[2] #2001 28 jours[1] #2000 31 ... 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 "Patrick Reuter maître de conférences"

Présentations similaires


Annonces Google