Atelier de Programmation en Langage C
Transcription
Atelier de Programmation en Langage C
Le 15-5-2013 1 IM Projets à faire en Langage C pendant les vacances d’été Aux étudiants : C’est à vous de choisir le projet que vous voulez réaliser. Les projets sont de difficultés similaires. L’objectif de ces projets est, d’une part, de revoir ce que vous avez vu tout au long de cette année côté algorithmique et côté programmation en langage C mais aussi d’apprendre à faire des recherches (pour comprendre comment se déroule un jeu donné, pour connaître de nouvelles structures de données, etc.) afin de résoudre des problèmes donnés et de montrer une vision innovatrice et nouvelle pour la résolution d’un problème. Ne vous contentez donc pas de résoudre un problème de la plus basique des manières mais faites en sorte de trouver des solutions innovatrices. Cela ne pourra que vous être bénéfique pour la suite! Projet 1 : Gestion de files de véhicules Dans ce projet, il vous est demandé de réaliser une simulation d’un péage d’une autoroute. A cet égard, la simulation doit permettre à l’utilisateur d’ajouter des véhicules à la file des véhicules qui vont payer les frais de l’autoroute. Par ailleurs, chaque véhicule ayant payé les frais quitte la file. A chaque passage d’un véhicule par le péage, il faudra afficher les informations concernant le véhicule (marque, immatriculation, type : voiture, camion, camionnette, etc.) ainsi que les frais du péage qui lui est associé et qui est indiqué suivant son type. Par ailleurs, à chaque passage d’un véhicule, il faudra aussi afficher le montant total cumulé gagné jusqu’à lors (c’est-à-dire depuis le début de la simulation) par la compagnie des autoroutes. Le programme doit aussi, à chaque demande de l’utilisateur, indiquer le type de véhicules qui est le plus passé par le péage et affiche le nombre de voitures ayant payés les frais du péage pour chaque type. L’utilisation des files peut être utile pour réaliser cette simulation. Une première version de ce projet doit être réalisée avec les tableaux. Une deuxième version doit être réalisée avec les listes chaînées. Le candidat doit en plus ajouter d’autres manipulations de son choix. Dans un second temps, le programme doit permettre de gérer non seulement une file mais N files (N > 1), c'est-à-dire qu’il s’agit de gérer plusieurs péages à la fois et non un seul. Projet 2 : Gestion commerciale Dans ce projet, il vous est demandé de réaliser un programme de gestion comptable d’un commerçant. Le programme doit permettre d’ajouter des articles au magasin en stockant leurs prix d’achat des fournisseurs, de vendre des articles en considérant la quantité en stock et en leur affectant des prix supérieurs au prix d’achat, d’alerter le commerçant à chaque fois que le nombre d’articles en stock atteint une valeur inférieure à un seuil que vous fixez suivant votre choix en affichant la quantité qui reste en stock ainsi que les coordonnés du fournisseur associé (le nom de la société, adresse, téléphone, etc.), etc. Le programme doit aussi indiquer le nombre d’articles vendus pour un mois donné ainsi que le gain du commerçant pour une période donnée, etc. Il est à noter que les informations doivent être sauvegardées dans des fichiers sur disque. Ces informations seront chargées dès le démarrage du programme de gestion commerciale et manipulées au fur et à mesure. Projets de stage d’été en Langage C -1- Eté 2013 Une première version de ce projet doit être réalisée avec les tableaux. Une deuxième version doit être réalisée avec les listes chaînées. Le candidat doit en plus ajouter d’autres manipulations de son choix. Projet 3 : Simulation des algorithmes de tri Il s’agit de développer une application contenant des interfaces graphiques permettant de simuler six algorithmes de tri (tri Shell, tri à bulles, tri par tas, tri sélection, tri rapide et tri par insertion). L’utilisateur remplit un tableau et choisit un des six algorithmes et l’application lui fournit une interface lui permettant de suivre toutes les itérations du tri (une par une) jusqu’à arriver à un tableau complètement trié avec la possibilité d’enregistrer le tableau trié dans fichier sur son disque. Projet 4 : Développement de l’algorithme de Dijkstra Développer une application graphique qui sert à résoudre le problème du plus court chemin en ayant recours à l’algorithme de Dijkstra. L’utilisateur de l’application construit un graphe dont les nœuds présentent les villes et les arêtes déterminent les distances entre les nœuds. L’application affiche le graphe résultat. Par la suite, l’utilisateur choisit la ville de départ et la ville d’arrivée et l’application lui affiche le plus court chemin trouvé en appliquant l’algorithme de Dijkstra. Projet 5 : Développement du jeu « Puissance 4 » Le but du jeu Puissance 4 est d'aligner 4 pions sur une grille comptant 6 rangées et 7 colonnes. Chaque joueur dispose de 21 pions d'une couleur (par convention, en général jaune ou rouge). Tour à tour les deux joueurs placent un pion dans la colonne de leur choix, le pion coulisse alors jusqu'à la position la plus basse possible dans ladite colonne suite à quoi c'est à l'adversaire de jouer. Le vainqueur est le joueur qui réalise le premier un alignement (horizontal, vertical ou diagonal) d'au moins quatre pions de sa couleur. Si alors que toutes les cases de la grille de jeu sont remplies, aucun des deux joueurs n'a réalisé un tel alignement, la partie est déclarée nulle. Projet 6 : Développement du jeu « La marelle » La marelle se joue à deux sur un plateau de 24 points dont certains sont reliés trois par trois en "moulins". Chaque joueur dispose, au départ, de 9 pions d'une couleur. La partie se déroule en trois phases successives : - La pose : Dans la première phase, les joueurs posent chacun à son tour l'un de leurs pions sur l'un des points vides du plateau. Si l'un des joueurs parvient à "fermer" un moulin en alignant trois de ses jetons, il ôte l'un des pions de son adversaire choisi parmi ceux qui ne font pas partie d'un moulin fermé. - Les déplacements : Lorsque les joueurs ont posé tous leurs jetons, débute la seconde phase du jeu. Les joueurs doivent à présent pousser l'un de leurs jetons sur un point voisin auquel le point de départ est relié par un moulin. Le but reste d'essayer fermer un moulin pour prendre un des pions de l'adversaire ou de bloquer les pions de l'adversaire qui perd la partie si aucun de ses pions ne peut bouger. Projets de stage d’été en Langage C -2- Eté 2013 - Les sauts : Lorsque l'un des joueurs n'a plus que trois pions, il peut "sauter" c'est à dire déplacer l'un de ses pions sur l'un quelconque des points libres du jeu. Un joueur qui n'a plus que deux pions, ou qui ne peut plus se déplacer lorsque c'est à son tour de jouer a perdu. Projet 7 : Développement du jeu « Serpent (Snake) » Développer le jeu Snake en graphique: Un serpent qui grandit au fur et à mesure qu'il avale des pommes sur son chemin. Le jeu contient 2 niveaux de difficultés, le premier est sans labyrinthe et le deuxième étant avec labyrinthe. L'objectif est d'avaler toutes les pommes en se guidant avec les touches directionnelles du clavier, sans que le serpent ne se morde la queue et sans qu’il ne touche un labyrinthe. L’utilisateur choisit un des deux niveaux avant de commencer le jeu. Projet 8 : Développement du jeu « Taquin » Développer le jeu Taquin en graphique : un grand carreau est composé de 15 petits carreaux numérotés de 1 à 15 qui glissent dans un cadre prévu pour 16. Il consiste à remettre dans l'ordre les 15 carreaux à partir d'une configuration initiale quelconque. Projet 9 : Développement du jeu « Démineur » Développer une application graphique du jeu Démineur : ce jeu consiste à localiser des mines cachées dans un champ virtuel en indiquant seulement le nombre de mines dans les zones adjacentes. Le jeu contient deux niveaux de difficultés. Le deuxième niveau contient plus de mines et un champ plus grand que le premier niveau. Projet 10 : Développement du jeu « Tetris » Le but est de simuler le fameux jeu Tetris. Il s’agit de créer des pièces de formes différentes de votre choix et décider comment représenter les pièces créées. Ensuite, le programme doit permettre à l’utilisateur d’aligner ses pièces dans un délai précis et avec un nombre fini de pièces. Projet 11 : Développement du jeu « Vache-Taureau » Le but de cet exercice est de réaliser le jeu Vache-Taureau avec interface graphique. Ce jeu nécessite deux joueurs (par exemple le PC et un joueur). Chacun d'eux choisit un nombre (entier positif) qui doit se composer nécessairement de 4 chiffres. L’autre joueur (son adversaire) tentera de le deviner (le découvrir) en donnant des propositions. Chaque proposition est comparée au nombre à deviner pour donner les taureaux et le nombre de vaches issus de cette comparaison. Il est à noter que : - Un taureau : veut dire que le chiffre existe et qu’il est placé au bon endroit, Une vache : veut dire que le chiffre existe mais il est mal placé. Le jeu se termine quand l’un des deux joueurs devine (trouve) le nombre choisi par l’autre. Projet 12 : Développement du jeu « de Dame » Projets de stage d’été en Langage C -3- Eté 2013 Le principe du jeu de Dame est de permettre à l’utilisateur de jouer contre la machine avec la possibilité d’afficher le score, le temps écoulé et le joueur gagnant à la fin d’une partie du jeu de Dame ainsi que l’enregistrement du score (c’est-à-dire le nombre de coût ayant permis à un joueur de gagner) dans un fichier sur disque, dédié au stockage des scores obtenus. Projet 13 : Développement du jeu « d’Echec» Le principe du jeu d’Echec est de permettre à l’utilisateur de jouer contre la machine avec la possibilité d’afficher le score, le temps écoulé et le joueur gagnant à la fin d’une partie d’échec ainsi que l’enregistrement du score (c’est-à-dire le nombre de coût ayant permis à un joueur de gagner), dans un fichier stocké sur disque, dédié au stockage des scores obtenus. Travail à rendre : Il vous est demandé de fournir pour chaque projet réalisé : 1- un rapport détaillé contenant le code source des différentes parties implémentées avec les argumentations des choix effectués en matière de structures de données, etc. Ce rapport doit refléter une recherche effectuée pour comprendre d’une manière claire le but du projet (par exemple, un candidat peut se référer à Internet pour comprendre comment se déroule un jeu demandé, etc.). Le rapport doit contenir les chapitres/parties suivantes à savoir : - Introduction - Présentation générale o Définition du problème o Objectifs du projet o Cadre du projet et environnement choisi - Analyse et conception o Recherche comparative des structures de données o Description des sous-programmes utilisés - Réalisation o Environnement matériel o Environnement logiciel o Imprimés écran de quelques interfaces de l’application réalisée avec les commentaires associés o Code sources du projet - Conclusion - Bibliographie et Nétographie A ne pas oublier d’ajouter la table des matières ainsi que la table des figures et la liste des tableaux. 2- un CD contenant les codes sources associés et l'exécutable généré de l’application réalisée. Il est à noter que les idées personnelles et innovatrices seront appréciées. Par ailleurs, l’utilisation des sous-programmes ainsi que des structures de données diverses est nécessaire. L’utilisation Projets de stage d’été en Langage C -4- Eté 2013 d’une interface graphique est obligatoire quelque soit le sujet. L’ajout des effets sonores est par ailleurs apprécié. Le projet ne peut être réalisé qu'individuellement sachant que l'évaluation du projet tiendra compte de l’effort déployé et de l’innovation apportée par l’étudiant dans la réalisation du projet. Le rapport et le CD seront à remettre selon un planning qu’on vous indiquera ultérieurement.(Septembre 2013) Attention : Une fois la date de la remise du rapport et du CD affichée, aucune remise du travail ne sera acceptée au delà de cette date. Toute tentative de fraude sera sanctionnée par un ZERO. En cas de besoin et pour plus d’informations, contactez: - [email protected] Projets de stage d’été en Langage C -5- Eté 2013