第三章  信息的编程加工和智能化加工
  第二课  信息的编程加工
教学目标:
  要求学生通过体验一个完整的程序设计过程,知道利用计算机解决问题的步骤,了解计算机加工信息的内在机制。
  教学内容:
  1.体验程序设计的独特魅力,了解编程加工信息的内在机制
  2.了解并尝试编程的主要过程
  教学重点:
  让学生体验通过编程实现计算机加工信息的过程,知道利用计算机解决问题的步骤和基本思想的步骤和基本方法,从而了解计算机信息加工的内在机制。
  教学难点:
  让学生理解用算法描述实际问题,理解人们的思维在计算机工作中发挥的作用。
  课时数:1课时
  导入新课
  课本 43 页引入的 100 米决赛成绩排序程序一例,目的是 计算机语言只是工具,算法才是程序设计
  课讲解
  例:求 1~100 的和。
  分析:我们可以在纸上按顺序从 1 加到 100 ,也可以采用另外的方法: 100+ 99+1 + 98+2 + …… 49+1 +50 。但是在计算机里我们能否这样计算吗?显然是不能的,因为计算机只认识两个数字 1 二维字符串数组怎么定义 0 ,那我们怎么让计算机认识除 1 0 以外的数字呢?这里就需要引入算法概念。算法是方法简单、运算步骤少、能迅速得出正确结果的算法。
  令S=0n的取值范围:1~100,计算公式S=S+n
  n=1时,S=1 n=2时,S=3 n=3时,S=6 n=4时,S=10……
  一、 算法设计
  1.什么是算法?
  ——为解决一个问题而采取的方法和步骤。
  2 .算法的特征:
  确定性:算法中的每一步必须是明确的,不可以有多义性歧义性
  有效性:算法中的每一步必须是计算机能够有效执行,并且能得到有效结果的。
  有穷性:算法中的步骤应是有限的。
  一个或多个输出:算法中必须有把结果输出给用户的步骤。
  演示:冒泡排序课件
  二、数组的基本概念
  (1)数组
  ——一组相同类型的变量集合,集合中的每个元素都是独立的变量,它们能够通过数组序号被引用。
  mark(1 to 100)表示一个包含100个数组元素的名为mark
  (2)数组元素(数组中的变量,用下标表示) 表示方法:数组名(P1P2……
  P1P2……下标,表示元素在数组中的排列位置。
  (3)数组维数:(由数组元素中下标的个数决定)一个下标表示一维数组
  VB中有一维数组、二维数组、……,最多有60维数组
  (4)下标(表示顺序号)
  ①每个数组有一个唯一的顺序号;
  ②下标不能超过数组声明时的上、下界范围;
  ③下标可以是整型的常量、变量、表达式及一个数元素;
  ④取值范围:下界to 上界,缺省下界,默认为0。下界最小为-32768,上界最大为32767
  练习:判断下列数组的取值范围:A10),B(-3 to 5
  (5)数组声明(先声明后使用)
  声明数组——让系统在内存中分配一个连续的区域,用来存储数组元素。
  声明内容:数组名、类型、维数、数组大小
  一维数组
  ⑴一维数组
  形式:Dim 数组名(下标) [AS类型]
  ①数组声明时的下标必须为常数,不可以是表达式或变量。
  ②一维数组的大小:上界-下界+1
  例:Dim A(12) as integer
  声明A是数组名、整型、一维数组、有13个元素、下标的范围是0~12
  练习:说明Dim A(-3 to 6) as String * 3 包含的内容。
  多维数组
  格式:Dim 数组名(下标1[,下标2……] [AS 类型]
  每一维的大小=上界-下界+1 数组大小=每一维大小的乘积
  例:Dim C(-1 to 5,3) As Long
  声明C是数组名、长整型、二维数组,第一维下标范围为-1~5,第二维下标范围为0~3,占据7×4个长整型变量的空间。
  练习:
  (1)多维数组中下标最少有 维数组,最多有 维数组。
  (2)求该数组Dim A(5,-3 to 3)的数组大小
  (3)试说明Dim A(5,-2 to 3,4to 8) As Single
  三、冒泡排序法
  1.基本思想
  将每个记录 R[i] 看作是重量为 R[i].key 的气泡,根据轻泡不能在重泡之下的原则,从最后一个记录开始往上扫描,两两进行比较,凡扫描到违反上述原则的气泡就进行交换,保证
气泡在上,如此反复进行,直到任何两个气泡都达到轻者在上,重者在下为止。
  例:现把一组数( 5 7 2 14 9 11 8 12 )从小到大排列
  思考问题:
  问题 1 :若让我们对这些数据排序,该怎么办?
  问题 2 :计算机会自己会思考如何排序吗?那如何让计算机也知道怎么使用我们设计好的算法完成任务呢?
  分析:定义数组 a(7) ,用来存放这 8 个数,分别是 a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7) 。将 a(0) a(1) 比较,若 a(0)>a(1) ,将 a(0) a(1) 中的值对调,大数放入 a(1) 中,否则不对调,以此类推。当进行完第一趟冒泡排序后,还不能得到最终的结果,就要继续进行第二趟冒泡排序……,直至得到正确的结果为止。
  第一趟冒泡排序过程:
 
a(0)
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
初始
5
7
2
14
9
11
8
12
1 次后
5
7
2
14
9
11
8
12
2 次后
5
2
7
14
9
11
8
12
3 次后
5
2
7
14
9
11
8
12
4 次后
5
2
7
9
14
11
8
12
5 次后
5
2
7
9
11
14
8
12
6 次后
5
2
7
9
11
8
14
12
7 次后
5
2
7
9
11
8
12
14

  第 2 趟冒泡排序过程的结果:
 
a(0)
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
2
5
7
9
8
11
12
14

  第 3 趟冒泡排序过程的结果:
 
a(0)
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
2
5
7
8
9
11
12
14

 

 
内部排序的类型:
⑴插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序
的子文件中的适当位置,直到全部记录插入完成为止。
⑵选择排序的基本思想:每一趟从待排序的记录中选出关键字最小的记录,顺序存放到已排好的子文件的最后(最前),直到全部记录排序完毕。
⑶交换排序的基本思想:两两比较待排序记录的关键字,发现两个记录次序相反时即进行交换,直到没有反序的记录为止。(类型:冒泡排序和快速排序)
①冒泡排序基本思想:
将每个记录 R[i] 看作是重量为 R[i].key 的气泡,根据轻泡不能在重泡之下的原则,从最后一个记录开始往上扫描,两两进行比较,凡扫描到违反上述原则的气泡就进行交换,保证气泡在上,如此反复进行,直到任何两个气泡都达到轻者在上,重者在下为止。
②快速排序基本思想(分治法):
将原问题分解为若干个规模更小但结构与原问题相似的子问题;递归地解这些子问题,然后将这些组合为原问题的解。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。