TD n 2 et 3 d Informatique



Documents pareils
Corrigé des TD 1 à 5

Examen Médian - 1 heure 30

Algorithmes et programmation en Pascal. Cours

Programmation structurée et algorithmes de base en Pascal

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Application 1- VBA : Test de comportements d'investissements

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

Algorithmique et programmation : les bases (VBA) Corrigé

Recherche dans un tableau

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

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

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Création d installateurs pour Windows avec InnoSetup

Cours Informatique Master STEP

Algorithmique & programmation

Plan du cours. Historique du langage Nouveautés de Java 7

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

Comment Créer une Base de Données Ab Initio

Projet de programmation (IK3) : TP n 1 Correction

Enseignement secondaire technique

1. Structure d'un programme FORTRAN 95

Génie Logiciel avec Ada. 4 février 2013

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Utiliser une base de données

Chapitre 10. Les interfaces Comparable et Comparator 1

Bernard HAMM, Évelyne LAVOISIER

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Les structures. Chapitre 3

LES TYPES DE DONNÉES DU LANGAGE PASCAL

SOMMAIRE. Travailler avec les requêtes... 3

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Adama MBODJI MBODJ.SYSTEM

Arbres binaires de recherche

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

Programmer en JAVA. par Tama

Cyberclasse L'interface web pas à pas

Créer des étiquettes avec les adresses d'un tableau Calc

Module Communication - Messagerie V6. Infostance. Messagerie

1 Recherche en table par balayage

Télécharger et Installer OpenOffice.org sous Windows

Swisscom Webmail - mode d emploi

Programmation Objet - Cours II

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

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

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)

ENVOI EN NOMBRE DE MESSAGES AUDIO

Algorithmique et Programmation, IMA

Caisses Sociales de Monaco - Déclarations de Salaires DIDACTICIEL. Version 3.2

ACTIVITÉ DE PROGRAMMATION

Programmation C. Apprendre à développer des programmes simples dans le langage C

.NET - Classe de Log

Structure fonctionnelle d un SGBD

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

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

1 Lecture de fichiers

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

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

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

2 Grad Info Soir Langage C++ Juin Projet BANQUE

TRIGONOMETRIE Algorithme : mesure principale

Programmation sous Delphi

Gestion du parc informatique des collèges du département du Cher. Manuel d utilisation de la solution de gestion de Parc

0 si a=b. Si a^ et b^ sont deux éléments différents du même anneau, alors le résultat de

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

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

TABLE DES MATIERES 1 PRÉSENTATION...1

Préparation à l examen EFA en Macro

SYSTÈME DE GESTION DE FICHIERS

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

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

GUIDE RAPIDE EXPERT espace de partage

Gestion de base de données

ENVOI EN NOMBRE DE SMS

Utiliser ma messagerie GMAIL

PUBLIPOSTAGE DANS WRITER

WINDOWS LIVE MAIL. Table des matières

TP1 : Initiation à l algorithmique (1 séance)

GESTION DE L'ORDINATEUR

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Introduction à MATLAB R

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage Java. Classe de première SI

Document d accompagnement pour l utilisation du Cartable en ligne Lycée des Métiers Fernand LÉGER 2013/2014

CAPTURE DES PROFESSIONNELS

Corrigé des exercices sur les références

PROSPECTION CLIENTS. À Présentation : PROSPECT. 2 Téléchargement. 3 Installation. 6 Ecran d accueil. 7 Paramétrage. 13 Utilitaires

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Excel et les bases de données

1 - Se connecter au Cartable en ligne

Traitement des appels Accès au pages Web Options utilisateurs

Introduction au langage C

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

as Architecture des Systèmes d Information

Transcription:

DEUG MIAS S2 Février 1999 TD n 2 et 3 d Informatique Gestion d un carnet d adresses Le but de ces TD est de proposer une solution de gestion d un ensemble d informations concernant des personnes (nom, prénom, adresse, code postal, ville, téléphone, e-mail ) *. On désire pouvoir créer, consulter, supprimer et modifier ce répertoire. 1) Proposer une structure de données permettant de stocker les informations concernant une personne, puis une structure de données permettant de stocker durablement toutes les informations relatives à toutes les personnes. 2) Définir une procédure de saisie des données relatives à une personne, puis de stockage de ces données. 3) Définir une procédure permettant d accéder à la liste des personnes et de l afficher soit dans un fichier texte, soit à l écran. 4) Définir une procédure de consultation des renseignements relatifs à une personne donnée. On suppose que l on connaît la position de la personne dans le répertoire. 5) Définir une procédure de modification des renseignements relatifs à une personne donnée dont on connaît la position dans le répertoire. 6) Définir une procédure de suppression d une personne donnée dont on connaît la position dans le répertoire. 7) Définir une procédure de recherche des renseignements concernant une personne à partir du nom et du prénom de la personne. 8) Définir une procédure permettant de lister toutes les personnes habitant une ville donnée. 9) Définir une procédure de tri par ordre alphabétique (nom + prénom) des personnes du répertoire. Question subsidiaire : Une fois la liste triée, définir une procédure de recherche des renseignements concernant une personne plus rapide que celle de la question 7). * Pour information, il faut savoir que la constitution et l exploitation d un fichier informatique contenant des informations sur des individus doit être soumis à l accord de la CNIL (Commission Nationale Informatique et Liberté). Dans le cas contraire, de graves sanctions pénales sont encourues.

