第一篇:C程序设计算法总结举例(大全)
C程序设计算法总结举例
1.顺序结构举例
(该类题目,通常输入一些数据,再通过使用一个或几个数学公式求解,通过赋值表达式得到结果,并输出。包括求三角形面积,相关物体体积,求温度,解二元一次方程组、一元二次方程等)
1-1.求温度转换 华氏-摄氏温度转换公式:c=5/9(f-32)#include
k = s = a;for(i = 1;i <= nyy1;j >= 0;j--){ printf(“%c”, 'A' + j);} printf(“n”);
} }
#include
} }
4.数组
包括:排序、查找、字符串长度、字符串大小写转换、比较字符串大小、字符串连接、字符串拷贝、数列前n项、统计字符串中单词个数、求数组元素最值、二维数组输入、输出、转置、数字(字符串)逆序输出。数组中统计奇数偶数,二维数组对角线元素,行列元素的相关处理。
4-1排序(选择法、冒泡法)冒泡法
(1)冒泡法排序算法
将一个数字序列存放在数组中,相邻的两个数进行比较,若前一个数大则交换,...一趟下来最大数必然在最后,然后对于剩下元素反复执行上面操作 #include
编写自定义函数,实现冒泡法排序
#include
{
x = a[j];
a[j] = a[j + 1];
a[j + 1] = x;} }(3)选择排序算法
将一个数字序列存放在数组中,假设“剩下的序列中第一个元素”为最小值,将其与数组中其它元素进行比较,找到最小值,将该最小值与“剩下的序列中第一个元素”进行交换,最小元素放到剩下序列的第一个位置,反复做这个操作……
#include
#include
void xuanze(int a[]){ int i, j, x, m;for(i = 0;i <= 8;i++){ m = i;for(j = i + 1;j <= 9;j++)if(a[m] > a[j])m = j;x = a[m];a[m] = a[i];a[i] = x;} } 4-2查找
顺序查找:数字序列放到数组中,不要求数组元素本身有序,查找x是否在数列中: ……
for(i=0;i<=9;i++)if(x==a[i])printf(“zhaodaole %d ,%d”,x,i+1);
折半查找:1.要求数列必须有序的;2.比较数列中间元素;3.缩小范围,重复2…… 4-3数列前n项
若已知 f1=1,f2=2,f3=3, fn=fn-1+3fn-2+fn-3 n>=4,用数组的方法求数列前n项(n由键盘输入)及前n项和。
#include
//输出所有列下标大于行下标的数组元素 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++)if(j > i){ printf(“n行标: %d,列标: %d,元素: %d”, i, j, a[i][j]);} //数组f里元素均初始化为0 for(i = 0;i <= 2;i++)f[i] = 0;//求每列元素的和,并将其放入数组f中 for(i = 0;i <= 2;i++){ for(j = 0;j <= 2;j++)f[i] = f[i] + a[j][i];printf(“列下标为 %d的元素和为: %3d”, i, f[i]);}
//求所有能被2,3,5整除的数组元素的平方和 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ if(a[i][j] %(2 *3 * 5)== 0)s1 = s1 + a[i][j] *a[i][j];} printf(“能被2,3,5整除的数组元素的平方和:%5dn”, s1);
//将二维数组赋值给一维数组,并输出 n = 0;for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ b[n] = a[i][j];printf(“%5d”, b[n]);n++;} } 4-8 字符串应用举例
#include
//编程序实现strlen函数的功能: i = 0;while(a[i]!= ' '){ i++;} printf(“%s”, “输入的字符串长度是:n”);printf(“%dn”, i);
//编程序实现strcat函数的功能: i = j = 0;puts(“请输入字符串b:n”);gets(b);while(a[i]!= ' '){ i++;} while(b[j]!= ' '){ a[i] = b[j];i++;j++;} a[i] = ' ';puts(“连接后字符串为:n”);puts(a);
//编程序实现strcmp函数功能: i = 0;k = 0;puts(“n请重新输入两个字符串:n”);gets(a);gets(b);while(a[i]!= ' ' || b[i]!= ' '){ if(a[i] > b[i]){ k = 1;break;} if(a[i] < b[i]){ k =32;} i++;} }
5-5编程序实现函数strcat(str1,str2)函数的功能:该函数实现将两个字符串(分别存放于str1,str2中)连接。
#include
main(){ char a[100], b[30];puts(“请输入字符串a,b:n”);gets(a);gets(b);scat(a, b);//函数名做为参数 puts(“连接后字符串为:n”);puts(a);} 5-6编写函数实现:输入一维数组求数组中元素的最大值,输入a,b,c,d求最小值 #include
int f2(int a, int b){ int c;if(a < b)c = a;else c = b;return c;}
main(){ int a, b, c, d, s[10], i, max, min;scanf(“%d,%d,%d,%d”, &a, &b, &c, &d);for(i = 0;i <= 9;i++)scanf(“%d”, &s[i]);//以上给a,b,c,d和数组s赋值
max = f1(f1(f1(a, b), c), d);min = s[0];//假设min是数组中任意元素 for(i = 0;i <= 9;i++)min = f2(min, s[i]);printf(“max is:%3d, min is :%3dn”, max, min);}
5-7函数要求掌握的算法实现:
排序、查找、字符串求长度,连接,复制,比较大小,输入,输出,以及前面讲过的各种算法通过函数调用实现,求素数,求闰年,最大公约、最小公倍数等等。
5-8变量的作用域和生存期
变量的作用域分为:局部变量和全局变量函数。局部变量作用范围是定义它的函数内,全局变量作用范围是从定义点开始到程序结束。
#include
int t = 6;//t全局变量 main(){ int x, y;//y,x局部变量 x = 5;y = a(x);printf(“%2d,%2d,%2d”, s, y, t);}
变量的生存期:静态变量和动态变量
#include
int i = 1;//i动态变量,每次调用分配内存空间,每次都重新赋初始值1 c++;i++;return c + i + x;} main(){ int x, y = 0;for(x = 1;x <= 10;x++)y += a(x);printf(“%2d”, y);}
y=c+i+x y=(1+2+1)+(2+2+2)+(3+2+3)+(4+2+4)+(5+2+5).....+(10+2+10)=130
6编译预处理命令
#include
....printf(“%5d”,n*n);其结果是?
答案 23 理由:纯粹置换!n*n---5+3*5+3
第二篇:算法与程序设计
《算法与程序设计》教学中实施研究性学习探步
作者:赵濮民
摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补
《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。
研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。
一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:
1、搜索算法的算法思想、分类;
2、深度优先搜索的算法思想与算法结构;
3、广度优先搜索的算法思想与算法结构;
4、深度优先搜索的优先策略;
5、广度优先搜索的优化策略;
6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。
二、通过研究性学习,同学之间取长补短,要求全
每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。
三、通过研究性学习,总结算法的应用规律,要求变
研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。
四、通过研究性学习,提高分析、归纳和综合能力,要求新
对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。
通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题:
1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。
2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。
3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。
职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
第三篇:算法与程序设计思想
《算法与程序设计思想》教学案例1
一、教学目标 1.知识与技能:
求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:
利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。
培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。
3.情感、态度与价值观:
让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。
创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思维、潜心研究、快乐创造。
二、教学重点、难点 教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。
教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。
三、教学对象分析
高一年级的学生。他们已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图,学生已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。
四、教学策略及教法设计
利用现实生活中比较一组学生身高这一事件,引导学生去发现求最大值的一种方法。如何设计求一批数据中最大值的算法?我认为让学生自己去经历整个探究过程,要比直接把现成的算法告诉学生有意义得多。它能迅速、有效地帮助学生建立程序设计思想。在完成这个任务的过程中,教师的循循善诱起到了非常关键的作用。找出一批数据中的最大者,从表面上来看是一个很简单的问题。在比较数的过程中,人因为动用了眼睛,比较大小的思维过程一闪而过,所以能很快求出一批数据中的最大值。而计算机与人不同,它对这些数据看不见、摸不着,怎么来完成这一任务呢?其实,计算机解决问题的关键,就是要把人解决问题的思维过程用计算机语言描述出来,即为大脑思维的每一步“拍照”。这是计算机程序设计教学的一个重点,也是一个难点,需要教师在教学过程中逐步引导和训练学生,使学生逐渐学会分析问题,寻求解决问题的方法和步骤。本案例运用生活中“打擂台”的实例引导学生分析求最大值的方法,通过对这一现象的分析,逐步引出求最大值的算法设计思想。1 孙朝霞.从生活中探究和建立程序设计思想——《算法与程序设计思想》教学案例.中小学信息技术教育,2005(12)
五、教学过程 1.情境创设 师(提问): 今天在第一排就座的有10 多位同学,谁是我们第一排在座各位中的最高者呢?
师(引导): 大家思考,通常这个任务我们是怎样去完成的? 教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。
师生: 打擂的过程可以描述为:
(1)确定一个擂主(讨论第一个擂主是如何确定的);(2)挑战者上台;
(3)擂主和挑战者比较;
(4)挑战者胜的话,挑战者做擂主,否则擂主卫冕;(5)重复执行(2)~(4)步骤,直到最后一个挑战者。
师: 在打擂的过程中,我们看到(2)~(4)步骤是要重复做的,所以我们该怎么办呢?
生: 需要循环结构来实现。
师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。
根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图1)。
2.求一般情况下的最大值的算法 师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为:
(1)从第一个数据开始看起;
(2)把第一个数据的值在变量中记下来;(3)再取一个数据;
(4)比较这个数据与变量中记下的数据的值;
(5)如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值;
(6)重复执行(2)~(4),继续比较,直到最后一个数据。也就是说,计算机的变量始终记着当前比较过数据中的最大者(我们不妨用X 表示它),当取完最后一个数据时,X 中留下的也就是最大值了。
求最大值的算法设计思想用图2 表示。
注意:
a.再次让学生讨论变量的意义,弄清赋值语句的意义。
b.一些物理量用变量表达的意义。如X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量X。
c.为了控制循环结束,必须加入一个控制循环次数的计数器I,当I 达到一定的次数后,循环工作结束。
3. 回顾小结
师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。
第四篇:算法与程序设计教案
第一课 初识算法与程序设计
一、教学目标
1、知识与技能
(1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力;
(2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。
2、情感、态度、价值观
学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。
二、教学重点难点
重点:算法概念的理解
难点:如何科学合理的选择和设计算法。
三、教学策略与手段
以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主探究学习的能力。
四、教学过程(1课时)
(一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。【问题一】天下真的有“不要钱的午餐”吗?
某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费”。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢?
学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能吃上免费午餐。
【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学生:学生讨论回答。〖展示步骤〗
①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。
【Flash动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。
(二)【课件展示】算法的概念:
1、广义的算法是指完成某项工作的方法和步骤,在我们日常生活中也经常使用算法,只是没意识到罢了。如:洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等。
2、在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。
【小试身手】按照这样的理解,我们可以设计出很多由具体数学问题解决一类数学问题的算
法.下面看一个例子:(要求学生自己考虑并写出具体的算法)
鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有17个头,48只脚,鸡和兔各有多少只?试设计一个求解的算法。
【设计意图】求解鸡兔的问题简单直观,却包含着深刻的算法思想。应用解二元一次方程组的方法来求解鸡兔同笼问题。
第一步:设有小鸡x只,小兔y只,则有
第二步:将方程组中的第一个方程两边乘-2加到第二个方程中去,得到,得到y=7; 第三步:将y=7代入(1)得x=10。
【变一变】在笼中有鸡、兔若干,已知有头a个,有脚b只,求各有多少只鸡和兔。
【师生合作】老师带领学生共同书写规范的算法的具体步骤,最后引出算法使用的范围:能解决一类问题,并且能重复使用。
(三)【课件展示】算法的基本特征
①有穷性 ②确定性 ③不唯一性 ④有效性(逻辑性)
1、有穷性:一个算法应该包含有限个操作步骤,而不能是无限的。
2、确定性:算法的每个步骤都应该是明确无误的,不能含义模糊,使执行者无所适从。
3、有零个或者多个输入,有一个或者多个输出
4、有效性:算法中的每一步都应该能有效地执行,执行算法最后应该能得到确定的结果。
【教学总结】
1、本节课通过一些生活中看似简单问题的解决方法和步骤,使学生比较轻松的接受了生活算法的概念,进一步理解了计算机算法的概念。
2、课堂教学的效益取决于学生对所学知识理解了多少,能否用所学知识来解决一些实际问题。本节课的设计突出讲与练的结合,培养学生的动手能力,并且引出学生对下一节课的内容的思考,比较顺利的完成了本节课的教学任务。
3、如何优化算法,找到算法的形式和用算法解决问题的效益的最佳结合点,还尚需探讨。
第五篇:浅谈《算法与程序设计》教学策略
浅谈《算法与程序设计》教学策略
安徽宿州泗县一中 许大伟
摘要:高中信息技术课程改革到今年已走过了四年时间,在选修模块教学中有《算法与程序设计》和《多媒体技术应用》可供选择。选修《算法与程序设计》模块教学的学校不多,我们学校就是其中之一。原因是算法的学习比较抽象、枯燥,很难调动学生学习兴趣。本文就结合自己四年的教学实践经验同大家共同探究一下选修模块《算法与程序设计》如何进行有效的教学。
关键词:算法 程序设计 教学方法 教学策略 信息技术 高中
一、算法与程序设计概述
信息技术课中,《算法与程序设计》师信息技术课程的一门选修课,是选修的一个分支。在我们学校,采用了广东教育出版社的教材,学习VISUAL BASIC语言。VISUAL BASIC程序设计语言是WINDOWS环境下快速开发应用程序的可视化工具。它简单易学,功能强大,用它开发图形用户接口(GUI,Graphical User Interfaces)的应用程序方便、快捷,可以自动生成32位的脱离开发环境而直接执行的应用程序,且运行速度更快、更安全,适合在多任务环境下运行。VISUAL BASIC语言功能强大,具有良好的简单性、面向对象性,可视化的集成开发环境,面向对象的程序设计思想,交互式的开发环境的特点。
计算机的发展速度很快,学生上机的条件和平台已经发生了巨大的变化,上机方便,程序编译器的功能强,使得我们可以很好的去学习VISUAL BASIC。在平时注意对现有的程序代码进行分析,多读程序,俗话说:读遍唐诗三百首,不会做诗也能吟。学习程序语言也是这样,多读程序自然你就会写一点程序了。教师在教学中就要从以下几个方面入手。
二、努力培养学生学习兴趣
爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。
1.让学生认识到学习程序设计在提高自身素质的突出作用。提高自身素质,可以培养学生的思维品质,培养学生发现问题、思考问题和解决问题的能力;学习程序对其他学科的学习有积极的影响。
2.程序设计教学中要从学生的兴趣入手,利用学生对事物的好奇心,选择学生身边的,学生感兴趣的、有实际意义的程序,激发学生的学习兴趣。比如:第一堂课讲VB界面设计,可设计一个QQ登录界面。
3.一定要分层次教学。现在各个学校的平行班设置恐怕都有文科班和理科班、实验班,教学内容在难度上要有所变化。一个班级布置作业时也要根据学生的能力分层次。
4.深入浅出,消除学生们对程序设计的畏难心理。在教学时,低起点,从一个个简单实例出发,让学生们从自身的实践中感受到这个的确很简单,从而迎合了学生渴望成功的心理特点。前两节课千万不能罗列过多的概念,让学生不知东西,打击学生的学习兴趣。
三、适当调整教材结构,立足具体实例,讲解基本概念
VB程序设计概念比较多,如何让学生较容易按受、理解是我在最初的教学中较为头痛的问题。刚接触程序设计的学生,对程序设计充满了好奇,如果把一开头还用不上的许多的控件、属性放在前面,一下子引入大量抽象的名词、概念,就会让不少学生望而生畏。因此要想让学生领会这些抽象的概念,教学中我选择的方法是先少讲控件。结合数学课本已学的知识,先复习、巩固、提高基本知识。从数据类型,基本运算,讲到三种基本控制结构后,然后再讲基本的控件。这时,控件用于程序设计的例子就可以讲明白了。但是,仍然不要把控件的每一个属性都细讲。突出按问题需要设计界面来选用控件,以一个个鲜活的具体实例为切入点,在每个例子中适时、适量地渗透一些相关的概念和知识,使学生在完成任务的过程中,逐渐地、很自然地去体会控件、对象、事件的概念。教学中要安排足够的课时把这些控件的用法渗透到一个个程序实例中,由浅入深地逐渐介绍,让学生在编写程序的过程中总结控件的用法。
四、加强程序设计教学中的引导变通
1.引导学生对语句变通,加强语句和三种基本结构语句的理解和灵活应用
在程序设计的初始阶段,要注意学生对某些语句的功能还不甚了解的实际,不失时机在从一些典型的例题入手,及时纠正编写程序时所出现的语法错误和逻辑错误,引导对已编程序的某些语句或语句中的某些变量作简单的变通。学完选择结构、循环基本结构后,引导学生对程序设计方法的变通,以加强横向联系,启发学生自己进行总结,达到理想的教学效果。
例如对典型的求和问题:S=1+2+3+„„+100
S=0
For i=1 to 100
S=s+i
Next i
可以做:
(1)如求S=100+99+„„+1应作哪些变更?
(2)如求S=2+4+6+„„+100,需要修改哪些地方?
(3)如求S=1*2*3*„*10,需要修改哪些地方?
(4)如求S=1+1/2+1/3„„+1/n应作哪些变更?
(5)如求S=12+22+32+„„+1002,应修改哪个语句?
通过以上一系列角度不同的变通,学生对每一个语句的认识加深了,对语句中确定每一个变量更加谨慎了。
2.引导学生对结构变通,加强语句和三种基本结构语句的理解和灵活应用
又例如:求出下式中n的最大值:s=1+1/2+1/3+„„+1/n<
5先向学生提问:用什么循环语句来设计程序?
通过讨论,学生自己得出结论:用for语句无法设计;只能使用 do „loop until与do while„„loop两种循环设计;同时再次对do „„loop until和do while„„loop 两种循环中的布尔表达式之间的关系有进一步的认识,具体程序如下:
最后通过教师设问:什么情况下用for语句? 什么情况下用DO循环?学生可以自己得出结论: 对于能确定循环次数,使用for语句最合适了;对于循环次数不能预先确定,宜使用DO语句,用DO 语句时注意死循环问题。通过如此的引导变通,使学生对循环结构的三条语句使用得心应手,在编程过程中能够灵活应用,同时也培养了学生发散性思维。
五、切实落实以学生为中心,学生为主体,教师为主导的新课改思想
信息课教师绝大部分为青年教师,无论教学理论和教学经验上都相当缺乏。特别是在程序设计内容时,自觉不自觉地还是走向了教师为主的教学模式。教师与学生缺乏互动,课堂气氛沉闷。在课堂教学中,要鼓励学生质疑是激发学生的主体性、培养学生思维能力和创造能力的起点。学生的主体性主要体现在学习过程中能掌握学习主动权,能够主动、自觉、积极地学习。因此,在教学过程中特别要注意设置恰当的问题,通过启发引导,体现教师的主导作用。集中学生的注意力,促进学生主动思考、主动探索,可以使学生在学习的过程中成为主体。
六、结束语
程序设计教学的主要目标是为了使同学们了解编程的基本思想、培养分析问题、解决问题的基本能力。围绕着这个目标,在VB程序设计的教学实践中,改革旧的教学模式,结合学生实际情况,不断探索切合实际的教学方法和手段。按照他们的认知规律组织教学,一切有效的教学方法都可以在我们的教学过程中加以运用,进而使综合素质得到整体提高,这是程序设计课程教学的最终目标。
参考文献:
[1]杨俊宇.浅谈VB程序教学方法[J]. 科技资讯,2009,(16): 211-212
[2]孙秀.VB 教学方法改革的探索与实践[J].辽宁师专学报.2010(4)
[3]刘辉.VB程序设计教学方法初探[J].大庆师范学院学报.2010(2)
[4]康丽萍. VB教学的几点体会[J].农业网络信息,2011(09): 45-46