งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Visual C# 2010 Express 5. Array โครงสร้างข้อมูลพื้นที่สุด ที่ไม่เคยเลย จะไม่ใช้อาร์เรย์ 1 C# Programming with Visual C# 2010 Express.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Visual C# 2010 Express 5. Array โครงสร้างข้อมูลพื้นที่สุด ที่ไม่เคยเลย จะไม่ใช้อาร์เรย์ 1 C# Programming with Visual C# 2010 Express."— ใบสำเนางานนำเสนอ:

1 Visual C# 2010 Express 5. Array โครงสร้างข้อมูลพื้นที่สุด ที่ไม่เคยเลย จะไม่ใช้อาร์เรย์ 1 C# Programming with Visual C# 2010 Express

2 เป้าหมายการเรียนรู้  เป้าหมายการใช้อาร์เรย์  การสร้างค่าเริ่มต้นของอาร์เรย์ และอโนนิมัสไทป์  การสร้างอาร์เรย์หลายมิติ  พร็อบเพอร์ตี้พื้นฐาน และเมธอดพื้นฐานในการใช้ อาร์เรย์  การนำอาร์เรย์ไปใช้งาน กับสเตทเม้นท์ต่างๆ  อาร์เรย์ลิสท์ 2C# Programming with Visual C# 2010 Express

3 อาร์เรย์คืออะไร  อาร์เรย์คือชุดของลำดับที่ใช้เก็บข้อมูล ทุกๆ ข้อมูลที่เก็บ ข้อมูลมีชนิดข้อมูลเดียวกัน  การสร้างอาร์เรย์อย่างง่ายทำได้โดยการสร้างเป็นอาร์เรย์มิติ เดียว เช่น รายชื่อลูกค้า มองเป็นรายการๆ แถวยาวแถว เดียว  อาร์เรย์สองมิติมีลักษณะเป็นเหมือนตาราง ที่มีคอลัมน์ และ แถว อาร์เรย์สามมิติมีลักษณะเป็นเหมือนก้อนลูกบาศก์ ที่มี ทั้งกว้าง ยาว และลึก  สำหรับอาร์เรย์ที่มากกว่า 3 มิติ จะจิตนาการยากขึ้นไป  หากจะเก็บข้อมูลต่างชนิดในอาร์เรย์จะทำอย่างไร ? C# Programming with Visual C# 2010 Express3 ตอบว่าทำได้ก็ถูก ตอบว่าทำไม่ได้ก็ถูก ณ ตอนนี้คิดเพียงทำไมได้ ไปก่อน

4 Index 0Index 6 ลักษณะของอาร์เรย์ มีลักษณะทั่วไปคือ  การเก็บข้อมูลในอาร์เรย์มีลักษณะเป็นลำดับ ตามเลขดัชนีที่ เริ่มต้นค่าแรกที่ศูนย์  ความยาวของอาร์เรย์มีจำกัด และเก็บได้ไม่เกินค่าสูงสุดของ อาร์เรย์ที่เก็บได้  อาร์เรย์มีมิติได้หลายมิติ และจำนวนมิติก็คือขนาดของ แร็งค์ (rank)  การเข้าถึงอาร์เรย์ได้โดยการระบุเลขดัชนีของอาร์เรย์  การเก็บอาร์เรย์ในหน่วยความจำ จะเก็บเรียงติดกัน ทำให้ การเข้าถึงอาร์เรย์ทำได้รวดเร็ว C# Programming with Visual C# 2010 Express4

5 การประกาศอาร์เรย์ C# Programming with Visual C# 2010 Express5  การประกาศอาร์เรย์ทำได้เหมือนการประกาศตัวแปร เพียงแต่ ต้องมีเครื่องหมายวงเล็บฉาก “[ ]” หลังชนิดข้อมูล เช่น int [ ] x;  แต่ยังไม่มีค่าในหน่วยความจำ การให้มีค่าในหน่วยความจำ จะต้องระบุค่าขนาดอาร์เรย์เริ่มต้นและใช้คีย์เวิร์ด “new” ดัง ตัวอย่างเช่น int[ ] x = new int[4];  CLR จะจองหน่วยความจำพร้อมทั้งกำหนดค่าเริ่มต้นให้ อัตโนมัติ  ค่าเริ่มของของ int จะเป็น 0 ส่วนค่าเริ่มต้นของ string เป็น null ขึ้นอยู่กับชนิดข้อมูล ชนิดข้อมูลที่เป็น อ๊อปเจ็ค มีค่า เริ่มต้นเป็น null ชนิดข้อมูลเป็นวาลูไทป์ มีค่าเป็นตามชนิด วาลูไปท์

