Weitere ähnliche Inhalte
Ähnlich wie งานนำเสนอ1 (20)
งานนำเสนอ1
- 2. ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ในการเขียนโปรแกรม ที่เกี่ยวกับการเก็บข้อมูลที่เป็นชนิดเดียวกันจานวน
มากๆ นั้น ถ้าจะใช้ตัวแปรอย่างที่ผ่านมาก่อนหน้านี้ในการเก็บข้อมูลดังกล่าว จะ
เป็นความยุ่งยากตั้งแต่การเก็บจนถึงการเข้าถึงข้อมูล ทางออกในเรื่องนี้ก็คือการ
ใช้ตัวแปรชุด ซึ่งเป็นตัวแปรที่ใช้ชื่อเพียงชื่อเดียว แต่สามารถที่จะกาหนดให้
เสมือนมีตัวแปรได้หลายตัว โดยตัวแปรแต่ละตัวจะมีดัชนีหรือตัวที่ใช้ในการ
บอกความแตกต่างกันระหว่างตัวแปร ข้อมูลในตัวแปรเหล่านี้ถูกเรียกว่า
‚สมาชิก (Element)‛ ส่วนดัชนีหรือตาแหน่งที่อยู่ของข้อมูลในตัวแปรชุด จะถูก
อ้างอิงโดยสับสคริป (Subscript) ที่เป็นจานวนเต็มที่กากับไว้ จานวนเต็มเหล่านี้
จะมีค่าไม่เป็นลบ โดยทั่วไปจะเริ่มจากค่าศูนย์
- 4. 1.ความหมายของตัวแปรชุด
ตัวแปรชุด หมายถึง การตั้งชื่อตัวแปรในหน่วยความจาที่ใช้ชื่อเพียงชื่อเดียว แต่มีตัวเลข
แสดงตาแหน่งกากับไว้เพื่อเป็นการบอกว่าเป็นตัวแปรชุดที่เท่าไรในชุดนั้น ในภาษาซีตัวแปร
ชุดสามารถมีหลายมิติ เช่น
ตัวแปรชุด 1 มิติ (One Dimensional Array)
คือตัวแปรชุดที่ถูกกาหนดโดยใช้ [ ] คู่เดียว และเวลาติดต่อข้อมูลใดๆ ในตัวแปรชุดก็
สามารถทาได้โดยใช้ subscript ตัวเดียว
รูปแบบ
type array-name[n];
type หมายถึง ชนิดตัวแปร
array-name หมายถึง ชื่อตัวแปรที่ต้องการประกาศเป็นตัวแปรชุด
n หมายถึง ตัวเลขที่แสดงตาแหน่งของข้อมูลในชุดนั้น ซึ่งจะต้องเป็นเลขจานวนเต็มเสมอ
- 5. ตัวแปรชุด 2 มิติ (Two Dimensional Array)
คือตัวแปรชุดที่ถูกกาหนดขึ้นโดยใช้ [ ] 2 คู่ มีการจัดข้อมูลเป็นแถว เป็น
คอลัมน์ เช่นข้อมูลแบบ Matrix คือจะมีตัวเลขที่แสดงตาแหน่ง 2 ตัว โดยตัว
แรกจะเป็นตัวเลขที่แสดงตาแหน่งแถว ส่วนตัวที่สองจะเป็นตัวเลขที่แสดง
ตาแหน่งคอลัมน์
รูปแบบ
type array-name[r][c];
type หมายถึง ชนิดของตัวแปร
array-name หมายถึง ชื่อตัวแปร
r หมายถึง ตัวเลขที่แสดงตาแหน่งแถว
c หมายถึง ตัวเลขที่แสดงตาแหน่งคอลัมน์
- 6. 2.การนาข้อมูลเข้าไปเก็บที่ตัวแปรชุด
การสร้างตัวแปรชุด เป็นการกาหนดเนื้อที่ในหน่วยความจาให้กับตัวแปร
ตามชนิดของตัวแปรที่กาหนด แต่ยังไม่มีข้อมูลเก็บอยู่ ซึ่งสามารถนาข้อมูล
เข้าเก็บในตัวแปรชุดได้หลายวิธีดังนี้
1. การกาหนดค่าเริ่มต้น เป็นการนาข้อมูลเข้าไปเก็บไว้ในตัวแปรชุด ตั้งแต่
การประกาศตัวแปรชุด ตัวอย่างเช่น
int num[3] = {5, 7, 4};
ในที่นี้จะได้ว่า num[0] = 5, num[1] = 7, num[2] = 4
char na e[4] = {‘J’, ‘a’, ‘c’, ‘k’};
ในที่นี้จะได้ว่า name[0] = ‘J’, name [1] = ‘a’, name [2] = ‘c’, name [3] = ‘k’
- 7. 2. การรับข้อมูลทันที เป็นการนาเข้าข้อมูลชุดในขณะที่โปรแกรมทางาน
อยู่ โดยการหยุดรอรับข้อมูลที่พิมพ์เข้าทางแป้นพิมพ์ เข้าไปเก็บไว้ในตัวแปร
ชุด ตัวอย่างเช่น
float score[10];
…
for (i = 0; i < 10; i++) {
printf(‚nEnterstudentsscore: ‛);
scanf(‚ %f‛, &score[i]);
}
เป็นการใช้การวนซ้ายแบบ for ที่มีตัวแปรควบคุม i ควบคุมให้มีการ
วนรอบเพื่อหยุดรอรับข้อมูลจากแป้นพิมพ์รอบละหนึ่งข้อมูล และนาไปเก็บที่
ตัวแปรชุด score ที่สับสคริป i
- 8. 3. การรับข้อมูลทางแฟ้มข้อมูล เป็นการนาเข้าข้อมูลจากแฟ้มข้อมูลเข้าเก็บ
ในตัวแปรชุด วิธีนี้ไม่ต้องเสียเวลาในการพิมพ์ข้อมูลเข้าทางแป้นพิมพ์ เนื่องจาก
ข้อมูลได้ถูกเตรียมและบันทึกไว้ล่วงหน้าในแฟ้มข้อมูลเรียบร้อยแล้ว ดังแสดง
ในตัวอย่าง
i = 0;
while (!feof (scorefile)) {
fscanf (scorefile, ‚ %f‛, &score[i]);
i = i+1;
}
ตัวอย่างนี้เป็นการอ่านข้อมูลจากแฟ้มข้อมูลชื่อ scorefile ทีละข้อมูลไปเก็บ
ไว้ที่ตัวแปรชุด score โดยที่ค่าของข้อมูลในตัวแปรชุดเป็นแบบจานวนจริง ทั้งนี้
โปรแกรมจะวนอ่านข้อมูลไปเรื่อยๆ จนกว่าจะพบเครื่องหมายจบไฟล์ (end of
file marker)
- 12. พิจารณาส่วนของชุดคาสั่งต่อไปนี้
float score[7] = {43.5, 44.3, 36.3, 28.0, 34.8, 37.6, 49.3};
float total = 0;
float avg;
for (i = 0; i < 7; i++) {
total = total + score [i];
}
avg = total / 7;
ตัวอย่างนี้จะเป็นการหาผลรวม และค่าเฉลี่ยของค่าข้อมูลที่เป็นจานวน
จริงที่เก็บไว้ในตัวแปรชุด score ทั้งนี้จะมีการกาหนดค่าเริ่มต้นให้ตัวแปร
total เป็น 0 จากนั้นทาการวนซ้าในการบวกค่าสะสมของค่าในตัวแปรชุด
score เข้าไปที่ตัวแปร total ทีละค่า จนหมดทุกค่าที่อยู่ในตัวแปรชุด score ซึ่ง
ในที่สุดตัวแปร total จะเก็บค่าผลบวกของค่าทั้งหมด จากนั้นนาเอาค่า
ดังกล่าวมาหารด้วยจานวนข้อมูลในตัวแปรชุด score ซึ่งนั่นคือค่าเฉลี่ยของ
ข้อมูลในตัวแปรชุด score แล้วไปเก็บไว้ที่ตัวแปร avg
- 13. สตริง (String) หรือ ตัวแปรชุด 1 มิติ ชนิดอักขระ
เราสามารถรวมอักขระแต่ละตัวเข้าด้วยกันเป็นสตริง (string) หรือ
ข้อความ โดยประกาศให้ตัวแปรที่จะเก็บสตริงหรือข้อความเป็นตัวแปร
ตัวแปรชุด 1 มิติ ชนิดอักขระ
เช่น char code[6];
[0] [1] [2] [3] [4] [5]
code
1 1 1 1 1 1
byte byte byte byte byte byte
หมายถึงประกาศให้ตัวแปร code เป็นตัวแปรชุด 1 มิติขนาด 6 ช่อง แต่
ละช่องเก็บข้อมูลประเภทอักขระ
- 14. 1. การกาหนดค่าเริ่มต้นให้กับสตริง
char name[ ] = “MWIT School”; จะได้
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
name
1 1 1 1 1 1 1 1 1 1 1 1
byte byte byte byte byte byte byte byte byte byte byte byte
โดยที่ตาแหน่ง name[11] จะเก็บค่า 0 ไว้อัตโนมัติ เพื่อแสดงการสิ้นสุดข้อความ
M W I T S c h o o L 0
- 17. ฟังก์ชันนี้จะเหมือนการเชื่อมต่อ srting1 ด้วย string2 ทั้งนี้ string1 ต้องมี
เนื้อที่เพียงพอในการที่จะเชื่อมต่อ string 2 เข้าไป นอกจากนี้ string2 ก็ยังมีค่า
คงเดิมไม่เปลี่ยนแปลง มีตัวอย่างการใช้งานดังนี้
char name1[20]= ‚Jack ‛;
char name2[10]= ‚Rose‛;
…
strcat (name1, name2);
จะได้ว่า name1 = ‚Jack Rose‛ ส่วน name 2 = ‚Rose‛ เหมือนเดิม
- 18. 2. ฟังก์ชันสาเนาสตริง เป็นฟังก์ชันที่ใช้ในการทาสาเนาสตริง โดยมีรูปแบบของ
ฟังก์ชันดังนี้
รูปแบบ
strcpy (string1, string2);
ฟังก์ชันนี้จะทาการสาเนา srting2 ไปไว้ที่ string1 ทั้งนี้ string1 ต้องมีเนื้อที่
เพียงพอ เมื่อเสร็จแล้วทั้ง string1 และ string2 จะมีค่าเหมือนกัน มีตัวอย่าง
การใช้งานดังนี้
char name1[20]= ‚Jack ‛;
char name2[10]= ‚Rose Apple‛;
…
Strcpy (name1, name2);
จะได้ว่า namel = ‚Rose Apple‛ และ name 2 = ‚Rose Apple‛
- 19. 3. ฟังก์ชันเปรียบเทียบสตริง เป็นฟังก์ชันที่ใช้ในการเปรียบเทียบสองสตริง โดยมีรูปแบบของ
ฟังก์ชันดังนี้
รูปแบบ
strcmp (string1, string2);
ฟังก์ชันนี้จะทาการเปรียบเทียบ string1 และ srting2 ทั้งนี้ฟังก์ชันจะมีค่าเป็นศูนย์ถ้า
string1 ถ้าทั้งสองสตริงเหมือนกัน มีค่าน้อยกว่าศูนย์ถ้า string1 น้อยกว่า string2 และมี
ค่ามากกว่าศูนย์ ถ้า string1 มากกว่า string2 ดังตัวอย่างการใช้งานดังนี้
char name1[20]= ‚Jack‛;
char name2[10]= ‚Rose‛;
…
x = strcmp (name1, name2);
ในกรณีนี้ฟังก์ชัน strcmp จะมีค่าน้อยกว่าศูนย์ เนื่องจากว่าสตริง ‚Jack‛ น้อยกว่า
สตริง ‚Rose‛ แต่ถ้าคาสั่ง strcmp(namel, ‚Jack‛); ฟังก์ชันนี้จะมีค่าเท่ากับศูนย์
- 20. 4. ฟังก์ชันสาเนาสตริง เป็นฟังก์ชันที่ใช้ในการทาสาเนาสตริง โดยมีรูปแบบ
ของฟังก์ชันดังนี้
รูปแบบ
strcpy (string1, string2);
ฟังก์ชันนี้จะทาการสาเนา srting2 ไปไว้ที่ string1 ทั้งนี้ string1 ต้องมีเนื้อที่
เพียงพอ เมื่อเสร็จแล้วทั้ง string1 และ string2 จะมีค่าเหมือนกัน มีตัวอย่างการ
ใช้งานดังนี้
char name1[20]= ‚Jack ‛;
char name2[10]= ‚Rose Apple‛;
…
strcpy (name1, name2);
จะได้ว่า namel= ‚Rose Apple‛ และ name2 = ‚Rose Apple‛
- 21. สรุป
ตัวแปรชุดที่เป็นตัวแปรที่นาไปใช้ในกระบวนการต่างๆ ที่เกี่ยวข้องกับ
ข้อมูลที่เป็นชนิดเดียวกัน เป็นจานวนมากๆ การมีตัวแปรชุดเพิ่มความยืดหยุ่น
ให้กับการเขียนโปรแกรม เพราะสามารถเก็บข้อมูลจานวนมากๆ ไว้ในหน่วย
ความจาได้ เมื่อเก็บได้ การจะนาข้อมูลเหล่านั้นไปใช้ในกระบวนการใด
อย่างไรก็ไม่ใช่เรื่องที่ยาก ส่วนเรื่องของชนิดข้อมูลที่เป็นแบบสตริงนั้น ก็เป็น
ชนิดข้อมูลที่สาคัญ เพราะต้องนาไปใช้มาก การดาเนินการที่เกี่ยวข้องกับ
สตริงเป็นสิ่งที่ต้องศึกษาให้เข้าใจ เพราะมีหลายการดาเนินการที่มีความ
ซับซ้อน ไม่ง่ายเหมือนกับการดาเนินการกับข้อมูลชนิดอื่นๆ การดาเนินการ
ในสตริงส่วนใหญ่ เป็นเรื่องของการนาฟังก์ชันที่ได้สร้างไว้แล้วนั้นนามาใช้
ดังนั้นจึงจาเป็นต้องมีความรู้ ความเข้าใจถึงหน้าที่การทางาน รวมถึงข้อจากัด
หรือเงื่อนไขต่างๆ ของการใช้ฟังก์ชันเหล่านั้น
- 22. สมาชิก
นาย ณัฐชนน หมอกลาง เลขที่ 2
นาย กฤษณกาญจน์ กันเจียมตัว เลขที่ 5
นาย ปฐมพร ฉัตรทันท์ เลขที่8
นาย พงศ์ระพี ศิริเหลืองทอง เลขที่ 9
น.ส. ทิพย์อักษร โตแก้ว เลขที่ 18
น.ส. ประภัสสร บุญเงิน เลขที่21
ชั้นมัธยมศึกษาปีที่ 6 / 2