《我的第一本程式設計書》第三章 迴圈,讓程式變短
第三章 迴圈,讓程式變短
1.如果畫一個4*4的方塊,需要如下程式碼:
儲存區[60000]->999999
儲存區[60001]->999999
儲存區[60002]->999999
儲存區[60003]->999999
儲存區[60100]->999999
儲存區[60101]->999999
儲存區[60102]->999999
儲存區[60103]->999999
儲存區[60200]->999999
儲存區[60201]->999999
儲存區[60202]->999999
儲存區[60203]->999999
儲存區[60300]->999999
儲存區[60301]->999999
儲存區[60302]->999999
儲存區[60303]->999999
顯然如此大幅度重複會很累,所以就需要減少程式碼量,因而就涉及到了迴圈。
2.迴圈的使用方法
只要 0 < 1
儲存區[60303]->999999
只要:程式碼令。 0<1:判斷語句。 儲存區[60303]->999999:執行的內容,這只是一個案例。
3.判斷語句
由於判斷語句一般不是固定數字,是需要變化的,所以就有了變數。
1)就像數學中的y=x+1這樣,程式設計也經常使用:
只要 x<1
但這裡的變數沒有“x”這樣的定義,所以就只能使用“儲存區[數字]”的方式代替。
只要 儲存區[60000] < 1
但可惜“儲存區[60000]”到“儲存區[69999]”這部分地址被顯示器佔用,也就是用來顯示螢幕上的點,所以就換成其他的儲存區地址。
如
只要 儲存區[0]<1
其實只要不在那個區間的任何編號都行,但也不能超出最大地址的限定,所以一般都推選使用前面的地址。
4.一次完整的迴圈
儲存區[0]->0
只要 儲存區[0]<1
{希望迴圈的內容}
儲存區[0]->1
上述的解釋是:先給儲存區[0]賦值一個數,然後在進行比較和迴圈,然後執行要迴圈的內容,最後給儲存區[0]重新賦值。
由於重新賦值一個固定的數是沒法多次迴圈或停止迴圈的,所以就引入了一種計算:
儲存區[0]->儲存區[0]+1
每迴圈一次,給自身加一,從而當滿足判斷條件後,停止迴圈。
如:迴圈5次後結束
儲存區[0]->0
只要 儲存區[0]<5
{程式碼塊}
儲存區[0]->儲存區[0]+1
5.接下來是如何使用迴圈,繪製一個5畫素的橫
儲存區[0]->0
儲存區[1]->60000
只要 儲存區[0]<5
儲存區[儲存區[1]]->999999
儲存區[1]->儲存區[1]+1
儲存區[0]->儲存區[0]+1
由於畫素地址不變,那麼無論迴圈多少次也不會出現第二個畫素點,因而也得把畫素地址也換成變數。
儲存區[儲存區[1]]->999999
而儲存區[1]也就成了一個變數名,裡面賦值了一個60000,也就是顯示器的第一行第一個畫素點地址。
儲存區[1]->儲存區[1]+1
然後“儲存區[1]->儲存區[1]+1”和“儲存區[0]->儲存區[0]+1”,也就是在原來的數值之上加1,即所謂的自增1.
6.優化程式碼,不浪費儲存區。(哎!我就想不到啊!)
儲存區[0]->0
只要 儲存區[0]<5
儲存區[60000+儲存區[0]]->999999
儲存區[0]->儲存區[0]+1
思路就是,上邊的“儲存區[1]”和“儲存區[0]”之間就差一個“60000”常量,所以將其提取出來,複用一個變數就好。
6.繪製一個4*4的方塊
1)笨辦法是:
儲存區[0]->0
只要 儲存區[0]<4
儲存區[60000+儲存區[0]]->999999 //注意60000
儲存區[0]->儲存區[0]+1
儲存區[0]->0
只要 儲存區[0]<4
儲存區[60100+儲存區[0]]->999999 //注意60100
儲存區[0]->儲存區[0]+1
儲存區[0]->0
只要 儲存區[0]<4
儲存區[60200+儲存區[0]]->999999 //注意60200
儲存區[0]->儲存區[0]+1
儲存區[0]->0
只要 儲存區[0]<4
儲存區[60300+儲存區[0]]->999999 //注意60300
儲存區[0]->儲存區[0]+1
就是在第一行60000迴圈一次,輸出四個畫素點,第二行60100迴圈一次,輸出四個畫素點,第三行60200迴圈一次,輸出四個畫素點,第四行60300迴圈一次,輸出四個畫素點。
綜合起來,就是一個4*4的方塊畫素點。
2)優化後的程式碼
儲存區[0]->0
只要 儲存區[0]<4
儲存區[1]->0
只要 儲存區[1]<4
儲存區[60000+儲存區[1]+(儲存區[0]*100)]->999999 //括號很重要
儲存區[1]->儲存區[1]+1
儲存區[0]->儲存區[0]+1
由於4*4畫素的方塊是橫豎都是4,所以就需要兩個迴圈來確保“橫”和“豎”的迴圈。
代表橫向迴圈的:
儲存區[1]->0
只要 儲存區[1]<4
儲存區[60000+儲存區[1]]->999999
儲存區[1]->儲存區[1]+1
然後再把這橫向迴圈4行!
儲存區[0]->0
只要 儲存區[0]<4
{迴圈一行的程式碼}
儲存區[0]->儲存區[0]+1
又因為每一行進位是100,
即第一行的第一個畫素點是60000
第二行的第一個畫素點是60100
第三行的第一個畫素點是60200
……
第n行的第一個畫素點是60000+(n-1)*100
所以也就在最終執行的程式碼就是:
儲存區[60000+(儲存區[0]*100)+儲存區[1]]->999999
“(儲存區[0]*100)”代表的是每一行
“儲存區[1]”代表的是一行中的幾個畫素點
書上的總結:
1.程式執行時的替換
儲存區可以被替換成它所儲存的數字,還可以計算。
(也就是給儲存區賦值,並進行加1)
2.書寫算式的方法。
加法和減法
(也就是加減乘除的運算)
3.迴圈的使用方法。
根本在於儲存區表示迴圈過的次數。
(將儲存區作為變數,進行賦值自增自減)
4.算式中使用()來改變計算順序。
沒有括號時無論是加法還是乘法都從左開始計算。
(就像數學計算那樣)
5.沒有按照預期執行怎麼辦? (重新捋順程式碼,檢視那裡有書寫錯誤,並且還要思考邏輯的準確性。)
6.使用迴圈有助於提高修改效率。 (最起碼不用一行一行的重複書寫。)
相關文章
- 《我的第一本程式設計書》第六章 會動的程式,讓方塊下落程式設計
- 程式設計師的副業:我的第一本書出版啦!程式設計師
- 《我的第一本程式設計書》第四章 程式的變形,繪製大量的方塊程式設計
- 迴圈結構程式設計程式設計
- 《我的第一本程式設計書》第八章 可以操作的程式,操作方塊程式設計
- 程式設計師的副業:2021年初,寫完了我的第一本書程式設計師
- 怎樣用 Bash 程式設計:迴圈程式設計
- 3.迴圈結構程式設計程式設計
- 風變程式設計讓我的職場選擇更加自由程式設計
- 讓程式設計迴歸原始的意義!程式設計
- 《我的第一本程式設計書》第七章 為儲存區起名,更多的中文程式設計
- 83天!風變程式設計讓我成為了更好的自己程式設計
- Java語言程式設計—迴圈語句Java程式設計
- 04 shell程式設計之迴圈語句程式設計
- 迴圈結構程式設計之習題程式設計
- 風變程式設計,讓程式設計學習更簡單!程式設計
- 替代 for 迴圈,讓 Python 程式碼更 pythonic !Python
- 《我的第一本程式設計書》第五章 將程式分離,更輕鬆地繪製大量的方塊程式設計
- 程式設計靠天分?不!我學程式設計靠風變程式設計
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- 《我的第一本程式設計書》第一章 第二章繪製方塊程式設計
- 迴圈結構程式設計 實驗題目程式設計
- CodeMonkey少兒程式設計第6章 for迴圈程式設計
- 非同步程式設計之事件迴圈機制非同步程式設計事件
- 我的風變程式設計“升級”之旅程式設計
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- 多虧風變程式設計,讓我找到了人生轉折點!程式設計
- 學習風變程式設計,讓我的人生多了一個可能!程式設計
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 生活不只有工作——感謝風變程式設計讓我的生活更精彩程式設計
- 風變程式設計,讓我的有了不一樣的人生風景程式設計
- 彙編實驗小記(五)-迴圈程式設計程式設計
- 非同步程式設計 101:寫一個事件迴圈非同步程式設計事件
- CodeMonkey少兒程式設計第3章 times迴圈程式設計
- 人人都能學會的python程式設計教程5:迴圈 2Python程式設計
- 好程式設計師分享迴圈內的回撥函式程式設計師函式
- 風變,我的程式設計啟蒙老師程式設計
- 如何讓程式設計師變得沒朋友程式設計師