การแสดงผลบนจอภาพ...

22
บทที5 การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ด ในการใช้งานโปรแกรมคอมพิวเตอร์ทั่ว ๆ ไป ไม่ว่าจะถูกพัฒนาด้วยภาษาคอมพิวเตอร์ ใด ๆ ก็ตามจะต้องมีเรื่องของการรับ และแสดงผลข้อมูลด้วยกันทั้งสิ้น ซึ่งการรับข้อมูลนั้น เป็น การนาเอาค่าเข้ามาให้โปรแกรมคอมพิวเตอร์ทาการประมวลผล เพื่อหาคาตอบจากกระบวนการการ ทางานหรือสูตรต่าง ๆ เมื่อประมวลผลได้ผลลัพธ์แล้วก็จะต้องนาผลลัพธ์นั้นแสดงผลข้อมูลออก ทางหน่วยแสดงผลข้อมูล ซึ่งส่วนใหญ่ก็จะเป็นจอภาพ ในบทนี้ ผู้เรียนควรศึกษาให้ทราบถึงคาสั่ง ต่าง ๆ ที่ใช้ในการรับ และแสดงผลข้อมูล และสังเกตดูผลลัพธ์ที่ได้ว่ามีความเหมือนหรือแตกต่าง กันอย่างไร รหัสรูปแบบ (Format code) ในการแสดงผลบนจอภาพ และรับค่าข้อมูลนั้น จะต้องอาศัยรหัสรูปแบบ (Format code) เข้ามาช่วย เนื่องจากชนิดของข้อมูลที่ต้องการแสดงผล หรือรับค่าข้อมูลนั้น มีความแตกต่างกัน อาทิ เช่น ชนิดข้อมูลแบบจานวนเต็ม อักขระ ข้อความ เป็นต้น ดังนั้นรหัสรูปแบบจะต้องถูกกาหนดให้ ตรงกับชนิดของข้อมูลที่ต้องการนามาแสดง และรับค่าข้อมูล ซึ่งสามารถศึกษาดูรายละเอียดได้ ดังตารางที5.1 ตารางที5.1 รหัสรูปแบบ (Format code) รหัสรูปแบบ ความหมาย %c ใช้กับการแสดงผลข้อมูลที่เป็นตัวอักษร ประเภท Character 1 ตัว %d ใช้กับการแสดงผลข้อมูลที่เป็นเลขจานวนเต็ม ประเภท Integer %f ใช้กับการแสดงผลข้อมูลที่เป็นเลขทศนิยม ประเภท Floating point %s ใช้กับการแสดงผลข้อมูลที่เป็นข้อความ ประเภท String %p ใช้กับการแสดงผลข้อมูลที่เป็นพอยน์เตอร์ ประเภท Pointer %u ใช้กับการแสดงผลข้อมูลที่เป็นตัวเลขจานวนเต็มบวก (unsigned short and long) %o ใช้กับการแสดงผลข้อมูลที่เป็นตัวเลขฐานแปด ประเภท Octal

Upload: others

Post on 25-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

83

บทท 5 การแสดงผลบนจอภาพ และรบขอมลจากคยบอรด

ในการใชงานโปรแกรมคอมพวเตอรทว ๆ ไป ไมวาจะถกพฒนาดวยภาษาคอมพวเตอร ใด ๆ กตามจะตองมเรองของการรบ และแสดงผลขอมลดวยกนทงสน ซงการรบขอมลนน เปนการน าเอาคาเขามาใหโปรแกรมคอมพวเตอรท าการประมวลผล เพอหาค าตอบจากกระบวนการการท างานหรอสตรตาง ๆ เมอประมวลผลไดผลลพธแลวกจะตองน าผลลพธนนแสดงผลขอมลออกทางหนวยแสดงผลขอมล ซงสวนใหญกจะเปนจอภาพ ในบทน ผเรยนควรศกษาใหทราบถงค าสงตาง ๆ ทใชในการรบ และแสดงผลขอมล และสงเกตดผลลพธทไดวามความเหมอนหรอแตกตางกนอยางไร

