slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์ PowerPoint Presentation
Download Presentation
บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์

Loading in 2 Seconds...

play fullscreen
1 / 76

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


  • 118 Views
  • Uploaded on

บทที่ 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'บทที่ 4 ฟังก์ชั่น ลูป อาร์เรย์' - thadine


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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

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

1

event driven programming
การเขียนโปรแกรมแบบ 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

slide3
รู้จักกับออบเจ็กต์

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

3

property
พร็อพเพอร์ตี้ (Property) : คุณสมบัติของออบเจ็กต์

ออบเจ็กต์แต่ละชนิดย่อมมีคุณสมบัติประจำตัวของมัน เช่น ออบเจ็กต์รถยนต์ ก็จะมีคุณสมบัติ เช่น ยี่ห้อ , รุ่น , ขนาดเครื่องยนต์ , สี เป็นต้น ซึ่งเราเรียกคุณสมบัตินี้ว่า พร็อพเพอร์ตี้ (Property)

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

4

method
เมธอด (Method) : ความสามารถของออบเจ็กต์

เมธอด Load

เมธอด Close

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

5

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

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

ในการเขียนโปรแกรมด้วย Visual C# 2005 นั้น เราต้องเลือกเขียนโปรแกรมจัดการอีเวนต์แต่ละตัวที่เราสนใจ ซึ่งโปรแกรมที่เราได้เขียนขึ้นมาเพื่อจัดการอีเวนต์แต่ละตัวนั้นจะเรียกว่า Event Handler

6

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

7

slide8
คอนโทรลกับคอมโพเนนต์

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

8

slide10
เทคนิคที่ช่วยให้การเขียนโปรแกรมง่ายขึ้นเทคนิคที่ช่วยให้การเขียนโปรแกรมง่ายขึ้น

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

List Members

Parameter Info

Quick Info

10

list members
List Members

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

11

parameter info
Parameter Info

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

12

quick info
Quick Info

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

13

slide14
การขอความช่วยเหลือจาก Help

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

14

function
Function

Function คือ บล็อกของโค้ดที่สามารถเรียกใช้งานได้จากจุดใด ๆ ก็ได้ในแอพพลิเคชัน

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

15

function16
Function

Scope ReturnTypeFunctionName (type1 param1, type2 param2, …)

{

โค้ดการทำงานภายในฟังก์ชัน

return ค่าที่คืนกลับมา ;

}

Scope : ขอบเขตการทำงานของฟังก์ชันนั้น (private , public , etc.)

ReturnType : ชนิดของการคืนค่า สามารถระบุเป็นชนิดข้อมูลที่จะคืนกลับมา แต่ถ้าไม่มีการคืนค่าเราจะระบุด้วยคีย์เวิร์ด void

FunctionName : ชื่อฟังก์ชัน

type1 ,type2,… : ชนิดข้อมูลของพารามิเตอร์

param1, param2,… : ชื่อของพารามิเตอร์แต่ละตัว ซึ่งบางฟังก์ชันอาจจะไม่มี

16

slide17
ตัวอย่างการสร้างและใช้งานฟังก์ชันตัวอย่างการสร้างและใช้งานฟังก์ชัน

ให้นักศึกษาสร้างแอพพลิเคชัน ดังรูป

17

slide18
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

slide19
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

slide20
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

slide21
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

slide22
ขอบเขตของตัวแปร

Solution

Project

Class

{

}

Class

{

}

Function

{

expression

{

}

}

ตัวแปร X

ตัวแปร X

Function

{

}

ตัวแปร X

Project

ตัวแปร X

ในการเขียนโปรแกรมด้วยภาษา C# นั้น ตัวแปรที่ถูกประกาศจะมีขอบเขตการใช้งานอยู่เฉพาะในบล็อกของโค้ดที่มันประกาศ

22

slide23
อายุการใช้งานของตัวแปรอายุการใช้งานของตัวแปร

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

23

slide24
for

วนซ้ำครบจำนวน ?

ครบแล้ว

ยังไม่ครบ

ทำคำสั่งในบล็อก for

ทำคำสั่งถัดไป

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

24

slide25
for

for(ตัวแปรใช้นับจำนวนรอบ = จำนวนรอบเริ่มต้น ; เงื่อนไขการหยุดวนซ้ำ ; สเต็ปชั้นของการนับ)

{

<ทำงานตามคำสั่ง>

}

เช่น

for(int i = 1;i<=5;i++)

{

// วนซ้ำทั้งหมด 5 รอบ

}

25

slide26
ตัวอย่างการใช้งานคำสั่ง for

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

