00:00
那开始咱们今天的课程,我们看一下今天的这个课程啊,嗯,首先呢,这个作业我们来看一下。作业。嗯,作业这个第一题,第二题,第三题呢,我已经在课程上给大家讲过了,对吧,然后呢,这里面还布置了第一题,呃布置了三个题,这三个题呢,都比较简单,都比较简单,那么我就呃找一个题讲吧,啊就给他讲一个题,第二个题和第三个和下面这个过入口,这个题呢,同学们在学Java的时候,老师其实都是讲过的。那么你们要做的事情呢,就是一件事,就是把以前Java写过的代码呢,改成SC对吧?好这样子,我们来这个做一个评奖吧,做一个评奖。好,往下先来定一下位,呃,那么看到这个作业呢,就是我这布置的这三个作业,他会用到一个什么呢?比如说我们做第一个题的时候,它会使用到一个叫做break这种这种效果,这种效果那么我们怎么实现呢?好,我们先来把这个,呃中段就是刚才那个题可能用到的一个叫中断,中断的这个使用效果先给大家讲一下,我们先来看一下。
01:20
While循环中的中断,把这个讲完过后呢,我们再回头完成这个作业。好,我们先看一下while循环的中断,SKY内置控制结构中特地去掉了break和continue,它把这两个给去掉了。那可能有同学就会说,为什么要把这两个去掉呢?是这样子的哈,就是呃,Scanner设计者马丁呢,他认为break和continue呢,不是属于o op的这么一个范畴。他认为这个关键字它既不是opop的,也不是函数式编程,因此呢,他把这两个关键字拿掉了。
02:00
那么拿掉了过后他怎么办呢?诶,它使用了函数式的一种风格来实现break和continue的效果,那主要就是这个break,主要就是break,而不是一个关键字。那它怎么实现的呢?好,同学们,我们来看一个小案例,大家先看一下这个案例是个什么情况,大家看这有一个变量对吧,然后呢,这面有个while循环,这个是我们昨天讲过的,在这个while循环里边呢,它有对这个循环变量N不停的加一。加一,加一完了过后,如果发现N等于18,它就调用了一个break这个函数,那么这个break函数呢?就会干什么呢?就会抛出一个异常,那么抛出一个异常干什么呢?这个异常会被这个break。Able来进行这个处理,好,这样说呢,大家可能看起来也是很吃力的,就不知道什么意思,那这样子我们把这个代码给他写一写,然后看一下这两个函数的源代码,大家就一目了然了。好,现在呢,我们启动一下IDE这个工具,那么我们来看一下它的使用效果好一边讲呢,一边还是把笔记给补一下好,刚才我们讲到了while循环的中断,注意啊,虽然我这写的是while循环的中断,那么这个效果呢,也能使用在do well或者是for循环。
03:30
好,我先把这个呢给大家读一下。While循环的中断中断好,刚才呢,我们做了一个基本的介绍,下面呢,我们准备走一个案例,诶走一个案例,基本说明刚才已然给大家说过了,对吧它嗯这呢一定要注意,就是在开里边呢,它去掉了break和counting有这个关键字,就说如果以后面试官问你对吧,你不要说诶我用break这个关键字,那你就一下就就暴露了,就是肯定就是没有用过。
04:05
对吧,你你你还认为有break continue关键字呢,人家就已经把这个拿掉了,对吧?好,我们呢,来一起写一下这个小小的代码。好,还是老规矩,这是我们第四章的内容,这是第四章内容,那么我在这写一个。这个break,这个效果好,建一个包啊,Break。啊,大家看这个break呢,又是一个啊,不能做包名,那我就写个my break好吧。OK,然后呢,我们写上这么一个小案例,Whilebreak的使用效果对不对?好,仍然是老规矩,写一个objects。然后呢,这边我们写一个主函数。我们来写一下这个代码。好OK好,现在呢,我们先整一个变量啊,比如整个变量,比如说是等于一吧,然后Y循环啊,那么Y要循环呢,我们判断如就就说这个Y循环呢,我就直接写个死循环,假如。
05:05
啊,假如我这你看我这写的也是一个就在这个地方,我们就这样子,还是按它这个设计吧,比如说N,当然我也可以写个死循环啊,啊比如说N只要小于等于20,那么我们就看什么呢?进到这个Y循环里面去,每进一次呢,我们让这个N。加一加完过后呢,我们就是做一个判断,如果如果啊,假如没有这个判断,如果N等于了,等于到18了,我们怎么办呢?我们就想中断,我们想中断这个YR循环,哎,比如说这个需求就这样子的啊,中断这个while循环,那么以前呢,很简单,就是一个break,但现在呢,用不了了,对那怎么办的呢?它加了一个break这么一个函数,那有些同学老师这个break,呃,为什么这标红呢?是因为这个break,这个是要在哪里使用呢?大家看我要引入u.control。
06:06
诶,u.controll然breaks对,然后下划线,诶这样引进去就可了,那么问题来了,说这个break到底是什么,我们先lower啊,我们对这个break呢做一个小小的说明,我在这做几点说明,第一点在scan中,Scan中使用函数的,诶函数式的这个break函数,这个break函数来中断。中断这个循环啊,中断这个循环,那么问题来了,嗯,这个循环啊,那么这个break函数到底长什么样子呢?来,Lawyer同学们,我们进到这里面哦,OK,同学们,可以看到它是一个函数啊,我们讲过DEF是函数的一个关键字。那么这方干什么呢?它其实就是扔出去了一个异常,而且这个异常呢,他大家看到这个nothing,因为我们讲过这个nothing就是表明我们这个函数就是。
07:07
非正常的一个中断或或者非正常的一个执行,对不对,以前讲过,那就是用这个来抛出一个异常的好的同学们,那么这个break呢,它实际上是这个,那我问同学们一个问题啊,现在如果说我在这个地方打出了一个OK,各位,假如我现在就这么去执行,请同学们思考,是不是当这个N不停的执行,那为了演示这个效果呢,我把这个N也打一下啊,N等于加上这个N,那么我问同学们一个问题,这段代码它肯定会不停的执行,当N等于18的时候,它会抛出一个异常。那么我问大家,当我们抛出一个异常的时候,此时此刻我有没有对这个异常进行处理,没有,没有的话,请同学们思考,OK,这个能不能被输出,不能好同学们说的很对啊,那我们来执行一下,我为什么这么讲呢?因为待会我们就要说,那那个break able它是干什么的?来同学们可以看到,当我们这样一执行过后呢,可以看到它是从因为是N,我上来给我先加了个一,所以它是二走走走走走走到这个18抛出一个异常,抛出一个异常过后,因为你没有处理,所以这个这个OK呢,没有被输出,因为程序就异常的中断了,好,这样就引出了,怎么去处理这个,让代码继续执行呢?
08:32
好的同学们,那么这时它又提供了又一个方法叫break able OK,那么这个break able它是干什么的呢?诶,这个函数,那我们来看一下啊,那找一个break able,同学们可以看到,这个时候这个函数呢,它这里面有一个参数,写的是这个德性的op冒号,一个箭头unit,我做一个简单的解释啊,同学们现在可能还看不太懂。
09:00
因为这个地方呢,它使用到了这个break able是一个高阶函数,那么我先做一个简单的说明,后边呢,我们再加强同学们可以看到正常情况下呢,我把这个包起来。包起来OK,那么包起来以后呢,我要给大家做一个解释,这个break函数是什么,来我做几点说明啊,各位同学。第一个说明,第一个说明break able呢,它是一个高阶函数,是一个高是一个高阶函数,何为高阶函数呢?简单的先说一下,就是能够接收一个函数的函数,就是它能够接收一个函数,因为我们以前一般函数就是去接收一个什么,接收一个普通的变量嘛,比整形啊什么的,就是什么叫函数呢?就是可以接收接收函数的函数的函数。就是高阶函数,高阶函数,那这个呢,我们后面还要详讲,你在函数式编程的时候,后面还要详讲,这先大家先听一耳朵啊,后面还要详讲详解,那么我们看一下这个break到底是什么,我们定一下位哦,同学们可以看到它长得就这个样子的。
10:15
那他干什么呢?我们把这个拿过来,把这个拿过来,我先做一点点说明来走到这里,那么它的原型就是这样子的啊,它的原型就是这样子的。啊,我把这个呢注释一下啊同学们,这个地方我把它注释一下,它这个地方是干干了一件什么事情呢?好,我把这个挪一下,大家看这个函数,它可以接收这个地方就代表它是一个函数,那老师这个函数什么意思呢?这个是函数的名称。就是你传进的函数的那个代代表个名字,那么后面这个没有值,就代表它接收的是一个没有输入,就是没有这个行参,也没有返回值的这种函数,我做一个简单说明啊,这个表示什么意思啊,就是它可以接收。
11:05
啊,这个地方大家先简单了解一下啊,就是这个表示的是它表示表示接收的参数,接收的参数是一个没有输入,没有输入啊,没有输入也没有输出,也没有返回值的啊,也没有也没有。没有返回值的这么一种函数啊,即没有行参也没有返回值的函数,那么这个其实说白了就相当于说传进去一个代码块。啊,相当于说这个op就是个代码块啊,你可以这么理解,你现在可以简单的理解成就是可以接收一个代码块即可以即可以简单的理解理解可以接收一段代码块,一段代码块,代码块为什么这么说呢?你看啊,把输输入部分拿掉,再把输返回部分拿掉,那中间不就是代函数体了吗?那函数里就是一个代码块吗?啊所以说他把整个这一大块,相当于它这个break,把整个这个while这一大段。
12:20
传给了谁呢?Op?再说一遍,相当于把你这整个这一大块。当做了这个一个一个一个一个代码块传给了这个op,其实它是个简写啊,其实它是个简写,那么你看这里他在这个break able里面去执行的这个op,执行这个op其实就相当于等价把这个代码整体的放在TRY语句里面。OK,那这个时候呢,他用了一个捕获异常,这个捕获异常呢,现在我们还没说,一会儿就会说,看这里面他干什么呢,他捕获了一个叫break control的一个异常,而这个异常正是。
13:00
抛出的异常啊,那就相当于处理了,处理过后呢,就不会在异常中断了,好这个地方我们写第三句话,第三句话那就是说break Apple break Apple,它干什么呢?对抛出的,对抛出的,谁抛出的呢?对这个break break。对这个函数抛出的异常做了捕获,或者叫做了处理异常做了处理。好了,那此时此刻呢,同学们可以看到下面这个OK就会正常输出,哎,那么代码就可以正常的执行代码,代码就可以继续啊,继续执行能理解啊,继续执行,那同学们可以看到老师执行一下,你会看到OK就会正常的输出执行一把。同学们,请看运行的效果。诶,OK,好的同学们请看到这里代码就正常了,哎,这就是其实界面就已经引引然引出了好些概念在里边,只是还没有彻底的讲清楚是吧?因为我说了,因为函数式编程这个高级函数呢,有个专门的章节讲好了,那么明白这个道理以后呢,我们再做一个第四点的说明,注意听。
14:16
第四点说明是什么呢?就是呃,如果这个地方是一个代码块呢,一般来讲很多程序员是开到程序员呢,他会把这个小括号改成大括号,诶当。当我们传入,传入的是什么呢?是代码块,代码块时啊呃,这个SC程序员呢,SC程序员一般来讲会把这个小括号,会将这个小括号改成大括号。那也就是说这段代码呢,就会改成这个德行。把这个换成它,咋把这个换成它,因为呃里面代码比较多,你用小括号看起来很怪,好像是诶这个这个形象怎么这么大一坨呢,诶就是111个大一个中大括号呢,看起来就舒服多了,好这样子呢,我们再执行一把。
15:10
好了,各位同学,各位同学你看这个效果仍然是可以的,好,那么现在呢,我们就把这一个呃,Well while循环的这一个break的一个一一个效果,或者它的一个实现的一个机制就给大家说清楚了,好,我把这个代码呢给各位朋友板述一下,诶好,那么这写了一个应用啊,就break的break的break的一个应用实例,对吧?啊应用实例好的,那么老师给大家整理到这里,我把代码呢给各位朋友放在我们的笔记中去啊,放在笔记中去。好的,来粘贴复制到咱们的这一个表格中去啊,大家一目了然。好,这是我们讲的这个while循环的中断的一个基本说明,基本说明那下面呢,我们来继续啊,往下看如何实现康佑的效果呢。
16:11
诶问题来了,那有些同学老师那continue怎么实现呢?各位同学K在内置这个它内置的控制结构里面,把continue也拿掉了,也是为了更好的适应函数化的一种编程思想,那怎么实现,那怎么办呢?同学们,我们可以使用循环首位来实现这个continue的效果,或者你用if钥匙,就是用两种思路,一种是if钥匙。一种是循环守位,打个比方,打个比方,比如说前面这里面有一段代码,这个while里面有一段代码,我我想干什么呢?就实现实现这个这个continue效果,那我就if else什么,就说满足条件执行,满不满足条件就。就不执行嘛,对吧,其实他可以用一在里面用if来实现这个continue的效果,你continue不就这个意思吗?就说呃,就是当哪个条件那个成立的时候,就不执行下面代码直接。
17:08
进行下次循环嘛,对吧,这个同学们以前在学这个,呃,Java的时候老师应该讲过,那除了用if else来实现呢,我们也可以用循环首位来实现,比如下面这段代码,看这里。看这里,你看这里。这有一个呃,政治代码,我就直接拿过来给大家玩一把哈,给大家玩一把,那么现在呢,我们来讲一个my continue的实现效果,来走一个好my continue好的。写到这里来,那现在呢,我们来写一个小案例。啊,写个小案例,走一个DEMO码表,现在呢,我们叫做continue的DEMO continue啊DEMO好,各位写到这里来了啊,走,同学们看这段代码啊,这段代码非常的简单,我做一个简简简洁的说明。
18:03
大家看这个地方能看出来什么意思呢?就说我这个循环是从一到十对吧?哎,循环是一到十,那么这里我加了一个循环,首位循环,循环的首位什么意思呢?就是当这个I不等于二,并且I不等于三的时候,当这个条件为真的时候,我才去执行,是这意思吧,那言外之意说,如果它这个条件为真,我们才去执行,那是不是就相当于说你这个二和三是不是就怎么样跳过了吧,是这意思吧,这个你要看得懂了,好,这个意思我做一个简单的说明,就是这个条件为真。这个条件为真,才执行我们的循环体,对不对,才执行循环体。啊循环体,那换言之,换言之就是说当I等于二或者I等于三的时候,我就跳过了,我就跳过了G,可以这样理解,即当这个I等于二等于二或者哎或者I等于30,我就跳过了吗。
19:19
就跳过了,就跳过啊,跳过当然有些的老师,如果我的条件很多,呃,你这能写吗?一样的,因为他这可以写一幅的一个代码块啊,可以写,如果你觉得这个很麻烦,你也可以把整个把这个if整个剪切到这里面去也可以的啊,你你看你的习惯嘛,你看你习惯好就跳过,那么我们来执行一下,看效果输出效果啊,应该输出一。四。到十啊,就是二和三不会输出,我们执行一把。我们执行一把。来看效果,来看效果,诶我们可以看到的确啊,一这个二和三就被跳过了,当然有些同学不习惯这个写法呢,你也可以直接把一副钥匙放到这里面去,就说有些同学不习惯这个也可以这样写啊,也可以写成如下的这个形式,就大家可能更喜欢的形式吧,啊比如说我在这也给大家输出来啊,各位同学print,那给同学们演示一小把。
20:24
比如我把这个for循环拿到这里来。对吧,那么这个语句呢,我不想写字了,麻烦对吧,麻烦那这怎么办呢?反过来一个逻辑,如果他,呃,如果他就说如果他是这样一个代码。就是不等于这个二或者不等于三的时候,我才去执行,那你其他我就不执行吗。是这意思吧,就是当这个不等于二或并且不等于三的时候,我才去执行,那你这个效果执行一下看效果。诶,看效果,看效果。
21:01
诶,你看是不是效果是一样的对吧?诶同学们可以根据你的需求来实现这个效果,两个都行,可能我们程序员Java程序员呢,可能觉得这个方式好像感觉更好一点,对吧,可能更适应我们这种写法,其实就是刚才老师说的这句话什么呢?用if else,把这个写到里面去,或者只用循环首位,两个效果均可啊均可。好的,那么这个说完了以后呢,这个就是我们就把这个就OK了啊,我们就把这个就循环首位就OK了,那么我再补充一个细节,什么细节呢?就是刚才这个break,我再多说一句啊同学们,刚才老师讲的这个break呢,呃,这个函数我多说一句,就是这个break呢,也就是刚才我们讲的是在这。这个break它也可以直接使用在while循环或者是doi里面,我再加一句,这补充一句啊,注意就是注意这个break的这个机制啊,机制函数啊,函数也也可以可以使用在哪里呢?这个for循环或者或者什么呢,这个do well里面去啊,那我while循环,我就举个例子大家看。
22:18
我就举一个例子啊,For循环I循环到哪里呢?从一到。100啊到一一百啊到100,那假如我现在有这么一个需求,如果I群加到哪里呢?比如说我们这儿有这么一个动作啊,如果他不停的加。比如说上来过后呢,呃,就是如果这样子啊,如果I等于了,等于到这个20了,怎么办呢?我就来一个break也是可以的,当然你这个break你仍然要去补货,因为你不补货的话,他仍然下面代码就执行不了了啊一样的逻辑,比如说我这写个OKOK2。
23:00
波浪,好,那你再问人家要补货啊,这个我就不说了,Break。好,我先写到这里来,Break。好的,那这个地方我们就快速的玩一把,好,我这写一下这呃加一句话吧,加一句话输出就是I。等于加I啊,I等于加I。好,我们来看看这个是不是一样可以中断啊,负循环一样可以中断,看代码没有报错,应该是可以的,走跑起来,好,我们看一下。啊,看是不是我这个I不停的找啊,诶你看这是OK嘛,然后是I1走走走走走走到20,诶到20了,到了20过后怎么办呢?诶我就break了。啊,刚才有同学说还要加加不对啊,这个I本身它内部就在不停的增长,对吧?诶同学们好,我把这个代码给同学们板述一下好吧,刚才我们讲的外循环的中断。好,然后讲了一个while循环的如何实现它的continue的效果,给大家拿过来。
24:05
Continue的效果。好,来一个如何实现continue的效果,来一个标题三,来一个标题三。对吧,这是我们的一个案例。啊,来一个案例,这是一个案例,然后呢,我这里呢,呃说完了以后呢,我这里呃还把代码给大家放过来,案例的代码,案例代码好,这个是我们外循环的中断案例代码我给大家也放在我们的标题三里面去啊,所有代码都在这这块了。来吧。一个是break,就是break代码。把它放在啊,Break代码好像刚才已经已经放了啊,这个已经放过了,就把这个外循环放过来就行了,好在这continue的代码诶。好,同学们,我把它放在我们的笔记中去插入我们的代码,好好,这是刚才讲的这个逻辑,就是这这个地方说明,大家注意一下就行。
25:06
好的,这是我们讲的while循环,如何实现continue和break的效果,截取一段视频。
我来说两句