The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by chaowalert, 2019-12-23 22:39:21

Programming 2

cc32 www/61.91.86.252/home






























www/113.5
3.232.212/~
pcc32



Programming 2



































Mr.Chaowalert polrat

หน่วยการเรียนรู้ที่ 1


เรื่อง ตัวแปรชุดชนิดตัวเลข





เนื้อหา


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

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







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

3. อธิบายวิธีการอางถึงสมาชิกของตัวแปรชุดได














1

ความหมายของตัวแปรชุด


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


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


เก็บขอมูลตางชนิดกันได

1. ตัวแปรชดุ มิติ ( 1 One-Dimension Array)
1.1 การประกาศตัวแปร


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


เชน float score[5];




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


4byte 4 byte 4byte 4byte 4byte


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

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

2. ตัวแปรชดุ 1 มิติ (One-Dimension Array)
 สามารถก าหนดคาเริ่มตนใหกับ array ไดตั้งแตตอนประกาศตัวแปร

 คาที่ก าหนดต้องอยู่ในเครื่องหมาย { } และถามีมากกวา 1 คา ตองแยกจากกันดวย
เครื่องหมาย ,(comma)


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

A[0] A[1] A[2] A[3] A[4]

2 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

 บางครั้งถาก าหนดคาเริ่มตนใหแกตัวแปรชุดเลย เราไมจ าเปนตองใสขนาดของตัวแปรชุดก็ได


เชน float a[ ] = {1,2,3,4,5} ;

ความหมายคือ เปนการก าหนดตัวแปรตัวแปรชุดของจ านวนจริงแบบ float ขนาด 5 ชอง


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


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


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

3

เขียนไดเปน

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 เทากับ 3
2( น าขอมูลในตัวแปรชุด a ต าแหนงที่ i+ มูลในตวั แปรชุด อ มาบวกกับข 1 a

ต าแหนงที่ 4 แลวเก็บผลลัพธที่ไดไว้ในตัวแปรชุด a ต าแหนงที่ i
Programming 2 4. ขนาดของตัวแปรชุดจะคงที่ เชน ก าหนดใหตัวแปรชุด N เก็บเลขจ านวนเต็มโดยมีขนาด 50
นั่นคือ น า (a[4] + a[4] แลวเกบ็ ผลลัพธนี้ไว้ใน a[3] นั่นเอง(


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


ตัวอยาง 1 จากสวนของโปรแกรม เมื่อ 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" ); **
} ******

*


4

ตัวอยาง 2 จากสวนของโปรแกรม เมื่อ run เสร็จสิ้นแลว ตัวแปรชุด a จะมีคาเทาไร


#define N 10
main() ผลลัพธคือ

{ a[0] = 10
int a[N] = {1,2,3,4,5,6,7,8,9,10}; a[1] = 9

int i = 1 , j = 9; a[2] = 8
while ( i != 11) a[3] = 7
{ a[4] = 6
If ( i % 2 == 0) a[5] = 5

{ a[6] = 4
a[11 - i] = a[11 - i] – j ; a[7] = 3
j=j–4;

} a[8] = 2
else a[9] = 1
a[i -1] = a[i -1] + j ;
i++; Programming 2
}

}


ตัวอยาง 3


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]) ;
} 5
}

ชื่อ – สกุล ……………………………………………………………….. ห้อง …………. เลขที่ ………….




ใบงานที่ 1
เรื่อง ตัวแปรชุดชนิดตัวเลข


ค าชี้แจง


ใบงานแบ่งออกเป็น 2 ตอน ดังนี้
- ตอนที่ 1 เป็นค าถามแบบให้เขียนตอบ
- ตอนที่ 2 เป็นการเขียนโปรแกรมแก้ปัญหาตามที่โจทย์ก าหนดให้

------------------------------------------------------------------------------------------------------------------
ตอนที่ 1 จงตอบค าถามต่อไปนี้
1. จงบอกลักษณะการท างานในการประกาศตัวแปร int sum; กับ int sum[10];

Programming 2

2. ให้นักเรียนประกาศตัวแปร(high) เก็บส่วนสูงของนักเรียนจ านวน 20 คน


3. ประกาศตัวแปร int gpa[50]; เพื่อเก็บค่าคะแนนเฉลี่ยจ านวน 50 คน เป็นการประกาศตัว

แปรที่ถูก หรือผิด เพราะเหตุใด ถ้าคิดว่าผิดจงแก้ไขให้ถูกต้อง



4. ก าหนดให้ float x[10] ={3.8,2.5,3.2,4.6,5.8}; แล้ว printf(“%2f”,x[4]); ผลลัพธ์ที่ได้คือ
อะไร












6

ตอนที่ 2 ให้นักเรียนเขียนโปรแกรมแก้โจทย์ปัญหาตามกลุ่มที่ก าหนดให้



กลุ่มที่ 1



ชั้นมัธยมศึกษาปีที่ 4 /………….. ชื่อกลุ่ม ………………………

สมาชิกในกลุ่ม


1……………………………………………………………………. เลขที่ ……………..
2……………………………………………………………………. เลขที่ ……………..

3……………………………………………………………………. เลขที่ ……………..

4……………………………………………………………………. เลขที่ ……………..

5……………………………………………………………………. เลขที่ ……………..
6……………………………………………………………………. เลขที่ ……………..




Programming 2
ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนเต็ม 10 จ านวน โดยการรับค่า
ทางคีย์บอร์ด แล้วแสดงผลออกทางจอภาพ พร้อมผลรวม


Ex1

Input number 1 : 10

Input number 2 : 20
Input number 3 : 30

Input number 4 : 40
Input number 5 : 50

Input number 6 : 60
Input number 7 : 70

Input number 8 : 80
Input number 9 : 90

Input number 10 : 100
7
Output : 10 20 30 40 50 60 70 80 90 100
Sum : 550

กลุ่มที่ 2




ชั้นมัธยมศึกษาปีที่ 4 / ………… ชื่อกลุ่ม ………………………

สมาชิกในกลุ่ม


1……………………………………………………………………. เลขที่ ……………..

2……………………………………………………………………. เลขที่ ……………..
3……………………………………………………………………. เลขที่ ……………..
4……………………………………………………………………. เลขที่ ……………..

5……………………………………………………………………. เลขที่ ……………..
6……………………………………………………………………. เลขที่ ……………..

Programming 2 ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนทศนิยม 7 จ านวนโดย





การรับค่าทางคีย์บอร์ด แล้วแสดงผลออกทางจอภาพ พร้อมหาค่าเฉลี่ย


Ex1

Input number 1 : 1.5

Input number 2 : 3.5
Input number 3 : 4.5

Input number 4 : 3.8
Input number 5 : 3.2

Input number 6 : 1.2
Input number 7 : 5.8

Output : 1.5 3.5 4.5 3.8 3.2 1.2 5.8
Average : 3.35


8

กลุ่มที่ 3





ชั้นมัธยมศึกษาปีที่ 4 / ……….ชื่อกลุ่ม ………………………

สมาชิกในกลุ่ม


1……………………………………………………………………. เลขที่ ……………..
2……………………………………………………………………. เลขที่ ……………..

3……………………………………………………………………. เลขที่ ……………..

4……………………………………………………………………. เลขที่ ……………..

5……………………………………………………………………. เลขที่ ……………..
6……………………………………………………………………. เลขที่ ……………..



ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนเต็ม 10 จ านวนโดยการรับค่าทาง Programming 2


คีย์บอร์ด แล้วแสดงผลออกทางจอภาพเฉพาะที่หารด้วย 20 ลงตัว
Ex1

Input number 1 : 10

Input number 2 : 20
Input number 3 : 30
Input number 4 : 40

Input number 5 : 50

