วันจันทร์ที่ 13 กุมภาพันธ์ พ.ศ. 2560

สรุปท้ายบทที่7 อาร์เรย์และฟังก์ชันจัดการสตริง

สรุปท้ายบทที่7 อาร์เรย์และฟังก์ชันจัดการสตริง

ตัวแปรอาเรย์ ( Array Variable)
 
         array คือกลุ่มของข้อมูลที่เรียงลำดับกัน มีจำนวนแน่นอนซึ่งข้อมูลจะเป็นประเภทเดียวกัน ข้อมูลแต่ละตัวของอาร์เรย์
จะเรียกว่า อีลีเมนต์(Element) และข้อมูลแต่ละอีลีเมนต์จะมีหมายเลขเพื่อใช้ในการอ้างอิงถึงเรียกตัวเลขนี้ ว่า เลขดัชนี (Index) จะเป็นตัวแปรที่ชื่อ เหมือนกัน แต่จะแตกต่างกันตรงหมายเลข

    อาร์เรย์  1 มิติ
การใช้ตัวแปร array มีรูปแบบดังนี้
ประเภทตัวแปร ชื่อตัวแปรarray[จำนวนสมาชิกของ array];


  เช่น
  int Score[4];
  ในที่นี้มีความหมายว่า เป็นการประกาศตัวแปร array ชื่อ Score มีจำนวน 4 รายการ โดยมีรายการที่
    Score[0]
    Score[1]
    Score[2]
    Score[3]
    Score[0] Score[1]  Score[2] Score[3]
  int int  int int
  รายการของ array จะเริ่มที่ 0 ไม่ได้เริ่มที่ 1 ถ้าเราประกาศตัวแปร array เช่น int i[3] ก็จะมีรายการที่ 0 ถึง 2 จะไม่มีหมายเลข อินเด็กซ์ 3

 ตัวแปรอาร์เรย์หลายตัว
การประกาศอาร์เรย์หลายตัวทำได้ดังนี้
    int [] abc , xyz;
    abc = new int[500];
    
xyz = new int[10];

หรือเขียนรวมกันได้ดังนี้
    int[]  abc = new int [500], xyz = new int[10];

***ข้อควรระวัง
    int [] a , b ;   a และ b เป็น Array 
    nt a[], b ;  a เป็น Array     b ไม่เป็น Array

การกำหนดค่าเริ่มต้นให้กับอาร์เรย์ 1 มิติ
         สามารถกำหนดค่าเริ่มต้นให้กับ array ได้ตั้งแต่ตอนประกาศตัวแปร
ค่าที่กำหนดต้องอยู่ในเครื่องหมาย { } และถ้ามีมากกว่า 1 ค่า ต้องแยกจากกันด้วยเครื่องหมาย ,(comma)

    เช่น int   a[5]  = {10,20,30,40,50 } ;

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

    เช่น  float price[5] = {50.5,2.25,10.0} ;

         บางครั้งถ้ากำหนดค่าเริ่มต้นให้แก่อาร์เรย์เลย เราไม่จำเป็นต้องใส่ขนาดของอาร์เรย์ก็ได้
เช่น float a[ ]  =   {1,2,3,4,5} ; 
ความหมายคือ เป็นการกำหนดตัวแปรอาร์เรย์ของจำนวนจริงแบบ float ขนาด 5 ช่อง
***เราไม่สามารถประกาศตัวแปรอาร์เรย์โดยไม่ใส่ขนาดของอาร์เรย์ได้ ยกเว้นมีการกำหนดค่าเริ่มต้นให้กับมันตั้งแต่แรก

การประมวลผลอาร์เรย์
         Element ของอาร์เรย์ ลำดับแรกจะเป็น 0 เสมอ ลำดับของ Element ของอาร์เรย์โดยส่วนมากจะเป็นค่าตัวเลขจำนวนเต็ม ตัวอย่างเช่น ใช้อาร์เรย์ scores เราจะเข้าถึง Element แรกได้ดังนี้

    scores[0]

และถ้าต้องการจะประมวลผล Element ทั้งหมด ก็สามารถใช้ลูปเข้ามาช่วยได้ดังตัวอย่างด้านล่างนี้
for (i=0;<9;i++)
    scores[i]…;

อาร์เรย์กับการผ่านค่า
การส่ง Array เข้าไปใน Method จะเป็นการส่งตำแหน่งของ Array ( Reference ) เข้าไปให้กับ Parameter ของ Method 
อาร์เรย์ของออบเจ็กต์
อาร์เรย์สามารถเก็บ reference ของ Object ได้ โดยกำหนดให้อาเรย์ เป็น Class นั้นๆ ในตอนประกาศอาเรย์ มีรูปแบบดังนี้

    className [] arrayName = new className[size];

