web analytics

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 3 – Array

cover

จากตอนที่ 2

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 2

 

บทความตอนที่ 2 เราได้เรียนรู้เรื่อง operator และ loop ไปแล้ว บทความนี้จะเป็นเรื่อง array

 

รู้จักกับ Array

ถ้าผมต้องการเก็บข้อมูลคะแนนนักเรียน 6 คน วิธีการแบบดิบๆ คือ ผมสามารถประกาศตัวแปร int score 1, score2 , .. ครบ 6 ตัว
ซึ่งมันก็ดูลำบาก มีหลายตัวแปร ตั้งหลายชื่อ
array คือ ตัวแปรชุด เอาไว้เก็บข้อมูลเป็นชุด โดยมีตัวแปรชื่อเดียว

สัญลักษณ์ คือ []
ประกาศตัวแปร int เป็นชุด พร้อมกำหนดค่า คะแนนนักเรียน

  int score[] = { 70 , 82 ,63 , 89 , 98 ,100 };

หรือทำเป็นตัวแปร char เก็บเกรดของวิชา

  char grade[] = { 'A' , 'B' , 'C' , 'D' ,'F'};

ดูดีขึ้นมาทันที

 

การเข้าถึงข้อมูลใน array จะใช้ตัวเลขลำดับ เรียกว่า index
วิธีการ คือ ชื่อตัวแปร ตามด้วย [] ข้างใน [] คือ เลข index โดยจะเริ่มตั้งแต่ 0 ถึง n-1
ถ้า มี 6 ค่า ก็จะ มี index 0 1 2… 5

เช่น ถ้าจะแสดงค่าคะแนนของนักเรียนคนที่ 1 ซึ่งก็จะมี index = 0

printf("%d",score[0]);

 

ถ้าจะเปลี่ยนค่า score[0] ก็ทำได้เหมือนตัวแปรทั่วไป

  score[0] = 99;

 

ลองปริ้นของทั้ง 6 คน ค่า index = 0 1 2 … 5

#include <stdio.h>
main(){
	int score[] = { 70 , 82 ,63 , 89 , 98 ,100 };
	printf("\n %d",score[0]);
	printf("\n %d",score[1]);
	printf("\n %d",score[2]);
	printf("\n %d",score[3]);
	printf("\n %d",score[4]);
	printf("\n %d",score[5]);
}

1

 

การใช้ Loop กับ array

พอเราเข้าใจ array รวมทั้งเรื่อง index แล้ว จะเห็นว่ามันมีลักษณะคล้ายๆกับ ปัญหาใน บทความที่ 2 คือ มันมี code ซ้ำๆกัน ดังนั้นเราจึงสามารถนำ loop มาใช้

index ที่เรียงค่า 0 1 2 3 … เราสามารถใช้ ตัวแปรวนลูปแทนได้

ลองปริ้นคะแนนของทั้ง 6 คน แบบใช้ for loop

#include <stdio.h>
main(){
	int score[] = { 70 , 82 ,63 , 89 , 98 ,100 };
	int i;
	for(i=0;i<6;i++){
		printf("\nstudent %d = %d",i+1,score[i]);
	}
}

2

 

จะเกิดอะไรขึ้น ถ้าปริ้นค่าที่ไม่มี index

ทั้งๆที่เราประกาศว่า score มี อยู่ 6 ค่า ซึ่งจะควรมี index 0 1 2 3 4 5
ถ้าเรา เข้าถึง index  8 9 10 ล่ะ จะเกิดอะไรขึ้น

คำตอบ คือ มันอาจเป็นค่าขยะ หรือก็คือ ค่าอะไรก็ไม่รู้ที่ค้างใน memory ดังนั้นควรใช้อย่างระมัดระวัง

3

 

การจองพื้นที่ array

เราสามารถนำ ตัวแปรมาประกาศขนาด array ได้ เช่น

int count = 10;
int data[count];

 

เราสามารถนำการรับค่า scanf เข้ามา เพื่อจองพื้นที่ก่อน
เช่น โปรแกรมคำนวณหาผลรวม โดยจะให้ผู้ใช้ป้อนจำนวนข้อมูลก่อน แล้วใส่ข้อมูลจนครบ ก็จะแสดงผลรวม

