3 ème Partie : Vérification par tests

Documents pareils
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmes et programmation en Pascal. Cours

Recherche dans un tableau

Cours Informatique Master STEP

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

Corrigé des TD 1 à 5

Examen Médian - 1 heure 30

Arbres binaires de recherche

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

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

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Application 1- VBA : Test de comportements d'investissements

Algorithmique et Programmation, IMA

Propagation sur réseau statique et dynamique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1 Lecture de fichiers

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Cours 14 Les fichiers

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

Les fichiers. Chapitre 4

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Ouvrir le compte UQÀM

Gestion mémoire et Représentation intermédiaire

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1. Structure d'un programme FORTRAN 95

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Perl Orienté Objet BioPerl There is more than one way to do it

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Organigramme / Algorigramme Dossier élève 1 SI

Backtracking asynchrone agile pour les problèmes de satisfaction de contraintes distribués

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

Introduction au langage C

Enseignement secondaire technique

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

.NET - Classe de Log

AWS avancé. Surveiller votre utilisation d EC2

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

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)

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

Quelques Algorithmes simples

GUIDE DU SERVICE DE MESSAGERIE VOCALE

TRIGONOMETRIE Algorithme : mesure principale

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

QUESTIONNAIRE ANONYME

CAC: Un algorithme d arc-consistance. configurable, générique et adaptatif.

Quatrième partie IV. Test. Test 15 février / 71

Cours d algorithmique pour la classe de 2nde

Utilisation d objets : String et ArrayList

Bernard HAMM, Évelyne LAVOISIER

OCL - Object Constraint Language

Algorithmique et programmation : les bases (VBA) Corrigé

1. Utilisation du logiciel Keepass

Manuel M O D U L E D I M P O R T A T I O N

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

Environnements informatiques

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

Algorithmique & programmation

Université de Sherbrooke, Département d informatique

COMMUNICATION PC/MINITEL

Cours de Systèmes d Exploitation

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

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org


Modem LG LDU-1900D. Guide d utilisateur. LG Electronics

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

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

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Les structures de données. Rajae El Ouazzani

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

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Préparation à l examen EFA en Macro

Java Licence Professionnelle CISII,

Paris Airports - Web API Airports Path finding

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

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Gestion de stock pour un magasin

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

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

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

Les structures. Chapitre 3

Pourquoi l apprentissage?

Programmation système en C/C++

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Programmation structurée et algorithmes de base en Pascal

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

Introduction à la programmation concurrente

Les chaînes de caractères

Classes et Objets en Ocaml.

DAB+ TUNER BOX 945. Enjoy it. Notice d'utilisation

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Piratrax 2012 Danger - Effacer vos traces

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

Cours 6 : Tubes anonymes et nommés

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Transcription:

Laboratoire de programmation 3 ème Partie : Vérification par tests 2 ème BAC Dang Vinh Tran Professeur : Jean-Marie Jacquet Assistant : Denis Darquennes

Procédure Rappel du code function clnliaisons: lnliaisons; {Pré:/ Post:clnliaisons retourne une liste vide de liaisons} clnliaisons:=nil; Test white-box Arc a R1 clnliaisons :=nil