Input number 6 : 60
Input number 7 : 70
Input number 8 : 80

Input number 9 : 90
Input number 10 : 100


Output : 20 40 60 80 100 9

กลุ่มที่ 4




ชั้นมัธยมศึกษาปีที่ 4 / ………..ชื่อกลุ่ม ………………………


สมาชิกในกลุ่ม

1……………………………………………………………………. เลขที่ ……………..
2……………………………………………………………………. เลขที่ ……………..

3……………………………………………………………………. เลขที่ ……………..
4……………………………………………………………………. เลขที่ ……………..


5……………………………………………………………………. เลขที่ ……………..
6……………………………………………………………………. เลขที่ ……………..



Programming 2 ค่าทางคีย์บอร์ด แล้วแสดงผลออกทางจอภาพเฉพาะ 5 จ านวน หลังสุดเท่านั้น

ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนทศนิยม10 จ านวน โดยการรับ



Ex1

Input number 1 : 10
Input number 2 : 20

Input number 3 : 30
Input number 4 : 40

Input number 5 : 50
Input number 6 : 60

Input number 7 : 70
Input number 8 : 80

Input number 9 : 90
Input number 10 : 100


Output : 60 70 80 90 100
10

กลุ่มที่ 5




ชั้นมัธยมศึกษาปีที่ 4 / ………….ชื่อกลุ่ม ………………………


สมาชิกในกลุ่ม

1. ……………………………………………………………………. เลขที่ ……………..

2. ……………………………………………………………………. เลขที่ ……………..

3. ……………………………………………………………………. เลขที่ ……………..
4. ……………………………………………………………………. เลขที่ ……………..

5. ……………………………………………………………………. เลขที่ ……………..

6. ……………………………………………………………………. เลขที่ ……………..





Programming 2


ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนเต็ม 10 จ านวนโดยการรับค่าทาง
คีย์บอร์ด แล้วแสดงผลออกทางจอภาพ เฉพาะจ านวนคี่


Ex1
Input number 1 : 11

Input number 2 : 12
Input number 3 : 13

Input number 4 : 14
Input number 5 : 15

Input number 6 : 16
Input number 7 : 17

Input number 8 : 18
Input number 9 : 19

Input number 10 : 20
11
Output : 11 13 15 17 19

ใบงานกลุ่มที่ 6



ชั้นมัธยมศึกษาปีที่ 4 /…………ชื่อกลุ่ม ………………………

สมาชิกในกลุ่ม .

1. ……………………………………………………………………. เลขที่ ……………..
2. ……………………………………………………………………. เลขที่ ……………..

3. ……………………………………………………………………. เลขที่ ……………..
4. ……………………………………………………………………. เลขที่ ……………..
5. ……………………………………………………………………. เลขที่ ……………..

6. ……………………………………………………………………. เลขที่ ……………..


Programming 2 แล้วแสดงผลออกทางจอภาพ พร้อมค่าผลรวม

ให้นักเรียนเขียนโปรแกรมในการเก็บค่าตัวเลขชนิดจ านวนทศนิยม 5 จ านวนโดยการรับค่าทางคีย์บอร์ด




Ex1


Input number 1 : 10.5

Input number 2 : 20.5


Input number 3 : 30.5

Input number 4 : 40.5


Input number 5 : 50.5




Output : 10.5 20.5 30.5 40.5 50.5


Sum : 152.5
12

แบบทดสอบประจ าหน่วยที่ 1


เรื่อง ตัวแปรชุดกับข้อมูลชนิดตัวเลข

-----------------------------------------------------------------------------------------------------------------------


ผลการเรียนรู้ที่คาดหวัง

1. อธิบายความหมายของตัวแปรชุด (Array) ได้

2. เขียนโปรแกรมประกาศตัวแปรชุดหนึ่งมิติเก็บข้อมูลชนิดตัวเลขได้
3. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรชุดได้



ค าชี้แจง


1. ข้อสอบเป็นแบบเลือกตอบ 4 ตัวเลือก มีทั้งหมด 5 ข้อ
2. จงเลือกค าตอบที่ถูกที่สุดเพียงข้อเดียว

-----------------------------------------------------------------------------------------------------------------------
Programming 2

โปรแกรม 1

int i[5];

int j;
for(j=0;j<5;j++)

{
i[j]=j+1;
printf(“%d ”,i[j]);

}




จากส่วนของโปรแกรม ใช้ประกอบการตอบค าถาม



13

1. ข้อใดกล่าวถึงตัวแปรประเภทอาร์เรย์ (Array) ได้ถูกต้อง

ก. ตัวแปรที่เก็บข้อมูลแบบข้อมูลเดี่ยว

ข. ตัวแปรที่เก็บข้อมูลเป็นกลุ่มและข้อมูลเป็นประเภทเดียวกัน
ค. ตัวแปรที่เก็บข้อมูลเป็นกลุ่มและข้อมูลต่างชนิดกันได้

ง. ตัวแปรที่เก็บข้อมูลเป็นกลุ่มและเป็นชนิดตัวเลขเท่านั้น
2. ถ้าหากประกาศตัวแปรอาร์เรย์เป็น int x[9] ข้อใดไม่ถูกต้อง

ก. มีตัวแปรย่อยทั้งหมด 9 ตัว

ข. แต่ละเชลล์เก็บเลขจ านวนเต็ม
ค. ใช้หน่วยความจ าทั้งหมด 18 ไบต์

ง. ตัวแปรตัวสุดท้ายคือ x[9]
3. จากโปรแกรม 1 ค่าที่อยู่ใน i[2] คือ ค่าใด

ก. 1

ข. 2
Programming 2 ง. 4

ค. 3

4. การก าหนดค่าให้กับอาร์เรย์ ข้อใดผิด

ก. int x[4] = {1,2,3,4};

ข. int x[4] = {‘A’,’1’,’B’,’2’};
ค. float x[2] = {1.8,2.4};

ง. float x[8] = {1,2,3,4};
5. ตัวเลขที่ใช้อ้างอิงข้อมูลในตัวแปรชุด เรียกว่าอะไร

ก. index

ข. cell
ค. array

ง. element





14

ใบความรู้หน่วยที่ 2

เรื่อง สตริง (String) หรือ ตัวแปรชุด 1 มิติ ชนิดอักขระ

เนื้อหา
1. การก าหนดค่าเริ่มต้นให้กับสตริง

2. การรับและแสดงผลสตริง

ผลการเรียนรู้ที่คาดหวัง

1. อธิบายความหมายของตัวแปรชุดสตริง (String) ได้

2. เขียนโปรแกรมประกาศตัวแปรชุดหนึ่งมิติเก็บข้อมูลชนิดอักขระได้
3. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรชุดได้


สตริง (String) หรือ ตัวแปรชุด 1 มิติ ชนิดอักขระ
เราสามารถรวมอักขระแต่ละตัวเข้าด้วยกันเป็นสตริง (string) หรือข้อความ โดยประกาศให้
ตัว
แปรที่จะเก็บสตริงหรือข้อความเป็นตัวแปรตัวแปรชุด 1 มิติ ชนิดอักขระ
เช่น char code[6]; Programming 2

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


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

อักขระ

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


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

name



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

หรือ char name[13] = “MWIT School”; จะได้

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

name


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

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

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

Programming 2 ค าสั่งรับค่า ตัวอย่าง

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


scanf(“%s”,ชื่อตัวแปรสตริง);


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


ค าสั่งรับค่า ตัวอย่าง


printf(“%s”,ชื่อตัวแปรสตริง); printf(“%s”,name);

puts(ชื่อตัวแปร); puts(name);



3. ฟังก์ชันสตริงพื้นฐาน

ชื่อฟังก์ชัน ความหมาย Library

