วันศุกร์ที่ 2 กันยายน พ.ศ. 2554

คำสั่ง (Statement) และโพรซีเยอร์ (Procedure) ภาค2

ในบทความนี้เราจะมาเรียนรู้คำสั่ง case และการวนลูปแบบต่าง ๆ ซึ่งจำเป็นมากสำหรับการเขียนโปรแกรมให้มีประสิทธิภาพ

คำสั่ง Select-Case
คำสั่งนี้เหมาะสำหรับกรณีที่มีเงื่อนไขมาก ๆ เพราะถ้าเราใช้เงื่อนไขแบบ If-Then-ElseIf จะทำให้สับสนมากเพราะถ้ากรณีที่เราต้องการตรวจสอบเงื่อนไขมาก ๆ แล้วเราจะไม่สามารถจัดกลุ่มหรือจัดระเบียบให้โค้ดเรียบร้อยได้เลย แต่ด้วยคำสั่ง Select Case จะช่วยลดขั้นตอนและความสับสนทั้งหมดที่เกิดขึ้นมาได้ ซึ่งมีรูปแบบการใช้งานดังนี้

Select Case testexpression
Case expressionlist1
statements1
Case [Is] expressionlist2
statements2
[Case [Is] expressionlist-n ]
[statements-n ] 
Case Else
elsestatements
End Select

คำสั่ง Select Case หมายถึง เริ่มกรณีตรวจสอบแบบ Select Case
ตัวแปร testexpression หมายถึง ตัวแปรที่จะนำมาตรวจสอบ
ตัวแปร expressionlist1 หมายถึงค่าของตัวแปรในกรณีที่ 1
ตัวแปร statement1 หมายถึง ชุดคำสั่งที่ต้องกระทำ เมื่อค่าของตัวแปรตรงกับกรณีที่ 1
ตัวแปร expressionlist2 หมายถึงค่าของตัวแปรในกรณีที่ 2
ตัวแปร statement2 หมายถึง ชุดคำสั่งที่ต้องกระทำ เมื่อค่าของตัวแปรตรงกับกรณีที่ 2
คำสงวน Is จะใช้ในกรณีที่เราใส่เฉพาะเงื่อนไข ซึ่ง Visual Basic จะใส่ให้เราโดยอัตโนมัติ
คำสั่ง Case Else หมายถึง เมื่อค่าของตัวแปร ไม่เท่ากับกรณีที่ผ่านมาทั้งหมด ให้มาที่กรณีนี้
ตัวแปร elsestatements หมายถึง ชุดคำสั่งสำหรับกรณีที่ค่าของตัวแปรไม่ตรงกับกรณีใดเลย
คำสั่ง End Select หมายถึง จบการตรวจสอบแบบ Select Case เช่น

Private Sub Command1_Click()
Dim counter As Integer
counter = 6
Select Case v
Case Is < = 5
Debug.Print " counter less than or equal 5"
Case Is < = 7
Debug.Print " counter less than or equal 7"
Case Else
Debug.Print " counter is very big"
End Select
End Sub

จากตัวอย่างข้างต้น ให้ลองทดสอบเปลี่ยนค่าของตัวแปร counter ไปเรื่อยๆ สังเกตผลที่หน้าต่าง Immediate

กลุ่มคำสั่งที่ใช้สำหรับสั่งให้ทำซ้ำ (Iterations)
คำสั่งในกลุ่มนี้เป็นอีกกลุ่มหนึ่งที่เราจะต้องใช้งานบ่อยที่สุดเช่นกันเพราะมีหน้าที่สำหรับสั่งให้โปรแกรมประมวลผลซ้ำกลุ่มคำสั่งเดิมไปเรื่อย ๆ จนกว่าจะตรงกับเงื่อนไขที่เราต้องการและนอกจากนี้ยังมีหน้าที่สำหรับลดขั้นตอนในการเขียนโค้ดที่มีลักษณะเหมือนๆ กันได้อีกด้วย คำสั่งวนซ้ำที่สำคัญประกอบด้วย

