4. การรับและแสดงผลข้อมูล

           ใบความรู้ที่ 4
เรื่อง การรับและแสดงผลข้อมูล

การทำงานของโปรแกรมส่วนใหญ่มักจะเป็นการเชื่อมโยงกับผู้ใช้แบบ 2 ทิศทาง นั่นก็คือ ทั้งภาคของการแสดงผลการทำงานออกทางจอภาพ และภาคการรับข้อมูลจากผู้ใช้เข้ามาทางแป้นพิมพ์ เพื่อร่วมในการประเมินผลของโปรแกรม ซึ่งในภาครับข้อมูลจากผู้ใช้ ในภาษาซีกำหนดฟังก์ชันมาตรฐานเอาไว้ให้เรียกใช้แล้ว เช่นเดียวกับภาคของการแสดงผล ซึ่งอธิบายรายละเอียดของฟังก์ชัน เหล่านั้นได้ดังนี้คือ
  การรับข้อมูลจากแป้นพิมพ์ด้วยฟังก์ชัน scanf();
             ฟังก์ชันนี้อยู่ใน header ไฟล์ชื่อ stdio.h เป็นฟังก์ชันสำหรับรับข้อมูลมาจากแป้นพิมพ์ ที่สามารถรับข้อมูลได้ทุกประเภทไม่ว่าจะเป็นชนิด char , short , int , long , float , double , string โดยมีรูปแบบการเรียกใช้ดังนี้ 
                  scanf("ตัวแทนตัวแปร",&ชื่อตัวแปร);
             โดยที่...
              ตัวแทนตัวแปร คือ ส่วนที่ใช้รหัสควบคุมรูปแบบ เพื่อกำหนดชนิดของข้อมูลที่จะรับเข้ามา จากแป้นพิมพ์ โดยรหัสควบคุมรูปแบบจะใช้รหัสเดียวกันกับ รหัสรูปแบบของฟังก์ชัน printf ()
              ชื่อตัวแปร คือชื่อตัวแปรที่ใช้เก็บค่าของข้อมูลที่รับเข้ามาจากแป้นพิมพ์ โดยชนิดของตัวแปรจะต้องตรงกับรหัสควบคุมที่กำหนดไว้ นอกจากนี้จะต้องใช้ เครื่องหมาย & นำหน้าชื่อตัวแปรด้วย ยกเว้นตัวแปรที่เป็นชนิด string อาจละเว้นการใช้เครื่องหมาย & ได้
ตารางแสดงตัวแทนตัวแปรตามชนิดของข้อมูล
ตัวแทนตัวแปร
ชนิดตัวแปร
%d
ตัวเลขจำนวนเต็ม (int)
%f
ตัวเลขทศนิยม (float)
%c
ตัวอักขระ (char)
%ld
ตัวเลขจำนวนเต็มแบบยาว (long)

http://www.krujintana.com/content/picture/blue04_next.gif ตัวอย่างที่ 1  การใช้ฟังก์ชัน scanfเพื่อรับข้อมูลมาจากแป้นพิมพ์เพื่อรับชื่อและนามสกุล
 
1
#include <stdio.h>

2
#include <conio.h>

3
int main()

4
{

5
       char name[15],lname[20];
// ให้ตัวแปร name และ lnameเป็น
   string
6
       printf("Input your name and lname : ");
// แสดงข้อความ Input your name
   and lname :
7
       scanf("%s%s",name,lname)    ;
//รอรับข้อมูลจากแป้นพิมพ์เพื่อเก็บไว้
   ที่ตัวแปร name และ lname
8
       printf("\n\n\n");
// ขึ้นบรรทัดใหม่จำนวน 3 บรรทัด
9
       printf("Hello khun %s",name);
// แสดงข้อความ Hello khunตามด้วย
   ข้อมูลในตัวแปร name ที่ %s
10
       printf("   ");
// แสดงช่องว่าง
11
       printf("%s",lname);
// แสดงข้อมูลในตัวแปร lname
   ตำแหน่ง %s
12
       getch();
// ฟังก์ชัน getch() ใช้หยุดดูผลจนกว่า
   กดแป้นพิมพ์ใดๆ
13
       return 0;
// คืนค่า 0 ให้ฟังก์ชัน main เพื่อ
   บอกว่าโปรแกรมทำงานสมบูรณ์
14
}

      ผลที่ได้จากการ Run
