Les structures. Chapitre 3



Documents pareils
Les fichiers. Chapitre 4

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 1 : La gestion dynamique de la mémoire

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Le langage C. Séance n 4

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Chap III : Les tableaux

V- Manipulations de nombres en binaire

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Rappels Entrées -Sorties

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Bases de programmation. Cours 5. Structurer les données

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Premiers Pas en Programmation Objet : les Classes et les Objets

Algorithmique et Programmation, IMA

Cours d initiation à la programmation en C++ Johann Cuenin

Programmation système I Les entrées/sorties

Programmation en langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Travaux Dirigés n 1 : chaînes de caractères

UE C avancé cours 1: introduction et révisions

Introduction à MATLAB R


Poker. A rendre pour le 25 avril

SUPPORT DE COURS. Langage C

Introduction au langage C

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

UE Programmation Impérative Licence 2ème Année

Programmation C++ (débutant)/instructions for, while et do...while

VOS PREMIERS PAS AVEC TRACENPOCHE

Programmation impérative

Utilisation d objets : String et ArrayList

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Créer le schéma relationnel d une base de données ACCESS

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours Programmation Système

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Initiation. àl algorithmique et à la programmation. en C

Les structures de données. Rajae El Ouazzani

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Algorithmique, Structures de données et langage C

Le prototype de la fonction main()

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Notions fondamentales du langage C# Version 1.0

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Algorithme. Table des matières

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

EXCEL TUTORIEL 2012/2013

Programmation Classique en langage C

GOL502 Industries de services

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

CREG : versailles.fr/spip.php?article803

INITIATION A LA PROGRAMMATION

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

IRL : Simulation distribuée pour les systèmes embarqués

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

3IS - Système d'exploitation linux - Programmation système

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Les chaînes de caractères

I. Introduction aux fonctions : les fonctions standards

Présentation du langage et premières fonctions

Cours 1: Java et les objets

ACTIVITÉ DE PROGRAMMATION

Langage Éric Guérin 5 octobre 2010

Cours d Algorithmique et de Langage C v 3.0

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

COMPARAISONDESLANGAGESC, C++, JAVA ET

Conventions d écriture et outils de mise au point

L informatique en BCPST

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Outils pour la pratique

1 Introduction - Qu est-ce que le logiciel R?

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation Internet en Java

Introduction au Langage de Programmation C

Créer un premier document avec Pages

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Programmation C. J.-F. Lalande. 15 novembre 2012

TP2 : tableaux dynamiques et listes chaînées

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Création d'un questionnaire (sondage)

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Apprendre Java en 154 minutes

Cours d algorithmique pour la classe de 2nde

Création et Gestion des tables

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Programmation système de commandes en C

Transcription:

Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre de données de même type, et de plus le type doit être assez simple (pour l instant). Les types structurés vont nous permettre de manipuler des données structurées dont les types des éléments peuvent être différents. Cela correspond à la notion de masque d un formulaire à remplir : on demande le nom; il y a un certain nombre de cases, indiquant par là le nombre maximum de lettres permises; on demande l année de naissance et on s attend à voir un entier. 29

30 CHAPITRE 3. LES STRUCTURES 3.1 Définition des types structurés 3.1.1 Un exemple introductif Introduction.- Le problème du répertoire téléphonique se pose à chacun d entre nous. Au début, nous connaissons par cœur les numéros de téléphone des gens que nous connaissons. Peu à peu nous en avons trop et il faut prendre quelques notes. Les notes s entassent et on aimerait bien mettre un peu d ordre. On pense à un répertoire téléphonique. Un répertoire réaliste comprendrait le nom, le prénom, le numéro de téléphone fixe, le numéro du mobile, le numéro du bureau, l adresse e-mail et bien plus. Considérons un cas très simple avec juste un nom et un numéro de téléphone par item. Une telle structure de données s appelle enregistrement (en anglais record) en PASCAL et tout simplement structure en langage C. Intéressons-nous à l exemple que nous venons d évoquer que nous étudierons au fur et à mesure dans les différentes divisions. Le problème.- Établissons une fiche pour chacun des items de notre répertoire. Simplifions le contenu de cette fiche, comme nous l avons déjà dit; vous pourrez l améliorer plus tard pour obtenir quelque chose de plus réaliste si vous le désirez. Disons qu une fiche contiendra un nom et un numéro de téléphone. Exercice 1.- Pourquoi le masque de ce formulaire est-il peu réaliste? Précisions.- Précisons un peu la nature des données : - le nom sera un mot de longueur inférieure à 29; - le numéro de téléphone sera un mot de longueur inférieure à 19. Un premier exemple de déclaration de type structuré.- Ces décisions nous permettent de considérer la fiche comme un élément du type structuré suivant : struct item char nom[30]; char tel[20]; 3.1.2 Syntaxe de la définition d un type structuré Introduction.- Nous venons de rencontrer un nouveau constructeur de types, permettant d obtenir des types plus complexes à partir d autres types, simples ou eux-mêmes déjà complexes. Ce type correspond à la définition de ce qu on appelle un masque pour une fiche. Les éléments de ce type correspondent aux fiches proprement dites. Définition d un type structuré.- La syntaxe suit la règle suivante : struct nom type 1 champ 1; type 2 champ 2; - - - - - - - type n champ n;

