บทที่ 6 โครงสร้างข้อมูลเบื้องต้น อาจารย์ชนิดา คำเพ็ง สาขาวิชาเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์และเทคโนโลยี
รูปแบบของโครงสร้างข้อมูลของ C# Array Structure ArrayList Enumeration Stack Queue
Array : เก็บข้อมูลเป็นชุดที่มีชนิดเดียวกัน
การประกาศตัวแปรอาร์เรย์ DayBirth = new int[31]; //เก็บข้อมูลเลขจำนวนเต็ม 31 ตัว MonthBirth = new string[4] {“May” , “June”, “July” , “August”}; //กำหนดค่าเริ่มต้นตอนประกาศตัวแปรอาร์เรย์
การประกาศอาร์เรย์ ตัวอย่าง string[] MyArray = new string[3]; MyArray[0] = “TUK”; MyArray[1] = “TIM”; MyArray[2] = “TIP”; MyArray[3] = “TON”; int[] YourArray; YourArray = new int[7]; YourArray[0] = 10; YourArray[1] = 20;
ลำดับที่ในอาร์เรย์ รูปแบบ อาร์เรย์[อินเด็กซ์] ตัวแปรที่อยู่ลำดับแรกมีอินเด็กซ์เป็น 0 ตัวแปรที่อยู่ถัดไปคือ 1, 2, 3, ... ตามลำดับ
ลำดับที่ในอาร์เรย์ int[] sc; sc = new int[5]{12,3,43,27,56}; 12 3 43 27 56
เขียนโปรแกรมการประกาศอาร์เรย์และการใช้คำสั่ง foreach จงสร้างอาร์เรย์สองชุด โดยกำหนดค่าของอาร์เรย์ดังนี้ - สร้างอาร์เรย์ชื่อว่า intArray ให้เก็บค่าจำนวนเต็ม {5,10,15,20} - สร้างอาร์เรย์ชื่อว่า strArray ให้เก็บข้อความ “กรุงเทพฯ”, “ปักกิ่ง” , “ลอนดอน” โดยสร้างปุ่มสองปุ่มเพื่อแสดงอาร์เรย์ทั้งสองชุด
การสร้างอาร์เรย์สองมิติ รูปแบบ ชนิดข้อมูล[,] ตัวแปร = new ชนิดข้อมูล[ขนาดอาร์เรย์]; ตัวอย่าง double[,] OurArray = new double[4,3]; int[,] intMatrix = new int[3,2] { {1,2,3},{7,8,9} }; int[,] intTable = new int[4,3]; intTable[0][0] = 3; intTable[1][0] = 5; intTable[2][0] = 8; intTable[3][0] = 7;
การสร้างอาร์เรย์สามมิติ int[, ,] intQube = new int[2,2,2] { { {1,2},{3,4} } , { {5,6},{7,8} } };
แบบฝึกหัด จงเขียนคำสั่งเพื่อประกาศตัวแปรอาร์เรย์ ตามคำอธิบายในแต่ละข้อต่อไปนี้ ตัวแปรอาร์เรย์ 1 มิติชื่อ num เพื่อเก็บจำนวนเต็ม 9 จำนวน และกำหนดให้มีค่า เริ่มต้นดังนี้คือ 1,4,7,10,13,16,19,22,25 ตัวแปรอาร์เรย์ 2 มิติชื่อ x ขนาด 3x4 เพื่อเก็บตัวเลขทศนิยม ตัวแปรอาร์เรย์ 1 มิติชื่อ str เพื่อเก็บข้อความ uttaradit ตัวแปรอาร์เรย์ชื่อ account เพื่อเก็บ ข้อมูลทั้งรายรับและรายจ่ายประจำปี โดยแจก แจงเป็นเดือนตั้งแต่เดือนที่ 1 ถึงเดือนที่ 12 ตัวแปรอาร์เรย์ชื่อ volumn เพื่อเก็บข้อมูลยอดขายของพนักงานจำนวน 20 คน โดย แจกแจงเป็นไตรมาสที่ 1 ถึงไตรมาสที่ 3 ตัวแปรอาร์เรย์ชื่อ vowel เพื่อเก็บตัวอักษรที่เป็นสระ A,E,I,O,U 07/04/60
แบบฝึกหัด กำหนดอาร์เรย์ต่อไปนี้ int[,] num= new int[2,3] { {1,2}, {4,5}, {7,8} } ; เลข 7 อยู่ตำแหน่งใดในอาร์เรย์ เขียนโปรแกรมสำหรับเก็บอายุของผู้สมัครสอบเข้าเรียน โดยการกรอก อายุผู้สมัครทั้งหมด 5 คนเข้ามาเก็บไว้ในอาร์เรย์
Structures in C# ข้อมูลชนิด Structure โครงสร้างข้อมูลแบบใหม่ที่เก็บข้อมูลได้เป็นชุด แต่เก็บข้อมูล หลากหลายชนิดในตัวเดียว ข้อจำกัดของ Array คือ ข้อมูลในอาร์เรย์ทุกตัวต้องเป็นข้อมูลชนิด เดียวกัน
การใช้งาน Struct 1. กำหนด struct 2. สร้าง struct 3. เรียกใช้ struct
ระดับการเข้าถึงใช้ "public” การกำหนด Struct "struct" keyword ตั้งชื่อ struct struct StudentInfo { public int id; public string name; public string dept; } ประกาศสมาชิก ของ struct ระดับการเข้าถึงใช้ "public”
การกำหนด Struct ในส่วนโปรแกรมให้ประกาศ Struct ไว้ภายในคลาส นอกเมธอด using System; class StructTest { struct StdInfo { public int id; public string name; public string dept; } public static void Main() { :
การสร้าง Struct Syntax: หรือ Examples: <struct-name> <var-name> = new struct-name(); <struct-name> <var-name>; using System; class StructTest { struct StdInfo { public int id; public string name; public string dept; } public static void Main() { StdInfo student = new StdInfo(); : using System; class StructTest { struct StdInfo { public int id; public string name; public string dept; } public static void Main() { StdInfo student; :
การเรียกใช้ Struct Variable Syntax: Example: <var-name>.<member-name> using System; class StructTest { struct StdInfo { public int id; public string name; public string dept; } public static void Main() { StdInfo student; student.id = 48541234; student.name = "Nicole"; student.dept = "IE"; Console.WriteLine("ID: {0}", student.id);
อาร์เรย์ของ Structs 1 2 Array of integers Struct of student info Array of structs of student info 7 10 3 5 17 8 2 1 4 6 9 11 5010000 Aum CPE ID: Name: Dept: 5010000 Aum CPE ID: Name: Dept: 5020000 Nat IE ID: Name: Dept: 1 5010000 Top EE ID: Name: Dept: 2
แบบฝึกหัด Structure จงสร้าง Structure เพื่อเก็บข้อมูลชื่อ,อายุ
แบบฝึกหัด Create Student’s Score จงสร้าง Struct เพื่อเก็บข้อมูลคะแนนนักศึกษา โดยมีรายละเอียดดังนี้ ID Name Score จากนั้นให้แสดงข้อมูลคะแนนนักศึกษาที่เก็บใน Struct
จัดการข้อมูลด้วย Stack Stack เป็นโครงสร้างข้อมูลที่ใช้งานแบบ Last-in-Fist-out (LIFO) คือ ลำดับของข้อมูลที่ถูกนำมาเก็บก่อนจะถูก นำไปใช้ทีหลัง เหมือนกับวางจานซ้อนกัน หากจะหยิบ จานไปใช้ จะต้องหยิบใบบนสุดก่อน ส่วนจานที่ถูกวาง เก็บเป็นใบแรกจะนำไปใช้ได้ก็ต่อเมื่อนำจานที่วางทับมัน อยู่ออกไปใช้เสียก่อน
การจัดการกับสแตก การนำข้อมูลเข้าสู่สแตก ( PUSH ) คือการนำข้อมูลเข้าไปเก็บไว้ในสแตก ซึ่งการกระทำเช่นนี้ เราเรียกว่า PUSH โดยก่อนที่จะนำข้อมูลเก็บลงในสแตกจะต้องมีการตรวจสอบพื้นที่ว่างในสแตกก่อน ว่ามีที่เหลือให้เก็บหรือไม่ โดยจะใส่ข้อมูลไว้ที่ตัวบนสุดของแสตก
การจัดการกับสแตก การนำข้อมูลออกจากสแตก (POP) คือการนำข้อมูลที่อยู่บนสุดออกจากสแตก โดยการกระทำ เช่นนี้เราเรียกว่า POP โดยก่อนที่จะนำข้อมูลออกจากสแตก จะต้องมีการตรวจสอบว่าในสแตกมีข้อมูลเก็บ อยู่หรือไม่ โดยจะดึงข้อมูลตัวบนสุดของ สแตก
จัดการข้อมูลด้วย Queue Queue มีแนวคิดการใช้งานตรงข้ามกับ Stack นั่นคือ First-in-First-out (FIFO) หรือที่เรียกว่าเข้าก่อนออกก่อน ใช้ในการแก้ปัญหาการเข้าแถว