Passer au contenu

Variables, boucles et tests en Small Basic

Microsoft a décidé de renouer avec le principe d’une programmation amusante, une programmation loisir, et propose un langage ultra-simple composé de 15 instructions de base: Small Basic. Ce langage permet de créer très facilement des applications “console” et Windows. Dans ce deuxième épisode, nous allons voir les concepts de variables, de boucles et de tests… Amusez-vous bien…

Etape 1/7 : Rappel des épisodes précédents

Small Basic est un langage conçu pour le fun, pour le simple plaisir de s’amuser en programmant. Il appartient à cette nouvelle initiative de Microsoft pour encourager les plus jeunes (de 7 à 77 ans) à découvrir les joies de la programmation. Pour en savoir plus, cliquez ici .

Dans notre premier épisode (voir ici ) nous avons présenté l’environnement de développement, montré que le logiciel permettait non seulement de créer des petites applications rapides en mode-console (ici) mais aussi de véritables applications Windows connectées au Web et capables d’interroger des services Web comme Flickr (ici )

Dans ce deuxième épisode, nous allons étudier quelques concepts fondamentaux du langage comme les variables, les boucles et les tests-branchements.

Etape 2/7 : usage des variables

L’ordinateur ne manipule pas toujours des données figées et connues à l’avance. Par exemple, si un programme doit manipuler des nombres ou des textes saisis par l’utilisateur, il stockera dans des variables ces saisies.

Reprenons notre exemple d’affichage d’images de l’épisode 1. Le programme cherchait forcément des photos de chateaux. Dans le programme ci-dessous, on commence par demander à l’utilisateur ce qu’il veut rechercher, on stocke son mot de recherche dans une variable (vRecherche) et on utilise ensuite cette variable pour donner un nom à la fenêtre et réaliser la recherche sur Flickr.

TextWindow.Write(“Saisissez un mot-clé : “)
vRecherche = TextWindow.Read()
GraphicsWindow.Show()
GraphicsWindow.Width = 640
GraphicsWindow.Height = 480
GraphicsWindow.Title = “Mot cherché sur Flickr : ” + vRecherche
GraphicsWindow.BackgroundColor = “Black”
vPic = Flickr.GetRandomPicture(vRecherche)
GraphicsWindow.DrawResizedImage(vPic,0,0,640,480)

Pour comprendre ce programme, intéressons-nous à trois lignes spéciales:

vRecherche = TextWindow.Read() -> ici on attend que l’utilisateur saisisse un mot (commande Read) et quand le mot a été validé par la touche [Entrée] on le stocke dans la variable vRecherche.

GraphicsWindow.Title = “Mot cherché sur Flickr : ” + vRecherche -> cette ligne donne un titre à la fenêtre qui affiche l’image. Ce titre est créé à partir d’une concaténation entre la chaîne “Mot cherché sur Flickr : ” et le contenu de la variable vRecherche. Par exemple, si le mot saisi par l’utilisateur est “Titi“, la variable vRecherche contient “Titi” et en guise de titre de la fenêtre on verra affiché: Mot cherché sur Flickr : Titi

vPic = Flickr.GetRandomPicture(vRecherche) -> cette ligne utilise deux variables. Elle demande au service Flickr d’envoyer une image ayant pour mot clé le mot contenu dans la variable vRecherche. Ensuite, elle stocke l’image renvoyée par Flickr dans une variable dénommée vPic.

Etape 3/7 : Variables Numériques

Voyons un autre exemple d’utilisation des variables. Ce programme demande deux nombres à l’utilisateur puis les multiplie et affiche le résultat. Les deux nombres saisis sont stockés dans deux variables X et Y et le résultat de la multiplication est stocké dans la variable R puis affiché.

TextWindow.Write(“Entrez le premier nombre N1 = “)
X = TextWindow.ReadNumber()
TextWindow.Write(“Entrez le deuxième nombre N2 = “)
Y = TextWindow.ReadNumber()
R = X * Y
TextWindow.Write(“Le résultat de la multiplication N1 x N2 = “)
TextWindow.WriteLine(R)
TextWindow.PauseWithoutMessage()

Dans ce programme, on utilise la commande ReadNumber pour demander à l’utilisateur de saisir un nombre et s’assurer qu’il saisit bien un nombre.

La ligne:
R = X*Y
réalise le calcul mathématique de la multiplication

Le résultat est affiché en passant la variable R à la commande WriteLine.

Etape 4/7 : Les boucles

Si on reprend le programme précédent, celui-ci se termine après le premier calcul. Si on veut effectuer 3 opérations, il faudrait relancer le programme trois fois. Une autre solution consiste à faire boucler 3 fois le programme.

On peut utiliser l’instruction For .. To .. EndFor pour faire boucler une séquence d’instructions. Regardez le programme ci-dessous qui reprend l’exemple précédent, mais le fait boucler trois fois sur lui-même:

