资源简介 (共25张PPT)01 初识编程程序设计基础学习目标Scratch 编程绘制正方形0 1什么是程序和编程0 2什么是编程语言0 3编译执行和解释执行0 4编译器和解释器0 5Bug 和 Debug0 6第一个程序题目:绘制一个边长为100的正方形究竟什么是程序?什么是编程?先看个故事一个文化人,他有一个仆人是聋子… …幸好他们都不是瞎子… …仆人也认识几个有限的词汇… …主人想让仆人做点事,他应该怎么做?任务书1、……2、……程序就是计算机的任务书现在你就是主人,计算机就是你忠实的仆人你要是聪明,就将任务交给仆人去做否则…,你就自己干活,让仆人歇着去吧…程序1、……2、……编程就是用人和计算机都能够理解的语言为计算机编制完成任务所需的任务书计算机只认识 0 和 1,所有任务书必须由0 和 1 组成,计算机才能看懂有两个办法编写任务书直接用 0 和 1组成的语言编写,这样的语言叫机器语言用人熟悉的语言编写任务书,然后再找一个翻译编程和语言编程语言有很多种可以用不同的语言编写程序,完成相同的任务,但是不同的语言需要不同的翻译。C/C++语言JAVA语言其他语言翻译1翻译2翻译n机器语言01100101一次将整个程序翻译成机器语言,然后计算机执行程序,完成任务这时的翻译叫“编译器”任务书哪怕有一丁点“翻译”看不懂,翻译工作也不能完成,程序当然也不能执行,这时叫发生了“编译错误”编译执行02解释执行将程序翻译一句,计算机马上执行一句这时的翻译叫“解释器”翻译看懂一句,翻译一句,执行一句。遇到不懂的语句,就会停止工作解释执行通常会比编译执行慢一些两种完成任务的方式编程的一般流程任务期望结果编写/修改程序编译/解释执行实际执行结果编程中有很多问题会导致程序结果与期望不一致,这些问题叫 bug(虫子),检查程序消除问题的过程叫 debug(除虫) 或调试。语法决定指令可以通过什么方式和顺序组合在一起指令告诉计算机要完成什么具体的操作(任务)语言由一定数量的词汇(指令集)和语法组成编程语言将代表指令的图块组合在一起的方式凡是允许的,就是正确的因此, Scratch 编程语言中没有语法错误但是在其它编程语言中,语法错误是初学者最常犯的错误这也是我们为什么以Scratch 作为第一门编程语言的一个重要原因语法Scratch 编程语言 3-1指令Scratch 编程语言 3-2分为动作、外观、声音、事件、控制、侦测、运算、变量、自制积木等九种类型每类指令通过不同颜色的图块表示Scratch 编程语言 3-3有的指令很简单有的需要选择(“面向”中可以选择不同的角色、颜色侦测中通过点击颜色选择)有的指令还有参数,参数告诉指令任务的细节,比如10代表移动的距离;参数有的需要输入让代码尽量简洁同一任务,完成的方法有很多种,程序的写法也有很多种;学会使用“重复执行”,当主人才会很轻松“重复执行”和其内部指令构成“循环结构”怎样画正三角形? 2-1从一个点,沿着某个方向出发,经过n次旋转又回到原来的方向,总共旋转了多少度?怎样画正三角形?2-2正方形旋转了4次,每次旋转角度相同,因此每次旋转90度正三角形需要旋转几次?每次旋转多少度?怎样画正多边形?一个正多边形,假设有n个边,每次旋转的角度都是相同的,所以每次旋转的角度等于 360/n ,现在明白了吗?你能画圆吗?每次前进一小步,旋转一个小角度,走下来就是圆。实际画的是边长为2的正180边形。直与曲是可以相互转换的。直线短了,就变为曲。曲线长了,就变为直。都知道地球是圆的,但我们的马路很直。1把任务分解为计算机可以理解的,能够按照一定顺序执行的步骤或操作的过程,叫算法设计3编程的核心是“算法设计”,你认为这种说法对吗?2算法:完成任务所需要的,由计算机可以理解的基本操作及规定的执行顺序所构成的完整的解题步骤算法和算法设计1、有穷性2、确切性算法的有穷性是指算法必须能在执行有限个步骤之后终止,能够结束,不能够无限执行下去算法的每一步骤必须有确切的定义,必须是计算机可理解执行的操作算法的 7 个特征 4-13、输入(Input)一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件。4、输出(Output)一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。算法的 7 个特征 4-2算法的 7 个特征 4-3前面的程序都没有输入,只有输出这个程序根据输入的边数画正多边形,既有输入也有输出对不同的输入数据都能够响应正确健壮性(Robustness) 7执行速度快,占用资源少 高效性(High efficiency) 6算法中即每个步骤都可以在有限时间内完成;(也称之为有效性) 可行性(Effectiveness)5算法的 7 个特征 4-4但算法设计的思想和技巧是不变的这也是编程学习最核心的内容可以编程解决的问题有很多很多编程语言有很多很多进入编程的世界,你会发现:总有些东西是不变的总结Scratch 编程绘制正方形什么是程序和编程什么是编程语言编译执行和解释执行编译器和解释器Bug 和 DebugScratch 编程语言算法和算法设计(共20张PPT)02 舞台和角色程序设计基础学习目标弹球游戏0 1舞台和角色0 2屏幕和坐标0 3绘制一排小松树0 4程序的初始化0 5弹球游戏 4-1绘制背景中的红色底边绘制挡板角色导入小球角色,调整小球大小为小球角色导入水滴声音 water_drop弹球游戏 4-2为挡板角色添加脚本脚本实现了用鼠标控制挡板左右水平移动的功能原理是不断地将挡板的x坐标设置为鼠标指针的x坐标弹球游戏 4-3为小球角色添加脚本首先,程序将球移到(13,157)这个位置然后不断地重复移动4步这一动作。在此过程中,如果碰到舞台边缘,球就会被反弹回来;如果碰到红色,游戏结束运行;弹球游戏 4-4小球如果碰到挡板,播放声音water_drop(水滴落),改变当前球的运动方向为 (180-方向),实现反弹效果。如果原方向为150度,则新方向为30度,原运动方向和新运动方向以竖直方向0度为对称轴,就像光线反射一样,如下图所示然后,移动5步,在随机旋转一个正负10度之间的一个角度游戏要素动画、音乐和人物控制碰撞检测挑战性和趣味性随机性和运气输赢机会的平衡… …改进思路增加爆炸物(碰到游戏结束)和礼品(碰到加分)增加键盘控制,通过键盘控制实现双人对战(两人一左一右,球碰到自己这边的底线为输),得分显示及历史记录,时间限制,实现多关游戏、难度逐渐增加,等等舞台和角色 7-1编写 Scratch 程序,就像是设计一场演出。所有的演出活动都在舞台上进行舞台的宽度为480,高度为360 单位,并以x-y 的网格线分割。舞台中央的x, y 坐标为0,0。舞台和角色 7-2通过移动鼠标 (光标),并且查阅舞台下方所显示的鼠标x, y 坐标值,可得知舞台任何一点的坐标值舞台有小、大、演示三种模式,通过以下三个按钮切换舞台和角色 7-3舞台有脚本、多个背景和声音背景可通过绘制或导入图片生成脚本可控制背景的切换,实现动画效果声音可通过录制或导入声音文件生成脚本可播放音乐文件,实现背景音乐舞台和角色 7-4在舞台上演出的各种演员,称为角色角色可以在舞台上移动,以及跟其它的角色互动角色可有多个造型,造型决定角色的外观造型可绘制造型也可通过导入图片来生成:譬如可以由硬盘导入图片、或是由某一网站下载图片舞台和角色 7-5脚本可控制角色移动、播放音乐、或是与其它的角色互动角色可有自己的声音,可通过录制或导入声音文件生成脚本可播放音乐文件,实现不同音效舞台和角色 7-6默认角色是小猫角色有位置(x,y)坐标和方向两个属性下图中按钮可控制角色允许的旋转方式箭头代表角色当前方向,鼠标拖动箭头可改变角色方向舞台和角色 7-7编辑角色造型,会出现下图所示对话框点击设定旋转范围,会出现十字线,角色位置实际是十字线交叉点的位置角色旋转的中心也是十字线交叉点绘制一排小松树程序的初始化程序在开始完成主要任务前,往往需要做一些准备工作这些准备工作称为“程序的初始化”任务分解图中总共有 4 棵松树,所以可以通过重复 4 次完成,每次画一棵松树每棵松树由一根线段和一个三角形组成绘制线段绘制松树每棵松树绘制完成后,绘制起点右移,准备绘制下一棵树绘制完松树,绘制代表大地的线段任务分解绘制松树代码见右图绘制“大地”代码见下图总结弹球游戏舞台和角色屏幕和坐标绘制一排小松树程序的初始化(共17张PPT)03 变量和计算程序设计基础学习目标认识和使用变量0 1四则运算0 2简单累加计算0 3求阶乘0 4科学计数法0 5测试0 6怎样让小猫数数字,从1数到100呢?小猫数数在编程中,变量是用来存放某个值的占位符,很像数学里常见的变量如x 和 y在 Scratch 中,变量用拉长的圆形图块来表示,名称由你来指定变量通常分为局部(local) 和 全局(global)变量。在 Scratch中,局部变量只能被一个角色使用全局变量在所有角色的代码中都可以使用变量 5-1变量可以暂时存放数据,如输入、输出、临时(中间)结果等变量可以作为参数传递数据变量 5-2变量有不同的类型,叫变量的数据类型有的变量是数字类型,如1、2.5、-3.4,0等如果一个变量的值只能是真(可用1表示)或假(可用0表示),这种变量就被称为逻辑变量(或布尔变量)有的变量是字符或字符的集合(字符串),如 Hello变量 5-3数字变量可以进行加、减、乘、除四则运算运算结果可以保存到相同或不同的变量中如果现在n为10,执行右面指令后,n是多少?复杂算式可以嵌套实现a = (n + 1) x 5变量 5-4怎样让小猫数数字,从1数到100且仅数偶数呢?怎样让小猫数数字,从1数到100且仅数奇数呢?变量 5-5谁知道1+2+…+100的结果?谁能编程让小猫计算出结果?高斯的难题变量有三种显示方式,鼠标双击可切换第三种,可通过拖动滚动条改变变量值变量在舞台上可以显示或隐藏方法一:勾选变量名前复选框方法二:通过命令变量的显示小练习:编程计算20的阶乘,即20!或1×2×3×4×…×20?答案是:2432902008176640000,你算对了吗?50 的阶乘比较大,自动显示为科学计数法代表3.041409320171337乘10的64次方练习实际问题的答案是不可能事先知道的,那怎样才能知道程序结果对不对呢?检查程序正确性的方法是测试:选取有限的,有代表性的输入,如果程序输出有错误,就代表程序有错误例如,计算阶乘的程序可计算3的阶乘,测试一下结果是否正确,如果结果不等于6,说明程序计算有错误测试 2-1因为测试所有可能的输入是不可能或无意义的,所以测试一般只能证明程序有错,不能证明程序是正确的程序必须进行测试测试 2-2计算1+2+…+100的结果,容易出错的地方:加数和和的初始值设置为多少重复的次数为多少?所谓边界问题,就是怎样开始和怎样结束的问题例如,在路边栽树,每隔3米载一棵,路长30米,共栽几棵树?如果是围绕湖边栽树呢?测试中,边界值一般是必须要测试的边界问题编程计算1至100所有奇数的和编程计算1至100所有偶数的和作业随机数在一个范围内,以相同的机会、机率出现的数字在动画和游戏编程中,随机数的应用非常广泛作业绘制随机位置出现的、随机改变颜色的、同等机率出现的正方形、圆和五角星本作业中需要在三个地方使用随机数:位置、颜色、图形种类随机数应用认识和使用变量四则运算简单累加计算求阶乘科学计数法测试随机数应用总结(共21张PPT)04 比较和逻辑运算程序设计基础学习目标比较运算符0 1逻辑运算符0 2程序的控制结构0 3用户输入两个数,计算并输出两个数中的较大者。比较两个数大小只有两个截然相反取值的情况在数学及电子技术中称为布尔量或逻辑量,布尔量的取值称为布尔值。布尔值只有两种可能的取值,常见表示方式true/false,真/假,成立/不成立,0/1布尔值之间的运算称为逻辑运算日常生活中,存在很多使用布尔量的例子,如判断题,只有对或错布尔量比较运算符有三个,如右图可比较两个数的大小,每个数可以是常量或变量比较结果为布尔量:要么为真,要么为假不仅数字可以比较,字符串也可以比较,按字典顺序,排在前面的小于排在后面的,如A小于B比较运算符逻辑运算符有三个“与”运算两个条件都为真,结果为真,否则结果为假“或”运算两个条件只要有一个为真,结果为真,否则结果为假“非”运算,也叫“取反”条件为真,取反后为假;条件为假,取反后为真;逻辑运算符比较运算和逻辑运算的结果都是布尔量(六边形)布尔量可以作为判断的条件,用在控制结构中,改变程序的执行顺序当条件满足时,执行这组操作,当条件不满足时,执行另外一组操作条件顺序结构顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。程序的控制结构 5-1循环结构循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构 。程序的控制结构 5-2分支结构对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的先后顺序。程序的控制结构 5-3分支结构程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据流程图写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。介绍流程图画法和读法程序的控制结构 5-4顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构在实际编程中常将这三种结构相互结合以实现各种算法,设计出相应程序程序的控制结构 5-5年份如果不能够被4整除,肯定是平年。年份如果能够被4整除,通常就是闰年。但是有个例外,就是如果年份也能够被100整除,就不再是闰年。年份能够被100整除,通常是平年,但也有个例外,就是如果年份还可以被400整除,那么年份就又是闰年了。简单的说就是四年一闰,百年不闰,四百年再闰。编一个程序,判断输入的年份是平年还是闰年。如果你的程序说:2000年是闰年、2004年是闰年,1900年是平年,你的程序才有可能是正确的。平年闰年算法 4-1平年闰年算法 4-2平年闰年算法 4-3平年闰年算法 4-4考虑全面,不要遗漏任何分支分类标准统一,严格,不要有重叠和交叉分类判断时要有一个清晰的思路和方向,比如从4整除、100整除到400整除,或者从400整除、100整除到4整除可用排除法,一类一类去排除。注意事项遗漏分支处理常见问题 3-1重复判断:一个数如果既被4整除又不能被100整除,程序先输出平年,再输出闰年常见问题 3-2类型不对,图块不能结合条件需要布尔量,而余数是和数字,类型不对,应放入比较运算符中整除判断方法不对常见问题 3-3比较运算符逻辑运算符程序的控制结构顺序结构循环结构分支结构程序注释总结(共16张PPT)05 循环分支运用程序设计基础学习目标循环分支综合运用0 1穷举法应用0 2如果两个数都能够被一个数整除,则这个数就是两个数的公约数。如,8 和 4 都可以被2整除,2就是 8 和 4的公约数。公约数中最大的称为最大公约数。如 8 和 4 都可以被2或4整除,2和4都是8 和 4的公约数。其中4最大,4就是8 和 4的最大公约数。最大公约数 5-1编程求204和85的最大公约数,有两种办法可以解决这个问题应用穷举法。穷举法也叫枚举法或列举法。这种方法的主要思想是:在要解决的问题是由有限种情况组成时,把所有的情况一一列举出来,再对其一一进行判断和解决。依次判断从1到85之间的数字,是否能够同时整除204和85答案应该是17最大公约数 5-2最大公约数 5-3应用辗转相减法。辗转相减法的原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。最大公约数 5-4你认为两种算法,哪一种比较好?为什么?最大公约数 5-5如果两个数都可以整除一个数,则这个数就是那两个数的公倍数。如 6和8都可以整除48,48就是6和8的公倍数。公倍数中最小的称为最小公倍数。如 48、24都是6和8的公倍数,24是公倍数中最小的,是6和8的最小公倍数。编程求204和85的最小公倍数。(答案应该是1020)一种办法是穷举法,自己尝试编程序最小公倍数 3-1也可以借助最大公约数求最小公倍数,步骤: 一、利用辗除法或其它方法求得最大公约数; 二、 最小公倍数等于两数之积除以最大公约数。 举例:12和8的最大公约数为4 12×8/4=24 两数的最小公倍数是24最小公倍数 3-2你认为两种算法,哪一种比较好?为什么?最小公倍数 3-3素数,又叫质数,是除了1和它本身之外再不能被其他数整除的自然数。由于找不到一个通项公式来表示所有的素数,所以对于数学家来说,素数一直是一个未解之谜。求素数的方法有很多种,最简单的方法是根据素数的定义来求。对于一个自然数N,用大于1小于N的各个自然数都去除一下N,如果都除不尽,则N为素数,否则N为合数。但是,如果用素数定义的方法来编制计算机程序,它的效率一定是非常低的,其中有许多地方都值得改进。求素数 5-1利用素数定义,编程求50个素数试着改进算法,提高效率求素数 5-2求素数 5-3改进建议:第一,对于一个自然数N,只要能被一个非1非自身的数整除,它就肯定不是素数,所以不必再用其他的数去除。第二,对于N来说,只需用小于N的素数去除就可以了。例如,如果N能被15整除,实际上就能被3和5整除,如果N不能被3和5整除,那么N也决不会被15整除。第三,对于N来说,不必用从2到N一1的所有素数去除,只需用小于等于√N(根号N)的所有素数去除就可以了。求素数 4-3求素数 4-4循环分支综合运用最大公约数最小公倍数求素数穷举法应用总结(共20张PPT)06 循环分支运用程序设计基础学习目标数字进制转换0 1回文数判别0 2十进制数(Decimal Number)十进制数是生活中使用最广的计数制。组成十进制数的符号有0,1,2,3,4,5,6,7,8,9等共十个符号,我们称这些符号为数码。 在十进制中,每一位有0~9共十个数码,所以计数的基数为10。超过9就必须用多位数来表示。十进制数的运算遵循:“逢十进一”。数字进制 10-1二进制数(Binary Number)二进制数仅有两个不同的数码,即0,1;规则为:逢二进一。将8位(bit)二进制数称为一个字节,字节是计算机存储信息的基本数据单位。这就要说到存储器的容量单位:1024B(byte)=1K 1024KB=1M 1024MB=1G数字进制 10-2十六进制是计算机系统中除二进制数之外使用较多的进制二进制数在计算机系统中处理很方便,但当位数较多时,比较难记忆及书写,为了减小位数,通常将二进制数用十六进制表示十六进制有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F等共十六个数码,分别对应于十进制数的0~15; 逢十六进一。 数字进制 10-3进制表示在数制使用时,常将各种数制用简码来表示:如十进制数用D表示或省略;二进制用B来表示;十六进制数用H来表示如:十制数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H。数字进制 10-4十进制 二进制 十六进制0 0000 01 0001 12 0010 23 0011 34 0100 45 0101 56 0110 67 0111 7数字进制 10-5十进制 二进制 十六进制8 1000 89 1001 910 1010 A11 1011 B12 1100 C13 1101 D14 1110 E15 1111 F16 10000 10二进制与十进制的转换二进制数1101等于1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 。转化成十进制要从右到左用二进制的每个数去乘以2的相应次方,从2的0次方开始这种做法称为“按权相加”法。数字进制 10-6数字进制 10-7二进制与十六进制的转换原则:每4位二进制对应1位16进制,高4位不足的前面补039H= 00111001B4FH= 01001111B11111B = 00011111B = 1FH数字进制 10-8十进制与十六进制的转换先除2取余,将十进制转换成二进制,再按照4位二进制对应1位16进制,转换成十六进制数十六进制转换成十进制:226H = 2×162+2×161+6×160 = 550D数字进制 10-91101 如果是二进制数字表示 1*23 + 1*22 + 0*21 + 1*201101 如果是十进制数字表示 1*103 + 1*102 + 0*101 + 1*1001101 如果是十六进制数字表示 1*163 + 1*162 + 0*161 + 1*1601101 如果是W进制数字表示 1*W3 + 1*W2 + 0*W1 + 1*W0每个1代表的含义是不同的。十进制中十位的1代表10,百位的1代表100,每位数字中1代表的大小,叫该位的权重。W进制数字中从右向左数第n位数字的权重是 Wn-1数字进制 10-10接受用户输入的二进制数据,转换为十进制数字输出练习1: 二进制转十进制练习1: 二进制转十进制练习2:十进制转二进制"回文数"是一种数字,其特点是正读倒读一样。如: 98789, 正读是98789,倒读也是98789练习3:判断用户输入的数字是否为回文数一种思路是将用户输入的数字当作字符串。然后将字符串的每个字符从头到尾依次取出来,然后从后到前再拼成一个新的字符串,如果两个字符串相同,则用户输入的数字为回文数。另一种思路是把用户输入的数字当作数字,通过取余数得到各位数字,颠倒顺序后再重新组装为新的数字,如果两个数字相同,则用户输入的数字为回文数。回文数判别办法一回文数判别方法二回文数判别编程实现二进制和十六进制的互相转换编程实现十进制和十六进制的互相转换作业数字进制转换十进制二进制十六进制回文数判别非字符串分解方式总结(共13张PPT)07 多重循环运用程序设计基础学习目标循环嵌套0 1多重循环运用0 2循环和算法效率0 3穷举法运用0 4下面两段代码都使用了循环结构第一段代码说 i = 0 直到 i = 4第二段代码说 j 等于 0 直到 j 等于 4循环嵌套 5-1将第二段代码拖入第一段代码中的循环结构循环结构内又包含循环结构,这叫循环结构的嵌套第二段代码作为一个子任务,加入第一段代码的循环,也要重复执行5次循环嵌套 5-2结果显示顺序如下i = 0j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4i = 1j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4......直到i = 4j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4循环嵌套 5-3代码执行顺序分析如下将变量 i 设为 0重复5 次[任务1 [说 i = 变量 i 的值将变量 i 加 1将变量 j 设为 0]任务2[重复5 次[说 j 等于变量 j 的值将变量 j 加 1]]]循环嵌套 5-4循环嵌套的一个例子:本学期有16个星期(外层循环重复16次)周六休息一日周日休息一日周一至周五上课五日(内层循环重复5次)上午 8:30 上课一次中午 12:00 吃午饭下午 13:30 上课一次本学期共上课多少次?循环嵌套 5-5有一个算式 1 3 x 32 = 39 83 ,其中问号代表的数字看不清了。你能不能编写一个程序,算出三个 代表的看不清的数字是多少?本程序采用穷举法。每个问号代表的数字可能是从0到9的十个数字之一。因此,每个问号有十种可能。根据乘法原理,总共有1000种可能性,通过三重循环来实现,每一种可能试一下就找到答案了。丢失的数字 5-1新建三个变量 i, j, k,代表三个问号,那么三个数字可分别表示为:103+i*10、320+j、39083+k*100。使(103+i*10)*(320+j) = 39083+k*100 的 i ,j , k 就是我们要找到数字丢失的数字 5-2i, j, k 变化顺序i = 0j = 0k = 0,1,2,...9i = 0j = 1k = 0,1,2,...9… …i = 9j = 9k = 0,1,2,...9含义是依次判断103 x 320 = 39083, 39183,39283...39983103 x 321 = 39083, 39183,39283...39983… …193 x 329 = 39083, 39183,39283...39983丢失的数字 5-3答案是:123 x 321 = 39483丢失的数字 5-4修改程序,判断 1 7 x 32 = 39 83 有没有解?看看你的程序是否还能正确运行?修改程序,判断 x 1 = 6? 有几个解?看看你的程序是否还能正确运行?丢失的数字 5-5循环嵌套多重循环运用循环和算法效率穷举法运用总结(共20张PPT)08 列表简介程序设计基础学习目标列表及其操作0 1常见数据结构0 2手工方式新建和删除导入和导出数据添加删除元素显示和隐藏改变显示大小命令方式见下页列表及其操作 2-1列表及其操作 2-2新建列表 chengji,通过程序清空列表所有元素提示用户输入5个数字,并将数字保存到列表计算输出所有列表元素的和、最大值、最小值和平均值列表应用练习 2-1链表元素输入查找计算列表应用练习 2-2数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构 3-1一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。数据结构 3-2常见数据结构集合数据元素除了同属于一种类型外,别无其它关系线性结构线性结构中元素之间存在一对一关系树形结构树形结构中元素之间存在一对多关系图形结构(网状结构)图形结构中元素之间存在多对多关系数据结构 3-3性质由一组相同数据类型的成员组成同一集合的成员必须互不相同集合中的成员一般是无序的,没有先后次序关系应用举例实现一个生字本,记录不熟悉的英语单词,同一单词只记录一次集合性质除起始元素外,线性表中的其他元素仅有一个直接前驱元素除终端元素外,线性表中的其他元素仅有一个直接后继元素应用举例输入并保存班级英语成绩,计算平均成绩线性结构 6-1分类1、数组 (Array)在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组数组大小一般是“静态”的,插入、删除操作比较困难线性结构 6-2分类2、栈 (Stack)是只能在某一端插入和删除的特殊线性表它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)插入删除只能从一端进行线性结构 6-3线性结构 6-4分类3、队列 (Queue)一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列先进先出插入从一端进行,删除从另一端进行线性结构 6-5分类链表 (Linked List)是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。插入、删除可从任意位置进行线性结构 6-6树 (Tree)包含n(n>0)个结点的有穷集合K,且在K中:(1)有且仅有一个结点 k0,没有前驱,称K0为树的根结点。简称为根(root) (2)除k0外,k中的每个结点,有且仅有一个前驱 (3)K中各结点,可以有m个后继(m>=0)C 盘下所有文件夹和文件构成一棵树树形结构图 (Graph)图是由结点的有穷集合V和边的集合E组成其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系简单图 :不含多重边和自环的图应用举例:多个城市,道路相连,最短路径选择图(网状结构)不同的数据结构其操作集不同,但下列操作必不可缺: 1. 结构的生成 2. 结构的销毁 3. 在结构中查找满足规定条件的数据元素4. 在结构中插入新的数据元素 5. 删除结构中已经存在的数据元素 6. 遍历数据结构的操作列表及其操作常见数据结构总结(共12张PPT)09 查找程序设计基础顺序查找二分查找学习目标查找是计算机中常见的操作之一例如,查找文件,查找资料,字典中查找单词等查找练习在一组数字中查找指定数字,找到则报告其位置。如果找不到,也要给出恰当提示,说明查找的数字不存在。问题怎样存储待查找的数字?查找创建一个列表,依次加入数字 23 、32 、56 、12 、17、28六个数字,编写程序在这组数字中查找用户输入的数字。例如:用户输入查找12,返回其在列表中的位置。用户输入查找查找19,要能够显示不存在该数字练习第一个数字开始,依次查找第二个、第三个数字,直到找到要找的数字或查完所有数字为止。顺序遍历查找,不要求数字是有顺序的,但是查找效率比较低。一组数字中数字越多,所用的时间可能越长。顺序查找 3-1顺序查找 3-2代码二:增加“存在”变量作为查找目标是否存在的标志开始假设不存在,将“存在”变量值设置为0如果找到变量,将“存在”变量值设置为1最后如果“存在”变量值仍为0,说明查找目标在列表中不存在顺序查找 3-3二分查找又称折半查找,它是一种效率较高的查找方法,应用二分查找要求:1.必须采用顺序存储结构2.必须按关键字大小有序排列 优点是比较次数少,查找速度快,平均性能好缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表 二分查找 4-1算法思想首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功二分查找 4-2first 存放子表的起始元素位置last 存放子表的结束元素位置middle 存放子表的中间元素位置Target 存放待查找的目标二分查找 4-3二分查找 4-4遍历查找不要求数据有序效率低二分查找要求数据有序效率高上网查询:还有哪些查找算法?各适用于什么情况?总结 展开更多...... 收起↑ 资源列表 01_初识编程.ppt 02_舞台和角色.ppt 03_变量和计算.ppt 04_比较和逻辑.ppt 05_循环分支运用.ppt 06_循环分支运用.ppt 07_多重循环运用.ppt 08_列表简介.ppt 09_查找.ppt