C++程序设计 吉林大学计算机科学与技术(软件)学院.

Slides:



Advertisements
Similar presentations
主讲:王幸民 理学院计算机基础教学部.
Advertisements

C语言程序设计 主讲教师 :张群燕 电话:
授课教师:江星玲 1.
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
第 2 章 初探 C++.
程序设计基础 贺辉 图书馆三楼办公室(进馆左侧上楼)
第一章 C语言概述 计算机公共教学部.
程設一.
C++程序设计 主讲:王兴波教授 1.
C++程序设计 王希 图书馆三楼办公室.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
程設一.
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
淺談Visual C# 程式設計 國立台灣師大附中 李啟龍 Jason.
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
单片机原理与应用 C/C++在现代数字计算机上的实现.
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
·线性表的定义及ADT ·线性表的顺序存储结构 ·线性表的链接存储结构 · 单向循环链表 · 双链表、双向循环链表 · 一元多项式的加法
西安交通大学 计算机教学实验中心 大学C++程序设计教程 西安交通大学 计算机教学实验中心
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
什么是C语言 编写HelloWorld程序 注释
第一章 C++编程简介 丘志杰 电子科技大学 计算机学院 软件学院.
软件学院 张 慧 清华大学软件学院.
C++语言程序设计 第二章 C++简单程序设计.
簡易 Visual Studio 2005 C++ 使用手冊
Instructor:Po-Yu Kuo 教師:郭柏佑
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
Chapter6 队列(Queues) The Abstract Data Type
10 多載函數 10.1 多載概論 多載一般函數 多載成員函數 10-3
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
常宝宝 北京大学计算机科学与技术系 数据结构(三) 常宝宝 北京大学计算机科学与技术系
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
Name1..hour //加班時數 name2..hour //請假時數
潘爱民 C++ Overview 潘爱民
程式結構&語法.
C语言程序示例: 1.输入10个数,按从小到大的顺序排序。 2.汉诺塔问题。.
第二章 Java基本语法 讲师:复凡.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
第 六 讲 栈和队列(一).
第九章 物件導向-進階.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第1章程序设计和C语言.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
C++程序设计 概述 潘荣江 山东大学软件学院.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
熟悉VC++开发环境.
Presentation transcript:

C++程序设计 吉林大学计算机科学与技术(软件)学院

第1讲 C++概述 关于教材 “The C++ Programming Lanauage” (Specail Edition) 关于作者 Bjarne Stroustrup 关于我 houwb@jlu.edu.cn

教材结构 导论:1-3章 第一部分:4-9章 基本功能 第二部分:10-15章 抽象机制 第三部分:16-22章 标准库 第一部分:4-9章 基本功能 第二部分:10-15章 抽象机制 第三部分:16-22章 标准库 第四部分:23-25章 用C++做设计 附录:技术细节

课程的地位 过程语言的弱点导致面向对象设计方法的出现 面向对象是设计思想,其最大特点是自治、复用 一方面产生了支持语言,另一方面向软件工程倾斜 课程的重点是面向对象

C的特点 1、既是高级语言又是低级语言 2.丰富的、几乎无限制的构造数据类型 3.语法不循规蹈矩 4.函数作为程序单位实现了程序结构化

C++的特点 1、为了适应面向对象而丰富了新的数据类型 2.为了服务面向对象而增加了新的语法 3.和JAVA比较不够纯 4.面向过程和面向对象将长期并存

课程的内容 C语言的改进部分 类及其相应知识,面向对象概念 抽象继承组合,面向对象思维 设计模式

C++ 概述 1、什么是C++? 是一个更好的C 支持数据抽象 支持面向对象的程序设计 支持通用型程序设计 更强大的标准库

2、从C语言到C++语言的进化 Stroustroup博士 (80年代初) 通过一个名为cfront的转换程序将C++源程序处理 http://www.research.att.com/~bs/homepage.html 通过一个名为cfront的转换程序将C++源程序处理 成C源程序,这保证转换后的代码能在任意支持C 的编译系统中运行。 C++语言的主要特点表现在: 一、是全面兼容C语言; 二、是支持面向对象的编程方法; C++是典型的混合编程语言.

