第4课 程序设计基础
教学内容分析
本课是走进程序世界的第1课,是程序设计知识的基础。
主题1主要介绍了程序设计语言与算法的基本概念。教材在讲述基本概念的同时,还介绍了描述算法的具体方法。体现了教材内容由理论到实践,由抽象概念到具体应用的递进关系。本课所涉及的知识,为后续课程进行C语言程序设计的学习奠定了理论基础,构建了全局的概念性的知识框架结构。
主题2以Dev-C++为例介绍了C语言的集成编译环境,描述了C语言的基本逻辑结构和基础语法,并展示了一个完整的输入、编辑、保存、编译、运行的程序设计过程。对于开展C语言程序设计来说,了解一个基本的集成编译环境,不但有用,而且必要。教材完整地展现了C语言从输入源代码到编译到产生运行结果的全过程,这一操作技能是学习后续程序设计课程所必备的。
通过本课的学习,学生不但认识到程序和算法是推动计算机自动化工作的基石,同时还会了解到多种不同的程序设计语言,这使得学生在学习具体的C语言程序设计之前,能够对整个计算机软件工作的原理有一个全局性的认识,使之不仅见树,而且见林。教材所介绍的流程图技术通俗易懂,能够让零基础的学生很快地掌握这种描述算法的方法,这对于接下去深入学习了解编程语言的工作流程有大帮助,同时还有利于帮助学生建立起计算思维。
教学对象分析
在七年级的数学学习中就有涉及流程图的概念,这对于学生学习本课内容是一个助力。除了本课流程图的专项教学以外,学生在生活中会看到流程图的身影,比如图书馆图书借阅归还的流程图,医院体检的流程图等等。尽管了这些源自实际生活的体验,但是学生在根据具体问题绘制流程图描述解决方案时候,可能还是会出现词不达意的情况,特别是针对复杂问题,如何利用流程图表达包含选择和循环逻辑的问题解决策略,将会是学生容易犯错的难点。
在小学阶段,学生曾经学习过 Seratch编程,所以对于集成编译环境的概念应该不会特别陌生,但是C语言的交互方式与之前的 Scratch有本质的差别,教师在教学中要注意这点。
由于是第一次接触需要大量使用英文字符的编程,所以学生在输入C语言代码的时,可能会遇到一些困难,比如没有正确区分字母的大小写,或者用中文标点代替英文标点,这些都是教师要注意进行辅导和提醒的。
在第一次运行源代码的时候,学生可能会遇到一些困难,比如出现各种类型的编译错误,由于提示信息是英文的,部分学生阅读会比较吃力。教师要有耐心引导学生注意仔细观察辨识提示信息,找到错误的根源。这一过程虽然困难,但也是引导学生不畏困难,培养科学探究精神的时机。
教学目标
1.了解程序和常见的程序设计语言,以及程序的执行过程。
2.掌握流程图的基本符号及其含义。
3.能够利用流程图描述简单的算法。
4.掌握Dev-C++的启动和基本环境设置。
5.能够识别C语言的基本语法元素。
6.掌握编译运行C语言的方法。
教学重点和难点
1.教学重点。
(1)程序及程序的执行过程。
(2)C语言的基本语法结构
(3)Dev-C++编译运行C语言源代码的方法。
2.教学难点。
(1)使用流程图描述较为具体的算法。
(2)在Dev-C++中输入合乎缩进格式要求的正确代码。
(3)编译和调试程序。
教学方法
1.讲授法:教师讲解C语言程序的基本构成元素和基本语法规则。
2.素材辅助:在有限的课堂时间内,利用微视频等教学素材,帮助学生了解程序设计语言与计算机程序之间的关系。
3.任务驱动:引导学生通过动手实践体会Dev-C++集成编译环境的工作界面,体验从新建源代码到成功运行C语言源代码的整个过程。
4.试错法:放手让学生尝试,通过不断地调试,逐步掌握C语言的各种语法特性。
5.点评示范:及时点评学生的典型错误,帮助学生排错。通过给出范例让学生实践,帮助学生提高观察能力。
教学准备
1.教学环境。
多媒体网络教室。
2.教学资源。
多种程序设计语言的例子,C语言代码样例。
教学过程
第9课时 主题1:程序设计语言和算法
一、引入新课(5分钟)
1.展示图片,并提问:孙小弟从起点出发,要到达红色终点处,要怎么走?(请1-2位同学把孙小弟沿着棕色方格如何才能走到红色终点处描述清楚)
2.教师点评同学的描述。
二、学习新知(25分钟)
1.程序和指令
(1)布置任务1:同学们已经把自己的想法清楚的描述出来,如果我们想让孙小弟真正走起来,该如何操作?请同学们打开任务一 scratch半成品,试着补充完代码,让孙小弟成功到达终点。
(2)教师讲授:我们把解决问题的想法变成计算机的实际操作步骤,即可由计算机执行的程序,计算机程序是一组计算机能识别和执行的指令。
2.程序设计语言
(1)过渡语:编写几行或几十行的小程序,类似scratch这种图形化编程是有可视化优势的,但当程序复杂起来的时候,图形化编程软件体现不出优势。因此我们今天文字类程序设计语言。
(2)布置任务2:引导学生自主阅读50页到51页表4.1,并且上网查找一下不同语言是如何计算a=b+1的?
(3)组织学生进行成果汇报。
(4)教师视汇报情况做补充。(主要包括机器语言是什么样的?为什么后来又出现汇编语言?高级语言有哪些?有什么特点?)
3.算法与算法的描述方法
(1)引导学生回顾孙小弟走方格的图片,以及请同学描述的场景,教师讲授:解决某个或某类问题的方法,在程序中我们称为算法。除了刚才同学用口头的自然语言描述算法,我们还经常会用到流程图进行描述。
(2)引导自主阅读:请同学们自主阅读表4.2,了解流程图的图框,名称和对应功能。
(3)引导交流:同桌之间互相说一说图4-4和图4-5描述的算法,说一说圆角矩形、平行四边形、菱形、带箭头的直线表示什么?
(4)小结算法的特点:有穷性,确定性,可能会有输入数据,肯定会有输出结果。
三、练习与巩固(10分钟)
1.根据算法流程图进行代码实现
(1)布置任务3:请同学们利用小学学过的 scratch,将53页流程图转变成可以运行的程序。
(2)让学生互相交流自己编写的程序的运行结果。
(3)讨论:之前的流程图设计对于后期 scratch程序的编写起到怎样的作用?
四、课堂小结(5分钟)
小结:
本节课重点讨论两部分内容,一是程序设计语言是生产软件的工具,二是算法描述了程序解决问题的方法,指引着程序设计。最后我们介绍了一种通用的、描述算法的工具,也就是流程图。除自然语言、流程图外,算法还可用伪代码进行描述。
Scratch是一种图形化的程序设计语言,随着工程规模的增大,我们更多地会使用C语言等来编写代码。下节课我们马上要学习如何编写一个简单的C语言程序。
第10课时 主题2:编写一个简单的C语言程序
一、引入新课(5分钟)
引导学生观看书本P57,并画下一句话:常见的C语言集成开发工具有:Dev-C++、C-free、VC++等。
提问:有同学知道什么是集成开发环境吗?
讲授:教师结合Dev-C++软件介绍编辑器(用于编写代码的工具)、编译器(将C语言翻译为计算机理解的机器码)、调试器(很多问题需要一步一步执行代码调试才能发现错误所在。
)、集成开发环境:包含以上三者的基础上,添加软件图形界面,做到图形化编辑编译调试的统一集成开发软件,也就是常说的IDE(Integrated Development Environment)。
二、学习新知(30分钟)
1.程序的编写与执行过程
(1)布置任务1:请同学们自主阅读书本p56 程序的编写与执行过程,在老师介绍集成开发环境基础上,结合Dev-C++软件,同桌之间互相说一说程序的编写与执行过程。
(2)提问:请一位同学回答程序的编写与执行过程。
(3)教师点评并小结学生的回答。
2.C语言的基本格式和规范
(1)布置任务2:参考教材57-59页,新建源代码文件,输入完整的C语言程序,并保存。(先不急调试运行)
(2)教师巡视并记录学生在输入代码过程中遇到的问题,鼓励学生互相帮助。
(3)结合记录的问题,请同学演示:如何在键盘上输入:<>、{}、*、;这些符号。
(4)布置任务3:学生自主阅读55-56页相关知识点,后小组交流对知识点的理解。特别是头文件与main()函数。
(5)教师补充:
①注释:程序注释不是必须的。
②头文件:第5句#include的存在主要是第8句用到printf()函数,编译器需要知道printf()函数来自标准输入输出函数(stdio)
③分组和缩进:TAB键有什么作用?它在键盘上的哪个位置
④语句:请同学们用红色笔标出语句末尾;及C语言中的标点符号都是英文状态下。
⑤函数:代码从 main() 函数开始执行;return 0代表程序正常退出。
3.调试运行。
(1) 了解C语言的格式与规范后,请同学参照书本介绍方法调试运行代码。
(2) 提醒学生注意:
①如果运行失败,请注意看Dev-C++下方给出的提示信息,并认真比对课本图4-7的范例,推测并查找错误的原因。
②如果运行成功,请仔细检查自己的源文件目录下是否有多出新的文件,它是做什么用的?
(3) 教师巡视,记录学生典型的错误代码。
(4) 教师演示错误代码类型,引导学生观察Dev-C++所给出的错误提示信息。
(5) 教师补充并演示:除了菜单栏命令、快捷键,我们还可以借助图标进行运行。
4.保存
(1)调试运行成功后,请学生保存文件。
(2)引导学生注意C语言的源程序保存之后的扩展名。
三、分层练习(5分钟)
1.完成基础任务的同学,订正实践创新部分的代码。同桌之间互相检查订正的内容。
2.基础任务还没完成的同学,接着调试运行,并保存提交。
四、课堂小结(5分钟)
1.讲评实践创新部分的代码。
2.总结:在本节课中,我们完整地体验了简单C语言程序的编辑和运行过程,对于编程中遇到的一些错误,我们也了解了该如何避免和纠正。这些实践经验都是我们将来深入学习程序设计的宝贵财富。
教学反思
第9课时 主题1:程序设计语言和算法
1.本课时理论内容比较多,如果单纯讲授程序和指令,讲授程序设计语言,很难激发学生的学习兴趣。考虑学生小学已经学习过Scratch图形化编程软件,教师用一张孙小弟走方格的图导入,提问学生孙小弟如果通过走方格到达终点?学生本来对Scratch就很感兴趣,极大调动学生积极性。借助这个例子,教师自然引出解决问题的想法,程序,指令等概念,学生也易于接受,轻松突破重点。
2.在算法与算法的描述这个环节,我们仍然回到孙小弟走方格的场景,学生快速明白算法与自然语言描述,在此基础上再介绍流程图,并让学生自主阅读流程图的图框、名称、作用,互相说一说加深印象,最后通过Scratch软件将流程图的算法变成程序,让学生感受流程图的优势。巧妙突破难点。
第10课时 主题2:编写一个简单的C语言程序
1.虽然教材没有详细介绍集成开发环境是什么意思,但这个内容其实很值得讲,当同学理解集成开发环境之后,再介绍程序的执行过程,就是自然而然的过程,轻松突破本课的一个重点。
2.C语言的基本语法结构是本节课另一个重点,学生谈理解后,教师可以尽量以通俗易懂方式让学生明白每个部分的存在意义。比如:头文件,就像教师去家访,完全没声明,就直接冲进学生家中,这一般是不被允许的,但如果一开始就做声明就不一样了。如果没有头文件,突然要使用printf()函数,程序会报错,如果开头先引进头文件,就可以正常使用了。还有本节课main()函数不需要深入展开,只需要让学生明白:代码从 main() 函数开始执行;return 0代表程序正常退出。有开始有结束,是一个完整的流程即可。
3.编译和调试是本节课一个难点。教师先收集学生调试过程遇到的问题,针对问题,引导学生观察错误提示,引导学生学会看错误提示。突破难点。