19. การเขียนโปรแกรมพื้นฐาน 1 19
นิพจน การประมวลผล
3 + 4 * 12 จะเริ่มทํา 4 * 12 กอน แลวจึง + 3 = 51
(3 + 4) * 12 จะเริ่มทํา 3 + 4 กอน แลวจึง * 12 = 84
Sale > 5000 AND Revenue > 5 + 6 * 7 จะเริ่มทํา 6 * 7 กอน แลว + 5 = 47 กอน จากนั้นทํา (Sale > 5000) แลวทํา (Revenue
> 47) แลวจึงทํา AND ผลลัพธของ (Sale > 5000) กับผลลัพธของ (Revenue > 47)
ประโยคแบบเงื่อนไข (Condition Statement)
จะเปนประโยคคําสั่งที่ใชการสรางเงื่อนไขในโปรแกรมเพื่อใหโปรแกรมไปดําเนินการที่สวนของโปรแกรม
ที่เราตองการเมื่อเกิดเงื่อนไขที่เรากําหนดไว คําสั่งประเภทนี้ไดแก IF – THEN – ELSE, IF – THEN – ELSE – END
IF, IF – THEN – ELSEIF และ SELECT – CASE โดยมีรายละเอียดดังนี้
IF – THEN – ELSE
คือ คําสั่ง IF – THEN เปนคําสั่งที่ใชเมื่อตองการใหคอมพิวเตอรตัดสินใจวาจะไปทํางานในโปรแกรมสวน
ใดจากทางเลือกและขอกําหนดที่เราไดเตรียมไวใหในโปรแกรม รูปแบบของคําสั่ง IF – THEN จะมีลักษณะดังนี้
IF (Condition1) THEN Statement1
.....คําสั่งบรรทัดถัดไป... True
Condition1? Statement1
False
การทํางานของโปรแกรมจะตรวจสอบ Condition1 วาเปนจริงหรือเท็จ ถาเปนจริงโปรแกรมจะวิ่งไปทํางาน
ที่ Statement1 แตถา Condition1 เปนเท็จโปรแกรมจะขาม Statement1 และวิ่งไปทํางานบรรทัดถัดไปแทน หรือ
If (Condition1) THEN Statement1 ELSE Statement2
เพื่อใหทํางาน Statement2 ในกรณีที่ Condition1 เปนเท็จดวยก็ได
IF – THEN – ELSE – END IF
จะเหมือนกับ IF – THEN – ELSE เพียงแตสามารถมี Statement ที่จะทํางานมากกวาหนึ่งบรรทัดได (IF-
THEN มี Statement ไดเพียงหนึ่งคําสั่งหลัง THEN และหนึ่งคําสั่งหลัง ELSE และจะตองอยูในบรรทัดเดียวกัน
เทานั้น) รูปแบบของ IF – THEN – ELSE – END IF จะเปนดังนี้
IF (Condition1) THEN
(Statement1)
(Statement2) (Statement1)
A ……. Condition1? True (Statement2)
(StatementN) False …….
ELSE (StatementN)
(StatementA) (StatementA)
B (StatementB) (StatementB)
……. …….
(StatementX) (StatementX)
END IF
20. การเขียนโปรแกรมพื้นฐาน 1 20
โปรแกรมจะตรวจสอบ Condition1 วาเปนจริงหรือเท็จ
ถา Condition1 เปนจริงจะวิ่งไปทํางานสวนของโปรแกรมในบล็อก A จาก Statement1 จนถึงบรรทัด StatementN
แลวจึงทํางานตอที่คําสั่งหลังบรรทัด END IF
ถา Condition1 เปนจริงจะวิ่งขามบล็อก A ไปทํางานสวนของโปรแกรมในบล็อก B จาก StatementA จนถึง
บรรทัด StatementX แลวจึงทํางานตอหลังบรรทัด END IF
คําสั่งนี้จะใชโดยไมมีสวนของ ELSE เพื่อให IF – THEN สามารถทํางานหลาย ๆ คําสั่งไดโดยจะตองยังคงมี
END IF อยู
IF – THEN – ELSEIF
จะมีรูปแบบการใชงานเหมือนกับ IF – THEN – ELSE – END IF แตจะสามารถใส Condition ซอนเขาไปได
อีก โดยคําสั่งจะมีลักษณะและแผนภาพการทํางานดังนี้
IF (Condition1) THEN
… Condition1?
Block1
Condition2?
ELSEIF (Condition2) THEN
… Condition3?
Block2
ELSEIF (Condition3) THEN
…
Block3
ELSE (Block1) (Block2) (Block3) (Block4)
…
Block4
…
END IF
จากแผนภาพจะเห็นวา
ถา Condition1 เปนจริงโปรแกรมจะทํางานที่ Block1 หลังจากทํา Block1 เสร็จเรียบรอยแลวจะไปทํางานบรรทัด
หลัง END IF เลย ไมมีการตรวจสอบ Condition2 ตออีก
ถา Condition1 เปนเท็จ โปรแกรมจึงจะไปตรวจสอบ Conditon2 ตอไป
SELECT – CASE
คําสั่ง SELECT- CASE เปนคําสั่งในการเลือกทํา ซึ่งจะทํางานคลายกับ IF – THEN – ELSEIF แต SELECT
– CASE จะเหมาะสําหับการเปรียบเทียบคาตัวแปรตัวเดียว แลวกระโดดไปทํางานที่สวนอื่น ๆของโปรแกรมตาม
เงื่อนไขของตัวแปรที่ตรวจสอบ โดยมีรูปแบบการเขียนโปรแกรมดังนี้
21. การเขียนโปรแกรมพื้นฐาน 1 21
SELECT Case ตัวแปร ตรวจสอบตัวแปร
Case (Condition1)
…
Block1 Condition1 จริง Condition2 จริง Condition3 จริง อื่นๆ
…
Case (Condition2) Block1 Block2 Block3 Block4
…
Block2
…
Case (Condition3)
… ตรวจสอบตัวแปร A
Block3
…
CASE ELSE A=1 A=2 A=3 A = คาอื่น ๆ
…
Block4 พิมพ A = 1 พิมพ A = 2 พิมพ A = 3 พิมพ A Not equal
… 1 or 2 or 3
END SELECT
ตัวอยาง โปรแกรมที่ใช SELECT – CASE
Select Case A ‘ตรวจสอบตัวแปร
Case 1 ‘ถาตัวแปร A = 1
Print “A = 1” ‘พิมพคําวา “A = 1”
Case 2 ‘ถาตัวแปร A = 2
Print “A = 2” ‘พิมพคําวา “A = 2”
Case 3 ‘ถาตัวแปร A = 3
Print “A = 3” ‘พิมพคําวา “A = 3”
Case Else ‘ถาตัวแปรเทากับคาอื่น ๆ
Print “A Not equal 1 or 2 or 3.”
End Select ‘จบชุดคําสั่ง Select
เงื่อนไขที่ใชใน Case ถาเปนการเปรียบเทียบตัวแปรที่ Select วาเทากับเทาใด ก็สามารถใชคาคงที่หรือตัวเลข
ไดในทันที แตถาตองการเปรียบเทียบซับซอนขึ้นใหใชคําวา IS แทนตัวแปรที่ Select และใชเงื่อนไขการเปรียบเทียบ
ใด ๆ ไดเชนเดียวกับใน IF – THEN – ELSE IF
23. การเขียนโปรแกรมพื้นฐาน 1 23
การใช & ใน Property Caption จะทํา
ใหผูใช สามารถใชคีย Alt + (คียหลัง
เครื่องหมาย &) ในการควบคุมการกด
ปุมนั้นไดดวย นอกเหนือจากการใช
เมาสตามปกติ
ประโยคแบบวนซ้ํา
จากที่ไดศกษาประโยคควบคุมการทํางานแบบเงื่อนไข (Condition Statement) เชน IF – THEN – ELSE และ
ึ
SELECT – CASE กันแลว ตอไปนีจะเปนคําสั่งควบคุมการทํางานแบบวนซ้ําหรือที่เรียกวาแบบวนลูป (Iteration
้
Statement) กันบาง ซึ่งคําสั่งประเภทนี้ไดแก FOR – NEXT, DO – WHILE และ DO UNTIL ซึ่งก็ลวนแลวแตเปน
การทํางานแบบมีเงื่อนไขเชนกัน คําสั่งสําหรับการทําซ้ําหรือวนลูปมีดงตอไปนี้
ั
FOR NEXT
คําสั่ง For Next มีรูปแบบคําสั่งดังนี้
รูปแบบ
FOR ตัวแปร = คาเริ่มตน TO คาสิ้นสุด [STEP คาที่เพิ่มขึ้นในแตละรอบ]
ชุดคําสั่งตาง ๆ
[EXIT FOR]
NEXT ตัวแปร
ตัวอยาง 1 โปรแกรมพิมพคาตังแต 1 ถึง 10 ลงบนฟอรมสามารถเขียนโปรแกรมไดดงนี้
้ ั
Dim I as Integer ‘ประกาศตัวแปร I เปนเลขจํานวนเต็ม
Private Sub Command1_Click()
Cls ‘ลางหนาจอของฟอรมใหวาง (Clear Screen)
For I = 1 to 10 ‘กําหนดใหโปรแกรมทํางานตั้งแต I เริ่มจาก 1 ถึง 10 เพิ่มคาทีละ 1
Print ‘พิมพคา I ออกทางหนาจอ (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
NEXT I ‘วนกลับไปทําที่บรรทัด For และพิมพคา I ตามคาที่กําหนดใน Step
End Sub ‘ถาไมกําหนด จะเปนคาดีฟอลตคือเพิ่มคาทีละ 1
ตัวอยาง 2 โปรแกรมพิมพคาเลขคี่ตั้งแต 1 ถึง 10 ลงบนฟอรม
Dim I as Integer ‘ประกาศตัวแปร I เปนเลขจํานวนเต็ม
Private Sub Command1_Click()
Cls ‘ลางหนาจอของฟอรมใหวาง (Clear Screen)
For I = 1 to 10 ‘กําหนดใหโปรแกรมทํางานตั้งแต I เริ่มจาก 1 ถึง 10 เพิ่มคาทีละ 2
Print ‘พิมพคา I ออกทางหนาจอ (1, 3, 5, 7, 9)
NEXT I ‘วนกลับไปทําที่บรรทัด For และเพิ่มคา I ตามคาที่กําหนดใน Step
End Sub
24. การเขียนโปรแกรมพื้นฐาน 1 24
ตัวอยาง 3 โปรแกรมพิมพคาเลขคูตั้งแต 20 ถึง 10 ลงบนฟอรม
Dim I as Integer ‘ประกาศตัวแปร I เปนเลขจํานวนเต็ม
Private Sub Command1_Click()
Cls ‘ลางหนาจอของฟอรมใหวาง (Clear Screen)
For I = 20 to 10 Step -2 ‘กําหนดใหโปรแกรมทํางานตั้งแต I เริ่มจาก 1 ถึง 10 ลดคาทีละ 2
Print ‘พิมพคา I ออกทางหนาจอ (20, 18, 16, 14, 12, 10)
NEXT I ‘วนกลับไปทําที่บรรทัด For และลดคา I ตามคาที่กําหนดใน Step
End Sub
DO – WHILE – LOOP และ DO – LOOP – WHILE
รูปแบบคําสั่ง DO – WHILE – LOOP มีดังนี้
รูปแบบ DO WHILE Condition1 Condition1
ชุดคําสั่ง True False
[EXIT DO] ชุดคําสั่ง
LOOP
ชุดคําสั่งภายในประโยค DO – WHILE จะทําวนซ้ําไปเรื่อยๆ ตราบใดที่ Condition1 เปนจริง (ทําชุดคําสั่ง ในขณะที่
Condition1 จริง) เมื่อใดที่ Condition1 เปนเท็จก็จะหลุดออกจากลูปไปทํางานโปรแกรมในบรรทัดถัดไปจากคําสั่ง
LOOP
รูปแบบของคําสั่ง DO – LOOP – WHILE มีดังนี้
ชุดคําสั่ง
รูปแบบ DO True
ชุดคําสั่ง
[EXIT DO] Condition1
False
LOOP
ชุดคําสั่งภายใน DO – LOOP จะทําวนซ้ําไปเรื่อย ๆ ตราบใดที่ Condition1 เปนจริง (ทําชุดคําสั่งในขณะที่
Condition1 จริง) เมื่อใดที่ Condition1 เปนเท็จก็จะหลุดออกจาก Loop While ไปทํางานโปรแกรมในบรรทัดถัดไป
จากคําสั่ง Loop While จะเห็นวา Do – While – Loop เหมือนกับ Do – Loop – While แทบทุกประการแตจะตางกันที่
การทําชุดคําสั่งในครั้งแรกเทานั้น คือ Do – While – Loop จะมีการตรวจสอบเงื่อนไข Condition1 กอนแลวจึงทํา
ชุดคําสั่ง แตสําหรับ Do – Loop – While จะทําชุดคําสั่งกอนเลยแลวคอยตรวจสอบเงือนไขวาจะวนลูปหรือไม
่
ตัวอยาง โปรแกรมสั่งและกินผัดไทยจนอิมโดยใช Do – While – Loop และ Do – Loop – While
่
Do While ยังไมอิ่ม Do
สั่งผัดไทย (1) สั่งผัดไทย (2)
กินผัดไทย กินผัดไทย
Loop Loop While ยังไมอิ่ม
จะเห็นวาทั้งโปรแกรม (1) และ (2) จะทํางานเหมือนกันคือกินผัดไทยจนอิ่มแลวจึงเลิกกินผัดไทยและออก
จากลูปแต (1) กับ (2) จะตางกันที่การกินผัดไทยจานแรก ในโปรแกรม (1) จะมีการถามกอนวาอิ่มหรือยัง ถาอิ่มแลวก็
25. การเขียนโปรแกรมพื้นฐาน 1 25
ไมมีการกินผัดไทยแตจะออกจากลูปเลย แตในโปรแกรมที่ (2) จะไมมีการถาม มาถึงกินผัดไทยจานแรกกอนเลย
แลวจึงคอยตรวจสอบเงื่อนไขวาอิ่มหรือยัง
Do – Until – Loop และ Do – Loop - Until
คําสั่ง Do – Until จะมีลกษณะคลายกับ Do – While เพียงแตจะมีตรรกะในการตัดสินใจการวนลูปกลับกัน
ั
โดย Do – Until – Loop จะมีรูปแบบคําสั่งดังนี้
รูปแบบ
Do Until Condition1 Condition1
ชุดคําสั่ง False True
[EXIT DO] ชุดคําสั่ง
Loop
รูปแบบ
ชุดคําสั่ง
Do False
ชุดคําสั่ง
[EXIT DO] Condition1
Loop Until True
สําหรับ Do – Until ชุดคําสั่งจะทําวนซ้ําก็ตอเมื่อ Condition1 เปนเท็จ (ซึ่งจะตรงขามกับ Do While) กลาวคือ
ชุดคําสั่งจะถูกทําจนกระทั่ง Condition1 เปนจริงแลวจะเลิกทํา สําหรับ Do – Loop – Until ก็จะเหมือนกับ Do – Until
– Loop แตจะตางกันที่การตรวจสอบเงื่อนไขในครั้งแรกเทานั้น
ตัวอยาง โปรแกรมสั่งและกินผิดไทยจนอิมสุด ๆ โดยใช Do – Until – Loop และ Do – Loop – Until
่
Do Until อิ่มสุด ๆ Do
สั่งผัดไทย สั่งผัดไทย
กินผัดไทย กินผัดไทย
Loop Loop Until อิ่มสุด ๆ