Il y a deux jours, nous avons vu comment gérer les variables et afficher du texte. Aujourd hui, nous allons programmer notre premier jeu : le «Plus ou Moins». Mais avant tout, vous devez connaitre les fonctions conditionnelles. Les fonctions conditionnelles Ces fonctions sont très utiles car elles adaptent le fonctionnement du programme en fonction des données. Pour débuter, nous allons utiliser la fonction If. Vous trouverez toutes les fonctions conditionnelles dans le menu (PRGM) en faisant, pour rappel, [SHIFT] + [VARS], puis [F1] (COM). La syntaxe est la suivante. Entrez ce code dans un nouveau programme : If A<18 Then "TU ES MINEUR" Si A est supérieure ou égale à 18, alors la calculatrice affiche «TU ES MAJEUR». Si A est strictement inférieure à 18, alors on affiche «TU ES MINEUR». N oubliez pas d indiquer la fin de la condition avec. Vous n êtes pas limité à une seule instruction par condition, vous pouvez mettre autant de calculs et d instructions que vous le voulez! Le plus important est que la condition If («si» en français) soit accompagnée du Then («alors») et délimitée par un. Nous allons optimiser le code avec la fonction Else qui veut dire «sinon». En effet, si on n est pas majeur, on est forcément mineur. Au lieu de mettre deux If, on va les regrouper en une seule condition : c est plus lisible et plus rapide. Else "TU ES MINEUR" Même principe, si A supérieure ou égale à 18, alors on affiche «TU ES MAJEUR», sinon on affiche «TU ES MINEUR». Bien sûr, on peut ajouter à l intérieur d une condition, une autre condition. "TU ES (1=GARCON, 2=FILLE)"? B Then If B=1 Else "TU ES MAJEURE" Else if B=1
Then "TU ES MINEUR" Else "TU ES MINEURE" Un ne délimite qu un If. Si vous avez deux If à fermer, il faut mettre deux à la fin! Une machine est bête, elle lit et exécute le code mot à mot. Les boucles conditionnelles Les boucles ont l avantage d exécuter en permanence du code tant que la condition est vraie. Vous les trouverez dans le même onglet que les If (PRGM) -> (COM) puis faites deux fois [F6]. La syntaxe est la suivante : While <conditions> [votre code] WhileEnd. 1 A While A 10 A+1->A WhileEnd C est simple, on initialise la variable A à 1 et on l incrémente de 1 tant que A est inférieure ou égale à 10. A chaque boucle, on affiche la variable A, comme ça, vous vous rendez compte par vous-même ce qui se passe. Une autre variante de While est le couple Do:LpWhile. Vous trouverez ces fonctions dans le même onglet que While. Do:LpWhile fonctionne de la même façon mais exécute au moins une fois le code. 1 A Do A+1->A LpWhile A A 10 Do vient de l anglais, «to do» qui veut dire «faire». Ce qui donc logique car on lui demande de faire (exécuter) au moins une fois le code. Retenez simplement que While vérifie la condition avant d exécuter le code, alors que Do:LpWhile le fait à la fin. Mine de rien, cette différence est très utile dans les programmes. D ailleurs, les programmes ont tendance à privilégié Do:LpWhile dans leurs programmes, vous allez comprendre quand on fera notre premier jeu! Pour clôturer cette partie, nous allons découvrir une autre boucle conditionnelle un peu particulière. C est la boucle For. Ce code fait exactement la même chose que précédemment. For 1 A To 10 Step 1 Next
On initialise la variable A à 1 qu on incrémente de 1 tant que A est inférieure ou égale 10. En lisant littéralement la fonction, on a : Pour (For) A valant 1 jusqu à (To) 10 avec un pas (Step) de 1, on affiche la valeur de A. La boucle For est très utile pour exécuter un certain nombre de fois un même code. Mettre plusieurs conditions Dans tous nos exemples, on n a mis qu une seule condition (par exemple A 18). Dans vos futurs programmes, qui seront plus complexes, on se limitera rarement à une condition. C est à ce moment là que les fonctions And et Or entre en jeu. Pour les trouver, faites [OPTN] + [F6] + [F6] + [F4] (LOGIC). And («et» en français) vérifie que toutes les conditions liées sont exactes. Si c est le cas, la condition générale est vraie. Si une seule est fausse, à la condition générale est fausse, même si toutes les autres sont vraies. And B=1 Then "TU ES UN GARCON MAJEUR" Or («ou» en français) vérifie qu au moins une des conditions est vraies. Une seule suffit à valider un If, un While ou un LpWhile, même si toutes les autres sont fausses. Or B=1 Then "TU ES MAJEUR, UN GARCON OU LES DEUX A LA FOIS" On peut aussi mélanger les And et les Or. Retenez que les And sont prioritaires sur les Or. And B=1 Or B 18 And B=2 Then "QUE TU SOIS UN FILLE OU UN GARCON, TU ES MAJEUR" On peut aussi mettre des parenthèses pour modifier les priorités ou bien optimiser le programme. C est ce que nous allons faire. Le code suivant produit le même résultat : And (B=1 Or B=2) Then "QUE TU SOIS UN FILLE OU UN GARCON, TU ES MAJEUR" Si on n avait pas mis les parenthèses, la calculatrice aurait d abord vérifier si A 18 et B=1 puis si B=2 (sans vérifier si A 18). En mettant des parenthèses, elle vérifie d abord que B=1 ou B=2, puis si A 18. Dans mes exemples, j utilise des If, mais And et Or fonctionnent aussi avec toute autre fonction condition comme While ou LpWhile. For est une boucle particulière et n accepte pas les conditions.
Programmons notre premier jeu! Le jeu du plus ou moins est très simple : la calculatrice génère un nombre aléatoire et vous devez deviner en un minimum d étapes ce nombre mystère. Pour générer un nombre aléatoire, on utilise la fonction Ran# (de random qui veut dire aléatoire!). Voici le chemin d accès : [OPTN] + [F6] + [F3] (PROB) + [F4] (RAND) + [F1] Ran# génère un nombre aléatoire entre 0 et 1 exclu : [0 ; 1 [ Si on veut générer un nombre entre 0 et 10, il faudra multiplier le résultat du Ran# par 10. 10*Ran# A De façon général, pour générer un nombre compris en a et b, on a : (b-a)*ran# +a A Si on veut la partie entière de ce nombre, on utilise la fonction Int : [OPTN] + [F6] + [F4] (NUM) + [F2]. Int ((b-a+1)*ran#+a) A Maintenant, vous êtes armés pour le jeu du «Plus ou Moins». Je vais vous fixer quelques règles : - le nombre mystère doit être compris entre 1 et 100 (inclus). - la calculatrice dit si le nombre est plus petit ou plus grand - mettre un compteur pour connaitre le nombre de coups que l on affichera à la fin A vous de programmer! Quand vous aurez terminé votre programme, allez sur la prochaine page pour la correction.
Le code que vous allez voir est une proposition. Si votre code est différent, ce n est pas grave du moment qu il fonctionne correctement. En effet, il existe autant de variantes du Plus ou Moins que de programmeurs. Les commentaires sont écrits en vert et ne sont donc pas à inclure dans votre programme. Int (100*Ran#)+1 A //On génère un nombre aléatoire compris entre 1 et 100 0 C //On initialise le compteur de coups "VOUS DEVEZ TROUVER UN(sans espace)nombre MYSTERE COMPRIS ENTRE 1 ET 100" Do //Début de la boucle LpWhile "VOTRE PROPOSITION"? B If B A //On vérifie si le nombre proposé est bien différent du nombre mystère (sinon, on affichera un message faux) Then If B<A Then "PLUS GRAND"[DISP] Else "PLUS PETIT"[DISP] " " //Un saut supplémentaire pour l ergonomie C+1 C //On ajoute 1 coup au compteur LpWhile A B //Tant que A (le nombre mystère) différent de B (le nombre proposé), on répète l action ClrText //On nettoie l écran "BRAVO VOUS AVEZ TROUVE(sans espace)le NOMBRE MYSTERE EN (4 espaces) COUPS" Locate 3,3,C //On affiche le nombre de coups Pour aller plus loin, on peut imaginer un mode deux joueurs, plusieurs niveaux de difficulté, un nombre maximum de coups, améliorer la présentation La semaine prochaine, nous découvrirons les listes et les matrices pour concevoir des programmes plus complexes.