您好,欢迎访问三七文档
Chapter3,ControlStructures((第第三三章章,,控控制制结结构构))InthischapterallthecontrolstructuresinPikewillbeexplained.Asmentionedearlier,controlstructuresareusedtocontroltheflowoftheprogramexecution.Notethatfunctionsthatmaketheprogrampauseandsimplefunctioncallsarenotqualifiedascontrolstructures.((在在这这一一章章中中所所有有在在PPiikkee中中的的控控制制结结构构都都将将会会被被解解释释。。如如前前面面所所提提到到的的,,控控制制结结构构被被用用来来控控制制程程序序运运行行的的流流程程。。注注意意那那些些方方法法会会使使程程序序中中止止并并用用简简单单的的函函数数不不能能访访问问控控制制结结构构。。))3.1Conditions((条条件件))Pikeonlyhastwomajorconditioncontrolstructures.WehavealreadyseenexamplesofbothoftheminChaptertwo.Butforcompletenesstheywillbedescribedagaininthischapter.((PPiikkee只只有有两两个个主主要要条条件件的的控控制制结结构构。。我我们们在在前前两两章章中中已已经经看看到到关关于于它它们们两两个个的的例例子子。。要要不不是是之之前前已已经经很很完完整整地地描描述述过过在在这这一一章章中中它它们们还还会会再再次次被被解解释释。。))3.1.1ifThesimplestoneiscalledtheifstatement.Itcanbewrittenanywherewhereastatementisexpectedanditlookslikethis:((最最简简单单的的是是被被称称作作iiff的的条条件件语语句句。。它它可可以以像像这这样样被被写写在在任任何何地地方方::))if(expression)statement1;elsestatement2;iiff((表表达达式式))语语句句11;;eellssee语语句句22;;Pleasenotethatthereisnosemicolonaftertheparenthesisoraftertheelse.Stepbystep,ifdoesthefollowing:((请请注注意意在在圆圆括括号号之之后后或或者者eellssee后后没没有有分分号号。。一一步步一一步步地地,,像像下下面面这这样样::))1.Firstitevaluatesexpression.2.Iftheresultwasfalsegotopoint5.3.Executestatement1.4.Jumptopoint6.5.Executestatement2.6.Done.11..首首先先计计算算表表达达式式。。22..如如果果结结果果是是ffaallssee就就到到第第55步步。。33..执执行行语语句句11。。44..跳跳到到第第66步步。。55..执执行行语语句句22。。66..完完成成。。Thisisactuallymoreorlesshowtheinterpreterexecutestheifstatement.Inshort,statement1isexecutedifexpressionistrueotherwisestatement2isexecuted.Ifyouareinterestedinhavingsomethingexecutediftheexpressionisfalseyoucandropthewholeelsepartlikethis:((执执行行iiff语语句句实实际际上上可可以以或或多多或或少少。。简简单单地地说说,,如如果果表表达达式式的的结结果果是是ttrruuee就就执执行行语语句句11,,否否则则就就执执行行语语句句22。。如如果果你你对对执执行行iiff语语句句的的结结果果是是ffaallssee比比较较感感兴兴趣趣,,你你可可以以终终止止所所有有eellssee部部分分,,像像这这样样::))if(expression)statement1;iiff((表表达达式式))语语句句11;;Ifontheotherhandyouarenotinterestedinevaluatingsomethingiftheexpressionisfalseyoushouldusethenotoperatortonegatethetrue/falsevalueoftheexpression.Seechapter5formoreinformationaboutthenotoperator.Itwouldlooklikethis:((如如果果从从另另一一方方面面来来说说,,你你并并不不对对iiff的的表表达达式式结结果果是是ffaallssee感感兴兴趣趣,,你你可可以以使使用用否否定定操操作作符符来来否否定定表表达达式式的的ttrruuee//ffaallssee值值。。看看第第55章章有有很很多多关关于于否否定定操操作作符符的的内内容容。。它它看看上上去去就就像像这这样样::))if(!expression)statement2;iiff((!!表表达达式式))语语句句22;;Anyofthestatementshereandintherestofthischaptercanalsobeablockofstatements.Ablockisalistofstatements,separatedbysemicolonsandenclosedbybrackets.Notethatyoushouldneverputasemicolonafterablockofstatements.Theexampleabovewouldlooklikethis;((如如果果从从另另一一方方面面来来说说,,你你并并不不对对iiff的的表表达达式式结结果果是是ffaallssee感感兴兴趣趣,,你你可可以以使使用用否否定定操操作作符符来来否否定定表表达达式式的的ttrruuee//ffaallssee值值。。看看第第55章章有有很很多多关关于于否否定定操操作作符符的的内内容容。。它它看看上上去去就就像像这这样样::))if(!expression){statement;statement;statement;}iiff((!!表表达达式式)){{语语句句;;语语句句;;语语句句;;}}3.1.2switchAmoresophisticatedconditioncontrolstructureistheswitchstatement.Aswitchletsyouselectoneofmanychoicesdependingonthevalueofanexpressionanditcanlooksomethinglikethis:((一一个个更更复复杂杂的的条条件件控控制制结结构构,,就就是是sswwiittcchh语语句句。。一一个个sswwiittcchh语语句句可可以以让让你你从从表表达达式式中中的的很很多多值值中中选选择择一一个个合合适适的的,,它它看看上上去去就就像像这这样样::))switch(expression){caseconstant1:statement1;break;caseconstant2:statement2;break;caseconstant3..constant4:statement3;break;default:statement5;}sswwiittcchh((表表达达式式)){{ccaassee常常量量11::语语句句11;;bbrreeaakk;;ccaassee常常量量22::语语句句22;;bbrreeaakk;;ccaassee常常量量33....常常量量44::语语句句33;;bbrreeaakk;;ddeeffaauulltt::语语句句55;;}}Asyoucansee,aswitchstatementisabitmorecomplicatedthananifstatement.Itisstillfairlysimplehowever.Itstartsbyevaluatingtheexpressionitthensearchesallthecasestatementsinthefollowingblock.Ifoneisfoundtobeequaltothevaluereturnedbytheexpression,Pikewillcontinueexecutingthecodedirectlyfollowingthatcasestatement.WhenabreakisencounteredPikewillskiptherestofthecodeintheswitchblockandcontinueexecutingaftertheblock.Notethatitisnotstrictlynecessarytohaveabreakbeforethenextcasestatement.IfthereisnobreakbeforethenextcasestatementPikewillsimplycontinueexecutingandexecutethecodeafterthatcasestatementaswell.((正正如如你你所所见见到到的的那那样样,,sswwiittcchh语语句句是是比比iiff语语句句要要有有一一点点复复杂杂。。它它仍仍然然相相当当简简单单。。它它首首先先计计算算表表达达式式然然后后在在下下面面的的代代码码块块中中检检索索ccaassee语语句句。。如如果果发发现现有有合合适适表表达达式式返返回回值值的的,,PPiikkee将将会会立立刻刻在在这这个个ccaassee语语句句中中继继续续执执行行相相应应的的代代码码块块。。当当遇遇到到bbrreeaakk时时,,PPiikkee将将会会跳跳过过在在sswwiittcchh中中剩剩下下的的代代码码。。注注意意在在下下一一个个ccaassee语语句句之之前前不不是是必必须须要要有有bbrreeaakk的的。。如如果果在在下下一一个个ccaassee语语句句之之前前没没有有bbrreeaakk,,PPiikkee同同样样会会在在执执行行那那段段ccaassee语语句句之之后后再再继继续续执执行行。。))Oneofthecasestatementsintheaboveexamplediffersinthatitisarange.Inthiscase,anyvaluebetweenconstant3andconstant4willcausePiketojumptostatement3.Notethattherangesareinclusive,sothevaluesconstant3andconstant4arealsovalid.((在在以以上上的的例例子子中中与与一一个个ccaassee语语句句不不同同的的是是rraannggee..这这里里,,在在常常量量33和和常常量量44之之间间的的值值将将会会造造成成PPiikkee跳跳到到语语句句33中中。。注注意意rraannggee是是可可兼兼容容的的,,因因此此常常量量33和和常常量量44的的值值也也是是有有效效的的。。))3.2Loops((循循环环))Loopsareusedtoexecuteapieceofcodemorethanonce.Sincethiscanbedoneinquiteafewdifferentwaystherearefourdiffe
本文标题:第三章 控制结构
链接地址:https://www.777doc.com/doc-2211963 .html