gets(ชื่อตัวแปร) รับสตริงหรือข้อความจากคีย์บอร์ด stdio.h

16
strlen(ชื่อตัวแปร) หาความยาวสตริงของตัวแปรที่ระบุ string.h

strcpy(ชื่อตัวแปร1,ข้อความ/ชื่อตัวแปร2) คัดลอกข้อความหรือค่าในตัวแปร 2 ไปเก็บไว้ใน string.h

ตัวแปร 1

strcmp(ชื่อตัวแปร1, ชื่อตัวแปร2) เปรียบเทียบล าดับสตริงระหว่าง ตัวแปร 1 และตัว string.h

แปร 2 โดยถ้าล าดับตัวอักษรใน ตัวแปร1 มาก่อน

ตัวแปร2

แสดงว่า ตัวแปร1 < ตัวแปร2 ดังนั้นจะได้เงื่อนไข

ดังนี้

ตัวแปร1 < ตัวแปร2 ฟังก์ชันจะให้ค่าติดลบ

ตัวแปร1 == ตัวแปร2 ฟังก์ชันจะให้ค่าเท่ากับ 0


ตัวแปร1 > ตัวแปร2 ฟังก์ชันจะให้ค่าเป็นบวกที่
มากกว่า 0


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


ตัวอย่าง โปรแกรมรับชื่อและหาความยาวชื่อ แล้วแสดงผลออกทางจอภาพ


1 #include<stdio.h>
2 #include<string.h>

3 void main()
4 { char name[20]; ประกาศตัวแปรตัวแปรชุด name เป็นสตริง

5 int size;
6 printf(“Please enter your name: ”);

7 gets(name); รับค่า name จากผู้ใช้ทางคีย์บอร์ด
8 size = strlen(name); หาความยาวสตริงของ name แล้วเก็บไว้ใน size

9 printf(“Hello %s\n”, name); พิมพ์ชื่อออกทางหน้าจอ

10 printf(“Your name has %d พิมพ์จ านวนตัวอักษร (ความยาวชื่อ) ออกทาง
characters”,size); หน้าจอ
17
11 }

ตัวอย่าง โปรแกรมรับชื่อและคัดลอกข้อความ แล้วแสดงผลออกทางจอภาพ

1 #include<stdio.h>
2 #include<string.h>

3 void main()
4 { char s1[30], s2[30];

5

6 printf(“Please enter string1: ”);
7 gets(s1);

8 strcpy(s2, “Thailand”); คัดลอกค าว่า Thailand ไปเก็บไว้ในตัวแปร s2
9 printf(“s1 : %s\n”, s1);

10 printf(“s2 : %s\n”, s2);
11 }

ตัวอย่าง โปรแกรมรับข้อความ 2 ข้อความแล้วตรวจสอบว่าค าใดมาก่อน-หลัง แล้วแสดงผลทาง
Programming 2 1 #include<stdio.h>

จอภาพ


2 #include<string.h>
3 void 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 โดยเก็บผลลัพธ์ไว้
ใน x
11 if (x < 0) ตรวจสอบ x ว่าน้อยกว่า 0 หรือไม่ ถ้าน้อย

12 printf(“%s\n%s”, s1, s2); กว่าคือs1 มาก่อน s2 ถ้า s1 มาก่อน s2
13 else if(x > 0) ให้พิมพ์ s1 ตามด้วย s2 แต่ถ้า s1 มาหลัง


18 14 printf(“%s\n%s”, s2, s1); s2 ให้พิมพ์ s2ตามด้วย s1 แต่ถ้า
15 else

16 printf(“similar strings”); นอกจากนี้ให้พิมพ์ว่าทั้งสองค าเป็นค า

เดียวกัน

17 }
ตัวอย่าง โปรแกรมต่อข้อความโดยใช้ strcat แล้วแสดงผลออกทางจอภาพ


1 #include<stdio.h>

2 #include<string.h>


3 void main()


4 { char s1[20], s2[]=”School”; ก าหนดค่าเริ่มต้นให้ s2 เก็บ School

5 strcpy(s1,”MWIT ”); คัดลอกค าว่า MWIT ไปเก็บไว้ในตัวแปร s1


6 printf(“s1 : %s\n”, s1);

7 printf(“s2 : %s”, s2);
Programming 2
8 strcat(s1, s2); น าข้อความใน s2 มาต่อท้าย s1 แล้วเก็บไว้ใน s1

9 printf(“After strcat\n”);


10 printf(“s1 : %s\n”, s1);

11 printf(“s2 : %s”, s2);


12 }













19

ใบความรู้หน่วยที่ 2
เรื่อง สตริง (String) หรือ ตัวแปรชุด 1 มิติ ชนิดอักขระ



เนื้อหา
1. การก าหนดค่าเริ่มต้นให้กับสตริง

2. การรับและแสดงผลสตริง



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



สตริง (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 ช่อง แต่ละช่องเก็บข้อมูลประเภท
20
อักขระ

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


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

name


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] Programming 2


name

1 byte 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 ไว้อัตโนมัติ เพื่อแสดงการสิ้นสุดข้อความ และ
ต าแหน่งที่

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

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

ค าสั่งรับค่า ตัวอย่าง


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


gets(ชื่อตัวแปร); gets(name);



ค าสั่งรับค่า ตัวอย่าง

printf(“%s”,ชื่อตัวแปรสตริง); printf(“%s”,name);


puts(ชื่อตัวแปร); puts(name);


3. ฟังก์ชันสตริงพื้นฐาน

ชื่อฟังก์ชัน ความหมาย Library


Programming 2

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


strcmp(ชื่อตัวแปร1, ชื่อตัวแปร2) เปรียบเทียบล าดับสตริงระหว่าง ตัวแปร 1 และตัว string.h
แปร 2 โดยถ้าล าดับตัวอักษรใน ตัวแปร1 มาก่อน

ตัวแปร2

แสดงว่า ตัวแปร1 < ตัวแปร2 ดังนั้นจะได้เงื่อนไข

ดังนี้

ตัวแปร1 < ตัวแปร2 ฟังก์ชันจะให้ค่าติดลบ


ตัวแปร1 == ตัวแปร2 ฟังก์ชันจะให้ค่าเท่ากับ 0

ตัวแปร1 > ตัวแปร2 ฟังก์ชันจะให้ค่าเป็นบวกที่

มากกว่า 0
22

strcat(ชื่อตัวแปร1, ชื่อตัวแปร2) รวมสตริงในตัวแปร 2 ไปต่อท้าย ตัวแปร 1 แล้ว string.h

เก็บสตริงที่ต่อกันแล้วไว้ในตัวแปร 1

ตัวอย่าง โปรแกรมรับชื่อและหาความยาวชื่อ แล้วแสดงผลออกทางจอภาพ


1 #include<stdio.h>

2 #include<string.h>
3 void main()

4 { char name[20]; ประกาศตัวแปรตัวแปรชุด name เป็นสตริง
5 int size;

6 printf(“Please enter your name: ”);
7 gets(name); รับค่า name จากผู้ใช้ทางคีย์บอร์ด

8 size = strlen(name); หาความยาวสตริงของ name แล้วเก็บไว้ใน size

9 printf(“Hello %s\n”, name); พิมพ์ชื่อออกทางหน้าจอ
10 printf(“Your name has %d พิมพ์จ านวนตัวอักษร (ความยาวชื่อ) ออกทาง
characters”,size); หน้าจอ Programming 2

11 }


ตัวอย่าง โปรแกรมรับชื่อและคัดลอกข้อความ แล้วแสดงผลออกทางจอภาพ
1 #include<stdio.h>

2 #include<string.h>
3 void main()