图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 各种语言的发展演化进程

3、C++程序设计范型 1)支持过程式程序设计 确定你需要那些过程; 采用你能找到的最好算法。 double sqrt(double arg) void f( ) { { //计算平方根的代码 double root2=sqrt(2); return result; //… } }

变量和算术 多种基本类型 bool char int double 支持基本类型之间所有有意义的相互转换 double d=2.2; double d1(2.2); int i=7; d=d=d+i; i=d*i;

检测和循环 bool accept() { cout<<“do you want to proceed(y or n)?\n”; char answer=0; cin>>answer; if(answer==‘y’) return true; return false; }

指针和数组 char *p; void another_function() { int v1[10]; int v2[10]; //… for(int i=0;i<10;++i) v1[i]=v2[i]; }

确定你需要那些模块,将程序分为一些模块, 2)模块程序设计 确定你需要那些模块,将程序分为一些模块, 使数据隐藏于模块之中——数据隐藏原理 namespace stack{ void push(cha r); char pop(); } void f() { stack::push(‘c’); if(stack::pop()!=‘c’) error(“impossible”);

分别编译 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

异常处理 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) {//….}

3)数据抽象 定义类型的模块 namespace stack{ struct Rep; int top=0; void init(…); void push(…); char pop(…); }

用户定义类型 确定你需要的那些类型; 为每个类型提供完整的操作 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( );

具体类型 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(); };

抽象类型 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{ … }

4)面向对象的程序设计 具体类型的问题:不易修改、缺乏灵活性 void shape::draw() { switch(k){ case circle: //画圆 break; case triangle: //画三角形 break; case square; //画正方形 break; }

类的层次结构 确定你需要那些类; 为每个类提供完整的一组操作; 利用继承去明确地表示共性 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) {…}; }

5)通用型程序设计 确定你需要那些算法; 将它们参数化,使它们能够 对各种各样的类型和数据结构工作。

模板、容器 Template<class T> class stack{ T *v; int max_size; int top; public: //… stack(int s); ~stack(); void push(T); T pop(); }

通用型算法 Template<class in,class out> void copy(in form,in too_far,out to) { While(from!=too_far){ *to=*from; ++to; ++from;} } 开始 结束 … 迭代器(*,++)

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.运行

图 C/C++程序的开发过程 文本编辑器 修改当前 的源文件错误 解决各文件 名称唯一性或遗漏 排除逻辑错 误或越界、 内存冲突等 源文件1.cpp 头文件2.h 头文件1.h 源文件2.cpp 预处理器 编译器 目标文件1.obj 目标文件2.obj 编译错 连接器 库文件.lib 其它目标文件.obj 执行程序.exe 连接错 运行错 成功!! 图 C/C++程序的开发过程

5、C/C++的程序的格式 #include <iostream.h> //我的第一个程序 int main() { cout << "Hello, world!\n"; }

1. #include预处理指令引入的头文件 2. main()函数表示的dos或console模式下应用程序的入口 3. 花括号对“{ }”表示程序的结构层次范围 4. 分号“;”结束的表达式语句或函数调用语句 5. 多行注释"/*------*/"或单行注释"//-----"

6. C/C++程序上机步骤简介 本节简单介绍用Microsoft Visual C++提供的开发工具生成console即字符方式的应用程序,如果使用其它厂商的编译器,细节会略有不同,但编辑、编译、连接和运行的四个步骤是必不可少的。 1. 启动Microsoft Visual C++编译系统 2. 从菜单上选择File->New,或按Ctrl+N打开New对话框

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按钮。 到此系统生成并打开一个新项目工作区。

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执行该程序且按任意键通常方便的是空格键结束程序。

1.声明的结构 [描述符]+<基础类型>+<声明符>+[初始值]+[;] 描述符:非类型属性声明符: 由一个名字和可选的若干声明运算符组成 (*,&,[],(),*const) 例 extern char *s[]={“Sunday”, “ Monday”};