PG208, Exercice préparatoire

Documents pareils
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programme Compte bancaire (code)


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

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

Le langage C. Séance n 4

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

1.6- Génération de nombres aléatoires

Utilisation d objets : String et ArrayList

INFO-F-105 Language de programmation I Séance VI

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Une introduction à Java

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

Introduction au pricing d option en finance

PG208, Projet n 3 : Serveur HTTP évolué

Cours d Algorithmique et de Langage C v 3.0

Recherche dans un tableau

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)

Algorithmique et Programmation, IMA

Algorithmique & programmation

Introduction à l algorithmique et à la programmation M1102 CM n 3

TD3: tableaux avancées, première classe et chaînes

TP1 : Initiation à Java et Eclipse

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à l héritage en C++

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Chapitre 10. Les interfaces Comparable et Comparator 1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours 14 Les fichiers

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

et Programmation Objet

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

ACTIVITÉ DE PROGRAMMATION

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 : Gestion d une image au format PGM

Programmation en C/C++

Projet de programmation (IK3) : TP n 1 Correction

Claude Delannoy. 3 e édition C++

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Notions fondamentales du langage C# Version 1.0

Langage Java. Classe de première SI

I. Introduction aux fonctions : les fonctions standards

Programmation système I Les entrées/sorties

Utilitaires méconnus de StrataFrame

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

as Architecture des Systèmes d Information

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

CHAPITRE V. Recherche et tri

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

Programmation en Java IUT GEII (MC-II1) 1

Algorithmique et programmation : les bases (VBA) Corrigé

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

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

TP 1. Prise en main du langage Python

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

TP3 : Manipulation et implantation de systèmes de fichiers 1

Programmation stochastique

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Conventions d écriture et outils de mise au point

Introduction au langage C

Premiers Pas en Programmation Objet : les Classes et les Objets

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Introduction à la programmation concurrente

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

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Procédure d'utilisation de Password Gorilla

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

Algorithmique I. Algorithmique I p.1/??

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

Utilisez Toucan portable pour vos sauvegardes

Java Licence Professionnelle CISII,

Programmer en JAVA. par Tama

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

STAGE IREM 0- Premiers pas en Python

1 Recherche en table par balayage

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Tp 1 correction. Structures de données (IF2)

Introduction à MATLAB R

Le prototype de la fonction main()

Programmation Orientée Objet Java

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Poker. A rendre pour le 25 avril

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Programmation système en C/C++

Exercices sur les interfaces

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Cours de Programmation 2

Corrigé des TD 1 à 5

RÉALISATION D UN SITE DE RENCONTRE

Transcription:

PG208, Exercice préparatoire Bertrand LE GAL, Jérémie CRENNE, Guillaume DELBERGUE et Thibaud TONNELLIER Filière électronique 2 eme année - Année universitaire 2014-2015 Avant d aborder le projet de conception objet, une séance de mise en pratique des notions vues en cours est indispensable. Afin d optimiser le déroulement de la séance, il vous est demandé de préparer à l avance l exercice. Cette préparation préliminaire sera évaluée par votre enseignant. Présentation du sujet de l étude Afin d illustrer au mieux les différentes notions vues en cours, nous avons décidé de vous faire développer une classe permettant de mémoriser les informations relatives à une personne. Cette classe nommée Personne devra permettre de décrire un individu sachant que l on souhaite avoir autant d informations que dans la phrase suivante : = Mr John Doe est né en 1969 (43 ans), il est célibataire. Travail préparatoire Dans ce TP vous allez être à la fois concepteur et utilisateur de la classe Personne. Votre première tache consiste à définir la structure de la classe (attributs/méthodes). Pour cela vous devrez identifier les informations à mémoriser à partir de l exemple précédent. Durant cette étape, vous prendrez soin d utiliser à bon escient les niveaux de visibilité offerts par le langage C++. De plus, afin d accéder aux attributs de la classe, vous définirez les accesseurs et mutateurs qui vous semblent nécessaires. Une fois ce travail terminé, vous n aurez plus qu à développer le code associé aux méthodes. Enfin, vous écrirez un programme (main) qui permet de tester le bon fonctionnement de votre classe. Pour cela vous créerez deux Personnes et afficherez leurs informations. bertrand.legal(at)ims-bordeaux.fr jeremie.crenne(at)ims-bordeaux.fr guillaume.delbergue(at)ims-bordeaux.fr thibaud.tonnellier(at)ims-bordeaux.fr 1

Remarque 1 : afin de vous simplifier la vie, vous pourrez utiliser toutes les classes disponibles dans la STL. Remarque 2 : votre classe devra posséder une méthode publique nommée void af f icheinf ormations() qui aura pour rôle d afficher les informations à l écran (tel que cela est présenté dans l énoncé). Remarque 3 : votre classe possédera un constructeur dont le nombre de paramètres sera suffisant pour permettre la création d une Personne à partir de toutes les informations nécessaires. Travail demandé en séance Etape 1 Dans un premier temps utiliser l?outil QtCreator afin de coder la classe et le programme main que vous avez imaginé dans le travail préparatoire. Vérifier le fonctionnement de votre code. Etape 2 Nous souhaitons maintenant pouvoir créer des personnes à partir d informations contenues dans des fichiers textuels. Ajouter à votre classe deux méthodes nommées bool loadf romf ile(const char f ilename) et bool savet of ile(const char f ilename). De plus, ajouter un constructeur dans votre classe afin de permettre la création d?une Personne à partir du nom du fichier qui contient les informations. Vous testerez votre programme en enregistrant les 2 personnes que vous avez créées précédemment «en dur». Remarque 4 : pour vous simplifier la vie, vous pourrez mémoriser une seule information par ligne. Etape 3 Nous souhaitons pouvoir gérer simplement un ensemble de personnes. Les informations relatives à ces Personnes seront mémorisées dans des fichiers sauvegardés sur le disque dur. Le nom des fichiers sera standardisé personne_xx.txt avec XX un nombre entier sur 2 digits. Modifiez votre programme afin dans un premier temps de charger tous les fichiers. Puis d afficher les informations relatives aux personnes. Enfin de faire le proprement le ménage. Etape 4 Nous souhaitons rajouter des fonctionnalités à la classe Personne. Toutefois nous ne souhaitons pas alourdir l occupation mémoire de cette dernière. Afin de répondre à ce besoin, vous allez devoir définir 2

