- 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 -...

12
-1- รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ บทที1 ตัวแปรชุด เนื้อหา 1. ความหมายของตัวแปรชุด 2. ตัวแปรชุดหนึ่งมิติ 3. สตริง 4. ตัวแปรชุดสองมิติ 5. ตัวแปรชุดหลายมิติ ผลการเรียนรูที่คาดหวัง 1. อธิบายความหมายของตัวแปรชุด (Array) ได 2. เขียนโปรแกรมประกาศตัวแปรชุดแบบหนึ่งและสองมิติเพื่อเก็บขอมูลชนิดพื้นฐานไดแก จํานวนเต็ม จํานวนทศนิยม และ อักขระ และกําหนดคาเริ่มตนใหกับตัวแปรนั้นๆ ได 3. อธิบายวิธีการอางถึงสมาชิกของตัวแปรชุดได 4. เขียนโปรแกรมรับและแสดงผลสตริงได 5. เขียนโปรแกรมโดยใชฟงกชันสตริงพื้นฐานได 6. อธิบายหลักการใชตัวแปรชุดแบบหลายมิติได 7. เขียนโปรแกรมประมวลผลตัวแปรชุดดานการแวะผานและการคนหาได

Transcript of - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 -...

Page 1: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 1 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

บทที่ 1ตัวแปรชุด

เนื้อหา1. ความหมายของตัวแปรชุด

2. ตัวแปรชุดหนึ่งมิติ3. สตริง

4. ตัวแปรชุดสองมิติ5. ตัวแปรชุดหลายมิติ

ผลการเรียนรูที่คาดหวัง1. อธิบายความหมายของตัวแปรชุด (Array) ได2. เขียนโปรแกรมประกาศตัวแปรชุดแบบหนึ่งและสองมิติเพื่อเก็บขอมูลชนิดพื้นฐานไดแก จํานวนเต็ม จํานวนทศนิยม และ

อักขระ และกําหนดคาเริ่มตนใหกับตัวแปรนั้นๆ ได3. อธิบายวิธีการอางถึงสมาชิกของตัวแปรชุดได4. เขียนโปรแกรมรับและแสดงผลสตริงได5. เขียนโปรแกรมโดยใชฟงกชันสตริงพื้นฐานได6. อธิบายหลักการใชตัวแปรชุดแบบหลายมิติได7. เขียนโปรแกรมประมวลผลตัวแปรชุดดานการแวะผานและการคนหาได

Page 2: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 2 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ความหมายของตัวแปรชุดตัวแปรชุด เปนโครงสรางขอมูลที่ใชเก็บขอมูลชนิดเดียวกัน เปนกลุมหรือชุดที่เรียงติดตอกันเปนแถว

มีขอบเขตจํากัดและมีขนาดคงที่ ขอมูลชนิดเดียวกัน คือ ขอมูลทุกตัวที่อยูในตัวแปรชุดจะตองเปนขอมูลชนิดเดียวกันเทานั้น เชน ถา

เปนตัวแปรชุดชนิดจํานวนเต็ม ขอมูลทุกตัวในตัวแปรชุดก็ตองเปนชนิดจํานวนเต็ม ไมสามารถเก็บขอมูลตางชนิดกันได

ตัวแปรชุด 1 มิติ (One-Dimension Array)

2.1 การประกาศตัวแปร

เชน float score[5];

score[0] score[1] score[2] score[3] score[4]score

4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

int a[50];char name[30];long value[100];

โดยที่ขนาดของตัวแปรชุด สามารถกําหนดเปนตัวเลขจํานวนเต็มหรือคาคงที่ก็ได (แตเปนตัวแปรไมได)

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

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

A[0] A[1] A[2] A[3] A[4]A 10 20 30 40 50

ถาในตอนประกาศตัวแปรตัวแปรชุดไมกําหนดคาเริ่มตนใหกับมันแลว คาที่อยูในตัวแปรจะเปนคาที่คางอยูในหนวยความจําชวงที่เราจองไวเปนตัวแปรชุดนั้น

ถากําหนดคาเริ่มตนตั้งแตตอนประกาศตัวแปรแตกําหนดไมครบ ในกรณีที่เปนตัวแปรชุดแบบตัวเลขทั้งจํานวนเต็มและจํานวนจริง คาที่เหลือจะถูกกําหนดเปน 0 โดยอัตโนมัติเชน float price[5] = {50.5,2.25,10.0} ;

price[0] price[1] price[2] price[3] price[4]price 50.5 2.25 10.0 0.0 0.0

4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

