หน่วยที่ 7 อาร์เรย์
DESCRIPTION
อาร์เรย์ นับได้ว่ามีความสำคัญเป็นอย่างมากต่อการเขียนโปรแกรม เนื่องจากอาร์เรย์สามารถจัดเก็บข้อมูลได้หลายค่า ภายใต้การประกาศชื่อตัวแปรอาร์เรย์เพียงตัวเดียว ในหน่วยการเรียนนี้ ผู้เรียนจะได้ศึกษาเกี่ยวกับตัวแปรอาร์เรย์ ชนิดของตัวแปรอาร์เรย์ การเขียนโปรแกรมเพื่อจัดการอาร์เรย์ ตัวแปรชุดอักขระ และการเขียนโปรแกรมเพื่อจัดการชุดอักขระ #จัดทำโดย นายปรเมษฐ์ ลิขิตไพบูลย์สุข ปวช.2/2 เลขที่ 5 นายพิชิต อินทรภิรมย์ ปวช.2/2 เลขที่ 6 #คอมพิวเตอร์ธุรกิจTRANSCRIPT
การเขยนโปรแกรมบนระบบปฏบตการเทกชโหมด (ภาษาซ) รหสวชา 2201-2411
หนวยท 2
เอกสารประกอบการสอน
รายวชา การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411 ระดบประกาศนยบตรวชาชพ ชนปท 2
หนวยท 7 เรอง อารเรย
นางกรรณกา มานพ ต าแหนง คร วทยฐานะ ครช านาญการ
แผนกวชา คอมพวเตอรธรกจ วทยาลยอาชวศกษานครปฐม สงกดคณะกรรมการอาชวศกษา
กระทรวงศกษาธการ
การเขยนโปรแกรมบนระบบปฏบตการเทกชโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย ก
หนวยท 7
เอกสารประกอบการสอน เรอง อารเรย ไดจดท าขนเพอใชเปนสอในการเรยนการสอนรายวชาการเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) ระดบประกาศนยบตรวชาชพ ชนปท 2 เพอชวยใหนกเรยนเขาใจหลกการและพนฐานเกยวกบระบบคอมพวเตอร หนาทและความส าคญของระบบปฏบตการมทกษะในการใชโปรแกรมระบบปฏบตการเบองตน และสามารถใชโปรแกรมภาษาซไดมากยงขน ซงผจดท าหวงเปนอยางยงวาเอกสารประกอบการสอนนสามารถท าใหนกเรยนเขาใจและมทกษะการใชโปรแกรมภาษาซไดมากขน
กรรณกา มานพ
ค าน า
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย ข
หนวยท 7
หนา ค าน า ก สารบญ ข สาระส าคญ ค สาระการเรยนร ค จดประสงคการเรยนร ง คมอคร จ คมอนกเรยน ฉ 1. ตวแปรอารเรย 1 2. การเขยนโปรแกรมเพอจดตวแปรอารเรย 8
3. ตวแปรชดอกขระหรอขอความ 15
4. การเขยนโปรแกรมเพอจดการชดอกขระ
หรอขอความ
19
แบบทดสอบ บรรณานกรม
สารบญ
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย ค
หนวยท 7
สาระส าคญ
จากเนอหาในหนวยการเรยนทผานมา หากตองการเกบขอมลแตละคาจะตองประกาศ ตวแปรขนมาใหมจ านวนตวแปรเทากบขอมลทตองการจดเกบเกรดเฉลยของนกเรยน 5 คน ตองการประกาศตวแปรขนมา 5 ตว เพอใชในการจดเกบเกรดเฉลยดงกลาว แตถาหากมนกเรยนมากขน จะตองประกาศตวแปรมากขนตามไปดวยท าใหมความไมสะดวกในการเขยนโปรแกรม ถาหากม การประกาศตวแปรขนเพยงตวเดยวแตสามารถเกบขอมลไดหลายคาจะท าใหผเขยนโปรแกรมมความสะดวกในการเขยนโปรแกรมมากยงขน เนองจากไมจ าเปนตองใชตวแปรในการเขยนโปรแกรมเปนจ านวนมาก
โดยตวแปรทมการประกาศตวแปรขนเพยงตวเดยวแตสามารถเกบขอมลไดหลายคา คอตวแปรอารเรยนนเอง สาระการเรยนร 1. ตวแปรอารเรย 2. ชนดของตวแปรอารเรย 2.1 ตวแปรอารเรย 1 มต 2.2 ตวแปรอารเรย 2 มต 2.3 การเขยนโปรแกรมเพอจดตวแปรอารเรย 2.4 ตวแปรชดอกขระหรอขอความ 2.5 การเขยนโปรแกรมเพอจดการชดอกขระหรอขอความ
อารเรย
หนวยท
7
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย ง
หนวยท 7
จดประสงคการเรยนร 1. สามารถอบอกความหมายของตวแปรอารเรยได
2. สามารถบอกความหมายอารเรย 1 มต และอารเรย 2 มตได
3. สามารถประกาศตวแปรอารเรยได
4. สามารถเขยนโปรแกรมโดยใชตวแปรอารเรยได
5. สามารถประกาศตวแปรชดอกขระหรอขอความได 6. สามารถเขยนโปรแกรมโดยใชชดอกขระหรอขอความได
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย จ
หนวยท 7
1. เอกสารประกอบการสอนการเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) ชดท 7 มเอกสารทครตองเตรยมใหครบดงน 1.1 คมอคร จ านวน 1 ชด 1.2 แผนการจดการเรยนร จ านวน 1 แผน 1.3 คมอนกเรยน จ านวน 1 ชด 1.4 แบบฝกหด 1.5 ใบงาน 1.6 แบบทดสอบกอนเรยน - หลงเรยน 2. ครผสอนจะตองศกษารายละเอยดของเอกสารประกอบการสอน ชดท 7 ดงน
2.1 ศกษาคมอและแผนการจดการเรยนร 2.2 ศกษากจกรรมจากคมอนกเรยน
2.3 ศกษาเอกสารและทดลองใชอปกรณประกอบการเรยนการสอนทกชนดกอนท ากจกรรม
3. บทบาทครผสอน มดงน 3.1 เตรยมเอกสารและอปกรณประกอบการสอนลวงหนาใหครบตามรายการ 3.2 กอนเรมกจกรรมครชแจงใหนกเรยนทราบบทบาทของผเรยนในการใชชดฝก
ทกษะ 3.3 จดกจกรรมการเรยนการสอนใหเปนไปตามล าดบขนตอน 3.4 ใหค าแนะน าปรกษาแกนกเรยนในขณะทท ากจกรรม 3.5 รวมเฉลยและตรวจค าตอบการท ากจกรรมตางๆรวมกบนกเรยน 3.6 ประเมนผลการเรยนรของนกเรยน
คมอคร
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย ฉ
หนวยท 7
คมอ
นกเรยน
ค าชแจงส าหรบนกเรยน 1. การเรยนเอกสารประกอบการสอนการเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) ชดท 7 ใชเวลาเรยน 4 ชวโมง 2. ใหนกเรยนอานจดประสงคการเรยนรกอนการท ากจกรรม 3. กอนเรมบทเรยน นกเรยนควรศกษาคมอนกเรยนอยางละเอยด 4. ขณะทเรยนนกเรยนตองท ากจกรรมตามล าดบขนตอนพรอมกบครผสอน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 1
หนวยท 7
7.1 ตวแปรอารเรย
หนวยท 7 อารเรย
การพฒนาโปรแกรมในปจจบนผเขยนโปรแกรมนอกจากจะเปนผทมความรอบรในเรองภาษาคอมพวเตอรทใชในการเขยนโปรแกรมแลว ยงเปนผ มแนวคดทดในการบรหารจดการหนวยความจ าของคอมพวเตอรดวย ทงนเนองจากการเขยนโปรแกรมทมประสทธภาพนน มกจะหลกเลยงการใชตวแปรทมปรมาณมาก เพอใหโปรแกรมใชหนวยความจ าใหนอยทสด การแกปญหาการใชตวแปรทมปรมาณมากดงกลาว จงเปนทมาของการประยกตใชอารเรยในการเขยนโปรแกรม
อารเรย นบไดวามความส าคญเปนอยางมากตอการเขยนโปรแกรม เนองจากอารเรยสามารถจดเกบขอมลไดหลายคา ภายใตการประกาศชอตวแปรอารเรยเพยงตวเดยว ในหนวยการเรยนน ผเรยนจะไดศกษาเกยวกบตวแปรอารเรย ชนดของตวแปรอารเรย การเขยนโปรแกรมเพอจดการอารเรย ตวแปรชดอกขระ และการเขยนโปรแกรมเพอจดการชดอกขระ
ตวแปรอารเรยทประกาศขนมา เพอใชในการจดเกบขอมลนนมหลายมต แตในทน
จะกลาวถงตวแปรอารเรย 2 ชนด ดงน 7.2.1 ตวแปรอารเรย 1 มต 7.2.2 ตวแปรอารเรย 2 มต
7.2.1 ตวแปรอารเรย 1 มต
เปนตวแปรอารเรยทประกาศขนมาเพอใชในการจดเกบขอมลเพยงแถวเดยว แตมหลายคอลมน หรอสามารถเกบขอมลไดหลายคา เชน การจดเกบขอมลอายนกเรยนระดบชนปวช. 2 แผนกวชาคอมพวเตอรธรกจ จ านวน 30 คน สามารถใชตวแปรอารเรย 1 มต เพอท าการจดเกบขอมลไดดงน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 2
หนวยท 7
Score 18 17 18 17 17 ……. 16
age [0] age [1] age [2] age [3] age [4] ……. age [30]
ภาพท 7.2 การใชตวแปรอารเรย 1 มต เพอจดเกบขอมลอายของนกเรยนระดบชน ปวช. 2 จ านวน 30 คน
7.2.1.1 การประกาศตวแปรอารเรย 1 มต
รปแบบการประกาศตวแปรอารเรย 1 มต เปนดงน
ชนดของขอมล ชอตวแปรอารเรย[ขนาด];
ภาพท 7.3 รปแบบการประกาศตวแปรอารเรย 1 มต
จากภาพท 7.3 อธบายไดดงน
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซ ทสามารถ น ามาก าหนดใหกบตวแปรอารเรยได
ชอของตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมตงขนตามกฎเกณฑ การตงชอ
ขนาด หมายถง จ านวนชองหรอเซลลทใชในการจดเกบขอมล โดยจะใชตวเลขก าหนดขนาดของอารเรย มคาเรมตนเปน 0 และจะสนสดทขนาดของอารเรยลบดวย 1 ตวเลขนเรยกวา อนเดกซ (index) เชน ขนาดของอารเรยมคาเทากบ 20 ตวเลขอนเดกซจะมคา 0 – 19 เปนตน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 3
หนวยท 7
ตวอยางท 7.1 การประกาศตวแปรอารเรย 1 มต
1. int age[30], month[12]; 2. float salary[12]; 3. char status[2];
จากตวอยางท 7.1 อธบายไดดงน บรรทดท 1 ประกาศตวแปรอารเรยชอ age และ month เปนตวแปรอารเรย 1 มต
มขนาด 30 ชอง และ 12 ชอง ตามล าดบ แตละชองจดเกบขอมลมชนดเปน int บรรทดท 2 ประกาศตวแปรอารเรยชอ salary เปนตวแปรอารเรย 1 มต มขนาด
12 ชอง แตละชองจดเกบขอมลมชนดเปน float บรรทดท 3 ประกาศตวแปรอารเรยชอ status เปนตวแปรอารเรย 1 มต มขนาด 2
ชอง แตละชองจดเกบขอมลมชนดเปน char 7.2.1.2 การก าหนดคาคงทใหกบตวแปรอารเรย 1 มต
ในการก าหนดคาคงทใหกบตวแปรอารเรย 1 มต นน ท าได 2 วธ คอ ก าหนดคาคงทพรอมกบการประกาศตวแปรอารเรย และการก าหนดคาคงทหลงจากการประกาศตวแปรอารเรย การก าหนดคาคงทใหกบตวแปรอารเรย 1 มต ท าไดดงน
1. ก าหนดคาคงท พรอมกบการประกาศตวแปรอารเรย มรปแบบดงน
ชนดของขอมล ชอของตวแปรอารเรย [ขนาด] = {คาขอมล 1,คาขอมล 2,... คาขอมล n};
ภาพท 7.4 รปแบบการก าหนดคาคงท พรอมกบการประกาศตวแปรอารเรย จากภาพท 7.4 อธบายไดดงน
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถ น า ม า ก า ห น ด ใ ห ก บ ต ว แ ป ร อ า ร เร ย ไ ด
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 4
หนวยท 7
ชอตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมประกาศขนเพอใชใการ จดเกบขอมล
ขนาด หมายถง ขนาดของชองขอมลทใชในการจดเกบขอมลในอารเรย
คาขอมล หมายถง คาของขอมลใดๆ ทตองการจดเกบในอารเรย ณ ต าแหนงอนเดกซหรอตวชต าแหนงปรากฏอย
ตวอยางท 7.2 การก าหนดคาคงทใหกบตวแปรอารเรย 1 มต
1. int month[12]; = {1,2,3,4,5,6}; 2. char status[2];
จากตวอยางท 7.2 อธบายไดดงน
บรรทดท 1 ประกาศตวแปรอารเรยชอ month เปนตวแปรอารเรย 1 มต มขนาด 12 ชอง แตละชองจดเกบขอมลมชนดเปน int โดยแตละชองจดเกบขอมลดงน
ชองท 0 เกบเลข 1 ชองท 1 เกบเลข 2 ชองท 2 เกบเลข 3 ชองท 3 เกบเลข 4 ชองท 4 เกบเลข 5 ชองท 5 เกบเลข 6 บรรทดท 2 ประกาศตวแปรอารเรยชอ status เปนตวแปรอารเรย 1 มต ขนาด 2
ชอง แตละชองจดเกบขอมลมชนดเปน ch
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 5
หนวยท 7
7.2.2 ตวแปรอารเรย 2 มต เปนการประกาศตวแปรอารเรยขนมาเพอจดเกบขอมลตงแต 2 แถวขนไป แตละ
แถวจะมหลายคอลมน หรอสามารถเกบขอมลไดหลายคา เชน ตองการจดเกบขอมลจ านวนนกเรยน นกศกษาระดบชน ปวช. และ ปวส. ประจ าปการศกษา 2548 ถง 2552 ของวทยาลยอาชวศกษาพระนครศรอยธยา สามารถประกาศตวแปรอารเรย 2 มต เพอท าการจดเกบขอมล ไดดงน
2548 2550 2551 2552
2548 2549 2550 2551 2552
student ปวช. 1,560 1,590 1,620 1,890 2,300
ปวส. 152 168 192 189 235
ภาพท 7.5 การประกาศตวแปรอารเรย 2 มต เพอท าการจดเกบจ านวนนกเรยน นกศกษาระดบ ชน
ปวช . และปวส . ประจ าปการศกษา 2548 ถง 2552 ของวทยาลยอาชวศกษาพระนครศรอยธยา
7.2.2.1 การประกาศตวแปรอารเรย 2 มต รปแบบการประกาศตวแปรอารเรย 2 มต เปนดงน
ชนดของขอมล ชอตวแปรอารเรย [จ านวนแถว] [จ านวนคอลมน];
ภาพท 7.6 รปแบบการประกาศตวแปรอารเรย 2 มต
จากภาพท 7.6 อธบายไดดงน ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถ
น ามาก าหนดใหกบตวแปรอารเรยได ชอตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมตงขนตามกฎเกณฑ
การตงชอ
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 6
หนวยท 7
จ านวนแถว หมายถง จ านวนแถวทใชในการจดเกบขอมลในอารเรยจ านวนคอลมน หมายถง จ านวนคอลมนทใชในการจดเกบขอมลในแตละแถว
ตวอยางท 7.3 การประกาศตวแปรอารเรย 2 มต
1. int student[2][2]; 2. float score [5][3]; 3. long population[2][5];
จากตวอยางท 7.3 อธบายไดดงน
บรรทดท 1 ประกาศตวแปรอารเรยชอ student เปนตวแปรอารเรย 2 มต มขนาด 2 แถว 2 คอลมน จงจดเกบขอมลได 4 ชอง แตละชองจดเกบขอมลมชนดเปน int
บรรทดท 2 ประกาศตวแปรอารเรยชอ score เปนตวแปรอารเรย 2 มต มขนาด 5 แถว 3 คอลมน จงจดเกบขอมลได 15 ชอง แตละชองจดเกบขอมลมชนดเปน float
บรรทดท 3 ประกาศตวแปรอารเรยชอ population เปนตวแปรอารเรย 2 มต มขนาด 2 แถว 5 คอลมน จงจดเกบขอมลได 10 ชอง แตละชองจดเกบขอมลมชนดเปน long
7.2.2.2 การก าหนดคาคงทใหกบตวแปรอารเรย 2 มต
ในการก าหนดคาคงทใหกบตวแปรอารเรย 2 มต นน ท าได 2 วธ การก าหนดคาคงทไปพรอมกบการประกาศตวแปรอารเรยและการก าหนดคาคงทหลงจากการประกาศตวแปรอารเรย ซงเหมอนกบการก าหนดคาคงทใหกบตวแปรอารเรย 1 มต นนเอง
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 7
หนวยท 7
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถน ามาก าหนดใหกบตวแปรอารเรยได
ชอตวแปรอารเรย หมายถง ชอตวแปรอารเรยทผเขยนโปรแกรมตงขนตามกฎเกณฑการตงชอ
จ านวนแถว หมายถง จ านวนแถวทใชในการจดเกบขอมลในอารเรย
จ านวนคอลมน หมายถง จ านวนคอลมนทใชในการจดเกบขอมลในแตละแถว
คาขอมล หมายถง คาขอมลใดๆ ทตองการจดเกบในอารเรย ณ ต าแหนงชองขอมลทระบ
ตวอยางท 7.4 การก าหนดคาคงทใหกบตวแปรอารเรย 2 มต
1. int teacher[2][4] = {2,10,2,8,1,3,1,3}; 2. int score[2][2] = {50,62,48,59,68,71};
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 8
หนวยท 7
7.3 การเขยนโปรแกรมเพอจดตวแปรอารเรย
7.3.1 การเขยนโปรแกรมโดยใชตวแปรอารเรย 1 มต
ในการเขยนโปรแกรมโดยใชตวแปรอารเรย 1 มต นน มการใชงานคอนขางมาก ในปจจบน โดยขอยกตวอยางทส าคญๆ ดงน
ตวอยางท 7.5 การเขยนโปรแกรมจดเกบตวเลขเดอนทง 12 เดอน ในอารเรย 1 มต และแสดงตวเลขทง 12 เดอนออกทางจอภาพ
1 #include<stdio.h> 2 #include<conio.h> 3 main() 4 { 5 clrscr(); 6 int i, month[12] = {1,2,3,4,5}; 7 for(i = 0; i<5; i++) 8 printf(”month = %d\n”,month[i]); 9 getch(); 10 }
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 10
หนวยท 7
จากตวอยางท 7.5 อธบายการท างานของโปรแกรมไดดงน บรรทดท 6 ประกาศตวแปร I ซงเปนตวแปรอนเดกซหรอตวชต าแหนงของขอมลม
ชนดเปน int และประกาศตวแปรอารเรยชอ month เปนตวแปรอารเรย 1 มต มขนาด 5 ชอง แตละชองจดเกบขอมลมชนดเปน int โดยแตละชองจดเกบขอมลดงน
ชองท [0] เกบเลข 1 ชองท [1] เกบเลข 2 ชองท [2] เกบเลข 3 ชองท [3] เกบเลข 4 ชองท [4] เกบเลข 5 ชองท [5] เกบเลข 6 บรรทดท 7 วนรอบท าซ าค าสงในบรรทดท 8 ตราบใดทคาตวแปร I ซงเปนตวช
ต าแหนงของขอมล มคาตงแต 0-11 โดยแตละรอบเพมคาตวแปร i อก 1 แตถาหากคาตวแปร i มคาเทากบ 12 ใหท าค าสงในบรรทดท 9
บรรทดท 8 แสดงค าวา month = ตามดวยคาตวแปรอารเรย month ณ ต าแหนง i โดยตวแปรอารเรย month มชนดเปน int จงใชคกบ %d
บรรทดท 9 รอรบการกดอกขระผานทางแปนพมพ 1 ครง จากตวอยางท 7.5 แสดงผลการรนโปรแกรมไดดงน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 10
หนวยท 7
ภาพท 7.8 ผลการรนโปรแกรมเพอจดเกบตวเลขเดอนทง 12 เดอนลงในอารเรย 1 มต และ
แสดงตวเลขทง 12 เดอนออกทางจอภาพ
3 main(){ 4 clrscr(); 5 float score[5] = {50.25,65.00,78.50,84.00,56.00}; 6 int i; 7 for(i = 0; i<=4; i++) 8 printf(“score = %.2f”,score[i]); 9 getch(); 10 }
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 12
หนวยท 7
ภาพท 7.9 ผลการรนโปรแกรมเพอจดเกบคะแนนของนกเรยนชน ปวช. 2 จ านวน 5 คน ลงในอารเรย 1 มต และแสดงคะแนนของนกเรยนทง 5 คน ออกทางจอภาพ
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 12
หนวยท 7
7.3.2 การเขยนโปรแกรมโดยใชตวแปรอารเรย 2 มต ในปจจบนการเขยนโปรแกรมโดยใชตวแปรอารเรย 2 มต มการใชงาน
คอนขางมาก เหมอนกบการเขยนโปรแกรมโดยใชตวแปรอารเรย 1 มต ในทนขอยกตวอยางทส าคญๆ ของการเขยนโปรแกรมโดยใชตวแปรอารเรย 2 มต ดงน
ตวอยางท 7.7 การเขยนโปรแกรมเพอจดเกบจ านวนประชากรตามเพศของ 3 จงหวด ชายแดนใตของประเทศไทย
1 #include<stdio.h> 2 #include<conio.h> 3 main(){ 4 clrscr(); 5 int i, j, pop[2][3];
6 for (i = 0; i <= 1; i++) 7 { 8 for (j = 0; j <= 2; j++) 9 { 10 printf(”enter number of population [%d][%d] : ”,i,j); 11 scanf(”%d”,&pop[i][j]); 12 } 13 } 14 for(i = 0; i <= 1; i++) 15 { 16 for(j = 0; j <= 2; j++) 17 { 18 printf(”display number of population [%d][%d] =%d\n ”,i,j,pop[i][j]); 19 } 20 } 21 getch(); 22 }
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 13
หนวยท 7
จากตวอยางท 7.7 อธบายการท างานของโปรแกรมไดดงน บรรทดท 5 ประกาศตวแปร i,j มชนดเปน int และประกาศตวแปรอารเรยชอ pop
เปนตวแปรอารเรย 2 มต ขนาด 6 ชอง แตละชองจดเกบขอมลมชนดเปน i บรรทดท 6 วนรอบท าซ าค าสงในบรรทดท 8-11 ตราบใดทคาตวแปร I ซงเปนตว
ชต าแหนงของแถว มคาตงแต 0-1 โดยแตละรอบเพมคาตวแปร i อก 1 แตถาหากคาตวแปร i มคามากกวา 1 ใหท าค าสงในบรรทดท 14
บรรทดท 8 วนรอบท าซ าค าสงในบรรทดท 10-11 ตราบใดทคาตวแปร j ซงเปนตวชต าแหนงของคอลมน มคาตงแต 0-2 โดยแตละรอบเพมคาตวแปร j อก 1 แตถาหากคาตวแปร j มคามากกวา 2 ใหกลบไปท าค าสงในบรรทดท 6
บรรทดท 10 แสดงค าวา enter number of population ตามดวยคาตวแปร i,j ซงแทนคาของแถวและคอลมน นนคอ จะแสดงค าวา enter number of population [0][0]: โดย 0
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 14
หนวยท 7
ตวแรกแทนแถว ซงแทนเพศชาย สวน 0 ตวหลงแทนคอลมน ซงแทนจงหวด คาคอลมนและแถวจะเปลยนไปเรอยๆ ตามคาตวแปร i และ j
บรรทดท 11 รบคาตวแปร pop ณ ตวชต าแหนงแถวท i คอลมนท j โดยจะรบคาตวแปร pop ไปเรอยๆ จนครบตามคาตวแปร i และ j
บรรทดท 12 แสดงจดสนสดของค าสงทอยภายใตการวนซ าของตวชต าแหนงคอลมนหรอตวแปร j
บรรทดท 13 แสดงจดสนสดของค าสงทอยภายใตการวนซ าของตวชต าแหนงแถวหรอ ตวแปร i
บรรทดท 14 วนรอบท าซ าค าสงในบรรทดท 16-18 ตราบใดทคาตวแปร i ซงเปนตวชต าแหนงแถว มคาตงแต 0-1
บรรทดท 16 วนรอบท าซ าค าสงในบรรทดท 18 ตราบใดทคาตวแปร j ซงเปนตวชต าแหนงคอลมน มคาตงแต 0-2
บรรทดท 18 แสดงค าวา display number of population [คาตวแปร i] [คาตวแปร j] = ตามดวยคาตวแปรอารเรย pop ณ ต าแหนงแถวท i คอลมนท j โดยตวแปร i, j และ pop มชนดเปน int จงใชคกบ %d
บรรทดท 21 รอรบการกดอกขระผานทางแปนพมพ 1 ตว
จากตวอยางท 7.7 แสดงผลการรนโปรแกรมไดดงน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 15
หนวยท 7
7.4 ตวแปรชดอกขระหรอขอความ
ในทางความเปนจรงโปรแกรมภาษาซ ไมมขอมลแบบชดอกขระหรอขอความ แตขอมลแบบชดอกขระเกดจากการน าอกขระหลายๆ ตวมาเรยงตอกน ท าใหขอมลดงกลาวมลกษณะเหมอนกบอารเรยของอกขระหรอขอความ ในโปรแกรมภาษาซ ชดอกขระทจะเกบไวในอารเรยจะตองจบดวยอกขระพเศษ \0 เพอบงบอกถงจดสนสดของขอความ และชดอกขระทจะจดเกบในอารเรยจะตองนอยกวาขนาดของอารเรยอย 1 อกขระเสมอ
7.4.1 การประกาศตวแปรชดอกขระหรอขอความ
รปแบบการประกาศตวแปรชดอกขระ เปนดงน
ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด];
ภาพท 7.12 การประกาศตวแปรชดอกขระหรอขอความ
จากภาพท 7.12 อธบายไดดงน
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถน ามาก าหนดเปนตวแปรอารเรยได
ชอตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมตงขนตามกฎเกณฑการตงชอ
ขนาด หมายถง จ านวนชองหรอเซลลทใชในการจดเกบขอมล โดยจะใชตวเลขก าหนดขนาดอารเรยมคาเรมตนเปน 0 และสนสดทขนาดของอารเรยลบดวย 1 ซงตวเลขนเรยกวาอนเดกซ
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 16
หนวยท 7
7.4.1 การประกาศตวแปรชดอกขระหรอขอความ
รปแบบการประกาศตวแปรชดอกขระ เปนดงน
ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด];
ภาพท 7.12 การประกาศตวแปรชดอกขระหรอขอความ
จากภาพท 7.12 อธบายไดดงน
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถน ามาก าหนดเปนตวแปรอารเรยได
ชอตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมตงขนตามกฎเกณฑการตงชอ
ขนาด หมายถง จ านวนชองหรอเซลลทใชในการจดเกบขอมล โดยจะใชตวเลขก าหนดขนาดอารเรยมคาเรมตนเปน 0 และสนสดทขนาดของอารเรยลบดวย 1 ซงตวเลขนเรยกวาอนเดกซ
ตวอยางท 7.9 การประกาศตวแปรชดอกขระหรอขอความ
1. char name[30]; 2. char college[29];
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 17
หนวยท 7
จากตวอยางท 7.9 อธบายไดดงน บรรทดท 1 ประกาศตวแปรชดอกขระ มชอวา name มขนาด 30 ชอง แตละชอง
จดเกบขอมลมชนดเปน char บรรทดท 2 ประกาศตวแปรชดอกขระ มชอวา college มขนาด 29 ชอง แตละชอง
จดเกบขอมลมชนดเปน char 7.4.2 การก าหนดคาขอมลใหตวแปรชดอกขระ
ในการก าหนดคาขอมลใหกบตวแปรชดอกขระ จะมลกษณะเหมอนกบการก าหนด คาคงทใหกบตวแปรอารเรย
รปแบบการก าหนดคาขอมลใหกบตวแปรชดอกขระ เปนดงน
ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด] = คาขอมลชดอกขระ;
ภาพท 7.13 การก าหนดคาขอมลใหกบตวแปรชดอกขระ
จากภาพท 7.13 อธบายไดดงน
ชนดของขอมล หมายถง ชนดขอมลของโปรแกรมภาษาซทสามารถน ามาก าหนดเปนตวแปรอารเรยได
ชอตวแปรอารเรย หมายถง ชอทผเขยนโปรแกรมตงขนตามกฎเกณฑการตงชอ
ขนาด หมายถง จ านวนชองหรอเซลลทใชในการจดเกบขอมล โดยจะใชตวเลขก าหนดขนาดอารเรยมคาเรมตนเปน 0 และสนสดทขนาดของอารเรยลบดวย 1 ซงตวเลขนเรยกวาอนเดกซ
คาขอมลชดอกขระ หมายถง คาขอมลทเปนชดอกขระหรอขอความทก าหนดให ชอตวแปรชดอกขระ
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 18
หนวยท 7
7.4.3 ฟงกชนทใชในการจดการขอมลชดอกขระหรอขอความ ในโปรแกรมภาษาซมฟงกชนทใชอ านวยความสะดวกในการจดการขอมลชด
อกขระหรอขอความ ซงฟงกชนเหลานถกจดเกบไวในแฟมขอมลไลบราร string.h หากตองการใชฟงกชนในการจดการขอมลชดอกขระหรอขอความ จะตองเรยกแฟมขอมลไลบราร string.h เขามาใชงาน
ฟงกชนทใชในการจดการขอมลชดอกขระมดงน
ตารางท 7.1 รายชอฟงกชนมาตรฐานทใชในการจดการขอมลชดอกขระ
ชอฟงกชน รปแบบการใชงาน ความหมาย strlen() strlen() ใชค านวณหาความยาวของขอมลชดอกขระ strcpy() strcpy(dest,source) ใชในการคดลอกขอมลชดอกขระจาก source ไป
ไวใน dest strncpy() strncpy(dest,source,no) ใชในการคดลอกขอมลชดอกขระจาก source ไป
ไวใน dest โดยคดลอกจ านวน no ตว strcmp() strcmp(st1,st2) ใชในการเปรยบเทยบขอมลชดอกขระใน st1
และ st2 วาเทากนหรอไม หากเปนชดอกขระตวเดยวกน จะใหคาเทากบ 0
strcat() strcat(st1,st2) ใชในการเชอมตอชดอกขระ st2 เขากบชดอกขระ st1 โดยจะน าชดอกขระใน st2 ไปตอทายชดอกขระ st1 และจะน าชดอกขระทท าการเชอมตอเรยบรอยแลวไปเกบไวในชดอกขระ st1
strlwr() strlwr(st) ใชในการแปลงชดอกขระ st เปนตวพมพเลก strupr() strupr(st) ใชในการแปลงชดอกขระ st ใหเปนตวพมพใหญ strrev() strrev(st) ใชในการกลบชดอกขระ st เชน หากชดอกขระ
st มคาเปน computer จะกลบเปน retupmoc atoi() atoi(st) ใชในการแปลงชดชดอกขระทเปนตวเลขใหเปน
เลขจ านวนเตม
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 19
หนวยท 7
7.5 การเขยนโปรแกรมเพอจดการชดอกขระหรอขอความ
การเขยนโปรแกรมเพอจดการชดอกขระหรอขอความ ประกอบดวยการเขยน
โปรแกรมโดยใชตวแปรชดอกขระ และการเขยนโปรแกรมโดยใชฟงกชน ในการจดการขอมลชดอกขระส าหรบตวอยางการเขยนโปรแกรมของทง 2 หวขอมดงน
7.5.1 การเขยนโปรแกรมโดยใชตวแปรชดอกขระ เปนการเขยนโปรแกรมโดยรบคาขอมลชดอกขระผานทางแปนพมพ และน าไป
เกบในตวแปรชดอกขระ กอนทจะน าตวแปรดงกลาวไปใชงาน โดยขอยกตวอยางทส าคญๆ ดงน
ตวอยางท 7.11 การเขยนโปรแกรมเพอแสดงค าวา computer ออกทางจอภาพ
1 #include<stdio.h> 2 #include<conio.h> 3 main() 4 { 5 clrscr(); 6 char word[9] = {’C’, ’O’, ’M’, ’P’, ’U’, ’T’, ’E’, ’R’, ’\0’}; 7 printf(”string is %s”,word); 8 getch(); 9 }
จากตวอยางท 7.11 อธบายการท างานของโปรแกรมไดดงน
บรรทดท 6 ประกาศตวแปรชดอกขระชอ word มชนดเปนชดอกขระ ขนาด 9 ชอง โดยแตละชองจดเกบขอมลดงน
ชองท 0 เกบอกขระ C ชองท 1 เกบอกขระ O ชองท 2 เกบอกขระ M ชองท 3 เกบอกขระ P ชองท 4 เกบอกขระ U
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 20
หนวยท 7
ชองท 5 เกบอกขระ T ชองท 6 เกบอกขระ E ชองท 7 เกบอกขระ R ชองท 8 เกบอกขระ \0
โดย \0 ใชบอกจดสนสดของชดอกขระ บรรทดท 7 แสดงค าวา string is ตามดวยคาตวแปร word โดยตวแปร word ม
ชนดเปนชดอกขระ จงใชคกบ %s บรรทดท 8 รอรบการกดอกขระผานทางแปนพมพ 1 ตว
จากตวอยางท 7.11 แสดงผลการรนโปรแกรมไดดงน
ภาพท 7.14 ผลการรนโปรแกรมเพอแสดงค าวา computer ออกทางจอภาพ
ตวอยางท 7.12 การเขยนโปรแกรมเพอรบชอนกเรยนผานทางแปนพมพและแสดงชอนกเรยน ออกทางจอภาพ
1 #include<stdio.h> 2 #include<conio.h> 3 main() 4 { 5 clrscr();
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 22
หนวยท 7
6 char name[30]; 7 printf(”enter your name: ”); 8 gets(name); 9 printf(”your name is %s ”,name); 10 getch(); 11 }
จากตวอยางท 7.12 อธบายการท างานของโปรแกรมไดดงน บรรทดท 6 ประกาศตวแปร name มชนดเปนชดอกขระ ขนาด 30 ชอง บรรทดท 7 แสดงค าวา enter your name: ออกทางจอภาพ บรรทดท 8 รบคาชดอกขระหรอขอความ ดวยฟงกชน gets() เกบไวในตวแปร
name บรรทดท 9 แสดงค าวา your name is ตามดวยคาตวแปร name โดยตวแปร
name มชนดเปนชดอกขระ จงใชคกบ %s จากตวอยางท 7.12 แสดงผลการรนโปรแกรมไดดงน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 22
หนวยท 7
ตวอยางท 7.13 การเขยนโปรแกรมเพอหาความยาวของชดอกขระทรบผานทางแปนพมพ และแสดงความยาวของชดอกขระออกทางจอภาพ
1 #include<stdio.h> 2 #include<conio.h> 3. #include<string.h> 4 main(){ 5 clrscr(); 6 int len; 7 char st[50]; 8 printf(”enter string : ”); 9 gets(st); 10 len = strlen(st); 11 printf(”length of string = %d\n”,len); 12 getch(); 13 }
จากตวอยางท 7.13 อธบายการท างานของโปรแกรมไดดงน
บรรทดท 3 เรยกแฟมขอมลไลบราร string.h เขามา เพอใหสามารถใชงานฟงกชน strlen() ได
บรรทดท 6 ประกาศตวแปร len มชนดเปน int บรรทดท 7 ประกาศตวแปร st มชนดเปนชดอกขระ ขนาด 50 อกขระ บรรทดท 8 แสดงค าวา enter sting: ออกทางจอภาพ บรรทดท 9 รบคาชดอกขระดวยฟงกชน gets() เกบไวในตวแปร st บรรทดท 10 ค านวณหาความยาวของชดอกขระในตวแปร st โดยใชฟงกชน strlen()
น าความยาวทไดเกบไวในตวแปร len
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 23
หนวยท 7
บรรทดท 11 แสดงค าวา length of string = ตามดวยคาตวแปร len โดยตวแปร len มชนดเปน int จงใชคกบ %d
บรรทดท 12 รอรบการกดอกขระผานทางแปนพมพ 1 ตว จากตวอยางท 7.13 แสดงผลการรนโปรแกรมไดดงน
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 24
หนวยท 7
ค าชแจง ใหนกเรยนเลอกค าตอบทถกตองทสดเพยงขอเดยว โดยท าเครองหมายกากบาท (X) ลงในกระดาษค าตอบ
1. ขอใดคอรปแบบการประกาศตวแปรชดอกขระ ก. ชนดของขอมล ชอตวแปรอารเรย[ขนาด]; ข. ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด]; ค. ชนดของขอมล ชอตวแปรอารเรย [คาขอมล1] [คาขอมล2]; ง. ชนดของขอมล ชอตวแปรอารเรย [จ านวนแถว] [จ านวนคอลมน];
2. ขอใดบอกการเกดขอมลแบบชดอกขระไดถกตอง
ก. เกดจากการใชอางไปยงต าแหนงของแตละสมาชกในอารเรยซงมคาเปนล าดบ ข. เกดการจดเกบอารเรยเพอบอกจดสนสดของขอความ ค. เกดจากการน าอกขระหลายๆ ตวมาเรยงตอกน ง. เกดจากการวนลปทซอนกน 2 ลป
3. .การเขยนอารเรยแบบใด งายทสด
ก. แบบ 1 มต ข. แบบ 2 มต ค. แบบอกขระ ง. แบบหลายมต
4. ตวแปรอารเรยหมายถงขอใด
ก. การก าหนดคาคงทใหกบตวแปรอารเรย ข. ตวแปรทประกาศไวชอเดยวแตสามารถเกบขอมลไดหลาย ค. ตวแปรอารเรยขนมาเพอจดเกบขอมลตงแต 2 แถวขนไป ง. คาตวแปรอารเรยทประกาศขนมาเพอใชในการจดเกบขอมลเพยงแถวเดยว
แบบทดสอบ หนวยท 7
การเขยนโปรแกรมบนระบบปฏบตการเทกซโหมด (ภาษาซ) รหสวชา 2201-2411
อารเรย 25
หนวยท 7
5. ขอใดคอรปแบบการประกาศตวแปรอารเรย 1 มต ก. ชนดของขอมล ชอตวแปรอารเรย[ขนาด]; ข. ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด]; ค. ชนดของขอมล ชอตวแปรอารเรย [คาขอมล1] [คาขอมล2]; ง. ชนดของขอมล ชอตวแปรอารเรย [จ านวนแถว] [จ านวนคอลมน];
6. ขอใดคอรปแบบการประกาศตวแปรอารเรย 2 มต ก. ชนดของขอมล ชอตวแปรอารเรย[ขนาด]; ข. ชนดของขอมล ชอตวแปรชดอกขระ[ขนาด]; ค. ชนดของขอมล ชอตวแปรอารเรย [คาขอมล1] [คาขอมล2]; ง. ชนดของขอมล ชอตวแปรอารเรย [จ านวนแถว] [จ านวนคอลมน];
7. ขอใดเปนการประกาศตวแปรชดชนดจ านวนเตม 2 มต ทท าใหสมาชกรวม 12 ตว ก. int [6][6] ; ข. int i [2][6] ; ค. int i (6, 2) ง. int i (2)(6) ; 8. ถาประกาศตวแปรชดเปน char n[5] = “PEN”; แลว ตวแปรตวใดทเกบคา \0 ไว ก. n[5] ข. n[4] ค. n[3] ง. ไมมขอถก 9. ถาประกาศตวแปรชดเปน int x[3] = {1,2,3}; แลวตวแปร x[2] จะมคาเปนเทาใด ก. 0 ข. 1 ค. 2 ง. 3 10. ขอใดคอการก าหนดคาขอมลใหตวแปรชดอกขระ
ก. การก าหนด คาคงทใหกบตวแปรอารเรย ข. การก าหนดคาขอมลใหกบตวแปรอารเรย ค. การก าหนดคาคงทใหกบตวแปรอารเรย 2 มต ง. การก าหนดคาขอมลใหกบตวแปรอารเรย 2 มต
กะนรตน บวพงษชน. (2546). ชดการเรยนดวยคอมพวเตอรผานเครอขาย วชาการเขยนโปรแกรม
ภาษาซเรองสามญทศนของโปรแกรมภาษาซ ส าหรบนกศกษาระดบประกาศนยบตร วชาชพชนสงสาขาคอมพวเตอรธรกจ โรงเรยนศรวกรมบรหารธรกจ. วทยานพนธศกษาศาสตรมหาบณฑต, มหาวทยาลยนเรศวร.
พเชษฐ อทธสงห. (2554). โครงการสอนการเขยนโปรแกรมเทกซโหมด. สาชางานคอมพวเตอร ธรกจ, วทยาลยการอาชพตระการพชผล. วจกษณ ศรสจจะ. (2545). การเขยนโปรแกรมภาษาซ. ภาควชาวทยาการคอมพวเตอร, มหาวทยาลยเชยงใหม. ส านกมาตรฐานการอาชวศกษา. (2546). หลกสตรประกาศนยบตรวชาชพ พทธศกราช 2545
(ปรบปรง พ.ศ. 2546). ส านกงานคณะกรรมการการอาชวศกษา. อครพงษ ตงสะ. (2553). โครงการสอนการเขยนโปรแกรมเทกซโหมด. สาชางานคอมพวเตอร ธรกจ, วทยาลยสารพดชางศรษะเกษ.
บรรณานกรม