6 การประกาศอาร์เรย์ C# Programming with Visual C# 2010 Express6 da taType[ ] name0; dataType[ ] name1 = new dataType[ size ] type[ ]name; type name[ ]; type[4] name; √ ประกาศได้ X ประกาศไม่ถูกต้อง

7 การประกาศอาร์เรย์หลายมิติ  การประกาศอาร์เรย์หลายมิติหรือมีแร็งค์มากกว่าหนึ่ง เรา ใช้การจิตนาการมิติของอาร์เรย์ ทำได้ดีเพียง 3 มิติ ถ้าให้ หนึ่งมิติคือ แถว สองมิติคือตาราง และสามมิติคือลูกบาศก์ การกำหนดขนาดมิติทำได้ถึง 32 มิติ  การประกาศให้มีมิติทำได้โดยการเพิ่มเครื่องหมายจุลภาค ขั้นระหว่างช่องว่าง แต่ละช่องว่างคือมิติ เช่น มีหนึ่งจุลภาค หมายถึงมีหนึ่งมิติ เพราะมีสองช่องว่าง ([, ]) สองจุดภาคมี สามมิติ เพราะมีสามช่องว่าง ([,, ]) C# Programming with Visual C# 2010 Express7 dataType[,,... ] array1 = new dataType[ Size1, Size2,... ];

8 Jagged array  การประกาศอาร์เรย์หลายมิติ ที่กำหนดขนาดเริ่มต้น บางส่วน สามารถทำได้ เช่นการประกาศให้มีอาร์เรย์มีขนาด แถว 3 และไม่ระบุขนาดหลัก การกำหนดอย่างนี้มีประโยชน์ ในกรณีที่ไม่ต้องการกำหนดการจองหน่วยความจำเพราะยัง ไม่ทราบขนาดที่แน่ชัด อาร์เรย์แบบนี้เรียกว่า แจ็กเกด อาร์เรย์  ตัวอย่าง แจ็กเกดอาร์เรย์สองมิติ dataType [ ][ ] JaggedArray = new dataType[10][ ]; C# Programming with Visual C# 2010 Express8

9 การกำหนดขนาดอาร์เรย์ขณะรันไทม์  การกำหนดขนาดอาร์เรย์ไม่จำเป็นตัองกำหนดได้ขณะ คอมไพล์เท่านั้น เราสามารถกำหนดขณะรันไทม์ได้ โดยมี ความเร็วเท่ากันทุกกรณีกับการกำหนดขนาดคอมไพล์ (หรือ ขณะออกแบบโปรแกรม) C# Programming with Visual C# 2010 Express9 Console.WriteLine("Enter num of rows matrix:"); string r = Console.ReadLine( ); int rows = int.Parse(r); Console.WriteLine("Enter num of columns matrix:"); string c = Console.ReadLine(); int cols = int.Parse(c); int[,] matrix = new int[rows, cols]; การกำหนดขนาดอาร์เรย์ขณะรันไทม์

10 การตรวจสอบขอบเขตอาร์เรย์  การเข้าถึงอาร์เรย์ในแต่ละหน่วย ระบุได้ด้วยเลขดัชนี แต่ การระบุหน่วยดัชนีที่เกิดขอบเขตของอาร์เรย์จะทำให้เกิด ความผิดพลาด IndexOutOfRangeException  ทางที่ดีควรจะแน่ใจในขนาดของอาร์เรย์ โดยการใช้พร๊อบ เพอร์ตี้ Length หรือจะใช้เมธอด GetLength( )  ความแตกต่างของทั้งสอง คือ Length จะให้ขนาดทั้งหน่วย หรือนับทุกหน่วยของอาร์เรย์ แต่ GetLength( ) จะนับ ขนาดในมิติหนึ่งๆ เท่านั้น  สมมุติให้อาร์เรย์มีมิติ เท่ากับ 2 แต่ละแถวและหลักมีขนาด 2 แต่ละแถวและหลักวัดด้วย GetLength( ) = 2 และมีขนาด ทั้งหมดวัด Length = 4 (มาจาก ขนาดแถว x ขนาดหลัก) C# Programming with Visual C# 2010 Express10

