对不对,这要方便的多嘛?所以说啊,总而言之
一句话,编程序无非就是告诉计算机,它应该干些什么。
所以说,程序, 什么叫程序?我们给它一个理解,人们用来告诉计算机应该做什么的那些东西,就叫程序。
我们写程序,无非就是要告诉计算机,它应该干些什么。
那么接下来问题来了,问题来了,要告诉计算机它应该干什么,
或者是,应该怎么做,那又有两个问题了
第一个,告诉计算机些什么东西,它才能运行呢?
我应该告诉,告诉它一些什么东西?就是内容是什么? 我应该告诉计算机的那些内容应该是什么?
对吧,我…我要,你比方说,计算机是智能体,我要对它说一段话,
它就会去、会去做的话,那么,这句话的内容是什么?应该包含哪些东西?这是第一个问题。
第二个问题,以什么形式告诉它呢? 它是懂汉语?英语?日语?德语?
到底懂哪个语言呀?对吧,我得确定好告诉它的形式。
我,我们要学编程,无非就是两种东西:一个,我们允许使用哪些内容来告诉它, 或者是说,我们要使用哪些内容。
除此之外,可能,它听不懂。使用哪些词汇。
再一个以什么形式告诉它?无非就是这样的,OK,现在,我们就来着力回答这两个问题
告诉一些什么样的东西,它才能够运行呢?现在我们做这么一件事情,把你自己的大脑当一台计算机。
什么叫当一台计算机呀?就是干一件事情:
接受一个输入,进行一段处理,最后给一段输出。OK,现在大家都把脑子清一下存啊,
内存清空,干一件事儿。
给你一个数列,请你,请你迅速的从这个数列里头找出
其中最大的数。
哪个?
OK,你们怎么算的?噢,印象不深?再来一遍,再来一遍 请你找出
最小的数
确信了吗?给我一个确定的答案,计算机
计算机,啊,计算机运行的时候有这样的吗?
当运行一段程序,嗯,大概输出是什么?
稍等,我确认……有这样的吗?没有吧!
必须得确认,必须得确定无疑,才能告诉我,ok? 最大的是多少来着?84,对吧,嗯,然后最小的大概应该是,28,ok?
你觉得你在整个这个过程里头你是怎么去想的? 你先想想你怎么去想的,咱先别,别考虑什么编程的事,那些远着呢。
你怎么去干的这个事? 最简单的方法,想想我们干了些什么呢?
我要是把它说的稍微详细一点,我觉得,可能做了这么一些事儿,
首先把某一个数字取出来,当作临时的特别的数字。
特别的就是最大的或最小的,对吧?
我就把它当作最大的或最小的。然后呢,假设这个数字是最大或最小,然后呢,
拿这个临时的数字与其他的数字相,逐一相比较,对不对?逐一相比较,然后如果有比这个临时的数更大的,
我就把这个特别的数,这个,我认为是最大的数换成这个更大的数。
重复上述的过程,直到所有的数字全部都比较完毕。
最后剩下的,我脑子里面记下的临时的数字,就是那个最大的数。
对不对?对吧,啊,这个过程很简单,我们,我们稍作回顾,你看啊,我假设:
我是,反正这些数我都要输入到脑子里头去,都要输入,你,你,你在运行这个程序的过程中,是不是每个数都,都看过,至少,对吧?
然后现在我假设78最大,
然后我就往下比,56、67、得得得,往后比,一比,比比比比。哎,到82了,82
比78大,ok,换,把这个数82,82然后再往下走,走走。
哎哟,就84了,对吧?ok,把它换成84,哎,这就是我们脑子里面干的。
是不是这么干的?对吧,至少这是其中的一种方法,对不对?
我没要求你想更复杂的方法,也许它更快也许它更慢,至少这个方法我们可以实现。
记住,记住,在我们这个课上,在咱们这个班上
写程序的效率不是第一位的,永远记住,我们不,第一位的
不要求程序的效率,除非有些特定的算法,它可以提高效率,我,我要求你记住这些算法就OK了。
当你写一个程序的时候,千万千万不要上来就想,
我应该怎么把这个程序写的更快,那不是第一位要解决的问题。
第一位要解决的问题是什么?我怎么样把这个程序写出来,把这个问题解掉,
无论你的程序多复杂,多少行,我从来不以程序的行数论英雄。
啊,程序的行数是没有、没有什么的,它的运行时间,只要你在有限的时间之内,能把它算出来,OK。
所以说,我们先不要管它的效率,我们就找一个办法去解决。
刚才那个办法就很好,我们就干了那些事儿,是这样的 你做了些什么呢?在脑子里边使用了一片存储空间
存入一个数字,存入数字,我之所以强调这个事儿
就是说,这件事情,通常大家都感觉不到,但对计算机而言
你不,你不告诉它,它就干不了这事儿,使用了另一个存储空间,存放那些特别的数字,
一片放输入的数字,
无论是一个,还是一堆,一个放临时的数字,就是两个存储空间,
按照某种规律,反复地选定存储空间中的数字,与特别的数字相比较,每次比较的时候判定,
选定的数字是否大于那个特别的数字? 如果大于特别数字的话,就把这个特别数字刷新一下。
那么,如果这个特别的数字与所有其他的数字都进行了比较,OK,把它说出来。
你看你最后告诉我,那个数字是多少,ok。我把这个成,我把刚才这些事儿,换一种写法,