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.

Slides:



Advertisements
Présentations similaires
Cours de C – Séance dexercices 12 Octobre Exercice 5 Idem quexercice 1 : lire une ligne au clavier Sans limitation de la longueur de la ligne (utilisez.
Advertisements

Cours de C – Séance dexercices 25 Septembre 2007.
Programmation Orienté Objet en C++
Rappels C.
Le langage Z Pr ZEGOUR DJAMEL EDDINE
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Paramètres et pointeurs
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
Fonctions Dans un programme : certaines opérations (ou séquences d'opérations) peuvent se répéter plusieurs fois : affichage de tableau, saisie, ou même.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
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
Récursivité.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
TRAITEMENT DE STRUCTURES
Les fichiers et les chaînes de caractères
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Etude de cas : buffer clavier
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
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.
Abder Alikacem Semaine 13 La récursivité
IFT-2000: Structures de données
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.
Points importants de la semaine Les allocations programmées de mémoire. Les enregistrements.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Environnements d'exécution
8PRO100 Éléments de programmation Les types composés.
Méthode et Outils pour la Programmation
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-2000
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Le langage C Structures de données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les pointeurs L'opérateur &.
Le langage C Rappel Pointeurs & Allocation de mémoire.
Labo II : Tableaux et pointeurs
et quelques rappels sur certains éléments du langage C
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
ETNA – 1ème année Guillaume Belmas –
Les chaînes de caractères
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les pointeurs de caractères.
Cours LCS N°4 Présenté par Mr: LALLALI
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Exercices.
Langage de Programmation Orientée Objet : C++
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, …  Etude de cas : réalisation d’un buffer clavier.
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
PROCESSING Semaine 03. PLAN DE LEÇON Interaction avec un programme Gestion de la souris Gestion du clavier.
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.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Informatique 2A Langage C 4ème séance
Transcription de la présentation:

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 l’avoir lu. Par exemple pour lire les caractères d’un nombre, tant qu’on a pas vu le premier caractère autre qu’un chiffre, le nombre est incomplet La solution est de dé-lire le dernier caractère : le remettre dans le buffer (en fait, on va utiliser notre propre buffer)

lireCar/remettreCar Ces deux fonctions se partagent un tableau (buffer) de char défini comme une variable globale et l’indice du dernier élément de ce tableau int lireCar(void) donne le premier caractère à prendre en compte: il se trouve soit dans le buffer, soit sur l’entrée standard. int remettreCar(char c) met dans le buffer un caractère que l’on veut dé-lire.

Correction #define TAILLETAMP 100 char tamp[TAILLETAMP]; int ptamp = 0; int lireCar( void ){ if( ptamp  0 ) return( tamp[--ptamp] ); else return( getchar() ); } void remettreCar( int c ){ if( ptamp  = TAILLETAMP) printf(```remettreCar: trop de caractères \n``); else tamp[ptamp++] = c; }

Gestion d’une pile Un allocateur rudimentaire de mémoire. Deux sous programmes, une zone mémoire et un pointeur. –char tampalloue[TAILLEALLOUE]; –char *palloue = tampalloue; emplacement libre suivant –char *allouer(int n); retourne un pointeur p sur n positions consécutives de caractères dans la zone tampalloue –void liberer(char *p); Rudimentaire: libérer dans le sens inverse des allocations (tas)

schéma occupélibre Tampalloue: palloué occupé libre Tampalloue: palloué Après alloué

Correction char *allouer(int n){ if(tampalloue + TAILLEALLOUE –palloue  =n){ /* il y a assez de place */ palloue += n; return(palloue - n); } else return 0; } void liberer(char *p){ if(p  = tampalloue && p  tampalloue + TAILLEALLOUE) palloue = p; }