《面向过程的程序设计》

 

 

 

 

 

 

 

 

 

 

 

 

电子与电气工程系基础教研室


目录

一.模块功能... 3

二.模块输入... 3

三.设计思路... 3

1解构... 3

2关于能力的培养... 4

2.1培养不出能力,痛苦的回忆... 4

2.2能力是什么?怎么培养?... 4

2.3计算机编程能力指什么?怎么培养?... 4

3教学内容的重组... 5

3.1重组整体思路... 5

3.2重组具体原则... 6

3.3具体重组的教学内容... 6

3.4具体重组的实验教学内容... 6

3.5核心教学目标... 7

4教学模式与教学方法设计... 9

5教学考核与评估... 9

5.1作业考核... 9

5.2答辩考核... 9

5.3实验考核... 9

5.4单元考核... 9

5.5大作业考核... 12

5.6笔记考核... 12

5.7期末考核... 12

四.实现步骤... 12

 


 

一.课程模块功能

传统目标:通过计算机语言学习,初步掌握计算机处理问题的方法、手段,初步培养学生的编程能力,从而解决简单的实际问题 ,为后续专业学习和发展奠定基础。

问题在于:目标很笼统,不明确,无法为后续的设计、考评作指导。

调整目标:通过计算机语言学习,掌握面向过程的设计方法,初步培养学生的建模能力、调试能力、规范编程能力、合作编程能力、程序阅读能力等,在基于理解自然环境、工程环境的前提下,会使用计算机语言表达。同进培养学生认真的学习态度和严谨、细致的学习作风和自主学习的学习习惯。

二.课程模块输入

输入:计算机基础知识(操作系统,应用软件、文件等)

输出:掌握计算机语言的语法规范,掌握不同类型数据的表达、存储、提取,使用结构编程思路解决工程问题,编写不少于10个文件,20个模块的简单应用系统。

三.课程设计思路

传统的教学以专家认知来安排教学内容,无论从能力体系、内容取舍等均无法满足目标要求,需要重新解构。

1解构

从以下5个方面解析:哲学结构、思想结构、内容结构、认知结构、能力结构。

*重构带来教学内容、教学方法、评估体系的改变

2关于能力的培养

2.1培养不出能力,痛苦的回忆

2.2能力是什么?怎么培养?

1)两类知识:陈述性知识、程序性知识(运用规则对外办事的智力技能,运用规则对内协调的认知策略)

 

2)能力的得到:陈述性知识的习得,转化、迁移和应用三个过程。具体如下:

这里面包括了能力培养的途径和具体的方法。如:注意、预期、激活、选择性知觉、复述加工、变式、应用办事、调控等动作。

 

3)能力培养的关键

没有这些动作,能力是不可能培养起来的。

而这里的最关键的就是形成程序性程序的规则及陈述性向程序性转化的变式。

 

 

2.3计算机编程能力指什么?怎么培养?

1)各关键能力

我们确定能力包括以下几个方面,也就是说以下几个能力都得到提升,编程能力才算落到实处。

 

认识和分析问题的建模能力是关键

常期以来,我们的教学中对于合作编程和代码复用能力的培养是弱之又弱,甚至国内很多知名专家编写的教材中根本没有涉及此项,单方面认为在以后的工作经验中慢慢积累,这种想法对学生编程能力的培养是有害的,甚至会影响到学生对本课程模块的学习兴趣,学生无法获取这两项能力就意味着无法编写略微大一点的程序,只能纯粹解决一个简单不能再简单的理论问题而非实际应用,离开了实际应用,本课程教学没有任何存在的价值。

 

合作编程能力和代码复用能力法宝是凭借

常期以来,我们的教学中对于合作编程和代码复用能力的培养是弱之又弱,甚至国内很多知名专家编写的教材中根本没有涉及此项,单方面认为在以后的工作经验中慢慢积累,这种想法对学生编程能力的培养是有害的,甚至会影响到学生对本课程模块的学习兴趣,学生无法获取这两项能力就意味着无法编写略微大一点的程序,只能纯粹解决一个简单不能再简单的理论问题而非实际应用,离开了实际应用,本课程教学没有任何存在的价值。

 

 

规范编程能力是基础

文件、函数、变量的命名规则、接口的协调规则,在简单的纯粹教学式过程中看不出任何好处,但在一个真正实际问题的编程中其价值巨大,可以说不规范的编程不如不编程,不规范的编程没有建立合作编程和代码复用一点可能性。在我们调研高校中本课程所使用的教材中很少有规范编程的教材,规范编程是我们忽视的一大重要编程能力。

 

