ใบความรู้

ใบความรู้ที่ 4.4

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

 

          ใบความรู้นี้จะกล่าวถึงวิธีการรับข้อมูลผ่านคีย์บอร์ดเข้ามาในโปรแกรม (input) เพื่อนำมาประมวลผล รวมทั้งวิธีการแสดงผลข้อความหรือผลลัพธ์ของโปรแกรมออกทางจอภาพ (output)

 

การแสดงผลข้อมูล (output)

          ฟังก์ชั่นที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ คือ printf (print formatted)

          รูปแบบของฟังก์ชั่น printf คือ

     printf(“string_format”, data_list);

          string_format           คือ  สตริงที่ต้องการแสดงผล ซึ่งอาจเป็นข้อความธรรมดา เช่น Hello หรือเป็นสัญลักษณ์แทนชนิดข้อมูลต่างๆ ซึ่งจะถูกแทนด้วยค่าคงที่, ตัวแปร, หรือนิพจน์ใดๆ ที่กำหนดมาเป็นพารามิเตอร์(ในส่วนของ data_list) ตั้งแต่ตัวที่ 2 เป็นต้นไป เช่น %d ใช้แทนข้อมูลชนิดเลขจำนวนเต็ม, %c ใช้แทนข้อมูลชนิดตัวอักษร เป็นต้น

          data_list  คือ ข้อมูลที่จะแสดงผล ซึ่งอาจเป็นค่าคงที่, ตัวแปร, หรือนิพจน์ใดๆ

ตัวอย่างการใช้งานฟังก์ชั่น printf()

ตัวอย่างที่ 8.1

     printf(“Hello World”);

ผลลัพธ์ของโปรแกรม

     Hello World

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

          การใช้งานฟังก์ชั่น printf() ในลักษณะนี้เป็นการแสดงข้อความที่กำหนดออกทางจอภาพเท่านั้น ไม่ได้ต้องการแสดงผลข้อมูลอื่นเพิ่มเติม ดังนั้นจึงรับค่าพารามิเตอร์เพียงตัวเดียวเท่านั้น คือ รับค่า string format ไม่จำเป็นต้องรับพารามิเตอร์ data list

ตัวอย่างที่ 8.2

     printf(“1+1 = %d”, 2);

ผลลัพธ์ของโปรแกรม

     1+1 = 2

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

          ฟังก์ชั่น printf() ในข้อนี้มีการใช้ string format ในรูปแบบของข้อความธรรมดาผสมกับตัวแทนชนิดข้อมูล ดังนั้นเมื่อมีการแทนที่ชนิดข้อมูลแล้ว จะต้องมีการรับค่าพารามิเตอร์อีกตัวหนึ่งสำหรับเป็นข้อมูลที่จะนำมาแทนที่ลงในตัวแทนชนิดข้อมูลนั้น ซึ่งในที่นี้ทำการรับค่าพารามิเตอร์ data list เป็นข้อมูลค่าคงที่เข้ามา

ตัวอย่างที่ 8.3

     char  X = ‘x’;

     printf(“Hello %cyz”, X);

ผลลัพธ์ของโปรแกรม

     Hello xyz

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

          ข้อนี้คล้ายกับข้อที่ผ่านมา แต่มีสิ่งหนึ่งที่แตกต่าง คือ data list ในข้อนี้เป็นตัวแปร แต่ในข้อที่ผ่านมาเป็นค่าคงที่

ตัวอย่างที่ 8.4

     int  x = 3;

     char  y[5] = “five”;

     printf(“%d + %d = %s”, 2, x, y);

ผลลัพธ์ของโปรแกรม

     2+3 = five

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

          จากตัวอย่างที่ผ่านมาจะเห็นว่าฟังก์ชั่น printf() รับค่าพารามิเตอร์ได้หลายตัว ซึ่งขอบเขตของพารามิเตอร์ string format จะถูกกำหนดอยู่ภายในเครื่องหมาย “ ” แต่สำหรับพารามิเตอร์ data list ไม่ต้องใช่เครื่องหมาย “ ” คลุม

          ฟังก์ชั่น printf() จะจับคู่ข้อมูลที่จะแสดงผลกับตัวแทนชนิดข้อมูลเรียงตามลำดับ เช่น จากตัวอย่าง

          1. จับคู่ตัวแทนชนิดข้อมูล  %d  เข้ากับค่าคงที่ (ค่า 2)

          2. จับคู่ตัวแทนชนิดข้อมูล  %d  เข้ากับตัวแปร x ซึ่งเป็นข้อมูลชนิดเลขจำนวนเต็ม

          3. จับคู่ตัวแทนชนิดข้อมูล  %s  เข้ากับตัวแปร y ซึ่งเป็นข้อมูลชนิดสตริง

รหัสที่ขึ้นต้นด้วยเครื่องหมาย “\” (Backslash)

รหัสที่ขึ้นต้นด้วยเครื่องหมาย “\” (Backslash) เรียกวา Escape Character มักใช้กำหนดไว้ในส่วนของ string format ของฟังก์ชั่น printf() เพื่อช่วยในการจัดการแสดงผลตัวอักษรออกทางจอภาพ ซึ่งแบ่งออกเป็นหลายประเภทดังนี้

ตารางที่ 8.2 แสดง Escape Character

รหัส

ความหมาย

\0

ค่าว่าง (null character)

\a

ส่งเสียง 1 ครั้ง (bell)

\b

ถอยหลัง 1 ช่องตัวอักษร (backspace)

\f

ขึ้นหน้าใหม่ (form feed)

\n

ขึ้นบรรทัดใหม่ (new line)

\r

เลื่อนเคอร์เซอร์ไปทางซ้ายสุด (carriage return)

