2012年12月17日 星期一
2012年11月21日 星期三
Visual Basic, VB 資源
VB真好玩
VB 2010 Express 範例程式
Visual Studio 2010 Express ISO檔 (1.8GB)
請在VB2010 Express下練習編譯執行下列範例
example -01
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Console.WriteLine("Hello Robot!") '印出字串
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -02 Randomize 函式 Rnd 函式
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The Random Number is " & a & ".") '印出字串
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -03 For...Next 迴圈
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
For n = 1 To 10 Step 1 'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The Random Number is " & a & ".") '印出字串
Next
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -04 If...Then...Else 條件判斷
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
For n = 1 To 10 Step 1 'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The " & n & "th Random Number is " & a & ".") '印出第n個隨機數的字串
'//////////////////////////////////////////////////////////////////////////////////////////////////
'//模擬跟線自走車的演算法
'//////////////////////////////////////////////////////////////////////////////////////////////////
If (a < 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
End If 'if 條件判斷結束
If (a > 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
If (a = 45) Then 'if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
'//////////////////////////////////////////////////////////////////////////////////////////////////
Next 'for 迴圈loop 程式碼區塊結束
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -05
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim b, loops As Integer
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
'模擬光感測器讀值30次
loops = 0 '紀錄自走車完成迴圈數--變數歸零
For n = 1 To 30 Step 1 'for 迴圈loop , n=1開始, 當n<=30時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The " & n & "th Random Number is " & a & ".") '印出第n個隨機數的字串
'//////////////////////////////////////////////////////////////////////////////////////////////////
'//模擬跟線自走車的演算法
'//////////////////////////////////////////////////////////////////////////////////////////////////
If (n Mod 5 = 0) Then 'n除以5的餘數等於0, n 為 5 的倍數
b = 30 '表示第二顆感測器看到黑色起跑線
Else
b = 60 '表示第二顆感測器看到白色區域 (奔跑中), n 不為 5 的倍數
End If
If (b < 45) Then '表示第二顆感測器看到黑色起跑線
loops = loops + 1 '紀錄自走車完成迴圈數--變數+1更新
Console.WriteLine("Run " & loops & "th Loop..")
End If
If (loops >= 5) Then '表示自走車已完成5圈
Console.WriteLine("Five-loop Task Completed!")
Exit For
End If
If (a < 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
End If 'if 條件判斷結束
If (a > 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
If (a = 45) Then 'if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
'//////////////////////////////////////////////////////////////////////////////////////////////////
Next 'for 迴圈loop 程式碼區塊結束
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
機器人跟線與數線的設計 http://dyu0001.blogspot.com/2011/11/blog-post_09.html , 流程圖
VB 2010 Express 範例程式
Visual Studio 2010 Express ISO檔 (1.8GB)
請在VB2010 Express下練習編譯執行下列範例
example -01
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Console.WriteLine("Hello Robot!") '印出字串
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -02 Randomize 函式 Rnd 函式
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The Random Number is " & a & ".") '印出字串
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -03 For...Next 迴圈
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
For n = 1 To 10 Step 1 'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The Random Number is " & a & ".") '印出字串
Next
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -04 If...Then...Else 條件判斷
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
For n = 1 To 10 Step 1 'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The " & n & "th Random Number is " & a & ".") '印出第n個隨機數的字串
'//////////////////////////////////////////////////////////////////////////////////////////////////
'//模擬跟線自走車的演算法
'//////////////////////////////////////////////////////////////////////////////////////////////////
If (a < 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
End If 'if 條件判斷結束
If (a > 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
If (a = 45) Then 'if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
'//////////////////////////////////////////////////////////////////////////////////////////////////
Next 'for 迴圈loop 程式碼區塊結束
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
example -05
Module Module1 '逗號後面表示為註解
Sub Main() 'VB Console Application (控制台應用程式的主程式開始)
Dim a As Integer '宣告一個整數integer的變數variable
Dim b, loops As Integer
Dim n As Integer
Randomize() ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
'模擬光感測器讀值30次
loops = 0 '紀錄自走車完成迴圈數--變數歸零
For n = 1 To 30 Step 1 'for 迴圈loop , n=1開始, 當n<=30時, 執行 loop 內的指令, 執行完畢 n+1
a = CInt(Int((100 * Rnd()) + 1)) '計算, 取 1-100 的亂數
Console.WriteLine("The " & n & "th Random Number is " & a & ".") '印出第n個隨機數的字串
'//////////////////////////////////////////////////////////////////////////////////////////////////
'//模擬跟線自走車的演算法
'//////////////////////////////////////////////////////////////////////////////////////////////////
If (n Mod 5 = 0) Then 'n除以5的餘數等於0, n 為 5 的倍數
b = 30 '表示第二顆感測器看到黑色起跑線
Else
b = 60 '表示第二顆感測器看到白色區域 (奔跑中), n 不為 5 的倍數
End If
If (b < 45) Then '表示第二顆感測器看到黑色起跑線
loops = loops + 1 '紀錄自走車完成迴圈數--變數+1更新
Console.WriteLine("Run " & loops & "th Loop..")
End If
If (loops >= 5) Then '表示自走車已完成5圈
Console.WriteLine("Five-loop Task Completed!")
Exit For
End If
If (a < 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
End If 'if 條件判斷結束
If (a > 45) Then ' if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
If (a = 45) Then 'if 條件判斷
'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
End If 'if 條件判斷結束
'//////////////////////////////////////////////////////////////////////////////////////////////////
Next 'for 迴圈loop 程式碼區塊結束
Console.Write("Press any key to accomplish.") '提示使用者按enter鍵結束
Console.ReadLine() '讀取使用者鍵盤輸入
End Sub '(控制台應用程式的主程式結束)
End Module
機器人跟線與數線的設計 http://dyu0001.blogspot.com/2011/11/blog-post_09.html , 流程圖
2012年10月1日 星期一
2012 一種機器人可能的演算法
//雙斜線後面, 表示是註解的文字
init: //表 initialization 程式一開始執行的部分
W = 99; // W代表White, 用來紀錄白色罐子所在位置, 可能是1,2,3,4或5.
B1 = 99; // B代表Blue, 99代表還沒有資料更新
B2 = 99; // B1,B2 用來紀錄藍色罐子, 所在的位置, 可能是1,2,3,4或5.
R1 = 99; R2 = 99; // R1,R2 用來紀錄紅色罐子, 所在的位置, 可能是1,2,3,4或5.
Pos = 99; // 表示機器人對應罐子的位置, 可能是1,2,3,4或5.
M1 = 99; // 表示完成任務的罐子顏色. 可能是 1(紅色)或2(藍色).
Loop = 0; // 表示機器人已經完成任務的圈數, 可能是0,1或2.
init_pos:
機器人位於出發位置
if (Loop == 2){ // 判斷 Loop 是否等於 2 的值.
TASK_COMPLETED; // 表示機器人已經完成2圈的任務, 停止程式執行, 讓機器人靜止不動.
}
init2grab: // from initial postion to grab zone. init2grab 表 init to(two 發音同) grab.
執行機器人由出發位置到進入抓罐子區域(下斜坡準備進入)的程式
//================================================================================================
grab2: // 執行抓2根罐子的演算法
//---------------------
// 第一圈抓取任務開始
//-----------------------------------------------------------begin >> 1 to 2
if(Loop==0 AND Pos = 99){ //表示第一次進入抓罐子區域
執行前往查看第一根罐子顏色的程式.
Pos = 1; 表機器人位置對應在第 1 根罐子
if (RGB == "白"){
W = 1;
不抓取罐子,執行到 RGB看下一根罐子的程式.
Pos = 2;
}
if (RGB == "紅"){
R1 = 1; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
Pos = 2;
}
if (RGB == "藍"){
B1 = 1; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
Pos = 2;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 2 to 3
if(Loop==0 AND Pos = 2){ //
if (RGB == "白"){
W = 2;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 2; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 2;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 2; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 2; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 2; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 2;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 2; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 2; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
Pos = 3;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 3 to 4
if(Loop==0 AND Pos = 3){ //
if (RGB == "白"){
W = 3;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 3; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 3;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 3; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 3; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 3; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 3;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 3; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 3; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
Pos = 4;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 4 to 5
if(Loop==0 AND Pos = 4){ //
if (RGB == "白"){
W = 4;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 4; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 4;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 4; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 4; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 4; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 4;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 4; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 4; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
Pos = 5;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 5 to grab2init
if(Loop==0 AND Pos = 5){ //
if (RGB == "白"){
W = 5;
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 5; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 5;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 5; //表示第一根紅罐子的位置.
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 5; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 5; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 5;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 5; //表示第一根藍罐子的位置.
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 5; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
}
//-----------------------------------------------------------end
// 第一圈抓取任務結束
//---------------------
//---------------------
// 第二圈抓取任務開始
//-----------------------------------------------------------begin
if(Loop==1){ //
???????
}
//-----------------------------------------------------------end
//================================================================================================
grab2init:
if(Pos ==2){
機器人抓了2根罐子後, 位置對應在第 2 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==3){
機器人抓了2根罐子後, 位置對應在第 3 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==4){
機器人抓了2根罐子後, 位置對應在第 4 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==5){
機器人抓了2根罐子後, 位置對應在第 5 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
執行上斜坡返回罐子置放區, 並放下罐子回到出發位置(init_pos)的控制程式.
並設定完成任務罐子的顏色. M1 = 1(紅色); 或 M1 = 2(藍色);
Loop = Loop + 1; // 表示增加完成任務圈數1圈
控制程式再回到 init_pos: 重新執行控制程式.
init: //表 initialization 程式一開始執行的部分
W = 99; // W代表White, 用來紀錄白色罐子所在位置, 可能是1,2,3,4或5.
B1 = 99; // B代表Blue, 99代表還沒有資料更新
B2 = 99; // B1,B2 用來紀錄藍色罐子, 所在的位置, 可能是1,2,3,4或5.
R1 = 99; R2 = 99; // R1,R2 用來紀錄紅色罐子, 所在的位置, 可能是1,2,3,4或5.
Pos = 99; // 表示機器人對應罐子的位置, 可能是1,2,3,4或5.
M1 = 99; // 表示完成任務的罐子顏色. 可能是 1(紅色)或2(藍色).
Loop = 0; // 表示機器人已經完成任務的圈數, 可能是0,1或2.
init_pos:
機器人位於出發位置
if (Loop == 2){ // 判斷 Loop 是否等於 2 的值.
TASK_COMPLETED; // 表示機器人已經完成2圈的任務, 停止程式執行, 讓機器人靜止不動.
}
init2grab: // from initial postion to grab zone. init2grab 表 init to(two 發音同) grab.
執行機器人由出發位置到進入抓罐子區域(下斜坡準備進入)的程式
//================================================================================================
grab2: // 執行抓2根罐子的演算法
//---------------------
// 第一圈抓取任務開始
//-----------------------------------------------------------begin >> 1 to 2
if(Loop==0 AND Pos = 99){ //表示第一次進入抓罐子區域
執行前往查看第一根罐子顏色的程式.
Pos = 1; 表機器人位置對應在第 1 根罐子
if (RGB == "白"){
W = 1;
不抓取罐子,執行到 RGB看下一根罐子的程式.
Pos = 2;
}
if (RGB == "紅"){
R1 = 1; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
Pos = 2;
}
if (RGB == "藍"){
B1 = 1; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
Pos = 2;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 2 to 3
if(Loop==0 AND Pos = 2){ //
if (RGB == "白"){
W = 2;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 2; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 2;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 2; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 2; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 2; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 2;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 2; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
Pos = 3;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 2; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
Pos = 3;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 3 to 4
if(Loop==0 AND Pos = 3){ //
if (RGB == "白"){
W = 3;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 3; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 3;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 3; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 3; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 3; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 3;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 3; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
Pos = 4;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 3; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
Pos = 4;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 4 to 5
if(Loop==0 AND Pos = 4){ //
if (RGB == "白"){
W = 4;
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 4; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 4;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 4; //表示第一根紅罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 4; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 4; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 4;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 4; //表示第一根藍罐子的位置.
不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
Pos = 5;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 4; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
Pos = 5;
}
}
//-----------------------------------------------------------end
//-----------------------------------------------------------begin >> 5 to grab2init
if(Loop==0 AND Pos = 5){ //
if (RGB == "白"){
W = 5;
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "紅" AND R1 <99 ){ //表示看到第二根紅罐子
R2 = 5; //表示第二根紅罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 5;
}
if (RGB == "紅" AND R1 ==99 AND B1<99){ //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
R1 = 5; //表示第一根紅罐子的位置.
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "紅" AND R1==99 AND B1==99){ //表示看到第一根紅罐子
R1 = 5; //表示第一根紅罐子的位置.
執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "藍" AND B1 <99 ){ //表示看到第二根藍罐子
B2 = 5; //表示第二根藍罐子的位置.
執行右邊抓起罐子, 後退到準備返回的位置. (return)
Pos = 5;
}
if (RGB == "藍" AND B1 ==99 AND R1<99){ //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
B1 = 5; //表示第一根藍罐子的位置.
不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
if (RGB == "藍" AND B1==99 AND R1==99){ //表示看到第一根藍罐子
B1 = 5; //表示第一根藍罐子的位置.
執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
Pos = 5;
}
}
//-----------------------------------------------------------end
// 第一圈抓取任務結束
//---------------------
//---------------------
// 第二圈抓取任務開始
//-----------------------------------------------------------begin
if(Loop==1){ //
???????
}
//-----------------------------------------------------------end
//================================================================================================
grab2init:
if(Pos ==2){
機器人抓了2根罐子後, 位置對應在第 2 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==3){
機器人抓了2根罐子後, 位置對應在第 3 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==4){
機器人抓了2根罐子後, 位置對應在第 4 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
if(Pos ==5){
機器人抓了2根罐子後, 位置對應在第 5 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
}
執行上斜坡返回罐子置放區, 並放下罐子回到出發位置(init_pos)的控制程式.
並設定完成任務罐子的顏色. M1 = 1(紅色); 或 M1 = 2(藍色);
Loop = Loop + 1; // 表示增加完成任務圈數1圈
控制程式再回到 init_pos: 重新執行控制程式.
Turbo C 使用教學 (請在 Windows XP 下操作)
Turbo C 使用教學
C 語 言 入 門 教 室
請在XP下, 以tc3.0練習編譯下列範例
example -01
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
void main() { //主程式開始
printf("Hello Robot!"); //印出字串
} //主程式結束
亂數的使用
example -02
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The Random Number is %d .\n", a); //印出隨機數的字串
} //主程式結束
for 迴圈
example -03
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
for (n=1; n <= 10; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -04
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值10次
for (n=1; n <= 10; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法
//////////////////////////////////////////////////////////////////////////////////////////////////
if (a < 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
// printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
} // if 條件判斷結束
if (a > 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
if (a == 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
//////////////////////////////////////////////////////////////////////////////////////////////////
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -05
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int b, loop;
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值30次
loop = 0; //紀錄自走車完成迴圈數--變數歸零
for (n=1; n <= 30; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法
//////////////////////////////////////////////////////////////////////////////////////////////////
if(n%5 == 0){ //n除以5的餘數等於0, n 為 5 的倍數
b=30; //表示第二顆感測器看到黑色起跑線
}
else{
b=60; //表示第二顆感測器看到白色區域 (奔跑中)
}
if (b<45){ //表示第二顆感測器看到黑色起跑線
loop = loop + 1; //紀錄自走車完成迴圈數--變數+1更新
printf("Run %ith Loop..\n", loop);
}
if (loop >=5 ) { //表示自走車已完成5圈
printf("Five-loop Task Completed!\n");
exit(1); //退出程式
}
if (a < 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
// printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
} // if 條件判斷結束
if (a > 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
if (a == 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
//////////////////////////////////////////////////////////////////////////////////////////////////
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -05 for RoboLab
C 語 言 入 門 教 室
請在XP下, 以tc3.0練習編譯下列範例
example -01
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
void main() { //主程式開始
printf("Hello Robot!"); //印出字串
} //主程式結束
亂數的使用
example -02
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The Random Number is %d .\n", a); //印出隨機數的字串
} //主程式結束
for 迴圈
example -03
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
for (n=1; n <= 10; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -04
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值10次
for (n=1; n <= 10; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法
//////////////////////////////////////////////////////////////////////////////////////////////////
if (a < 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
// printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
} // if 條件判斷結束
if (a > 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
if (a == 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
//////////////////////////////////////////////////////////////////////////////////////////////////
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -05
//雙斜線後面表示為註解
#include <stdio.h> //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h> //包含 time function 的標頭檔
void main() { //主程式開始
int a; //宣告一個整數integer的變數variable
int b, loop;
int n;
srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值30次
loop = 0; //紀錄自走車完成迴圈數--變數歸零
for (n=1; n <= 30; n++) { //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
a=(rand()%100)+1; //計算, 取 1-100 的亂數
printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法
//////////////////////////////////////////////////////////////////////////////////////////////////
if(n%5 == 0){ //n除以5的餘數等於0, n 為 5 的倍數
b=30; //表示第二顆感測器看到黑色起跑線
}
else{
b=60; //表示第二顆感測器看到白色區域 (奔跑中)
}
if (b<45){ //表示第二顆感測器看到黑色起跑線
loop = loop + 1; //紀錄自走車完成迴圈數--變數+1更新
printf("Run %ith Loop..\n", loop);
}
if (loop >=5 ) { //表示自走車已完成5圈
printf("Five-loop Task Completed!\n");
exit(1); //退出程式
}
if (a < 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
// printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
} // if 條件判斷結束
if (a > 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
if (a == 45) { // if 條件判斷
printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
// printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
} // if 條件判斷結束
//////////////////////////////////////////////////////////////////////////////////////////////////
} // for 迴圈loop 程式碼區塊結束
} //主程式結束
example -05 for RoboLab
example -05 for NXT-G
2012年9月18日 星期二
2012年9月4日 星期二
請101-上學期(101年9月)修課同學在這個訊息下, 留下自己的部落格網址....
為方便評估同學學習成效, 請在這個訊息下回POST, 留下自己的部落格網址....
回覆意見 comment 格式如下:學號, 名字(後兩字), 網址
例如: S950001, 曉明, http:///yourname.blogspot.com
謝謝合作........
回覆意見 comment 格式如下:學號, 名字(後兩字), 網址
例如: S950001, 曉明, http:///yourname.blogspot.com
謝謝合作........
訂閱:
文章 (Atom)