รหสรปแบบ (Format code) ในการแสดงผลบนจอภาพ และรบคาขอมลนน จะตองอาศยรหสรปแบบ (Format code) เขามาชวย เนองจากชนดของขอมลทตองการแสดงผล หรอรบคาขอมลนน มความแตกตางกน อาทเชน ชนดขอมลแบบจ านวนเตม อกขระ ขอความ เปนตน ดงนนรหสรปแบบจะตองถกก าหนดใหตรงกบชนดของขอมลทตองการน ามาแสดง และรบคาขอมล ซงสามารถศกษาดรายละเอยดได ดงตารางท 5.1 ตารางท 5.1 รหสรปแบบ (Format code)

รหสรปแบบ ความหมาย %c ใชกบการแสดงผลขอมลทเปนตวอกษร ประเภท Character 1 ตว %d ใชกบการแสดงผลขอมลทเปนเลขจ านวนเตม ประเภท Integer %f ใชกบการแสดงผลขอมลทเปนเลขทศนยม ประเภท Floating point %s ใชกบการแสดงผลขอมลทเปนขอความ ประเภท String %p ใชกบการแสดงผลขอมลทเปนพอยนเตอร ประเภท Pointer %u ใชกบการแสดงผลขอมลทเปนตวเลขจ านวนเตมบวก (unsigned short

and long) %o ใชกบการแสดงผลขอมลทเปนตวเลขฐานแปด ประเภท Octal

Page 2: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

84

%x ใชกบการแสดงผลขอมลทเปนตวเลขฐานสบหก ประเภท hexadecimal %e ใชกบการแสดงผลขอมลทเปนตวเลขทศนยมออกมาในรปแบบของ E

(หรอ e) ยกก าลง (Float, double, long double)

อกขระควบคมการแสดงผล ในการแสดงผลนน จ าเปนอยางยงทจะตองรถงอกขระพเศษทใชควบคมการแสดงผล

(Carriage Control) ซงจะชวยใหการแสดงผลนนสมบรณมากขน ซงในภาษาซนนจะมอกขระควบคมการแสดงผลดงรายละเอยดดงตารางท 5.2 ตารางท 5.2 อกขระควบคมการแสดงผล อกขระควบคมการแสดงผล ความหมาย

\n ขนบรรทดใหม \t เวนชองวางเปนระยะ 1 tab (ประมาณ 6 ตวอกษร) \r ก าหนดใหเคอรเซอรไปอยตนบรรทด \f เวนชองวางเปนระยะ 1 หนาจอ \b ลบอกขระตวทายสดออก 1 ตว

การแสดงผลขอมลบนจอภาพ การแสดงผลขอมลบนจอภาพนน สามารถกระท าไดหลายวธดวยกน โดยใชฟงกชนในการ

แสดงผลทเปนมาตรฐานทมอยบนโปรแกรม Turbo C++ ซงไดแกฟงกชนตอไปน (ประภาพร ชางไม, 2551)

1. ฟงกชน printf( ) 2. ฟงกชน putchar( ) 3. ฟงกชน puts( )

Page 3: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

85

1. ฟงกชน printf( ) ฟงกชน printf( ) เปนฟงกชนทใชแสดงผลขอมลบนจอภาพทใชแสดงผลไมวาจะเปน ขอความ ตวเลข ตวแปร คาคงทตาง ๆ ตามแตทตองการใหแสดงบนจอภาพ

รปแบบค าสง printf(‚format code‛,variable); หรอ printf(‚text‛); อธบาย

format code คอ รหสรปแบบของการแสดงผลขอมลประเภทตาง ๆ เชน ตวอกษร ตวเลขทศนยม ขอความตางๆ ทตองการน ามาแสดงผล

