บทที่ 2
ตัวแปร
ตัวแปร (Variable) คือ สิ่งที่จะช่วยเราจาค่าต่างๆไว้แสดงค่าหรือคานวณในภายหลังโดยตัวแปรเหล่านี้
จะเก็บค่าเอาไว้ในหน่วยความจา(Memory) ของคอมพิวเตอร์นั่นเอง
การประกาศตัวแปร (Declarations) ก่อนที่เราจะนาตัวแปรมาใช้ได้ เราต้องประกาศตัวแปรเสียก่อน
(สร้างมันขึ้นมา)โดยมีรูปแบบดังนี้
int number;
char letter;
int และ char คือประเภทของข้อมูล ที่ตัวแปรนั้นๆสามารถเก็บได้ ส่วนnumber และ letter คือชื่อของตัว
แปร ซึ่งเวลาเราจะเรียกข้อมูลที่เก็บค่าเอาไว้มาใช้ก็ใช้ชื่อตัวแปรนี่แหละ ต่อไปมาดูประเภทของข้อมูล
กันดีกว่า
Type name Meaning เก็บค่าได้ตั้งแต่
char ใช้เก็บ ตัวอักษร หรืออักขระ1 ตัว (Character) -128 ถึง 127
int ใช้เก็บ เลขจานวนเต็ม (Integer) -2,147,483,648 ถึง 2,147,483,647
float ใช้เก็บ เลขจานวนจริง (Floating number) 3.4E +/-38 (7หลัก)
double
ใช้เก็บ เลขจานวนจริง มีขนาดใหญ่กว่าfloat เก็บได้
ละเอียดกว่า
1.7E +/- 308 (15หลัก)
ตัวอย่างการเลือกใช้ประเภทของตัวแปร
ถ้าจะเก็บข้อมูลเป็น ประเภทของตัวแปรควรจะเป็น
เกรดเฉลี่ย (เช่น 3.90) float
อายุคน (เช่น 50 ปี , 25 ปี) char หรือ int
ความยาวของถนน (เช่น25 km) int (หรือ float ถ้าเป็นทศนิยม)
ความสูงของคน (เช่น 170.6) float
เงินเดือน (ไม่เกิน30,000) int
เงินเดือนนักธุรกิจพันล้าน int
ผลการคานวณที่มีทศนิยม 20 ตาแหน่ง double
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 17
การกาหนดค่าตัวแปรคือการเปลี่ยนค่าที่ตัวแปรนั้นๆ เก็บไว้ในหน่วยความจาเป็นค่าที่กาหนด
int x; // declare x asa integer variable
x = 5; // assign a value to x
บรรทัดแรกคือการประกาศตัวแปรที่มีชื่อว่า x ไว้เก็บข้อมูลประเภทเลขจานวนเต็ม(Integer)
บรรทัดที่สอง คือการกาหนดค่าตัวแปร ในที่นี้เป็นการกาหนดค่า5 ลงในตัวแปรx
เราสามารถกาหนดค่าตัวแปรพร้อมๆกับการประกาศตัวแปรได้ ดังนี้
int x = 5;
char c = 'A';
double balance= 3800076.75;
float gpa = 3.9;
การแสดงผลด้วยคาสั่งprintf() มีรูปแบบดังนี้
int x = 5, y = 7;
float z = 392.65;
char c = 'A';
printf( "x + y = %dn", x + y ); // %d - integer
printf( "z = %fn", z ); // %f - floating number
printf( "c = %cn", c ); // %c - character
ผลลัพธ์
x + y = 12
z = 392.649994
c = A
จะเห็นได้ว่าเราใช้รูปแบบ % กับชนิดข้อมูลต่าง ๆ ดังนี้ (ใช้กับการพิมพ์ และการรับข้อมูล)
%d int
%c char
%f float
%lf double
%s string
นอกจากนี้ เรายังสามารถใช้ %o %x %e %g กับตัวแปรประเภทตัวเลขได้อีกด้วย
คาถาม
จงประกาศตัวแปรดังรายละเอียดต่อไปนี้
เสร็จแล้ว ให้แสดงผลลัพธ์ออกมาให้เหมือนด้านล่างนี้
The value of my first variable is: 23.61
ชื่อตัวแปร: myFirstVar (ตัวใหญ่ตัวเล็กสังเกตให้ดีด้วย)
ค่าในตัวแปร: 23.61
ผลลัพธ์
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 18
Variable naming
ชื่อตัวแปรนั้น หากว่าอยากจะใช้ชื่อไหน ก็สรรหามาประกาศกันได้คงจะสับสนกันน่าดู
ภาษาซีมีกฏเกณฑ์ในการตั้งชื่อตัวแปรดังนี้
1. ต้องประกอบขึ้นจากตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมาย _ (Underscore) เท่านั้น
2. อักขระตัวแรกจะต้องเป็นตัวอักษรภาษาอังกฤษ หรือเครื่องหมาย _ เท่านั้น (ห้ามเป็นตัวเลข)
3. ตัวพิมพ์ใหญ่ และตัวพิมพ์เล็กถือเป็นคนละตัวกัน เช่นSalary และ SALARY เป็นชื่อที่แตกต่างกัน
4. มีความยาวไม่เกิน31 อักขระ
5. ชื่อจะต้องไม่ซ้ากับคาสงวน (Reserved word)
คาสงวนของภาษาซี มีดังนี้
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
ถ้าเราตั้งชื่อตัวแปร ไม่เป็นไปตามกฏโปรแกรมก็จะไม่สามารถทางานได้
นอกจากนี้ยังมีสิ่งที่ควรรู้ในการตั้งชื่ออีกคือ
- ไม่ควรตั้งชื่อตัวแปรโดยใช้ตัวพิมพ์ใหญ่ทั้งหมด เพราะอาจถูกเข้าใจผิดว่าเป็นค่าคงที่
- หากชื่อนั้นประกอบขึ้นจากคาหลายคา ให้ใช้ _ คั่นแต่ละคา เช่น student_info_nickname
หรือใช้ตัวพิมพ์ใหญ่แทน เช่น studentInfoNickname
- และอีกอันที่ขาดไม่ได้คือ ควรตั้งชื่อให้สื่อความหมาย ว่าตัวแปรนั้นๆเก็บข้อมูลอะไรไว้อยู่
เช่น student_id เราสามารถทราบได้ทันทีว่าเป็นข้อมูลID ของนักเรียน
แต่หากตั้งชื่อแค่ว่า data เราไม่สามารถทราบได้ว่าเป็นข้อมูลอะไร
หากมาอ่านในภายหลังจะทาความเข้าใจได้ลาบาก
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 19
คาถาม
ชื่อตัวแปรต่อไปนี้ หากข้อใดสามารถนาไปใช้ได้ให้ตอบถูกและข้อใดผิดกฎการตั้งชื่อตอบผิด
1. customerName
2. ID
3. address1
4. %available
5. auto
6. Int
7. 3rdSubject
8. _sys_one
9. address_2
10. number5
11. #5
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 20
การทางานของโปรแกรมส่วนใหญ่มักจะเป็นการเชื่อมโยงกับผู้ใช้แบบ 2 ทิศทางคือ ทั้งภาคของ
การแสดงผลการทางานออกทางหน้าจอ และภาคของการรับข้อมูลจากผู้ใช้เข้ามาทางคีย์บอร์ด เพื่อร่วม
ในการประมวลผลของโปรแกรม
ในภาษาC การรับข้อมูลจากคีย์บอร์ดสามารถทาได้โดยการเรียกใช้ฟังก์ชันscanf()ซึ่งเป็น
ฟังก์ชันมาตรฐานสาหรับรับข้อมูลจากคีย์บอร์ด โดยสามารถรับข้อมูลได้ทุกประเภทไม่ว่าจะเป็นจานวน
เต็ม ทศนิยม อักขระหรือข้อความ
รูปแบบคาสั่ง scanf()
การใช้รหัสควบคุมรูปแบบ เพื่อกาหนดชนิดของข้อมูลที่จะรับเข้ามาจากคีย์บอร์ดโดย
รหัสควบคุมรูปแบบใช้ชุดเดียวกับคาสั่งprintf()
variable คือ ตัวแปรที่จะใช้เก็บค่าข้อมูลที่รับเข้ามาจากคีย์บอร์ด โดยชนิดของตัวแปรจะต้องตรงกับ
รหัสควบคุมรูปแบบที่กาหนดไว้ นอกจากนี้หน้าชื่อของตัวแปรจะต้องนาหน้าด้วยเครื่องหมาย &
ยกเว้น ตัวแปรสตริง สาหรับเก็บข้อความเท่านั้นที่ไม่ต้องนาหน้าด้วยเครื่องหมาย&
ตัวอย่างการใช้งานคาสั่ง scanf() เพื่อรับข้อมูลจากคีย์บอร์ด
int speed; //สร้างตัวแปรชนิด int สาหรับเก็บค่าตัวเลขจานวนเต็ม
printf("Enter wind speed :"); // แสดงข้อความให้กรอกค่าความเร็วลมเป็นจานวนเต็ม
scanf("%d",&speed); //รับค่าความเร็วลมเข้ามาเก็บไว้ในตัวแปรspeed
char answer; // สร้างตัวแปรชนิด char สาหรับเก็บอักขระ
printf("Enter Figure(Y:N) : ") // แสดงข้อความให้ป้อนอักขระY หรือ N
scanf("%c",&answer); //รับอักขระเข้ามาเก็บไว้ในตัวแปร answer
char name[10]; //สร้างตัวแปรสตริงสาหรับเก็บข้อความ
printf("Enter your name = "); // แสดงข้อความให้ป้อนชื่อ
scanf("%s",name ); // รับชื่อเข้ามาเก็บไว้ในตัวแปรname สังเกตจะไม่ใส่
เครื่องหมาย & หน้าตัวแปรชนิดข้อความ(string)
scanf("format",&variable);
คาสั่งรับข้อมูลจากคีย์บอร์ด
คาสั่ง scanf()
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 21
ตัวอย่าง 2.1
#include <stdio.h>
#include<conio.h>
int main()
{
int Long , wide , sum = 0;
printf(“Enter The Length : “);
scanf (“%d”,&Long);
printf(“Enter The Width : ”);
scanf (“%d”,&wide);
sum = x*y;
printf(“The area is : %d”,sum);
getch();
return 0;
}
ตัวอย่างที่ 2.2
#include <stdio.h>
#include<conio.h>
int main()
{
float a , b , c = 5;
printf(“Enter Number : ”);
scanf(“%f ”,&a);
b = a * c;
printf(“Total= %.2f” ,b);
getch();
return 0;
}
ตัวอย่าง 2.3 การรับข้อความโดยใช้ gets
#include <stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char name[20];
char address[70];
printf(“What is your name?”);
gets(name);
printf(“Address? );
gets(address);
printf(“Hello! %sn”,name);
printf(“Your address is %sn”,address);
getch();
return 0;
}
ผลลัพธ์โปรแกรม
…………………………………...
……………………………………
……………………………………
ผลลัพธ์โปรแกรม
…………………………………
…………………………………
…………………………………
…
ผลลัพธ์โปรแกรม
…………………………………...
……………………………………
……………………………………
…………………………………….
…………………………………….
……………………………………
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 22
#include <stdio.h>
#define MAX_NUMBER 10 // this line
int main() {
printf( "Value from constant variable: %d", MAX_NUMBER );
}
Constant variable
ตัวแปรค่าคงที่ (Constant variable) คือ ตัวแปรที่สามารถกาหนดค่าได้เพียงครั้งเดียว
นั่นคือตอนประกาศตัวแปร หลังจากนั้นจะไม่สามารถเปลี่ยนแปลงค่าที่ตัวแปรนั้นเก็บไว้ได้อีก
การประกาศตัวแปรค่าคงที่ทาได้ดังนี้
* เรานิยมตั้งชื่อตัวแปรค่าคงที่ด้วยตัวพิมพ์ใหญ่ทั้งหมด
คาสั่งต่างๆ รวมถึงการประกาศตัวแปรที่ผ่านมาล้วนอยู่ระหว่าง { และ } ที่ตามหลัง main() ทั้งสิ้น
แต่การประกาศตัวแปรค่าคงที่นั้น เราจะใส่ไว้เหนือmain() ดังตัวอย่างด้านบนโดยมีรูปแบบคือ
#define ชื่อตัวแปรค่าคงที่ ค่าคงที่ที่ต้องการเก็บ
* ให้สังเกตว่า ไม่ต้องมีเครื่องหมาย ; (Semicolon) ตามหลัง
วิธีนามาใช้ เหมือนกับตัวแปรปกติทุกประการต่างกันตรงที่ไม่สามารถเปลี่ยนแปลงค่าที่เก็บไว้ได้
ตัวอย่าง2.3
#include <stdio.h>
#define FACTOR 5
int main() {
int x = 3, y = 4;
x = y + FACTOR;
printf( "x = %dn", x );
printf( "y = %dn", y);
printf( "FACTOR = %d", FACTOR );
}
โค้ด
Value from constant variable: 10
ผลลัพธ์
ผลลัพธ์
x = ……….
y = ………
FACTOR = ………
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 23
จะเห็นได้ว่า เดิมที ตอนประกาศตัวแปร ตัวแปรx ถูกกาหนดค่าไว้เป็น3
แต่บรรทัดต่อมาตัวแปรx ได้ถูกกาหนดค่าใหม่อีกครั้งโดยมีค่าเท่ากับ
ค่าของตัวแปร y บวกด้วย ค่าของตัวแปรค่าคงที่FACTOR ซึ่งมีค่าเท่ากับ 4 + 5
ทาให้ตัวแปร x มีค่าเปลี่ยนไปเป็น 9 ส่วนตัวแปร y และตัวแปรค่าคงที่ยังมีค่าเท่าเดิมคือ4, 5 ตามลาดับ
เพราะ FACTOR เป็นตัวแปรค่าคงที่ จะกาหนดค่าใหม่หรือเปลี่ยนแปลงค่ามิได้
คาถาม
จากโค้ดเริ่มต้นที่กาหนดให้ จะเห็นได้ว่ามีการใช้ตัวแปร PI ในการคานวณ
แต่ยังไม่มีการประกาศและกาหนดค่าให้กับตัวแปร PI แต่อย่างใด
จงแก้ไขโค๊ดที่กาหนดให้ ให้สามารถทางานได้อย่างถูกต้อง
โดยการ ประกาศให้ PI เป็นตัวแปรค่าคงที่และมีค่าเท่ากับ 3.1415926
#include <stdio.h>
#include <conio.h>
int main() {
int radius = 14;
double circleArea = PI * radius * radius;
printf("radius: %dn", radius);
printf("area of circle: %lf", circleArea);
getch();
return 0;
}
เราไม่สามารถเขียนแบบนี้ได้
FACTOR = 7; หรือ FACTOR = x + y + 5;
เอกสารประกอบการสอน ภาษาซี
โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี
หน้า 24
1. ให้เขียนโปรแกรมคานวณหาพื้นที่สามเหลี่ยม โดยรับความยาวฐาน และความสูง เสร็จแล้วให้
แสดงผลลัพธ์เป็นทศนิยม 2 ตาแหน่ง
2. ให้เขียนโปรแกรมรับค่าทศนิยมมา3 จานวน จากนั้นให้แสดงผลรวมของเลขทั้ง3 จานวนนั้น และ
ค่าเฉลี่ย (ทศนิยม 2 ตาแหน่ง)
3. ให้เขียนโปรแกรมแปลงเงินดอลลาร์ เป็นเงินบาทไทย (กาหนดให้ 1 ดอลลาร์เท่ากับ 30.2 บาท)
4. ให้เขียนโปรแกรมรับค่าเงินเดือน แล้วนาไปหักภาษี 6% จากนั้นให้แสดงจานวนเงินภาษีที่หักไป
และแสดงเงินคงเหลือ
Enter number 1 : 80.5
Enter number 2: 15.6
Enter number 3: 56.2
Total = 152.30
Average = 50.76
Enter Dollars : 35
35 Dollars = 1057.00 Baht
Enter Salary : 12000
Tax 6% = 720.00 Baht
Total = 11280.00 Baht
แบบฝึกทัดท้ายบท

