- 基本語法的應用:不管使用那一種程式語言,底下的概念都是必備的。
- 資料處理的分界-資料型態
- 「數字」與「文字(字串)」的差別;日期、布林、不定型又是什麼?
- 什麼時侯要用什麼資料型態呢?
- 如果用錯了資料型態會怎樣呢?如何轉換資料型態變成我們預期的型態?
- 程式運算的重點-變數
- 變數是做什麼的?
- 常數又是什麼?
- 輸出
- 利用 Print 將資料印在表單視窗上( Form )上。
- 利用 MsgBox 顯示訊息視窗。
- 利用 Label、TextBox…等物件來顯示。
- 輸入
- 利用 InputBox() 顯示輸入視窗,以輸入資料。所有輸入的資料均被視為字串型態 String。
- 利用 TextBox、CheckBox、OptionBox、ComboBox、ListBox、ScrollBar等控制項物件輸入。
- 利用 MsgBox() 函數的回傳值當輸入值。
- 選擇結構-條件判斷、決策指令
- 判斷的結果不是真( True )就是假( False ),其型態稱為布林值,也用在邏輯運算中。
- 決策指令 if ... then ... else 的多種用法,包括巢狀用法。
- 決策指令 select case 用法。
- 配合邏輯運算 AND、OR、NOT 做更多條件的組合判斷。
- 重覆結構-迴圈指令的使用
- 迴圈指令 For Next 利用變數的範圍及計數來決定是否重覆執行。當不知道迴圈要執行幾次時,不適合使用。
- 迴圈指令 While WEnd 利用布林值的真假來決定是否要重覆執行。
- 迴圈指令 Do ... Loop 類似 While ,但是提供更彈性的用法,如前測式、後測式。共有 5 種變化。
- 結構化程式設計-副程式及函數的使用
- 什麼是函數(Function)、什麼是副程式(Sub)、什麼是參數、什麼是全域變數及區域變數。
- 什麼是內建函數?VB有哪些內建函數?了解哪些是數值函數、字串函數嗎?
- 如何呼叫函數、副程式?
- 如何自訂函數、副程式?什麼時候需要自訂函數?
- 大量資料的處理-陣列的應用
- 一維陣列的宣告及應用。
- 二(多)維陣列的宣告及應用。
- 利用陣列來儲存數字,並排序(選擇、氣泡排序法)。
- 把重要的資料永遠記下來-檔案的存取
- 檔案的概念:循序檔、隨機檔、二進位檔。
- 檔案的操作:開啟檔案→操作(寫入資料或讀取資料)→關閉檔案。
- 至少熟悉循序檔的存取。
- VB 的物件導向設計,控制項(Control)-物件(Object)之一、屬性(attribute)、方法(method)、事件(Event)及事件程序。
- VB有哪些常用的控制項?這些你都要會應用。
- 文字標籤 Label-用來顯示文字。常配合各種控制項使用。
- 文字方塊 TextBox-用來輸入文字。如同 InputBox 一樣,所輸入的資料均被視為字串型態 String。
- 命令按鈕 CommandButton-就是按鈕。
- 計時器 Timer-非常常用。
- 核取方塊 CheckBox-用在要、不要的選擇情況。
- 選擇圓鈕 OptionButton-用在多選一的選擇情況。
- 下拉式選單、清單 ComboBox、ListBox。
- 影像框 Image 及 繪圖框 PictureBox
- 幾何形狀 Shape、Line。
- 水平及垂直捲軸 ScrollBar。
- 檔案控制項 DriverListBox、DirListBox、FileListBox。
- 控制項屬性的存取
- 在屬性視窗中設定屬性。
- 在程式執行時讀取屬性及設定屬性。
- 有的屬性只能在屬性視窗設定,有的只能在程式中設定,而大部份兩者都可。
- 了解各種控制項所特有的屬性及屬性值;屬性視窗下方有提供一部份說明。
- 控制項方法(method)的使用,類似函數的使用。
- 方法代表控制項所具的有行為、動作。必須在程式執行時使用。
- 不同的控制項有其特定的方法。
2015年12月18日 星期五
電腦 語言 ( VB ) 學習的 重點
2015年12月14日 星期一
練習 2- 由小到大 (氣泡排序)
問題敘述
給你一些數,
請幫忙排這些數由小到大。
輸入說明
輸入共有兩列
第一列為一個正整數 N。(N <= 1000000)
第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值不超過 1000000000。
輸出說明
請輸出第二列輸入中的 N 個正整數這些數由小到大排列
範例輸入
5
6 3 4 17 9
範例輸出
3 4 6 9 17
( VB6 解題範例 ) Ex-2.rar : https://dl.dropboxusercontent.com/u/19927831/KH-code/AlgoVB/Ex-2.rar
----------------------------------------------------------------------------------------------------------------------
Private Sub Form_Activate()
Dim i, j As Integer
Dim B() As String
Dim bn(100) As Integer
Dim ipstr1, ipstr2, opstr As String
Dim s, x As Variant
ipstr1 = "5"
ipstr2 = "6 3 4 17 9"
s = CDec(ipstr1)
B = Split(ipstr2, " ")
For i = 0 To s - 1
bn(i) = CDec(B(i))
Print bn(i);
Next i
Print
For i = 0 To s - 2
For j = i + 1 To s - 1
If bn(i) > bn(j) Then
x = bn(i)
bn(i) = bn(j)
bn(j) = x
End If
Next j
Next i
For i = 0 To s - 1
Print bn(i);
Next i
Print
End Sub
給你一些數,
請幫忙排這些數由小到大。
輸入說明
輸入共有兩列
第一列為一個正整數 N。(N <= 1000000)
第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值不超過 1000000000。
輸出說明
請輸出第二列輸入中的 N 個正整數這些數由小到大排列
範例輸入
5
6 3 4 17 9
範例輸出
3 4 6 9 17
( VB6 解題範例 ) Ex-2.rar : https://dl.dropboxusercontent.com/u/19927831/KH-code/AlgoVB/Ex-2.rar
----------------------------------------------------------------------------------------------------------------------
Private Sub Form_Activate()
Dim i, j As Integer
Dim B() As String
Dim bn(100) As Integer
Dim ipstr1, ipstr2, opstr As String
Dim s, x As Variant
ipstr1 = "5"
ipstr2 = "6 3 4 17 9"
s = CDec(ipstr1)
B = Split(ipstr2, " ")
For i = 0 To s - 1
bn(i) = CDec(B(i))
Print bn(i);
Next i
For i = 0 To s - 2
For j = i + 1 To s - 1
If bn(i) > bn(j) Then
x = bn(i)
bn(i) = bn(j)
bn(j) = x
End If
Next j
Next i
For i = 0 To s - 1
Print bn(i);
Next i
End Sub
練習 1 - 找最小值
問題敘述
給你一些數,
請幫忙找出這些數中的最小值。
輸入說明
輸入共有兩列
第一列為一個正整數 N。(N <= 1000000)
第二列共有 N 個正整數,相鄰正整數之間以一個空白分隔,數值不超過 1000000000。
輸出說明
請輸出第二列輸入中的 N 個正整數之最小值
範例輸入
5
6 3 4 17 9
範例輸出
3
(VB6 解題範例 ) Ex-1.rar : https://dl.dropboxusercontent.com/u/19927831/KH-code/AlgoVB/Ex-1.rar
--------------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Activate()
Dim i As Integer
Dim B() As String
Dim bn(100) As Integer
Dim ipstr1, ipstr2, opstr As String
Dim n, s As Variant
ipstr1 = "5"
ipstr2 = "6 3 4 17 9"
n = CDec(ipstr1)
B = Split(ipstr2, " ")
For i = 0 To n - 1
bn(i) = CDec(B(i))
Print bn(i);
Next i
s = B(0)
For i = 1 To n - 1
If bn(i) < s Then
s = bn(i)
End If
Next i
Print s
End Sub
程式設計基本題目
( 資料摘自 : http://mail.cyvs.cy.edu.tw/~chunwen/vb/vb94/ )
語言
- 程式實作習題:底下習題難度不一,但最好都能寫出來,試試看吧。
- 記得先把本站(2015/12/18)"電腦語言學習的重點"所提到的相關知識學會弄懂,下面的題目才有辦法做完喔!
- 題目難度不一,但數字較大,通常代表比較難,不過在 7(含)以下的都算是簡單的。( ~ 表示難易度 )
- 給自己半年時間把這些題目做完。
- 下載 1~41 題所有解答 :
(I). C: 下載 C 解答 Codeblock GCC
(II) VB: 下載 VB解答 - 練習題目 :
按 "語法"有各題解答; 下列各題 加★為重要必解題目
按 " 範例下載 " 裡面有各題程式範例 (rar 壓縮檔, 內涵 exe檔)
- 輸入一個數字,並判斷此數字是正數、還是負數。
語法 範例下載 - 輸入一個數字,並判斷此數字是奇數、還是偶數。
語法 範例下載 - 輸入一個數字,並判斷此數字是否為 3 的倍數。
語法 範例下載 - 輸入一個數字,並判斷此數字是否為 200 的因數。
語法 範例下載 - 輸入一個數字,並判斷此數字是否介於 100 ~ 200 之間。
語法 範例下載 - 輸入一個數字,並判斷此數字是否為 3 位數。
語法 範例下載 - 輸入一個數字,並判斷此數字是否為 2 及 3 的公倍數。
語法 範例下載 - 輸入一個數字,並判斷此數字是否為正整數。
語法 範例下載 - 輸入兩個正整數,並比較這兩個正整數的大小關係(大、小、相等)。語法 範例下載
- 寫一程式輸入 A、B、C 三個數值,然後找出最大的數。
語法 範例下載 - 輸入一個數字,如果是 1 位數的話,顯示「■」;如果是 2 位數的話,顯示「●」;如果是 3 位數以上的話,顯示「★」。
語法 範例下載 - 輸入一個數字,如果是 1 的話,顯示「剪刀」;如果是 2 的話,顯示「石頭」;如果是 3 的話,顯示「布」,其餘則顯示「你輸入錯誤,請重新輸入!」。語法 範例下載
- ★ 假設各人綜合所得稅係採用累進課稅方式,稅率如下,請寫一程式輸入某人的所得,然後計算應繳之稅款。語法 範例下載
- 所得 30 萬以內課 6%
- 所得 30 ~ 80 萬課 13%
- 所得 80 ~ 150 萬課 21%
- 所得 150 ~300 萬課 30%
- 所得 300 萬以上課 40%
- ★ 利用迴圈指令印出從 1 到 20 的數字。(請分別用 For、While、Do Loop) 語法 範例下載
- 輸入一個數字 n,並從 1 印到 n。 語法 範例下載
- 請印出 1 到 100 之間所有 6 的倍數。語法 範例下載
- 連續輸入二個數字 m n,並印出從 1 到 m 之間所有 n 的倍數。語法 範例下載
- 請輸入兩個四位數的正數,並比較這兩個正整數的因數個數。語法 範例下載
- 計算 1+2+3+...+100 之值。(請分別用 For、While、Do Loop) 語法 範例下載
- ★ 計算 1+4+7+...+31 之值。(請分別用 For、While、Do Loop) 語法 範例下載
- 計算 2+5+8+...+32 之值。(請分別用 For、While、Do Loop) 語法 範例下載
- 計算 1+2+3+... ,當加到多少時,剛好大於 1000。(用那一種迴圈指令比較適合) 語法 範例下載
- 如左圖,起點座標為0,每一間隔分別為1、2、3、4、5…、請利用迴圈印出 a1 到 a8 的座標值,如果起點座標是 10 呢? 語法 範例下載
- 輸入 n 個數,並計算(a)總和、(b)平均、(c)最大值、(d)最小值、(e)第 2 大的數(進階)。n 的值請自行決定。
語法 範例下載 - ★ 輸入兩個正整數,計算此兩數之間的質數,並利用 List 列出來。語法 範例下載
- ★ 請利用雙重迴圈印出九九乘法表。語法 範例下載
- ★ 請利用雙重迴圈分列印出下面三圖。 ( 演算法 重要練習 )
(1). 語法 範例下載
(2). 重要觀念延伸學習語法 範例下載
(3). 數字圖形語法 範例下載
- 如圖右,每個小方格寬 w,高 h,且左上角的座標為(0, 0),(a)
請先找出每一小格左上角的座標公式,r 代表列,c 代表欄 (b)利用雙重迴圈及上述公式,列出所有交叉點的座標(包含邊界的點)。語法 範例下載 - 利用迴圈做錯誤處理及控制。請輸入一個 3 位正整數,如果輸入的數字不符合要求則顯示錯誤訊息,並要求重新輸入,直到輸入的數字符合要求為止,然後印出此數字。(試試看是否能將 1 至 8 題加上錯誤處理) 語法 範例下載
- ★ 輸入 1 個數字,並將此數字轉換成 2 進位、8 進位及 16 進位數字。語法 範例下載
- 任意輸入一數字(不限位數),判斷此數字是幾位數,並計算每位數字的總如。(請考慮輸入 003456 時,應該當成是 4 位數,總和是 18) 語法 範例下載
- 當x = 1、2、5、-1、-2、-5、8、9、10時計算方程式 y=x2+4x-10 的值。(利用自訂函數) 語法 範例下載
- ★ 請輸入二個數,並求出這兩個數的最大公因數與最小公倍數,並分別寫出算最大公因數及最小公倍數的自訂函數。( 本題可使用輾轉相除法) 語法 範例下載
- ★★ 輸入三個數,並利用上述的自訂函數計算最大公因數。語法 範例下載
- 先宣告一個一維陣列,並利用迴圈將陣列中的所有值全印出來。(如果沒有先設定過陣列的值的話,應該都是 null ) 語法 範例下載
- 先宣告一個一維陣列,並利用迴圈將 1 ~ 10 填入到陣列,隨後將此陣列的內容印出。語法 範例下載
- 利用 array() 函數,直接將「○、一、二、三、…、九」指定到陣列中,隨後將陣列的內容印出。語法 範例下載
- 連續輸入 10 個數,並計算第 5 個數及第 8 個數的乘績。(先利用陣列將輸入的數記錄下來) 語法 範例下載
- ★★ 任意輸入 10 個數(數字需控制在 0 ~ 100 之間),(a)依照輸入順序依序印出、(b)依照輸入順序反序印出、(c)列出比平均數高的所有數值、(d)請將此數由大到小依序列出(用選擇或氣泡排序法)、(e)數列中第三大的數值是第幾個輸入的數呢?請顯示。語法 範例下載
- ★★ 輸入二個不限長度的整數,並顯示相加的結果。(提示,利用字串當成數字,並逐字處理) 語法 範例下載
- ★★★ 同上題,做出減法 語法 範例下載
做出乘法 語法 範例下載 - 計算輸入的年份是否為閏年,閏年的條件為:
- 可被 1000 整除。
- 可被 400 整除。
- 可被 4 整除。
- 不可被 100 整除。
- 口訣:逢四百年或千年閏,逢百年不閏,逢四年又閏。
- 今年2004年歲次甲申年,生肖猴,千禧年2000年歲次庚辰年,生肖龍,請設計一程式,用來查詢歲次及生肖。範例
- 天干:甲乙丙丁戊己庚辛壬癸。
- 地支:子丑寅卯辰巳午未申酉戍亥。
- 生肖:鼠牛虎免龍蛇馬羊猴雞狗豬。
- 數字轉換成國字。
- 輸入 123 轉換成「一二三」
- 輸入 123 轉換成「一百二十三」,輸入 1000003 轉換成「一百萬零三」
- 輸入數字並轉換成圖形的數字,類似網頁上的計數器。下載解壓縮後,開啟 5.frm
- 如圖右,將 0 ~ 23 的整數填入 4 列 6 欄的二維陣列。(或 6 列 4 欄,或 3 列 8 欄)
- 利用雙重迴圈將二維陣列的內容全部印出。(請配合上題,以上題二維陣列為例)
- 利用單層迴圈將二維陣列的內容全部印出。(請配合上題,以上題二維陣列為例)
- 寫一簡易成績處理程式,請參考範例。範例
- 利用繪圖指令及繪畫框(PictureBox)畫圖,先輸入起始座標 (m,n),並從此座標開始畫一個直角三角形(邊長比為3-4-5)。
- 利用繪圖指令及繪畫框(PictureBox)畫圖,先輸入起始座標 (m,n),並從此座標開始畫一個米老鼠圖形。
- 請將上面兩題寫成自訂副程式(輸入 m,n 兩個座標參數),以方便可以重覆畫圖形。
- 連續輸入 10 位同學的姓名及電話,並將之儲存在檔案中(檔名:tel.txt)。
- 讀取檔案(maze.txt按右鍵另存新檔)並將其內容記錄在二維陣列中,隨後將陣列中的內容印出。(檔案中的第一排數字為列數,第二排數字為欄數,第三排以後則為陣列中的值)
- 以上題所讀檔案內容,畫出迷宮地圖。(0 代表牆,1 代表通路,3 4 5 6 則代表障礙物或怪物),範例
- 在表單(或繪圖框)中劃出棋盤,如下圖左。(19 乘 19)範例
- 在表單(或繪圖框)中劃出黑白相間的棋盤,如下圖右。(19 乘 19)
- 在視窗中佈置一個按鈕,當按了這個按鈕後,視窗的背景顏色會變成紅色。
- 在視窗中佈置一個按鈕及一個圖片,當按了這個按鈕後,圖片會向→移動100個單位。(↑、↓、←、→、↘、↙、↖、↗共八個方向)
- 在視窗中佈置一個按鈕、文字方塊及文字標籤,當視窗大小改變時,(a)按鈕永遠保持在左下角、(b)文字方塊保持在正中央,且大小剛是視窗的一半、(c)文字標籤保持在右上角。(範例、另一種範例)
- 請參考範例,當按了按鈕後,會顯示相對應的訊息,注意,當滑就移到題目文字的上方,顏色會變化,移開時顏色會變回來。
- 利用計時器控制項,不斷的變化視窗的背景。(如由黑至白、由白至黑、或由白至黑後接著由黑至白循環變化)。
- 利用計時器控制項,不斷的變化圖片框中的圖片。(利用 LoadPicture() 函數)。
- 利用計時器控制項,畫一隻嘴巴會動的小精靈。範例
- 請參考範例輸入國英數成績後,按「開始計算」鈕後會算出總分及平均,按「結束程式」時,會出現確認視窗後,確認後結束程式。
- 國英數成績的輸入範圍為 0 ~ 100,要做錯誤處理。
- 總分、平均兩個文字方塊要設定為唯讀,無法輸入。
- 在右方圖片上按滑鼠左鍵時,會變化不同的圖片,共四張,循環變化。
- 請參考上題,將圖片的部份,改成會自動變化,而不需按滑鼠左鍵。範例
- 請參考範例1、範例2,設計四則運算的計算器,請注意除法中分母不得為零,請做好錯誤處理。
- 請參考範例,設計簡易的圖片瀏灠器,請注意當滑鼠在不同的地方時,底下會顯示相對應的敘述文字。(這裡有另外兩種範例,請先儲存並解壓縮後再執行範例)
- 利用計時器控制項,讓圓球(Shape控制項)或圖片(Image)能自動移動。綜合範例、綜合範例2
- 由左到右,循環不已。(分別做出↑、↓、←、→、↘、↖、↗、↙八個方向)
- 左右跑,循環不已。範例(上下跑也是相同做法)
- 沿視窗邊緣繞圈圈。
- 圓周運動。以圓形軌道運動。範例
- 做規則彈跳,當球撞到牆壁會反彈。範例1、範例2
- 同上,但是同時可有多個球做規則彈跳,並考慮碰撞的可能。範例
- 讓圓球做自由落體運動,不停的彈跳。(不考慮摩擦力)範例
- 讓圓球做自由落體運動,不停的彈跳。(考慮摩擦力,越跳越低)
- 利用計時器,模擬繪製進度圖。範例1、範例2
- 設計一程式,由鍵盤輸入一正整數 n,( 3 <= n <= 20 ),在螢幕上畫出一正 n 邊多邊形(邊長自定)。
- 猜拳遊戲,和電腦比賽,3 戰 2 勝制。
- 猜數字遊戲,由電腦亂數選一數字,並提示使用者猜的數是大或小。範例
- 猜數字遊戲,由電腦亂數選一個不重複的四位數字,並提示使用者猜的數字與答案的關係,如 1A2B 代表使用者所猜的數字中,有 1 個數字正確且位置無誤,有 2 個數字正確,但位置不對,剩下 1 個數字並不在答案中。範例
- 井字遊戲,由兩人對奕。範例,先存檔解壓縮後再執行。(進階:與電腦對奕)
- 身份證字號的驗證。
- 凱撒密文:「凱撒密文」產生的方法是將「明文」內的每一個英文字母以其在英文字母排列順序中向後移動 n 個位置遠的字母取代之,若向後移動 n 個位置之後已超出 Z 的位置,則繞到最前面 A 的位置繼續往下對應。例如 n=6 時,字母取代的方式為 A 用 G 取代,B 用 H 取代, Z 用 F 取代。請寫一程式由鍵盤輸入一字串(均為大寫英文字母)及一整數 n ( 0 <= n < 10 ),然後以 n 位位移的凱撒加密法將明文加密後輸出密文。範例
- 跑馬燈,由左而右及由右而左。範例
- 網頁滑鼠特效模擬。範例、範例
- 繪製時鐘(a)電子鐘、數字鐘、(b)有指針的鐘。
- 寫出快速排序法。
- 龜兔賽跑。
- 走迷宮,利用鍵盤的方向鍵移動。範例請先下載儲存後解壓縮,執行迷宮.exe檔。
- 青蛙過街,利用鍵盤的方向鍵過街。
- 畫出會自動旋轉的太極圖。範例
- 利用鍵盤的方向鍵來移動物件。範例(請同時下載圖,並放在同一目錄下。)
- 畫出小精靈,並能利用鍵盤的方向鍵來移動。範例1、小精靈和米老鼠
- 亂數排座位,輸入列及欄數,即可自動排出座位。範例1、範例2、範例3
- 成績處理:參考第 49 題,加入讀檔寫檔的功能,能將成績寫入檔案及從檔案讀出成績。
- 班級資料登錄,請參考範例檔。範例,請先儲存後解壓縮,再執行資料登錄.exe
- 簡易通訊錄:藉由輸入姓名或號碼來查詢資料。(能增加通訊錄的資料)
- 汽車銷售訂單:輸入客戶姓名及所訂購車種配備,計算銷售金額,並能加到訂單檔案中,也能從訂單檔案中讀出已有的訂單資料。(範例檔需配合車種價格.txt及購車訂單.txt兩文字檔,請按右鍵另存新檔,並和汽車銷售訂單.exe放在同一資料夾中。)
- 簡易記事本,能設定字型及顏色。範例1、範例2、RTF文字編輯範例
- 請設計一程式,求出四位正整數中,最小的阿姆斯壯數。範例
- 阿姆斯壯數是指該數(n位數)與該數之各位數的n次方和相等,則此數即為阿姆斯壯數。
- 如「8208」即為阿姆斯壯數:8208為四位數,而各位數的四次方和「84+24+04+84」正好為「8208」,因此8208是一個阿姆斯壯數。
- 請設計一程式,由使用者輸入一正整數(1~200000000),判斷此數是否為一個阿姆斯壯數。
- 設計一程式,輸入正整數 N,印出 N!之精確值。(考慮用長數字的計算)範例
- 請設計一程式,可以用來計算排列組合數 P、C、H。範例
- 設計一個程式,計算 220、230、240 到精確的位數。(考慮用長數字的計算)範例
- 費伯那西數:費伯那西數的前兩個數為 1,第 3 個數以後是前兩個數的和。請依序列出前 20 個費伯那西數。範例
- 函數定義: 當 n = 0, 1 時, f(n)=n; 當 n >=2 時 f(n) = f(n-1) + f(n-2);
- 進階題:計算並印出 30 位數的最大費伯那西序列數之值。
- 1 位數的最大費伯那西序列數之值為 8 。
- 2 位數的最大費伯那西序列數之值為 89 。
- 20 位數的最大費伯那西序列數之值為 83621143489848422977 。
- 遞迴 n 階方陣:輸入一正整數 n ,印出 n 階之數字方陣,其中 n 必須為 2 的 m 次方,m 為正整數,即 n 可為 1, 2, 4, 8, 16, 32, 64 ...。(右圖為 8 階之數字方陣)
- 綜合範例1、綜合範例2
- 給自己一年的時間,好好學習吧!Visual Basic 程式語言
訂閱:
文章 (Atom)