So I'm going to comment those out, and let's go down to this piece of code, and uncomment it.
那么我会把这些注释上,让我们看看这段代码,取消注释。
I will be posting code that you can play with, and I suggest you go through exactly this kind of exercise.
我给你一些你用的上的代码,我建议你们,多进行一些这种实验。
You can say if this is true, then go and do the following pieces of code or puzzle pieces that are inside this part of the block, else go ahead and do these that are down here.
你可以说如果条件成立,执行下面的代码段,或板块中的拼图,否则跳过去执行这下面的语句。
The only thing I've done in this part of the program, now I'm going to go and read the code, is I've gotten the user to input a bunch of data.
现在我去读读这里的代码,是我会让用户输入一些数据,然后根据用户输入的数据。
- So double bar means if this condition or this one -- and maybe even both -- are true, go down this road and execute that code.
所以复纵线意思是,如果这两个条件之一-,或者两个都--是成立的,那就继续,执行后面的代码。
In a high-level language, square root might simply be a primitive that you can use rather than you having to go over and code it.
一个高级的语言,平方根可能仅仅,只是你能使用的一个基本要素,而不是你需要去编译它。
Now I have the ability to create a loop, that is, to reuse the same pieces of code over and over again as I go around.
现在我们已经学会如何创建循环了,也就是,重复的一遍又一遍的,执行同一片代码。
And that does two things: bug one, it helps catch bugs in your code, and secondly it often converts it into a more efficient sequence of instructions before you actually go off and run it. All right?
这有两点好处:,第一是可以帮助你发现程序中的,第二是把你的代码,在运行之前,转换为更有效率的指令的集合,对不对?
I will tell you that a good programmer, at least in my mind, may actually go back and modify the pseudo code as they realize they're missing things, but it's easier to do that when you're looking at a simple set of steps, than when you're in the middle of a pile of code.
至少我认为是这样的,如果他们发现遗漏了,一些步骤的话会,回过头去修改伪代码,但这当你面对一些大致的步骤时,这个过程就会比,面对一堆代码要简单的多。
Yeah, if my machine will come back up, there we go. So, I'm going to now go ahead and write a little piece of code, and I put it here and I hope you can actually see these better this time, let me uncomment that region.
让我们写出代码来吧,好,如果我的电脑能回来的话,好了,那么,我要去写一小块代码,我把它放在这里以期望大家这次,能看的更清楚点。
Now, efficiency is obviously an important consideration when you're designing code, although I have to admit, at least for me, I usually want to at least start initially with code that works, and then worry about how I might go back and come up with more efficient implementation.
现在,当你设计程序的时候效率,是不得不考虑的问题,虽然我必须承认,至少对我来说,我是先担心程序能不能运行,再去把它的效率优化的,我喜欢可靠点的东西。
If I go back to that code from a moment ago, and I just rerun math3, notice how many places printed after the decimal point -- two?
如果刚才我回到那段代码中去,我们回到math3,请注意在小数点后面,会打印几位数呢--两位?
Another way of saying it is, anything that uses get float doesn't care what the details are inside or shouldn't, and if I change that definition, I don't have to change anything elsewhere in my code, whereas if I just have the raw code in there, I have to go off and do it.
换种说法就是,任何用到获取,输入这个功能的人不用担心具体的实现细节,如果我改变了这里的实现,我并不需要去改变我的代码,因为我的最底处的源码就在这里,我去改这里就可以了。
I've simply added this one extra constraint, nice thing about thinking about it this way is it's easy to think about it, and what do you think I'll have to do if I want to go change the code?
我已经加上这个额外的约束条件,思考这种方法有件好事,那就是以这种方式来思考很简答,你认为我要是想?
But here, if I decide I'm going to store things not in x and y, but with some other set of names, for example, I've gotta go back into these pieces of code that use the points, and change them. So I've lost modularity.
除了要改下借口,但是这里,如果我决定,我不把值放在x和y中,而是和其他一些变量名进行绑定,例如这样的话,我就得回到使用这个点的代码,那儿去做更改了。
Then we have to steal the code from earlier to do a forever loop, a while true loop and then I'm gonna go ahead and use that printf thing that we saw.
然后再借用先前的代码,做一个永久性的循环,即while循环,紧接着需要用到一个,之前我们看到过的printf函数。
应用推荐