
2. C
ขั้นพื้นฐาน (สำหรับผู้เริ่มต้น)
คราวที่แล้วเราได้พูดถึงโครงสร้างหลักของภาษา
C มาแล้วนะครับ
ตอนนี้มาพูดถึงตัวแปรบ้าง
ตัวแปรมีประโยชน์ตรงที่ช่วยให้เราสามารถเก็บค่าบางค่าได้ชั่วคราวไง
ตัวแปรมีหลายประเภทครับ
เอาเป็นว่ามาดูตัวอย่างดีกว่าจะได้อธิบายได้ง่ายขึ้น
โปรแกรม #2
/* Comment Section */
main()
ิ{
int lower,upper,step;
float rad,area;
lower = 1; upper = 21; step =2;
rad=lower;
while(rad <=upper) {
area=(22.0/7.0) * rad * rad;
printf("%4.0f %6.2f \n",rad,area);
rad=rad + step;
}
}
|
จะเห็นได้ว่าโปรแกรมรู้สึกจะยุ่งยากขึ้นอีกนิดหนึ่ง
โปรแกรมนี้จะแสดงการคำนวณหาพื้นที่วงกลม
ตั้งแต่
วงกลมที่มีรัศมี 1
ไปจนถึงวงกลมที่มีรัศมี
21 โดยนับจาก 1,3,5 ไปจนถึง 21
โดยใช้สูตร Area=22/7 * rad * rad
เมื่อ rad คือ รัศมี
มาดูโปรแกรมกัน
เห็นบรรทัดแรกครับ
มีเครื่องหมาย /* ข้อความ
แล้วจบด้วย */ ในระหว่างเครื่องหมายนี้จะเป็น
comment หรือคำอธิบาย
เราจะพิมพ์อะไรก็ได้
แต่จะไม่เกี่ยวกับโปรแกรมเลย
ภายใน block main ครับ
ดูบรรทัดนี้
int lower,upper,step;
float rad,area;
สองบรรทัดนี้คือการประกาศค่าตัวแปรที่จะนำไปใช้นั่นเอง
จาก int
lower,upper,step;
ก็จะหมายความว่า
ให้ตัวแปร lower ตัวแปร upper
และตัวแปร step
ให้เก็บข้อมูลแบบจำนวนเต็ม
( integer : int ) และ float
rad,area; ก็คือ
ให้ตัวแปร rad และตัวแปร area
เก็บค่าข้อมูลแบบจำนวนจริง
(float) งงไหม ครับ เอางี้มาดูตัวแปรที่สามารถประกาศให้ใช้ได้ดีกว่า
char
int
float
double
short int
long int
unsigned int
|
ข้อมูลชนิดตัวอักษร
1 ตัว
ข้อมูลชนิดจำนวนเต็ม
ข้อมูลจำนวนจริง
จำนวนจริงเหมือนกันแต่เก็บได้เป็น
2 เท่าของ float
ก็ตรงกับชื่อนะ
เก็บได้ข้อมูลจำนวนเต็มสั้นๆ
เก็บข้อมูลได้จำนวนเต็มยาวขึ้น
เก็บข้อมูลจำนวนเต็มแบบไม่คิดเครื่องหมาย
|
ยกตัวอย่างการใช้ก็เช่น
char s;
ก็ให้ตัวแปร s
เก็บข้อมูลแบบตัวอักษรได้
1 ตัว ( 1 ไบต์ หรือ 8 บิต )
double aa; ก็ให้ตัวแปร aa
เก็บข้อมูลแบบ double
long int y; ตัวแปร y
เก็บข้อมูลแบบจำนวนเต็มยาวๆ
ได้
unsigned int x;ตัวแปร x
เก็บข้อมูลแบบจำนวนเต็มไม่คิดเครื่องหมาย
นี่ก็คือตัวอย่างง่ายๆนะครับ
สำหรับการตั้งชื่อตัวแปรมีกฎดังนี้
คือ อักษรตัวแรกของชื่อตัวแปรต้องเป็นตัวอักษรเสมอ
และตัวแปรจะมีความยาวเท่าไหร่ก็ได้
แต่จะถือว่า อักษร 8
ตัวแรกสำคัญเสมอ เช่น
ตั้งว่า microsoftwindows
แท้จริงแล้วคอมไพล์เลอร์จะมองเห็นตัวแปรตัวนี้แค่
microsof เท่านั้น
แต่ตามการเขียนโปรแกรมทั่วไป
มักจะตั้งให้ตัวแปรมีความหมายตรงกับประโยชน์ที่ใช้และมักใช้เครื่องหมาย
_ เพื่อให้ง่ายต่อการอ่าน
เช่น my_page_offset
มันจะอ่านง่ายกว่า mypageoffset
และการใช้ตัวอักษรตัวใหญ่เล็ก
ถือว่าเป็นตัวแปรคนละตัว
เช่นว่า ONE One one oNe oNE onE ONe ทั้ง 7
ตัวนี้
ถือว่าเป็นตัวแปรคนละตัวกันนะครับ
แต่ตามปกติที่โปรแกรมเมอร์ใช้ทั่วไปแล้ว
นิยมตั้งชื่อตัวแปรด้วยตัวเล็ก
แต่
ตัวใหญ่ใช้เก็บค่าคงที่
และนอกจากนี้ พวกคำสงวน
(reserve word) เช่น if, else,while,float
ไม่สามารถนำมาตั้งเป็นชื่อตัวแปรได้
มาดูโปรแกรมของเราต่อ
ส่วนการกำหนดค่าให้กับตัวแปรนั้น
ใช้ lower=1; ก็คือ ให้ค่า 1
แก่ตัวแปร lower
อีกอย่างหนึ่งก็คือเราสามารถกำหนดค่าตัวแปรเริ่มต้นตอนประกาศตัวแปรได้เลย
เช่น
int maximum=30; ก็หมายความว่า
ให้ตัวแปร maximum
เก็บข้อมูลแบบจำนวนเต็มและมีค่าเท่ากับ
30 ซึ่งเราสามารถเปลี่ยนค่า
30 นี้ได้ภายหลัง maximum
ตัวนี้เป็นตัวแปรนะครับไม่ใช่ค่าคงที่
มาดูประโยค while ดีกว่า while
ใช้ในการวนรอบ loop
ของคำสั่ง มีรูปแบบคือ
while ( เงื่อนไข )
{
----- ส่วนนี้คือคำสั่ง -----
}
จากโปรแกรม
อธิบายได้ดังนี้ คือ while
เริ่มต้นด้วยการทดสอบว่าเงื่อนไขที่กำหนดไว้ถูกต้องหรือไม่
(ในตอนแรกถูกต้องเพราะ rad
มีค่า 1 ซึ่งน้อยกว่า upper
ซึ่งมีค่า 21)
ถ้าปรากฏว่าถูกต้องแล้วจึงทำงานใน
block { ---- }
ได้แก่การคำว่าค่า area
และพิมพ์ผลลัพธ์ที่ได้ออกมา
ลองดูส่วนของการคำนวณ area=(22.0/7.0) * rad * rad; ขอให้สังเกตว่า
เราเอา 22.0 / 7.0 ไม่ใช่เอา 22/7
นั่นก็เพราะว่าฟถ้าเราเขียน
22/7 จะหมายความว่าเราเอาจำนวนเต็มหารจำนวนเต็ม
ซึ่งภาษา C จะคำนวณเป็นค่าจำนวนเต็ม
ผลลัพธ์ที่ได้ C
จะตัดทศนิยมทิ้งหมด
ซึ่งถ้าเราทำแบบนี้จะได้ผลลัพธ์
3 ถ้วนๆ ไม่มีทศนิยม
และมาดูส่วนการแสดงผล printf(" %4.0f %6.2f \n",rad,area); จะเห็นได้ว่ามีการกำหนดรูปแบการพิมพ์ด้วยเครื่องหมาย
% โดยใช้ %4.0f
เพื่อพิมพ์ค่า rad และใช้ %6.2f
เพื่อพิมพ์ค่า area อักษร f
นั้นกำหนดให้พิมพ์ค่าเป็นแบบทศนิยม
(หรือจำนวนจริง) %4.0f คือ
ให้พิมพ์ค่าทศนิยมมีความกว้าง
4 ตัวอักษรไม่มีตัวเลขหลังทศนิยม
ส่วน %6.2f คือ
ค่าทศนิยมความกว้าง 6
ตัวอักษร
และมีค่าหลังจุด 2 หลักนั่นเอง
ตัวอย่างของ %6.2f
ก็คือผลลัพธ์ดังนี้ 1964.29
นั่นก็คือมีตัวเลข 6
ตัวและมีเลขหลังจุดทศนิยม
2 จุดนั่นเอง
กลับมาดูคำสั่ง while
เมื่อวนไปเรื่อยๆ
จนมาถึงค่าหนึ่งซึ่ง rad
มีค่ามากกว่า upper
โปรแกรมก็จะหลุดออกมาจาก
block while
