วันเสาร์ที่ 3 สิงหาคม พ.ศ. 2556

Ex.19 คำสั่งควบคุมแบบทำซ้ำ (For Next)

6. คำสั่งทำซ้ำแบบ For Next
คำสั่งนี้จะ ทำซ้ำตามจำนวนค่าเริ่มต้นจนถึง จำนวนรอบที่ได้กำหนดค่าไว้โดยที่ทุกรอบจะวนรอบทีละ 1 หรือตามจำนวนช่วงการเพิ่มค่าที่ระบุ (คำสั่งจะมีหรือไม่ก็ได้) จากคำสั่งทำซ้ำนี้นักศึกษาสามารถทำความเข้าใจได้ไม่ยาก เพราะ สามารถระบุจำนวนรอบได้เลย 
รูปแบบ
For 1.นิพจน์กำหนดค่าเริ่มต้น  To 2. จำนวนรอบ [Step 3. ช่วงการเพิ่มค่า] 
Next 

ตัวอย่าง
For   A = 1 To  50  Step 5     
Next 


ตัวอย่าง โปรแกรมนี้แสดงถึงการเพิ่มค่าทีละ 7 ในจำนวน 1 ถึง 50 สังเกตว่าสามารถระบุช่วงค่าคงที่จำนวนรอบได้เลย  จากนั้นทดลองลบคำสั่ง Step 7 ออก จะเห็นว่าการแสดงผลจะเพิ่มค่าทีละ 1 จนถึง 50 

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|    
|5|             Dim i As Integer
|6|    
|7|             For i = To 50 Step 7
|8|                 Console.WriteLine(i)
|9|             Next
|10|   
|11|            Console.ReadLine()
|12|        End Sub
|13|   
|14|    End Module
การแสดงผล

ตัวอย่าง โปรแกรมนี้เป็นการประยุกต์โดยใช้คำสั่งการทำซ้ำมาซ้อนกัน (ลูปซ้อนลูป) เพื่อในแต่ละรอบให้มีการทำงานซ้ำตามจำนวนรอบ ในตัวอย่างเรียกว่าคำสั่ง For ซ้อน For
|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim i, j As Integer
|5|    
|6|             For i = To 7
|7|                 For j = To i
|8|                     Console.Write("{0} ", j)
|9|                 Next
|10|                Console.WriteLine()
|11|            Next
|12|   
|13|            Console.ReadLine()
|14|        End Sub
|15|   
|16|    End Module

การแสดงผล

ตัวอย่าง การทำงานของตัวอย่างนี้เหมือนกับตัวอย่างที่ผ่านมา ซึ่งเป็นการใช้คำสั่งทำซ้ำซ้อนคำสั่งทำซ้ำ 1 ชั้น ในตัวอย่างเรียกว่าคำสั่ง For ซ้อน Do While

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim i, j As Integer
|5|    
|6|             For i = 1 To 7
|7|                 j = 0
|8|                 Do While j < i
|9|                     j = j + 1
|10|                    Console.Write("{0} ", j)
|11|                Loop
|12|                Console.WriteLine()
|13|            Next
|14|   
|15|            Console.ReadLine()
|16|        End Sub

|17|    End Module

การแสดงผล

สั่งเกตชุดคำสั่ง Do While จะต้องมีนิพจน์ประกอบคำสั่งทำซ้ำ 3 นิพจน์หากขาดนิพจน์ใดการทำงานจะผิดพลาด

Ex.18 คำสั่งควบคุมแบบทำซ้ำ (Do Loop Until)

5.  คำสั่งทำซ้ำแบบ Do  Loop Until 
เป็นคำสั่งทำซ้ำที่จะมีทำการเพิ่มค่าให้กับตัวแปรก่อนจากนั้นจึงตรวจสอบเงื่อนไขทีหลัง หากเงื่อนไขเป็น เท็จ คำสั่งจะทำซ้ำไปจนกว่า การตรวจสอบเงื่อนไขเป็น จริง จึงออกจากการวนรอบ
รูปแบบ
(1)นิพจน์กำหนดค่าเริ่มต้น 
Do
      (2)นิพจน์เพิ่มค่า 
