Apprendre à programmer avec des cartes

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

La séquence d'instruction

ComplémentTest 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)

Test de vacuité

ComplémentTest 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 « vrai » si le sommet du tas n est un TREFLE. CARREAU, COEUR et PIQUE et«  faux » dans le cas contraire.

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.

Tester les couleurs des cartes

ComplémentComparaison 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.

Comparer la valeur des cartes

ComplémentVitesse 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

quel_delai et de modifier 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émentPause

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é")

ConseilObtenir 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.

...

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Laetitia Jourdan, Éric Wegrzynowski, Léopold Weinberg. FIL - IEEA - Univ. Lille1. http://www.fil.univ-lille1.fr Paternité - Pas d'Utilisation CommercialeRéalisé avec Scenari (nouvelle fenêtre)