For i=1 to 3
TextWindow.Write(“Entrez le premier nombre N1 = “)
X = TextWindow.ReadNumber()
TextWindow.Write(“Entrez le deuxième nombre N2 = “)
Y = TextWindow.ReadNumber()
R = X*Y
TextWindow.Write(“Le résultat de la multiplication N1 x N2 = “)
TextWindow.WriteLine(R)
TextWindow.PauseWithoutMessage()
EndFor

Notez que la boucle commence par l’instruction: FOR i=1 TO 3 et qu’elle finit avec l’instruction ENDFOR.

Cette commande de boucle demande à l’ordinateur de répéter 3 fois (de 1 à 3) la séquence d’instructions entre FOR et ENDFOR.

Voici un autre exemple: à votre avis que fait cette boucle?

For i = 10 To 25
TextWindow.WriteLine(i)
EndFor

Vous avez trouvé? Cette boucle affiche tous les nombres de 10 à 25. En effet, on utilise une boucle For avec un compteur nommé “i” que l’on fait de 10 à 25. Et l’on affiche à chaque boucle la valeur du compteur “i”.

Etape 5/7 : Les boucles While

Il existe une autre forme de boucle, la boucle “While”… Tant que la condition exprimée est vraie, on boucle sur les instructions comprises entre While et EndWhile.

Par exemple, le programme suivant affiche tous les nombres entre 25 et 1 par ordre décroissant:

i = 25
While (i > 0)
TextWindow.WriteLine(i)
i = i-1
EndWhile

En texte clair, le programme ci-dessus se traduit ainsi:

On utilise une variable i qu’on initialise à 25.
Puis on définit une boucle WHILE qui boucle tant que la valeur de i est supérieure à zéro.
On affiche la valeur actuelle de i
On décrémente la valeur de i (i = i-1)
Et on boucle.

Etape 6/7: Les tests

Nous avons vu les variables et les boucles. Il nous reste un dernier élément fondamental à découvrir: les tests logiques.

En effet, il est souvent essentiel de pouvoir tester une valeur.
On utilise pour cela l’instruction IF .. THEN .. ELSE .. ENDIF

Cette instruction peut se traduire par SI la condition est vraie ALORS on exécute ces commandes, SINON on exécute ces commandes FIN-SI.

L’exemple suivant demande à l’utilisateur de saisir un nombre. L’ordinateur affiche alors si ce nombre est pair ou impair.

TextWindow.Write(“Saisissez un nombre: “)
vNombre = TextWindow.ReadNumber()
vReste = Math.Remainder(vNombre, 2)
IF (vReste = 0) THEN
TextWindow.WriteLine(vNombre + ” est un nombre PAIR.”)
ELSE
TextWindow.WriteLine(vNombre + ” est un nombre IMPAIR.”)
ENDIF

Exercice: Vous en savez désormais suffisamment pour créer le célèbre jeu du nombre mystérieux. Ce jeu est considéré comme le premier programme jamais créé. Il fut inventé par Lady Ada Lovelace (la fille légitime de Lord Byron) pour démontrer le principe de fonctionnement de la machine analytique de Charles Babbage vers 1840 !
Dans ce jeu, l’ordinateur tire aléatoirement un nombre à trouver entre 0 et 1000. L’utilisateur doit ensuite découvrir ce nombre. Tant que l’utilisateur n’a pas trouvé ce nombre, l’ordinateur lui propose de saisir une suggestion et lui indique si sa suggestion est plus grande ou plus petite que le nombre à trouver.

Vous trouverez la réponse à cet exercice en passant à l’étape suivante…

Pour vous aider:
* sachez que pour tirer un nombre aléatoire entre 0 et 1000 on utilise l’instruction: Math.GetRandomNumber(1000)
* pour exprimet une différence on écrit: IF (A <> B) THEN qui signifie: si A est différent de B alors…

Etape 7/7 : Solution du Jeu du Nombre Mystérieux:

TextWindow.WriteLine(“Le Jeu Du Nombre Mystérieux, d’après Lady Lovelace”)
TextWindow.WriteLine(“**************************************************”)
TextWindow.WriteLine(“”)
vAtrouver = Math.GetRandomNumber(1000)
vNombre = -1
vCoup = 0

WHILE (vNombre <> vAtrouver)

TextWindow.Write(“Saisissez un nombre compris entre 0 et 1000: “)
vNombre = TextWindow.ReadNumber()

IF (vNombre > vAtrouver) THEN
TextWindow.WriteLine(“Votre suggestion est trop grande.”)
ENDIF

IF (vNombre < vAtrouver) THEN
TextWindow.WriteLine(“Votre suggestion est trop petite.”)
ENDIF

vCoup = vCoup + 1

ENDWHILE

TextWindow.WriteLine(vNombre + ” était le nombre à trouver!”)
TextWindow.WriteLine(“Vous l’avez trouvé en ” + vCoup + ” coups…”)

Dans le prochain épisode, nous verrons que Small Basic possède des instructions graphiques nombreuses et qu’il fait un clin d’oeil à un autre célèbre “langage pour tous” des années 80: le LOGO!

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Duval Loic