ตัวแปรและประเภทข้อมูล
แนะนำตัวแปรในภาษา C
ในบทเรียนนี้ เราจะพูดเกี่ยวกับตัวแปรในภาษา C ตัวแปรเป็นสถานที่สำหรับเก็บข้อมูลในหน่วยความจำ โดยมีชื่อของตัวแปรเพื่อใช้อ้างถึงข้อมูล (Identifier) ตัวแปรถูกใช้เพื่อเก็บค่า เราสามารถสร้างตัวแปรได้เป็นจำนวนมากโดยมีชื่อที่แตกต่างกัน รูปแบบของการประกาศตัวแปรในภาษา C คือ
type identifier;
type identifier = value;
type เป็นประเภทของข้อมูลที่จะเก็บในตัวแปร identifier เป็นที่รู้จักกันในในชื่อของตัวแปร เราใช้ชื่อนี้เพื่ออ้างถึงค่าที่ตัวแปรนั้นเก็บอยู่ values เป็นทางเลือกที่คุณสามารถกำหนดค่าให้กับตัวแปรเมื่อมันถูกสร้าง หรือกำหนดในภายหลังได้ มาดูตัวอย่าง
int a;
float b;
char c = 'A';
ในตัวอย่างเรามีตัวแปร 3 ตัว ตัวแรกประเภทของมันคือ int และมีชื่อว่า a มันใช้เพื่อเก็บค่าเลขจำนวนเต็ม (Integer) และเรายังไม่ได้กำหนดค่าใดๆ ให้มัน ดังนั้นค่าเริ่มต้นของตัวแปรเมื่อถูกสร้างขึ้นจะเป็น NULL ตัวแปรที่สองมีประเภทเป็น float ตัวแปรนี้จะถูกใช้เพื่อเก็บค่าของจำนวนจริง และตัวแปรที่สามมีประเภทเป็น char มันถูกใช้เพื่อเก็บสัญลักษณ์หนึ่งตัวใน ASCII code และเรากำหนด 'A' เป็นค่าเริ่มต้นให้กับมัน
ประเภทข้อมูล
ในภาษา C มีประเภทข้อมูลชนิดต่างๆ ที่ให้เราสามารถใช้เพื่อชนิดการกับข้อมูลต่างประเภทกัน เช่น Boolean, Number, Character และ Object เป็นต้น
ตารางข้างล่างนี้แสดงประเภทข้อมูลทั้งหมดในภาษา C
การประกาศตัวแปร
ตอนนี้เราจะมาเรียนวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรกับตัวอย่างง่ายๆ
#include <stdio.h>
int main()
{
int a = 5;
int b;
b = 10;
int c = a + b;
printf("Value of c is %d", c);
return 0;
}
ในตัวอย่าง เราได้สร้างตัวแปรสามตัวคือ a, b และ c ที่มีชนิดข้อมูลเป็น int และเรารวมค่าของ a และ b แล้วเก็บไว้ในตัวแปร c ข้างล่างนี้เป็นผลลัพธ์ของโปรแกรม
Value of c is 15
อย่างไรก็ตาม คุณสามารถประกาศชนิดข้อมูลอื่นได้ ซึ่งมันไม่อยากเกินไป มาดูตัวอย่างเพิ่มเติม
#include <stdio.h>
int main()
{
float PI = 3.14;
int r;
scanf("Enter circle radius %d", &r);
double result = 2 * PI * r;
printf("Area is %f", result );
return 0;
}
ในตัวอย่าง แสดงให้คุณเห็นการใช้ตัวแปรประเภทต่างๆ ในภาษา C นั้นมีข้อมูลประเภทต่างๆ ที่ให้เราสามารถจัดการกับข้อมูลที่แตกต่างกันออกไป เช่น ตัวเลขจำนวนเต็ม ตัวเลขจำนวนจริง หรือข้อมูลแบบตัวอักษร ซึ่งข้อมูลแต่ละประเภทมีรูปแบบการใช้งานและขนาดของข้อมูลที่แตกต่างกัน ดังแสดงในตารางก่อนหน้า ต่อไปเราจะอธิบายและแสดงตัวอย่างของการใช้ข้อมูลประเภทต่างๆ ในภาษา C สำหรับเขียนโปรแกรม
Boolean
Boolean เป็นประเภทข้อมูลที่มีได้เพียงสองค่าคือจริง true และเท็จ false ซึ่งเป็นประเภทของตัวแปรสำหรับเก็บค่าที่เป็นไปได้เพียงสองค่า เช่น กลางวันและกลางคืน สีขาวและสีดำ ร้อนและหนาว เป็นต้น ข้อมูลประเภทนี้มักจะใช้สำหรับสร้าง Expression สำหรับเงื่อนไขการทำงานของโปรแกรม ในภาษา C ค่าของ Boolean นั้นใช้ 1 หรือ true สำหรับค่าที่เป็นจริงและ 0 หรือ false สำหรับค่าที่เป็นเท็จ มาดูตัวอย่างการใช้งาน
#include <stdio.h>
#include <stdbool.h>
int main ()
{
bool gender = 1;
bool open = 0;
if (gender)
{
printf("This is the boy.\n");
}
else
{
printf("This is the girl.\n");
}
if (open)
{
printf("The door is open.\n");
}
else
{
printf("The door is not open.\n");
}
return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Boolean ในภาษา C ในตัวแปร gender เราได้กำหนดตัวแปรให้หมายถึงเพศ ถ้าในตัวแปรนั้นมีค่าเป็นจริงจะหมายถึงเป็นผู้ชาย และถ้ามีค่าเป็นเท็จจะหมายถึงเป็นผู้หญิง และตัวแปร open ใช้สำหรับเก็บสถานะการเปิดและปิดของประตู เมื่อตัวแปรมีค่าเป็นจริงจะหมายถึงประตูถูกเปิดอยู่ และเมื่อค่าในตัวแปรเป็นเท็จก็หมายความว่าประตูนั้นไม่ได้เปิด
This is the boy.
The door is not open.
ในคอมไพเลอร์ของภาษา C ในปัจจุบันนั้น ข้อมูลประเภท bool นั้นถูกนำออกแล้ว ดังนั้นเพื่อใช้ข้อมูลประเภทนี้ เราต้องทำเข้าไลบรารี่จาก stdbool.h สำหรับการใช้งาน และคอมไพลเลอร์ของคุณสนับสนุนเวอร์ชัน C99 ด้วย อย่างไรก็ตามมีหลายวิธีที่จะ Implement ข้อมูลประเภท bool ถ้าหากคุณใช้บ่อยๆ ในโปรแกรม หรือสามารถใช้ข้อมูลประเภท Integer แทนได้
Char ตัวอักษร
Char เป็นประเภทข้อมูลที่ใช้สำหรับเก็บตัวอักษรจำนวนหนึ่งตัวอักษรใน ASCII ภาษา C นั้นยังไม่ได้สนับสนุนการเก็บข้อมูลแบบ String แต่คุณสามารถทำแบบนั้นได้ โดยการใช้ Char array เพื่อเก็บตัวอักษรที่ต่อกันหลายตัว มาดูตัวอย่างการใช้งานตัวแปรประเภท char ในภาษา C
#include <stdio.h>
int main()
{
char n = 'A';
printf("%c\n", n);
printf("%d\n", n);
char *name = "nrpsc";
printf("%s", name);
char extension[] = ".ac.th";
printf("%s", extension);
return 0;
}
ในตัวอย่าง เป็นการประกาศตัวแปรประเภท char โดยการเก็บตัวอักษร 'A' ตัวอักษรทุกตัวนั้นมีรหัส ASCII ของมันในฐาน 10 ในภาษา C นั้นข้อมูลประเภท Char และ Integer สามารถแปลงค่าได้โดยวิธี implicit และ Explicit type casting ยกตัวอย่างเช่น เมื่อเราต้องการค่าที่หมายถึง A และสามารถใช้ 65 แทนได้ดังตัวอย่างข้างล่าง
char a = 65; // A
int b = 'A'; // 65
เราสามารถเก็บตัวอักษรที่มากกว่าหนึ่งตัวอักษรได้ โดยเราเรียกว่าอาเรย์ หรือ Array of char ซึ่งสามารถสร้างได้ทั้งในรูปแบบของอาเรย์ปกติและพอยน์เตอร์ นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งานข้อมูลประเภท Char และ Char อาเรย์
A
65
nrpsc.ac.th
Integer ตัวเลขจำนวนเต็ม
Integer เป็นประเภทข้อมูลแบบจำนวนเต็ม ซึ่งข้อมูลแบบ Integer นั้นจะประกอบไปด้วยหลายขนาด เช่น short int และ long ซึ่งจะเก็บข้อมูลในระยะที่แตกต่างกัน เรามักจะใช้ตัวแปรประเภท Integer สำหรับเก็บข้อมูลที่นับได้ เช่น จำนวนของผลไม้ในตระกร้า จำนวนของคนในห้อง จำนวนของรถที่วิ่งบนท้องถนน เป็นต้น มาดูตัวอย่างการใช้งานตัวแปรประเภท Integer ในภาษา C
#include <stdio.h>
int main()
{
int apple = 3;
int orange = 2;
int total = apple + orange;
printf("%d apples and %d oranges\n", apple, orange);
printf("I have %d fruits in total", total);
return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Integer สำหรับเก็บจำนวนของผลไม้แต่ละชนิด และหาผลรวมของผลไม้ทั้งสองในตัวแปร total ต่อไปเราจะพูดเกี่ยวกับค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer ในภาษา C ข้างล่างนี้เป็นตัวอย่างของโปรแกรม
#include <stdio.h>
#include <limits.h>
int main()
{
printf("Maximum value of int: %d\n", INT_MAX);
printf("Minimum value of int: %d\n", INT_MIN);
int a = INT_MAX;
printf("%d\n", a);
a = a + 1;
printf("%d\n", a);
return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการแสดงค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer โดยใช้ค่าคงที่ INT_MAX และ INT_MIN ซึ่งเป็นค่าที่กำหนดโดย Marco ที่อยู่ในไลบรารี่ limits.h ของภาษา C และเราทดสอบการทำงานของโปรแกรมโดยการกำหนดค่ามากสุดให้กับตัวแปร a และเพิ่มค่าของตัวแปรขึ้นไป 1 ผลลัพธ์ที่ได้คือค่าในตัวแปรนั้นเกิด Overflow และเป็นที่น้อยที่สุดของ Integer ซึ่งจะได้ผลลัพธ์ตามข้างล่าง
Maximum value of int: 2147483647
Minimum value of int: -2147483648
2147483647
-2147483648
Floating-point numbers ตัวเลขจำนวนจริง
Floating-point number เป็นประเภทข้อมูลสำหรับเก็บตัวเลขจำนวนจริง ในภาษา C จะมีอยู่สองประเภทคือ float และ double สิ่งที่แตกต่างกันคือขนาดของพื้นที่ที่ใช้ในการจัดเก็บ และข้อมูลประเภท double นั้นจะเก็บจำนวนของทศนิยมได้มากกว่า ข้อมูลประเภทนี้จะใช้เก็บข้อมูลที่มีค่าเป็นเศษส่วนหรือตัวเลขที่มีเลขหลังจุดทศนิยม ยกตัวอย่างเช่น ข้อมูลการคำนวณทางวิทยาศาสตร์ เป็นต้น มาดูตัวอย่างการประกาศตัวแปรและใช้งาน
#include <stdio.h>
int main()
{
float pi = 3.14f;
float half = 3 / 2.0f;
float half2 = 3 / 2;
printf("Pi: %f\n", pi);
printf("Half of 3: %f\n", half);
printf("Half of 3: %f\n", half2);
double gravity = 9.807;
double earth_mass = 5.972E24;
double meter = 1E-3;
printf("Earth gravity: %lf m/s^2\n", gravity);
printf("Earth mass: %lf kg\n", earth_mass);
printf("1 centimeter: %lf meter\n", meter);
return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรสำหรับเก็บข้อมูลในรูปแบบของทศนิยมทั้งตัวแปรประเภท float และ double ในส่วนแรกเราได้ประกาศตัวแปร float จำนวนสามตัวและกำหนดค่าให้กับตัวแปร ค่าของข้อมูลประเภท float นั้นจะลงท้ายด้วย f หรือ F เสมอ
float half = 3 / 2.0f;
float half2 = 3 / 2;
ต่อมาเป็นการทดสอบการหารตัวเลขในตัวแปร half และ half2 เพื่อให้คุณเข้าใจและเห็นความแตกต่างของสิ่งที่เกิดขึ้น การคูณหรือการหารตัวเลขในภาษา C นั้นจะได้ผลลัพธ์เป็น Integer ถ้าหากตัวเลขทั้งสองตัวนั้นเป็นประเภท Integer เหมือนในตัวแปร half2 ถ้าหากมีตัวแปรอย่างน้อยหนึ่งตัวแปรที่เป็น float หรือ double จะได้ข้อมูลเป็น float หรือ double นี่จึงเป็นสิ่งที่ต้องควรระวังในการเขียนโปรแกรม
double gravity = 9.807;
double earth_mass = 5.972E24;
double meter = 1E-3;
สามตัวแปรต่อมาเป็นการประกาศตัวแปรประเภท double สำหรับตัวแปรทั้งสองประเภทนั้นสามารถประกาศในรูปแบบสัญกรณ์วิทยาศาสตร์ได้ เช่นในตัวอย่างในตัวแปร earth_mass เป็นการกำหนดค่าแบบย่อซึ่งมีค่าเท่ากับ 5.972 x 10^24 และในตัวแปร meter นั้นมีค่าเท่ากับ 1 x 10^-3
Pi: 3.140000
Half of 3: 1.500000
Half of 3: 1.000000
Earth gravity: 9.807000 m/s^2
Earth mass: 5972000000000000300000000.000000 kg
1 centimeter: 0.001000 meter
นี่เป็นผลลัพธ์ของโปรแกรมในการทำงานกับประเภทข้อมูลแบบทศนิยมในภาษา C ด้วยตัวแปรแบบ float และ double
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการประกาศและใช้งานตัวแปรในภาษา C และได้รู้จักประเภทข้อมูลชนิดต่างๆ ซึ่งใช้ในการเก็บข้อมูลที่แตกต่างกันในการเขียนโปรแกรม