關於部落格
  • 18103

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

2000.10.23 管四

2000.10.23 管四 【上卷A面】 …2,這邊開始寫,sum跟I嘛,∴這好sum,那這裡是i,那這邊0,0給sum嘛,0給sum,然後1給i,這邊1給i,那這邊要做幾次?這邊小於、等於哦,小於、等於10,這個是中止哦,這個是初值哦,∴現在I是小於、等於10哦,好,這個沒有錯,這邊小於、等於10,∴這邊進來做,進來做啊,這sum加I,這邊是加1,∴sum加i,0加1,這個加起來,然後這裡,I等於I加1,∴I等於I加1,這裡變2,那這個做完之後要注意,這是一個迴圈啊,這邊回來,∴這裡,剛才是1,現在是變2,2又小於、等於10,∴這邊小於、等於10,一直做,好,一直做,這邊變3,好,程式不看了,這裡變3,這邊小於10,一直做,做到這邊是9的時候,這邊是9的時候,這邊是45,好,這個加一加啊,這個加一加,這應該是10吧,這邊10的時候,這邊10的時候,這邊45,那10又小於、等於什麼?小於、等於10。注意哦,這一直做,做到最後,這邊是10,10又小於、等於10,又進來,∴又起來,這邊再把他加起來,加起來這邊55,55,I等於I加1,變11,11不小於、等於10,是不是離開?這邊離開。∴不能做了,∴這邊11的時候離開,離開就跑到這一個,∴印出這個,強迫印,注意哦,這叫強迫印,∴輸出結果啊,輸出結果在這裡,這個是1加2加3,然後加上1、2、3點,加10,等於,答案多少?答案是sum,sum是這個值,55。好,這是程式,程式測試。 那這邊我要寫個重點哦,你要抄,你先抄,我等你,…cut…第一個觀念啊,這要注意哦,這也是考古題哦,不需要輸入啊,程式不一定要有輸入,但是一定要有一個輸出,至少有一個輸出,不一定要有輸入,但是至少一定要有一個輸出,∴這邊一定會有,會有一個這個東西,至少一個輸出,但是有沒有輸入?有沒有read line?沒有read line。好,沒有read line。一定有write line,∴不需要輸入,但是要有一個輸出,還有,這個啊,這個地方,這個棟西,假設寫成這樣,這邊小於、等於10,小於、等於10,最後做到什麼?做到10。但是,小於10有沒有做到10?沒有做到10。只會做到多少?做到9。∴答案是45,這 種會少做一次,這就是邏輯錯誤,注意哦,邏輯錯誤,邏輯錯誤就是程式可以執行,但是他的執行結果跟預期結果怎樣?不一樣。好,叫邏輯錯誤。 還有一種邏輯錯誤,假設你這個不小心打錯了,像這個sum等於sum加i,打成sum等於sum加1,注意這I啊,I跟這1啊,你看那個電腦上面,1是不是長成這樣?是不是很像?對。這個,這個跟這個長得很像,你打錯也不知道,∴這樣,你打成這個,你的執行結果,要注意,每次都加多少?加1。這個每次都加1啊,每次都加1,加了幾次?加了10次。加了10次,那答案是什麼?答案是10。這也是邏輯錯誤,這應該聽得懂嘛,可以run,但是他的執行結果怎樣?跟預期結果不一樣,叫邏輯錯誤。好,這是第三個定義,…cut…註解啊,這4個註解在下一章啊,第4章會講到,這個演算法不能,不能有無窮迴路,好,記得,演算法不能有無窮迴路,演算法不一定要有輸入,不一定要有輸入,但是一定要有一個什麼?輸出。好,還有一個,這個啊,指令不可以模稜兩可,可不以模稜兩可,模糊不清,一定要明確,我們到時侯會講,∴我先,先講這個註解,到時候第4章,我會跟你講,這以前講過,在哪個地方講過,∴在這邊呢,注意哦,在這個啊,假設你剛才那個程式啊,我們再看一次,剛才那個程式是這樣寫,對不對?while I小於、等於10,do,然後這裡begin,然後這邊sum等於什麼?sum加I。Sum等於sum加i,那I等於呢?I加1。剛才是不是這樣寫?注意聽哦,這邊假設,這一條去掉的話,你想會有什麼現像?這一條去掉的時候,∵剛才I是不是上面是給1,∴I永遠等於什麼?1。∴這邊是不是永遠在那邊轉?轉…轉,會不會停?不會停la。∴會造成什麼?要注意,去掉這一個會造成什麼?無窮迴路。對不對?無窮迴路。一直在那邊,一直加,加多少?加I。但是注意聽哦,理論上為無窮迴路,實際上會當掉,為什麼會當掉?sum是什麼數?整數嘛。記不記得?整數幾個bit?我們還沒講哦,我們還沒講哦,我們還沒講哦,整數是在第一章,第一章的第六大主題,我們還沒講嘛,禮拜天,這禮拜天要上課嘛,好,第六大主題會講到,整數範圍多少?整數範圍啊,為,到時候我會講,這邊是負2的n減1,到2的n減1,再減1,那也就是負2的什麼?16減1。到2的呢?16減1,再減1。這方減1在底下哦,這邊再減1,這是到的意思啊,到範圍,∴相當於負32768,到多少?32767。∴他的最大最大只能到多少?32767。∴你假設大於32767,電腦就會怎樣?溢位。會當掉,他會當掉,∴會停掉,這個會講哦,這個是重點哦,這個考試重點哦,這個是考試重點哦,那你會覺得很奇怪,這個n什麼意思,這個n就是,整數幾個bit?16 bit。整數16 bit。我們會講,這在第一章的第六大主題會講,那為什麼要講這個程式啊,講這個程式的目的,後面有一連串的考古題出來,∴這裡有一個考古題喔,這邊會有一個考古題,這個考古題,這邊就是一個迴圈啊,你看,這是迴圈,有沒有?這是一個迴圈,這是一個迴圈哦,這是一個迴圈一直在那邊轉…轉。 …cut…一開始I等於多少?I等於3.I等於3,那這邊sum等於多,s等於多少?s等於0。∴這邊加多少?加3。那這邊,3加3變什麼?變6。∴下一次變什麼?變6。∴這邊加多少?6。是不是加6?然後一直加,加到哪一點?不知道。加到最後,不曉得是不是,會不會是這一點?還是超過這一點,好,∴我們要去算,∴這種題目要怎麼解,這個s等於從0一直加,加3,加6,後來加到,最後不知道哪一點,那你算他的終值出來,你不可能在那邊一直加吧?3、6、9、12、什麼,一直上去嘛,不可能嘛,∴我們開始要講一個觀念,這個第一個啊,這個迴圈的次數,迴路的次數,迴路的次數怎麼算啊,迴路的次數啊,這邊有個規則啊,一定要記得,這個叫終值,這個叫終值,那這I叫做初值,那這個叫增值,這個叫增值,∴你迴路的次數,迴路的次數等於什麼?等於終值減初值,除以增值,除以增值,除完之後可能不是整數,怎麼辦?你要取高斯,取高斯,再加1,∴你這邊可以算出來,這邊終值多少?終值不知。終值是在那邊哦,我們假,我們假想終值是那一個,假想終值那一個是4佰3拾3,假想哦,那扣掉什麼?初值是3。除以增值是什麼?3。再加I,好,那這邊等於多少?這邊4佰3拾,除以3,4佰3拾除以3啊,你這邊除以3,這邊呢?1,好,3,13,這邊是4,12,這邊是10,這邊是3嘛,除不盡嘛,這個是不是除不盡?∴這邊等於什麼?1佰4拾3點3…3。對不對?取高斯,再加什麼?再加1。對不對?好,那這邊多少?1佰4拾3點3…3取高斯值,就是1佰4拾3,1佰4拾3再加1就是1佰4拾4次,對不對?1佰4拾4次。 那第2個,要注意哦,我們要算真正終值,注意哦,真正終值,我們剛才那個終值是假想終值,現在要算真正終值,真正終值怎麼算?就等於初值,初值再加上次數,減1,再乘以增值,為什麼要次數減1?這要注意聽哦?為什麼要次數減1?∵這個是不是第一項嘛,這是不是第一項?∴一定要扣一個。對不對?扣一個。∴初值是3嘛,那次數多少?1佰4拾4。扣1,再乘以什麼?再乘以3。∴這邊等於3,再加上,這邊1佰4拾3,好,這邊乘以3,這個是3佰,啊,4佰,4佰2拾9,4佰2拾9再加3,4佰什麼?3拾2。∴我們可以算出來,真正終值多少?現在算出來了啊,4佰3拾2。對不對?4佰3拾2。 那注意哦,這個叫什麼?這叫上底。這個叫什麼?下底。∴我們用一個公式,用梯形面積來算,梯形面積啊,∴這個和等於什麼?等於上底,加上下底,你要乘高,你要除2,用梯形面積,梯形面積,上底加下底,乘高,除2,∴上底多少?上底是這個,叫4佰3拾2。然後,再加上下底是多少?下底是3,除以2,乘以高,高就是什麼東西?高就是你的次數。要注意,這個東西就是次數,∴次數多少?次數就是,算出來是什麼?1佰4拾4。對不對?1佰4拾4。∴再乘以什麼?1佰4拾4。∴這邊,加起來是4佰3拾,那你乘以多少?你用這個除以這個,這個除以這個是多少?72。對不對?那這邊,算出來2、5得10,不用看了,2、5得10,找那個,0的,就是什麼?31320。沒有…就按計算機嘛,好,答案誰?答案A。 還有,等一下哦,考試的時候不要做啊,等一下,考試的時候不要做,像這種題目不要做,為什麼不要做?來,我們從答,從答案裡面找答案,這個莫名奇妙,跟人家長得完全不一樣,不可能是答案了,好,免做,不要做了,能夠看出來就看出來,那注意聽哦,這邊是不是加3?這個,你看,看這兩個數字就好了,這個叫什麼?多做左次。這叫邏輯錯誤,這個跟這個比,叫什麼?少做一次。也是邏輯錯誤,∴答案選誰?連做都不用做,答案選A。聽得懂我在講什麼嗎?聽得懂嗎?你都不要去算他,這是算給你看的,假設碰到這種答案就直接選就好了,這叫多做一次,這叫少做一次,∴答案是1,那也沒有錯,我們做出來的答案是什麼?答案是A嘛。那這會做了沒,這要會做哦,這小考會考耶,這是考古題第一題,你先抄,我們再講第2題。 …cut…算那個時間複雜度,好,這要算時間複雜度,這個東西要求那個時間複雜度啊,這個,這個東西在第4章的,在第4章,好,第4章,…cut…虛擬,他問你說這個要執行幾次,這要執行幾次啊,這要執行幾次啊,那這裡有兩個迴圈哦,這是,這個迴圈是內圈,這是內圈,這個迴圈是外圈,這個迴圈外圈,好,一個內圈,一個外圈,∴內圈進來之後,這個外圈進來之後,內圈在這邊跑很多次,然後才離開,∴又進來之後,又跑很多次,才怎樣?離開。∴進來,又跑很多次,才離開。 …cut…你看這程式要怎麼解?等一下哦,等一下哦,等一下哦,不要抄哦,等一下哦,你有沒有發覺說,這裡喔,I給j,I給j,對不對?I給j之後,是不是j就是k,∴這一條…聽不懂…,這一條不用寫,這一條去掉,∵I永遠會給誰?給j嘛。∴j永遠是什麼東西?I嘛。∴這個,這一條把他刪掉,刪掉之後,這個j就變成I,那注意聽哦,這裡,I等於1,I從1開始,做到什麼?做到n。∴你這樣寫,I從1、I從2、I從3,做到I從n減1,到什麼?I等於n。好,注意,這就是一個大外圈,大外圈,進去之後呢?或,k是從哪裡開始?K是從1到什麼?n。∴注意,K是從I到n,那你這樣想像,來,k是從,I是多少?1嘛。1到n,請問做幾次?1到n幾次?n次。好,n次。 好,那第2次,I等於2的時候,代進來,k從哪裡開始做?代進來哦,2。2到n,做幾次?做到n次。N減1次,N減1次。 那3代進來,3到n,3到n是n減2次。 點…點,然後,k,這邊代進來,n減1代進來,n減1,n減1到n,做幾次?2次嘛。N減1,跟什麼?n。兩次。 那這邊,n代進來,k,是從n到什麼?n到n。做幾次?1次。 好,那你要去算哦,你要去算,我們剛才講,做幾次,是做這一個,在這邊轉啊,聽得懂嗎?在這邊轉,轉幾次?∴這個,n次,代表是這個做n次,n減1次,代表這個做n減1次,∴總共做幾次?你要把他加起來,∴你把這個次數加起來,這個次數加起來,這邊是n次,從這邊加,n次,加什麼?n減1。加上n減2,然後加上點…點,加上什麼?加2跟什麼?加1。加2加1。那這邊等於什麼?這邊一樣哦,這叫做上底,這叫下底,那注意,這個,整個,總共幾項?從1、2、3,一直到n,∴是什麼?n次。N項,N項是什麼?n項叫double。是不是叫double?對不對?∴現在你要求和,對不對?∴這邊等於什麼?和等於,和等於上底,對不對?加下底,一樣嘛,用梯形面積啊,乘以高,除以2,對不對?乘以高,除以2,∴這邊等於多少?上底是n次,下底是1次,除以2,乘以高,高是多少少?n嘛,∴等於2分之n乘以什麼?n乘以n加1。這應該沒問題嘛,∴答案選誰?答案選C。答案選C。你先抄…cut…這個不考資料結構,就不算考計概了,好,不考資料結構,就不算考計概了,那不考樹,就不算考資料結構,…好,要注意,是時間複雜度,∵每種電腦都不太一樣,power pc跟那個ibm pc電腦不太一樣,你不能說我這個電腦run 3分鐘,你那個電腦run 5分鐘,我這個速度比你快,這個,這個不對的,∵電腦的速度不一樣,評估出來是不一樣,∴怎麼辦呢,我們就評估啊,這個程式,程式,像說剛才講的,剛才不是有個,擦掉了啊,剛才我們那評估啊,這個倒底執行幾次?∵這個到底執行幾次?好,假設,評估出來你的程式,你的程式用兩次迴圈,我的程式,好,這兩次迴圈啊,假設我的程式是用這樣,這樣做的話,那當然你的程式比較好,我程式比較差,∵你用的是兩次迴圈嘛,這是不是一個內圈?這是一個外圈,我用什麼?3個迴圈。3個迴圈效率會比較差,那你的程式會比較好,但是假設你程式這樣寫的話,最好,程式這樣寫最好,這樣每個都執行幾次?一次。∴最好。∴我們看他的時間複雜度,∴這邊跟你講說,評估程式執行速度的優劣是時間複雜度,這叫time complexity,要注意,time complexity,那time complexity裡面最好,最好就是O1,就是我剛才講的,從前面一直執行下來,每個執行幾次?一次。這叫循序執行,那第二種叫O,log,2n,這種東西是二分法搜尋,什麼叫二分法搜尋?我大概講一下la,我大概講一下啊,你才知道這公式怎麼來,像說這裡,一堆數字,這邊是10、20、30、40、50、60、70,我今天要找一個,我今天要找一個60啊,我要找60,那要怎麼找?這叫A1嘛,這是一個陣列,A2、A3、A4、A5、A6,然後A7,他要找哪一個?他會這樣做,1加7,除以2,等於4,找中間那一項,找中間那一項,他要去找中間那一項,∴60跟中間這一項來比,60跟40,這個來比的話,我是不是大於40?我比中間項大,那表示什麼意思?∵這邊是從小到大嘛,對不對?我比中間項大,那表示不在上半段,是在什麼?下半段。應該聽得懂嘛,這樣一砍,一砍是不是砍一半掉?∴他的公式就是log 2n,一砍砍一半掉,一砍就砍一半掉,∴log 2n,這叫二分法搜尋,這個最好,再來這一個,那這個,這個就比這個差了,On,那這個叫循序搜尋,什麼叫循序搜尋?我不管la,我從頭一直比la,60,啊是不是60?啊,不是、不是、不是、是,找到,是不是從頭比起?這叫循序搜尋啊,他是On,那再來有一種叫On,log 2n,這個是比較好的排序,像quick,叫快速排序,heap,叫錐形排序,我們會講,quick、heap、merge,合併排序,這叫合併嘛,這種叫錐形排序,我們會講,這不要緊張,這叫快速排序,過年前,過年前我要把資料結構結束掉,就結束掉了,資料結構全部結束掉,過年前就要結束掉,不然怕來不及啊,∵今年五月考試嘛,∴這3個,3個sort,不只哦,我總共講了10個sort,10個排序,講了10個排序,∴這3個比較好,quick、heap、merge,這要背起來,quick、heap、merge,quick、heap、merge最快,好,這會考,這考得很多,然後再來是On平方,On平方是比較差的排序,像bubble,bubble就是氣泡的,這應該大家都聽過吧,重的往下沈,輕的往上浮嘛,氣泡嘛,好,再來這On3次方,n3次方就3次迴圈,這兩個,在數學上叫不可解的問題,這個不可解,那你會覺得很奇怪哦,你現在會考慮說,為什麼這叫最好?為什麼叫最差?來,我舉個例子啊,我舉個例子啊,這,這邊,這個,這不要抄,這不要抄,以後會講,都會講la,這個都會講,這邊要注意哦,我現在n啊,假設n是這樣,n是等於10的3次方,注意聽哦,我現在假設n等於10的3次方,n等於10的3次方,就等於什麼?1000。也就是約,約等於多少?1024。等於2的10次方。注意聽哦,我現在n是等於這個值,我假設他趨近於這個值,聽得懂嗎?趨近這個值,好,我們代進來,這個值多少?1。不用算,這個叫1嘛。…聽不懂…,那注意哦,log,2n,n代進來,你代進來是不是代這個比較好?當然代這個比較好嘛,是不是代這個比較好?∴我代這個來,代這個,2的什麼?10次方。Log 2,2 10,多少?10 la。是不是10?這10嘛,這應該聽得懂了,這聽懂嗎?聽懂嗎?以後會講,以後會講,log 2,2,10,這個10就怎樣?摔到前面去。有沒有?摔到前面去。那這個等於多少?1嘛。對不對?就是10,好。 好,再來,On,n多少?10的幾次方?3次方。∴這邊10的3次方,你會發覺說10的3次方多少?1000嘛。你會發覺說數字越來越大,好可怕啊,越來越差嘛,是不是越來越差?越來越沒有效率。這個一樣,這個多少?這個是,這個就是10,這個多少?10的3次方。∴10的幾次方?4次方。10的3次方。是不是越來越差?好,再來,10的3次方,的平方,10的3次方平方多少?10的3次方的平方,多少?10的什麼?6次方。是不是更差了?對不對?好,那再來,10的,10的3次方,的3次方,多少?10的什麼?9次方。對不對?10的9次方。更差,那這個多少?2的什麼?2的1000次方。那這個多少?這個是1000階層。那你開始懷疑了,這3個要怎麼比?對不對?這3個考古題哦,這3個考古題哦,這3個考古題,他叫你排你這個順序哦,他叫你排你順序,那這3個誰大誰小?我們開始來比了,我們開始比,∴這邊啊,要注意,這個怎麼比?這邊有一個10的3次方,對不對?10的3次方,我們現在先跟著比,10的3次方跟2的什麼?1000次方。好,那這個誰大?要注意聽哦,等一下哦,這要,這要怎麼比?這個跟這個比,對不對?兩頭起多少?注意聽哦,等於,兩頭起這個,兩頭起這個來,兩頭起這個,還是可以比吧,對不對?兩頭起嘛,是不是兩頭起?對不對?兩頭起log,log 10嘛,對不對?好,來,再來,這個我講過,這個3會怎樣?摔下來,摔下來,摔到前面去,log 10,那這邊呢?摔下來多少?1000。1000乘以log 10,喂!這樣會嗎?這真的是管4考古題哦,他不是用這個數字la,他不是用這個數字,我們到時候再講考古題長得什麼樣子,差不多la,差不多la,這個多少?3乘以多少?1。這個值多少?1。好,這1,那比上多少?1000。然後拜託,這個要背,同學,這個要背la,這個要背,這叫0點301,0點301,那0點301乘以這個東西,好,那很清楚了,這邊3,對不對?那後面多少?哦,可怕了,300點1。誰大啊?他大。他大。越大的怎樣?效率怎樣?越差。不是越大越好哦,喔,效率差,∴效率差,∴這個,這個排在這後面,這應該沒問題嘛,對不對?聽懂嗎?好,那再注意聽哦,來…來,過來,過來,那,那這個咧,同學,這個跟這個,請問,怎麼辦?怎麼辦?你要算這個,沒什麼可能la,你要算這個,你要算這個,不太可能,那我們算小一點的好不好?算小一點,這樣好了,請問誰大?請問誰大?我們這樣,我們這樣,這樣考慮,也等於這樣,用這個來考慮,那請問誰大?2的3次方多少?8。3階層呢?什麼叫做3階層?3乘2乘,3乘2乘1嘛。對不對?這多少?6。啊,那起的數字不好,我們起的數字太小,我們起的數字太小了,太小了,太小了,剛好碰到特例,特例,聽得懂嗎,∵他那個,他那個東西是這樣,在這個,在這個範圍裡面,在這個範圍裡面,這個比較大,但是,後面是這個比較小,這個比較大,聽懂嗎?∴剛好取在那個失誤點裡面,∴這個不要取這麼小la,歹勢,…歹勢,剛才是錯誤示範la,歹勢,我們用這樣,這樣…這樣,這樣做可以看出來哦,歹勢哦,剛才那一點剛好是在錯誤裡面好,3、2、1就不對了喔,2的4次方多少?16。那請問這邊多少?這個是4、3、2、1,等於多少?24。∴誰大?這邊大。這應該聽懂嘛,∴這邊大,表示這邊怎樣?好,效率差la。效率差。這樣有沒有問題?這樣比較有沒有問題?你要比得出來哦,你要比得出來哦,好,你先抄,你先抄,我等你。 …cut…先請問一下,o的多少?o的多少?o多少?我們教過了哦,不要o不出來哦,等一下,等一下,這2分之n平方,再乘,再加上什麼?n。喂!注意聽哦,你要取這個,取這個?我們剛剛講過了,哪一個最大?哪一個比較大?n平方比n是不是大?∴這個怎樣?這個就不要去管他,對不對?有沒有去考慮常數?你看過常數沒有?在這裡哪有常數?只有這個例外而已,對不對?不要常數,∴這個是o的什麼?n平方。那對不對?你看你的大程式,他是不是兩次迴圈?有沒有?他是不是兩次迴圈?for,for I等於什麼?for k等於什麼?有沒有?是不是兩次迴圈?∴他一定On平方嘛,…cut…一共執行多少次?那我們剛才講的,已經講出來了,這個次數等於什麼?次數。我們導出來的次數等於這個值啊,那你就把他代進去,∴這邊是100,再乘以這個,這個100加1,然後再除以2,∴這邊等於50,這個除這個是不是50?那再乘以什麼?1佰零1。∴等於什麼?5050。這是,這是次數哦,那x值為多少?x值等於多少?∵你每次加多少?加1。∴加1,你執行一次,就加一次,執行5050次,就加什麼?5050。∴答案是等於這個的,但是萬一題目給你改了,這樣的話,那不是5050,你要5050再乘以多少?乘以2。好,記得要乘以2,…cut…會改的話,就是這裡,注意,會改就是這裡,剛才是I嘛,現在是什麼?I加1。∴一樣啊,你拿到這種東西,對不對?j等於這個東西,那這個把他刪掉,這改成什麼?變成I加1。這個I加1,一樣,∴這個怎麼解?這個解的話,一樣,你從這邊做起,I等於1、I等於2、I等於3,像剛才的方式做,I等於n減1、I等於n。那k等於多少?K是從,K是從,這裡是I加1。到什麼?到n。∴這邊要注意,k是從哪裡開始做?1加1。2。2到n,這邊是N減1次;那這邊k,2加1是3,3到n,n減2次;好,那這邊,k,3加1,這邊4到n,這邊是N減3次;好,這邊一樣,點、點、點,∴這邊是k,n減1,n減1加1是n次,n到n,n到n哦,這邊做一次,那這邊k,n,n加1到n,做不做?喂!同學,做不做?這個,這個比這個大哦,不會做,∴這個呢?0次。∴這邊,加起來怎麼加?從這邊加到這裡。從這邊加到這裡,0次不要管他嘛,∴變什麼?n減1。這邊是,n減2、n減3,一直到什麼?一直到n。那等於什麼?2分之。剛才講的,這叫什麼?上底。對不對?這叫什麼?下底。∴這邊是n減1,再加什麼?再加1。乘高,高是什麼?n減1項。對不對?這是高哦,∴這邊等於多少?2分之,n減1加1就是n。乘以什麼?n減1。這應該沒問題吧,那注意,這要sol order,怎麼算?order,等於2分之,n平方,減n。對不對?一樣,這個跟這個,以這個為主,這個不要看,這個跟這個,這個不要看,對不對?常數不看嘛,∴還是order嘛,n平方。這應該聽得懂嘛,還是On平方,好,這個你抄一抄,我講,這個程式是basic,這程式basic,那basic要怎麼追?早期管4也有考basic,最近就考得比較少啊,但是也要知道大概怎麼…cut…,k大於3,成立,就做後面,成立做後面,那就馬上會印出來,然後會結束掉,好,關鍵在這裡,那假設不成立,不成立就是什麼?不成立就是k小於等於什麼?等於3。那注意,這邊有個迴圈,這邊有個迴圈,這goto,這是一個迴圈,那這個要怎麼跑?這種東西啊,你跑的時候,你就慢慢寫,k,k等於1,s等於什麼?等於1。T呢?等於0。你先把這個寫出來,這個1給k,1給s,t等於0,k大於3嗎?你看k大於3嗎?k不大於3。不成立。不大於3。不大於3就下來,下來做這件事情,t加k乘以k加1,再乘以s。t,好,t,注意哦,0,0加上什麼?k。k是1嘛,再乘以什麼?1。1加1,1加1就是2嘛,好,1加1。然後再乘以什麼?s。s是1嘛,好,那這等於多少?這個是,1加1是2嘛,這邊是1,1,好,這邊是什麼?2。加起來是不是2?好,然後再來,負s給s,負s給s,∴變成負1,然後再來,這底下,是k等於k加1,k等於k加1是2,然後goto上去,不大於3,不大於3做什麼事情?t,再加上,這個一樣,k乘以k加1乘以s,k乘以k加1,k是2,2乘以2加1,再乘以什麼?S是什麼?負1。好,那這個值是什麼?這個值是2、3得6,負6。負6加這個是,負6加這個是負4,對不對?負4嘛。好,那再來是S等於負1,∴負1,負1再負1,負1得負,這是正,∴這邊正1,然後K等於K加1,這邊3,3不大於3,∴又上去,這邊又,這邊喔,goto之後,上去之後,3不大於3之後,又下來,下來這邊呢,下來這邊呢,變成負4,加上什麼?k是3。再乘以什麼?3加1。再乘以這個1,∴這個值多少?3、4,12。12再加這個是什麼?8嘛。是不是8?好,那這個,負,又是負,負1,1得負,就是負1嘛,那這邊k等於k加1,這邊變4,好,goto上去,4已經大於3,是不是停止了?4大於3,∴4大於3,∴印出,好,印出什麼?印出t。print就是印出t,∴為什麼?印出t。T多少?8嘛。對不對?∴輸出8,輸出8,∴這個答案選誰?答案選C。…cut…像你有看過這種流程圖嗎?這種哪是流程圖啊,隨便畫畫,你知道嗎?這個流程圖已經錯了啊,這聯考都是亂畫啊,這個東西應該畫成這樣啊,應該畫成長成這樣才對?這邊會有一個什麼?這個東西,迴圈嘛,∵這邊本身有個FOR,你有看過這麼勵害的流程圖嗎?你乾脆就不要畫就好了,你乾脆就寫一個框框嘛,什麼什麼什麼,你去算出來就了,這個太勵害了la,這是1,從哪裡開始?從1開始。To多少?29。1開始到什麼?29。這邊要等號哦,∴他主要做這件事情啊,他主要做這件事情,做這事情,然後這邊是什麼?i。這邊是上去,然後這邊下來,他是流程圖,是長成這樣,其實他不畫成這種樣子,他乾脆畫成,長成這副德性la,這是不對的啊,這個要注意,這個i,小於、等於29,會下去,I大於29會怎樣?離開。他本身是一個迴圈哦,他本身是一個迴圈,這個流程圖喔,出得真的是很好,他出得真是很好,這有陷阱,一般人看到這個題目啊,看到這個題目都會想到說,他是叫弗伯那西數列,弗伯那西數列,我待會會講什麼叫弗伯那西數列,這個迴圈告訴我們…聽不清楚…,做初值,∴A,A從哪裡開始做?從1開始做。1到29,a1放1、a2放1、A3放1、到A29放1,∴他這意思啊,他這意思是這樣,我寫在這裡,他這意思是這樣,這a1啊,a1放1、a2放1、A3放1,這個,這個字放這邊好像沒人看到啊,裝飾品用的,裝飾品啊,這應該換掉了啊,這個要注意,a6啊,再來,a7、a8、a9,然後點點點,這邊點點點,這邊是29,注意哦,注意哦,他是做這個事情,做這個事情之後,他說什麼?I等於3嘛。I等於3 la,I等於3。∴I等於3,我們從這邊開始寫,I等於3,第一次哦,要進去了,I等於3,I小於9,真的,I小於9,真的,I小於9,I小於9,真的,真的進來哦,進來之後做什麼?ai等於ai減1,加ai減2,ai,ai等於ai減1,加ai減2,這樣,那這個等於多少?你算一算,這個等於多少?這1嘛,這1嘛。∴加起來等於多少?2。∴這個值變什麼?2。其實你想一想,他做什麼事?前兩個加起來,得到什麼?第3個數。對不對?第3個數嘛。那加完之後,I等於I加1,∴好,i等於I加1,∴第2次,I等於多少?4。那程式不用看了,他是小於9,∴a4等於a幾?3就是2,4就是什麼?3。3就是1;4就是什麼?2。對不對?好,那這個值多少?其實我剛才已經講了嘛,你要求這個對不對?前兩個數之和為什麼?第3個數之值嘛。∴1加2得什麼。得3。對不對?好,∴這個是什麼?2。這邊多少?1。∴這邊多少?3嘛。好,點點點…點點點,點點點,注意哦,點到什麼?I等於8。我們現在講I等於8,I等於8第幾次?3是第1次la,8應該第幾次?第6次嘛。對不對?對啊。差2嘛,對不對?差2嘛,對不對?好,那這個a8等於什麼?a7,加什麼?a6。對不對?好,∴這加起來多少?來…來,我們趕快加一加,這個加這個是,這個加這個是8,這個加這個是13,這個加這個,好,停了哦,停了ho,a7多少?a7,13。a6多少?a6,好,∴加起來多少?21。好,加起來21,對不對?好,第7次,I等於9,請問有沒有小於9?有沒有小於9?沒有小於9。沒有小於9,怎麼辦?no,離開。他印誰?a9。你看,你看,這有夠奸沒有?a9有沒有做?沒做。答案多少?1啊。∴根據這個,答案選誰?選D。選D。選D。∴你假設不小心,就一直加,一直加,加到答案以為多少?傻傻的加,傻傻的加,13加21多少?34。喂!真的有答案ne,錯。聽懂嗎?錯。這要小心哦,…cut…費氏數列喔,等一下哦,費氏數列,我們叫弗伯那西數列,這個在計概的任何一本書都會講到這一個,這個數就很重要,他是這樣啊,他有,他有一個故事啊,他說有一隻啊,有一隻兔子啊,那隔年,還是他一隻,好,那再,那再年跑來一隻,跑來一隻變兩隻,那兩隻就可以生,好,生就生這一個,然後再生,生這一個,再生,生這一個,再生這個,他問你說,到了某一年之後,會生多少隻?那這個怎麼算?這兩個叫初值啊,這兩個叫初值啊,一開始一隻嘛,隔年還是一隻嘛,突然跑來一隻,就跑來一隻就不是初值了,∴這邊要注意,這兩個加起來,這是初值,加起來之後得到這個數,前兩數之和,為第3數之值,這應該聽懂嘛,1加2得什麼?3。2加3得什麼?5。3加5得什麼?8。5加8什麼?13。一直下去,這應該聽懂嘛,好,你抄一抄,我們動一下。 【下卷A面】 …像那個骰,骰子有沒有?丟下去一直在那邊轉動、轉動、轉動,然後會停下來,停在哪一點,有沒有?跟那個類似,…cut…但是不要,用推理的,用推理的可以看出答案,…cut…這個1啊,這邊1,這邊是0,好,I小於9999,這邊要注意哦,這邊小於9999,那注意,這個是,應該是yes,yes怎麼做?∴第一個動作做這裡,這邊是I等於2,然後再做下一個,X等於什麼?X加上,X等於X加上負1的什麼?I次方。∴這邊等於,這個是0啊,0加上負1的什麼?平方。這邊等於什麼?正1。∴這裡等於1,注意哦,這裡等於1,∴X等於1,好,那回頭,回頭之後再判斷,∴回頭判斷,這邊判斷啊,現在是小於什麼?這是第2動作,∴小於999。∴又做第一個動作,第一個,這裡是3,那這邊呢,變x加上負1的什麼?I次方。∴這邊等於這個,這個值1,1加負1的3次方,∴等於呢?等於9。你可以看出來他是1跟0在那邊打轉,注意聽哦,1跟0在這邊打轉,這應該聽得懂嘛,好,那再來,這邊又小於什麼?9999。∴這邊變什麼?4。好,X加上負1,I次方,這邊是什麼?0。加上負1的什麼?4次方。是不是又變正1?對不對?又變正1。好,這個不用看了,一直點點點,這邊,好,這邊是9998,你這樣看哦,這裡,1,奇數是0,偶數是1,奇數是0,偶數是1,偶數是1,對不對?然後這邊再小於什麼?9999。∴變成9999,這變什麼?0。對不對?那請問有沒有小於9999?不小於9999。喂!不要偷寫la,我不寫了,喔,不寫la,好,不寫了,不寫了,啊,寫在這裡好了,不小於9999。∴不小於9999,會什麼?會這樣停下來。∴這個,這時候X多少?X值,就是這個嘛,∴答案選誰?選B。這答案選B。…cut…這跟剛才的差不多啊,∴跟剛才的差不多啊,這是箭頭…cut…等於99,∴這裡啊,這裡小於99,喂,這個大寫、小寫無所謂啊,大寫、小寫無所謂,∴這個小於99,∴小於99,是啊,是,先做這裡,先做底下哦,∴Y等於多少?Y等於負1的I次方,再乘以Y。這個比較麻煩,這要注意聽,這個比較麻煩,這個比較簡單,他只有2個值,這個是4個值在那邊跑,∴負1的I次方,負1的I次方啊,I次方,I是1嘛,乘以,這個值是1,∴等於負1,∴這邊負1,這個值負1,負1之後,再來,下來是I等於什麼?I加1。∴再上去,第2動作,這裡,這個,然後再來,再來判斷,小於99,∴又做這個,第一個,好,又做這個第一個,好,第一個,Y又等於什麼?負1的I次方,再乘以什麼?Y。負1的,I就是?2。乘以這個值,負1。負1的平方是正1,正1再乘這個,是負1嘛,∴這邊是負1,你看哦,你看這很奇怪,負1,負1啊,然後再上去,這邊變什麼?3。他小於99,再過來,∴這邊Y等於,負1的I次方,再乘以什麼?乘以Y。負1的,現在I是什麼?I是3。3次方。乘以這裡呢?這是負1。∴負1的3次方,再乘以1,負1再乘以負1,那當然等於什麼?正1。你看哦,你看哦,開始,開始有一個cycle了哦,1、負1、負1、1哦,這有cycle哦,然後你要再看,再看,再繼續看,這邊,∴這個追,就比剛才那個要追,比較久,∴這邊一樣啊,這邊過來,這邊又等於,Y等於負1,I乘以Y,∴這邊負1的4次方,乘以什麼?乘以正1。好,這很清楚,等於什麼?負1。是不是又開始循環了?1、負1、負1、1。∴這邊又什麼?負1嘛。是不是又上去?這邊是,然後這裡又下來,這邊Y又等於負1的什麼?I次方乘以Y。∴負1的什麼?5次方,乘以什麼?乘以這裡是負1。∴變成什麼?正1。是不是變正1?有沒有?正1。咦,有沒有算錯?負1,這個是正1,哦~,歹勢,歹勢,這是什麼?正1乘以1,正1嘛,失禮,失禮,好,那這邊是什麼?這邊是正1。∴負1乘以正1是什麼?負1。對不對?負1嘛,好,這沒錯嘛,∴你注意看,1、負1、負1、正1,另外一個cycle開始,是不是1、負1,對不對?好,我們再5,我們再算好了,再算好了,算,算循環啊,這裡又變什麼?Y等於負1的什麼?I次方。乘以什麼?Y。∴等於負1的什麼?6次方。再乘以什麼?負1。∴變成什麼?變成負1,6次方是正1,正1是乘負1,∴再上去,這個什麼?7。好,再過來,Y等於負1的什麼?I次方。乘以什麼?乘以Y。∴這邊等於負1的7次方,乘以什麼?乘以Y。∴這邊等於負1的7次方,乘以什麼?負1。∴這裡變什麼?正1。好,差不多了嘛,是不是差不多?同學,你你看哦,是不是又有一個週期開始?對不對?是不是一個週期開始?好,∴這上去變什麼?變8。等一下,等一下,他的週期開始是1、2、3、4,下一個是5、6、7、8,對不對?每4個是一個,那我們做到多少?我們做到多少?有到99嗎?沒有。沒有。只做到什麼?I小於、等於什麼?98。I等於99是不是出來?∴你這樣算,99除以4,取高斯加1,總共幾次?總共幾次?這樣做會幾次?20幾次嘛。對不對?好,我們不要那樣算,不要那樣算,我們怎麼算?4乘以24次,等於多少?96是不是96?對不對?96。那我們從哪裡開始?1開始。∴1,下來是5,對不對?然後注意哦,96,96是不是第24次cycle?對不對?∴到什麼?90…,1到4,5到9,對,5到9,那應該是90…,96,對不對?96。96,這邊是多少?96,93到96嘛,對不對?是不是?93到96,對不對?那下一個是不是97?同學,是不是97?97、98、99,最後是不是做到這裡?∴剛才講的1、負1、負1、1,1、負1、負1、1,1、負1、負1、1,那這個多少?1、負1、負1。不要算了,對不對?好,那注意聽哦,這個做完之後,這個,這個先做,做完之後是不是再加1?好,一樣,我們把他拉開,1、負1、負1,這個做完之後,加1,對不對?然後這個先做,做完之後,加1,對不對?到98了嘛,是不是到98?98還是指小於什麼?99。∴先做完之後,再加1,這邊有沒有小於99?不小於99。是不是停了?停了。請問答案多少?負1嘛。喂!能不能聽得懂在做什麼?聽得懂我在說什麼嗎?聽得懂嗎?開始抓狂了哦,對不對?是不是開始抓狂了?再講一次,再講一次,1,1到4是不是一個cycle,下一次5到什麼?5到8。5到8是不是一個cycle,∴注意聽,1到4,1到4,1到4,應該到,5到什麼?5到8。5到8。咦,哇~,這寫不對,1到4,5到什麼?5到8。1到4,5到8,那這邊96是不是剛好滿?∴96滿的話,這應該多少?93嘛。你看這嘛,這差多少?差3嘛。是不是差3?∴96跟這個差3,是不是93開始?∴下一次,下一次cycle 是不是97開始?97多少?1嘛。97是不是1,再來負1嘛,1、負1、負1,對不對?97先做,做完之後,加1變98,98小於這個,先做,做完之後,加1是不是變99?99是不小於99,是不是停?∴這個值是不是答案是負1?能不能聽得懂?∴負1。答案選誰?答案選,選A。假設你認為說,咦,答案對嗎?那你回去,寫成程式run,聽懂嗎?寫成程式run,這可以寫成程式啊,會不會寫程式?這可以寫程式啊,會寫嗎?寫程式run,寫成basic就可以run,…cut…,他沒有次方哦,C語言沒有次方,那怎麼辦?要用log指數。知道嗎?用log指數。聽得懂我說什麼嗎?聽得懂我說什麼嗎?聽不懂。聽不懂。好,那個,像這個啊,這種東西,對不對?你要怎麼辦?你要怎麼辦?取什麼?取log。Log,log,log對不對?同學,等一下la,不要抄la,這個是不是這樣?3是怎樣?摔下來。那你取log,再取什麼?這個東西。聽懂嗎?聽懂嗎?怎麼會聽不懂?同學怎麼會聽不懂?這個什麼東西?e,3,log,不要寫這個log,寫這個log,對不對?這是2嘛,對不對?看得懂嗎?那這個3可以怎樣?這個3可以這樣。是不是這樣?那這個跟這個怎樣?抵消掉。對不對?啊,你們數學不行la,你們數學不行la,這種最基本的東西ne,好,好,以上純屬虛構,趕快擦掉la,趕快擦掉la,…cut…同學57頁,57頁啊,來,57頁,有沒有57頁,57頁,57頁是不是有一個156題?有沒有57頁156題?有沒有這一題?有沒有這一題?是不是現在講那一題?…聽不懂…歹勢,歹勢,57頁是不是156題?是不是我現在在講這一題?有沒有?答案是什麼?答案是A嘛。對不對?…聽不懂…這一條啊,…聽不懂…這一條啊,是不是一模一樣?同學,都教完了耶,61頁,你不信喔,來…來,等一下,59頁,先看59頁,59頁是不是有一個1佰6拾7題?59頁是不是有1佰6拾7題?有沒有?有沒有1佰6拾7題?有。對不對?1佰6拾7題裡面,有沒有?1佰6拾7題,這一題剛才是不是才講過,答案D,有沒有講過?有沒有?答案D。好,來…來,61頁,來,好,哪一個?1佰5拾6,現在才在說的耶,…失禮…失禮,1佰5拾6啊,1佰5拾6題,答案是B,失禮…失禮,那麼多次了哦,答案是B,答案是B哦,答案是B哦,歹勢,歹勢,然後,59頁喔,…有的沒的…,59頁,59頁,59頁是不是有1佰6拾7題?59頁,1佰6拾7題,1佰6拾7題,這一題答案是D嘛,對不對?剛才才講過嘛,然後再注意,來,61頁,61頁,61頁是不是有1佰7拾7題?有沒有?1佰7拾7題,這一題剛才講過,答案A嘛,對不對?1佰7拾8題是不是也剛剛才講過?答案是C嘛,對不對?這都講過了哦,同學,這是不是都講過了?還有啊,1佰7拾3題,來,你看,1佰7拾3題,一個成功的迴圈控制包括哪3部份?而且缺一不可。答案誰?1佰7拾3題哦,我是不是剛才講有一個初值?初值、終值、增值,有沒有這樣講?∴初值叫什麼?起始。對不對?然後,增值叫什麼?修改。對不對?終值叫什麼?測試。對不對?有沒有?∴這題答案誰?答案C.然後1佰7拾4題,我上課是不是有講過?結構化程式應該少用什麼?goto。有沒有講過?好,然後還不止哦,還不止哦,59,59頁,1佰6拾8題喔,59頁,1佰6拾8題,有沒有找到?下列哪一頁不是結構化程式設計所使用基本邏輯結構?我說只能用3種基本結構,循序、選擇、迴圈,有沒有這樣講?有沒有階層?沒有啊。答案B啊。還有1佰6拾4喔,等一下,1佰6拾4,1佰6拾4題,歹勢,這個好像很醜,對不對?是不是很醜?要注意,他打字打錯了,打到什麼?時鐘。有沒有?有沒有?是不是打到時鐘?有沒有?他本來很醜,然後打時鐘,叫你去看時鐘,昏倒了,…有的沒的…,∴後來不是同學有改過,是不是用1、2、3、4?有沒有?注意聽哦,…有的沒的…,來看那個1佰6拾4題,我今天是不是一開始就講說程式設計有4個步驟?記不記得?程式設計通常包含下列4種工作,第一個是不是叫撰寫程式?第2個是不是叫編譯及測試?第3個是不是設計演算法?第4個是不是決定需求?注意聽哦,這4個工作順序應該是,第一個是不是決定需求?是不是我講的分析?第2個是寫什麼?第2個設計演算法,有沒有?這上禮拜都講過了嘛,再來是撰寫程式,最後一個步驟是編譯跟測試,∴應該是什麼?4、3、1、2。4、3、1、2,答案選誰?C哦。是不是C?喂!這都教完了哦,那黑板這個在講什麼,知道嗎?利用repeat loop設計,來…來,看1佰6拾題,1佰6拾題,1佰6拾題,下列何種迴圈設計方式,不論初始條件如何,該迴圈至少被執行一次?看黑板,來哦,喂!這個,這個要注意哦,至少被執行一次,是不是這條?對不對?這叫什麼?後測。後測叫什麼?事後測試。有沒有找到?事後測試,事後測試,答案選誰?選B。好,那個蓋掉,來,蓋掉,我們看這個怎麼做,來,…cut…步驟我就不寫了la,第一個步驟是不是叫分析?對不對?需求分析,我們就不寫了,需求分析啊,我們不寫,我們寫個”同while loop”,不寫了,這個不寫了,然後,再來,第2個步驟,我們是要畫流程圖,對不對?我們要畫流程圖,畫流程圖,這個或寫演算法,或寫演算法,來,我們看這個要怎麼做來,喂!你不要看這個哦,這個在那個C語言裡面有哦,C語言後測叫什麼?do while。有沒有聽過do while?有沒有?C語言有一個do while ne,沒有關係,沒有關係,你沒有學過C語言,我會重,重新教,你就慢慢聽,到時候我們會講C語言,你就慢慢聽,到時候我會講C語言,慢慢聽,也是一樣,一開始哦,一開始這邊要做初值,sum等於0,I等於1,然後,再來這裡喔,這裡要先處理,這邊sum,等於sum加I,然後這邊喔,I等於I加1,這個先做啊,先做了再說,∴再來判斷,I,大於10,I大於10喔,是,好,是,來,是,我們就這樣離開了,是離開了,這個不是,就往回走,no,好,是呢,我們就印 出來,印出sum,然後這邊就結束掉,…cut…兩個,一個叫sum,一個叫I,∴這個var,主角,一個叫sum,一個叫I,這是integer,∴我們寫第3個啊,第3個叫程式撰寫,程式撰寫就是程式設計,…cut…I等於1,∴sum等於0,那第2件事,I等於1,I等於1,好,等3件事就是開始要迴圈,迴圈叫repeat,repeat,repeat這邊sum,sum等於sum加I,然後,再來I等於I加1,好,這邊until,那你會覺得很奇怪哦,你會覺得很奇怪,為什麼他沒有begin、end?這個不需要有begin、end,∵他本身就是有凹入結構,我們上禮拜是不是講凹入結構?他有凹入結構,∴不要,好,∴這邊不需要加begin、end,可以la,你可以加la,電腦可以,電腦也接受,只是電腦在那邊笑你,明明不要加,你要加,這個不用加begin、end,until,until是I大於10,注意哦,until前面不要加分號,要記得這個原則,until前面不要加分號,∴這裡沒有分號,這裡沒有分號,好,不要C語言學慣了,到處加分號,好,C語言學慣了,就到處會加分號,這個不需要加分號,然後,再來就是印出來,write line,write line,write line呢,這括號,1,加2加3,加到點點點,加到10,好,這邊是sum,好,最後來個end結束掉,喂!這符合上禮拜講的,注意聽,這符合上禮拜講的,這叫什麼?這叫什麼?循序,循序。這叫什麼?迴圈。迴圈是不是凹進去?迴圈,迴圈,那迴圈這,這兩條叫什麼?循序。∴這邊轉啊,轉…轉,轉啊轉,對不對?轉到最後呢?好,出來,然後,再做下來,再離開,結束掉了,…cut…這邊是0,這個是1,那進來,sum加I等於sum,∴sum加I,這裡是1,加起來就是1,那I加1,給I,1加1得2,until大於10,I大於10嗎?沒有。是不是沒有大於10?沒有大於10又回來,回來繼續做,再把他加起來,加起來變成3,然後這個I等於I加1,這裡變什麼?3。有大於10嗎?沒有。對不對?沒有又回來,一直做,做到這邊是45,這邊是10,10有大於10嗎?沒有。是不是沒有?沒有又回來,又把他加起來,∴把他加起來,加起來這邊55,55,這邊加1,加1變11,11大於10了,是不是大於10了?大於10。離開。∴輸出結果是什麼?一樣啊,一樣,輸出結果為,輸出結果為,要注意哦,1加2加3,加到什麼?加到10。等於多少?答案在哪裡?答案在這裡,55。55。那注意,這個line什麼意思?我講過,印完怎樣?印完之後,印完後怎樣?換行。印完後換行,好,這個結束掉了,然後寫個註解,這個註解滿重要的,…cut…,while loop怎麼講?注意聽,while loop怎麼講?我們剛才看到程式怎麼講?while loop是說先判斷,對不對?這個是執行,這個成立,往這邊走,不成立,往這邊走,∴注意聽哦,你注意看這裡,這邊是說成立,是不是離開?成立是不是離開?這邊成立怎樣?進來做。∴兩個剛好怎樣?相反。相反,是不是相反?∴注意聽哦,這個條件,I大於10,那請問這邊條件什麼?I怎樣?小於等於10。對不對?兩個相反。∴注意,這邊的條件就是I小於等於10,經過not之後,not什麼意思?I小於等於10的not,就是等於什麼?I大於10。這叫不嘛,not叫不嘛,不小於等於10,叫什麼?I大於10。這個聽懂嗎?聽懂嗎?他條件,這兩個條件有這個關係,∴這個關係一定剛好怎樣?相反。那我們後面會講深一點,∵我要講布林代數,再講好,萬一這個,這邊的條件是這樣,A大於10,or b小於,那這時候怎麼辦?要昏倒了,要根據什麼?狄莫根定理。狄莫根,狄莫根怎麼說?狄莫根說一長變兩短,然後or變and。這聽到會抓狂對不對?是不是聽到會抓狂?以後再說la,暑假沒有聽過嘛,暑假有先修班嘛,好,這個沒關係,以後再說,∴這個先欠著,我到時候再講那個狄莫根定理,狄莫根布林代數第三章,不是用在硬體,也用在什麼?軟體。我們到時候再講,你先知道這個觀念就好,我現在講第2個,我要講第3個迴圈啊,叫for loop,固定次數,你趕快抄,我等你,…cut…,這是跟剛才啊,這一樣,我們就不講了喔,那這個畫流程圖,這流程圖重點在這裡啊,這固定次數,這剛才講過了,這I大於10會離開?那這邊,I小於等於10,會在這邊轉…轉,然後這邊離開,∴這裡兩個主角,一個主角叫I,一個主角叫sum,好,這是integer,好,那一開始,這個,這應該都沒問題了,好,這邊是sum等於0,在這裡,好,sum等於0,然後這個for loop,I從1到10,1到10,做這個,好,做這個啊,這是一個迴圈哦,喂!這迴圈哦,這只做一件事,∴不需要什麼?begin、end。做了很多事才要begin、end,好,這一件就不要啊,假設這邊做啊,假設這樣啊,for,那這邊做兩件事,這邊一件,這邊一件,這邊叫begin,這邊叫end,兩件事啊,兩件事以上就begin、end,∴轉…轉,好,這個不用追la,這邊1,1,一直做多少?10。一直做到10,那這個,強迫印,印這個東西,要印出答案多少?55嘛。這個不追了哦,好,這個比較容易,但是注意聽哦,這個,這邊是從1到10耶,萬一要像那個東西來做,怎麼辦?你這邊要從1、3、5,做到99怎麼辦?∵他每次隔多少?隔2嘛。你不能亂寫,不能這樣寫啊,喂!step 2,這是basic哦,這不對哦,不能亂寫,∴這時候你要怎麼辦?你要做幾次?1到50,50次。50次啊,∴這邊,你要從這裡開始,1。這邊是2乘以1,2乘1減1,就是1嘛,加1嘛,那下次變2,2乘以2,4,4減1變什麼?變3。這樣看懂嗎?這樣看得懂嗎?那再來,這一樣,這裡3,2乘以3,6,6減1多少?5嘛。這應該沒問題吧,做到最後,50,50這裡啊,50這裡是2乘以50,多少?100。100減1多少?99嘛。你要用這裡變化,用這裡變化,2乘以1,是偶數嘛,減1變什麼?奇數。這應該沒問題吧,用這個變化,重點在這個地方,好,這個應該沒問題,我們進入下一個主題啊,這個我都全部講,結束掉了,這個pascall講完了,…cut…,這個資管一定考這個東西啊,…cu…這裡,這一段裡面啊,有很多觀念,由上而下這個也是一個觀念,…cut…,這邊,模組化程式設計也是一個觀念,那這個,這整段程式也是一個觀念,整體整合測試也是一個觀念,∴這個題目是有很多觀念,把他湊起來的,好,什麼叫結構化程式設計?這個例子很重要,好,等一下,我們先說這個啊,軟體工程,這個軟體就是軟體,軟體就是軟體,為什麼要加兩個工程?喂!這,這要注意哦,哦,這一個,這一個,這一門課是一本書這麼厚,哦,裡面都是很難看,都是文字,都是文字,哦,一堆文字,好,這叫做,這一門課叫做software engineer,我大學讀硬體啊,研究所讀軟體,那我讀的時候,那一年進去,民國72年,這個最紅,這個最紅,…有的沒的…學到最後抓狂,有夠抽象的,相當抽象,軟體是個art,要注意哦,軟體工程是一個art,art是什麼?藝術。什麼叫藝術?他就一個抽象畫,有沒有?亂畫,看不出來,他說美,對不對?像我們的境界只能看到一種…有的沒的…那個抽象化,∴他是一個藝術,藝術,藝術就是說沒有一定的規則可尊循la,好,沒有一定規則可尊循,∴軟體工程是一個art,他不是一個engineer,不是一個工程,喂!工程啊,就有一定的規則可尊循啊,但是,但是要注意,art就很麻煩哦,像那藝術家要畫一個畫,可能要畫很久啊,可能畫,畫一輩子畫不出來,對不對?∴他希望說,這個不要畫那麼久,軟體也是一樣,不要做太久,他希望像工程一樣,要注意,他要跟工程一樣,要做生產管制,什麼叫生產管制?這個軟體假設啊,你常常講你的觀念,說我要做什麼,我要做什麼,可能別人拿去做,做完你就賣不到錢la,∴軟體啊,一定要趕快做,做完就要賣錢啊,∴希望軟體能夠盡早完成,∴做什麼?生產管制。要使軟體盡早完成。還要做品質管制,好,你不能寫個軟體,一堆bug,bug知道吧,一堆錯誤,然後再來改,∴要發展一個好的程式,什麼叫好?喂!什麼叫做好?你不要看這啊,這插,插大考古題ne,何謂good的程式?你不要亂寫哦,好就是不壞,不壞就是好,隨便說說的,什麼叫好?好,好就是第一個正確,一定要正確,然後一定要什麼?結構化。一定要結構化。然後,維護性高,維護性,可讀性高,可讀性,好,維護性跟可讀性,好,還有,還有,要可靠,可靠,可靠性高,就是你不要亂run,run一下就錯掉了,∴要注意,為什麼加兩個字?就是希望他能夠跟工程一樣,能夠做什麼?生產管制。跟什麼?品質管制。∴一堆人寫了一堆文章出來,發表很多的文章,非常多的文章,好,那這,這裡面,這個題目就是把很多文章組合起來,像說什麼叫結構化程式設計?就是把程式由上而下,top down,分解成多數個具有獨立功能的模組,注意聽,這個就是什麼東西?我記得那時候有講過,我說有一個成績處理系統,記不記得?記不記得?成績處理系統,有沒有?成績處理系統,我說你要做一個成績處理系統,一定要有一個什麼?主程式。∴這是一個成績處理系統的程式,好,成績系統,這個成績處理系統呢,底下有3個,一個叫input、process、output。記不記得有畫過這個圖?我說這個輸入一定要有什麼?輸入要什麼?輸入科目,科目名稱,不只la,我說科目名稱以外,還有什麼?學分la。食宿la,記不記得?那這個呢?輸入各科成績。好,國文幾分,英文幾分la,數學幾分la,好,那處理怎麼處理?這要求總分,求總分,然後平均,求總分,跟平均,那這邊一定要做什麼事?排名次。∴排名次。那成績單會掉,對不對?成績單會掉,∴要做什麼?要去搜尋。是不是都講過?對不對?好,那注意,輸出做什麼?輸出表頭。輸出表頭。然後這邊呢?各科成績。各科成績。然後最後做什麼?表尾。好,要印表尾。∴注意聽哦,我們這,這邊沒有錯,由上而下,對不對?由上而下。∴這邊講了,由上而下,這是第一個觀念,分解成多數個具有獨立功能的模組,沒有錯,這種一塊一塊,這種一塊就是什麼?模組。模組就是什麼?模組就是什麼東西?就是副程式。就是副程式。他就是副程式。∴注意哦,模組在使用程式,模組化程式設計,什麼意思?像這個要注意,這個模組,注意聽,這個模組,還可以再細分,就細分,對不對?再細分,∴模組能細分則細分,這叫模組化程式設計,第二個觀念哦,,剛才第一個觀念在這裡,第2個觀念在這裡,模組能細分再細分,直到基本功能為止,∴我記得講過,那個模組是不是只能做一件事情,記不記得?像sin,跟什麼?co sin。這種東西,對不對?好,模組之間,注意,這個是必考東西,模組之間,耦合力,這是不是講過?越弱越好。弱、好。這考古題哦,內聚力,內部聚集力量,這也講過了,,要怎樣?越強越好。這都講過了,使每個模組的功能單元自成一段程式,怎麼變成一段程式?記得,我們今天講的,在講這個東西,3種基本結構,記不記得?循序、選擇、迴圈。今天是不是講迴圈?對不對?上次講什麼?循序跟什麼?選擇。今天講迴圈,還有,畫流程圖,記得,一定是一入口,一出口,還有記得要少用什麼?goto。然後把程式寫出來,自成一段程式,最後再做整體整合測試,什麼叫做整體整合測試?我記得講過,這個寫完之後,要測,這個寫完久後,要測,測完之後,這邊呼叫他,是不是要測?這個寫完之後,要測,測完之後,從這邊呼叫他,是不是再測?對不對?這個寫完之後,要測,測完之後,是這呼叫他,再呼叫他,是不是要測?對不對?通通寫完之後,要全部測一次?這個寫完,叫什麼測?模組測試。通通寫完,叫什麼測?整體測試。那測完之後,再拿給客戶測,是接收測試,在學校是拿給什麼?老師測。都沒問題之後,是不是舊的系統跟新的系統一起跑?記不記得講過?假都沒問題的時候,再把這個舊系統怎樣?收起來。新系統是不是掛上去run?好,∴要4種,模組測試、整體測試、接收測試、平行作業。下禮拜會考哦,這個、這個、這個、這個,∴這種叫做整合測試的一種程式設計方法,∴我剛才講,第一個觀念叫由上而下,第2個觀念叫模組化,第3個觀念叫自成一段程式,第4個觀念叫整體整合測試,要有這4個觀念才叫什麼?結構化程式。好,你要註解什麼,趕快註解,然後,注意哦,這邊更是重要,這,這邊會考複選題,好,那這邊會考單選題,我們現在考大部份都單選題,∴這邊是重點,好,這邊重點,…cut…,好,結構化程式設計優點,程式容易閱讀跟了解,為什麼?為什麼?要注意聽,∵我們少用什麼?少用goto。當然很容易了解,那注意聽哦,減少程式維護成本,為什麼?∵少用goto是不是容易看?容易閱讀,容易維護,對不對?∴因為這樣啊,那注意聽哦,為什麼會減少程式邏輯錯誤?你再看這個觀念哦,為什麼會減少程式邏輯錯誤?∵我們程式是不是變得很小?這個模組是不是都很小?真正模組,注意聽哦,真正模組,頂多頂多60行,頂多60行,∵你一張報表紙幾,幾行?知不知道?一張報表紙,你家的報表紙,這樣印…印,那一張哦,那一張可以印幾行?知道嗎?最多是66行。66行,∴你模組,最好是寫在66行之內,你不可以一個模組這麼長,太難看了,一個模組要切成這樣,∴模組很短,∴模組很短哦,要注意哦,這個模組程式較小,要注意,模組程式較小,不容易寫錯,不容易寫錯,要注意哦,不容易寫錯,容易造成什麼錯,知道嗎?知道不知道?容易造成參數傳遞錯誤。容易造成參數傳遞錯誤,參數傳遞錯誤,傳遞,好,傳遞錯誤,這邊我寫在這裡哦,錯誤,我寫在這裡哦,這個模組啊,模組比較小,不容易寫錯,容易造成參數傳遞錯誤,就像那個pascal,有var跟沒有var,是不是差很多?對不對?少寫個var,就完蛋了,好,那第3點什麼意思?你抄一抄,我擦掉,我再註解第3點,∵這…cut…團隊精神,發揮團隊精神,發揮團隊精神,分工合作,好,分工合作,好,使軟體盡早完成,使軟體,盡早完成,盡早完成,好,這一段話什麼意思啊,要等一下來,我先說一下啊,這一段話什麼意思啊,∵這個啊,你在學校應該做過專題吧,這一個人做,這一個人做,這是一個人做,今天假設一個人做要做半年,請3個人做多久?做多久?在台灣一定還是半年,對不對?為什麼?∵做一做,竟然這個整合不起來,聽懂嗎?你做你的,我做我的,結果整合不起來,∴又重來,台灣就是這樣,很糟糕,∴一個人半年,3個人,理論上是要多久?兩個月。∵3個人一起做嘛,是不是兩個月就完成?∴要注意,這樣分工合作,可以使軟體怎樣?盡早完成。可以使軟體盡早完成。好,優點講得太多了,但是有沒有缺點?有啊。結構化程式,程式會比較長,程式比較長,當然執行所需怎樣?比較長。那注意,這個缺點要參考下一個例子,我會講下一個例子,你先抄哦,然後等一下把講義拿出來,我再…cut…145,56頁的145,56頁145,下列何者不是結構化程式的目的?有沒有找到?使程式變小,對嗎?不會哦,喂!不會哦。他會使程式變什麼?變長。變長。變長就是變大哦,∴這題答案是A。 然後,146題,146題,程式設計使用函數,使用函數就是function的理由是什麼?函數是不是就副程式?副程式是不是模組?∴他一定是增加程式的可讀性跟什麼?可維護性。但是會增加程式的執行速度嗎?不會。喂!我剛才講的,副程式就是什麼?結構化程式設計嘛。模組設計是不是結構化程式設計?他會使得程式變成什麼?較長。那既然較長速度會快嗎?不會快。還有一個觀念,副程式需要push pop什麼?return adderss。聽懂嗎?他一定要push pop return address。這個我們後面會講,∴這答案是B。答案是B。好,149題,這個講過了,黑板上這邊也有,結構化程式只有3種基本結構,記不記得?答案是B。 150題,循序、決定、迴圈,沒有遞迴,答案是D。 151題,while loop跟repeat loop,後者會至少執行一次,答案是B。151題,答案是B。 還有,153題,在程式設計中,若漫無限制用goto,會怎麼樣?goto會程式不容易什麼?除錯。答案是B。好,答案是B。不結構化就是不容易除錯。 154題,下列何者不適用於結構化程式設計那個反覆,反覆裡面,我們今天不是講,反覆有3種嘛,while loop、repeat loop,還有什麼?for loop。沒有if then else,答案A,沒有if then else,答案A。 好,再看55題,好,對不起,55頁,55頁的143題,下列何者不是程式的技巧?A,由上而下,我剛剛講過嘛,有沒有?由上而下,對啊。B呢?模組化設計,沒有錯啊,C是逐步改良,逐步改良是不是一層一層寫下來?沒有錯。D呢?物件導向。是不是最新的?請問有沒有聽過E?有沒有交換性程式?沒有。哪有交換性程式?只有聽過交換性什麼?電源。Switch power,有沒有聽過Switch power
相簿設定
標籤設定
相簿狀態