1、01 初识编程初识编程 程序设计基础 2 home back first prev next last 本节目标本节目标 Scratch 编程绘制正方形编程绘制正方形 什么是程序和编程什么是程序和编程 什么是编程语言什么是编程语言 编译执行和解释执行编译执行和解释执行 编译器和解释器编译器和解释器 Bug 和和 Debug Scratch 编程语言编程语言 算法和算法设计算法和算法设计 3 home back first prev next last 第一个程序第一个程序 绘制一个边长为绘制一个边长为100的正方形的正方形 究竟什么是程序?什么是编程?究竟什么是程序?什么是编程? 4 home
2、 back first prev next last 先看个故事先看个故事 一个文化人,他有一个仆人是聋子一个文化人,他有一个仆人是聋子 幸好他们都不是瞎子幸好他们都不是瞎子 仆人也认识几个有限的词汇仆人也认识几个有限的词汇 主人想让仆人做点事,他应该怎么做?主人想让仆人做点事,他应该怎么做? 任务书 1、. 2、 5 home back first prev next last 程序就是计算机的任务书程序就是计算机的任务书 现在你就是主人,计算机就是你忠实的仆人现在你就是主人,计算机就是你忠实的仆人 你要是聪明,就将任务交给仆人去做你要是聪明,就将任务交给仆人去做 否则否则,你就自己干活,让
3、仆人歇着去吧,你就自己干活,让仆人歇着去吧 程序 1、. 2、 6 home back first prev next last 编程和语言编程和语言 编程就是用人和计算机都能够理解的语言为编程就是用人和计算机都能够理解的语言为 计算机编制完成任务所需的任务书计算机编制完成任务所需的任务书 计算机只认识计算机只认识 0 和和 1,所有任务书必须由,所有任务书必须由0 和和 1 组成,计算机才能看懂组成,计算机才能看懂 因此有两个办法编写任务书因此有两个办法编写任务书 直接用直接用 0 和和 1组成的语言编写,这样的语言叫组成的语言编写,这样的语言叫机机 器语言器语言 用人熟悉的语言编写任务书,
4、然后再找一个翻用人熟悉的语言编写任务书,然后再找一个翻 译译 7 home back first prev next last 编程语言有很多种编程语言有很多种 可以用不同的语言编写程序,完成相同的任可以用不同的语言编写程序,完成相同的任 务,但是不同的语言需要不同的翻译务,但是不同的语言需要不同的翻译 C 语言 翻译1 机器语言 010111 JAVA 语言 翻译2 其它语 言 翻译n 8 home back first prev next last 两种完成任务的方式两种完成任务的方式 编译执行编译执行 一次将整个程序翻译成机器语言,然后计算机执行程序,一次将整个程序翻译成机器语言,然后计
5、算机执行程序, 完成任务完成任务 这时的翻译叫“编译器”这时的翻译叫“编译器” 任务书哪怕有一丁点“翻译”看不懂,翻译工作也不能任务书哪怕有一丁点“翻译”看不懂,翻译工作也不能 完成,程序当然也不能执行,这时叫发生了“编译错误”完成,程序当然也不能执行,这时叫发生了“编译错误” 解释执行解释执行 将程序翻译一句,计算机马上执行一句将程序翻译一句,计算机马上执行一句 这时的翻译叫“解释器”这时的翻译叫“解释器” 翻译看懂一句,翻译一句,执行一句。遇到不懂的语句,翻译看懂一句,翻译一句,执行一句。遇到不懂的语句, 就会停止工作就会停止工作 解释执行通常会比编译执行慢一些解释执行通常会比编译执行慢一
6、些 9 home back first prev next last 编程的一般流程编程的一般流程 任务期望任务期望 结果结果 编写编写/修改修改 程序程序 编译编译/解释解释 执行执行 实际执行实际执行 结果结果 编程中有很多问题会导致程序结果与期望不一致,编程中有很多问题会导致程序结果与期望不一致, 这些问题叫这些问题叫 bug(虫子),检查程序消除问题的(虫子),检查程序消除问题的 过程叫过程叫 debug(除虫)(除虫) 或调试或调试 10 home back first prev next last 编程语言编程语言 语言由一定数量的词汇(指令集)和语法组语言由一定数量的词汇(指令集
7、)和语法组 成成 指令告诉计算机要完成什么具体的操作(任务)指令告诉计算机要完成什么具体的操作(任务) 语法决定指令可以通过什么方式和顺序组合在语法决定指令可以通过什么方式和顺序组合在 一起一起 11 home back first prev next last Scratch 编程语言编程语言 3-1 语法语法 将代表指令的图块组合在一起的方式将代表指令的图块组合在一起的方式 凡是允许的,就是正确的凡是允许的,就是正确的 因此,因此, Scratch 编程语言中没有语法错误编程语言中没有语法错误 但是在其它编程语言中,语法错误是初学者最但是在其它编程语言中,语法错误是初学者最 常犯的错误常犯
8、的错误 这也是我们为什么以这也是我们为什么以Scratch 作为第一门编程语作为第一门编程语 言的一个重要原因言的一个重要原因 12 home back first prev next last Scratch 编程语言编程语言 3-2 指令指令 分为动作、外观、声音、画笔、控制、侦测、分为动作、外观、声音、画笔、控制、侦测、 数字和逻辑运算、变量八种类型数字和逻辑运算、变量八种类型 每类指令通过不同颜色的图块表示每类指令通过不同颜色的图块表示 13 home back first prev next last Scratch 编程语言编程语言 3-3 有的指令很简单有的指令很简单 有的指令还
9、有参数,参数告诉有的指令还有参数,参数告诉 指令任务的细节,比如指令任务的细节,比如10代表代表 移动的距离;参数有的需要输移动的距离;参数有的需要输 入,有的需要选择(“面向”入,有的需要选择(“面向” 中用黑三角表示、画笔颜色设中用黑三角表示、画笔颜色设 定中通过不同颜色的小正方形定中通过不同颜色的小正方形 来表示)来表示) 14 home back first prev next last 让代码尽量简洁让代码尽量简洁 同一任务,完成的方法有很多种,程序的写法也同一任务,完成的方法有很多种,程序的写法也 有很多种;有很多种; 学会使用“重复执行”,当主人才会很轻松学会使用“重复执行”,当
10、主人才会很轻松 “重复执行”和其内部指令构成“循环结构”“重复执行”和其内部指令构成“循环结构” 15 home back first prev next last 怎样画正三角形?怎样画正三角形? 2-1 从一个点,沿着某个方向出发,经过从一个点,沿着某个方向出发,经过n次旋次旋 转又回到原来的方向,总共旋转了多少度?转又回到原来的方向,总共旋转了多少度? 360度,对不对?度,对不对? 16 home back first prev next last 怎样画正三角形?怎样画正三角形?2-2 正方形旋转了正方形旋转了4次,每次旋转角度相同,因次,每次旋转角度相同,因 此每次旋转此每次旋转9
11、0度度 正三角形需要旋转几次?每次旋转多少度?正三角形需要旋转几次?每次旋转多少度? 17 home back first prev next last 怎样画正多边形?怎样画正多边形? 因为正多边形,假设有因为正多边形,假设有n个边,每次旋转的个边,每次旋转的 角度都是相同的,所以每次旋转的角度等于角度都是相同的,所以每次旋转的角度等于 360/n ,对不对?现在明白了吗?,对不对?现在明白了吗? 18 home back first prev next last 你能画圆吗?你能画圆吗? 每次前进一小步,旋转一个小角度,走下来就是每次前进一小步,旋转一个小角度,走下来就是 圆。对不对?圆。
12、对不对? 实际画的是边长为实际画的是边长为2的正的正180边形。直与曲是可以边形。直与曲是可以 相互转换的。直线短了,就变为曲。曲线长了,相互转换的。直线短了,就变为曲。曲线长了, 就变为直。都知道地球是圆的,但我们的马路很就变为直。都知道地球是圆的,但我们的马路很 直,对不对?直,对不对? 19 home back first prev next last 算法和算法设计算法和算法设计 把任务分解为计算机可以理解的,能够按照把任务分解为计算机可以理解的,能够按照 一定顺序执行的步骤或操作的过程,叫算法一定顺序执行的步骤或操作的过程,叫算法 设计设计 算法:完成任务所需要的,由计算机可以理算法
13、:完成任务所需要的,由计算机可以理 解的基本操作及规定的执行顺序所构成的完解的基本操作及规定的执行顺序所构成的完 整的解题步骤整的解题步骤 编程的核心是“算法设计”,你认为这种说编程的核心是“算法设计”,你认为这种说 法对吗?法对吗? 20 home back first prev next last 算法的算法的 7 个特征个特征 4-1 1、有穷性、有穷性 算法的有穷性是指算法必须能在执行有限个步算法的有穷性是指算法必须能在执行有限个步 骤之后终止,能够结束,不能够无限执行下去骤之后终止,能够结束,不能够无限执行下去 2、确切性、确切性 算法的每一步骤必须有确切的定义,必须是计算法的每一步
14、骤必须有确切的定义,必须是计 算机可理解执行的操作算机可理解执行的操作 21 home back first prev next last 算法的算法的 7 个特征个特征 4-2 3、输入、输入(Input) 一个算法有一个算法有0个或多个输入,以刻画运算对象的个或多个输入,以刻画运算对象的 初始情况,所谓初始情况,所谓0个输入是指算法本身定出了初个输入是指算法本身定出了初 始条件始条件 4、输出、输出(Output) 一个算法有一个或多个输出,以反映对输入数一个算法有一个或多个输出,以反映对输入数 据加工后的结果。没有输出的算法是毫无意义据加工后的结果。没有输出的算法是毫无意义 的的 22
15、home back first prev next last 算法的算法的 7 个特征个特征 4-3 前面的程序都没有输入,只有输出前面的程序都没有输入,只有输出 下面的程序根据输入的边数画正多边形,既下面的程序根据输入的边数画正多边形,既 有输入也有输出有输入也有输出 23 home back first prev next last 算法的算法的 7 个特征个特征 4-4 5、可行性、可行性(Effectiveness) 算法中即每个步骤都可以在有限时间内完成;算法中即每个步骤都可以在有限时间内完成; (也称之为有效性)(也称之为有效性) 6、 高效性(高效性(High efficienc
16、y) 执行速度快,占用资源少执行速度快,占用资源少 7、 健壮性(健壮性(Robustness) 对不同的输入数据都能够响应正确对不同的输入数据都能够响应正确 24 home back first prev next last 总有些东西是不变的总有些东西是不变的 进入编程的世界,你会发现:进入编程的世界,你会发现: 编程语言有很多很多编程语言有很多很多 可以编程解决的问题有很多很多可以编程解决的问题有很多很多 但,算法设计的思想和技巧是不变的但,算法设计的思想和技巧是不变的 这也是我们这也是我们程序设计基础程序设计基础这门课中最核心这门课中最核心 的内容的内容 25 home back first prev next last 总结总结 Scratch 编程绘制正方形编程绘制正方形 什么是程序和编程什么是程序和编程 什么是编程语言什么是编程语言 编译执行和解释执行编译执行和解释执行 编译器和解释器编译器和解释器 Bug 和和 Debug Scratch 编程语言编程语言 算法和算法设计算法和算法设计