You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
3.5 KiB

## Atelier
### Un organisateur de voyages veux pouvoir remplir son véhicule de 8 places avant de savoir si il doit organiser le voyage ou pas. Chaque voyageur a un nom, un prénom, un numero de place, une date de naissance, et un indicateur qui précise si il a payé ou pas. Il n'a pas besoin d'avoir payé pour avoir un numéro de place.
### Ecrire l'objet voyageur avec ces propriétés et au moins une fonction pour pouvoir modifier l'état payé.
```
objet voyageur
variable privée nom, prenom : chaine;
variable privée date_de_naissance : date;
variable privée numero_de_place : entier;
variable privée payé : booléen;
methode constructeur(nom,prenom,date)
ceci->nom = nom;
ceci->date_de_naissance = date;
ceci->prenom = prenom;
ceci->numero_de_place = 0;
ceci->payé = faux;
fin methode
methode paiement_recu()
ceci->payé = vrai;
fin méthode;
methode a_payé()
renvoyer ceci->payé
fin methode
methode attribuer_place(numero)
si numero > 0
ceci->numero_de_place = numero
fin si
fin methode
methode place()
renvoyer ceci->numero_de_place;
fin methode
methoode identite()
renvoyer ceci->prenom ~ " " ~ ceci->nom ~ " né le " ~ ceci->date_de_naissance;
fin methode
fin objet
```
### Ecrire un objet chauffeur héritant de voyageur, mais comme il est dans l'équipage, il est forcément indiqué comme ayant payé.
```
objet chauffeur étend voyageur
methode constructeur(nom,prenom,date)
parent->constructeur(nom,prenom,date);
ceci->paiement_recu();
fin methode;
fin objet
```
### Ecrire le psuedo code permettant de créer un chauffeur ou un voyageur en fonction du choix de l'utilisateur
```
fonction creer_voyageur(chauffeur_autorisé=vrai)
var mon_voyageur : objet;
var est_chauffeur : booléen;
var nom, prenom : chaine;
var unedate : date;
Afficher "Nom ?"
Lire nom
Afficher "Prenom ?"
Lire prenom
Afficher "Date de naissance ?"
Lire date
si chauffeur_autorisé alors
est_chauffeur = faux;
Afficher "C'est un chauffeur ?"
Si reponse_fin == "oui" Alors
est_chauffeur = vrai
Fin si
fin si
Si est_chauffeur == vrai Alors
mon_voyageur = nouveau chauffeur(nom,prenom,date);
Sinon
mon_voyageur = nouveau voyageur(nom,prenom,date);
Fin si;
renvoyer mon_voyageur;
fin fonction
```
### Ecrire le pseudo code permettant de mettre dans un tableau au minimum un chauffeur et un client. Sachant quon ne peut pas avoir plus d'un chauffeur.
```
var tdv : tableau;
var fini, a_chauffeur, vehicule_rempli : booléen;
var nb_voyageurs : entier;
var reponse : chaine;
nb_voyageurs = 0;
fini = faux;
a_chauffeur = faux;
vehicule_rempli = faux;
Tant que (fini != vrai et a_chauffeur != vrai et !vehicule_rempli)
tdv[nb_voyageurs] = creer_voyageur(!a_chauffeur);
nb_voyageurs = nb_voyageurs +1;
Si tdv[nb_voyageurs] instancede chauffeur
a_chauffeur = vrai;
fin si;
vehicule_rempli = (a_chauffeur et nb_voyageurs == 9) ou (!a_chauffeur et nb_voyageurs == 8);
Si taille(tdv) >= 2 alors
Afficher "fini ?"
Lire reponse_fin
Si reponse_fin == "oui" Alors
fini = vrai
Fin si
Fin si
Fin tant que;
```
## Puis de vérifier si tout le monde a payé ou pas.
```
var i entier;
i=0;
fini = false;
Tant que i < taille(tdv) et !fini
si faux == tdv[i]->a_payé() alors
Afficher "tout le monde n'a pas payé";
fini = vrai
fin si
i = i+1;
fin tant que
Si i == taille(tdv) et !fini
Afficher "tout le monde a payé";
fin si
```