สิ่งแรกที่จะต้องเตรียมในการเขียนโปรแกรมก็คือข้อมูล ดังนั้น ในบทนี้เราจะมาทำความรู้จักกับข้อมูลในภาษา C และวิธีการที่จะนำข้อมูลเหล่านั้นเข้ามาใช้ในโปรแกรมภาษา C สามารถทำได้โดยการสร้างตัวแปร หรือที่เรียกอีกอย่างหนึ่งว่า การประกาศตัวแปร (Variable Declaration)
ถ้าถามว่าข้อมูลคืออะไร ก่อนอื่นให้พิจารณาว่าเราเขียนโปรแกรมขึ้นมาเพื่ออะไร จุดประสงค์ของการเขียนโปรแกรมก็เพื่อทำงานให้สำเร็จตามวัตถุประสงค์ที่ตั้งไว้ ถ้าจะเปรียบเทียบให้ง่ายต่อการทำความเข้าใจ งานที่จะต้องทำก็คือ โจทย์ปัญหา ส่วนโปรแกรมก็คือ การแก้โจทย์ปัญหา ดังนั้น ข้อมูลก็คือ ทุกสิ่งที่เกี่ยวข้องกับปัญหา ซึ่งจะต้องนำมาใช้ในการแก้โจทย์ปัญหา หรือนำมาใช้ในการเขียนโปรแกรมนั่นเอง
สมมติว่าเราจะเขียนโปรแกรมสำหรับคิดดอกเบี้ยเงินฝากของลูกค้าธนาคาร ข้อมูลสำหรับปัญหานี้เป็นได้ตั้งแต่ประเภทของบัญชีเงินฝาก, อัตราดอกเบี้ย, เงินต้น, ระยะเวลาฝากเงิน, ชื่อบัญชี, เลขที่บัญชี และอื่น ๆ
จากข้อมูลทั้งหมดที่รวบรวมมาได้ เราไม่ได้ใช้ในการแก้ปัญหาทั้งหมด แต่จะเลือกเฉพาะข้อมูลที่มีประโยชน์และจำเป็นต้องใช้ สำหรับการเขียนโปรแกรมภาษา C ก็เช่นกัน เราต้องศึกษาว่าภาษา C มีข้อมูลกี่ชนิด แต่ละชนิดมีรายละเอียดอย่างไร เพื่อพิจารณาได้ว่าปัญหาที่เราจะต้องแก้ไขนั้นอะไรคือข้อมูลที่จะนำมาใช้ในการเขียนโปรแกรมได้บ้าง
ข้อมูลที่มีความหมายและใช้งานกันในภาษา C แบ่งได้เป็น 6 ชนิด ดังแสดงรายละเอียดต่อไปนี้
1.ตัวเลขจำนวนเต็ม (Integer) ก็คือ ตัวเลขจำนวนเต็มปกติทั่วไป ซึ่งเป็นได้ตั้งแต่จำนวนเต็มบวก จำนวนเต็มศูนย์ และจำนวนเต็มลบ ตัวอย่างข้อมูลชนิดจำนวนเต็ม ได้แก่ 19, 1500, 299, -543, 0, -45000
2.ตัวเลขทศนิยม (Float) ก็คือ ตัวเลขที่ไม่ใช่จำนวนเต็ม โดยอาจจะเป็นเลขทศนิยมชนิดคงที่ ทศนิยมไม่รู้จบ หรือทศนิยมที่อยู่ในรูปแบบ e ยกกำลังก็ได้ ตัวอย่างข้อมูลชนิดตัวเลขทศนิยมได้แก่ 11.25, -0.58, -178.26, 2.00, -1.512, 2.503, 16.66666..... และ 33.3333...
3.เลขฐานแปด (Octal) นอกจากระบบเลขฐานสิบที่เราใช้งานกันเป็นประจำในชีวิตประจำวันแล้วคอมพิวเตอร์ยังใช้ระบบเลขฐานแปดในการทำงานด้วย ดังนั้น ข้อมูลชนิดเลขฐานแปดจึงมีความหมายในภาษา C โดยการเขียนเลขฐานแปดทำได้โดยเขียนเลขศูนย์นำหน้าเลขในระบบฐานะแปด ยกตัวอย่างเช่น 0124, 077, 0113 และ 042
4.เลขฐานสิบหก (Hexadecimal) เลขฐานสิบหกเป็นระบบเลขฐานอีกชนิดหนึ่งที่คอมพิวเตอร์ใช้งาน ดังนั้น ข้อมูลชนิดเลขฐานสิบหกจึงมีความหมายในภาษา C สำหรับการเขียนข้อมูลชนิดเลขฐานสิบหกให้เขียนเลขศูนย์และตัว x (0x) นำหน้าเลขในระบบฐานสิบหก ยกตัวอย่างเช่น 0×17, 0×d, 0×5f, 0×33
5.อักขระ (Character) ก็คือ ตัวอักษรหรือสัญลักษณ์อื่น ๆ ที่มีความหมายและมีความยาว 1 อักขระ (1 byte) ซึ่งสามารถเป็นได้ตั้งแต่ตัวอักษร A-Z, a-z, 0-9 หรือสัญลักษณ์อื่น ๆ ที่มีความหมายอย่างเช่น ( # ๓ & โดยข้อมูลชนิดอักขระจะต้องเขียนไว้ภายในเครื่องหมาย ‘ ’ (single quote) ยกตัวอย่างเช่น ‘C’, ‘{’, ‘\n’, ‘#’, ‘@’ หรือ ‘A’
อักขระทั้งหมดที่ใช้ได้ในภาษา C สามารถตรวจสอบได้จากตารางอักขระรหัส ASCll (รายละเอียดอยู่ใน Appendix A) ตัวอย่างอักขระบางส่วนจากตาราง ASCll แสดงได้ดังนี้
ข้อมูลชนิดอักขระสามารถนำมาใช้ในการคำนวณได้เหมือนกับข้อมูลชนิดตัวเลข จากตาราง ASCll จะเห็นว่า อักขระ 1 ตัวมีค่าทั้งในระบบเลขฐานแปด (Octal) ฐานสิบ (Dec) และฐานสิบหก (Hex) ซึ่งการที่ตัวแปลภาษาจะเลือกนำค่าในระบบเลขฐานใดไปคำนวณนั้น ขึ้นอยู่กับผลลัพธ์ที่ต้องการว่าจะให้ออกมาเป็นค่าตัวเลขในระบบเลขฐานใด
1.ข้อความ (String) ก็คือ อักขระที่มีความยาวมากกว่า 1 ตัวเรียงต่อกันเป็นข้อความ โดยข้อมูลชนิดข้อความต้องเขียนอยู่ภายในเครื่องหมาย “ ” (Double quote) อย่างเช่น “C Language” “Dev Book”, “BANGKOK” สำหรับข้อมูลชนิดข้อความจะไม่สามารถนำไปคำนวณได้เหมือนข้อมูลชนิดอักขระ
ตัวแปรและหน้าที่ของตัวแปร
เมื่อราเตรียมข้อมูลไว้พร้อมแล้ว การจะนำข้อมูลเข้าไปใช้งานในโปรแกรมเราต้องทำให้ตัวแปลภาษา C รู้จักข้อมูลเหล่านั้นเสียก่อนจึงจะใช้งานได้ ซึ่งวิธีการก็คือ การสร้างตัวแปรสำหรับข้อมูลเหล่านั้นขึ้นมา
ตัวแปร (Variable) คือ การจองพื้นที่เก็บข้อมูลในหน่วยความจำของเครื่องคอมพิวเตอร์พร้อมกับกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้น เปรียบเทียบได้กับการจองห้องที่มีเลขที่ประจำห้องให้กับข้อมูล เวลาจะใช้งานข้อมูลใดก็ให้เรียกผ่านชื่อของตัวแปร
ยกตัวอย่างเช่น ถ้าเราสร้างตัวแปรขึ้นมา 1 ตัว โดยชื่อว่า Num สำหรับเก็บค่าตัวเลข 16 เมื่อต้องการนำจำนวน 16 นั้นมาใช้งาน เราก็พียงแต่เรียกชื่อ Num ตัวแปลภาษา C จะแปลความหมายถูกต้องว่า Num ก็คือ การนำค่าตัวเลข 16 ที่เก็บไว้ในหน่วยความจำมาใช้งาน
ชนิดของตัวแปรในภาษา C
ตัวแปรในภาษา C แบ่งเป็น 3 ประเภทใหญ่ ๆ คือ
· ตัวแปรพื้นฐาน (Scalar) ซึ่งหมายถึง ตัวแปรที่เก็บข้อมูลได้เพียงค่าเดียวในหนึ่งตัวแปร
· ตัวแปรชุด (Array)
· ตัวแปรโครงสร้าง (Structure) ซึ่งก็คือ ตัวแปรที่สามารถเก็บข้อมูลไว้ได้หลายค่าภายในตัวแปรตัวเดียว
ในบทนี้จะพูดถึงเฉพาะตัวแปรพื้นฐาน ส่วนตัวแปรชุดและตัวแปรโครงสร้างจะพูดถึงต่อไปในบทที่ 7 เรืองตัวแปรอาร์เรย์ (Array) และบทที่ 11 โครงสร้างข้อมูลในภาษา C
รูปแบบของการประกาศตัวแปร
การสร้างตัวแปรขึ้นมาใช้งานในโปรแกรมภาษา C จะเรียกว่า การประกาศตัวแปร (Variable Declaration) ซึ่งจะต้องเขียนคำสั่งให้ถูกต้องตามรูปแบบที่ภาษา C กำหนดไว้ ดังแสดงต่อไปนี้
นอกจากนี้เรายังสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรไปพร้อมกับการประกาศตัวแปรได้ด้วย ดังแสดงต่อไปนี้
ในกรณีที่จะสร้างตัวแปรชนิดเดียวกันมากกว่าหนึ่งตัว เราสามารถประกาศตัวแปรทั้งหมดพร้อมกันในคำสั่งเดียวได้ดังนี้
หลักการตั้งชื่อตัวแปร
ในการประกาศสร้างตัวแปรต้องมีการกำหนดชื่อ ซึ่งชื่อนั้นไม่ใช่ว่าจะต้องให้สื่อความหมายถึงข้อมูลที่จะเก็บเพียงอย่างเดียวโดยไม่คำนึงถึงอย่างอื่น เนื่องจากภาษา C มีข้อกำหนดในการตั้งชื่อตัวแปรเอาไว้ ถ้าตั้งชื่อผิดหลักการเหล่านี้โปรแกรมจะไม่สามารถทำงานได้ หลักการตั้งชื่อตัวแปรในภาษา C มีดังนี้
1.ต้องขึ้นต้นด้วยตัวอักษร A- Z หรือ a-z หรือเครื่องหมาย _(Underscore) เท่านั้น
2.ภายในชื่อตัวแปรสามารถใช้ตัวอักษร A-Z หรือ a-z หรือตัวเลข 0-9 หรือเครื่องหมาย_
3.ภายในชื่อห้ามมีการเว้นช่องว่างหรือใช้สัญลักษณ์อื่นนอกเหนือจากที่ระบุไว้ในข้อ 2
4.ตัวอักษรตัวเล็กและตัวใหญ่มีความแตกต่างกัน โดยชื่อ Cat จะไม่เหมือนกับ cat หรือ CAT ดังนั้นจึงต้องตรวจสอบให้ดี
5.ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserved word) ซึ่งมีดังนี้
ตัวอย่างการตั้งชื่อตัวแปรในภาษา C ทั้งที่ถูกต้องและไม่ถูกต้องตามหลักการ แสดงดังต่อไปนี้
ตัวแปรสำหรับข้อมูลชนิดข้อความ
ในภาษา C ไม่มีตัวแปรสำหรับข้อมูลชิดข้อความโดยเฉพาะ แต่ถ้าพิจารณากันจริง ๆ แล้วข้อความก็คือ การนำอักขระมาเรียงต่อกัน ดังนั้น การสร่างตัวแปรชนิดข้อความก็คือ การสร้างตัวแปรอักขระ (Char) เรียงต่อกันหลาย ๆ ตัวให้พอดีกับจำนวนอักขระในข้อความ หรือพูดอีกอย่างหนึ่งก็คือ การสร้างตัวแปรชุดสำหรับเก็บอักขระนั่นเอง
ตัวแปรชุดของอักขระที่สร้างขึ้นมานี้จะเรียกว่า ตัวแปรสตริง (String) ซึ่งรูปแบบการสร้างตัวแปร String สำหรับเก็บข้อความมีดังนี้
ตัวอย่างการเขียนคำสั่งเพื่อประกาศตัวแปร string สำหรับเก็บข้อความ แสดงดังต่อไปนี้
ท่อนจบบท
ในบทนี้เป็นการปูพื้นฐานในเรื่องของข้อมูล ชนิดของข้อมูลที่ใช้งานกันในภาษา C ความหมายและการสร้างตัวแปรขึ้นมาใช้งาน หลักการตั้งชื่อตัวแปรที่ถูกต้อง ซึ่งทั้งหมดนี้จะทำให้เราสามารถกำหนดข้อมูลและตัวแปรขึ้นมาใช้ในการเขียนโปรแกรมด้วยภาษา C ต่อไปได้เป็นอย่างดี
เฉลยแบบฝึกหัด
1. เฉลย
1.1 46 ข้อมูลชนิดตัวเลขจำนวนเต็ม
1.2 Football club ข้อมูลชนิดข้อความ
1.3 -36.754 ข้อมูลชนิดตัวเลขทศนิยม
1.4 -112 ข้อมูลชนิดตัวเลขจำนวนเต็ม
1.5 @ ข้อมูลชนิดอักขระ
1.6 0x485 ข้อมูลชนิดตัวเลขจำนวนเต็ม ในระบบเลขฐานสิบหก
1.7 Dev Book ข้อมูลชนิดข้อความ
1.8 0337 ข้อมูลชนิดตัวเลขจำนวนเต็ม ในระบบเลขฐานแปด
1.9 37.65 ข้อมูลชนิดตัวเลขทศนิยม
1.10 -1.5e-02 ข้อมูลชนิดตัวเลขทศนิยม ที่อยู่ในรูปแบบ e ยกกำลัง
2. เฉลย
2.1 -78 ตัวแปรชนิด int หรือ short
2.2 3.805 ตัวแปรชนิด float
2.3 U ตัวแปรชนิด char
2.4 38,400 ตัวแปรชนิด long
2.5 { ตัวแปรชนิด char
2.6 -58,735 ตัวแปรชนิด long
2.7 # ตัวแปรชนิด char
2.8 6.5x1045 ตัวแปรชนิด double
2.9 63,895 ตัวแปรชนิด long sinv unsigned long
2.10 15.236 ตัวแปรชนิด float
3.เฉลย
3.1 char 8 บิต (1 ไบต์)
3.2 int 16 บิต (2ไบต์)
3.3 float 32 บิต (4 ไบต์)
3.4 double 64 บิต (8 ไบต์)
3.5 long int 32 บิต (4 ไบต์ )
3.6 long double 128 บิต (16 ไบต์)
4. เฉลย
4.1 province ถูกต้องตามหลักการตั้งชื่อ
4.2 Num 3 ผิด เนื่องจากมีการเว้นช่องว่างภายในชื่อ
4.3 _last ถูกต้องตามหลักการตั้งชื่อ
4.4 birth#day ผิด เนื่องจากมีการใช้เครื่องหมาย#
4.5 Ex_14 ถูกต้องตามหลักการตั้งชื่อ
4.6 case ผิด เนื่องจากเป็นคำสงวน
4.7 47bits ผิด เนื่องจากขึ้นต้นด้วยตัวเลข
4.8 dog_age ถูกต้องตามหลักการตั้งชื่อ
4.9 t14.30 ผิด เนื่องจากมี . (จุด) อยู่ภายในชื่อ
4.10 Year_2008 ถูกต้องตามหลักการตั้งชื่อ
4.11 return ผิด เนื่องจากเป็นคำสงวน
4.12 xyz123 ถูกต้องตามหลักการตั้งชื่อ
4.13 in 1 ผิด เนื่องจากการเว้นช่องว่างภายในชื่อ
4.14 part@3 ผิด เนื่องจากมีการใช้เครื่องหมาย @
4.15 G ถูกต้องตามหลักการตั้งชื่อ
5.เฉลย
5.1 int num;
5.2 float total =44.582;
5.3 char letter = ‘L’;
5.4 float expo = 1.5e04;
5.5 char ch = ‘$’;
6.เฉลย
6.1 float a = -8.2, b= 0.005;
6.2 int x = 129, y= 87. Z=-22;
6.3 char c1 = ‘w’, c2 = ‘&’;
6.4 long bin = 123456789;
6.5 double c = 0.3333333333;
6.6 char x = ‘A’;
6.7 unsiged char y = 250;
6.8 int count = 4000;
6.9 double amount = 6379.123456;
6.10 float income = 34.6;
ตัวอย่างการประกาศตัวแปร แดสงดังต่อไปนี้