บทที่7การใช้ตัวแปร แถวลําดับ




        ตัวแปรชุด (Array) หมายถึงตัวแปรที่มีชื่อเดี่ยว ซึ่งมีตัวเลขกำกับชื่อตัวแปรนั้น ๆ โดยสามารถเก็บข้อมูลได้ในลักษณะเดียวกับตัวแปรหลายตัว

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

ตัวแปรชุด 1 มิติ (One Dimension)
                เป็นตัวแปรชุดที่มีเลขแสดงตำแหน่งเพียงตัวเดียว

รูปแบบ                        ชนิดข้อมูล    ชื่อตัวแปร[จำนวนสมาชิก]
        
        ลักษณะของการใช้พื้นที่ในหน่วยความจำของตัวแปรที่มีชนิดข้อมูลต่างกัน จะใช้พื้นที่ในหน่วยความจำไม่เท่ากัน เช่น
        ตัวแปรชุดที่มีชนิดเป็น int ใช้พื้นที่ในหน่วยความจำ 2 ไบต์ ต่อสมาชิกแต่ละตัว
        ตัวแปรชุดที่มีชนิดเป็น float ใช้พื้นที่ในหน่วยความจำ 4 ไบต์ ต่อสมาชิกแต่ละตัว
        ตัวแปรชุดที่มีชนิดเป็น char ใช้พื้นที่ในหน่วยความจำ 1 ไบต์ ต่อสมาชิกแต่ละตัว

        ในตัวแปรชุดนั้นดัชนี (index) ของตัวสมาชิกจะเริ่มที่ 0 เสมอ ดังตัวอย่างต่อไปนี้


ตัวอย่างที่ 1
ตัวอย่างที่ 2
ตัวอย่างที่ 3
ตัวอย่างที่ 5 char c[9] = “coputer”
ตัวอย่างที่ 6  char c[9] = {‘c’, ‘o’ , ‘m’ , ‘u’ , ‘t’ , ‘ e’ , ‘r’ , ‘o’}
ตัวอย่างที่ 7
ตัวอย่างที่ 8  char Str[10];
         int a[5];
         หมายถึง a เป็นอาร์เรย์ที่มี 5 สมาชิก โดยสมาชิกทุกตัวเก็บค่าเป็นจำนวนเต็ม และสมาชิกทุกตัวใช้พื้นที่ในหน่วยความจำ 2 ไบต์

         float salary[5];
         หมายถึง salary เป็นอาร์เรย์ที่มี 5 สมาชิก โดยสมาชิกทุกตัวเก็บค่าเป็นทศนิยม 
และสมาชิกทุกตัวที่ใช้พื้นที่ในหน่วยความจำ 4 ไบต์

         char choice[5];
         หมายถึง choice เป็นอาร์เรย์ที่มี 5 สมาชิกโดยสมาชิกทุกตัวเก็บค่าเป็นตัวอักษร 
1 อักขระ และสมาชิกทุกตัวใช้พื้นที่ในหน่วยความจำ 1 ใบต์
การเข้าถึงสมาชิกของอาร์เรย์และข้อมูลที่เก็บอยู่
         จากตัวอย่างที่ 1  int a[5];  เป็นการจองพื้นที่ในหน่วยความจำให้กับตัวแปร ขนาด 5 สมาชิก เป็นอาร์เรย์ 1 มิติ  โดยมีสมาชิกดังนี้ a[0], a[1], a[2], a[3], a[4]
            การอ้างถึงหรือการเรียกใช้สมาชิกของอาร์เรย์ ใช้วิธีการเขียนชื่อของอาร์เรย์แล้วตามด้วยดัชนี (index) เช่น ต้องการอ้างถึงสมาชิกตัวที่สามซึ่งมีเลขดัชนีเป็น 2 ให้เขียน a[2] ดังตัวอย่างต่อไปนี้
                a[0] หมายถึง การอ้างถึงสมาชิก a[0] เก็บค่า 15 ไว้
                a[1] หมายถึง การอ้างถึงสมาชิก a[1] เก็บค่า 250 ไว้
                a[2] หมายถึง การอ้างถึงสมาชิก a[2] เก็บค่า 8 ไว้
                a[3] หมายถึง การอ้างถึงสมาชิก a[3] เก็บค่า 87 ไว้
                a[4] หมายถึง การอ้างถึงสมาชิก a[3] เก็บค่า 42 ไว้
เข้าถึงโดยการใช้เครื่องหมายจุด   ( . ) ในการเชื่อมต่อ
 การกำหนดค่าให้กับอาร์เรย์
            การกำหนดค่าให้กับอาร์เรย์ในภาษาซีมี 2 ลักษณะ คือ
                1.  การกำหนดค่าให้กับสมาชิกทุกตัว
                2.  การกำหนดค่าให้กับสมาชิกตัวใดตัวหนึ

            1.  การกำหนดค่าให้กับสมาชิกทุกตัว
                เป็นการกำหนดค่าให้กับสมาชิกทุกตัวในขณะที่ประกาศชนิดตัวแปร

                    1.1  เป็นการกำหนดค่าให้กับอาร์เรย์ที่มีค่าเป็นตัวเลข

                  รูปแบบ      ชนิดข้อมูล  ชื่อตัวแปร[จำนวนสมาชิก] = {value-list}
                
           value-list หมายถึง ค่าคงที่ที่ต้องการกำหนดให้กับอาร์เรย์  โดยแต่ละค่าต้องคั่นด้วยเครื่องหมายคอมม่า  และทั้งหมดต้องเขียนอยู่เครื่องหมายวงเล็บปีกกา {} ดังตัวอย่างต่อไปนี้