Loop Until  (3)นิพจน์ตรวจสอบเงื่อนไข 
ตัวอย่าง
A = 0
Do 
          A = A + 1
Loop Until  A > 5 
ตัวอย่าง ความแตกต่างจากตัวอย่างที่ผ่านมาคือ ค่าเริ่มต้นจะมีค่าเท่ากับ 10 และจะลดลงทีละ 1 ทุกครั้งที่มีการวนรอบจนกว่า i จะมีค่าเท่ากับ 1 นั้นคือเงื่อนไขเป็น จริง จึงหยุดจากคำสั่งการทำซ้ำนี้    
          จากนั้นทดลองลบการเพิ่มค่าออก( i= i+1 ) จะพบกว่าการทำงานผิดพลาดและการวนรอบจะไม่สิ้นสุด เรียกกว่า “ลูปตาย”
|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim i As Integer = 10
|5|             Do
|6|                 Console.WriteLine(i)
|7|                 i = i - 1
|8|             Loop Until i < 1
|9|    
|10|            Console.ReadLine()
|11|        End Sub
|12|   
|13|    End Module

การแสดงผล

*********************************************

Ex.17 คำสั่งควบคุมแบบทำซ้ำ (Do Loop While)

4. คำสั่งทำซ้ำแบบ Do  Loop While 
เป็นคำสั่งทำซ้ำที่จะมีทำการเพิ่มค่าให้กับตัวแปรก่อนจากนั้นจึงตรวจสอบเงื่อนไขทีหลัง หากเงื่อนไขเป็น จริง คำสั่งจะทำซ้ำไปจนกว่า การตรวจสอบเงื่อนไขเป็น เท็จ จึงออกจากการวนรอบ

รูปแบบ
(1)นิพจน์กำหนดค่าเริ่มต้น 
Do
      (2)นิพจน์เพิ่มค่า 
Loop While  (3)นิพจน์ตรวจสอบเงื่อนไข

ตัวอย่าง
A = 0
Do 
          A = A + 1
Loop While A < 5


ตัวอย่าง โปรแกรมนี้ใช้ในการแสดงผลสูตรคูณซึ่งรับค่าแม่สูตรคูณมาจากแป้นพิมพ์ จากนั้นทำการวนรอบจำนวน 12 รอบ เมื่อเงื่อนไขเป็นเท็จจึงหลุดจากการทำซ้ำ สังเกตการเพิ่มค่าให้กับตัวแปร I ที่มีการเพิ่มค่าก่อนการตรวจสอบเงื่อนไขเสมอ ซึ่งโปรแกรมนี้เป็นการเขียนคำสั่งในการคำนวณอีกรูปแบบหนึ่งก่อนการแสดงผล 
|1|     Module Module1
|2|         Sub Main()
|3|             Dim num As Integer
|4|             Dim sum As Integer
|5|             Dim i As Integer = 1
|6|    
|7|             Console.Write("input multiply:")
|8|             num = Console.ReadLine
|9|             Do
|10|                sum = num * i
|11|                Console.WriteLine("{0} x {1} = {2} ", i, num, sum)
|12|                i = i + 1
|13|            Loop While i <= 12
|14|   
|15|            Console.ReadLine()
|16|        End Sub
|17|    End Module
การแสดงผล
*************************************************

Ex.16 คำสั่งควบคุมแบบทำซ้ำ ( Do Until Loop )

3. คำสั่งทำซ้ำแบบ Do Until  Loop
เป็นคำสั่งทำซ้ำที่จะมีการตรวจสอบเงื่อนไขก่อนการเพิ่มค่าหากเงื่อนไขเป็น เท็จ คำสั่งจะทำซ้ำไปจนกว่า การตรวจสอบเงื่อนไขเป็น จริง จึงออกจากการวนรอบ

