《程序设计基础A1,A2》教学大纲
(2013版)
课程编码:0611100203,0611100303
课程名称:程序设计基础A1,程序设计基础A2
学时/学分:96(48+48)/6 (3+3)
先修课程:《计算机导论》
适用专业:计算机科学与技术
开课教研室:软件工程教研室
执笔:
审定:
一、课程性质与任务
1.课程性质:本课程是计算机科学与技术专业的专业基础课,是所有计算机科学与技术专业学生的必修课。
2.课程任务:本课程所涉及的C语言是一种有效而又通用的计算机结构化程序设计语言。它既具有高级语言的优点,又具有低级语言的许多特点,因而既适用于编写应用软件又适用于编写系统软件。对于软件开发者来说是一个强有力的工具,故而开设《程序设计基础》课程对于计算机科学技术专业的学生来说,一方面为进一步学习面向对象编程打下坚实的基础,另一方面对就业而言也是非常有现实意义和实用价值的。本课程的主要任务是:
(1)掌握基本的程序设计过程和技巧。
(2)具备熟练应用集成编译环境编写代码、培养学生的程序编译与调试的能力。
(3)具备初步的高级语言程序设计能力。
(4)培养严肃,认真一丝不苟的工作作风。
二、课程教学基本要求
《程序设计基础》是数据结构、c#、Java、操作系统等课程的前导课程,也是一门实践性很强的课程,既要掌握程序设计的基本概念,又要动手编程,还要上机调试运行。在教学过程中要贯彻程序设计的基本思想和基本方法,分析算法的设计理念,培养学生编程兴趣,为日后学生编程能力的逐步提高打下坚实基础。
本课程共计学时:96,理论学时64,实践学时32。
成绩考核形式:期末考试成绩(闭卷考试)(70%)+平时成绩(平时测验、作业、课堂提问、课堂讨论等)(30%)。成绩评定采用百分制,60分为及格。
三、课程教学内容
第一章 程序设计基础
1.教学基本要求
(1)了解什么计算机语言?
(2)了解计算机程序的概念。
(3)了解C语言的特点。
(4)初步掌握C语言程序的基本结构。
(5)掌握C语言程序的编辑、保存和运行方法。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生了解计算机程序设计的概念、程序设计语言的发展历程、掌握C语言程序的基本结构、掌握C程序的编辑、保存和运行方法。
3.教学重点和难点
教学重点:计算机程序的概念 、C语言的发展及其特点、最简单的C语言程序举例、C语言的结构、运行C程序的步骤与方法、程序设计的任务。
教学难点:C语言的结构、运行C程序的步骤与方法、程序设计的任务。。
4.教学内容
(1)什么是计算机程序
主要知识点:计算机程序的概念。
(2)什么是计算机语言
主要知识点:计算机语言的概念、机器语言、符号语言、高级语言、高级语言的发展历程。
(3)C语言的发展及其特点
主要知识点:C语言的发展历程及其特点。
(4)最简单的C语言程序
主要知识点:最简单的C语言程序举例、C语言的结构。
(5)运行C程序的步骤与方法
主要知识点:运行C程序的步骤与方法、C语言的运行环境演示。
(6)程序设计的任务
主要知识点:程序设计任务的基本内容。
第二章 算法表示与设计
1.教学基本要求
(1)了解算法的概念。
(2)初步掌握算法的特性。
(3)初步掌握如何表示一个算法。
(4)了解结构化程序设计的方法。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解算法的概念和特性、初步掌握算法的表示和结构化程序设计的方法。
3.教学重点和难点
教学重点:算法的特性、算法的表示。
教学难点:提出问题、问题解决步骤、问题步骤向算法的转换;用流程图表示算法。
4.教学内容
(1)什么是算法
主要知识点:计算机算法概述。
(2)简单的算法举例
主要知识点:提出问题、问题解决步骤、问题步骤向算法的转换。
(3)算法的特性
主要知识点:算法的有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。
(4)怎样表示一个算法
主要知识点:用自然语言表示算法、用流程图表示算法、三种基本结构和改进的流程图、用N-S流程图表示算法、用伪代码表示算法、用计算机语言表示算法。
(5)结构化程序设计方法
主要知识点:自顶向下、逐步细化、模块化设计、结构化编码。
第三章 顺序程序设计
1.教学基本要求
(1)掌握数据类型的含义,数据的存储形式,变量的声明与引用。
(2)掌握运算符的功能、优先级,结合性,以及表达式的运算顺序。
(3)掌握数据输入输出库函数。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生掌握数据类型的概念、变量的使用、各种类型表达式的混合使用、简单顺序结构的程序设计。
3.教学重点和难点
教学重点:数据类型的含义,数据的存储形式,变量的声明与引用;各运算符的功能及使用方法;格式输入输出函数;
教学难点:数据的存储形式和数据类型的转换;各运算符的功能及使用方法;格式输入输出函数。
4.教学内容
(1)顺序程序设计举例
主要知识点:顺序程序设计的解题思路、流程图表示、代码编写。
(2)数据的表现形式及其运算
主要知识点:常量和变量、数据类型综述、整型数据、字符型数据、浮点型数据、怎样确定常量的类型、运算符和表达式。
(3)C 语句
主要知识点:控制语句、函数调用语句、表达式语句、空语句、复合语句、赋值语句、赋值运算符、复合的赋值运算符、赋值表达式、赋值过程中的类型转换、赋值表达式与赋值语句、变量赋初值。
(4)数据的输入与输出
主要知识点:输入输出举例、有关数据输入输出的概念、用printf函数输出数据、用scanf函数输入数据、字符数据的输入输出。
第四章 选择结构程序设计
1.教学基本要求
(1)理解和掌握条件判断的概念。
(2)掌握简单if语句、if…else语句、if… else if …else语句。
(3)掌握3种if语句的混合嵌套使用。
(4)掌握switch语句。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生掌握条件判断的概念,并能利用C语言提供的条件语句编写选择结构程序。
3.教学重点和难点
教学重点:掌握3种if语句的格式、执行过程和用法;掌握if语句的互相;掌握switch语句的多分支选择结构程序设计。
教学难点:if语句嵌套及switch语句。
4.教学内容
(1)选择结构和条件判断
主要知识点:选择结构和条件判断的的概念。
(2)用if语句实现选择结构
主要知识点:用if语句处理选择结构举例、if语句的一般形式。
(3)关系运算符和关系表达式
主要知识点:关系运算符及其优先次序、关系表达式。
(4)逻辑运算符和逻辑表达式
主要知识点:逻辑运算符及其优先次序、逻辑表达式、逻辑性变量。
(5)条件运算符和条件表达式
主要知识点:显示器;打印机;其他输出设备。
(6)选择结构的嵌套
主要知识点:if语句的相互嵌套。
(7)用switch语句实现多分支选择结构
主要知识点:switch语句的语法格式,多分支选择结构利用switch语句实现
第五章 循环结构程序设计
1.教学基本要求
(1)熟练掌握while、do…while、for三种循环语句的使用。
(2)学会使用循环的嵌套结构。
(3)使用break语句和continue语句。
(4)了解几种循环的异同。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生掌握程序设计中循环的概念、能利用C语言中while、do…while、for三种循环及相互嵌套实现循环结构程序设计。
3.教学重点和难点
教学重点: while、do…while、for三种循环语句的使用和相互嵌套。
教学难点:循环的嵌套使用。
4.教学内容
(1)为什么需要循环控制
主要知识点:循环控制的概念
(2)用while语句实现循环
主要知识点:while语句的一般形式、while语句实现循环举例、while语句实现循环时的注意事项
(3)用do…while语句实现循环
主要知识点:do…while语句的一般形式、do…while语句实现循环举例、do… while语句实现循环时的注意事项
(4)用for语句实现循环
主要知识点:for语句的一般形式、for语句实现循环举例、for语句的变形使用
(5)几种循环的比较和循环嵌套
主要知识点:显示器;打印机;其他输出设备。
(6)改变循环执行的状态
主要知识点:用break语句提前终止循环、用continue语句提前结束本次循环、break 语句与continue语句的区别
第六章 数组
1.教学基本要求
(1)掌握一维数组的定义和引用。
(2)学会二维数组的定义和引用。
(3)掌握字符数组的定义和引用。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生了解顺序存储的概念、理解一维、二维数组的概念、掌握将数组和循环结合起来,有效处理批量数据。
3.教学重点和难点
教学重点:一维数组的定义和引用;字符数组的定义和引用。
教学难点:二维数组的定义和引用。
4.教学内容
(1)怎样定义和引用一维数组
主要知识点:一维数组的概念、怎样定义一维数组、怎样引用一维数组元素、一维数组的初始化、一维数组程序举例
(2)怎样定义和引用二维数组
主要知识点:二维数组的概念、怎样定义二维数组、怎样引用二维数组元素、二维数组的初始化、二维数组程序举例
(3)字符数组
主要知识点:字符数组的概念、怎样定义字符数组、怎样引用字符数组元素、字符数组的初始化、字符串和字符串结束标志、字符数组的输入输出、使用字符串处理函数、字符数组程序举例
第七章 函数
1.教学基本要求
(1)掌握函数的定义、调用方法。
(2)理解函数的嵌套调用与递归调用。
(3)掌握数组作函数参数。
(4)理解局部变量和全局变量。
(5)理解变量的存储方式和生存期。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生理解模块化程序设计的概念、掌握函数的定义和调用、利用C语言的函数使用实现模块化程序设计。
3.教学重点和难点
教学重点:函数的定义、调用;数组作为函数参数。
教学难点:函数的嵌套、递归调用;局部变量和全局变量的应用。
4.教学内容
(1)为什么要用函数
主要知识点:函数的概念、模块化程序设计、系统函数
(2)怎样定义函数
主要知识点:为什么要自定义定义函数、用户自定义函数的方法
(3)调用函数
主要知识点:函数调用的形式、函数调用时的数据传送、函数调用的过程、函数的返回值
(4)对被调用函数的声明和函数原型
主要知识点:函数被调用应具备的条件、函数原型的概念和种类
(5)函数的嵌套调用
主要知识点:函数嵌套调用的概念、函数嵌套调用举例
(6)函数的递归调用
主要知识点:函数递归调用的概念、函数递归调用举例
(7)数组作为函数参数
主要知识点:数组元素作为函数参数、数组名作为函数参数、多维数组名作函数参数
(8)局部变量和全局变量
主要知识点:局部变量的概念和定义、全局变量的概念和定义
(9)变量的存储方式和生存期
主要知识点:动态存储方式与静态存储方式、局部变量的存储类别、全局变量的存储类别
第八章 指针
1.教学基本要求
(1)理解指针的概念和指针的定义方法。
(2)掌握变量的指针和指向变量的指针变量。
(3)掌握用指针访问所指向的变量。
(4)掌握指针与一维数组的关系。
(5)掌握字符型指针与字符型一维数组的关系。
(6)掌握字符型指针与常量字符串的关系。
(7)理解指针与二维数组的关系。
(8)理解二级指针的概念。
(9)理解二级指针与原变量的关系。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生理解指针的概念,掌握通过指针访问变量的方法,区别于以往的静态内存,理解动态内存分配的概念和优点。
3.教学重点和难点
教学重点:通过指针访问所指向的变量;函数指针的使用。
教学难点:指针与一维数组的关系;指针与二维数组的关系。
4.教学内容
(1)指针是什么
主要知识点地址的概念、直接访问、间接访问、指针的概念
(2)指针变量
主要知识点:使用指针变量的例子、怎样定义指针变量、怎样引用指针变量、指针变量作为函数参数。
(3)通过指针引用函数参数
主要知识点:数组元素的指针、在引用数组元素时指针的运算、通过指针引用数组元素、数组名作为函数参数、通过指针引用多维数组
(4)通过指针引用字符串
主要知识点:字符串的引用方式、字符指针作函数参数、使用字符指针变量和字符数组的比较
(5)指向函数的指针
主要知识点:什么是函数指针、用函数指针变量调用函数、怎样定义和使用指向函数的指针变量、用指向函数的指针作函数参数
(6)返回指针值的函数
主要知识点:返回指针值的函数一般形式、返回指针值得函数举例
(7)动态内存分配与指向它的指针变量
主要知识点:什么是指针数组、指向指针数据的指针、指针数组作main函数的形参
(8)动态内存分配与指向它的指针变量
主要知识点:什么是动态内存分配、怎样建立内存的动态分配、void指针类型
第九章 用户自定义数据类型
1.教学基本要求
(1)掌握结构体定义和使用。
(2)掌握结构体数组定义和使用。
(3)掌握结构体指针的使用。
(4)了解联合体定义和使用。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生理解自定义数据类型的概念,掌握C语言中结构体数据类型的定义和使用方法、初步理解记录的概念。
3.教学重点和难点
教学重点:结构体变量的定义和使用;结构体数组的定义和使用;掌握链表的定义与使用。教学难点:结构体类型指针。
4.教学内容
(1)定义和使用结构体变量
主要知识点:结构体类型的概念、定义结构体类型变量、结构体变量的初始化和引用
(2)使用结构体数组
主要知识点:定义结构体数组、结构体数组应用举例
(3)结构体指针
主要知识点:指向结构体变量的指针、指向结构体数组的指针、用结构体变量和结构体变量的指针作函数参数
(4)用指针处理链表
主要知识点:什么是链表、建立简单的静态链表、建立动态链表、输出链表
(5)共用体类型
主要知识点:共用体类型的概念、引用共用体变量的方式、共用体类型数据的特点
(6)使用枚举类型
主要知识点:枚举类型的概念、枚举类型使用举例
第十章 文件
1.教学基本要求
(1)掌握标准设备输入/输出函数的使用。
(2)掌握缓冲文件系统的使用。
2.要求学生掌握的基本概念、理论、技能
通过本章学习,通过本章教学使学生理解文件的概念、掌握利用编程对文件进行的读写,实现数据的磁盘存储。
3.教学重点和难点
教学重点:标准设备输入/输出函数(部分)的使用;文件的使用。
教学难点:文件的使用。
4.教学内容
(1)C文件的有关基础知识
主要知识点:文件的概念、文件名、文件的分类、文件缓冲区、文件指针类型
(2)打开与关闭文件
主要知识点:用fopen函数打开数据文件、用fclose函数关闭数据文件
(3)顺序读写数据文件
主要知识点:怎样向数据文件读写字符、怎样向数据文件读写一个字符串、用格式化的方式读写文件、用二进制的方式向文件读写一组数据
(4)随机读写数据文件
主要知识点:文件位置标记及其定位、随机读写数据文件
(5)文件读写的出错检测
主要知识点:ferror函数、clearerr函数
四、学时分配
1.讲授内容及学时分配
章序 |
内容 |
课时 |
备注 |
1 |
程序设计基础 |
2 |
第一学期 |
2 |
算法的表示与设计 |
4 |
第一学期 |
3 |
顺序程序设计 |
6 |
第一学期 |
4 |
选择结构程序设计 |
6 |
第一学期 |
5 |
循环结构程序设计 |
8 |
第一学期 |
6 |
数组 |
6 |
第二学期 |
7 |
函数 |
10 |
第二学期 |
8 |
指针 |
12 |
第二学期 |
9 |
用户自定义数据类型 |
6 |
第二学期 |
10 |
文件 |
4 |
第二学期 |
总计 |
|
64 |
|
2.实践内容及学时分配
序号 |
项目 名称 |
内容提要 |
学时 |
必/选开 |
1 |
程序编译环境安装与使用 |
1.程序编译环境的安装与启动 2.输入和编辑源程序 3.编译、连接和运行 |
2 |
必开 |
2 |
顺序结构程序设计 |
1.计算圆的各种数据 2.计算银行存款利息 |
2 |
必开 |
3 |
选择结构程序设计 |
1.计算分段函数 2.if和switch应用 |
4 |
必开 |
4 |
循环结构程序设计 |
1.字符统计 2.素数统计 3.图形打印 |
4 |
必开 |
5 |
数组的使用 |
1.“冒泡法”和“选择法”排序 2.统计文章字符 |
4 |
必开 |
6 |
函数的使用 |
1.学生成绩统计 2.“冒泡法”对字符排序 3.字符串统计 |
4 |
必开 |
7 |
指针 |
1.打印二维数组 2.用指向指针的指针方法对n个字符串排序并输出 |
6 |
必开 |
8 |
结构体的使用 |
1.创建学生信息结构体 2.链表练习 |
6 |
必开 |
总计 |
32 |
|
五、主用教材及参考书
(一)主用教材:
《C程序设计》主编:谭浩强 出版社:清华大学出版社 出版时间:2010年6月。
《计算机导论》主编:黄国兴 出版社:清华大学出版社 出版时间:2008年。
(二)参考书:
1.《C语言程序设计》 主编:郝玉洁 出版社:机械工业出版社。
2.《C程序设计》 主编:王丽娟 出版社:西安电子科大出版社。
3.《PROGRAMMING LANGUAGE》 主编:Brian W.Kernighan 出版社:机械工业出版社。