ชดุ ท3ี่ คำส่ังรับคำ่ และแสดงผล บัตรเนื้อหาท่ี 1 ฟงั ก์ชนั รับขอ้ มลู สำหรับบทนี้จะอธิบำยถึงฟังก์ชันพื้นฐำนสำหรับกำรเขียนโปรแกรมภำษำ C เนื่องจำกภำษำ C มี ฟังก์ชันให้ใช้งำนมำกมำยแต่ในบทน้ีจะกล่ำวถึงฟังก์ชันพื้นฐำนที่ใชง้ ำนอยู่เป็นประจำในกำรเขียนโปรแกรมนั้น คอื ฟงั กช์ นั รบั ข้อมลู และฟงั ก์ชันแสดงผลข้อมลู โดยแตล่ ะฟงั ก์ชันมรี ำยละเอยี ดดังตอ่ ไปน้ี ฟงั ก์ชัน scanf( ) เปน็ ฟังก์ชนั ทใ่ี ช้ในกำรรบั ขอ้ มูล จำกคีย์บอร์ดเข้ำไปเก็บไวใ้ นตวั แปรทก่ี ำหนดไว ้โ้ ดยสำมำรถรบั ขอ้ มูลที่เปน็ ตวั เลขจำนวนเตม็ ตัวเลขทศนยิ ม ตวั อักขระตวั เดยี ว หรือข้อควำมก็ได้ รปู แบบกำรใชง้ ำนฟงั ก์ชัน scanf(control string, argument list); โดยที่ control string คอื รหสั รปู แบบขอ้ มูล (format code) โดยจะต้องเขยี นอยภู่ ำยใต้ เคร่อื งหมำย “……..” (double quotation) argument list คือ ชือ่ ตัวแปรทใ่ี ชเ้ กบ็ ข้อมูลโดยจะต้องใชเ้ ครื่องหมำย & (ampersand) นำหนำ้ ช่อื ตวั แปร ยกเวน้ ตวั แปรชนิด string ไม่ตอ้ งมเี ครื่องหมำย & นำหนำ้ ช่ือ ถำ้ มตี ัวแปรมำกกวำ่ 1 ตัวแปร ใหใ้ ช้เคร่อื งหมำย , (comma) คัน่ ระหว่ำงตวั แปรแต่ละตวั ชดุ กิจกรรมกำรเรยี นรกู้ ำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ 1 รำยวชิ ำภำษำซี ง30243 ชนั้ มธั ยมศึกษำปที ่ี 5
ชุดท3่ี คำสัง่ รับคำ่ และแสดงผล ตำรำงที่ 3.1 แสดงรหสั แบบขอ้ มูล ทส่ี ำมำรถใชใ้ นฟังก์ชัน scanf( ) รหสั รูปแบบ ควำมหมำย (format code) %c ใช้กับขอ้ มลู ชนดิ ตวั อักขระตัวเดียว (single character : char) %d ใชก้ ับข้อมลู ชนดิ ตัวเลขจำนวนเตม็ (integer : int) โดยสำมำรถใช้กับ ตวั เลขฐำน 10 เทำ่ นน้ั %e ใชก้ ับขอ้ มลู ชนดิ ตัวเลขจุดทศนยิ ม (floating point : float) %f, %lf ใชก้ บั ข้อมูลชนดิ float และ double ตำมลำดับ %g ใช้กับขอ้ มูลชนิด float %h ใชก้ บั ขอ้ มูลชนดิ short integer %l ใช้กับข้อมูลชนดิ int โดยใชก้ ับตัวเลขฐำน 8, ฐำน 10 และฐำน 16 %o ใชก้ ับขอ้ มูลชนดิ int โดยสำมำรถใช้กบั ตวั เลขฐำน 8 เทำ่ นน้ั %u ใช้กับข้อมูลชนดิ unsigned int โดยใช้กบั ตวั เลขฐำน 10 เท่ำน้นั %x ใชก้ บั ข้อมูลชนดิ int โดยสำมำรถใช้กับตัวเลขฐำน 16 เท่ำนั้น %s ใชก้ บั ขอ้ มูลชนดิ string เพื่อให้เกิดควำมเขำ้ ใจกำรใช้งำนฟังก์ชัน scanf( ) ไดด้ ียิ่งขน้ึ ควรศกึ ษำโปรแกรมตวั อย่ำงที่ 3.1, 3.2 และ 3.3 ดงั ต่อไปน้ี โปรแกรมตัวอยำ่ งท่ี 3.1 แสดงโปรแกรมกำรใช้ฟงั ก์ชนั scanf( ) ในกำรรบั ขอ้ มูลจำกคีย์บอร์ดเขำ้ ไป เก็บไวใ้ นตัวแปรชนดิ จำนวนเตม็ /* scanf1.c */ #include<stdio.h> void main(void) /* บรรทดั ที่ 1 */ { /* บรรทดั ท่ี 2 */ /* บรรทัดที่ 3 */ int a; /* บรรทัดที่ 4 */ scanf(\"%d\", &a); /* บรรทดั ที่ 5 */ } /* บรรทดั ที่ 6 */ ชดุ กจิ กรรมกำรเรยี นรู้กำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 2 รำยวชิ ำภำษำซี ง30243 ชน้ั มัธยมศกึ ษำปที ี่ 5
ชุดท3ี่ คำสงั่ รบั คำ่ และแสดงผล ผลลัพธท์ ่ีไดจ้ ำกโปรแกรม หนำ้ จอวำ่ ง ๆ มีเคอรเ์ ซอร์กระพรบิ เพอื่ รอ รับขอ้ มลู จำกคีย์บอร์ด (ข้อมลู ที่ตอ้ งกำรนน้ั เปน็ จำนวนเตม็ เพื่อนำไปเก็บไวท้ ตี่ วั แปร a) ซึง่ ผ้ใู ช้ ควรเติมขอ้ มลู ตัวเลขจำนวนเตม็ เพอ่ื ให้สมั พันธ์กับชนิดของตัวแปร คำอธิบำยโปรแกรม จำกโปรแกรมตวั อยำ่ งที่ 3.1 สำมำรถอธิบำยกำรทำงำนของโปรแกรมท่ีสำคญั ๆ ไดด้ งั นี้ บรรทดั ที่ 1 เปน็ คำส่งั เรียกแฟ้มที่ชื่อว่ำ stdio.h ซ่งึ ภำยในจะบรรจุคำสง่ั หรือฟงั ก์ชนั ที่จำเป็นตอ้ ง ใช้ในภำษำ C เช่น printf( ) บรรทัดที่ 2 เป็นฟงั ก์ชันหลักของโปรแกรม และบอกให้ C compiler รวู้ ่ำฟงั ก์ชนั main( ) ไมม่ ีกำรส่งคำ่ ข้อมูลและไมม่ ีกำรรบั ค่ำขอ้ มูลกลับ บรรทัดท่ี 3 เป็นกำรแสดงจุดเรม่ิ ต้นของฟังกช์ ัน main( ) บรรทดั ท่ี 4 เป็นกำรประกำศตวั แปรช่อื a เป็นชนิดจำนวนเตม็ หรอื int บรรทดั ที่ 5 ฟงั กช์ นั scanf( ) เพ่อื รอรับขอ้ มลู จำกคียบ์ อร์ดเขำ้ ไปเกบ็ ไว้ในตัวแปร a ซึ่งเป็นชนิด จำนวนเตม็ บรรทดั ที่ 6 เปน็ กำรแสดงจดุ ส้นิ สุดของฟงั ก์ชนั main( ) ชดุ กจิ กรรมกำรเรียนรู้กำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 3 รำยวชิ ำภำษำซี ง30243 ช้ันมัธยมศึกษำปีท่ี 5
ชุดท3่ี คำสั่งรบั คำ่ และแสดงผล โปรแกรมตัวอย่ำงที่ 3.2 แสดงโปรแกรมกำรใช้ฟงั กช์ ัน scanf( ) ในกำรรบั ขอ้ มูลจำกคยี บ์ อรด์ เขำ้ ไปเกบ็ ไวใ้ นตวั แปรชนิดจำนวนเตม็ และนำค่ำของตัวแปรออกแสดงผลที่จอภำพ /* scanf2.c */ #include<stdio.h> /* บรรทัดท่ี 1 */ void main(void) /* บรรทดั ท่ี 2 */ { /* บรรทดั ที่ 3 */ int a; /* บรรทัดที่ 4 */ scanf(\"%d\", &a); /* บรรทดั ท่ี 5 */ printf(\"Your enter is ...%d\", a); /* บรรทดั ท่ี 6 */ } /* บรรทดั ที่ 7 */ ผลลพั ธท์ ไ่ี ด้จำกโปรแกรม 4 50 Your enter is …50 คำอธิบำยโปรแกรม ในโปรแกรมตัวอยำ่ งท่ี 3.2 โปรแกรมจะรบั ขอ้ มลู จำกคยี ์บอรด์ ท่เี ปน็ ชนดิ จำนวนเตม็ เกบ็ ไวใ้ นตัวแปร และนำคำ่ ของตวั แปรแสดงผลออกจอภำพดว้ ยคำสงั่ บรรทดั ท่ี 6 คอื printf(“Your enter is…%d”, a); จุดประสงค์ของกำรวเิ ครำะห์งำน ในกำรวิเครำะหง์ ำนแต่ละอยำ่ งมีจุดประสงค์ของกำรวเิ ครำะห์งำนท่สี ำคญั ดังน้ี 1. เพื่อหำวตั ถปุ ระสงค์ของกำรเขียนโปรแกรม 2. เพื่อหำรปู แบบผลลัพธ์ท่ตี อ้ งกำร ชดุ กิจกรรมกำรเรยี นรู้กำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ รำยวชิ ำภำษำซี ง30243 ชน้ั มัธยมศึกษำปที ี่ 5
ชุดท3ี่ คำสัง่ รบั ค่ำและแสดงผล โปรแกรมตัวอยำ่ งท่ี 3.2 แสดงโปรแกรมกำรใช้ฟงั กช์ ัน scanf( ) ในกำรรบั ขอ้ มลู จำกคียบ์ อรด์ เข้ำ ไปเกบ็ ไว้ในตัวแปรชนดิ จำนวนเตม็ และนำค่ำของตัวแปรออกแสดงผลที่จอภำพ /* scanf2.c */ #include<stdio.h> /* บรรทัดที่ 1 */ void main(void) /* บรรทัดที่ 2 */ { /* บรรทดั ท่ี 3 */ int a; /* บรรทัดที่ 4 */ scanf(\"%d\", &a); /* บรรทัดท่ี 5 */ printf(\"Your enter is ...%d\", a); /* บรรทดั ที่ 6 */ } /* บรรทดั ที่ 7 */ ผลลพั ธท์ ไี่ ด้จำกโปรแกรม 50 Your enter is …50 คำอธิบำยโปรแกรม ในโปรแกรมตัวอยำ่ งท่ี 3.2 โปรแกรมจะรบั ขอ้ มูลจำกคยี ์บอร์ดท่ีเปน็ ชนดิ จำนวนเตม็ เก็บไว้ในตวั แปร และนำค่ำของตัวแปรแสดงผลออกจอภำพดว้ ยคำสง่ั บรรทัดที่ 6 คอื printf(“Your enter is…%d”, a); ชดุ กจิ กรรมกำรเรียนรกู้ ำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ 5 รำยวชิ ำภำษำซี ง30243 ช้ันมัธยมศึกษำปที ่ี 5
ชดุ ท3ี่ คำส่งั รับคำ่ และแสดงผล โปรแกรมตวั อย่ำงที่ 3.3 แสดงโปรแกรมกำรใช้ฟังกช์ ัน scanf( ) ในกำรรบั ขอ้ มลู จำกคยี บ์ อรด์ เข้ำไป เกบ็ ไวใ้ นตวั แปรชนิดตัวอกั ษร เลขจำนวนเตม็ และเลขทศนยิ ม และนำค่ำของตวั แปรออกแสดงผลท่ี จอภำพ /* scanf3.c */ #include<stdio.h> /* บรรทดั ท่ี 1 */ #include<conio.h> /* บรรทัดท่ี 2 */ void main(void) /* บรรทัดท่ี 3 */ { char name[50]; /* บรรทดั ท่ี 4 */ int age; /* บรรทัดท่ี 5 */ float weight, height; /* บรรทัดท่ี 6 */ clrscr( ); /* บรรทัดท่ี 7 */ printf(\"Enter your Name and Age: \"); /* บรรทัดที่ 8 */ scanf(\"%s %d\", name, &age); /* บรรทัดที่ 9 */ printf(\"Enter your Weight and Height : \"); /* บรรทดั ที่ 10 */ scanf(\"%f %f\", &weight, &height); /* บรรทดั ท่ี 10 */ printf(\"\\nYour name is ...%s.\\n\",name); /* บรรทัดที่ 11 */ printf(\"You are %d years old.\\n\",age); /* บรรทดั ที่ 13 */ printf(\"Your weight is ...%f kg.\\n\",weight); /* บรรทดั ที่ 14 */ printf(\"Your height is ...%f cm.\\n\",height); /* บรรทดั ที่ 15 */ } ผลลัพธท์ ีไ่ ด้จำกโปรแกรม 6 Enter your Name and Age: KANNIKAR 25 Enter your Weight and Height : 160.5 55.5 Your name is ... KANNIKAR You are 25 years old. Your weight is ... 55.500000 kg. Your height is ... 160.500000 cm. ชดุ กิจกรรมกำรเรียนรกู้ ำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ รำยวชิ ำภำษำซี ง30243 ชั้นมธั ยมศึกษำปที ่ี 5
ชดุ ท3ี่ คำส่ังรับคำ่ และแสดงผล คำอธบิ ำยโปรแกรม จำกโปรแกรมตัวอย่ำงท่ี 3.3 สำมำรถอธิบำยกำรทำงำนของโปรแกรมท่สี ำคัญ ๆ ได้ดังต่อไปน้ี บรรทดั ที่ 4 เปน็ กำรชดุ ชนดิ char ซ่ึงจองไว้ 50 ตวั อักษร (เรือ่ งตัวแปรชดุ ไดอ้ ธบิ ำย รำยละเอียดไวใ้ นบทที่ 5) บรรทดั ท่ี 7 ฟังกช์ นั clrscr( ) ใช้ลบขอ้ ควำมใด ๆ ออกจำกจอภำพ ซึง่ จะเรยี กใชง้ ำนควบคูก่ บั แฟ้มท่ีชือ่ conio.h ดังนนั้ กอ่ นฟงั ก์ชัน main( ) จงึ ต้องเรียกใช้ #include <conio.h> กอ่ น (บรรทดั ที่ 2) บรรทัดที่ 8 จะแสดงข้อควำมและรอรับค่ำ Name และ Age จำกผ้ใู ช้ ดังน้ันเวลำเติมขอ้ มลู ให้ เว้นชอ่ งวำ่ งอยำ่ งนอ้ ย 1 ชอ่ ง เพอ่ื แยกข้อมูล Name กับ Age บรรทดั ท่ี 9 จะรับข้อมลู จำกคยี ์บอรด์ 2 คำ่ มำเกบ็ ไวใ้ นตัวแปร name เป็นข้อควำม และเก็บ ในตัวแปร age เปน็ ตวั เลขจำนวนเตม็ บรรทัดท่ี 10 จะทำงำนคลำ้ ยกบั บรรทัดที่ 8 แตจ่ ะรบั ขอ้ มลู ที่เป็นตวั เลขทศนิยม บรรทัดที่ 11 – 15 จะนำข้อมลู ทีเ่ ก็บไวใ้ นตัวแปรต่ำง ๆ ออกมำแสดงผลท่ีจอภำพตำมรหัสรูปแบบขอ้ มลู ตำ่ ง ๆ ฟังก์ชัน getchar( ) เป็นฟังก์ชันที่ใช้รับข้อมูลจำกคีย์บอร์ดเพียง 1 ตัวอักขระ โดยกำรรับข้อมูลของฟังก์ชันนี้จะต้องกด แปน้ enter ทุกครั้งท่ีป้อนขอ้ มลู เสร็จ จึงทำให้เหน็ ข้อมูลที่ป้อนปรำกฏบนจอภำพดว้ ย ถำ้ ต้องกำรนำข้อมูลที่ ป้อนผ่ำนทำงคีย์บอร์ดไปใช้งำนจะต้องกำหนดตัวแปรชนิด single character (char) ขึ้นมำ 1 ตัวเพื่อเก็บค่ำ ขอ้ มลู ท่ีรับผ่ำนทำงคีย์บอร์ด ในทำงตรงกันข้ำมถ้ำไม่ต้องกำรใช้ข้อมูลที่ป้อนผ่ำนทำงคีย์บอร์ดก็ไม่ต้องกำหนด ตวั แปรชนดิ char ขึ้นมำ รปู แบบกำรใช้งำนฟงั กช์ นั getchar( ); หรือ char_var = getchar( ); ชุดกิจกรรมกำรเรยี นรู้กำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ 7 รำยวชิ ำภำษำซี ง30243 ชนั้ มธั ยมศึกษำปที ่ี 5
ชุดท3ี่ คำสง่ั รบั คำ่ และแสดงผล โดยที่ getchar( ) คอื ฟงั กช์ นั ท่ีใชร้ ับขอ้ มลู เพียง 1 ตัวอักขระจำกคยี บ์ อรด์ โดยฟังกช์ นั น้จี ะไม่ มี argument ซ่ึงอำจจะใช้ getchar(void) แทนคำวำ่ getchar( ) ก็ได้ แตน่ ยิ มใช้ getchar( ) มำกกวำ่ char_var คอื ตัวแปรชนดิ char ซ่งึ จะเก็บขอ้ มลู 1 ตวั อักขระท่ปี อ้ นผำ่ นทำงคีย์บอรด์ เพอื่ ใหเ้ กิดควำมเขำ้ ใจกำรใชง้ ำนฟังกช์ นั getchar( ) ไดด้ ยี ่งิ ขึ้นควรศึกษำโปรแกรมตัวอย่ำง ที่ 3.4 ดงั ต่อไปน้ี โปรแกรมตวั อยำ่ งที่ 3.4 แสดงโปรแกรมกำรใช้ฟงั ก์ชัน getchar( ) /* getchar1.c */ #include<stdio.h> /* บรรทัดที่ 1 */ #include<conio.h> /* บรรทดั ที่ 2 */ void main(void) /* บรรทดั ท่ี 3 */ { /* บรรทัดท่ี 4 */ char cha; /* บรรทัดที่ 5 */ clrscr( ); /* บรรทัดที่ 6 */ printf(\"Enter a single character : \"); /* บรรทดั ที่ 7 */ cha = getchar( ); /* บรรทัดท่ี 8 */ printf(\"You type a character is ...%c \\n\",cha); /* บรรทัดที่ 9 */ } /* บรรทัดที่ 10 */ ผลลพั ธท์ ไี่ ดจ้ ำกโปรแกรม Enter a single character : k You type a character is ...k ชดุ กิจกรรมกำรเรียนรู้กำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 8 รำยวชิ ำภำษำซี ง30243 ชั้นมธั ยมศกึ ษำปที ่ี 5
ชุดท3ี่ คำสัง่ รับค่ำและแสดงผล คำอธิบำยโปรแกรม จำกโปรแกรมตัวอย่ำงท่ี 3.4 สำมำรถอธบิ ำยกำรทำงำนของโปรแกรมที่สำคัญ ๆ ไดด้ ังต่อไปน้ี บรรทัดที่ 1 เรียกใชแ้ ฟม้ ท่ชี อ่ื stdio.h ซึ่งในโปรแกรมน้จี ะใชค้ ู่กบั ฟงั ก์ชัน printf( ) ในบรรทดั ท่ี 7 และ 9 บรรทดั ท่ี 2 เรยี กใช้แฟม้ ที่ช่ือ conio.h ซง่ึ ใชค้ ูก่ ับฟงั ก์ชัน clrscr( ) เพอื่ ลบข้อมูลทจี่ อภำพใน บรรทดั ที่ 6 บรรทัดที่ 5 ประกำศตวั แปรชื่อ cha เป็นชนิดตวั อกั ขระ หรือ char บรรทดั ที่ 8 รับขอ้ มูล 1 ตวั อักขระจำกคีย์บอร์ด แล้วนำค่ำทีร่ บั มำเก็บไว้ในตวั แปร cha บรรทดั ที่ 9 นำขอ้ มลู ท่ีเกบ็ ในตวั แปร cha มำแสดงตรงตำแหน่ง %c และขึ้นบรรทดั ใหม่ (\\n คือ new line) ฟังกช์ ัน getch( ) เปน็ ฟงั ก์ชันที่ใช้รบั ขอ้ มลู เพียง 1 ตวั อกั ขระเหมอื นกบั ฟังกช์ ัน getchar( ) แตกต่ำงกันตรงที่ เมื่อใชฟ้ ังกช์ ันนรี้ ับขอ้ มลู ขอ้ มลู ทีป่ อ้ นเข้ำไปจะไม่ปรำกฏให้เห็นบนจอภำพและไม่ตอ้ งกดแป้น enter ตำม รูปแบบกำรใชง้ ำนฟังกช์ นั getch( ); หรือ char_var = getch( ); โดยที่ getch( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจำกคีย์บอร์ด โดยฟังก์ชันนี้จะไม่ มี argument ดงั น้ันอำจจะใช้ getch(void) แทนคำวำ่ getch( ) กไ็ ดแ้ ต่นิยมใช้ getch( ) มำกกว่ำ char_var คือ ตัวแปรชนดิ char ซ่ึงจะเก็บขอ้ มลู 1 ตัวอักขระทีป่ อ้ นผ่ำนทำงคีย์บอร์ด เพือ่ ให้เกิดควำมเขำ้ ใจกำรใชง้ ำนฟังกช์ ัน getch( ) ไดด้ ยี ง่ิ ขึ้นควรศกึ ษำโปรแกรมตัวอย่ำงท่ี 3.5 ดงั ตอ่ ไปน้ี ชุดกิจกรรมกำรเรยี นรู้กำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 9 รำยวชิ ำภำษำซี ง30243 ชน้ั มัธยมศกึ ษำปที ่ี 5
ชุดท3่ี คำสงั่ รบั ค่ำและแสดงผล โปรแกรมตวั อยำ่ งท่ี 3.5 แสดงโปรแกรมกำรใช้ฟังก์ชนั getch( ) /* getch1.c */ #include<stdio.h> /* บรรทัดที่ 1 */ #include<conio.h> /* บรรทัดท่ี 2 */ void main(void) /* บรรทัดที่ 3 */ { /* บรรทดั ท่ี 4 */ char ch; /* บรรทดั ที่ 5 */ clrscr( ); /* บรรทัดท่ี 6 */ printf(\"Enter a single character : \"); /* บรรทัดท่ี 7 */ ch = getch( ); /* บรรทดั ที่ 8 */ printf(\"\\nYou type a character is ...%c \\n\",ch); /* บรรทัดท่ี 9 */ getch( ); /* บรรทดั ที่ 10 */ } ผลลัพธ์ทีไ่ ด้จำกโปรแกรม Enter a single character : You type a character is ...p คำอธบิ ำยโปรแกรม 10 กำรทำงำนของโปรแกรมตัวอย่ำงท่ี 3.5 จะคล้ำยกับโปรแกรมตวั อย่ำงท่ี 3.4 ต่ำงกันตรงคำสั่งบรรทัดท่ี 8 จะ เป็นกำรใช้ฟังก์ชัน getch( ) คือ ch = getch( ); ให้นำค่ำที่รับมำเก็บไว้ในตัวแปร ch ซึ่งเวลำเรำรับข้อมูล จำกคยี บ์ อร์ดจะไม่ปรำกฎข้อมูลท่ีเรำปอ้ นเขำ้ ไปให้เหน็ บนจอภำพ และไม่ตอ้ งกด enter ตำม โปรแกรมกจ็ ะไป ทำงำนคำสั่งบรรทัดที่ 9 คือ นำข้อมูลที่เก็บในตัวแปร ch มำแสดงตรงตำแหน่ง %c และขึ้นบรรทัด ใหม่ ส่วนคำสั่งบรรทัดที่ 10 ฟังก์ชัน getche( ); โปรแกรมก็จะหยุดรอรับค่ำใด ๆ จำกคีย์บอร์ด เช่น เรำ กด enter ก็จะกลับเข้ำสู่โปรแกรมบรรทดั ท่ี 8 รบั ขอ้ มูล 1 ตัวอกั ขระจำกคีย์บอรด์ แล้วนำคำ่ ทรี่ บั มำเก็บไวใ้ น ตัวแปร cha บรรทัดที่ 9 นำข้อมูลที่เก็บในตัวแปร cha มำแสดงตรงตำแหน่ง %c และขึ้นบรรทัด ใหม่ (\\n คือ new line) ชดุ กิจกรรมกำรเรยี นร้กู ำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ รำยวชิ ำภำษำซี ง30243 ชน้ั มัธยมศึกษำปีท่ี 5
ชดุ ท3่ี คำสั่งรับค่ำและแสดงผล ฟงั กช์ ัน getche( ) เป็นฟงั กช์ นั ทใี่ ช้รับข้อมลู จำกคยี บ์ อร์ดเพยี ง 1 ตวั อกั ขระ เหมือนฟงั กช์ นั getch( ) แตกตำ่ ง กนั ตรงทีข่ ้อมลู ท่ปี อ้ นเขำ้ ไป จะปรำกฏให้เหน็ บนจอภำพดว้ ย นอกนนั้ มีกำรทำงำน และลักษณะกำรใช้งำน เหมอื นฟังกช์ นั getch( ) ทกุ ประกำร รปู แบบกำรใช้งำนฟังกช์ นั getche( ); หรือ char_var = getche( ); โดยท่ี getche( ) คือ ฟังก์ชนั ที่ใช้รบั ข้อมูลเพียง 1 ตัวอกั ขระจำกคยี บ์ อร์ด โดยฟงั ก์ชันนจ้ี ะไม่ มี argument ดงั นั้นอำจจะใช้ getche(void) แทนคำวำ่ getche( ) กไ็ ดแ้ ตน่ ิยมใช้ getche( ) มำกกว่ำ char_var คอื ตัวแปรชนดิ char ซึ่งจะเก็บข้อมลู 1 ตัวอักขระทป่ี อ้ นผ่ำนทำงคีย์บอรด์ เพ่ือใหเ้ กดิ ควำมเขำ้ ใจกำรใช้งำนฟังก์ชัน getche( ) ไดด้ ยี ง่ิ ข้ึนควรศึกษำโปรแกรมตวั อยำ่ ง ท่ี 3.6 ดังตอ่ ไปน้ี ชดุ กจิ กรรมกำรเรียนรู้กำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 11 รำยวชิ ำภำษำซี ง30243 ชน้ั มัธยมศกึ ษำปีท่ี 5
ชุดท3่ี คำส่งั รับคำ่ และแสดงผล โปรแกรมตวั อย่ำงที่ 3.6 แสดงโปรแกรมกำรใช้ฟงั ก์ชัน getche( ) /* getche1.c */ #include<stdio.h> /* บรรทัดท่ี 1 */ #include<conio.h> /* บรรทัดที่ 2 */ void main(void) /* บรรทดั ท่ี 3 */ { /* บรรทัดท่ี 4 */ char e; /* บรรทดั ท่ี 5 */ clrscr( ); /* บรรทัดที่ 6 */ printf(\"Enter a single character : \"); /* บรรทดั ท่ี 7 */ e = getche( ); /* บรรทัดท่ี 8 */ printf(\"\\nYou type a character is ...%c \\n\",e); /* บรรทัดท่ี 9 */ getch( ); /* บรรทัดท่ี 10 */ } /* บรรทดั ท่ี 11 */ ผลลพั ธท์ ไี่ ด้จำกโปรแกรม Enter a single character : r You type a character is ...r คำอธิบำยโปรแกรม กำรทำงำนของโปรแกรมตัวอย่ำงที่ 3.6 จะคล้ำยกับโปรแกรมตัวอย่ำงที่ 3.5 ต่ำงกันตรงคำส่ังบรรทัด ท่ี 8 จะเปน็ กำรใช้งำนฟังก์ชัน getche( ) คอื e = getche( ); คำสง่ั น้ีให้นำค่ำท่ีรับมำเกบ็ ไว้ในตัวแปร e ซึ่ง ข้อมูลที่เติมเข้ำไปจะปรำกฎให้เห็นบนจอภำพด้วย แต่ไม่ต้องกด enter ตำม โปรแกรมก็จะไปทำงำนคำสั่ง บรรทดั ท่ี 9 คือ นำขอ้ มลู ทเ่ี กบ็ ในตัวแปร e มำแสดงตรงตำแหน่ง %c และขนึ้ บรรทดั ใหม่ สว่ นคำสง่ั บรรทัด ที่ 10 getch( ); โปรแกรมกจ็ ะหยุดรอรบั คำ่ ใด ๆ จำกคยี บ์ อร์ด เชน่ เรำกด enter ก็จะกลับเขำ้ สู่โปรแกรม ชุดกิจกรรมกำรเรยี นร้กู ำรเขยี นโปรแกรมภำษำคอมพวิ เตอร์ 12 รำยวชิ ำภำษำซี ง30243 ชนั้ มธั ยมศกึ ษำปีที่ 5
ชดุ ท3ี่ คำส่งั รบั คำ่ และแสดงผล ฟังก์ชนั gets( ) เปน็ ฟงั ก์ชันทใ่ี ชร้ บั ขอ้ มูลชนดิ ข้อควำม (string) จำกคีย์บอรด์ จำกนนั้ นำข้อมูลท่รี บั เขำ้ ไปเกบ็ ไวใ้ น ตัวแปรสตรงิ (string variables) ทกี่ ำหนดไว้ รูปแบบกำรใช้งำนฟงั กช์ นั gets(string_var); โดยที่ string_var คือ ตัวแปรสตรงิ ซง่ึ จะใชเ้ ก็บขอ้ มลู ชนดิ ข้อควำม (string constant) gets( ) คือ ฟังก์ชันท่ใี ชร้ ับข้อควำมจำกคยี ์บอรด์ แล้วไปเกบ็ ไว้ในตัวแปรสตรงิ เพอ่ื ใหเ้ กดิ ควำมเขำ้ ใจกำรใชง้ ำนฟังก์ชัน gets( ) ได้ดยี ิง่ ข้นึ ควรศกึ ษำโปรแกรมตัวอยำ่ ง ท่ี 3.7 ดงั ต่อไปนี้ โปรแกรมตวั อยำ่ งท่ี 3.7 แสดงโปรแกรมกำรใช้ฟังกช์ นั gets( ) /* gets1.c / #include<stdio.h> /* บรรทัดท่ี 1 */ #include<conio.h> /* บรรทัดท่ี 2 */ void main(void) /* บรรทดั ท่ี 3 */ { /* บรรทดั ที่ 4 */ char pro[50]; /* บรรทัดท่ี 5 */ clrscr( ); /* บรรทัดที่ 6 */ printf(\"Enter your province : \"); /* บรรทัดที่ 7 */ gets(pro); /* บรรทดั ท่ี 8 */ printf(\"Your province is ...%s\\n\", pro); /* บรรทัดท่ี 9 */ getch( ); /* บรรทัดที่ 10 */ } /* บรรทัดท่ี 11 */ ชดุ กิจกรรมกำรเรียนรกู้ ำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ 13 รำยวชิ ำภำษำซี ง30243 ช้ันมัธยมศึกษำปที ่ี 5
ชุดท3ี่ คำสั่งรบั คำ่ และแสดงผล ผลลพั ธท์ ี่ไดจ้ ำกโปรแกรม Enter your province : Ratchaburi Your province is ... Ratchaburi คำอธบิ ำยโปรแกรม โปรแกรมตัวอย่ำงที่ 3.7 เป็นโปรแกรมที่รอรับกำรเติมชื่อจังหวัด แล้วนำไปเก็บไว้ในตัวแปร pro ด้วยคำสั่งบรรทัดที่ 8 คือ gets(pro); แล้วนำค่ำที่เก็บไว้ในตัวแปร pro ออกมำแสดงตรงตำแหน่ง %s และขึ้นบรรทัดใหม่ ส่วนคำสั่งบรรทัดที่ 10 getch( ); โปรแกรมก็จะหยุดรอรับค่ำใด ๆ จำกคีย์บอร์ด เช่น เรำกด enter กจ็ ะกลบั เข้ำสู่โปรแกรม สรุปขอ้ แนะนำกำรใชฟ้ ังกช์ นั รับขอ้ มลู (input functions) - เมอ่ื ต้องกำรรับค่ำขอ้ มูล string ควรใช้ฟังกช์ นั gets( ) หรอื scanf( ) - เมื่อตอ้ งกำรรบั ตัวเลขหรอื ตวั อักษรเพยี ง 1 ตัว ท่ไี ม่ตอ้ งกำรเห็นบนจอภำพ และไมต่ ้อง กดแป้น enter ควรใชฟ้ ังก์ชนั getch( ) แตถ่ ้ำต้องกำรเห็นบนจอภำพด้วยควรใชฟ้ ังกช์ นั getche( ) - เมือ่ ต้องกำรรบั ขอ้ มูลตวั เลขทม่ี ำกกว่ำ 1 ตัว เชน่ ตัวเลขจำนวนเตม็ หรือตวั เลข ทศนิยม ควรใช้ฟังกช์ นั scanf( ) - กรณีท่ใี ชฟ้ ังกช์ นั scanf( ) รับขอ้ มลู ติดตอ่ กนั มำกกว่ำ 2 ครั้ง อำจเกดิ ควำมผิดพลำดใน กำรรับข้อมลู ดงั นั้นจึงควรใช้คำสงั่ ch = getchar( ); คัน่ ก่อนทจ่ี ะรบั ข้อมูลครัง้ ที่ 3 โดยจะตอ้ งมี คำสงั่ ประกำศตวั แปร char ch; ไว้ด้วย ชดุ กิจกรรมกำรเรียนรกู้ ำรเขยี นโปรแกรมภำษำคอมพิวเตอร์ 14 รำยวชิ ำภำษำซี ง30243 ชั้นมธั ยมศกึ ษำปีที่ 5
Search
Read the Text Version
- 1 - 16
Pages: