一、课程基本信息
课程名称 (中文) | 程序设计基础 | ||
课程名称 (英文) | Fundamentals of Programming | 课程类型 | 专业基础课 |
学 分 | 3.5 | 总学时 | 84 |
适用对象 | 计算机科学与技术(本科) | ||
考核方式 | 笔试结合实践考核。其中:平时作业10%、实验20%、笔试70%。 | ||
先修课程 | 计算机科学导论 |
二、课程简介
《程序设计基础》是高等学校计算机科学与技术专业非常重要的课程,它以编程语言为平台,介绍程序设计的思想和方法,培养学生程序设计基本方法和技能。C语言是一种具有很强表达能力的通用的程序设计语言,其特点包括简洁的表达式、流行的控制流和数据结构、丰富的运算符集等,既具备高级语言的特性,又具有直接操作计算机硬件的能力,拥有大量的使用者。目前,C语言被许多高校列为程序设计课程的首选语言,它是学习《数据结构》、《C++语言程序设计》、《软件工程》、《数据库系统》、《操作系统》等课程的先修课程,在教学培养方案中具有重要的地位。
三、课程目标
《程序设计基础》是一门实践很强的课程,根据培养应用型人才的需要,本课程的目标是使学生掌握C语言的基本语法、语句、控制结构以及结构化程序设计的基本思想和方法,使学生认识到算法、良好的程序设计风格以及实践在本课程学习中的重要性,培养学生熟练使用C语言分析和解决实际问题的能力,培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力,为学生进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。
四、教学内容及要求
第一章 C语言概述
(一)教学内容
1.C语言的简史与特点。
2.简单的C程序。
3.C程序的上机步骤,掌握程序的编辑、编译、链接和运行。
(二)教学要求
1.了解C语言的特点。
2.掌握C简单程序的构成。
3.熟练掌握C程序的编辑、编译、链接和运行的过程。
第二章 程序的灵魂---算法
(一)教学内容
1.算法及其特点。
2.表示算法的方法。
自然语言表示算法、流程图表示算法、N-S流程图表示算法、伪代码表示算法、计算机语言表示算法。
3.结构化程序设计方法。
(二)教学要求
1.了解算法及特点。
2.熟悉如何表示算法。
3.掌握结构化程序设计方法及其特点。
第三章 基本数据类型、运算符与表达式。
(一)教学内容
1.C数据类型概述;
2.C的基本数据类型(整型、字符型、枚举型、实型);
3.常量与变量;
4.整型数据(整型常量的类型及表示方法);
5.实型数据(实型常量的类型及表示方法);
6.字符型数据(字符的常量、变量和字符串常量以及在内存中的存储形式及表示方法);
7.变量赋初值;
8.各类数值型数据间的混合运算;
9.算术运算符及其表达式;
10.赋值运算符及其表达式;
11.逗号运算符及其表达式。
(二)教学要求
1.掌握C的几种基本数据类型(整型、字符型、枚举型、实型等基本数据类型的概念),熟练掌握这些类型的常量和变量的使用及其运算操作;
2.掌握标识符的概念,熟悉变量和符号常量先定义后使用特点;
3.熟练掌握整型、长整型、短整型、无符号整型数据的定义与存储特点;熟练掌握字符型数据的定义与存储特点,并熟悉整型数据与字符型数据间的关系;
4.掌握定义变量赋初值的方法;掌握不同类型数据间的混合运算规则,掌握几种运算符(算术、赋值、逗号运算符等)的使用特点。
第四章 最简单的C程序设计
(一)教学内容
1.C语言概述;
C程序结构、C语句的构成。
2.数据的输入与输出:
C语言输入输出的实现:C语言没有提供输入输出语句, 而是由输入输出函数来实现的。标准库函数的使用。
输出函数putchar(字符输出函数 )、printf(格式输出函数 )的使用。输入函数getchar(字符输入函数 ) 、scanf(格式输入函数 )的使用。
(二)教学要求
1.了解C语言程序的特点(C程序是由函数组成的);
2.掌握赋值语句构成与使用要点;
3.熟练掌握格式输入/输出函数方法。能编写简单的顺序结构程序。
第五章 选择结构程序设计
(一)教学内容
1.结构化程序的三种基本形式
什么是结构化程序设计。
结构化程序的三种形式:顺序、选择、循环。
顺序结构程序的设计:赋值语句的使用要点。
2.三种运算符的特点
关系运算符的表达式及优先次序;
逻辑运算符的表达式及优先次序;
条件运算符的表达式及优先次序。
3.两种语句
IF语句的三种形式、基本结构及IF语句的嵌套;
SWITCH语句的一般形式;
顺序、选择结构程序的设计:用if语句实现的分支控制;
用switch语句实现的多分支控制。
(二)教学要求
1.掌握结构化程序设计的三种基本形式(顺序、选择、循环);
2.掌握几种运算符(关系运算符、逻辑运算符、条件运算符)的特点,清楚每种运算符的优先级与结合性;
3.熟练掌握两种语句(IF语句及SWITCH语句);
4.要求学生可以进行简单的顺序、选择程序设计,熟练使用标准输入输出函数。
第六章 循环控制
(一)教学内容
1.用while语句实现的循环控制;
2.用do...while语句实现的循环控制;
3.用for语句实现的循环控制;
4.循环嵌套(多重循环);
5.continue和break在循环控制中的作用;
6.goto语句;
7.几种循环的比较;
8.程序举例。
(二)教学要求
1.掌握WHILE语句与DO WHILE语句的结构与使用方法;
2.掌握FOR语句的结构,熟练掌握其使用方法;
3.会使用常见的循环嵌套形式;
4.能正确区分FOR 语句、DO…WHILE语句与WHILE语句三者的不同;
5.掌握BREAK语句和CONTINUE的应用及其区别;
6.分析总结常用的程序设计方法及算法特点,并能编写相应的程序;
7.要求:学生可以进行简单的选择、循环程序设计,熟练掌握For、Do…While 和While语句函数。
第七章 数组
(一)教学内容
1.数组的基本概念:元素、下标、类型、维数;
2.一维数组的含义、初始化、引用方法、使用特点;
3.二维数组的含义、初始化、引用方法、使用特点;
4.字符数组
•字符数组的功能:用来解决字符串的存储及操作;
•字符数组的定义、初始化 、引用方法、使用要点;
5.字符串;
6.多位数组与数组相关函数。
(二)教学要求
1.掌握数组的基本概念;
2.熟练掌握一维数组(一维数组的定义,数组元素的引用方法)和二维数组(二维数组的定义,数组元素的引用,了解二维数组的实际意义)的使用;
3.掌握字符数组与字符串的关系以及字符串的简单处理,熟悉常用字符串处理函数;
4.会分析、编写利用数组进行数据存储和处理的简单程序。
第八章 C函数
(一)教学内容
1.函数的定义;
2.函数的调用
函数的一般调用;
函数的嵌套调用;
函数的递归调用;
3.数组作为函数的参数;
4.局部变量与全局变量;
5.变量的存储类别
动态存储方式与静态存储方式;
auto变量;
用static声明局部变量;
register变量;
用extern声明外部变量;
用static声明外部变量;
关于变量的声明和定义;
存储类别小结。
6.内部函数与外部函数;
7.如何运行一个多文件的程序。
(二)教学要求
1.掌握函数的定义,函数的原形,函数的返回值;
2.掌握函数的调用,函数的形式参数和实际参数之间的关系;
3.掌握函数嵌套调用的一般过程及使用方法;
4.了解函数递归调用的几种形式;
5.掌握数组作为函数的参数的一些特点;
6.掌握局部变量与全局变量的概念及它们的使用特点,掌握动态存储变量与静态存储变量的含义,会正确识别和使用;
7.了解内部函数与外部函数的含义。
第九章 预处理命令
(一) 教学内容
1.编译预处理;
2.宏定义;
3.文件包含;
4.条件编译;
(二)教学要求
1.了解预编译的概念;
2.掌握宏定义的方法;
3.了解“文件包含”与预处理的应用;
4.了解条件编译的几种形式。
第十章 指针
(一)教学内容
1.基础知识;
2.指针变量的引用;
3.数组的指针和指向数组的指针变量;
4.字符串的指针和指向字符串的指针变量;
5.函数的指针和指向函数的指针变量;
6.返回指针值的函数;
7.指针数组与指向指针的指针;
8.有关指针的数据类型和指针运算小结。
(二)教学要求
1.深刻理解并掌握指针的概念;
2.掌握指针变量的定义和应用,指针变量作为函数参数的用法;
3.掌握指向数组的指针与指向数组的指针变量的概念、定义和应用;
4.掌握指向字符串的指针的定义和应用;
5.理解指向函数的指针的定义和用法;
6.了解返回指针值的函数的定义和应用,了解它与指向函数的指针变量的区别;
7.了解指针数组的定义和应用,掌握指针的指针的定义和应用,了解它指针数组与指向数组的指针变量的区别。
第十一章 结构体与联合体
(一)教学内容
1.结构体概念
定义结构类型变量的方法;
结构体变量的引用;
结构体变量的初始化;
结构体数组(定义、初始化、应用举例)。
2.指向结构体类型数据的指针
指向结构体变量的指针;
指向结构体数组的指针;
用结构体变量和指向结构体的指针作函数的参数。
3.链表概念
链表的概述;
简单链表;
处理动态链表所需要的函数。
4.链表的操作
链表的建立;
链表的删除;
链表的插入;
连表的综合操作。
5.联合体
概念;
变量的引用方式;
联合体类型数据的特点。
6.typedef及枚举类型的使用。
(二)教学要求
1.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化;
2.理解联合体的含义,掌握联合体类型变量的定义方法;
3.了解结构体数组的定义和数组元素的引用;
4.了解指向结构体类型数据的指针的概念及使用;
5.了解链表结点的结构形式,链表的基本操作;
6.了解枚举类型的定义,及枚举类型的输入输出;
7.了解TYPEDEF的作用。
第十二章 位运算
(一)教学内容
1.位运算符及位运算
按位与运算符;
按位或运算符;
异或运算符;
取反运算符;
左移、右移运算符。
2.位运算举例
3.位段
(二)教学要求
1.位运算适合于编写系统软件的需要,是C语言的重要特色,因此要求学生掌握本章内容;
2.熟练掌握各运算符的应用;
3.掌握位段的概念及运用。
第十三章 文件
(一)教学内容
1.C文件概述;
2.文件类型指针;
3.文件的打开(fopen)与关闭(fclose);
4.文件的读写操作
fputc函数与fgetc函数;
fread函数与 fwrite函数;
fprintf函数与 fscanf函数;
其它读写函数(putw函数与getw函数,fgets函数与fputs函数)。
5.文件的定位操作
rewind函数;
fseek函数和随机读写;
ftell函数。
6.出错检测
ferror函数;
clearerr函数。
7.文件输入输出小结
(二)教学要求
1.理解文件的概念;
2.了解文件类型指针的定义和含义;
3.掌握文件操作的相关标准函数;
4.了解文件定位的操作及相关的标准函数;
6.了解出错检测函数的作用。
第十四章 常见错误和程序调试
(一)教学内容
1.编程时常见的错误
忘记定义变量;
输入输出的数据的类型与所用格式说明符不一致;
不注意int数据的数值范围;
在输入语句scanf忘记使用变量地址符;
输入时数据的组织与要求不符;
误把“=”作为“等于”运算符;
语句后面漏分号;
在不该加分号的地方加分号;
忘记加花括号;
引用数组元素时误用圆括号;
将元素个数误认为下标值;
对二维或多维数组的定义和引用的方法不对;
混淆字符数组与字符指针的区别;
……
2.程序调试步骤
人工检查
上机调试
改语法错误
运行结果
(二)教学要求
1.了解C语言编程时常犯的几种错误;
2.掌握程序调试步。
五、课时分配表
序号 | 课题名称 | 课时分配 | 小计 | ||
理论 | 实践 | 其他 | |||
1 | 第一章 C语言概述 | 2 | 2 | ||
2 | 第二章 程序的灵魂-算法 | 4 | 2 | 6 | |
3 | 第三章 数据类型、运算符与表达式 | 4 | 4 | ||
4 | 第四章 最简单的C程序设计 | 2 | 2 | ||
5 | 第五章 选择结构程序设计 | 4 | 2 | 4 | |
6 | 第六章 循环控制 | 2 | 2 | 4 | |
7 | 第七章 数组 | 6 | 4 | 1 | 7 |
8 | 第八章 函数 | 4 | 4 | 6 | |
第九章 预处理命令 | 2 | 2 | |||
第十章 指针 | 8 | 6 | 11 | ||
第十一章 结构体与共用体 | 6 | 4 | 8 | ||
第十二章 位运算 | 4 | 2 | 1 | 3 | |
第十三章 文件 | 2 | 2 | 7 | ||
第十四章 常见错误和程序调试 | 2 | 2 | |||
总课时 | 54 | 28 | 2 | 84 |
“课时分配”中,“其他”主要指看录像、现场参观、课堂讨论、习题等教学环节。
六、教材及参考书
教材:
1.《程序设计基础(C语言)(第二版)》(清华大学出版社,2017年08月出版,巫喜红、钟秀玉主编)
2.《程序设计基础(C语言)(第二版)学习辅导》(清华大学出版社,2017年08月出版,巫喜红、钟秀玉主编)
参考书:
1.《C程序设计题解与上机指导》(清华大学出版社,2007年07月出版,谭浩强编著)
2.《C程序设计教程》(清华大学出版社,2010年09月出版,徐士良编著)
3.《C程序设计教程》(清华大学出版社,2011年01月出版,马瑞民编著)
4.《C程序设计》(清华大学出版社,2007年07月出版,谭浩强编著)
5.《C程序设计》(清华大学出版社,2011年01月出版,吴德成编著)
6.《C程序设计教程》(清华大学出版社,2010年09月出版,常东超编著)
七、教学策略与方法的建议
1.采用启发、互动式的教学方法,激发学生的学习积极性,实现个性化、多样化的教学模式。
2.在教学中引入现代教育技术,制作与教材相配套的CAI课件、电子教案,通过多种媒体与学生之间的交互作用,将抽象的概念形象化、生动化、可视化,提高学生学习的兴趣和效率,达到提高教学质量和教学效率。
3.理论课与实践课相互融合,培养学生解决实际问题的综合能力。在教学安排中,理论课与实验课相互衔接,实验内容与教学内容互相渗透。尤其是一些综合开发案例,不仅是教学内容的延伸,而且也是对理论知识的综合应用。
4.教学过程中的关键性概念、程序设计算法等方面难点,辅以课堂讨论,培养学生分析问题、解决问题、应用知识的能力。。
5.通过使用电子信箱和QQ群答疑,方便学生即时与教师交流。