c++程序设计教案.docx
- 文档编号:4618230
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:94
- 大小:178.94KB
c++程序设计教案.docx
《c++程序设计教案.docx》由会员分享,可在线阅读,更多相关《c++程序设计教案.docx(94页珍藏版)》请在冰豆网上搜索。
c++程序设计教案
saw锯sawedsawed/sawn
spread传播spreadspread
win获胜wonwon
saw锯sawedsawed/sawn
feed喂fedfed
burn燃烧burnt/burnedburnt/burned
may可以might×
mistake误认mistookmistaken
stand站立stoodstood
flee逃跑fledfled
《C++程序设计》教案
海南软件职业技术学院
HainanSoftwareProfessionInstitute
(2006-2007学年度第一学期)
教师姓名:
季文天
系部:
软件工程系
授课专业:
软件技术
授课班级:
05软件技术3班
课题01:
VisualC++6.0开发环境
一、教学目标:
1.掌握VisualC++6.0开发工具的选单、工具栏、项目、工作区等概念
2.掌握使用VC编写控制台应用程序
3.掌握使用VC进行程序调试
二、教学重点:
1、掌握VisualC++6.0开发工具的选单、工具栏、项目、工作区等概念
三、教学难点:
1、使用VC编写控制台应用程序。
2、使用VC进行程序调试
四、课时安排:
2节课
五、教具准备:
多媒体教室
六、教学方法:
讲授
七、教学过程:
(一)、复习导入
VisualC++是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化开发环境。
VisualC++6.0是在以往版本不断更新的基础上形成的,由于其功能强大、灵活性好、完全可扩展以及具有强有力的Internet支持,在各种C++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
(二)、讲授新课
1、开发环境概述
:
板书或幻灯片演示下图
:
VisualC++6.0开发环境包括:
标题栏
工具栏
选单
项目工作区窗口
输出窗口
状态栏
文档窗
依次介绍各项功能,详细介绍选单、工具栏、项目工作区。
2、简单的控制台应用程序
使用Appwinzard创建一个控制台应用程序,使学生理解“工程”概念,熟悉项目的程序框架,以及如何添加程序代码、编译、运行。
以下面程序为例,讲述如何建立控制台应用程序:
【例Ex_Hello】
【运行结果】:
【例Ex_Hello】利用投影演示P18例Ex_Hello。
3、程序调试
在软件开发过程中,大部分的工作往往体现在程序的调试上。
调试一般按这样的步骤进行:
“修正语法错误—设置断点—启用调试器—控制程序运行—查看和修改变量的值”
修正语法错误
调试最初的任务主要是修正一些语法错误,比如:
⏹未定义或不合法的标识符
⏹数据类型或参数类型及个数不匹配。
设置断点
用C++调试的断点可以有以下类型:
⏹为之断点
⏹数据断点
⏹条件断点
启用调试器
VisualC++6.0创建的项目,系统会自动为项目创建Win32Debug版本的默认配置,选择”build”选单---“startdebug”---“Go”、”stepinto”、“Runtocursor”命令,就可以启动调试器了。
控制程序运行
可以通过”stepinto,stepover,stepout,runtocursor”控制程序运行。
查看和修改变量的值
在程序调试的时候VC会自动显示”Watch”和”Variables”两个调试窗口,通过这两个窗口可以查看或修改当前运行程序的变量的值。
课题02:
C++数据类型、表达式、语句
一、教学目标:
1.掌握C++程序结构、基本组成
2.掌握C++的基本数据类型、基本输入/输出
3.掌握C++运算符、表达式
4.掌握C++基本语句
二、教学重点:
1.C++程序结构、基本组成
2.C++基本数据类型、输入输出
三、教学难点:
1.C++运算符、表达式
2.C++基本语句
四、课时安排:
2节课
五、教具准备:
多媒体教室
六、教学方法:
讲授
七、教学过程:
(一)、复习导入
C++是在20世纪80年代初期由贝尔实验室设计的一种在C语言的基础上增加了面向对象支持的语言,她是目前应用最为广泛的编程语言。
今天我们来学习他的基本结构、数据类型、运算符和表达式、基本语句。
(二)、讲授新课
1、C++程序结构
一个C++程序往往由预处理命令、语句、函数、变量和对象、输入与输出以及注释几个部分组成。
预处理命令
包括:
宏定义命令、文件包含命令和条件编译命令
语句
语句是组成程序的基本单元
函数
一个C++程序是由若干个函数组成。
一个程序中有且仅有一个主函数main.
变量和对象
C++是面向对象的语言,所以在C++中相比C语言多了对象,她是“类”的实例
输入输出
程序中总是少不了输入和输出语句。
注释
注释可以提高程序的可读性、帮助程序员理解,在程序运行中不执行。
在编写C++程序时,还要注意程序的书写风格,要注意缩进和注释。
在编写程序时,标识符应该遵循以下原则:
合法性
有效性
异读性
2、基本数据类型
C++数据类型分为基本数据类型、派生类型以及复合类型3类。
基本数据类型包括:
char
int
float
double
以及上述类型的变种,包括
short
long
signed
unsigned
void
P29表2.1列出了C++的基本数据类型
根据数据在程序中的可变性,我们将数据分为:
常量
⏹整型常量
⏹浮点型常量
⏹字符常量
⏹字符串常量
⏹符号常量
变量
⏹变量定义
⏹变量的初始化
要注意一个未初始化的变量不是没有数值,而是取决于变量在系统中的存储形式,她可能是系统的默认值或无效值。
3、基本输入、输出
C++中是通过标准的输入流cin和标准输出流cout来实现数据的输入输出。
【举例:
Ex_CoutEnd】
【举例:
Ex_Algorism】
4、运算符和表达式
C++用来记述运算的符号称为运算符,按照操作数的个数可以分为:
⏹单目运算符
⏹双目运算符
⏹三目运算符
根据其功能可以分为:
⏹算术运算符
⏹赋值运算符
⏹关系运算符
⏹逻辑运算符
⏹位运算符
变量、常量通过一个或多个运算符组合起来就构成了表达式,比如有关系运算符构成的表达式成为关系表达式。
5、基本语句
C++提供了如表达式语句、复合语句、选择语句和循环语句等,满足了结构化程序设计所需要的3中基本结构。
⏹选择语句
⏹条件语句ifelse
⏹开关语句switch
⏹循环语句
⏹while
⏹do…while
⏹for
以上基本语句和C语言保持一致。
课题03:
数组
一、教学目标:
1.了解构造类型的意义
2.了解数组的概念
3.掌握一维数组、多维数组的定义
二、教学重点:
1.一维数组的定义
2.数组的基本操作
三、教学难点:
1.多维数组将维处理过程及多维数组的存储
2.字符串数组的使用
四、课时安排:
2节课
五、教具准备:
多媒体教室
六、教学方法:
讲授
七、教学过程:
(一)、复习导入
在计算机所处理的数据中,最常见的,也是最需要由计算机高速处理的数据是成批出现的同一类型的数据,C++语言中把这类数据称为数组。
例如:
·监测系统在一段时间内获得的检测、采样值,可能是int型或float型数
据的数组;
·一个管理系统的数据库,可能是一系列结构类型(记录)数据的序列;
·一幅电视图像,可能是其每个像素的颜色及灰度值(整型数)的二维阵列。
任何一种类型的一批数据,都可以组成数组,例如int型,float型,char型数据可以组成数组;这些基本类型的派生类型(如long型,double型,unsignedchar型)的数据,枚举、结构、联合类型的数据,以至由用户或系统定义的类(类型)的对象,都可以组成数组。
(二)、讲授新课
1、一维数组
由n个同一类型数据组成的一维序列,构成一维数组,一维数组的下标为0,⋯,n-1。
1.一维数组的说明
任何一种已知类型数据都可说明为数组,数组说明的格式为:
<类型名><数组名>[<元素数>]={<初值表>};
类型名:
可以是基本类型名,基本类型的派生类型名,类名,枚举类型名,
结构,联合类型名(也可以是枚举、结构联合的类型说明)。
关于指针数组将在下节说明。
还有数组类型的数组就是多维数组了,也将在下面介绍。
数组名:
标识符,数组名有两个附加作用:
(1)是表示数组元素的下标变量。
如array[2]表示数组的第三个元素。
(2)它还是一个指向数组的首元指针。
元素数:
一个正整数,指出数组的元素个数,或数组的大小(size)。
元素数要用方括号“[]”括起来。
方括号[]不可缺省,元素数则有时可缺省,这时必须赋初值,系统按所赋的初值个数确定数组的大小。
初值表:
可缺省。
是由花括号{,}括起来且用逗号‘,’分开的初始化常
量值。
例如:
intlist[100],A[10][10],B[]={4,3,2};
charch[26];
complexcom[4]={(3.2,4.7),(0.0,0.0)};
其中,数组list[100]未赋初值。
数组A[10][10]为一个二维数组,未赋初值。
数组B[]已赋初值,元素数为3。
数组com[4]是用户定义的complex类型的数组,数组有4个元素,其中前
两个元素已赋初值,初值分别为(3.2,4.7),(0.0,0.0)。
2.数组的操作——下标变量
C++语言未提供对于数组整体进行操作的运算符和运算。
对于数组的操作是
通过对于其元素,即下标变量进行的。
下标变量的格式为:
<数组名>[<下标>]
下标:
整数,或整型表达式,其取值范围为0~n-1,n=数组元素总数,例
如:
intA[4];
共有四个下标变量:
A[0],A[1],A[2],A[3]。
对于下标变量可进行下列操作。
(1)赋值。
可以三种方式进行:
①初始化:
intA[4]={1,2,3};
相当于一次为A[0],A[1],A[2]赋值为1,2,3。
②赋值语句:
A[3]=4*A[1];
相当于把4*2=8赋值A[3]。
③输入语句:
cin>>A[0];
或
for(inti=0;i<4;i++)cin>>A[i];
后者可通过键盘操作,为数组的四个元素依次赋值。
(2)一般运算。
下标变量可与同一类型的一般变量一样参加它所允许的运算。
如:
A[0]+=A[2]++;
cout<<A[0]<<””<<A[1]*A[2];
等等。
下标也可以是一个表达式,如:
intA[4]={1,2,3,4};
A[3]=A[A[2]-A[1]]*4;
下标表达式应注意其值应保持在0~n-1范围之内。
2、多维数组
若干同一类型的数据m列n行的矩阵,则可称为二维数组,二维数组亦可视为一维数组的数组。
intA[m][n];
说明了一个二维数组,它有m×n个元素,它也可以视为由n个一维数组intA[m]组成的(一维)数组。
类似地,还可以说明三维,四维数组,二维以上的数组统称为多维数组。
1.说明和初始化
多维数组的说明(以二维为例):
<类型名><数组名>[<行数>][<列数>]
类型名:
同前节说明。
数组名:
同前节说明。
行数:
正整数。
列数:
正整数。
例如:
charch[2][3];
该二维数组共有2行3列,元素个数为2*3=6。
在二维数组中,为数组赋初值的方式有:
inta[2][3]={{1,2,3},{4,5,6}};
亦可写为:
inta[2][3]={1,2,3,4,5,6};
二者效果是一样的。
系统将按逐行的次序顺序为各元素赋值。
其次序为:
a[0][0],a[0][1],a[0][2],
a[1][0],a[1][1],a[1][2]
对于三维以上的高维数组,其赋值方法是一样的。
2.二维数组的操作
对于二维数组的操作,同样是通过对其元素即下标变量的操作来进行的。
操作中应注意:
(1)注意下标表达式的取值范围:
charA[m][n];
则下标变量A[i][j]中i的值应在0~m-1之间,j的值应在0~n-1之间。
(2)当只有一个下标时:
A[i](O<=i<=n-1)
表示的是一个一维数组,其元素个数为n,这些元素可用下标变量:
A[i][0],A[i][1],⋯,A[i][n-1]
来表示。
(3)更高维的数组,其定义和操作类似。
3、数组与字符串
从表面上看,一个字符串就是一个字符数组,但在C++语言中,二者并不完全相同,读者在涉及到字符串处理时,必须注意。
字符串是一个以串尾符'\0'结尾的字符类型数组。
从下面的例子可看出其区别:
charstring1[7]="China";
charstring2[]="China";
charstring3[7]={'c','h','i','n','a'};
charstring4[7]={'c','h','i','n','a','\0'};
这说明了四个字符型数组,它们是互不相同的。
课题04:
结构类型
一、教学目标:
1.了解结构类型的意义
2.掌握结构类型的定义及应用方法
3.掌握结构数组的使用方法
二、教学重点:
1.结构类型的定义
2.结构类型使用方法
三、教学难点:
1.结构数组的使用方法
四、课时安排:
2节课
五、教具准备:
多媒体教室
六、教学方法:
讲授
七、教学过程:
(一)、复习导入
实际应用中往往需要把若干种不同类型的数据组合为一个导出类型,这就是结构类型。
数组是把若干相同类型的数据放在一起,结构则是把若干不同的数据放在一起。
例如,一个公司雇员的数据可能包括:
charname[20];
enum{male,female}sex;
floatsalary;
charphone[11];
那么我们如何处理这样的数据呢?
下面就让我们来学习一种新的构造数据类型—结构体。
(二)、讲授新课
对公司雇员数据进行处理或检索时,把它们组成结构类型会更方便:
structEmployee{
charname[20];
enum{male,female}sex;
floatsalary;
charphone[11];
};
C++语言中的结构是作为类似于类的概念处理的,这一点将在以后学习中说明,在本章结构(以及联合)类型仅作为一种构造数据类型。
1、结构类型与结构变量说明
结构类型说明的格式为:
struct<类型名>{<成员表>};
类型名:
标识符。
成员表:
<类型><成员1>;<类型><成员2>;...<类型><成员n>;
结构类型的变量说明的格式为:
[struct]<结构类型名><变量名表>;
变量说明中的关键字struct可以省略(C语言中不可),变量名表与一般
变量说明一样,其赋初始值的方法可从下面的例子中了解:
structEmployee{
charname[20];
enum{male,female}sex;
floatsalary;
charphone[11];
};//结构类型Employee的定义
structEmployeegy1,gy2;//变量gy1,gy2的说明
Employeegy3,gy4={“JohnSmith”,male,2107.5************};
//变量gy3,gy4(赋初值)的说明
结构类型及其变量的说明也可放在一起:
structEmployee{
charname[20];
enum{male,female}sex;
floatsalary;
charphone[11];
}gy1,gy2;
2、结构变量的引用和赋值
一个结构变量由若干分量组成,对结构分量的存取由圆点运算符“.”实现,例如,在上例中,雇员gy1的姓名可表示为gy1.name,其电话号码可表示为gy1.phone。
因此,为结构变量赋值,除了在变量说明中赋初值(如为gy4赋初值)的方法外,还可以用赋值语句或输入语句为结构分量赋值的方法:
gy3.name=“TomGreen”;
gy3.sex=male;
cin>>gy3.salary;
cin>>gy3.phone;
无论采用哪种方法为结构分量赋值,都必须保证类型一致。
C++语言还允许直接对结构变量赋值,下面的赋值语句也是允许的:
gy1=gy4;
gy3=gy4;
一般,数组变量不能这样直接赋值。
3、结构数组
结构类型的数据也可以组成数组,称为结构数组。
结构数组在许多实际应用问题中的采用非常普遍,例如,通讯录,学生成绩单,商业销售记录,人事档案,资料登记表等等。
下面的结构数组是一个公司的雇员档案:
structEmployee{
charname[20];
enum{male,female}sex;
floatsalary;
charphone[11];
};
Employeeefile[100];
数组的每一个分量是一个雇员的档案数据。
课题05:
函数
一、教学目标:
1.了解函数的作用、意义
2.掌握函数的说明、调用、返回
3.掌握函数的使用方法
二、教学重点:
1.函数的说明
2.函数的调用
三、教学难点:
1.函数返回
四、课时安排:
2节课
五、教具准备:
多媒体教室
六、教学方法:
讲授
七、教学过程:
(一)、复习导入
函数概念是C++语言中最重要的概念之一,函数设计是程序设计的主要部分或实质部分。
函数在C++程序设计中的意义体现在四个方面。
(1)从历史上说,函数的思想来源于子程序,(如BASIC语言中的子程序),把程序中反复出现的相同或相近的程序改写成子程序,可以大大缩短程序的长度。
函数实际上是参数化的子程序。
(2)从结构化程序设计(SP)的观点来看,函数绝不仅仅是为了缩短程序长度,更重要的是通过函数设计,可以把整个程序要完成的整体的复杂的计算任务,分解为一个个较小的,相对简单的子任务。
这种模块化的程序易设计,易阅读,易调试,易维护,较少出错。
(3)从运算的角度说,函数就是C++语言提供的由用户定义的运算。
运算符是系统提供的运算,而函数是由用户自己定义的运算。
(4)作为面向对象程序设计(OOP)语言的C++,以类为核心,类由数据和方法组成,方法就是对数据的运算和处理,亦即类的函数成员。
故函数设计同样是OOP的重要组成部分。
(二)、讲授新课
1、函数的说明
C++程序允许两种函数说明语句的形式,我们把它们分别称为函数原型(或
函数声明)和函数定义。
[1].函数原型
函数原型(亦称函数声明)用来指出函数的名称,类型和参数,其格式为:
[〈属性说明〉]〈类型〉〈函数名〉(〈参数表〉);
例如:
intadd(inta,intb);
inlinevoidswap(float&s,float&t);
voidprint(char*);
属性说明:
可缺省,一般可以是下面的关键字之一:
inline,static,virtual,
friend等。
inline表示该函数为内联函数;
static表示该函数为静态函数;
virtual表示该函数为虚函数;
friend表示该函数为某类(class)的友元函数。
其含义的细节在后面有关章节介绍。
类型:
指函数的返回类型。
C++语言规定除了特别情形(main()函数和类的构造函数,析构函数)之外,所有函数都必须在说明中指出返回类型。
一个函数可能有多个结果,不一定都用返回值的方式输出(还可通过全局变量,引用参数和指针等方式传出)计算结果,但函数调用作为一个表达式,该表达式的值则只能是函数的返回值。
函数名:
一个标识符。
参数表:
它可能为空,void或〈类型〉〈参数名〉,〈类型〉〈参数名〉…的
形式。
例如:
main()
print(void)
cuberoot(floatx)
add(inta,intb)
其中,函数原型中的参数表可忽略参数名,如:
intadd(int,int)
voidswap(float&,float&)
它们与函数原型intadd(inta,intb);voidswap(float&s,float&t);是等价
的,事实上在编译时,函数原型中的参数名是被忽略的,后者的参数表中的符
号`&`表示该参数为引用型参数,用以区别于一般的赋值型参数,其用法在下面
介绍。
[2].函数定义
函数定义与函数原型的主要区别是它还包括函数体,其格式为:
[〈属性说明〉]〈类型〉〈函数名〉(〈参数表〉)〈函数体〉
属性说明,返回类型,函数名与函数原型一致,参数表中不可省略参数名。
函数体:
由{和}括起来的复合语句即程序块。
program5_1的最后12行就是一个函数定义。
从函数说明语句的介绍,我们可以看到程序中各种语句的分类(说明语句,表达式语句,控制语句和复合语句)并不是一个简单的划分概念。
函数定义本身是一种说明语句,但其函数体则是一个复合语句。
而在函数体内部又可能包含说明语句,表达式语句,控制语句和复合语句。
总之,这种分类和区分是明确的,但它们之间又有互相包含的关系。
2、函数调用
函数调用是已定义函数的一次实际运行,(与某类型的一个变量和后文中某类的一个对象类似),函数调用是函数定义的一个“实例”。
函数说明中的参数称为形式参数(形参),函数调用中的参数称为实际参数(实参),函数调用一般出现在表达式中或独立形成一个函数调用语句,例如:
xr=cuberoot(-q/2+a)+cuberoot(-q/2-a);
swap(a,b);
函数调用的两要素是函数名和实参表:
<函数名>(<实参表>)
实参表中的参数的类型、个数、顺序必须与函数说明的参数表(形参表)相一致。
赋值型的实参可以是一个表达式。
在上节program5_1的main()中两次出现函数cuberoot(x)调用,其具体的调用实施过程如下:
(1)根据调用语句中的函数名(cuberoot)在整个程序中搜索同名函数定义;
(2)对实参数的参数个数,类型,顺序进行核对,判定是否与函数定义中的形参表对应一致,在上例中只有一个浮点型参数;
(3)根据参数的类型(值参数或引用参数)进行值参数的值传递或引用参数的换名,在上例中即是要把实参表达式的值计算出来赋给形参x;
(4)运行函数体代码;
(5)返回调用点,并返回所要求的函数值,即返回计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 教案