ชนิดขอมูล ชื่อตัวแปร [ขนาดของตัวแปรชุด];

Page 3: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 3 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

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

แตถาเรากําหนดตัวแปรตัวแปรชุดโดยไมใสขนาดของตัวแปรชุด และไมไดกําหนดคาเริ่มตนใหกับมันเชน int a[ ] ; ประกาศผิด!!!

นั่นคือ เราไมสามารถประกาศตัวแปรตัวแปรชุดโดยไมใสขนาดของตัวแปรชุดได ยกเวนมีการกําหนดคาเริ่มตนใหกับมันตั้งแตแรก

2.3 การอางถึงสมาชิก ใชเลขจํานวนเต็มทําหนาที่เปนดัชนี (index) เพื่อระบุถึงขอมูลนั้น โดยระบุชื่อตัวแปรตัวแปรชุด แลว

ตามดวยคาตําแหนงที่อยูของสมาชิก ในภาษาซี ดัชนีเริ่มตั้งแต [0] จนถึง [n-1] ( n = จํานวนของสมาชิกในตัวแปรชุด ) ตัวอยาง ให a เปนตัวแปรชุดของ int ขนาด 5 ชอง โดยแตละชองมีขอมูล 1, 2, 3, 4, 5 ตามลําดับ

a[0] a[1] a[2] a[3] a[4]a 1 2 3 4 5

เขียนไดเปนint a[5];a[0] = 1; a[1] = 2;a[2] = 3;a[3] = 4;a[4] = 5;

ขอสังเกต 1. a[0] , ... , a[4] เปรียบเสมือนตัวแปร int ธรรมดา 5 ตัว นั่นคือสามารถนํามากระทําการตางๆ

ไดเหมือนตัวแปรธรรมดา เชน รับขอมูลเขาไปเก็บไวในตัวแปรชุด a ตําแหนงที่ 3 สามารถเขียนเปนคําสั่งไดดังนี้

scanf ( “%d” , &a[3] ) ; i = 3; a[i] = a[i+1] + a[4] ; จะหมายถึง

1) กําหนดคาใหตัวแปร i เทากับ 32) นําขอมูลในตัวแปรชุด a ตําแหนงที่ i+1 มาบวกกับขอมูลในตัวแปรชุด a

ตําแหนงที่ 4 แลวเก็บผลลัพธที่ไดไวในตัวแปรชุด a ตําแหนงที่ i (นั่นคือ นํา a[4] + a[4] แลวเก็บผลลัพธนี้ไวใน a[3] นั่นเอง)

Page 4: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 4 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

2. ขนาดของตัวแปรชุดจะคงที่ เชน กําหนดใหตัวแปรชุด N เก็บเลขจํานวนเต็มโดยมีขนาด 50 ชอง ก็หมายความวา ตัวแปรชุด N จะไปจองเนื้อที่ในหนวยความจําขนาดที่เก็บจํานวนเต็มได 50 จํานวน โดยที่จะเรียงกันไป 50 ชองติดตอกัน และจะเก็บมากกวา 50 ชองไมได

ตัวอยาง จากสวนของโปรแกรม เมื่อ run เสร็จสิ้นแลว จะมีขอความใดปรากฏบนหนาจอ

int n[5] = { 5, 3, 2, 6, 1 }, i , j; for ( i = 0; i < 5; i++ ) { for ( j = 1; j <= n[i]; j++ ) printf(“*”); printf( "\n" ); }

*****************

ผลลัพธคือ

Page 5: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 5 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวอยาง จากสวนของโปรแกรม เมื่อ run เสร็จสิ้นแลว ตัวแปรชุด a จะมีคาเทาไร#define N 10int main(){

int a[N] = {1,2,3,4,5,6,7,8,9,10};int i = 1 , j = 9;while ( i != 11){ if ( i % 2 == 0) { a[11 - i] = a[11 - i] – j ; j = j – 4 ; } else a[i -1] = a[i -1] + j ; i++;}return 0;

}

ตัวอยาง #include <stdio.h>int main(){ int number[5] , i ;

for ( i = 0 ; i < 5 ; i++){ printf( “input number %d : ” , i+1) ; scanf( “%d” , &number[i]) ;}printf(“Show number descending from your input : ”);for ( i = 4 ; i >= 0 ; i--){ printf(“ %d\t” , number[i]) ;}return 0;

}

a[0] = 10a[1] = 9a[2] = 8a[3] = 7a[4] = 6a[5] = 5a[6] = 4a[7] = 3a[8] = 2a[9] = 1