11 การตรวจสอบขนาดอาร์เรย์ 1. int[ ] x = new int[ 2 ]; 2. Console.WriteLine(x.GetLength(0)); //print 2 3. Console.WriteLine(x.Length); // print int[, ] y = new int[ 2, 2 ]; 6. Console.WriteLine(y.GetLength(0)); //print 2 7. Console.WriteLine(y.GetLength(1)); //print 2 8. Console.WriteLine(y.Length); // print 4 C# Programming with Visual C# 2010 Express11

12 การกำหนดค่าให้อาร์เรย์  การกำหนดค่าเริ่มต้นให้สามารถทำได้ 2 วิธีคือ 1. กำหนดให้เท่ากับ อาร์เรย์ที่กำหนดขนาดแล้ว ต่อมาให้ใส่ ค่าลงในปีกกา คล่อมค่าแต่ละค่า ของอาร์เรย์ เช่น int [ ] x = new int [ 3 ] { 0, 1, 2 }; 2. กำหนดให้เท่ากับ ปีกกาพร้อมระบุค่าได้เลย โดยไม่ต้อง กำหนดขนาด และคีย์เวิร์ด “new” เพราะอาร์เรย์จะจอง หน่วยความจำเท่ากับที่กำหนดค่าเริ่มต้นให้ เช่น int [ ] x = { 0, 1, 2 }; C# Programming with Visual C# 2010 Express12

13 การสร้างเริ่มต้นให้อโนนิมัสไทป์  ค่าอโนนิมัส (var) สร้างได้อีกวิธีจากการประกาศอาร์เรย์ แบบ อิมพลิสิทลี่ ไทป์ อาร์เรย์ (Implicitly Typed Array)  การประกาศแบบนี้จะสร้างค่าเริ่มต้นให้กับอาร์เรย์ โดยไม่ ต้องระบุชนิดตัวแปรล่วงหน้า ตัวอย่างต่อไปนี้ จะเป็น ประกาศตัวแปรอโนนิมัส พร้อมๆ กับสร้างเริ่มต้น ในรูปแบบ ต่างๆ C# Programming with Visual C# 2010 Express13 var a = new[] { 1, 10, 100 }; //int[ ] var b = new[] { "hello", null, "world" }; // string[ ] var c = new[] { new[]{1,2,3,4}, new[]{5,6,7,8} }; Console.WriteLine(a[0]);//print 1 Console.WriteLine(b[0]);//print hello Console.WriteLine(c[0][3]);//print 4

14 การคัดลอกอาร์เรย์  การทำสำเนาหรือคัดลอกอาร์เรย์หนึ่ง ทำได้โดยการอ้างอิง ถึงอาร์เรย์ที่ได้มีการสร้างมาก่อนแล้ว  การปรับแต่งต่อเติมกับอาร์เรย์เดิมก็มีผลเช่นเดียวกับ อาร์เรย์ใหม่ที่คัดลอกมา เพราะการคัดลอกอาร์เรย์แบบ อ้างอิง(วัตถุใหม่ไม่เกิด) จะยังคงใช้อาร์เรย์เดิมร่วมกันอยู่ C# Programming with Visual C# 2010 Express14 1.int[ ] x = { 1, 2, 3 }; 2.int[ ] y = x; 3.Console.WriteLine("x[0]={0}, y[0]={1}", x[0], y[0]); 4.//print "x[0]=1, y[0]=1" 5.x[0] = 4; 6.Console.WriteLine("x[0]={0}, y[0]={1}", x[0], y[0]); 7.//print "x[0]=4, y[0]=4"

