00:01
我们来看一下另外一种分支结构,叫Switch。那Switch呢?呃,也是一种分支结构,那我们来看一下它的使用,首先我们看一下Switch分支结构的基本语法,它是这个样子的,Switch这边写一个表达式。注意注意啊,如果是一个表达式的话呢,就意味就意味着这个地方是可以写一个比较复杂的一个一个格式的,就是说呃,它只要是一个值就行。是只要是一个,可以放一个变量,也可以放一个运算过后得到的一个值,然后大家看这里面有个case,这是一节就是case。Case呢。你可以理解成是当。当这个表达式的值等于常量一的时候,它就执行一一块一,然后break呢,就是跳出,然后这一关又是一块,看到没有诶,如果第一个常量值不相同,就比较第二个,第二个如果相同的话呢,再执行这个啊语句块二。
01:05
那也就是说这这个地方呢,是这样一个流程。就是先看这个表达式的值,如果等于常量一,它就去执行这一个一块一。那么执行完了过呢。来看看这个break语句有没有,这个break语句表示什么意思呢?表示。表示退出或者是终止,叫可以叫退出吧,退出这个Switch。啊,Switch,那也就是说如果遇到break语句它就退出,如果没有遇到这个break语句呢,它继续往下执行。如果没有遇到这个break语句,它继续往下执行,那么这个case case语句块呢,你可以有多个。最后有一个default,这个default代表什么意思呢?代表。如果上面的一个都没有匹配成功,那么就执行DEPOT1句好,我简单把这个注释一下,就是当表达式,我这样写啊,当表达式的值。
02:12
值等于这个常量一的时候。常量一的时候,好,它就执行这个鱼块。执行完了功能,看看有没有break语句,如果有break语句就退出,如果没有break语句呢,继续往下执行。那下面的含义一样。一样好,这样子讲了过后呢,大家可能听的有点模模糊糊的,那怎么办呢?我们还是画出一个流程图,这个流程图呢,相对有点复杂哈,大家注意看一下也不难,就是看起来好像很复杂的样子,其实并不难,它是这样子一个流程。首先它计算这个表达式的值,这个表达式就是刚才同学们看到的Switch里面的那块,就是Switch。
03:02
Switch那个表达式。那么这个表达式指的值,值如果等于常量一呢?它跟常量一进行比较,如果相等,它就执行这个语句块一。执行完了过后去看有没有break语句,如果有break语句就结束我们这个Switch。那如果没有这个break语句会怎么办呢?注意听。如果没有这个break语句,它会直接执行到下面的第二个语句块,不会去判断了,它就直接执行第二个语句块。对,它是这样的一个流程,那么如果说它这个表达式不等于常量一会怎么办呢。那他走的就是这条线。如果不等于常量一,他就看等不等于常量二。那么等于如果,如果不等于常量一,它判断等等不等于常量二,那等于跟这个常量二比较,又有两种可能相等或者不相等,如果等于乘以二呢?它也是进到这个语句块二去执行。
04:07
执行完了过后呢,他判断有没有语句,如果有break语句也是终止,如果没有break语句呢,也是执行下面这个语块。以此类推。那这里面大家看到我如果说每所有的常量都没有匹配成功会怎么办呢?会执行这个默认的语块,就是同学们刚才看到了一个默认的那那一节。当然这个地方,我这个图呢,画的有有问题,哪哪里呢,就是这个地方也也应该有一条线。哦,如果没有,如果没有这个break语句,如果没有的话啊,没有这个break,没break语句,它也会执行这个定。好,这个才是一个比较完整,这边也是啊,如果没有break语句它会执行,也就是说如果他匹配到一个常年过后呢,他如果没有碰到这个break语句,它就一直往下执行,而不会再去进行判断了,这个图其其实已经画的比较清晰了。
05:07
已经画的比较清晰了,来,我把这个图呢给大家保留一下,因为待会儿呢,我可能会用到这个图。给大家板述一下哈,我先放这儿吧。放到咱们的桌面。好。那这样子讲完了过后,是不是大家觉得还是有点模模糊糊的,因为讲一个技术啊,有时候大家觉得好像很容易,其实挺难的。因为老师知道要传达给你们,有时候用这个语言描述特别的难,所以刚才为什么要给大家画一个图呢?就是帮助大家理解。那有时候有了这个图,大家还不理解怎么办呢?只能走一个案例,我们来走一个快速入门案例,再谈细节,那我们快快速的写一段代码,来加深对Switch语句的理解。好,同学们跟着老师思路,我呢,写一段代码叫Switch DEMO。
06:00
S wi Switch DEMO好,跟上我的思路哈,跟上我的思路,那现在呢,我们把这个CPV换一下。我们来走一个这个案例加深认识,是std。看看这个Switch到底它完成一个什么功能,Void找主函数跑起来,然后呢,我在这里把我们的这个需求放进去,来看它的含义,他说编写一个程序,该程序可以接收一个字符ABCDEF。如果是A呢,表示星期一,B表示星期二,根据用户的输入显示相应的信息,要求用Switch取积,那我就直接写了啊,那现在呢,我们先定一个差。比如C默认给他一个空的字串,然后呢,我就提示用户输入,我就提示用户输入print f。好,这里我提示请输入一个字符,这个字符呢在ABCDEFG之间。
07:05
好的,那拿到过后是不是我可以搜一下了scan。SCNF,我接收到这个CE里面去C,然后艾的CE拿到了。是不是这地方我就接收到一个CE了,接收到一个CE过后,同学们我现在就可以用Switch语句了。那怎么写呢?说一句走C,这个是个表达式,我们讲过变量可以当做一个表达式,只要是有值的都可以称作一个表达式,注意听小,注意表达式的含义,刚才原先在讲过啊,任何有值的都可以看成任何有值的,有值的都都可以看成看成是。一个表达式。对不对,那C显然可以表示那K了,如果它等于A。
08:00
好,我们就提示一句话,BREAK1。我们就写今天星期一,今天。今今天。行。星期一。星期一啊,星期。一这没有啊。星期啊,这样子,星期一,今天星期一,咱们来个口诀啊猴子。猴子,猴子穿新衣。穿新衣服。新衣。好,这是啊,其实这么一句话,Break,退出。那如果说B呢,我们复制一份。如果说他输入一个B啊,比较了,就今天星期二。星期二怎么样?猴子当小二?哎,猴子当小二。那同样BREAK1句,再来一段C,如果C,那怎么弄好今天星期三。
09:04
猴子干什么呢?猴子爬雪山。爬雪山,OK,今天星期四。今天星期四。的星期四干什么呢?星期四,今天星期四猴子。猴子,什么猴子,猴子上集市。比如他他去集市玩啊,上集市。集市。及。猴子有急事吧,猴子有急事。好的,那呃,后面EF和G我就不写了,我直接写个default好吧,因为太多了,Default默认。Default,那么默认呢?我们写这么一句话。叫什么呢?就是没有匹配到任何日值。所以说没有没有匹配,匹配到任何值。
10:01
好的,那现在呢,最后这句话可以不要break,因为你执行完了过后,本身这句话已经结束了,对不对?好,我把这个格式化一下。好,这个格式化看起来清晰一点,那现在呢,我们来我们来玩一把后,后面两个来一个get char。再来一个改下,因为有一个回车,咱们要及时处理一下,好这个代码,大家再看一下,是不是会提示我输一个字符啊,那这个这两个我们就不要了,就abcd吧就可以了,ABCD4个,那么在这里我们输一个过后呢,他如果匹配到A了,他就会把这个执行执行完了过后发现这个break就退出。这个就叫做退出break Switch语句。好的,这边也是哈,这边也是,那同学们我们来运行一下,看看会有什么效果执行。好,执行。好执行起来过后呢,我们输一个A。那这个时候它会提示什么呢?今天星期一,猴子穿新衣,我们再来一个。
11:03
我们输一个B,输一个B。今天星期二,猴子当小孩看到没有,也就是说,也就是说退出来,那有些同学老师他到底退出来,有没有在这说出这句话呢?可以看一下。这假如说我们这叫Switch结束。这句话呢,各位同学。结束。就是我不管你有没有匹配上,最后这句话始终是要输出的,这一点大家应该很清晰,那再来运行一下,比如说我们这次输一个C。就是今天星期三,猴子爬雪山。输一个C。是不是结束,是不是输出来了,所以就结束,那现在呢,我们再输一个一,嗯,匹配不到abcd我都不输,我直接输一个P,这个P呢,显然。不在这里面,那你回车呢,应该提示哪句话呢?没有匹配到任何值,然后自己也默认退出这个思Switch语句。那这个是回车,会提示没有匹配任何值,所以就结束。
12:03
是不是跟我们刚才讲的这个示意图很像啊?就是刚才我们不是有个示意图吗。这个示意图是不是匹配到一个就执行,我因为我们这都有break语句,所以说。他匹配到过呢,直接就退出,最后这一个没有break语句,它也会退出,那现在呢,假如我这样写,你们看看会输出什么,同学们认真观察啊。认真观察,如果我在这个地方把这个break注销。我把这个break注销,然后呢,我输的就是一个C。大家觉得会输出什么信息?是不是如果我我把这个注销了,我输的又是一个C,他匹配到这,他会把这句话输出来。输出来过呢,他发现没有break语句,他会怎么办呢?他会继续往下执行。这个时候他就不去看你这个是不是D了啊,他就他就直接执行这句话,执行执行完了过后,这碰到这个break还是要退出,因此呢,如果我输一个C,他就会输出,今天星期三猴子爬雪山和今天星期四猴子有急事再退出,然后再把这个Switch结束输出来,这句话不会输出,因为。
13:14
这儿有个breaking。好,那现在我们试一下是不是这样子的跑起来。我直接输一个C。这一方会输出什么东西,大家注意观察,是不是今天星期三猴子爬雪山,今天星期四猴子有急事随急速。那我问大家一个问题哈,问大家一个问题,假如我说的是B呢。我输出的B是不是他输出今天星期二猴子当小孩,但是这有一个break,就直接从这个break语句退出来执行这个了,能理解了吧。好,同学们,那关于我们这一个Switch分支语句的快速入门案例和它的基本语法就聊到这,后面呢,我们有几个练习题再加强一下。这讲先聊到这里。
我来说两句