Labo II : Tableaux et pointeurs

Slides:



Advertisements
Présentations similaires
Programmation Orienté Objet en C++
Advertisements

Rappels C.
GEF 243B Programmation informatique appliquée
Algorithme et structure de données
Structures et unions types énumérés Qu'est-ce qu'une structure
FLSI602 Génie Informatique et Réseaux
Initiation à la programmation et algorithmique cours 3
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
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
II. Chaînage, SDD séquentielles
TRAITEMENT DE STRUCTURES
Séances de soutien Projet informatique 2A
Etude de cas : buffer clavier
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
IFT-2000: Structures de données
Structures de données IFT-2000
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Une nouvelle structure de données : les tableaux
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.
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
Standard Template Library
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI 1502 Principes fondamentaux de conception de logiciels
Table de hachage Introduction Notion de clé Fonction de hachage
Algorithmique et langage C. Les traitements Comment utiliser les données.
Les chaînes de caractères
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
Structures de données IFT-2000
Une introduction à Java
Structures de données IFT-2000
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
4 Introduction des objets. Les chaînes et tableaux
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
et quelques rappels sur certains éléments du langage C
ALGORITHMIQUE ET PROGRAMMATION C
Labo 4 : Les structures et les entrées et sorties
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
Strings et Tableaux en Java
Les opérateurs L’amitié Les opérateurs Introduction
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les tableaux multi-dimensionnels.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
8PRO100 Éléments de programmation Les pointeurs de caractères.
Cours LCS N°4 Présenté par Mr: LALLALI
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Les bases de l’algorithmique
Introduction au langage C Structures de données
Exercices.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
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.
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, …  Etude de cas : réalisation d’un buffer clavier.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de 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.
Cours de Langage C Les structures
LES SYSTÈMES DYNAMIQUES.
الأكاديمية الجهوية للتربية والتكوين لجهة مكناس تافيلالت نيابة مكناس
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Les classes et les objets
Int 10. Int 6.
QCM Pointeurs 2 / Q1 On considère la déclaration suivante : char *ptc ; ptc peut contenir : 1) des valeurs de variables de type caractère 2) des adresses.
Transcription de la présentation:

Labo II : Tableaux et pointeurs Démo : INF3105 Structures de données et algorithmes Groupe : 40 Moniteur : Stéphane HENRY Courriel : Notes de Kerlyne Fostiné

Plan de la démonstration Les tableaux Tableaux à une dimension Tableaux à deux dimensions Tableaux comme chaîne de caractères Les pointeurs Introduction Tableaux et pointeurs Arithmétiques des pointeurs Pointeur sur char comme chaîne de caractères Allocation dynamique de la mémoire 2

Les tableaux Un ensemble indexé d’objets de même type Déclaration de tableaux Type nom_tableau[nombre_element]; int tab[10]; int tab[5] = {5, 2, 10, 8, 3}; Référence des éléments dans un tableau Nom_tableau[index] 0<=index<nombre_element; int tab[4]  tab[0], tab[1], tab[2], tab[3] 3

Tableau à un dimension Exercice 1 Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier et affiche le tableau. Ranger ensuite les éléments du tableau T dans l'ordre inverse sans utiliser de second tableau. Afficher le tableau résultant. Idée: Echanger les éléments du tableau à l'aide de deux indices qui parcourent le tableau en commençant respectivement au début et à la fin du tableau et qui se rencontrent en son milieu. 4

Tableau à deux dimensions Exercice 2 Ecrire un programme qui lit les dimensions L et C d'un tableau T à deux dimensions du type int (dimensions maximales: 50 lignes et 50 colonnes). Remplir le tableau par des valeurs entrées au clavier et afficher le tableau ainsi que la somme de chaque ligne et de chaque colonne en n'utilisant qu'une variable d'aide pour la somme. 5

Tableau comme chaîne de caractères Un tableau de caractères dont le dernier caractère a pour code 0 char nom[20]; nom = ''matin''; nom ={‘m’, ‘a’, ‘t’, ‘i’, ‘n’, ‘\0’}; Lecture d’une chaîne de caractère avec cin. Lecture jusqu’à la rencontre d’espace, tabulation, fin de ligne, etc. Caractères en trop rangés dans la mémoire a la suite du tableau. 6