ผลลัพธคือ

Page 6: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 6 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

สตริง (String) หรือ ตัวแปรชุด 1 มิติ ชนิดอักขระเราสามารถรวมอักขระแตละตัวเขาดวยกันเปนสตริง (string) หรือขอความ โดยประกาศใหตัวแปรที่

จะเก็บสตริงหรือขอความเปนตัวแปรตัวแปรชุด 1 มิติ ชนิดอักขระเชน char code[6];

[0] [1] [2] [3] [4] [5]code

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

หมายถึงประกาศใหตัวแปร code เปนตัวแปรชุด 1 มิติขนาด 6 ชอง แตละชองเก็บขอมูลประเภทอักขระ

3.1 การกําหนดคาเริ่มตนใหกับสตริงchar name[ ] = “MWIT School”; จะได

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]name M W I T S c h o o l \0

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

1 byte

โดยที่ตําแหนง name[11] จะเก็บคา \0 ไวอัตโนมัติ เพื่อแสดงการสิ้นสุดขอความ

หรือ char name[13] = “MWIT School”; จะได[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]

name M W I T S c h o o l \0 \01

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte1

byte

โดยที่ตําแหนง name[11] จะเก็บคา \0 ไวอัตโนมัติ เพื่อแสดงการสิ้นสุดขอความ และตําแหนงที่ 12 จะเปน \0 ดวยเชนเดียวกัน (ในกรณีที่เปนการกําหนดคาเริ่มตนเทานั้น)

ดังนั้นในการประกาศใหตัวแปรเปนสตริง จะตองคํานึงถึงจํานวนตัวอักขระที่ตองการจัดเก็บดวย เชน หากตองการเก็บชื่อซึ่งมีความยาวไมเกิน 20 ตัวอักษร จะตองประกาศตัวแปรใหเปนตัวแปรชุดขนาด 21 ชอง (สําหรับเก็บคา \0 หรือคา null) นั่นคือ char name[21];

3.2 การรับและแสดงผลสตริงจากเนื้อหาที่นักเรียนไดเรียนไปแลวเรื่อง คําสั่งรับและแสดงผล จะปรากฏคําสั่งที่ใชในการรับคาและ

แสดงผลสตริงหรือขอความ ดังนี้คําสั่งรับคา ตัวอยาง

scanf(“%s”,ชื่อตัวแปรสตริง); scanf(“%s”,name); //สังเกตวาไมตองใส & หนาตัวแปร namegets(ชื่อตัวแปร); gets(name);

คําสั่งแสดงผล ตัวอยางprintf(“%s”,ชื่อตัวแปรสตริง); printf(“%s”,name); puts(ชื่อตัวแปร); puts(name);

Page 7: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 7 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

3.3 ฟงกชันสตริงพื้นฐานชื่อฟงกชัน ความหมาย Library

gets(ชื่อตัวแปร) รับสตริงหรือขอความจากคียบอรด stdio.hstrlen(ชื่อตัวแปร) หาความยาวสตริงของตัวแปรที่ระบุ string.hstrcpy(ชื่อตัวแปร1,ขอความ/ชื่อตัวแปร2) คัดลอกขอความหรือคาในตัวแปร 2 ไปเก็บไวใน ตัวแปร 1 string.hstrcmp(ชื่อตัวแปร1, ชื่อตัวแปร2) เปรียบเทียบลําดับสตริงระหวาง ตวัแปร 1 และตัวแปร 2 โดย

ถาลําดับตัวอักษรใน ตัวแปร1 มากอน ตัวแปร2 แสดงวา ตัวแปร1 < ตัวแปร2 ดังนั้นจะไดเงื่อนไขดังนี้ตัวแปร1 < ตัวแปร2 ฟงกชันจะใหคาติดลบตัวแปร1 == ตัวแปร2 ฟงกชันจะใหคาเทากับ 0ตัวแปร1 > ตัวแปร2 ฟงกชันจะใหคาเปนบวกที่มากกวา 0

string.h

strcat(ชื่อตัวแปร1, ชื่อตัวแปร2) รวมสตริงในตัวแปร 2 ไปตอทาย ตัวแปร 1 แลวเก็บสตริงที่ตอกันแลวไวในตัวแปร 1

string.h