รูปแบบ
(1) นิพจน์กำหนดค่าเริ่มต้น
Do Until (2) นิพจน์ตรวจสอบเงื่อนไข
             (3) นิพจน์เพิ่มค่า
Loop

ตัวอย่าง
A = 0
Do Until  A = 5
            A = A + 1
Loop

ตัวอย่าง โปรแกรมนี้ใช้ในการแสดงผลสูตรคูณซึ่งกำหนดค่าคงที่ ของสูตรคูณคือแม่ 7 และให้วนรอบจำนวน 12 รอบ โดยใช้การทำซ้ำแบบ Do Until เมื่อ I มีค่ามากกว่า 12 จริง ก็จะหยุดจากการทำซ้ำนี้
จากนั้นทดลองเขียนโปรแกรมเพื่อให้สามารถรับค่าเลขแม่สูตรคูณและจำนวนรอบ จากแป้นพิมพ์ ซึ่งจะทำให้โปรแกรมมีความยืดหยุ่นมากยิ่งขึ้น

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim num As Integer = 7
|5|            
|6|              Dim i As Integer = 1
|7|             Do Until i > 12
|8|                 Console.WriteLine("{0} x {1} = {2} ", i, num, num * i)
|9|                 i = i + 1
|10|            Loop
|11|   
|12|            Console.ReadLine()
|13|        End Sub
|14|   
|15|    End Module

การแสดงผล

********************************************** 


Ex.15 คำสั่งควบคุมแบบทำซ้ำ (Do While Loop)

2. คำสั่งทำซ้ำแบบ Do While  Loop  
ซึ่งจะเป็นคำสั่งทำซ้ำที่จะมีการตรวจสอบเงื่อนไขก่อนการเพิ่มค่า หากเงื่อนไขเป็นจริงคำสั่งจะทำซ้ำไปจนกว่า การตรวจสอบเงื่อนไขเป็นเท็จ จึงออกจากการวนรอบ

รูปแบบ
(1) นิพจน์กำหนดค่าเริ่มต้น 
Do While (2) นิพจน์ตรวจสอบเงื่อนไข 
             (3) นิพจน์เพิ่มค่า 
Loop

ตัวอย่าง
A = 0
Do While  A < 5
            A = A + 1
Loop

ตัวอย่าง เป็นโปรแกรมตรวจสอบเลขคู่ (Even number) โดยใช้ตำดำเนินการเพื่อหารเก็บเศษ (MOD) และใช้คำสั่ง if มาตรวจสอบเงื่อนไขหากเศษนั้นมีค่าเท่ากับ 0 จะแสดงผลตัวเลขคู่ออกมา ซึ่งในทุกๆ รอบตัวแปร i จะเพิ่มค่าที่ละ 1 จนกว่าตัวแปร i จะมีค่าเท่ากับ 10 ซึ่งจะทำให้เงื่อนไขเป็นเท็จ เพราะ i จะต้องน้อยกว่า 10 เท่านั้น จากนั้นทดลอง 

             - ทดลองเปลี่ยนเงื่อนไข     จาก 10  เป็น 100
             - ทดลองเปลี่ยนเงื่อนไข  จาก 2  เป็น 3 
|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim i As Integer
|5|    
|6|             i = 0
|7|             Do While i < 10
|8|                 i = i + 1
|9|                 If i Mod 2 = 0 Then
|10|                    Console.WriteLine("Even number  is : " & i)
|11|                End If
|12|            Loop
|13|   
|14|            Console.ReadLine()
|15|        End Sub
|16|    End Module

การแสดงผล


************************************

Ex.14 คำสั่งควบคุมแบบทำซ้ำ (While End)

1. คำสั่งทำซ้ำแบบ While  End
เป็นคำสั่งทำซ้ำที่จะมีการตรวจสอบเงื่อนไขก่อนการเพิ่มค่าหากเงื่อนไขเป็นจริงคำสั่งจะทำซ้ำไปจนกว่า การตรวจสอบเงื่อนไขเป็นเท็จ จึงออกจากการวนรอบ

