ads by google

วันอังคารที่ 4 ธันวาคม พ.ศ. 2555

ฟังก์ชันพื้นฐานการเขียนโปรแกรมภาษา C


1 ฟังก์ชันรับข้อมูล  (input functions)
            ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา  C  มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด  อยู่หลายฟังก์ชันที่จะกล่าวถึง  ดังนี้คือ ฟังก์ชัน  scanf( ), ฟังก์ชัน  getchar( ), ฟังก์ชัน  getch( ), ฟังก์ชัน  getche( )  และฟังก์ชัน  gets( )  ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
             
           1.1 ฟังก์ชัน  scanf( )
                        เป็นฟังก์ชันที่ใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว ้โดยสามารถรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม  ตัวเลขทศนิยม  ตัวอักขระตัวเดียว หรือข้อความก็ได
้            รูปแบบการใช้งานฟังก์ชัน

scanf  (control   string,argument  list);

            โดยที่
                        control  string  คือ  รหัสรูปแบบข้อมูล (format code)  โดยจะต้องเขียนอยู่ภายใต้เครื่องหมาย  “……..”  (double  quotation)
                        argument list คือ  ชื่อตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย  &  (ampersand)  นำหน้าชื่อตัวแปร  ยกเว้นตัวแปรชนิด  string  ไม่ต้องมีเครื่องหมาย  &  นำหน้าชื่อ  ถ้ามีตัวแปรมากกว่า  1  ตัวแปร  ให้ใช้เครื่องหมาย  ,  (comma)  คั่นระหว่างตัวแปรแต่ละตัว

ตารางที่  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
ที่มา  :  Gottfried, S. Byron, 1990 : 481.
            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  scanf( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  1, 2  และ  3  ดังต่อไปนี้

โปรแกรมตัวอย่างที่  1  แสดงโปรแกรมการใช้ฟังก์ชัน  scanf( )  ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม 


/*          scanf1.c             */                                              
#include<stdio.h>                                    /*  บรรทัดที่  1  */
void main(void)                                         /*  บรรทัดที่  2  */
{                                                                  /*  บรรทัดที่  3  */
      int  a;                                                   /*  บรรทัดที่  4  */
      scanf("%d", &a);                               /*  บรรทัดที่  5  */
}                                                                 /*  บรรทัดที่  6  */
ผลลัพธ์ที่ได้จากโปรแกรม
            หน้าจอว่าง ๆ  มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด  (ข้อมูลที่ต้องการนั้นเป็นจำนวนเต็ม  เพื่อนำไปเก็บไว้ที่ตัวแปร  a)  ซึ่งผู้ใช้ควรเติมข้อมูลตัวเลขจำนวนเต็มเพื่อให้สัมพันธ์กับชนิดของตัวแปร
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  1  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่   เป็นคำสั่งเรียกแฟ้มที่ชื่อว่า  stdio.h  ซึ่งภายในจะบรรจุคำสั่งหรือฟังก์ชันที่จำเป็นต้องใช้ในภาษา  C  เช่น  printf( )
บรรทัดที่  2  เป็นฟังก์ชันหลักของโปรแกรม  และบอกให้  C compiler  รู้ว่าฟังก์ชัน
main( )  ไม่มีการส่งค่าข้อมูลและไม่มีการรับค่าข้อมูลกลับ
บรรทัดที่  3  เป็นการแสดงจุดเริ่มต้นของฟังก์ชัน  main( )
บรรทัดที่  4  เป็นการประกาศตัวแปรชื่อ  a  เป็นชนิดจำนวนเต็ม  หรือ  int
บรรทัดที่  5  ฟังก์ชัน  scanf( )  เพื่อรอรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปร  a  ซึ่งเป็นชนิดจำนวนเต็ม
บรรทัดที่  6  เป็นการแสดงจุดสิ้นสุดของฟังก์ชัน  main( )

โปรแกรมตัวอย่างที่  แสดงโปรแกรมการใช้ฟังก์ชัน  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  */


  
ผลลัพธ์ที่ได้จากโปรแกรม 

ข้อสังเกต  ในเอกสารเล่มนี้  ผลลัพธ์ที่ได้จากโปรแกรม  ถ้าตัวอักษรที่เป็นสีเข้มคือข้อความที่ให้ผู้ใช้พิมพ์ผ่านคีย์บอร์ด 
คำอธิบายโปรแกรม 
            ในโปรแกรมตัวอย่างที่  2  โปรแกรมจะรับข้อมูลจากคีย์บอร์ด ที่เป็นชนิดจำนวนเต็มเก็บไว้ในตัวแปร และนำค่าของตัวแปรแสดงผลออกจอภาพ  ด้วยคำสั่งบรรทัดที่  6  คือ  printf(“Your enter is…%d”, a);  สำหรับฟังก์ชัน  printf( )  ผู้ใช้สามารถศึกษารายละเอียดเพิ่มเติมก่อนได้ในหัวข้อ  2.1 
โปรแกรมตัวอย่างที่  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 cm.\n",weight);  /*บรรทัดที่ 14*/
printf("Your height is ...%f cm.\n",height);    /*  บรรทัดที่  15 */
}                                                                         *  บรรทัดที่  16 */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Enter your Name and Age: KANNIKAR  25  Enter your Weight and Height : 155.5  45.5  Your name is ...KANNIKAR.  You  are 25 years old.  Your weight is ...155.500000 cm.  Your height is ...45.500000 cm.
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  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  จะนำข้อมูลที่เก็บไว้ในตัวแปรต่าง ๆ  ออกมาแสดงผลที่จอภาพตามรหัสรูปแบบข้อมูลต่าง ๆ