ตัวแปร
ตัวแปร (Variable)
- ตัวแปร (Variable) หมายถึงชื่อผู้เขียนโปรแกรมตั้งขึ้นเพื่อให้เป็นข้อมูลหรือใช้เก็บข้อมูล ดังนั้นการกำหนดตัวแปร จะต้องให้สัมพันธ์กับชนิดของข้อมูล (Data Type) เสมอ เพื่อให้ระบบเตรียมเนื้อที่ในหน่วยความจำ ให้สอดคล้องกับตัวแปรชนิดนั้น ๆ ซึ่งการตั้งชื่อตัวแปรขึ้นมาใช้งานก็คือ "การประกาศชนิดของตัวแปร" นั่นเอง
การตั้งชื่อตัวแปร จะต้องคำนึงถึง กฏเกณฑ์การตั้งชื่อ
Preprocessor directive
ส่วนนี้ทุกโปรแกรมต้องมี จะใช้สำหรับเรียกคำสั่งหรือฟังก์ชันที่โปรแกรมต้องการในการทำงานและกำหนดค่าต่าง ๆ โดยคอมไพเลอร์จะกระทำตามคำส่ง ก่อนที่จะคอมไพล์โปรแกรม ซึ่งจะต้องเริ่มต้นด้วยเครื่องหมาย ไดเร็กทีฟ (#) และตามด้วยชื่อโปรแกรมหรือชื่อตัวแปรที่ต้องกำหนดค่า ดังตัวอย่างตามตาราง
ส่วนนี้ทุกโปรแกรมต้องมี จะใช้สำหรับเรียกคำสั่งหรือฟังก์ชันที่โปรแกรมต้องการในการทำงานและกำหนดค่าต่าง ๆ โดยคอมไพเลอร์จะกระทำตามคำส่ง ก่อนที่จะคอมไพล์โปรแกรม ซึ่งจะต้องเริ่มต้นด้วยเครื่องหมาย ไดเร็กทีฟ (#) และตามด้วยชื่อโปรแกรมหรือชื่อตัวแปรที่ต้องกำหนดค่า ดังตัวอย่างตามตาราง
สำหรับ directive ที่ใช้บ่อย ๆ ได้แก่
#include เป็นการแจ้งให้คอมไพเลอร์อ่านไฟล์อื่นเข้ามาคอมไพล์ร่วมด้วย รูปแบบการใช้จะทำโดยเขียน #include แล้วตามด้วยชื่อไฟล์ เช่น
#include <stdio.h> หมายความว่า อ่านไฟล์ stdio.h เข้ามาด้วย
#include "mypro.h" หมายความว่า อ่านไฟล์ mypro.h จาก folder หรือ directory ที่กำลังทำงานเข้ามาด้วย
การกำหนดชื่อไฟล์ตามหลัง #include นั้นจะใช้เครื่องหมาย < > คร่อมชื่อไฟล์ก็ได้ ซึ่งจะเป็นการอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้ก่อนแล้ว โดยปกติจะเป็นโฟลเดอร์ include แต่ถ้าใช้เครื่องหมาย " " เป็นการอ่านไฟล์จาก folder หรือ directory ที่กำลังติดต่ออยู่ และไฟล์ที่จะ include เข้ามานี้จะต้องไม่มีฟังก์ชัน main() โดยมากแล้วจะประกอบด้วยโปรแกรมย่อย ค่าคงที่ หรือข้อความต่างๆ
#define เป็นการกำหนดค่านิพจน์ต่าง ๆ ให้กับชื่อของตัวคงที่ โดยมีรูปแบบดังนี้
#define NAME VALUE เช่น
#define SCHOOL thungsoung //กำหนดชื่อ SCHOOL ให้เก็บคำว่า thungsoung เอาไว้
#define PROVINCE nakornsitammarat //กำหนดชื่อ PROVINCE ให้เก็บคำว่า nakornsitammarat เอาไว้
#include เป็นการแจ้งให้คอมไพเลอร์อ่านไฟล์อื่นเข้ามาคอมไพล์ร่วมด้วย รูปแบบการใช้จะทำโดยเขียน #include แล้วตามด้วยชื่อไฟล์ เช่น
#include <stdio.h> หมายความว่า อ่านไฟล์ stdio.h เข้ามาด้วย
#include "mypro.h" หมายความว่า อ่านไฟล์ mypro.h จาก folder หรือ directory ที่กำลังทำงานเข้ามาด้วย
การกำหนดชื่อไฟล์ตามหลัง #include นั้นจะใช้เครื่องหมาย < > คร่อมชื่อไฟล์ก็ได้ ซึ่งจะเป็นการอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้ก่อนแล้ว โดยปกติจะเป็นโฟลเดอร์ include แต่ถ้าใช้เครื่องหมาย " " เป็นการอ่านไฟล์จาก folder หรือ directory ที่กำลังติดต่ออยู่ และไฟล์ที่จะ include เข้ามานี้จะต้องไม่มีฟังก์ชัน main() โดยมากแล้วจะประกอบด้วยโปรแกรมย่อย ค่าคงที่ หรือข้อความต่างๆ
#define เป็นการกำหนดค่านิพจน์ต่าง ๆ ให้กับชื่อของตัวคงที่ โดยมีรูปแบบดังนี้
#define NAME VALUE เช่น
#define SCHOOL thungsoung //กำหนดชื่อ SCHOOL ให้เก็บคำว่า thungsoung เอาไว้
#define PROVINCE nakornsitammarat //กำหนดชื่อ PROVINCE ให้เก็บคำว่า nakornsitammarat เอาไว้
Statement หรือคำสั่ง
คำสั่ง (Statement) หมายถึงประโยคที่เขียนขึ้นเพื่อให้โปรแกรมทำงาน ประกอด้วยตัวแปร หรือนิพจน์ต่าง ๆ เพื่อใช้ประกาศตัวแปร กำหนดค่าเริ่มต้น กำหนดเงื่อนไข และใช้ในคำสั่งควบคุม นิพจน์หรือตัวแปรที่เขียนขึ้นเป็นประโยคคำสั่งในภาษาซีจะใช้เครื่องหมาย ; (Semicolon) ปิดท้ายคำสั่ง
คำสั่งในภาษาซีสามารถแยกให้เห็นชัดเจนได้ 5 กลุ่ม คือ
1) คำสั่งสำหรับอธิบาย (Comment Statements)
2) คำสั่งกำหนดชนิดตัวแปร (Declaration Statements)
3) คำสั่งกำหนดค่า (Assignment Statements)
4) คำสั่งควบคุม (Control Statements)
5) คำสั่งที่อยู่ในรูปฟังก์ชัน เช่น คำสั่งรับข้อมูล คำสั่งแสดงผลข้อมูล เป็นต้น
ในโปรแกรมภาษาซีโปรแกรมหนึ่งๆอาจประกอบด้วยคำสั่งทั้ง 5 กลุ่มหรือมากกว่ากันก็ได้ เพื่อความเข้าใจคำสั่งแต่ละกลุ่มในหัวข้อนี้ จะขออธิบายเฉพาะคำสั่งสำหรับอธิบาย คำสั่งกำหนดชนิดตัวแปร และ คำสั่งกำหนดค่าให้กับตัวแปรเท่านั้น
1) คำสั่งสำหรับอธิบาย (Comment Statements)
คำสั่งสำหรับอธิบายในเทอร์โบซีจะใช้สัญลักษณ์ /* และ */ ประกบหัวท้ายข้อความ เพื่อเป็นข้อความอธิบาย หรือหมายเหตุ ของผู้เขียนโปรแกรมเอง ซีคอมไพเลอร์จะไม่สนใจคำสั่งนี้ และจะมีคำสั่งอธิบายกี่คำสั่งอยู่ส่วนไหนของโปรแกรมก็ได้ ดูการใส่คำอธิบายโปรแกรม
2) คำสั่งกำหนดชนิดตัวแปร (Declaration Statements)
คำสั่งกำหนดชนิดตัวแปรนี้มักจะอยู่ในส่วนต้นของโปรแกรม ตัวแปรทุกตัวแปรก่อนนำไปใช้ต้องประกาศตัวแปร พร้อมชนิดข้อมูลของตัวแปรนั้น และอาจกำหนดค่าเริ่มต้นให้กับตัวแปรนั้นๆด้วย ดังรูปแบบต่อไปนี้
รูปแบบ
<Type> <var1> [=const1][,<var2>[=conts2]]. . . ;
Type หมายถึง ชนิดตัวแปร เช่น int float char long double เป็นต้น
var1,var2 หมายถึง ชื่อตัวแปร ซึ่งต้องตั้งตามกฏการตั้งชื่อ
const1,const2 หมายถึง ค่าคงที่ ที่กำหนดค่าให้กับตัวแปร
ตัวอย่าง
int value , count , x ;
char more ;
หมายถึง มีการประกาศตัวแปรจำนวน 4 ตัว โดยให้ตัวแปร 3 ตัวแรกคือ value count และ x เป็นชนิดจำนวนเต็ม ส่วนประกาศตัวแปร more ให้เป็นตัวแปรชนิดตัวอักขระ
3) คำสั่งกำหนดค่า (Assignment Statements)
คำสั่งกำหนดค่าในเทอร์โบซีจะใช้ตัวดำเนินการ " = "เพื่อกำหนดค่าให้กับตัวแปร คำสั่งกำหนดค่านี้อาจใช้ในการกำหนดค่าเริ่มต้นให้กับตัวแปร หรือใช้ในการคำนวณนิพจน์ด้านขวาของตัวดำเนินการ " = " แล้วนำค่าที่ได้ไปกำหนดค่าให้กับตัวแปรด้านซ้ายของตัวดำเนินการ "= " หรืออาจใช้ในการคัดลอกค่าของตัวแปรหนึ่งไปให้กับอีกตัวแปรหนึ่ง โดยรูปแบบคำสั่งดังนี้
รูปแบบ
<var1> [ = <var2>]. . . = <expression> ;
var1,var2 หมายถึง ชื่อตัวแปรที่จะถูกกำหนดค่า
expression หมายถึง นิพจน์ ซึ่งอาจเป็นตัวแปร ค่าคงที่ หรือเป็นการดำเนินการระหว่าง ตัวแปร หรือ ค่าคงที่
= หมายถึง ตัวดำเนินการกำหนดค่า โดยให้นำค่านิพจน์ด้วยขวาของตัวดำเนินการ " = " ไปกำหนดค่าให้กับตัวแปร ที่อยู่ด้านซ้าย ของตัวดำเนินการ " = "
คำสั่งทุกคำสั่งจะต้องปิดด้วเครื่องหมาย ; (อ่านว่า Semicolon)
ตัวอย่าง
value = 0;
count = 1;
x = 100;
more = 'y';
หมายถึง ให้ตัวแปร value มีค่า = 0 count มีค่า = 1 x มีค่า = 100 และ more มีค่า = y
4) คำสั่งควบคุม (Control Statements)
คำสั่งควบคุมเป็นคำสั่งที่เขียนขึ้นมาเพื่อควบคุมการทำงานของโปรแกรม ได้แก่คำสั่ง If switch while for ซึ่งจะอธิบายในรายละเอียด ในเรื่องของคำสั่งโครงสร้างหรือคำสั่งควบคุมซึ่งอยู่ในหน่วยการเรียนรู้ที่ 7 และ 8
5) คำสั่งที่อยู่ในรูปฟังก์ชัน (Control Statements)
เป็นการนำฟังก์ชันมาตรฐานของภาษาซีมีใช้ในการเขียนโปรแกรมเช่นคำสั่ง printf scanf โดยจะกล่าวถึงเฉพาะคำสั่งประเภทนี้ในหัวข้อ การรับและการแสดงผลข้อมูล ในหน่วยการรียนรู้ที่ 6
คำสั่ง (Statement) หมายถึงประโยคที่เขียนขึ้นเพื่อให้โปรแกรมทำงาน ประกอด้วยตัวแปร หรือนิพจน์ต่าง ๆ เพื่อใช้ประกาศตัวแปร กำหนดค่าเริ่มต้น กำหนดเงื่อนไข และใช้ในคำสั่งควบคุม นิพจน์หรือตัวแปรที่เขียนขึ้นเป็นประโยคคำสั่งในภาษาซีจะใช้เครื่องหมาย ; (Semicolon) ปิดท้ายคำสั่ง
คำสั่งในภาษาซีสามารถแยกให้เห็นชัดเจนได้ 5 กลุ่ม คือ
1) คำสั่งสำหรับอธิบาย (Comment Statements)
2) คำสั่งกำหนดชนิดตัวแปร (Declaration Statements)
3) คำสั่งกำหนดค่า (Assignment Statements)
4) คำสั่งควบคุม (Control Statements)
5) คำสั่งที่อยู่ในรูปฟังก์ชัน เช่น คำสั่งรับข้อมูล คำสั่งแสดงผลข้อมูล เป็นต้น
ในโปรแกรมภาษาซีโปรแกรมหนึ่งๆอาจประกอบด้วยคำสั่งทั้ง 5 กลุ่มหรือมากกว่ากันก็ได้ เพื่อความเข้าใจคำสั่งแต่ละกลุ่มในหัวข้อนี้ จะขออธิบายเฉพาะคำสั่งสำหรับอธิบาย คำสั่งกำหนดชนิดตัวแปร และ คำสั่งกำหนดค่าให้กับตัวแปรเท่านั้น
1) คำสั่งสำหรับอธิบาย (Comment Statements)
คำสั่งสำหรับอธิบายในเทอร์โบซีจะใช้สัญลักษณ์ /* และ */ ประกบหัวท้ายข้อความ เพื่อเป็นข้อความอธิบาย หรือหมายเหตุ ของผู้เขียนโปรแกรมเอง ซีคอมไพเลอร์จะไม่สนใจคำสั่งนี้ และจะมีคำสั่งอธิบายกี่คำสั่งอยู่ส่วนไหนของโปรแกรมก็ได้ ดูการใส่คำอธิบายโปรแกรม
2) คำสั่งกำหนดชนิดตัวแปร (Declaration Statements)
คำสั่งกำหนดชนิดตัวแปรนี้มักจะอยู่ในส่วนต้นของโปรแกรม ตัวแปรทุกตัวแปรก่อนนำไปใช้ต้องประกาศตัวแปร พร้อมชนิดข้อมูลของตัวแปรนั้น และอาจกำหนดค่าเริ่มต้นให้กับตัวแปรนั้นๆด้วย ดังรูปแบบต่อไปนี้
รูปแบบ
<Type> <var1> [=const1][,<var2>[=conts2]]. . . ;
Type หมายถึง ชนิดตัวแปร เช่น int float char long double เป็นต้น
var1,var2 หมายถึง ชื่อตัวแปร ซึ่งต้องตั้งตามกฏการตั้งชื่อ
const1,const2 หมายถึง ค่าคงที่ ที่กำหนดค่าให้กับตัวแปร
ตัวอย่าง
int value , count , x ;
char more ;
หมายถึง มีการประกาศตัวแปรจำนวน 4 ตัว โดยให้ตัวแปร 3 ตัวแรกคือ value count และ x เป็นชนิดจำนวนเต็ม ส่วนประกาศตัวแปร more ให้เป็นตัวแปรชนิดตัวอักขระ
3) คำสั่งกำหนดค่า (Assignment Statements)
คำสั่งกำหนดค่าในเทอร์โบซีจะใช้ตัวดำเนินการ " = "เพื่อกำหนดค่าให้กับตัวแปร คำสั่งกำหนดค่านี้อาจใช้ในการกำหนดค่าเริ่มต้นให้กับตัวแปร หรือใช้ในการคำนวณนิพจน์ด้านขวาของตัวดำเนินการ " = " แล้วนำค่าที่ได้ไปกำหนดค่าให้กับตัวแปรด้านซ้ายของตัวดำเนินการ "= " หรืออาจใช้ในการคัดลอกค่าของตัวแปรหนึ่งไปให้กับอีกตัวแปรหนึ่ง โดยรูปแบบคำสั่งดังนี้
รูปแบบ
<var1> [ = <var2>]. . . = <expression> ;
var1,var2 หมายถึง ชื่อตัวแปรที่จะถูกกำหนดค่า
expression หมายถึง นิพจน์ ซึ่งอาจเป็นตัวแปร ค่าคงที่ หรือเป็นการดำเนินการระหว่าง ตัวแปร หรือ ค่าคงที่
= หมายถึง ตัวดำเนินการกำหนดค่า โดยให้นำค่านิพจน์ด้วยขวาของตัวดำเนินการ " = " ไปกำหนดค่าให้กับตัวแปร ที่อยู่ด้านซ้าย ของตัวดำเนินการ " = "
คำสั่งทุกคำสั่งจะต้องปิดด้วเครื่องหมาย ; (อ่านว่า Semicolon)
ตัวอย่าง
value = 0;
count = 1;
x = 100;
more = 'y';
หมายถึง ให้ตัวแปร value มีค่า = 0 count มีค่า = 1 x มีค่า = 100 และ more มีค่า = y
4) คำสั่งควบคุม (Control Statements)
คำสั่งควบคุมเป็นคำสั่งที่เขียนขึ้นมาเพื่อควบคุมการทำงานของโปรแกรม ได้แก่คำสั่ง If switch while for ซึ่งจะอธิบายในรายละเอียด ในเรื่องของคำสั่งโครงสร้างหรือคำสั่งควบคุมซึ่งอยู่ในหน่วยการเรียนรู้ที่ 7 และ 8
5) คำสั่งที่อยู่ในรูปฟังก์ชัน (Control Statements)
เป็นการนำฟังก์ชันมาตรฐานของภาษาซีมีใช้ในการเขียนโปรแกรมเช่นคำสั่ง printf scanf โดยจะกล่าวถึงเฉพาะคำสั่งประเภทนี้ในหัวข้อ การรับและการแสดงผลข้อมูล ในหน่วยการรียนรู้ที่ 6
อักขระ Escape sequence
Escape Sequence คือรหัสพิเศษที่แทรกลงไปในค่าคงที่สตริง เพื่อใช้ควบคุมการแสดงผลของตัวอักษรในลักษณะต่างๆ โดยการเขียนจะต้องมีเครื่องหมาย \ (Back-Slash) นำหน้า รหัสควบคุมการแสดงผลดูได้จากตารางต่อไปนี้
Escape Sequence คือรหัสพิเศษที่แทรกลงไปในค่าคงที่สตริง เพื่อใช้ควบคุมการแสดงผลของตัวอักษรในลักษณะต่างๆ โดยการเขียนจะต้องมีเครื่องหมาย \ (Back-Slash) นำหน้า รหัสควบคุมการแสดงผลดูได้จากตารางต่อไปนี้
ตัวอย่าง
printf("this is C compiler\n"); // แสดงข้อความ this is C compiler แล้วขึ้นบรรทัดใหม่
printf("\a\a\a"); //ส่งเสียง บี๊ป บี๊ป บี๊ป (เสียง บี๊ป 3 ครั้ง)
printf("\"this is C compiler\"\n"); // แสดงข้อความ "this is C compiler "แ ล้วขึ้นบรรทัดใหม
printf("this is C compiler\n"); // แสดงข้อความ this is C compiler แล้วขึ้นบรรทัดใหม่
printf("\a\a\a"); //ส่งเสียง บี๊ป บี๊ป บี๊ป (เสียง บี๊ป 3 ครั้ง)
printf("\"this is C compiler\"\n"); // แสดงข้อความ "this is C compiler "แ ล้วขึ้นบรรทัดใหม
รหัสรูปแบบ Format code
เป็นรหัสที่ใช้ควบคุมการรับ และ แสดงผลข้อมูล ในภาษาซี ซึ่งมักจะใช้ร่วมกับฟังก์ชัน printf และ scanf เพื่อบอกว่าข้อมูลที่แสดง หรือรับเข้ามานั้นเป็นชนิดอะไร ดังตาราง
เป็นรหัสที่ใช้ควบคุมการรับ และ แสดงผลข้อมูล ในภาษาซี ซึ่งมักจะใช้ร่วมกับฟังก์ชัน printf และ scanf เพื่อบอกว่าข้อมูลที่แสดง หรือรับเข้ามานั้นเป็นชนิดอะไร ดังตาราง
ตัวอย่าง
printf("Enter radius : "); // แสดงข้อความว่า Enter radius :
scanf("%d",&radius); // รอรับจำนวนเต็มมาเก็บไว้ที่ตัวแปร radius
หรือ
char scl[20]="Thungsong school"; // scl เก็บคำว่า Thungsong school
printf("This is %s",scl); // ให้แสดงข้อความ This is Thungsong school
printf("Enter radius : "); // แสดงข้อความว่า Enter radius :
scanf("%d",&radius); // รอรับจำนวนเต็มมาเก็บไว้ที่ตัวแปร radius
หรือ
char scl[20]="Thungsong school"; // scl เก็บคำว่า Thungsong school
printf("This is %s",scl); // ให้แสดงข้อความ This is Thungsong school