#include <stdio.h>
main(){
	int i,length;
	
	printf("\nInput number of data = ");
	scanf("%d",&length);
	
	int score[length];
	int sum = 0;
	
	for(i=0;i<length;i++){
		printf("\nData [%d] = ",i);
		scanf("%d",&score[i]);
		sum += score[i];
	}
	
	printf("\nSUM = %d",sum);
}

a1

 

รู้จักกับ array of char

รายละเอียดของ array of char พิเศษกว่านิดหน่อย เพราะมัน มีลักษณะแบบ string
สามารถกำหนดค่า โดยใช้ ” (double-quote) แล้วตามด้วยข้อความได้เลย
เวลาปริ้นค่า ข้อความ ใช้ %s

#include <stdio.h>
main(){
	char str[] ="Hello world";
	printf("%s",str);
}

7

 

การใช้ scanf รับค่า ข้อความ ก่อนอื่นเราต้องประกาศตัวแปร array char ก่อนพร้อมจองพื้นที่
ตอนใช้ scanf ก็ใช้ท่า %s ส่วนพารามิเตอร์ที่สอง คือ ตัวแปรที่ต้องการเก็บข้อความ

ที่สำคัญ ไม่ต้องมี & หน้าตัวแปร 

#include <stdio.h>
main(){
	char str[100];
	printf("Message = ");
	scanf("%s",str);
	printf("%s",str);
}

8

 

รู้จักกับ array 2 มิติ

ก่อนหน้านี้เราใช้ [] ก็คือ 1 มิติ จะเป็นเหมือน ข้อมูล 1 แถวเรียงกันไป ซึ่ง array สามารถมีได้หลายมิติ มารู้กับ array 2 มิติกัน

array 2 มิติ จะใช้ [][]

ประกาศตัวแปร array 2 มิติ และกำหนดค่าเริ่มต้น

int data[][3] = {
		   {130 , 420 , 360},
		   {948 , 565 , 340},
		   {34 , 3430 , 342},
		};

 

ซึ่งจะเก็บข้อมูลคล้ายตาราง

4

การกำหนดค่า ก็ระบุ index เช่นเดิม

  data[2][3] = 1000;

 

การใช้ Loop กับ array 2 มิติ

จากเดิมที่ array 1 มิติเราใช้ loop 1 ชั้น พอมาเป็น 2 มิติ เราต้องใช้ loop 2 ชั้น ในการปริ้นข้อมูล

#include <stdio.h>
main(){
	
	int data[][3] = {
			   {130 , 420 , 360},
			   {948 , 565 , 340},
			   {34 , 3430 , 342},
			};
				   
	int i,j;
	for(i = 0;i < 3 ;i++){
		for(j = 0;j< 3 ;j++){
			printf("\n data[%d][%d] = %d",i,j,data[i][j]);
		}
	}
}

5

 

Array N มิติ

พอเราเข้าใจ array 1 มิติ และ 2 มิติ เราก็สามารถเพิ่มมิติเข้าไปได้ เช่น 3 มิติ  4 มิติ ซึ่งโดยปกติแล้ว มากกว่า 2 มิติ ไม่ค่อยได้ใช้

array 3 มิติ ก็ต้องใช้ loop วน 3 ชั้น

#include <stdio.h>
main(){
	
	int data[][3][3] = {
			                   {
							{2332 , 432420 , 36120},
							{948 , 52365 , 34120},
							{33244 , 3443 , 3122},
					   },
					   {
							{13021 , 4230 , 31260},
							{9248 , 56325 , 34320},
							{3421 , 332430 , 3342},
					   },
					   {
							{13780 , 420900 , 3680},
							{94843 , 58765 , 3402},
							{34234 , 345430 , 32142},
					   }
			};
				   
	int i,j,k;
	for(i = 0;i < 3 ;i++){
		for(j = 0;j< 3 ;j++){
			for(k = 0;k< 3 ;k++){
				printf("\n data[%d][%d][%d] = %d",i,j,k,data[i][j][k]);
			}
		}
	}
}

6

 

จบแล้วสำหรับเรื่อง array

มาต่อกันในบทความตอนที่ 4 ครับ

(:

 

C Programming : เขียนโปรแกรมภาษา C แบบพื้นฐาน ตอนที่ 4