Table des matières
Tutoriels,
Algorithmes,
Comparaisons,
Remarques,
Vers:
Site pédagogique,
Installation,
Fonctionnalités,
Forum,
Projet Giac/xcas,
Xcas en ligne version 2 beta,
Code source,
Documentation,
Remerciements
Algorithmique avec Xcas
Pour ceux qui envisagent d'utiliser Xcas, voici quelques documents
pour démarrer en algorithmique au lycée :
-
Un programme avec Xcas.
Tutoriel sous forme d'une animation flash, il
est conseillé de la visualiser en plein-ecran
(raccourci clavier F11 avec Firefox).
-
Algorithmique
en seconde avec Xcas par J.P. Branchard, R. De Graeve et B. Parisse,
qui introduit la notion de fonction à
partir de script de construction géométrique,
aussi disponible au format PDF.
-
Algorithmique
avec Xcas par B. Parisse, qui commence par
la notion de ligne de commande pour arriver progressivement
aux fonctions. Une variante, complétée pour les
candidats à l'agrégration interne.
-
Une introduction à l'algorithmique
par R. De Graeve, qui propose d'introduire la notion d'algorithmique
par des jeux.
-
Algorithmique sous XCAS par Philippe Lac
-
documents Xcas sur le nouveau programme
de seconde (académie de Bordeaux)
-
page algorithmique académie de Grenoble
-
page
algorithmique 2nde de l'IREM de Lille (voir aussi la page 1ere).
-
page
algorithmique académie de Rouen
-
Animations sur le nouveau programme de seconde - Octobre 2009
(Creteil, tableur, scilab, Xcas)
- aide-mémoire Hachette Declic 2nde
Scratch, Scilab, Xcas
-
Algorithmique et calcul formel lycée
(Stage 2011 Aix-Marseille)
Pour aller plus loin
-
le manuel d'algorithmique de Xcas
(menu Aide->Manuels->Programmation)
contient ce que peut etre un langage naturel en algorithmique et
diverses traductions (dont TI et Xcas), ainsi que des exemples de
programmes dont certains sont sans doute pertinents en seconde.
-
Correction Xcas du stage algorithmique
de l'IREM de Grenoble, contient des exemples de programme sur
des thèmes divers (arithmétique, tortue logo...)
-
Stage IREM de Lille 2011
-
On pourra
aussi trouver de nombreuses idées de programmes dans la variante
de Logo implémenté dans Xcas, cf. le
manuel Logo Xcas.
-
Le document
algorithmique au lycée par Guillaume Connan,
contient des algorithmes d'arithmétique, analyse, etc. traduits
en Xcas et en Caml
- Vous pouvez aussi consulter le
document ressource officiel,
-
Enfin, le forum de Xcas
est ouvert pour les discussions relatives
à ce nouveau programme.
- Python
Il y a pas mal de similitudes entre les deux languages: ils sont tous les deux non typés et
interprétés, avec une syntaxe dérivée du C, et des conteneurs (listes, chaines) simples à
utiliser. On passe assez facilement de l'un à l'autre. Voici toutefois quelques différences :
- La division des entiers est euclidienne en python, alors qu'elle travaille dans
les rationnels en Xcas. La notation ^ pour la puissance n'est pas admise en Python
(elle se note **, notation également admise en Xcas).
- la librairie de base mathématique Python est beaucoup moins complète que celle de
Xcas. Ceci a des avantages et des inconvénients, par exemple programmer un algorithme
de PGCD en Python peut paraitre plus intéressant puisque la fonction n'existe pas de base.
Par contre, on peut programmer des algorithmes mathématiquement plus intéressant
en Xcas, puisque les outils de base sont là (par exemple liste des diviseurs d'un
entier, fonctions de géométrie, ...)
-
Python ne propose pas de fin de bloc (boucle, test) explicite,
c'est l'indentation qui joue ce role.
-
les listes/tableaux sont passés par référence
en Python, et par valeur en Xcas (sauf utilisation explicite de =<)
-
La syntaxe de la boucle définie est plus simple en Xcas qu'en Python, qui nécessite
de définir une liste. Python ne dispose pas de boucle "répéter jusqu'à".
-
Les variables locales doivent être déclarées explicitement en Xcas (sinon un warning apparait),
elles sont implicites en Python (ce sont les variables globales qui doivent être déclarées). Ceci peut amener a des erreurs difficiles à
détecter
si on fait une faute de frappe, remplacant un nom de variable locale
par un nom de variable globale affecté.
-
L'aide de Xcas est entièrement en francais.
-
Xcas permet d'utiliser des mots-clef en français pour les boucles, tests
et pour les instructions de base.
- TI
Xcas propose un mode de syntaxe compatible avec les TI (89, 92, voyage 200, nspire cas).
Le langage de Xcas est toutefois plus
complet: il est fonctionnel. Il n'y a pas de distinction entre fonction et programme en Xcas,
et pas de limitation à l'usage des entrées/sorties dans une fonction (ni de limitation
sur les entrées/sorties des TI nspire).
D'autre part, la mise au point d'un programme est facilitée en Xcas par le débogueur interactif.
- Casio
Les possibilités de programmation des Casio Classpad sont limitées, il n'est pas possible
de définir une fonction non algébrique, et l'exécution d'un programme ne peut se faire
dans l'environnement de calcul Main. Pour ces raisons, je déconseille fortement l'utilisation
du Classpad pour l'enseignement de l'algorithmique. Les autres modèles Casio sont
encore moins performants, mais ce sont des calculatrices bon marché.
-
pour une comparaison plus complète,
cf. la page algorithmique
d'Emmanuel Ostenne
Le nouveau programme de seconde qui devrait entrer en vigueur en 2009/10
introduit l'enseignement de l'algorithmique. Quelques remarques :
- Ce programme parait
très ambitieux (sauf si il couvre le lycée jusqu'à
la terminale), parce qu'il s'adresse à
tous les élèves de seconde et parce que les enseignants
de maths ne sont pas tous formés à l'algorithmique
(en particulier les moins jeunes).
On a un peu de mal à imaginer que des profs de maths réticents
à faire taper à leurs élèves
une ligne de commande dans un logiciel de calcul
formel se mettent à utiliser de but en blanc un langage
de programmation déconnecté des autres usages TICE
en maths. Il nous semblerait plus judicieux d'introduire
les concepts de base de l'algorithmique sur calculatrices
ou/et logiciels de calcul formel, voire pour partie sur tableur.
Il faut aussi voir que cet enseignement est intégré aux
maths et qu'il est donc naturel d'y enseigner d'abord l'algorithmique
utile pour les maths, donc celle utilisée par les logiciels
de calcul numérique, formel ou de statistiques, ce qui commence
par savoir taper une ligne de commande (ce serait différent pour
un enseignement d'algorithmique indépendant du cours de maths
et enseigné par des informaticiens).
En particulier, les premiers
objectifs à atteindre avant de faire des programmes pourraient etre
de
- faire la différence entre différents types: entiers,
flottants, noms de variables (à
une ou plusieurs lettres), chaines de caractères et peut-etre
listes ou/et tableaux
- comprendre la multiplication implicite, non implicite,
les priorités entre opérations et l'usage
des parenthèses pour écrire une expression
syntaxiquement correcte. Savoir utiliser la virgule pour séparer
les arguments d'une fonction existante.
Savoir utiliser les crochets pour indicier
dans une chaine de caractères (ou dans un tableau),
- faire la différence entre égalité dans une
équation, affectation et test d'égalité
- faire la différence entre fonction et expression
(à relier éventuellement
au chapitre Fonctions du programme de seconde), Savoir définir
une fonction par une formule algébrique.
-
Savoir définir une fonction avec un test (par exemple valeur
absolue, le minimum ou le maximum de 2 valeurs, etc.)
-
La définition d'une fonction par une boucle devrait se faire
à un niveau supérieur (1ere S?), en meme temps que la notion
d'arguments, de variables locales et de valeur de retour d'une fonction,
alors que la récursivité trouverait bien sa place
en Terminale S lors de l'étude de la récurrence.
C'est plus particulièrement vrai pour les boucles
"tant que" avec un test d'arret. On peut imaginer introduire les
boucles définies en seconde sur des cas simples ne
nécessitant pas de variables locales, par exemple
facto(n):={ res:=1; pour j de 1 jusque n faire res:=res*j; fpour; }
ou de dérouler des boucles lorsqu'il y a peu d'itérations
(exécution plusieurs fois de la meme ligne de commande, ou recopie
d'une formule de cellule au tableur, par exemple pour l'algorithme d'Euclide).
On peut aussi envisager des boucles du type de repete en Logo,
où on n'est pas obligé de modifier une variable dans la boucle
(l'état de la tortue, variable implicite, est modifié)
et le nombre d'itérations est fixé.
-
Enseigner l'algorithmique devant les machines
nécessite d'avoir acquis de l'expérience avec le langage.
Sinon, la séance se transforme vite en une
foret d'élèves bloqués et
attendant que le prof vienne, et celui-ci risque de bloquer sur une erreur
stupide difficile à repérer parce qu'il sera stressé
par les demandes des autres élèves bloqués.
En particulier, il ne suffit pas d'etre capable de comprendre
une fonction déjà écrite ni meme d'écrire soi-meme une petite fonction,
il faut avoir suffisament de recul pour repérer rapidement les erreurs
de syntaxe d'une part, mais surtout les erreurs à l'exécution. Il est
alors important de savoir utiliser un déboggueur
(qui peut etre extremement simple à mettre en oeuvre, dans Xcas on
écrit simplement debug( suivi de la commande à débugguer), d'autant
qu'il peut
aussi servir à montrer le déroulement d'un algorithme
pas à pas pour aider des élèves à le comprendre.
-
Il est beaucoup plus raisonnable de supposer que dans un premier
temps au moins, de nombreux enseignants seront le plus à l'aise soit
au tableur soit avec la ou les
calculatrices qu'ils maitrisent déjà,
on peut leur conseiller le
guide d'algorithmique de Renée De Graeve
(calculatrices, maple, Xcas).
Sans compter les avantages de la calculatrice en terme d'intégration
à la classe et au fait que le temps disponible pour les
activités TICE ne permettra probablement pas d'utiliser plusieurs
logiciels en salle PC (i.e. un logiciel de géométrie dynamique +
un logiciel de géométrie dans l'espace + un tableur + un
environement de programmation + éventuellement un logiciel
de calcul formel pour "usage éclairé", sauf si on utilise un intégré
comme Xcas, TI nspire CAS ou Casio Classpad).
-
A l'avenir, on peut espérer un jour remplacer les calculatrices
par des netbooks bon marché
(cf. l'expérience de cette année à l'UJF
Enseigner les maths avec des netbooks.)
et Xcas pourrait alors servir de
logiciel unique pour tous les aspects TICE et algorithmique au
lycée, avec une transition facilitée (compatibilité
TI et maple).
Nous ajouterons ici des ressources au fur et à mesure que
nous en recevrons, n'hesitez pas à nous en envoyer!