MicroAlg - Tutoriel par blocs

Commencer tout de suite, sans lire l’introduction.

Sur cette page, aller directement à : Prise en main et affichage, Commentaires, Texte et concaténation, Répéter, Nombres pseudo-aléatoires, Demander à l’utilisateur, Calculs avec des nombres, Calculs avec des nombres demandés à l’utilisateur, Booléens, Si, Contact.

Sur la page suivante, aller directement à : Variables, Affectation circulaire, Opérations logiques, Manipulation de texte, Faire… tant que…, Tant que… faire…, Construction et affichage de listes, Listes : structure et lien avec le texte, Parcours de listes, Listes : type et affectation, Taper du code.

Les autres tutoriels

Si vous préférez ne pas utiliser votre souris et taper le code vous-même, vous pouvez plutôt essayer :

Qu’est-ce ?

Cette page est un tutoriel pour MicroAlg, dans lequel on « écrit » un programme MicroAlg de façon visuelle, en disposant des blocs comme un puzzle (voir l’article Wikipedia sur la programmation visuelle). C’est aussi une introduction douce au code MicroAlg tapé en toutes lettres car, progressivement, des liens entre les blocs et le code seront faits.

Le tutoriel est assez long car il couvre tout le langage. Patience ! Peut-être qu’il faudra le faire en plusieurs fois !

Au cours de ce tutoriel, on vous proposera des petits programmes à exécuter directement dans le navigateur. N’hésitez pas à les modifier afin d’être sûre de comprendre le principe (si possible une modification rigolote).

Avant de les exécuter, essayez de deviner ce qu’ils vont faire.

Contact

En cas de problème, ne pas hésiter à poser une question dans la section Questions/Réponses, ou à envoyer un email au créateur de MicroAlg.

Prise en main et affichage

Dans le bloc Programme de la fenêtre ci-dessous, on a mis deux blocs : un bloc Afficher et un bloc de texte "...".

Cliquer sur le bouton Exécuter pour exécuter le programme. Un message de bienvenue devrait s’être affiché dans la barre un peu arrondie ci-dessus. Sinon, ne pas hésiter à poser une question dans la section Questions/Réponses, ou à envoyer un email au créateur de MicroAlg.

Le bloc Programme ne peut pas être supprimé, mais vous pouvez supprimer les autres, par exemple avec un clic-droit. Essayez !

Maintenant, retrouvez les blocs Afficher et "..." dans les catégories Cmdes sans retour ou Valeurs pour réécrire le même programme (ou à peu près), puis testez-le.

Commentaires

Pour expliquer certains passages délicats d’un programme, on peut écrire des instructions qui n’ont aucun effet. C’est le rôle de la commande !!!. Son bloc est dans la catégorie Cmdes sans retour.

Texte et concaténation

Dans un des exemples précédents, pour afficher du texte, nous avons attaché au bloc Afficher un bloc de texte. Nous dirons que nous avons passé du texte en paramètre à la commande Afficher.

Mieux : ce que l’on appelle ici « texte » est parfois appelé « chaîne de caractères ».

Supposons maintenant que l’on veuille afficher deux textes.

Comme le bloc Afficher n’a qu’un branchement, on peut penser à utiliser deux instructions. Mais avec cette technique, il est impossible d’afficher deux textes différents sans passer à la ligne :

Pour « concaténer » deux textes, c’est-à-dire les mettre bout-à-bout, on utilise la commande Concatener. Dans l’exemple suivant, on affiche la concaténation de deux textes :

Rappelez-vous, vous pouvez modifier les programmes de cette page pour éventuellement les améliorer !

Même si en français on dit que le programme « affiche la concaténation de deux textes », le programme s’exécute depuis l’intérieur vers l’extérieur : le programme concatène d’abord, et affiche ensuite.

Pour finir la partie « concaténation », notons qu’il n’y a pas de limite au nombre de textes à concaténer.
Il suffit de cliquer sur la petite étoile du bloc Concatener pour pouvoir choisir combien de textes vont être concaténés, en glissant un bloc supplémentaire, ou en supprimant un bloc pour faire apparaître ou disparaître des emplacements. Recliquer sur l’étoile quand le compte est bon.

Répéter

Un algorithme décrit souvent (mais pas toujours) un travail répétitif que l’on veut faire faire à un ordinateur. Sans surprise, ce programme affiche trois fois la même chose :

À vous de tester à nouveau ce programme en changeant le nombre de répétitions et le texte à afficher.