variable คอ ก าหนดชอของตวแปรทตองการน ามาแสดงผลบนจอภาพ text คอ ขอความทตองการแสดงผล และหากตองการทจะขนบรรทด

ใหมเมอจบขอความกจะใสค าสง \n ททายประโยคดวย

Page 4: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

86

ตวอยางโปรแกรม แสดงขอความธรรมดา ไมมการใชงาน format code ใด ๆ

บรรทดท โปรแกรม

1 2 3 4 5

# include <stdio.h> main( ) { printf(‚Hello Everyone ‛); }

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h บรรทดท 2 เขาสโปรแกรมหลก main( ) บรรทดท 3 เรมตนการท างานโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 4 แสดงขอความ Hello Everyone บรรทดท 5 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ตวอยางโปรแกรมแสดงคาของตวแปร score ซงมการใช format code (%d) เขามาชวยในการแสดงผลตวเลข

บรรทดท โปรแกรม

1 2 3 4 5 6

# include <stdio.h> int score = 20; main( ) { printf(‚Your score is %d ‛,score); }

Page 5: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

87

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h

บรรทดท 2 สรางตวแปรชอ score ชนด Integer พรอมก าหนดคา 20 ใหกบตวแปร

บรรทดท 3 เขาสโปรแกรมหลก main( ) บรรทดท 4 เรมตนการท างานโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 แสดงขอความ Your score is ตามดวยคาของตวแปร score บรรทดท 6 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ตวอยางโปรแกรมแสดงผลทมการใชรหสรปแบบทศนยม ซงการแสดงผลแบบน มกจะนยมใชรปแบบทศนยมดงตอไปน

รปแบบการแสดงผล

%f หรอ %.nf อธบายรปแบบ %f แสดงผลในรปแบบทศนยมปกต

%.nf แสดงผลในรปแบบทศนยม โดยระบจ านวนของทศนยมทตองการ โดยการใสตวเลขทศนยมทตองการแทนคากบตว n เชน %.2f หมายถงการแสดงผลทศนยมจ านวน 2 ต าแหนง

Page 6: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

88

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

บรรทดท โปรแกรม 1 2 3 4 5 6

# include <stdio.h> float score = 20.7500; main( ) { printf(‚Your score is %.2f ‛,score); }

อธบายโปรแกรม

บรรทดท 1 เรยกใชงานไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปร score ชนด float แลวก าหนดคาเทากบ 20.7500 บรรทดท 3 เขาสการท างานของโปรแกรมหลก main( ) บรรทดท 4 เรมตนโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 แสดงคาตวแปร score แบบทศนยม 2 ต าแหนง บรรทดท 6 สนสดการท างานของโปรแกรมหลก main ดวยเครองหมาย }

ผลลพธบนจอภาพ

Your score is 20.75

ตวอยางโปรแกรมทมการใชรหสรปแบบก าหนดจ านวนอกขระในการแสงผลตวอกขระน สามารถทจะใชรหสรปแบบ %s เขามาชวยไดวาตองการทจะแสดงตวอกขระจ านวนกตวหรอตองการแสดงทงหมด โดยจะมรปแบบการใชงานดงน

Page 7: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

89

รปแบบการแสดงผล

%s หรอ %.ns อธบายรปแบบ %s แสดงผลในรปแบบขอความปกต

%.ns แสดงผลในรปแบบขอความโดยระบจ านวนของขอความทตองการ โดยการใสตวเลขทตองการแทนขอความกบตว n เชน %.2s หมายถงการแสดงผลขอความจ านวน 2 ตวอกษร

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

บรรทดท โปรแกรม 1 2 3 4 5 6

#include <stdio.h> char textshow[ ] = ‚Welcome to my message‛; main( ) { printf(‚%.7s‛,textshow); }

อธบายโปรแกรม บรรทดท 1 เรยกใชงานไลบรารฟงกชน stdio.h

บรรทดท 2 สรางตวแปร textshow ชนด char แลวก าหนดคาเทากบ ‚Welcome to my message‛

