C程序设计教程修改版课件_第1页
C程序设计教程修改版课件_第2页
C程序设计教程修改版课件_第3页
C程序设计教程修改版课件_第4页
C程序设计教程修改版课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 概述16:15:511程序设计语言的发展C++语言发展历史C++编程流程程序与算法过程化程序设计对象化程序设计1.程序设计语言的发展16:15:512程序设计(编程)语言:人类与计算机交流的工具。计算机的工作是用程序来控制的。程序:软件对人而言: 用计算机语言编写的语句序列对机器而言:按硬件设计规范编制的指令序列(即:机器指令序列)指令是计算机可以识别的命令。机器语言16:15:523由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言例如:0100

0000把寄存器eax的值加1;缺点:难懂,不易修改,移植性差优点:可直接执行,运行效率高汇编语言16:15:524汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等。例如:INC

EAX;

(0100

0000)不能直接执行,需要经过汇编,变成机器语言程序。抽象层次很低,仍然是低级语言。汇编语言(续)16:15:525a=3*a–2*b+1汇编语言和某个特定的机器语言:⑴moveax,DWORDPTR a

$[ebp]8b45fc⑵leaeax,DWORDPTR

[eax+eax*2]8d0440⑶mov⑷addecx,ecx,DWORDecxPTR

b

$[ebp]8b034dc9f8⑸subeax,ecx2bc1⑹inceax40⑺movDWORDPTRa

$[ebp],