·        For-Next
·        Do While-Loop
·        Do-Loop While
·        Do Until-Loop
·        Do-Loop Until

คำสั่ง For-Next
For-Next เป็นชุดคำสั่งสำหรับการทำซ้ำที่มีจำนวนรอบหรือขอบเขตที่ต้องการให้ทำซ้ำที่แน่นอน มีรูปแบบการใช้งานดังนี้


For counter = start To end   [Step step ]
statements
[
Exit For]
[statements ]
Next [counter ]

ตัวแปร counter หมายถึง ตัวแปรที่เรากำหนดขึ้นมาเพื่อเป็นตัวนับรอบที่ใช้ในการวนลูป
ตัวแปร start หมายถึง ค่าเริ่มต้นของตัวนับเป็นเลขจำนวนจริง เราควรที่จะใช้เลขจำนวนเต็มเท่านั้น เพื่อง่ายต่อการตรวจสอบค่าตัวนับ
คำสงวน To หมายถึง ขอบเขตการนับ
ตัวแปร end หมายถึง ค่าสิ้นสุดของตัวนับไม่จำเป็นต้องเป็นตัวเลขในบางครั้งเราอาจสร้างเป็นเงื่อนไขที่ไม่ใช่ตัวเลขก็ได้ แต่ในการใช้งานโดยทั่วๆ ไปจะเป็นตัวเลขและควรจะเป็นเลขจำนวนเต็มด้วย
คำสงวน Step หมายถึง เป็นการกำหนดค่าที่จะเพิ่มขึ้นของตัวนับในแต่ละรอบ ถ้าไม่กำหนดจะเพิ่มรอบละ 1
ตัวแปร step หมายถึง ค่าของตัวนับที่จะเพิ่มขึ้นในแต่ละรอบจะต้องเป็นเลขจำนวนจริงเท่านั้น ในการใช้งานตามปกติ เราควรใช้เลขจำนวนเต็มเพื่อง่ายต่อการตรวจสอบจำนวนรอบในภายหลัง
ตัวแปร statements หมายถึง ชุดคำสั่งที่เราต้องการวนลูป
คำสั่ง Exit For หมายถึง คำสั่งที่บังคับให้ออกจากลูปทันทีจะใช้ในบางกรณีเท่านั้น เช่น การดักจับข้อผิดพลาด

สำหรับตัวอย่างการใช้งานคำสั่ง For-Next มีดังนี้

Private Sub Form_Activate()
Dim i As Integer
For i = 1 To 10
Print i
Next i
End Sub

ตัวอย่างดังกล่าว เป็นการพิมพ์เลขตั้งแต่ 1-10 ลงบนฟอร์ม ให้ผู้อ่านลองเปลี่ยน step จาก 1 เป็น 2 แล้วสังเกตผล

คำสั่ง Do While-Loop
คำสั่ง Do While-Loop เป็นคำสั่งทำซ้ำที่มีจำนวนรอบของการทำคำสั่งขึ้นอยู่กับเงื่อนไข

Do While condition
statements
[
Exit Do]
Loop

ตัวแปร condition หมายถึง เงื่อนไขที่เรากำหนดขึ้นมา
ตัวแปร statements หมายถึง ชุดคำสั่งที่ต้องการทำซ้ำ
คำสั่ง Exit Do หมายถึง ออกจาก Do While-Loop ทันที
คำสั่ง Loop หมายถึง ขอบเขตสิ้นสุดการวนลูป
การทำซ้ำแบบ Do While นี้ จะวนลูปก็ต่อเมื่อเงื่อนไข (ตัวแปร condition) ยังเป็นจริงอยู่ถ้าเงื่อนไขดังกล่าวเป็นเท็จเมื่อใดก็จะออกจากลูปทันที

Private Sub Form_Activate()
Dim i As Integer
 Do While i <= 10
Print i
i = i + 1
Loop
End Sub

