Séquence d'instruction dans le module carte
Supposons qu'initialement seul le premier tas de cartes n'est pas vide, et que ce tas contient trois cartes de couleur TREFLE (♣︎), COEUR (♡), PIQUE (♠︎) dans cet ordre de bas en haut. Supposons que nous voulions vider le tas 1 en plaçant une carte sur chacun des trois autres tas.
Cela peut se faire simplement en déplaçant une à une les cartes du tas 1 vers les autres tas comme le montre l'algorithme :
deplacer le sommet du tas 1 vers le tas 2
deplacer le sommet du tas 1 vers le tas 3
deplacer le sommet du tas 1 vers le tas 4
En Python
, cet algorithme se traduit simplement par trois instructions deplacer_sommet
Si on utilise la boite de dialogue avec l'interprète du langage, on atteint la situation voulue avec le dialogue :
>> deplacer_sommet(1,2)
>> deplacer_sommet(1,3)
>>
deplacer_sommet(1,4)
Dans ce dialogue, chacune des trois instructions est donnée à exécuter les unes après les autres, et l'interprète donne le résultat de son travail après chacune d'elles
Remarque :
On peut aussi regrouper ces trois instructions en une seule :
>>deplacer_sommet(1,2);deplacer_sommet(1,3);deplacer_sommet(1,4)
Cette construction est très fréquente en programmation impérative, et on la nomme séquence d'instructions.
Lorsqu'une séquence d'instructions est exécutée, toutes les instructions qui la composent sont exécutées les unes après les autres dans l'ordre de leur apparition dans la séquence. La valeur fournie d'une séquence est la valeur de la dernière instruction
Exemple :
Illustration de la séquence d'instruction dans le module carte
Complément : Test de vacuité
Certains traitements nécessitent des tests. Pour cela on dispose de fonctions.
Pour tester si un tas est vide, on fera appel à la fonction tas_vide
qui donne la valeur vrai
(true
en anglais) et en python si le tas numéro n
est vide, faux
(false
en anglais dans le cas contraire).
On peut faire le test contraire en faisant appel à la fonction
tas_non_vide(1)
Complément : Test sur les couleurs
Les quatre couleurs sont décrites dans le module Cartes par les quatre identificateurs TREFLE. CARREAU, COEUR et PIQUE.
Il est important de désigner les couleurs par ces identificateurs en lettres MAJUSCULES.
Il est possible de connaître la couleur au sommet d'un tas en faisant appel à la fonction couleur_sommet(n)
qui donne la couleur de la carte située au sommet du tas numéro n
.
couleur_sommet(n)
Il est normalement dénué de sens de tester la couleur de la carte située au sommet d'un tas vide. Toute tentative d'appel à couleur_sommet(n)
déclenche l'exception Tas_Vide
si le tas n
est vide.
Quatre autres fonctions permettent aussi de tester la couleur du sommet d'un tas
sommet_trefle(n)
sommet_carreau(n)
sommet_coeur(n)
sommet_pique(n)
qui donnent la valeur «
si le sommet du tas vrai
»n
est un TREFLE. CARREAU, COEUR et PIQUE et
dans le cas contraire.«
faux
»
Elles sont soumises à la même contrainte d'utilisation que la fonction couleur_sommet,
et déclenchent la même exception en cas de non respect de cette contrainte.
Complément : Comparaison de valeur
Une fonction permet de comparer les valeurs des cartes au sommet de deux
tas :
superieur(n,p)
qui donne la valeur vrai
si la carte au sommet du tas numéro n
a une valeur supérieure ou égale à celle du tas numéro p
, et la valeur faux
dans le cas contraire.
On ne peut comparer les cartes situées au sommet de deux tas que s'ils ne sont pas vides. Tout appel à superieur(n,p)
déclenche l'exception { Tas_Vide
si l'un des tas n
ou p
est vide.
Complément : Vitesse d'exécution
Un délai est imposé entre l'exécution des instructions de manipulation des tas. Le temps d'attente peut être ajusté en fonction des besoins. Le module fournit deux éléments permettant de consulter
et de modifier quel_delai
fixer_delai
cette temporisation.
Pour augmenter la vitesse d'exécution, il suffit de diminuer la valeur réelle.
fixer_delai(0.1)
L'instruction précédente permet de fixer la durée de l'attente à un dixième de seconde.
Complément : Pause
L'instruction pause
permet de faire une pause durant l'exécution d'un programme. Elle s'utilise en communiquant un message en paramètre, message qui sera imprimé dans le terminal lors de la pause. La pause s'arrête dès l'appui sur la touche Entrée
.
pause ("un petit repos bien mérité")
Conseil : Obtenir de l'aide
Pour obtenir un aide-mémoire des principales fonctions et instructions du module Cartes, on fait appel à la fonction aide_moi
.
aide_moi ()
Les principaux elements du Module Cartes
----------------------------------------
* init_tas : numero_tas * string -> unit
init_tas(num_tas,chaine) : initialise le tas numero num_tas
avec la description donnee par chaine.
...