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
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
|
|
|
|
``` |