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

Algorithmique et langage C. Et me la renvoyer bien sûr… Developpez.com, wiki, siteduzero et autre son les bienvenus… (les questions sont en orange) C’est.

Présentations similaires


Présentation au sujet: "Algorithmique et langage C. Et me la renvoyer bien sûr… Developpez.com, wiki, siteduzero et autre son les bienvenus… (les questions sont en orange) C’est."— Transcription de la présentation:

1 Algorithmique et langage C

2 Et me la renvoyer bien sûr… Developpez.com, wiki, siteduzero et autre son les bienvenus… (les questions sont en orange) C’est pour voir si ça suit dans la classe et bien sûr, évaluer au mieux ton écoute ^_^… 3… 2… 1… Si tu veux la doc, Il faut répondre au question

3 préambule Un processus est Un phénomène que l’on peut décrire. L’ ? est l’ outil logique définissant les processus en algorithmes. Un algorithme est donc une suite d’instruction à suivre pour produire un processus. tout deux fondent un ? logique ou presque…

4 préambule le ? est la transcription de ces algorithmes respectant les paradigmes du ? utilisé. (un paradigme étant une représentation du monde, une philosophie, un système) bref… la règle du jeu! un ? permet la transcription du ? en un code machine exécutable. Code machine qui pourra être exécuté, si tant est que la configuration hardware et software requise est respecté. l’algorithme est correct. La transcription dans le programme est correcte.

5 processus, traitement et autre olibrius Il traite des ? et selon son exécution émet des ? et/ou des ? ? ?????? ?????? ??????

6 Part 1 - les données Tout processus commence par des données auquel on applique par la suite un traitement

7 Entrée / Sortie… même combat! les E/S sont potentiellement de deux natures : –?–? fichier (txt, xml, xsd, ini, VSAM,…), base de donnée Son dilemme consistant à comment accéder, classer l’information et comment la lire, créer, modifier, supprimer. –?–? commande, pipe, socket, protocole de communication réseau, client serveur, n-tiers… Son dilemme consistant à comment ouvrir/fermer la communication et transmettre/recevoir l’information.

8 Entrée / Sortie… et au milieu alors ? les E/S « externe » et les données « internes »(dites de travail) au processus sont stockés dans les ?. ces variables sont définit par un ? et un ?. au ? correspond son adresse mémoire. (il est unique, mais 2 ? peuvent partager la même adresse) au ? correspond la taille mémoire occupé. (bien sûr plusieurs ? peuvent partager la même taille ) Au final la déclaration s’écrit : char A;

9 Le type ou pourquoi les pommes ne donnent pas de jus de citron ? le type définit la ?, mais définit aussi le comportement de la variable. Exemple : on ne peut pas appliquer une racine carré à une chaîne de caractère. Malgré tout, les types admettent des ? intrinsèques l’ affectation de contenu A  B le contenu de B est copié dans le contenu de A (B et A étant de même type) Le conversion de type A  (char ) B A qui est un char reçoit la valeur converti en char de B (A et B étant de même taille)

10 Les types de base en C Type de donnéeSignificationTaille (en octets) à titre d’exemplePlage de valeurs acceptée charCaractère1-128 à 127 unsigned charCaractère non signé10 à 255 short intEntier court2-32 768 à 32 767 unsigned short intEntier court non signé20 à 65 535 intEntier 2 (sur processeur 16 bits)-32 768 à 32 767 4 (sur processeur 32 bits)-2 147 483 648 à 2 147 483 647 unsigned intEntier non signé 2 (sur processeur 16 bits)0 à 65 535 4 (sur processeur 32 bits)0 à 4 294 967 295 long intEntier long4-2 147 483 648 à 2 147 483 647 unsigned long intEntier long non signé40 à 4 294 967 295 floatFlottant (réel)43.4*10 -38 à 3.4*10 38 doubleFlottant double81.7*10 -308 à 1.7*10 308 long doubleFlottant double long103.4*10 -4932 à 3.4*10 4932 Ce qui nous amène à la question ?  Et le nom (adresse mémoire pour ceux qui suivrait pas) … C’est un ?

11 Quelque part … dans la mémoire The pointeur ou le contenu d’un contenant, peut-être un contenant !!! Connaissant ce contenant, on trouve le contenu donc le contenu du contenu du contenant qui n’est autre que le contenu de son contenant, lui-même contenu dans un contenant … Le pointeur est un des grands paradigmes de l’informatique. Pas de secret, c’est un ?, il se déclare par ? (en C) int ? ptA Le pointeur représente une ? (il pointe un certain type ici) Une variable A est créé son adresse sur un processeur et OS 32 bits est alors codé sur … ? octets je créer un pointeur sur ? bits 1 octet Autre part … dans la mémoire ? ? ? ? 0xCAF9 0xCAFA 0xDEC4 Et je lui affecte l’adresse de A 0x???? D’où (calembour douteux du geek) ? J’ai du ? dans le ? …

