Génie Logiciel Industriel - Travaux pratiques



Documents pareils
NOTICE TELESERVICES : Gérer les contrats de paiement de l impôt sur le revenu

MODE D EMPLOI DU MODULE D E-COMMERCE

Traitement des données avec Microsoft EXCEL 2010

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

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

Site Professionnel Opticiens :

NOTICE TELESERVICES : Payer un impôt et gérer les contrat de paiement des impôts professionnels

Le langage C. Séance n 4

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

ACCÈS AUX COMPTES EN LIGNE : VOTRE GUIDE D UTILISATION. pour un accès à votre portefeuille partout et en tout temps

Formation. Module WEB 4.1. Support de cours

CAPTURE DES PROFESSIONNELS

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

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

COMPTABILITE SAGE LIGNE 30

GUIDE D UTILISATION. Gestion de compte. à destination des CFA

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

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Guide informatique AUDIT EVALUATION DE LA PRATIQUE DE L ANTIBIOPROPHYLAXIE EN MATERNITE

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Architecture des Systèmes d Information Architecture des Systèmes d Information

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

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

GUIDE D UTILISATION. Gestion de compte. à destination des entreprises (Employeurs et Organismes de Formation)

Introduction à MATLAB R

Si vous décidez d utiliser un autre chemin, c est ce nouveau chemin qu il faudra prendre en compte pour la sauvegarde. Cf. : Chapitre 9 Sauvegarde

Groupe Eyrolles, 2003, ISBN : X

ENVOI EN NOMBRE DE MESSAGES AUDIO

AIDE MEMOIRE. Forprev. De l habilitation à la gestion de sessions. Page 1 sur 55

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

Publier un Carnet Blanc

ENVOI EN NOMBRE DE SMS

La Programmation Orientée Agent Les Agents Réactifs

Import d un fichier de contacts dans une campagne

Créer une base de données vidéo sans programmation (avec Drupal)

1 Presentation du bandeau. 2 Principe de création d un projet : C2 industrialisation Apprendre Gantt project Ver 2.6 planifier

Introduction : L accès à Estra et à votre propre espace Connexion Votre espace personnel... 5

TD de supervision. J.P. Chemla. Polytech Tours Département productique 2ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

26 Centre de Sécurité et de

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Guide d aide à la réservation par internet

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Baladeur Santé VITAL'ACT

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

A.-M. Cubat PMB - Import de lecteurs - Généralités Page 1 Source :

1. Introduction Création d'une requête...2

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

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

Google Drive, le cloud de Google

ENVOI EN NOMBRE DE SMS

SCONET Modifications apportées dans la version SCONET

BIRT (Business Intelligence and Reporting Tools)

GUIDE D UTILISATION CHRONOTRACE Pour suivre vos envois dans le monde entier

Peut être utilisée à l intérieur du site où se trouve la liste de référence.

Annexe commune aux séries ES, L et S : boîtes et quantiles

COMMUNICATION PC/MINITEL

FACTURATION. Menu. Fonctionnement. Allez dans le menu «Gestion» puis «Facturation» 1 Descriptif du dossier (onglet Facturation)

Fonctions de plusieurs variables

Publier dans la Base Documentaire

SAP BusinessObjects Web Intelligence (WebI) BI 4

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

34BGuide de l utilisateur de la boutique en ligne. TAccueil de la boutique e-transco de la Côte-d Or

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Administration en Ligne e-démarches. Console du gestionnaire. Guide utilisateur. Aout 2014, version 2.1

Continuité et dérivabilité d une fonction

Algorithmes récursifs

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

SELENE : Guide d utilisation de l outil de remontée des fichiers de promouvables

6. PAIEMENT - ÉTAT DE COMPTE

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Guide Utilisateur simplifié Proofpoint

Guide d utilisation. des services en ligne. Le portail des auto-entrepreneurs

COMPTABILITE SAGE LIGNE 100

Création d'un questionnaire (sondage)

COURS WINDEV NUMERO 3

CREG : versailles.fr/spip.php?article803

Correction des Travaux Pratiques Organiser son espace de travail

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

Limites finies en un point

Application 1- VBA : Test de comportements d'investissements

Espace Client Aide au démarrage

Guide d utilisation du groupe Yahoo Aprogemere

V- Manipulations de nombres en binaire

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

MANUEL UTILISATEUR BALADEUR SANTÉ AUXILIAIRES MÉDICAUX ET SAGES-FEMMES C.D.C 1.40

Guide concernant l accès au service TFP Internet pour les. notaires, institutions financières et les représentants légaux.

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

Algorithmique, Structures de données et langage C

Sommaire. Promo 39 B WINDOWS 2003 SERVER PART 1

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

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Taxnet Pro. Fiche de consultation rapide

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Le module Supply Chain pour un fonctionnement en réseau

