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.

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