2013年7月16日 星期二

程式語言入門知識

其實一直都對教導別人學習程式感到很有自信與興趣,雖說不上是專家,也靠這行飯溫飽了好幾年,將來如果有機會還想教開班授課,替國家催生一些人才XD,就在這先試試看我的刷子到底夠不夠毛。


要一瞬間醍醐灌頂似的讓沒有概念的人能夠進入狀況實在不容易,坊間的書雖然很有用但篇幅都太長,重點不好抓,往往越看越想分手,再說看懂的也比不上弄懂的扎實...(恕刪)...總之我希望各位在學習前都能立下一個目標,有點抱負再進到學習的領域才能事半功倍。


要學會寫程式之前最好先能看懂、拆解程式,弄清楚程式執行的流程,吸收的才會快,但也絕對不要把程式當成英文學,不需要背什麼東西,請用腦子記,用反覆的觀察與練習去記去熟悉遊戲規則。以下我用簡短的敘述解釋一些常會看到的名詞,各位一時可能無法理解或吸收,但先放在心裡,隨著相關知識的增長慢慢就能勾勒出全貌了。


什麼叫註解?在程式裡註解就是一段文字說明,給人看的,寫什麼都可以,不會被電腦執行。又分為單行註解(兩撇斜線)與多行註解(斜線星星),之後很多地方我都會用註解加以說明程式的內容。
//這是單行註解

/*
 也可以用多行的註解
 1....
 2....
*/


電腦看得懂程式碼嗎?電腦看不懂的,程式碼是給人看的,電腦只看得懂機械碼,所以為了讓電腦懂我們的語言,中間必須有個翻譯,這個翻譯就叫"編譯器",所以我們跟編譯器間必須有共通的語言,就是程式語言。


什麼叫宣告(declare)?照字面的意思有點像是'告訴大家一些事',在程式裡指的就是'告訴編譯器一些事',廣義的說,例如我跟編譯器說有種車子,這車是黑色的有四個輪子,還會說話!叫"霹靂車"...先跟編譯器溝通好,之後你跟他說來一台霹靂車他就知道你要什麼了。


什麼叫物件導向?物件導向可以說是一種構思的方式,將思考模式轉換為物件內與物件間的關聯,將有形、無形的事物、事件或功能等都依觀點分門別類構成有意義的物件。描述一個物件需要詳細到什麼地步,則是看具體的需求到什麼程度。


什麼叫類別(class)?類別就像是一個模具,描述一群功能或特徵的集合體。下面的程式碼就是在描述那台會說話的車子。
public class Car
{
 int wheel = 4;
 Color color = Color.black;

 public void speak()
 {
 }
}


什麼叫物件(object)?物件是一個被實體化的模具,一個車子的模具可以開嗎?不行~模具必須實體化後才能被操作,才是真實的存在。
Car my_car;
my_car = new Car();
my_car.speak();


什麼叫實體(instance)?把類別實體化後就會產生一個實體,其實就是一個物件,不要太在意怎麼稱呼它。會用實體來形容物件的時候通常都是想強調這個物件在電腦的記憶體中佔有空間的概念。


什麼叫函數(method、function)?函數有點像是一個提供功能的黑盒子,你給它特定的輸入,它就會有相對的輸出,例如像是一台果汁機,你給它蘋果,它就可以輸出蘋果汁,通常我們只要會用就好了,就像只要知道果汁機怎麼操作,無法探究它怎麼做到的,因為這是它的商業機密。
一個函數也許是由上百個動作組合而成,但我們只要一個呼叫就能享用到它的功能,也有一些模組化的概念在裡面,函數設計的適當也可以減少很多重複的程式碼,增加程式的可讀性。
//你給的數字a、b就這個函數的輸入,它回傳(return)給你的答案就是輸出.
public int add(int a, int b)
{
 return a+b;
}


什麼叫變數(field、variable)?變數就像是一個有名字的標籤,方便寫程式的時候可以辨別。有時候標籤上寫的就是資料本身,有的時候標籤上寫的只是資料的地址,視變數的型態而定,原生型態屬於前者,非原生型態(類別)屬於後者。如果聽不懂也沒關係,通常我們只要知道透過變數可以存取到需要的資料即可。
Car my_car;
my_car = new Car();
my_car.color = Color.black;

my_car = new Car();
my_car.color = Color.white;


什麼叫型態(data type)?舉凡是變數都有型態,用來指定變數的特性,例如要做加減乘除的要宣告數字型態的變數。
Car car;
int a = 1;
int b = 2;
int c = a + b;


什麼叫原生型態(primitive data type)?原生型態就是組成類別的最小資料單位,通常用來存放數字、字元、位元組這一類實質的資料數據,而類別自然就不屬於原生型態了。
byte b;
short s;
int i = 5;
long l;
float f;
double d;


什麼是邏輯運算?學校都學過算術運算就是加減乘除,邏輯運算更簡單,日常生活口語上都會用到。邏輯運算的結果只有兩個,就是邏輯真(True)跟邏輯假(False),條件(假設)成立即為真,否則就是假,那邏輯運算又是怎麼回事?其實就是"或(OR)"、"且(AND)",舉個例子,我跟你都是男生,是真是假?我或你之中有一個是男生,是真是假?...這也稱得上是運算?當然!包含大於小於等於也是邏輯運算,5大於3是真是假。邏輯運算是流程控制的主角,程式要轉彎還得靠它!。
if (a == 3 && b == 5)
 dbg.print("算對了");
else
 dbg.print("算錯了");


為什麼程式語言需要這些東西? 試著想看看...如果要你在紙上把動物園裡所有動物的名字與特徵都紀錄起來,還要能隨時快速的取得一些特徵的平均數據,例如動物的平均年齡,趾頭的數目等等,你要怎麼做?你需要什麼?你會把什麼寫在紙上?...過程應該不外乎數據資料的結構化(表格)跟運算吧?這其實就可以算是程式語言最原始的型式了,只是需要更進一步的將資料數位化,將運算電腦化。程式語言不外乎就是解決數據跟數學問題,一通百通,遊戲規則掌握住就八九不離十了!

1 則留言:

  1. 您好 ! 我有下載 ! 但是 不會看+不會用 ! 抱歉~ 我很笨!
    我很想學~ 拜託您教我一下!!!!!
    還是哪裡有詳細的教學?
    萬分感謝!!!!

    回覆刪除

本人僅以個人知識經驗分享,多所無知,難免有錯,還請見諒。