ตัวอย่างที่ 4
int  a [10] = {1,2,3,4,5,6,7,8,9,10};
                เป็นการกำหนดค่าให้กับอาร์เรย์ โดย a[0] เก็บค่า 1 a[1] เก็บค่า 2 ไปเรื่อย ๆจนถึง a[9] เก็บค่า 10 ไว้
                     1.2  การกำหนดค่าให้กับอาร์เรย์ ชนิด character
           การกำหนดค่าให้กับอาร์เรย์ที่เป็น character ในภาษาซีนั้นแตกต่างจากอาร์เรย์ของโปรแกรมภาษาซีอื่น ๆ กล่าวคือ สมาชิกของอาร์เลย์แต่ละตัวในโปรแกรมภาษาอื่น ๆ นั้น สามารถเก็บได้หลายตัวอักษร แต่สมาชิกของอาร์เรย์แต่ละตัวของภาษาซี สามารถเก็บได้เพียงตัวอักษรเดียว มี 2 วิธี ดังนี้
                                1.2.1  การกำหนดค่าเป็นข้อความ

                         รูปแบบ   ชนิดข้อมูล  ชื่อตัวแปร[จำนวนสมาชิก] = “ข้อความ


          เป็นการกำหนดค่าให้กับอาร์เรย์  c[0] เก็บค่า c c[1] เก็บค่า ไปเรื่อย ๆ จนถึง c[7] เก็บค่า และ c[8] เก็บค่า \o โดยเครื่องจะกำหนดให้ c[8] เก็บค่า \o ให้เองโดยอัตโนมัติ เพื่อเป็นการสิ้นสุข้อความ
                                1.2.1  การกำหนดค่าครั้งละหลายตัว

                         รูปแบบ   ชนิดข้อมูล  ชื่อตัวแปร[จำนวนสมาชิก] = {value-list}
          
           value-list หมายถึง อักขระที่ต้องการกำหนดให้กับอาร์เรย์  โดยอักขระแต่ละตัวต้องเขียนอยู่ในเครื่องหมาย apostrophe (;) และแต่ละค่าต้องคั่นด้วยเครื่องหมายคอมม่า  ทั้งหมดต้องเขียนอยู่เครื่องหมายวงเล็บปีกกา {} ดังตัวอย่างต่อไปนี้

           เป็นการกำหนดค่าให้กับอาร์เรย์ c[0] เก็บค่า c  c[1] เก็บค่า o ไปเรื่อย ๆ จนถึง c[7] เก็บค่า r  และ c[8] เก็บค่า \o โดยต้องกำหนดให้ c[8] เก็บค่า \o เพื่อเป็นการสิ้นสุดข้อความ
           การกำหนดค่าให้กับอาร์เรย์ สามารถกำหนดโดยไม่ต้องระบุจำนวนสมาชิกก็ได้ เครื่องจะเตรียมพื้นที่ไว้ให้เท่ากับจำนวนของข้อมูลจริง เช่น
            int  num[ ] = {1,2,3,4,5}
            char str[ ] = “student”
การกำหนดค่าให้กับสมาชิกตัวใดตัวหนึ่ง
            เป็นการกำหนดค่าให้กับสมาชิกเฉพาะตัว ดังนั้นสมาชิกตัวอื่นไม่ถูกกำหนดค่า

            int  num[30];
            num[22] = 187;
            บรรทัดแรก เป็นการประกาศชนิดตัวแปร num เป็นตัวแปรชุดที่มี 30 สมาชิก เก็บค่าเป็นจำนวนเต็ม
            บรรทัดที่สอง เป็นการกำหนดค่าให้สมาชิกของ num ที่มีตัวชี้ (index) 22 เก็บค่า 187

                    Str[7] = ‘A’;
            บรรทัดแรก เป็นการประกาศชนิดตัวแปร str ตัวแปรชุดที่มี 30 สมาชิก เก็บค่าเป็นตัวอักษร
            บรรทัดที่สอง เป็นการกำหนดค่าให้สมาชิกของ str ที่มีตัวชี้ (index) 7 เก็บค่า A

โปรแกรมตัวอย่าง Array 1 มิติ
Ex1 :
1        //array1d.c                                                                      
2        #include <stdio.h>                                                           
3        #include <conio.h>                                                          
4                                                                                              
5        int a[] = {20,30,40,50,60};                                                 
6        void main()                                                                      
7        {                                                                                     
8        int t = 0,n=0;                                                                  
9        clrscr();                                                                          
10      do {                                                                               
11                                    t += a[++n];                                       
12                                    printf ("Room %d  has %3d pupils, \n", n+1, a[n]);
13           }                                                                                
14      while (n<5);                                                                    
15      printf ("        ===\n");                                                      
16      printf ("Total no is %3d pupils \n", t);                               
17      getch();                                                                          
18      }                                                                                    

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

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