\t

แท็บแนวนอน (horizontal tab)

\v

แท็บแนวตั้ง (vertical tab)

\’

พิมพ์เครื่องหมาย

\”

พิมพ์เครื่องหมาย

\\

พิมพ์เครื่องหมาย \

การรับข้อมูล(Input)

          ฟังก์ชั่นที่ใช้ในการรับข้อมูลจากคีย์บอร์ด คือ scanf (scan formatted)

          รูปแบบของฟังก์ชั่น scanf คือ

     scanf(“string_format”, address_list);

          string_format           ต่างจาก string format ของฟังก์ชั่น printf() ตรงที่ string format ของฟังก์ชั่น scanf() จะอยู่ในรูปแบบของตัวแทนชนิดข้อมูลต่าง ๆ เช่น %d, %c, %s, %f, ... เท่านั้น

           address_list  เป็นตัวระบุที่อยู่ (address) ในหน่วยความจำที่จะใช้ในการเก็บข้อมูลที่รับเข้ามา โดยใช้ ampersand (&) นำหน้าชื่อตัวแปรที่ต้องการรับข้อมูลเข้ามาเก็บไว้

ตัวอย่างที่ 8.5

     scanf(“%d %d %c”, &a, &b, &c);

     printf(“%d %d %c”, a, b, c);

ผลลัพธ์ของโปรแกรม

     10 20 c

     10 20 c

ตัวอย่างที่ 8.6

     #include <stdio.h>

    

     main() {

          char name[10];

          int a, b, c;

          float d, e, f;

 

          printf(“Enter your name : ”);    

          scanf(“%s”, name);

          printf(“Enter integer number1 : ”);

          scanf(“%d”, &a);

          printf(“Enter integer number2 : ”);

          scanf(“%d”, &b);

          printf(“Enter integer number3 : ”);

          scanf(“%d”, &c);

          printf(“Enter integer number4 : ”);

          scanf(“%d”, &d);

          printf(“Enter integer number5 : ”);

          scanf(“%d”, &e);

          f = (a+b+c+d+e) / 5;

          printf(“\nHi %s\n”, name);    

          printf(“Average of your number is %.2f”, f);    

     }

ผลลัพธ์ของโปรแกรม

     Enter your name : somsak

     Enter integer number1 :  1

     Enter integer number2 :  2

     Enter integer number3 :  3

     Enter integer number4 :  4.5

     Enter integer number5 :  5.5

 

     Hi Somsak

     Average of your number is 3.20

การรับและแสดงผลข้อมูลแบบตัวอักษร

          การรับและแสดงผลข้อมูลแบบตัวอักษร นอกจากจะใช้ฟังก์ชั่น scanf() และ printf() แล้ว ยังมีฟังก์ชั่นเฉพาะที่ใช้ในการรับข้อมูลแบบตัวอักษร คือ getchar() และแสดงผลข้อมูลแบบตัวอักษร คือ putchar() ด้วย

          getchar()      เป็นฟังก์ชั่นสำหรับรับข้อมูล 1 ตัวอักษรจากคีย์บอร์ด

          putchar()      เป็นฟังก์ชั่นสำหรับแสดงผลข้อมูล 1 ตัวอักษรออกทางจอภาพ

ตัวอย่างที่ 8.7 การทำงานของฟังก์ชั่น getchar() และ putchar()

     #include <stdio.h>

    

     main() {

          char c;

          c = getchar();

          putchar(c);

     }

ผลลัพธ์ของโปรแกรม

     c

          getch()         อ่าน 1 ตัวอักษรจากคีย์บอร์ด แต่ไม่แสดงตัวอักษรที่รับเข้ามา

ออกทางหน้าจอ

          getche()       อ่าน 1 ตัวอักษรจากคีย์บอร์ด และแสดงตัวอักษรที่รับเข้ามาออก

ทางหน้าจอด้วย

ตัวอย่างที่ 8.7 การทำงานของฟังก์ชั่น getchar() และ putchar()

    #include <stdio.h>

    

    main() {

         char c;

         do {

         c = getchar();

         } while(c != ‘E’);

    }

    #include <stdio.h>

    #include <conio.h>

    main() {

         char c;

         do {

         c = getch();

         } while(c != ‘E’);

    }

     #include <stdio.h>

     #include <conio.h>

     main() {

          char c;

          do {

          c = getch();

          } while(c != ‘E’);

     }

ผลลัพธ์ของโปรแกรม

     a

     b

     c

     d

     e

     D

     E

 

     abcdeDE

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

          โปรแกรมที่ 1 ฟังก์ชั่น getchar() เมื่อป้อนตัวอักษรเข้ามาแล้วจะต้องกด Enter ทุกครั้ง ฟังก์ชั่น getchar() ถึงจะรับตัวอักษรไปประมวลผล และเมื่อกด Enter  เคอร์เซอร์ก็จะย้ายไปยังบรรทัดถัดไป

          โปรแกรมที่ 2 ฟังก์ชั่น getch() เมื่อป้อนตัวอักษรเข้ามา ตัวอักษรจะถูกนำไปประมวลผลทันที โดยที่ผู้ใช้ไม่ต้องกด Enter (ฟังก์ชั่น getch() เป็นฟังก์ชั่นของเฮดเดอร์ไฟล์ conio.h)

          โปรแกรมที่ 3 ฟังก์ชั่น getche() เมื่อป้อนตัวอักษรเข้ามา ตัวอักษรจะถูกนำไปประมวลผลและแสดงผลทันที โดยที่ผู้ใช้ไม่ต้องกด Enter (ฟังก์ชั่น getch() เป็นฟังก์ชั่นของเฮดเดอร์ไฟล์ conio.h)