บทที่ 2 ตัวแปร

  • 1.
    บทที่ 2 ตัวแปร ตัวแปร (Variable)คือ สิ่งที่จะช่วยเราจาค่าต่างๆไว้แสดงค่าหรือคานวณในภายหลังโดยตัวแปรเหล่านี้ จะเก็บค่าเอาไว้ในหน่วยความจา(Memory) ของคอมพิวเตอร์นั่นเอง การประกาศตัวแปร (Declarations) ก่อนที่เราจะนาตัวแปรมาใช้ได้ เราต้องประกาศตัวแปรเสียก่อน (สร้างมันขึ้นมา)โดยมีรูปแบบดังนี้ int number; char letter; int และ char คือประเภทของข้อมูล ที่ตัวแปรนั้นๆสามารถเก็บได้ ส่วนnumber และ letter คือชื่อของตัว แปร ซึ่งเวลาเราจะเรียกข้อมูลที่เก็บค่าเอาไว้มาใช้ก็ใช้ชื่อตัวแปรนี่แหละ ต่อไปมาดูประเภทของข้อมูล กันดีกว่า Type name Meaning เก็บค่าได้ตั้งแต่ char ใช้เก็บ ตัวอักษร หรืออักขระ1 ตัว (Character) -128 ถึง 127 int ใช้เก็บ เลขจานวนเต็ม (Integer) -2,147,483,648 ถึง 2,147,483,647 float ใช้เก็บ เลขจานวนจริง (Floating number) 3.4E +/-38 (7หลัก) double ใช้เก็บ เลขจานวนจริง มีขนาดใหญ่กว่าfloat เก็บได้ ละเอียดกว่า 1.7E +/- 308 (15หลัก) ตัวอย่างการเลือกใช้ประเภทของตัวแปร ถ้าจะเก็บข้อมูลเป็น ประเภทของตัวแปรควรจะเป็น เกรดเฉลี่ย (เช่น 3.90) float อายุคน (เช่น 50 ปี , 25 ปี) char หรือ int ความยาวของถนน (เช่น25 km) int (หรือ float ถ้าเป็นทศนิยม) ความสูงของคน (เช่น 170.6) float เงินเดือน (ไม่เกิน30,000) int เงินเดือนนักธุรกิจพันล้าน int ผลการคานวณที่มีทศนิยม 20 ตาแหน่ง double
  • 2.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า17 การกาหนดค่าตัวแปรคือการเปลี่ยนค่าที่ตัวแปรนั้นๆ เก็บไว้ในหน่วยความจาเป็นค่าที่กาหนด int x; // declare x asa integer variable x = 5; // assign a value to x บรรทัดแรกคือการประกาศตัวแปรที่มีชื่อว่า x ไว้เก็บข้อมูลประเภทเลขจานวนเต็ม(Integer) บรรทัดที่สอง คือการกาหนดค่าตัวแปร ในที่นี้เป็นการกาหนดค่า5 ลงในตัวแปรx เราสามารถกาหนดค่าตัวแปรพร้อมๆกับการประกาศตัวแปรได้ ดังนี้ int x = 5; char c = 'A'; double balance= 3800076.75; float gpa = 3.9; การแสดงผลด้วยคาสั่งprintf() มีรูปแบบดังนี้ int x = 5, y = 7; float z = 392.65; char c = 'A'; printf( "x + y = %dn", x + y ); // %d - integer printf( "z = %fn", z ); // %f - floating number printf( "c = %cn", c ); // %c - character ผลลัพธ์ x + y = 12 z = 392.649994 c = A จะเห็นได้ว่าเราใช้รูปแบบ % กับชนิดข้อมูลต่าง ๆ ดังนี้ (ใช้กับการพิมพ์ และการรับข้อมูล) %d int %c char %f float %lf double %s string นอกจากนี้ เรายังสามารถใช้ %o %x %e %g กับตัวแปรประเภทตัวเลขได้อีกด้วย คาถาม จงประกาศตัวแปรดังรายละเอียดต่อไปนี้ เสร็จแล้ว ให้แสดงผลลัพธ์ออกมาให้เหมือนด้านล่างนี้ The value of my first variable is: 23.61 ชื่อตัวแปร: myFirstVar (ตัวใหญ่ตัวเล็กสังเกตให้ดีด้วย) ค่าในตัวแปร: 23.61 ผลลัพธ์
  • 3.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า18 Variable naming ชื่อตัวแปรนั้น หากว่าอยากจะใช้ชื่อไหน ก็สรรหามาประกาศกันได้คงจะสับสนกันน่าดู ภาษาซีมีกฏเกณฑ์ในการตั้งชื่อตัวแปรดังนี้ 1. ต้องประกอบขึ้นจากตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมาย _ (Underscore) เท่านั้น 2. อักขระตัวแรกจะต้องเป็นตัวอักษรภาษาอังกฤษ หรือเครื่องหมาย _ เท่านั้น (ห้ามเป็นตัวเลข) 3. ตัวพิมพ์ใหญ่ และตัวพิมพ์เล็กถือเป็นคนละตัวกัน เช่นSalary และ SALARY เป็นชื่อที่แตกต่างกัน 4. มีความยาวไม่เกิน31 อักขระ 5. ชื่อจะต้องไม่ซ้ากับคาสงวน (Reserved word) คาสงวนของภาษาซี มีดังนี้ auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while ถ้าเราตั้งชื่อตัวแปร ไม่เป็นไปตามกฏโปรแกรมก็จะไม่สามารถทางานได้ นอกจากนี้ยังมีสิ่งที่ควรรู้ในการตั้งชื่ออีกคือ - ไม่ควรตั้งชื่อตัวแปรโดยใช้ตัวพิมพ์ใหญ่ทั้งหมด เพราะอาจถูกเข้าใจผิดว่าเป็นค่าคงที่ - หากชื่อนั้นประกอบขึ้นจากคาหลายคา ให้ใช้ _ คั่นแต่ละคา เช่น student_info_nickname หรือใช้ตัวพิมพ์ใหญ่แทน เช่น studentInfoNickname - และอีกอันที่ขาดไม่ได้คือ ควรตั้งชื่อให้สื่อความหมาย ว่าตัวแปรนั้นๆเก็บข้อมูลอะไรไว้อยู่ เช่น student_id เราสามารถทราบได้ทันทีว่าเป็นข้อมูลID ของนักเรียน แต่หากตั้งชื่อแค่ว่า data เราไม่สามารถทราบได้ว่าเป็นข้อมูลอะไร หากมาอ่านในภายหลังจะทาความเข้าใจได้ลาบาก
  • 4.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า19 คาถาม ชื่อตัวแปรต่อไปนี้ หากข้อใดสามารถนาไปใช้ได้ให้ตอบถูกและข้อใดผิดกฎการตั้งชื่อตอบผิด 1. customerName 2. ID 3. address1 4. %available 5. auto 6. Int 7. 3rdSubject 8. _sys_one 9. address_2 10. number5 11. #5
  • 5.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า20 การทางานของโปรแกรมส่วนใหญ่มักจะเป็นการเชื่อมโยงกับผู้ใช้แบบ 2 ทิศทางคือ ทั้งภาคของ การแสดงผลการทางานออกทางหน้าจอ และภาคของการรับข้อมูลจากผู้ใช้เข้ามาทางคีย์บอร์ด เพื่อร่วม ในการประมวลผลของโปรแกรม ในภาษาC การรับข้อมูลจากคีย์บอร์ดสามารถทาได้โดยการเรียกใช้ฟังก์ชันscanf()ซึ่งเป็น ฟังก์ชันมาตรฐานสาหรับรับข้อมูลจากคีย์บอร์ด โดยสามารถรับข้อมูลได้ทุกประเภทไม่ว่าจะเป็นจานวน เต็ม ทศนิยม อักขระหรือข้อความ รูปแบบคาสั่ง scanf() การใช้รหัสควบคุมรูปแบบ เพื่อกาหนดชนิดของข้อมูลที่จะรับเข้ามาจากคีย์บอร์ดโดย รหัสควบคุมรูปแบบใช้ชุดเดียวกับคาสั่งprintf() variable คือ ตัวแปรที่จะใช้เก็บค่าข้อมูลที่รับเข้ามาจากคีย์บอร์ด โดยชนิดของตัวแปรจะต้องตรงกับ รหัสควบคุมรูปแบบที่กาหนดไว้ นอกจากนี้หน้าชื่อของตัวแปรจะต้องนาหน้าด้วยเครื่องหมาย & ยกเว้น ตัวแปรสตริง สาหรับเก็บข้อความเท่านั้นที่ไม่ต้องนาหน้าด้วยเครื่องหมาย& ตัวอย่างการใช้งานคาสั่ง scanf() เพื่อรับข้อมูลจากคีย์บอร์ด int speed; //สร้างตัวแปรชนิด int สาหรับเก็บค่าตัวเลขจานวนเต็ม printf("Enter wind speed :"); // แสดงข้อความให้กรอกค่าความเร็วลมเป็นจานวนเต็ม scanf("%d",&speed); //รับค่าความเร็วลมเข้ามาเก็บไว้ในตัวแปรspeed char answer; // สร้างตัวแปรชนิด char สาหรับเก็บอักขระ printf("Enter Figure(Y:N) : ") // แสดงข้อความให้ป้อนอักขระY หรือ N scanf("%c",&answer); //รับอักขระเข้ามาเก็บไว้ในตัวแปร answer char name[10]; //สร้างตัวแปรสตริงสาหรับเก็บข้อความ printf("Enter your name = "); // แสดงข้อความให้ป้อนชื่อ scanf("%s",name ); // รับชื่อเข้ามาเก็บไว้ในตัวแปรname สังเกตจะไม่ใส่ เครื่องหมาย & หน้าตัวแปรชนิดข้อความ(string) scanf("format",&variable); คาสั่งรับข้อมูลจากคีย์บอร์ด คาสั่ง scanf()
  • 6.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า21 ตัวอย่าง 2.1 #include <stdio.h> #include<conio.h> int main() { int Long , wide , sum = 0; printf(“Enter The Length : “); scanf (“%d”,&Long); printf(“Enter The Width : ”); scanf (“%d”,&wide); sum = x*y; printf(“The area is : %d”,sum); getch(); return 0; } ตัวอย่างที่ 2.2 #include <stdio.h> #include<conio.h> int main() { float a , b , c = 5; printf(“Enter Number : ”); scanf(“%f ”,&a); b = a * c; printf(“Total= %.2f” ,b); getch(); return 0; } ตัวอย่าง 2.3 การรับข้อความโดยใช้ gets #include <stdio.h> #include<conio.h> #include<string.h> int main() { char name[20]; char address[70]; printf(“What is your name?”); gets(name); printf(“Address? ); gets(address); printf(“Hello! %sn”,name); printf(“Your address is %sn”,address); getch(); return 0; } ผลลัพธ์โปรแกรม …………………………………... …………………………………… …………………………………… ผลลัพธ์โปรแกรม ………………………………… ………………………………… ………………………………… … ผลลัพธ์โปรแกรม …………………………………... …………………………………… …………………………………… ……………………………………. ……………………………………. ……………………………………
  • 7.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า22 #include <stdio.h> #define MAX_NUMBER 10 // this line int main() { printf( "Value from constant variable: %d", MAX_NUMBER ); } Constant variable ตัวแปรค่าคงที่ (Constant variable) คือ ตัวแปรที่สามารถกาหนดค่าได้เพียงครั้งเดียว นั่นคือตอนประกาศตัวแปร หลังจากนั้นจะไม่สามารถเปลี่ยนแปลงค่าที่ตัวแปรนั้นเก็บไว้ได้อีก การประกาศตัวแปรค่าคงที่ทาได้ดังนี้ * เรานิยมตั้งชื่อตัวแปรค่าคงที่ด้วยตัวพิมพ์ใหญ่ทั้งหมด คาสั่งต่างๆ รวมถึงการประกาศตัวแปรที่ผ่านมาล้วนอยู่ระหว่าง { และ } ที่ตามหลัง main() ทั้งสิ้น แต่การประกาศตัวแปรค่าคงที่นั้น เราจะใส่ไว้เหนือmain() ดังตัวอย่างด้านบนโดยมีรูปแบบคือ #define ชื่อตัวแปรค่าคงที่ ค่าคงที่ที่ต้องการเก็บ * ให้สังเกตว่า ไม่ต้องมีเครื่องหมาย ; (Semicolon) ตามหลัง วิธีนามาใช้ เหมือนกับตัวแปรปกติทุกประการต่างกันตรงที่ไม่สามารถเปลี่ยนแปลงค่าที่เก็บไว้ได้ ตัวอย่าง2.3 #include <stdio.h> #define FACTOR 5 int main() { int x = 3, y = 4; x = y + FACTOR; printf( "x = %dn", x ); printf( "y = %dn", y); printf( "FACTOR = %d", FACTOR ); } โค้ด Value from constant variable: 10 ผลลัพธ์ ผลลัพธ์ x = ………. y = ……… FACTOR = ………
  • 8.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า23 จะเห็นได้ว่า เดิมที ตอนประกาศตัวแปร ตัวแปรx ถูกกาหนดค่าไว้เป็น3 แต่บรรทัดต่อมาตัวแปรx ได้ถูกกาหนดค่าใหม่อีกครั้งโดยมีค่าเท่ากับ ค่าของตัวแปร y บวกด้วย ค่าของตัวแปรค่าคงที่FACTOR ซึ่งมีค่าเท่ากับ 4 + 5 ทาให้ตัวแปร x มีค่าเปลี่ยนไปเป็น 9 ส่วนตัวแปร y และตัวแปรค่าคงที่ยังมีค่าเท่าเดิมคือ4, 5 ตามลาดับ เพราะ FACTOR เป็นตัวแปรค่าคงที่ จะกาหนดค่าใหม่หรือเปลี่ยนแปลงค่ามิได้ คาถาม จากโค้ดเริ่มต้นที่กาหนดให้ จะเห็นได้ว่ามีการใช้ตัวแปร PI ในการคานวณ แต่ยังไม่มีการประกาศและกาหนดค่าให้กับตัวแปร PI แต่อย่างใด จงแก้ไขโค๊ดที่กาหนดให้ ให้สามารถทางานได้อย่างถูกต้อง โดยการ ประกาศให้ PI เป็นตัวแปรค่าคงที่และมีค่าเท่ากับ 3.1415926 #include <stdio.h> #include <conio.h> int main() { int radius = 14; double circleArea = PI * radius * radius; printf("radius: %dn", radius); printf("area of circle: %lf", circleArea); getch(); return 0; } เราไม่สามารถเขียนแบบนี้ได้ FACTOR = 7; หรือ FACTOR = x + y + 5;
  • 9.
    เอกสารประกอบการสอน ภาษาซี โรงเรียนวิสุทธรังษี จังหวัดกาญจนบุรี หน้า24 1. ให้เขียนโปรแกรมคานวณหาพื้นที่สามเหลี่ยม โดยรับความยาวฐาน และความสูง เสร็จแล้วให้ แสดงผลลัพธ์เป็นทศนิยม 2 ตาแหน่ง 2. ให้เขียนโปรแกรมรับค่าทศนิยมมา3 จานวน จากนั้นให้แสดงผลรวมของเลขทั้ง3 จานวนนั้น และ ค่าเฉลี่ย (ทศนิยม 2 ตาแหน่ง) 3. ให้เขียนโปรแกรมแปลงเงินดอลลาร์ เป็นเงินบาทไทย (กาหนดให้ 1 ดอลลาร์เท่ากับ 30.2 บาท) 4. ให้เขียนโปรแกรมรับค่าเงินเดือน แล้วนาไปหักภาษี 6% จากนั้นให้แสดงจานวนเงินภาษีที่หักไป และแสดงเงินคงเหลือ Enter number 1 : 80.5 Enter number 2: 15.6 Enter number 3: 56.2 Total = 152.30 Average = 50.76 Enter Dollars : 35 35 Dollars = 1057.00 Baht Enter Salary : 12000 Tax 6% = 720.00 Baht Total = 11280.00 Baht แบบฝึกทัดท้ายบท