แนะนำตัวแปรในภาษา 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
Data type | Size | Value |
---|---|---|
char | 1 byte | -128 to 127 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 4 byte | -2,147,483,648 to 2,147,483,647 |
unsigned int | 4 byte | 0 to 4,294,967,295 |
short | 2 byte | -32,768 to 32,767 |
unsigned short | 2 byte | 0 to 65,535 |
long | 4 byte | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 byte | 0 to 4,294,967,295 |
float | 4 byte | 1.2E-38 to 3.4E+38 |
double | 8 byte | 2.3E-308 to 1.7E+308 |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 |
bool | 1 bit | 0 to 1 |
การประกาศตัวแปร #
ตอนนี้เราจะมาเรียนวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรกับตัวอย่างง่ายๆ
#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 = "marcuscode";
printf("%s", name);
char extension[] = ".com";
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
marcuscode.com
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 และได้รู้จักประเภทข้อมูลชนิดต่างๆ ซึ่งใช้ในการเก็บข้อมูลที่แตกต่างกันในการเขียนโปรแกรม