调试能力是助力

现代编程学认为,所有的程序都可能存在问题,找到问题所在,解决出现的漏点无疑是重要的,调试能力至关重要,这种能力的培养不仅解决本课程的疑问,对于学生学习其他语言都有重要的参考价值,调试能力的培养让学生有问题的时候会自己找到解决问题的办法,是自我学习的一个法宝。

 

 

2)这些能力怎么培养?给定规则(步骤)及训练是突破口。

如建模能力:模块模块设计的四步曲,合作编程能力人员角色的划分等,代码复用能力则给出复用代码位置及训练,规范编程能力则给出规范命名的约定等等。

 

这门课程的本质就是智力技能的训练课(因为“产生式系统”本源),而非纯粹的理论课或实验课,认清这一点很重要。既然是技能,教学的重点的突破口就是规则和训练,这个规则就是将客观世界的问题域转成算法,进而转化成语句代码的方法步骤学会编程的突破口就是学习规则并不断地演练规则,反复凝练解决问题的一般方法,从而转化为智力技能并内化为能力。所以,一切的教学内容、方法都围绕规则和训练,你要给出明晰的规则,你要给出不同的训练方式(同型、变式、综合等)

 

3教学内容的重组

3.1重组整体思路

以“思想、方法和途径”为核心、以“函数和指针”为主线,以“规范”为前提,以“解决实际问题”为目标,以“规则”的变式训练为纽带,安排教学内容。

 

3.2重组具体原则

以规范(规则)作为前提重组教学内容,努力实现对现实世界问题的解构

体现“学思行”三位一体的语言教学模式

以函数作为主线,以文件作为单元贯彻整个教学始终

淡化指针的神秘,顺序学生的思维

精选教学内容,有所为有所不为

理论和实践紧密相连

考虑学生的思维特点,兼顾知识的成长性

考虑语言发展,强调复用

教学内容的设计必须体现智力技能的形成过程,即必须体现形式化规则

 

注:规范有两层含义:其一,指编写的程序代码格式的规范,如变量名、文件名的定义方法和注释、缩进控制等,教材(教学内容)必须作出表率,绝对不能在正式的程序里出现定义一个变量为a,b,c的情况,必须按通用的程序命名准则去要求,所有的标识符都要有意义,易读易记。其二,指编程结构过程的规范,即编写一个程序应该如何去规划步骤?如果程序复杂多人之间应该如何展开合作?这种规范、规则对学生至关重要,掌握规范、规则,继而熟练应用就会上升为学生的灵活的编程能力,这些规范规则是知识重组重要部分。

 

3.3具体重组的教学内容

1)模块设计

①解决问题的思路与最基本的程序设计(函数的使用环境,结构化编程思想,模型模块)

②数据的表达、保存、提取(函数的使用,基本的数据和指针数据概念与定义)

2)结构编程

③结构化程序设计的三种结构(函数的较熟练使用)

3)构造

④构造的数据类型(一维数组,字符串)(函数的高级使用,动态指针,指针数组)

⑤构造的数据类型(结构体)(函数高级使用,指针联用)

⑥构造的数据类型(类)和对象(函数高级使用,动态对象指针)

⑦继承、多态(函数的高级使用,动态转型对象指针)----选讲或不讲

 

3.4具体重组的实验教学内容

做法:整个课程只做一个实验:“成绩管理系统”

意图:根据学生认知和内在需求,不断丰富系统功能,不断追索语法表达。真正体现应用、合作、复用等。

 

3.5核心教学目标

教学内容

核心知识要点

核心智力技能(步骤)

核心检验点

核心教时数

1

模型模块

 

1掌握解决简单问题的四个步骤

2初步掌握面向过程的编程思想-模块化设计思想,初步认识主模块和自定义模块样式与特点

3初步掌握模块的组织形式-模型结构

4初步掌握简单函数的调用规则

5初步掌握规范命名方法

6初步掌握VC开发环境,可以编辑、编译、连接、运行代码

1解决问题的方法步骤

2模型与模块设计方法步骤

3规范命名方法步骤

4从编写代码到运行程序的方法步骤

可仿照教材案例设计最简单的单归属程序,为自行设计单归属程序奠定基础