26

slide27
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

slide28
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

slide29
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

slide31
การใช้ for แบบซ้อนกัน

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

31

slide32
ตัวอย่างแอพพลิเคชันที่มีการใช้ for แบบซ้อนกัน

ให้นักศึกษาสร้างแอพพลิเคชันที่มีหน้าตาดังนี้

32

slide33
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

slide34
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

slide35
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

while
while

false

วนซ้ำอีกหรือไม่?

true

ทำคำสั่งในบล็อก while

ทำคำสั่งถัดไป

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

38

while39
while

while <ทดสอบเงื่อนไข จริงหรือเท็จ>

{

<ถ้าเงื่อนไขเป็นจริง ให้ทำงานตามคำสั่ง>

}

39

while40
ตัวอย่างการสร้างแอพพลิเคชันโดยใช้ while

private void cmdloop_Click(object sender, EventArgs e)

{

inti;

i = 1;

lstShow.Items.Clear();

while(i<=20)

{

lstShow.Items.Add("วนลูปครั้งที่ " + i);

i++;

}

}

ให้นักศึกษาสร้างแอพพลิเคชัน

40

do while
do-while

จะนำเงื่อนไขการตรวจสอบวนซ้ำ while ไปไว้ด้านท้าย คือต้องวนซ้ำอย่างน้อย 1 รอบก่อน แล้วจึงทำการตรวจสอบเงื่อนไขนั่นเอง

do

{

<ทำงานตามคำสั่ง>

}

while <ทดสอบเงื่อนไข จริงหรือเท็จ ถ้าเป็นจริงให้กลับไปทำงานอีกรอบ>

41

do while42
ตัวอย่างแอพพลิเคชัน 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

slide43
ตัวอย่างโค้ด

void MyMethod(int par1)

{

for(int i = 0; i < 10; i ++)

{

if(i==5)

break;

}

}

วนซ้ำแค่ 6 รอบ

โดยในรอบที่ 6 หลัง if จะกระโดดออกจากเมธอด MyMethodทันที

43

slide44
ตัวอย่างแอพพลิเคชัน

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

44

slide45
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

slide46
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

slide47
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

array
Array

<typeOfArray> [ ] <arrayName;>

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

48

array49
Array

int[] MyArray;

string[] YourArray;

MyArray = new int[10];