Tableaux comme chaine de caractères (Suite) Exercice 3 Ecrire un programme sans utiliser de fonction de <string>, qui vérifie si une chaîne CH introduite au clavier est un palindrome en utilisant uniquement le formalisme tableau Rappel: Un palindrome est un mot qui reste le même qu'on le lise de gauche à droite ou de droite à gauche. Ex: radar, kayak 7

Les pointeurs Variable destinée à contenir une adresse Déclaration d’un pointeur Type *nom_variable; int *p; Opérateurs utilisés avec les pointeurs &  Adresse de *  contenu de 8

Les pointeurs (Suite) Exercice 4 main() { int A = 1; int B = 2; int C = 3; int *P1, *P2; P1=&A; P2=&C; *P1=(*P2)++; P1=P2; P2=&B; *P1-=*P2; ++*P2; *P1*=*P2; A=++*P2**P1; *P2=*P1/=*P2; return 0; } Copiez le tableau suivant et complétez-le pour chaque instruction du programme ci-dessus. A B C P1 P2 Init. 1 2 3 / P1=&A &A P2=&C *P1=(*P2)++ P1=P2 P2=&B *P1-=*P2 ++*P2 *P1*=*P2 A=++*P2**P1 *P2=*P1/=*P2 9

Tableaux et pointeurs Le nom d’un tableau est un pointeur constant sur le premier élément du tableau. int a[5]; int *p; p = a  p = &a[0] P + 1 = &a[1]; *(p + 1) = a[1] ; 10

Tableaux et pointeurs Exercice 5 Ecrire un programme qui lit deux tableaux A et B et leurs dimensions N et M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser le formalisme pointeur à chaque fois que cela est possible. 11

Arithmétiques de pointeurs Affectation par un pointeur du même type int *p1, *p2; p1 = p2; Addition et soustraction d’un nombre entier Int tab[i], *p; p = &tab[i]; p+n = &tab[i+n] p – n = &tab[i-n] Incrémentation et décrémentation d’un pointeur P++  & tab[i+1] P--  &tab[i-1] 12

Arithmétiques de pointeurs (Suite) Soustraction de deux pointeurs int *p1, *p2; p1 = & tab[2] p2 = & tab[5] p1 – p2 fournit le nombre de composants comprises entre p1 et p2 Négatif si p1 précède p2 Zéro si p1 = p2 Positif si p2 précède p1 Indéfini si p1 et p2 ne pointe pas dans le même tableau. 13

Arithmétiques des pointeurs (Suite) Exercice 6 Soit P un pointeur qui 'pointe' sur un tableau A: int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90}; int *P; P = A; Quelles valeurs ou adresses fournissent ces expressions: a) *P+2 b) *(P+2) c) &P+1 d) &A[4]-3 e) A+3 f) &A[7]-P g) P+(*P-10) h) *(P+*(P+8)-A[7]) 14

Tableaux et pointeurs Exercice 7 Ecrire un programme qui range les éléments d'un tableau A du type int dans l'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour la permutation des éléments. 15

Pointeur sur char comme chaîne de caractères Déclaration char *nom; Initialisation nom = '' Baptiste '' Affectation On ne peut pas affecter une chaîne de caractère à une autre, il faut utiliser la fonction strcpy de la bibliothèque string. 16

Chaine de caractères (Suite) Exercice 8 Ecrire un programme qui lit une chaîne de caractères CH et détermine la longueur de la chaîne à l'aide d'un pointeur P. Le programme n'utilisera pas de variables numériques. 17

Allocation dynamique de la mémoire Allocation de la mémoire Déclaration de pointeur Utilisation de l’opérateur new int *p = new int[5]; Libération de la mémoire delete p; 18

Allocation dynamique de la mémoire Exercice 9 Écrire un programme qui lit 10 mots au clavier (longueur maximale: 50 caractères) et attribue leurs adresses à un tableau de pointeurs MOT. Effacer les 10 mots un à un, en libérant leur espace en mémoire. Afficher à chaque fois les mots restants en attendant l’appui de la touche validation par l'utilisateur. 19