3.2. DÉCLARATION DES VARIABLES STRUCTURÉES 31 où nom, champ 1,..., champ n sont des identificateurs (non utilisés pour autre chose) et type 1,..., type n des types. Chacun des identificateurs s appelle un champ ou un membre. Exercice.- Considérons l exemple précédent. Combien y a-t-il de champs? Quels sont leurs noms? Quel est le type de chacun d eux? 3.2 Déclaration des variables structurées 3.2.1 Un exemple Exemple.- Pour le type structuré ci-dessus on peut déclarer une variable, disons personne, de la façon suivante : struct item personne; On remarquera la nécessité de répéter le mot clé struct. Remarque.- On peut ne pas donner de nom au type structuré si on déclare en même le type et les variables de ce type comme dans l exemple suivant : struct char nom [30]; char tel [20]; personne; mais ceci est à éviter. 3.2.2 Syntaxe de la déclaration d une variable structurée Une variable d un type structuré (appelée parfois variable structurée) se déclare de la façon suivante : struct nom var; où var est un identificateur et nom le nom d un type structuré. 3.3 Accès aux champs d une structure 3.3.1 Syntaxe Les variables d un type structuré peuvent être manipulées globalement dans une affectation ou champ par champ. L accès à un champ se fait grâce à l opérateur de champ.. Par exemple personne.nom permet d accéder au champ nom de la variable structurée personne. 3.3.2 Continuation de l exemple Le problème.- Nous voulons initialiser notre répertoire. On voudrait un programme qui permette d initialiser les fiches (avec le nom et le numéro de téléphone), puis d afficher le répertoire ainsi obtenu.

32 CHAPITRE 3. LES STRUCTURES Exercice.- Expliquer pourquoi ce peu de manipulations est assez irréaliste. Énumérer d autres manipulations qui rendraient le cahier des charges plus réaliste. Précisions.- Nous allons demander le nom, puis le numéro de téléphone. Nous considérerons qu un nom commençant par # est une valeur sentinelle de fin d initialisation. Notre fichier comprendra au plus 100 fiches. Un programme.- Donnons un programme réalisant ce que nous voulons : /* init.c */ #include <stdio.h> #include <string.h> struct item char nom[30]; char tel[20]; struct item fichier[100]; int n; char name[30]; void initialiser(void) n = 0; printf("nom : "); gets(name); while (name[0]!= # ) strcpy(fichier[n].nom,name); printf("numero de telephone : "); gets(fichier[n].tel); n++; printf("nom : "); gets(name); void afficher(void) int i; for (i = 0; i < n; i++) printf("%30s : %20s\n", fichier[i].nom, fichier[i].tel); void main(void)

3.4. PARTICULARITÉS DES STRUCTURES EN C 33 initialiser(); afficher(); Remarque.- Ce programme est destiné à fonctionner en continu. Dès qu on éteint l ordinateur toutes les données sont perdues. Nous verrons dans le chapitre suivant l intérêt des fichiers (au sens informatique) permettant de résoudre ce problème. 3.4 Particularités des structures en C Nous venons de voir comment on met en place en langage C les notions sur les structures que l on rencontre dans la plupart des langages de programmation (implémentant cette notion). Nous allons voir maintenant quelques particularités du langage C. 3.4.1 Possiblité de l affectation globale Dans le langage C (de la norme ANSI seulement) on peut utiliser l affectation globale du genre : item 1 = item 2; alors que ceci n est pas possible dans un langage tel que PASCAL. 3.4.2 Initialisation lors de la déclaration En langage C on peut initialiser une variable structurée lors de sa déclaration, comme pour les tableaux avec des accolades et des virgules. Par exemple : struct personne char nom [30]; char prenom [20]; int age; struct personne item = "Dubois", "Paul", 30 3.4.3 Type pointeur de structure Introduction.- Il n y a pas de notion nouvelle à voir mais le langage C permet, outre la notation classique, une notation souvent utile. Exemple.- Voulant créer un répertoire on considère des structures comportant des champs pour le nom et le numéro de téléphone : #include <string.h> struct donnee char nom [30]; char tel [20]; struct donnee *ptr, personne;

34 CHAPITRE 3. LES STRUCTURES ptr = &personne; strcpy((*ptr).nom, "Paul"); strcpy((*ptr).tel, "01 24 34 44 54"); Opérateur flèche.- Les parenthèses dans l accès au champ (*ptr).nom sont obligatoires. Pour ne pas alourdir les notations, on peut utiliser l opérateur flèche équivalent qui donne : strcpy(ptr->nom, "Paul"); la flèche étant tout simplement obtenue, au clavier, par la concaténation des symboles tiret et strictement plus grand. 3.5 Structure comme paramètre de fonction Introduction.- Une structure peut servir de paramètre à une fonction, avec passage par valeur ou par adresse, et peut être le résultat d une fonction, sans qu il n y ait rien de plus à en dire. Exercice.- Écrire des fonctions affiche() et saisie() pour la structure précédente. [ Les déclarations seront : void affiche( struct donnee personne); void saisiee( struct donnee *personne); les appels se faisant sous la forme : affiche(personne); saisie(&personne); de façon habituelle. ] Exercice.- (Opérations sur les rationnels) Définir un type rationnel comportant les deux champs num (pour numérateur) et den (pour dénominateur) de types entier puis des fonctions permettant la saisie d un rationnel, son affichage, la somme, la multiplication, la soustraction et la division de deux rationnels. Les incorporer dans un programme complet.