TP n°3                       INFORMATIQUE     DEUG MIAS+MASS S1     2001-2002

Exercice 1 : Le grand restaurant
   Un restaurant affiche la carte suivante :
MENU a 15 EURO
(boissons non comprises)
ENTREE
salade du chef
ou
charcuterie
ou
pounti
PLAT GARNI
truffade
ou
coq au vin
ou
sole meunière
 FROMAGE ou DESSERT 
BOISSONS
Chaudes :
    Café             1.00
    Thé               1.50
    Infusion         1.50
Froides :
   Eau minérale  1.70
   Vin              11.00
   Bière             2.50

DESSERTS
   crème caramel
   glace vanille
   profiterolles (supplément 1.00)
Construire un programme qui pour un client :
    - prend successivement les différents éléments d'une commande (menu obligatoire, boissons facultatives)
    - puis édite proprement la facture complète (nom du restaurant, date, détail des plats choisis et prix)
N.B. Ne tenir compte, dans un premier temps, que de la partie gauche de la carte. Il n'est pas raisonnable de passer plus de 30 mn sur cet exercice.

Exercice 2 : Login
1°) Ecrire un programme qui demande à l'utilisateur un nom d'au moins trois lettres et un prénom d'au moins deux lettres, puis son mot de passe composé des trois premières lettres du nom et des deux premières lettres du prénom. Le programme affichera 'login réussi' si le bon mot de passe a été saisi.
2°) Modifier ce programme pour que les tentatives de login s'enchaînent jusqu'à réussite ou bien jusqu'à ce que l'utilisateur tape un mot de passe vide.
Indications : utiliser par exemple les variables  nom:string[3] et prenom:string[2].

Exercice 3 : Une suite récurrente étrange...
1°) Ecrire un programme permettant de :
    - lire au clavier une valeur entière n,
    - remplacer n par (n div 2) s'il est paire et par (3n+1) sinon,
    - recommencer sur ce nouveau nombre jusqu'à atteindre 1.
Choisir un format d'affichage cohérent avec la taille de votre fenêtre Xterm.
2°) Modifier ce programme pour tester les 50 premiers entiers.
N.B. Dès qu'on retombe sur un nombre déja testé, il est inutile de poursuivre car le reste de la suite est connu.

Exercice 4 :
On souhaite écrire un programme qui
    - saisit une suite de réels non nuls en calculant à mesure leur somme,
    - affiche en fin de saisie le nombre de réels et leur moyenne.
Le nombre de valeurs à saisir étant inconnue au départ, la suite de valeurs s'arrêtera par la saisie de la valeur 0.
1°) Ecrire une version de ce programme sans utiliser de WHILE.
2°) Ecrire une version de ce programme sans utiliser de REPEAT.
3°) Compléter un des deux programmes pour qu'il affiche en plus le minimum et le maximum de ces valeurs.

Exercice 5  : Calendrier
1°) Ecrire un programme qui
    - saisit une date de l'année 2000 (jour de 1 à 31, mois de 1 à 12),
    - calcule le numéro du jour dans l'année (1 à 366),
    - détermine le jour de la semaine (lundi à dimanche), le 01/01/2000 étant un samedi.
2°) Ajouter les contrôles pour éviter les dates fantaisistes (du genre 30/02 ou 31/09).

Exercice 6 : pour aller plus loin
Construire un calendrier perpétuel c'est-à-dire un calendrier qui indique le jour de la semaine pour n'importe quelle date depuis la réforme grégorienne.
Indications : Depuis la bulle Inter gravissima, du 24 février 1582, une année est bissextile si elle est divisible par 4 sauf si elle est divisible par 100 mais pas par 400 (1996 et 2000 ont été bissextiles, 1900 non).