DEUG MIAS S2 Février 1999 TP n 2 et 3 d Informatique Gestion d un carnet d adresses Le but de ces TP est d implémenter en PASCAL les procédures conçues en TD. Écrire un programme principal avec menu permettant les opérations suivantes : 1) créer/recréer le fichier contenant les données ; 2) ajouter un ou plusieurs enregistrements ; 3) obtenir la liste des enregistrements à l écran ou dans un fichier texte ; 4) afficher les renseignements concernant une personne à partir de sa position dans le fichier ; 5) modifier les données concernant une personne, sachant sa position dans le fichier ; 6) supprimer une personne du fichier, sachant sa position dans le fichier ; 7) rechercher les renseignements concernant une personne à partir de son nom et de son prénom ; 8) rechercher toutes les personnes habitant une ville donnée ; 9) trier le fichier par ordre alphabétique des noms et des prénoms des personnes. À partir du fichier trié, on pourra également définir une procédure de recherche rapide des renseignements concernant une personne (à partir de son nom et de son prénom).

DEUG MIAS S2 Février 1999 TP n 2 et 3 d Informatique Gestion d un carnet d adresses : correction {DEUG MIAS S2 - TP 2-3 : Gestion d'un carnet d'adresses} program TP2_3; uses crt; {Declaration des types} TYPE {Enregistrement} enr=record nom: string; prenom: string; adresse: string; cp: string; ville: string; tel: string; mail: string; {Fichier d'enregistrements} fic=file of enr; {Declaration des variables globales} VAR rep: fic; choix: integer; {Fichier contenant le repertoire} {Attente d'une touche au clavier} PROCEDURE var c: char; writeln('presser une touche...'); c:=readkey; {Creation du fichier de donnees f} PROCEDURE creation(var f: fic); var choix: integer; write('detruire le fichier existant (1) ou Annuler (2)? '); readln(choix); until (choix=1) or (choix=2); if choix=1 then rewrite(f);

writeln('ok.'); {Ajout d'enregistrements dans le fichier f} PROCEDURE ajout(var f: fic); var nouveau: enr; choix: integer; {Positionnement en fin de fichier} seek(f,filesize(f)); {Saisie} with nouveau do writeln('numero : ',filepos(f)); write('nom : ');readln(nom); write('prenom : ');readln(prenom); write('adresse : ');readln(adresse); write('code postal : ');readln(cp); write('ville : ');readln(ville); write('telephone : ');readln(tel); write('e-mail : ');readln(mail); {Stockage} write(f,nouveau); {Stop ou encore} write('saisir un nouveau correspondant (1) / Fin (0)? ');readln(choix); until choix=0; {Liste des enregistrements du fichier f a l'ecran ou dans un fichier texte} PROCEDURE liste(var f: fic); var res: text; choix, l: integer; {Ecran ou texte?} write('sortie a l''ecran (1) ou dans un fichier texte (2)? '); readln(choix); until (choix=1) or (choix=2); if (choix=1) then assigncrt(res) {Fichier texte assigne a la console} else assign(res, 'rep.txt'); {Fichier texte assigne a rep.txt} writeln('resultat dans le fichier REP.TXT.'); {Parcours de f} rewrite(res); l:=0; while not eof(f) do

{Lecture d'un enregistrement dans f} l:=l+9; {L'affichage d'un enregistrement tient 8 lignes} if (choix=1) and (l>=24) then {Pause en bas de l'ecran} l:=0; {Ecriture de l'enregistrement dans res} writeln(res,' '); writeln(res,'numero : ',filepos(f)-1); writeln(res,'nom : ',nom); writeln(res,'prenom : ',prenom); writeln(res,'adresse : ',adresse); writeln(res,'code postal : ',cp); writeln(res,'ville : ',ville); writeln(res,'telephone : ',tel); close(res); writeln(res,'e-mail {Saisie de position dans le fichier f} : ',mail); FUNCTION saisiepos(var f: fic): integer; var pos: integer; write('position dans le fichier (0-',filesize(f)-1,') : '); readln(pos); until (pos>=0) and (pos<=filesize(f)-1); saisiepos:=pos; {Affichage d'un enregistrement a partir de sa position dans le fichier f} PROCEDURE acces(var f: fic); var pos: integer; pos:=saisiepos(f); seek(f,pos); writeln('numero : ',pos); writeln('nom : ',nom); writeln('prenom : ',prenom); writeln('adresse : ',adresse); writeln('code postal : ',cp); writeln('ville : ',ville); writeln('telephone : ',tel); writeln('e-mail : ',mail);