4 { char s1[30], s2[30];
5 printf(“Please enter string1: ”);

6 gets(s1);

7 strcpy(s2, “Thailand”); คัดลอกค าว่า Thailand ไปเก็บไว้
ในตัวแปร s2
8 printf(“s1 : %s\n”, s1);

9 printf(“s2 : %s\n”, s2);

10 } 23

ตัวอย่าง โปรแกรมรับข้อความ 2 ข้อความแล้วตรวจสอบว่าค าใดมาก่อน-หลัง แล้วแสดงผลทาง
จอภาพ

1 #include<stdio.h>
2 #include<string.h>

3 void 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 โดยเก็บผลลัพธ์ไว้

ใน x
Programming 2 12 printf(“%s\n%s”, s1, s2); กว่าคือs1 มาก่อน s2 ถ้า s1 มาก่อน s2
11 if (x < 0) ตรวจสอบ x ว่าน้อยกว่า 0 หรือไม่ ถ้าน้อย



13 else if(x > 0)
s2 ให้พิมพ์ s2ตามด้วย s1 แต่ถ้า
14 printf(“%s\n%s”, s2, s1); ให้พิมพ์ s1 ตามด้วย s2 แต่ถ้า s1 มาหลัง
15 else นอกจากนี้ให้พิมพ์ว่าทั้งสองค าเป็นค า
16 printf(“similar strings”); เดียวกัน

17 }



ตัวอย่าง โปรแกรมต่อข้อความโดยใช้ strcat แล้วแสดงผลออกทางจอภาพ


1 #include<stdio.h>
2 #include<string.h>

3 void main()
4 { char s1[20], s2[]=”School”; ก าหนดค่าเริ่มต้นให้ s2 เก็บ School
24
5 strcpy(s1,”MWIT ”); คัดลอกค าว่า MWIT ไปเก็บไว้ในตัวแปร s1

6 printf(“s1 : %s\n”, s1);

7 printf(“s2 : %s”, s2);

8 strcat(s1, s2); น าข้อความใน s2 มาต่อท้าย s1 แล้วเก็บไว้ใน s1

9 printf(“After strcat\n”);
10 printf(“s1 : %s\n”, s1);

11 printf(“s2 : %s”, s2);
12 }


ใบความรู้หน่วยที่ 3

เรื่อง ตัวแปรชุด 2 มิติ (Two-Dimension Array)


เนื้อหา

1. การประกาศตัวแปล
2. การก าหนดค่าเริ่มต้นให้กับตัวแปรชุด 2 มิติ
3.ข้อควรระวังในการจัดการกับตัวแปรชุด
Programming 2


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

2. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรชุดได้

ตัวแปรชุด 2 มิติ (Two-Dimension Array)
โครงสร้างตัวแปรชุด 2 มิติจะเป็นตัวแปรชุดของตัวแปรชุด 1 มิติ โดยสามารถอธิบายได้ใน
รูปแบบของตารางที่ประกอบด้วยแถว (row) และคอลัมน์ (column)

1. การประกาศตัวแปร
รูปแบบ
ชนิดข้อมูล ชื่อตัวแปร [row][column];





25

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 รูปแบบให้ผลลัพธ์เหมือนกัน คือ


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

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

ตัวอย่างโปรแกรม
Programming 2 void main()

#include <stdio.h>

{
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] ) ;

}
}
}


26

ตัวอย่าง จากส่วนของโปรแกรม เมื่อ 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} ) สามารถท าได้เฉพาะ Programming 2
ตอนประกาศตัวแปรเท่านั้น ในส่วนอื่นของโปรแกรม ไม่สามารถก าหนดค่าแบบนี้ได้


















27

ใบงานประจ าหน่วยที่ 3

เรื่อง ตัวแปรชุดกับฟังก์ชันสตริงพื้นฐาน
-----------------------------------------------------------------------------------------------------------------------

ผลการเรียนรู้ที่คาดหวัง
1. เขียนโปรแกรมโดยใช้ฟังก์ชันสตริงพื้นฐานได้
-----------------------------------------------------------------------------------------------------------------------
1. ให้นักเรียนตอบค าถามต่อนี้


ก าหนดให้ char city[30]={"CHONBURI"};
char title[30],add[30];
int len;
1.1 ค าสั่งคัดลอกข้อมูลที่อยู่ใน city ไปยัง title คือ


1.2 ค าสั่งในการแสดงข้อมูลในตัวแปร title คือ
1.3 ค าสั่งในการรับค่าทางคีย์บอร์ดเก็บไว้ที่ตัวแปร add คือ
Programming 2 1.4 ค าสั่งในการน าข้อมูลที่อยู่ใน add เชื่อมต่อกับข้อมูล city







คือ
1.5 ค าสั่งในการเปรียบเทีระหว่าง add กับ title คือ

1.6 ค าสั่งในการหาความยาว ของข้อมูลที่อยู่ใน title เก็บไว้ในตัวแปร len

คือ




2.ให้นักเรียนเติมค าสั่งในช่องว่างของโปรแกรมต่อไปนี้
#include………………………
#include……………………….