YourArray = new string[4] { “C#”, “ASP.net”, “C”, “Pascal” };

MyArray

YourArray

49

foreach
foreach

foreach (<typeName> <varName> in <arrayName>)

{

<ทำคำสั่งอะไรก็ได้>

}

typeName : ชนิดข้อมูลที่จะนำค่าจากอาร์เรย์มาเก็บจะต้องตรงกับชนิด ข้อมูลของอาร์เรย์

varName : ชื่อของตัวแปรที่นำค่าจากอาร์เรย์มาเก็บ

arrayName : ชื่อของอาร์เรย์

50

foreach51
foreach

int[] intArray = new int[6] {2, 4, 6, 8, 10, 12};

string[] strArray;

strArray = new string[3];

strArray[0] = "กรุงเทพมหานคร";

strArray [1] = "ปักกิ่ง";

strArray[2] = "ลอนดอน";

string strOut = "";

intidx = 0;

foreach (intiTemp in intArray)

{

strOut += "intArray[" + idx.ToString() + "] = " + iTemp.ToString() + "\n";

idx++;

}

51

foreach52
foreach (ต่อ)

MessageBox.Show(strOut, "โชว์ข้อมูลในอาร์เรย์ intArray");

strOut = "";

idx = 0;

foreach (string sTemp in strArray)

{

strOut += "strArray[" + idx.ToString() + "] = " + '\"' + sTemp + '\"' + "\n";

idx++;

}

MessageBox.Show(strOut, "โชว์ข้อมูลในอาร์เรย์ strArray");

52

array54
มิติของ Array

string[] MyArray = new string[4];

int[,] OurArray = new int [4,3];

float[, ,] fltQube = new float[3,3,3];

54

slide55
เมธอดที่สำคัญสำหรับการจัดการอาร์เรย์เมธอดที่สำคัญสำหรับการจัดการอาร์เรย์

GetLength : หาจำนวนสมาชิกในอาร์เรย์ (หรืออาจจะใช้ค่าพร็อพเพอร์ตี้ Length ก็ได้เช่นกัน

GetLowerBound: ขอบเขตล่างของอาร์เรย์ (คือ อินเด็กซ์ตัวที่น้อยที่สุดของอาร์เรย์) โดยเราจะต้องระบุพารามิเตอร์เป็นมิติที่ของอาร์เรย์

GetUpperBound: ขอบเขตบนของอาร์เรย์ (คือ อินเด็กซ์ตัวที่มากที่สุดของอาร์เรย์) โดยเราจะต้องระบุพารามิเตอร์เป็นมิติที่ของอาร์เรย์เหมือนเมธอด GetLowerBound

55

array56
Array

int[,] intArray = new int[4, 3];

Random rndObj = new Random();

string strOut = "";

for (int j = intArray.GetLowerBound(1); j <= intArray.GetUpperBound(1); j++)

{

for (inti = intArray.GetLowerBound(0); i <= intArray.GetUpperBound(0); i++)

{

intArray[i, j] = rndObj.Next(10);

strOut += "intArray[" + i.ToString() + ", " + j.ToString() + "] = " + intArray[i, j].ToString() + " ";

}

strOut += "\n";

}

MessageBox.Show(strOut, "โชว์ข้อมูลในอาร์เรย์ 2 มิติ");

56

jagged array
Jagged Array

ในบางครั้งเราอาจจะต้องการเก็บอาร์เรย์ของอาร์เรย์เอาไว้นั่นหมายความว่า สมาชิกของอาร์เรย์แต่ละตัวไม่ได้เก็บข้อมูลเพียงตัวเดียว แต่จะเก็บอาร์เรย์เอาไว้

ตัวอย่างเช่น เราต้องการอาร์เรย์ 1 มิติที่มีสมาชิก 2 ตัว ซึ่งสมาชิกแต่ละตัวก็เก็บอาร์เรย์ 1 มิติของจำนวนเต็มเอาไว้ พร้อมกับกำหนดค่า

58

jagged array59
Jagged Array

int[][] jaggedArray = new int[2][];

jaggedArray[0] = new int[4] {4, 2, 1,7} ;

jaggedArray[1] = new int[3];

Random rndObj = new Random();

for (inti = 0; i < jaggedArray[1].Length; i++)

{

jaggedArray[1][i] = rndObj.Next(10);

}

string strOut = "";

intidx = 0;

59

jagged array60
Jagged Array (ต่อ)

foreach (int j in jaggedArray[0])

{

strOut += "สมาชิกของ jaggedArray[0][" + idx.ToString() + "] = " + j.ToString() + "\n";

idx++;

}

MessageBox.Show(strOut, "สมาชิกตัวที่ 1");

strOut = "";

for (int j = jaggedArray[1].GetLowerBound(0); j <= jaggedArray[1].GetUpperBound(0); j++)

{

strOut += "สมาชิกของ jaggedArray[1][" + j.ToString() + "] = " + jaggedArray[1][j].ToString() + "\n";

}

MessageBox.Show(strOut, "สมาชิกตัวที่ 2");

}

60

structure
Structure

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

62

structure63
Structure

structstructName

{

typeOfVar1 var_1;

typeOfVar2 var_2;

typeOfVar3 var_3;

:

typeOfVarnvar_n;

}

structName : ชื่อ Structure

var_1 ถึง var_n : ชื่อของตัวแปรตั้งแต่ตัวที่ 1 ถึงตัวที่ n

typeOfVar : ชนิดข้อมูลสำหรับตัวแปรแต่ละตัวที่อยู่ใน Structure โดยมี ข้อแม้อยู่ว่าชนิดข้อมูลนั้นต้องเป็น Value Type เท่านั้น

63

structure64
ตัวอย่างการสร้าง Structure

ให้นักศึกษาสร้างแอพพลิเคชัน ดังรูป

64

code structure
Code ประกาศ Structure

public structMyStruct // ประกาศ struct

{

public string Name;

public int Age;

public bool Married;

}

65

slide66
Code เมื่อคลิกปุ่ม

MyStructmyRecord;

myRecord.Name = txtName.Text;

myRecord.Age = Convert.ToInt32(txtAge.Text);

myRecord.Married = chkMarried.Checked;

string strOut = "";

strOut += "myRecord.Name = " + myRecord.Name + "\n";

strOut += "myRecord.Age = " + myRecord.Age.ToString() + "\n";

strOut += "myRecord.Married = " + myRecord.Married.ToString();

MessageBox.Show(strOut, "อัพเดตข้อมูลใหม่ใน struct");

66

arraylist
ArrayList

ArrayListArLsName ();

ArrayListArLsName= new ArrayList();

จากการใช้งาน struct ที่ผ่านมานั้นจะเห็นว่าแม้เราจะเก็บข้อมูลได้หลายชนิด แต่เราก็เก็บข้อมูลได้เพียงชุดเดียว แต่ถ้าเราจะเก็บข้อมูลได้หลาย ๆ ชุด เราจะต้องใช้โครงสร้างข้อมูลที่เรียกว่า ArrayList มาช่วย

บางครั้งเราก็อาจจะประกาศ ArrayList ไปพร้อมกับการสร้างตัวแปรขึ้นมาเลย คือ

68

arraylist69
เมธอดและพร็อพเพอร์ตี้ของ ArrayList

Add : เป็นเมธอดที่ใช้เพิ่มข้อมูลเข้าไป โดยจะไปต่อท้ายข้อมูลล่าสุดใน ArrayList

RemoveAt : เป็นเมธอดที่ใช้ลบข้อมูลออกจาก ArrayList โดยเราจะต้อง ระบุอินเด็กซ์ว่า ลบข้อมูลตัวใด และในกรณีที่ข้อมูลที่ถูกลบไม่ใช่อิน เด็กซ์ตัวสุดท้ายของ ArrayList มันจะขยับปรับลำดับของอิน เด็กซ์ใน ArrayList ใหม่

Capacity : เป็นพร็อพเพอร์ตี้ที่แสดงจำนวนสมาชิกที่มีได้ใน ArrayList

Count : เป็นพร็อพเพอร์ตี้ที่แสดงจำนวนสมาชิกที่มีอยู่ของ ArrayList ณ ขณะนั้น

69

arraylist70
ตัวอย่างการใช้งาน ArrayList

ให้นักศึกษาสร้างแอพพลิเคชัน ดังรูป

70

slide71
Code

using System.Collections;

public structMyStruct

{

public string Name;

public string Phone;

public string Email;

}

private ArrayListMyRecord = new ArrayList();

เริ่มต้นด้วยการใช้คำสั่ง using เพื่อทำให้แอพพลิเคชันสามารถเรียกใช้ ArrayList ได้ คือ

จากนั้นประกาศ struct โดยตั้งชื่อว่า MyStruct เอาไว้ และประกาศตัวแปรที่เป็น ArrayList เอาไว้ คือ

71

slide72
Code เมื่อคลิกปุ่ม

if ((txtName.Text == "") || (txtPhone.Text == "") || (txtEmail.Text == ""))

{

MessageBox.Show("คุณต้องเติมข้อมูลให้ครบ", "ผิดพลาดครับ");

}

else

{

MyStructstructX;

structX.Name = txtName.Text;

structX.Phone = txtPhone.Text;

structX.Email = txtEmail.Text;

string strAL = structX.Name + " : " + structX.Phone + " : " + structX.Email;

MyRecord.Add(structX);

lstRecord.Items.Add(strAL);

txtName.Text = "";

txtPhone.Text = "";

txtEmail.Text = "";

72

slide73
Code เมื่อคลิกปุ่ม

if (lstRecord.SelectedIndex == -1)

{

MessageBox.Show("คุณต้องเลือกรายการที่จะลบ หรือไม่มีรายการให้ลบแล้ว", "ผิดพลาดครับ");

}

else

{

MyRecord.RemoveAt(lstRecord.SelectedIndex);

lstRecord.Items.RemoveAt(lstRecord.SelectedIndex);

}

73

enumeration
Enumeration

ชื่อของ Enumeration ซึ่งมีหลักการตั้งชื่อเหมือนกับตัวแปร

ชนิดข้อมูลที่เราจะต้องเก็บให้กับตัวแปรต่าง ๆ เพื่อเก็บค่าข้อมูล

EnumEnumName : TypeOfEnum

{

Enum_1 = EnumValue_1,

Enum_2 = EnumValue_2,

Enum_3 = EnumValue_3,

:

Enum_n = EnumValue_n,

}

ชื่อของตัวแปรแต่ละตัวที่เก็บค่า

ค่าที่ระบุให้กับตัวแปรที่เก็บค่าที่เก็บใน Enumeration

เป็นโครงสร้างข้อมูลที่ช่วยให้เราเก็บข้อมูลได้เป็นชุด ๆ แต่ไม่ใช้การอ้างอิงอินเด็กซ์เหมือนอาร์เรย์ โดยที่ข้อมูลใน Enumeration จะต้องเป็นชนิดข้อมูลเดียวกัน

74

enumeration75
ตัวอย่างการประกาศ Enumeration

Public enumDayName : int

{

Sun = 1,

Mon = 2,

Tue = 3,

Wed = 4,

Thu = 5,

Fri = 6,

Sat = 7

}

75