INF-130 Travail pratique #2

Documents pareils
1 Recherche en table par balayage

Introduction à MATLAB R

LES DECIMALES DE π BERNARD EGGER

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

La classification automatique de données quantitatives

Chap III : Les tableaux

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

Introduction à la B.I. Avec SQL Server 2008

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Présentation du PL/SQL

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

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

Sommaire. Introduction. I. Notions de routage a) Technologies actuelles b) Avantages et désavantages

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

TP 1. Prise en main du langage Python

STAGE IREM 0- Premiers pas en Python

DES FOURMIS POUR LIVRER DU MAZOUT

alg - Classes, instances, objets [oo] Exercices résolus

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


Concours National d Informatique. Sujet de demi-finale Montpellier et Toulouse

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

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

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

Organigramme / Algorigramme Dossier élève 1 SI

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Plan du cours Cours théoriques. 29 septembre 2014

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Optimisation, traitement d image et éclipse de Soleil

Programmation linéaire

Suites numériques 3. 1 Convergence et limite d une suite

Jean-Philippe Préaux

Projet Active Object

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Outils pour les réseaux de neurones et contenu du CD-Rom

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Application 1- VBA : Test de comportements d'investissements

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Soutien technique en informatique

Cours Informatique Master STEP

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

Chapitre 10 Arithmétique réelle

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Probabilités Loi binomiale Exercices corrigés

Algorithmique et programmation : les bases (VBA) Corrigé

Agrégation des portefeuilles de contrats d assurance vie

Introduction à l algorithmique et à la programmation (Info 2)

Poker. A rendre pour le 25 avril

Algorithmique et structures de données I

Entraînement au concours ACM-ICPC

Algorithmique avec Algobox

Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

L exclusion mutuelle distribuée

Google fait alors son travail et vous propose une liste de plusieurs milliers de sites susceptibles de faire votre bonheur de consommateur.

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Canevas théoriques du projet sur le poker Partie A

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

1. Structure d'un programme FORTRAN 95

Algorithmique et Programmation, IMA

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Module 16 : Les fonctions de recherche et de référence

Conventions d écriture et outils de mise au point

Etape 1 : Identification avec un compte personnel sur la plateforme (cf. notice «Création et gestion de votre compte utilisateur»)

SUGARCRM MODULE RAPPORTS

C++ - Classes, instances, objets [oo] Exercices résolus

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

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

Solutions du chapitre 4

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Les Bases. Messaoudi Khaled, Boukelal Hanane (Etudiants Informatique ) 2015.

UML et les Bases de Données

BIRT (Business Intelligence and Reporting Tools)

Licence Sciences et Technologies Examen janvier 2010

POKER ET PROBABILITÉ

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

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

Modélisation multi-agents - Agents réactifs

Évaluation et implémentation des langages

Introduction au datamining

Initiation à la programmation en Python

Introduction. Les obstacles à l analyse web. Le marquage

Qualité du logiciel: Méthodes de test

Rapport de Stage. Titre : Clustering à l aide d une représentation supervisée

CORRECTION EXERCICES ALGORITHME 1

Plus courts chemins, programmation dynamique

Notice d utilisation

Propagation sur réseau statique et dynamique

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Transcription:

École de technologie supérieure INF-30 Travail pratique # Par : Samuel Deslauriers-Gauthier Utilisé par : Francis Bourdeau, Samuel Deslauriers- Gauthier, Frédérick Henri et Hugues Saulnier Travail en équipe de Le commis voyageur enneigé Remise à la 9 e semaine Objectifs Se familiariser avec le langage Visual Basic for Applications d Excel. Utiliser l ensemble des notions présentées jusqu à maintenant : les variables, les instructions conditionnelles et itératives, les entrées/sorties, le découpage en sous-programmes, le passage par référence, etc. Apprendre à manipuler des tableaux à une ou deux dimensions. Respecter les exigences de programmation : l indentation, l utilisation de constantes, l ajout de commentaires, l emploi d identificateurs significatifs, etc. Description du problème Lors de votre premier travail pratique, vous avez développé un programme pour l entreprise JAIFRETS qui calcule les profits en fonction du nombre d employés réguliers. Avec cet outil, JAIFRETS a pu choisir le nombre optimal d employés à embaucher. Après une saison bien enneigée, JAIFRETS réalise que ses employés travaillent d une manière inefficace. En effet, ils visitent les clients d une manière plutôt aléatoire, ce qui engendre des couts de déplacement et des pertes de temps non négligeables. Pour corriger la situation, JAIFRETS vous demande d écrire un programme qui permettra de calculer dans quel ordre les clients assignés à un employé doivent être visités pour minimiser le déplacement de l employé. 3 Description de la tâche à accomplir Vous devez écrire un programme en Visual Basic for Applications d Excel qui réalise les étapes suivantes :. à partir d une liste de clients, il assigne un employé à chaque client de manière à minimiser la distance entre les clients qu un employé doit déneiger;. pour chaque employé, il choisit l ordre des clients de manière à minimiser le déplacement de l employé. INF-30 Ordinateurs et programmation H06 / Page

