《中职《C语言程序设计》教案第11课使用冒泡法对数据进行排序.docx》由会员分享,可在线阅读,更多相关《中职《C语言程序设计》教案第11课使用冒泡法对数据进行排序.docx(5页珍藏版)》请在第壹文秘上搜索。
1、课题使用冒泡法对数据进行排序课时2课时(90min)教学目标知识目标:(1)理解数组的相关概念(2)掌握一维数组、二维数组的定义、引用和初始化方法能力目标:能够使用数组编写程序,解决实际编程问题素质目标:通过对冒泡法的学习,培养探索真知的科学精神教学重难点教学重点:一维数组的定义、引用和初始化,二维数组的定义、引用和初始化,冒泡法对数据排序教学难点:冒泡法对数据排序教学方法问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请同学们根据已学知识,思考如
2、何在程序中实现对学生的成绩进行排序。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】请同学们扫码观看“构造数据类型“视频(详见教材),讨论并回答以下问题:数据类型可分为哪四类,数组中的每一个元素都属于什么数据类型?【学生】思考、举手回答传授新知【教师】讲解一维和二维数组的定义、引用和初始化,冒泡法一、一维数组的定义、引用和初始化)【教师】多媒体现看“一维数组”视频(详见教材),让学生熟悉一维数组的概念及使用方法1.一维数组的定义一维数组是一组用来存放多个相同类型数据的集合,该集合中的成员称为元素,每个数组元素都由数组名和一个下标来唯一确定。同普通
3、变量的使用方法一样,数组在使用之前要先定义。一维数组的定义形式如下.类型说明符数组名常量表达式;其中:(1)类型说明符可以是任意基本数据类型或构造数据类型,如ini、float.Char等.(2)数组名是用户定义的数组标识符,即数组元素共同的名字。(3)方括号中的常量表达式表示数组元素的个数(即数组长度)。例如:intch20;/*定义整型数组ch,有20个元素*/floatb10J;/*定义实型数组b,有10个元素*/定义数组时应注意以下三点。(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。(2)数组名不能与其他变量名相同.(3)在方括号中不能用
4、变量来定义数组元素的个数,但是可以用符号常数或常量表达式来定义。经定义,系统会为数组元素在内存中分配连续的存储单元。例如:inta15;数组名a是数组存储区的首地址,即数组第一元素的地址&a0等价于a.在ViSUalC+中,Y整型变量的存储空间为4个字节,故此数组的空间大小为415=60字节.【课堂讨论】【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论能否对数组名进行赋值和运算。*【学生】讨论、总结、回答【教师】总结学生的回答数组名是一个地址常量,故不能对数组名进行赋值和运算。2.一维数组的引用在定义数组之后,就可以通过引用数组元素的方式使用该数组中的元素。一维数组的引用格式如下。数组
5、名下标提示(1)下标可以是常量或常量表达式,也可以是变量或变量表达式。(2)在引用时,下标值若不是整型,C程序系统会自动取整,如a53相当于a5(3)下标值从0开始。(4)下标不能越界,即引用时的下标值必须小于数组元素的个数。【课堂练习】【教师】出示【例61】,组织学生编写代码某比赛节目中有10个评委,根据评委的评分情况,去掉一最高分和一询氐分,其余分数的平均值就是该选手的得分。请编程计算某选手的得分。【学生】编写程序、运行、对比结果【教师】解析例题10个评委的分数需要10个变量来存储,故可定义包含10个元素的一维数组;定义两个变量分别表示最高分和最低分,然后利用循环语句遍历数组中的元素,计算
6、10个元素的和并找出最高分和最1氐分;用10个元素的和减去最高分和最低分,再除以8,即可得到该选手的得分.(参考程序详见教材)【运行结果】通过键盘输入77787987889899959490/,程序运行结果如图6-1所示(详见教材)【程序说明】在C程序中,只能对数组中的元素进行操作,而不能对数组整体进行操作.因此,对数组元素操作时,常常需要用到循环语句。例如,在本例中,使用for语句遍历数组中的每个元素。【课堂问答】【教师】随机邀请学生回答以下问题请同学们思考,上述代码中将a0的值赋给max和min,能否将a或者其他的赋给max和min?*【学生】聆听、思考、回答【教师】总结学生的回答3.一维
7、数组的初始化数组的初始化就是在定义数组的同时,给数组元素赋初值。数组初始化是在编译阶段进行的,可减少程序的运行时间,提高效率。初始化一维数组的一般形式如下。类型说明符数组名常量表达式=数值1,数值2,数值n;其中,在中的各数据值即为各元素的初值,各值之间用逗号间隔.例如:inta3=0,l,2);初始化后,a、al、a2的值分别为0、1、2在C程序中,数组的初始化有以下四点规定。(1)可以只给前面部分元素赋初值。当中值的个数少于元素个数时,表示只给前面部分元素赋初值,而其余元素自动赋初值为0。例如,inta10=0,l,2,3,4f,就是给前5个元素赋初值,而后5个元素赋初值为Oe(2)只能给
8、元素逐个赋值,而不能给数组整体赋值。例如,给5个元素全部赋值为I,只能写成*mta5=l,l,l,l,l);,而不能写成winta(5=l;(3)如果在定义数组时给全部元素赋值,则在数组定义中可以不给出数组元素的个数,此时数组的个数由值的个数确定.例如,inta5=1,234,5;可写成inta=1,2,3,4,5;”,表明数组中有5个兀(4)大括号中数值的个数须小于等于数组元素的个数。【课堂练习】【教师】出示【例6-2,组织学生编写代码已知某数组中有9个元素,且已经升序排列,现在从终端输入第10个数,要求将它插入数组,并保持有序。【学生】编写程序、运行、对比结果【教师】解析例题这是一类简单的
9、排序问题,即已知序列有序,插入元素后仍要保证其有序,就必须找到正确的插入位置。可以从后向前依次比较,若序列中数字大,则后移,直到找到合适的插入位置。(参考程序详见教材)【运行结果】通过键盘输入13/,程序运行结果如图6-2所示(详见教材)二、二维数组的定义、引用和初始化*【教师】介绍二维数组的定义形式,二维数组的引用,二维数组的初始化1.二维数组的定义二维数组的定义与一维数组相似,其一般形式如下。类型说明符数组名常量表达式In常量表达式2;其中,常量表达式1表示行数,常量表达式2表示列数;数组元素个数为常量表达式IX常量表达式2;下标值从0开始。例如:intx33;其中,*为二维数组名;共有9
10、个数组元素(3*3=9),分别是乂00、x01Hkx02.XnM0、xlkxl112.x20xx2lxx22,元素的数据类型为整型。二维数组在概念上是二维的,但在存储器中是按一维线性排列的。在C程序中,二维数组是按行排列的.例如,二维数组x33,先放第1行,即x00.xOlkx02;然后放第2行,即xl0xxllLx2;最后放第3行,即x20、x2lsX,如图63所示(详见教材).【课堂问答】【教师】随机邀请学生回答以下问题请同学们思考,二维数组x33中,X是什么含义?【学生】聆听、思考、回答【教师】总结学生的回答2 .二维数组的引用同一维数组一样,二维数组也要先定义后引用,其引用格式如下数组
11、名行下标列下标例如,a23表示数组a第3行第4列的元素。3 .二维数组的初始化二维数组的初始化有以下两种方法。(1)将初始化值括在一对大括号内。例如:intx23=l,2,3A5,6);当初始化后,x、xOlxx02sxl0.xllLxl112的值分别为1、2、3、4、5、6.(2)将二维数组看成是一种特殊的一维数组,该数组的每个元素又是一个一维数组。例如,定义一个二维数组X,可以把数组X看成是包含两个元素的一维数组,其元素是x0和xl,而X和xl又是包含3个元素的一维数组,如下图所示。x0:x00x0lx02,IXfIbllfXllll2因此,二维数组的初始化也可以分解成多个一维数组的初始化
12、,即intx23=l,2,3,46);【课堂练习】*【教师】出示【例6-3,组织学生编写代码一个学习小组有5个人,每个人的任务评价表都由自评(20%)、互评(20%)和师评(60%)三部分组成,见表6/所列(详见教材)。求每个学生的成绩和该学习小组的平均成绩。【学生】编写程序、运行、对比结果【教师】解析例题(参考程序详见教材)【运行结果】程序运行结果如图6-5所示(详见教材)【课堂讨论】【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论数组是否可以只初始化数组中的一部分元素?【学生】讨论、总结、回答【教师】总结学生的回答三、任务实施【教师】多媒体现看“使用冒泡法对数据进行排序“视频(详见
13、教材),让学生了解冒泡法的概念、原理、代码设计思路及代码实现】任务分析使用冒泡法对数据进行排序的思路如下:假如有5个数要按从小到大的顺序排序,首先比较前两个数,将较大的数调到后面;然后比较第2个和第3个数,又将较大的数调到后面;再经过4次比较和调换,最大的数已经沉到了最底端,较小的数像气泡一样上浮了,这样就完成了一趟排序。接下来再把剩余的4个数以同样的方式进行排序,如图6-6所示(详见教材)。由此可知,对n个数进行冒泡排序的过程如下。(1)先第I个数与第2个数,若aOal,则交换,否则不变;然后比较第2个数与第3个数;最后依次类推,直至比较第11-1个数和第n个数。第一趟冒泡排序后,最大的数被
14、安置在最后一个元素的位置上。(2)对前n-1个数进行第2趟冒泡排序,使次大的数被安置在第n-1个元素的位置上。(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束2 .参考程序(详见教材)3 .运行结果通过键盘输入9898.59997.5979892.591.59690.5Z,程序运行结果如图6-7所示.【学生】聆听、思考、理解、记录课堂实训【教师】介绍课堂实训要求,以及实训内容,要求学生按照实训要求完成实训任务请同学们按照任务实施中使用冒泡法对数据进行排序的程序设计思路和步骤进行练习。定义一个一维数组,并通过循环等待键盘输入,实现10个数据的输入,并保存到定义好的数组当中。使用双层for循环模拟冒泡排序的实现过程,不满足排序要求,则进行数据的交换。最后循环输出排序后的结果,验证程序的正确性。【学生】按照要求进行操作,完成后总结自己哪些地方做得很好,还有哪些地方需要改进课堂小结作业布置【教师】简要总结本节课的要点本次课介绍了一维数组的概念,用来存放多个相同类型数据的集合。一维数组的定义形式,定义数组时应注意的事项。介绍了一维数组的引用,通过数组名下标I的形式使用该数组中的元素。讲解了一维数组初始化的一般形