รูปแบบ

(1) นิพจน์กำหนดค่าเริ่มต้น
While (2) นิพจน์ตรวจสอบเงื่อนไข
            (3) นิพจน์เพิ่มค่า
End While

ตัวอย่าง
A = 0
While A < 5
            A = A + 1
End While

ตัวอย่าง เป็นโปรแกรมทำซ้ำโดยการแสดงจำนวนรอบพร้อมกับข้อความ “LRU” ในทุกๆ รอบตัวแปร count จะเพิ่มค่าที่ละ 1 จนกว่าตัวแปร count จะมีค่าเท่ากับ 5 ซึ่งจะทำให้เงื่อนไขเป็นเท็จ เพราะ count จะต้องน้อยกว่า 5 เท่านั้น จากนั้นทดลอง
                 - เปลี่ยนค่าเริ่มต้นจาก count =0  เป็น  count = 1 จากนั้นรันโปรแกรม
                 - เปลี่ยนเงื่อนไข count < 5  เป็น  count <= 5 จากนั้นสักเกตผลการรัน
                 - สลับคำสั่ง บรรทัดที่ 7 และบรรทัดที่  8  จากนั้นสังเกตผลการรัน

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim count As Integer
|5|    
|6|             count = 0
|7|             While count <= 5
|8|                 count = count + 1
|9|                 Console.WriteLine("LRU is : " & count)
|10|            End While
|11|   
|12|            Console.ReadLine()
|13|        End Sub
|14|   

|15|    End Module


การแสดงผล 


**********************************************

Ex.13 คำสั่งควบคุมแบบทำซ้ำ (Loop)

เป็นคำสั่งในการควบคุมโปรแกรมให้ทำงานแบบซ้ำๆ หรือ ทำงานแบบวนรอบการจะให้โปรแกรมทำซ้ำหรือไม่นั้นจะต้องมีการตรวจสอบเงื่อนไขการทำซ้ำของโปรแกรมจะต้องประกอบไปด้วย 3 นิพจน์ คือ
    1) นิพจน์การกำหนดค่าเริ่มต้น
    2) นิพจน์การตรวจสอบเงื่อนไข
    3) นิพจน์เพิ่มค่า


VB.NET มีคำสั่งควบคุมการทำซ้ำ 6 รูปแบบ โดยการเลือกใช้คำสั่งทำซ้ำนั้นก็แล้วแต่ความเหมาะสมของชุดคำสั่งและความถนัดของผู้เขียนโปรแกรม ในที่นี้ผู้สอนได้แบ่งประเภทของคำสั่งทำซ้ำเพื่อให้นักศึกษาได้เข้าใจมากยิ่งขึ้น ดังแผนภาพ


*******************************


Ex.12 การเลือกทำแบบ Select Case

การทำงานที่ต้องมีเงื่อนไขหลายทิศทาง สามารถนำคำสั่ง if มาซ้อนๆ กัน แต่หากแยกเป็นกรณีการใช้คำสั่ง Select Case จะสะดวกกว่า โดยจะเขียนเงื่อนไขไว้หลังคำสั่ง Selected Case … และตรวจสอบเงื่อนไขกับค่าคงที่หลัก Case ที่ได้ระบุไว้

รูปแบบ 

Select Case เงื่อนไขที่
          Case ค่าที่หนึ่ง: นิพจน์คำสั่งที่ 1
          Case ค่าที่สอง: นิพจน์คำสั่งที่ 2
          Case ค่าที่สาม: นิพจน์คำสั่งที่ 3
          Case Else: นิพจน์คำสั่งที่ 4 เมื่อค่าไม่ตรงตามเงื่อนไข
End Select