COMMENT TROUVER VOS FUTURS CLIENTS À L INTERNATIONAL? 05/03/2015 Creditsafe France

SUGARCRM MODULE RAPPORTS

Transcription:

- Travaux pratiques TP1 : Recherche par dichotomie I. Introduction. L objectif de ce TP est de mettre en pratique des notions de base du langage C (entrées/sorties, structure de contrôle, fonctions, ). I.1. Principe de dichotomie. L application choisie met en œuvre le principe de dichotomie, qui permet de retrouver rapidement un dans un ensemble fini ordonné (défini par un intervalle, par exemple, ou encore par un tableau trié). L n est pas recherché séquentiellement, mais comparé à l médian (présent en milieu d intervalle). S ils sont identiques, la recherche est terminée. Si l cherché est inférieur à l médian, on recommence la recherche sur la première moitié de l intervalle. Sinon, on recommence sur la seconde moitié de l intervalle. Dans le premier exercice, c est l utilisateur qui procède (mentalement) par dichotomie pour deviner un nombre inconnu généré par l ordinateur. Dans le second exercice, les rôles sont inversés : c est l ordinateur qui doit deviner le nombre secret auquel pense l utilisateur. Le troisième exercice est un autre exemple d application de la dichotomie. I.2. Exemple. Imaginons que A fasse deviner à B le nombre secret 11 dans l intervalle [0,16]. La première proposition de B est l médian de [0,16], soit 8 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A indique à B que cette proposition est trop petite. B réduit donc son espace de recherche à la moitié supérieure de l intervalle ([9,16]), puis propose le nouvel médian, soit 12 (ou 13) : 9 10 11 12 13 14 15 16 A indique à B que cette proposition est trop grande. B réduit donc son espace de recherche à la moitié inférieure de l intervalle précédent ([9,11]), puis propose le nouvel médian, soit 10 : 9 10 11 A indique à B que cette proposition est trop petite. B réduit donc son espace de recherche à la moitié supérieure de l intervalle précédent, qui se réduit à {11}. B propose cet et trouve la solution : 11 II. Recherche d un nombre secret par l utilisateur. Le programme reproduit le jeu où l utilisateur doit deviner, en un nombre maximal d essais, un nombre secret généré aléatoirement par l ordinateur. II.1. Génération aléatoire du nombre secret. Dans un premier temps, le programme génère un nombre aléatoire compris dans un intervalle donné. 1

Un menu doit permettre de définir les bornes de cet intervalle selon 2 modes : 1. Par défaut : l intervalle est [0, 0x7FFF] 2. Personnalisé : l intervalle est donné par l utilisateur sous la forme de ses 2 bornes entières [min, max] Pour générer le nombre secret, on utilise les 2 fonctions suivantes de stdlib.h (cf. aide en ligne avec F1) : srand() : initialise le générateur de nombres aléatoires grâce à un «germe» (en anglais, seed). rand() : génère un nombre (pseudo-)aléatoire dans l intervalle [0, RAND_MAX]. II.2. Recherche du nombre secret Dans un second temps, l utilisateur recherche le nombre secret. Il saisit d abord le nombre maximal d essais qu il s autorise, puis : il propose un nombre à l ordinateur, le programme lui indique alors si ce nombre est inférieur, supérieur ou égal au nombre secret, le nombre d essais restants, et ce, jusqu à ce que le nombre secret soit trouvé ou que le nombre maximal d essais soit atteint. III. Recherche d un nombre secret par l ordinateur Écrire un programme permettant à l ordinateur de trouver, par dichotomie, un nombre secret compris entre 0 et 1000 : le programme demande à l utilisateur de penser à un nombre entier entre 0 et 1000. le programme propose un nombre et demande à l utilisateur si ce nombre est égal au nombre secret, plus grand, ou plus petit que celui-ci. si la proposition n est pas le nombre secret, le programme propose un nouveau nombre en fonction de la réponse de l utilisateur. si la proposition est correcte, le programme affiche le nombre de propositions qui a été nécessaire pour trouver cette solution. IV. Recherche de la racine cubique d un nombre entier Écrire un programme permettant à l ordinateur de trouver, par dichotomie, la racine cubique d un nombre entier N donné par l utilisateur et compris entre 0 et 1 000 000. Le programme doit d abord rechercher une racine cubique entière, c est-à-dire une solution entière dans l intervalle [0,100]. Si cette racine entière existe, le programme l affiche. Si elle n existe pas, il affiche que la racine est réelle et donne les deux entiers N 1 et N 2 qui la bornent. 2