#include……………………….
main( )
28
{ char ch1[20]={"Hoo!"};
char ch2[20]={"My"};

char ch3[ ]={"Goddddd!"};

char name[30];
int len;
printf("Enter name");

…………………………………………………….. /* รับค่ามาเก็บที่ตัวแปร name
............................. /* หาความยาวชื่อ เก็บไว้ที่ตัวแปร len
…………………………………………………… /* น าค่าที่อยู่ใน name ไปต่อกับค่าในตัวแปร ch3
………………………………………………….. /* คัดลอกข้อมูลที่อยู่ใน ch3 ไปเก็บที่ name
int x=strcmp(ch1,ch2(;

if(………………………………………) /* ตรวจสอบค่าใน ch1 กับ ch2
printf("%s",ch2(;
else printf("%s",ch1(;

printf("%s",ch2(;
printf("%s",name);
printf("\n long name : %d",……………); /*แสดงความยาวชื่อ
getch( );

} Programming 2
ผลการรันโปรแกรม คือ





















29

ใบความรู้หน่วยที่ 4

เรื่อง ตัวแปรชุดหลายมิติ (Multi-Dimension Array)

เนื้อหา
1. ตัวแปรชุดหลายมิติ (Multi-Dimension Array)

2. การอ้างถึงข้อมูลย่อยแต่ละตัว

ผลการเรียนรู้ที่คาดหวัง

1. อธิบายหลักการใช้ตัวแปรชุดแบบหลายมิติได้
2. เขียนโปรแกรมประมวลผลตัวแปรชุดด้านการแวะผ่านและการค้นหาได้

ตัวแปรชุดหลายมิติ (Multi-Dimension Array)

สมมติประกาศให้ k เป็นตัวแปรตัวแปรชุด 2 มิติ ขนาด 3x2 ( หมายถึง 3 แถวและ 2
คอลัมน์)
เก็บข้อมูลประเภทจ านวนเต็ม
ดังนั้น จะได้ int k[3][2]; นั่นคือ
Programming 2





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







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




30

ตัวอย่าง การประกาศตัวแปรชุด 3 มิติ


int G[4][2][3]; ประกาศตัวแปรชุด G เก็บจ านวนเต็ม
มี 4 แถว

แถวละ 2 คอลัมน์
และ 3 ชั้น (1 ชั้นจะมี 4 แถว)






การอ้างถึงข้อมูลย่อยแต่ละตัว


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

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

ตัวอย่างโปรแกรม


โปรแกรมรับค่าตัวเลขเก็บไว้ในตัวแปร key แล้วค้นหาว่าในตัวแปรชุด data มีข้อมูลที่เท่ากับ


ตัวแปร key อยู่หรือไม่

#include<stdio.h>
#include<conio.h>

main()

{
int data[10]={1,3,4,6,10,15,16,18,21,25};

int i, key;

printf("Enter key: ");
31
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);

getch();
}






Programming 2



























32

ใบงานประจ าหน่วยที่ 4

เรื่อง ตัวแปรชุดตัวแปรชุดหลายมิติ
-----------------------------------------------------------------------------------------------------------------------

ผลการเรียนรู้ที่คาดหวัง
1. อธิบายหลักการใช้ตัวแปรชุดแบบหลายมิติได้
2. เขียนโปรแกรมประมวลผลตัวแปรชุดด้านการแวะผ่านและการค้นหาได้
-----------------------------------------------------------------------------------------------------------------------
1. จงประกาศตัวแปร(num)เก็บคะแนนจ านวนเต็มขนาด 4 x 4

2. จากข้อ 1 จงก าหนดค่าให้กับตัวแปร num จ านวน 16 ค่า(นักเรียนก าหนดค่าเอง(
3. จากการก าหนดค่าในข้อ 2 ถ้าใช้ค าสั่ง printf(“%d”,num[2][3]); ผลลัพธ์ที่ได้คือ
4. จงประกาศตัวแปร(name) เก็บชื่อนักเรียนจ านวน 20 คน ชื่อแต่ละคนความยาวไม่เกิน 90

ตัวอักษร
5. ค าสั่งในการวนรอบในการรับชื่อทางคีย์บอร์ดจ านวน 20 คน คือ
6. จงเขียนโปรแกรมในการรับชื่อจังหวัด มา 5 จังหวัด ความยาวไม่เกิน 50 ตัวอักษร และ
แสดงผลออกทางจอภาพ ดังนี้

Ex1 1 Input Province : CHONBURI
2 Input Province : RAYONG Programming 2
3 Input Province : PATOOMTHANI
4 Input Province : SURATTHANI

5 Input Province : NAKONPATOM


แสดงการรับข้อมูลทางแป้นพิมพ์แสดงข้อมูลทางจอภาพ


REPORT Province 5 Record
===================================================

ID Province
===================================================
1 CHONBURI
2 RAYONG
3 PATOOMTHANI

4 SURATTHANI 33
5 NAKONPATOM

ใบความรู้หน่วยที่ 5

เรื่อง การประกาศตัวแปรแบบโครงสร้าง


เนื้อหา
1. ความหมายของตัวแปรแบบโครงสร้าง
2. การประกาศชื่อโครงสร้าง
3. การประกาศตัวแปรแบบโครงสร้าง

4. การก าหนดค่าเริ่มต้น
5. การอ้างถึงสมาชิกของตัวแปรแบบโครงสร้าง
ผลการเรียนรู้ที่คาดหวัง

1. อธิบายความหมายของตัวแปรแบบโครงสร้างได้
2. เขียนโปรแกรมประกาศตัวแปรแบบโครงสร้างได้
3. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรแบบโครงสร้างได้
4. เขียนโปรแกรมเพื่อแก้ปัญหาโจทย์ที่ก าหนดให้โดยใช้ตัวแปรแบบโครงสร้างได้


Programming 2 ประกาศตัวแปรขึ้นมาใหม่ได้ ที่ผ่านมาเราได้รู้จักกับตัวแปรที่เก็บข้อมูลเป็นกลุ่มในลักษณะตัวแปรชุด
ในการเขียนโปรแกรมด้วยภาษาซี สามารถประกาศตัวแปรให้เก็บข้อมูลได้หลายแบบ หรือ

โดยกลุ่มข้อมูลของตัวแปรชุดนั้น ๆ ต้องเป็นข้อมูลประเภทเดียวกัน

ในบทนี้จะกล่าวถึงตัวแปรที่เก็บกลุ่มของข้อมูลที่เรียกว่า ตัวแปรแบบโครงสร้าง (Structures)
โดยจะเป็นตัวแปรประเภทใหม่ที่ผู้ใช้ประกาศขึ้นให้เก็บข้อมูลสมาชิกหลายๆ ตัวรวมกันอยู่ภายใต้ชื่อ
เดียวกัน และข้อมูลแต่ละตัวอาจเป็นข้อมูลที่มีชนิดต่างกัน เช่น char, int, float เป็นต้น ตัวอย่าง
เช่น ในการเก็บข้อมูลของพนักงานแต่ละคนในบริษัทจะประกาศชื่อตัวแปรแบบโครงสร้างเป็นชื่อ

พนักงาน และภายในนั้นจะประกอบด้วยข้อมูลที่เป็นชื่อ วันเกิด ที่อยู่ เงินเดือน เป็นต้น
1. ความหมายของตัวแปรแบบโครงสร้าง
ข้อมูลแบบโครงสร้าง (Structure) เป็นข้อมูลชนิดหนึ่งที่มีลักษณะส าคัญ คือ สามารถ

รวบรวมข้อมูลหลายๆ ชนิดเข้ามาเก็บไว้ด้วยกัน เพื่อความสะดวกในการจัดการข้อมูลต่างชนิดกัน
จากข้อจ ากัดบางประการของตัวแปรชุด(Arrays) ที่จะจองใช้หน่วยความจ ายาวติดกันตามจ านวน
ที่จอง และช่องแต่ละช่องจะสามารถเก็บข้อมูลชนิดเดียวกันได้เท่านั้น เช่น double fix[5]; แสดงว่า
ตัวแปร fix จะจองใช้หน่วยความจ า 5 ช่องส าหรับไว้เก็บข้อมูลและข้อมูลที่รับได้คือชนิด double
เท่านั้น

ดังนั้นข้อมูลแบบโครงสร้าง (Structure) จะสามารถแก้ปัญหาดังที่ได้กล่าวมาได้ คือจะมีตัว

34 แปรเพียงชื่อเดียว แต่ตัวแปรเพียงชื่อเดียวนี้สามารถเก็บข้อมูลหลายชนิดกันได้

2. การประกาศชื่อโครงสร้าง

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



struct ชื่อโครงสร้าง

{


ชนิดข้อมูล ชื่อสมาชิก[,ชื่อสมาชิก,...];

ชนิดข้อมูล ชื่อสมาชิก[,ชื่อสมาชิก,...];




ชนิดข้อมูล ชื่อสมาชิก[,ชื่อสมาชิก,...];


} ;

Programming 2

โดยภายใน [ ] จะมีหรือไม่มีก็ได้

ตัวอย่างที่ 1 การประกาศชื่อโครงสร้าง catalog
ถ้าต้องการประกาศชื่อโครงสร้างชื่อ catalog ภายในประกอบด้วยสมาชิกต่างๆ ได้แก่ ชื่อผู้

แต่ง
ชื่อหนังสือ ส านักพิมพ์ วันที่พิมพ์ และครั้งที่พิมพ์ อาจเขียนได้ดังนี้
struct catalog
{ char name[30];

char title[30];
char pub[20];
int year;

} ;
โครงสร้างนี้มีชื่อว่า catalog มีสมาชิก 4 ตัว เป็นสตริง (name[30] title[30] และ
pub[20]) และเลขจ านวนเต็ม(year) ในหัวข้อถัดไป เราจะมาเรียนรู้วิธีประกาศตัวแปรแบบโครงสร้าง
ชื่อ book
35

3. การประกาศตัวแปรแบบโครงสร้าง

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



struct ชื่อโครงสร้าง
{
ชนิดข้อมูล ชื่อสมาชิก;
ชนิดข้อมูล ชื่อสมาชิก;

ชนิดข้อมูล ชื่อสมาชิก;
} ชื่อตัวแปร1, ชื่อตัวแปร2,… ;


ตัวอย่างที่ 2 การประกาศ book เป็นตัวแปรแบบโครงสร้างประเภท catalog วิธีที่ 1
struct catalog

{ char name[30];
Programming 2 int year;

char pub[20];
char title[30];


} book;

วิธีที่ 2 เมื่อประกาศชื่อโครงสร้างแล้วจึงประกาศตัวแปรแบบโครงสร้าง (เหมือนกับการประกาศ
ตัวแปรทั่วไป)


struct ชื่อโครงสร้าง ชื่อตัวแปร1, ชื่อตัวแปร2,… ;




ตัวอย่างที่ 3 การประกาศ book เป็นตัวแปรโครงสร้างประเภท catalog วิธีที่ 2
struct catalog
{ char name[30];

char title[30];
char pub[20];
int year;
};
36
struct catalog book;

4. การก าหนดค่าเริ่มต้น

ในการก าหนดค่าเริ่มต้นให้กับตัวแปรแบบโครงสร้างสามารถท าได้ดังนี้

struct ชื่อตัวแปรแบบโครงสร้าง = { ค่าเริ่มต้น1 [,ค่าเริ่มต้น2, ...] };



เช่น struct catalog book = {“Tony”, “C++”, “SE-ED”, 2001};

5. การอ้างถึงสมาชิกของตัวแปรแบบโครงสร้าง

ในการเข้าถึงสมาชิกแต่ละตัวในตัวแปรแบบโครงสร้างจะใช้ชื่อตัวแปรน าหน้า ตามด้วย
เครื่องหมายจุด(.) และชื่อสมาชิกของตัวแปร


ชื่อตัวแปรแบบโครงสร้าง.ชื่อสมาชิก


การเข้าถึงสมาชิกแต่ละตัวเราสามารถกระท าได้คล้ายกับตัวแปรทั่ว ๆ ไป ตัวอย่างเช่น จาก

ตัวแปร book ถ้าต้องการระบุว่าพิมพ์ปี 1994 สามารถท าได้ดังนี้
book.year = 1994;
ถ้าหากต้องการพิมพ์ออกทางจอสามารถท าได้ดังนี้ Programming 2

printf(“Publication year : %d”, book.year);
ถ้าหากต้องการรับค่าปีที่พิมพ์จากแป้นพิมพ์สามารถท าได้ดังนี้
scanf(“%d”, &book.year);
ถ้าต้องการเขียนค าสั่งส าหรับรับชื่อผู้แต่งหนังสือและให้พิมพ์ชื่อหนังสือออกทางจอภาพ
สามารถ ท าได้ดังนี้

gets(book.name);
. . . . .
printf(“%s”, book.title);



โปรแกรมที่ 1
โปรแกรมนี้เป็นตัวอย่างการใช้ตัวแปรประเภทโครงสร้างอย่างง่าย โดยรับข้อมูลทุกตัวเข้าไป

ทางแป้นพิมพ์และแสดงผลทางจอภาพ
#include<stdio.h>
#include<conio.h>
37
struct s_type // ประกาศ s_type ให้เป็นชื่อโครงสร้าง
{ char id[6];

char name[30];
int age;
};
main()
{ struct s_type student; // ประกาศตัวแปรแบบโครงสร้างชื่อ student
printf("Enter ID: ");
gets(student.id);
printf("Enter Name: ");
gets(student.name);
printf("Enter Age: ");
scanf("%d",&student.age);
printf("\nOutput: ");
printf("%s | %s | %d", student.id, student.name, student.age);
getch();
}

 เราสามารถประกาศชื่อโครงสร้างไว้ภายใน main() หรือภายนอก main() ก็ได้

Layout………
Programming 2



























38

ใบงานประจ าหน่วยที่ 5

เรื่อง ความหมายและการประกาศตัวแปรโครงสร้าง
-----------------------------------------------------------------------------------------------------------------------

ผลการเรียนรู้ที่คาดหวัง
1. อธิบายความหมายของตัวแปรแบบโครงสร้างได้
2. เขียนโปรแกรมประกาศตัวแปรแบบโครงสร้างได้
-----------------------------------------------------------------------------------------------------------------------
1. จงท าเครื่องหมายถูก (√( หน้าข้อที่ถูกต้อง และท าเครื่องหมายผิด(X) หน้าข้อที่ไม่ถูกต้อง

1.1 ………… ตัวแปรแบบโครงสร้างทุกตัวมีขนาดเท่ากัน
1.2 …………เราสามารถประกาศให้สมาชิกของตัวแปรเป็นข้อมูลประเภทโครงสร้างได้
1.3 …………ในตัวแปรอาร์เรย์สามารถมีสมาชิกเป็นตัวแปรแบบโครงสร้างได้

1.4 …………สมาชิกทุกตัวในตัวแปรแบบโครงสร้างต้องเป็นข้อมูลประเภทเดียวกัน
1.5 …………ในการประกาศตัวแปร ชื่อประเภทโครงสร้างจะไม่มีก็ได้

2. จงประกาศตัวแปรแบบโครงสร้าง เพื่อเก็บข้อมูลที่ก าหนดให้ดังนี้

2.1 ก าหนดให้ profile เป็นโครงสร้างข้อมูล ซึ่งมีสมาชิก เพื่อจัดเก็บข้อมูลนักเรียนที่เข้า
Programming 2
ร่วมงาน international Science Fair 2012 ซึ่งประกอบไปด้วยชื่อนักเรียน (name)
ความยาวไม่เกิน 120 ตัวอักษร ชื่อโรงเรียน (school) ความยาวไม่เกิน 150 ตัวอักษร

และอายุ(age)
……………………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………………….
2.2 ก าหนดให้ std เป็นตัวแปรแบบโครงสร้างเพื่อเก็บข้อมูล จ านวน 5 คน
……………………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………………….
2.3 การวนลูปรับข้อมูลทางคีย์บอร์ดมาเก็บที่สมาชิก name, school และ age จ านวน 5

รายการ
……………………………………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………….

2.4 การวนลูปแสดงข้อมูลทางคีย์บอร์ดมาเก็บที่สมาชิก name, school และ age จ านวน
5 รายการ

………………………………………………………………………………………………………………………………. 39
……………………………………………………………………………………………………………………………….

ใบความรู้หน่วยที่ 6

เรื่อง ตัวแปรชุดของโครงสร้าง


เนื้อหา
1. ตัวแปรชุดของโครงสร้าง
2. การ Copy ตัวแปรแบบโครงสร้าง
ผลการเรียนรู้ที่คาดหวัง

1. อธิบายความหมายของตัวแปรแบบโครงสร้างได้
2. เขียนโปรแกรมประกาศตัวแปรแบบโครงสร้างได้
3. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรแบบโครงสร้างได้

4. เขียนโปรแกรมเพื่อแก้ปัญหาโจทย์ที่ก าหนดให้โดยใช้ตัวแปรแบบโครงสร้างได้

1. ตัวแปรชุดของโครงสร้าง

ถ้าหากต้องการเก็บข้อมูลแบบโครงสร้างจ านวนมาก ๆ สามารถก าหนดเป็นตัวแปรชุดของ
โครงสร้างได้ ตัวอย่างเช่น ถ้าต้องการเก็บข้อมูลจ านวน 50 ชุด ให้ประกาศตัวแปรชุดที่มีสมาชิก 50
Programming 2 โดยที่สมาชิกแต่ละตัวจะเป็นข้อมูลชนิดโครงสร้าง

ตัว


จากตัวอย่าง ตัวแปรแบบโครงสร้างชื่อ book ที่ผ่านมา ถ้าเราต้องการประกาศตัวแปรให้เก็บ
ข้อมูลรายการหนังสือจ านวน 100 เล่ม โดยประกาศเป็นตัวแปรชุดชื่อ cat สามารถท าได้ดังนี้
struct catalog

{ char name[30];
char title[30];
char pub[20];

int year;
} ;
struct catalog cat[100];
โดยข้อมูลเล่มแรกจะเริ่มที่ cat[0] ดังนั้นถ้าหากเราต้องการใส่ปีที่พิมพ์ให้กับหนังสือเล่มที่ 34

อาจท าได้ดังนี้ cat[33].year = 2004;
ถ้าต้องการพิมพ์ชื่อหนังสือเล่มที่ 20 อาจเขียนค าสั่งได้ดังนี้
printf(“%s”, cat[19].title);


40

2. การ Copy ตัวแปรแบบโครงสร้าง
ตัวแปรแบบโครงสร้างหนึ่งตัว สามารถมองเป็นตัวแปรใด ๆ ได้ ถ้าหากมีการประกาศตัวแปร

แบบโครงสร้างขึ้นมา 2 ตัว และให้มีการโอนย้ายข้อมูลระหว่างตัวแปรทั้งสอง สมาชิกทุกตัวจะถูก
โอนย้ายพร้อมกันหมด พิจารณาชุดค าสั่งต่อไปนี้
struct player
{ int x, y;
char status;

} a,b;
a.x = 10;
a.y = 20;

a.status = '1';
b = a;
หลังจากท าชุดค าสั่งนี้แล้ว ข้อมูลในตัวแปรแบบโครงสร้าง b จะเหมือนกับตัวแปร a ทุกประการ


โปรแกรมที่ 1
โปรแกรมนี้เป็นตัวอย่างการใช้ตัวแปรชุดของโครงสร้าง โดยก าหนดค่าเริ่มต้นให้กับตัวแปร Programming 2
ชุด
ของโครงสร้างชื่อ robots แล้วแสดงผลทางจอภาพ


#include <stdio.h>
#include<conio.h>
struct my_robot
{ char name[20];
int energy;
};
main()
{ int i;
struct my_robot robots[3] = { {"Lunar", 50},
{"Pat", 20},
{"Martin", 30} };
for(i=0 ; i<3 ; i++)
{ printf("Robot %d is called %s ", i, robots[i].name);
printf("and has %d units of energy.\n", robots[i].energy);
} 41
getch();
}

เมื่อรันโปรแกรมจะได้ผลลัพธ์ดังนี้


Robot 0 is called Lunar and has 50 units of energy.


Robot 1 is called Pat and has 20 units of energy.

Robot 2 is called Martin and has 30 units of energy.



โปรแกรมที่ 2
โปรแกรมนี้เป็นตัวอย่างการใช้ตัวแปรชุดของโครงสร้าง โดยรับข้อมูลทุกตัวเข้าทางแป้นพิมพ์
แล้วแสดงผลทางจอภาพ


#include<stdio.h>
#include<conio.h>
#define N 2

struct s_type
Programming 2 char str[80];
{ int no;



main() } s[N];
{ int i, j;

for(i=0;i<N;i++)
{ printf("Enter an integer #%d: ", i+1);\

scanf("%d", &s[i].no);
printf("Enter a string #%d: ", i+1);
scanf(“%s”, s[i].str);|

}

for(j=0;j<N;j++)
printf("\ndata#%d: %d\t%s", j+1, s[j].no, s[j].str);
getch();

}

42 ตามที่ได้ทราบมาแล้วว่าในตัวแปรแบบโครงสร้าง เราสามารถก าหนดสมาชิกกี่ตัวก็ได้ ดังนั้นตัวแปร
แบบโครงสร้างแต่ละประเภทที่สร้างขึ้นจะมีขนาดไม่เท่ากัน เราสามารถค านวณขนาดของตัวแปรแบบ

โครงสร้างได้โดยน าประเภทของข้อมูลของสมาชิกแต่ละตัวมารวมกัน หรือใช้ sizeof หาขนาดของตัว

แปรแบบโครงสร้างก็ได้ ดังตัวอย่างโปรแกรมที่ 4


โปรแกรมที่ 3

โปรแกรมนี้จะประกาศตัวแปรแบบโครงสร้างชื่อ s และใช้ sizeof หาขนาดของตัวแปร
#include<stdio.h>
#include<conio.h>
struct s_type
{ int i;
char ch;
double d;
};
main()
{ s_type s;
printf("s is %d bytes long\n",sizeof(s));
getch();
}
เมื่อรันโปรแกรม จะแสดงขนาดของตัวแปร s Programming 2

























43

ใบงานประจ าหน่วยที่ 6

เรื่อง การเขียนโปรแกรมอ้างถึงสมาชิกของตัวแปรแบบโครงสร้าง
-----------------------------------------------------------------------------------------------------------------------

ผลการเรียนรู้ที่คาดหวัง
1. อธิบายวิธีการอ้างถึงสมาชิกของตัวแปรแบบโครงสร้างได้
2. เขียนโปรแกรมเพื่อแก้ปัญหาโจทย์ที่ก าหนดให้โดยใช้ตัวแปรแบบโครงสร้าง
-----------------------------------------------------------------------------------------------------------------------
1. ให้นักเรียนพิจารณาส่วนของโปรแกรมต่อไปนี้

struct number
{ intnum;
char Name[30];

charLastname[30];
int year;
}data;
1.1 ตัวแปรแบบโครงสร้างมีชื่อว่า
Programming 2 1.2 โครงสร้างข้อมูลนี้มีชื่อว่า

……………………………………………………………………………………………..

…………………………………………………………………………………………………..
1.3 การรับข้อมูลทางคีย์บอร์ดมาเก็บที่สมาชิก name คือ

…………………………………………………………..
1.4 การรับข้อมูลทางคีย์บอร์ดมาเก็บที่สมาชิก year คือ
……..……………………………………………………..
1.5 การแสดงข้อมูลในสมาชิก name ใช้ค าสั่ง

…………………….…………………..………………………………..
1.6 การแสดงข้อมูลในสมาชิก numใช้ค าสั่ง
………………………………………..…………………………………..

2. จงเขียนโปรแกรมเก็บข้อมูลของนักเรียน 5 คน
2.1 ก าหนดให้ student เป็นโครงสร้างข้อมูล ซึ่งมีสมาชิกดังนี้
- รหัส(code)
- ชื่อ(name)
- คะแนนวิชาคณิตศาสตร์(math)


44 - คะแนนวิชาฟิสิกส์(physics)
- เกรดวิชาคณิตศาสตร์ (grad_mt)
- เกรดวิชาฟิสิกส์ (grad_ph)

2.2 ก าหนดให้ std เป็นตัวแปรแบบโครงสร้าง เก็บข้อมูล 5 ชุด


2.3 การวนลูปรับข้อมูลจ านวน 5 คน เฉพาะ รหัส ชื่อ คะแนนวิชาคณิตศาสตร์ และ
คะแนนวิชาฟิสิกส์ ส่วนเกรดให้โปรแกรมหาค่าเองจากเกณฑ์ ดังนี้

0 - 49 grad F
50 - 59 grad D
60 - 69 grad C
70 - 79 grad B
80 - 100 grad A

2.4 ตัวอย่างการรับข้อมูล

Record 1 Record 2
Code : 001 Code : 002

Name : Somsak Name : Sutin
Score Math : 80 Score Math : 60
Grad mt : A Grad mt : C

Score Physics : 70 Score Physics : 80 Programming 2
Grad Ph : B Grad Ph : A






3. จากโปรแกรมในข้อ 2 จงพัฒนา ให้สามารถเรียกดูคะแนนนักเรียนรายบุคคล โดยการใส่

รหัสนักเรียน แล้วแสดงข้อมูลนักเรียนทั้งหมด ดังตัวอย่าง
Ex

Enter Code : 002
Report Code : 002

=================================================
Name Score mt Grad Score Ph Grad
=================================================
Sutin 60 C 80 A 45

=================================================
Do you want to Continue (y/n) ……….

3.1 ท าการวนลูปในการเรียกแสดงข้อมูลจนกว่าจะตอบ n เป็นการสิ้นสุดการท างานของ

โปรแกรม
3.2 ให้นักเรียนตกแต่งโปรแกรมให้สมบูรณ์


















Programming 2




























46

ใบความรู้ที่ 7 ความหมายและการประกาศตัวแปรแบบพอยเตอร์


เนื้อหา
1. ความหมายของตัวแปรแบบพอยเตอร์

2. การประกาศตัวแปรแบบพอยเตอร์
ผลการเรียนรู้ที่คาดหวัง
1. อธิบายความหมายของตัวแปรแบบพอยเตอร์ได้

2. เขียนโปรแกรมประกาศตัวแปรแบบพอยเตอร์ได้

1. ความหมายของตัวแปรแบบพอยเตอร์
พอยเตอร์เป็นตัวแปรชนิดหนึ่งที่ใช้ส าหรับเก็บต าแหน่ง (address) ของข้อมูลภายใน
หน่วยความจ า ซึ่งการเก็บต าแหน่งจะเก็บเฉพาะต าแหน่งแรกเท่านั้น

พิจารณาชนิดข้อมูลประเภทจ านวนเต็ม (Integer) เปรียบเสมือนกับกล่องที่เก็บค่า “เลขจ านวน
เต็ม” 1 ค่า เช่น


ค าสั่ง ภาพอธิบาย ความหมาย

int num = 42; num การประกาศตัวแปร num ก็คือ การ Programming 2

จองเนื้อที่ในหน่วยความจ าไว้ส าหรับ
42 เก็บข้อมูลจ านวนเต็ม โดยสามารถอ้าง

ถึงต าแหน่งที่เก็บนี้ด้วยชื่อ num และ
ก าหนดค่เริ่มต้น


ให้กับตัวแปร num เท่ากับ 42

ตัวแปรแบบพอยเตอร์ (pointer) จะมีความต่างเล็กน้อยตรงที่จะไม่ได้เก็บค่าข้อมูล
โดยตรง แต่จะเก็บต าแหน่ง (address) ของตัวแปรที่เก็บข้อมูลนั้นแทน

num ptr

42 F001


F001 F001
อาจวาดภาพอธิบายได้อีกแบบหนึ่ง โดยใช้ลูกศรแทนการเก็บต าแหน่ง (address) ของข้อมูล
ภายในหน่วยความจ า ดังนี้

num 47
42 ptr

ซึ่งจะเห็นว่าในที่นี้ ptr เป็นตัวแปรแบบพอยเตอร์ซึ่งเก็บต าแหน่งของตัวแปร num ไว้ หรือ

เรียก
อีกอย่างหนึ่งว่าตัวแปรแบบพอยเตอร์ ptr ชี้ไปยังตัวแปร num
ประโยชน์ของพอยน์เตอร์

1. ใช้ในการรับค่า address จากฟังก์ชันหนึ่งไปยังอีกฟังก์ชันหนึ่ง
2. ใช้ในการจัดการตัวแปรชุดหรือตัวแปรสายอักขระให้มีประสิทธิภาพ โดยการอ้างอิง
address ของตัวแปรชุดหรือตัวแปรสายอักขระที่ต้องการ แทนที่การอ้างอิงชื่อตัวแปรชุดหรือตัวแปร
สายอักขระโดยตรง ท าให้สามารถจัดเก็บและเรียกใช้ข้อมูลที่ต้องการได้ง่าย
3. ใช้ในการจัดการโครงสร้างข้อมูล เช่น linked list และ binary tree เป็นต้น

2. การประกาศตัวแปรแบบพอยเตอร์ (Declaration pointer variables)


type *ptr_name; //กรณีที่พอยเตอร์ 1 ตัว

หรือ
type *ptr1_name, *ptr1_name,…; //กรณีที่พอยเตอร์มากกว่า 1 ตัว

Programming 2 ptr_name = ชื่อตัวแปรแบบพอยเตอร์ และต้องมีเครื่องหมาย * (asterisk)

type = ชนิดของข้อมูล เช่น int , char , float , double





เครื่องหมาย * (asterisk)
ptr1_name, ptr2_name = ชื่อตัวแปรแบบพอยเตอร์ตัวที่ 1 ,2 ,… ตามล าดับ และต้องมี
ตัวอย่างการประกาศตัวแปรแบบพอยน์เตอร์
int *ptr_i; //ตัวแปร ptr_i เป็นตัวแปรแบบพอยน์เตอร์ที่ชี้ไปยังชนิดข้อมูล int

char *ptr_c //ตัวแปร ptr_c เป็นตัวแปรแบบพอยน์เตอร์ที่ชี้ไปยังชนิดข้อมูล char
float *ptr_f //ตัวแปร ptr_f เป็นตัวแปรแบบพอยน์เตอร์ที่ชี้ไปยังชนิดข้อมูล float
ในที่นี้ ตามหลักไวยากรณ์ภาษาซีอนุญาตให้เครื่องหมาย * (asterisk) หรือ star
ถูกวางไว้ที่ต าแหน่งใดก็ได้ระหว่างชนิดของตัวแปร (base type) และชื่อตัวแปร (variable name)

เช่น
int *ptr; หรือ int * ptr; หรือ int* ptr; ก็ได้






48

ใบงานประจ าหน่วยที่ 7

เรื่อง ความหมายและการประกาศตัวแปรแบบพอยเตอร์
-----------------------------------------------------------------------------------------------------------------------

ผลการเรียนรู้ที่คาดหวัง
1. อธิบายความหมายของตัวแปรแบบพอยเตอร์ได้
2. เขียนโปรแกรมประกาศตัวแปรแบบพอยเตอร์ได้
-----------------------------------------------------------------------------------------------------------------------
1. จงท าเครื่องหมายถูก(√) หน้าข้อที่ถูกต้อง และท าเครื่องหมายผิด(X) หน้าข้อที่ไม่ถูกต้อง

1.1 ……… การบวกหรือลบพอยน์เตอร์เป็นการเพิ่มหรือลดแอดเดรสที่ตัวแปรพอยน์เตอร์ชี้

อยู่
1.2 ……… ตัวแปรพอยน์เตอร์สามารถใช้ตัวด าเนินการทางลอจิกได้

1.3 ……… ถ้าให้พอยน์เตอร์ชี้ไปที่อาร์เรย์จะชี้ไปที่ต าแหน่งแรกของอาร์เรย์เสมอ

1.4 ……… ตัวแปรพอยน์เตอร์แบบ int สามารถใช้ชี้ไปที่ข้อมูลแบบ char ได้
1.5 ……… เราสามารถเขียนโปรแกรมภาษาซี ให้แสดงค่าต าแหน่งของตัวแปรได้

2. ให้นักเรียนพิจารณาส่วนของโปรแกรมต่อไปนี้
Programming 2
main()

{ …………………………………. ข้อ 2.1
int a=5;
b=&a;
*b=a+5;

printf(“b = %d”,*b); ข้อ 2.2
printf(“a = %d”,a); ข้อ 2.3
}
2.1 เพื่อให้โปรแกรมท างานได้ถูกต้อง ควรประกาศตัวแปรดังนี้

……………………………………………

2.2 ผลลัพธ์ที่ได้ คือ ………………………………………………………………
2.3 ผลลัพธ์ที่ได้ คือ ………………………………………………………………




49


Click to View FlipBook Version