1 / 76

บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์

บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์. ฟังก์ชั่น ( หน้า 17) ลูป ( หน้า 15) อาร์เรย์ ( หน้า 49). 1. การเขียนโปรแกรมแบบ Event Driven Programming. Please choose the operation (+ - * /). Enter first number : 8. Enter second number : 7. Event - Driven. The result is : 15

thadine
Download Presentation

บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์ • ฟังก์ชั่น (หน้า 17)ลูป (หน้า 15)อาร์เรย์ (หน้า 49) 1

  2. การเขียนโปรแกรมแบบ Event Driven Programming Please choose the operation (+ - * /) Enter first number : 8 Enter second number : 7 Event - Driven The result is : 15 Do you want to exit program?(y/n) ดั้งเดิม 2

  3. รู้จักกับออบเจ็กต์ สิ่งที่ควรรู้เมื่อต้องเขียนโปรแกรม หรือพัฒนาแอพพลิเคชั่นเพื่อใช้งานบน Windows ก็คือ เรื่องของ ออบเจ็กต์ (Object) ซึ่งสอดคล้องกับแนวคิดของ Event Driven Programming ซึ่งจากประสบการณ์ของผู้ใช้งานวินโดว์ จะเห็นได้ว่าแอพพลิเคชั่นนั้นจะประกอบมาจากสิ่งต่างๆ เช่น ปุ่มกด , วินโดว์ ซึ่งเราเรียกแต่ละสิ่งที่ประกอบเป็นแอพพลิเคชั่นนั้นว่า ออบเจ็กต์ (Object) 3

  4. พร็อพเพอร์ตี้ (Property) : คุณสมบัติของออบเจ็กต์ ออบเจ็กต์แต่ละชนิดย่อมมีคุณสมบัติประจำตัวของมัน เช่น ออบเจ็กต์รถยนต์ ก็จะมีคุณสมบัติ เช่น ยี่ห้อ , รุ่น , ขนาดเครื่องยนต์ , สี เป็นต้น ซึ่งเราเรียกคุณสมบัตินี้ว่า พร็อพเพอร์ตี้ (Property) ในการใช้งาน Visual C# 2008 นั้นการกำหนดพร็อพเพอร์ตี้ให้กับออบเจ็กต์ชนิดต่างๆ จะสามารถทำได้ทั้งในช่วงของการออกแบบ และในขณะที่แอพพลิเคชั่นนั้นทำงาน ซึ่งในขณะออกแบบนั้นจะปรับแต่งผ่าน Property Windows ส่วนการกำหนดค่าพร็อพเพอร์ตี้ในขณะทำงานจะใช้การเขียนโปรแกรมกำกับการทำงานเอาไว้ 4

  5. เมธอด (Method) : ความสามารถของออบเจ็กต์ เมธอด Load เมธอด Close นอกจากจะมีคุณสมบัติแล้วออบเจ็กต์จะมีความสามารถที่ทำให้ออบเจ็กต์ทำงานได้ เช่น ออบเจ็กต์รถยนต์มีความสามารถในการสตาร์ทเครื่องยนต์ , การขับ , การเปลี่ยนทิศทาง เป็นต้น ซึ่งเราเรียกความสามารถของออบเจ็กต์นี้ว่า เมธอด 5

  6. รู้จักกับอีเวนต์ (Event) : เหตุการณ์ที่เกิดขึ้นกับออบเจ็กต์ ในการทำงานของออบเจ็กต์ที่อยู่ในแอพพลิเคชั่นที่ทำงานบน Windows นั้น ย่อมจะพบกับเหตุการณ์ต่างๆที่เกิดจากทั้งการโต้ตอบกับผู้ใช้งาน, การทำงานร่วมกับโปรแกรมอื่นๆ หรือการทำงานร่วมกับ Windows ซึ่งเราเรียกแต่ละเหตุการณ์ที่เกิดขึ้นกับออบเจ็กต์ต่างๆว่า อีเวนต์ (Event) ในการเขียนโปรแกรมด้วย Visual C# 2005 นั้น เราต้องเลือกเขียนโปรแกรมจัดการอีเวนต์แต่ละตัวที่เราสนใจ ซึ่งโปรแกรมที่เราได้เขียนขึ้นมาเพื่อจัดการอีเวนต์แต่ละตัวนั้นจะเรียกว่า Event Handler 6

  7. รู้จักกับอีเวนต์ (Event) : เหตุการณ์ที่เกิดขึ้นกับออบเจ็กต์ 7

  8. คอนโทรลกับคอมโพเนนต์ ในการสร้างแอพพลิเคชั่นด้วย Visual C# 2008นั้นมีออบเจ็กต์ให้เลือกใช้งานได้ หลายตัว ออบเจ็กต์ซึ่งมองเห็นได้เราจะเรียกว่า คอนโทรล (Control) เช่น คอนโทรล Button, คอนโทรล Textbox เป็นต้น และยังมีออบเจ็กต์หนึ่งที่มองไม่เห็นในเวลาที่แอพพลิเคชั่นทำงาน เราเรียกว่า คอมโพเนนต์ (Component) 8

  9. Solution, Project and Form 9

  10. เทคนิคที่ช่วยให้การเขียนโปรแกรมง่ายขึ้นเทคนิคที่ช่วยให้การเขียนโปรแกรมง่ายขึ้น Code Editor ของ Visual Studio 2008 นั้นได้รับการเพิ่มเติมให้มีความสามารถที่มากขึ้น ช่วยให้การเขียนโปรแกรมเป็นเรื่องที่ทำได้ง่ายขึ้น ซึ่งเราจะเรียกความสามารถของ Code Editor นี้ว่า Intellisense ซึ่งประกอบด้วยความสามารถต่าง ๆ คือ List Members Parameter Info Quick Info 10

  11. List Members เป็นเครื่องมือที่ช่วยให้การเขียนโค้ดง่ายขึ้น โดยจะทำหน้าที่ตรวจสอบว่าแต่ละออบเจ็กต์ที่มีการใช้งานหรือชนิดข้อมูลที่เราสร้างขึ้นเองนั้นมีสมาชิก คือ พร็อพเพอร์ตี้หรือเมธอดอะไรที่สามารถใช้ได้ โดยจะแสดงในลักษณะของรายการผุดขึ้นมาใน Code Editor 11

  12. Parameter Info บ่อยครั้งที่เราเรียกใช้งานเมธอด หรือเรียกใช้งาน Function ที่มีพารามิเตอร์ยาว ๆ แทนที่เราจะต้องจดสำหรือย้อนกลับไปดู Code Editor ก็จะช่วยให้เราสามารถเขียนพารามิเตอร์ได้อย่างครบถ้วนได้ 12

  13. Quick Info เป็นเครื่องมือที่ช่วยให้การเขียนโค้ดง่ายขึ้น โดยจะทำหน้าที่ตรวจสอบว่าแต่ละคำสั่งที่เขียนขึ้นนั้นมีรูปแบบอะไร ต้องการข้อมูลหรืออาร์กิวเมนต์อะไรในคำสั่งนั้น ๆ แล้วจึงแสดงให้ผู้ใช้นั้นเห็น ซึ่งผู้ใช้เพียงแค่นำเมาส์ไปทาบ ณ ตำแหน่งที่สนใจก็จะมีการแสดงข้อมูลให้ทราบโดยย่อขึ้นมา 13

  14. การขอความช่วยเหลือจาก Help สำหรับวิธีการในการตรวจสอบคำสั่งหรือจุดที่สงสัยจากการเขียนโปรแกรม สามารถทำได้โดยการวางเมาส์บนจุดหรือไฮไลท์คำสั่งที่สงสัย แล้วกดปุ่ม <F1> ก็จะปรากฏข้อมูลที่เกี่ยวข้องได้ 14

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

  16. Function Scope ReturnTypeFunctionName (type1 param1, type2 param2, …) { โค้ดการทำงานภายในฟังก์ชัน return ค่าที่คืนกลับมา ; } Scope : ขอบเขตการทำงานของฟังก์ชันนั้น (private , public , etc.) ReturnType : ชนิดของการคืนค่า สามารถระบุเป็นชนิดข้อมูลที่จะคืนกลับมา แต่ถ้าไม่มีการคืนค่าเราจะระบุด้วยคีย์เวิร์ด void FunctionName : ชื่อฟังก์ชัน type1 ,type2,… : ชนิดข้อมูลของพารามิเตอร์ param1, param2,… : ชื่อของพารามิเตอร์แต่ละตัว ซึ่งบางฟังก์ชันอาจจะไม่มี 16

  17. ตัวอย่างการสร้างและใช้งานฟังก์ชันตัวอย่างการสร้างและใช้งานฟังก์ชัน ให้นักศึกษาสร้างแอพพลิเคชัน ดังรูป 17

  18. Code เมื่อคลิกปุ่ม private void btnRandom_Click(object sender, EventArgs e) { int rndm = MyRandom(); if (rndm > 5) { this.BackColor = Color.White; } } private int MyRandom() { Random rndObj = new Random(); int i = rndObj.Next(10); MessageBox.Show("ค่าที่สุ่มได้คือ : " + i.ToString(), "ฟังก์ชัน MyRandom"); return i; } 18

  19. Code เมื่อคลิกปุ่ม private void btnPassword_Click(object sender, EventArgs e) { if (CheckValidPassword(txtPassword.Text) == true) { MessageBox.Show("รหัสผ่านของท่านคือ : " + txtPassword.Text, "กำหนดรหัสผ่านสำเร็จ"); } } private bool CheckValidPassword(string pswd) { if (pswd.Length < 4) { MessageBox.Show("คุณกำหนดรหัสผ่านสั้นเกินไป", "รหัสผ่านต้องมากกว่า 4 ตัวอักษร"); return false; } else if ((pswd == "1234") || (pswd == "abcd") || (pswd == "1111")) { MessageBox.Show("รหัสผ่านเดาง่ายเกินไป", "ผิดพลาด"); return false; } else return true; } 19

  20. Code เมื่อคลิกปุ่ม private void btnMatrix_Click(object sender, EventArgs e) { int X = (int)nudX.Value; int Y = (int)nudY.Value; DrawMatrix(X, Y); } private void DrawMatrix(int XVal, int YVal) { string strOut = ""; for (int j = 1; j <= YVal; j++) { for (int i = 1; i <= XVal; i++) { strOut += i.ToString() + " "; } strOut += "\r\n"; } txtOut.Text = strOut; } 20

  21. Code เมื่อคลิกปุ่ม private void btnClear_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("คุณต้องการเคลียร์ค่าในคอนโทรลหรือไม่", "Clear", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { ClearAll(); } } private void ClearAll() { this.BackColor = SystemColors.Control; txtPassword.Clear(); nudX.Value = nudX.Minimum; nudY.Value = nudY.Minimum; txtOut.Clear(); MessageBox.Show("เคลียร์เรียบร้อยแล้วครับผม!", "Clear"); } 21

  22. ขอบเขตของตัวแปร Solution Project Class { } Class { } Function { expression { } } ตัวแปร X ตัวแปร X Function { } ตัวแปร X Project ตัวแปร X ในการเขียนโปรแกรมด้วยภาษา C# นั้น ตัวแปรที่ถูกประกาศจะมีขอบเขตการใช้งานอยู่เฉพาะในบล็อกของโค้ดที่มันประกาศ 22

  23. อายุการใช้งานของตัวแปรอายุการใช้งานของตัวแปร ตัวแปรแต่ละตัวมีอายุการใช้งานที่จำกัด นั่นคือ มันสามารถใช้งานได้เฉพาะในขอบเขตที่ได้ประกาศไว้ เพราะฉะนั้นการอ้างอิงตัวแปรนอกขอบเขตจะทำให้ Code Editor ฟ้องข้อผิดพลาดขึ้นมาได้ และถ้าเราพยายามสั่งให้แอพพลิเคชันทำงานก็จะพบว่าทำไม่ได้ และมีการแจ้งข้อผิดพลาดที่หน้าต่าง Error List 23

  24. for วนซ้ำครบจำนวน ? ครบแล้ว ยังไม่ครบ ทำคำสั่งในบล็อก for ทำคำสั่งถัดไป สำหรับการวนซ้ำด้วยจำนวนรอบที่แน่นอนเราจะใช้คำสั่ง for ในการใช้งานวนซ้ำ ซึ่งจะต้องใช้ตัวแปร 1 ตัวที่ใช้นับจำนวนรอบว่า วนซ้ำครบตามรอบที่กำหนดหรือไม่ 24

  25. for for(ตัวแปรใช้นับจำนวนรอบ = จำนวนรอบเริ่มต้น ; เงื่อนไขการหยุดวนซ้ำ ; สเต็ปชั้นของการนับ) { <ทำงานตามคำสั่ง> } เช่น for(int i = 1;i<=5;i++) { // วนซ้ำทั้งหมด 5 รอบ } 25

  26. ตัวอย่างการใช้งานคำสั่ง for ให้นักศึกษาสร้างแอพพลิเคชันต่อไปนี้ 26

  27. Code เมื่อคลิกปุ่ม private void btnUp_Click(object sender, EventArgs e) { intcnt = 14; string strOut = "วนรอบทั้งหมด = " + cnt.ToString() + " รอบ" + "\r\n"; strOut += "- - - - - - - - - - - - - - - - " + "\r\n"; for (int i = 1 ; i <= cnt ; i++) { strOut += "วนรอบที่ : " + i.ToString() + "\r\n"; } txtOut.Text = strOut; } 27

  28. Code เมื่อคลิกปุ่ม private void btnDown_Click(object sender, EventArgs e) { intcnt = 14; string strOut = "วนรอบทั้งหมด = " + cnt.ToString() + " รอบ" + "\r\n"; strOut += "- - - - - - - - - - - - - - - - " + "\r\n"; for (int i = cnt ; i >= 1; i--) { strOut += "นับถอยหลัง : " + i.ToString() + "\r\n"; } txtOut.Text = strOut; } 28

  29. Code เมื่อคลิกปุ่ม private void btnStep_Click(object sender, EventArgs e) { intcnt = 25; string strOut = "วนซ้ำแบบ Step, ค่าตัวแปรวนซ้ำ = " + cnt.ToString() + " รอบ, สเต็ปละ 3" + "\r\n"; strOut += "- - - - - - - - - - - - - - - - " + "\r\n"; for (int i = 0 ; i <= cnt ; i +=3) { strOut += "ค่าที่ได้จากการเพิ่มสเต็ป : " + i.ToString() + "\r\n"; } txtOut.Text = strOut; } 29

  30. ผลลัพธ์ที่ได้ 30

  31. การใช้ for แบบซ้อนกัน ในโปรแกรมที่ซับซ้อน บางครั้งอาจเกิดเหตุการณ์ที่ต้องมีการใช้การวนซ้ำแบบซ้อนกัน เช่น การเติมข้อมูลในตาราง เราต้องค่อย ๆ เติมข้อมูลทีละแถว ซึ่งแต่ละแถวเราก็จะต้องเติมข้อมูลทีละคอลัมน์ โดยในการวนซ้ำจะเริ่มจากการวนซ้ำทีละคอลัมน์ก่อน เมื่อหมด 1 แถวก็จะขึ้นแถวใหม่แล้ววนซ้ำจนครบทุก ๆ แถว 31

  32. ตัวอย่างแอพพลิเคชันที่มีการใช้ for แบบซ้อนกัน ให้นักศึกษาสร้างแอพพลิเคชันที่มีหน้าตาดังนี้ 32

  33. Code เมื่อคลิกปุ่ม private void btnTable_Click(object sender, EventArgs e) { txtOut.Text = ""; for (int row = 1; row <= nudRow.Value; row++) { for (int column = 1; column <= nudColumn.Value; column++) { txtOut.Text += column.ToString() + " | "; } txtOut.Text += "\r\n"; } } 33

  34. Code เมื่อคลิกปุ่ม private void btnTriUp_Click(object sender, EventArgs e) { txtOut.Text = ""; for (int j = 1; j <= (int)nudTriRow.Value; j++) { for (inti = 1; i <= j; i++) { txtOut.Text += i.ToString() + " "; } txtOut.Text += "\r\n"; } } 34

  35. Code เมื่อคลิกปุ่ม private void btnTriDown_Click(object sender, EventArgs e) { txtOut.Text = ""; for (int j = (int)nudTriRow.Value; j >= 1; j--) { for (int i = 1; i <= j; i++) { txtOut.Text += i.ToString() + " "; } txtOut.Text += "\r\n"; } } 35

  36. ผลลัพธ์ที่ได้ 36

  37. ผลลัพธ์ที่ได้ 37

  38. while false วนซ้ำอีกหรือไม่? true ทำคำสั่งในบล็อก while ทำคำสั่งถัดไป while เป็นรูปแบบการวนซ้ำที่ไม่สามารถบอกจำนวนรอบที่แน่นอนของการวนซ้ำได้ ซึ่งจะวนซ้ำถึงเมื่อใดนั้น จะใช้การตรวจสอบเงื่อนไขก่อนการวนซ้ำว่าต้องวนซ้ำอีกหรือไม่ ถ้าเงื่อนไขยังคงเป็นจริงอยู่ก็จะวนซ้ำต่อ แต่ถ้าเป็นเท็จก็จะหลุดจากการวนซ้ำ 38

  39. while while <ทดสอบเงื่อนไข จริงหรือเท็จ> { <ถ้าเงื่อนไขเป็นจริง ให้ทำงานตามคำสั่ง> } 39

  40. ตัวอย่างการสร้างแอพพลิเคชันโดยใช้ while private void cmdloop_Click(object sender, EventArgs e) { inti; i = 1; lstShow.Items.Clear(); while(i<=20) { lstShow.Items.Add("วนลูปครั้งที่ " + i); i++; } } ให้นักศึกษาสร้างแอพพลิเคชัน 40

  41. do-while จะนำเงื่อนไขการตรวจสอบวนซ้ำ while ไปไว้ด้านท้าย คือต้องวนซ้ำอย่างน้อย 1 รอบก่อน แล้วจึงทำการตรวจสอบเงื่อนไขนั่นเอง do { <ทำงานตามคำสั่ง> } while <ทดสอบเงื่อนไข จริงหรือเท็จ ถ้าเป็นจริงให้กลับไปทำงานอีกรอบ> 41

  42. ตัวอย่างแอพพลิเคชัน do-while private void cmdloop_Click(object sender, EventArgs e) { inti; i = 20; lstShow.Items.Clear(); do { lstShow.Items.Add("วนลูปครั้งที่ " + i); i--; } while (i > 0) ; } 42

  43. ตัวอย่างโค้ด void MyMethod(int par1) { for(int i = 0; i < 10; i ++) { if(i==5) break; } } วนซ้ำแค่ 6 รอบ โดยในรอบที่ 6 หลัง if จะกระโดดออกจากเมธอด MyMethodทันที 43

  44. ตัวอย่างแอพพลิเคชัน ให้นักศึกษาสร้างแอพพลเคชันต่อไปนี้ 44

  45. Code เมื่อคลิกปุ่ม private void btnBreak_Click(object sender, EventArgs e) { Random rndObj = new Random(); int num = rndObj.Next(10); txtOut.Text = ""; for (int i = 1; i <= 10; i++) { txtOut.Text += "วนรอบครั้งที่ " + i.ToString() + "\r\n"; if (i == num) { txtOut.Text += "สุ่มตัวเลขมา = " + num.ToString(); break; } } } 45

  46. Code เมื่อคลิกปุ่ม private void btnContinue_Click(object sender, EventArgs e) { Random rndObj = new Random(); int num = rndObj.Next(10); txtOut.Text = ""; for (int i = 1; i <= 10; i++) { txtOut.Text += "วนซ้ำรอบที่ " + i.ToString(); if (i == num) { txtOut.Text += " ตรงกับจำนวนที่สุ่มมาครับ" + "\r\n"; continue; } txtOut.Text += "\r\n"; } } 46

  47. Code เมื่อคลิกปุ่ม private void btnGoto_Click(object sender, EventArgs e) { Random rndObj = new Random(); int num = rndObj.Next(10); switch (num) { case 0: txtOut.Text += "สุ่มได้เลข 0" + "\r\n"; break; case 1: txtOut.Text += "เลขที่สุ่มเป็นเลขคี่" + "\r\n"; break; case 2: txtOut.Text += "เลขที่สุ่มเป็นเลขคู่" + "\r\n"; break; 47

  48. Array <typeOfArray> [ ] <arrayName;> • typeOfArray : ชนิดข้อมูลที่เก็บในอาร์เรย์ • arrayName : ชื่อของอาร์เรย์ ซึ่งมีหลักการตั้งชื่อเหมือนกับตัวแปร • เมื่อประกาศอาร์เรย์แล้ว เราจะกำหนดค่าเริ่มต้นให้อาร์เรย์โดยจะใช้คีย์เวร์ด new เพื่อระบุขนาดของอาร์เรย์ว่าเก็บข้อมูลชนิดนั้น ๆ ได้กี่ตัว 48

  49. Array int[] MyArray; string[] YourArray; MyArray = new int[10]; YourArray = new string[4] { “C#”, “ASP.net”, “C”, “Pascal” }; MyArray YourArray 49

  50. foreach foreach (<typeName> <varName> in <arrayName>) { <ทำคำสั่งอะไรก็ได้> } typeName : ชนิดข้อมูลที่จะนำค่าจากอาร์เรย์มาเก็บจะต้องตรงกับชนิด ข้อมูลของอาร์เรย์ varName : ชื่อของตัวแปรที่นำค่าจากอาร์เรย์มาเก็บ arrayName : ชื่อของอาร์เรย์ 50

More Related