TP2 : Problèmes de saisie I. Introduction. Le problème concerne l acquisition de données auprès d un utilisateur. Il s agit d associer à une question un domaine de réponses. Plusieurs aspects sont à considérer : comment effectuer une demande, comment obtenir une réponse de l utilisateur à cette demande, et comment valider cette réponse. II. Description du fonctionnement. II.1. Menu du questionnaire. Il s agit de réaliser un questionnaire qui se compose des rubriques accessibles par le menu suivant : 1. Saisie du nom 2. Saisie du code postal 3. Saisie de la ville 4. Saisie de la date de naissance 5. Affichage des caractéristiques de la personne 6. Fin Dès le lancement du programme, on affiche ce menu. Pour accéder à l une des rubriques, l utilisateur saisit le numéro correspondant. II.2. Réponses au questionnaire. Lorsque l utilisateur a saisi une réponse au questionnaire, le programme doit vérifier que cette réponse est valide. Si ce n est pas le cas, le programme émet un message d erreur et redemander une saisie. Réponses du type alphabétique. Les rubriques concernées sont le nom et la ville. Dans ces rubriques, le programme doit vérifier que chaque caractère de la réponse est bien une lettre. Le nom contiendra au maximum 40 caractères et la ville 60 caractères. Réponses du type numérique. Les rubriques concernées sont le code postal et la date de naissance. Pour le code postal, le programme doit vérifier que chaque caractère est bien un chiffre et que le nombre correspondant est compris entre 1000 et 97999. La date de naissance sera saisie sous la forme JJ, MM, AAAA. Chaque partie devra être numérique, et le jour devra être compris dans l intervalle [1,31], le mois dans [1,12] et l année dans [1800,2012]. II.3. Affichage des caractéristiques de la personne. Quand l utilisateur accède à cette rubrique, le programme doit afficher les caractéristiques saisies. Si l une des caractéristiques n a pas été saisie, le programme doit afficher le message «NON SAISI». 3

III. Élaboration du programme. III.1. Fonctions. Écrire un programme en langage C gérant les fonctions suivantes : menu : affiche le menu, demande un choix de rubrique et appelle la fonction appropriée. saisie_nom : saisit un nom valide (i.e. alphabétique), en vérifiant son format par appel à la fonction format_alphabetique. format_alphabetique : teste si la chaîne de caractères passée en paramètre est de taille correcte et ne contient que des lettres. Retourne un résultat booléen. saisie_codepostal : saisit un code postal valide, en vérifiant son format par appel à la fonction format_numerique et sa validité par appel à la fonction codepostal_valide. format_numerique : teste si la chaîne de caractères passée en paramètre ne contient que des chiffres. Retourne un résultat booléen. codepostal_valide : teste si la chaîne de caractères passée en paramètre représente un code postal valide. Retourne un résultat booléen. saisie_datenaiss : saisit une date de naissance valide, en vérifiant le format de chaque partie (jour, mois, année) par appel à la fonction format_numerique et la validité globale par appel à la fonction date_valide. date_valide : teste si les chaînes de caractères passées en paramètre (jour, mois, année) représentent une date valide. Retourne un code d erreur (0 : date valide, 1 : jour non valide, 2 : mois non valide, 3 : année non valide). affiche_caracteristiques : affiche à l écran les caractéristiques saisies. III.2. Conseils et contraintes de programmation. Pour les saisies, utiliser la fonction gets(), sauf pour celle de la date de naissance où scanf() est plus appropriée. Toutes les variables doivent être locales aux fonctions. Les variables stockant les caractéristiques de la personne doivent être transmises aux fonctions citées en III.1. Réalisez ce TP étape par étape, en écrivant et validant une rubrique à fois. Commencez par l initialisation des chaînes de caractères et par l affichage des caractéristiques de la personne. 4

TP3 : Jeu de la vie I. Introduction. Le jeu de la vie a été inventé par J.H. Conway et présenté dans le journal Scientific American en octobre 1970. Il s agit du plus connu des automates cellulaires, un modèle où chaque état conduit mécaniquement à l état suivant à partir de règles d évolution. II. Description du fonctionnement. II.1. Représentation. L univers du jeu est représenté par un damier, dont chaque case ne peut être occupée que par une seule cellule. Le jeu simule la vie des cellules du damier (naissance, survie et mort). II.2. Règles d évolution (cf. figure 1). La simulation repose sur quatre règles simples d évolution entre deux générations : une cellule continue à vivre si elle a deux ou trois cellules voisines vivantes ; une cellule meurt d isolement si elle a moins de deux voisines vivantes ; une cellule meurt d étouffement si elle a plus de trois voisines vivantes ; une cellule naît dans une case vide si trois cases voisines exactement sont occupées. Toutes les cellules du damier évoluent simultanément à chaque saut de génération. II.3. Objectif du TP. L objectif du TP est de manipuler des tableaux en langage C, en traduisant les règles ci-dessus pour suivre la vie des cellules. III. Élaboration du programme. III.1. Fonctions. Votre programme devra comporter plusieurs fonctions : une fonction d initialisation d un damier ; une fonction d affichage d un damier. L affichage est une représentation alphanumérique du damier constituée d espaces pour les cases mortes et d astérisques (*) pour les cases vivantes ; une fonction retournant le nombre de voisines vivantes d une cellule ; une fonction de calcul de la génération suivante. III.2. Contraintes de programmation. Le damier sera représenté sous la forme d un tableau à UNE dimension. Le programme principal devra consister à saisir le nombre d états à simuler, à initialiser le damier, puis à générer et visualiser un état du damier toutes les secondes. 5

