程序的基本结构教学.ppt
1第一章第一章 程序的基本结构程序的基本结构2教材及授课结构l本章目标本章目标l基本内容基本内容l扩展阅读扩展阅读l上机指导上机指导l应用举例应用举例l习题习题3教学目标l了解程序的基本知识和上机环境,学习了解程序的基本知识和上机环境,学习l1)了了解解主主函函数数和和一一般般函函数数的的概概念念,了了解解结结构构化化程程序序设设计计与与面面向向对对象程序设计的程序框架特征和程序设计技术的应用及发展趋势;象程序设计的程序框架特征和程序设计技术的应用及发展趋势;l2)掌握源程序的书写格式,包括标识符和关键掌握源程序的书写格式,包括标识符和关键(保留保留)字的使用;字的使用;l3)了了解解编编译译预预处处理理、编编译译和和链链接接过过程程和和从从编编辑辑源源程程序序到到程程序序运运行行的操作方法;的操作方法;l4)掌握数据的输入输出(包括输入输出格式)方法。掌握数据的输入输出(包括输入输出格式)方法。4基本内容 l1.1几个简单的程序几个简单的程序l1.2程序的基本结构和要素程序的基本结构和要素5程序设计语言 l通用应用软件通用应用软件l文字处理:Wordl表格处理:EXCEL l科学计算 MATLAB.l当前流行的程序设计语言工具当前流行的程序设计语言工具lMicrosoft:Visual C+、Visual BasiclBorland:Delphi、C+BuilderlSun:JavalC与与C+61.1 几个简单的程序/例例1-1:在屏幕上显示:在屏幕上显示:Thisismyfirstprogram!#include/包含基本输入输出库文件包含基本输入输出库文件usingnamespacestd;/使用名字空间使用名字空间stdintmain()/主函数名主函数名coutThisismyfirstprogram!;/屏幕显示语句屏幕显示语句return0;/表示程序顺利结束表示程序顺利结束C+的程序由函数组成。该程序只由一个主函数的程序由函数组成。该程序只由一个主函数main()()构成构成一对花括号一对花括号“”是主函数的定界符是主函数的定界符程序语句全部采用小写字母。区分大小写,书写采用自由格式程序语句全部采用小写字母。区分大小写,书写采用自由格式语句用分号结束;一行可以写多个语句语句用分号结束;一行可以写多个语句注释行注释行:以两个以两个“/”起头的任何文字起头的任何文字7例1-2:加法计算器程序/例例1-2:加法计算器程序:加法计算器程序#include/包含基本输入输出库文件包含基本输入输出库文件usingnamespacestd;/使用名字空间使用名字空间stdintmain()/主函数名主函数名intx,y,sum;/定义三个变量定义三个变量coutxy;/输入两个变量的值输入两个变量的值sum=x+y;/加法计算加法计算coutx+y=sumendl;/输出运算结果输出运算结果return0;/表示程序顺利结束表示程序顺利结束8例1-3:根据三角形的三个边长求三角形面积/例例1-3:求三角形面积:求三角形面积#include#include/包含标准数学函数库包含标准数学函数库usingnamespacestd;/定义定义area()函数,其函数的返回值和形式参数函数,其函数的返回值和形式参数a,b,c都是双精度类型都是双精度类型doublearea(doublea,doubleb,doublec)doubles,t;/定义本函数中用到的变量定义本函数中用到的变量s和和t为可描述实数的双精度类型变量为可描述实数的双精度类型变量s=(a+b+c)/2;/计算中间变量计算中间变量st=sqrt(s*(s-a)*(s-b)*(s-c);/调用标准数学开平方函数调用标准数学开平方函数returnt;/将运算结果将运算结果t的值返回,通过函数名的值返回,通过函数名area带回函数调用处带回函数调用处/主函数主函数intmain()doublex,y,z;/变量说明,定义三个可对实数进行操作的双精度类型变量变量说明,定义三个可对实数进行操作的双精度类型变量/调用调用area函数(参数使用几个确定的值)并将计算得到的结果直接输出函数(参数使用几个确定的值)并将计算得到的结果直接输出cout边长分别为边长分别为3、4、5的三角形面积为:的三角形面积为:area(3,4,5)endl;coutxyz;/调用调用area函数(参数为用户任意输入的值)并将计算得到的结果直接输出函数(参数为用户任意输入的值)并将计算得到的结果直接输出cout三角形面积为:三角形面积为:area(x,y,z)endl;return0;91.2 程序的基本结构和要素l1.2.1程序的基本结构程序的基本结构l1.2.2输入与输出输入与输出l1.2.3注释注释l1.2.4标识符和关键字标识符和关键字101.2.1 程序的基本结构全局变量说明全局变量说明#includeusingnamespacestd;子函数子函数1(形式参数)(形式参数)子函数局部变量说明子函数局部变量说明语句序列语句序列。intmain()局部变量说明局部变量说明语句序列语句序列return0;lC+程序由函数组成;至少包括主函程序由函数组成;至少包括主函数数main()()和(或)若干个子函数。和(或)若干个子函数。唯一的主函数唯一的主函数main()是整个程序的入是整个程序的入口点。口点。l一个函数又由变量及参数说明语句和一个函数又由变量及参数说明语句和语句序列构成。语句序列构成。l每个语句必须用分号结尾。一个语句每个语句必须用分号结尾。一个语句行可以写多个语句,一个语句可以写行可以写多个语句,一个语句可以写在多行上。在多行上。lC+语言允许在程序中插入注释行。语言允许在程序中插入注释行。lC+语言提供了包括语言提供了包括I/O功能在内的大功能在内的大量标准库函数,但调用这些函数时,量标准库函数,但调用这些函数时,必须在程序头部包含头文件。必须在程序头部包含头文件。函函数数体体111.2.2 输入与输出lcin表示输入流对象,其基本用法为:表示输入流对象,其基本用法为:cinV1V2Vn;l在输入时,应注意用空格或tab键将所输入的数据分隔开。l必须注意所输入数据的类型应与接受该数据之变量的类型相匹配,否则输入操作将会失败或者得到的将是一个错误的数据。lcout表示输出流对象,其基本用法是:表示输出流对象,其基本用法是:cout E1 E2 Em;l在输出时,要注意恰当使用字符串和换行符endl,提高输出信息的可读性。cout x +y =sum xy;coutThisismyfirstprogram!;131.2.2 注释lC+的注释有两种形式:的注释有两种形式:l/用于单行注释l/*/用于多行注释l注释可以出现在空白符允许出现的任何地方,注释可以出现在空白符允许出现的任何地方,但习惯上将注释和其所描述的代码相邻,一般但习惯上将注释和其所描述的代码相邻,一般可以放在代码的上方或右方,不放在下方。可以放在代码的上方或右方,不放在下方。l恰当使用注释可以使程序容易阅读。恰当使用注释可以使程序容易阅读。14 标识符和关键字l是程序中变量、类型、函数和标号的名称。是程序中变量、类型、函数和标号的名称。l由字母、数字和下划线由字母、数字和下划线“_”组成,第一个字符不能是数字。组成,第一个字符不能是数字。l“大小写敏感大小写敏感”。l各种各种+编译器对在标识符中最多可以使用多少个字符的规定各编译器对在标识符中最多可以使用多少个字符的规定各不相同,不相同,ANSI标准规定编译器应识别标识符的前标准规定编译器应识别标识符的前6个字符。个字符。l在标识符中恰当运用下划线,大、小写字母混用以及使用较长的在标识符中恰当运用下划线,大、小写字母混用以及使用较长的名字都有助于提高程序的可读性。名字都有助于提高程序的可读性。15标识符、关键词和标点符号标识符、关键词和标点符号l+关键词关键词asm,auto,bad_cast,bad_typed,bool,break,case,catch,char,class,const,const_cast,continue,default,delete,do,double,dynamic_cast,else,enum,except,extern,explicit,false,finally,float,for,friend,goto,if,inline,int,long,mutable,namespace,new,operator,private,protected,public,register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,try,type_info,typedef,typeid,union,unsigned,using,virtual,void,volatile,whilel+还有还有12个标识符作为编译预处理个标识符作为编译预处理define,elif,else,endif,error,if,ifdef,ifndef,include,line,progma,undeflC+的标点和特殊字符有的标点和特殊字符有!%&*()+=|;:?,./#16扩展阅读l1.3C/C+背景背景l1.3.1 程序设计语言的发展l1.3.2 从C到C+17上机指导l1.4VisualC+集成开发环境集成开发环境lVisual C+6.0lVisual C+2008(Visual C+9.0)l其他调试环境其他调试环境18应用举例l例例1-4计算下式的结果,其中计算下式的结果,其中x=-3.5,y=6.7#include#include/包含标准数学函数库包含标准数学函数库usingnamespacestd;intmain()doublex,y;/将角度单位由度转换为库函数所要求的弧度值将角度单位由度转换为库函数所要求的弧度值x=-3.5/180*3.14159;y=6.7/180*3.14159;/计算三角函数并输出计算三角函数并输出coutsin(fabs(x)+fabs(y)/sqrt(cos(fabs(x+y)endl;return0;19应用举例l例例1-5计算保险经纪人月薪计算保险经纪人月薪假定每一名保险经纪人的月工资都由三部分组成:假定每一名保险经纪人的月工资都由三部分组成:底薪奖金业务提成。底薪奖金业务提成。l奖金的颁发方法为:奖金为经纪人在公司的工作年数*10,即每年10元;l业务提成的颁发方法为:当月销售额的3提成。l编程要求:当用户按照屏幕提示分别输入经纪人的底薪、编程要求:当用户按照屏幕提示分别输入经纪人的底薪、工龄以及当月销售额后,程序计算并输出经纪人的月薪。工龄以及当月销售额后,程序计算并输出经纪人的月薪。20算算 法法 分分 析析1.输入底薪输入底薪baseSalary2.输入经纪人在公司的工作年数输入经纪人在公司的工作年数serviceYears3.计算奖金计算奖金bonus=10*serviceYears4.输入经纪人当月销售额输入经纪人当月销售额totalSale5.计算提成计算提成additionalBonus=0.03*totalSale6.计算经纪人的月薪计算经纪人的月薪Salary=baseSalary+bonus+additionalBonus7.输出结果输出结果21#includeusingnamespacestd;intmain()/声明部分,定义程序中将用到的变量声明部分,定义程序中将用到的变量doublebaseSalary,bonus,totalSale,additionalBonus,Salary;intserviceYears;coutbaseSalary;coutserviceYears;/计算奖金计算奖金bonusbonus=10*serviceYears;couttotalSale;/计算提成计算提成additionalBonusadditionalBonus=0.03*totalSale;/计算经纪人的月薪计算经纪人的月薪SalarySalary=baseSalary+bonus+additionalBonus;cout该经纪人的月薪为:该经纪人的月薪为:Salaryendl;return0;22案例:案例:重量单位换算l编写一个重量单位换算程序,输入用公斤表编写一个重量单位换算程序,输入用公斤表示的重量,然后程序能够转换并输出用镑和示的重量,然后程序能够转换并输出用镑和盎司表示的等效重量。盎司表示的等效重量。请输入重量请输入重量(公斤公斤):23转换为用磅表示的重量转换为用磅表示的重量(磅磅):50.7055转换为用盎司表示的重量转换为用盎司表示的重量(盎司盎司):811.287教学设问教学设问如何设计变量及选择相应的数据类型?如何设计变量及选择相应的数据类型?公斤、磅和盎司的转换公式是什么?公斤、磅和盎司的转换公式是什么?*更多案例见本书配套教材更多案例见本书配套教材C/C+C/C+语言程序设计案例教程语言程序设计案例教程 罗建军等编著,清华大学出版社罗建军等编著,清华大学出版社23问题分析l为保证程序能够处理带小数点的数值,变量的数据类为保证程序能够处理带小数点的数值,变量的数据类型需选用可以对实数进行操作的双精度类型型需选用可以对实数进行操作的双精度类型double。故变量列表为:故变量列表为:ldoublekilogram,pound,ounce;/公斤、镑、盎司公斤、镑、盎司l公斤、磅和盎司的转换公式:公斤、磅和盎司的转换公式:l1磅磅=16盎司盎司=0.4536千克(公斤)千克(公斤)l算法如下:算法如下:l1.得到用公斤表示的重量得到用公斤表示的重量l2.将重量转化为磅:将重量转化为磅:pound=kilogram/0.4536;l3.将磅转化为盎司:将磅转化为盎司:ounce=pound*16;l4.输出转换后的重量输出转换后的重量24/重量单位换算重量单位换算#includeusingnamespacestd;intmain()doublekilogram,pound,ounce;/公斤、镑、盎司公斤、镑、盎司coutkilogram;pound=kilogram/0.4536;ounce=pound*16;cout转换为用磅表示的重量转换为用磅表示的重量(磅磅):poundendl;cout转换为用盎司表示的重量转换为用盎司表示的重量(盎司盎司):ounceendl;return0;25进一步思考l如果要想从磅和盎司转换成公斤,应该怎么如果要想从磅和盎司转换成公斤,应该怎么修改程序?修改程序?l如果要想将本案例程序的输出改成如果要想将本案例程序的输出改成*磅磅*盎盎司(磅和盎司都省略小数点后的位数),应司(磅和盎司都省略小数点后的位数),应该怎么修改程序?该怎么修改程序?26习题1.在计算机上调试运行本章的所有例题,熟悉实验环境和方法。在计算机上调试运行本章的所有例题,熟悉实验环境和方法。2.修改例修改例1-1程序,使其能够在计算机屏幕上显示:程序,使其能够在计算机屏幕上显示:*Hello World!*3.仿照例仿照例1-2的加法计算器程序,编写一个通用计算器程序,当用户输入的加法计算器程序,编写一个通用计算器程序,当用户输入两个数以后,可以计算并输出这两个数的和、差、积、商。两个数以后,可以计算并输出这两个数的和、差、积、商。4.仿照例仿照例1-3,编写一个计算直角三角形斜边边长的程序,要求当输入直,编写一个计算直角三角形斜边边长的程序,要求当输入直角三角形的两个直角边边长后,能够计算出第三边(即斜边)的边长。角三角形的两个直角边边长后,能够计算出第三边(即斜边)的边长。5.仿照例仿照例1-4,编写程序,计算,编写程序,计算在在x=3时的值。时的值。6.仿照例仿照例1-5,编写一个程序,当输入某学生,编写一个程序,当输入某学生“英语英语”课程的平时成绩、课程的平时成绩、期中考试和期末考试成绩及各项占总成绩的比例后,可以计算出该生期中考试和期末考试成绩及各项占总成绩的比例后,可以计算出该生“英语英语”课程的最终成绩。课程的最终成绩。27学好程序设计语言的唯一途径是学好程序设计语言的唯一途径是 你的编程能力与你在计算机上投入的时间成你的编程能力与你在计算机上投入的时间成 结结 束束 语语28