4. การแสดงผลและการรับค่า
ฟังก์ชัน printf() เป็นฟังก์ชันจากคลัง
ที่มาพร้อมกับตัวแปลโปรแกรมภาษาซี ใช้สำหรับการแสดงผล มีรูปแบบดังนี้
printf("สายอักขระควบคุม", ตัวแปร);
โดยที่ สายอักขระควบคุม ประกอบด้วย 3 ส่วน คือ
-
ตัวอักขระที่จะแสดง
-
รูปแบบการแสดงผล ขึ้นต้นด้วยเครื่องหมายเปอร์เซ็นต์(%)
- ลำดับหลีก
(escape sequence)
ตัวแปร คือ
ชื่อของตัวแปรที่จะแสดงผล
รูปแบบการแสดงผล (format
specifiers)
การกำหนดรูปแบบการแสดงผล
· ขึ้นต้นด้วยเครื่องหมายเปอร์เซ็นต์(%)
· ตามด้วยอักขระ
1 ตัว หรือหลายตัว โดยที่อักขระนั้นมีความหมายดังนี้
อักขระ
|
ชนิดข้อมูล
|
รูปแบบการแสดงผล
|
c
|
char
|
อักขระเดียว
|
d
o
x
|
int
|
จำนวนเต็มฐานสิบ
จำนวนเต็มฐานแปด
จำนวนเต็มฐานสิบหก
|
f
|
float
|
จำนวนที่มีทศนิยม
ในรูปฐานสิบ
|
ตัวอย่าง การใช้ฟังก์ชัน printf()
#include <stdio.h>
void main()
{
int n;
float score;
n = 10;
score = 100;
printf("No : %d
Score : %f", n, score);
}
ผลการกระทำ
No :
10 Score :
100.000000
แสดงค่าที่เก็บในตัวแปร n ในรูปแบบจำนวนเต็ม และแสดงค่าที่เก็บใน score
ในรูปแบบจำนวนจริงที่มีทศนิยม
ตัวอย่าง การใช้ฟังก์ชัน printf()
#include <stdio.h>
void main()
{
int n;
float score;
n = 10;
score = 100;
printf("
No :
%d", n);
printf(" Score
: %f", score);
}
ผลการกระทำ
No :
10 Score :
100.000000
ลำดับหลีก
(escape
sequence)
ในการแสดงผล
บางสิ่งบางอย่างที่จะแสดง อาจไม่ใช่ตัวอักษร
จึงไม่สามารถที่จะเขียนสิ่งที่จะแสดงไว้ในโปรแกรมได้ เช่น
ต้องการเขียนโปรแกรมให้ส่งเสียง (แสดงผลเป็นเสียง)
หรือต้องการให้เลื่อนขึ้นบรรทัดใหม่ก่อนแสดงข้อความ
ดังนั้นในการเขียนโปรแกรมเพื่อแสดงผลสิ่งที่ไม่ใช่ตัวอักขระปกติ
จะต้องใช้ลำดับหลีก เพื่อช่วยในการกำหนดอักขระพิเศษหรือสิ่งที่ไม่ใช่อักขระที่ต้องการให้โปรแกรมแสดง
ลำดับหลีก
จะเขียนขึ้นต้นด้วยเครื่องหมายทับกลับหลัง ( / ) แล้วตามด้วยอักขระที่ตามหลังมานี้ในลักษณะปกติ
เพราะอักขระเหล่านี้จะมีความหมายพิเศษแตกต่างออกไป
ลำดับหลีกที่ใช้ในการแสดงผลสิ่งที่ไม่ใช่อักขระปกติ
ได้แก่
ลำดับหลีก
|
ผลการกระทำการ
|
\n
|
ขึ้นบรรทัดใหม่
|
\t
|
เลื่อนไปยังจุดตั้งระยะถัดไป
|
\a
|
เสียงกระดิ่ง
|
\b
|
ถอยไปหนึ่งที่ว่าง
|
\f
|
ขึ้นหน้าใหม่
|
\\
|
แสดงเครื่องหมายทับกลับหลัง
|
\’
|
แสดงเครื่องหมายฝนทอง
|
\”
|
แสดงเครื่องหมายฟันหนู
|
การใช้ลำดับหลีก
\n
#include
<stdio.h> //ข้อความสั่งประมวลผลก่อน
void
main()
{
printf("Welcome to C++\n"); //ฟังก์ชันจากคลัง
ใช้ในการแสดงข้อความที่อยู่ใน “ ”
}
ผลการกระทำ
Welcome to C++
_
แสดงข้อความ
Welcome
to C++ ณ ตำแหน่งที่ตัวชี้ตำแหน่งอยู่ แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ตัวอย่างการใช้ลำดับหลีก \n
#include
<stdio.h> //ข้อความสั่งประมวลผลก่อน
void
main()
{
printf("Welcom\n to\n C++\n"); /*ฟังก์ชันจากคลังใช้ในการแสดงข้อความและอักขระที่
อยู่ในฟันหนู ("
") */
}
ผลการกระทำ
Welcome
To
C++
_
แสดงข้อความ
Welcome
ณ ตำแหน่งที่ตัวชี้จอภาพอยู่
แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ที่ต้นบรรทัดใหม่
แสดงข้อความ to แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ที่ต้นบรรทัดใหม่
แสดงข้อความ C++ แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ตัวอย่างการใช้รูปแบบการแสดงผลของจำนวนเต็ม
#include
<stdio.h>
void
main()
{
int i, j;
i = 405;
j = 50;
printf(" %d\n", i);
printf(" %d %d", i, j);
}
ผลของการกระทำ
405
405 50
ตัวอย่างการใช้รูปแบบการแสดงผลของจำนวนจริงที่มีทศนิยม
#include
<stdio.h>
void
main()
{
float i, j;
i = 100.123456
j = 4.345678e2;
printf("\n\n Fixed pointf
format");
printf("\n i=%f j=%f", i, jP;
}
ผลการกระทำ
บรรทัดว่าง
บรรทัดว่าง
Fixde
point format
บรรทัดว่าง
i= 100.123456 j=434.567810
ฟังก์ชัน scanf()
ฟังก์ชัน scanf()
เป็นฟังก์ชันจากคลัง
ใช้ในการรับข้อมูลจากแป้นพิมพ์โดยจะบอกเลขที่อยู่ของตัวแปรในหน่วยความจำ
แล้วจึงนำค่าที่รับมาไปเก็บไว้ตามที่อยู่นั้น
ฟังก์ชัน scanf()
มีรูปแบบดังนี้
Scanf("%รูปแบบ", &ตัวแปร);
โดยที่ &ตัวแปร หมายถึง เลขที่อยู่ (address) ของตัวแปรที่จะรับค่ามาเก็บในหน่วยความจำ
ตัวอย่างการรับข้อมูลโดยใช้
scanf()
scanf(" %f",
&radius);
รับข้อมูลชนิด float
จากแป้นพิมพ์ แล้วนำไปเก็บไว้ในตัวแปร radius ซึ่งมีเลขที่อยู่คือ
&radius
scanf("%d%f%d",
&no, &amount, &unit);
รับข้อมูล 3 ค่า
ชนิด int, float และ int
จากแป้นพิมพ์ แล้วนำไปเก็บไว้ในตัวแปร no, amount และ unit ซึ่งมีเลขที่อยู่ตามที่กำหนดไว้ใน
&no, &amount และ &unit
scanf("%f%f%f",
&length, &width, &height);
รับข้อมูล 3 ค่า ชนิด float จากแป้นพิมพ์
แล้วนำไปเก็บไว้ในตัวแปร length,
width cและ height
ซึ่งมีเลขที่อยู่ตามที่กำหนดไว้ใน &length, &width และ
&height