ข้อมูลชนิด Array
ข้อมูลชนิดอาร์เรย์
อาร์เรย์ คือ ข้อมูลที่ประกอบไปด้วยรายการชนิดข้อมูลเดียวกันจานวนหนึ่ง แต่
ละรายการเรียกว่า เซลล์ (Cell) และแต่ละเซลล์จะมี อินเด็กซ์ (Index) สาหรับ
ใช้เพื่ออ้างถึงข้อมูล
ตัวแปรอาร์เรย์ (Array) หรือเรียกอีกชื่อหนึ่งว่า ตัวแปรชุด เป็นการจองพื้นที่
ในหน่วยความ จาให้กับตัวแปร เพื่อให้ตัวแปรนั้นสามารถรับข้อมูลหรือเก็บข้อมูลได้
มากกว่า 1 ค่า โดยค่าแต่ละค่านั้น จะถูกเก็บลงยังพื้นที่ของหน่วยความจาที่แตกต่าง
กัน พื้นที่ในหน่วยความจาจะใช้หมายเลขลาดับเป็นตัว
อาร์เรย์ เป็นโครงสร้างข้อมูลที่ใช้เก็บข้อมูลชนิดเดียวกัน เป็นกลุ่มหรือชุดที่เรียง
ติดต่อกันเป็นแถว มีขอบเขตจากัดและมีขนาดคงที่ ข้อมูลชนิดเดียวกัน คือ ข้อมูลทุก
ตัวที่อยู่ในอาร์เรย์จะต้องเป็นข้อมูลชนิดเดียวกันเท่านั้น เช่น ถ้าเป็นอาร์เรย์ชนิดจานวน
เต็ม ข้อมูลทุกตัวในอาร์เรย์ก็ต้องเป็นชนิดจานวนเต็ม ไม่สามารถเก็บข้อมูลต่างชนิดกัน
ได้
Case Study 1
หากในการเขียนปรแกรมต้องการตัวแปร 1 ตัวมาเก็บค่าจานวน
เต็ม 1 จานวน เราสามารถประกาศตัวแปรเป็น int x ; โดยที่ ตัว
แปรตัวนี้จะเก็บค่าได้เพียง 1 ค่าเท่านั้น ซึ่งหากต้องการตัวแปรมาเก็บ
จานวนเต็ม 50 จานวนจะต้องทาการประกาศตัวแปรเลย 50 ตัว เช่น
int x1, x2 ,x3, x4, x5………x50 ; ซึ่งเป็นการ
ยุ่งยากในการเขียนโปรแกรม
แบ่งได้เป็น 3 ชนิด
อาร์เรย์ชนิด 1 มิติ (One-Dimensional)
อาร์เรย์ชนิด 2 มิติ (Two-Dimensional)
อาร์เรย์ชนิด 3 มิติ (Three-Dimensional)
อาร์เรย์ชนิด 1 มิติ
มีลักษณะเป็นข้อมูล 1 ชุด เรียงลาดับกันเป็นแถวในแนวนอน
การประกาศตัวแปรอาร์เรย์
ใช้คาว่า ARRAY … OF
VAR ชื่อตัวแปร : ARRAY[ค่าแรก..ค่าสุดท้าย]
OF ชนิดข้อมูล;
ตัวอย่าง : การประกาศตัวแปรอาร์เรย์
VAR SName : ARRAY[1..50] OF
string[20];
SAge : ARRAY[1..50] OF byte;
SGpa : ARRAY[1..50] OF real;
อาร์เรย์ชนิด 2 มิติ
มีลักษณะการเก็บข้อมูลเป็นตาราง คือ มีทั้งแถวและคอลัมน์
การประกาศตัวแปรอาร์เรย์ชนิด 2 มิติ
ใช้คาว่า ARRAY [index1, index2] OF
VAR ชื่อตัวแปร : ARRAY[ค่าแรกของแถว..
ค่า สุดท้ายของแถว, ค่าแรกของคอลัมน์..ค่า สุดท้ายของ
คอลัมน์] OF ชนิดข้อมูล;
อาร์เรย์ชนิด 3 มิติ
ลักษณะการเก็บข้อมูลเป็นหลายตารางซ้อนกัน เช่น ข้อมูลคะแนน
วิชาคณิตศาสตร์และภาษาไทยของนักเรียน 2 ห้อง ห้องละ 50 คน
การประกาศตัวแปรอาร์เรย์ชนิด 3 มิติ
ใช้คาว่า ARRAY [index1, index2, index3] OF
VAR ชื่อตัวแปร : ARRAY[ค่าแรกของตาราง..ค่าสุดท้าย
ของตาราง, ค่าแรกของแถว.. ค่าสุดท้ายของแถว, ค่าแรกของ
คอลัมน์.. ค่าสุดท้ายของคอลัมน์] OF ชนิดข้อมูล;
ข้อมูลชนิด string
string คือข้อมูลประเภทหนึ่งซึ่งจริงๆแล้วก็คือ array ของ
ตัวแปรประเภท char ซึ่งเราได้ศึกษาข้อมูลประเภท string ไป
แล้วในเรื่องตัวแปรและประเภทข้อมูลในภาษาซี โดยในบทนี้จะศึกษา
เกี่ยวกับ string เพิ่มเติมและสอนใช้ฟังก์ชันต่างๆที่เกี่ยวกับ
string
ฟังก์ชันเกี่ยวกับ string
ในภาษาซีมีฟังก์ชันที่เกี่ยวกับ string ที่น่าสนใจอยู่หลาย
ฟังก์ชัน โดยฟังก์ชันเกียวกับ string จะถูกเก็บไว้ใน
<string.h> โดยมีฟังก์ชันเกียวกับ string ที่น่าสนใจดังนี้
1. strlen(str) ใช้หาความยาว string
2. strlwr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพ์เล็ก
3. strupr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพ์ใหญ่
4. strrev(str) ใช้กลับตัวอักษรในสตริงจากซ้ายไปขวา
5. strcpy(str1,str2) ใช้ copy string จาก str2 ไปให้กับ str1
6. strcpy(str1,str2,n) ใช้ copy string จาก str2 ไปให้กับ str1 จานวน n ตัว
7. strcat(str1,str2) ใช้เชื่อม string str1 กับ str2 โดยนา str2 มาต่อท้าย
str1
8. strcmp(str1,str2) ใช้เปรียบเทียบ string str1 กับ str2 ว่า string ตัวใดมา
ก่อนหรือหลังตามหลักพจนานุกรม ถ้า str1 มาก่อน จะคืนค่า -1 ถ้า str1 มาทีหลัง จะคืนค่า 1 ถ้า
str1 กับ str2 เหมือนกันจะคืนค่า 0
ตัวอย่างโปรแกรมการใช้ฟังก์ชั่นเกี่ยวกับ string
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 char a[20] = “ant”;
6 char b[20] = “bird”;
7 char c[20];
8 printf(“length a = %dn”,strlen(a)); //พิมพ์ความยาวของ string a
9 printf(“length b = %dn”,strlen(b)); //พิมพ์ความยาวของ string b
10 printf(“reverse string b = %sn”,strrev(b)); //กลับตัวอักษรใน string b
11 printf(“%sn”,strcat(a,b)); //ต่อ string a กับ b
12 strncpy(c,a,2); // copy string a จานวน 2 ตัวอักษร มาใส่ string c
13 printf(“c = %s”,c);
14 }
จากตัวอย่างจะเห็นว่า เมื่อพิมพ์ค่าตัวแปร string c ออกมา
จะมีตัวอักษรแปลกๆมาด้วย ซึ่งจริงค่าควรจะเป็น “an” เนื่องจาก
ตอนประกาศตัวแปรเราไม่ได้กาหนดค่าให้ตัวแปร c ทาให้พื้นที่ตัว
แปรนั้นยังคงเก็บค่าเดิมอยู่ ซึ่งเป็นค่าอะไรไม่รู้ จึงทาให้เวลาพิมพ์ค่า
ออกมาจึงมีโอกาสที่จะมีค่าแปลกๆถูกพิมพ์ออกมาด้วย ดังนั้นจึงต้อง
เคลียร์ค่าข้อมูลในตัวแปรก่อน โดยการกาหนดค่าตัวแปรให้เป็น
string ว่าง ( “” )
สรุปท้ายบท
ตัวแปรแบบ array เป็นตัวแปรที่รวมข้อมูลประเภทเดียวกัน
เอาไว้เป้นกลุ่มภายใต้ชื่อเดียวกัน ข้อมูลแต่ละตัวในกลุ่มนั้นเรียกว่า
element หรือ cell โดยการระบุสมาชิกแต่ละตัวใน array
จะใช้ index เป็นตัวชี้ตัวแปรแบบ array นี้อาจมองว่ามีข้อมูล
ต่อกันเป็นแถว ถ้าเป็นแถวเดี่ยวเรียกว่า array 1 มิติ นอกจากนี้ใน
ภาษาซียังมี array แบบหลายมิติให้ใช้อีกด้วย แต่ส่วนใหญ่จะนิยม
ใช้กันถึงแค่ array 2 มิติ
สาหรับข้อมูลแบบ string ประกอบด้วยตัวอักษรหลายตัวมา
เรียงต่อกัน โดยอาจมองว่า string คือ array ของ char ก็ได้
แต่จะต้องมีรหัสสิ้นสุด string ที่เรียกว่า null (“″) เป็นตัวปิด
ท้าย string และถ้าหากต้องการเรียกใช้ฟังก์ชันที่เกี่ยวกับ
string จะต้องทาการ #include <string.h> เข้ามา
โปรแกรม ซึ่งใน ไฟล์ string.h จะมีฟังก์ชันเกียวกับ string
มากมายให้ใช้ เช่น ฟังก์ชัน strlen ใช้สาหรับหาความยาว
string , ฟังก์ชัน strcpy ใช้สาหรับ copy string เป็นต้น

