คำสั่งควบคุมการทำงาน
เนื้อหา โครงสร้างการควบคุมการทำงานของโปรแกรม โครงสร้างคำสั่งควบคุมการตัดสินใจ (Decision Structure) If… then …else Select case โครงสร้างคำสั่งเรียกซ้ำ (Repetitive Structure) For.. Next While … End While Do While… Loop Do Until...Loop Do Loop…While Do Loop…Until
เครื่องหมายเปรียบเทียบ < น้อยกว่า > มากกว่า <= น้อยกว่าหรือเท่ากับ >= มากกว่าหรือเท่ากับ = เท่ากับ <> ไม่เท่ากับ
เครื่องหมายทางตรรกศาสตร์ and และ Or หรือ Not ไม่
IF .. Then .. Else ใช้กรณีที่มี 1 เงื่อนไข True False condition รูปแบบคำสั่ง if เงื่อนไข Then ชุดคำสั่งเมื่อเงื่อนไขเป็นจริง Else ชุดคำสั่งเมื่อเงื่อนไขไม่เป็นจริง End if Statement 1 Statement 2 Statement 3 Dim DisCount as double Dim Total as double Total = Val(textbox1.text) if Total > 30000 Then DisCount = Total*0.15 Else DisCount = Total*0.05 End if จาก ต.ย. จะเห็นว่าเมื่อซื้อสินค้ามากกว่า 30000 บาทขึ้นไป จะได้รับส่วนลด 15% แต่ถ้าน้อยกว่า 30000 บาท จะได้รับส่วนลด 5 %
IF .. Then .. Else (ต่อ) ต.ย. ในการสอบวัดความรู้ภาษาอังกฤษ (TOEIC) ของ ประชาชนโดยทั่วไป จากคะแนนเต็ม 600 คะแนน ถ้าหาก นศ. ทำได้มากกว่า 80% ของ 600 คะแนนจะถือว่าผ่านการคัดเลือก จงเขียนโปรแกรมเพื่อ รับคะแนน ของผู้เข้าสอบ แล้วแจ้งผลการสอบของคนนั้น ว่าผ่านหรือไม่ผ่าน Dim Score as Integer Dim Result as String Score = Val(TxtScore.Text) if Score > 600*0.8 Then Result = “คุณ ผ่านการสอบ TOEIC” Else Result = “คุณ ไม่ผ่านการสอบ TOEIC” End if LbResult.text = Result TxtScore LbResult
IF .. Then .. Elseif ลักษณะจะคล้ายกับ If .. Then .. Else เพื่อแต่เราสามารถมีทางเลือกของคำตอบได้มากกว่า 2 ทางเลือกขึ้นไป รูปแบบคำสั่ง if เงื่อนไข1 Then ชุดคำสั่งเมื่อเงื่อนไข1 เป็นจริง Elseif เงื่อนไข2 Then ชุดคำสั่งเมื่อเงื่อนไข2 เป็นจริง Elseif เงื่อนไข3 Then ชุดคำสั่งเมื่อเงื่อนไข3 เป็นจริง ...... Else ชุดคำสั่งเมื่อเงื่อนไขข้างต้นทั้งหมดไม่เป็นจริง End if
IF .. Then .. ElseIf ลักษณะจะคล้ายกับ If .. Then .. Else เพื่อแต่เราสามารถมีทางเลือกของคำตอบได้มากกว่า 2 ทางเลือกขึ้นไป ต.ย. จงเขียนโปรแกรมเพื่อตัดเกรดของ นศ. โดยมีเกณฑ์ดังนี้ ถ้ามากกว่าหรือเท่ากับ 80 ขึ้นไปได้ เกรด A score >= 80 75 - 79 ได้เกรด B+ score >= 75 and score <= 79 70 - 74 ได้เกรด B 65 - 69 ได้เกรด C+ 60 - 64 ได้เกรด C 55 - 59 ได้เกรด D+ 50 - 54 ได้เกรด D 0 – 49 ได้เกรด F TxtScore LbResult
IF .. Then .. ElseIF (ต่อ) Dim Score as Integer Dim Grade as String Score = Val(TxtScore.Text) IF Score >= 80 Then Grade = “A” ElseIF Score >=75 and score <=79 Then Grade = “B+” ElseIF Score >=70 and score <=74 Then Grade = “B” ElseIF Score >=65 and score <=69 Then Grade = “C+” ElseIF Score >= 60 and score <=64 Then Grade = “C” ElseIF Score >= 55 and score <=59 Then Grade = “D+” ElseIF Score >= 50 and score <=54 Then Grade = “D” Else Grade = “F” End IF LbResult.Text =Grade
Select .. Case เป็นคำสั่งที่ใช้ในการตัดสินใจเลือกได้หลายทาง เช่นเดียวกับคำสั่ง IF.. Then … ElseIF แต่มีโครงสร้างที่ชัดเจนและเข้าใจได้ง่ายกว่า โดยมีรูปแบบดังนี้ Select Case ตัวแปร Case ค่าของตัวแปรกลุ่มที่ 1 Case ค่าของตัวแปรกลุ่มที่ 2 Case ค่าของตัวแปรกลุ่มที่ 3 Case ค่าของตัวแปรกลุ่มที่ n [ Case Else ] ‘จะมีหรือไม่มีก็ได้ ใช้ในกรณีที่ไม่ตรงกับเงื่อนไขใดเลย End Select
Select .. Case (ต่อ) ต.ย. จงเขียนโปรแกรมเพื่อตัดเกรด โดยใช้เกณฑ์เดียวกับ ต.ย. ก่อนหน้านี้ ด้วยคำสั่ง Select Case Dim score As Integer Dim Grade As String score = TxtScore.Text Select Case Val(score) Case Is >= 80 Grade = "A" Case 75 To 79 Grade = "B+" Case 70 To 74 Grade = "B" Case 65 To 69 Grade = "C+" Case 60 To 64 Grade = "C" Case 55 To 59 Grade = "D+" Case 50 To 54 Grade = "D" Case 0 To 49 Grade = “F" End Select LbResult.Text = Grade
ชิ้นงาน (10 คะแนน) จงเขียนโปรแกรมเพื่อคำนวณค่าบัตรโดยสาร BTS ตามจำนวนสถานี ดังเงื่อนไขต่อไปนี้ 1 สถานี 15 บาท 2 สถานี 25 บาท 3-4 สถานี 30 บาท 5-6 สถานี 35 บาท 7-8 สถานี 40 บาท 9 สถานีเป็นต้นไป 45 บาท โดยให้ใช้คำสั่ง if…then…elseif หรือ select…case กำหนดให้ รับค่าจำนวนสถานีใน TxtStation แล้วแสดงค่าบัตรโดยสารใน LbTicket
โครงสร้างคำสั่งที่ใช้ในการทำซ้ำ Iteration , Repeatative , Loop ในการเขียนโปรแกรมบ่อยครั้งที่เราต้องให้คอมพิวเตอร์ ทำงานเดิมซ้ำ ๆ กัน หลายครั้ง ซึ่งในภาษาคอมพิวเตอร์เกือบทุกภาษาจำเป็นจะต้องมีชุดคำสั่งเพื่อให้สามารถทำงาน ซ้ำ ๆ เดิม ๆ ได้หลายรอบ แทนมนุษย์ โดยปกติทั่วไปคำสั่งเหล่านั้นก็มักจะคล้าย ๆ กันเกือบทุกภาษา ใน VB.NET ก็ได้เตรียมคำสั่งเหล่านั้นไว้ให้ใช้งานได้ดังนี้คือ For.. Next While … End While Do While… Loop Do Until...Loop Do Loop…While Do Loop…Until
For … Next For … Next มีลักษณะที่มีการทำงานซ้ำ ที่มีจำนวนรอบที่แน่นอน เช่น เราต้องการ บวกเลข 1 – 10 หรือ หาค่า Factorial โดย มีรูปแบบดังนี้ For <ชื่อตัวแปร> = <ค่าเริ่มต้น> To <ค่าสิ้นสุด> [Step <ค่าที่เพิ่มขึ้นหรือลดลง>] <ชุดคำสั่งที่ให้ทำซ้ำ> [Exit for] Next [ <ชื่อตัวแปร> ]
For … Next ต.ย. จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ 1 + 2 + 3 ... 100 Dim i as integer Dim Sum as integer For i = 1 to 100 Sum = Sum + i Next i Label1.Text = Sum i=1 sum=0+1 =1 i=2 sum=1+2 =3 i=3 sum=3+3 = 6 i=4 sum=6+4=10 ….. i=100 sum=…+100=...
For … Next ต.ย. จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ เลขคี่ตั้งแต่ 1 + 3 + 5 + 7 ... 99 For i = 1 to 100 Step 2 Dim i as integer Dim Sum as integer For i = 1 to 100 Step 2 Sum = Sum + i Next i Label1.Text = Sum i=1 sum=0+1 =1 i=3 sum=1+3 =4 i=5 sum=4+5 =9 i=7 sum=9+7=16 ….. i=99 sum=…+99=...
For … Next ต.ย. จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ เลขคู่ตั้งแต่ 2 + 4 + 6 + 8 ... 100 For i = 2 to 100 Step 2 Dim i as integer Dim Sum as integer For i = 2 to 100 Step 2 Sum = Sum + i Next i Label1.Text = Sum i=2 sum=0+2 =2 i=4 sum=2+4 =6 i=6 sum=6+6 =12 i=8 sum=12+8=20 ….. i=100 sum=…+100=...
While … End While โดย มีรูปแบบดังนี้ <ชุดคำสั่ง> [Exit while] End While
While … End While ต.ย. i=1 sum=0+1 =1 i=1+1 i=2 sum=1+2 =3 i=2+1 ….. i=100 sum=…+100=... i=100+1=101 ต.ย. Dim i as integer Dim Sum as integer i = 1 While i <= 100 Sum = sum + i i = i+1 End While MessageBox.Show(Sum) ต้องมีการเพิ่มค่าหรือ อัพเดตค่าของตัวแปรที่ใช้ในการกำหนดเงื่อนไข ไม่เช่นนั้นอาจทำให้เงื่อนไขเป็นเท็จตลอด และไม่สามารถจบการทำงานของ while ได้
Exercise จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ตัวเลขตั้งแต่ 5 + 10 + 15 + 20 ... 100 จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ตัวเลขตั้งแต่ 10 + 20 + 30 + 40 ... 100
Exercise 3 จงเขียนโปรแกรมเพื่อ แสดงค่า ตัวเลขต่อไป นี้ ลงใน ListBox 1 3 5 7 9 .... 99 2 4 6 8 10 ...100 99 97 95 93 91... 5 3 1 100 98 96 94 ... 4 2 0 5 10 15 20 25 30 .. 500 500 450 400 350 300 .. 100 50 0
Exercise 4 จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ชุดข้อมูลต่อไปนี้ 12 + 22 + 32 + 42 + … 92 + 102 11 + 22 + 33 + 44 + … 99 + 1010 110 + 29 + 38 + 47 + … 92 + 101 102 + 92 + 82 + 72 + … 22 + 12 101 + 92 + 83 + 74 + … 29 + 110
Exercise 5 จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ชุดข้อมูลต่อไปนี้ 1/1 + 1/2 + 1/3 + 1/4 + ... 1/100 1/1 + 1/3 + 1/5 + 1/7 + ... 1/99 1/2 + 1/4 + 1/6 + 1/8 + ... 1/100 100/1 + 99/2 + 98/3 + 97/4 + ... 1/100 1/100 + 2/99 + 3/98 + 4/97 + ... 100/1 100/2 + 98/4 + 96/6 + ... 2/100 = ? 99/1 + 97/3 + 95/5 + …. 1/99= ?