ตัวอย่าง เป็นการจำลองในการเลือกตัวเลือกเมื่อต้องการ Format drive ซึ่งระบบจะมีข้อความถามเพื่อยืนยัน โดยใช้คำสั่ง if ร่วมกับตัวดำเนินการ OR เมื่อผู้ใช้กดปุ่ม “Y” หรือ “y”  และ  “N” หรือ “n” เข้าไป แต่หากผู้ใช้ป้อนผิดจะแสดงข้อผิดพลาด 

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim grade As String
|5|    
|6|             Console.Write("Please input your grade:  ")
|7|             grade = Console.ReadLine
|8|    
|9|             Select Case grade
|10|                Case "A", "a" : Console.Write("Your point is 4.0")
|11|                Case "B", "b" : Console.Write("Your point is 3.0")
|12|                Case "C", "C" : Console.Write("Your point is 2.0")
|13|                Case "D", "d" : Console.Write("Your point is 1.0")
|14|                Case Else : Console.Write("Invalid input !!")
|15|            End Select
|16|   
|17|            Console.ReadLine()
|18|        End Sub
|19|    End Module


การแสดงผล  

*********************************************

Ex.11 การเลือกทำแบบ if…ElseIf…

การทำงานของฟังก์ชั่น if.. ElseIf แบบหลายทางเลือกจะทำการเปรียบเทียบ ถ้าเงื่อนไขที่ 1 เป็นจริงจะทำงานในนิพจน์ที่ 1 หากเป็นเท็จจะเปรียบเทียบเงื่อนไขที่ 2 ไปเรื่อยจนกว่าจะครบทุกเงื่อนไข

รูปแบบ 

If  เงื่อนไขที่ 1  Then
    นิพจน์ที่ 1 จะทำงานเมื่อเงื่อนไขเป็น จริง
Elseif เงื่อนไขที่ 2  Then
    นิพจน์ที่ 2 จะทำงานเมื่อเงื่อนไขเป็น เท็จ
Else
     นิพจน์ที่ 3  หากไม่มีเงื่อนไขใดเป็นจริง
End if


ตัวอย่าง  โปรแกรมตัดเกรด แบบ 5 เกรด (A-E) ตามเงื่อนไขของคะแนนคือ ถ้าคะแนนตั้งแต่ 80 ขึ้นไปผลลัพธ์คือ A , ถ้าคะแนนตั้งแต่ 70 ขึ้นไปผลลัพธ์คือ B  ถ้าคะแนนตั้งแต่ 60 ขึ้นไปผลลัพธ์คือ C , ถ้าคะแนนตั้งแต่ 50 ขึ้นไปผลลัพธ์คือ D  ถ้าน้อยกว่า 50 ผลลัพธ์คือ E , และหากไม่ตรงเงื่อนไขใดๆ ผลลัพธ์คือ Error 

|1|     Module Module1
|2|    
|3|         Sub Main()
|4|             Dim score As Integer = 70
|5|             Dim result As String
|6|    
|7|             If score >= 80 Then
|8|                 result = "A"
|9|             ElseIf score >= 70 Then
|10|                result = "B"
|11|            ElseIf score >= 60 Then
|12|                result = "C"
|13|            ElseIf score >= 50 Then
|14|                result = "D"
|15|            ElseIf score < 50 Then
|16|                result = "E"
|17|            Else
|18|                result = "Error"
|19|            End If
|20|           
|21|       Console.WriteLine("Grade is {0}", result)
|22|            Console.ReadLine()
|23|        End Sub

|24|    End Module


การแสดงผล


นักศึกษาทดลองเปลี่ยนแปลงค่าคะแนนจาก 70 เป็นคะแนนอื่น หรือ เขียนคำสั่งเพิ่มเติมเพื่อรับค่าคะแนนจะแป้นคีย์บอร์ด


********************************************************

 
ไม่สงวนลิขสิทธิ์บทความใดๆในบล๊อคนี้ หากท่านเห็นว่าเป็นประโยชน์..สามารถเผยแพร่ได้ตามสมควร