More Related Content Similar to บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ Similar to บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ (20) More from Mook Sasivimon (6) บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ2. 1. ประสิทธิภาพการเก็บข้อมูลแบบตัวแปรชุด
ตัวแปรชุดหรือเรียกว่า ตัวแปรแบบอาร์เรย์ ( Array Variable) มีลกษณะั
เป็นข้อมูลโครงสร้างชนิดหนึ่ง ประกอบไปด้วยข้อมูลชนิดพื้นฐานหลายๆตัวรวม
กลุ่มกัน ข้อมูลแต่ละตัวนั้นเรียกว่า อีลีเมนต์(Element) และทุกอีลีเมนต์นั้น ต้อง
เป็นข้อมูลชนิดเดียวกัน
3. 1.1 คาสั่งกาหนดลักษณะตัวแปรชุด
การกาหนดลักษณะของตัวแปรชุด หมายถึง การกาหนดวิธีการจัดเก็บ
ข้อมูล โดยใช้ตารางข้อมูล ที่เรียกว่ามิติ ( Dimension ) แบ่งตามลักษณะการ
ทางานได้ 3รูปแบบ คือ แบบ 1 มิติ แบบ 2 มิติ และแบบ 3 มิติ
1) คาสั่งกาหนดตัวแปรชุดแบบ 1 มิติ
รูปแบบ type array_name [ r ] ;
2) คาสั่งกาหนดตัวแปรชุดแบบ 2 มิติ
รูปแบบ type array_name [ r ] [ c ] ;
3) คาสั่งกาหนดตัวแปรชุดแบบ 3 มิติ
รูปแบบ type array_name [ n ] [ r ] [ c ] ;
5. 1.2 ลักษณะตารางข้อมูลในหน่วยความจาตัวแปรชุด
ตารางข้อมูลเป็นพื้นที่ที่ระบบจองพื้นที่ใช้งานด้านจัดเก็บข้อมูลของ
ตัวแปรชุด โดยเลียนแบบการดาเนินงานแบบตารางเมตริกทางคณิตศาสตร์
อธิบายลักษณะตารางจัดเก็บข้อมูลแต่ละมิติ ดังนี้
1) ลักษณะตารางข้อมูลตัวแปรชุดแบบ 1 มิติ
ตัวอย่างคาสั่ง จองพื้นที่ เก็บข้อมูลเลขจานวนเต็ม 5 พื้นที่ ให้ตัวแปร
ชุดชื่อ a ตารางข้อมูลแบบ 1 มิติ int a [ 5 ] ;
แสดงลักษณะตารางข้อมูลในตัวแปรชุด 1 มิติ
a[0] a[1] a[2] a[3] a[4]
ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ...
6. 1.2 ลักษณะตารางข้อมูลในหน่วยความจาตัวแปรชุด (ต่อ)
2) ลักษณะตารางข้อมูลตัวแปรชุดแบบ 2 มิติ
ตัวอย่างคาสั่ง จองพื้นที่เก็บข้อมูลเลขจานวนเต็ม ให้ตัวแปรชุดชื่อ a
ตารางข้อมูลขนาดพื้นที่ 2 แถว 4 คอลัมน์
int a [ 2 ] [ 4 ] ;
แสดงลักษณะตารางข้อมูลในตัวแปรชุด 2 มิติ ขนาด 2 แถว 4 คอลัมน์
คอลัมน์ 0 คอลัมน์ 1 คอลัมน์ 2 คอลัมน์ 3
a[0][0] a [ 0 ] [1 ] a [ 0 ] [2 ] a [ 0 ] [3 ] มิติที่ 2
แถว 0
ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ...
แถว 1 a[1][0] a [ 1 ] [1 ] a [ 1 ] [2 ] a [ 1 ] [3 ]
ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ...
มิติที่ 1
7. 1.2 ลักษณะตารางข้อมูลในหน่วยความจาตัวแปรชุด (ต่อ)
3) ลักษณะตารางข้อมูลตัวแปรชุดแบบ 3 มิติ
ตัวอย่างคาสั่ง จองพื้นที่เก็บข้อมูลเลขจานวนเต็ม ให้ตัวแปรชุดชื่อ a
ตารางข้อมูลขนาดพื้นที่ 2 แถว 2 คอลัมน์ 2 ตารางข้อมูล
int a [ 2 ] [ 2 ] [ 2] ;
แสดงลักษณะตารางข้อมูลในตัวแปรชุด 3 มิติ ขนาด 2 แถว 2 คอลัมน์ 2 ตาราง
คอลัมน์ 0 คอลัมน์ 1 คอลัมน์ 0 คอลัมน์ 1
ตารางข้อมูลที่ 0 (มิติ 3) ตารางข้อมูลที่ 1 (มิติ 3)
a [ 0 ] [ 0 ] [ 0 ] a [ 0 ][0 ] [1 ] a [ 0 ] [ 1 ] [ 0 ] a [ 0 ][1 ] [1 ]
ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ...
a [ 1 ] [ 0 ] [ 0 ] a [ 1 ][0 ] [1 ] a [ 1 ] [ 1 ] [ 0 ] a [ 1 ][1 ] [1 ]
ข้อมูล ... ข้อมูล ... ข้อมูล ... ข้อมูล ...
8. 1.3 การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุด
การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุดหมายถึง การนาข้อมูลลง
ตารางข้อมูล การอ่านค่าข้อมูลจากตารางข้อมูล การกาหนดค่าข้อมูลลงตาราง
ข้อมูล การประมวลผลโดยใช้ข้อมูลจากตัวแปรชุดพื้นที่ที่ต้องการ
1) การป้อนข้อมูลลงพื้นที่หน่วยความจาตัวแปรชุด
การป้อนข้อมูลจัดเก็บลงพื้นที่หน่วยความจาตัวแปรชุด
ต้องอ้างอิงชื่อตัวแปร ตามด้วยหมายเลขพื้นที่ เพื่อความสะดวก
รวดเร็วในการควบคุมนาเข้าข้อมูลลงพื้นที่หน่วยความจา จึงใช้
คาสั่งควบคุมวนซ้าช่วยดาเนินงาน ในที่นี้ยกตัวย่าง การวนซ้า
ควบคุมการนาข้อมูลลงพื้นที่ตัวแปรชุดด้วยคาสั่ง for ดังนี้
9. 1.3 การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุด(ต่อ)
ตัวอย่างคาสั่ง วนซ้าเพื่อรีบข้อมูลลงพื้นที่หน่วยความจาตัวแปรชุด
แบบ 1 มิติ จานวน 5 พื้นที่
for (n = 1 ; n <= 5 ; n++)
{
printf ( “ Score = “ ) ;
scanf ( “ %d “ , &score [ n ] ) ;
}
อธิบาย 1. ควบคุมให้วนซ้า 5 รอบ เพื่อรับข้อมูลคะแนน
จัดเก็บในหน่วยความจาตัวแปรชุด ชื่อ score จานวน 5 พื้นที่
จากคาสั่ง scanf
2. สาหรับ n ค่าแรก คือ ค่า 1 และเพิ่มค่าทีละ 1 แต่
ไม่เกิน 5
10. 1.3 การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุด(ต่อ)
2) การกาหนดข้อมูลลงพื้นที่หน่วยความจาตัวแปรชุด
กรณีต้องการกาหนดค่าในตารางข้อมูล พื้นที่หน่วยความจาของตัวแปรชุด
เขียนคาสั่งได้ดังนี้
1. คาสั่งกาหนดค่าให้ตัวแปรชุดแบบ 1 มิติ
รูปแบบ type array_name [ size] = { value list } ;
2. คาสั่งกาหนดค่าให้ตัวแปรชุดแบบ 2 มิติ
รูปแบบ type array_name [ r ] [ c ] = { value list } ;
3. คาสั่งกาหนดค่าให้ตัวแปชุดแบบ 3 มิติ
รูปแบบ type array_name [ n ] [ r ] [ c ] = { value list } ;
**Size คือขนาดพื้นที่เก็บข้อมูล
value list คือข้อมูลที่กาหนดให้ตัวแปรชุด หากมีหลายค่า ให้ใช้ , คั่น
11. 1.3 การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุด(ต่อ)
3) การอ่านข้อมูลจากหน่วยความจาตัวแปรชุด
การอ่านค่าข้อมูลจากพื้นที่หน่วยความจาของตัวแปรชุดมาแสดงผล ต้อง
อ้างอิงชื่อตัวแปร ตามด้วยหมายเลขพื้นที่เช่นกัน เพื่อความสะดวกรวดเร็วในการ
ควบคุมอ่านค่าข้อมูลจากหน่วยความจาทุกพื้นที่ในตารางข้อมูล จึงใช้วิธีเดียวกัน
กับการนาเสนอข้อมูลลงในพื้นที่หน่วยความจาตัวแปรชุด ด้วยการใช้คาสั่ง
ควบคุมวนซ้า
12. 1.3 การอ้างอิงพื้นที่หน่วยความจาของตัวแปรชุด(ต่อ)
ตัวอย่างคาสั่ง อ่านข้อมูลจากหน่วยความจาตัวแปรชุด
for (n = 1 ; n <= 5 ; n++)
{
printf ( “ Score = %d
n” , score [ n ] ) ;
}
อธิบาย
1. วนซ้าด้วยข้อมูลคะแนนจากหน่วยความจาตัวแปรชุด
ชื่อ score จานวน 5 พื้นที่ จากคาสั่ง
printf ( “ Score = %d n” , score [ n ] ) ;
2. สาหรับ n ค่าแรก คือค่า 1 และเพิ่มค่าทีละ 1 แต่ไม่เกิน 5
13. 2. ประสิทธิภาพการเก็บข้อมูลแบบกลุ่มอักขระ
ตัวแปรแบบกลุ่มอักขระ หรือเรียกว่า ตัวแปรแบบสตริง
(String Variable) เป็นข้อมูลตัวแปรชุดประเภทหนึ่งที่มีลักษณะเป็นข้อมูล
ประเภทข้อความ ประกอบด้วยอักขระมากกว่า 1 ตัว ใช้เนื้อที่ 1อักขระต่อ
1 ไบต์ การสิ้นสุดกลุ่มข้อมูลประเภทข้อความด้วยการกดแป้น Enter ระบบ
จะแทนค่าในหน่วยความจา ด้วยสัญลักษณ์ “ 0 ” ดังนั้น การกาหนดขนาด
พื้นที่ให้ข้อความ ต้องคานวณพื้นที่บวก 1 ค่าไว้เสมอ
14. 2.1 คาสั่งกาหนดลักษณะตัวแปรแบบกลุ่มอักขระ
การกาหนดลักษณะของตัวแปรกลุ่มอักขระ เป็นการจองพื้นที่ขนาด
ตารางข้อมูลเพื่อใช้ในการจัดเก็บกลุ่มข้อมูลเฉพาะอักขระเท่านั้น ยกตัวอย่างตัว
แปรแบบ 1 มิติ และ 2 มิติ ดังนี้
1) คาสั่งกาหนดตัวแปรกลุ่มอักขระแบบ 1 มิติ
รูปแบบ char array_name [r] ;
2) คาสั่งกาหนดตัวแปรกลุ่มอักขระแบบ 2 มิติ
รูปแบบ char array_name [r] [ c ] ;
อธิบาย
array_name คือชื่อตัวแปรแบบกลุ่มอักขระ
[r] คือจานวนแถวของตารางข้อมูล
[c] คือจานวนคอลัมน์ของตารางข้อมูล
15. 2.2 คาสั่งกาหนดค่าให้ตัวแปรชุดแบบกลุ่มอักขระ
การเขียนคาสั่งในโปรแกรมให้จัดเก็บค่าข้อมูลเฉพาะกลุ่มอักขระ ใน
ตารางข้อมูลที่จองพื้นที่ไว้โดยไม่ต้องป้อนข้อมูลนั้นๆ ผ่านทางแป้นพิมพ์ เขียน
คาสั่งดังนี้
1) คาสั่งกาหนดค่าตัวแปรแบบกลุ่มอักขระ 1 มิติ
รูปแบบ char array_name [size] = “ string constant “ ;
ตัวอย่างคาสั่ง กาหนดข้อมูลตัวอักษร “ X Y Z “ ให้จัดเก็บในตัวแปรชุด
ชื่อ b char b [4] = “ X Y Z “ ;
แสดงลักษณะการเก็บข้อมูลในตารางข้อมูลตัวแปรชุด
ประเภทกลุ่มอักขระแบบ 1 มิติ
a[0] a[1] a[2] a[3]
ข้อมูล X ข้อมูล Y ข้อมูล Z ข้อมูล 0
0 คือ ค่า null character
16. 2.2 คาสั่งกาหนดค่าให้ตัวแปรชุดแบบกลุ่มอักขระ(ต่อ)
2) คาสั่งกาหนดค่าตัวแปรแบบกลุ่มอักขระ 2 มิติ
รูปแบบ char array_name [ r ] [ c ] = { “ string constant list “ } ;
อธิบาย
array_name คือชื่อตัวแปรแบบกลุ่มอักขระ
string constant list คือข้อมูลชนิดอักขระ หากมีหลายรายการให้ใช้ , คั่น
[r] คือจานวนแถวของตารางข้อมูล
[c] คือจานวนคอลัมน์ของตารางข้อมูล
Size คือขนาดพื้นที่เก็บข้อมูล
17. 2.2 คาสั่งกาหนดค่าให้ตัวแปรชุดแบบกลุ่มอักขระ(ต่อ)
ตัวอย่างคาสั่ง กาหนดให้จัดเก็บข้อมูล “ABC” , “DEF” ลงหน่วยความจา
ตัวแปรชุด char a [ 2 ] [ 4 ] = { “ ABC “ ,
“DEF “ } ;
แสดงลักษณะการเก็บข้อมูลในตารางตัวแปรชุดประเภทกลุ่มอักขระ
แบบ 2 มิติ
คอลัมน์ 0 คอลัมน์ 1 คอลัมน์ 2 คอลัมน์ 3
a[0][0] a [ 0 ] [1 ] a [ 0 ] [2 ] a [ 0 ] [3 ]
แถว 0 มิติที่ 2
ข้อมูล A ข้อมูล B ข้อมูล C ข้อมูล 0
a[1][0] a [ 1 ] [1 ] a [ 1 ] [2 ] a [ 1 ] [3 ]
แถว 1
ข้อมูล D ข้อมูล E ข้อมูล F ข้อมูล 0
มิติที่ 1
18. 2.3 การอ้างอิงข้อมูลในตารางข้อมูลตัวแปรชุดกลุ่มอักขระ
ตัวแปรชุดกลุ่มอักขระ ใช้วิธีการอ้างอิงหน่วยความจาเช่นเดียวกับตัว
แปรชุดแบบอื่นๆ และใช้คาสั่ง for ควบคุมการวนซ้าดาเนินงานกับข้อมูล ดังนี้
1) การกาหนดข้อมูลให้ตัวแปรกลุ่มอักขระ และอ่านค่ามาใช้งาน
ตัวอย่างคาสั่ง กาหนดข้อมูลจัดเก็บลงหน่วยความจาตัวแปรชุดกลุ่ม
อักขระ 2 มิติ
char name [ 5 ] [ 20 ] = { “Panya, Pawat, Pattraporn, Patcharawarai, Pilin “ } ;
20. 2.3 การอ้างอิงข้อมูลในตารางข้อมูลตัวแปรชุดกลุ่มอักขระ(ต่อ)
2) การป้อนค่าและอ่านค่าจากหน่วยความจาตัวแปรชุดกลุ่มอักขระ
ตัวอย่างคาสั่ง จองพื้นที่หน่วยความจาให้ตัวแปรชุดกลุ่มอักขระลักษณะ 2 มิติ
char name [ 5 ] [ 20 ] ;
ตัวอย่างคาสั่ง วนซ้ารับค่าจากแป้นพิมพ์ เพื่อจัดเก็บลงพื้นที่หน่วยความจาตัว
แปรชุดกลุ่มอักขระ
for (i = 0 ; i < 4 ; i++)
{
printf ( “ name = > ” ) ;
gets ( name [ i ] ) ;
}
22. 3.กรณีศึกษาการใช้ตัวแปรชุด
3.1 กรณีศึกษาการอ้างอิงข้อมูลประเภทตัวแปรในหน่วย
ความจาตัวแปรชุดแบบ 1 มิติ
โจทย์ : จงเขียนโปรแกรมระบบงานเพื่อนาข้อมูลคะแนนนักเรียน 5 ราย จัดเก็บ
ลงหน่วยความจาตัวแปรชุด แล้วอ่านค่าข้อมูลคะแนนนักเรียนทั้ง 5 ราย
จากหน่วยความจาตัวแปรชุดมาแสดงที่จอภาพ
28. 3.3 กรณีศึกษาการอ้างอิงข้อมูลประเภทตัวแปรในหน่วย
ความจาตัวแปรชุดแบบ 2 มิติ
โจทย์ : จงเขียนโปรแกรมระบบงานเพื่อป้อนข้อมูลคะแนนนักเรียน 2 ราย แต่ละ
รายต้องป้อนคะแนนจานวน 3 วิชา บันทึกลงหน่วยความจาแบบตัวแปรชุด
แล้วอ่านค่าจากหน่วยความจาตัวแปรชุดแสดงผลที่จอภาพ
วิเคราะห์ตารางข้อมูลจากโจทย์ต้องใช้ตัวแปรชุดขนาด 2 มิติ ขนาด 2 แถว
x 3 คอลัมน์ ได้ตารางข้อมูลขนาด 6 ห้องคือ
30. 3.4 กรณีศึกษาการอ้างอิงข้อมูลประเภทตัวแปรในหน่วยความจา
ตัวแปรชุดแบบ 1 มิติกาหนดรอบวนซ้าโดยผู้ใช้ระบบงานโปรแกรม
โจทย์ : จงเขียนขั้นตอนการสร้างงานโปรแกรม เพื่อป้อนข้อมูลชื่อรายการวัตถุดิบ
และราคาของวัตถุดิบที่ใช้ ดาเนินงานตามจานวนที่ผู้ใช้ระบบระบุจานวนรายการ
แล้วให้พิมพ์สรุปข้อมูลที่บันทึกทั้งหมดพร้อมพิมพ์ผลรวมจานวนเงินวัตถุดิบ
ทั้งหมดที่จัดซื้อในครั้งนี้ การแสดงผลทางจอภาพให้ออกแบบตามความเหมาะสม
ของงาน กาหนดคุณสมบัติตัวแปร
ข้อมูล ชื่อหน่วยความจา ชนิดข้อมูล
จานวนรายการวตถุดิบ n ตัวเลขจานวนเต็ม
ลาดับวัตถุดิบ I ตัวเลขจานวนเต็ม
ชื่อวัตถุดิบ Material ตัวแปรชุด 1 มิติ กลุ่มอักขระ
ราคาต้นทุนวัตถุดิบ Price ตัวแปรชุด 1 มิติ จานวนเต็ม
ผลรวมต้นทุน Sum ตัวเลขจานวนเต็ม
34. อธิบาย 1. คาสั่งนิพจน์ n = atoi ( gets (numstr ) );
หมายถึงใช้ฟังก์ชันมาตรฐาน แปลงค่าอักขระในหน่วยความจาตัวแปร
เป็นตัวเลขแล้วเก็บค่าที่ได้ในหน่วยความจา n
2. การหาค่าผลรวม ซึ่งเป็นค่าสะสมในหน่วยความจาค่าใดนั้น ต้องเขียน
คาสั่งให้อยู่ในช่วงการวนซ้าด้วย
38. 4.กรณีศึกษาการใช้ตัวแปรกลุ่มอักขระ
4.1 กรณีศึกษาการอ้างอิงข้อมูลประเภทค่าคงที่ในหน่วย
ความจาตัวแปรชุดแบบกลุ่มอักขระ
โจทย์ : จงเขียนงานเพื่อกาหนดชื่อนักเรียน 5 รายคือ {“Somsri”, “Somjai”,
“Somnuk”, “Somjit”, “Somkit”} เข้าไปเก็บในหน่วยความจาตัวแปรชุด แล้ว
แสดงผลข้อมูลที่จอภาพ
43. ตัวอย่างโปรแกรมที่ 5.7 (ต่อ)
อธิบาย คาสั่งนิพจน์ n = atoi (gets (numstr) ) ;
คือรับค่าข้อมูลประเภทอักขระ ลงหน่วยความจาตัวแปร numstr
แล้วนาค่านั้น มาแปลงเป็นตัวเลขด้วยฟังก์ชัน atoi ( )
44. 1. นายจิตรเทพ สุกุลธนาศร เลขที่ 5
2. นายธนวัส อ่อนเอี่ยม เลขที่ 6
3. นางสาวจิตรทิพย์ สุกุลธนาศร เลขที่ 23
4. นางสาวธนัชกัญ พูลผล เลขที่ 24
5. นางสาวพัชรวลัย ดีประชา เลขที่ 25
6. นางสาวภัทราพร เนตรสว่าง เลขที่ 26
7. นางสาวศศิวิมล สมบูรณ์ศิริ เลขที่ 27
ชั้นมัธยมศึกษาปีที่ 6/2