Projets Programmation impérative 1 langage C



Documents pareils
Priorités de calcul :

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

Les nombres entiers. Durée suggérée: 3 semaines

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

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

Exercices de dénombrement

Débuter avec Excel. Excel

Initiation à la programmation en Python

Le chiffre est le signe, le nombre est la valeur.

GUIDE Excel (version débutante) Version 2013

Activités pour la maternelle PS MS GS

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

EXCEL TUTORIEL 2012/2013

Chapitre 2 Devine mon nombre!

Les structures. Chapitre 3

Problèmes de dénombrement.

Algorithmique et programmation : les bases (VBA) Corrigé

Coefficients binomiaux

Championnat de France de Grilles Logiques Finale 7 juin Livret d'instructions

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Nombre de marches Nombre de facons de les monter

Représentation d un entier en base b

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Les opérations binaires

L informatique en BCPST

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Mathématiques financières

Introduction à MATLAB R

Poker. A rendre pour le 25 avril

Feuille TD n 1 Exercices d algorithmique éléments de correction

Date : Tangram en carré page

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

Investissement dans la construction de nouveaux bâtiments résidentiels (travaux mis en place) Méthodologie

Définitions. Numéro à préciser. (Durée : )

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Université Paris-Dauphine DUMI2E 1ère année, Applications

Rallye Mathématiques de liaison 3 ème /2 nde et 3 ème /2 nde pro Epreuve finale Jeudi 21 mai 2015 Durée : 1h45

Notre projet est de réaliser un document

Rappels sur les suites - Algorithme

LES NOMBRES DECIMAUX. I. Les programmes

Chapitre 4 Pierre, papier, ciseaux

Premier cours d informatique

Les suites numériques

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Initiation à l algorithmique

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

STAGE IREM 0- Premiers pas en Python

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

Document d accompagnement. de la 1 re à la 8 e année. Exemples de tâches et corrigés. 1 re année Tâche Corrigé... 7 Tâche Corrigé...

Feuille d exercices 2 : Espaces probabilisés

La saisie d un texte

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Complément d information concernant la fiche de concordance

Chapitre 10 Arithmétique réelle

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

S initier aux probabilités simples «Question de chance!»

Document d aide au suivi scolaire

V- Manipulations de nombres en binaire

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

LE PROBLEME DU PLUS COURT CHEMIN

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

Algorithme. Table des matières

1 Lecture de fichiers

Raisonnement par récurrence Suites numériques

Mises à jour CELCAT depuis la version 6.4

Excel 2010 Intermediaire

Bien lire l énoncé 2 fois avant de continuer - Méthodes et/ou Explications Réponses. Antécédents d un nombre par une fonction

IFT2880 Organisation des ordinateurs et systèmes

Présentation du langage et premières fonctions

Note de cours. Introduction à Excel 2007

Algorithmique avec Algobox

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

La fonction exponentielle

IV- Comment fonctionne un ordinateur?

6. Les différents types de démonstrations

Cours 1 : Qu est-ce que la programmation?

S'organiser pour ne plus se noyer dans l'information

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

C f tracée ci- contre est la représentation graphique d une

III- Raisonnement par récurrence

Licence Sciences et Technologies Examen janvier 2010

LES TYPES DE DONNÉES DU LANGAGE PASCAL

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Exercices sur le chapitre «Probabilités»

Entraînement au concours ACM-ICPC

SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... LES MESURES

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

Représentation des Nombres

Chapitre 5. Calculs financiers. 5.1 Introduction - notations

Numbers en EPS UN TUTORIEL POUR LA! NOUVELLE VERSION DE NUMBERS EST! DISPONIBLE SUR TICEPS.FREE.FR. ticeps.free.fr

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

Suivi de la formation

ACTIVITÉ DE PROGRAMMATION

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Transcription:

Projets Programmation impérative 1 langage C Les projets devront être rendus le 24 janvier 2011, avant 23 heures (heure de Paris). Ils doivent être réalisés par binômes (C'est-à-dire par groupe de DEUX étudiants) ou à un seul étudiant. Le code source de votre projet devra être envoyé par email (rchaabane@ai.univparis8.fr) avec un rapport (au format PDF) qui devra accompagner les sources dans l email. Le rapport doit comporter une présentation du travail et des difficultés rencontrées ainsi qu'un listing du programme accompagné d'un mode d'emploi explicite et d'un listing d'exécution. Vous pouvez poser vos questions ou demander un rendez-vous pour discuter de l'avancement de vos projets par mail à votre enseignant et ceci jusqu'au vendredi 21 janvier inclus. 1. Lisp Écrire en C un programme capable d'exécuter du Lisp standard. Les programmes Lisp peuvent être : o directement écrits en ligne de commande Le code est interprété une fois que toutes les parenthèses ouvertes ont été fermées. Ceci permettrait d'écrire des fonctions qui tiennent sur plusieurs lignes sans passer par un éditeur de texte. o chargés et exécutés à partir d'un fichier. L'interprète doit : o o o avoir une gestion dynamique de la mémoire gérer les fonctions arithmétiques inclure t, nil, undefined, car, cdr, cons, quote, print, let, if, eq, atom et le plus important, de, ce qui permettra de créer les fonctions manquantes directement en Lisp et les charger au démarrage du programme (ex. : append, length, caar, cadr,...) 2. Labyrinthe 3D : le spéléologue Un labyrinthe peut être vu comme une structure de graphe, c'est-à-dire que, pour chaque position, on connait un pointeur sur les positions disponibles à partir de là. Dans un labyrinthe 3D à salles cubiques, il y a au maximum 6 voisins pour chaque salle. En réalité, il y a une infinité de successeurs possibles. Donc, à partir de chaque salle, il faut disposer d'une liste de salles atteignables directement. 1

Définir le labyrinthe de la façon la plus simple possible. Programmer un algorithme qui trouve une façon de sortir du labyrinthe quelle que soit la salle dans laquelle on se trouve. Programmer une méthode permettant de trouver la façon la plus courte de sortir du labyrinthe quelle que soit la salle dans laquelle on se trouve. Nous donnons ici un exemple de labyrinthe simple, mais il est possible de faire plus retort. Exemple Chaque salle est donnée avec U (up) si on peut monter, D (down) si on peut descendre et les quatre (éventuellement) murs. Premier niveau - --------- U ---- ------------- U U Deuxième niveau U -------- D ---- ------------ U --- ----- ---- D U D ------ Troisième niveau Quatrième niveau Cinquième niveau D U ------- ------------ U D ---- -------- U D ------ D ------------- ------------ ----- D ---------- U D U U ------------- -------- --- ---- D D D 2

3. Awélé Il s'agit ici de programmer un awélé. Le joueur doit pouvoir jouer contre la machine. On trouvera les règles sur la page suivante. http://www.unifr.ch/psycho/pgp/warritournament/reglesfr.pdf Il s'agit de pouvoir jouer contre l'ordinateur. Comme, à chaque coup, il y a douze possibilités, il est assez facile de faire un programme qui calcule le meilleur coup. Mais comme au coup suivant, la maigre victoire acquise peut devenir une catastrophe, il vaut mieux calculer les 12 coups qui suivent et même les 144 coups suivants, non? 4. Quatro Le quatro est un jeu malgache, qui entre dans la catégorie des awélés, mais en plus riche puisque le plateau contient quatre rangées de huit cases. Chaque joueur tourne sur deux rangées. Chaque fois qu'il "prend", il prend dans la case adjacente de l'adversaire. Il faut pouvoir jouer contre la machine. 5. Morpion solitaire Jouer au morpion, c'est facile, vous avez tous fait cela. On joue sur une grande grille régulière, par exemple une feuille A4 avec quadrillage 5 mm. Le joueur dessine des croix en cherchant à en aligner des groupes de cinq. http://fr.wikipedia.org/wiki/morpion_solitaire La situation initiale consiste à prendre une page et à dessiner un certain nombre de croix initiales. Puis, à chaque coup, le joueur doit faire un nouvel alignement de cinq croix. Un alignement est donc formé de quatre segments. Un segment ne peut être utilisé qu'une fois. Jusqu'à combien de croix supplémentaires ira votre programme? 100? Position initiale : ** ** 3

Un premier coup pourrait être : ----- ** ** À quoi peut succéder : puis : ----+ *** * ** ----+ -+--- * ** And so on... 6. Problème du Cheval fou Vous connaissez aux échecs le mouvement et le problème du cheval? Il s'agit de faire parcourir toutes les cases à un cavalier, en suivant les mouvements normaux du cavalier aux échecs, sans jamais repasser par la même case. Ici, avec un cheval fou, parfois, disons tous les trois coups, il rue et saute, dans un mouvement plus long que d'habitude : au lieu d'un mouvement (2,1) il fait alors un mouvement (3,2). Par exemple, à partir de la case A1, le cheval fou peut passer (premier coup) en B3 (ou en C2) puis (deuxième coup) en C5 (ou C1 ou...) puis, de là, en (troisième coup, le saut) F7 (ou en E2...). And so on. Il s'agit de simplement programmer ces mouvements et faire une fonction qui essaie de faire 4

bouger le cheval jusqu'à ce que toutes les cases aient été parcourues une et une seule fois chacune. 7. Quel taquin! Le taquin est un jeu dans lequel on déplace des pièces carrées jusqu'à les mettre toutes à leur place réservée. Une adaptation de ce jeu consiste à disposer de pièces de taille variée (par exemple des pièces de taille 1 x 1 et des pièces de taille 1 x 2) et de les amener à leur position. Exemple : ici, un numéro signifie une pièce et un numéro répété est celui d'une pièce plus grande. Un vide signifie la case vide. Situation initiale 7 1 3 3 7 4 4 5 8 10 9 11 2 12 6 Situation à obtenir 1 2 3 3 4 4 5 6 7 8 9 10 7 11 12 Écrire un programme qui prend une situation initiale, une situation à obtenir et propose les mouvements pour y aboutir. 8. Nombres Croisés Soit une grille de nombres croisés, exemple : a b c --------- 1 2 3 --------- 1) suite de chiffres consécutifs 2) nombre premier 3) carré a) carré et palindrome b) le produit des chiffres est 12 *) case noire 5

Écrire un programme qui résout ce genre de problèmes. Dans un premier temps on limitera le nombre de définitions (carré, palindrome) et la taille de la grille. Dans un second temps on ajoutera des styles de définitions ("le carré de la somme des chiffres est un palindrome") et la taille de la grille sera étendue (5x5 puis 6x6). 9. Anagrammes Soit une grille d'anagrammes (c'est-à-dire de mots croisés dont on connaît non pas une définition mais la liste des lettres). On suppose l'existence d'un dictionnaire (qu'il faudra, en partie, construire). Écrire un programme qui trouve la solution de ces anagrammes. Dans un premier temps le dictionnaire sera limité et la taille de la grille aussi. Dans un second temps ces éléments pourront grandir jusqu'à être en mesure de résoudre les anagrammes des journaux spécialisés. 10. Jeu du 7-0 Le jeu du 7-0 est assez simple. Chaque joueur (au moins deux joueurs) dispose d'une cagnotte, à 0 au départ du jeu. Le but est d'être le joueur dont la cagnotte est la plus grande à la fin d'un tour où une au moins des cagnottes des joueurs a dépassé 200. Un tour de jeu se passe ainsi, chaque joueur joue successivement. À son tour le joueur lance deux dés à six faces et fait leur somme. Il obtient un total partiel et peut parfois choisir de relancer pour augmenter son total partiel. À un moment où à un autre, il décide de ne pas relancer et de mettre le total partiel dans la cagnotte, c'est alors au joueur suivant. À chaque lancé de dés, si le total est 7, le total partiel est remis à 0 et le joueur a fini son tour. Exemple de début de partie X joue et fait 4, il rejoue et fait 8 (total partiel 12), il rejoue et fait 11 (total partiel 23), satisfait, il s'arrête et sa cagnotte passe à 23. Y joue et fait 12, il rejoue et fait 11, il rejoue et fait 2, il rejoue et fait 6, il rejoue et fait 10, à ce moment son total partiel est 41, il décide de monter à deux fois le résultat de son adversaire et rejoue. Il fait 7, sa cagnotte reste à 0 et c'est au joueur suivant. 11. Polynômes Un polynôme est une liste de monômes. On peut le dériver, ou l intégrer, l appliquer à une valeur, en additionner, soustraire, multiplier ou diviser deux... Il faut pouvoir enchaîner les calculs, mémoriser les polynômes produits... 12. Matrices Projet similaire aux polynômes, mais avec des matrices. 6

13. Calculatrice Réaliser une calculatrice qui fonctionne en mode texte (non graphique) qui permette d effectuer une série de calculs (additions, soustractions, multiplications, divisions, log, exponentielle, etc ) sur une même ligne. La touche entrée permettra de calculer le résultat. Vous pourrez programmer des actions liées à des touches claviers tel que les touches de directions (sup, inf) qui permettent d afficher les 10 dernières opérations de calcul effectuées. Tout comme dans un terminal Shell. Une autre touche (au choix) pour effacer les opérations stockées en mémoire. La touche F1 par exemple pour afficher le mode d emploi de la calculatrice. 14. Gestion d une bibliothèque Ecrire un programme qui permette de gérer les lecteurs et les livres d une bibliothèque. Ce programme stockera ses données dans des fichiers. Un fichier pour les livres, un fichier pour les lecteurs, et un fichier pour les emprunts. - Un livre aura des informations qui lui sont liées telles que : titre, auteur(s), année d édition, et statut (disponible à l emprunt ou non disponible). Si le statut du livre est non disponible alors on aura sa date d emprunt, sa date de retour, l identifiant du lecteur qui l a emprunté et un statut de retour (en retard, période d emprunt en cours). Si la date de retour est atteinte et que le livre est rendu, le statut du livre passe à «disponible à l emprunt» et les informations liées à l emprunt sont supprimées. - Les lecteurs auront également des informations qui leurs sont liées telles que : identifiant (entier), nom, prénom, âge, adresse, téléphone, liste des livres empruntés, liste des livres en retard. - Le fichier des emprunts contiendra la liste des livres empruntés, leur statut (en retard ou non en retard) et le numéro du lecteur qui les a empruntés. Votre programme offrira une interface qui permettra d afficher : La liste des lecteurs La liste des livres disponibles La liste des livres en retard avec le nom, prénom et téléphone des lecteurs qui les ont empruntés en face de chaque livre. Vous pourrez afficher les livres en retard par lecteur. 7