{Modification d'un enregistrement a partir de sa position dans le fichier f} PROCEDURE modif(var f: fic); var pos: integer; pos:=saisiepos(f); {Saisie} writeln('numero : ',pos); write('nouveau nom : ');readln(nom); write('nouveau prenom : ');readln(prenom); write('nouvelle adresse : ');readln(adresse); write('nouveau Code postal : ');readln(cp); write('nouvelle Ville : ');readln(ville); write('nouveau Telephone : ');readln(tel); write('nouvel E-mail : ');readln(mail); {Positionnement dans le fichier et stockage} seek(f,pos); write(f,r); {Suppression d'un enregistrement a partir de sa position dans le fichier f} PROCEDURE suppression(var f: fic); var pos, i: integer; temp: fic; pos:=saisiepos(f); assign(temp, 'temp.fic'); rewrite(temp); {Copie du fichier f dans le fichier temp jusqu'a la position pos-1} for i:=0 to pos-1 do seek(f,i); write(temp,r); {Copie du fichier f dans le fichier temp de la position pos+1 a la fin} for i:=pos+1 to filesize(f)-1 do seek(f,i); write(temp,r); close(temp); {Suppression de l'ancien fichier f et remplacement par temp} erase(f); rename(temp, 'rep.fic'); assign(f, 'rep.fic'); writeln('ok.');

{Recherche a partir du nom et du prenom dans le fichier f} PROCEDURE recherche_nom(var f: fic); var nc, pc: string; trouve: boolean; {Saisie nom a rechercher} write('nom a chercher : ');readln(nc); write('prenom a chercher : ');readln(pc); trouve:=false; {Parcours sequentiel de f} while (not eof(f)) and (not trouve) do if (r.nom=nc) and (r.prenom=pc) then trouve:=true; {Affichage resultat} if (trouve) then writeln('adresse : ',adresse); writeln('code postal : ',cp); writeln('ville : ',ville); writeln('telephone : ',tel); writeln('e-mail : ',mail); end else writeln('personne ne correspond a ce nom et ce prenom...'); {Recherche dans le fichier f des personnes habitant une ville donnee} PROCEDURE recherche_ville(var f: fic); var v: string; c: integer; write('ville : ');readln(v); {Parcours de f avec affichage des habitants} c:=0; while not eof(f) do if r.ville=v then writeln(filepos(f),') ',r.nom,' ',r.prenom); c:=c+1;

if c=0 then writeln('personne dans cette ville...'); {Tri du fichier f par ordre alphabetique (par permutation)} PROCEDURE tri(var f: fic); var r1, r2: enr; i, j: integer; for i:=0 to filesize(f)-2 do seek(f,i); read(f,r1); for j:=i+1 to filesize(f)-1 do seek(f,j); read(f,r2); if (r1.nom+r1.prenom)>(r2.nom+r2.prenom) then {Permutation} seek(f,i); write(f,r2); seek(f,j); write(f,r1); r1:=r2; writeln('ok.'); {Recherche rapide a partir du nom et du prenom dans le fichier trie f} PROCEDURE dicho(var f: fic); var nc, pc: string; trouve: boolean; min, max, pos, it: integer; {Saisie nom a rechercher} write('nom a chercher : ');readln(nc); write('prenom a chercher : ');readln(pc); {Recherche dans f par dichotomie} trouve:=false; it:=0; min:=0; max:=filesize(f)-1; while (min<=max) and (not trouve) do pos:=min+trunc((max-min)/2); seek(f,pos); it:=it+1; if (r.nom+r.prenom)=(nc+pc) then trouve:=true else if (r.nom+r.prenom)>(nc+pc) then max:=pos-1 else min:=pos+1;

{Affichage resultat} if (trouve) then writeln('adresse : ',adresse); writeln('code postal : ',cp); writeln('ville : ',ville); writeln('telephone : ',tel); writeln('e-mail : ',mail); write('(trouve en ',it,' iteration'); if it>1 then write('s'); writeln(')'); end else writeln('personne ne correspond a ce nom et ce prenom...'); {Programme principal} BEGIN {Initialisations} assign(rep,'rep.fic'); {Menu} clrscr; writeln('1) Creer/recreer le fichier de donnees'); writeln('2) Ajouter des enregistrements'); writeln('3) Liste des enregistrements'); writeln('4) Affichage d''un enregistrement a partir de sa position'); writeln('5) Modification d''un enregistrement a partir de sa position'); writeln('6) Suppression d''un enregistrement a partir de sa position'); writeln('7) Recherche a partir du nom et du prenom'); writeln('8) Recherche des personnes habitant une ville'); writeln('9) Tri par ordre alphabetique'); writeln('666) Recherche rapide sur fichier trie'); writeln('0) Fin'); write('votre choix : ');readln(choix); case choix of 1: creation(rep); 2: ajout(rep); 3: liste(rep); 4: acces(rep); 5: modif(rep); 6: suppression(rep); 7: recherche_nom(rep); 8: recherche_ville(rep); 9: tri(rep); 666: dicho(rep); until choix=0; END.