00:00
大家好。欢迎大家继续收看上硅谷的云计算课程,我是沈超老师,那我们再继续来学习12编程啊,上节课我们看了一下这个多分支的这个if语句,对吧,那现在呢,我们具备的这个知识啊,具备的这个能力,就已经可以把我们之前写的这个计算器给它补全了。那我们这节课我们来看一下我们这个计算器啊,前面写的这个计算器啊,在学这个的时候,我们说过,我们当时并没有学if对吧,所以我们只能用这样的方式来进行判断,其实如果是一个简单判断,这个是可以的,条件一成立,则执行这个,否则执行这个是可以的。OK啊否,如果这块没否则,如果是有的话,就否则执行I no对吧,执行这个都是可以,但是啊,这个脚本有一个巨大的问题,什么问题。我们这个脚本只判断了一下运算符是加减乘除,哎,如果不是加减乘除,我们会报错对吧?比如说我会执行银行报错,你输入的符号不对,你输入必须输入加减乘除,你不能输入其他符号,对吧?那但是呢,我们并没有。
01:14
这个验证用户输入的这个数字一和数字二是不是合法数字,哎,比如说我说过了,你让用户输入数字一,他就会听你的吗。那他要不输怎么办?它输入如果不是纯数字怎么办?那你这个脚本是不是就会有报错,它是不是就会有报错信息存在。对吧,那当时啊,我们说。我们在第一次写这个计算器的时候,我们具备的这个能力呢,不足以来验证这个数字是否是纯数字,现在可以要,那我们现在用真正if语句,我们把这个东西重写一遍。当然我们最主要的目的。是为了要保证我们验证这个东西是合法的。
02:00
当然也要验证这个运算符是合法的,OK,好了,那我们重新来写啊各位,这个程序比较长啊,所以呢,我就提前写好了,待会儿呢,我就直接粘过去了,要不然敲一遍太浪费时间了,看懂就行来。呃,这个事的开头对吧,然后输入要求你输入俩数字。和变量啊,和这个运算符啊,请输入一个运算符,然后保存在这个变量里,把数字和变量都输进去,然后呢,首先我们用第一层的意思。我用红色的把它标出来,目的是为了让你看清楚,杠N干嘛,我们翻一下这个程序稍微复杂点,我们稍微往前翻一下,让你们看清楚啊。干。判断这个符字符串是不是空。非空为真,也就是说我第一层if,我先要判断你这里面你都输值了,你都在输东西,不是说我让你说你没输,你直接回车,那这个就不行,所以我首先要判断这个东西是不是为空啊,是不是有值,杠杆是非空为真,同时啊,你看逻辑语言对吧,我三个值都要有值。
03:20
这个条件才能成立,我是不是才会执行这个Z的工作,对不对,所以我说这是第一层F,哎,这层if在这里执行Z对吧,这里有值,那如果没值呢,看它S,如果没有值呢。报错,请你输入内容,然后返回值是12,也就是说如果发现我的IO发现刀问当中的返回值为12,那么就证明当然这块是不是有这个提示,它如果没输这个就证明你没输东西,这个就是不对的,好各位,这是第一层意思。用来判断有没有值。那现在好了,如果有值,那么。
04:02
开始执行这下面的操作,对吧,那首先有值有值啊,但是有值之后呢,我现在说我要求你输入纯数字,你真的就能输吗?你那么听话吗?你输了个ABC,我的运算是不是也没办法完成。对吧,那接下来我就需要判断它是不是纯数字,各位。判断是否这俩值是不是纯数字,有好多方法,但是呢,朝哥觉得这个方法是最简单的,也是最好理解的,干嘛看着这个咋用啊?I把这个值,把这个这里面就输NUMBER1里保存的这个值输出,然后由send来进行处理,Send记得吗?字符串替换或者行替换,我把这个值输出过来,然后干嘛进行替换,替换什么?把里面的数字。各位,我们这个是。
05:01
代表任意一个数字对吧,那么但是我们这个是正则是包含匹配,它里边不论是一个数字,比如说123仨数,它的意思就是只要是数字就换成空。就把它换成空。那换句话说,我问你啊,如果这个number里面是纯数字,是纯数字,那它的值是不是就应该是空。是不是就应该是空,是不是就是应该是空。对吧,那如果这里边NUMBER1里不是纯数字,是123A。那把123换成空了,那A是不是换不了,那这里面是不是就会有值啊,所以我们就可以干嘛。通过判断T1的值是不是空,如果T1为空,看杠Z啊是不是杠N是不为空为真,杠Z是不是就是为空为真,那如果它为空,就证明如果这俩数为空。就证明它这个值是纯数字。
06:01
哎,为了确认一下,我们可以试一下,OK,这个结果我们可以试试,来,我们NUMBER1,我们给NUMBER1赋个值,比如说赋成123对吧,然后呢,我们把这个值再重新赋给test,这个比较长,我就直接复制啊,哎,那么这个时候我输出TEST1的值。那T1为空,证明这个值NUMBER1是纯数字,那三再来试试啊,如果这里不是这个纯数字123A,那我把它也负一下值,然后我输出IO text值,你会发现它里面是不是就是把数字换成了空。字母换不了,所以text里面是不是就会有值啊,那也就是说只要text的值是空,就证明我的NUMBER1是纯数字看懂了,这个这个判断式的逻辑看懂了。看明白了各位,当然验证NUMBER1是不是纯数字,这是其中一种方法,那我们说这个方法最简单,其他的方法比这反而还要难,所以我们就可以把它当成规范,你就以后记得只要验证是不是纯数字,就可以按按我这个来写,甚至我就可以衍生嘛,也就说我要验证我是不是纯字母,是不是只要把它改一下,变成大写小写字母换成空是不是就可以了,对不对?哎,这个是最简单的方法。
07:25
好了,那现在啊,我们继续回来啊。我把NUMBER1和NUMBER2切换之后的结果都附在TEST1和test,那这里开始第二层判断。各位这里啊,看我的第二层判断是写在是第二层判断是写在第一层判断的这个赞里了,也就是说第一层判断如果条件。成立,那么是不是执行这个工作,那执行的时候我又执行了第二个判断,那么这个条件也得成立才会执行第二个。
08:01
工作,那你就说第一个如果成立会执行第二个,那我待会儿还会再去调一个,那这是第二层啊,第二层干嘛判断它是不是空,如果是空。如果这俩值是空,证明这俩家伙是纯数字,那如果是纯数字,我是不是就可以第三个判断用来进进行运算对吧?那我们先看这个蓝色的是第二次判断,那这里是如果为空,则执行后续工作,那如果不为空呢?如果不为空呢?那么证明这俩不是纯数字,不好意思,错,请你输入这个纯粹的数字,有效数字反馈至幺幺终止程序。哎,那如果看到这个提示证明你输了,不是纯数字对吧,那返回值就是幺幺,那好,第二层就到这了。那经过了前两层判断,第一层判断,判断这里有值。第二层判断,判断这两个家伙是纯数字,那我现在是不是还有第三个判断,就是没有判断这个家伙是不是运算符,那第三层判断就开始判断运算符。如果。
09:07
这个op这个变量当中的值等于加号,那么进行加法运算,把它保存在这个值。保存在value里,然后呢,否则诶L如果这个否那么F,那么这个是加号,就是执行这个否则呢,如果它是减号,则执行减法运算直接保存的单率,哎,你看清楚啊。这个里边的值只能是一个,要不然是加,要不然是减,要不然是乘,所以如果是加,后面的其实就已经不规矩行了,所以不用管说是这个值是不是会重新把它覆盖掉,不会啊,上面这个既然是加,它既然运算了,那这个就不会再运行了,对吧,那我们就可以看嘛,那如果是减。那是不是就可以干嘛把它也附在值里,那接下来判断乘和除都把它,如果是乘除,把运算结果保存在外率那二如果都不是这里啥,你的运算符输的就不是加减乘除,这个时候我是不是就要报第三个除。
10:15
对吧,请你输入有效的运算符,各位,然后退出程序,看明白了,这是三层运算,OK,我用黄色标出来了,看三个运算,诶第三层F判断。各位,这三个F到这里结束,好各位,那最后呢,把。它的结果打印出来,就是说看前面只是变量,就是说数字一符号,符号如果是乘数字二,最终的结果是value,就是我的值,前面我是不是不论加减乘除运算,我是不是把结果都保存在Y6这个变量里,最后把它输出就可以了。OK,这就是我们的这个数学运算各位,这个程序比较长,我就不敲了,我把它粘一下诶。要不然太浪费时间了,所以我就把它粘贴粘过来。
11:04
那我们。比如说我们这里是几了。VF4啊F4,那我们把它粘过来行了,各位,如果我们用的是这种支持中文的远程工具,你的linus,如果这个也有中文这个语言,这个是可以正常显示的,不会有问题啊,当然这些都是注释啊,不能让它直接生效对吧?好。那我们保存退出我们运行一下。称末F4.s。啊贝忘了加权限了是吧,755好,然后呢,执行它F4,那我们先干嘛?F4他让我输入数字一,我没输数字二,我啥也没说,我没输他报错,请输入内容看看返回值到了没,返回值是12啥意思看。我的第一层判断是不是报错了啊,第一层。
12:01
首先我是不是要求它有值对吧?如果没有值二类,请报这个错,请输入数字,请输入内容返回值是12对吧?这第一层。这个判断有效,那我们接下来再执行,让我输数字,我输了个ABC,我随便输了个BCD,反正没输这个数字,加减乘除我也输,输了个加,他报的是这个,请输入有效的运算符,那我们看一下啊,这是不是就是第二次破损?是这个吧,那我们看看返回值,返回值是11看到了,那也就是说我第二层报错是不是有效了,那第二层报错是干嘛呢?判断我要求这个东西是不是纯字符对不对,纯数字对不对,那第三层呢?第三层我是不是判断它必须是加减乘除,否则是不是会返回幺零这个报错。然后请输入有效的这个这个运算符对吧,那我们试试看。数字我输对了,数字我输对了,但是运算符我输了个ABC,那这个时候报错,看输入有效的运算符,艾克高了,问它是十好,那这三个判断式的报错都没问题,那我们运算一下可以吧,那我们来运算一下,那数字123234,输个乘法,运算一下这俩数相乘,结果是两万多,哎,这个看来是没问题的。
13:25
OK,那这个这个四则运算基本上就把我们一些常见的这种bug就排除了,各位为什么一直在说bug,就是你没考虑周到。但是我跟你讲,各位。三层if嵌头一个F里边条件成立对吧,在执行第二个if。对吧,第二个if,如果条件成立,Than,又执行了第三个if,各位其实并不好理解各位。我们。人是生活在三维空间的,所以写程序的时候也是这样,三个判断嵌套或者三个循环嵌套,For里面又套了个缝,又套了个缝,就是我们理解的极限了。
14:12
如果出现四个循环嵌套,哎,判断嵌套还好一点,四个还好,如果循环出现四次嵌套,这个理解难度就极其的难,其实三次循环嵌套就已经很不好理解。所以各位。我再说一遍。我们上程序其实不追求什么语言简洁,不追求,那我们追求的是啥?我觉得我们追求的是。思路简介。只要你好理解,能实现功能,你代码写的再笨,只要是能实现功能就没问题,原因我一直在说,事是就给你自己用,它不是给大量用户访问的,不用考虑下,所以啊,像如果是这种三个if嵌套,其实超哥反而建议你直接这样把它拆开去,先写第一个if。
15:03
判断它是不是货。对吧,如果为空,则直接终止程序。那我们说了,程序是顺序执行的,从上往下执行对吧,那到这里如果他你输了值,先判断你有没有输内容对吧,如果没空他终止了,在这终止了,那么你这个后续程序其实就执行不了了,对吧?那如果在这里这个这个程序执行到后边就证明这里判断没成功,这个条件就没执行,那如果这里没执行,就证明你输入内容。不为空对吧,你看清楚啊,这个不一样啊,我刚刚写的时候是非空为真,这里写的可是唯空为真,因为我要退出程序了。OK,因为前面写的是,看前面写的是。这个非红为针,是因为我要执行下一个A了。那我这里呢,是目的是为了判断它,如果有问题,就是没输入内容,我就直接要程序终止程序了,所以小心,这里应该写成为红为准,哎,如果你没有输入内容,则执行这个S退出程序。
16:06
对吧,那如果没执行这个X,就证明你里边书内容我就可以写第二个判断,哎,这里啊,它的好处在于这个判断没有嵌套起来,而是第一个判断写完再写第二个。这样写笨,但是呢,好理解对吧,那我们就可以干嘛。开始判断,第二个判断是不是是不是纯数字,如果不是纯数字重视,哎,那如果到这里你说的不是纯数字,程序是不是又纯数了,对吧?那最后一个判断,那到了这里各位如果到了这前面两个判断都完成了,下面是前面是啥?如果是。为空,如果为空,程序是不是就终止了,那如果没有执行,那是不是就是你不为空到这里是不是,如果非重,是不是纯数字,程序是不是也终止了,所以程序如果到这儿的话,就是你已经判断过了你的NUMBER1和number里面有值,而且是非纯数字,然后就可以再写R判断运算符了,是加怎么办?是减怎么办,是乘怎么办?是除怎么办?然后如果都不是报错,你输入的运算符不对,诶这样写各位。
17:17
相信啊,这种写法就是所谓的伪代码,伪代码。啥意思,它不是代码,它不能运行,但是呢,你按照代码格式把你的思路写清楚,然后在里面填代码,他是为了这个简易的,然后呢,充实或者是这个这个学习,或者是提醒自己思路,所以啊各位,如果我们去面试,有时候去面试。比如说你真忘了这个语法,比如说你真忘了这个事儿,语法有时候很别扭,你忘了语法怎么写,你完全可以写这种伪代码,哎,A弗,你就写中文某一个条件成立,则执行什么功能?诶各位,这种伪代码虽然肯定不如你把代码直接写出来得分高,但是最少人家看啊,你是有一定编制能力的,只不过你把这个。
18:09
语,这个语法网语法能查呀,忘了之后百度一下,翻翻书就能找到,这个还是会给点分的,也可以写伪代码,当然啊,这只是个全新之急啊,你最好还是能把代码写出来,但是我说如果我们这个整理一下思路,这个时候写尾代码是可以的,那在这里超哥想说就是。在12程序,其他程序肯定不行,这样写肯定又臭又长,对吧,你肯定是要把它嵌到一起,那么但是在十里没有这个要求,我再说一遍,只要你能实现功能,哪怕别人十行就能解决,你写了50行,写了100行,我觉得也是没问题,只要能实现功能,OK。所以我的建议是好理解为一些,这样把if拆开,它比嵌套在一起更好理解。OK,好各位,这样的话,我们这个运算器我们就写完了啊,这个基本功能运算器,当然啊,如果你还想实现更高功能,比如说乘方啊,开方啊,自己写写这个算公式,自己来写公式,算这个事儿没有自带的这个数学函数,它没有办法直接实现这样的功能,都来自己写,那我就抛砖引玉,写一个加减乘除,那这个是不是你就可以自己来写。
19:24
更加的更多的功能,比如说乘方、开方,三角函数这些东西,这个是不是都可以把这个加减乘除,最终它是不是都是依赖的加减乘除都可以写进来,对不对,那最终是不是就可以变成一个完整运算写,当然share这个东西它不是没有办法写,图形界面写出来之后,它也得是像这样的,就是中文提士,这个英文提士以数来运算,但是能实现功能。OK,好了,那我们又举了一个if的例子,OK,那这样的话,我们if语句就讲到这儿,各位,If判断是我们程序中最常见的东西,我希望大家能够熟练掌握这个东西。
20:02
多练,然后呢,尝试增加新功能,多想想我能自己写点什么,好,各位,那这节课的内容就是这样,我们下节课再见。
我来说两句