Figure Interface du programme où 80 clients ont été répartis parmi 5 employés. 4 Description des modules fournis 4. Feuille interface Cette feuille offre des sous-programmes servant à afficher la position des clients et le trajet des employés dans un graphique Excel. Votre première tâche consiste à bien lire les commentaires d en-tête de chacune des procédures qui s y trouvent. Prenez note que ce module vous est offert et qu il vous est interdit de modifier son contenu. 5 Description des modules à coder Votre tâche consiste à coder 4 sous-programmes se trouvant dans 4 modules. Il vous est fortement conseillé de réaliser lesdits sous-programmes dans l ordre de leurs apparitions dans la liste qui suit. Assurez-vous de bien tester et commenter un sous-programme avant d attaquer le prochain. Note importante : Dans ce travail, vous pouvez supposer que l indice de départ des tableaux est. Pour vous en assurer, ajoutez Option Base au début de chaque module. 5. Module m_outils. Fonction : distance Cette fonction reçoit la position x et y de deux points (4 paramètres en tout). Elle retourne la distance euclidienne entre les deux points. = + INF-30 Ordinateurs et programmation H06 / Page

. Fonction : nb_occurrences Cette fonction reçoit un tableau d entiers et un entier. Elle retourne le nombre de fois que l entier apparait dans le tableau. 3 3 entier : 0 3 3 entier : 3 3 entier : 3 3 3. Fonction : tous Cette fonction reçoit un tableau de valeurs booléennes. Elle retourne True si le tableau ne contient que la valeur True. Dans tous les autres cas, elle retourne False. True True True True True False True False False False False False INF-30 Ordinateurs et programmation H06 / Page 3

4. Fonction : somme_cumulative Cette fonction reçoit un tableau de nombres réels et retourne un tableau qui contient la somme cumulative des éléments. La case i du tableau retourné contient donc la somme des éléments à i du tableau reçu en paramètre..0.0.0.0.0 3.0.0.0 3.0.0 3.0 6.0.0 3.0 6.0.0 4.0 0.0 5. Fonction : indice_plus_grand Cette fonction reçoit un tableau de nombres réels et un nombre réel en paramètre. Elle retourne l indice du premier élément du tableau qui est plus grand que le nombre réel reçu. Si tous les éléments du tableau sont plus petits que le nombre réel, elle retourne la valeur -. 0. 0.6.0 Valeur : 0.5 0. 0.6.0 Valeur : 0.05 0. 0.6.0 Valeur :. - INF-30 Ordinateurs et programmation H06 / Page 4

6. Procédure : normaliser Cette procédure reçoit un tableau de nombres réels. Elle normalise les valeurs du tableau afin que leur somme égale. Pour normaliser un tableau, il suffit de diviser tous les éléments par la somme des éléments. Attention à la division par zéro : si la somme des éléments est zéro, la procédure ne fait rien..0.0.0 0.333 0.333 0.333 3.0 0.0 -.0.5 0.0-0.5 0.0 0.0 0.0 0.0 0.0 0.0 7. Fonction : sont_identiques Cette fonction reçoit deux tableaux d entiers. Elle retourne True si les deux tableaux sont identiques (mêmes valeurs et mêmes indices) et False s ils sont différents. tableau_ : 3 3 tableau_ : 3 3 True tableau_ : 3 tableau_ : 3 3 False tableau_ : 3 3 tableau_ : 3 False INF-30 Ordinateurs et programmation H06 / Page 5

