printf คือคำสั่งการแสดงผล
สามารถเขียนได้ 3 รูปแบบที่เจอบ่อยๆ ดังนี้
สามารถเขียนได้ 3 รูปแบบที่เจอบ่อยๆ ดังนี้
รูปแบบ
|
ฟังก์ชั่น
printf
|
Output
(ผลลัพท์)
|
1
|
printf(“Hello”);
|
Hello
|
printf(“Satreeislam\nYala”)
|
Satreeislam
Yala
|
|
2
|
printf(“%d”,20);
|
20
|
printf(“number : %d”,20);
|
number : 20
|
|
printf(“%s”,”School”);
|
School
|
|
3
|
int num1=2,num2=5;
float number=10.2;
char sex=’F’;
printf(“%d”,num1);
printf(“%d”,num2);
printf(“%d %d”,num1,num2);
printf(“%d %d”,num2,num1);
printf(“%d”,num1+num2);
printf(“%.2f”,number);
printf(“%c”,sex);
|
2
5
2 5
5 2
7
10.20
F
|
อธิบาย
รูปแบบที่ 1 คือ มีข้อความอยู่ภายในเครื่องหมาย " "
เช่น printf(“Hello”); ผลลัพท์ (output) ที่ได้ คือ Hello
printf(“Satreeislam\nYala”) ผลลัพท์ (output) ที่ได้ คือ Satreeislam
Yala
จะเห็นว่ามี 2 บรรทัดเพราะว่ามีอักขระควบคุมการแสดงผลอยู่คือ \n
\n ใช้สำหรับให้ข้อความข้างหลังต่อจาก n ขึ้นบรรทัดใหม่
ซึ่ง \ ต่างๆมีมากกว่านี้อีก ดังรูป แต่ที่ใช้บ่อยๆคือ \n
อ้างอิง
เช่น printf(“Hello”); ผลลัพท์ (output) ที่ได้ คือ Hello
printf(“Satreeislam\nYala”) ผลลัพท์ (output) ที่ได้ คือ Satreeislam
Yala
จะเห็นว่ามี 2 บรรทัดเพราะว่ามีอักขระควบคุมการแสดงผลอยู่คือ \n
\n ใช้สำหรับให้ข้อความข้างหลังต่อจาก n ขึ้นบรรทัดใหม่
ซึ่ง \ ต่างๆมีมากกว่านี้อีก ดังรูป แต่ที่ใช้บ่อยๆคือ \n
อ้างอิง
รูปแบบที่ 2 คือ เจอ % ต่างๆ (%d %s %c %f ) ในเครื่องหมาย " "
int ใช้กับ %d char ใช้กับ %c %s float ใช้กับ %f %.2f %.3f double ใช้กับ %f %lf
เช่น printf(“%d”,20); ให้เอา 20 ไปแทนที่ %d output จะได้ 20
printf(“number : %d”,20); ให้เอา 20 ไปแทนที่ %d เหมือนเดิม แต่หากมีข้อความ
อะไรก็ให้แสดงข้อความนั้นด้วยเหมือนรูปแบบที่ 1 output จะได้ number : 20
printf(“%s”,”School”); เอาข้อความไปแทนที่ตรง %s output จะได้ School
คำถาม ? หาก printf(“%d”,Cat); หรือ printf(“%s”,20); จะเกิดอะไรขึ้น
โปรแกรม error หรือเกิดอะไรขึ้นกับผลลัพท์ ? .. ลองคิดดู
รูปแบบที่ 3 คือ มีการประกาศตัวแปร แล้ว printf เรียกใช้ %ต่างๆ ข้างหลังจะไม่มีค่าโดยตรงแต่เป็นตัวแปรแทน วิธีการคือ ดูว่าตัวแปรนั้นเก็บค่าอะไรไว้แล้วมาแสดงตามปกติ
เช่น printf(“%d”,num1); ให้ดูว่า ตัวแปร num1 มีค่าอะไรจากด้านบนที่ประกาศ
int ใช้กับ %d char ใช้กับ %c %s float ใช้กับ %f %.2f %.3f double ใช้กับ %f %lf
เช่น printf(“%d”,20); ให้เอา 20 ไปแทนที่ %d output จะได้ 20
printf(“number : %d”,20); ให้เอา 20 ไปแทนที่ %d เหมือนเดิม แต่หากมีข้อความ
อะไรก็ให้แสดงข้อความนั้นด้วยเหมือนรูปแบบที่ 1 output จะได้ number : 20
คำถาม ? หาก printf(“%d”,Cat); หรือ printf(“%s”,20); จะเกิดอะไรขึ้น
โปรแกรม error หรือเกิดอะไรขึ้นกับผลลัพท์ ? .. ลองคิดดู
รูปแบบที่ 3 คือ มีการประกาศตัวแปร แล้ว printf เรียกใช้ %ต่างๆ ข้างหลังจะไม่มีค่าโดยตรงแต่เป็นตัวแปรแทน วิธีการคือ ดูว่าตัวแปรนั้นเก็บค่าอะไรไว้แล้วมาแสดงตามปกติ
เช่น printf(“%d”,num1); ให้ดูว่า ตัวแปร num1 มีค่าอะไรจากด้านบนที่ประกาศ
(int num1=2) num1 เท่ากับ 2 เพราะฉะนั้นเอา 2 ไปแทนที่ %d output จะได้ 2
printf(“%d %d”,num1,num2); การแสดงผลสามารถ แสดงทีเดียว 2 ค่าได้ โดยใช้
%d %d 2 ครั้ง แต่ด้านหลังเมื่อมีการแสดงผล 2 ค่า ด้านหลังต้องมีตัวแปร2ตัว คั่น
ด้วยเครื่องหมาย , output จะได้ 2 5
printf(“%d %d”,num2,num1); หากมีการสลับค่าแบบนี้ให้ดูดีๆ output จะได้ 5 2
printf(“%d”,num1+num2); การแสดงผล สามารถเอาค่าของ2ตัวแปรมาบวก
กันได้ (ลบ คูณ หาร ทำได้หมด) output จะได้ 7
printf(“%.2f”,number); ข้อนี้เป็นการแสดงตัวเลขทศนิยม ให้ดูตรงที่ ตัวเลขหน้าf
หากมีเลขใดก็หมายถึงทศนิยมตำแหน่งนั้น output จะได้ 10.20
printf(“%c”,sex); %c คือข้อความ(อักขระ)ตัวเดียว หาก %s คือ ข้อความมากกว่า 1
sex ค่าตัวแปลคือ F output จะได้ F
scanf คือคำสั่งการรับข้อมูล
เมื่อมีการประกาศตัวแปรใดๆ ตัวอย่างเช่น int number; (ประกาศตัวแปรชื่อว่า number เป็นชนิดตัวแปรแบบจำนวนเต็ม) หากไม่มีการกำหนดค่าตั้งแต่ต้นว่าตัวแปร number = เท่าไร
(เช่น int number=2;)
ค่าตัวแปรนั้นๆจะยังไม่มีค่า ดังนั้นผู้ใช้โปรแกรมต้องกำหนดเอง โดยใช้ฟังก์ชั่น scanf พื่อรับค่าเข้ามาในโปรแกรม
ฟังก์ชั่น scanf
|
Input
|
Output
|
int number;
printf(“Enter number: ”)
scanf(“%d”,&number);
|
10 |
Enter number:
Enter number: 10
|
อธิบาย
int number; //ประกาศตัวแปรชื่อว่า number เป็นชนิดจำนวนเต็ม
printf(“Enter number: ”) // แสดงข้อความว่า Enter number :
scanf(“%d”,&number); // รับค่าจำนวนเต็มเพราะเป็น %d มาเก็บไว้ในตัวแปร number จากด้านบน
//คือใส่เลข10 ตัวแปร number จึงมีค่าเป็น 10
int number; //ประกาศตัวแปรชื่อว่า number เป็นชนิดจำนวนเต็ม
printf(“Enter number: ”) // แสดงข้อความว่า Enter number :
scanf(“%d”,&number); // รับค่าจำนวนเต็มเพราะเป็น %d มาเก็บไว้ในตัวแปร number จากด้านบน
//คือใส่เลข10 ตัวแปร number จึงมีค่าเป็น 10
ทำไมต้องมี printf ก่อน scanf เสมอ ?
เพราะผู้ใช้ที่ไม่ได้เขียนโปรแกรมไม่รู้
เมื่อรันโปรแกรมจะมี _ กระพริบๆ โปรแกรมนี้ให้ทำอะไรต่อ
printf จึงจำเป็นต้องใช้เพื่อแสดงข้อความในโปรแกรมให้ผู้ใช้ทำอะไร
(ใส่ตัวเลขหรือข้อความหรืออย่างอื่น)
ฟังก์ชั่นคณิตศาสตร์
เนื่องจากว่า การบวกลบคูณหาร.ในภาษาซี ใช้แค่ประกาศ #include<stdio.h> ก็เพียงพอแล้ว
แต่หากต้องการทำมากกว่านั้น เช่น หาค่ารากที่สอง ยกกำลัง หาค่า sin con tan หาค่า log ต่างๆ อื่นๆที่เกี่ยวข้องกับการคำนวณ จำเป็นต้อง #include<math.h>
ตัวอย่าง เช่น 2 ยกกำลัง 5 เท่ากับเท่าไร
ใน math.h จะต้องเรียกใช้คำสั่งที่มีชื่อว่า pow อ้างอิง
#include <stdio.h>
#include <math.h>
#include <conio.h>
main ()
{
printf("2 ^ 5 = %.2f", pow(2, 5));
getch();
}
แต่หากต้องการทำมากกว่านั้น เช่น หาค่ารากที่สอง ยกกำลัง หาค่า sin con tan หาค่า log ต่างๆ อื่นๆที่เกี่ยวข้องกับการคำนวณ จำเป็นต้อง #include<math.h>
ตัวอย่าง เช่น 2 ยกกำลัง 5 เท่ากับเท่าไร
ใน math.h จะต้องเรียกใช้คำสั่งที่มีชื่อว่า pow อ้างอิง
#include <stdio.h>
#include <math.h>
#include <conio.h>
main ()
{
printf("2 ^ 5 = %.2f", pow(2, 5));
getch();
}
ผลลัพท์จะได้ (output) 32.00
..........................................................................................................................................................
หลังจากจบ2 คำสั่งนี้ เราสามารถเขียนโปรแกรมอะไรก็ได้มีมีการรับค่าแล้วมาคำนวณ
..........................................................................................................................................................
แบบฝึกหัด1 ให้เขียนโปรแกรมจำนวนสองจำนวนบวกกัน โดยจำนวนสองจำนวนรับค่าจากผู้ใช้
แบบฝึกหัด2 ให้เขียนโปรแกรมหาพื้นที่วงกลม รัศมีให้รับค่าจากผู้ใช้ และแสดงพื้นที่อยู่ในรูปทศนิยมสองตำแหน่ง
เฉลย
แบบฝึกหัด1
แนวคิด แบบฝึกหัด2
หลังจากจบ2 คำสั่งนี้ เราสามารถเขียนโปรแกรมอะไรก็ได้มีมีการรับค่าแล้วมาคำนวณ
..........................................................................................................................................................
แบบฝึกหัด1 ให้เขียนโปรแกรมจำนวนสองจำนวนบวกกัน โดยจำนวนสองจำนวนรับค่าจากผู้ใช้
แบบฝึกหัด2 ให้เขียนโปรแกรมหาพื้นที่วงกลม รัศมีให้รับค่าจากผู้ใช้ และแสดงพื้นที่อยู่ในรูปทศนิยมสองตำแหน่ง
เฉลย
แบบฝึกหัด1
แนวคิด รับค่าจากผู้ใช้ 2 จำนวน แสดงว่าต้องมีการเก็บค่าซึ่งต้องประกาศตัวแปรอย่างน้อย
2 ตัวแปร
รับค่าจากผู้ใช้ แสดงว่าต้องมีการใช้ฟังก์ชั่น
scanf
โปรแกรม
|
อธิบาย
|
#include<stdio.h>
|
เรียกใช้ไฟล์
stdio.h
|
#include<conio.h>
|
เรียกใช้ไฟล์
conio.h
|
main()
|
ฟังก์ชั่น
main
|
{
|
เริ่มฟังก์ชั่น
main
|
int number1, number2;
|
ประกาศตัวแปร
number1 number2 ชนิดจำนวนเต็ม
|
printf(“Enter number1:
”);
|
แสดงข้อความ
Enter number1:
|
scanf(“%d”,&number1);
|
รับค่าจากผู้ใช้
เก็บในตัวแปร number1
|
printf(“Enter number2: ”);
|
แสดงข้อความ
Enter number2:
|
scanf(“%d”,&number2);
|
รับค่าจากผู้ใช้
เก็บในตัวแปร number2
|
printf(“Sum =
%d”,number1+number2);
|
แสดงข้อความ
Sum = และแสดงค่า number1+number2
|
getch();
|
ให้ผู้ใช้กดปุ่มใดๆเพื่อออกจากโปรแกรม
|
}
|
จบฟังก์ชั่น
main
|
แนวคิด แบบฝึกหัด2
รับค่ารัศมีจากผู้ใช้
แสดงว่าต้องมีการเก็บค่าซึ่งต้องประกาศตัวแปรอย่างน้อย 1 ตัวแปร
รับค่าจากผู้ใช้แสดงว่าต้องมีการใช้ฟังก์ชั่น
scanf
แสดงในรูปทศนิยมสองตำแหน่ง
%.2f
โปรแกรม
|
อธิบาย
|
#include<stdio.h>
|
เรียกใช้ไฟล์
stdio.h
|
#include<conio.h>
|
เรียกใช้ไฟล์
conio.h
|
main()
|
ฟังก์ชั่น
main
|
{
|
เริ่มฟังก์ชั่น
main
|
float R;
|
ประกาศตัวแปร
R ชนิดจำนวนทศนิยม
|
printf(“Enter R of Circle: ”);
|
แสดงข้อความ
Enter R of Circle:
|
scanf(“%f”,&R);
|
รับค่าจากผู้ใช้
เก็บในตัวแปร R
|
printf(“Area Circle = %.2f
”,3.14*R*R);
|
แสดงข้อความ
Area Circle R= และแสดงค่ารัศมี R และคำนวณพื้นที่วงกลมจาก 3.14*R*R
|
getch();
|
ให้ผู้ใช้กดปุ่มใดๆเพื่อออกจากโปรแกรม
|
}
|
จบฟังก์ชั่น
main
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น