Procédure 21 : test white-box Rappel du code : function clntrains:lntrains; {Pré: le fichier liaison.txt existe et on se situe sur la bonne ligne du fichier Post: le fichier liaisons.txt est fermé} var f: Text; lntr: lntrains; traina: lntrains; caractere: char; n_train:string[20]; assign(f,'liaison.txt'); reset(f); new(lntr); read(f, caractere); {passer le numéro de sens} while () do {vérifier qu'on va jusqu'au bout du fichier} read(f, caractere); while(caractere=' ') do {traitement chaines d'espaces} {Inv: les caractères déjà lus sont des espaces But: tous les caractères lus étaient les espaces} read(f, caractere); while(caractere<>' ') do {traitement chaines de caractères} {Inv: n_train est la concaténation des caractères déjà lus But: n_train est la concaténation de tous les caractères lus} n_train:=n_train+caractere; traina^.nom:=n_train; traina^.suiv:=nil; lntr^.suiv:=traina; close(f); clntrains:=lntr; dispose(lntr);

Tests white-box Arc R2 R1 t s r q p o n m l ^lntr^.suiv:=traina ^lntr^.suiv^.suiv=nil

k j i h g f e d c b a eoln(f) eoln(f) eoln(f) eoln(f)

Procédure 62 : test black-box Rappel du code : procedure mtrain(t:ntrain;n:nliaison;s:boolean;lh:lpassages;var lt:ltrains;var li:lliaison); {Pré: la liaison existe dans la liste de liaisons, le train existe dans la liaison Post: le train de nom t sur la liaison de nom n est modifié selon les temps de passage décrits en lh, les fichiers trains.txt et liaisons.txt sont fermés} var f:text; while(li^.l.nom<>n) do li:=li^.suiv; if s then end else while(liaison_temp.naturel.entete^.nom<>t)do {Inv: les éléments déjà lus ont un champ «nom» différent de 't' But: le dernier élément lu a un champ «nom» égal à 't'} liaison_temp.naturel.entete:=liaison_temp.naturel.entete^.suiv; liaison_temp.naturel.ligne:=liaison_temp.naturel.ligne^.suiv; liaison_temp.naturel.ligne^.passage:=lh; while(liaison_temp.inverse.entete^.nom<>t)do {Inv: les éléments déjà lus ont un champ «nom» différent de 't' But: le dernier élément lu a un champ «nom» égal à 't'} liaison_temp.inverse.entete:=liaison_temp.naturel.entete^.suiv; liaison_temp.inverse.ligne:=liaison_temp.naturel.ligne^.suiv; liaison_temp.inverse.ligne^.passage:=lh; assign(f,'liaisons.txt');

reset(f) writeln(f,('liaison', li^.l.naturel.entete^.nom, li^.l.inverse.entete^.nom)); writeln(f,'1'); while(li^.l.naturel.entete^.suiv<>nil) do {Inv: tant que l'élément suivant l'élement traité existe, on écrit le nom du train de l'élément traité sur la même ligne du fichier f But: tous les noms de trains de la liaison ont été écrits sur une même ligne du fichier f} write(f,(li^.l.naturel.entete^.nom,' ')); li^.l.naturel.entete:=li^.l.naturel.entete^.suiv; while(li^.l.naturel.ligne^.suiv<>nil)do {Inv: tant que l'élément suivant l'élement traité existe, on écrit le nom de la gare de l'élément traité dans le fichier f But: toutes noms de gare des trains de la liaison ont été écrits dans le fichier f} write(f,li^.l.naturel.ligne^.nomgare); while(li^.l.naturel.ligne^.passage^.suiv<>nil) do {Inv: tant que l'élément suivant l'élement traité existe, on écrit l'heure de passage de l'élément traité sur la même ligne du fichier f But: toutes les heures de passage des trains de la liaison ont été écrits sur une même ligne du fichier f} write(f,(li^.l.naturel.ligne^.passage' ')); li^.l.naturel.ligne^.passage:=li^.l.naturel.ligne^.passage^.suiv; li^.l.naturel.ligne^:=li^.l.naturel.ligne^.suiv; writeln(f); writeln(f,'0'); while(li^.l.inverse.entete^.suiv<>nil) do {Inv: tant que l'élément suivant l'élement traité existe, on écrit le nom du train de l'élément traité sur la même ligne du fichier f But: tous les noms de trains de la liaison ont été écrits sur une même ligne du fichier f} write(f,(li^.l.inverse.entete^.nom,' ')); li^.l.inverse.entete:=li^.l.inverse.entete^.suiv; while(li^.l.inverse.ligne^.suiv<>nil)do

{Inv: tant que l'élément suivant l'élement traité existe, on écrit le nom de la gare de l'élément traité dans le fichier f But: toutes noms de gare des trains de la liaison ont été écrits dans le fichier f} write(f,li^.l.inverse.ligne^.nomgare); while(li^.l.inverse.ligne^.passage^.suiv<>nil) do {Inv: tant que l'élément suivant l'élement traité existe, on écrit l'heure de passage de l'élément traité sur la même ligne du fichier f But: toutes les heures de passage des trains de la liaison ont été écrits sur une même ligne du fichier f} write(f,(li^.l.inverse.ligne^.passage' ')); li^.l.inverse.ligne^.passage:=li^.l.inverse.ligne^.passage^.suiv; li^.l.inverse.ligne^:=li^.l.inverse.ligne^.suiv; writeln(f); close(f); assign(f,'trains.txt'); reset(f) while(lt^.suiv<>nil) do {Inv: le fichier trains.txt contient le nom des trains déjà traités ainsi que leurs liaisons et le sens de chacune de celles-ci But: le fichier trains.txt compte le nom de tous les trains ainsi que leurs liaisons et le sens de chacune de celles-ci} write(f,(lt^.train^.nom,' ')); while (lt^.train^.liaison^.suiv<>nil) do {Inv: la ligne en cours de traitement compte le nom des liaisons du train déjà traitées ainsi que leur sens But: la ligne traitée compte le nom de toutes les liaisons du train que leur sens} write(f,(lt^.train^.liaison^.nom,' ') if(lt^.train^.liaison^.sens) then write (f,'1') else write (f,'0'); lt^.train^.liaison.suiv:=lt^.train^.liaison^.suiv; writeln(f); lt:=lt^.suiv; close(f);

Jeux de tests : 1 jeu correspondant au train de nom n 1 jeu correspondant aux temps de passage décrits en lh suivant le sens s 1 jeu correspondant aux listes de trains lt 1 jeu correspondant à la liste des liaisons li 1 jeu correspondant à la mise à jour du fichier trains.txt 1 jeu correspondant à la mise à jour du fichier liaisons.txt 1 jeux correspondant à la fermeture du fichier trains.txt 1 jeux correspondant à la fermeture du fichier liaisons.txt