B1 · 第5集 · 7:59
算法的渐进学习
本集讲解算法教学如何随学生年级逐步深入:从线性指令,到循环结构,再到条件判断。
来源:Bruno Lambert / tube-numerique-educatif.apps.education.fr · 许可:CC BY-SA 4.0
字幕
Algorithmes et codage, cinquième et dernière partie.
算法与编程:第五部分,也是最后一部分。
On va essayer d'avoir un petit peu une vue d'ensemble sur la
在本部分最后,
notion de codage et même sur les programmes en général dans cette dernière partie.
我们将对“编码”概念,乃至程序整体,做一个简要概述。
Au début avec le Bivot, on a des algorithmes linéaires,
最初使用Bee-Bot时,
c'est- à- dire qu'on a première instruction, deuxième instruction,
我们编写的是线性算法,
troisième instruction, quatrième instruction,
即按顺序执行:第一条指令、第二条指令、
toutes les instructions sont utilisées, elles sont les unes après les autres,
第三条、第四条……所有指令都会被执行,依次连续运行,
elles se suivent et on va comme ça jusqu'à la fin du programme.
一直运行到程序结束。
À partir du cycle 3, on peut commencer à remplacer certaines instructions
从第三学段起,
répétées par des boucles.
我们可以用循环来替代重复出现的指令。
La boucle va consister à, à l'intérieur de
所谓循环,就是在循环内部,
la boucle, de repérer des motifs dans notre programme qui vont être répétés
找出程序中将被多次重复执行的模式,
plusieurs fois.
并将其封装起来。
Là, on a une petite ligne de programmation pour.
这里是一小段为下方Blue-Bot机器人编写的程序代码。
Le bluebot en bas.
下方的Blue-Bot机器人。
Donc on voit que la première instruction fait pivoter le robot sur la gauche.
可以看到,第一条指令让机器人向左旋转。
Ensuite, il y a deux crochets bleus, un qui ouvre, un qui ferme,
接着是两个蓝色方括号:一个左括号,一个右括号;
et entre on voit qu'il y a une flèche avancer.
括号之间是一条“前进”箭头。
Donc ça, c'est l'intérieur de ma boucle.
这部分就是我的循环体。
Et à côté de la boucle, je vois qu'il y a marqué quoi.
在循环旁边,标着什么?
Qu'est- ce que ça veut dire?
它表示什么意思?
Ça veut dire que le avancer
它表示,“前进”这条指令
va être répété quatre fois.
将重复执行四次。
Ça veut dire que je vais avancer quatre fois.
也就是说,我会前进四次。
Donc là, on a une boucle
因此,这是一个循环,
qui me permet de dire voilà, je tourne à gauche et ensuite j'avance quatre fois
让我能简洁地表达:先左转,再前进四次;
plutôt que de dire je tourne à gauche et ensuite avance, avance,
而不用写成:左转,然后前进、前进、
avance, avance.
前进、前进。
Les instructions conditionnelles, c'est plutôt fin de cycle trois,
条件语句,这通常属于小学高年级阶段的内容,
c'est plutôt à partir de la sixième ou à partir de
一般从六年级或五年级才开始学习。
la cinquième. Je ne crois pas qu'il faille les
我认为不应过早将其引入教学。
faire entrer dans l'enseignement avant.
在此之前,不宜纳入课堂教学。
Sinon, alors j'avais fait l'exemple des mots qui ont le pluriel en x ou en s,
另外,我之前举过例子:以x或s结尾的复数名词,
avec la terminaison ou.
其词尾是‘ou’。
On se souvient de ça.
这个知识点大家还记得吧?
Simplement, voilà, le si
简单来说,就是‘如果……’(si)结构,
alors sinon, ça me permet d'avoir des embranchements dans
接着是‘那么……’(alors)和‘否则……’(sinon),
mon programme et de ne plus être linéaire.
它能让程序产生分支,不再线性执行。
On va peut- être des fois passer par, en fonction d'une situation donnée,
有时,程序会根据特定情况,
avoir un comportement du programme ou un autre.
选择执行一种行为,或另一种行为。
Donc généralement, ce qui est derrière le si, c'est une question fermée,
通常,‘如果’后面跟的是一个封闭式问题,
auquel on peut répondre que par vrai ou faux.
只能回答‘对’或‘错’。
Si la réponse est vrai, il faut appliquer ce qu'il y a derrière le alors.
如果答案为‘对’,就执行‘那么’后面的内容;
Si la réponse est fausse, on applique ce qu'il y a derrière le sinon.
如果答案为‘错’,就执行‘否则’后面的内容。
Dans un si alors, on peut faire un si alors sans avoir de sinon,
在‘如果……那么……’结构中,可以没有‘否则’部分,
il faut au moins un alors.
但至少必须有‘那么’部分。
Donc là, on est un peu dans ce qu'on apprend à faire en sixième,
所以,我们现在讲的内容,其实相当于六年级、
cinquième avec Scratch.
五年级用Scratch编程时所学的内容。
Donc première instruction, on va
第一条指令是:
demander combien font 2 et 2 et on attend.
询问‘2加2等于几?’并等待用户输入。
On attend quoi?
我们在等什么呢?
On attend une réponse de l'utilisateur.
我们在等学生的回答。
Donc ce qu'il y a en haut, le petit chat,
屏幕上方这个小猫图标,
c'est ce qui va apparaître sur l'écran de l'élève.
就是学生屏幕上将显示的内容。
Donc on communique souvent avec un petit chat.
因此,我们经常用一个小猫头像来交流。
Donc c'est le petit chat qui dans sa bulle demande combien fait 2 et 2.
小猫在对话框里提问:2加2等于多少?
Et en dessous, on voit qu'il y a une petite barre pour répondre dans laquelle la
下方有一条输入栏,供人填写答案;
personne qui est en face, l'élève, va répondre,
面对它的学生将在其中作答,
il va écrire sa réponse et puis il va appuyer sur la touche Entrée.
写下答案后,再按回车键。
Donc c'est cette écriture et l'appui sur la touche Entrée qu'attend le programme
程序显示‘等待’时,正是在等待这两项操作:
quand il marque attend.
即输入文字并按下回车键。
Il va mettre le résultat, enfin ce qui a été entré par la
它会把用户输入的内容,
personne qui répond au programme, dans réponse.
也就是回答者输入的内容,存入变量‘réponse’(答案)中。
Et là, l'instruction conditionnelle est la suivante: si réponse égal 4.
接下来是条件指令:如果‘réponse’等于4,
Alors, alors là il n'y a pas de alors,
那么——这里没有单独的‘那么’语句,
juste en dessous il y a une instruction, c'est dire bravo.
紧接着下方直接执行一条指令:‘说:太棒了!’
Là, on a le premier petit chat en bas à gauche qui dit bravo.
左下角第一个小猫头像就会说出‘太棒了!’
Si on met n'importe quoi d'autre que 4, si on met 5, si on met z,
如果输入其他任何内容,比如5或字母z,
si on écrit mathématique.
甚至写‘mathématique’(法语‘数学’),
Le petit chat il répondra désolé ce qui est en bas.
小猫就会在下方回应:‘抱歉。’
Donc voilà un peu ce qu'on peut dire des instructions conditionnelles si,
以上就是关于条件指令‘如果’、
alors et sinon.
‘那么’和‘否则’的说明。
On peut avoir des boucles conditionnelles,
我们还可以使用条件循环,
c'est- à- dire on va répéter jusqu'à ce qu'un
也就是说,重复执行某些操作,
événement arrive.
直到某个事件发生为止。
Par exemple, quand j'ai ma chenille, si
例如,当我控制毛毛虫时,
je fais un peu un pseudo- code en dessous, je vais répéter jaune,
我在下方写一段伪代码:重复执行‘变黄’、
avancer d'une case, rouge.
‘前进一格’、‘变红’;
Et je répète jusqu'à que
一直重复,直到
fin de la chenille soit vrai, c'est- à- dire que je sois arrivé à
‘毛毛虫到达终点’为真,
la fin de la chenille.
也就是我抵达了毛毛虫的终点。
Voilà mon algorithme.
这就是我的算法。
Là, c'est pas un algorithme où je vais dire répète cinq fois,
这里不是那种‘重复五次’
répète dix fois.
或‘重复十次’的算法。
C'est le genre d'algorithme où on va pas s'embêter à calculer à l'avance combien de
而是一种无需预先计算
fois je vais devoir le répéter.
究竟要重复多少次的算法。
Je vais le répéter jusqu'à ce qu'un événement arrive,
我会一直重复,直到某个事件发生——
ici arriver à la fin de la chenille.
在这里,就是毛毛虫走到尽头。
Pour la Macarena, la boucle correspond à répéter,
跳《玛卡莲娜》时,循环对应的是反复跳舞动作——
là je mets l'intégralité de la chorégraphie dans la boucle,
我把整套舞蹈动作都放进这个循环里,
jusqu'à ce que la chanson continue ou alors j'entends la musique que ça soit faux,
一直跳到歌曲继续播放,或者我听到音乐出错——
c'est- à- dire qu'il n'y ait plus de
也就是说,
musique. À partir de là, j'arrête de danser.
音乐停止,这时我就停下不跳了。
Donc voilà un peu comment on pourrait décrire les boucles
所以,这就是我们描述条件循环
conditionnelles.
的一种方式。
Si j'essaie de résumer quelques éléments de progressivité,
如果我试着总结一下教学的递进性要点:
ça commence un peu dans la découverte du monde, puis ça va être entre sciences
最初是认识世界,接着分两条线发展:
et technologies d'un côté, mathématiques de l'autre,
一边是科学与技术,另一边是数学;
technologies tout court au collège et mathématiques,
初中阶段则涵盖纯技术课程和数学;
et puis sciences numériques et technologiques et mathématiques
高中阶段则是数字与技术科学,以及数学。
au lycée. Donc l'algorithmique va être à la fois traitée du point de vue des
因此,算法教学将同时从数学
mathématiques et du point de vue de la technologie.
和技术两个角度展开。
Jusqu'en fin de cycle 3, on traite de se
在小学高段(第三学段)结束前,
repérer et se déplacer.
我们主要学习定位与移动。
C'est ça l'objet sur lequel on travaille l'algorithmique en termes d'algorithmes,
这正是我们开展算法教学的主题,
avec notamment les robots ou les petits personnages à déplacer dans l'écran.
例如通过机器人或屏幕上的小角色来练习。
Et en mathématiques, ce n'est que dans les programmes de géométrie du cycle 3
在数学中,算法概念仅出现在第三学段的几何课程中。
qu'apparaît la notion d'algorithmique.
才首次出现算法这一概念。
en technologie, en sciences et technologies,
在技术、科学与技术课程中,
le robot lui est étudié pour lui- même aussi en tant qu'objet technique.
机器人本身也被作为技术对象来研究。
On a aussi une autre facette à l'étude du robot.
机器人学习还有另一层面。
Les algorithmes en eux- mêmes vont se complexifier.
算法本身将逐渐变得复杂。
Au cycle 1, ils sont linéaires, ensuite au cycle 2, fin de cycle 2,
第一学段时,算法是线性的;
cycle 3, on va dire des boucles.
到了第二学段末和第三学段,则引入循环结构。
Fin de cycle 3, cycle 4,
第三学段末和第四学段,
on va avoir des instructions conditionnelles.
将加入条件指令。
À partir du cycle 4, on abandonne le tout géométrique.
从第四学段起,完全舍弃纯几何方式。
Généralement, les déplacements maintenant vont être plutôt remplacés par la
如今,移动操作通常被替换为
construction de dessins.
绘图建构。
Comme j'ai montré avec les
就像我之前用三角形展示的那样。
triangles. Mais finalement, la construction de dessins,
但最终,绘图建构本质上就是
c'est le déplacement d'un crayon à l'écran, c'est juste
屏幕上画笔的移动,
dessiner la trace de l'objet, du petit robot, du petit chat qu'on déplace.
即绘制所移动对象(如小机器人、小猫)的轨迹。
Mais la programmation va aussi servir à traiter des nombres,
而编程还将用于处理数字、
des variables, des listes, des tableaux.
变量、列表和数组。
Donc on va dépasser juste la notion de se repérer, de se
因此,我们不再局限于定位与移动,
déplacer, on va traiter beaucoup d'autres choses à l'aide de la pensée
而是借助算法思维,处理更多其他内容。
algorithmique.
——这就是算法思维的作用。
On peut se souvenir de ce qu'on avait sur les opérations posées,
我们可以回想一下竖式运算等内容。
etc. Donc voilà, jusqu'au cycle
等等。总之,直到第三学段,
3, on va réserver l'algorithmique, la
我们将算法与编程限定于空间认知范畴,
programmation à des considérations spatiales, à se déplacer,
例如移动、定位等。
se repérer. Par la suite, à partir du cycle 4,
此后,从第四学段开始,
on ouvre ça complètement sur la plupart des domaines des mathématiques.
它全面拓展至数学的大多数领域。
Le langage de codage devient aussi de plus en plus abstrait.
编程语言也变得越来越抽象。
Au début, on va appuyer sur des boutons, ensuite on a des pictogrammes,
起初,我们按按钮;
ensuite on a un langage un peu visuel quand on arrive au collège avec Scratch,
接着出现图标;
et puis à la fin quand on est au lycée, on va passer à un langage totalement.
再后来,到了初中,我们用Scratch这类偏视觉化的语言;最后到高中,就转向完全文本化的语言。
Voilà, cette série de vidéos est finie.
好了,本系列视频到此结束。
J'espère avoir été clair sur ce qu'on peut un peu savoir,
希望我已清晰地介绍了
sur faire le tour des notions d'algorithmique.
算法相关的基本概念。
Merci beaucoup.
非常感谢!