eax8945fc高级语言16:15:576高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定涵义的数据命名和容易理解的执行语句。(eg:

c

,c++

,Java

,C#)例如:if

(x<3)z=x*y;类似英语和数学表达式不能直接执行*

高级语言有两种翻译方式:1、解释方式2、编译方式源程序解释程序运行结果源程序编译程序目标代码16:15:577总结:16:15:578*

程序语言越低级,则必须对过程描写的越具体,指令也就越接近机器的硬件逻辑。程序语言越高级,就越接近对问题的描述与表达,因而更直观,更容易被人们所立即。程序语言的发展,总是从低级到高级,也就是从具体描述到抽象描述,当然高级语言的抽象描述最后都自动转换成了机器的具体实现。2.C++语言发展前史16:15:579*1954年,IBM公司John Backus设计实现FORTRAN语言,用于科学计算的“公式翻译语言”;*1966年,标准化FORTRAN语言,称为FORTRAN66;后又被更新FORTRAN77和FORTRAN90;*1959年,设计面向商业的通用语言COBOL;*1968年,标准化COBOL语言,后标准化更新;*1960年,定义ALGOL 60语言,首次引入局部变量和递归概念。2.C++语言发展前史(续)16:16:5010*20世纪60年代,在简化FORTRAN基础上,设计BASIC语言;*1983年推出TRUE

BASIC;*1985年推出QBASIC;*1991年推出的Visual

BASIC(VB)*20世纪60年代中期,设计与实现了用于人工智能研究的Lisp语言。*1967年,为儿童设计LOGO语言;*1967年,推出Simula67语言,首次提出类的概念;2.C++语言发展历史16:16:50111972年:贝尔实验室首次实现C语言1980年:贝尔实验室开始对C进行改进和扩充――带类的C1983年:取名C++1994年:制定ANSI(美国国家标准化协会:AmericanNational

Standards

Institute)C++标准草案1998年:C++的ANSI/ISO标准被投入使用,——标准的

C++*

C与C++的最大区别在于解决问题的思想方法不一样。1、C是一个结构化语言,它的重点在于算法和数据结构。

C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出;对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程控制。16:16:5012C与C++语言比较2、就语言本身而言,在C中更多的是算法的概念。算法是程序设计的基础,好的设计如果没有好的算法,一样不行。3、C语言设计目标:简捷、高效。*

缺点:比较适用于解决小的问题,对于大规模编程,程序模块之间的协调性差,程序的可重用性、程序的安全、健壮以及可维护性、可扩充性差。16:18:40134、C是C++的子集, C++不仅包括了整个C,C的全部特征、属性、优点,还有一些优点:#支持面向对象编程(OOP),也支持结构化程序设计;#修补的C语言的一些漏洞,提供更好的类型检查机制和编译分析;#生成目标程序质量高,程序执行效率较高;

#提供异常处理机制,简化程序的出错处理;

#函数可以重载以及使用缺省参数;#提供模板机制:类模板和函数模板;16:18:40143. C++编程流程1、

编程过程:*

一般的编程操作流程为:

1、编辑(edit)2、编译(compile)3、链接(link或make或build)4、调试运行(debug或run)该过程循环往复,直至完成。编辑源程序(键入程序).cpp编译程序

.obj连接

.exe调试运行16:18:4015源程序:用源语言写的,有待翻译的程序目标程序:也称为“结果程序”,是源程序通过翻译程序加工以后所生成的程序。16:25:4116编辑将源程序输入到计算机中,生成后缀为cpp的磁盘文件。编译将程序的源代码转换为机器语言代码。连接将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为exe的可执行文件。运行调试16:25:4117标准输出的小程序:#include<iostream>16:25:4118int

main()

{

std::cout<<"hello

World.\n";

}*

程序不但要使计算机能理解,而且也要让人能理解,因此,上述程序最好写成有结构形式的代码:#include<iostream>int

main(){std::cout<<"hello

World.\n";}说明:#include

:编译预处理命令,文件包含。iostream是C++为特定环境编制的标准输入/输出流类的标准库头文件,也就是说,这个头文件提供了输入/输出设施。int

main()是C++程序的入口,称为主函数。main是函数名,int表示整数(integer)数据类型,位于main的前面,表示main函数应该返回一个整型值

。一对花括号“{

}”是表示main的函数体。C++语句以分号(;)结束16:27:2319cout是标准输出设备的名称,“<<”是操作命令,指示将后面的数据送到显示器设备上去

。″…″:表示字符串常量,原样输出。″\n″:控制字符,表示换行操作,控制字符是″\″和另一个字符的组合。std是“名空间”,避免名称冲突。16:27:2320//**

*

*

*

*

**

**//*ch1_1.cpp*//**

*

*

*

*

**

**#include

<iostream>int

main(

){

std::cout<<"I

am

astudent.\n";}//*

*

*

*

*

*

*

*

*

*

*

*

*//*

*

ch1_2.cpp *

*//*

*

*

*

*

*

*

*

*

*

*

*

*#include

<iostream>int

main(

)

{int

a,b,result;std::cout<<"pleaseinput

two

numbers:\n";std::

cin>>a>>b;result=3*a-2*b+1;std::

cout<<"result

is“<<result<<endl;}注释编译预处理行函数16:27:23212、编程风格:16:21:4722程序设计风格应以可读性为准则,合理的紧凑性、模块整体性、对齐、注释都是形成特定风格的因素。4.

程序与算法16:21:47231、程序:以某种计算机程序设计语言为工具编制出来的动作序列,表达人的系统性思维。是一系列逐一执行的操作。(注意:每种语言都有特定的规范)对人而言: 用计算机语言编写的语句序列对机器而言:按硬件设计规范编制的指令序列(即:机器指令序列)2、算法:求特定问题的一组有限的操作序列。算法引入原因:程序的动作序列包含了对数据的存取访问和算术运算,因此对数据的合理描述、组织、存放和读取,关系到程序运行的正确性和高效性;目的性、抽象性、研究性;用特定的计算机语言来描述算法,就使该算法成为特定计算机语言下的程序。同时,算法要靠程序是先来验证。16:21:4724例如,我们考虑以下代数问题:一辆汽车2小时走了50英里,它的速度是多少?第一步,为得到答案所需要的信息是路程和时间,也既输入信息。第二步,用到的公式:速度=路程/时间第三步,判断要得到的答案,答案是以英里每小时为单位的速度值,也就是输出信息。16:28:2525#include

<iostream>using

namespace

std;int

main(int

argc,

char*

argv[]){16:28:2526

double

distance,hour,

velocity;cin>>distance>>hour;velocity

=

distance/hour;cout<<velocity<<endl

;return

0;}3、编程:是为了解决计算问题,计算问题强调算法,程序设计也就是在一定抽象层次上的算法设计。这里的抽象层次可以理解为数据的描述方式。*

当程序要处理大量数据时,此时,数据组织与数据结构的显得重要,因此数据存在的形式必须脱离程序。程序

= 算法+数据结构+程序设计方法+语言工具和环境16:28:25275.

过程化程序设计16:28:3028程序设计主要体现在算法上,编程就是解决算法如何设计的问题。当算法很大时,考虑将它按功能划分。主要工作:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。*

设计思路16:28:3029自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。程序结构:按功能划分为若干个基本模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立。*

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就可以解决了。16:28:3030*结构化程序设计(Structured

Programming)16:29:1831结构化程序设计程序设计思想:1、描述任何实体只需用三种基本控制结构2、程序设计中各过程体和组成部分都应以模块表示内聚性(agregation)外联性(association)3、过程化程序设计方法优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。缺点:对于庞大、复杂的程序难以开发和维护16:29:18326.

对象化程序设计16:29:1833*

面向对象程序设计是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描

叙某个事物在整个解决问题的步骤中的行为。*

例如五子棋,面向对象的设计思路

:16:23:34341、整个五子棋可以分为黑白双方,这两方的行为一样;2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。*总结:面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图16:23:3435的统一。*

面向对象程序设计特点:Ⅰ将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。Ⅱ对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论