une nouvelle classe (ExtPersonne). Nous souhaitons que cette nouvelle classe modifie l affichage des informations relative à une personne de la manière suivante : = [ACTIF : J.DOE-69] Mr John Doe est né en 1969 (43 ans), il est célibataire. La clef a insérer au début de l affichage des informations est constituée de 4 champs : le statut de la personne, l?initiale du prénom, le nom de famille en majuscule ainsi que les deux derniers chiffres de l année de naissance. Le statut d une personne sera sélection en fonction de l age de la personne : 0 age < 12 ENF ANT 12 age < 18 ADOLESCENT 18 age < 65 ACT IF 65 age < 99 RET RAIT E Ecrivez cette nouvelle classe : sans utiliser d attributs supplémentaires, en prenant soin de minimiser le nombre de lignes de code que vous écrivez. Modifiez votre main pour tester cette nouvelle classe. Etape 5 Normalement dans la question précédente, vous avez du remplacer toutes les utilisations de la classe Personne par des utilisations de la classe ExtPersonne. Ce choix est discutable, en effet, des ExtPersonnes sont aussi des Personnes (par construction). Modifiez votre programme en conséquence & corriger le problème qui vient d apparaître... 3

Exemples de codes sources utiles Le premier exemple de code vous montre comment il est possible de lire l ensemble d un fichier de type textuel en C++. Cet exemple lit les informations ligne par ligne et les affiche à l écran. #include <iostream > #include <fstream> #include <s t r i n g > using namespace std ; void main ( ) s t r i n g STRING; i f s t r e a m i n f i l e ; i n f i l e. open ( "names.txt" ) ; while (! i n f i l e. e o f ) g e t l i n e ( i n f i l e,string ) ; cout << STRING; i n f i l e. c l o s e ( ) ; Dans ce second exemple, le code C++ présenté permet de lire une chaîne de caractère tapée par l utilisateur dans la console. La lecture de la chaîne de caractères est réalisée lorsque l utilisateur appuie sur la touche return. void l e c t u r e _ c l a v i e r ( ) s t r i n g chaine ; cout << "Entrez une phrase : " << endl ; g e t l i n e ( cin, chaine ) ; cout << "La phrase est : " << chaine << endl ; Ce troisième exemple illustre les méthodes disponibles dans la classe string. Ces dernières vous seront sûrement utiles lors de votre développement. void t e s t _ s t r i n g ( ) s t r i n g c = "Voici une phrase!" ; cout << "Taille de la chaine : " << c. length ( ) << endl ; 4

cout << "Pos. du premier espace : " << c. f i n d ( " " ) << endl ; cout << "Pos. du dernier espace : " << c. r f i n d ( " " ) << endl ; cout << "Pos. du mot une : " << c. f i n d ( "une" ) << endl ; cout << "Premier mot : " << c. s u b s t r ( 0, c. f i n d ( " " ) ) << endl ; cout << "Comparaison (true) : " << c. compare ( c ) << endl ; cout << "Comparaison (false) : " << c. compare ( "TOTO" ) << endl ; Ce quatrième exemple vous permet de découper une chaîne de caractères en sous parties en fonction d un séparateur (ici le caractère "="). void decoupe_string ( ) s t r i n g c ; cout << "Entrez une phrase : " << endl ; g e t l i n e ( cin, c ) ; int t a i l l e = c. s i z e ( ) ; i f ( t a i l l e!= 0 ) int pos = c. f i n d ( = ) ; cout << "Ligne lue : *" << c << "*" << endl ; cout << "Position: " << pos << endl ; cout << "Mot 1 : " << c. s u b s t r ( 0, pos ) << endl ; cout << "Mot 2 : " << c. s u b s t r ( pos +1, t a i l l e (pos +1)) << endl ; Ce cinquième exemple vous indique la procédure à suivre pour récupérer un pointeur sur la chaine de caractère contenue dans un objet de type string. void pointeur_char ( ) s t r i n g STRING; cout << "Votre message = " ; g e t l i n e ( cin, STRING ) ; char chaine = STRING. c_str ( ) ; cout << "INTEGER = " << a t o i ( chaine ) ; Ce dernier exemple vous montre une méthode efficace pour convertir les données contenues dans une chaîne de caractères en majuscules. Cette approche nécessite l inclusion de la bibliothèque < algorithm > dans votre programme. 5

s t r i n g str_to_upper ( s t r i n g s t r ) s t r i n g str_up = s t r ; std : : transform ( str_up. begin ( ), str_up. end ( ), str_up. begin ( ), : : toupper ) ; cout << s t r << endl ; return str_up ; 6