理论课时(4+实验课时(2

2

调试技术

 

1辨析程序中三种错误及出现环境及调试方法

2进一步认识模块,理解模块的封闭性

3认识多种数学函数及使用方法

1针对各类错误的调试方法步骤

2模型与模块设计方法步骤(强化)

 

可完成对最简单的单归属程序各种类型出错的及时处理

理论课时(4+实验课时(2

3

基本数据类型

 

1理解数据类型的基本概念,分辨不同数据类型的使用环境,掌握基本数据类型特征

2掌握常量、变量的命名规则和使用方法

3初步认识局部变量和全局变量的作用域特性

4掌握运算符分类,以及常用运算符使用方法

5进一步认识模块,理解模块间联系,掌握函数四种形式

1混合运算的方法步骤

2模型与模块设计方法步骤(强化)

 

可设计最简单的单归属程序,为建立多归属程序奠定基础

理论课时(4+实验课时(2

4

高级数据类型

 

1理解指针含义,学会保存指针

2体会指针使用的好处,掌握指针作为函数参数

3理解动态申请空间必要,并学会动态申请空间

4掌握局部变量、全局变量的生存期和作用域

5初步掌握不同指针之间的相互转化

1指针作模块参数的方法步骤

2动态申请空间的方法步骤

3模型与模块设计方法步骤(强化)

 

可设计最简单的多归属程序,为建立系统程序奠定基础

理论课时(4+实验课时(2

5

结构编程之顺序与选择

1理解结构编程的特点,明确数据流程步骤

2掌握交互(标准输入输出)方法、赋值方法,初步理解克隆技术

3学会根据不同选择环境,使用不同的选择语句

4进一步加深对函数的认识,较熟练使用多归属函数编写较大的程序

1操作数据的方法步骤

2使用选择语句的方法步骤

3多模块多归属设计的方法步骤

可设计简单的系统程序,其中选择使用各功能模块

理论课时(4+实验课时(2

6

结构编程之循环

 

1理解循环结构的使用语境和语法结构

2熟练掌握循环规则,即三要素和循环规律

3熟练掌握运用规律的递推和递归两种思路

4初步掌握多人合作思路,进一步领悟面向过程编程中的模型、模块结构和角色分层设计思想

1使用循环语句的方法步骤

2递推和递归的方法步骤

3多人合作的方法步骤

可设计简单的系统程序,其中循环选择使用各功能模块

理论课时(4+实验课时(2

7

数组

 

1掌握一维数组的定义和元素的寻址方法

2掌握一维数组的基本排序方法

3掌握一维数组名作为函数参数进行函数调用的实质

4学会以数组作参数构建模块,实现数组的输入、输出、排序、删除等功能

1一维数组排序的方法步骤

2一维数组作模块参数的方法步骤

 

可设计分数管理系统(数据结构采用分组数组表达分数)

理论课时(4+实验课时(2

8

字符串

 

1掌握字符串的本质和核心指标

2掌握字符串的数组表示方法和指针表示方法

3掌握字符作为函数参数进行函数调用的实质

4理解并掌握指针数组的建立和使用方法

5学会以字符串列表作参数构建模块,实现字符串列表的输入、输出、排序、删除等功能

1字符串作模块参数的方法步骤

2指针数组作模块参数的方法步骤

可设计分数管理系统(数据结构采用分组数组表达分数,指针数组表达姓名列表)

理论课时(4+实验课时(2

9

结构体

 

1掌握结构体类型的含义和定义方法

2掌握结构体变量的定义、输入、输出等方法,及向其他模块传递结构体数据

3掌握结构体数组的定义、输入、输出等方法,及向其他模块传递结构体数组数据

4学会以结构体数组作参数构建模块,实现结构体数组的输入、输出、排序、删除等功能

5初步掌握函数优化的几种手段

1结构体作模块参数方法步骤

2结构体数组作模块参数方法步骤

3模块优化方法步骤

可设计分数管理系统(数据结构采用结构体数组表达整体信息)

理论课时(4+实验课时(2

10

文件操作

 

1理解文件和流的含义

2掌握文本文件的读写方式

3掌握二进制文件的读写方式

4学会建立数据保存模块和数据调入模块

5理解指针函数和体会指针函数带来的方便

1文本文件操作方法步骤

2二进制文件操作方法步骤

3指针函数作模块参数的方法步骤

可设计分数管理系统(文件保存与调入)

理论课时(4+实验课时(2

 

 

 

4教学模式与教学方法设计

5教学考核与评估

说明:各过程考核均分4个层次:优、良、中、差。评价是当面给出,用词可用:完美、良好、还好、未过还需要努力等,让学生感觉到亲近。

5.1作业考核

详细见学生手册

5.2答辩考核

详细见学生手册

5.3实验考核

详细见学生手册

5.4单元考核

第一次考核

1)考核目的

是否掌握了面向过程的编程思想

是否学会模型、模块的图形绘制

是否掌握基本和高级数据类型的表达、存贮、提取

是否掌握简单的调试能力

是否学会简单的多模块设计

 

2)考核内容

核心:完成多模块、多文件简单程序的设计,以传值和传地址方式,考核两个模块之间的数据传递。

 

3)考核形式

考核形式采取笔试,在规定的时间内完成一份试卷相关内容,考核是可闭卷考试。

 

4)评分规则

根据考核试卷的评分标准评分。

 

5)考核时间

考核时间安排第第四章教学内容之后(第5周),因为前四章主要讲的就是模型、模块的程序整体设计思路和基本数据类型(包括指针),这些知识都是编写程序最基本的知识,在这个地方进行阶段考核是对关联知识的小总结。

 

6)补考办法

达不到60分,额外安排时间补考一次,必须达到最低分数线(如重新补做试卷,给60分)。并对情况进行调研和分析。

注:2015-2016-2学期,不进行补过(详细见学生手册)

 

7)材料收存

记录分数到分数表

 

第二次考核

1)考核目的

是否熟练掌握了面向过程的编程思想

是否熟练应用模型、模块的图形绘制

是否掌握结构编程语句的特点及用法,即顺序、选择、循环

是否掌握基本的结构编程能力,将思维过程顺利转化为结构编程语句,如学生会用循环去解决一些规律性的问题

 

2)考核内容

上一单元内容:模型与模块结构、基本数据类型、指针类型、调试技术等

本次单元内容:输入与输出语句、条件判断语句、循环语句、递推与递归表达

 

3)考核形式

考核形式采取笔试,在规定的时间内完成一份试卷相关内容,考核是可闭卷考试。

 

4)评分规则

根据出据考核试卷的评分标准评分。

 

5)考核时间

考核时间安排在第六章结构编程语句之后(第7周),安排在这里是基于对程序的结构熟悉之后,接下来就是要解决对现实问题的不同思路的辨析,似乎内容不多,但非常重要,是熟练掌握这门语言的不可缺少之步骤。

 

6)补考办法

达不到60分,额外安排时间补考一次,必须达到最低分数线(如重新补做试卷,给60分)。并对情况进行调研和分析。

注:2015-2016-2学期,不进行补过(详细见学生手册)

 

7)材料收存

记录分数到分数表

 

第三次考核

1)考核目的

是否熟练掌握了面向过程的编程思想

是否熟练应用模型、模块的图形绘制

是否熟练掌握结构编程语句的使用

是否掌握使用构造类型来表达不同性质的数据,以及在模块化设计中构造数据的传递

是否掌握构造类型的数组作为模块参数的传递技术和传递能力

是否掌握不同类型文件的简单保存技术

 

2)考核内容

核心:

一维数组的结构和特点;

字符串的保存方式及对字符串的常见操作;

结构体的特点和结构体各字段的读取方式等相关内容

文本文件和二进制文件数据的读取和写入

 

3)考核形式

考核形式采取笔试,在规定的时间内完成一份试卷相关内容,考核是可闭卷考试。

 

4)评分规则

根据出据考核试卷的评分标准评分。

 

5)考核时间

考核的时间定于所有的构造类型第10章结束(第11周)讲述完毕。

 

6)补考办法

达不到60分,额外安排时间补考一次,必须达到最低分数线(如重新补做试卷,给60分)。并对情况进行调研和分析。

注:2015-2016-2学期,不进行补过(详细见学生手册)

 

7)材料收存

记录分数到分数表

 

5.5大作业考核

详细见学生手册

 

5.6笔记考核

详细见学生手册

 

5.7期末考核

详细见学生手册

 

四.课程实现步骤

第一步:提供教学目标,教学出口

第二步:提供知识和能力体系

第三步:提供教学模式与教学方法

第四步:提供考核方案

第五步:按分解单元教学目标进行教学(课中反馈)

第六步:按分解单元教学目标进行单元练习、实验与考核(课中反馈)

第七步:按教学目标进行综合项目的考核

第八步:按教学目标设计期末考试,测评达成度