在中学阶段,学生学习计算机主要是学习计算机的基础知识和基本技能。在中学开设计算机语言课,目的是培养学生的程序设计能力。通过学生自己进行程序设计,大大提高学生的逻辑思维能力,对学习其他学科起到了良好的促进作用。通过几年的实践,发现要提高学生的程序设计能力,也并不是人们想象中那么高不可攀,只要方法得当,持之以恒,是完全可以取得良好效果的。下面结合自已教学体会,谈谈如何提高学生的程序设计能力。
一、努力培养学生学习兴趣
因为编程序不比操作其他WINDOWS应用程序,它要求有一定的数学基础,并且学生容易厌倦,学不下去。这就要求我们一开始就要注意对他们学习兴趣的培养;上机题目尽量接近实际,如邮局物件邮寄计费、银行存钱利息计算、迷宫、方阵,校运会成绩计算、名次排列等,使学生觉得编写程序可以解决实际问题,慢慢培养起他们学习的兴趣,另外在布置练习时,也要注意题目的难度,不要一下子就布置高难度的题目,使学生望而生畏,失去学习的积极性。
二、重视基础知识的学习
在学习计算机语言时,十分强调基础知识的学习,因为对于计算机语言中的每一个语句,如果不知道它的格式和作用,那么也就谈不上如何应用它。如在讲授打印语句时,对打印语句的一般格式、紧凑格式、按区格式、特殊格式的使用,要求学生要注意区分和懂得如何应用。在学习条件语句时,因当时没有学习AND,OR,NOT,如要实现多个条件的判断,应如何用多个IF语句实现。在教学上,特别注重每一语句的格式和作用的训练,通过讲课、上机练习、阅读程序、测验等手段,使学生发现错误,及时改正错误,从而加深对语句的掌握。在掌握各语句的同时,加强对程序结构知识的领会。因为程序的结构有顺序结构,分支结构,循环结构,弄清程序结构,对于自己编写程序起到一个良好的作用,否则,自己编写出来的程序,思路凌乱,影响程序的可读性和执行效率。所以在教学上,对于每一种程序结构,都要求学生能熟练掌握,并在自己编写程序时灵活运用。在开始编写程序时,要求学生先画出流程图,再写程序,这样有利于学生编写出结构清淅的程序。
三、加强一题多解的训练
在BASIC教学中,许多问题可以用多种方法来解决,在学生用一种方法解决后,要求学生看看能否用其他方法来解决。如讲到如何交换A,B两变量的值时,通常用C=A:A=B:B=C来解决,这是借助第三个变量C来解决的。能否不用第三个变量也能实现A,B两数的交换呢?同学们会觉得很有兴趣,不断开动脑筋,很多同学最终也能想出答案:A=A+B:B=A-B:A=A-B。在学习排序时,常用方法是用选择排序方法,这种方法比较容易掌握。待同学们掌握了该方法后,教师及时提问能否有别的方法,加快排序的速度,引出冒泡排序,对于这两种排序,分别也有两种方法,只是对前一种方法的改进。这样,开阔了学生的编程思路,对提高编程能力是大有裨益的。
四、灵活运用所学知识,做到举一反三
1.运用数组,解决数值问题
数组是一批相同类型的数据的有序集合,它用下标变量表示该元素在数组中位置。给查找、排序、统计带来很大的方便。如题目:读入一组不大于50的自然数,求出各数出现的次数。学生一开始便觉得比较难解决,要用到很多变量,但若用到数组来解决,则非常简单:
5 DIMC(50)
10 READ A
20 IF A=0 THEN 50
30 C(A)=C(A)+1
40 GOTO 10
50 FOR I=1 TO 50
60 PRINT I,C(I)
70 NEXT I
80 END
在这里利用读入的数A作为下标,C(A)=C(A)+1巧妙地实现了各数出现的次数的累加,使学生豁然开朗。
数组的另一应用是在数值运算中,由于计算机字长的限制,当运算结果较大时,计算机将用科学计数法表示结果,这样将使结果产生误差。为了求得有效位数的准确值,在程序设计时采用数组对每一位结果进行保存,并考虑进位,从而产生高精度的结果。这样程序结构简单,思路清楚,学生容易掌握。如怎样用高精度计算求N!的方法。
例1:求n!的值,其中n!表示阶乘,例如5!=5·4.3·2·l
(本题假设N<=50)
10 INPUT "N=";N
20 DIM A(100)
40 A(1)=1
45 FOR I=l TO N
50 FOR J=l T0 100
60 B=A(J)*I十T
70 T=INT(B/10)
80 C=B-T*10
90 A(J)=C
100 NEXT J
110 NEXT I
120 FOR I=100 T0 1 STEP -l
125 IF A(I)=0 AND V=0 THEN 135
127 IF A(I)>0 THENV=l
130 PRINT A(I);
135 NEXT I
140 END
在本程序中,A(100)-A(1)存放结果,A(1)是个位,依次把A(100)-A(1)乘以l至N,每次相乘时,考虑进位,程序中的变量T是指前一位运算时产生的进位,最后把运算结果打印出来,125对前面的0进行处理。
2.熟练掌握用回朔法解不同类型题
当要求出解决某一问题的所有方法时,通常要用到回朔法。如
例2:求出从1到N的N个数中,取出M个数所有排列。
该题是一道数学中的排列组合问题,开始学生感到较难,但仔细分析可知,从1-N中取M个数,我们可以理解成在数组A(1)-A(M)中存放数,每位数只能是1-N,每位从1开始测试,不断加1,若超过N,则回退一步,把前一位加1,直到A(1)-A(M)都满足条件为止。这就是回朔法。
程序如下:
10 INPUT "N,M=";N,M
20 A(1)=1:I=2(置初值)
30 A(I)=A(I)+1(每位从1开始测试,不断加1)
40 IF A(I)<=N THEN 80
60 A(I)=0:I=I-1(当前位清0,再回退一步)
65 IF I=0 THEN 190
70 GOTO 30
80 FOR K=1 TO I-1
100 IF A(K)=A(I)TEHN 30(条件测试,不能和前面位值相同)
120 NEXT K
130 IF I=M THEN 145
140 I=I+1:GOTO 30
145 W=W+1:PRINT W;"──";
150 FOR K=1 TO M
160 PRINT A(K);
170 NEXT K:PRINT
180 GOTO30
190 END
用回朔法在解决皇后题、方阵填数、迷宫问题,都可以受到很好的效果。这方面要求学生多上机,多做题,真正领会回朔法的编程思路,做到举一反三,灵活应用。
3.巧用字符串解递归题
字符串是指由英文字母、数字、空格以及其他有效符号组成的一串字符。因为字符串可以直接相加,从而很方便地把两个字符串连接起来;另外有关处理字符串的函数所非常丰富如LEN,VAL,STR$,MID$,LEFT$,RIGHT$,ASC,CHR$等,所以在程序设计中,很多数值处理的问题都可以转化为用字符串处理来解决,往往能达到非常好的解题效果。下面结合1998年复赛的一道题的解法,谈如何用字符串来解决数值处理的递归问题。
1998年全国青少年信息学(计算机)奥林匹克分区联赛复赛中的第3题是一道比较难的题;用常规的办法,要考虑用到递归,并且处理起来也很复杂。但用字符串来解,就显得简单得多。
题目:
任何一个正整数都可以用若干个2的多少次幂的和来表示
例如:137=27+23+20
同时约定方次用括号来表示,即ab可表示为a(b)
由此可知,137可表示为:
2(7)+2(3)+2(0)
进一步
![]() 读后感 |
·2008年大学毕业生IBM实习总结 ·公司2008年办公室工作计划 ·三国演义读后感1000字 ·朝花夕拾读后感 ·水浒传读后感1500字 ·读骆驼祥子有感 ·迎奥运手抄报 ·制作个人简历九大标准 ·如何使简历醒目 ·将个性品质特征融入你的简历 |
![]() 个人简历 |
| About┊ 收藏本站 ┊ 设置首页.. Copyright @ www.xinfanwen.com Powered by 新范文 All Rights Reserved. |