8. Procédure : mettre_a_zero Cette procédure reçoit un tableau de nombres réels et un tableau de valeurs booléennes qui ont le même nombre d éléments. Lorsqu un élément du tableau de booléens contient la valeur True, elle assigne la valeur zéro dans la case équivalente du tableau de nombres réels... 33.3 doit_etre_zero : False True False. 0.0 33.3.. 33.3 doit_etre_zero : False False False.. 33.3.. 33.3 doit_etre_zero : True True True 0.0 0.0 0.0 9. Fonction : generer_entiers_aleatoires Cette fonction reçoit un nombre de valeurs à générer n et un maximum. Elle retourne un tableau de n éléments dont les valeurs sont des entiers aléatoires se trouvant dans l intervalle [, maximum]. 0. Procédure : normaliser_lignes Cette procédure reçoit un tableau D de nombres réels. Elle normalise chaque ligne du tableau (voir la fonction nommée normaliser pour un rappel)..0.0.0 3.0 0.0 -.0 0.333 0.333 0.333.5 0.0-0.5 INF-30 Ordinateurs et programmation H06 / Page 6

0.0 0.0 0.0 3.0 0.0.0 0.0 0.0 0.0 0.6 0.0 0.4. Fonction : extraire_ligne Cette fonction reçoit un tableau D de nombres réels et un indice de ligne. Elle retourne un tableau D qui contient tous les éléments de la ligne spécifiée en paramètre... 33.3 44.4 55.5 66.6 77.7 88.8 99.9 indice_ligne :.. 33.3.. 33.3 44.4 55.5 66.6 77.7 88.8 99.9 indice_ligne : 44.4 55.5 66.6 5. Module m_kmeans Dans ce module, vous allez implémenter l algorithme qui permet d assigner un employé à chaque client. La tâche peut se résumer ainsi : il faut former des groupes de clients de manière à minimiser la distance entre les clients d un groupe. Pour accomplir cet objectif, nous allons utiliser un algorithme classique en classification, le k-means. L algorithme sera implémenté de manière générale, sans parler de clients ou de déneigements. Nous allons plutôt parler de points (qui correspondent aux coordonnées x et y des clients) et de groupes. Voici les étapes du k-means :. On assigne aléatoirement un groupe à chaque point.. On calculer le centre de chaque groupe (la moyenne de la position des points qui appartiennent au groupe). 3. On modifie le groupe de chaque point de façon à ce qu il appartienne au groupe ayant le centre le plus proche. 4. On répète les étapes et 3 jusqu à ce que les groupes ne changent plus. INF-30 Ordinateurs et programmation H06 / Page 7

. Fonction : trouver_centres Cette fonction reçoit des points, des groupes et un nombre de groupes. Les points sont gardés dans un tableau D de nombres réels à colonnes. Chaque ligne représente un point. La première colonne contient la position en x et la deuxième colonne contient la position en y. À titre d exemple, le tableau présenté plus bas contient les 3 points (0,0), (0,) et (,). Les groupes sont gardés dans un tableau d entiers ou chaque élément représente le groupe d un point. Ce tableau a donc autant d éléments que le tableau de points a de lignes. Dans l exemple ci-dessous, le premier point appartient au deuxième groupe et les deux derniers points appartiennent au premier groupe. Le nombre de groupe est. points groupes 0 0 0 La fonction retourne un tableau D qui contient le centre de chaque groupe. Le centre d un groupe est défini comme la position moyenne des points du groupe. C est donc un tableau à colonnes qui a autant de lignes qu il y a de groupe. Voici le tableau qui serait retourné avec les points et les groupes présentés plus haut comme entrée. centre 0.5 0 0 points : 3.0.0.0 3.0 groupes : nb_groupes : INF-30 Ordinateurs et programmation H06 / Page 8

points : 3.0.0.0 3.0 groupes : nb_groupes :.5.5 3.0.0 points : 3.0.0.0 3.0 groupes : 3 nb_groupes : 3.0 3.0 3.0.0 3. Fonction : trouver_centre_plus_proche Cette fonction reçoit des centres de groupe (voir le sous-programme précédent) et la position x et y d un point. Elle retourne l indice du centre qui est le plus proche du point. centres : x :.0 y :.0 3.0.0.0 3.0 INF-30 Ordinateurs et programmation H06 / Page 9

centres : x : 0.0 y :.0 3.0.0.0 3.0 centres : x :.0 y : 0.0 3.0.0.0 3.0 3 4. Fonction : assigner_groupes Cette fonction reçoit des points et des centres de groupes. Elle retourne un tableau d entiers qui contient le groupe de chaque point. Le groupe d un point est l indice du centre le plus proche. points : 3.0.0.0 3.0 centres : 3.0.0.0 3.0 3 points : 3....9 centres : 3.0.0 INF-30 Ordinateurs et programmation H06 / Page 0

