《《c程序设计基础》第一章-c初步.ppt》由会员分享,可在线阅读,更多相关《《c程序设计基础》第一章-c初步.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计基础程序设计基础第第1章章C+初步初步北京邮电大学信通院北京邮电大学信通院方莉方莉2第一章第一章 C+C+入门入门vC+C+语言是一门优秀的程序设计语言,在计语言是一门优秀的程序设计语言,在计算机科学领域中有着广泛的应用算机科学领域中有着广泛的应用。v本章学习:本章学习:C+C+语言的发展史语言的发展史开发开发C+C+程序的步骤程序的步骤第一个第一个C+C+程序程序3第一章第一章 C+C+入门入门 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C
2、+C+的诞生的诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用74第一章第一章 C+C+入门入门 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C+C+的诞生的诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用71.1 1.1 程序设计语言的发展程序设计语
3、言的发展v 计算机程序计算机程序计算机的工作是用程序来控制的;计算机的工作是用程序来控制的;程序是指令的集合;程序是指令的集合;指令是计算机可以识别的命令。指令是计算机可以识别的命令。61.1 1.1 程序设计语言的发展程序设计语言的发展v机器语言机器语言简单的简单的“0 0”和和“1 1”的组合,与硬件相关。的组合,与硬件相关。v汇编语言汇编语言 将机器语言映射为一些可以被人们读懂的助记将机器语言映射为一些可以被人们读懂的助记符,如符,如“ADDADD”、“SUBSUB”等,与硬件相关。等,与硬件相关。v高级语言高级语言接近自然语言,与硬件无关。接近自然语言,与硬件无关。71.1 1.1 程
4、序设计语言的发展程序设计语言的发展v高级语言:高级语言:1 1、面向过程的语言、面向过程的语言 BASICBASIC、PASCALPASCAL、C C 2 2、面向对象的语言、面向对象的语言 C+C+、JAVAJAVA 81.1 1.1 程序设计语言的发展程序设计语言的发展v例如:要向屏幕打印一个例如:要向屏幕打印一个“A A”字符字符 1 1、BASICBASIC语言:语言:PRINT PRINT“A A”2 2、PASCALPASCAL语言:语言:writeln(writeln(A A););3 3、C C语言:语言:printf(printf(“A A”);4 4、C+C+语言:语言:c
5、out cout-实数的加法实数的加法 -复数的加法复数的加法1.3 1.3 面向对象的程序设计面向对象的程序设计v面向对象的软件工程是面向对象方法在软件工程面向对象的软件工程是面向对象方法在软件工程领域的全面应用。领域的全面应用。它包括它包括:面向对象的分析(面向对象的分析(OOAOOA)面向对象的设计(面向对象的设计(OODOOD)面向对象的编程(面向对象的编程(OOPOOP)面向对象的测试(面向对象的测试(OOTOOT)面向对象的软件维护(面向对象的软件维护(OOSMOOSM)29第一章第一章 C+C+入门入门 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向
6、过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C+C+的诞生的诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用7301.4 C+1.4 C+的诞生的诞生vC+C+语言从语言从C C语言的基础上发展起来的。语言的基础上发展起来的。C C语言历史:语言历史:1 1、贝尔实验室的、贝尔实验室的Dennis RitchieDennis Ritchie开发开发 2 2、在、在B B语言的基础语言的基础 3 3、作为、作为UnixUnix操作
7、系统的开发语言操作系统的开发语言 优点:优点:1 1、与硬件无关、与硬件无关 2 2、设计严谨、设计严谨311.4 C+1.4 C+的诞生的诞生v19781978年年,Brian KernighanBrian Kernighan与与Dennis RitchieDennis Ritchie 出版了出版了The C Programming LanguageThe C Programming Language是最早的经典是最早的经典传统传统C C语言的书,很薄,只有两百多页,所以这本语言的书,很薄,只有两百多页,所以这本C C语言的圣经又称语言的圣经又称 K&RK&R“。v当时很快出现了多个不兼容的
8、当时很快出现了多个不兼容的C C语言版本,因此需语言版本,因此需要制订一种标准要制订一种标准C C。所以所以19881988年年,第二版第二版The C The C Programming LanguageProgramming Language,是最经典的是最经典的标准标准C C的书的书籍。籍。321.4 C+1.4 C+的诞生的诞生C C语言之父语言之父Dennis RitchieDennis RitchieThe C Programming LanguageThe C Programming Language331.4 C+1.4 C+的诞生的诞生vC C语言是一门语言是一门面向过程面向
9、过程的程序语言的程序语言 优点:优点:1 1、丰富的运算符和数据类型;、丰富的运算符和数据类型;2 2、可直接访问内存、可直接访问内存3 3、程序运行效率高、程序运行效率高4 4、可移植性好、可移植性好 缺点:缺点:1 1、类型检查机制较弱,许多错误编译时不能发现;、类型检查机制较弱,许多错误编译时不能发现;2 2、不支持代码重用;、不支持代码重用;3 3、对于大规模程序,很难控制程序的复杂性。、对于大规模程序,很难控制程序的复杂性。341.4 C+1.4 C+的诞生的诞生v C+C+语言的优点:语言的优点:1 1、简化程序复杂性、简化程序复杂性 2 2、促进代码重用、促进代码重用 3 3、使
10、用先进的面向对象技术、使用先进的面向对象技术vBjarneBjarne出出 版版 了了 的的 经经 典典 C+C+著著 作作 The The C+C+Programming Programming LanguageLanguage ,19911991年年第第2 2版版,19971997年第年第3 3版,版,20002000年特别版,他被誉为年特别版,他被誉为C+C+之父。之父。351.4 C+1.4 C+的诞生的诞生 C+C+之父之父Bjarne stroustrupBjarne stroustrupThe C+Programming LanguageThe C+Programming Lan
11、guage36Bjarne语录语录v1 1 不用害怕,一切都会随着时间的推移而逐渐明不用害怕,一切都会随着时间的推移而逐渐明朗起来。朗起来。v2 2 你并不需要在知道了你并不需要在知道了C+C+的所有细节之后才能的所有细节之后才能写出好的写出好的C+C+程序。程序。v3 3 请特别关注程序设计技术,而不是各种语言特请特别关注程序设计技术,而不是各种语言特征。征。371.4 C+1.4 C+的诞生的诞生vC+C+语言是从语言是从C C语言发展演变而来。语言发展演变而来。vC+C+包含了整个包含了整个C C,C C是建立是建立C+C+的基础。的基础。vC+C+包含包含C C的所有特征、属性、优缺点
12、,并添的所有特征、属性、优缺点,并添加了面向对象的支持。加了面向对象的支持。C+C+语言语言C C语言语言面向对象面向对象38第一章第一章 C+C+入门入门 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C+C+的诞生的诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用71.5 1.5 程序开发过程程序开发过程v 基本术语基本术语 源程序源程序用源语言写的,
13、有待翻译的程序用源语言写的,有待翻译的程序目标程序目标程序也称为也称为“结果程序结果程序”,是源程序通过翻译程序加工以,是源程序通过翻译程序加工以后所生成的程序。后所生成的程序。可执行程序可执行程序目标程序和所用的其他资源进行链接,生成的可以直目标程序和所用的其他资源进行链接,生成的可以直接运行的程序。接运行的程序。翻译程序:翻译程序:指一个把指一个把源程序源程序翻译成等价的翻译成等价的目标程序目标程序的工具。的工具。1.5 1.5 程序开发过程程序开发过程v三种不同类型的翻译程序三种不同类型的翻译程序汇编程序汇编程序把用汇编语言写成的源程序,翻译成机器语言形式的目把用汇编语言写成的源程序,翻
14、译成机器语言形式的目标程序。标程序。编译程序编译程序若源程序是用高级程序设计语言所写,经翻译程序加工若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为生成目标程序,那么,该翻译程序就称为 编译程序编译程序。1.5 1.5 程序开发过程程序开发过程v三种不同类型的翻译程序三种不同类型的翻译程序解释程序解释程序这也是一种翻译程序,同样是将高级语言源程序翻译成这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、执行的,即输入一句、翻译一句、执行一
15、句,直至将整执行一句,直至将整个源程序翻译并执行完毕。个源程序翻译并执行完毕。1.5 1.5 程序开发过程程序开发过程v 基本术语基本术语 链接程序链接程序对汇编程序或目标程序与所需的其他资源进行链对汇编程序或目标程序与所需的其他资源进行链接,生成可执行文件的程序。接,生成可执行文件的程序。431.5 1.5 程序开发过程程序开发过程v源程序:源程序:.cppcpp compile(Ctrl+F7)compile(Ctrl+F7)v目标程序:目标程序:.objobj Build(F7)Build(F7)v可执行程序:可执行程序:.exeexe1.5 1.5 程序开发过程程序开发过程v编辑编辑将
16、源程序输入到计算机中,生成后缀为将源程序输入到计算机中,生成后缀为cppcpp的磁盘文件。的磁盘文件。v编译编译将程序的源代码转换为机器语言代码。将程序的源代码转换为机器语言代码。v链接链接将多个源程序文件以及库中的某些文件连在一起,生成一将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为个后缀为exeexe的可执行文件。的可执行文件。v运行调试运行调试45第一章第一章 C+C+入门入门 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C+C+的诞生的
17、诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用7461.6 1.6 简单的简单的C+C+程序程序/*/*程序文件:程序文件:ch1_1.cppch1_1.cpp程序功能:在屏幕上输出程序功能:在屏幕上输出Hello worldHello world!作作 者:者:XXXXXX创建时间:创建时间:XXXX年年XXXX月月XXXX日日*/*/#include include using namespace std;using namespace std;void main()void main
18、()cout“Hello world!endl;cout“Hello world!endl;注释注释编译预处理编译预处理程序主体程序主体471.6 1.6 简单的简单的C+C+程序程序v “注注释释”是是程程序序员员为为读读者者作作的的说说明明,用用来来提提高高程程序序的的可可读读性性,C+C+程程序序在在编编译译过过程程中中忽忽略略注释。注释。1 1、“/”用用来来注注释释一一行行说说明明,在在“/”之之后后的的文文字字直直到到换换行行都都为为注注释释。一一般般用用来来对对于于程程序序中中难难懂懂的的代代码进行说明码进行说明。2 2、“/*/*”和和“*/*/”用用来来注注释释一一段段说说明
19、明,在在“/*/*”和和“*/*/”之之间间的的部分,不管多长都为注释。部分,不管多长都为注释。481.6 1.6 简单的简单的C+C+程序程序v 所有以所有以“#”开头的代码,称为开头的代码,称为编译预处理编译预处理。v 例:例:#include#include 每每次次启启动动编编译译器器时时,先先运运行行预预处处理理器器,预预处处理理器器找找到到所有以所有以“#”开头的代码行进行处理。开头的代码行进行处理。includeinclude是是一一条条预预处处理理指指令令,意意思思是是“后后面面跟跟的的是是一一个个文件名,请找到该文件并将其加入。文件名,请找到该文件并将其加入。”iostrea
20、miostream是是系系统统定定义义的的一一个个“头头文文件件”,它它设设置置了了C+C+的的I/OI/O相相关关环环境境,并并定定义义了了输输入入输输出出流流对对象象coutcout和和cincin等。等。491.6 1.6 简单的简单的C+C+程序程序v using namespace std;using namespace std;1998 1998年批准的年批准的标标准准C+C+使用使用namespacenamespace命名空命名空间标间标准。准。iostreamiostream是是一一个个标标准准函函数数库库,coutcout是是标标准准库库函函数数提提供供的的一一个个对对象象,
21、标标准准库库函函数数在在namespacenamespace说说明明书书中中被被指指定定为为“stdstd”。因因此此这这句句代代码码的的意意思思是是使使用用标标准准命命名名空空间间stdstd中中的函数。的函数。501.6 1.6 简单的简单的C+C+程序程序v正正式式的的程程序序从从代代码码“void void main()main()”开开始始,它它包包含含一一个个名名为为main()main()的的函函数数,也也称称为为主主函函数数。每每个个C+C+程程序序有有且且仅仅有有一一个个main()main()函函数数,程程序序在在开开始始运运行行时时会自动调用会自动调用main()main
22、()函数。函数。v main()main()前前面面的的voidvoid表表示示函函数数的的返返回回值值的的类类型型,意意味着程序执行结束后味着程序执行结束后无需向操作系统返回无需向操作系统返回。函数:是指能实现一个或多个功能的代码块函数:是指能实现一个或多个功能的代码块。511.6 1.6 简单的简单的C+C+程序程序v 所所有有的的函函数数都都以以左左大大括括号号 开开始始,右右大大括括号号 结结束束,在大括号在大括号 之间的部分称为函数体。之间的部分称为函数体。v coutcout“Hello world!Hello world!”endl;endl;1 1、coutcout:标准输出流
23、对象,标准输出流对象,2 2、:插入操作符可以连续使用插入操作符可以连续使用 3 3、endlendl:代表换行符代表换行符 意思是使用意思是使用coutcout将将“”后面的内容打印在屏幕上。后面的内容打印在屏幕上。v在在函函数数体体的的每每一一句句代代码码后后面面都都有有一一个个分分号号“;”表示一个表示一个C+C+语句的结束。语句的结束。521.6 1.6 简单的简单的C+C+程序程序v操作步骤操作步骤1 1、新建一个工程、新建一个工程 1)1)启动启动VC+6.0VC+6.0(或(或VC2005VC2005)2)2)新建一个项目,选择新建一个项目,选择“win32win32控制台应用程
24、序控制台应用程序”,空项,空项目目 3)3)编写源程序编写源程序2 2、编译和连接、编译和连接 编译:编译:compile(Ctrl+F7)compile(Ctrl+F7)链接:链接:Build(F7)Build(F7)3 3、运行、运行 使用的命令:使用的命令:Ctrl+F5Ctrl+F553程序编译环境和简单设计及调试程序编译环境和简单设计及调试v编译环境:编译环境:VC+6.0VC+6.0v文件的建立文件的建立1 1、工程的建立、工程的建立File-new-projects-win32 Console ApplicationFile-new-projects-win32 Console
25、Application调试运行调试运行 2 2、文件的建立、文件的建立File-new-files-c+source fileFile-new-files-c+source file 3 3、调试、运行调试、运行 1.1 1.1 程序设计语言的发展程序设计语言的发展1 1.2 1.2 面向过程的程序设计面向过程的程序设计2 1.3 1.3 面向对象的程序设计面向对象的程序设计3 1.4 1.4 C+C+的诞生的诞生4 1.5 1.5 程序开发过程程序开发过程5 1.6 1.6 最简单的最简单的C+C+程序程序6 1.1.7 7 内存的表示和使用内存的表示和使用7第一章第一章 C+C+入门入门1
26、.1.7 7 内存的抽象表示和使用内存的抽象表示和使用v内存的抽象表示内存的抽象表示 每个存储单元可以存放一个字节(每个存储单元可以存放一个字节(8 bit8 bit)数据,每个内)数据,每个内存单元有一个存单元有一个唯一的地址唯一的地址。101100106781.1.7 7 内存的抽象表示和使用内存的抽象表示和使用v操作系统一般会把内存划分区域来使用,便于管理,操作系统一般会把内存划分区域来使用,便于管理,比如比如代码区、数据区代码区、数据区 等。等。v被编译成机器码的被编译成机器码的程序程序在执行时就会被复制到内存在执行时就会被复制到内存的的代码区代码区。v数据区分为:数据区分为:栈区栈区
27、,也叫堆栈区,用于存放程序函数中的,也叫堆栈区,用于存放程序函数中的局部变量局部变量。全局变量和静态变量区全局变量和静态变量区,是长期存放数据的区域。是长期存放数据的区域。常量区常量区:一般是存放字符串常量的地方。:一般是存放字符串常量的地方。堆区堆区:在程序执行过程中申请内存要在堆区分配空间。:在程序执行过程中申请内存要在堆区分配空间。1.1.7 7 内存的抽象表示和使用内存的抽象表示和使用/例例1-2 1-2 显示不同数据的地址显示不同数据的地址#include#include using namespace std;using namespace std;int a=10;int a=1
28、0;/全局变量全局变量void main()void main()int b=20,c=30;int b=20,c=30;/局部变量局部变量 char*ch=Beijing;char*ch=Beijing;static int e=50;static int e=50;/静态变量静态变量 int*p=new int(60);int*p=new int(60);/申请堆区空间申请堆区空间 float*f=new float(0);float*f=new float(0);int*q=new int(60);int*q=new int(60);1.1.7 7 内存的抽象表示和使用内存的抽象表示和使
29、用/例例1-2 1-2 显示不同数据的地址显示不同数据的地址 cout cout全局变量全局变量a a的地址:的地址:&aendl;&aendl;cout cout局部变量局部变量b b的地址:的地址:&bendl;&bendl;cout cout局部变量局部变量c c的地址:的地址:&cendl;&cendl;cout cout常量区的地址:常量区的地址:(void*)chendl;(void*)chendl;cout cout静态变量静态变量e e的地址:的地址:&eendl;&eendl;cout cout堆区变量堆区变量p p的地址:的地址:pendl;pendl;cout cout堆区变量堆区变量f f的地址:的地址:fendl;fendl;cout cout堆区变量堆区变量q q的地址:的地址:qendl;qendl;总结总结1 1、程序设计语言的发展过程:程序设计语言的发展过程:机器语言、汇编语言和高级语言。机器语言、汇编语言和高级语言。2 2、C C和和C+C+的关系。的关系。3 3、如何编写、编译、运行一个、如何编写、编译、运行一个C+C+程序。程序。4 4、内存的工作模型。、内存的工作模型。60作业作业v 熟悉熟悉C+C+的编程环境的编程环境
限制150内