Un algorithme est une suite finie d'opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat. Le domaine qui étudie les algorithmes est appelé l'algorithmique.
Remarque
Le mot algorithme vient du nom latinisé du mathématicien perse Al-Khwarizmi.
Programmation
Pour écrire un programme informatique, on utilise un langage de programmation. Voici quelques exemples de langages de programmation très utilisés : Python, Scratch, C++, Java.
Types de langages de programmation
Plusieurs types de langages de programmation existent, les plus compliqués permettent d'écrire l'algorithme sous forme de texte, on parle alors de langage en lignes de code. C'est notamment le cas du langage Python.
D'autres permettent de construire l'algorithme en assemblant des blocs d'instructions, à la manière des LEGO. On parle alors de langage graphique : le meilleur exemple de langage graphique est Scratch.
Scratch est un langage de programmation graphique. Il permet de coder des algorithmes en associant et clipsant des blocs les uns dans les autres. C'est le langage de ce type le plus célèbre, et il sert de base à de nombreux autres langages de programmation graphique qui sont des dérivés de Scratch.
Applications des programmes Scratch
Les programmes créés avec Scratch peuvent avoir des rôles variés :
programme de calcul ou de résolution de problème ;
programme d'animation ;
programme contrôlant un robot, etc.
Blocs
Les blocs disponibles pour créer des programmes sont répartis en 9 catégories. En 5eme, nous allons explorer 7 d'entre elles. Chaque catégorie de bloc a sa propre couleur, ce qui permet de facilement identifier le rôle de chaque bloc en regardant un programme.
Les 7 catégories de blocs et leurs rôles
Voici ces catégories et leurs fonctions spécifiques :
Catégorie
Fonction
Mouvement
Permet de déplacer le lutin dans la scène
Apparence
Permet de faire parler le lutin et de changer son apparence ou l'apparence de la scène (costume, arrière-plan, couleurs)
Son
Permet de faire émettre des sons au lutin ou de contrôler le son (volume, effets sonores)
Événements
Permet de lancer des instructions quand un événement particulier est détecté (appui sur un bouton ou sur un lutin par exemple)
Contrôle
Comporte toutes les structures algorithmiques de Scratch, notamment les structures conditionnelles et le bloc de pause
Capteurs
Permet de récupérer des informations du clavier (touche appuyée), de la souris (position et clics), ainsi que la date et l'heure actuelle
Opérations
Contient tous les blocs pour effectuer des calculs et des tests logiques (pour créer des conditions)
Un programme écrit avec Scratch est composé d'un ou de plusieurs groupes de blocs. Chaque groupe de blocs constitue un algorithme, et va permettre de réaliser une action qui peut être simple ou complexe.
En général, un groupe de blocs débute par un bloc de la catégorie Événements (bloc jaune).
Ce bloc permet d'indiquer l'événement déclencheur de l'algorithme. Le groupe se poursuit avec une série de blocs, de n'importe quel type, qui sont clipsés les uns sous les autres. Les blocs pouvant être clipsés comportent une encoche en haut à gauche, et une languette en bas à gauche.
Le groupe de blocs est exécuté par l'ordinateur (c'est-à-dire lu), du haut vers le bas, jusqu'au dernier bloc. Une fois le dernier bloc exécuté, l'algorithme est terminé.
Emplacements
Certains blocs comportent des emplacements. Une valeur peut être écrite, ou sélectionnée parmi des propositions, dans certains d'entre eux. Il est aussi parfois possible de placer d'autres blocs dans ces emplacements, notamment des blocs qu'on trouve dans les catégories Capteurs et Opérations.
Exemple de programme Scratch
Voici un algorithme, créé avec Scratch. Il débute par un bloc Événements "quand la touche espace est pressée" (d'autres touches peuvent être sélectionnées dans l'emplacement). L'algorithme se poursuit ensuite avec 4 blocs d'instructions, qui indiquent chacun une opération à réaliser.
Les blocs sont clipsés les uns aux autres avec leurs languettes et leurs encoches. Enfin, on remarque que chacun de ces 4 blocs possède un emplacement dans lequel on peut écrire une valeur (50, 2, 15 et 100).
Scratch offre la possibilité de comprendre toutes les notions essentielles en programmation, en réalisant des animations du lutin. Le lutin est le personnage (chat par défaut) se trouvant dans la scène.
Catégories et animation
Mouvement et Contrôle
Pour animer le lutin, il est notamment possible d'utiliser les blocs de la catégorie Mouvement pour faire se déplacer le lutin. On trouve des blocs permettant de faire avancer, tourner, atteindre une position, glisser et détecter le bord de la scène au lutin. On pourra combiner ces blocs avec le bloc "attendre" de la catégorie Contrôle, pour faire faire des pauses au lutin.
Exemple de programme permettant de déplacer le lutin :
Apparence et Son
Il est aussi possible d'utiliser la catégorie Apparence, qui va permettre de faire parler/penser le lutin, de changer son apparence visuelle et de modifier sa taille. La catégorie Son permet d'ajouter des bruitages à la scène.
Capteur et Opération
La catégorie Capteur est très intéressante, elle dispose du bloc "demander … et attendre", qui va faire poser une question au lutin. Une fois la question posée, le lutin attendra jusqu'à ce que l'utilisateur écrive une réponse. La réponse est alors mémorisée dans le bloc "réponse", qui peut être utilisé dans la suite du programme.
Il est aussi possible de créer des phrases en combinant le bloc "réponse" avec le bloc "regrouper" de la catégorie Opérateurs.
Exemple de programme dans lequel le lutin pose une question, puis utilise la réponse de l'utilisateur dans la suite du dialogue :
Une structure conditionnelle est une structure algorithmique qui permet d'indiquer à l'ordinateur qu'il doit effectuer un choix. Ce choix dépend d'une condition, que l'ordinateur devra évaluer en testant si elle est Vraie ou Fausse.
Une condition est un test, dans lequel deux éléments sont comparés. La comparaison se fait en fonction d'un opérateur de comparaison, comme ceux que vous connaissez en mathématiques (> ≤ etc.).
Structures conditionnelles avec Scratch
Scratch propose 2 structures conditionnelles, dont les blocs se trouvent dans la catégorie Contrôle :
la structure si...alors qui permet de dire à l'ordinateur d'exécuter un groupe de blocs uniquement si une condition est respectée, et de ne rien faire dans le cas contraire
la structure si...alors...sinon qui permet de dire à l'ordinateur d'exécuter un groupe de blocs si une condition est respectée, ou un autre bloc si la condition n'est pas respectée.
Chacune de ces structures comporte un emplacement hexagonal dans lequel on doit placer la condition. La condition s'écrit avec les blocs hexagonaux de la catégorie Opérations.
Exemples de structures conditionnelles
Structure si...alors
Quand on clique sur la touche a, cet algorithme permet de faire avancer le lutin de 50 pas, si l'utilisateur répond "oui" à la question posée par le lutin. Si l'utilisateur répond autre chose, le lutin de bouge pas :
Structure si...alors...sinon
Quand on clique sur la touche z, cet algorithme permet de faire avancer le lutin de 50 pas, si l'utilisateur répond "oui" à la question posée par le lutin. Si l'utilisateur répond autre chose (=sinon), le lutin recule de 50 pas (=avance de -50 pas) :