「哈哈,这倒霉孩子,不仅他要遭,怕是还要连累很多人哦。」
想到老爹描述的画面,我不禁乐了。这倒霉孩子拉仇恨的速度恐怕只有善意提醒老师忘了布置家庭作业能与之匹敌了。
「不错,老师听了顿时火冒三丈,于是让90分以下的同学做错了的题抄5遍。这个时候用if表达如下:
if(分数大于90分并且不等于100分)
{
把错题抄三遍
}
else
{
把错题抄五遍
}」
「嘻嘻,这下那个倒霉孩子知道89分和99分的差距在哪儿了。」
「是啊,就在那个小朋友被数十双透露出杀气的眼睛看着时,他痛定思痛,决下一次一定要多考点分数,不然五支笔绑在一起真的不好握。
这时异变又起,因为60分以上的同学不乐意了。毕竟60分是一道分水岭,代表着两个不同的境界。可是现在那些不足60分的人跟他们这些60分以上的人居然是相同的待遇,你说这谁能忍?
经过这么一说,你们老师也觉得这样很是不妥,于是让30分到59分这个阶段的小朋友把整张卷子抄三遍。于是乎我们的if表达式就变成了这样:
if(分数大于90分并且不等于100分)
{
把错题抄三遍
}
else if(分数大于等于60分)
{
把错题抄五遍
}
else if(分数大于等于30分)
{
把整张卷子抄三遍
}」
「哈,我好像明白了,if的分身else if是在矮子里边挑高子,如果有不同的标准,就可以一直挑下去。而else分身就是不满足前边所有if和else if条件的矮子!」
之前老爹在说分身和魔塔游戏的时候,我的脑袋里面就有一道电光闪过,只不过我一时没有抓住。现在经过老爹这么一说,我终于明白了。
「嗯,不错!」
老爹欣慰地笑了,然后接着把抄卷子的例子讲完了。
「就在30分以下的同学觉得自己有惊无险地逃过一劫的时候,老师的一句话让他们瞬间如遭雷击。
老师说让30分以下的同学明天叫家长来学校,共同商讨学习提升方案……所以,这下if结构就变成了:
if(分数大于90分并且不等于100分)
{
把错题抄三遍
}
else if(分数大于等于60分)
{
把错题抄五遍
}
else if(分数大于等于30分)
{
把整张卷子抄三遍
}
else
{
请家长
}」
「明白了!那我先把书上的例程做一遍。」
有了老爹的讲解,再加上书上的例程,我也就差不多掌握了if分支结构。当然,要写程序还需要把if和else if后面小括号中的条件转换为逻辑表达式。
在休息了十五分钟后,老爹就开始讲解另外一个分支结构――switch。
「那么我们接下来就开始说另外一个混沌先民,switch,依旧先看看它的属性卡
姓名:switch
身份:混沌先民
出身年月:1972年初
技能:算无遗策」
「咦,这个switch听起来好像在混沌先民中是个智慧担当。」
「很相近了!我们先来做个小调查,在平时生活中,有没有需要你做选择,但你又觉得很难作出选择的情况?比如说你和好朋友中午去食堂吃饭,看着十几种菜,纠结半天不知道吃哪几样?」
「嗯呐嗯呐,经常都有这种感觉!」
我点了点头。
「这个叫做困难选择症,很多人都有这个问题。当然了,我们的混沌先民也不例外。
在推动程序世界发展的过程中,往往有很多事情需要混沌先民作出选择,但是它们和我们一样,都有选择困难症。这个时候,switch这个家伙就顺势而生了。其他人只需要把选项以及相关信息告诉它,它能立刻作出最正确的选择!」
「这么看来,这个switch还挺厉害的呀!」
「有道是一个篱笆三个桩,switch之所以能够快速果决地做出正确的选择,还和它的三个小伙伴密不可分,它们分别是:case、default和break。」
「哦哦,这么看来这个switch好像很难的样子呀!」
我皱着眉头说道。
「嗯~,说难也不难,说简单也不简单。这样,我们还是以一个具体的例子来说明。用什么例子呢?有了!」
老爹右手握成拳,用手背撞向左手掌,双眼之中迸射出智慧的光芒。
话音未落,老爹从口袋里把手机掏了出来,不由分说拨通了电信的客服电话10000。
「您好,欢迎致电中国电信,查询服务请按1,业务咨询请按2,业务办理请按3,如需其他帮助请按0……」
在几声「嘟」之后,手机里顿时传了电信客服妹子甜美的声音。
在老爹的怂恿下,我把选项都尝试了一遍,还和人工客服聊了会儿天。
「呐,switch就和刚刚的客服功能差不多,你输入相应的数字,switch就能帮你做对应的事情,现在我们就用switch来实现一下刚刚客服的功能。」
「哦,原来switch是客服小姐姐啊~」
我若有所思地说道。
「哈,这么说也没有错了。好吧,那我就带你来实现这个客服小姐姐:
switch(按键)
{
case 1:
查询服务
break;
case 2:
业务咨询
break;
case 3:
业务办理
break;
case 0:
其他帮助
break;
&:
4~9
break;
}」
「case和default我现在知道是什么意思了,那这个break呢?」
「这个是个很重要的知识点,往往有很多初学者都会忘记写break,所以在写了case后,一定要马上写break,以免忘记。至于break嘛,它俗称混沌先民中的终结者,能耐大了去了。
假设现在你按下了1,按道理说应该是走case 1进行查询服务,结果不巧的是你忘了加break,这个时候就会继续走case 2。要是case 2也没有加break,程序就会挨着往下面执行,直到遇到break为止。
如果在所有的case和default都没有break,就会从匹配的case项依次执行,直到switch结束。对了switch中可以有多个case,但只能有一个default!」
「我现在开始理解为什么老爹你说switch是选择狂了,看来做选择这种费力的事情还真得交给它来做。但是我有一个疑问。」
「说说看~」
「我发现刚刚那个客服小姐姐用if也可以实现啊,这么看来if和switch的功能产生了重叠,这样switch不是可有可无的存在了么?」
「这个问题问得非常好,switch看起来就像是if…else if…else的特例,但是在case比较多的时候,就必须让if修出比较多的else if分身出来,这样是比较耗费修为的,而且可读性也没有switch好。
总的来说就是,switch的效率更高,可读性更好,所以在能够使用switch的时候尽量使用它。
当然了,switch也有它自己的缺点,就是给它的关键信息如刚刚例子中的按键只能是一个确定的值,不能是范围。」