210 likes | 531 Views
Do Loop Until. โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com. Do … Loop Until. Do … Loop Until จะคล้ายกับ Do While Loop แต่ต่างกันตรงที่ Do Loop Until จะทำงานไปก่อนแล้วค่อยตรวจสอบเงื่อนไขที่หลัง โดย มีรูปแบบดังนี้. Do < ชุดคำสั่ง > [Exit Do]
E N D
Do Loop Until โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com
Do … Loop Until • Do … Loop Until จะคล้ายกับ Do While Loop แต่ต่างกันตรงที่ Do Loop Until จะทำงานไปก่อนแล้วค่อยตรวจสอบเงื่อนไขที่หลัง • โดย มีรูปแบบดังนี้ Do <ชุดคำสั่ง> [Exit Do] Loop Until < เงื่อนไข>
Do … Loop Until • ต.ย. dim I as int16 = 1 dim sum as int32 = 0 Do Sum +=i I +=2 Loop Until I > 20 ต้องมีการเพิ่มค่าหรือ อัพเดตค่าของตัวแปรที่ใช้ในการกำหนดเงื่อนไข ไม่เช่นนั้นอาจทำให้เงื่อนไขเป็นเท็จตลอด และไม่สามารถจบการทำงานของ Do ได้
ต.ย. คำสั่ง For 1 + 3 + 5 + 7 + ...+99 ให้ใช้คำสั่ง for ----------------------------- '---ประกาศตัวแปรก่อน Dim SUM as int32 Dim i as int16 For i = 1 to 99 STEP 2 SUM += I NEXT I LbResult.Text = SUM ต.ย. 5,10,15,20,...200 ต.ย. 1921,1923,1925, โดย ใช้ While Loop '---ประกาศตัวแปร Dim i as short '--- short = int16 i = 5 while i <=200 Lbresult.text &= i & "," i += 5 '--- หมายถึง i = i + 5 Loop
สร้าง Project ใหม่ • ไปที่เมนู File • เลือก New • เลือก Project • ตั้งชื่อ Project เป็น Test_Do_Until • เก็บไว้ใน C:\MyProject_VB
Do..Loop..Until • 1^2 + 2^2 + 3^2+.. + 10^2 = ? • 110 + 29 + 38 + 47 +… 101 = ?
Dim i as int16 Dim SUM as int32 I = 1 Do SUM = SUM + i^2 I = I + 1 Loop Until I > 10 1^2 + 2^2 + 3^2+.. + 10^2 = ? หลักการวิเคราะห์โจทย์ • เริ่มต้น ที่ I = 1 • ยกกำลัง 2 ทุกตัว • สิ้นสุดที่ I = 10 • เพิ่มขึ้นที่ละ 1
ออกแบบหน้าจอ • กำหนดคุณสมบัติของฟอร์ม • Name : Frm_Test_Do_Until • BackColor : • Text : โปรแกรมทดสอบคำสั่ง Do Until
นำ Button และ Label มาวางดังรูป BtnOK LbResult BtnCancel
Double click ที่ปุ่ม OK แล้วเขียนคำสั่งดังนี้ เลือกใช้คำสั่งแค่แบบใดแบบหนึ่ง เท่านั้น ไม่ใช่พิมพ์เข้าไปทั้ง 3 บรรทัด
แบบที่ถูกต้องหรือควรเลือกแบบที่ถูกต้องหรือควรเลือก
รันดูผลลัพธ์ ลองทดสอบจากตัวเลข ที่ค่าน้อยๆ ดูก่อน
110 + 29 + 38 + 47 +… 101 = ? • วิเคราะห์โจทย์ • I เริ่มต้นที่ 1 • ยกกำลังจาก 10 ไปถึง 1 แสดงว่าตัวยกกำลังจะต้องลดค่าลงที่ละ 1 • แต่ ตัวเลขฐานจะถูกเพิ่มค่าไปที่ละ 1 สวนทางกัน • ดังนั้น ต้องใช้ตัวแปรเพิ่ม คือ • I เป็นตัวเลขฐาน • J เป็นตัวยกกำลัง • แล้วหาค่า SUM Dim I as int16 = 1 Dim J as int16 = 10 Dim SUM as int32=0 Do SUM += Math.POW(i,j) I +=1 j -= 1 Loop Until I > 10 Lbresult.Text = SUM
เข้าไปเขียนคำสั่งดังนี้เข้าไปเขียนคำสั่งดังนี้
Exercise 1 • จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ตัวเลขตั้งแต่ 5 + 10 + 15 + 20 ... 100 • จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ตัวเลขตั้งแต่ 10 + 20 + 30 + 40 ... 100 • จงเขียนโปรแกรมเพื่อหาค่า แสดงตัวเลข ตั้งแต่ 1-100 • จงเขียนโปรแกรมเพื่อหาค่า แสดงตัวเลขคี่ ตั้งแต่ 1-100 • จงเขียนโปรแกรมเพื่อหาค่า แสดงตัวเลขคู่ ตั้งแต่ 1-100 • จงหาค่า Factorial ของ ตัวเลขใด เช่น รับ 5 เข้ามา จะได้ว่า 5! = 5*4*3*2*1 = 120 หรือ 7! = 7*6*5*4*3*2*1 = 5040
Exercise 2 • จงเขียนโปรแกรมเพื่อ แสดงค่า ตัวเลขต่อไป นี้ ลงใน 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 3 • จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ชุดข้อมูลต่อไปนี้ • 12 + 22 + 32 + 42 + … 92 + 102 • 11 + 22 + 33 + 44 + … 99 + 1010 • 110 + 29 + 38 + 47 + … 92 + 101 • 12 + 22 + 32 + 42 + … 92 + 102 • 102 + 92 + 82 + 72 + … 22 + 12 • 101 + 92 + 83 + 74 + … 29 + 110
Exercise 4 • จงเขียนโปรแกรมเพื่อหาค่า ผลรวมของ ชุดข้อมูลต่อไปนี้ • 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= ?
โจทย์ อื่นๆ • 101 + 92 + 83 + … 110 • 21 + 22 + 23 + 24 +… + 210