Contribution en algo lycée

Bonsoir,

Ci-joint une petite contribution en algorithmique.
1 fiche de TP (corrigé) en 2de GT sur le thème des équations de droites ;
1 fiche de TP en 1ère S sur le thème des marches aléatoires.

Toutes vos remarques sont les bienvenues.
Bon we

Yann

Réponses

  • Merci pour le geste
  • Il faudrait (peut-être ?) préciser que les points A et B doivent être distincts.
  • Il est écrit "deux points", ils sont forcément disctincts, sinon ça fait un seul point, non ?
    Si $A=B$, alors $ \{ A, B \}=\{ A \}$. Je profite de ce commentaire, car j'ai toujours trouvé paradoxal, l'expression deux points distincts. J'ai toujours eu l'impression (peut-être fausse), que ça ne voulait rien dire. B-)
  • Mes accolades, ne s'affichent pas .... :-( Merci beaucoup Braun.
  • Quand on dit soit A et B deux points,cela veut dire soit (A,B) un couple de points ......
  • C'est pourtant pratique, en général. Parce que deux points A et B peuvent vivre chacun leur vie et se retrouver confondus à un moment donné.
  • Effectivement, j'ai sans doute fait une faute de rigueur, mais au niveau lycée c'est implicite que les deux points A et B sont distincts. Le plus important me semble la démarche pour arriver à trouver réponse aux questions ; cette phase de débroussaillage, avant d'écrire un programme sur ordi...
    D'ailleurs je dis toujours à mes élèves en salle info : le premier réflexe, c'est papier + crayon.

    cordialement

    Yann
  • Merci de mettre en ligne ton travail , je vais m'en inspirer pour faire un travail avec mes 2nde ( le travail sur les droites)
    Le sujet est interessant.

    Par contre combien de temps cela te prends pour faire cela, car mes élèves de seconde ( dans un lycée tout à fait correct) auraient un peu de mal,enfin je verrais bien !

    Petite critique : j'aime pas trop tes algo en langage naturel, ils ressemblent trop à un programme écrit avec algobox.
    J'écrirai plutôt l'algo ainsi

    entrée :x_a etc....
    Sortie m et p
    traitement :
    plus proche d'un esprit "fonctionnel"


    Je suis admiratif de ceux qui arrivent à faire de la programmation en python en 2nde, ptre l'année prochaine je tente !
  • blitz a écrit:
    Si A=B, alors \{ A, B \}=\{ A \}. Je profite de ce commentaire, \dots
    \dots
    Mes accolades, ne s'affichent pas .... :-(
    Oeuf corse, en \LaTeX~ l'accolade est un délimiteur, pour l'afficher il faut le caractère d'échappement~: \verb+ \{ A, B \}=\{ A \}.+
  • J'écrirai plutôt l'algo ainsi
    ...
    plus proche d'un esprit "fonctionnel"

    Moi aussi. D'ailleurs, si on fait du Python, je serai plutôt favorable à introduire le plus rapidement possible les fonctions (avec la commande def). Surtout que les fonctions sont au programme de seconde.
  • Merci pour vos remarques.

    J'introduis les fonctions (informatiques) au bout de la 5 ou 6 ème séance de Python. Mais en essayant d'éviter au maximum les déclarations de variables (globales). Pas toujours évident. J'enverrai mon fichierlà dessus.
    A superfly : celà prend du temps !! Un travail préalable est demandé "à la maison" avant de venir en TP. Et j'insiste sur le fait que contrairement aux antibiotiques, l'algo c'est automatique ! ;-) Parfois, la séance se transforme en TP-cours, avec insistance sur la genèse de l'algo. C'est bien aussi pour le raisonnement (disjonction de cas...)
  • Je propose l'exercice suivant :

    savoir si deux segments du plan ont un point commun.

    D.S
  • Yann, connais-tu la convention PEP 8 ?
    Non, pas que je sois un puriste, mais je trouve que la respecter facilite la lecture de code Python.
  • Non, je ne connaissais pas. Merci pour le lien Kamel.
  • Je lis le corrige de l'activite 1 et je pense que c'est vraiment dommage de ne pas utiliser les fonctions. En details:

    -> il serait plus naturel de faire une boucle pour en question1 qui deviendrait

    Argument: t le nombre d'iterations
    Valeur calculee: la position
    x←0
    pour i de 1 jusque t faire
    k← nombre entier aléatoire entre 1 et 2
    si k=1 alors x←x-1 sinon x←x+1 fin_si
    fin_pour
    renvoyer x

    C'est la qu'on voit que l'utilisation d'un langage d'implementation a une influence sur l'ecriture d'algorithmes en pseudo-langage naturel, j'imagine que Yann utilise un tantque parce que la boucle for est moins naturelle a introduire en python qu'en d'autres langages.

    -> Question 3: l'utilisation de variables booleennes pour eviter le code du debut redondant avec le corps de la boucle est a mon avis generallement une mauvaise solution, ce n'est pas naturel, on est donc oblige de se creuser la tete pour rien (donc risque d'erreur plus grand, ok, pas trop ici car c'est simple, mais en general...). Il vaut mieux ici en langage naturel utiliser une boucle repeter jusqua, ou si on utilise une fonction, faire une boucle pour (toujours limitee par un nombre maximal d'iterations, ce qui est de toutes facons prudent) et mettre juste apres la mise a jour de x et l'incrementation de t un test
    si x=0 alors renvoyer t fin_si
    puisque renvoyer quitte immediatement la fonction (donc la boucle).

    Question 4: plutot que des boucles imbriquees, l'usage d'une fonction codee a la question precedente rendrait le code beaucoup plus lisible.

    J'ai du mal a comprendre pourquoi le concept de fonction argument et valeur de retour n'apparait pas dans l'algorithmique au lycee (ou plutot si, je soupconne que c'est parce qu'algobox et beaucoup de calcs ne l'implementent pas...), en tout cas ca me semble beaucoup plus naturel et lie aux mathematiques que d'utiliser des variables booleennes de controle de boucle et ca permet de reutiliser une brique cree avant plus tard plutot que de faire du copier-coller d'un bout d'algo dans un autre.
  • parisse a écrit:
    J'ai du mal a comprendre pourquoi le concept de fonction argument et valeur de retour n'apparait pas dans l'algorithmique au lycée.
    Merci, Parisse, permets que j'applaudisse des deux mains. Pendant des années j'ai milité en vain pour qu'on privilégie des langages "fonctionnels" au lycée. Je ne mentionnerai que les années sinistres où pour faire vendre les TO7 et MO5 on a saboté toutes les tentatives de généraliser l'initiation à des langages comme Lisp... Voire Prolog mais ça c'est une autre histoire.
  • Cela commence à faire pas mal de militants pour la fonction. Je me sens moins seul:)-D
    Voici ce que dit le programme :

    27259
  • Je pense également que la notion de fonction simplifie pas mal la mise en oeuvre sur ordi.
    D'ailleurs j'avais résolu le pb 2 de probas avec cette dernière au tout début.
    C'est uniquement parce que je ne l'ai pas encore abordée en cours que je ne l'ai
    pas mise dans le corrigé.
    Sinon je suis d'accord avec toi parisse sur l'utilisation des variables booléennes.
    Si j'y pense tout à l'heure je poste d'autres activités où justement la notion de fonction
    est très utile et utilisée. Testé l'an dernier en première...
  • Braun écrivait : http://www.les-mathematiques.net/phorum/read.php?15,817311,817467#msg-817467
    [Inutile de recopier un précédent message (surtout que les citations sont fusionnées !). Un lien suffit. AD]

    Attention, je ne défends pas par contre l'utilisation de langages fonctionnels au lycée, juste l'utilisation de fonctions avec arguments et valeur de retour au lieu de saisir/afficher. Il me semble que la fonction en tant qu'objet (et donc argument possible d'une fonction) nécessite un niveau d'abstraction plus élevé, donc plus de recul. De même pour la récursivité souvent utilisée dans ces langages pour remplacer des boucles (d'autant que le danger est grand dans ce cas d'avoir des programmes extrêmement inefficaces, que l'on pense à Fibonacci programmé récursivement et sans table de remember, mais cela pourrait se faire pour les récurrences à 1 cran ou pour la puissance rapide modulaire en spécialité maths). Bien entendu rien n'empêche d'utiliser un langage fonctionnel en se limitant à ses fonctionnalités de langage impératif pour commencer (encore que ... certaines variantes de logo n'ont pas de boucles), ça m'étonnerait que beaucoup de collègues le fassent dans le secondaire (même en ISN...).
    Pour revenir sur l'intérêt des fonctions, on peut rajouter un argument en défaveur des saisir/afficher : si le programme ne fonctionne pas, il devient très vite rébarbatif de saisir encore et encore les mêmes valeurs, alors qu'avec un appel de fonction, il suffit de valider à nouveau la ligne de commande contenant l'appel de fonction et ses arguments pour ré-exécuter la fonction corrigée jusqu'à obtention du résultat souhaité.
  • (tu) pour ce dernier argument.
  • Bonsoir,

    pourriez-vous descendre un cran en dessous, je ne comprends pas la problématique ni les arguments évoqués.
    Langage fonctionnel, orienté objet ... tout ça ... j'ai jamais rien mis derrière ces mots.
    Je ne suis pas non plus à la rue en informatique, mais si vous pouviez reprendre calmement tout cela je suis persuadé que j'apprendrais des trucs intéressants.

    S
  • Bon, disons rapidement qu'un langage fonctionnel, c'est un langage où on peut avoir des variables de type fonction, et donc des fonctions qui prennent en argument des fonctions (des fonctionnelles donc). Par exemple on peut écrire une fonction dichotomie(f,a,b,epsilon) qui prend en argument la fonction f dont on cherche une racine. Dans un langage non fonctionnel, on appele dichotomie(a,b,epsilon) et la fonction f est écrite explicitement dans l'algorithme, on devra modifier le code source si on change de fonction f. Par exemple à ma connaissance toutes les calculatrices ont un langage non fonctionnel (sauf les HP en mode polonaise inversée et les TI nspire en lua). La plupart des langages sur PC sont fonctionnels (y compris le C).
    Mais en fait, on entend souvent par fonctionnel un style de programmation, dans lequel on favorise les appels de fonction (récursifs ou récursifs croisés) à des itérations. Par exemple l'algorithme d'Euclide récursif
    pgcd(a,b):=si b=0 alors return a; sinon return pgcd(b,irem(a,b)); fsi
    Je ne suis pas du tout un expert de langage fonctionnel, d'autres sauront surement mieux en expliquer l'intérêt.
    Pour l'orienté objet, on n'en n'a pas parlé. C'est une extension des types structurés dans lequel on agrège en un seul type non seulement des données mais aussi des méthodes qui les manipulent.
  • Ci-joint la première version des 2 activités d'algo liées aux probas (niveau 1ère S). La correction utilisait la notion de fonction.
  • blitz écrivait:
    > Il est écrit "deux points", ils sont forcément
    > distincts, sinon ça fait un seul point, non ?



    les trois mousquetaires étaient quatre, Dr Jekyll et Mister Hyde étaient le même bonhomme.

    Plus sérieusement, "soit B ton voisin Bob et soit A, le mari d'Alice".
    Tant qu'Alice ne s'est pas remariée avec Bob, ça fait deux bonshommes, par la suite un seul.
  • La correction utilisait la notion de fonction.

    Je trouve que les fonctions ne sont pas vraiment à l'honneur dans cette correction.
  • Kamel
    Difficile de faire mieux avec des séances d'info pas toujours suivies vu le nombre d'heures allouées (4h/semaine) et les disponibilités des salles info...

    Voici quand même la liste des TP (hors thèmes) traités. Le n°6 introduit la notion de fonction. L'accent est mis sur le graphisme (côté ludique mais instructif).
  • merci parisse,

    python est un langage fonctionnel ?
    -> avec votre exemple dichotomie(f,a,b,epsilon) je dirais non
    -> avec votre remarque sur les langages des PC de dirais oui
    Preuve que j'ai sans doute mal compris quelque chose.

    S
  • C'est sympa d'avoir des éclaircissements.
    Je n'ai pas encore tout compris : pour moi un langage fonctionnel est un langage qui utilise des fonctions.... Est-ce que cela peut se simplifier à cela ?

    Pour la programmation à l'aide de fonctions en secondes, j'y suis loin, très loin.
    Si déjà une majorité des élèves arrive à écire un petit algorithme/programme ( une instruction condiionnelle, ou une boucle) je serais déjà très content...
    Cet objectif me semble inaccessible pour moi avec le temps qui j'y passe pour mes élèves de lycée en maths. Et malgré cela, je suis à la peine pour finir les programmes..
    De plus un grand nombre de collègues n'ont pas cette vision, et il faut dire qu'avec le peu d'heures qu'ils ont eu en formation, il ne peut pas en être autrement.
    Je comprends donc que cela ne soit pas au programme du lycée.
    Cela serait ptre différent une petit bout de programmation se fait au collège ( ptre bientôt ?)

    Par contre en ISN c'est une base de tous les programmes, et malgré cela quelques d'élèves qui ont choisi la spé ont du mal à comprendre cet aspect.
  • Dans ces cas-là, je connais peu de langages non fonctionnels.
    Il me semble (si j’ai bien compris) que c’est plutôt un langage qui ne fonctionne qu’avec des fonctions et où, par exemple, il n’y a pas de variable mais que des constantes.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Bonjour Nicolas.

    D'après la définition de Parisse, pascal est un langage fonctionnel, turbo-pascal (au moins dans ses premières versions) est un langage non fonctionnel.

    amicalement,

    e.v.
    Personne n'a raison contre un enfant qui pleure.


  • @samok: oui python est un langage fonctionnel, puisqu'on peut passer des fonctions en argument. Par exemple def f(x): return x*x; puis def g(f,x): return f(f(x)); puis g(f,3).
    Mais ca ne veut pas dire que les programmeurs utilisent habituellement un style fonctionnel en python. C'est vrai de beaucoup de langages d'ailleurs, que ce soit des langages traditionnels de base (C par exemple), de logiciel de calcul formel (Xcas, maple...), les gens programment plus souvent avec un style non fonctionnel, et personnellement c'est un style qui me convient beaucoup mieux. C'est aussi plus proche de la machine. Neanmoins, c'est important de pouvoir passer une fonction en parametre, cf. l'exemple que je donnais de la dichotomie, ou bien pour faire un point fixe, une methode de Newton, une valeur approchee d'integrale....
    @superfly: pour la seconde je ne sais pas, mais pour l'ensemble du lycee et en particulier la filiere S, je trouve qu'il faudrait introduire la notion de fonction avec parametre, valeur de retour (et variables locales). Je ne vois d'ailleurs pas vraiment pourquoi c'est plus difficile que de faire faire des saisir/afficher (et ca n'empeche pas de faire des affichages en cours de programme). Apres ce serait interessant d'avoir un feedback de collegues qui font comme ca pour savoir si dans l'autre sens ca peut aider a comprendre le concept mathematique de fonction.
    Je pense qu'on peut introduire le concept en douceur en meme temps que les tests avec des fonctions algebriques (par exemple definir la fonction x->sin(2*x+1), redefinir une fonction valeur absolue, puis une fonction definie par morceaux). A mon avis l'algorithmique devrait commencer par la: etre capable d'ecrire une ligne de commande (gestion des priorites, parentheses, ecriture des nombres avec point decimal, multiplication implicite/explicite), puis definir des fonctions algebriquement (avec test sous forme algebrique), puis des boucles definies simples (toujours en ligne de commande), ensuite on peut ecrire des algorithmes sous forme de fonctions (et la notion de variable locale apparait naturellement comme variable pour faire les calculs intermediaires, par exemple pour resoudre une equation du second degre, on va calculer une fois pour toute delta)
  • Merci pour la peine prise à expliquer. Je crois que j'ai compris.

    S
  • Je crois que ce qui se rapproche le plus de l'algorithmique au collège est une introduction à la notion de fonction par le biais de programme de calcul. Ce serait dommage de ne pas profiter de cette lancée.
    Voici ce que je pensais faire en début d'année avant d'apprendre que je n'aurais pas de seconde. Avec du recul, je pense qu'aborder la notion de fonction en plus des variables qui s'entremêlent, ça fait beaucoup pour une première fois. Donc quand j'aurai des secondes, je le modifierai, mais dans l'esprit, c'est ce que je ferai. Je vous en recauserai peut-être dans un an quand je l'aurai testé.
  • Bonjour,
    Au collège, contrairement au lycée, je me limiterais à un langage strictement impératif et procédural. Pour moi l'idéal aurait été Forth ou les calculatrices RPN, à la rigueur Logo, qui permettent une aproche ludique du calcul.
  • Yann, voici, avec les fonctions, comment pourrait être le corrigé de ton activité de 1ère S :
    from random import random
    
    # Question 1
    def pas():
        if random() < 0.5:
            return -1
        else:
            return 1
    
    def marche(t):
        dep = 0
        for k in range(t):
            dep = dep + pas()
        return dep
    
    # test Q1 pour une marche de 20 secondes
    print('Pour cette marche de 20 s, le deplacement est', marche(20))
    
    
    # Question 3
    def tempsretour():
        dep = pas()
        t = 1
        while dep != 0:
            dep = dep + pas()
            t = t + 1
        return t
    
    # test Q3
    print('Cette fois, le temps de retour est', tempsretour())
    
    
    # Question 4
    def tempsmoyen(n):
        temps_total = 0
        for k in range(n):
            temps_total = temps_total + tempsretour()
        return temps_total/n
    
    # test Q4
    print('Cette fois la moyenne sur 100 marches est', tempsmoyen(100))
    
  • @parisse :
    > l'algorithmique devrait commencer par là : être capable d'écrire en ligne (gestion des priorités, parenthèses...

    Entièrement d'accord. Ce qui pose le plus de problèmes dans le secondaire (et sans doute aussi après), c'est qu'une majorité de lycéens est inapte à contrôler un résultat parce qu'elle n'arrive pas à remettre en ligne une expression algébrique.

    Dans ces conditions, on se demande ce qu'ils comprennent à l'algèbre et à l'analyse.

    Demandez d'écrire en ligne une innocente fraction rationnelle dans un devoir, et constatez l'ampleur des dégâts : les priorités opératoires sont superbement ignorées.


    @Braun : Logo, c'est le Bien ! :)-D
  • @ Kamel : jolie solution utilisant les fonctions !
    Je n'ai hélas pas le temps de passer trop de temps dessus. J'adore l'algo pour le côté modélisation mais je passe plus de temps à entrainer les élèves au calcul à la main qu'à la programmation fonctionnelle.
    Peut-être ai-je tort ?
  • " l'algorithmique devrait commencer par là : être capable d'écrire en ligne (gestion des priorités, parenthèses... "

    Pour ma part, je ne suis pas d'accord. Pour deux raisons :
    1) La gestion des prioriétés, parenthèses & cie relève du programme de mathématiques, je ne vois pas l'intéret d'y ajouter une dimension "informatique".
    2) j'ai personnellement appris la programmation sans aucune notion de maths, et il y a des milliards de choses à faire dans ce domaine sans maths (manipulations de chaines de caractères, programmation de petits jeux, ...). Et cela bloque beaucoup d'élèves. Par exemple, j'ai vu une élève ne pas être capable de d'écrire un programme énumérant les solutions entière entre 1 et 10 d'une équation alors qu'elle avait compris la notion de boucle : elle était complètement bloquée par la signification réelle de "résoudre une équation" (c'est à dire : "trouver les nombres qui rendent l'équation vraie"). Donc elle a dit que "l'algorithme c'est trop dur".

    Dans cette optique, je n'aime pas trop la première activité de Yann avec les équations de droites : au final, ce n'est qu'une ré-écriture du cours en version informatique, l'intérêt du programme obtenu n'est pas flagrant (un élève connaissant bien son cours armé d'une calculatrice collège sera tout aussi efficace). Je ne dis pas qu'il ne faut absolument pas en faire (je fais faire le même type d'exos à mes élèves, je suis bien conscient que l'objectif ici est aussi de réviser le cours par un moyen détourné), mais si l'intérêt est de travailler sur la structure si/alors/sinon, on peut très bien aller chercher autre chose que des maths. Par exemple, je leur fait programmer un petit quizz sous forme de QCM, le programme final ressemblant à
    score=0
    print "Question 1 : quelle est la couleur du cheval blanc d'HIV ?"
    print "1) Blanc"
    print "2)Rouge"
    rep = input('Votre réponse :')
    if rep == 1 :
       print "Bravo !"
       score = score +1
    else :
       print "Raté, il était blanc !"
    print "Question 2 : qui est le prof le plus cool ?"
    print "1) Le prof de maths"
    print "2) Le prof de physique"
    ...
    

    C'est pas dur, c'est ludique, on a un programme qui présente un intérêt (même si on ne va pas le vendre à 40 000 exemplaires, on peut y faire jouer des gens) et ça met en jeu tout ce dont on a besoin pour programmer.

    Pour pousser encore plus loin mon idée : le site du zéro apprend à programmer jusqu'à un niveau ma foi tout à fait honnête et ne parle pas de mathématiques de tout le tutoriel si ce n'est des opérations arithmétiques élémentaires (et pour cause : on n'a pas besoin de plus !).

    Par contre j'aime bien l'acti avec les probas : ici on fait un programme utile qui simule une situation qu'on aurait du mal à simuler à la main. Je vais surement l'utiliser avec mes élèves.

    Pour résumer, ce que je préférerais comme approche de l'algo : une première phase de programmation où on apprend à programmer en dehors de tout objet mathématique dépassant l'abstraction de la division, puis des applications dans plusieurs branches des sciences : en maths (algo de dichotomie, newton, intégration numérique, simulations probabilistes...), en physique (simulation de trajectoires, de ciruits électriques, ...), en bio (évolution de populations et pleins d'autres trucs rigolos que je ne connais pas bien).
    Parce que honnêtement, voir les lycéens se traîner de "l'algorithmique" pendant 3 ans et ne pas avoir un algo plus évolué que "calculer la somme des u_k pour n allant de 1 à n" (cf bac 2012), je me dis qu'au final les lycéens n'ont pas appris grand chose : ce programme est complètement trivial pour n'importe qui ayant compris comment manipuler une boucle "pour" (base de la base en programmation) et a une compréhension rudimentaire de ce qu'est une suite.
  • D'accord avec toi sebsheep. Pour débuter l'algo, je me place du côté graphique avec l'utilisation de la tortue. Ce côté visuel est assez accrocheur (racoleur ?) et permet d'aborder un peu plus tard la notion de fonction info.
  • sebsheep:
    C'est une vraie question en effet: l'algorithmique doit-elle etre introduite sur des notions de maths ou pas? Vu que l'enseignement fait partie du cours de maths, j'aurais tendance a dire oui (et il me semble que c'est ce qui ressort des commentaires du programme de maths) mais on pourrait avoir un cours d'informatique qui ne soit pas enseigne a l'interieur des maths et les exemples foisonnent dans d'autres disciplines (par exemple l'ADN et l'ARN permettent de faire des choses tres interessantes en algorithmique).
    Par contre, je maintiens que l'algorithmique necessite de comprendre les notions de priorite, parenthesage, ... bref de savoir ecrire une ligne de commande, sauf a rester completement bloque dans un environement, ce que evidemment certains editeurs souhaitent (ca n'empeche evidemment pas de commencer avec un langage a la syntaxe simplifiee, par exemple de type logo, et ce n'est pas par hasard que j'ai implemente un module dessin tortue dans Xcas). Sinon, on est bien oblige a un moment donne d'ecrire une ligne d'un programme, or une ligne de programme c'est une ligne de commande. Si on n'est pas capable d'ecrire une ligne de commande, on ne peut pas ecrire un programme!
  • Pourtant on peut créer des programmes avec Scratch sans savoir lire de ligne de commande.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Vu que l'enseignement fait partie du cours de maths, j'aurais tendance a dire oui (et il me semble que c'est ce qui ressort des commentaires du programme de maths)

    Ce que fait et préconise l'EN n'est pas forcément ce qu'il faudrait faire... En tout cas l'argument "c'est dans les programmes donc c'est bien de faire comme ça" ne me convainc pas du tout.
    Par contre, je maintiens que l'algorithmique necessite de comprendre les notions de priorite, parenthesage,

    Je suis d'accord et n'ai jamais dit le contraire. La maîtrise des "opérations artihmétiques élémentaires" inclus ces notions ; je ne parle pas de simplification/développements/factorisation ou autre, juste les notions de priorité d'opérations. Et ça normalement un cinquième "bien formé" sait manipuler cela sans problème ; donc les élèves arrivant en seconde devraient (si tout se passait pour le mieux dans le meilleur des mondes et que les élèves maîtrisaient tous les 3/4 des programmes de l'année n-1) être parfaitement à l'aise avec cela.
    Le problème est bien antérieur à l'introduction de l'algorithmique.
    Pourtant on peut créer des programmes avec Scratch sans savoir lire de ligne de commande.
    Oui et non car on peut être rapidement amenés à calculer des choses du type (x+y)/2. Et là la maîtrise des priorités opératoires est essentielle.
  • Oui, je sais bien : faire des calculs avec Scratch est une abomination.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • -> sebsheep: bon, disons alors que savoir écrire une ligne de commande est un préalable à écrire des algorithmes. Mais je crains que ça ne soit pas bien maitrisé à l'entrée en seconde (si j'en juge par certaines erreurs d'étudiants), et donc à revoir, et je pense que ça pourrait aussi être bénéfique pour aider à résoudre certaines difficultés en maths, justement en en reparlant au début de l'algorithmique, je pense en particulier à la multiplication implicite et aux confusions entre produit, variable ayant 2 lettres, et pour les parenthèses produit ou fonction appliquée à un argument (par ex. x(x+1) ou f(x+1)).
    Ensuite sur l'enseignement de l'algorithmique avec ou sans les maths, je ne suis pas contre le principe d'un enseignement hors des maths, mais il faut aussi en tirer les conséquences, un horaire à part, donc forcément pris sur les disciplines existantes, et on perdrait à mon avis la possibilité d'aide à la compréhension mathématique que peuvent apporter certains algorithmes.
    -> nicolas.patrois: je ne connais pas scratch, je suppose qu'on n'y tape pas de ligne de programmes puisque vous le prenez en exemple, est-il possible de faire des algos intéressants d'un point de vue scientifique, disons par exemple dans un domaine non mathématique un algorithme d'alignement d'ADN (puisque j'évoquais le sujet) ?
  • Mais je crains que ça ne soit pas bien maitrisé à l'entrée en seconde

    Je n'ai jamais dit le contraire B-)- . Mais cet état de fait n'est pas normal et on devrait se pencher sur ce problème en amont, au lieu d'attendre le lycée en ajoutant en plus la dimension (et la difficulté) algorithmique, les problèmes de syntaxe, ...

    perdrait à mon avis la possibilité d'aide à la compréhension mathématique que peuvent apporter certains algorithmes.

    As-tu un exemple d'algo qui aide à la compréhension d'une notion mathématique ?

    Je pense que Scratch est Turing-complet, mais ça devient rapidement inextractible ... Tu peux essayer, c'est gratuit (pour faire court : c'est de la programmation "graphique" : au lieu de taper tes lignes de code, tu les glisses/déposse dans la fenetre de l'éditeur).
  • Ben, si on raisonne en disant que ca devrait etre maitrise avant, donc on ne le refait pas, on ne fait qu'aggraver le probleme, les notions enseignees n'etant pas assises sur des bases solides. Alors bien sur le lycee ou la fac ne peut pas faire tout ce qui n'a pas ete fait en amont, mais justement l'algorithmique est un sujet neuf au lycee, ca pourrait etre l'occasion de s'assurer que les bases sont bien comprises.
    Ensuite sur le type de langage, peut-etre que nous avons une divergence importante sur le but de l'algorithmique: pour moi, cet enseignement dans la filiere scientifique doit servir aux sciences, donc se nourrir des themes qui y sont abordes (et c'est bien dans cet esprit que les programmes sont rediges en maths actuellement) mais egalement donner un autre eclairage a ces themes (j'evoquais la question de la multiplication implicite, mais les exemples sont legions en maths, du crible d'Erathosthene, de l'algorithme d'Euclide -y compris Bezout- en arithmetique, des suites recurrentes, la dichotomie, l'integration par des methodes de quadrature, des proba/stats ou des simulations permettent d'eclairer certains phenomenes, ...). En fait il y a beacoup d'exercices qu'on fait faire en maths qui sont essentiellement des algorithmes executes a la main, et qu'on fait faire parce qu'ils rendent concrets des notions et aident ainsi a la comprehension de theories (ca commence d'ailleurs tres tot avec les operations au primaire). Je ne vois donc pas l'algorithmique comme une difficulte en plus, mais comme une chance en plus de comprendre. Pour la seconde, ca pourrait evidemment etre plus ouvert, mais il me semble que l'esprit du programme actuel est bien d'interagir entre algorithmique et maths (ce qui n'exclut bien evidemment pas de traiter d'autres thematiques).
    Sur scratch, je n'ai pas trop le temps de regarder, c'est clair que j'ai un a priori defavorable sur ce qu'on peut faire en programmation "graphique" pour des algorithmes comme ceux que j'ai pris en exemple, maintenant peut-etre que je me trompe, mais je voyais plus ca comme une initiation a faire au primaire debut de college (comme logo).
  • Si pour une première approche les activités d'algo vite consolidées
    par une approche de programmation peuvent presque entièrement
    se passer de maths, c'est malgré tout à travers des problèmes
    mathématiques qu'elles trouveront le plus grand intérêt.
    Pour critiquer mon approche tortue-graphique crrtains élèved m'ont
    dit en 1ère : "on ne va plus dessiner de carrés ? " soupir.
    Bon ce n'est pas la généralité mais l'acquisition de modèles
    leur semble de plus en plus compliqué. Algo comne en
    cours de maths "classiques".
Connectez-vous ou Inscrivez-vous pour répondre.