C--优秀课件PPT分析.ppt 43页

  • 162.00 KB
  • 2022-04-29 14:34:57 发布

C--优秀课件PPT分析.ppt

  • 43页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'1.0本科程在专业学习中的地位1.1程序设计语言1.2C++前史1.3C++1.4C++编程流程1.5最小样板程序1.6程序与算法1.7过程化程序设计1.8对象化程序设计1.9小结 1.0本科程在专业学习中的地位智能无线终端应用(5-7学期)电磁场与电磁波;数字图象处理;信号检测与处理;微波技术与天线;射频电路设计原理与应用。专业基础课程第一层次(3-5学期):电路原理、模拟电子技术、数字电路与数字逻辑;第二层次(5-6学期):信号与系统、数字信号处理、电子测量原理;第三层次(5-7学期):MATLAB与系统仿真、电子线路CAD、DSP原理及应用智能信息处理支持课程1.高端软件设计支持(2-4学期)程序设计基础C;C++程序设计;可视化编程与应用。2.芯片级设计支持(5-7学期)微机原理与应用;单片机原理与应用;嵌入式系统;专业课程设计。工业信号检测系统与智能电子产品研发(5-7学期)传感器原理与应用;检测技术基础;数据库开发与应用;现代电气及PLC技术;楼宇智能化技术。 本科程学习的高端目标:1.程序设计竞赛;2.初级程序员(证书):第四~五学期相当于实习工程师(本科毕业)3.中级程序员(证书):第五~六学期相当于助理工程师(本科毕业工作1年以上)4.高级程序员(证书):第六~七学期相当于工程师(本科毕业工作5年以上)5.软件设计师(证书):第七~八学期相当于高级工程师(本科毕业工作9年以上) C++到底难不难学?它从开始诞生以来,发展势头一直旺到现在,背后一定也有它的道理。C++综合了各家之长,功能多,操作起来简单。有人说它难学,这是正常的,否则,一学就会的东西,还用得着努力教和学吗?至于学习的结果,就因人而异,甚至大相径庭了。难怪有的人趣味盎然,有的人大叹苦经。中国古代有名画家王冕就是因为信奉了这样一句话而成才的:没有学不会的事情! 1.1程序设计语言(ProgrammingLanguage)人们用程序设计语言描述需要解决的问题,用“语言翻译/编译器”加工以使计算机理解其描述,尔后就能使计算机代替人们工作了。虽然编程语言最终目的是促使计算机为人们工作,但人们用编程语言对问题的描述方式与内容,随着使用群体的扩大,越来越多地成为人们之间相互交流过程描述与信息表达的工具。计算机上的机器指令也称为机器代码,它是机器语言的程序。机器语言是低级语言,汇编语言是机器语言的直接符号表示,所以基本上也是低级语言。而C++则是高级语言。 ⑴moveax,DWORDPTRa$[ebp]8b45fc⑵leaeax,DWORDPTR[eax+eax*2]8d0440⑶movecx,DWORDPTRb$[ebp]8b4df8⑷addecx,ecx03c9⑸subeax,ecx2bc1⑹inceax40⑺movDWORDPTRa$[ebp],eax8945fc汇编语言和某个特定的机器语言: 程序语言越低级,则必须对过程描写越具体,指令也就越接近机器的硬件逻辑。程序语言越高级,就越接近对问题的描述与表达,因而更直观,容易被人们所理解。程序语言从低级到高级的发展,也就是从具体描述(编程)到抽象描述(编程),高级语言的抽象描述最后都需用“语言编译器”自动转化成机器的具体实现。语言编译器的发展,则是从简单到复杂的过程。语言越是高级,描述越是抽象,则用于自动化转换的语言编译器越复杂,以便人们对问题只需有个相对简单的描述(编程),就能够被机器所理解。 1.2C++前史(Pre-C++history)1953年12月,IBM公司的JohnBackus写了一份备忘录,建议为IBM704设计一种全新的编程语言。Backus多年工作在计算机上,深切体会到编程困难,他的目标是设计一种用于科学计算的“公式翻译语言”。他带领的一个团队,终于在1954年完成了FORTRAN语言的设计和实现。在那以后,不同版本的FORTRAN语言纷纷面世。1966年,美国统一了它的标准,称为FORTRAN66语言,此后,又被更新为FORTRAN77和FORTRAN90。FORTRAN语言的后继版本要兼容以前大量的FORTRAN老程序,这一负担阻碍了它,无法革新成现代编程语言特征。但不管怎样,FORTRAN语言一直活跃了40多年,Backus为此摘取了1977年度的“图灵奖”。 代数语言ALGOL1958年,一个国际商业和学术计算机科学家组成的委员会在瑞士开会,探讨改进FORTRAN问题,并尝试设计一种标准化的计算机语言。1960年,该委员会在1958年讨论的基础上,定义了一种新的语言——国际代数语言ALGOL60,首次引入了局部变量和递归概念,在数学表达和算法描述上比FORTRAN更出色,而且它不是解释执行,而是编译后运行,比FORTRAN程序效率更高。但由于ALGOL语言的设计要求是独立于机器的,所以就面临许多语言实现方面的技术问题,致使ALGOL语言无法流行。但它却演变为其他编程语言设计的概念基础。 科学计算借助于FORTRAN获得快速进展的时候,还没有一种适用于商业计算的语言。美国国防部注意到了这种情况,1959年5月,五角大楼委托GraceMurrayHopper博士领导一个委员会,开始设计面向商业的通用语言COBOL。COBOL最重要的特征是语法与英文很接近,可以让不懂计算机的人也能看懂程序。1968年,COBOL语言进行了标准化。后又在1974年和1984年进行了标准化更新。COBOL语言曾经风靡一时。商用语言COBOL BASIC语言60年代中期,美国Dartmouth学院的JohnG.Kemeney和ThomasE.Kurtz认为,像FORTRAN这样的编程语言,都是为专业人员设计的,而他们希望能为无经验的人提供一种简单的编程语言,特别希望那些非计算机专业的学生也能通过这种语言学会使用计算机。于是,他们在简化FORTRAN的基础上,研究出了BASIC语言。由于BASIC语言易学易用,很快就成为最流行的计算机语言之一,几乎所有小型和个人计算机都使用它。BASIC语言发展到后来,出现了许多改版,典型的有1983年推出的TrueBASIC,1985年推出的QBASIC,以及1991年推出的VisualBASIC(简称VB)。VB一直风靡至今长盛不衰。 Lisp语言同在60年代中期,美国MIT的JohnMcCarthy等人设计和实现了用于人工智能研究的Lisp语言。Lisp语言是基于表处理的函数语言,由于该语言更面向问题,因此较容易编程,描述能力更强,更易于进行程序正确性验证和软件维护。但由于实现技术复杂,处理文件等能力不强,运行效率低,该工具一直停留在实验室阶段。 计算机教学语言LOGO和结构化的编程语言Pascal1967年,美国麻省理工大学人工智能实验室S.Papert为儿童设计了一种LOGO编程语言。他用LOGO语言启发孩子们的学习与思考,一些孩子用LOGO语言设计出了真正的程序,于是LOGO成为一种热门的计算机教学语言。1971年,瑞士联邦技术学院N.Wirth教授发明了Pascal语言。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。它一出世就受到广泛欢迎,为此,他获得1984年度的“图灵奖”。 Simula67语言1967年,挪威奥斯陆的JohanDahl和KristenNygaard推出了Simula67语言。该语言第一次提出类的概念,能够把应用中的概念直接用编程语言描述,比其他语言编写的程序更具可读性,而且编译系统捕捉类型错误的能力十分强,保证了程序规模扩大之后,错误量不会非线性增长。该语言曾配置在好几个大型计算机上,但由于编译实现不完善,导致运行效率低下,只能执行一些小型程序,所以像ALGOL语言一样,没能流行,但成为未来面世的面向对象编程语言的概念基础。 C语言1970年,AT&T的Bell实验室D.Ritchie和K.Thompson共同发明了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,它实际上是UNIX的“副产品”。它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植,所以大受程序设计师的青睐,成为计算机产业界的宠儿。为此,他们两位获得了1983年度的“图灵奖”。 C++语言70年代中期,BjarneStroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,实现过低级语言BCPL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也颇有好感,他深知运行效率的意义,所以,十分欣赏C语言。以C为背景,以Simula思想为基础,正好符合既要编程简单、正确可靠,又要运行高效、可移植的设想。1979年,BjarneStroustrup到了Bell实验室,开始从事将C改良为带类的C(Cwithclasses)的工作。1983年将该语言正式命名为C++。90年代,程序员开始慢慢从C中淡出,转入C++。此后,C++稳步发展,1998年ISO/ANSIC++标准正式制定,如今已是如日中天。鉴于C++对现代计算机产业的贡献,1995年《BYTE》杂志将BjarneStroustrup列入“计算机工业20个最具影响力的人”。 1.3C++C++是从C语言中继承而来的。C++的发展壮大,主要是因为程序设计方法的发展。程序设计方法的发展,主要是计算机应用范围的扩大和编程规模的扩大。C语言之所以风靡一时,在于当时需要计算机解决的问题多半是小规模问题,一般通过单台计算机独立蛮算便可解决。随着计算机的发展,人们开始着手解决大数据量的处理问题,需要处理大量复杂结构的数据。C程序员虽然经过艰苦的努力,设计出许多精巧的程序,但是在理解上却越来越困难,运行问题也越来越多。程序需要“保修(可维护性要求)”,需要“扩充(可扩展性要求)”,需要“加固(安全性要求)”。而这些精巧的程序由于内在结构的弱点——数据结构与算法盘根错节,无法被可逆地拆解,很难分析“险情”和重新使用。 设计计算机语言的专家要改革这一现状,提出程序设计语言应该具有数据类型的扩充能力。于是基于数据类型和面向数据类型的编程语言不断浮出水面。这些方法,是以程序员自己定义或设计数据类型的方式将复杂结构的数据进行系统的组织,统一的管理,以使程序组织合理,算法设计简单和易懂,C++便是其中之一,从商业化角度看,C++更是其中的跤跤者。在C的简捷、高效的基础上,C++添加了自定义数据类型的整套设施,以适应大规模编程的需要。因此,进入市场后,面向对象的编程方法也开始工业化了。 C继承者C++对C的继承是青出于蓝而胜于蓝,因为是对C的继承,也就承诺了对C的包容。C++对C的包容,也包括对程序设计方法的包容,这就决定了C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。C++是一种混合型程序设计语言,“混合”体现在可以采用不同的程序设计方法,进行各种目的的编程。“混合”意味着绝不放弃计算机高效运行的实用性特征,而又致力于提高大规模程序的编程质量,提高程序设计语言的问题描述能力。 标准C++有了C++标准,专家们在开发C++编译器时,可以避免大量的研究无序性和重复劳动,并且也为组织大规模的编译软件开发创造了前提条件;有了C++标准文档,语言设计者,程序员和用户三者就可以有一致的语言来互通,在程序员社区可以畅通地交流,编写的程序变得更有效,更通用,更易懂。有了C++标准,程序员所开发的软件产品具有更高的系统可移植性;C++标准还在防止技术封锁,促进软件技术的交流,提高软件竞争力等方面起到了很好的保护作用;所以当C++发展到一定规模的时候,无论是用户、程序员,还是C++语言的设计者,都在竭力推动标准化的工作。 使用标准C++,也意味着程序员可以充分享用C++的资源——标准库。从而带来更多的快速和方便,提高抽象编程的程度。所以,学习C++,理所当然地要学习标准C++。在我国,个人计算机配置的操作系统以Windows居多,比较容易获得的标准C++工具就是Borland公司的C++Builder6或者以上版本,或者微软公司的VisualC++、.net或者以上版本。若在linux系统上,比较容易获得的标准C++工具就是BorlandC++Kylix3.0以上版本。另外,通用的C++编译器当数C++3.0了,它即有Windows版本,又有Linux版本。 1.4C++编程流程程序设计语言发展到现在,无论编译型还是解释型,一般都附带提供一个集成开发环境(IntegratedDevelopmentEnvironment,IDE)。程序员可以在该环境中,编辑程序代码,逐个编译源文件,装配和链接全部源文件及其资源文件,直至调试运行。甚至软件包装和做成软件产品都可以一体化。解释型环境(如VB)中,编辑代码后,没有编译和链接的中间环节,可以直接运行,方便编程开发。但由于程序运行不能离开解释器现场,所以效率上便落了下风。对于规模化的大程序,低性能表现得更加明显,所以真正的计算任务和中大型软件开发一般都不用解释型环境开发。 C++语言的程序因为要体现高性能,所以都是编译型的。C++的IDE(集成开发环境)用解释型的逐条语句执行方式以方便开发调试,用编译型的方式来生成最终能脱离开发环境的执行代码以提高运行效率。IDE功能齐全,调试功能很强,程序编好后,可以立刻在环境中调试以获得初步测试结果,然后,可以方便地做成beta版形式,拿到实际环境中进一步测试,最后做成软件发行版。一般的编程操作流程为:编辑(edit)——编译(compile)——链接(link或make或build)——调试(debug),该过程循环往复,直至完成。 C++源程序,或称源代码(sourcecode),简称代码(code),以扩展名为.cpp(在Windows环境中)的文本形式存放。程序被编译(compile)后,会生成目标代码(objectcode),以.obj为文件扩展名存放。目标代码即机器代码,是计算机能够识别的指令集合,但是,目标指令(也称目标代码)还不能在具体的计算机上运行,因为目标代码只是一个个独立的程序段,程序段之间还没有彼此呼应,程序段中用到的C++库代码和其他资源还没有挂上。 为了把成组的程序段转换为可执行程序,必须进行链接(link),链接的过程就是将目标代码整合(或称转换)成可执行文件,可执行文件通常以.exe为文件扩展名。C++程序在编译后,通过同时链接若干个目标文件与若干个库文件而创建可执行程序。库文件是系统提供的程序链接资源,不同公司的IDE产品有不同的后缀,例如,VisualC++的库文件的后缀是.lib。标准C++提供C++标准库,用户库是由软件开发商或程序员提供的。目标文件与库文件链接的结果,生成计算机可执行程序。 1.5最小样板程序(MinimumSampleProgram)C++编译器能理解的有标准输出的最小程序为:#includeintmain(){std::cout<<”helloworld.n”;}为了让人能更好地理解,并让程序体现出其逻辑结构。上述程序最好写成如下所示的有结构形式:#includeintmain(){std::cout<<”helloworld.n”;} 程序中“iostream”是C++为特定环境编制的标准输入输出流类的标准库头文件。“cout”是标准输出设备的名字,“<<”是操作命令,指示将后面的数据(字串"Helloworld.n"),送到显示器设备上去。“std”是“名空间”。程序中有若干名字,程序规模大起来后,难免会有名字冲突,就好像学校中遇到同名学生:A班中有张三,B班中也有张三,当A、B班在一起上课时,就有名字冲突问题。解决的简单办法就是两个张三分别命名为:“A班的张三”,“B班的张三”。C++也是这样来解决问题的。为了防止程序员自己又命名一个“cout”而造成冲突,就特地对语言专门提供的标准设备名“cout”冠以前缀“std::”,表示“标准库中的cout”。 编程风格(ProgrammingStyle)C++的程序语法是以空格和换行(回车)来区分词法单位,以特定的字符来辨认语法的,如,分号“;”表示语句的结束。除此之外,其书写形式就比较随意。程序设计格式的随意性,给程序设计风格带来了可朔性。程序设计风格应以可读性为准则,合理的紧凑性、模块整体性、对齐、锯齿型嵌套、注释都是形成特定风格的因素。为了让程序表现出美感,又不致于语句前后内容含混不清、结构混乱,语句书写讲究疏密得当。高级程序员的程序风格,体现了极大的一贯性和艺术性。每个初学者必须要模仿编程风格,随着编程量的增加,对程序的感受多多,会不知不觉地形成自己独特的风格。 最小样本程序//=====================================//min_sample.cpp//带标准输出的最小样本程序//=====================================#includeintmain(){std::cout<<”helloWorld.n”;//显示字符串}//==================================== 1.6程序与算法(Program&Algorithm)计算机程序是用计算机语言所要求的规范描述出来的一系列动作,它表达了程序员要求计算机执行的操作。优秀的程序员尤其是C++程序员,追求编程方法的实效性。这意味着所谓“学会计算机语言,看得懂语法,了解了语言的描述方法”,还是不够的,它和熟练运用计算机语言,能用语言高效、正确地描述问题、解决问题是有天壤之别的。学习计算机语言在于让计算机准确地执行程序,和学习其他语言一样,都需要一个充分的实践过程。 算法(Algorithm)的定义1)目的性算法是有求解目的的动作序列,算法必须有运算结果,而程序只是强调过程性;2)抽象性算法离不开数据结构,而数据结构在具体的计算机上实现要受到表示范围的限制,算法比具体的程序设计抽象层次要高一些,算法甚至不在乎用什么编程语言来描述;3)研究性算法许多时候用于理论研究,描述算法的目的是沟通人们的思想,而不是实现,所以,算法可以用伪编程语言来描述。 编程与结构(Programming&Structure)编程是为了解决计算问题,计算问题强调算法,程序设计也就是在一定抽象层次上的算法设计。这里的抽象层次应理解为数据的描述方式。当许多编程问题含有大量纵横交错的数据时,人们便逐渐意识到数据组织与数据结构的重要,意识到数据存在的形式必须脱离程序。1976年,计算机专家N.Wirth提出这样的经典公式:程序=算法+数据结构强调编程中数据结构的描述应相对算法而独立。程序不再是单纯的过程体(操作序列)了,不再是单纯的算法了,而是算法和数据结构的有机组织。 1.7过程化程序设计(ProceduralProgramming)过程化程序设计主要体现在算法上,编程就是解决算法如何设计问题。当算法很大时,就考虑将它按功能划分。程序组织围绕算法的切分而展开。这一类问题一般都是小规模的问题,一般的程序设计语言都可以胜任。过程程序设计按照问题来设计算法。它所使用的是语言中现成的基本数据类型。问题模型反映为过程结构模型,实际上就是功能模型。但由于过程模块与数据的复杂关系没有清晰地分离出来,所以它一般都是“具体问题具体解决”,无法重复使用其中的“零部件”,而且,问题庞大以后,其复杂性会无法收场。 结构化程序设计(StructuredProgramming)结构化程序设计方法主要体现在过程的功能划分与过程内部的编写规则上,因此它是一种规范的过程化程序设计思想。结构化程序描述任何实体的操作序列只需用“顺序,选择(分支),重复(循环)”三种基本控制结构。结构化程序设计中的各个过程体和各个组成部分以模块来表示。每个模块,其内聚性(agregation)越强,外联性(association)越少,则模块独立性越好。 内聚性,即模块内部所涉及的功能越单一越好。这样一旦修改起来,就职责明确,不会因为这个原因那个原因都来找这个模块算帐。外联性,即模块之间的联系越少越好,联系意味着依赖性,外联性少,模块的独立性就好,独立性意味着自说自话地修改本模块与外界无关。因此就容易编程和修改。减少外联性还涉及到对数据的分离与归类。将过程体中的数据分离出来,独立地用数据结构去描述其数据和处理,这都是模块划分的原则。 1.8对象化程序设计(ObjectifiedProgramming)伴随着人类对计算机的依赖性日益增强,程序规模不断扩大,模块数呈指数级递增,模块间的数据传递五花八门,同一程序中模块之间的关系错综复杂,结构化程序设计的规范已经不能保证程序的正确性,可维护性和重用性了。人们开始意识到不可能在语言中内置所有的待解决问题的数据结构,必须让语言具有自建数据结构的能力。数据结构对于算法,对于程序是如此的重要,但当时大多数语言都没有专门支持对数据结构的直接描述。 在C语言中有一种结构(struct)类型,可以在单纯空间上复合其他数据类型,描述数据的组织,但还是不能避免其数据操作的安全问题。在大规模程序设计中,问题尤其突出。软件发展似有一个不可逾越的极限,因此,在软件产业界曾一度有软件危机之说。其实浩瀚的编程大军并非每个人都必须要精通问题的每个细节,这就像使用电视机的人并非都要精通其内部的每个细节!我们可用电视机的外壳,把电视机的内部电路和外部使用一分为二。外部使用只需要了解电视机的基本操作方法,内部电路提供电视机的各项功能,两者都需要一个共同的规范——电视机的按钮操作功能。 抽象数据类型就是想要描述这一共同的规范,它描述数据的组织和相关的操作。如果语言能够自由定义数据类型,那么,问题就能化成以抽象数据类型为媒介的使用与实现独立的两部分,因而该语言的解决问题的能力一定就强。衡量一个语言的优劣,能否自定义或者说扩充数据类型是其重要指标。C++有一个类(class)机制,这正是C语言欠缺的地方。数据类型的本质是数据组织(实现)和其操作(使用)的捆绑性。当对应到具体编程时,用抽象数据类型来界定,就能把编程大军分为两个阵营,一个是专业性极强的,专门实现抽象数据类型的编程,好比生产电视机者;另一个是专门使用抽象数据类型的编程,好比使用电视机者。 要能使抽象数据类型能够维护两大程序员阵营的编程利益,必须要在语言的设计中加入一些语言机制,这些语言机制采用了许多难以想象的技术,实现了数据封装,类型安全等,而且还必然要使代码更容易阅读和维护,否则没有人愿意用。抽象数据类型的使用,最终像使用基本数据类型那样简单,对应的实体就称之为对象。因此,编程的意义就是算法在对象之间穿梭,或曰针对对象的算法设计。所以其相应的编程就是对象化的编程了。无论是实现抽象数据类型的程序员群体,还是使用抽象数据类型的程序员群体,他们都以同样的参照在工作,都在做算法设计的工作,所以更加直截了当而又具体的编程模式变成了:程序=算法+抽象数据类型 面向对象的程序设计(Object-OrientedProgramming)基于对象的程序设计本质上还是过程化的。只是某些数据关系析取出来了,成为一个类,便可以更好地重用了。类的层次关系也带来了对象的层次关系,它反映了同种操作的异类行为。例如,各电视机的维修操作,不同的型号,有部分维修操作是共同的,如打开后盖,但内部有些部件的操作处理是不同的,电视机之间反映了层次关系。它所反映的是一棵电视机树。电视机有不同种类,修理方法也不同,那么,电视机在被修理时,必然反映出自己被特殊操作的个性。也即分层之后的对象集合中每个对象行为的个性,这种属性称为对象操作的多态性。 面向对象程序的运行,不再是一个进程硬要全面主宰一切似地完成计算任务的形式,而是面对环境中正在“生活”的对象,不时地请求其服务,以达到完成计算的目的。那些生活中的对象也不是为了某个进程而活着,而是各司其职充当系统的一个部件而已。所以程序的形式变成了:程序=(对象,对象,对象,…)总之,世界是对象的,我们面向对象而分析,而设计,而编程。这就是面向对象程序设计的着眼点。 1.9小结(Conclusion)C++语言适合软件工业化的要求,因而在与其他语言的竞争中脱颖而出。C++是从C进化而来,继承了其高效灵活性。学习编程,在构造了起码的程序框架后,就要开始涉及算法,而算法又涉及到数据结构,因而,学习编程,首先是学习简单的算法,和简单的数据结构。C++程序总是从main函数开始运行,而main函数本质上就是一个过程。世界上形形色色的问题,带来了数据结构的多样化,要能真正解决问题,就必须在自建数据类型的基础上,建立起层次结构的抽象数据类型的规范,使编程从彼此相互依赖的合作关系走上彼此互不影响的合作关系。程序员创作的程序模块可以带来相当程度的重用。这就是基于对象的程序设计。 要真正的面向对象,就要能一致地处理任何形式、任何层次的对象,C++语言中的类的多态机制就是为此而设。更重要的是,面向对象的程序设计,带来了程序运行方式的变化,程序运行中的对象关系,就像网络结构中的客户机与服务器的关系,请求与响应构成了对象的通信模式,也构成了程序运行的新模式。学弹钢琴光看乐谱是没有用的,看一点,就要弹一弹,听听自己弹的音准不准,渐渐地步入门径……。学习C++也是一样,学一点就要练一练。练习1.实现一个简单的程序,输出“Iamastudent.”并换行。2.实现一个多行输出的程序,输出内容为:*************************'