首页 理论教育 程序设计的教学设计的分析介绍

程序设计的教学设计的分析介绍

时间:2022-11-13 理论教育 版权反馈
【摘要】:+n)2.算法的逻辑分析上面的教学设计是仿制,要进一步教会学生掌握程序设计中特有的一些逻辑思维方式。

7.4.5 程序设计的教学设计

程序设计的教学特别要注意渐近性原则,由浅入深,由仿制到独创,要特别鼓励创新

1.框架式教学设计

用例子将解决某类问题的程序讲解之后,归纳其基本结构框架,学生可以很容易地套用此框架解决同类问题。

例如,累加器程序设计框架可分析归纳如下:

累加器变量S=初值

FOR I=1 TO N

给定一个加数

S=S+加数

NEXT I

输出S

用此框架可解决的一类问题示例:

(1) S=1+2+3+…+1000

(2) S=12+22+32+…+1002

(3) S=21+22+…+263

(4) 将键盘输入若干数量加等等

(5) 阶乘程序

(6) S= 1+(1+2)+(1+2+3)+ …+(1+2+3+ … +n)

2.算法的逻辑分析

上面的教学设计是仿制,要进一步教会学生掌握程序设计中特有的一些逻辑思维方式。如累加的算法其核心是计算机程序中常用的递推思维,将若干数的求和变成若干步的两数相加,新和=前一次和+加数,用数列形式,即 An=An-1+加数。

(1)递推算法

许多问题的解决,都要用到递推的算法。这类问题的特点是:①与自然数有关,如斐波拉契数列问题;②有明显的递进步骤。复利计算、增长率问题都可看成是在前一次的基础上增加一个定比。字符方式的图形也是一行一行的进行。

例:用字符“*”号构成n行金字塔图形打印。

img41

算法分析:用具休的N值为例讲解,N=5。但要强调不能就此用5个PRINT语句来实现。而要向一行又一行递推方式引导。实际图形特点是由两类字符构成,左边的空格和“*“。研究空格个数和“*”号个数与行数的关系式如下,

img42

(2)穷尽算法分析

把可能出现问题的情况都考虑到,让计算机逐一处理,这一逻辑方式也是计算机程序设计中常用的方式。例如求不定方程的整数解就常用此法。

例:求X2 +Y2=19992的正整数解。

算法分析:容易估计到0<X<1999,同0<Y<1999 因此正整数解包含于集合

img43

img44

(3)渐近式算法分析

从个例一步一步的算法分析,最后归纳到一般的算法。例如求N 个数A(1),A(2),……,A(N)的最大数M的算法分析,可以如下进行:上式可演变为循环方式:

img45

为发展能力,此问题还可以进一步形象化和延伸。如把这个方法比喻为擂台,还可以有标志法,即记忆下标值,还有直接交换法,即直接用A(1)、A(2)比较、不用变量M。

(4)逐步求精算法分析

逐步求精包含两层意思:一是自项向下,逐渐细化的过程;二是由粗到精、由繁到简的过程。

例:打印出某毕业班学生成绩总分在前三名的成绩。可假定这些成绩单存入A(1)、A(2)、、、、A(N)中了。

第一层:找出前三名的成绩打印出来

第二层:找出第一名的成绩= >M1

找出第二名的成绩单=>M2

找出第三名的成绩单=> M3

打印出M1、M2、M3

第四层:A(1)、A(2)、…A(N)中最大数的下标=>K

M1=A(K):A(K)= -1去除最大数

A(1)、A(2)、…A(N)中最大数的下标=>K

M2=A(K):A(K)= -2

A(1)A(2)、…A(N)中最大数的下标=>K

M3=A(K):A(K)= -3

打印A1、M2、M3

第五层:仅需细化A(1)、A(2)、…A(N)中最大数的下标=>K即可。

第六层:该算法中有三段是重复的程序段即第五层的程序,考虑精简。精简的方式可用子程序或将三个比较归一个循环。

以上几种算法、分析方式往往是结合进行的。

3.算法的评价

包括正确性、可读性、速度、存储空间等评价算法。中学的算法应着重在正确性和可读性。

例:将三个数A、B、C由大到小排序输出。

算法分析如下:

第1种算法,穷举列出六种情况

img46

第2种 算法

img47

因此上面六行将有12个判断,其中有的是不必要的。

img48

这个算法减少了判断,但增加了阅读程序的困难。如果更看重算法的可读性,第1种算法反而是更好的了。

4.一些典型程序算法

(1) 离散函数的极值问题

例:已知矩形的周长是整数L,且长和宽也是整数,求矩形面积最大时的长和宽?可用穷举比较的方法

设边长为a和L-a,则 0<a<l,S=a(L-a)算法:S=0

img49

(2) 分类求和、统计问题。

例:将学生考试成绩分为五类统计每类的人数。分类如后:60分以下;60~69分;70~79分;80~89分;90~100分;

(3) 增长率、复利等问题

(4) 数列值和数列求和问题。

(5) 数、表中数字、字符的查找问题。

(6) 数列的排序问题。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