การเขยีนโปรแกรมเชงิภาพsiam2dev.net/e_learning/visual_programmming/lec05... ·...
TRANSCRIPT
-
การเขยีนโปรแกรมเชงิภาพ[ค าส ัง่ควบคมุการท างาน และประโยคท าซ า้ ]
โดย ดร. นฐัพงศ ์ สง่เนยีม
สาขาวชิา วทิยาการคอมพวิเตอร์
คณะวทิยาศาสตรแ์ละเทคโนโลย ี มหาวทิยาลยัราชภฏัพระนคร
http://wwwsiam2dev.com
เอกสารส าหรบั การเรยีนใน สปัดาหท์ี ่6
Lec05_VB_NET2010_Control_Structure_Last_Updated_15_08_2561
http://wwwsiam2dev.com/mailto:[email protected]:[email protected]
-
เนื้อหา
• โครงสรา้งการควบคมุการท างานของโปรแกรม– โครงสรา้งค าสัง่ควบคมุการตดัสนิใจ (Decision Structure)
• If..then ….end if
• If… then …else …end if
• Select case
– โครงสรา้งค าสัง่เรยีกซ ้า (Repetitive Structure)• For.. Next
• For Each..Next
• While … End While
• Do While… Loop
• Do..Loop
– โพรซเียอร์ , ซบัรทูนี , ฟังกช์ัน่ และการสง่ผา่นพารามเิตอร์ของโปรแกรมยอ่ย
-
เนือ้หา (ตอ่)
• ขอบเขตของโปรแกรม
– Global Scope
– Local Scope
– Block Scope
– ฟังกช์ัน่ที ่VB.NET มมีาให ้(Build-in Function)
• เกีย่วกบั วนั เวลา
• เกีย่วกบั ขอ้ความ
• เกีย่วกบัตวัเลข
-
โครงสรา้งค าส ัง่ควบคมุการท างานของโปรแกรม
• ค าสัง่ควบคมุการท างานของโปรแกรม ใน VB.NET นัน้สามารถแบง่ออกเป็น 2 ประเภทหลัก ไดแ้ก่
– โครงสรา้งค าสัง่ควบคมุแบบตดัสนิใจเลอืก (Decision Structure)
– โครงสรา้งควบคมุการท างานซ ้า (Repetitive Structure)
-
โครงสรา้งค าส ัง่ควบคมุแบบตดัสนิใจเลอืก(Decision Structure)
การเขยีนโปรแกรมโดยทั่วไป มักจะมกีารตดิสนิใจท างานบางอยา่งอยูเ่สมอ ๆ โดยมเีงือ่นไขเป็นจรงิหรอืเป็นเท็จ ซึง่ถา้มเีงือ่นไขเป็นจรงิโปรแกรมก็จะท างานอยา่งหนึง่ และเมือ่มเีงอืนไขเป็นเท็จก็จะท างานอกีอยา่งหนึง่ เชน่ ในการซือ้สนิคา้รายการหนึง่ หาก ลกูคา้ซือ้สนิคา้มากกวา่ 30,000 ก็จะใหส้ว่นลดเป็น 15% แตถ่า้หากนอ้ยกวา่ก็จะใหส้ว่นลดเป็น 5% เป็นตน้ ลกัษณะนีจ้ าเป็นจะตอ้งใชค้ าสัง่การตดัสนิใจเขา้มาชว่ยใน VB.NET จะมคี าสัง่การตดัสนิใจหลกั ๆ อยู ่2 ชนดิดว้ยกนัคอื
• IF .. Then .. Else
• Select .. Case
ซึง่มรีปูแบบการใชง้านดงันี้
Statement คือ ประโยคค ำสั่งExpression คือ ส่วนหนึ่งของประโยค
-
IF .. Then .. Else
• รปูแบบ
if < เง ือ่นไข > Then< ชุดค าส ัง่เม ือ่เง ือ่นไขเป็นจรงิ
>Else
< ชุดค าส ัง่เม ือ่เง ือ่นไขไมเ่ป็นจรงิ >
End if
Dim DisCount as doubleDim Total as doubleTotal = 150000 if Total > 30000 Then
DisCount = Total*0.15Else
DisCount = Total*0.05End if
จาก ต.ย. จะเห็นวา่เมือ่ซือ้สนิคา้มากวา่ 30000 บาทขึน้ไป จะไดร้บัสว่นลด 15%
condition
Statement 1 Statement 2
FalseTrue
Statement 3
-
If / IF
Dim x as int16 = 5
if x > 5 Then
….
Else
….
end if
-
เปิดโปรแกรม Microsoft Visual Studio.net2010 ข้ึน
-
การสร้าง Project ใหม่
• ไปท่ีเมน ูFile
• เลือก new
• เลือก project
-
คุณสมบติัของ TextBox
• Name = TxtNumber
• Text = 0
• TextAlign = Center
• Font = 24 Tahoma
-
• Name = BtnStart
• Text = START
• Font = 18
• Name = BtnStop
• Text = STOP
• Font = 18
-
น า Timer มาวางบนฟอร์ม
• Invisible control คือเคร่ืองมือท่ีไม่แสดง หรือมองไม่เห็น
-
1000
-
Global
-
Local และ global
-
ถา้จะ ตวัแปร x ใชง้านไดใ้นเหตุการณ์อ่ืนๆ ตอ้งประกาศ x ใหเ้ป็นตวัแปร Global
-
• DOUBLE CLICK
-
Logical Error
• เขียนโปรแกรม ,algorithm ผิด
-
สร้าง Project ใหม่ช่ือ TicTacToe
-
ก าหนดคุณสมบติัของฟอร์ม• Name : FrmTicTacToe
• Text : เกม TicTacToe
• StartPosition = center Screen
-
• BackgroundImage = ก ำหนดรูป
• BackgroundImageLayout = Strech
-
MaximizeBox = False
-
FormborderStyle
-
• น ำ button มำวำงดงัรูป• ก ำหนดคณุสมบตัิ
• Text = X
• Name = b1 – b9
-
ก าหนดช่ือ b1-b9
-
expression
A + B
Operator Operand
Operand If A > B Then
Else
End If
-
IF .. Then .. Else (ต่อ)
Dim Score as Int16
Dim Result as String
Score = TxtScore.Text
if Score > 600*0.8 ThenResult = “คุณ ผ่านการสอบ TOEIC”
ElseResult = “คุณ ผ่านไม่การสอบ TOEIC”
End if
ต.ย. ในการสอบวบัความรู้ภาษาองักฤษ (TOEIC) ของ ประชาชนโดยทั่วไปจากคะแนนเต็ม 600 คะแนน ถ้าหาก นศ. ท าได้มากว่า 80% ของ 600 คะแนนจะถือว่าผ่านการคดัเลือก จงเขียนโปรแกรมเพ่ือ รับคะแนน ของผู้เข้าสอบ แล้วแจ้งผลการสอบของคนน้ัน ว่าผ่านหรือไม่ผ่าน
-
เงื่อนไขการใช้ ประโยค IF
1. จะมี else หรือไม่มีก็ได้
ผลของการท างานคือ จงอธิบายผลของการท างานโปรแกรมน้ี..............................................................................................................................................................................................................................................................................................................................................................................
Boolean expression
True/False
-
ต.ย. IF
• ที่ else หมายความว่า ถ้าหลัง IF เป็นเท็จให้ท าหลัง else
-
1. If ส่วนที่ 2 จะเป็นจริงหรือเท็จ
2. ท าอย่างไรให้ A กับ a ถือว่าเป็นตัวเดียวกัน
*** น ำฟังก์ชันมำตรฐำนของ vb มำใช้ได้ แก่ Ucase Lcase
-
การใช ้Ucase , Lcase
• HeLlo = heLLO
จงเขียนรูปประโยค หรือ ส่วนของโปรแกรม เพ่ือตรวจสอบ วา่ สองค าดา้นบนนั้นเท่ากนั
-
ถา้ไม่สนใจ พิมพเ์ลก็หรือพิมพใ์หญ่ จะท าอยา่งไร
• TRIM
• LTRIM
• RTRIM
-
ถา้ จะตรวจสอบวา่ วนัน้ีเป็นวนัท่ีเท่าไร ของเดือน
• ถ้ำ จะตรวจสอบวำ่ วนันีเ้ป็นวนัท่ีเท่ำไร ของเดือน
• Date/Time
-
Now
-
Datediff/dateadd
• วนันีก้บัเมื่อวำน ตำ่งกนั ก่ีวนั
• วนันี ้กบั วนัที่ 15/08/2559 ห่ำงกนัก่ีวนั
• หำอำยุ
*** คณุไม่สำมำรถต้ังวัน ลบด้วยอีกวันได้DateTimePicker
-
-9 เพราะอะไร ?
-
ถา้ตอ้งการทราบวา่ จากน้ีไป 7 วนั เป็นวนัอะไร/วนัท่ีเท่าไร DataAdd
• ระบบยืม คืนหนงัสือ
• ระบบจองห้องพกั ต้องกำรทรำบวนัที่ห่ำงออกไป
-
IF .. Then .. ElseIf
• ต.ย. จงเขยีนโปรแกรมเพือ่ตดัเกรดของ นศ. โดยมเีกณฑด์งันี้– ถา้มากวา่ 80 ขึน้ไปได ้ เกรด A– 75 - 79 ไดเ้กรด B+– 70 - 74 ไดเ้กรด B– 65 - 69 ไดเ้กรด C+– 60 - 64 ไดเ้กรด C– 55 - 59 ไดเ้กรด D+– 50 - 54 ไดเ้กรด D– 0 – 49 ไดเ้กรด E
ลกัษณะจะคลา้ยกบั If .. Then .. Else เพือ่แตเ่ราสามารถมีทางเลอืกของค าตอบไดม้ากวา่ 2 ทางเลอืกขึน้ไป
-
การตรวจสอบว่าเป็นช่องว่าง หรือ null
• Isnumeric
• Isnull
• Isempty
• Isdbnull
• Textbox1.text =“”
-
• ถ้ำต้องกำร ตรวจสอบวำ่ใน Text เป็นคำ่ ลบ หรือไม่ ถ้ำเป็นค่ำลบ ให้แจ้งเตือน
• หรือ ให้ตรวจสอบดวูำ่ เป็นคำ่ ทศนิยมหรือไม่
-
ทดสอบ IF
-
LbResult
TxtScore
-
Type Casting
• กำรแปลงชนิดข้อมลู จำกชนิดหนึง่ไปยงัอีกชนิด
– Convert
– Parse
-
ยงัไมไ่ด้ใช้งำนตวัแปรนี ้
-
75.9 จะไดเ้กรดอะไรและท าอยา่งไร
-
กด OK โดยไม่ป้อนค่า
-
โค้ดนี้ error อะไร จะแก้ไขอย่างไร
-
วิธีแก้ไข
• ให้ตรวจสอบ check ว่าใน TextBox เป็นค่า null หรือไม่
– ใช้ IF
– If TxtScore.Text = “” Then
• …
– Else
• …
– Endif
-
วธีิแกไ้ข
-
กรณีที่เราใส่ อักษร เข้าไป
-
การป้อนค่าเกิน 100
• MaxLength =3
-
1. เริม่ตน้
2. รับคา่คะแนน จาก TextBox
3. ตรวจสอบระดบัคะแนน1. ถา้มากกวา่ 80 ได ้A
2. ถา้มากกวา่ 75 ได ้B+
3. ถา้มากกวา่ 70 ได ้B
4. ถา้มากกวา่ 65 ได ้C+
5. ถา้มากกวา่ 60 ได ้C
6. ถา้มากกวา่ 55 ได ้D+
7. ถา้มากกวา่ 50 ได ้D
8. ถา้มากกวา่ 0 ได ้E
4. แสดงเกรด
5. สิน้สดุ
Algorithm
Pseudo code
-
IF .. Then .. ElseIF (ตอ่)Dim Score as Int16Dim Grade as StringScore = TxtScore.TextIF Score >= 80 Then
Grade = “A”ElseIF Score >=75 Then
Grade = “B+”ElseIF Score >=70 Then
Grade = “B”ElseIF Score >=65 Then
Grade = “C+”ElseIF Score >= 60 Then
Grade = “C”ElseIF Score >= 55 Then
Grade = “D+”ElseIF Score >= 50 Then
Grade = “D”Else
Grade = “E”End IFLbResult.Text =Grade
-
Exercise 1
• จงเขยีนโปรแกรมเพือ่แกปั้ญหา ตูท้อนเหรยีญ โดยมีหลักการท างานของตูท้อนเหรยีญ ดังนี้– ใสจ่ านวนเงนิทีต่อ้งการ จะซือ้สนิคา้ เชน่ 200 บาท
– เมือ่ ซือ้สนิคา้ และ คดิราคาสนิคา้แลว้จะตอ้งทอนเงนิกลับมาเป็นเหรยีญ ซึง่จะมเีหรยีญตา่ง ๆ ดงันี ้ เหรยีญ 10 บาท , 5 บาท , 1 บาท , เหรยีญ 50 สตางค ์, เหรยีญ 25 สตางค์
– ต.ย. สมมตุ ิ ใสเ่งนิ 200 บาท ราคา สนิคา้ 75.25 บาท จะตอ้งทอนเป็นเงนิ 124.75 บาท เป็นเหรยีญตา่ง ๆ ดงันี้• เหรยีญ 10 บาท เทา่กบั 12 เหรยีญ
• เหรยีญ 5 บาท เทา่กบั 0 เหรยีญ
• เหรยีญ 1 บาท เทา่กบั 4 เหรยีญ
• เหรยีญ 50 สตางค ์ 1 เหรยีญ
• เหรยีญ 25 สตางค ์ 1 เหรยีญ
-
จงเขยีนโปรแกรมเพือ่รับตวัเลขแลว้อา่นเป็นขอ้ความดงัตวัอยา่ง
• 1234 :: หนึง่พันสองรอ้ยสามสบิสีบ่าทถว้น
• 524.75 :: หา้รอ้ยยีส่บิสีบ่าทเจ็ดสบิหา้สตางค์
• 1542.25 :: ?
สิ่งท่ีต้องใช้/ต้องค านึง1. การแยก ตัวอักษร MID(), Left(), Right()2. การรวมตัวอักษร รวมค า &3. ฟังก์ชันการหาสตริง Instr()
-
หลักการ หรือ algorithms
• ตรวจสอบช่องว่าง
• ตรวจสอบ ว่าเป็นตัวเลขหรือไม่
• นับ จ านวน ตัวเลข มีก่ีตัว
• ท า ไปตั้งแต่ ตัวแรก ถึง ตัวอักษรสุดท้าย
• อ่าน ถ้า 1 ให้ อ่าน หนึ่ง
• ถ้า 2 ให้ อ่าน สอง
• อยู่หลัก ร้อย อ่าน ร้อย อยู่หลักพันก็อ่านพัน
-
**** นับว่ำมี ตัวเลขกีต่ัวใน textbox
-
Select .. Case
Select Case Case Case Case Case [ Case Else ] ‘ จะมหีรอืไมม่ก็ีได้
End Select
เป็นค าส ัง่ทีใ่ชใ้นการตดัสนิใจเลอืกไดห้ลายทาง เชน่เดยีวกบัค าส ัง่ IF.. Then … ElseIF แตม่โีครงสรา้งทีช่ดัเจนและเขา้ใจไดง้า่ยกวา่ โดยมีรปูแบบดงันี้
-
Select .. Case (ต่อ)
Dim score As Int16
Dim Grade As String
score = TxtScore.Text
Select Case Int(score)
Case Is >= 80
Grade = "A"
Case 75 To 79
Grade = "B+"
Case 70 To 74
Grade = "B"
Case 65 To 69
Grade = "C+"
ต.ย. จงเขียนโปรแกรมเพ่ือตดัเกรด โดยใช้เกณฑ์เดยีวกบั ต.ย. ก่อนหน้านี้ ด้วยค าส่ัง Select Case
Case 60 To 64
Grade = "C"
Case 55 To 59
Grade = "D+"
Case 50 To 54
Grade = "D"
Case 0 To 49
Grade = "E"
End Select
LbResult.Text = Grade
-
ฟังกช์นัเก่ียวกบัแปลงชนิด
• Int
• Maht.floor ปัดเศษ ลง
• Math.ceiling ปัดเศษขึน้
• cInt
• Cdbl
• Str ---string
-
โครงสร้างค าส่ังที่ใช้ในการท าซ ้าIteration , Repeatative , Loop
• ในกำรเขียนโปรแกรมบอ่ยครัง้ที่เรำต้องให้คอมพิวเตอร์ ท ำงำนเดิมซ ำ้ ๆ กนั หลำยครัง้ ซึง่ในภำษำคอมพิวเตอร์เกือบทกุภำษำจ ำเป็นจะต้องมีชดุค ำสัง่เพื่อให้สำมำรถท ำงำน ซ ำ้ ๆ เดิม ๆ ได้หลำยรอบ แทนมนษุย์ โดยปกติทัว่ไปค ำสัง่เหลำ่นัน้ก็มกัจะคล้ำย ๆ กนัเกือบทกุภำษำ ใน VB.NET ก็ได้เตรียมค ำสัง่เหลำ่นัน้ไว้ให้ใช้งำนได้ดงันีคื้อ– For …Next
– For …Each Next
– While … End While
– Do While … Loop
– 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 Int16Dim Sum as Int16For I = 1 to 100Sum = Sum + I
Next ILabel1.Text = Sum
Sum = Sum + ISum +=i
-=+=*=/=&=
-
For … Next
• ต.ย. จงเขยีนโปรแกรมเพือ่หาคา่ ผลรวมของ เลขคีต่ ัง้แต ่1 + 3 + 5+ 7 ... 99
Dim I as Int16Dim Sum as Int16For I = 1 to 100 Step 2
Sum = Sum + iNext ILabel1.Text = Sum
For I = 1 to 100 Step 2
-
For … Next
• ต.ย. จงเขยีนโปรแกรมเพือ่หาคา่ ผลรวมของ เลขคูต่ัง้แต ่2 + 4 + 6 + 8 ... 100
Dim I as Int16Dim Sum as Int16For I = 2 to 100 Step 2
Sum = Sum + iNext ILabel1.Text = Sum
For I = 2 to 100 Step 2
-
For Each… Next
• For Each… Next ใชง้านในกรณีที ่ไมรู่จ้ านวนสมาชกิทีแ่น่นอนของอารเ์รย์
• โดย มรีปูแบบดงันี้
For Each In
[Exit for]
Next [ ]
-
For Each… Next
• ต.ย.
Dim WebsiteArr as String= { “www.google.com” , “www.sanook.com” , “www.kapook.com” , “www.hunsa.com” , “www.teenee.com”}Dim WebsiteName , OutputStr as string
For Each WebsiteName In WebsiteArrOutputStr &=OutputStr & WebsiteName & Constants.vbCrLf
Next WebsiteNameMessagebox.show(OutputStr)
-
While … End While
• While … End While เป็นค าสัง่ในการวนลปูการท างานไปเรือ่ย ๆ ตราบใดทีเ่งือ่นไขทีเ่ราก าหนดยังเป็นจรงิอยู่และ จะหยดุการท างานหากเงือ่นไขเป็นเท็จ
• โดย มรีปูแบบดงันี้
While < เงือ่นไข >
[Exit while]
End While
-
While … End While
• ต.ย.
Dim I as int16Dim Sum as int32While I
-
Do While … Loop
• Do While … Loop เหมอืนกบั While … End While คอื จะท าไปเร ือ่ย ๆ หาก เงือ่นไขทีเ่ราก าหนดยงัคงเป็นจรงิอยู ่และจะหยดุการท างานหากเงือ่นไขเป็นเท็จ
• โดย มรีปูแบบดงันี้
Do While < เงือ่นไข >
[Exit Do]
Loop
-
Do While … Loop
• ต.ย.
Dim I as int16
Dim Sum as int32
Do While I
-
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 ได้
-
Exercise 2
• จงเขยีนโปรแกรมเพือ่หาคา่ ผลรวมของ ตวัเลขตัง้แต ่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 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
• จงเขยีนโปรแกรมเพือ่หาคา่ ผลรวมของ ชดุขอ้มลูตอ่ไปนี้
1. 12 + 22 + 32 + 42 + … 92 + 102
2. 11 + 22 + 33 + 44 + … 99 + 1010
3. 110 + 29 + 38 + 47 + … 92 + 101
4. 12 + 22 + 32 + 42 + … 92 + 102
5. 102 + 92 + 82 + 72 + … 22 + 12
6. 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= ?
-
102 + 92 + 82 + 72 + … 22 + 12
• Math.POW(10,2)
• SUM = SUM + Math.Pow(x,y)
For I as int16 = 10 to 1 STEP -1
SUM = SUM + Math.Pow(i,2)
SUM += Math.Pow(i,2)
Next I
LbResult.Text =SUM