วันอังคารที่ 16 พฤศจิกายน พ.ศ. 2553

Array

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

ภาษาตระกูล .NET ถูกแบ่งแยกโดยระบบ namespace ภายใน namespace สามารถประกอบด้วย namespace ระดับต่ำกว่า, คลาส, สตรัก (struct)และไทป์พื้นฐานรวมกัน แนวคิดนี้สร้างเพื่ออะไร ? อธิบายด้วยปรัชญาเช่นไร ? (ลองหาคำตอบเองนะครับ)

Array
คือโครงสร้างข้อมูลกลุ่มใดๆที่มีไทป์ชนิดเดียวกันทั้งหมด เขียนสัญลักษณ์แทนกลุ่มด้วยเครื่องหมาย [ ] พร้อมกับระบุจำนวนมิติ เช่น
     int[ ] i = new int[5]; //เรียกว่าอาร์เรย์ i หนึ่งมิติ
     float[ ][ ] j = new float[2][ ]; //เรียกว่าอาร์เรย์ j สองมิติ

เราสามารถเข้าถึงสมาชิกกลุ่มอาร์เรย์จากเลขดัชนี (index) ที่เป็นจำนวนเต็มบวก โดยอาจเป็นจำนวนเต็มบวกเพียวหรือเกิดจากการคำนวณก็ได้ เช่น
     i[0] = 1;
     i[3 + 1] = 5;

ภาษา C# กำหนดให้เลขดัชนีเริ่มต้นที่ลำดับ 0 และสิ้นสุดที่ n-1 ลำดับ ฉะนั้นจากตัวอย่างข้างต้นเราจึงเข้าถึงสมาชิกตัวสุดท้ายของอาร์เรย์ i ที่เลขดัชนีมีค่า 4 เท่านั้น เลขดัชนีนอกเหนือจากนี้ขณะคอมไพล์ คอมไพเลอร์จะแจ้งว่า System.IndexOutOfRangeException

อาร์เรย์ในภาษา C# มีประเภทเป็น reference type ทั้งหมด (กล่อง reference ถูกสร้างขึ้นจากคีย์ new) และออบเจ็กต์ของอาร์เรย์ คือ ออบเจ็กต์ที่มาจากคลาส System.Array

โดยทั่วไปแล้วมักใช้งานอาร์เรย์เพียงหนึ่งหรือสองมิติเท่านั้น มากไปกว่านี้มักพบในโปรแกรมที่ต้องจัดการกับงานเฉพาะทาง

P09_Array
- สร้างโปรเจ็กค์ใหม่เพิ่มเข้าไปยังโซลูชัน CsharpTutorialForFriends เหมือนเคย
- ตั้งชื่อมันว่า P09_Array โดยโค้ดเพิ่มดังนี้

- ผลลัพธ์
- โปรแกรมจะหยุดรอรับค่า score เป็นจำนวน 5 รอบ
- เมื่อได้ครับ score ครบแล้วจะแสดงผลค่าทั้งหมดทางจอภาพ

for statement
คือ controls statements ปรเภท iteration แบ่งออกเป็นสามส่วนใหญ่ๆ ได้แก่
- ส่วนกำหนดค่าเริ่มต้น ในที่นี้ประกาศตัวแปรชนิดจำนวนเต็มชื่อ i มีค่าเริ่มต้น 0
- ส่วนเงื่อนไข ในที่นี้ให้ค่า i น้อยกว่า score.Length (Length คือคุณสมบัติ (property) ของความยาวหรือจำนวนสมาชิกทั้งหมดของอาร์เรย์)
- ส่วนเพิ่มหรือลดค่า ในที่นี้ให้ i เพิ่มค่าขึ้น 1 ทุกรอบ เป็นจำนวน 5 รอบ

การทำงานของ for จะเริ่มจาก "ส่วนกำหนดค่าเริ่มต้น" แล้วจะตรวจสอบ "ส่วนเงื่อนไข" หากเงื่อนไขเป็นจริงจะทำคำสั่งภายในเครื่องหมาย { และ } เสร็จแล้วจึงทำ "ส่วนเพิ่มหรือลดค่า" แล้วกลับไปตรวจสอบ "ส่วนเงื่อนไข" หากเงื่อนไขเป็นจริงจะทำ....วนซ้ำจนกว่าเงื่อนไขเป็นเท็จ

ทุกส่วนดังกล่าวสามารถกำหนดได้มากกว่าหนึ่งคำสั่ง โดยคั่นแต่ละคำสั่งด้วยเครื่องหมาย ,

foreach statement
คือ controls statements ปรเภท iteration เช่นเดียวกับ for ใช้สำหรับเข้าถึงข้อมูลจากคลาสประเภทคอลเล็กชัน (collection) จากลำดับแรกกระทั่งลำดับสุดท้าย และอาร์เรย์เป็นคลาสคอลเล็กชัน จึงสามารถใช้ foreach ได้

แบ่งออกเป็นสองส่วนใหญ่ๆ ได้แก่
- ส่วนกล่อง value หรือตัวอ้างอิง address ซึ่งต้องมีชนิดไทป์เดียวกับ "ส่วนกล่อง reference" ในที่นี้ประกาศใหม่เป็น float s
- ส่วนกล่อง reference คือกลุ่มของออบเจ็กต์ที่มีไทป์ชนิดเดียวกัน

คีย์ in ใช้ระบุไทป์ที่บรรจุไว้ภายใน "ส่วนกล่อง reference"

แบบฝึกหัด
- จงเขียนโปรแกรมแสดงสูตรคูณ (Multiplication table) จากลูป for โดยรับตัวคูณจากแป้นพิมพ์ แล้วแสดงลำดับการคูณจำนวน 20 ลำดับ เช่น
     Enter multiplier value : 9
     9 x 1 = 9
     9 x 2 = 18
     9 x 3 = 27
     ...
     9 x 20 = 180

- จงเขียนโปรแกรมแสดงผลยกกำลังของตัวเลขจำนวนเต็มบวกสองจำนวนที่รับจากแป้นพิมพ์ เมื่อจำนวนแรกคือเลขฐานและจำนวนที่สองคือเลขชี้กำลัง เช่น
     Enter base value : 2
     Enter power value : 3
     Result is 8

- จงเขียนโปรแกรมรับตัวเลขจำนวนจริง (ทศนิยม) ทางแป้นพิมพ์ 5 จำนวน แล้วแสดงผลจำนวนท้ายสุดก่อน ลำดับไปกระทั่งถึงจำนวนแรก เช่น
     Enter a real number : 10.01
     Enter a real number : 20.02
     Enter a real number : 30.
     Enter a real number : .4105
     Enter a real number : 1000
     1000
     0.4105
     30
     20.02
     10.01

ไม่มีความคิดเห็น:

แสดงความคิดเห็น