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.

Slides:



Advertisements
Présentations similaires
Active Directory Windows 2003 Server
Advertisements

Premier programme en C :
Introduction au Langage C,C++
Programmation Orienté Objet en C++
Introduction au langage C
Les tableaux. Tableau? Erreur de langage ! Un tableau est généralement une liste… Cest donc une liste de mêmes éléments : Liste de notes Liste de noms.
Informatique Deug2 Sciences Eco S. Maabout 2004/2005.
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
TP 3-4 BD21.
Paramètres et pointeurs
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Chap. 1 Structures séquentielles : listes linéaires
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
FLSI602 Génie Informatique et Réseaux
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Les éléments de base de l’algorithmique
II. Chaînage, SDD séquentielles
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
L’utilisation des bases de données
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Présentation Structures de Données et TDA
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
Méthode et Outils pour la Programmation
C++ : variables Déclaration de variables
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
L’essentiel du langage C
Stocker plusieurs valeurs de même type dans une variable
Le langage C Structures de données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
JavaScript.
Algorithmique et langage C. Et me la renvoyer bien sûr… Developpez.com, wiki, siteduzero et autre sont les bienvenus… (les questions sont en orange) C’est.
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
Module I3 algorithmique et programmation
ETNA – 1ème année Guillaume Belmas –
PostgreSQL – Présentation
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Cours LCS N°4 Présenté par Mr: LALLALI
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
UE MAREP Cours 12 : Révisions
Algorithmique et langage C. préambule Un processus est Un phénomène que l’on peut décrire. L’ algorithmique est l’ outil logique définissant les processus.
Introduction au langage C Structures de données
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
1 Listes des méthodes de la classe string, et exemples.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Exercices sur les pointeurs. lireCar/remettreCar Lorsque l’on lit caractère par caractère, on ne peut pas savoir qu’on a atteint un caractère avant de.
LES TABLEAUX Définition: Création d’un tableau:
Projet lif7 : Zelda Armes
Introduction au langage C
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Transcription de la présentation:

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 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

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…

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.

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

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

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.

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;

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)

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 court à unsigned short intEntier court non signé20 à intEntier 2 (sur processeur 16 bits) à (sur processeur 32 bits) à unsigned intEntier non signé 2 (sur processeur 16 bits)0 à (sur processeur 32 bits)0 à long intEntier long à unsigned long intEntier long non signé40 à floatFlottant (réel)43.4* à 3.4*10 38 doubleFlottant double81.7* à 1.7* long doubleFlottant double long103.4* à 3.4* Ce qui nous amène à la question ?  Et le nom (adresse mémoire pour ceux qui suivrait pas) … C’est un ?

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 ? …

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.

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];

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 * ?

? 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

? 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

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

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… 

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

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.

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

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

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 [ ]

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?