【編程思想與基礎】基於循環的遞增、遞減

【編程思想與基礎】基於循環的遞增、遞減

來自專欄玩轉VEX IQ機器人

5/19 RobotC編程課筆記

回顧顯示電池電量的程序:

(保留1位小數)

task main(){ while(1){ displayTextLine(0,"Voltage=%.1fV",(float)nImmediateBatteryLevel/1000.0); }}

也可以在displayTextLine()函數外,先完成計算過程:

task main(){ float v; while(1){ v=(float)nImmediateBatteryLevel/1000.0; displayTextLine(0,"Voltage=%.1fV",v); }}

課堂活動1:使用for循環、while循環,產生遞增、遞減

「0→59秒」計時

task main(){ while(1){ for(int i=0;i<60;i++){ displayCenteredBigTextLine(2,"%d",i); delay(1000); } }}

「59秒→0秒」倒計時

方法1:

task main(){ while(1){. for(int i=59;i>=0;i--){ displayCenteredBigTextLine(2,"%d",i); delay(1000); } }}

方法2:

(excel列表格發現規律,一次函數思想)

task main(){ while(1){ for(int i=0;i<60;i++){ displayCenteredBigTextLine(2,"%d",59-i); delay(1000); } }}

將「計時」和「倒計時」放在同一行內顯示:

task main(){ while(1){ for(int i=0;i<60;i++){ displayCenteredBigTextLine(2,"%d %d",i,59-i); delay(1000); } }}

方法3:

「for循環」遷移至「while循環」的實現方法

task main(){ int i=0; while(1){ displayCenteredBigTextLine(2,"%d %d",i,29-i); delay(1000);//循環計數變數i的自增與歸零 i++; if(i>=60){i=0;} }}

課堂活動2:以「mm:ss」的格式顯示時間

task main(){ long i=0; int m=0,s=0; while(1){//Part 1 「商與餘數」演算法,計算「秒」和「分」 s=i%60; m=(i/60)%60;//Part 2 「mm:ss」的格式的條件判斷與修正 if(m>=10 && s>=10){displayCenteredBigTextLine(2,"%d:%d",m,s);} if(m<10 && s>=10){displayCenteredBigTextLine(2,"0%d:%d",m,s);} if(m>=10 && s<10){displayCenteredBigTextLine(2,"%d:0%d",m,s);} if(m<10 && s<10){displayCenteredBigTextLine(2,"0%d:0%d",m,s);}//Part 3 計數變數的自增與快慢 i++; delay(1000); }}

說明:

(1)「進位制」從本質上來說,就是一種「數字的循環」。而這種循環,是通過「商與餘數」演算法產生的。

(2)「分」和「秒」都是60進位數。

(3)「秒」是計數變數i除以60的餘數;「分」是計數變數除以60的商,再除以60的「餘數」,這樣才能保證「分」也是60進位,因為除以60的餘數,才是在0~59的範圍內「循環」的。

課後作業:加入小時,以「hh:mm:ss」的格式顯示時間

提示:

「小時」是幾進位的?如果從最終的數字結果來看,它是12進位或24進位的。但如果從循環計數變數i或者從「秒」的視角來看,它卻是3600進位的。是否已經想到怎麼做最方便了呢?方法不唯一。

推薦閱讀:

python多線程之從Thread類繼承
家裡沒人怎麼防火防盜?裝上這段自動看家程序
Python並發編程之從生成器使用入門協程(七)
惟江上之清風,與山間錕斤銬。
抽象能力決定編程能力

TAG:編程 | VEX機器人 | 機器人教育 |