http://www.krujintana.com/content/picture/scanf1.png

ตัวอย่างที่ 2  การใช้ฟังก์ชัน scanfเพื่อรับข้อมูลมาจากแป้นพิมพ์ที่เป็นตัวเลขสองจำนวน
                               แล้วมาคูณกัน
 
1
2
3
4
#include <stdio.h>
#include <conio.h>
int main()
{


5
6
7

8

9

10
      inta,b,c;
      printf("Input 1st number : ");
      scanf("%d",&a);

      printf("Input 2nd number : ");

      scanf("%d",&b);

      c=a*b;
// ประกาศตัวแปร a,b,cเป็นชนิด integer
// แสดงข้อความ Input 1st number : บนจอภาพ
// รอรับตัวเลขตัวที่หนึ่งจากแป้นพิมพ์
   ไปเก็บไว้ที่ตัวแปร a
// แสดงข้อความ Input 2nd number :
   บนจอภาพ
// รอรับตัวเลขตัวที่สองจากแป้นพิมพ์
   ไปเก็บไว้ที่ตัวแปร b
// นำค่าของ a คูณกับค่าของ b ผลลัพธ์
   นำไปเก็บที่ตัวแปร c
11
12

13

14

15
      printf("\n\n\n");
      printf("%d x %d = %d",a,b,c);

      getch();

      return 0;

}
// ขึ้นบรรทัดใหม่จำนวน 3 บรรทัด
// แสดงค่าของ a b c ณ ตำแหน่งของ %d
   ทั้งสามตัวตามลำดับ
// ฟังก์ชัน getch() ใช้หยุดดูผลจนกว่าจะกด
   แป้นพิมพ์ใดๆ
// คืนค่า 0 ให้ฟังก์ชัน main เพื่อบอกว่า
   โปรแกรมทำงานสมบูรณ์

ผลที่ได้จากการ Run
http://www.krujintana.com/content/picture/scanf2.png
  การรับข้อมูลจากแป้นพิมพ์ด้วยฟังก์ชัน gets();
              getsมาจากคำว่า get string อยู่ใน header ไฟล์ชื่อ stdio.hเป็นฟังก์ชันสำหรับรับข้อมูลชนิด string เข้ามาจากแป้นพิมพ์ แล้วนำไปเก็บไว้ที่ตัวแปร การอ่านข้อมูลด้วยฟังก์ชัน gets นี้ ถ้าข้อมูลหรือข้อความที่ป้อนเข้ามามีช่องว่าง ฟังก์ชัน gets ก็สามารถรับข้อมูลทั้งหมดเข้ามาได้โดยไม่มีปัญหาใด ๆ ฟังก์ชัน gets จะหยุดรับข้อมูลเมื่อมีการกดแป้น Enter เท่านั้น ฟังก์ชัน gets จะใส่ \0 ไว้ท้ายข้อความโดยอัตโนมัติด้วย
             http://www.krujintana.com/content/picture/bullet_left.gif รูปแบบคำสั่ง
                 gets(ตัวแปรชนิดตัวอักษรแบบชุด หรือ string_variable);
                 โดยที่ string_variable หมายถึงตัวแปรชนิดข้อความ หรือ string ที่ใช้เก็บค่าที่ป้อนข้อมูลมาจากแป้นพิมพ์ เช่น gets(school_name);