points : 3.0.0..9.0 3.0 centres : 3.0.0.0 3.0 5. Fonction : classifier_points Cette fonction reçoit des points et un nombre de groupes. Elle regroupe les points en leur assignant un numéro de groupe dans l intervalle [, nb_groupes]. Voici son pseudocode : Assigner un groupe aléatoire à chaque point BOUCLE Trouver le centre des groupes Trouver le nouveau groupe des points TANT QUE le groupe d au moins un point a changé 6. Procédure : principal (dans le module principal) Vous n êtes pas en mesure de compléter le programme principal, mais vous pouvez le commencer pour tester le code que vous avez écrit jusqu à maintenant. Voici la portion de l algorithme principal que vous pouvez écrire. Initialiser l interface (interface.initialiser). Générer la position des clients au hasard. Afficher les clients (interface.afficher_clients). Séparer les clients en groupe (m_kmeans). Afficher les groupes (interface.colorer_clients). 5.3 Module m_colonie_fourmis Dans ce module, vous allez implémenter l algorithme qui permet de trouver dans quel ordre les clients d un déneigeur doivent être visités. L objectif est de trouver l ordre qui minimise le déplacement du déneigeur. L algorithme que vous allez implémenter se nomme «colonie de fourmis» (ant colony optimization). Cet algorithme est implémenté de manière générale, sans parler de clients ou de déneigements. Nous allons plutôt parler de points (qui correspondent aux coordonnées x et y des clients) et de chemin/trajet (l ordre dans lequel les clients sont visités). INF-30 Ordinateurs et programmation H06 / Page

7. Fonction : longueur_chemin Cette fonction reçoit des points (un tableau D, comme dans le module précédent) et un tableau d entiers. Le tableau d entiers indique dans quel ordre les points sont parcourus. Par exemple, si le tableau d entiers contient 3, il faut d abord se déplacer du deuxième point vers le premier point, se déplacer du premier point vers le troisième point, et finalement se déplacer du troisième vers le deuxième point (retour au point de départ). Pour avoir la longueur du chemin, il faut donc additionner la longueur de ces trois segments. points : 0.0 0. 0.5 0.0 0.3 0.7 Chemin : 3.6 points : 0.0 0. 0.5 0.0 0.3 0.7 Chemin : 3.6 points : 0.0 0. 0.5 0.0 0.3 0.7 Chemin : 3.6 8. Fonction : deplacer_une_fourmi Cette fonction reçoit des points et un tableau de probabilités. Elle retourne un tableau d entiers. Le tableau de probabilités est un tableau D carré qui a autant de lignes et de colonnes qu il y a de points. Le contenu de la case (i, j) de ce tableau indique la probabilité de se déplacer du point i vers le point j. Par exemple, si la case (i, j) contient le nombre 0.5, il y a 5 % des chances qu une fourmi se déplace du point i vers le point j. Pour être cohérente, la somme de chaque ligne du tableau doit être égale à. INF-30 Ordinateurs et programmation H06 / Page

Le tableau d entiers retournés indique dans quel ordre la fourmi a parcouru les points. Voici l algorithme utilisé pour déplacer une fourmi. Initialiser un tableau D d entiers avec autant de cases qu il y a de points. Initialiser un tableau D de booléens de la même taille qui indique quels points ont été visités. Choisir le point de départ au hasard. TANT QUE les points n ont pas tous été parcourus BOUCLE FIN BOUCLE Extraire la ligne du tableau de probabilité qui correspond au point courant. Assigner la probabilité 0 aux points déjà parcourus de la ligne extraite. Normaliser la ligne. Choisir un nombre aléatoire entre 0 et. Trouver le premier élément de la ligne qui est plus grand que le nombre choisi au hasard. Ajouter l indice de l élément au tableau d entiers (c est le prochain point). Marquer que ce point a été visité dans le tableau de booléens. 9. Fonction : initialiser_probabilites Cette fonction reçoit un tableau de n points et retourne un tableau n x n de probabilités. Le tableau retourné est la version initiale des probabilités utilisées pour déplacer des fourmis. La valeur de la case (i, j) est inversement proportionnelle à la distance entre le point i et le point j., =/, Si la distance entre deux points est 0, utilisez plutôt 0.00 pour éviter la division par 0. Il est à noter que les lignes du tableau de probabilités doivent être normalisées. 0. Fonction : meilleur_chemin_trouve_par_les_fourmis Cette fonction reçoit un tableau de n points et un tableau n x n de probabilités. Elle retourne un tableau d entiers. Cette fonction déplace 00 fourmis l une après l autre et conserve le chemin le plus court trouvé lors des 00 déplacements de fourmis.. Procédure : modifier_probabilities Cette procédure reçoit un tableau D de probabilités et un tableau d entiers qui représente l ordre des points (comme pour la fonction longueur_chemin). Elle augmente la probabilité de chaque segment du chemin de 0. % et normalise ensuite les lignes du tableau de probabilités. INF-30 Ordinateurs et programmation H06 / Page 3