บรรทดท 3 เขาสการท างานของโปรแกรมหลก main( ) บรรทดท 4 เรมตนโปรแกรมหลก main( ) ดวยเครองหมาย {

Page 8: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

90

บรรทดท 5 แสดงคาตวแปร textshow เพยง 7 ตวอกขระแรก บรรทดท 6 สนสดการท างานของโปรแกรมหลก main ดวยเครองหมาย }

ผลลพธบนจอภาพ

โปรแกรมจะแสดงผลลพธตามตวอยางทแสดงตอไปนบนจอภาพเพยง 7 ตวอกขระเทานน Welcome

2. ฟงกชน putchar( ) นอกจากฟงกชน printf( ) ทสามารถใชแสดงผลบนจอภาพไดแลว ยงมฟงกชน putchar( ) ทสามารถแสดงผลตวอกขระทละตวบนจอภาพได โดยการใชงานฟงกชนนจะตองตามดวยรหสรปแบบ %c ดวย ดงรปแบบตอไปน putchar(char); อธบาย

char สามารถเปนตวอกขระทถกเขยนไวภายในเครองหมาย ‘ ’ หรออาจจะเปนตวแปรแบบ Character

Page 9: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

91

ตวอยาง การใชฟงกชน putchar( ) แสดงผลตวอกขระบนจอภาพ

บรรทดท โปรแกรม

1 2 3 4 5 6 7 8 9

#include <stdio.h> char text1[ ] = ‘J’; main( ) { clrscr( ); putchar(text1); print(‚\n‛); putchar(‘O’); }

อธบายโปรแกรม

บรรทดท 1 เรยกใชงานไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปรชอ text1 ชนด Character แบบอารเรย พรอม

ก าหนดคาเทากบ ‘J’ บรรทดท 3 เขาสการท างานของโปรแกรมหลก main( ) บรรทดท 4 เรมตนของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ

บรรทดท 6 ใชฟงกชน putchar( ) แสดงตวอกขระ จากตวแปร text1 บนจอภาพ

บรรทดท 7 ขนบรรทดใหม 1 บรรทด บรรทดท 8 ใชฟงกชน putchar( ) แสดงตวอกขระ “O‛ บนจอภาพ บรรทดท 9 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

Page 10: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

92

ผลลพธบนจอภาพ

J O

3. ฟงกชน puts( ) การแสดงผลขอความดวยฟงกชน puts( ) นนจะมลกษณะการท างานทคลายกบฟงกชน putchar( ) แตฟงกชน puts( ) นนจะสามารถแสดงผลตวอกขระไดหลายตว หรอเปนขอความ ซงจะมรปแบบการใชงานดงน puts(string); อธบาย

string คอขอความทตองการใหแสดงผล ซงอาจจะเปนขอความตามท ตองการทถกเขยนไวภายในเครองหมาย ‘ ’ หรอเปนตวแปรชนด character กได

Page 11: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

93

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

บรรทดท โปรแกรม

1 2 3 4 5 6 7 8

#include <stdio.h> char text1 [ ] = ‘Phitsanulok’; main( ) { clrscr( ); puts(‘Welcome to’); puts(text1); }

อธบายโปรแกรม

บรรทดท 1 เรยกใชงานไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปรชอ text1 ชนด Character แบบอารเรย พรอม

ก าหนดคาเทากบ ‘Phitsanulok’ บรรทดท 3 เขาสการท างานของโปรแกรมหลก main( ) บรรทดท 4 เรมตนของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ บรรทดท 6 ใชฟงกชน puts( ) แสดงขอความ “Welcome to ” บนจอภาพ

บรรทดท 7 ใชฟงกชน puts( ) แสดงขอความ “Phitsanulok‛ จากตวแปร text1 บนจอภาพ

บรรทดท 8 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

Page 12: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

94