15 พร็อบเพอร์ตี้เมธอดของอาร์เรย์  อาร์เรย์มีใช้เพื่อเก็บข้อมูล การใช้งานอาร์เรย์ให้มีประโยชน์ มากขึ้น ก็ต่อเมื่อนำพร็อบเพอร์ตี้ และเมธอดของอาร์เรย์มา ให้เต็มที่  การใช้ประโยชน์จากอาร์เรย์สามารถใช้ได้เหมือนกันหมด เพราะทุกๆ อาร์เรย์มากจากชนิดข้อมูลเดียวกันคือ System.Array  พร๊อบเพอร์ตี้ ที่ใช้ทั่วไป คือ การหาขนาดจำนวนหน่วยใน อาร์เรย์ ใช้ Length  สำหรับเมธอดทั่วไป ที่น่านำไปใช้คือ GetValue( ) และ SetValue( ) ทั้งสองตัวนี้ใช้สำหรับการเรียกค่า และ กำหนดค่า Sort( ) ใช้สำหรับเรียงค่าของอาร์เรย์ที่มีหนึ่งมิติ C# Programming with Visual C# 2010 Express15

16 C# Programming with Visual C# 2010 Express16 ชื่อความหมาย Clear( ) เป็นการกำหนดค่าสู่การเริ่มต้นใหม่ ถ้าเป็นวาลูไทป์ เป็นศูนย์ และถ้าเป็นอ๊อปเจ็คเป็น (null) Clone( ) เป็นการคัดลอกค่าอาร์เรย์ไปสู่วัตถุอาร์เรย์ใหม่ ซึ่ง หลังจากคัดลอกแล้วอาร์เรย์ใหม่กับเก่ามีอิสระต่อ กัน CopyTo( ) เป็นการคัดลอกอาร์เรย์ไปสู่วัตถุอาร์เรย์ใหม่ โดย การเลือกตำแหน่งข้อมูลที่จะเริ่มคัดลอกเป็นตัวแปร เข้าที่สอง GetLength( ) เป็นการเรียกค่าความยาวมิติของอาร์เรย์ IndexOf( ) เป็นการค่าหาตำแหน่งของอาร์เรย์ เมธอดของอาร์เรย์

17 การเรียกข้อมูลภายในอาร์เรย์  การเรียกข้อมูลด้วย สแตทเม้นท์ for{ } ใช้คู่กับพร็อบเพอร์ตี้ Length  การเรียกข้อมูลด้วย สแตทเม้นท์ foreach { } ใช้วนเรียก โดยไม่ต้องทราบทั้งชนิดข้อมูล และขนาดข้อมูล ในอาร์เรย์ C# Programming with Visual C# 2010 Express17 int[ ] array = { 1, 2, 3, 4, 5 }; for (int i = 0; i < array.Length; i++) Console.WriteLine(array[ i ]); int[ ] array = { 1, 2, 3, 4, 5 }; foreach (var item in array) Console.WriteLine(item);

18 อาร์เรย์ในเมธอด Main( )  เมธอด Main( ) เป็นเมธอดหลักของ Console Application  เมธอด Main( ) เป็นเหมือนจุดเริ่มต้นการทำงานของแอปพลิเคชัน  เมธอด Main( ) มีตัวแปรเข้า เป็นอาร์เรย์ มีชนิดข้อมูลเป็น string และ เป็นตัวแปรเข้าที่สามารถมีได้หลายตัว ดังจำนวนข้อมูลในอาร์เรย์  เมธอด Main( ) มีการเข้าถึงตัวแปร args ใช้การอ้างอิงแบบอาร์เรย์ ทั่วไป เช่น args[0] หมายถึงตัวแปรแรก args[1] เป็นตัวแปรที่สอง  การกำหนดขนาดอาร์เรย์ถูกกำหนดขณะรันไทม์ ด้วยการเรียก โปรแกรมที่เป็นแอสแซมบลีแล้ว  การเรียกให้แอปพลิเคชันนี้ทำงาน เรียกโดยใช้คำสั่ง “app.exe s1, s2” C# Programming with Visual C# 2010 Express18

19 ตัวอย่างการใช้ เมธอด Main( ) 1. class Program 2. { 3. static void Main(string[ ] args) 4. { 5. if (args.Length==2) 6. { 7. Console.WriteLine("Curency1:{0:C0} ",int.Parse(args[0])); 8. Console.WriteLine("Curency2:{0:C2}", int.Parse(args[1])); 9. } 10. else 11. { 12. Console.WriteLine("args must equal 2"); 13. } 14. Console.Read(); 15. } 16. } C# Programming with Visual C# 2010 Express19

