21.06.09

老艾的程式設計講座(3)

Post in 程式設計 at 13:30 :: 點閱次數 (272)

這次的主題是OO(物件導向)
專有名詞很難懂?沒關係,因為我也不是很懂
名詞不懂不重要,重點是要知道怎麼用

在OO的世界裡面,每個東西都是一個"物件"
每個物件有自己的子物件跟參數
假設我們要設計一個人物好了
人有頭,身體,手腳這幾個物件
所以用程式的寫法就是
class Human
{
int age;
string name;
float height;
float weight;

Head head;
Hand left_hand;
Band right_hand;
Body body;
Leg left_leg;
Leg right_leg;
}
age(年齡)name(姓名)height(身高)weight(體重)是這個人的參數
然後Head(頭),Hand(手),Body(身體)以及Leg(腳)則又是不同的物件

以Head這個物件來作例子好了
class Head
{
Eye left_eye;
Eye right_eye;
Nose nose;
... 以下省略 ...
}
如此一來,各種不同的物件所組成的一個程式就是所謂的物件導向寫法的程式

OO有什麼好處呢?
乍看之下好像是把簡單的事情複雜化
事實上如果OO用的好,可以把程式變得很容易修改
假設我們要作一個簡單計算機好了
有按鈕0~9,+-*/=共15個按鍵

用一般非OO的寫法的話
if (button1_pressed)//如果按下1
{
print 1;//顯示1
}
else if (button2_pressed)//如果按下2
{
print 2;//顯示2
}
... 以下省略 ...
因為我們要作10個數字按鈕,所以上面類似的程式碼會重複10次

如果是用OO的作法的話:
//按鈕物件
class Button
{
//按鈕號碼
int number;

//創建按鈕的基本參數
Button(int i)
{
number = i;
}

//當按鈕按下
void pressed()
{
print number;
}
}
//創立各個按鈕
Button button1 = Button(1);
Button button2 = Button(2);
... 以下省略 ...
當按鈕被按下的話,便會呼叫pressed這個funciton,並且執行裡面的內容

你可能會說,上面那個比下面這個簡單多了不是嗎
的確,第一個作法簡單很多,但是多了許多重複性
而重複性就是造成程式錯誤的主要原因
假設我們現在要改變一下這個計算機
當我們按下一個數字之後他會自動x5
那麼我們就要重新修改第一個程式:

if (button1_pressed)//如果按下1
{
print 1*5;//顯示5
}
else if (button2_pressed)//如果按下2
{
print 2*5;//顯示10
}
... 以下省略 ...
同樣的修改要作10次,而且這還是只有10個數字按鈕的計算機
要是有50個,或者100個按鈕,我們就要修改更多次
越多次的人為修改,出錯的機率就越高

那麼如果是OO要怎麼辦呢?
void pressed()
{
print number*5;
}
就這麼簡單,只要修改一行
不管是有100個按鈕還是1000個按鈕,永遠都只要修改一行的程式碼
這還只是OO的其中一個優點:容易維修
除了容易維修之外,OO還讓程式的重複使用性提高
在這邊我只是稍微說個大概而已
如果開始對OO有興趣的話,可以去網路上找找相關的教學
畢竟OO的好處有很多,不是三言兩語就能解釋清楚的

那麼,有機會的話看看能不能出個講座4吧
雖然可能性很低就是了
畢竟基礎的東西大概到這邊就說完了
剩下的就是不斷的練習以及不斷的練習
我目前也還是需要更多的練習阿

04.02.09

老艾的程式設計講座(2)

Post in 程式設計 at 20:28 :: 點閱次數 (236)

各位幾天不見,有沒有好好的練習基本的程式設計啊?
這次要講的東西是變數(variable)跟程式(funciton)
變數是什麼呢?就是可以隨便改變的數字

在這裡先利用一下上次的例子:
if (money >= 3600){ buyDVD(); }
else { watchTV(); }

在這裡面的money就是所謂的變數。
假設我有3600圓好了,以程式設計的寫法就是:
money = 3600

要是我花了600圓去買DVD,那要怎麼寫呢?
money = money - 600
我的錢 = 我的錢 花掉 六百元
要是覺得這樣太麻煩也可以這樣寫
money -= 600
錢扣掉六百元

如何,簡單吧?變數就是這麼簡單的東西。
當然你也可以用house(房子)或者car(車)或者dog(狗)等等之類的東西來當作變數。

那麼接下來是稍微困難一點的東西:
馬路旁邊有五棵樹,每棵樹上有五個蘋果,每個蘋果裡面有三隻蟲。請問總共有多少蟲?
以程式設計的寫法來說的話:
trees = 5
apples = 5
bugs = 3
total_Bugs = trees * apples * bugs

如何,看得懂嗎?
這個符號 * 在程式設計裡面代表"乘"的意思
上面那一串東西就是說
總共的蟲(total_Bugs) = 樹木的數量(trees) * 每顆樹上的蘋果的數量(apples) * 每顆蘋果上的蟲的數量(bugs)
到這裡都能理解嗎?那麼我們在往下面進行囉。

說到程式設計,當然少不了設計自己的程式(funciton)
在買DVD的例子裡面,buyDVD()就是一個程式
下面就是這個程式的內容:
buyDVD(){
money -= 600
}
很簡單對吧?
因為買了DVD,所以我的錢減少了600圓

有人會說這太簡單了,那我們稍微把這個複雜一下好了
buyDVD(price){
money -= price
}
能猜到這在說什麼嗎?
在上面的這個例子中,price就是價錢的意思。
那麼整個程式就可以這樣解讀:
這片DVD有一個價錢(我們還不知道多少圓的變數),買了之後我的錢就扣了價錢的數量
在這裡面price是可以變更的。
如果是很舊的DVD,價格就很低,如果是新的DVD,價格就比較高

把這個新的程式跟我們舊的結合一下:
if (money >= 3600){ buyDVD(300); }
else { watchTV(); }
如果我有3600圓,我就會去買300圓的DVD,不然我就只會待在家裡看電視

那麼,這次的講座就到此為止。有什麼不會的問題盡管發問吧。


01.02.09

老艾的程式設計講座(1)

Post in 程式設計 at 09:00 :: 點閱次數 (274)

很多人認為程式設計是很困難的,但是事實上只要學會一些基本的東西,程式設計就不是那麼的困難。
在這邊我就大概的講解一些基本的東西,希望這會對一些對程式設計有興趣,但是卻步不前的人有些幫助。

※程式設計是什麼?
程式設計,就是跟字面上的意思一樣:設計出屬於自己的程式。
我認為程式設計比較像是頭腦體操,想出自己的方法來解決一些問題。雖然過程可能會有些小挫折,但是得到答案的成就感是無可言喻的。

※程式設計需要什麼?
真的要說的話就是一些基本的英文,簡單的數學(加減乘除),會比大小(大於,等於,小於,不等於..)。最後則是擁有邏輯性的頭腦。只要會這些基本的東西,你也可以是程式設計師!

※如何開始?
事實上平常大家都在作程式設計的工作,只是自己不自知而已。

舉個例子來說吧:
如果有3600圓以上,那我就會去買DVD,不然我就只會在家電視。

有人會說,這哪裡是程式設計了?
可是我可以告訴你,上面這個例子就是一個最基本的程式設計問題。
把例子寫成程式碼的話:

if (money >= 3600){ buyDVD(); }
else { watchTV(); }

if :如果。
money:錢。
>=3600 :3600以上。
buyDVD() :買DVD

else :不然就。
watchTV() :看電視。

看吧,程式設計就是這麼簡單的東西。

你也試著寫點程式吧~