ตัวอยาง โปรแกรมรับชื่อและหาความยาวชื่อ แลวแสดงผลออกทางจอภาพ1 #include<stdio.h>2 #include<string.h>3 int main()4 { char name[20]; ประกาศตัวแปรตัวแปรชุด name เปนสตริง5 int size;6 printf(“Please enter your name: ”);7 gets(name); รับคา name จากผูใชทางคียบอรด8 size = strlen(name); หาความยาวสตริงของ name แลวเก็บไวใน size9 printf(“Hello %s\n”, name); พิมพชื่อออกทางหนาจอ10 printf(“Your name has %d characters”, size); พิมพจํานวนตัวอักษร (ความยาวชือ่) ออกทางหนาจอ11 return 0;12 }

ตัวอยาง โปรแกรมรับชื่อและคัดลอกขอความ แลวแสดงผลออกทางจอภาพ1 #include<stdio.h>2 #include<string.h>3 int main()4 { char s1[30], s2[30];5 printf(“Please enter string1: ”);6 gets(s1);7 strcpy(s2, “Thailand”); คัดลอกคําวา Thailand ไปเก็บไวในตัวแปร s28 printf(“s1 : %s\n”, s1);9 printf(“s2 : %s\n”, s2);10 return 0;11 }

Page 8: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 8 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวอยาง โปรแกรมรับขอความ 2 ขอความแลวตรวจสอบวาคําใดมากอน-หลัง แลวแสดงผลทางจอภาพ1 #include<stdio.h>2 #include<string.h>3 int main()4 { char s1[30], s2[30];5 int x;6 printf(“Please enter string1: ”);7 gets(s1);8 printf(“Please enter string2: ”);9 gets(s2);10 x = strcmp(s1, s2); เปรียบเทียบ s1 กับ s2 โดยเก็บผลลัพธไวใน x11 if (x < 0) ตรวจสอบ x วานอยกวา 0 หรือไม ถานอยกวาคือ

s1 มากอน s2ถา s1 มากอน s2 ใหพิมพ s1 ตามดวย s2แตถา s1 มาหลัง s2 ใหพิมพ s2ตามดวย s1แตถานอกจากนี้ใหพิมพวาทั้งสองคําเปนคําเดียวกัน

12 printf(“%s\n%s”, s1, s2);13 else if(x > 0)14 printf(“%s\n%s”, s2, s1);15 else16 printf(“similar strings”);17 return 0;18 }

ตัวอยาง โปรแกรมตอขอความโดยใช strcat แลวแสดงผลออกทางจอภาพ1 #include<stdio.h>2 #include<string.h>3 int main()4 { char s1[20], s2[]=”School”; กําหนดคาเริ่มตนให s2 เก็บ School5 strcpy(s1,”MWIT ”); คัดลอกคําวา MWIT ไปเก็บไวในตัวแปร s16 printf(“s1 : %s\n”, s1);7 printf(“s2 : %s”, s2);8 strcat(s1, s2); นําขอความใน s2 มาตอทาย s1 แลวเก็บไวใน s19 printf(“After strcat\n”);10 printf(“s1 : %s\n”, s1);11 printf(“s2 : %s”, s2);12 return 0;13 }

Page 9: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 9 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวแปรชุด 2 มิติ (Two-Dimension Array)โครงสรางตัวแปรชุด 2 มิติจะเปนตัวแปรชุดของตัวแปรชุด 1 มิติ โดยสามารถอธิบายไดในรูปแบบของ

ตารางที่ประกอบดวยแถว (row) และคอลัมน (column) 4.1 การประกาศตัวแปร

รูปแบบ

เชน int b[3][4];Column (คอลัมน)

b [0] [1] [2] [3]

Row

( แถว

) [0] b[0][0] b[0][1] b[0][2] b[0][3][1] b[1][0] b[1][1] b[1][2] b[1][3][2] b[2][0] b[2][1] b[2][2] b[2][3]

4.2 การกําหนดคาเริ่มตนใหกับตัวแปรชุด 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] = {{11,12,13},{21,22,23}};

โดยที่การประกาศตัวแปรทั้ง 3 รูปแบบใหผลลัพธเหมือนกัน คือnum [0] [1] [2][0] 11 12 13[1] 21 22 23

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

ขนาดดวยทุกครั้ง

ชนิดขอมูล ชื่อตัวแปร [row][column];

Page 10: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 10 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวอยางโปรแกรม#include <stdio.h>int main(){ int table[12][11] , row , col ; printf("*** multiplication table ***"); for ( row = 1 ; row <= 12 ; row++ ) { printf("\n"); for ( col = 2 ; col <= 12 ; col++ ) {

table[row - 1][col - 2] = row * col ; printf(" %3d “ , table [row - 1][col - 2] ) ;

} }

return 0;}

