《程序设计基础A1A2》教学大纲

2013版)

 

 

 

 

 

课程编码:06111002030611100303

课程名称:程序设计基础A1,程序设计基础A2

学时/学分:9648+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)什么是计算机语言

主要知识点:计算机语言的概念、机器语言、符号语言、高级语言、高级语言的发展历程。

3C语言的发展及其特点

主要知识点: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)数据的表现形式及其运算

主要知识点:常量和变量、数据类型综述、整型数据、字符型数据、浮点型数据、怎样确定常量的类型、运算符和表达式。

3C 语句

主要知识点:控制语句、函数调用语句、表达式语句、空语句、复合语句、赋值语句、赋值运算符、复合的赋值运算符、赋值表达式、赋值过程中的类型转换、赋值表达式与赋值语句、变量赋初值。

4数据的输入与输出

主要知识点:输入输出举例、有关数据输入输出的概念、用printf函数输出数据、用scanf函数输入数据、字符数据的输入输出

第四章    选择结构程序设计

1.教学基本要求

1)理解和掌握条件判断的概念。

2)掌握简单if语句、if…else语句、if… else if …else语句

3)掌握3if语句的混合嵌套使用。

4)掌握switch语句。

2.要求学生掌握的基本概念、理论、技能

通过本章学习,通过本章教学使学生掌握条件判断的概念,并能利用C语言提供的条件语句编写选择结构程序。

3.教学重点和难点

教学重点:掌握3if语句的格式、执行过程和用法;掌握if语句的互相;掌握switch语句的多分支选择结构程序设计。

教学难点:if语句嵌套及switch语句。

4.教学内容

1选择结构和条件判断

主要知识点:选择结构和条件判断的的概念

2if语句实现选择结构

主要知识点:if语句处理选择结构举例、if语句的一般形式

3关系运算符和关系表达式

主要知识点:关系运算符及其优先次序、关系表达式

4逻辑运算符和逻辑表达式

主要知识点:逻辑运算符及其优先次序、逻辑表达式、逻辑性变量

5条件运算符和条件表达式

主要知识点:显示器;打印机;其他输出设备。

6选择结构的嵌套

主要知识点:if语句的相互嵌套

7switch语句实现多分支选择结构

主要知识点:switch语句的语法格式,多分支选择结构利用switch语句实现

第五章    循环结构程序设计

1.教学基本要求

1)熟练掌握whiledo…whilefor三种循环语句的使用。

2)学会使用循环的嵌套结构。

3)使用break语句和continue语句。

4)了解几种循环的异同。

2.要求学生掌握的基本概念、理论、技能

通过本章学习,通过本章教学使学生掌握程序设计中循环的概念、能利用C语言中whiledo…whilefor三种循环及相互嵌套实现循环结构程序设计。

3.教学重点和难点

教学重点: whiledo…whilefor三种循环语句的使用和相互嵌套。

教学难点:循环的嵌套使用。

4.教学内容

1)为什么需要循环控制

主要知识点:循环控制的概念

2)用while语句实现循环

主要知识点:while语句的一般形式、while语句实现循环举例、while语句实现循环时的注意事项

3do…while语句实现循环

主要知识点:do…while语句的一般形式、do…while语句实现循环举例、do… while语句实现循环时的注意事项

4for语句实现循环

主要知识点: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.教学内容

1C文件的有关基础知识

主要知识点:文件的概念、文件名、文件的分类、文件缓冲区、文件指针类型

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.计算分段函数

2ifswitch应用

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程序设计》主编:谭浩强   出版社:清华大学出版社   出版时间:20106月。

《计算机导论》主编:黄国兴 出版社:清华大学出版社 出版时间:2008年。

(二)参考书:

1.C言程序设计 主编:郝玉洁               出版社:机械工业出版社。

2.C程序设计     主编:王丽娟               出版社:西安电子科大出版社。

3.PROGRAMMING LANGUAGE 主编:Brian W.Kernighan  出版社:机械工业出版社。