Download presentation
Presentation is loading. Please wait.
1
C++程序设计 吉林大学计算机科学与技术(软件)学院
2
第1讲 C++概述 关于教材 “The C++ Programming Lanauage” (Specail Edition) 关于作者
Bjarne Stroustrup 关于我
3
教材结构 导论:1-3章 第一部分:4-9章 基本功能 第二部分:10-15章 抽象机制 第三部分:16-22章 标准库
第一部分:4-9章 基本功能 第二部分:10-15章 抽象机制 第三部分:16-22章 标准库 第四部分:23-25章 用C++做设计 附录:技术细节
4
课程的地位 过程语言的弱点导致面向对象设计方法的出现 面向对象是设计思想,其最大特点是自治、复用
一方面产生了支持语言,另一方面向软件工程倾斜 课程的重点是面向对象
5
C的特点 1、既是高级语言又是低级语言 2.丰富的、几乎无限制的构造数据类型 3.语法不循规蹈矩 4.函数作为程序单位实现了程序结构化
6
C++的特点 1、为了适应面向对象而丰富了新的数据类型 2.为了服务面向对象而增加了新的语法 3.和JAVA比较不够纯
4.面向过程和面向对象将长期并存
7
课程的内容 C语言的改进部分 类及其相应知识,面向对象概念 抽象继承组合,面向对象思维 设计模式
8
C++ 概述 1、什么是C++? 是一个更好的C 支持数据抽象 支持面向对象的程序设计 支持通用型程序设计 更强大的标准库
9
2、从C语言到C++语言的进化 Stroustroup博士 (80年代初) 通过一个名为cfront的转换程序将C++源程序处理
通过一个名为cfront的转换程序将C++源程序处理 成C源程序,这保证转换后的代码能在任意支持C 的编译系统中运行。 C++语言的主要特点表现在: 一、是全面兼容C语言; 二、是支持面向对象的编程方法; C++是典型的混合编程语言.
10
图1.1 各种语言的发展演化进程 BASIC C++ C# B C FORTRAN FORTRAN90 DELPHI SIMULA67
ANSI-BASIC QBASIC VISUAL-BASIC DELPHI PASCAL ALGOL ALGOL68 SIMULA67 SMALLTALK C++ JAVA C# BCPL B C 图1.1 各种语言的发展演化进程
11
3、C++程序设计范型 1)支持过程式程序设计 确定你需要那些过程; 采用你能找到的最好算法。
double sqrt(double arg) void f( ) { { //计算平方根的代码 double root2=sqrt(2); return result; //… } }
12
变量和算术 多种基本类型 bool char int double 支持基本类型之间所有有意义的相互转换 double d=2.2; double d1(2.2); int i=7; d=d=d+i; i=d*i;
13
检测和循环 bool accept() { cout<<“do you want to proceed(y or n)?\n”; char answer=0; cin>>answer; if(answer==‘y’) return true; return false; }
14
指针和数组 char *p; void another_function() { int v1[10]; int v2[10]; //… for(int i=0;i<10;++i) v1[i]=v2[i]; }
15
确定你需要那些模块,将程序分为一些模块,
2)模块程序设计 确定你需要那些模块,将程序分为一些模块, 使数据隐藏于模块之中——数据隐藏原理 namespace stack{ void push(cha r); char pop(); } void f() { stack::push(‘c’); if(stack::pop()!=‘c’) error(“impossible”);
16
分别编译 stack.h namespace stack{ void push(cha r); char pop(); } stack.c
#include”stack.h” void f() { stack::push(‘c’); if(stack::pop()!=‘c’) error(“impossible”); #include “stack.h” 实现stack user.c stack.c
17
异常处理 namespace stack{ void push(char); char pop(); char overflow{ } }
void stack::push(char c) { if(top==max_size) throw overflow(); void f() //… try{ while(true) stack::push(‘c’); catch(stack::overflow) {//….}
18
3)数据抽象 定义类型的模块 namespace stack{ struct Rep; int top=0; void init(…); void push(…); char pop(…); }
19
用户定义类型 确定你需要的那些类型; 为每个类型提供完整的操作 class complex{ double re,im; public:
complex( ) {re=im=0;} friend complex operator+ {complex,complex); friend complex operator- {complex,complex); friend complex operator* {complex,complex); friend complex operator/ {complex,complex); friend complex operator=={complex,complex); provate: void add( );
20
具体类型 class stack{ char *v; int top; int max_size; public:
class underflow{} class overflow{}; class bad_size{}; stack{char c}; ~stack{}; void push(char c); char pop(); };
21
抽象类型 class stack{ public: class underflow{ } class overflow{ };
class bad_size{ }; Virtual void push(char c)=0; Virtual char pop()=0;}; 类界面 多态类型 class array_stack: public stack{ char *p; int top; public: array_stack(int s); ~array_stack(); void push(char c){ …}; char pop( ) {…}; } class list_array : public stack{ … }
22
4)面向对象的程序设计 具体类型的问题:不易修改、缺乏灵活性 void shape::draw() { switch(k){ case circle: //画圆 break; case triangle: //画三角形 break; case square; //画正方形 break; }
23
类的层次结构 确定你需要那些类; 为每个类提供完整的一组操作; 利用继承去明确地表示共性 class shape{ …. public:
virtual void draw( )=0; virtual void rotate(int angle)=0; } class circle:public shape{ int radius; public: void draw( ){…}; void rotate(int angle) {…}; }
24
5)通用型程序设计 确定你需要那些算法; 将它们参数化,使它们能够 对各种各样的类型和数据结构工作。
25
模板、容器 Template<class T> class stack{ T *v; int max_size; int top; public: //… stack(int s); ~stack(); void push(T); T pop(); }
26
通用型算法 Template<class in,class out>
void copy(in form,in too_far,out to) { While(from!=too_far){ *to=*from; ++to; ++from;} } 开始 结束 … 迭代器(*,++)
27
4、C/C++程序的实现 1.编辑 2.翻译 3.连接 4.运行 C/C++程序的实现是通过软件开发工具进行
的,目前流行的软件开发工具以Visual C++6.0 和 C++Build 5.0为代表。本书程序利用VisualC++6.0 进行开发,其本身是优秀的可视化编程开发工具。 Visual C++6.0开发的程序只能是32位应用程 序,即内存地址的寻址方式为32寻址。 所有语言源程序的实现都必须经历下面四个 步骤: 1.编辑 2.翻译 3.连接 4.运行
28
图 C/C++程序的开发过程 文本编辑器 修改当前 的源文件错误 解决各文件 名称唯一性或遗漏 排除逻辑错 误或越界、 内存冲突等
源文件1.cpp 头文件2.h 头文件1.h 源文件2.cpp 预处理器 编译器 目标文件1.obj 目标文件2.obj 编译错 连接器 库文件.lib 其它目标文件.obj 执行程序.exe 连接错 运行错 成功!! 图 C/C++程序的开发过程
29
5、C/C++的程序的格式 #include <iostream.h> //我的第一个程序 int main() { cout << "Hello, world!\n"; }
30
1. #include预处理指令引入的头文件 2. main()函数表示的dos或console模式下应用程序的入口 3. 花括号对“{ }”表示程序的结构层次范围 4. 分号“;”结束的表达式语句或函数调用语句 5. 多行注释"/*------*/"或单行注释"//-----"
31
6. C/C++程序上机步骤简介 本节简单介绍用Microsoft Visual C++提供的开发工具生成console即字符方式的应用程序,如果使用其它厂商的编译器,细节会略有不同,但编辑、编译、连接和运行的四个步骤是必不可少的。 1. 启动Microsoft Visual C++编译系统 2. 从菜单上选择File->New,或按Ctrl+N打开New对话框
32
3. 选取或激活New对话框的Projects工程项目,以便生成. dsw(Developer Studio workspace)文件。
4. 进一步鼠标点击程序类型Win32 Console Application,在Project name下键入工程名如:dosApp1,将该工程文件置于一合适的磁盘路径Location下,如: c:\mydoc\dosApp,最后单击New对话框的OK按钮。此时弹出一个对话框。 5. 在四个选项中单选 An empty project ,然后点取Finish按钮,在弹出的信息对话框中,鼠标点击OK按钮。 到此系统生成并打开一个新项目工作区。
33
6. 从菜单上选择File->New,或按Ctrl+N打开New对话框。
7.激活New对话框的Files标签,选择C++ Source File,在File name下的空白处键入源文件名如:example1,鼠标点击OK按钮。此时进入全屏幕编辑环境,用户可输入源程序。 8.从菜单上选择Build->compile 即可编译源程序,或Build->Build直接生成执行程序。 9. 调试程序直到没有编译或连接错误。 10. 直接在集成环境按Ctrl+F5执行该程序且按任意键通常方便的是空格键结束程序。
34
1.声明的结构 [描述符]+<基础类型>+<声明符>+[初始值]+[;] 描述符:非类型属性声明符:
由一个名字和可选的若干声明运算符组成 (*,&,[],(),*const) 例 extern char *s[]={“Sunday”, “ Monday”};
Similar presentations