http://www.krujintana.com/content/picture/blue04_next.gif  ตัวอย่างที่ 3   การใช้ฟังก์ชัน gets เพื่อรับชื่อและนามสกุล
1
2
3
4
#include <stdio.h>
#include <conio.h>
int main()
{

5

6

7


8
      char name[25];

      printf("What is your name : ");

      gets(name);


      printf("\n\n\n");
// ประกาศตัวแปร name
   เป็นชนิด string
// แสดงข้อความ What is
    your name : บนจอภาพ
// รอรับชื่อที่ป้อนเข้ามาจาก
    แป้นพิมพ์นำไปเก็บไว้
    ที่ตัวแปร name
// ขึ้นบรรทัดใหม่จำนวน
   3 บรรทัด
9


10

11


12
      printf("Hello %s, nice to meet you.",name);


      getch();

      return 0;


}
// แสดงชื่อที่รับมาจากแป้น
   พิมพ์คือตัวแปร name
   ณ ตำแหน่ง %s
// ฟังก์ชัน getch() ใช้หยุดดูผล
   จนกว่ากดแป้นพิมพ์ใดๆ
// คืนค่า 0 ให้ฟังก์ชัน main
   เพื่อบอกว่า โปรแกรม
   ทำงานสมบูรณ์
ผลที่ได้จากการ Run
http://www.krujintana.com/content/picture/getch1.png
จากตัวอย่างที่ 3 แสดงให้เห็นว่าการรับชื่อและนามสกุล เข้ามาเก็บไว้ที่ตัวแปร name โดยที่ข้อมูลที่ป้อนเข้ามามีช่องว่างระหว่างชื่อ และนามสกุล ฟังก์ชัน gets ก็รับข้อมูลมาได้ทั้งหมด ซึ่งต่างจากฟังก์ชัน scanfโดยในฟังก์ชัน scanfถ้าข้อมูลที่ป้อนเข้ามามีช่องว่าง จะต้องใช้ตัวแปรสองตัวมารับค่าที่ป้อนเข้ามา ตามตัวอย่างที่ 1 บรรทัดที่ จะเห็นว่าต้องใช้ตัวแปร name และ lnameเพื่อรับชื่อและนามสกุลเป็นคนละตัวกัน

http://www.krujintana.com/content/picture/blue04_next.gif หมายเหตุ
         จากตัวอย่างข้างบน เนื่องจากตัวแปร name เป็นตัวแปรตัวอักษรแบบชุด หรือที่เรียกว่า Stringในการกำหนดตัวแทนตัวแปรในคำสั่ง  printf(); จะใช้สัญลักษณ์  %s  แทนตัวแปร

          การรับข้อมูลจากแป้นพิมพ์ด้วยฟังก์ชัน getchar();
              ฟังก์ชัน getchar เป็นฟังก์ชันที่อยู่ใน header ไฟล์ conio.h ที่ใช้รับข้อมูลชนิด char เข้ามาจากแป้นพิมพ์ ข้อมูลที่ป้อนเข้ามาด้วยฟังก์ชัน getcharนี้ จะต้องต้องกดแป้น Enter โปรแกรมจึงจะทำงานต่อไป และข้อมูลที่ป้อนเข้าไปจะปรากฏให้เห็นบนจอภาพด้วย
             http://www.krujintana.com/content/picture/bullet_left.gif รูปแบบคำสั่ง
                     variable=getchar();
                      โดยที่ variable คือชื่อของตัวแปรที่ต้องเป็นชนิด char เพื่อรับข้อมูลที่ป้อนเข้ามาทางแป้นพิมพ์
             http://www.krujintana.com/content/picture/bullet_left.gif ตัวอย่างการใช้ฟังก์ชัน getchar
                     ch=getchar();
 
                      หมายถึง รอรับตัวอักขระที่ป้อนเข้ามาเพียง 1 ตัวโดยตัวอักษรที่ป้อนเข้ามาจะปรากฏบนจอภาพแล้วต้องกดแป้น Enter
http://www.krujintana.com/content/picture/blue04_next.gifตัวอย่างที่ 4   การรับข้อมูลชนิด char ด้วยฟังก์ชัน getchar()

