单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,高级语言程序设计,C+,我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物,第一讲 高级语言程序设计概述,金世双 编著,1,第一讲 高级语言程序设计概述金世双 编著1,本讲主要内容,程序设计语言发展历程,1,C,与,C+,集成环境,2,C与C+的程序组成,3,简单输入输出操作,4,2,本讲主要内容 程序设计语言发展历程1C与C+集成环境2C与,0.序言,教学对象,计算机科学与技术系,教学目标,程序设计的重要性,程序设计的基本概念与基本方法,编程解题的思路与典型方法,数学模型简介,算法及算法步骤,程序结构与相应语句,编码与上机调试,3,0.序言教学对象3,学习的,重点,程序设计的基本概念,基本方法;,在 C/C+语言的环境下,学会如何针对问题进行分析,构建数学模型,寻找算法并编程实现;,有条有理有根有据的编程实践;,养成良好的编程风格与习惯;,重在思维方法的学习,鼓励创新。,4,学习的重点4,教学内容安排,1.概论:程序设计的基本概念与基本方法;怎样才能学好这门基础课,2.程序的基本结构,3.编程关键:逻辑思维与问题求解人是怎样让计算机帮助自己解题的,4.数据的组织方式一:数组,5.模块化:函数与函数调用,6.分治思想:递归算法及其实现,7.逻辑指代与物理指代:指针,8.数据的组织方式二:结构,5,教学内容安排5,9.蒙特卡洛法,10.贪心法,11.动态规划,12.数据的组织方式三:链表与树,13.数据的组织方式四:文件,数据的永久存储与重复使用,14.面向对象程序设计,6,9.蒙特卡洛法6,1.程序设计语言发展历程,类,过程,面向机器的语言,面向机器的语言,高级语言(面向对象),高级语言(面向过程),汇编语言,机器语言,程序设计语言的轨迹,7,1.程序设计语言发展历程类过程面向机器的语言面向机器的语言,C,语言发展过程,产生背景,产生过程,时间:19721973,地点:美国贝尔实验室,目的:UNIX操作系统,设计人:Ken.Thompson和Dennis.M.Ritchie,C标准,标准C:K&R合著The C Programming Language,ANSI C:1983年,87 ANSI C:1987年,1990年国际标准的ANSI C,C语言发展的历程,8,C语言发展过程C语言发展的历程8,C+语言发展的历程,C+是在C语言的基础上发展和完善的,而C是吸收了其它语言的优点逐步成为实用性很强的语言。,随着20世纪70年代C语言应用的推广,C语言存在的一些缺陷或不足也开始流露出来,并受到大家的关注。如:C语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发特大型的程度等等。,9,C+语言发展的历程C+是在C语言的基础上发展和完善的,而,为了克服C语言本身存在的缺点,并保持C语言简洁、高效,并与汇编语言接近的特点,1980年,贝尔实验室的Bjarne Stroustrup博士及其同事对C语言进行了改进和扩充,并把Simula 67中类的概念引入到C中。并在1983年由Rick Maseitti提议正式命名为C+(C Plus Plus)。后来,又把运算符的重载、引用、虚函数等功能加入到C+中,使C+的功能日趋完善。,当前用得较为广泛的C+有:VC+(Visual C Plus Plus)、BC+(Borland CPlus Plus)、AT&T C+等。,10,为了克服C语言本身存在的缺点,并保持C语言简洁、高效,并与汇,C+历史上的主要事件:,1983年8月,第一个C+实现投入使用,1983年12月,Rick Mascitti建议命名为CPlusPlus,即C+。,1985年2月,第一个C+Release E发布。,10月,CFront的第一个商业发布,CFront Release 1.0。,10月,Bjarne博士完成了经典巨著The C+Programming Language第一版,1986年11月,C+第一个商业移植CFront 1.1,Glockenspiel。,1987年2月,CFront Release 1.2发布。,11月,第一个USENIX C+会议在新墨西哥州举行。,1988年10月,第一次USENIX C+实现者工作会议在科罗拉多州举行。,1989年12月,ANSI X3J16在华盛顿组织会议。,11,C+历史上的主要事件:1983年8月,第一个C+实现投,1990年3月,第一次ANSI X3J16技术会议在新泽西州召开,5月,C+的又一个传世经典ARM诞生。,7月,模板被加入。,11月,异常被加入。,1991年6月,The C+Programming Language第二版完成。,6月,第一次ISO WG21会议在瑞典召开。,10月,CFront Release 3.0发布。,1993年3月,运行时类型识别在俄勒冈州被加入。,7月,名字空间在德国慕尼黑被加入。,1994年8月,ANSI/ISO委员会草案登记。,1997年7月,The C+Programming Language第三版完成。,10月,ISO标准通过表决被接受,1998年11月,ISO标准被批准。,12,1990年3月,第一次ANSI X3J16技术会议在新泽西,2.C与C+集成环境,Turbo C2.0集成环境,13,2.C与C+集成环境 Turbo C2.0集成环境13,C程序开发步骤,编辑,链接,编译,执行,程序代码的录入,生成源程序,*.c,语法分析查错,翻译,生成目标程序,*.obj,与其它目标程序或库,链接装配,生成可执行,程序,*.exe,14,C程序开发步骤编辑链接编译执行程序代码的录入,语法分析查错,,C+集成环境,VC+集成环境,15,C+集成环境 VC+集成环境15,C+编译过程,源程序,(文本文件),*.CPP,目标文件,(二进制文件),*.OBJ,可执行文件,(二进制文件),*.EXE,库文件,(各种函数),在Vitual C+系统中,可直接从源程序编译连接至可执行程序,但依然要生成*.OBJ及*.EXE这两个文件。,F7,编译,连接,compile,link,16,C+编译过程源程序目标文件可执行文件库文件在Vitual,经典例题,例题1.在显示器上显示“Hello,world!”,要求:用C和C+两种语言编写。,17,经典例题例题1.在显示器上显示“Hello,worl,经典例题,例题2.求两个数中最大的一个数。,求三个数最大的一个数呢?,更多个呢?,要求:用C和C+两种语言编写。,思考:求两个数的和。,求三个数的和呢?,更多个呢?,18,经典例题例题2.求两个数中最大的一个数。思考:求两个,3.C与C+的程序组成,C,语言程序的组成,一个程序由一个或多个源程序文件组成,小程序往往只包括一个源程序文件,一个源程序文件中可以包括三个部分:,预处理指令,全局声明,函数定义,#include 等,在函数之外进行的数据声明,每个函数用来实现一定的功能,19,3.C与C+的程序组成C语言程序的组成#include,C,语言程序的结构,函数,是C程序的主要组成部分,一个C程序是由一个或多个函数组成的,必须包含一个main函数(只能有一个),每个函数都用来实现一个或几个特定功能,被调用的函数可以是库函数,也可以是自己编制设计的函数,20,C语言程序的结构函数是C程序的主要组成部分20,C,语言程序的结构,C,语言程序的结构特点:,一个函数包括两个部分:,函数首部,int max (int x,int y),函数类型,函数名,参数类型,参数名,若,函数无参,在括弧中写void或空括弧,21,C语言程序的结构C语言程序的结构特点:函数类型函数名参数类型,C,语言程序的结构,函数体,声明部分,定义在本函数中所用到的变量,对本函数所调用函数进行声明,执行部分:由若干个语句组成,指定在函数中所进行的操作,可以是空函数,如:,void dump(),可以没有声明部分,22,C语言程序的结构函数体可以没有声明部分22,C语言程序的结构特点:,程序总是从main函数开始执行,C程序对计算机的操作由C语句完成,C程序书写格式是比较自由的,一行内可以写几个语句,一个语句可以分写在多行上,为清晰起见,习惯上每行只写一个语句,程序总是从main函数开始执行,C程序对计算机的操作由C语句完成,数据声明和语句最后必须有分号,C语言本身不提供输入输出语句,程序应当包含注释,增加可读性,23,C语言程序的结构特点:程序总是从main函数开始执行23,C+程序,的组成,C+源代码一般都由若干函数和类组成。为了便于管理,一般把不同功能的函数和类放在不同的文件中,对于类的声明和实现也分别放在对应的.h(或.hpp)和.cpp文件中。,由于文件较多,所以为了便于管理,一般的集成开发工具都会提供工程(Project)管理功能来管理这些文件,对源文件进行编译和链接。,24,C+程序的组成C+源代码一般都由若干函数和类组成。为了便,25,25,经典例题,例题3.输入下图所示的程序。,*,*,1,*,*,2,*,*,3,*,*,要求:用C和C+两种语言编写。,26,经典例题例题3.输入下图所示的程序。26,经典例题,例题4.求一个数的平方。,引申 double pow(double x,double y)库函数,27,经典例题例题4.求一个数的平方。引申 double p,4.简单输入输出操作,输入输出是程序中最基本的操作之一。,所谓输入输出是以计算机主机为主体而言的,从计算机向输出设备(如显示器、打印机等)输出数据称为输出,从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入,28,4.简单输入输出操作输入输出是程序中最基本的操作之一。28,语言输入输出语句,语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。主要是printf函数和scanf函数,printf和scanf不是语言的关键字,而只是库函数的名字,还有putchar、getchar、puts、gets等等,在使用输入输出函数时,要在程序文件的开头用预编译指令,#include,或,#include,stdio.h,29,语言输入输出语句语言本身不提供输入输出语句在使用输入输出,printf函数输出数据,printf,函数的一般格式,printf(格式控制,输出表列),例如:,printf(,”i=%d,c=%cn”,i,c,);,格式声明,格式控制:,以开始,以一个格式字符结束,中间可以插入附加的字符。,30,printf函数输出数据printf函数的一般格式格式声明格,scanf,函数输入数据,scanf,函数的一般形式,scanf(格式控制,地址表列),31,scanf函数输入数据scanf 函数的一般形式31,经典例题,例题5.按照“(x+y)*z-k ”的格式输入算术表达式,并输出结果。,32,经典例题例题5.按照“(x+y)*z-k ”的格式输,经典例题,例题6.输出如图所示的图形。,33,经典例题例题6.输出如图所示的图形。33,+语言输入输出语句,在C+中引入术语 stream(流),指的是来自设备或传给设备的一个数据流。,cout表示输出流对象,它是输入输出流库的一部分。与cout 相关联的设备是显示器。在程序中有了关联字cout 就有了将数据流传到显示器的条件,这时用插入操作符“”将其后的数据插入到该流中去。比如下面的两条语句,cout“welcome to Jin”;,cout”可将输入流存储到一个事先定义好的变量中。,提取输入流的示意图,X的地址,cin,3.14159,3.14159,键盘,35,cin 表示输入流对象,它也是输入输出流库中的一部分,与相关,注释及其重要性,注释(comments)是非常重要的一种机制。没有注释的程