Génération 1 1 2 3 4 5 6 7 8 9 0 1 * 2 3 * 4 * * 5 * 6 * * 7 * 8 * 9 0 Génération 2 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 * * 6 * * * 7 * * 8 9 0 Génération3 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 * * 6 7 * * 8 9 0 Génération 4 (damier mort) 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 Génération 1 1 2 3 4 5 6 7 8 9 0 1 2 * * 3 * * * 4 * * 5 * * * * * * * 6 * * * * 7 * * * * * 8 9 * 0 * * Génération 2 1 2 3 4 5 6 7 8 9 0 1 2 * * 3 * * * 4 * * 5 * * * * * * * * 6 * * * * 7 * * * * * 8 9 * 0 * * Génération 3 1 2 3 4 5 6 7 8 9 0 1 2 * * 3 * * * 4 * * * 5 * * * * * * * * 6 * * * * 7 * * * * * 8 9 * 0 * * Génération 4 1 2 3 4 5 6 7 8 9 0 1 2 * * 3 * * * 4 * * * 5 * * * * * * * * * 6 * * * * 7 * * * * * 8 9 * 0 * * Génération 5 : identique à génération 1 Figure 1 : Évolution de l état d un automate cellulaire dans le «Jeu de la vie». L exemple de la colonne gauche meurt en 4 générations, celui de droite est un oscillateur de période 4. 6

TP4 : Gestion d une file de taille fixe I. Introduction. Une file (en anglais, queue) est une structure de donnée dont les s sortent dans l ordre dans lequel ils arrivent (principe du «premier entré, premier sorti», en anglais First In, First Out ou FIFO). Le comportement est analogue à une file d attente : les personnes arrivées les premières sont les premières à sortir de la file pour être servies. II. Description du fonctionnement. II.1. Représentation. Il existe plusieurs implémentations de files. Nous ne considérons ici que le cas de files de taille fixe, qui peuvent être représentées par des tableaux. Plus précisément, nous implémentons une file grâce à un tableau circulaire d entiers. Cette représentation nécessite deux indices de tableau notés t et q, qui mémorisent respectivement la tête et la queue de la file. Une case de la file est vide quand sa valeur est égale à 0. II.2. Règles d évolution. Le fonctionnement d une telle file est décrit ainsi (cf. figure 2) : l ajout d un se fait en tête de file ; la suppression d un se fait en queue de file ; lorsque la file est pleine, il est interdit d ajouter un ; lorsque la file est vide, il est interdit de supprimer un. III. Élaboration du programme. III.1. Fonctions. L utilisateur accède à un menu affichant les différentes fonctions suivantes qui lui sont disponibles : adjonction : ajoute un en tête de file, tout en assurant la mise à jour des indices de tête et de queue. Cette fonction vérifie que la file n est pas pleine avant d ajouter un ; suppression : supprime un en queue de file, tout en assurant la mise à jour des indices de tête et de queue. Cette fonction vérifie que la file n est pas vide avant de supprimer un ; lister : affiche le contenu de la file, en mettant en évidence la tête t et la queue q. III.2. Contraintes de programmation. Toutes les variables doivent être locales. Le programme doit notamment être testé dans les cas limites suivants : adjonction d un quand la file est pleine ; suppression d un quand la file est vide ; adjonction de la valeur réservée 0. 7

File initialement vide 2 ème 3 ème q, t 0 q 1 q 1 q 1 0 t 0 2 2 0 0 t 0 3 0 0 0 t 0 0 0 0 0 Suppression d un Suppression d un 0 0 0 t 0 q 2 q 2 0 0 3 3 q 3 q 3 t 0 4 4 4 0 t 0 t 0 5 6 6 t 0 7 Impossible q 3 q, t 3 (file pleine) : 4 4 la file est 5 5 inchangée. Figure 2 : Adjonction et suppression d s dans une file de taille fixe. 8