Question : comment faire pour afficher ce texte avec le moins d’instructions possible ?

Bonjour,
ça va ?
ça va ?
ça va ?
ça va ?
Bonjour,
ça va ?
ça va ?
ça va ?
ça va ?
Bonjour,
ça va ?
ça va ?
ça va ?
ça va ?

Nombres pseudo-aléatoires

Il est possible d’obtenir un nombre entier pseudo-aléatoire grâce à la commande Entier@. Il faut lui passer les valeurs minimale et maximale possibles. Lancer plusieurs fois de suite le programme suivant :

Comment changer ce programme pour simuler le lancer d’un dé à six faces ?

Utilisation avancée : si vous n’avez pas besoin de reproductibilité (le fait de pouvoir obtenir à nouveau certaines séquences de tirages), vous pouvez passer directement à la section suivante).

Il est possible de contrôler les tirages de deux façons : avec la commande Initialiser@ et avec la variable spéciale sequence_tirages@.

La commande Initialiser@ permet de contrôler l’état initial du générateur de nombres pseudo-aléatoires. Grâce à elle, un même programme donnera toujours les mêmes tirages. Ce n’est bien sûr pas souhaitable pour un jeu de hasard comme un jeu de cartes. Néanmoins, pour certaines applications artistiques ou scientifiques, cette reproductibilité peut être intéressante. On peut par exemple vouloir générer un même labyrinthe pour tous les joueurs, on peut vouloir vérifier si un programme est correct en comparant avec un autre que l’on sait être correct…

Voici par exemple un programme qui affichera toujours les mêmes cinq tirages (1984, 1932, 1967, 2000 et 1957) :

Celui-ci affichera toujours 1969, 1921, 1987, 1941 et 1950 :

Il est même possible de fournir une séquence de nombres entiers qui sera utilisée pour les tirages, en boucle. Les commandes Affecter_a et Liste seront vues plus loin.

Demander à l’utilisateur

Plutôt que de demander une valeur pseudo-aléatoire à l’ordinateur, il est possible de demander une valeur à l’utilisateur, pour ensuite l’afficher :

En combinant les commandes Demander, Concatener et Afficher, nous allons pouvoir coder un premier programme (presque) intéressant : les salutations.

Avant de l’exécuter, essayez de deviner ce que le programme va faire.

Mieux : les présentations !

Ici, nous effectuons deux affichages successifs.

Voici, une démonstration que l’exécution se fait bien de haut en bas :

Calculs avec des nombres

MicroAlg sait effectuer des calculs. Il faut juste savoir que :

  1. il n’y a un seul bloc pour les quatre opérations de base ;
  2. le nom du résultat de l’opération apparaît sur le bloc :
  3. l’opération apparaît sur la gauche du bloc et non entre les nombres.

Pour chaque exemple ci-dessous, essayer de deviner ce que va afficher MicroAlg, puis vérifier en cliquant sur Exécuter.



Ce n’est pas très pratique. Quand vous saurez taper votre code sans les blocs, il suffira de taper : (+ 2 2 2).

De même, pour calculer l’opposé d’un nombre, il suffit de retirer ce nombre à 0 ou de multiplier par -1. Sans les blocs, il suffira d’écrire (- (+ 2 2)).

Autres exemples avec les opérations (papier crayon ou calculatrice autorisés si vous n’êtes pas fort en calcul mental).



Pour approfondir la mise en place des calculs, voir le site expressions.club.

Calculs avec des nombres demandés à l’utilisateur

La commande Demander renvoie du texte, celui tapé par l’utilisateur. Même s’il n’est constitué que de chiffres, MicroAlg le considère comme étant du texte.

Le problème ici est que les opérations ne travaillent qu'avec des nombres et non avec du texte. En voici la preuve (le programme génère une erreur) :

Ainsi, le programme suivant ne peut pas fonctionner, même en répondant par exemple « 1 » pour calculer « 1 + 1 » :

C'est la première fois que dans ce tutoriel nous évoquons la distinction entre 1 et "1". C’est la notion de type. On dira que :

Nous verrons d'autres types plus loin. Pour l'instant, nous avons les nouvelles commandes :

Quelques exemples avec Type :

Un exemple avec Demander :

Pour demander un nombre avec lequel faire un calcul, il faut donc utiliser une combinaison de Demander et de Nombre. En reprenant le premier exemple :

