บทที่ 3
ฟังก์ชันพื้นฐานการเขียนโปรแกรมภาษา C
ฟังก์ชันพื้นฐานการเขียนโปรแกรมภาษา C
จากบทที่ 2
ได้กล่าวถึงรายละเอียดต่าง ๆ
เกี่ยวกับความรู้เบื้องต้นเกี่ยวกับโปรแกรมภาษา C
สำหรับบทนี้จะอธิบายถึงฟังก์ชันพื้นฐานสำหรับการเขียนโปรแกรมภาษา C
เนื่องจากภาษา C
มีฟังก์ชันให้ใช้งานมากมายแต่ในบทนี้จะกล่าวถึงฟังก์ชันพื้นฐานที่ใช้
งานอยู่เป็นประจำในการเขียนโปรแกรมนั้นคือ
ฟังก์ชันรับข้อมูลและฟังก์ชันแสดงผลข้อมูล
โดยแต่ละฟังก์ชันมีรายละเอียดดังต่อไปนี้
3.1 ฟังก์ชันรับข้อมูล (input functions)
ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา C มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด อยู่หลายฟังก์ชันที่จะกล่าวถึง ดังนี้คือ ฟังก์ชัน scanf( ), ฟังก์ชัน getchar( ), ฟังก์ชัน getch( ), ฟังก์ชัน getche( ) และฟังก์ชัน gets( ) ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
3.1.1 ฟังก์ชัน scanf( )3.1 ฟังก์ชันรับข้อมูล (input functions)
ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา C มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด อยู่หลายฟังก์ชันที่จะกล่าวถึง ดังนี้คือ ฟังก์ชัน scanf( ), ฟังก์ชัน getchar( ), ฟังก์ชัน getch( ), ฟังก์ชัน getche( ) และฟังก์ชัน gets( ) ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
เป็นฟังก์ชันที่ใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว ้โดยสามารถรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ตัวอักขระตัวเดียว หรือข้อความก็ได
้ รูปแบบการใช้งานฟังก์ชัน
scanf(control string, argument list); |
โดยที่
control string คือ รหัสรูปแบบข้อมูล (format code) โดยจะต้องเขียนอยู่ภายใต้เครื่องหมาย “……..” (double quotation)
argument list คือ ชื่อตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย & (ampersand) นำหน้าชื่อตัวแปร ยกเว้นตัวแปรชนิด string ไม่ต้องมีเครื่องหมาย & นำหน้าชื่อ ถ้ามีตัวแปรมากกว่า 1 ตัวแปร ให้ใช้เครื่องหมาย , (comma) คั่นระหว่างตัวแปรแต่ละตัว
ตารางที่ 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 */ |
||||
หน้าจอว่าง ๆ มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด (ข้อมูลที่ต้องการนั้นเป็นจำนวนเต็ม เพื่อนำไปเก็บไว้ที่ตัวแปร a) ซึ่งผู้ใช้ควรเติมข้อมูลตัวเลขจำนวนเต็มเพื่อให้สัมพันธ์กับชนิดของตัวแปร
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 3.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 1 เป็นคำสั่งเรียกแฟ้มที่ชื่อว่า stdio.h ซึ่งภายในจะบรรจุคำสั่งหรือฟังก์ชันที่จำเป็นต้องใช้ในภาษา C เช่น printf( )
บรรทัดที่ 2 เป็นฟังก์ชันหลักของโปรแกรม และบอกให้ C compiler รู้ว่าฟังก์ชัน
main( ) ไม่มีการส่งค่าข้อมูลและไม่มีการรับค่าข้อมูลกลับ
บรรทัดที่ 3 เป็นการแสดงจุดเริ่มต้นของฟังก์ชัน main( )
บรรทัดที่ 4 เป็นการประกาศตัวแปรชื่อ a เป็นชนิดจำนวนเต็ม หรือ int
บรรทัดที่ 5 ฟังก์ชัน scanf( ) เพื่อรอรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปร a ซึ่งเป็นชนิดจำนวนเต็ม
บรรทัดที่ 6 เป็นการแสดงจุดสิ้นสุดของฟังก์ชัน main( )
โปรแกรมตัวอย่างที่ 3.2 แสดง โปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
/* scanf2.c */ |
||||
ข้อสังเกต ในเอกสารเล่มนี้ ผลลัพธ์ที่ได้จากโปรแกรม ถ้าตัวอักษรที่เป็นสีเข้มคือข้อความที่ให้ผู้ใช้พิมพ์ผ่านคีย์บอร์ดคำอธิบายโปรแกรม
ในโปรแกรมตัวอย่างที่ 3.2 โปรแกรมจะรับข้อมูลจากคีย์บอร์ด ที่เป็นชนิดจำนวนเต็มเก็บไว้ในตัวแปร และนำค่าของตัวแปรแสดงผลออกจอภาพ ด้วยคำสั่งบรรทัดที่ 6 คือ printf(“Your enter is…%d”, a); สำหรับฟังก์ชัน printf( ) ผู้ใช้สามารถศึกษารายละเอียดเพิ่มเติมก่อนได้ในหัวข้อ 3.2.1
โปรแกรมตัวอย่างที่ 3.3 แสดง โปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดตัวอักษร เลขจำนวนเต็ม และเลขทศนิยม และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
/* scanf3.c */ |
||||
จากโปรแกรมตัวอย่างที่ 3.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังต่อไปนี้
3.1.2 ฟังก์ชัน getchar( )
บรรทัดที่ 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 จะนำข้อมูลที่เก็บไว้ในตัวแปรต่าง ๆ ออกมาแสดงผลที่จอภาพตามรหัสรูปแบบข้อมูลต่าง ๆ
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ โดยการรับข้อมูลของฟังก์ชันนี้จะต้องกดแป้น enter ทุกครั้งที่ป้อนข้อมูลเสร็จ จึงทำให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย ถ้าต้องการนำข้อมูลที่ป้อนผ่านทางคีย์บอร์ดไปใช้งาน จะต้องกำหนดตัวแปรชนิด single character (char) ขึ้นมา 1 ตัว เพื่อเก็บค่าข้อมูลที่รับผ่านทางคีย์บอร์ด ในทางตรงกันข้ามถ้าไม่ต้องการใช้ข้อมูลที่ป้อนผ่านทางคีย์บอร์ดก็ไม่ต้อง กำหนดตัวแปรชนิด char ขึ้นมา
รูปแบบการใช้งานฟังก์ชัน
getchar( ); หรือ char_var = getchar( ); |
โดยที่
getchar( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ซึ่งอาจจะใช้ getchar(void) แทนคำว่า getchar( ) ก็ได้ แต่นิยมใช้ getchar( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน getchar( ) ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่ 3.4 ดังต่อไปนี้
โปรแกรมตัวอย่างที่ 3.4 แสดงโปรแกรมการใช้ฟังก์ชัน getchar( )
/* getchar1.c */ |
||||
จากโปรแกรมตัวอย่างที่ 3.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังต่อไปนี้
3.1.3 ฟังก์ชัน getch( )
บรรทัดที่ 1 เรียกใช้แฟ้มที่ชื่อ stdio.h ซึ่งในโปรแกรมนี้จะใช้คู่กับฟังก์ชัน printf( ) ในบรรทัดที่ 7 และ 9
บรรทัดที่ 2 เรียกใช้แฟ้มที่ชื่อ conio.h ซึ่งใช้คู่กับฟังก์ชัน clrscr( ) เพื่อลบข้อมูลที่จอภาพในบรรทัดที่ 6
บรรทัดที่ 5 ประกาศตัวแปรชื่อ cha เป็นชนิดตัวอักขระ หรือ char
บรรทัดที่ 8 รับข้อมูล 1 ตัวอักขระจากคีย์บอร์ด แล้วนำค่าที่รับมาเก็บไว้ในตัวแปร cha
บรรทัดที่ 9 นำข้อมูลที่เก็บในตัวแปร cha มาแสดงตรงตำแหน่ง %c และขึ้นบรรทัดใหม่ (\n คือ new line)
เป็นฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar( ) แตกต่างกันตรงที่เมื่อใช้ฟังก์ชันนี้รับข้อมูล ข้อมูลที่ป้อนเข้าไปจะไม่ปรากฏให้เห็นบนจอภาพและไม่ต้องกดแป้น enter ตาม
รูปแบบการใช้งานฟังก์ชัน
getch( ); หรือ char_var = getch( ); |
โดยที่
เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน getch( ) ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่ 3.5 ดังต่อไปนี้
getch( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ดังนั้นอาจจะใช้ getch(void) แทนคำว่า getch( ) ก็ได้ แต่นิยมใช้ getch( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
โปรแกรมตัวอย่างที่ 3.5 แสดงโปรแกรมการใช้ฟังก์ชัน getch( )
/* getch1.c */ |
||||
ผลลัพธ์ที่ได้จากโปรแกรม
การทำงานของโปรแกรมตัวอย่างที่ 3.5 จะคล้ายกับโปรแกรมตัวอย่างที่ 3.4 ต่างกันตรงคำสั่งบรรทัดที่ 8 จะเป็นการใช้ฟังก์ชัน getch( ) คือ ch = getch( ); ให้นำค่าที่รับมาเก็บไว้ในตัวแปร ch ซึ่งเวลาเรารับข้อมูลจากคีย์บอร์ดจะไม่ปรากฎข้อมูลที่เราป้อนเข้าไปให้เห็น บนจอภาพ และไม่ต้องกด enter ตาม โปรแกรมก็จะไปทำงานคำสั่งบรรทัดที่ 9 คือ นำข้อมูลที่เก็บในตัวแปร ch มาแสดงตรงตำแหน่ง %c และขึ้นบรรทัดใหม่ ส่วนคำสั่งบรรทัดที่ 10 ฟังก์ชัน getche( ); โปรแกรมก็จะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น เรากด enter ก็จะกลับเข้าสู่โปรแกรม
3.1.4 ฟังก์ชัน getche( )
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ เหมือนฟังก์ชัน getch( ) แตกต่างกันตรงที่ข้อมูลที่ป้อนเข้าไป จะปรากฏให้เห็นบนจอภาพด้วย นอกนั้นมีการทำงาน และลักษณะการใช้งานเหมือนฟังก์ชัน getch( ) ทุกประการ
รูปแบบการใช้งานฟังก์ชัน
getche( ); หรือ char_var = getche( ); |
โดยที่
getche( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ดังนั้นอาจจะใช้ getche(void) แทนคำว่า getche( ) ก็ได้ แต่นิยมใช้ getche( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน getche( ) ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่ 3.6 ดังต่อไปนี้
โปรแกรมตัวอย่างที่ 3.6 แสดงโปรแกรมการใช้ฟังก์ชัน getche( )
/* getche1.c */ |
||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
การทำงานของโปรแกรมตัวอย่างที่ 3.6 จะคล้ายกับโปรแกรมตัวอย่างที่ 3.5 ต่างกันตรงคำสั่งบรรทัดที่ 8 จะเป็นการใช้งานฟังก์ชัน getche( ) คือ e = getche( ); คำสั่งนี้ให้นำค่าที่รับมาเก็บไว้ในตัวแปร e ซึ่งข้อมูลที่เติมเข้าไปจะปรากฎให้เห็นบนจอภาพด้วย แต่ไม่ต้องกด enter ตาม โปรแกรมก็จะไปทำงานคำสั่งบรรทัดที่ 9 คือ นำข้อมูลที่เก็บในตัวแปร e มาแสดงตรงตำแหน่ง %c และขึ้นบรรทัดใหม่ ส่วนคำสั่งบรรทัดที่ 10 getch( ); โปรแกรมก็จะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น เรากด enter ก็จะกลับเข้าสู่โปรแกรม
3.1.5 ฟังก์ชัน gets( )
เป็นฟังก์ชันที่ใช้รับข้อมูลชนิดข้อความ (string) จากคีย์บอร์ด จากนั้นนำข้อมูลที่รับเข้าไปเก็บไว้ในตัวแปรสตริง (string variables) ที่กำหนดไว้
รูปแบบการใช้งานฟังก์ชัน
gets(string_var);
|
โดย
string_var คือ ตัวแปรสตริง ซึ่งจะใช้เก็บข้อมูลชนิดข้อความ (string constant)
gets( ) คือ ฟังก์ชันที่ใช้รับข้อความจากคีย์บอร์ด แล้วไปเก็บไว้ในตัวแปรสตริง
เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน gets( ) ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่ 3.7 ดังต่อไปนี้
โปรแกรมตัวอย่างที่ 3.7 แสดงโปรแกรมการใช้ฟังก์ชัน gets( )
/* gets1.c / |
||||
โปรแกรมตัวอย่างที่ 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; ไว้ด้วย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น