<h1>電腦軟體設計丙級(Visual Basic)</h1>
---
<h2>第一套題組</h2>
共同科目:
(1)建立VB Windows Form App (.net framework)專案
(2)拉出表單物件 包含四個buttom 三個textbox(開啟multiline)
(3)在Private Sub ButtonX_Click(已省略)<font color=red>下方</font>新增`Dim m1,m2,m3,m4,m5`
(4)在Private Sub ButtonX_Click(已省略)<font color=red>上方</font>新增以下三行 X為題號
```
' ******************************
' * 11900-106030X Program Start *
' ******************************
```
(5)依照指定題目開始答題
(6)報表列印
<h3>第一套第一題1060301</h3>
簡介:第一套第一題為<font color=red>迴文判斷</font>,應檢人應讀取測試檔,將其判讀是否為迴文後以下方格式輸出
```bash=
以範例檔1060301.SM內的資料
12321
為例
是迴文
第一題結果:12321 is a palindrome.
不是迴文
第一題結果:12321 is not a palindrome.
```
解題邏輯:
(1)把資料存到m0
```bash=
FileOpen(1,"C://test//1060301.SM",OpenMode.Input)
Input(1,m0)
FileClose(1)
```
(2)`m1=m0`
(3)迴圈計數器
```bash=
For i=1 to 9
```
```bash=
DO WHILE TRUE
LOOP
```
```bash=
DO LOOP
WHILE TRUE
```
(4)運算
```bash=
m2 = m1 \ 10
m3 = m1 Mod 10
m4 = m4 & m3
If m2 = 0 Then
Exit For(DO)
Else
m1 = m2
End If
```
(5)輸出
```bash=
If m0 = m4 Then
TextBoxX.Text = "第一題結果:" & m0 & " is a palindrome."
Else
TextBoxX.Text = "第一題結果:" & m0 & " is not a palindrome."
End If
```
<h3>第一套第二題1060302</h3>
簡介:第一套第二題為<font color=red>直角三角形列印</font>,應檢人應讀取測試檔,將其運算出結果後以下方格式輸出
```bash=
以範例檔1060302.SM內的資料
7
為例
第二題結果:
1
12
123
1234
12345
123456
1234567
```
解題邏輯:
(1)把資料存到m0
```bash=
FileOpen(1,"C://test//1060302.SM",OpenMode.Input)
Input(1,m0)
FileClose(1)
```
(2)建立迴圈
FOR LOOP
```bash=
For i=1 To m0
For j=1 to i
m1=m1 & j
Next
m1=m1 & vbNewLine
Next
```
DO WHILE ... LOOP
```bash=
int i=1
Do While i<=m0
int j=1
Do While j<=i
m1=m1 & j
j=j+1
Loop
m1=m1 & vbNewLine
i=i+1
Loop
```
DO LOOP ... WHILE
```bash=
int i=1
Do Loop
int j=1
Do Loop
m1=m1 & j
j=j+1
While j<=i
m1=m1 & vbNewLine
i=i+1
While i<=m0
```
(3)輸出
` textBoxX.Text="第二題結果:" & vbNewLine & m1`
<h3>第一套第三題1060303</h3>
簡介:第一套第三題為<font color=red>質數計算</font>,應檢人應讀取測試檔,將其判讀是否為質數後以下方格式輸出
```bash=
以範例檔1060303.SM內的資料
12
為例
第三題結果:12 is not a prime number.
```
解題邏輯:
(1)把範例檔存到m0
```bash=
FileOpen(1,"C://test//1060303.SM",OpenMode.Input)
Input(1,m0)
FileClose(1)
```
(2)建立迴圈
FOR LOOP
```bash=
For i=1 To m0
If m0 Mod i=0 Then m1=m1+1
Next
```
DO WHILE ... LOOP
```bash=
int i=1
Do While i<=m0
If m0 Mod i=0 Then m1=m1+1
i=i+1
Loop
```
DO LOOP ... WHILE
```bash=
int i=1
Do Loop
If m0 Mod i=0 Then m1=m1+1
i=i+1
While i<=m0
```
(3)判斷是否為質數並輸出
```bash
If m1=2 Then
textBoxX.Text="第三題結果" & m0 & " is a prime number."
Else
textBoxX.Text="第三題結果" & m0 & " is not a prime number."
End If
```
<h3>第一套第四題1060304</h3>
簡介:第一套第四題為<font color=red>體質指數BMI</font>,應檢人應讀取測試檔,計算並找出最小BMI值,將其四捨五入後以下方格式輸出
```bash=
以範例檔1060304.SM內的資料
170,45
165,50
170,55
為例
第四題結果:最小BMI值=15,不正常
```
解題邏輯:
(1)建立3個陣列 h(3) w(3) bmi(3) 及s_bmi
(2)把範例檔的三組資料存進陣列
```bash=
FileOpen(1,"D://test//1060304.SM",OpenMode.Input)
For i=1 to 3
Input(1,h(i)):Input(1,w(i))
bmi(i)=w(i)/((h(i)/100)*(h(i)/100))
Next
s_bmi=bmi(1)
FileClose(1)
```
(3)找出最小BMI值
```bash=
For i=1 To 3
If bmi(i)<s_bmi Then s_bmi=bmi(i)
Next
```
(4)四捨五入
```bash=
Dim s_bmi45 As Integer
If s_bmi Mod 10=0.5 Then s_bmi=s_bmi+0.5
s_bmi45=s_bmi
```
(5)判斷及輸出
```bash=
If s_bmi45 >=20 And s_bmi45<=25 Then
textBoxX.Text="第四題結果:最小BMI值=" & s_bmi45 &",正常"
Else
textBoxX.Text="第四題結果:最小BMI值=" & s_bmi45 &",不正常"
End If
```
<h3>第一套第五題1060305</h3>
簡介:第一套第五題為<font color=red>矩陣相加</font>,應檢人應讀取測試檔,將其計算後以下方格式輸出
```bash=
以範例檔1060305.SM內的資料
1,2
3,4
5,6
7,8
為例
第五題結果:
[6 8]
[10 12]
```
解題邏輯:
(1)定義三個陣列 `a(2,2) b(2,2) c(2,2)`
(2)讀入資料
```bash=
Input(1,a(1,1)) : Input(1,a(1,2))
Input(1,a(2,1)) : Input(1,a(2,2))
Input(1,b(1,1)) : Input(1,b(1,2))
Input(1,b(2,1)) : Input(1,b(2,2))
```
(3)運用兩個迴圈進行運算
FOR LOOP
``` bash
For i = 1 To 2
For j = 1 To 2
c(i, j) = a(i, j) + b(i, j)
Next
Next
```
DO WHILE ... LOOP
```bash=
Dim i = 1
Do While i <= 2
Dim j = 1
Do While j <= 2
c(i, j) = a(i, j) + b(i, j)
j = j + 1
Loop
i = i + 1
Loop
```
DO LOOP ... WHILE
```bash=
Dim i = 1
Do
Dim j = 1
Do
c(i, j) = a(i, j) + b(i, j)
j = j + 1
Loop While j <= 2
i = i + 1
Loop While i <= 2
```
(4)輸出
```bash=
Dim m1 = "[" & c(1,1) & " " & c(1,2) & "]" &vbNewLine
m1 =m1+ "[" & c(2,1) & " " & c(2,2) & "]" &vbNewLine
TextBoxX.Text="第五題結果:" & vbNewLine & m1
```
<h3>報表列印</h3>
(1)在Form上新增PrintDocument
(2)對列印按鈕點兩下,輸入`Call PrintDocument1.print()`
(3)在Form上對PrintDocument1點兩下,輸入
```bash=
Dim vn=vbNewLine
Dim m1="姓名:[黃子瑋] 術科測試編號:[0919105002]"& vn
m1=m1+"座號:[19] 日期:[2020/09/19]"& vn &vn
m1=m1+TextBoxX.Text &vn &vn
m1=m1+TextBoxX.Text &vn &vn
m1=m1+TextBoxX.Text &vn &vn
e.Graphic.DrawString(m1,TextBoxX.Text,Brushes.Black,100,100)
```
<h2>第二套題組</h2>
{%hackmd B1pEdkJHP %}
{%hackmd HJnPGy74D %}
{%hackmd Hk4ifym4w %}
###### tags: `電腦軟體設計丙級(Visual Basic)`