ผลลพธบนจอภาพ เมอโปรแกรมท างานกจะแสดงขอความ Welcome to ซงเปนขอความปกต แลวตามดวยขอความทมาจากตวแปร text1 เปนค าวา Phitsanulok ตามตวอยางหนาจอน Welcome to Phitsanulok

การรบขอมลจากคยบอรด ในการเขยนโปรแกรมทวไปนน งานทเปนงานหลกและขาดไมไดกคอ การรบขอมลเขามาในระบบผานทางคยบอรด ในภาษาซกเชนกน ถอวาเปนงานทจะตองเลอกฟงกชนการรบขอมลใหมความเหมาะสมกบลกษณะงาน โดยในภาษาซนน จะมฟงกชนในการรบขอมลดวยกน 4 ฟงกชนคอ

1. ฟงกชน scanf( ) 2. ฟงกชน getch( ) 3. ฟงกชน getchar( ) 4. ฟงกชน gets( )

1. ฟงกชน scanf( ) ฟงกชน scanf( ) เปนฟงกชนทมการใชงานไดหลายรปแบบกบตวแปรชนดตาง ๆ โดย

จะตองมการระบรหสรปแบบชนดของตวแปรทตองการรบคาดวยเชน รหสรปแบบ %c %s %d เปนตน ฟงกชน scanf( ) มรปแบบการใชงานดงน

scanf(‚format_code‛,&variable);

Page 13: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

95

อธบาย format_code เปนรหสรปแบบของการรบคาเชน %c ใชรบคาทเปน char %s

ใชรบคาทเปน string %d ใชรบคาทเปนตวเลขจ านวนเตม เปนตน

variable เปนการก าหนดตวแปรทใชในการรบคา โดยจะตองมเครองหมาย & น าหนาตวแปรเสมอ เมอมการรบคาจากผใชคาทรบเขานน จะถกเกบไวในตวแปรทระบไว

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

บรรทดท โปรแกรม 1 2 3 4 5 6 7 8 9

#include <stdio.h> int phone; main( ) { clrscr( ); printf(‚Enter your phone number : ‛ ); scanf(‚%d‛,&phone); printf(‚Your phone number is : %d \n‛,phone); }

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปร phone ชนด integer บรรทดท 3 เขาสการท างานโปรแกรมหลก main( ) บรรทดท 4 เรมตนการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ บรรทดท 6 แสดงขอความ ‚Enter your phone number‛ บนจอภาพ

Page 14: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

96

บรรทดท 7 รบคาตวแปร phone จากผใชงาน บรรทดท 8 แสดงขอความ ‚Your phone number is :” ตามดวยคาจากตวแปร

phone บนจอภาพ บรรทดท 9 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ผลลพธบนจอภาพ โปรแกรมจะแสดงขอความใหกรอกหมายเลขโทรศพท

Enter your phone number :

ผใชงานกรอกหมายเลขโทรศพททตองการลงไป เชน 0816605372

Enter your phone number : 0816605372

โปรแกรมแสดงขอความ พรอมแสดงคาของตวแปร phone คอ 0816605372 บนจอภาพ

Your phone number is : 0816605372

Page 15: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

97

2. ฟงกชน getch( ) ฟงกชน getch( ) เปนฟงกชนหนงทใชในการรบขอมลจากคยบอรดทเปนตวอกขระ

เพยง 1 ตวเทานน แลวโปรแกรมจะท างานตอทนท โดยทไมมการรอการกดปม Enter จากผใชงาน และตวอกขระทกรอกไปจะไมแสดงผลบนจอภาพดวย ฟงกชน getch( ) มรปแบบการใชงานดงน variable_name = getch( );

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

บรรทดท โปรแกรม 1 2 3 4 5 6 7 8 9

#include <stdio.h> char number; main( ) { clrscr( ); printf(‚Enter your lucky number (0-9) : ‛); number = getch( ); printf(‚Your lucky number is : %c‛,number); }

Page 16: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