20 ข้อจำกัดของอาร์เรย์  มีขนาดจำกัด ต้องระบุขนาดอาร์เรย์ก่อนใช้งาน  การเพิ่มขนาดอาร์เรย์ไม่สามารถยืดหยุ่น หรือหดขนาดได้ เมื่อสร้างแล้ว  อาร์เรย์สร้างขึ้นเพื่อเก็บข้อมูลชนิดเดียวเหมือนกันหมดทั้ง อาร์เรย์  ไม่สามารถป้องกันการเขียนทับได้ ข้อจำกัดเหล่านี้แก้ได้ด้วยการใช้ อาร์เรย์ลิสท์ (ArrayList) เป็นคลาสหนึ่งใน ห้อง System.Collection C# Programming with Visual C# 2010 Express20

21 อาร์เรย์ลิสท์ (ArrayList)  ArrayList ที่มีลักษณะยืดหยุ่นสูงกว่า เพราะอาร์เรย์ลิสท์ ใช้ งานได้โดยไม่ต้องระบุขนาด หรือจะระบุขนาดก็ได้ สามารถ เก็บข้อมูลภายในอาร์เรย์ต่างชนิดกันได้  การใช้งานต้องอ้างอิง System.Collections หนึ่งใน Collections คือ ArrayList C# Programming with Visual C# 2010 Express21 1.ArrayList al = new ArrayList(); 2.al.Add("string"); 3.al.Add(1); 4.foreach (var item in al) 5.{ 6.Console.WriteLine(item); 7.}

22 สรุปท้ายบท  การรู้จักอาร์เรย์ เครื่องมือเป็นพื้นฐานในการเก็บข้อมูล ที่มี ขนาดแน่นอน การสร้างจะต้องระบุขนาด และมิติอาร์เรย์  การะบุขนาดสามารถทำได้ทั้งขณะคอมไพล์ไทม์ และรัน ไทม์  การใช้งานอาร์เรย์ มีพร็อบเพอร์ตี้และเมธอดของอาร์เรย์ ต่างๆ เช่น Length, Rank, GetValue( ), Clear( ) ทำให้ ใช้งานอาร์เรย์ได้เร็วขึ้น  การนำสเตทเม้นท์ for, foreach เพื่อนำข้อมูลในอาร์เรย์มา ใช้งาน นอกจากการระบุอาร์เรย์โดยตรง  ArrayList เป็นคลาสประเภท Collection ใช้เก็บข้อมูลได้ แบบอาร์เรย์แต่มีความยืดหยุ่นสูงกว่า C# Programming with Visual C# 2010 Express22

23 ทำถามทบทวน 1. อาร์เรย์มีไว้เพื่ออะไร 2. คำสั่งต่อไปนี้ผิดพลาดอะไร และควรแก้ไขอย่าง ไร a) int array[ ]; b) int [ ] array = new int[ ]; c) int[ ] array = new long[ 1 ]; d) int [ ] array = new int[ ]{1,2,3}; e) int [ ] array; array = {1, 2, 3}; f) int [ ] array; Console.WriteLine(array[ 0 ]); g) int [ ] array = new int[ ]; h) int [ ] array = new int[ 2 ]{0, 1, 2}; i) int[, ] array = new int[ 2, 3] { { 1,2}, {1,2,3} }; j) int [ ] array = new int[ 2]; Console.WriteLine{array.Length( )}; C# Programming with Visual C# 2010 Express23

24 คำถามทบทวน 3. int[, ] grid = new int [ 3,2 ] เมื่อทดสอบด้วย พร็อบเพอร์ตี้ Rank และ Length จะมีค่า เท่ากับเท่าใด 4. จงหา 2 วิธีคัดลอกอาร์เรย์ 5. ใช้เมธอดอะไรเพื่อหาตำแหน่งดัชนีของอาร์เรย์ 6. ใช้สเตทเม้นท์ใดเพื่อวนซ้ำอาร์เรย์ทุกค่าโดยไม่ต้องทราบ ขนาดของอาร์เรย์ 7. อาร์เรย์ลิสท์ ต่างกับ อาร์เรย์ทั่วไปอย่างไร C# Programming with Visual C# 2010 Express24


ดาวน์โหลด ppt Visual C# 2010 Express 5. Array โครงสร้างข้อมูลพื้นที่สุด ที่ไม่เคยเลย จะไม่ใช้อาร์เรย์ 1 C# Programming with Visual C# 2010 Express.

งานนำเสนอที่คล้ายกัน


Ads by Google