diff --git a/coursedata/level-defaults/zh.yaml b/coursedata/level-defaults/zh.yaml new file mode 100644 index 00000000000..425d11f3491 --- /dev/null +++ b/coursedata/level-defaults/zh.yaml @@ -0,0 +1,227 @@ +--- + 1: + intro_text: "欢迎来到海迪!在第1级目标你可以使用命令print, ask 和 echo。按下蓝色的按钮,代码就会为你打出来!使用左边编程栏下的绿色 "运行代码 "按钮,你可以尝试运行这段代码。" + start_code: "print 你好世界!" + commands: + - + name: "print" + explanation: "意思是打印,用print可以打印一些东西。" + example: "例如:print你好欢迎来到海迪!" + demo_code: "print 你好欢迎来到海迪!" + - + name: "ask" + explanation: "意思是提问,用ask可以提出一些问题。" + example: "例如: ask你最喜欢的颜色是什么?" + demo_code: "ask 你最喜欢的颜色是什么?" + - + name: "echo" + explanation: "意思是重复,用echo可以重复执行某一任务。" + example: "例如: echo 那么你最喜欢的颜色是..." + demo_code: "ask 你最喜欢的颜色是什么?\\necho 那么你最喜欢的颜色是..." + 2: + intro_text: "在第2级目标中, print 的使用方法仍旧如同在第1级目标中一样, 但是ask 已被改变并且需要一个你可以打印的名称. 不再需要echo了.你现在也可以使用这些命令:" + start_code: "print 你好世界!" + commands: + - + name: "is"—中文词汇可以用来命名吗? + explanation: "是,用来给一个词命名以便在程序中使用" + example: "例如: name is 海迪。" + demo_code: "name is 海迪\\nprint 欢迎name" + - + name: "ask" + explanation: "意思是提问,用ask可以提出一些问题。注意! 现在提问需要一个名字。" + example: "例如:color is ask 你最喜欢的颜色是什么?" + demo_code: "color is ask 你最喜欢的颜色是什么?\\nprint color是我最喜欢的颜色!" + - + name: "choose_random" + explanation: "意思是随机选择,用 at 和 random 可以从一组词汇中随机选择一个词。" + example: "例如:animal is 狗, 猫, 袋鼠。" + demo_code: "animal is 狗,猫,袋鼠\\nprint animal at random" + 3: + start_code: "print '你好世界'" + intro_text: "在第3级目标中, print 的使用方法仍旧如同在第2级目标中一样,但是print的使用方法有所不同了,你需要在你想要打印的内容前后两边加上单引号。" + commands: + - + name: "print" + explanation: "意思是打印,可以用来打印单引号里面的内容" + example: "例如: 'print你好欢迎来到海迪。'" + demo_code: "print '你好欢迎来到海迪。'" + - + name: "is" + explanation: "是, 可以用来给一段文本命名并不带引号打印print出这段文本." + example: "例如:name is 海迪." + demo_code: "name is 海迪\\nprint '我的名字是name'" + - + name: "ask" + explanation: "意思是提问,用ask可以提出问题。" + example: "例如:color is ask 你最喜欢的颜色是什么?" + demo_code: "color is ask你最喜欢的颜色是什么?\\nprint color ' 是你最喜欢的颜色!'" + 4: + start_code: "name is ask你的名字是什么?\nif name is 海迪 print '酷!' elseprint '呵呵'" + intro_text: "ask 和 print 的使用方法和在第3级目标里面一样. 在第4级目标里面增加了if条件语句!" + commands: + - + name: "print" + explanation: "意思是打印,用print 打印的内容前后两边都要用单引号标注清楚。" + example: "例如: print '你好欢迎来到海迪。'" + demo_code: "print '你好欢迎来到海迪。'" + - + name: "ask" + explanation: "意思是提问,用ask可以提出问题。注意! 现在打印内容的前后两边都需要用引号标注清楚。" + example: "例如: 颜色 is ask 你最喜欢的颜色是什么?" + demo_code: "颜色 is ask你最喜欢的颜色是什么?\\nprint 颜色 ' 是你最喜欢的颜色!'" + - + name: "if-else条件语句" + explanation: "意思是如果..(那么)...否则...,可以用来做出选择。If(如果)后面的语句用来判断条件的真假,如果判断条件为真就执行if后面的(那么)语句,如果判断条件为假就执行else(否则)后面的语句。" + example: "例如: if color is 绿色(那么)print '漂亮!' else print '呵呵'" + demo_code: "color is ask你最喜欢的颜色是什么?\\nif color is 绿色 print '漂亮!' else print '呵呵'" + 5: + start_code: "repeat 3 times print '海迪很好玩!'" + intro_text: "ask, print 和 if 的功能和在第四级目标里面一样. 但是在第五级目标里面增加了repeat循环命令.Repeat循环语句可以用来多次执行一段代码." + commands: + - + name: "print" + explanation: "意思是打印,可以用print 打印的内容前后两边都要用单引号标注清楚。" + example: "例如: print '你好欢迎来到海迪。'" + demo_code: "print '你好欢迎来到海迪。'" + - + name: "ask" + explanation: " 意思是提问,用ask提出问题。" + example: "例如: color is ask你最喜欢的颜色是什么?" + demo_code: "color is ask 你最喜欢的颜色是什么?\\nprint color '是你最喜欢的颜色!'" + - + name: "if-else" + explanation: "意思是如果..(那么)...否则...,用来做出选择。If(如果)后面的语句用来判断条件的真假,如果判断条件为真就执行if后面的(那么)语句,如果判断条件为假就执行else(否则)后面的语句。" + example: "例如: if 颜色 is 绿色(那么) print '漂亮!' else print '呵呵'" + demo_code: "颜色 is ask你最喜欢的颜色是什么?\\nif 颜色 is 绿色 print '漂亮!' else print '呵呵'" + - + name: "repeat" + explanation: "意思是重复或者循环,指的是repeat循环语句和if-else条件语句的组合" + example: "例如: if color is 绿色 repeat 3 times print '漂亮!' else repeat 5 times print '呵呵'" + demo_code: "color is ask你最喜欢的颜色是什么?\\nif color is 绿色 repeat 3 times print '漂亮!' else repeat 5 times print '呵呵'" + 6: + start_code: "print '5 乘以 5 is ' 5 * 5" + intro_text: "ask, print, if-else条件语句 和 repeat循环语句 的在这一级目标中的使用方法与在第四4级目标和第5级目标里面一样。 第6级目标里面增加了一些新的内容... 现在你可以计算啦。 " + commands: + - + name: "print" + explanation: "意思是打印,现在打印内容的前后两边都需要用引号标注清楚。" + example: "例如: print '5 乘以 5 是 ' 5 * 5" + demo_code: "print '5 乘以5 是 ' 5 * 5" + - + name: "用ask 和 if-else条件语句来进行计算" + explanation: "用ask提出计算题然后用if-else条件语句检查答案是否正确。" + example: "例如: answer is ask 10加10等于几?" + demo_code: "answer is ask 10加10等于几?\\nif answer is 20 print '做得好!' else print '糟糕,算错啦!'" + - + name: "repeat " + explanation: "意思是重复或者循环,repeat循环语句和if-else 条件语句的组合" + example: "例如: if answer is 50 repeat 3 times print '正确!' else repeat 5 times print '不正确!'" + demo_code: "answer is ask 10乘以5等于几? \\nif answer is 50 repeat 3 times print '正确!' else repeat 5 times print '不正确!'" + 7: + start_code: "repeat 5 times\n print '大家好'\n print '这段话将被打印五次'" + intro_text: "ask 和 print 的使用方法依旧保持不变. 但是 if -else条件语句和 repeat循环语句已经改变了!你现在可以执行一组代码, 但是你将不得不使用缩进. 这意味着首行缩进四个空格.当你想要创建只有一行的代码块的时候这一点也适用. 如果你整合了一个repeat循环语句和if-else条件语句,那么你需要缩进每个代码块. 请看下面的范例以了解更多细节!" + commands: + - + name: "print" + explanation: "打印一些内容。记得在打印内容的前后两边都用引号标注清楚。" + example: "例如: print '5 乘以5 是 ' 5 * 5" + demo_code: "print '5 乘以 5 是 ' 5 * 5" + - + name: "多行的if-else条件语句" + explanation: "使用ask 提问加法运算的答案然后检查答案是否正确.我们现在可以打印两行代码了。" + example: "例如: answer is ask 5加5等于几?" + demo_code: "answer is ask 5加5等于几?\\nif answer is 10\\n print '做得好!'\\n print '确实, 答案就是 'answer\\nelse\\n print '糟糕!'\\n print '答案就是10 ' " + - + name: "if-else 条件语句和 repeat 循环语句的组合" + explanation: " if-else 条件语句和 repeat 循环语句的组合" + example: "例如: if color is 绿色 repeat 3 times print '漂亮!' else repeat 5 times print '呵呵'" + demo_code: "color is ask你最喜欢的颜色是什么?\\nif color is 绿色\\n repeat 3 times\\n print '漂亮!'\\nelse\\n repeat 5 times\\n print '呵呵'" +8: + start_code: "for i in range 1 to 10\n print i\nprint '无论你是否准备好了,我都会来的!'" + intro_text: "print的使用方法照旧不变但是repeat现在被for所代替!你要用 for i in range 1 to 5, 代替 repeat 5 times。你也可以在你的程序中使用i!记住在 "for "和 "if "语句后使用缩进(这意味着以四个空格开始一个句子)。" + commands: + - + name: "repeat" + explanation: "我们用for 代替repeat" + example: "for i in range 1 to 10" + demo_code: | + for i in range 1 to 10 + print i + print '无论你是否准备好了,我都会来的!' +9: + start_code: "for i in range 1 to 10:\n print i\nprint '无论你是否准备好了,我都会来的!" + intro_text: "现在我们将对缩进进行一些改变。每当我们需要用缩进时,我们都需要在缩进前的那一行使用冒号“:”。" + commands: + - name: "for 语句和冒号 :" + explanation: "当我们使用 "for "时,我们需要在 "for "语句后面加一个冒号":"!" + example: "for i in range 1 to 10:" + demo_code: "for i in range 1 to 11:\n print i\nprint '无论你是否准备好了,我都会来的!'" + - name: "if-else条件语句 和冒号 :" + explanation: "我们需要对所有的 "if-else"语句做同样的处理" + example: "if color is 绿色:'" + demo_code: "clor is 绿色\nif color is 绿色:\n print '颜色是绿色'\nelse:\n print '颜色不是绿色'" + - name: "(选学) if – elif – else 条件语句" + explanation: "我们将向你展示一个允许你使用的新命令:elif即else if意思是否则如果。条件语句if – elif – else的意思是如果..(那么)... 否则如果..(那么)...否则...,我们要按照顺序判断条件语句的真假,第一步,判断 if(如果)条件是否为真,如果为真就执行if后面的(那么)语句,如果为假就进入第二步,也就是判断elif(否则如果)条件,如果这个条件为真就执行elif后面的(那么)语句, 如果为假就进入第三步也就是执行else语句。 + example: "elif a is 5:" + demo_code: "a is 2\nif a is 1:\n print 'a 是 1'\nelif a is 2:\n print 'a 是2'\nelse:\n print 'a 不是 1 或者2'" +10: + start_code: "for i in range 1 to 3:\n for j in range 1 to 5:\n print '我们在第i轮,我们每次都要数到j" + intro_text: "从现在开始,我们可以更频繁地重复一个循环。在这个例子中,我们数到5连做3遍。所以我们一共做了3轮,每次都数到5。" + commands: + - name: "for语句和其他语句" + explanation: "这是一个使用for语句的例子。" + demo_code: "for i in range 1 to 3:\n for j in range 1 to 5:\n print '我们在第i轮,我们每次都要数到j '" + - name: "if under eachother" + explanation: "我们可以用if语句做同样的事情。" + demo_code: "color is 蓝色\ncolor2 is 黄色\nif color is 蓝色:\n if color2 is 黄色:\n print '我们一起践行绿色生活!'" +11: + start_code: "age is input('你现在几岁了?')\nprint('所以你的年龄曾经是:')\nfor i in range(0,age):\n print(i)" + intro_text: "我们要开始用小括号还要改变ask! 我们把ask替换为input! 我们现在使用print、ask和for的时候要加上小括号。" + commands: + - name: "Print" + explanation: "我们现在要把打印的内容用小括号括起来!" + example: "例如: print('你好世界')" + demo_code: "print('你好世界')" + - name: "用input代替ask!" + explanation: "我们现在不会再用ask 了,我们现在要用 input 代替,同时我们要把input 的内容用小括号括起来。" + example: "例如: answer is input('你的名字是什么?')" + demo_code: "answer = input('你的名字是什么')\nprint('所以你的名字是 ' answer)" + - name: "在For循环语句中使用小括号" + explanation: "我们现在要把for循环语句中的数字用小括号括起来。for i in range (0,10):" + example: "例如:for i in range(0,10):" + demo_code: "for i in range(0,10):\n print(i)\nprint('无论你是否准备好了,我都会来的')" + 12: + start_code: "fruit is ['苹果', '香蕉', '樱桃']\nprint(水果)" + intro_text: "我们现在要把列表的内容用中括号括起来!我们现在也需要把列表里面的每一项都用单引号(')标示清楚。” + commands: + - name: "在列表中使用中括号" + explanation: " 我们现在要把列表的内容用中括号括起来!我们现在也需要把列表里面的每一项都用单引号(')标示清楚。" + example: "例如: fruit is ['苹果', '香蕉', '樱桃']" + demo_code: "fruit is ['苹果', '香蕉', '樱桃']\nprint(fruit)" + - name: "Get an item from a list从一个列表中检索元素" + explanation: "我们用[数字]从一个列表中检索元素,因此 fruit[1] 的意思就是从列表fruit中检索第一个元素!" + example: "例如:firstfruit is fruit[1]" + demo_code: "fruit is ['香蕉', '苹果', '樱桃']\nfirstfruit is fruit[1]\nprint(firstfruit)" + - name: "从一个列表中随机选择元素" + explanation: "我们用[random] 从一个列表中随机选择元素,因此fruit[random]的意思是从列表fruit中随机选择一个水果!" + example: "例如:randomfruit is fruit[random]" + demo_code: "fruit is ['香蕉', '苹果', '樱桃']\nrandomfruit is fruit[random]\nprint(randomfruit)" +13: + start_code: "print('5+3等于几?')\nanswer = 5+3\nprint('现在的答案是:')\nprint(answer)\nif answer == 8:\n print('正确!')\nelse:\n print('呃,错了!')" +intro_text: "现在我们要把 "is "改为"="和"=="。 当我们想给变量赋值时就用等号"=",例如给变量名为answer的变量赋值8,就用"answer = 8"。当我们想判断两个事物是否相等时就用双等于号"=="。" + commands: + - name: "比较" + explanation: "我们用双等于号"=="比较。" + example: "例如: 5+3 == 8" + demo_code: "if 5+3 == 8:\n print('5+3 确实等于8')\nelse:\n print('这将不会被打印出来,因为5+3不等于8!')" + - name: "赋值" + explanation: "如果我们想说变量名为answer的变量等于8,就用"answer = 8".” + example: "例如: answer = 8" + demo_code: "print('5+3等于几?)\nanswer = 5+3\nprint('现在的答案是:')\nprint(answer)" + - name: "比较和赋值" + explanation: "如果我们想比较两个数值,我们就用双等于号==。如果我们想给一个变量赋值,我们就用等于号=。" + example: "例如: 5+3 == 8, answer = 8" + demo_code: "print('5+3等于几?')\nanswer = 5+3\nprint('现在的答案是:')\nprint(answer)\nif answer == 8:\n print('正确!')\nelse:\n print('不对,错了!')" + + diff --git a/main/contact-zh.md b/main/contact-zh.md new file mode 100644 index 00000000000..61b2f0a65f1 --- /dev/null +++ b/main/contact-zh.md @@ -0,0 +1,57 @@ +page_title:联系我们 — Hedy海迪 +--- +# 订阅Hedy海迪通讯报 + + + + +
+
+
+ +
* indicates required
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+

View previous campaigns.

+ +
+
+ + + +# 你喜欢Hedy海迪吗? + +我们很高兴听取您的意见和建议! + +[请点击这里给我们发送信息](mailto:hedy@felienne.com "About Hedy") + +# 你发现了一个错误?? + +[请到GitHub告知我们](https://github.com/Felienne/hedy/issues/new)page_title: Contact — Hedy + diff --git a/main/press-zh.md b/main/press-zh.md new file mode 100644 index 00000000000..476342e0ee3 --- /dev/null +++ b/main/press-zh.md @@ -0,0 +1,17 @@ +page_title: 有关新闻 — Hedy(海迪) +--- +# 有关Hedy 的新闻 +自从我们在2020年初发布Hedy(海迪)以来,已经有多个媒体发布了相关新闻! 列表如下: +* [2021年4月,用Hedy教任何人如何编码,Opensource.com](https://opensource.com/article/21/4/hedy-teach-code) +* [2021年4月,平衡权力和理解能力-与Felienne Hermans对话,IO Magazine](https://ict-research.nl/wordpress/wp-content/uploads/2021/04/IO-magazine-NR1-2021_web.pdf) +* [2021年2月,Hedy--向 "不那么小的孩子 "教授编程的最佳语言,Ingeniería De Software (西班牙语)](https://ingenieriadesoftware.es/hedy-mejor-lenguaje-ensenar-programacion-ninos/) +* [2021年2月],Hello World Magazine,(images/Hello_World_15_Hedy.pdf) +* [2021年1月,Hedy - 循序渐进地学习一种编程语言,Discoro](https://discoro.wordpress.com/2021/01/09/hedy-gradually-learning-a-programming-language/) +* [2021年1月,Felienne Hermans博士由于开发Hedy编程语言而获得2021年荷兰信息通信技术研究奖](https://www.nwo.nl/en/news/felienne-hermans-receives-dutch-prize-ict-research-2021) +* [2020年8月,科学家开发出一种新的编程语言,用于编程教学(和Python),SlashDot](https://news.slashdot.org/story/20/08/17/024248/scientist-proposes-a-new-programming-language-for-teaching-coding-and-python) +* [2020年8月,教孩子读写编程的新语言:层次分明,循序渐进,GenBeta (西班牙语)](https://www.genbeta.com/desarrollo/nuevo-lenguaje-para-ensenar-programacion-a-ninos-como-se-ensena-a-leer-escribir-forma-gradual-niveles) +* [2020年8月,科学家开发新的编程语言教孩子学习计算机编程,循序渐进的学习Python,Developpez (法语)](https://programmation.developpez.com/actu/308095/Une-scientifique-propose-un-nouveau-langage-de-programmation-pour-enseigner-aux-enfants-le-codage-informatique-au-travers-d-une-approche-graduelle-implementee-en-Python-sur-13-paliers/) +* [2020年10月,与Hedy一起一步一步学习编程,Vives (荷兰语)](images/artikel_vives.pdf) "Met Hedy stap voor stap leren programmeren" +* [2020年4月,如果你想在家工作时分散孩子们的注意力?那就让他们编程吧!莱顿大学,](https://www.universiteitleiden.nl/en/news/2020/03/looking-to-distract-the-kids-while-you-work-from-home-get-them-programming) +* [2020年4月,为孩子们编写的计算机编程语言,Mare (荷兰语)](https://www.mareonline.nl/cultuur/computercode-voor-de-kids/) +* [2020年4月,用新语言Hedy逐步学习Python编程,AG Connect (荷兰语)](https://www.agconnect.nl/artikel/stapsgewijs-python-leren-programmeren-met-nieuwe-taal-hedy) diff --git a/main/readme-zh.md b/main/readme-zh.md new file mode 100644 index 00000000000..0fb13034daf --- /dev/null +++ b/main/readme-zh.md @@ -0,0 +1,168 @@ +# Hedy 海迪 +Hedy(海迪)是一门循序渐进的编程语言,旨在按照由易到难的方式教授编程和Python。第一级目标是打印文本和要求输入。这个级别是为了向学习者介绍编程语言的概念以及运行环境。从这一级目标开始,Hedy(海迪)逐级建立了更复杂的语法和概念。 + +最新版本的Hedy(海迪)可以在以下网站找到,[hedy-beta.herokuapp.com](https://hedy-beta.herokuapp.com). + +设计原则及目标 +============================== + +设计原则 +------------ + + Hedy(海迪)的总体目标是在类似Python的语言中不断增加语法的复杂性, +直到初学者掌握Python。 + 为了达到这个目标,Hedy(海迪)遵循以下设计原则: + +1. **设计原则1. 新概念至少以不同的形式出现三次:** + + 写作教育的研究表明,最好在很长一段时间内以不同形式引入一个概念。此外, +有研究表明,一个单词需要阅读7遍才能被储存在长时记忆中。 + +2. **设计原则2. 首次引入一个新概念时要尽可能使用最简单的形式:** + + 已有研究表明,语法可能会使初学者感到困惑。因此,较低层次目标里面 +尽可能不涉及语法以降低认知负荷。 + +3. **设计原则3. 每次只改变一个概念的一个方面e:** + + Shneiderman提出螺旋式教学法[the spiral approach Shneiderman] +(https://www.sciencedirect.com/science/article/pii/0360131577900082), +他主张在编程教学中采取“小步走”的策略,我们在Hedy(海迪)目标设计过程 +中也采取这种策略。这样我们就可以让学习者集中全部的注意力去学习新的语法元素。 + +4. **设计原则4. 尽可能到最后再学习添加括号和冒号等语法元素:** + + 计算机科学教育领域的已有研究表明,像双等于号(==)和冒号(:)这样的 +运算符对初学者来说特别难。在一项针对荷兰高中生的研究中[study](https://www.felienne.com/archives/5947), +我们发现造成这些困难的原因可能是他们的读码方式。 + 有关自然语言习得的研究也表明,小括号和冒号是学习者通常最后学习的标点符号。 +所以如果必须在冒号,小括号和其他元素比如缩进三者之间进行选择,应该选择先学习缩进。 + +5. **设计原则5. 学习一个概念的不同形式尽可能和学习其他概念的不同形式交替进行:** + + 我们知道,间隔重复是一种很好的记忆方式,而学习标点符号需要花费时间, + 所以在语法变化之前,我们要尽可能给学生提供更多的机会来学习概念。 + + +6. **设计原则6. 当(学生)达到每个层次的目标的时候都有可能编写出简单而有意义的程序:** + + 对所有学习者来说,参与有意义的活动是很重要的。我们在教授高中生(甚 +至是大学计算机专业的学生)的经验是,学习语法并不总是被视为一种有用的活 +动。学生既体验到计算机很聪明,例如能够在几秒钟内计算出1,910和5,671乘积, +同时也认识到计算机(有时也很笨)甚至不能独立地添加一个漏掉的冒号。我们 +预计当初始语法简单,让初学者可以应用它们编写一个有趣而有意义的程序时, +他们以后会有更多的动力去学习语法的细节。 + +各个级别的具体目标 +------ + + 目前,Hedy(海迪)编程课由 13 个不同层次的具体目标组成。这些目标 +大致遵循 “Python课堂”系列编程课程("Python in the classroom")(http://pythonindeklas.nl/), +因此这些现有课程可以选择用编程语言Hedy(海迪)代替Python。 + +### 第1级目标:打印和输入 + + 在第1级,学生首先可以用“print”打印文本。为此,除了保留字 [`print`] +和任意文本之外,不需要任何语法元素。此外,学生可以使用保留字 [`ask`]要求 +用户输入。这里我们决定使用[`ask`] 而不是 [`input`] 因为它更符合保留字在 +代码中的作用,与它做什么无关。 + 用户输入可以用 [`echo`]来重复,所以可以创建非常简单的程序,在程序中 +询问用户的名字或最喜欢的动物,实现设计原则6。 + +### 第2级目标:用is来定义变量 + + 在第2级,我们在语法中引入了变量。用 [`is`] 而不是等号来定义变量,以实 +现设计原则3和4。我们还引入了列表操作,增加了创建列表和检索列表,包括用 +[`at`]从列表中检索元素。添加列表,尤其是从一个列表中随机选择元素的选项 +有助于创建更多有趣的程序,比如猜谜游戏、带有随机元素的故事( +这是“Python课堂”系列编程课程)(http://pythonindeklas.nl/)的一个作业), +或者一个可以定制的骰子。 + +### 第3级目标:引号和变量类型 + + 在第3级中引入了第一个语法要素:使用引号来区分字符串和文本。在教授初学 +者的过程中,我们已经看到这种区分在很长一段时间内都会让人感到困惑,因此尽 +早提出这种区分可能有助于人们注意计算机所需变量类型信息。因此,这一层次是 +解释语法和解释编程概念的有趣结合,它强调了它们之间的相互依赖性。 +使用[`is`]的变量语法保持不变,这意味着学习者现在既可以使用 +[`number is 12`] 也可以使用[`name is Hedy`]。 + + +### 第4级目标:使用if 和else条件语句的选择结构 + + 在第4级目标,引入了使用if语句的选择结构,但语法是 "平的",即放在同一 +行,更类似于常规语法:\ +[`if name is print `]\ + 第4级目标也包括Else语句,也是放在同一行,使用保留字 +[`else`]:\ +[`if name is print else print `] + +### 第5级目标:用repeat x times的循环结构 + + 已有研究发现,对于母语为非英语的Python初学者来说保留字 [`for`] 是一个 +令人困惑的重复词,尤其是它听起来像单词‘four’ [@hermans_code_2018]。因此, +遵循设计原则2,对于第一个最简单的形式,我们选择使用 [@stefik_quorum_2017] +语法 [`repeat x times`] 语句。 在这个初始形式中,在这个初始形式中,像if语 +句一样语法是放在同一行:\ +[`repeat 5 times print `] + +### 第6级目标:计算 + +*注:这一级目标原来是第4级目标,现在提升到第6级。可以根据目前学生们测试的经 +验,再移到其他地方。* + 在第4级目标,学生学习变量之间的计算,因此引入了加法、乘法、减法和除法。 +虽然这似乎是一个简单的步骤,但我们的经验告诉我们,使用 [`*`] 来表示乘法, +而不是 $\times$,倍数,以及对于非美国学生来说使用句号而不是逗号作为的小 +数分隔符,这些困难形成了一条陡峭的学习曲线,即要求学生在短时间内掌握大量 +的知识,因此这应该被视为一个单独的学习目标。 + +### 第7级目标:代码块 + + 在第 6 级目标之后,显然需要 "继续前进",因为一个循环语句(以及 if条件语 +句) 只能由一行组成,这限制了用户编写程序的可能性。我们假设这种限制会成为学习 +者的动力,而不是“不得不学习”Python区块链,他们的动力来自于创建更大和更有趣的 +程序的未来期望(设计原则6)。依据原则3,循环语句的语法保持不变,所以新的形式是:\ + +[`repeat 5 times`]\ +[`print `]\ +[`print `]\ + +### 第8级目标:For语法 + + 一旦代码块充分自动化,学习者将看到一个更像Python形式的for循环语句,即: +[`for i in range 0 to 5`]. +这样就可以访问循环变量 [`i`] ,这就可以实现更有趣的程序,比如数到10。依据设 +计原则3,一点一点的改变,为了做到这一点(遵循原则4),括号和冒号被推迟到后面 +更高的目标层次里,但在第7级目标学到的缩进仍然存在。 + +### 第9级目标:学习冒号 + + 为了向完整的Python迈进,学习者需要在循环语句和条件语句中使用冒号来标记一 +个代码块的开始。因为代码块是已知的,我们可以教学习者在每个缩进前使用冒号,并 +让他们进行大量的练习。 + +### 第10级:循环结构的嵌套和选择结构的嵌套 + + 为了让概念之间有足够的交替(设计原则5),我们推迟了小括号的引入,而专注于 +更多的概念补充:代码块的嵌套。我们知道缩进对学生来说是一个很难学习的概念,所以 +需要有自己的目标层次(依据设计原则3)。 + +### 第11级目标:添加小括号 + + 第11级目标在 [`print`], [`range`] 和 [`input`] 中增加了小括号。依据设 +计原则4,这些都在尽可能晚地时候添加的。 + +### 第12级:添加中括号 + + 在第12级目标中,学习者第一次遇到了不同类型的括号,为了访问列表而引入了中括 +号,依据设计原则2,目前都是使用保留字 [`at`]来完成。 + +### 第13级目标:is变成了=和== + + 在最高一级目标里 [`is`] 被替换为用于赋值的等于号 [`=`] 或者用于判断是否相 +等的双等于号 [`==`],这样Hedy (海迪)就成为了 Python 的一个子集。 + +想要帮助改进Hedy吗? +------------ + +请在这里查看我们如何使用您的帮助: [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/main/start-zh.md b/main/start-zh.md new file mode 100644 index 00000000000..78e5be69561 --- /dev/null +++ b/main/start-zh.md @@ -0,0 +1,50 @@ +page_title: 欢迎来到 Hedy (海迪)! +--- +
+
+

Hedy

+

A gradual programming language

+
+
+ Try it +
+
+ +## 什么是循序渐进的编程语言? + +学习编程是一件很难的事情。不是说编程本身很难! 而是你需要记住很多规则,就像你刚刚开始学习英语时一样。同样的,你也需要通过做大量练习题来学习编程。 + +当然你现在可以轻松地读懂这段话。但你还记得你小时候是怎么学习阅读的吗?你那时候学习每个字都需要花费一定的时间! +对于编程来说也是如此,刚刚开始学的时候可能会觉得很难,但以后会变得越来越容易! + +Hedy(海迪)最大的好处就是你可以*循序渐进*的学习编程。这意味着你不必一下子学会所有的规则 +最初的几个级别里面没有太多的规则,所以你一开始就可以轻松的学习编程。 +在每一个级别里面我们都会增加新的规则,增加你所知道的命令数量。命令是计算机的指令。 + + +## 为什么Hedy(海迪)是循序渐进的? + +在这段视频中,Hedy(海迪)的开发者Felienne(翡丽娜)解释了为什么海迪是循序渐进的。 + +
+ +
+ +## 谁适合学习Hedy(海迪)? + +Hedy(海迪)是为所有想学习编程的孩子们设计的! 当然你要有一定的英语基础。 + + +## 我需要有编程经验吗? + +不,这不需要。不过,如果你曾经用Scratch或Python编写过程序,你会觉得有些命令很熟悉 + +## Hedy(海迪)是免费的吗? + +是的!莱顿大学允许我们免费分享它。Hedy(海迪) 也是 "开源 "的,这意味着每个会编程的人都可以帮助我们把 Hedy(海迪) 做得更好。 +你可以在 GitHub上找到它的代码,[GitHub](https://github.com/Felienne/hedy). + +## 我要安装任何软件吗? + +不需要。Hedy(海迪)可以通过浏览器直接运行,浏览器就是您现在查看这个页面所使用的程序。你可以选择使用 Chrome、Edge 或 FireFox等浏览器。Hedy(海迪) 也可以在您的手机或平板电脑上运行。 +