Essai sur la nature des mathématiques
|
Une perspective des mathématiques bien différente de la présentation classique
|
Développé spécialement pour l'enseignement de l'algorithmique .
Logiciel de programmation assez riche pour développer autant d'algorithmes que votre imagination le permettra.
C'est un environnement de programmation impératif, procédural fonctionnel à typage statique, dans la lignée des standards les plus utilisés.
L'objectif du logiciel est de faire apparaitre visuellement les concepts les plus importants de la programmation algorithmique :
L'enchaînement d'ordres donnés à l'ordinateur (ce qu'on appelle la programmation impérative). On verra une petite bille qui se déplace et lit les instructions dans l'ordre imposé par l'algorithme. Au travers de cette bille, l'ordinateur est présenté comme un simple tête de lecture qui suit un chemin tout tracé en effectuant les commandes programmées.
Chaque instruction sera représentée par un bloc. Et les bloc sont emboîtables à loisir pour former tous les algorithmes voulus.
L'affectation des valeurs en mémoire. Un ordinateur ne fait que remplir, lire et calculer sur des valeurs en mémoire. Cela est représenté symboliquement par des flèches qui indiquent d'où viennent et où vont les valeurs mises en mémoire. Au cours de l'exécution de l'algorithme, on pourra suivre la transformation des valeur en mémoire pas à pas.
Pour effectuer les calculs, on attribue un nom et type d'information à chacune des valeur en mémoire. C'est le concept de variables d'un type bien déterminé (la programmation typée). Une variable est une case mémoire de l'ordinateur qui est étiquetée d'un nom et qui peut recevoir un contenu d'un certain type (ici un entier, un réel, un booléen (vrai ou faux), ou une chaine de caractères textuels, ainsi que des listes de ces objets de base.
Les variables sont rendues visuellement par des noms, le sens de l'utilisation ou de l'affectation est rendu par des flèches et le type est rendu par des couleurs différentes.
On ne peut pas mettre n'importe quel type de variable dans n'importe quel calcul, la plupart des typages sont imposés pendant la fabrication en n'offrant comme accessible que les types valables (on parle d'un typage statique), mais il peut toujours arriver que certains types soient incompatibles et posent problème à l'exécution. Il ne faut donc pas abandonner toute vigilance.
Chaque instruction a besoin de variables spécifiques qui sont automatiquement créer en posant l'instruction sur la fiche, pas besoin de déclaration préalable. Les choix existants sur ces variables sont accessibles (au bouton droit de la souris).
Les variables utilisées en entrée d'une instruction et qui n'ont pas été préalablement remplies par une valeur (en sortie d'une autre instruction) sont appelées des variables libres. Elles peuvent avoir n'importe quelle valeur en mémoire. Ces variables libres apparaissent systématiquement dans le bloc initial appelé Début. Cela permet de voir les variables non "initialisées" (l'initialisation est un concept important en informatique).
Ce logiciel est aussi conçu au dessus du concept de fonction (la programmation fonctionnelle). Une fonction porte l'idée d'entrée et de sortie : des valeurs en entrée peuvent être transformées et donner des valeurs en sortie. Les fonctions sont rendues visuellement par un bandeau contenant le titre qui soutient une zone séparant les entrées et les sorties. Le sens du calcul est indiqué par le sens des flèches.
Le concept de fonction est élargi, car on trouvera des fonctions sans variable d'entrée (des valeurs fournies par l'environnement), des fonctions sans valeur de sortie (des actions à effectuer sans besoin de retour, comme l'exécution d'une commande), et des fonctions sans aucune des deux (une fonction d'affichage par exemple).
Plusieurs fonctions sont à type surchargé, cela signifie que plusieurs type de valeurs peuvent être choisies en entrée (Par exemple la somme accepte des entiers, les réels et même les textes).
Il faudra choisir le type voulu avec le bouton droit (il faut notamment choisir le type avant d'entrer la valeur de la constante quand on la veut d'un type précis).
Les valeurs booléennes (vrai ou faux) sont calculables, fonctionnalisables comme toute autre valeur mémoire. Mais elles ont un rôle particulier. Fréquemment elles sont au fondement de l'aiguillage du chemin choisi par la tête de lecture. C'est en fonction d'un vrai ou d'un faux que le chemin à suivre sera décidé. Ce mécanisme est rendu par des blocs d'instruction "forme de la route" qui sont à la fois des instructions fonctionnelles (avec en entrée un booléen) , mais au lieu de fournir une valeur en sortie, c'est le chemin suivi par la tête de lecture qui en est la conséquence. (Il y a aussi les boucles d'incrémentation qui produisent une action sur le chemin à suivre).
Chaque algorithme construit sera enregistré dans un fichier. Ces fichiers peuvent être "appelés" pour exécuter un calcul. On trouve là le concept de programmation procédurale. Chaque algorithme construit est une procédure qui peut indéfiniment être appelée par une autre procédure. Le programme peut ainsi se complexifier à loisir en reléguant chaque tâche spécifique dans une procédure réutilisable à volonté. Cela permet la lisibilité de l'algorithme et sa réutilisation aisée.
On comprendra que l'enregistrement de procédure dans des fichiers disjoints n'est pas très efficace en terme de rapidité de calcul, mais l'objectif recherché est avant tout pédagogique. C'est un compromis entre simplicité et accessibilité.
Le logiciel est conçu pour que le programme ne reste pas une boîte noire de l'activité du processeur. En effet, on pourra voir se dérouler l'exécution du programme selon tous les détails voulus. Selon un des paradigmes principaux de la programmation qui est à la base de l'informatique, l'ordinateur peut être assimilé à une tête de lecture qui suit des instructions. Cette tête de lecture est rendue par une bille animée qui permet de suivre le chemin imposé par l'algorithme. Le déplacement normal de la bille se fait du haut vers le bas et de la gauche vers la droite.
Tous les contenus des mémoires utilisées sont affichés en temps réel pour comprendre et suivre l'activité de la machine. Ainsi entre l'animation montrant le chemin suivi et les mémoires affichées en temps réel, on a les moyens de comprendre visuellement l'exécution de l'algorithme au plus près de son déroulement.
Les Possibilités
Le débogage et le suivi de l'execution,
Le débogage consiste à trouver les erreurs que l'on a pu faire
dans la réalisation d'un algorithme. Pour cela le suivit de l'exécution
décris ci-dessus est un moyen efficace. Il permet de voir le moment où
le programme se détourne de notre intention.
Plusieurs options permettent de contrôler avec efficacité ce déroulement.
-L'animation de la bille qui suit le chemin de la tête de lecture est
utile au débutant pour comprendre le fonctionnement. Mais elle s'avèrera
plus tard être un temps inutilement consommé. Il est possible de
la désactiver (F5). Le logiciel exécutera alors les instructions
sans perte de temps selon les multiples mode possible.- Les nombreuses possibilités
d'avance automatique (pas à pas, cadre par cadre, boucle suivante, sortie
de boucle, jusqu'au point d'arrêt, exécutions sans arrêt)
permettent de manipuler l'exécution à la recherche de ce qui peut
nous intéresser. Ça devient précieux dans un programme
complexe. On peut aussi interrompre le programme quand on ne souhaite pas qu'il
se termine (C'est plus qu'une simple option dans une boucle infinie).- On remarquera
en particulier les points d'arrêt très utiles au débogage.
Chaque instruction peut recevoir un point d'arrêt (par le clic droit).
Avec F11, la tête de lecture continuera sa route jusqu'au prochain point
d'arrêt rencontré. Cela permet de faire une pause dans l'exécution
à un point précis du programme.- On peut régler la vitesse
d'exécution de la bille (F1).- On pourra aussi régler la taille
des algorithmes selon la vue qu'on souhaite et la place dont on dispose, avec
"Apparence".
Le nommage
Les variables sont systématiquement proposées avec des noms par
défaut, on peut les renommer avec un clic-droit pour rendre l'algorithme
plus lisible.
Les listes
Les listes des types de base (entier, réels, texte) sont des types de
variables fournies par Algoris.
Elles permettent le stockage d'informations en grande quantité sans avoir
à définir une variable à chaque fois.
Plusieurs fonctionnalité sont proposées sur les listes en lecture,
écriture,modification, insertion, suppression, copiage,taille et tri.
L'affichage
Pour rendre plus ludique et pour offrir une large gamme d'application pédagogique,
Algoris fournit un certain nombre de fonctions d'affichage qui permettent de
construire du graphisme. On peut afficher des points, des traits, un axe de
repère gradué, des textes, des rectangles, des ellipses, avec
le choix des couleurs des tailles de de l'épaisseur.
Ces fonctions d'affichages sont accessibles par des coordonnées. Celles-ci sont réglées par un choix d'unité en pourcentage de la largeur de la taille d'affichage ('100' produira un axe horizontale allant de -1 à 1) . Le centre de la fenêtre a pour coordonnée (0,0).L'intérêt de ce choix réside dans le traçage des fonctions.
Fonctionnalités, interactions
Dans la même optique, pour un champ d'application algorithmique intéressant,
Algoris propose quelques fonctions d'interaction avec l'utilisateur presque
incontournable. C'est la possibilité de recevoir des valeurs par l'utilisateur,
c'est la possibilité d'afficher des messages, de récupérer
une pression au clavier.
On a aussi la possibilité de fournir des nombres au hasard.La récursivité.
Par le moyen des procédures constitués en fichiers séparés,
Algoris rend possible la mise en uvre du concept de récursivité.
La récursivité c'est une procédure qui s'appelle elle même.
Ce concept offre une puissance de calcul redoutable. Une simple procédure
permet certains travaux très complexes et parfois même impossible
à réaliser autrement. C'est un des concepts fondamental de la
programmation.
Remarque : comme le logiciel utilise les fichiers pour l'appel procédural,
il faut bien veiller à enregistrer l'algorithme avant d'insérer
la fonction d'appel à lui-même (Quand on insère ce bloc
d'appel à lui-même, il génère de nouvelles variables
à remplacer avant de ré-enregistrer pour ne pas se mordre la queue...)
Annulation
Algoris gère l'annulation (et le reconstitution) des dernières actions au moyen du menu ou de CTRL-Z. Ce qui offre un confort et éloigne un peu le soucis de mauvaises manipulations.
Edition
La manipulation des blocs se fait par cliquer-déplacer avec la souris.
On prend les blocs dans le menus, ils se transforment en cadre une fois venue
sur la fiche.
Les bloc s'imbriquent et le lieux des imbrications possibles s'allume par passage
à proximité de la souris. Sinon le cadre est déposé
sans être relié.
On peut désolidariser les cadres imbriqués aussi par cliquer-déplacer.
Le déplacement des cadres se fait en "emportant avec lui" tout
ce qui est en dessous.
Plusieurs opération d'éditions sont accessibles avec le bouton
droit. Copiage, suppression, seul ou avec sa suite.
Remarque
Pour prévenir une éventuelle surprise, il faut signaler à l'utilisateur que le moteur sous-jacent à Algoris (c) n'a pas été optimisé pour la vitesse de calcul et de place mémoire comme c'est évidemment le cas dans les logiciel de programmation standard. L'accent a été mis ici sur l'aspect visuel et pédagogique. Il ne faut pas attendre une grande rapidité d'exécution dans des calculs complexes, notamment dans le traitement des listes.
Réalisons un petit programme qui calcule le carré d'un nombre
entré par l'utilisateur.
Au départ, la zone "Algorigramme" contient un bloc nommé
"début" . L'exécution de l'algorithme commencera par
lui. Il ne peut être supprimé.
(Un double-clic sur la page Algorigramme permet de revenir à ce bloc).
En se déplaçant dans le menu des Matériaux de construction, il se déroule automatique par le passage de la souris (C'est un coup de main à prendre, ça évite les clics). Pour prendre un bloc, il suffit de cliquer dessus avec la souris et sans relâcher la pression on le mène sur la fiche "Algorigramme".
Quand on passe à proximité d'une zone de raccordement possible (ici le canal inférieur du bloc "debut"), cette zone s'allume. Si on relâche quand c'est allumé, le raccordement sera réalisé. Sinon le bloc sera déposé sans être raccordé.
On constate que le cadre "l'utilisateur donne un entier..." contient une variable libre (jamais remplie par une valeur à ce stade de la lecture) et une variable de sortie N0 qui contiendra la valeur entrée à l'exécution. Ce sera le texte affiché pour demander une valeur à l'utilisateur. En cliquant sur le bouton droit sur cette variable T0, on fait apparaitre les possibilités de modification sur cette variable.
Il est possible de lui attribuer une valeur constate, elle est naturellement compatible avec elle-même. On peut choisir une autre variable texte (ça n'a pas d'intérêt ici), et on peut aussi renommer cette variable. On veut ici indiquer un texte fixe, on choisira donc constante.
On indique la valeur constante voulue et on valide. On constate qu'étant
une constante, la 'variable' n'est plus considérée comme variable
libre, elle disparait du bloc "Début".
Dans cet algorithme, on veut voir si le nombre entré par l'utilisateur
est négatif, pour cela on ajoute un bloc "Si...alors".
Ce bloc possède un booléen libre en entrée. Il doit contenir la condition attendue à savoir si N0 est négatif ou non. On trouve l'instruction adéquate dans le bloc Test. Et on va imbriquer ce bloc à l'intérieur du cadre.
Par défaut la condition "est plus petit que" contient des
variables réelles libres.
Pour lire le sens de chaque fonction, il faut remplacer les trois-petits-points(...)
par les variables dans l'ordre de la phrase. Ici le cadre signifie "R2
est plus petit que R3"
On va changer ces variables pour construire la phrase voulue.
Pour remplacer R2, on fait un clic-droit et on sélectionne N0.
Puis on selectionne Constante et on choisit 0.
Le test est maintenant complètement rédigé. On passe à la suite : si le nombre est négatif, on va alors afficher cette information. On prend cette fonctionnalité dans le groupe texte.
Mais on constate que par défaut c'est un réel qui va être affiché. Nous voulons afficher une phrase. Avant d'indiquer la phrase, il faut donc changer le type de la variable entrante et choisir un texte.
Après modification du type de la variable, on choisit d'entrée une valeur constante.
que l'on complète à loisir.
On veut maintenant afficher le carré de N0. On choisit donc "Afficher
<commentaire : nombre>".
Celui-ci incrusté, on entre une valeur constante pour le commentaire à afficher.
On aurait pu calculer le carré avant de l'afficher, mais on peut aussi directement passer le carré en valeur d'entrée de la fonction. Pour cela on choisi la fonction carré que l'on va incruster en entrée de l'affichage.
Et après, on change la variable libre en entrée pour la valeur dont on veut calculer le carré à savoir N0.
On peut choisir alors de terminer l'algorithme en pernant le bloc Stopper.
Si l'on avait pas mis ce bloc. Le programme s'arrêterait de la même façon car il n'y aurait plus rien à exécuter. Ce bloc est surtout utile pour qu'un programme s'arrête en un lieu précis de l'algorithme.
Voyons maintenant l'exécution. Choisissons une exécutions pas à pas (F7).
Le programme s'arrête aussitôt sur le premier cadre qui se colore
:
- en rouge pour montrer la fonction qu'il est en train d'exécuter.
- en orange pour montrer le lieu où est la tête de lecture (cela
montre que le mode "montrer le déroulement" est actif.)
A chaque fois qu'on appuie sur la barre d'espace (ou à nouveau F7), le programme avance d'un pas. Le déroulement étant actif, on voit la bille se déplacer jusqu'au bloc suivant.
En répétant l'opération , on nous demande d'entrer une valeur que l'on entre en validant.
En répétant la barre d'espace (ou F7), on avance dans l'execution. La valeur entrée étant négative la bille choisi le chemin à droite.
Et il nous indique que c'est un nombre négatif.
En poursuivant, il indique le carré.
Après validation, il nous indique que l'exécution est terminée.
On peut alors enregistrer l'algorithme
Une fois le lieu et le nom choisi, l'enregistrement est confirmé et son nom apparait dans le bandeau supérieur.
blablaDans l'aide du logiciel, on trouvera d'autres exemples mettant en oeuvre d'autres concepts (graphisme, fonction, recursivité,... ).
Logiciel de Cryptage Pyramidal
|
La mise en oeuvre de la méthode de cryptage pyramidal dans un petit logiciel
|
Logiciel de Cryptage Pyramidal
|
La mise en oeuvre de la méthode de cryptage pyramidal dans un petit logiciel
|
Du même auteur : | ||||
Connexion privée | Contact | Proposer de l'aide | Signaler un problème | Site philosophique flexe |