ใบความรู้ที่ 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)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น