2016年8月7日 星期日

Arduino的語法入門:變數與函數

  這是一個有點意外的狀況,一同在學mBlock的同學,有一天,發現他的變數不能用,也不能新增指令。這就讓我想早一些,讓孩子們開始使用Arduino IDE。原因是,mBlock雖說是使用Scratch,對很多小朋友來說相對是熟悉易學;但是,一旦程式開始複雜一些,Scratch還是不如使用C語言來得好用。
  簡單的說,Scratch(mBlock)是易學難強大;C(Arduino)是需要入門檻,但是,上了手就會是很強大的程式語言。

  開始解說Arduino上的語法時,才發現我是面對一群C語言基礎是零的孩子。所以,什麼時候要用分號,大刮號,小刮號,講了半天,他們只能照打,還是沒聽懂。這時才想起,我國中時開始學習BASIC,也是去買了本書,一頁一頁的學了很久。然後,在電腦上印出
*
**
***
**
*
我就開心了好久。覺得自己是世界上最偉大的工程師了。

  我相信,有師父引進門,應該是可以快一點進到較有趣的程式言語世界。今天就先來C語言程式的第一課,語法:函數與變數。

====== 變數篇 =======
C語言的變數,數一數不多。類型與宣告方式,可以參考別人的寫法。
http://www.csie.ntu.edu.tw/~b98902112/cpp_and_algo/cpp/variable_type_and_declare.html
http://programming.im.ncnu.edu.tw/Chapter5.htm

  但是,對初學者來說,先學會int就可以了。
int代表的是整數(integer),可以是正數,也可以是負數。
在程式裏,寫法是:
int XYZ;
代表,程式裏看到XYZ就是一個整數的變數,也請記得在一行程式的結尾,要加上分號(;)
只要宣告了,我們就可在程式裏,指定XYZ是任何的數字。寫法是:

XYZ=10;
XYZ=-8;

====== 函數篇 =======
  打開Arduino IDE,最最最基本的程式,就是
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

這兩段程式,第一段setup是一開始的設定;第二段loop是指程式在裏面會重覆來回不停的跑。
這兩段程式,共同的程式語法就是
void 函數名稱(){
  // 註解
}

加了底色,希望可以比較容易了解。
紅色的是註解。也就是,只要是跟在兩個斜線//後的,就是註解。
註解是寫給看程式的人,下次回來看時,比較容易理解程式的。不是給電腦看的。
所以,只要是兩個斜線後面,高興打什麼字,就打什麼字。
另一個註解的寫法是
/*
  這一段話是註解,隨便我怎麼打。
要打幾行都可以喔。
*/

藍色的是函數名稱,大小寫的英文字母及數字都可以用,而且,大小寫是不相同的。至於符號,個人是建議先不要用。要去記什麼符號可以,什麼符號不能用,是很痛苦的。不如,用到時就知道了。
函數名稱,雖然是隨便取,但是,如果取得好,下次要用到時,就會容易用些。
所以,常常我會用 LED1On(),LED2Off(),這樣一看就知道是在做什麼的函數。

  函數名稱後面,那兩個小括號,其實,代表的是函數的輸入。
比如說,如果有3個LED燈,我去寫三個函數,分別為LED1On(), LED2On(), LED3On(),
我可能就會把這三個合成一個LEDOn()的函數,然後,在輸入的地方有輸入的數字。
就可以用LEDOn(1), LEDOn(2), LEDOn(3),來代表打開不同的LED。
只是,這樣就要將函數寫成這樣

void LEDOn(int LEDNum){
}

  小刮號裏面,就不再是空空的了。

另外一個要認識的字就是void,代表的就是「沒東西啦」。
可能有人會想說,沒東西就不要寫嘛。偏偏電腦不聰明,有東西或是沒東西,一定要說清楚。不然,電腦不會做事的。

  橘色代表的是函數的輸出。也就是函數的結果。
比如說,有一個函數,不管輸入多少,他就會輸出2倍數。
好像只要給媽媽一個吻,媽媽就會吻你兩下一樣。
打你姐姐一下,姐姐就會回打兩下一樣。
這個函數的寫法就是:

int Multi2(int XX){  // 名稱是Multi2,輸入是整數,輸出也是整數。
  return(XX*2);  // 輸出值要放在return()的刮號裏面。
}

C語言的基礎語法,其實還蠻多的。只是,因個人用久了,也就不覺得那是語法。如同學說話一樣,就是多說,就會自然說對了。比如說,空格。C語言裏的空格,就是用來分開前後的,跟英文拼音一樣;而且,沒人規定要空幾格。這也跟英文拼字一樣。只要有空格就好,空幾格,通常是為了美觀才會有不同的空格數的。