ตัวอย่างด้านบนจะมีผลเหมือนกับลูป For-Next เพียงแต่เปลี่ยนลักษณะวนลูปและเงื่อนไข มีข้อที่น่าสังเกตคือ การใช้ลูปแบบนี้จะมีโอกาสที่ไม่ต้องวนลูปเลยแม้แต่รอบเดียวนั่นคือ ถ้าเงื่อนไขที่เข้ามาเป็นเท็จก็ไม่ต้องวนทันที เช่น

Private Sub Form_Activate()
Dim i As Integer
i = 11
Do While i <= 10
Print i
i = i + 1
Loop
End Sub

จะเห็นได้ว่าบนฟอร์มไม่มีการพิมพ์เลข แต่อย่างใดเพราะตัวแปร i มีค่าเท่ากับ 11 ส่งผลให้เงื่อนไขเป็นเท็จทันที

คำสั่ง Do-Loop While
คำสั่ง Do While-Loop เป็นคำสั่งทำซ้ำที่มีจำนวนรอบของการทำคำสั่งขึ้นอยู่กับเงื่อนไข เช่นเดียวกับ Do While-Loop
Do
statements
[
Exit Do]
Loop While condition

ตัวแปร condition หมายถึง เงื่อนไขที่เรากำหนดขึ้นมา
ตัวแปร statements หมายถึง ชุดคำสั่งที่ต้องการทำซ้ำ
คำสั่ง Exit Do หมายถึง ออกจาก Do- Loop While ทันที
คำสั่ง Loop หมายถึง ขอบเขตสิ้นสุดการวนลูป
จะเห็นได้ว่ามีลักษณะคล้ายกับแบบที่ 1 เพียงแต่ย้ายเงื่อนไขมาไว้ด้านล่างซึ่งหมายความว่า ลูปแบบนี้จะวนอย่างน้อยที่สุด 1 รอบ เพื่อตรวจสอบเงื่อนไข (ตัวแปร condition) ในรอบแรกที่เข้ามาก่อนว่าเป็นจริง หรือเท็จ ถ้าจริงก็จะวนลูปต่อไปตามปกติ แต่ถ้าเป็นเท็จ จะออกจากลูปทันที เช่น

Private Sub Form_Activate()
Dim i As Integer
Do
Print i
i = i + 1
Loop While i <= 10
End Sub

เช่นกัน ตัวอย่างนี้เป็นการพิมพ์เลขตั้งแต่ 1 ถึง 10 บนฟอร์มให้ผู้อ่านลองเปลี่ยนเงื่อนไขดังนี้

Private Sub Form_Activate()
Dim i As Integer
i = 11
Do
Print i
i = i + 1
Loop While i <= 10
End Sub

ข้อแตกต่างของลูป Do While - Loop กับ Do-Loop While นั่นคือถ้าเป็น Do While-Loop กรณีที่เงื่อนไขเป็นเท็จบนฟอร์มจะไม่ปรากฏตัวเลขอะไรเลยเพราะเนื่องจากว่าไม่ได้มีการวนลูปแต่อย่างใดเพราะเงื่อนไขเป็นเท็จ (ค่า I = 11) เราเรียกโครงสร้างแบบนี้ว่า Pre loop test ส่วนลูปแบบ Do-Loop While จะปรากฎค่าของตัวเงื่อนไขออกมาก่อน ถ้าจริงก็จะวนลูปตามปกติแต่กรณีนี้เป็นเท็จจึงแสดงค่าออกมา 1 ค่า ซึ่งเกิดมาจากการวนรอบแรกนั่นเอง เราเรียกโครงสร้างแบบนี้ว่า Post loop test

คำสั่ง Do Until-Loop
คำสั่ง Do Until-Loop มีหน้าที่สั่งให้วนลูปโดยมีจำนวนรอบที่ทำคำสั่งขึ้นอยู่กับเงื่อนไข (condition) ถ้าเงื่อนไขเป็นเท็จจึงจะวนลูปแต่ถ้าเป็นจริงจะไม่มีการวนแต่อย่างใดซึ่งจะตรงกันข้ามกับลูปชนิด Do While-Loop มีรูปแบบการใช้งานดังนี้
Do Until condition
statements
[
Exit Do]
statements
Loop

