00:00
各位同学,我们现在呢,来做几个关于函数的课堂练习题。来实际的把函数应用到我们这个练习之中去,呃,大家看一下啊,就说我们在前面讲for循环的时候,大家还记不记得我们曾经写过两个案例,一个呢,就是用for循环打印金字塔。另外一个呢,就是用for循环打印九九乘法表对不对?但是当时大家还记不记得我们没有用函数,也就是说我们实际上是用纯的面向过程的方式写出了这两个案例。那现在呢?我们要求大家用函数的方式将我们的这个功能写在函数里边封装起来。理解这意思吧,好,我们来看第一个题,说编写一个函数,从终端输入一个整数,打印对应的金字塔。就这么一个题,那大家回忆一下打印金字塔这个案例,我们在哪里讲过?还有印象吗?
01:00
我们来看一下我们的笔记,这个笔记要有效的利用同学们。我们找到第五章,是不是在第五章,第五章里边有一个叫多重循环控制,当时我们举了一些案例。举了两,举了应用案例,点进去看一下,但是我们举了一个记录班级成绩的这么一个案例,还讲了哪一个案例。还讲了一个打印金字塔的经典案例,大家看这里是不是这段代码就是打印金字塔的代码,还给大家写了一段代码,是打印出九九乘法表的代码,还有印象吧。但是呢,大家回忆一下,我们当时讲这两个案例的时候,是不是没有用函数封装,其实说白了就是纯的,就是完全的那种原始的面向过程方式把这个代码写出来的。所以说实际上在做开发的时候呢,我们更多的是将这些功能封装到函数内部,那么我们需要打印九九乘法的时候,或者说打印金字塔的时候,我们直接怎么样调用该函数就可以了,现在我们就来做这个工作,OK,来吧。
02:12
那现在呢?打开我们的笔记,我们来一边做一边做笔记。OK。来,现在呢,我们来做一下函数的课堂练习题。走来函数的。课堂练习。函数的课堂练习,函数课堂练习这个呢,相对来说综合一点。我给他一个标题。我们的标题二。OK,那么现在我们来做两个题啊,各位,第一个题就是打印金字塔。这个打印金字塔这块的分析老师就不再多说了,好吧,这个我就不废话了,因为我们在前面讲这个打印金字塔的时候,其实我们分析的还是比较清晰的,那现在我们要做的事情就这样一件事情,就是我分析一下这个思路。
03:06
分析思路。在这儿。分析思路就是。就是将原来写的,咱们原来写的这个for循环控制,就是原来写的打印。答应金字塔,金字塔的案例使用函数的方式函数。的方式。方式怎么样?封装起来封装然后调用即可。在需要。需要打印时,打印时直接调用即可。直接调用即可。好,我们就来完成它,这个思路很清晰啊,就是说前面我们不是写过,然后只是把它封装成一个函数。
04:01
那现在打开我们的Vs code,我们首先找一下原先我们的代码是在哪里写的,找到它我们用一用就行,就没有必要再反复的重新讲这个东西了,能理解吧,因为当时我们讲的很很细致的,那打开我们当时是在CHAPTER05里面写的,我记得是里面有一个案例叫exercise,里面有一个叫。For X x03还记得吧,在这里面,在这个main.go里面我们讲的,诶,大家看的确是在这讲的,大家看还有印象吧,当时说用for循环完成一个打印金字塔。大家已经知道我们是一步一步的,当时老师用了两个两个非常经典的技巧,一个是先死后活,一个是先易后难,还记得吧?OK,那这里我就不再多说了,同学们看,其实这一段就是我们的。打印金字塔的核心代码,我把这段代码复制一下。没没必要再讲一遍吧,再讲一遍,我说实话没有意义啊,这个东西没有必要反复的去去讲了,那打打到我们这个chapter chapter里面,我们不是有练习吗?我们新建一个文件夹。
05:11
Exercise。我们就直接这样写就行了,我们就说打印金字塔的案例。Print。PPYR。A,是吧,Per per perid好像是perid吧,这个英文单这个金字塔是perid是这样写的,然后呢,我直接在这里写一个main,点个。然后我们把它的代码的主体结构先写一下命,然后我们引入。包包。For my。然后呢,把这个代码的主函数写出来。OK,好,我们把这段核心代码封装到一个函数里面去。将。
06:01
将打印金字塔的,金字塔的这个代码代码。封装到封装到函数中。OK,那我就写一个函数了,好吧,这个函数我们就叫print。Prince。Per permit permit,好,那这地方我肯定是需要我我我既然要打金字塔,是不是我得知道打印金字塔的陈述,于是呢,我先定义一个。这个陈述tota当时是这样写的吧,Level。多少层int,然后呢,没有返回值,没有返回值就封装到这里写完了,大家看我这已经写完了都。大家看这是不是这意思,我这接收了一个to level,然后呢,这个地方就不需要再定义了吧,待会呢,我传进来就行。不要了,其他是不是完全不用改,是不是完全不用改,写完了你要做就调用它一下,你看现在我们如果直接调用就已经可以打印出金字塔了,调用。
07:04
我们调用哪个呢?调用print parameter这个函数。函数就。可以打印。打印金字塔。当金字塔,那我们来看看能否这样呢?我就先给他传一个酒吧。我们来跑一跑,看看能不能跑起来,然后再把它做活,因为这个数据我们是写死的,待会儿呢,我直接怎么样,我直接用控制台输入一个数来替换它就可以了,这段代码我不再分析了,好不好,这段代码其实在前面我们分析过的。如果你忘了的话,打开视频看一下就行了。来吧,那现在呢,我们CD到刚才写的那一个。CHAPTER06。第二,我们进入到我们刚才写的print PID这个包包里面去。我们。DR,看一下面有了go run main,点够跑起来看效果。
08:06
我们可以看到金字塔其实已经打出来了,而且我这打的是空心金字塔。对不对?那有些同学说我不想打空心金字塔怎么办?还记得怎么做的吗?是把这个处理一下就可以了。啊,是不是把这段代码就把这个E去掉就行了,是不是这个老师讲过啊,打空心金字塔比打那个实心金字塔要难。OK,这块就已经完了,但是呢,人家要求是怎么样写的,大家看看看别人要求他说从终端输入一个整数,打印对应的金字塔。当然我这是打的空心金字塔啊,如果你要跟他保持一致的话,其实很简单,你把这个if去掉就行了,就是就没有没有if else就就都都打。是不是把这个去掉就行了。我这个比。空心金字塔肯定比他难嘛,你看我把这些去掉,过后你再打。你跑跑一下。
09:00
是不是就实心的了嘛,对吧,这这个很简单啊,老师以前是讲过的,那就看你。你你想打印,如果按照这个题的要求的话,那这些代码我去掉就行了,对吧,把它去掉就完了,这没啥啊,去掉就按照他的要求吧,既然人家说的是打实心,我们也不要多此一举了,就这样写就行。好的,那现在问题来了,就说你这是九,你这是九,但是人家要求是从终端输入一个整数,那我们处理一下来吧,那现在我们先定一个变量。In。然后呢,我们输入一句话,Print说请输入。请输入N的值陈述吧,打印打印金字塔的陈述。陈述。欧了,那我们接收一下吧,format.scan。是。SCNLN,然后呢,传入一个地址,大家还记不记得为什么一定要传个地址进去,现在理解了吧,因为你传这个地址进去,那么你外面这个N才会变化,如果你传的不是地址的话,那里面改了,你外面不改啊,是不是现在是不是对他更理解的更清晰了,清晰一点了,那这个地方我们传的是一个N,进一个自拷贝就行了,来跑一个。
10:20
他说请你输入陈述,我就输一个四。是不是打印四再来。我再输一个,比如说这次呢,我们输一个八,答案就是48层可以了。第一个题就做完了,看有没有理解。其实并不难,对吧,就是做了一个封装而已,做了一个封装而已,那现在呢,我把这一段代码给同学们整理一下。我把核心代码给大家放到这里来。这是我们的函数。其实核心代码就这么一点。对不对,我把它整理一下。OK。好,老师把这段代码呢整理一下。
11:01
从这里开始。到这结束即可,对不对,放这好了。这是我们的第一个题,咱们就做完了。第一个题,大家看有没有什么问题。第二个题给他完成,思路其实类似,而且更简单了。他说编写一个函数,从终端输入一个整数一到九,打印对应的乘法表,这个应该也是非常简单的一个思路。那么我们来分析下,分析一下他的思路,分析思路。分析一下思路,这个思路怎么样子的呢?也就是将原来写的打印这一个九九乘法表的案例用函数的方式封装,在需要打印时直接输入即可。啊,直接调你即可来吧。那些就是将原来不是打印金字塔了,打印九九乘法表的。打印九九乘法表。的案例。用函数的方式封装,在需要打印时直接调用即可,对不对?那老师走下代码。
12:06
把代码给他整理一下,其实思路跟完全跟前面几乎是一样。那老规矩,这个九九乘法表呢,老师也不再不再想重新写了,因为我们在前面讲的这个案例里面是写过九九乘法表的案例的。当时是分析的很清楚的,我把这段核心代码复制一下。然后呢,仍然拿到这个地方来,那么新建一个文件。新建一个文件夹,跟他分开一下。在这里啊,CHAPTER06,我们新建一个文件夹,叫做print。PRINT99乘法表对不对,Marty。Multi就行了,Multipla就乘法了,就简写print multi。OK,然后呢,我们在这里新建一个文件main.go。对不对?然后写出它的前面这一部分,Package,打一个包包,Me。
13:03
然后呢,引入一下我们需要的format。好可以了,然后呢,我们这地方仍然写出主函数。这里我写一个函数来打印啊,编写一个函数打印什么九九乘法,乘法表没问题吧,那就是fun print。无铁。然后呢,这地方我们接收一个整数就可以了,In。没有返回值,因为它呃这个函数它不需要返回值,呃打印九九乘法表打出就完了嘛,对不对,那核心代码刚才老师已经复制好了,我粘贴一下。是不是,但是这里呢,这个number咱们就不要了。这个number就代表陈述,那这样子的话,是不是我们把行参也改成number,下面就不用改了,是不是对不对就完了。这样就完了,那么怎么来调用呢?老规矩,跟前面一样。
14:01
跟前面一样,我就直接写了啊,然后。呃,从这些啊,从控制台或者从终端,终端输入一个整数。输入整数表示,表示九九乘法打印啊,表示这个要。打印。打印的乘法表。陈发。乘法表。这个对应的数对应的这个数。那比如说你传的九就是九九乘法表,你传的八就是,那就相当于八八乘法表了,对不对?好,我们把这个地方写一写,老规矩来定一个变量,我们就叫number吧,In,然后呢,前面两句话其实跟这个一样,老师就偷一个懒了好不好?所以这块呢,没有什么技术含量,请输入要。请输入这个九九乘法表的数九九。九九乘法表对应的数。
15:00
啊,对应的数。那现在呢,这个地方就把number拿到这个值。然后我们就调用了,调用它调用的时候,因为它是基本数据类型,咱们直接传一个直播就行了。写写完了,写完过后呢,我们来试用一下,看看能否正常运行。那上一集,然后CD到刚才我们写的print什么呀,Mar。进去,然后go run,我们的命点go,跑起来。看效果,这个时候他会让我们输一个九九乘法表对应的数,我就写九,打一个九九乘法表,大家看没毛病,完全正确,那我改一下,比如说我要打印,打印到八就可以了,不打印到九。一样的没问题,代码写完非常轻松,所以说通过这个案例呢,我们可以看到,其实把我们的功能封装到一个函数里面去调用,应该更加的方便。所以说我们在。做程序开发的时候,在做项目的时候呢,如果能够把一些功能封装到函数中,咱们尽量把它封装到函数中,这样呢会利于我们后面的调用,对不对?代码看起来比较简洁,你看这妹干啥,打一个乘法表一目而了然,比原先直接把这个代码写到这。
16:19
应该说更方便我们的阅读和维护,是不是这个意思?大家领会一下。好了,那我现在把这一段写的代码呢,给大家整理一下。来吧。从这里开始截取。好的,那同学们这个就是自己呢,也在课堂下边把它练一练好不好,不要说老师写一遍,我听一下就完了,你要自己写一写,写的时候你会发现,诶各种各样的问题,你的技术呢,才会成,才会成长,再再看第三个题。第三个题呢,是这样子做的啊,这是一个预留题,给他布置的一个课家庭家庭练习题,编写一个函数给对给定的一个二维数组,比如说是三乘以三的一个二维数组进行一个转置,何为转置呢?就说你看这是123456789,经过一个转字就变成147258369,其实它就是把行和列。
17:21
进行一个变化,你比如说二,你看这儿。二。他。转制过后就放到这个四的位置,四和二交换,再看这三和七交换,就是行和列交换,你原先这个三是第一行第三列的。转制过后就变成了第三行第一列的,其他都是一样的。你看中间这条这条线是没有变化的,你看这条线。因为它刚好就对称了嘛。然后你看这个二和四交换,三和七交换,六和八交换这样子。那但是这地方有个问题,就说,因为这个题我们现在还没有讲数组。
18:00
所以说需要同学们先去预习一下数组这方面内容才能做,那这个题呢,我相当于给大家留了一个课后练习,希望有想法的同学自己先去做一做。对不对,先去做做所说这个题呢,我们在讲数组的时候再为大家讲解,如果有能力的同学,就是有些基础同学呢,你们可以自己来完成一下,然后再听老师讲数组的时候再提好不好,就给他留点东西,留点练想,你不能说,诶整个就没有,没有作业练习,你也很郁闷,后面我们还有练习题给大家布置的好不好。好,同学们,那关于这个呢,我就先把它放在我们的笔记里边去。啊,我整理一下。这是我们的第三个练习,相当于是一个课后课后作业。那我把要求呢给大家放好。我把要求给他放好,具体来说,他的要求就是这样子的,是不是转制?
19:00
好,把这一块给大家整理到这里面。好,同学们,那关于函数的课程练习呢,就是这些,待会儿呢,我们在后边这章讲完了过后,我还会给大家留一些家庭作业,就是关于函数练习,家庭作业一定要去练习才可以真正的这个把东西学到手。好,各位,那关于函数这一块的课程练习就先给大家讲解到这里,大家也自己去练一练。
我来说两句