probabilites : 0.0 0. 0.8 0.5 0.0 0.5 0.3 0.7 0.0 Chemin : 3 probabilites : 0.0 0.079 0.79 0.495 0.0 0.505 0.3069 0.693 0.0 probabilites : 0.0 0. 0.8 0.5 0.0 0.5 0.3 0.7 0.0 Chemin : 3 probabilites : 0.0 0.079 0.79 0.495 0.0 0.505 0.3069 0.693 0.0 probabilites : 0.0 0. 0.8 0.5 0.0 0.5 0.3 0.7 0.0 Chemin : 3 probabilites : 0.0 0.980 0.80 0.505 0.0 0.495 0.970 0.7030 0.0. Fonction : chemin_plus_court Cette fonction reçoit des points et un nombre réel par référence. Elle retourne un tableau d entiers qui indique dans quel ordre les points doivent être parcourus pour minimiser la distance du trajet. La longueur du chemin trouvé est assignée au nombre réel reçu en paramètre. Voici l algorithme à utiliser pour trouver le chemin le plus court. Initialiser le tableau de probabilités. Déplacer une fourmi. On suppose que son chemin est le meilleur chemin. Afficher le meilleur chemin dans le graphique. TANT QUE l on n a pas fait 500 répétitions sans changement du meilleur chemin BOUCLE Déplacer plusieurs fourmis. INF-30 Ordinateurs et programmation H06 / Page 4

Utiliser le chemin des fourmis pour mettre le tableau de probabilités à jour. SI le chemin des fourmis est plus court que le meilleur chemin ALORS FIN SI FIN BOUCLE 5.4 Module m_principal Le chemin devient le nouveau meilleur chemin. Effacer l ancien chemin puis afficher le meilleur chemin. Ce module contient le programme principal de l application. C est ce module qui génère la position des clients et qui fait le lien entre l algorithme k-means et les fourmis. La fonction qui permet de générer la position des clients est fournie. 3. Fonction : obtenir_groupe_clients Cette fonction reçoit un tableau D de nombres réels, un tableau d entiers et un entier. Le tableau D contient la position des clients (comme un tableau de points dans m_kmeans). Le tableau d entiers contient le numéro de l employé assigné à chaque client (comme des groupes dans m_kmeans). La fonction retourne un tableau D qui ne contient que les clients dont le groupe correspond à l entier reçu. position_clients : 0.0 0. 0.5 0.0 0.3 0.7 groupes : groupe : 0.0 0. 0.3 0.7 position_clients : 0.0 0. 0.5 0.0 0.3 0.7 groupes : groupe : 0.5 0.0 INF-30 Ordinateurs et programmation H06 / Page 5

4. Procédure : principal Cette procédure est le programme principal de l application. Voici son algorithme : Initialiser l interface (interface.initialiser). Générer la position des clients au hasard. Afficher les clients (interface.afficher_clients). Séparer les clients en groupe (m_kmeans). Afficher les groupes (interface.colorer_clients). POUR chaque groupe BOUCLE Obtenir les clients du groupe. Trouver le chemin le plus court (m_colonie_fourmis). Afficher le chemin (interface.afficher_chemin). Afficher les statistiques(interface.ajouter_statistiques_employe). FIN BOUCLE Crier victoire! 6 Contraintes de l'enseignant Votre programme devra respecter les contraintes suivantes : Il devra respecter les exigences de remise des travaux pratiques. D ailleurs, la qualité du code vaudra au moins autant de points que le fonctionnement du programme. Il ne devra contenir aucune variable globale. La présence d une variable globale entraînera la perte de 5 % des points. Il ne devra contenir aucun Goto. La présence de cette instruction entraînera la perte de 5 % des points. En cas de doute, n hésitez pas à consulter votre enseignant. BON TRAVAIL! INF-30 Ordinateurs et programmation H06 / Page 6