เช่น Student [ ] studentList = new Student[10];
    Student [ ] studentList = new Student[3];
    studentList[0] = new Student();
    studentList[1] = new Student();
    studentList[2] = new Student();


   อาร์เรย์ 2 มิติ

• อาร์เรย์ 2 มิติ เป็นตัวแปรชุดที่มีการจัดการข้อมูล Row (แถว) , Column (หลัก) ซึ่งอยู่ในรูปแบบตาราง ที่มีแสดงตำแหน่ง 2 ตัว
• อาร์เรย์ 2 มิติ คือ array of array กล่าวคือ array 2 มิติ เป็น array ของ array 1 มิติ นั่นเอง
การประกาศตัวแปรอาร์เรย์ 2 มิติ
    • แบบที่ 1 แบบระบุขนาดไม่กำหนดค่าเริ่มต้น
data_type array_name[row_size][column_size];

    • ตัวอย่าง
    int score[2][10];
    char id[2][10];
**สร้างตัวแปรที่มี 2 แถว 10 หลักสำหรับเก็บตัวเลขจำนวนเต็ม

การกำหนดค่าเริ่มต้นให้กับอาร์เรย์ 2 มิติ

    ตัวอย่างรูปแบบที่ 1 int num[2][3] = {11,12,13,21,22,23};
    ตัวอย่างรูปแบบที่ 2 int num[2][3] = {{11,12,13},{21,22,23}};
    ตัวอย่างรูปแบบที่ 3 int num[3][3] = {{11,12,13},{21,22,23}};

โดยที่การประกาศตัวแปรทั้ง 3 รูปแบบให้ผลลัพธ์เหมือนกัน คือ

ข้อสังเกต 
    อาร์เรย์ขนาด 2 มิติขึ้นไป จะไม่ระบุขนาดได้เฉพาะมิติที่ 1 เท่านั้น ส่วนมิติอื่นๆ ต้องมีการระบุขนาดด้วยทุกครั้ง

สตริง(String)

           สตริงเป็นออปเจค (Object) ที่สืบทอดคุณสมบัติมาจากคลาสสตริง (Class String) ถ้าต้องการสร้างออปเจคจากคลาสสตริง ต้องประกาศดังนี้

    String str = new String(“Java”); 
    หรือ String str = “Java”;

ถ้าเราต้องการให้ str มีค่าว่างต้องประกาศเช่นนี้  String str = null;

        การเก็บข้อมูลของสตริงนั้น จะมีการเก็บข้อมูลอยู่ 2 ส่วน ส่วนแรกจะเป็นข้อมูลตัวอักษรโดยเก็บเรียงกันไป แบะส่วนที่ 2 จะเก็บจุดสิ้นสุดของสตริง ซึ่งจุสิ้นสุดของสตริงจะใช้ Null Characterหรือ ‘\0’

**ตัวอย่าง
    class string2 {
    public static void main (String[] args) {
    String one = "Principle ";
    String two = "programming";
    String three = null;
    three = one + two;
    System.out.printf("%s%n",three);
    }
    }
** ผลลัพธ์ที่ได้คือPrinciple programming

ฟังก์ชันเกี่ยวกับ string

ในภาษาซีมีฟังก์ชันที่เกี่ยวกับ string ที่น่าสนใจอยู่หลายฟังก์ชัน โดยฟังก์ชันเกียวกับ string จะถูกเก็บไว้ใน <string.h> โดยมีฟังก์ชันเกียวกับ string ที่น่าสนใจดังนี้

- strlen(str) ใช้หาความยาว string
- strcmp(str1,str2) ใช้เปรียบเทียบ string str1 กับ str2 ว่า string ตัวใดมาก่อนหรือหลังตามหลักพจนานุกรม ถ้า str1 มาก่อน จะคืนค่า -1 ถ้า str1 มาทีหลัง จะคืนค่า 1 ถ้า str1 กับ str2 เหมือนกันจะคืนค่า 0
- strcat(str1,str2) ใช้เชื่อม string str1 กับ str2 โดยนำ str2 มาต่อท้าย str1
- strlwr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพ์เล็ก
- strupr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพืใหญ่
- strrev(str) ใช้กลับตัวอักษรในสตริงจากซ้ายไปขวา
- strcpy(str1,str2) ใช้ copy string จาก str2 ไปให้กับ str1
- strcpy(str1,str2,n) ใช้ copy string จาก str2 ไปให้กับ str1 จำนวน n ตัว



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

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