Plus tard, vous pourrez vous-même créer une commande qui sera un raccourci pour cette combinaison de Nombre et de Demander : DemanderNbre.

Pour finir cette section en beauté, voici un programme qui réutilise tout ce que l’on a appris jusqu’ici. Pourrez-vous deviner ce qu’il va afficher ?

Rappel : l’exécution se fait de l’intérieur vers l’extérieur, et si les blocs sont au même niveau, de haut en bas. Voici donc ce que fait ce petit programme, dans l’ordre d’exécution :

  1. demander une valeur à l’utilisateur,
  2. convertir le texte reçu en nombre,
  3. ajouter 1,
  4. convertir le résultat en texte,
  5. le concaténer avec le début de la phrase.

Pour résumer en une phrase : « le programme affiche la concaténation de "Un de plus : " avec le texte correspondant à la somme de 1 avec le nombre que l’utilisateur a tapé ».

Calculs avec des booléens

Dans certaines situations, comme les jeux, on peut avoir besoin de comparer des valeurs. Par exemple, on peut vouloir tester :

Il y a donc dans MicroAlg des commandes qui retournent des valeurs spéciales : Vrai ou Faux, pour répondre à ces questions. Ces valeurs Vrai et Faux sont d’un type nouveau. Ce ne sont ni des nombres ni du texte, mais des booléens (de George Boole). Un booléen ne peut avoir qu’une de ces deux valeurs Vrai ou Faux, contrairement aux nombres et au textes qui peuvent prendre (quasiment) une infinité de valeurs différentes.

Les commandes qui retournent un booléen sont appelées des prédicats. En voici quelques-uns :

= et =/ peuvent comparer des booléens. Essayez de deviner ce que va afficher le programme suivant :

Concernant les nombres, pas de surprise :

Pas de surprise non plus pour comparer du texte :

À vous maintenant d’explorer les comparaisons entre nombres ! Il y a quatre commandes à tester : <, <=, > et >=, mais aussi différentes combinaisons de nombres à essayer.

: Si

Les booléens servent surtout à décider quelle instruction exécuter plutôt qu’une autre.

Par exemple, lorsque l’on discute avec quelqu’un, on peut commencer par : « Salut, ça va ? ».
Si la personne répond « oui » (qui correspondrait à Vrai), alors on lui répond « Tant mieux ! ».
Sinon (ce qui correspondrait à Faux), on lui répond « Ah, qu’y a-t-il ? ».

Avec MicroAlg, pour programmer ce genre de situation, on utilisera la commande Si.

Attention, dans l’exemple suivant, seul le mot « oui » en minuscule est reconnu comme une réponse positive.

Le programme ci-dessus peut se lire :

On peut donc résumer la commande Si ainsi :

Si booléen
Alors bloc-si-vrai
Sinon bloc-si-faux

Si on veut détailler, le bloc Si possède ici trois entrées :

Le bloc Si agit comme un aiguillage pour les rails des trains. En actionnant l’aiguillage, on décide sur quelle voie va rouler le train.

L’analogie de l’arbre est aussi possible : le déroulement du programme peut suivre une des deux branches, la branche du « alors » ou la branche du « sinon ».

Voici d’autres exemples :

Après avoir vu les bases du bloc Si, voyons quelques variantes :

: Si sans « sinon »

Il est possible de ne rien mettre en face de Sinon si on n’a rien à y faire. Dans ce cas, on peut même cacher cette partie du bloc Si, comme ci-dessous. Pour faire apparaître ou disparaître le Sinon, il suffit de cliquer sur l’étoile devant le Si, puis d’ajouter ou de supprimer le bloc Sinon en le faisant glisser dans l’encadré.

: Si avec plusieurs commandes

On a parfois besoin d’exécuter plusieurs instructions dans une même branche. Il suffit simplement d’empiler les blocs au bon endroit.

Avec plusieurs commandes dans les branches, la commande Si est finalement de la forme :

Si booléen
Alors commande-1-si-vrai
      commande-2-si-vrai
       ...
Sinon commande-1-si-faux
      commande-2-si-faux
       ...

Si(s) emboîtés

Un arbre a parfois plus de deux branches !

Qu’affiche le programme suivant ? Comment lui faire afficher les autres textes du programme en ne changeant que la valeur des booléens ?

La suite

Bravo ! Vous êtes arrivé à la moitié de ce tutoriel.

C’est le moment de faire une petite pause, pour récupérer des forces pour la suite !