1
2
3
4
#include <stdio.h>
#include <conio.h>
int main()
{

5
6

7

8
9
char ch;
      printf("Enter your favorite letter : ");

      ch=getchar();

      printf("\n\n\n");
      printf("you press %c ",ch);
// ประกาศตัวแปร chเป็นชนิด char
// แสดงข้อความ Enter your favorite
   letter : บนจอภาพ
// รอรับการป้อนตัวอักษร 1 ตัวจาก
   แป้นพิมพ์นำไปเก็บไว้ที่ตัวแปร ch
// ขึ้นบรรทัดใหม่จำนวน 3 บรรทัด
// แสดงตัวอักขระที่ป้อนเข้ามา
   ณ ตำแหน่ง %c
10

11

12
getch();

      return 0;

}
// ฟังก์ชัน getch() ใช้หยุดดูผลจนกว่า
   กดแป้นพิมพ์ใดๆ
// คืนค่า 0 ให้ฟังก์ชัน main เพื่อบอกว่า
   โปรแกรมทำงานสมบูรณ์
ผลที่ได้จากการ Run
http://www.krujintana.com/content/picture/getchar.png
  http://www.krujintana.com/content/picture/ccc.jpg  การรับข้อมูลจากแป้นพิมพ์ด้วยฟังก์ชัน getche
              ฟังก์ชัน getche เป็นฟังก์ชันที่อยู่ใน header ไฟล์ conio.h ที่ใช้รับข้อมูลชนิด char เข้ามาจากแป้นพิมพ์ ข้อมูลที่ป้อนเข้ามาด้วยฟังก์ชัน getcheนี้ จะถูกเก็บไว้ในตัวแปรที่รองรับโดยไม่ต้องกดแป้น Enter และข้อมูลที่ป้อนเข้าไปจะปรากฏให้เห็นบนจอภาพ
             http://www.krujintana.com/content/picture/bullet_left.gif รูปแบบคำสั่ง
                     variable=getche();
                     โดยที่ variable คือชื่อของตัวแปรที่ต้องเป็นชนิด char เพื่อรับข้อมูลที่ป้อนเข้ามาทางแป้นพิมพ์
             http://www.krujintana.com/content/picture/bullet_left.gif ตัวอย่างการใช้ฟังก์ชัน getchar
                     ch=getche();
                      หมายถึง รอรับตัวอักขระที่ป้อนเข้ามาเพียง 1 ตัวนำไปเก็บที่ตัวแปร chโดยตัวอักษรที่ป้อนเข้ามา จะปรากฏบนจอภาพ และไม่ต้องกดแป้น Enter
        http://www.krujintana.com/content/picture/blue04_next.gif ตัวอย่างที่ 5   การรับข้อมูลชนิด char ด้วยฟังก์ชัน getche()
 
1
2
3
4
#include <stdio.h>
#include <conio.h>
int main()
{

5
6

7

8
9
      char ch;
      printf("Enter your favorite letter : ");

      ch=getche();

      printf("\n\n\n");
      printf("you press %c ",ch);
// ประกาศตัวแปร chเป็นชนิด char
// แสดงข้อความ Enter your favorite
   letter : บนจอภาพ
// รอรับการป้อนตัวอักษร 1 ตัวจาก
   แป้นพิมพ์นำไปเก็บไว้ที่ตัวแปร ch
// ขึ้นบรรทัดใหม่จำนวน 3 บรรทัด
// แสดงตัวอักขระที่ป้อนเข้ามา
   ณ ตำแหน่ง %c
10

11

12
      getch();

      return 0;

}
// ฟังก์ชัน getch() ใช้หยุดดูผลจนกว่า
   กดแป้นพิมพ์ใดๆ
// คืนค่า 0 ให้ฟังก์ชัน main เพื่อบอกว่า
   โปรแกรมทำงานสมบูรณ์

                                                                                      




ไม่มีความคิดเห็น:

แสดงความคิดเห็น