C语言中循环结构的教学设计与实践

2018-09-17 09:56焦莉莉张丽丽
科教导刊·电子版 2018年20期
关键词:问题驱动C语言

焦莉莉 张丽丽

摘 要 循环结构是结构化程序设计的三种基本结构之一,它既是程序设计的重点,也是难点。本文从实际出发,提出了问题驱动的渗透式渐进案例驱动引导教学法,帮助学员系统的理解和掌握循环结构。

关键词 C语言 问题驱动 案例驱动

中图分类号:G642 文献标识码:A

0引言

C语言程序设计是一门语法灵活、功能齐全、应用广泛的高级程序设计语言之一,它是后继程序设计课程的基础。而顺序、选择、循环是结构化程序设计的三种基本结构,任何一个能用计算机解决的问题,都能应用这三种基本结构写出程序解决。其中,循环结构是C语言程序设计中最为重要,也是最难掌握的一种结构。

在实际教学过程中,教员讲课多采用传统的授课方式,即先给出某个知识点,再阐述该知识点的语法形式及定义,最后举例说明。该方法忽视了学习C语言的关键是让学员掌握程序设计的思路并解决实际问题,从而导致教出来的学员只能看懂程序而不能使用C语言编写程序解决实际问题。

1循环结构的教学方法

针对C程序设计的循环结构教学,教员可根据知识点的特点,采用问题驱动的渗透式的渐进案例驱动引导教学法,使得学员掌握用所学知识解决实际问题的方法。该教学方法具有如下特点:(1)以问题为驱动激发学员的好奇心和学习兴趣;(2)通过案例讲解渗透到基本概念及执行过程,从而达到让学员潜移默化吸收知识的效果;(3)案例驱动教学法的关键在于选择包含对应知识点的经典案例,并采用由浅入深、由易到难、循序渐进的教学方法,引导学员发现和总结规律,再由教员对理论知识进行归纳总结,从而使学员进一步提高认识、加深理解,达到举一反三的目的;(4)语法规则和案例讲解完毕后,及时让学员进行课堂练习,既能巩固所学知识,又能提高解决实际问题的能力,从而达到学以致用的效果。

2教学过程的设计与实践

2.1提出问题,引入新课

从自然界中循环切入,再到学员生活中的循环——一日生活制度,图文并茂的引出循环的概念并抛出问题:如何编程实现输出大学四年生活的一日生活制度?

2.2 案例讲解,循序渐进

案例设计的基本原则是让学员理解循环结构的四要素:循环变量初始化、循环控制条件、循环体和循环变量的更新,并掌握各要素的功能及作用。具体案例如下:

案例1:求1+2+3+...+100的值。

分析:

S100 =100+S99;

S99 =99+S98;

…………

S2 =2+S1;

S1=1+S0;

S0 =0;

得出结论:

完成该题需重复执行100次操作,每次做:

(1) s=i+s

(2) i+=1

通过分析,给出如下程序:

s=0;i=1;

while( i<=100)

{ s=s+i

i+=1 }

2.3引导学员,归纳总结

根据上述程序总结出while循环的一般形式并归纳总结出循环结构四要素的功能及作用。

案例2:求100!.

分析:首先让学员直接在案例1的程序上进行修改,调试。很多学员只修改循环体,未修改初值,得到了错误结果,再对问题进行分析改正,从而加深对循环变量初值的理解。

根据while循环的一般形式及各部分功能,把程序推广到do while 和for 循环。一方面让学员进一步理解循环结构的四要素可以灵活变化,出现在不同的地方;另一方面让学员理解这三种循环语句可以相互转换。

s=1;

for(i=1;i<=100;i++)

s=s*i;

2.4师生合作,解决问题

案例3:输出大学四年生活的一日生活制度。

for(i=1; i<=365*4;i++)

{printf("6:20早操。\n")

printf("7:00早飯。\n ")

printf("8:10上课。\n ")

printf("12:00午饭。\n ")

printf("14:30上课或自习。\n ")

printf("16:30体能训练。\n ")

printf("19:00新闻联播。"\n)

printf("21:00晚点名。\n ")}

2.5拔高层次,拓展新知

案例4:求1!+2!+…+100!

讲解案例前,先让学员分析,借助案例2的结论分别求出1!、2!、100!,再累加。完成该程序需要双重循(下转第124页)(上接第88页)环,内层循环求n!,外层循环求累加和。具体程序如下:

sum=0;

for(i=1;i<=100;i++)

{ s=1;

for(j=1;j<=i;j++)

{ s=s*j;

sum=sum+s;}

}

案例5:求sum=1!+2!+…+n!,当累加和大于20000时就结束循环,并给出sum和n的值。

借助案例4的结论求累加和。完成该程序需要使用break语句结束循环,避免陷入死循环。具体程序如下:

sum=0;

for(i=1;;i++)

{ s=1;

for(j=1;j<=i;j++)

{ s=s*j;

sum=sum+s;

if(sum>20000) break;}

}

printf("sum=%d,n=%d",sum,n);

2.6闯关练习,巩固知识

语法规则和案例讲解完毕后,及时让学员进行课堂练习,教员对学员掌握知识的情况及解决问题的能力进行总结。这样既能巩固所学知识,又能提高解决实际问题的能力,从而达到学以致用的效果。

3结语

程序设计语言逻辑性较强,对非计算机专业的学员来说是最乏味的一门课程。本次课教员从如何编程解决学员日常的生活问题入手,很快就激发了学员的求知欲,调动了学习的积极性。后继通过渗透式的渐进案例驱动引导教学法,培养学员建立良好的逻辑思维能力和演绎推理能力。

实践表明,该教学方法符合学员的认知特点,由浅入深、由易到难、逐步分解、环环相扣,提高了学员学习的主动性,取得了较好的学习效果。

参考文献

[1] 曹海英,元元,郝兵.C语言中的循环嵌套结构程序设计[J].软件研发与应用,2017(27):17-19+22.

[2] 李娟,张燕.C语言循环结构教学的设计与实践[J].计算机教育:2018(03):89-91.

[3] 黄金国.基于项目化教学的“C语言程序设计”课程改革研究[J].吉林工程技术师范学院学报:2018,34(02):79-81.

猜你喜欢
问题驱动C语言
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
以计算思维为中心的数据结构教学方法探讨
“问题驱动式”生物高效课堂打造的做法
高职高专院校C语言程序设计教学改革探索
“问题驱动+能力提升”卓越课程建设与实践
论子函数在C语言数据格式输出中的应用
非计算机专业C语言教学探讨