98

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปร number ชนด Character บรรทดท 3 เขาสโปรแกรมหลก main( ) บรรทดท 4 เรมตนการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ บรรทดท 6 แสดงขอความ “Enter your lucky number (0-9) : ” บนจอภาพ บรรทดท 7 รบคาตวแปร number ดวยฟงกชน getch( ) บรรทดท 8 แสดงขอความ “Your lucky number is : ” ตามดวยคาของตวแปร

number บรรทดท 9 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ผลลพธบนจอภาพ เมอท าการรนโปรแกรมแลว จะมขอความ ใหเรากด ตวเลขทชอบระหวาง 0-9 เมอผใชงานกดตวเลขแลว จะไมมการแสดงตวเลขนน ๆ ออกมา และไมตองกดปม Enter ดวย หลงจากนนกแสดงคาของตวเลขทกดบนจอภาพอกครง Enter your lucky number (0-9) : Your lucky number is 9

Page 17: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

99

3. ฟงกชน getchar( ) ฟงกชน getchar( ) เปนฟงกชนทใชรบคาขอมลอกขระ 1 ตวเขามาทางคยบอรด ม

ลกษณะการท างานคลาย ๆ กบ getch( ) แตฟงกชน getchar( ) นน เมอมการรบเขามาแลว 1 ตวอกขระ จะตองกดปม Enter ดวยถงจะมการน าคาเขามาประมวลผลฟงกชน getchar ( ) มรปแบบการใชงานดงน variable_name = getchar( );

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

บรรทดท โปรแกรม

1 2 3 4 5 6 7 8 9

#include <stdio.h> char number; main( ) { clrscr( ); printf(‚Enter your lucky number (0-9) : ‛); number = getchar( ); printf(‚Your lucky number is : %c‛,number); }

Page 18: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

100

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปร number ชนด Character บรรทดท 3 เขาสโปรแกรมหลก main( ) บรรทดท 4 เรมตนการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ บรรทดท 6 แสดงขอความ “Enter your lucky number (0-9) : ” บนจอภาพ บรรทดท 7 รบคาตวแปร number ดวยฟงกชน getchar( )

บรรทดท 8 แสดงขอความ “Your lucky number is : ” ตามดวยคาของตวแปร number

บรรทดท 9 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ผลลพธบนจอภาพ เมอท าการรนโปรแกรมแลว จะแสดงขอความใหผใชงานกดตวเลขทชอบ โดยเมอกดตวเลขแลวระบบจะท าการแสดงตวเลขนน พรอมกบรอการกดปม Enter จากผใชงาน ซงจะแตกตางจากฟงกชน getch( ) จากนนเมอกดปม Enter แลว โปรแกรมกจะแสดงตวเลขทกดใหทราบอกครงหนง Enter your lucky number (0-9) : 7 Your lucky number is 7

Page 19: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

101

4. ฟงกชน gets( ) ฟงกชน gets เปนฟงกชนทใชรบขอความ (Text) เขามาทางคยบอรด ซงจะสามารถรบ

ตวอกขระเขามาไดมากกวาครงละ 1 ตวอกขระ ซงมรปแบบการใชงานดงน gets(text_variable);

อธบาย text_variable คอ ตวแปรชนด character ทมความยากตงแต 1 ตวอกขระขนไป

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

บรรทดท โปรแกรม 1 2 3 4 5 6 7 8 9

#include <stdio.h> char word; main( ) { clrscr( ); printf(‚Enter your word : ‛); gets(word); printf(‚Your word is : %s‛,word); }

Page 20: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

102