ข้อมูลชนิด Array

  • 1.
  • 2.
    ข้อมูลชนิดอาร์เรย์ อาร์เรย์ คือ ข้อมูลที่ประกอบไปด้วยรายการชนิดข้อมูลเดียวกันจานวนหนึ่งแต่ ละรายการเรียกว่า เซลล์ (Cell) และแต่ละเซลล์จะมี อินเด็กซ์ (Index) สาหรับ ใช้เพื่ออ้างถึงข้อมูล ตัวแปรอาร์เรย์ (Array) หรือเรียกอีกชื่อหนึ่งว่า ตัวแปรชุด เป็นการจองพื้นที่ ในหน่วยความ จาให้กับตัวแปร เพื่อให้ตัวแปรนั้นสามารถรับข้อมูลหรือเก็บข้อมูลได้ มากกว่า 1 ค่า โดยค่าแต่ละค่านั้น จะถูกเก็บลงยังพื้นที่ของหน่วยความจาที่แตกต่าง กัน พื้นที่ในหน่วยความจาจะใช้หมายเลขลาดับเป็นตัว
  • 3.
    อาร์เรย์ เป็นโครงสร้างข้อมูลที่ใช้เก็บข้อมูลชนิดเดียวกัน เป็นกลุ่มหรือชุดที่เรียง ติดต่อกันเป็นแถวมีขอบเขตจากัดและมีขนาดคงที่ ข้อมูลชนิดเดียวกัน คือ ข้อมูลทุก ตัวที่อยู่ในอาร์เรย์จะต้องเป็นข้อมูลชนิดเดียวกันเท่านั้น เช่น ถ้าเป็นอาร์เรย์ชนิดจานวน เต็ม ข้อมูลทุกตัวในอาร์เรย์ก็ต้องเป็นชนิดจานวนเต็ม ไม่สามารถเก็บข้อมูลต่างชนิดกัน ได้
  • 4.
    Case Study 1 หากในการเขียนปรแกรมต้องการตัวแปร1 ตัวมาเก็บค่าจานวน เต็ม 1 จานวน เราสามารถประกาศตัวแปรเป็น int x ; โดยที่ ตัว แปรตัวนี้จะเก็บค่าได้เพียง 1 ค่าเท่านั้น ซึ่งหากต้องการตัวแปรมาเก็บ จานวนเต็ม 50 จานวนจะต้องทาการประกาศตัวแปรเลย 50 ตัว เช่น int x1, x2 ,x3, x4, x5………x50 ; ซึ่งเป็นการ ยุ่งยากในการเขียนโปรแกรม
  • 5.
    แบ่งได้เป็น 3 ชนิด อาร์เรย์ชนิด1 มิติ (One-Dimensional) อาร์เรย์ชนิด 2 มิติ (Two-Dimensional) อาร์เรย์ชนิด 3 มิติ (Three-Dimensional)
  • 6.
    อาร์เรย์ชนิด 1 มิติ มีลักษณะเป็นข้อมูล1 ชุด เรียงลาดับกันเป็นแถวในแนวนอน การประกาศตัวแปรอาร์เรย์ ใช้คาว่า ARRAY … OF VAR ชื่อตัวแปร : ARRAY[ค่าแรก..ค่าสุดท้าย] OF ชนิดข้อมูล; ตัวอย่าง : การประกาศตัวแปรอาร์เรย์ VAR SName : ARRAY[1..50] OF string[20]; SAge : ARRAY[1..50] OF byte; SGpa : ARRAY[1..50] OF real;
  • 7.
    อาร์เรย์ชนิด 2 มิติ มีลักษณะการเก็บข้อมูลเป็นตารางคือ มีทั้งแถวและคอลัมน์ การประกาศตัวแปรอาร์เรย์ชนิด 2 มิติ ใช้คาว่า ARRAY [index1, index2] OF VAR ชื่อตัวแปร : ARRAY[ค่าแรกของแถว.. ค่า สุดท้ายของแถว, ค่าแรกของคอลัมน์..ค่า สุดท้ายของ คอลัมน์] OF ชนิดข้อมูล;
  • 8.
    อาร์เรย์ชนิด 3 มิติ ลักษณะการเก็บข้อมูลเป็นหลายตารางซ้อนกันเช่น ข้อมูลคะแนน วิชาคณิตศาสตร์และภาษาไทยของนักเรียน 2 ห้อง ห้องละ 50 คน การประกาศตัวแปรอาร์เรย์ชนิด 3 มิติ ใช้คาว่า ARRAY [index1, index2, index3] OF VAR ชื่อตัวแปร : ARRAY[ค่าแรกของตาราง..ค่าสุดท้าย ของตาราง, ค่าแรกของแถว.. ค่าสุดท้ายของแถว, ค่าแรกของ คอลัมน์.. ค่าสุดท้ายของคอลัมน์] OF ชนิดข้อมูล;
  • 9.
    ข้อมูลชนิด string string คือข้อมูลประเภทหนึ่งซึ่งจริงๆแล้วก็คือarray ของ ตัวแปรประเภท char ซึ่งเราได้ศึกษาข้อมูลประเภท string ไป แล้วในเรื่องตัวแปรและประเภทข้อมูลในภาษาซี โดยในบทนี้จะศึกษา เกี่ยวกับ string เพิ่มเติมและสอนใช้ฟังก์ชันต่างๆที่เกี่ยวกับ string
  • 10.
    ฟังก์ชันเกี่ยวกับ string ในภาษาซีมีฟังก์ชันที่เกี่ยวกับ stringที่น่าสนใจอยู่หลาย ฟังก์ชัน โดยฟังก์ชันเกียวกับ string จะถูกเก็บไว้ใน <string.h> โดยมีฟังก์ชันเกียวกับ string ที่น่าสนใจดังนี้ 1. strlen(str) ใช้หาความยาว string 2. strlwr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพ์เล็ก 3. strupr(str) ใช้เปลี่ยน string ให้เป็นตัวพิมพ์ใหญ่
  • 11.
    4. strrev(str) ใช้กลับตัวอักษรในสตริงจากซ้ายไปขวา 5.strcpy(str1,str2) ใช้ copy string จาก str2 ไปให้กับ str1 6. strcpy(str1,str2,n) ใช้ copy string จาก str2 ไปให้กับ str1 จานวน n ตัว 7. strcat(str1,str2) ใช้เชื่อม string str1 กับ str2 โดยนา str2 มาต่อท้าย str1 8. strcmp(str1,str2) ใช้เปรียบเทียบ string str1 กับ str2 ว่า string ตัวใดมา ก่อนหรือหลังตามหลักพจนานุกรม ถ้า str1 มาก่อน จะคืนค่า -1 ถ้า str1 มาทีหลัง จะคืนค่า 1 ถ้า str1 กับ str2 เหมือนกันจะคืนค่า 0
  • 12.
    ตัวอย่างโปรแกรมการใช้ฟังก์ชั่นเกี่ยวกับ string 1 #include<stdio.h> 2 #include <string.h> 3 int main() 4 { 5 char a[20] = “ant”; 6 char b[20] = “bird”; 7 char c[20]; 8 printf(“length a = %dn”,strlen(a)); //พิมพ์ความยาวของ string a 9 printf(“length b = %dn”,strlen(b)); //พิมพ์ความยาวของ string b 10 printf(“reverse string b = %sn”,strrev(b)); //กลับตัวอักษรใน string b 11 printf(“%sn”,strcat(a,b)); //ต่อ string a กับ b 12 strncpy(c,a,2); // copy string a จานวน 2 ตัวอักษร มาใส่ string c 13 printf(“c = %s”,c); 14 }
  • 13.
    จากตัวอย่างจะเห็นว่า เมื่อพิมพ์ค่าตัวแปร stringc ออกมา จะมีตัวอักษรแปลกๆมาด้วย ซึ่งจริงค่าควรจะเป็น “an” เนื่องจาก ตอนประกาศตัวแปรเราไม่ได้กาหนดค่าให้ตัวแปร c ทาให้พื้นที่ตัว แปรนั้นยังคงเก็บค่าเดิมอยู่ ซึ่งเป็นค่าอะไรไม่รู้ จึงทาให้เวลาพิมพ์ค่า ออกมาจึงมีโอกาสที่จะมีค่าแปลกๆถูกพิมพ์ออกมาด้วย ดังนั้นจึงต้อง เคลียร์ค่าข้อมูลในตัวแปรก่อน โดยการกาหนดค่าตัวแปรให้เป็น string ว่าง ( “” )
  • 14.
    สรุปท้ายบท ตัวแปรแบบ array เป็นตัวแปรที่รวมข้อมูลประเภทเดียวกัน เอาไว้เป้นกลุ่มภายใต้ชื่อเดียวกันข้อมูลแต่ละตัวในกลุ่มนั้นเรียกว่า element หรือ cell โดยการระบุสมาชิกแต่ละตัวใน array จะใช้ index เป็นตัวชี้ตัวแปรแบบ array นี้อาจมองว่ามีข้อมูล ต่อกันเป็นแถว ถ้าเป็นแถวเดี่ยวเรียกว่า array 1 มิติ นอกจากนี้ใน ภาษาซียังมี array แบบหลายมิติให้ใช้อีกด้วย แต่ส่วนใหญ่จะนิยม ใช้กันถึงแค่ array 2 มิติ
  • 15.
    สาหรับข้อมูลแบบ string ประกอบด้วยตัวอักษรหลายตัวมา เรียงต่อกันโดยอาจมองว่า string คือ array ของ char ก็ได้ แต่จะต้องมีรหัสสิ้นสุด string ที่เรียกว่า null (“″) เป็นตัวปิด ท้าย string และถ้าหากต้องการเรียกใช้ฟังก์ชันที่เกี่ยวกับ string จะต้องทาการ #include <string.h> เข้ามา โปรแกรม ซึ่งใน ไฟล์ string.h จะมีฟังก์ชันเกียวกับ string มากมายให้ใช้ เช่น ฟังก์ชัน strlen ใช้สาหรับหาความยาว string , ฟังก์ชัน strcpy ใช้สาหรับ copy string เป็นต้น