C语言第二讲 程序开发的基本概念.ppt
1第二讲程序开发的基本概念-软件工程的方法2主要内容n体验软件开发的过程问题的定义算法设计编码测试n接触C语法要素3分析问题n分析问题的方法输入输出解决问题的基本方法n数学中解答应用题已知什么求什么解题思路4算法设计n算法:解决问题所需的具体步骤n自顶向下的设计方法n编程问题的基本算法获得数据执行计算显示结果算法的描述方法n自然语言n流程图n伪代码5自然语言n三个数中的最大值的算法如下:第1步:输入三个正整数a,b,c;第2步:如果a大于b,则将a的值赋给max,否则将b的值赋给max;第3步:如果c大于max,则将c的值赋给max;第4步:打印:“最大值为”max6流程图7n画出以下问题处理的算法流程图:n如果输入一个整数1,则输出“true”,输入其它整数则输出“false”伪代码inputthreeintegernumbersprint“请输入三个整数”inputa,b,cjudgethemaxonefromthreenumbersifabthenmax=aelsemax=bifcmaxthenmax=coutputtheresultprint:“最大数是”;max89编码n编码是将算法转化为程序的过程n编码的工作内容确定数据的存储方式数据类型完成功能的实现语句三个正整数中的最大值的编码实现#includevoidmain()inta,b,c,max;/输入三个正整数a,b,c;printf(请输入三个正整数a,b,c:);scanf(%d%d%d,&a,&b,&c);/如果a大于b,则将a的值赋给max,否则将b的值赋给max;if(ab)max=a;elsemax=b;/如果c大于max,则将c的值赋给max;if(cmax)max=c;/打印:“最大值为”maxprintf(最大值为:%dn,max);1011测试n正如前面介绍程序错误时所提到的,可以运行的程序并不是正确的程序,还要根据问题的实验目标,设计测试用例来检查所编写的程序,是否还存在着错误。n测试的过程就是查找错误的过程。n测试用例的设计是测试程序的核心。逻辑错误error1-3.cpp#includevoidmain(void)intx;scanf(%d,&x);if(x=1)printf(true);elseprintf(false);测试用例一:测试用例一:输入:1输出:true测试用例二:测试用例二:输入:0输出:false测试用例三:测试用例三:输入:10输出:false12C语言程序voidmain(void)inta,b,c,max;printf(输入三个整数:);scanf(%d%d%d”,&a,&b,&c);if(ab)max=a;elsemax=b;if(cmax)max=c;printf(“最大数是:%d“,max);13测试用例设计:n测试用例一:测试用例一:输入:123输出:3n测试用例二:测试用例二:输入:321输出:3n测试用例三:测试用例三:输入:132输出:314案例:磅到公斤的转换n学生在做奶粉的市场调查时发现国产奶粉使用公斤为单位,进口奶粉使用磅为单位。现在希望采用公斤统一计量,写出实行转换的程序。15案例分析n问题的输入poundsn问题的输出kgsn解决问题的方法1公斤=0.453593磅16案例算法设计n(1)获得以磅表示的重量n(2)将重量转换成公斤n(3)显示以公斤表示的重量17案例程序实现n数据磅公斤n数据类型选择浮点数据n功能获得以磅表示的重量将重量转换成公斤显示以公斤表示的重量18磅到公斤的转换:sample01_03.cppn/*磅到公斤的转换*/n#includen#definekg_per_pound0.453593nintmain()/*小括号内void可省*/ndoublepounds;ndoublekgs;n/获得以磅表示的重量nprintf(Enterthequantityinpounds:);nscanf(%d,£s);n/将重量转换成公斤nkgs=kg_per_pound*pounds;n/显示以公斤表示的重量nprintf(thatequals%fkilograms,kgs);nreturn0;案例测试n测试用例:输入:10.0输出:4.5359320C语言要素解释n注释n预处理指令n用户自定义标识符n数据类型n常量和变量n语句n表达式n函数21注释n行注释/注释内容n多行注释/*注释内容*/n帮助理解程序n编译程序忽略注释内容,将注释替换为一个空格n注释不能嵌套22注释的功能n程序的开始功能、版本、作者、修改时间、程序名n函数定义前功能,参数、返回值、作者、修改时间n语句后功能注释23预处理指令n在编译前执行#n例如:#include#definekg_per_pound0.45359324头文件包含(库)n#include告诉编译系统可被程序访问的系统函数和符号的集合stdio.h是标准输入输出系统函数库printf和scanf是标准输入输出系统函数,属于stdio.h25常量宏n#definekg_per_pound0.453593在编译前以0.453593替代程序文本中每一个kg_per_poundn#definePI3.141592626数据类型nC提供的简单数据类型int(整型)float(单精度浮点型)double(双精度浮点型)char(字符型)n数据类型是一组数据及在这组数据上的运算书写方式编码方式存储字节操作27数据类型的选择n从水表读出的用水量,以吨为单位n换算一张大额纸币对应的硬币数目n每天通过ETC收费口的汽车数量(每辆车通过需要6秒钟,共10个收费口)n表示一个人的性别n成绩为0-100的整数,成绩的总分和平均分28变量n用于存放程序的输入数据和计算结果的存储单元n程序运行时存储在变量中的数据可以改变变量的属性n名称n类型n存储位置n存储的值29npoundsdouble278.450 x0013ff7c变量的定义n变量声明数据类型变量表doublepounds;/以磅表示的重量doublekgs;/以公斤表示的重量n变量的初值随机值n变量的初始化inti=1;30doublepounds,kgs;31变量命名n用户自定义标识符1.由字母、数字、下划线(_)构成2.数字不能为首字符3.不能是保留字4.大小写敏感n保留字intchardoubleifelseforwhileprintfscanfmain32常量nint整数常量:23,0,-135ndouble浮点数常量:0.263,123.8nfloat浮点数常量:0.263f,123.8fnchar字符常量:a,A,0,n33语句n以;为C语句的结束符号赋值语句n对一个变量赋值,以新的数值改写变量中存放的内容n变量=表达式;nkgs=kg_per_pound*pounds;随机值0.45359310.0kgskg_per_poundpounds赋值前4.535930.45359310.0kgskg_per_poundpounds赋值后35交换算法ninta,b,tna=10;nb=20;n交换变量a和b中的值必须借助第三方变量tnt=a;na=b;nb=t;nt=b;nb=a;na=t;36交换的过程1020随机值abt102010t=a;202010a=b;b=t;201010交换前37算术运算符n+、-、*、/n单目运算符和双目运算符n运算顺序:从左至右优先级括号38算术表达式n用算术运算符将运算对象连接起来的符合C语言语法规则的式子数学式:(a+b)(a-c)C表达式:(a+b)*(a-c)函数nmain函数n系统函数n用户自定义函数3940main函数n每一个C程序有且只有一个main函数n程序执行自动调用main函数n程序顺次执行每一条可执行语句n形式:voidmain(void)intmain(void)声明声明可执行语句序列可执行语句序列return0;void可省41目前学习的C程序的一般形式n#includen/#includenintmain()n/变量定义n/若干输入数据n/若干赋值和计算语句n/输出结果nreturn0;n42输出语句n显示双引号之间的文字串到显示屏幕printf(Enterthequantityinpounds:n);双引号不输出双引号之间的字符称为字符串n表示换行n输出变量或表达式的值:格式控制符(%f,%d)printf(thatequals%fkilograms,kgs);printf(最大数是:%d,max);kg_per_pound*pounds43输入语句n作用:接受键盘的输入数据,存储到变量中。nscanf(“%lf”,£s);n%lf的作用:设定数据类型键盘击打字符无数据类型变量接受数据-明确数据类型例:键入:12n整数12n实数12.0n字符串“12”n£s的作用:键盘输入的值送到pounds变量所对应的存储单元中44输入提示良好的程序风格n/获得以磅表示的重量nprintf(Enterthequantityinpounds:);nscanf(%d,£s);45实践:n请按软件开发的过程完成问题的求解问题需求分析问题设计算法编码测试46常见编程错误n运行时错误输入与格式要求不符的数据,程序崩溃问题的解决方法:首先是使程序崩溃语句的定位,通常使用单步执行。n逻辑错误*输入为+问题的发现:依靠测试数据问题的解决:使用debug手段定位错误单步执行watch监视变量的值