อธบายโปรแกรม บรรทดท 1 เรยกใชไลบรารฟงกชน stdio.h บรรทดท 2 สรางตวแปร word ชนด Character บรรทดท 3 เขาสโปรแกรมหลก main( ) บรรทดท 4 เรมตนการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย { บรรทดท 5 เคลยรจอภาพ บรรทดท 6 แสดงขอความ ‚Enter your word : ‛ บนจอภาพ บรรทดท 7 รบคาตวแปร word จากผใชงาน บรรทดท 8 แสดงขอความ “Your word is : ” ตามดวยคาของตวแปร word บรรทดท 9 สนสดการท างานของโปรแกรมหลก main( ) ดวยเครองหมาย }

ผลลพธบนจอภาพ เมอสงใหโปรแกรมท างาน จะแสดงขอความ Enter your word : จากนนเมอผใชกรอกขอความเชน love แลวกดปม Enter ระบบกจะแสดงขอความตอวา Your word is : love ดงตวอยาง Enter your word : love (เมอผใชงานกดปม Enter แลวจะปรากฏขอความ ดานลาง) Your word is : love

Page 21: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

103

บทสรป รหสรปแบบ (Format code) ในการแสดงผลบนจอภาพ และรบคาขอมลนน จะตองอาศยรหสรปแบบ (Format code) เขามาชวย เนองจากชนดของขอมลทตองการแสดงผล หรอรบคาขอมลนน มความแตกตางกน อาทเชน ชนดขอมลแบบจ านวนเตม อกขระ ขอความ เปนตน ดงนนรหสรปแบบจะตองถกก าหนดใหตรงกบชนดของขอมลทตองการน ามาแสดง และรบคาขอมล อาทเชน %c , %s เปนตน

อกขระควบคมการแสดงผล ในการแสดงผลนน จ าเปนอยางยงทจะตองรถงอกขระพเศษทใชควบคมการแสดงผล (Carriage Control) ซงจะชวยใหการแสดงผลนนสมบรณมากขน อาทเชน \n , \t , \r เปนตน

ในการแสดงผลขอมลบนจอภาพนน สามารถใชฟงกชนในการแสดงผลไดหลายรปแบบ ขนอยกบความตองการของผเรยน โดยจะมฟงกชนทใชงานเพอการแสดงผลอย 3 ฟงกชนคอ

1. ฟงกชน printf( ) 2. ฟงกชน putchar( ) 3. ฟงกชน puts( )

ส าหรบการรบคาทางคยบอรดนน กเปนอกงานหนงทมความจ าเปนอยางยง เพราะโปรแกรมคอมพวเตอรใด ๆ กตาม กจะตองมการน าคาตาง ๆ เขามาประมวลผลเพอหาค าตอบใหกบผใชงาน ดงนนผเรยนจะตองเลอกฟงกชนในการรบคาจากคยบอรดใหเหมาะสมกบงานทท า การรบคาทางคยบอรดนนจะมฟงกชนในการรบขอมลดวยกน 4 ฟงกชนคอ

1. ฟงกชน scanf( ) 2. ฟงกชน getch( ) 3. ฟงกชน getchar( ) 4. ฟงกชน gets( )

Page 22: การแสดงผลบนจอภาพ และรับข้อมูลจากคีย์บอร์ดelearning.psru.ac.th/courses/158/file_13.pdf · ในระบบผ่านทางคีย์บอร์ด

104

แบบฝกหดทายบท 1. จงเขยนโปรแกรมรบยอดเงนคาสนคา และยอดเงนทลกคาช าระ แลวค านวณหาเงน

ทอน โดยแสดงขอมลทงหมดออกจอภาพ โดยใหนกศกษาเลอกใชฟงกชนในการรบคาและแสดงผลเอง

2. จงเขยนโปรแกรมเพอแสดงคาของตวแปรตอไปนบนจอภาพ

int a=100; float b=50.75; char alpha=’X’; char message[ ] = ‚Welcome‛;

3. จงเขยนหนาจอภาพผลลพธ และเขยนค าอธบายสน ๆ ของโปรแกรมตอไปน

#include <stdio.h> char password; main( ) { clrscr( ); printf(‚Enter your Password : ‛); gets(password); printf(‚Your password is : %s‛,password);