




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章分支语句和编程设 例 测试 if结 if结构举 例 例 关于if结构使用的注意事 例 switch结 try/catch结构的应 测试 控制x,y轴绘图的上下 子图 例 例 例 测试 总 结 练 面的章节中,我们开发了几个完全运转的程序。但是这些程序都十分样的程序我们称之顺序结构程序。它首先输入,然后运算得到所需结果,打印出结在下面的两章中,向大家介绍大量的语句,这些语句允许我们来控单。为了帮助大家避免在编程过程中出现大量的错误,向大家介绍正式的编程步我发现在工作中我遇到的大多数都是对所要解决问题的理解。一旦你真正理解了问的系数可能有其预先存在的顺序,我们的新程序必须能按照顺序它们。相似地,也需 都会将伪代码一句一句地转化为合适地语句。 大众使用之前,必须经过一系列地检测(3.2)。检测的第一步有时被称为单元检测(unit子程序添加到程序中子程序添加到程序中betaalphabetaalpha在整个程序被组合之后,调试继续进行。程序第一个版本我们通常称之为“alpha版之。当许许多多大的错误从程序中去除,一个新的版本出现了,我们称之“beta版被更正后,这个程序就能够给公众使用了。因为本程序都比较小,没有必要进程序设计的基本步骤如下 在大的编程项目中,花在编程序的时间是出奇的少。FrederickPBrooks在他的theMythicalMan-Month书,对于大的软件工程来说,三分之一的时间花在计划如何来我们可以用伪代码的形式建立算法的结构。伪代码是和英语的混合体。和 例2.3的算法伪代码PromptusertoentertemperatureindegreesFahrenheitReadtemperatureindegreesFahrenheit(temp_f)temp_kinkelvins←(5/9)*(temp_f-32)+273.15Writetemperatureinkelvins赋值号与等号的。在把它们转化为代码之前,伪代码将有助于你思想的组种形式的运算符可以在中关系得到true/false:关系运算符和逻辑运算符。生结果true或false。关系运算的基本形式如下a1op如果两者的关系为真(true)时,那么这个运算将会返回1值;否则将会返回0值。3.1运算 运 3<13<=13==03>04<=1'A'<1a
111 2 1 同的大小。例如a2 1,b2 1,表达式a>=b将会产生结果 果它们有不同的长度,比较运算将会产生一个错误。在第六章中会学到一个更普遍的两个符号,初学者极易。符号==是一个比较运算符,返回一个逻辑数,而符号=是在运算的层次中,关系运算在所有数算的之后进行。所以下面两个表达式是等价的,均产生结果1。7+3<2+(7+3)<(2+不等运算符(~=)如果两变量值不同则返回1,相则返回0。种错误叫做roundoff错误。例如,考虑下面的两个数,两者均应等于0。a=b=计算所产生的结果的是>>a=>>b=>>a==bans=0a和broundoffsin(pi)产生了1.2246×10160roundoff错误而失之发生了细微的会产生roundoff错误。例如测试>>abs(a-b)<1.0E-ans1a与broundoff相等的值不相等了。这时你可以在roundoff错误的范围内它是不是近似相等。
l1opop系为true,那么运算将会返回值1,否则将会产生0。3.2 个数的值不为0,那么将把看作true,如3.3与或非l1&l1|000001010111100110111100 产生结果 a 0,b
1a|b产生的结果
0 value1=value2=value3=-逻辑表达 结 value1| value1& value1&value2| value1&(value2| ~(value1& 函 用
表 a不是一个数则返1,否则返回0 a=b=-c=d=1.a>2.b>3.a>b&c>4.a==5.a&b>6.a= b 1--0c=0 d=-212 01~(a>a>c&b>c<=a= b=c= d=a*b^2>d|bb>(d|b)>a= b=-c= d=a>b& 中有三种具体的形式:if结构,switch结构和try/catch结构。ififcontrol_expr_1Statement1Statement2Block Statement1Statement2Block Statement1Statement2Block3 control_expr_2control_expr_20,那么程序将会执行语句块2(block2),然后跳到end后面的第一个可执行语句继续执行。如果所有的控制表达式(controlexpression)均为0,那么程序将会执行与else相关的语句块。ifelseifelse语句最多有一个。只要上面每一个控制表达式均为0,那么下一个控制表达式将会被检测。一旦其中的一个表达式的值非的控制表达式(controlexpression)均为0,那么程序将会执行else语句。如果没有else语句,程序将会执行end后面的语句,而不执行if结构中的部分。注意在if结构中的关键字end与第二章中提到的返回已知下标最大值函数end完全不同。通过end在M文件中的上下文来区分开它的两个用途。在大多数情条件为真时,运算结果为非0,则对应的语句块,就会被执行。例如,一元二次方程的基本形式如下ax2+bx+c=
-b±b2-b±b2-if(b^2-4*a*c)<Writemsgthatequationhastwocomplexroots.elseif(b^2-4*a*c)==0Writemsgthatequationhastwoidenticalrealroots.Writemsgthatequationhastwodistinctreal if(b^2-4*a*c)<disp('Thisequationhastwocomplexroots.');elseif(b^2-4*a*c)==0disp('Thisequationhastwoidenticalrealroots.');disp('Thisequationhastwodistinctreal回忆一下,判断为真时,关系运算符将会返回一个非0值,从而导致对应语句的执行。ifx<y=和ifx<0;y=abs(x);ax2+bx+c= Prompttheuserforthecoefficientsa,b,andReada,b,andcdiscriminant←b^2-4*a*cifdiscriminat>0x1←(-b+sqrt(discriminant))/(2*a)x1←(-b-sqrt(discriminant))/Writemsgthatequationhastwodistinctrealroots.Writeoutthetworoots.elseifdiscriminant==0x1←-b/(2*a)Writemsgthatequationhastwoidenticalrealroots.Writeouttherepeatedroots.
real_part←-b/imag_part←sqrt(abs(discriminant))/(2*a)Writemsgthatequationhastwocomplexroots.Writeoutthetworoots.%Scriptfile:%%%Thisprogramsolvesfortherootsofaquadratic%oftheforma*x^2+b*x+c=0.Itcalculatesthe%regardlessofthetypeofrootsthattheequation%%Recordof Descriptionof S.J. Original%%Define% --Coefficientofx^2termof% --Coefficientofxtermof% --Constanttermof% --Discriminantofthe% --Imagpartofequation(forcomplex% --Realpartofequation(forcomplex% --Firstsolutionofequation(forreal% --Secondsolutionofequation(forreal%Prompttheuserforthecoefficientsoftheequationdisp('Thisprogramsolvesfortherootsofaquadratic');disp('equationoftheformA*X^2+B*X+C=0.');a=input('EnterthecoefficientA:b=input('EnterthecoefficientB:c=input('EnterthecoefficientC:%Calculatediscriminantdiscriminant=b^2-4*a*c;%Solvefortheroots,dependingonthevlaueofthediscriminant.ifdiscriminant>0 %therearetworealroots,so...x1=(-b+sqrt(discriminant))/(2*a);x2=(-b-sqrt(discriminant))/(2*a);disp('Thisequationhastworealroots:');fprintf('x1=%f\n',x1);fprintf('x2=%f\n',elseifdiscriminant==0%thereisonerepeatedroot,so...x1=(-b)/(2*a);disp('Thisequationhastwoidenticalrealroots:');fprintf('x1=x2=%f\n',x1);else%therearecomplexroots,so...real_part=(-b)/(2*a);imag_part=sqrt(abs(discriminant))/(2*a);disp('Thisequationhascomplexroots:');fprintf('x1=%f+i%f\n',real_part,imag_part);fprintf('x1+%f-i%f\n',real_part,
x2+5x+6= x=-2,andx=-x2+4x+4= x=-x2+2x+5= x=-1±>>ThisprogramsolvesfortherootsofaquadraticequationoftheformA*X^2+B*X+C=0.EnterthecoefficientA:1EnterthecoefficientB:5EnterthecoefficientC:Thisequationhastworealx1=-x2=->>ThisprogramsolvesfortherootsofaquadraticequationoftheformA*X^2+B*X+C=0.EnterthecoefficientA:1EnterthecoefficientB:4EnterthecoefficientC:Thisequationhastwoidenticalrealroots:x1=x2=-2.000000>>ThisprogramsolvesfortherootsofaquadraticequationoftheformA*X^2+B*X+C=0.EnterthecoefficientA:1EnterthecoefficientB:2EnterthecoefficientC:Thisequationhascomplexroots:x1=-1.000000+i2.000000x1+-1.000000-ix+xx+
x≥0andx≥0andf(x,y)=x2+ x<0andx2+ x<0and答案式,检查用户输入的x,y的正负符号是必要的。f(x,y)4种选择,选PrompttheuserforthevaluesxandyReadxandyifx≥0andy≥0fun←x+yelseifx≥0andy<0fun←x+y^2elseifx<0andy≥0fun←x^2+yfun←x^2+Writeout%Scriptefile:%%%Thisprogramsolvesthefunctionf(x,y)for%user-specifiedxandy,wheref(x,y)isdefined |x+ x>=0and |x+ x>=0and f(x,y)=|x^2+ x<0and |x^2+ x<0and %%Recordof Descriptionof Original%%Define% --Firstindependent% % --Resulting%Prompttheuserforthevaluesxandyx=input('Enterthexcoefficient:');y=input('Entertheycoefficient:%Calculatethefunctionf(x,y)based%thesignsofxandy.ifx>=0&y>=0fun=x+y;elseifx>=0&y<0fun=x+y^2;elseifx<0&y>=0fun=x^2+y;
fun=x^2+%Writethevalueofthedisp(['Thevlaueofthefunctionis'下一步,须输入实数来检测这个程序。因这个程序有四个可能的路径。所以在f(2,3)=2+3=f(2,-3)=2+(-3)2=f(-2,3)=(-2)2+3=f(-2,-3)=(-2)2+(-3)2=>>Enterthexcoefficient:2Entertheycoefficient:Thevlaueofthefunctionis>>Enterthexcoefficient:2Entertheycoefficient:-3Thevlaueofthefunctionis>>Enterthexcoefficient:-2Entertheycoefficient:3Thevlaueofthefunctionis7>>Enterthexcoefficient:-2Entertheycoefficient:-Thevlaueofthefunctionisif结构是非常灵活的,它必须含有一个if语句和一个end语句。中间可以有任意个两者为嵌套关系。下面是两个if语句的嵌套。ifx>ify<
工作正常。但如果程序员编写出错误,它将会使编译器出现性错误信息提示。例如,ififif
这个程序包括了三个嵌套的if结构,在这个结构中可能有上千行的代码。现在假设第一个end在编辑区域突然被删除,那么 if(test3)结构,第三个end将会和中间的if(test2)。当编译器翻译到达文误提示信息,即缺少一个end。但是,它不能告诉你问题发生在什么地方,这就使级grade> 95≥grade> 86≥grade> 76≥grade> 66≥grade ifgrade>elseifgrade>86.0elseifgrade>76.0elseifgrade>66.0disp('Thegradeisifgrade>disp('Thegradeis
ifgrade>ifgrade>ifgrade>disp('Thegradeis
if语句将会比if的嵌套结构简单的多。用if的嵌套结构。casecase_expr_1,Statement1Statement2Block1 Statement2Block Statement1Statement2Blockn switch_expr的值与case_expr_1相符,那么第一个代码块将会被执行,然后程序用相同的方法来对待其他的情况。otherwise语句块是可选的。如果它存在的话,当witch_expr的值与其他所有的选项都不相符,那么这个结构中的任何一个语句块都不会被执行。这种情况下的结果可以看作没有选择结构,直接执行语言。switch表达式和表中任何一个表达式相匹配,那么这个语句块将switchcase{case_expr_1,case_expr_2,Statement1Statement2Block1 Statement1Statement2Blockn 是奇数还是偶数。它用来说明一系列的case选项值的应用和otherwise语块的应用。switchcase{1,3,5,7,case{2,4,6,8,10},disp('Thevalueiseven.');disp('Thevalueisoutof程序在运行时遇到了一个错误,这个程序就会中止执行。try/catch结构修改了这个默认行Statement2Try Statement2Catch 将中止执行try语句块,并立即执行catch语句块。try语句块一般会在这个程序中执行,只有当try语句块执行出错,catch语句块将会发生错误。a=[1-325];%Trytodisyanindex=input('Entersubscriptofelementtodisy:disp(['a('int2str(index)')='num2str(a(index))]%Ifwegethereanerrordisp(['Illegalsubscript:'int2str(index)]>>Entersubscriptofelementtodisy:3a(3)=2>>Entersubscriptofelementtodisy:8Illegalsubscript:8出一条关于平方根函数参数的错误信息。并把sqrt_x归零。算并打印出fun值。 分钟,越过300公里的部分一律按0.20 ifvolts>ifvolts<105disp('Linevoltageiswithinswitch(color);case'red',case'yellow',case'green',iftemperature>disp('Humanbodytemperatureexceeded.');elseiftemperature>100disp('Boilingpointofwaterexceeded.');显示这些数据的一部分非常有用,这时你可以应用axis命令/函数。为了说明axis的应用,画出函数f(x)=sinx从-2π到2π之间的图象,然后限定坐标的区域为0≤x≤π,0≤y≤1。4元素行向量[xminxmaxyminymax]xminxmaxyminymax代表x,y轴的上下限axis([xminxmaxyminxminxmaxyminymax设定纵轴的下限及上axisaxisaxisaxisaxis函数:axis([020035])。遇到这样的情况怎么办?axison;axison;garbagegarbage12garbagegarbage('1','2',title('Plottitle('Plotofsin(x)vslimits= 1修改坐标轴的上下限可以调用函数axis([0pi01])。在一般情况下,创建一个新的图象就要用到一个plot命令,前面的数据就会自动消都会叠加在原来存在的图象。holdoff命令可恢复默认情况,用新的图象来替代原来的图holdon;holdoff;legend('sinx','cosholdon;holdoff;legend('sinx','cos些图象窗口,图象数是一个小的正整数。第一个图象窗口称为图1,第二个图象窗口为图窗口不存在,那么将会自动创建。当前图象也可以用鼠标单击选择。M第二个用来展示e象,而且subplot4是当前子图象。中的4种附加的属性。6,每个标识为红色边缘和绿色内核,如图3.6。streammodifiersstreammodifier是一个特殊的字符streammodifier插入一个文本字符串中,它持续发挥作用,直到这个字符串的结束或。如果一个modifier后在跟着一个{},只有{}中的文本起作用。这些字符。这些转义序列是支持TEX语言的特殊序列的一个子集。在表3.6中向大家展示 如果要打印转义符\,{,},_,或^就必须面加上一个反斜杠。下面的例子用于说明streammodifier和特殊字符的应用。\tau_{ind}versus\thetavariesfrom0\circto\bf{B}τindversusθvariesfrom0oto3.6α∫βγΓ~δΔ\i∞ε±η≤θ≥λΛ≠μ∝ν÷πΠ°φ↔ρ←σΣ→τ↑ωΩ↓后面观众的噪声信号。一个心形麦克风的增益gain是关于角度θ的函数,关系式如下 麦克风的g是0.5,画出函数Gain的极坐标图。如图3.7所示。注意这种麦克风叫做心形麦克风,所以得出来曲线的形状像颗心。%%Scriptfile:%%%Thisprogramplotsthegainpatternofa%%%Recordof%DateProgrammerDescriptionof%==============%12/10/97S.J.ChapmanOriginal%%%Define%g--Microphonegain%gain--Gainasafunctionof%theta--Anglefrommicrophoneaxis%Calculategainversusangleg=0.5;theta=gain=%Plotpolar(theta,gain,'r-title('GainversusangleR+R+-C成。输出电压V0与输入电压Vi的电压比为Vo
1+为法拉。j为-1%%Scriptfile:%%%Thisprogramplotstheamplitudeandphase%ofalow-paddRC%%Recordof%DateProgrammerDescriptionof%==============%12/29/98S.J.ChapmanOriginal%%Define%%%%%%--Capacitiance--Frequencyofinputsignal--Phase--%InitializeR&RR=16000;%16kohmsC=1.0E-6;%1uF%Createarrayofinputfrequenciesf=1:2:1000;%Calculateres=1./(1+j*2*pi*f*R*Camp=abs(res);phase=angle(res);%Createplotstitle('AmplitudeResponse');xlabel('Frequency(Hz)');gridon;semilogx(f,phase);title('PhaseResponse');gridon;子想象成一个刚性,每次碰撞,总动能不会改变。这样的气体可以用三个变量来描(P,体积(T P代表气压,单位为千帕,V代表气体的体积,单位为升,n代表分子的摩尔数,T代2pixel。在图象上包含有一个大标题,x,y轴的,还有各轨迹的图例。off命令。我们也必须指定轨迹的颜色,样式和宽度,并指定为黑体。%Scriptfile:%% Thisprogramplotsthepressureversusvolumnof ideal%%Recordof Descriptionof Original%%Define% --Numberofatoms% % --Idealgasconstant(LkPa/mol% % --volume%Initializen=1; %MolesofatomsR=9.314; %IdealgasconstantT= %Temperature%Createarrayofinputpressures.Notethat%arraymustbeguitedensetocatchthe%changesinvolumeatlowpressures.P=1:0.1:1000;V=(n*R*T)./P;%Createfirstplot.loglog(P,V,'r-','LineWidth',2);title('\bfVolumevsPressureinanIdealGas');xlabel('\bfPressure(kPa)');gridon;hold%NowincreaseT= %TemperatureV=(n*R*T)./P;%Addsecondlineto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届山东省临沭县青云镇中心中学英语七年级第二学期期中检测试题含答案
- 2025年生态修复植被重建技术在城市生态修复生态效益分析中的应用报告
- 2025年智慧港口自动化装卸设备产业政策解读报告
- 2025年元宇宙社交平台虚拟社交平台稳定性与用户体验分析报告
- 2025年智能制造专项补贴资金申请政策解读与应用报告
- 2025年工业互联网软件定义网络SDN在智能电网调度优化报告
- 2025年医药企业市场拓展策略与品牌建设报告
- 零售私域流量运营与用户参与度提升策略优化报告001
- 再障的护理课件模板
- 2025年互联网金融科技服务平台在金融科技创新竞赛中的案例分析报告
- 家政服务培训 课件
- 2025年人教版小学五年级下册数学期末重难点测评试题(含答案和解析)
- 2024年天津市应急管理局招聘行政执法专职技术检查员笔试真题
- 广西壮族自治区钦州市2024-2025学年高二上学期期末检测历史试题(含答案)
- 2025年养老护理员职业考试试题及答案
- 音乐杜鹃圆舞曲教案
- 揭阳惠来县纪委监委等部门属下事业单位招聘笔试真题2024
- 春苏教版六年级数学总复习30课时教学设计
- 党课课件含讲稿:以作风建设新成效激发干事创业新作为
- 西安美术学院《舞台编导艺术》2023-2024学年第二学期期末试卷
- 城投公司工程管理制度
评论
0/150
提交评论