12 int ? ptrA, A=10, imageA; ptrA = ? A; imageA= ? ptrA; ? ptrA=20; Résultat?... Il y a ? dans imageA et ? dans A. les pointeurs Version code… Création du pointeur d’entier ptrA à valeur nulle. Création de l’entier A valorisé à 10. Création de l’entier imageA. ptrA est valorisé avec l’adresse de A. imageA est valorisé avec le contenu pointé par prtA. le contenu pointé par prtA est valorisé à 20.

13 Un tableau de taille n est un pointeur adressant une zone mémoire de n * taille du ? unitaire. De même pour un tableau de multidimensionnel (sa zone mémoire est le produit des tailles de toutes ses dimensions) Un tableau à 3 dimensions se conceptualise comme suis tableau int tab[10][5][3];

14 tableau Il peut être initialisé avec des valeurs par défaut int tab2[10]={1,2,,3,4,5,6,7,8,9}; Il peut se convertir en pointeur int *ptr; Et donc ptr = tab2; peut s'écrire ptr = ?tab2[0]; comme ptr = ?tab2[5]; peut s'écrire ptr = tab2 + 5 * ?

15 ? et ? Une ? est un groupe contenant plusieurs type déclaré les un à la suite des autres ? personne { char prenom[25]; char nom[25];} a,*ptr_a; Ensuite on l’utilise comme suit ptr_a = &a; A?prenom = "adrien"; ptr_a?nom = "le labousse"; prenom nom ? personne

16 ? et ? Une ? est un groupe contenant plusieurs type déclaré à la même adresse. ? compte { char rib_val[22]; ? RIB { char code_banque[5]; char code_guichet[4]; char num_compte[11]; char clef[2];} rib_struct; } a; Ainsi rib_struct est équivalent à rib_val rib_val code_banque code_guichet num_compte clef union compte

17 ptrPrev et ptrNext sont dans une structure… Mais ou… les structures de données dynamiques Liste chaînée data1 ? ? data2 ? ? data3 ? ? data4 ? ? structure

18 Liste chaînée pile et file, la ressemblance LIFO  ? FIFO  ? ils possèdent deux pointeurs : La ? (élément origine)  ptr? La ? (dernier élément inséré)  ptr? Lors de l’insertion d’un élément A, ils ont le même comportement : A.ptr? = ptr?; //on accroche A à la liste ptr?->prt? = &A;// dans les 2 sens ptr? = &A; //modification du pointeur de queue Bref ce sont toutes les deux des…??? Listes chaînées bien sûr  vous suivez ? hein… 

19 pile et file la ressemblance data1 ptrPrev ptrNext data2 ptrPrev ptrNext data3 ptrPrev ptrNext data4 ptrPrev ptrNext Soit une liste et ses pointeurs ptrHead ptrTail Insertion ? élément

20 pile et file la différence la pile Lors de la lecture –Lit le contenu de l’élément de ?. –le pointeur de ? est affecté à l’adresse de l’élément ?. vide si le pointeur ? de l’élément de ? est nul. la file Lors de la lecture –Lit le contenu de l’élément de ?. –le pointeur de ? est affecté à l’adresse de l’élément ?. vide si le pointeur ? de l’élément de ? est nul.

21 pile (LIFO) et file (FIFO) la différence data1 ptrPrev ptrNext data2 ptrPrev ptrNext data3 ptrPrev ptrNext data4 ptrPrev ptrNext Soit une liste remplie et ses pointeurs ptrHead LIFO ptrTail FIFO Lecture ? élément ptrHead FIFO ptrTail LIFO Lecture ? élément

22 les structures de données dynamiques les arbres binaires (binaire pour l’exemple …simple ) data1 structure  mon descendant  mon ascendant Complétez le schéma avec les enfants de data1 (y sont deux :data2 et data3) ainsi que les pointeurs adéquats

23 les structures de données dynamiques les diagrammes… c’est Santa Barbara data1 id ptr [ ] data2 id ptr [ ] data3 id ptr [ ] data4 id ptr [ ] data5 id ptr [ ] data6 id ptr [ ] data7 id ptr [ ] data8 id ptr [ ] data9 id ptr [ ] data0 id ptr [ ]

24 int* ptr_mem; ptr_mem = ???(N*sizeof(int)); ptr_mem = ???(ptr_mem, M*sizeof(int)); ???(ptr_mem); ptr_mem = ???; Fonction d’allocation mémoire dynamique en C Création des pointeurs à valeur nulle. ptr_mem est valorisé avec l’adresse d’une zone mémoire de taille de N int La zone mémoire pointé par ptr_mem est réalloué à la taille de M int et ptr_mem est valorisé avec l’adresse de cette nouvelle zone. Libération de la mémoire de la zone pointée Que reste-t-il donc dans prt_mem?


Télécharger ppt "Algorithmique et langage C. Et me la renvoyer bien sûr… Developpez.com, wiki, siteduzero et autre son les bienvenus… (les questions sont en orange) C’est."

Présentations similaires


Annonces Google