ตัวอยาง จากสวนของโปรแกรม เมื่อ run เสร็จแลวมีขอความใดปรากฏบนหนาจอint i , j ;int num[3][3] = { { 1,2,3 } , { 4,5,6 } , { 7,8,9 } } ;for ( j = 2 ; j >= 0 ; j-- ){ for ( i = 0 ; i <= 2 ; i++ ) printf( “ %d \t ” , num[i][j] ) ;

printf( “\n” ) ;}

ขอควรระวังในการจัดการกับตัวแปรชุด ภาษาซีไมมีการตรวจสอบขอบเขตของตัวแปรชุด

เชน int x[3] = {1,2,3} , i;for ( i=1 ; i<=3 ; i++)

printf( “ %d\t ” , x[i] ) ;สามารถทําได แตคา x[3] ไมมีจริง

การกําหนดคาใหตัวแปรชุดแบบเปนกลุม (เชน x[]={1,2,3} ) สามารถทําไดเฉพาะตอนประกาศตัวแปรเทานั้น ในสวนอื่นของโปรแกรม ไมสามารถกําหนดคาแบบนี้ได

3 6 92 5 81 4 7

ผลลัพธคือ

Page 11: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 11 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวแปรชุดหลายมิติ (Multi-Dimension Array)สมมติประกาศให k เปนตัวแปรตัวแปรชุด 2 มิติ ขนาด 3x2 (หมายถึง 3 แถวและ 2 คอลัมน) เก็บ

ขอมูลประเภทจํานวนเต็มดังนั้น จะได int k[3][2]; นั่นคือ

k [0] [1][0][1][2]

ซึ่งตัวแปร k ที่จัดเก็บอยูในหนวยความจําหลักจริงๆนั้นจะเรียงติดตอกันไปเปนแถวยาว (ไมไดจัดเก็บอยูในรูปแบบตารางจริงๆ) ดังนี้

k[0][0] k[0][1] k[1][0] k[1][1] k[2][0] k[2][1]

แถวที่ 0 แถวที่ 1 แถวที่ 2

ดังนั้น เราสามารถสรางตัวแปรชุดซึ่งมีหลายมิติได ไมวาจะเปนตัวแปรชุด 3 มิติ ตัวแปรชุด 4 มิติหรือ 5 มิติ แตทั้งนี้ การที่เราประกาศตัวแปรชุดที่มีจํานวนมิติมากๆ ก็จะเปนผลใหโปรแกรมมีความซับซอนมากยิ่งขึ้น สงผลใหการแกไขตางๆ เปนไปไดอยางลําบาก

ตัวอยาง การประกาศตัวแปรชุด 3 มิติint G[3][4][2]; ประกาศตัวแปรชุด G เก็บจํานวนเต็ม

มี 4 แถว แถวละ 2 คอลัมน และ 3 ชั้น

แถว 0 แถว 1 แถว 2 แถว 3 แถว 0 แถว 1 แถว 2 แถว 3 แถว 0 แถว 1 แถว 2 แถว 3ชั้น 0 ชั้น 1 ชั้น 2

การอางถึงขอมูลยอยแตละตัว การอางถึงขอมูลยอยแตละตัวจะคลายกับตัวแปรชุด 1 มิติและ 2 มิติ นั่นคือ ใชดัชนีในการอางถึงโดย

ในที่นี้จะมีทั้งสิ้น 3 ตัวคือ แถว คอลัมน และชั้น เชน G[0][1][2] = 50; หมายถึง ใหเก็บ 50 ไวในตัวแปรชุด G ตําแหนงแถว

ที่ 1 คอลัมนที่ 2 และชั้นที่ 0

Page 12: - 1 - บทที่ 1 - MWITcs/download/tech30201/TECH30201_ch1... · 2012-10-12 · - 1 - รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต

- 12 -

รายวิชา ง30201 การเขียนโปรแกรมขั้นประยุกต โรงเรียนมหิดลวิทยานุสรณ

ตัวอยางโปรแกรมแวะผานและคนหาขอมูลในตัวแปรชุด 1 มิติ

โปรแกรมรับคาตัวเลขเก็บไวในตัวแปร key แลวคนหาวาในตัวแปรชุด data มีขอมูลที่เทากับตัวแปร key อยูหรือไม#include<stdio.h>int main(){ int data[10]={1,3,4,6,10,15,16,18,21,25}; int i, key; printf("Enter key: "); scanf("%d", &key); for(i=0; i<10; i++) { if(data[i]==key) { printf("Found %d at position %d", key, i); break; } } if(i==10) printf("Not found %d", key); return 0;}