C++教学大纲.docx
- 文档编号:1929453
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:22
- 大小:122.83KB
C++教学大纲.docx
《C++教学大纲.docx》由会员分享,可在线阅读,更多相关《C++教学大纲.docx(22页珍藏版)》请在冰点文库上搜索。
C++教学大纲
C++教学大纲(总23页)
计算机科学与技术专业
C++语言基础教程
教学大纲
信息技术学院
2009年2月
编写说明
C++语言是目前世界上最流行和实用的一种计算机高级程序设计语言,它具有丰富的数据类型和各种运算功能,带有庞大的函数库和类库,既支持面向过程的程序设计,又支持面向对象的程序设计,因此是目前进行计算机软件开发的主要工具之一,正在成为普通高等院校开设程序设计课程的首选语言。
《C++语言基础教程》在计算机科学中是一门基础课程,它将为数据结构、操作系统、软件工程、面向对象程序设计、计算机网络等所有后续课程打下坚实的计算机语言和程序设计的基础。
《C++语言基础教程》目前尚无全国性统编教学大纲,为了规范教学,提高教学质量,在参考其他兄弟院校相关教学大纲的基础上,编写了本大纲。
本大纲的编写目的除了给出教学时应参考的教学目的、教学重点和难点外,也在大纲中提供了各个章节的内容要点,以为读者学习时提供指导。
学习C++语言的最好办法是上机实践,掌握C++语言的语言规范并不等于掌握了C++语言。
C++语言十分灵活,要在实践中不断提高应用水平。
《C++语言基础教程》作为一门专业技术基础课程,其内容适合于计算机科学与技术专业、信息管理与信息技术专业以及相关专业的本科生和专科生使用。
本大纲编写人:
梁晓林。
本大纲修订时间:
二OO九年二月
课时分配表
课程总时数:
68学时
章目
内容
讲课时数
上机时数
第一章
C++语言概述
2
2
第二章
数据类型和表达式
5
第三章
流程控制语句
7
2
第四章
数组与字符串
8
4
第五章
指针
7
4
第六章
函数
8
2
第七章
结构与联合
4
第八章
类与对象
4
第九章
类的继承与多态性
4
第十章
C++流
3
2
合计
52
16
第一章C++语言概述
【教学目的和要求】本章是全书的综述,要求学生了解C++语言出现的历史背景、当前发展概况、C++语言的特点等内容;掌握C++语言程序的格式、上机环境和程序的编译执行。
【教学重点】C++语言程序的格式。
【教学难点】VC++语言程序的上机环境和程序的调试方法。
【教学方法】讲授为主,通过上机熟悉VC++集成开发环境。
【思考题】
1.一个标识符中的首字符必须是什么字符其余位置上的字符必须是什么字符
2.C++语言分为哪几类?
3.上机运行一个程序需要经过哪些阶段?
【讲授内容】
引言
C++语言是目前世界上公认的最流行、最实用的高级语言;它是对C的继承和扩展;是既面向过程又面向对象的语言。
本书是以VisualC++为蓝本和操作界面的。
C++字符集
同自然语言一样,具有字、词、句、章的基本成分和结构,C++具有规定的字符集,其中包括:
英文字母、数字符号、标点符号、运算符、特殊符号等。
C++单词
由C++字符按照一定的组词规则构成的C++单词。
其中包括:
保留字、标识符、常量、运算符、标点符号等。
C++语句
单词按照一定的语法规则排列起来形成语句。
除复合语句外,必须以分号结束。
C++语句有类型定义语句、变量定义语句、函数原型语句、表达式语句、复合语句、选择语句、循环语句、跳转语句等。
C++函数
函数是指能够完成某一功能的功能模块。
C++函数分为系统函数和用户函数。
系统函数由C++系统提供,用户可以直接使用;用户函数是指由编程者(用户)在程序中编写具有相对独立功能的模块。
函数定义格式:
函数类型函数标识符(参数表)函数体。
主函数:
每个程序有且仅有一个,一般格式为:
voidmain([void]){语句}
C++程序
一个C++程序是由:
一个主函数和若干个用户函数等组成的一个或多文件,每个扩展名为.cpp。
C++程序可以有注释一提高程序的可读性,格式为:
6
浮点表示:
-30E7,4e-12,即“定点数+E(或e)+指数”——科学技术法
五、地址常量(指针常量)
变量
1.变量定义语句:
类型关键字变量标识符[=初值表达式],…;
2.符号常量定义语句:
与变量定义类似,const为符号常量开头的关键字
const类型关键字常量标识符=初值表达式,…;
运算符
1.运算符:
分为单目、双目、三目,每组均有优先级与结合性的问题,优先级共分为16个级别,结合性分为左结合和右结合两种。
双目算术运算符:
+,-,*,/,%
赋值运算符:
一般赋值和复合赋值运算符,其结合性从右向左
增1(++)和减1(--)运算符
求类型或数据长度运算符:
sizeof()
强制类型转换:
通过类型关键字,转换成指定的类型
关系运算符6个:
>,>=,<,<=,==(等于),!
=(均为双目运算)
逻辑运算符3个:
&&||!
(优先级为:
!
->&&->||)
条件运算符(三目运算):
x>y
z=x:
z=y;等价于z=(x>y
x:
y);
逗号运算符a++,b++,c--;
圆括号运算符x/(y+2) (用来改变优先级,可以帮助更好的理解表达式)
2.表达式:
由操作数和运算符进行有效连接而成的式子;可以分为一般表达式、函数调用表达式;一般表达式:
数值表达式,关系表达式、逻辑表达式,后两者为逻辑值;表达式计算:
按运算符的结合性和优先级计算。
函数
常用数学函数(在中有函数原型说明):
abs(a),fabs(x),sin(x),con(x),tan(x),sqrt(x),exp(x),pow(x,y),log(x)lnx,floor(x),ceil()等
随机函数():
rand(),srand(s)
终止运行函数():
exit
(1)执行时正常结束程序执行,返回C++主操作界面窗口;exit(0)执行时非正常结束
函数调用或称函数调用表达式:
函数名(实参表)
第三章流程控制语句(选择、循环、跳转)
【教学目的和要求】本章既是C++语言的基础内容,又是全书的重点内容,因为本章主要讲述程序执行语句,是将来我们编写程序的基础。
本章要求学生掌握C++语言主要程序执行语句的用法。
【教学重点】C++语言主要程序执行语句的用法。
【教学难点】三类循环语句的用法。
【教学方法】讲授与上机相结合。
【思考题】
1.比较三类循环语句的功能和使用场合。
2.结合课后大量程序实例加以练习,完成课后作业。
【讲授内容】
if语句—条件语句
一、if语句
语句格式:
1、if(表达式)
2、语句;
3、if(表达式)
4、语句;
5、else
6、语句;
注意:
else子句不能单独使用;“语句;”可以是任何类型的语句;构成复合语句(用{}括起来的语句)的条件是什么;书写时要注意格式。
二、if语句的嵌套
1、if(表达式1)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
……
elseif(表达式n)语句n;
else表达式n+1;
2、
if(表达式1)
if(表达式2)
……
if(表达式n)
语句n;
else语句n;
……
else语句2;
else语句1;
switch语句---开关语句、情况语句
一、语句格式
switch(条件表达式)
{
case常量表达式1:
语句1;[break];
case常量表达式2:
语句2;[break];
……
case常量表达式n:
语句n;[break];
default语句n+1;[break];
}
二、注意事项
1、case中break;语句的功能。
2、default部分的功能。
3、若干个case所执行的内容相同时,如何办?
4、
5、
6、所有常量表达式的值必须互不相同;case与default的顺序可以自由书写;最后的break;可以省略。
for语句
语句格式:
for([表达式1];[表达式2];[表达式3])语句
while语句
语句格式:
while(条件表达式)语句
do语句
语句格式:
do语句while(表达式);
跳转语句
1.goto语句——格式:
goto语句标号;
2.continue语句——只能用在循环语句中,用来终止本次循环
3.break语句——只能用在循环和switch语句中,用来终止整个循环
4.return语句——返回语句
第四章数组与字符串
【教学目的和要求】本章是C++语言中较重要的内容,要求学生掌握C++语言中一维、多维数组的定义和引用、字符串的处理。
【教学重点】一维、二维数组的定义和引用。
【教学难点】如何利用数组处理字符串。
【教学方法】讲授与上机相结合。
【思考题】
1.数组如何在内存中进行存储的,其存储长度如何计算?
2.字符串与数组具有何联系如何存储
3.数组都有哪些具体的应用?
【讲授内容】
数组的概念
数组:
具有相同数据类型的一组数据。
按照数据之间的结构数组有一维、二维、三维等。
数组元素是指数组中的一个数据,用数组名和下标来表示。
数组长度是指数组中所含元素的个数,由应用需要而定(≥1)。
例如定义:
inta[10];
说明:
下标从0开始,10代表数组长度。
数组的定义
数组需要“先定义,后使用”。
一、一维数组的定义:
类型名数组名[常量表达式] [={初始化数据表}];
定义数组,系统将在内存中为它分配一块含有n个存储单元的连续存储空间,每个存储单元包含的字结束等于元素类型的长度。
下标变量,即数组元素:
数组名[下标表达式]
二、二维数组的定义:
类型名数组名[常量式1][常量式2][={{初值表1},{初值表2},…}];
双下标变量,即二维数组元素的表示,语法格式:
数组名[行下标式][列下标式]
二维数组元素按“行”存储。
例如定义:
inta[3][4];
a[0][0]a[0][1]a[0][2]a[0][3]
a[1][0]……
a[2][0]……a[2][3]
数组的应用
数组的应用非常广泛:
第一方面:
利用数组进行数值计算;
第二方面:
利用数组进行统计;
第三方面:
数据排序;
第四方面:
查找数据。
字符串
1.字符串的概念:
字符串是指用双引号括起来的一串字符,字符串中双引号内所包含字符的个数称为字符串的长度。
字符串通常是用一维字符数组存储,系统也需要为字符串分配一个空间来存储,无论是用户,还是系统存储,均必须在字符串最后存储一个空字符‘\0’作为字符串的结束。
字符串既可以通过下标变量输入和输出,也可以进行整体输入和输出。
2.字符串函数:
是对字符串进行操作的一组函数。
其原型说明位于头文件〈〉中。
其中有求长度函数strlen(a)、字符串拷贝strcpy(c,a)、字符串连接strcat(c,b)、字符串比较strcmp(a,b)等。
第五章指针
【教学目的和要求】本章是C++语言中非常重要的一部分内容,是C++语言的精华所在。
要求学生非常熟练地掌握C++语言中指针变量的定义、作用和各种使用方法。
【教学重点】指针的定义和引用。
【教学难点】利用指针处理字符串、指针在函数中的应用。
【教学方法】讲授与上机相结合。
【思考题】
1.区分指针和指针变量的含义。
2.区分两个运算符:
*(指针运算符)和&(取地址运算符)。
3.区分下列表示方法:
(&a,p,&*p)和(a,*&a)。
【讲授内容】
指针的概念
指针是指计算机内部存储器中一个存储字节的地址。
一个变量的(起始)地址称为该变量的指针。
在C++中每个指针都与一个具体的数据类型相联系,即每个指针为内存中存储该类型的一个数据的地址,具体为存储该数据所占用存储空间的首字节地址。
指针变量
指针变量:
存放另一个变量的地址的变量。
一、指针变量的定义格式:
(同普通变量)
类型名*变量名[=初值表达式],…;
如:
inta,*p;p=&a;或inta,*p=&a;
三、指向常量的指针:
定义的指针所指向的对象是常量,是不可修改的。
定义格式为:
const类型名*常量指针名[=初值表达式];
四、指针常量:
指针不能被修改,所指对象能修改,即指针不可再指向其它对象,但它所指向的对象是可以修改的。
定义格式为:
类型名*const常量指针名[=初值表达式];
指针运算
指针运算包括赋值(=)、取地址(&)、间接访问(*)、增1(++)和减1(--)、加(+)和减(-)、加赋值(+=)和减赋值(-=)、比较(==,!
=,<,<=,>,>=)。
注意区分两个运算符:
*(指针运算符)和&(取地址运算符);区分下列表示方法:
(&a,p,&*p)和(a,*&a)。
指针与数组
1.指针与一维数组
一维数组名是指向该数组第一个元素的指针,为指向元素的指针类型。
2.指针与二维数组
可以把二维数组看作为一维数组的嵌套:
例如定义chara[5][10];二维数组可看作char[10]类型的一维数组a[5],其值为指向该一维数组的指针;而一维数组a[5]的每个元素为a[i][10],]为char类型的数据。
数组名是指针常量:
a,a[0],&a[0][0]值相同,但类型不同,a是字符数组指针类型char(*)[10],a[0],&a[0][0]均为字符指针类型char*
引用变量
引用变量同一般的变量,只是加了一个&号。
定义格式:
类型名&引用变量名=已有同类变量;
引用主要用途用于定义函数参数:
如:
intAdd(int&x,int&y){returnx+y;}
inta=5,b=8,c;c=Add(a,b);
动态存储分配
1.变量的静态分配:
指变量定义语句定义的变量,在编译阶段由系统分配存储空间。
2.变量的动态分配:
在运行阶段,执行new运算时进行的存储分配,是在程序运行阶段完成的,所以称之为动态分配。
new运算格式:
new类型名[(初值表达式)]new类型名[数组长度]
动态空间的释放:
delete指针变量delete[]指向动态数组的指针
第六章函数
【教学目的和要求】本章也是C++语言中较重要的内容,要求掌握C++语言中函数的定义、函数说明、函数格式、参数的引用、变量的存储类型及其使用范围。
【教学重点】函数说明、参数的引用、变量的存储类型及其使用范围。
【教学难点】变量的存储类型。
【教学方法】讲授与上机相结合。
【思考题】
1.函数调用的三种形式是什么?
2.使用函数的递归调用求Fibonacci数列。
【讲授内容】
函数的定义
函数定义格式:
类型名函数名(参数表)函数体。
函数的调用
1.调用格式:
函数名(实际参数表)
2.调用过程分为三步:
参数传递(实虚结合)
执行函数体(当遇return返回)
返回(返回一个值到调用表达式的位置)
3.参数传递:
即:
实参向形参的传递,又分为以下两种情况:
值传递:
非引用参数的传递
原型为intfa(intx,char*a);调用fa(35,p);
引用传递:
引用参数的传递
原型为char*fb(int&x,char*&y);调用fb(xx,yy);
变量的作用域
变量的作用域分为:
全局、文件、函数、块作用域。
全局作用域:
:
在所有函数定义之外定义的变量,在该程序的所有文件里都可用。
文件作用域:
在所有函数定义之外定义的变量,且使用static定义的变量,只在本文件中有效。
函数作用域:
专指语句标号,供goto语句作为转移使用,只能在本函数内使用,对于其他函数无效。
块作用域:
在一条复合语句内定义,作用域只在该语句内有效,该复合语句称为块,该变量只能在本语句内使用,之外就不起作用了。
递归函数
一个函数在它的函数体内直接或间接地调用自己称为函数的递归调用。
函数重载
具有相同的函数名,而具有不同的参数表的函数,叫函数重载或重载函数。
描述具有相同功能,但处理的数据类型是不同的这一类函数就称为函数重载,或利用函数重载。
函数模板
函数模板是带有类型参数的函数定义,类型参数由template成分给出。
定义格式为:
template<类型参数表>函数类型
函数名(形式参数表)函数体
函数指针
函数名是指向该函数执行代码的指针(由于函数通过编译后对应一段代码)。
intfa(intx,inty);对应int(*)(int,int)
定义函数指针变量并赋予函数指针后,函数指针就可以同函数名一样使用。
int(*fp)(int,int)=fa;调用fa(a,b);与fp(a,b);两者是等效的
函数的形参表中也可以使用值参数,引用参数,这里也可以是函数参数(使同类型的函数名或函数指针)。
第七章结构与联合
【教学目的和要求】本章要求熟练掌握C++语言中结构和联合的定义、引用。
【教学重点】结构和联合的定义、引用。
【教学难点】结构和联合在数据结构中的应用。
【教学方法】讲授与上机相结合。
【思考题】
1.结构定义语句的格式是什么?
2.结构类型变量的说明有哪三种方法?
3.联合与结构有何区别它是如何定义的
【讲授内容】
结构的定义
结构是一种构造类型,它是由若干“成员”组成的。
1.结构的定义格式:
struct结构类型名{
成员类型1成员名1;
成员类型2成员名2;
……
成员类型n成员名n;
};
例:
structstu
{
intnum;
charname[20];
charsex;
floatscore;
2.结构类型的长度等于各个数据成员的长度之和。
结构变量的定义和初始化
三种方法:
1)先定义结构,再说明结构变量
structstu
{
intnum;
charname[20];
charsex;
floatscore;
};
structstuboy1,boy2;
2)在定义结构类型的同时说明结构变量
structstu
{
intnum;
charname[20];
charsex;
floatscore;
}boy1,boy2;
3)定义无名结构类型的同时定义变量
struct
{
intnum;
charname[20];
charsex;
floatscore;
}boy1,boy2;]
结构成员的访问操作
1.直接成员访问使用点操作符:
结构变量名.成员名;
2.间接成员访问使用箭头操作符:
如stu*px=&boy2;cout<
3.结构的赋值操作:
同其他类型的变量一样可以赋值。
使用结构的程序举例
#include<>structAB{chara[10];intb;};voidmain(){ABr[5]={{"xxk",35},{"wrong",45},{"xc",23},{"tsh",18},{"chs",38}};intk=0;for(inti=1;i<5;i++) if(r[i].b 结构与函数 函数的参数也可以为结构类型。 结构与链表 结构中的指针域可以指向本身结构类型,这样由指针就构成了链表 structIntNode{intdata;IntNode*next;}; 链表中的结点通常通过动态分配产生 IntNode*p1=newIntNode; 结构与操作符重载 C++操作符不仅能够用于预定义数据类型,经操作符重载函数定义后,也可以用于用户自定义数据类型。 联合 联合的定义格式与结构相同,只是开始关键字不同: struct—>unionunionABC{inta;doubleb;char*c;}x; 类型长度为所有成员类型长度的最大值; 联合对象的定义格式与访问方式均与结构相同; 任一时刻只有一个成员有效,这一点不同与结构,原因是分配的最大空间数不一样,每一个成员均是通过该空间来访问的。 这是访问其他成员是无效的。 第八章类与对象 【教学目的和要求】本章是C++语言中面向对象的内容,要求熟练掌握C++语言中类的定义,数据成员和函数成员的定义和使用,以及构造函数、析构函数和友元函数的功能和使用。 【教学重点】数据成员和函数成员的访问。 【教学难点】构造函数、析构函数的定义和功能。 【教学方法】讲授为主。 【讲授内容】 类的定义 类类型的定义格式: class类名{成员表};其中,{成员表}为类的定义体。 成员分为数据成员和函数成员(又称为成员函数),每个成员又带有访问属性,分为3种访问属性(private,public,protected),省略时默认为: private。 类类型的长度等于所有数据成员长度之和(同结构)。 类对象的定义: 同结构类型的定义一样,既可以利用类名定义对象定义类类型的同时定义对象。 类成员既可以直接访问,也可以间接的访问。 构造函数 构造函数是用户定义的类中的一种成员函数,没有返回类型,函数名与类名相同,类对象定义时将被自动调用,其功能是用构造函数来实现对类对象的初始化。 析构函数 析构函数的函数名也与类名相同,但前面加波折号,参数表为空。 友元函数和友元类 以friend作为声明的友元函数能够访问类中的私有成员;友元类也能够访问类中的私有成员。 第九章类的继承与多态性 【教学目的和要求】本章也是C++语言中面向对象的内容,要求熟练掌握C++语言中类的继承的含义,派生类的定义格式,类的多态性和类模板等概念。 【教学重点】派生类的定义格式。 【教学难点】类的多态性和类模板等概念。 【教学方法】讲授为主。 【讲授内容】 类的继承 类是一种抽象数据类型,是对具有共同属性和行为的对象(事物)的抽象描述,属性被描述为类的数据成员,行为被描述为类的函数成员(成员函数)。 一个类可以继承一个或多个类,这个新类被称为继承类或派生类,被继承的类称为基类或父类。 派生类的定义格式: class派生类名: 基类表{成员表}; 无论派生类采用何种继承方式,基类中的私有成员在派生类中都不能用成员操作符访问,只能通过基类中提供的成员函数访问。 派生类的长度等于所有基类的长度之和(8),再加上派生类中定义的所有数据成员的长度之和。 类的虚函数与多态性 在类的成员函数的定义中,若在开始加上virtual关键字则称为虚的成员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 教学大纲