C语言程序设计中迭代算法教学设计的研究与实践

时间:2022-09-21 02:08:29

C语言程序设计中迭代算法教学设计的研究与实践

摘要:本文对高职《C语言程序设计》中迭代算法的教学设计、知识准备、学习任务设计进行了初步研究与实践,以促进对C语言教学中算法教学的改革。实践证明,迭代算法经过教学设计改革后,对学生动手能力、逻辑思维能力以及创新能力等方面的培养都起到了积极有效的助推作用,提高了教学效果。

关键词:C语言;程序设计;迭代算法;教学效果

中图分类号:G622.0文献标识码:A文章编号:1007-9599 (2010) 10-0000-02

C-language Programming Instructional Design Research and Practice in Iterative Algorithm

Zeng Jinfa

(Jiangxi Vocational College of Finance and Economics,Jiujiang 332000,China)

Abstract:Higher"C Programming Language" in the iterative algorithm of instructional design,knowledge,preparation,design of learning task, the preliminary study and practice to promote the teaching of the C- language algorithm for teaching reform.Practice has proved that the iterative algorithm is designed reform of teaching,the students ability,logical thinking and creative abilities of Peiyang have played a positive and effective role in boosting improve the teaching effect.

Keywords:C-language;Programming;Iterative algorithm;Teaching effectiveness

《C语言程序设计》对计算机类专业学生来说是一门很重要的基础语言课程,同时它对后继专业课程的学习,起着至关重要的铺垫作用,因此学好C语言显得尤为重要。在教学过程中,笔者发现大多数学生对该课程的学习兴趣不高,学习效果欠佳,尤其是对算法知识的学习,很多学生感到难学,厌学。作为教师我们必须积极探索对该课程的教学改革,根据学生学习程序设计课程的一般思维规律和思维模式,寻找恰当的教学方法,设计出科学、合理的教学设计,提高学生学习的兴趣与学习效率。本文主要针对“C语言程序设计”中迭代算法的教学设计作一些探讨分析。

一、迭代算法教学设计

(一)教学设计

(二)教学目标

1.知识目标。

(1)理解什么是迭代算法,并能从日常生活中,准确合理的举出生活中使用迭代算法的事例。

(2)理解算法的最优化,体会优化算法给我们生活带来的便利。

2.能力目标。

(1)培养学生针对实际问题,理解算法的最优化,体会优化算法给我们生活带来的便利。

(2)培养学生对算法的时间和空间复杂性的分析能力。

(3)根据学习任务能够分析问题,能用描述法写出精确的迭代算法。

3.素质目标。

(1)锻炼清晰的逻辑思维能力。

(2)通过情境假设法、问题迁移法、讲述法、任务驱动法等教学方法培养学生的胆量与表达沟通能力,培养团队精神和合作意识。

(3)培养实践工作能力和创新精神。

二、知识准备

(一)什么是迭代法

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。

(二)应用迭代算法解决问题,需要解决以下三项工作

1.确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

2.建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

3.对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。

三、学习任务设计

(一)学习任务描述

用迭代法求方程f(x)= 2-lnx-ln(1+ )+5的根。

(二)学习目标

通过求方程的根这个具体学习任务的实现来理解什么是迭代法,这种算法的实际作用和现实意义是什么。

(三)学习任务分析

迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:

1.选一个方程的近似根,赋给变量x0。

2.将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0。

3.当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤2的计算。

若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。

具体使用迭代法求根时应注意以下两种可能发生的情况:

(1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制;

(2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败。

(四)算法描述,实现学习任务

#include

#include

#define epsilon 1e-10

void main()

{

double x0,x1,c;

printf("请输入方程的一个近似解!:");

scanf(“%f”,&x0);

x1=x0;

do{

x0=x1;

c=sqrt((double)(1+2*x0*x0))-log(1+sqrt(2+x0*x0))+5;

x1=exp(c);

}while(epsilon

printf(“%f\n”,x1);

}

(五)自主探索合作实践

请同学们认真思考,然后设计算法,并用描述法写出解决问题的方法和步骤。

一个农民带着狼、兔子、白菜过河,每次只能抱一样东西过河。无人看管时狼会吃兔子,兔子会吃白菜。问:这个农民怎样才能安全地把它们都送过河去?

(六)任务拓展

用迭代法求解方程组的根:

问题:用迭代法求解方程组 的根。

任务实现:

#include

#include

#define epsilon 1e-10

#define MAX10

void main()

{

double x[MAX],y[MAX],delta;

inti,n=3;

for (inti=0;i

printf(“please input x%d:\n”,i);

scanf(“%f”,&x[i]);

}

do{

for (i=1;i

y[i]=x[i];

x[1]=x[2]+x[3]+2;

x[2]=2*x[1]-3*x[3]-1;

x[3]=(3*x[1]+2*x[2])/5;

for(delta=0.0,i=1;i

if (fabs(y[i]-x[i])>delta)

delta=fabs(y[i]-x[i]);

}while(epsilon

for (i=1;i

printf(“x[%d]=%f”,i,x[i]);

printf(“\n”);

}

四、结束语

C语言程序设计中迭代算法的教学目的,不是让学生简单的掌握它的基本规则,而是要培养学生针对实际问题,理解算法的最优化,体会优化算法给我们生活带来的便利,培养学生对实际问题分析的能力,能用描述法写出精确的迭代算法。因此,教师在具体的教学过程中,需要重视对迭代算法教学的设计,把生活实例引入课堂,使抽象的知识形象化、具体化,从而调动学生的学习积极性,培养学生对C语言课程学习的兴趣,有效提高课堂教学效果,提高学生运用所学理论知识解决实际问题的能力,达到学以致用的目的。

参考文献:

[1]高翔,侯小静.关于C语言教学的思考[J].中国科技信息,2006,8

[2]王冬.高职C语言程序设计教学改革探索[J].计算机教育,2007,9:94-96

上一篇:基于工作流技术的人事档案管理系统研究 下一篇:网络时代高职教师的信息意识