ตัวแปร condition หมายถึง เงื่อนไขที่เรากำหนดขึ้นมา
ตัวแปร statements หมายถึง ชุดคำสั่งที่ต้องการทำซ้ำ
คำสั่ง Exit Do หมายถึง ออกจาก Do Until- Loop ทันที
คำสั่ง Loop หมายถึง ขอบเขตสิ้นสุดการวนลูป เช่น

Private Sub Command1_Click()
Dim x As Integer
Do Until x >= 10
Print x
x = x + 1
Loop
End Sub

ตัวอย่างนี้เป็นการพิมพ์เลข 1 ถึง 10 ลงบนฟอร์ม ทุกๆ ครั้งที่มีการคลิ๊กที่ปุ่ม Command1

คำสั่ง Do-Loop Until
คำสั่งการวนลูปแบบ Do-Loop Until มีลักษณะคล้ายกับลูปแบบ Do-Loop While เพียงแต่เงื่อนไขที่เข้ามาจะต้องเป็นเท็จ จึงจะวนลูป ถ้าเงื่อนไขเป็นจริงจะออกจากลูปทันทีการใช้ลูปแบบนี้จะมีการวนอย่างน้อยที่สุด 1 รอบเช่นกัน เนื่องจากการวนรอบแรกที่จะต้องมีการตรวจสอบเงื่อนไขนั่นเองมีรูปแบบการใช้งานดังนี้
Do
statements
[
Exit Do]
[statements ]
Loop Until condition

ตัวแปร condition หมายถึง เงื่อนไขที่เรากำหนดขึ้นมา
ตัวแปร statements หมายถึง ชุดคำสั่งที่ต้องการทำซ้ำ
คำสั่ง Exit Do หมายถึง ออกจาก Do Loop-Until ทันที
คำสั่ง Loop หมายถึง ขอบเขตสิ้นสุดการวนลูป เช่น

Private Sub Command1_Click()
Dim x As Integer
x = 11
Do
Print x
x = x + 1
Loop Until x >= 10
End Sub

จากตัวอย่างนี้จะเห็นได้ว่า ค่า x =11 ซึ่งถึงแม้ว่าจะทำให้เงื่อนไขเป็นจริง (ออกจากลูป) ก็ตามแต่ฟอร์ม ก็ยังคงพิมพ์ค่า x ออกมา 1 ค่าเนื่องจากการวนรอบแรกนั่นเอง

Note:
สังเกตว่าในกรณีที่เราประกาศตัวนับเป็นเลขจำนวนเต็มชนิด Integer ขอให้ระวังเกี่ยวกับจำนวนรอบ เนื่องจากขอบเขตของข้อมูลขนิด Integer มีค่าระหว่าง -32768 ถึง 32767 ซึ่งถ้าเราใช้แต่ค่าบวกจะทำให้ตัวแปรดังกล่าว สามารถวนได้เพียง 32768 รอบเท่านั้น เราสามารถทดลองโดยเขียนโปรแกรมการวนซ้ำมากกว่า 32767 รอบจะพบว่าเกิด runtime error ‘6’ Overflow

    วันนี้เราก็ได้จบเรื่อง Statement ทั้งหมดของ VB ไว้เท่านี้ ในบทความต่อไปเราจะพูดถึงโพรซีเยอร์ ซึ่งถือว่าสำคัญมากในการเขียนโปรแกรมที่โปรแกรมเมอร์ต้องได้พบเจอร์ โพรซีเยอร์ที่สำคัญก็มีแค่ 2 ชนิดคือ ซับรูทีนและฟังก์ชัน

1 ความคิดเห็น:

  1. No Deposit Bonus - Casino Roll
    With no deposit bonuses, players can 포커 게임 하기 take advantage of no deposit bonus offers and free cash upon registration without 메이저사이트 추천 ever depositing 우리 계열 any av 보는 곳 money. No  Rating: 2.9 max88 · ‎14 votes

    ตอบลบ