Dennis Ritchie ผู้ให้กำเนิดภาษา C
ภาษาซี ถูกออกแบบและสร้างขึ้นในปี พ.ศ. 2515 โดย Dennis Ritchie ซึ่งเป็นนักคณิตศาสตร์ ทำงานที่ห้องปฏิบัติการเบลล์ (Bell Laboratories) มลรัฐนิวเจอร์ซี (New Jersey) ประเทศสหรัฐอเมริกา
ภาษา C มีไว้เพื่ออะไร ?
ถ้ากล่าวถึงภาษาซี ถูกสร้างขึ้นมาเพื่ออะไร เรียนให้ทราบอย่างนี้ว่า ภาษาคอมพิวเตอร์ทุกภาษาไม่ว่าจะเป็นภาษา Assembly, C/C++, Basic, Pascal, Python, Pov-ray, VHDL และอื่น ๆ อีกมากมายทั้งหลายนั้น มีจุดประสงค์อย่างเดียวกันคือให้ผู้ใช้หรือโปรแกรมเมอร์สามารถเขียนโปรแกรมเพื่อทำงานตามที่เขาทั้งหลายต้องการได้ ดังนั้นผู้เขียนขอสรุปสั้น ๆ เอาไว้ตรงนี้ว่า ภาษาซีเป็นหนึ่งในหลาย ๆ ภาษาที่มีความสามารถสูงมาก นอกจากนั้น ภาษาซียังถูกนำไปใช้ในการสร้างระบบปฏิบัติการอีกด้วย
ทำไมภาษาซี ถึงได้มีหลากหลายผลิตภัณฑ์เหลือเกิน
ภาษาซี ถูกสร้างโดย Denis Richie ก็จริง แต่ในเวลาต่อมาบริษัท Borland และบริษัท Microsoft ได้นำหลักการดังกล่าวมาสร้างเป็นเวอร์ชั่นของตน และขายให้กับนักโปรแกรมเมอร์ทั่วไปอย่างเรา ๆ ท่าน ๆ ได้ใช้กัน ผู้เขียนขอสรุปผลิตภัณฑ์ภาษาซี พอเป็นสังเขปดังนี้
1 Turbo C หรือ TC เป็นผลิตภัณฑ์ของบริษัท Borland
2 Microsoft C เป็นผลิตภัณฑ์ของบริษัท ไมโครซอฟต์
3. C Keil (อ่านว่า คาย) เป็นผลิตภัณฑ์ของบริษัท Keil
4. CCS เป็นผลิตภัณฑ์ของบริษัท MicroPIC (เป็นภาษาซีสำหรับไมโครคอนโทรลเลอร์)
5. MinWG เป็น Standatd C/C++ ของค่าย GNU (เป็นของฟรีใช้งานได้โดยไม่เสียค่าลิขสิทธิ์)
ภาษาซีมีข้อเด่น เรื่องใดบ้าง ?
ผมขอสรุปข้อเด่นของภาษาซีเป็นข้อ ๆ ได้ดังนี้
1. สามารถเข้าถึงอุปกรณ์ฮาร์ดแวร์ได้โดยตรง
2. สนับสนุนแนวคิดภาษา Structure ตอนนี้ผมอยากให้ผู้อ่านจำแค่ว่า "ภาษาซีเป็นภาษา Structure" เท่านั้นก่อน รายละเอียดผมจะได้อธิบายในบทต่อ ๆ ไป
3. ภาษาซี มีตัวแปร Pointer
4. โค๊ดที่เขียนด้วยภาษาซี สามารถนำไปคอมไพล์ใหม่ในคอมพิวเตอร์รุ่นอื่น ๆ ได้ เช่น โค๊ดภาษาซีที่เขียนภายใต้ระบบปฏิบัติการ DOS สามารถนำซอร์สโค๊ดตัวเดียวกันนี้ไปคอมไพล์ในเครื่อง Mac หรือระบบ Unix ได้
โหลดภาษาซีได้จากที่ไหน ?
่ปัจจุบันนี้ ระบบ Global Network หรืออินเตอร์เน็ต ได้เปิดใช้อย่างกว้างขวางมากขึ้น ถ้าผู้อ่านนึกอยากจะได้ภาษาซี สามารถต่อเข้าอินเตอร์เน็ตและค้นหาได้อย่างรวดเร็ว อาจจะใช้เวลาเพียง 30 นาทีเท่านั้น
ผู้อ่านสามารถโหลดคอมไพลเลอร์ภาษาซี ของบริษัท Borland ได้ที่ลิงค์ด้านล่าง -> http://community.borland.com/article/20841/tc201.zip หรือท่านสามารถโหลดได้ที่นี่ TC.ZIP (1,017,901bytes)
ก่อนจะไปยังหัวข้อต่อไป ผมอยากจะแนะนำเทคนิคการค้นหาไฟล์ในระบบ Global Network ด้วยการค้นไปที่เว็บไซด์ http://www.filemirrors.com/ จากนั้นป้อนชื่อไฟล์ที่ท่านต้องการค้น ลิงค์ด้านบนเป็นผลจากการป้อนคีย์เวิร์ด "TC"
ก่อนจะไปยังหัวข้อต่อไป ผมอยากจะแนะนำเทคนิคการค้นหาไฟล์ในระบบ Global Network ด้วยการค้นไปที่เว็บไซด์ http://www.filemirrors.com/ จากนั้นป้อนชื่อไฟล์ที่ท่านต้องการค้น ลิงค์ด้านบนเป็นผลจากการป้อนคีย์เวิร์ด "TC"
เมื่อเราพูดถึงคำว่า ฟังก์ชั่น จะหมายถึง ความรับผิดชอบต่อหน้าที่ของตนเอง ยกตัวอย่างเช่น
add() เป็นฟังก์ชั่น ทำการบวก
subtract() เป็นฟังก์ชั่น ทำการลบ
multiply() เป็นฟังก์ชั่น ทำการคูณ
devision() เป็นฟังก์ชั่น ทำการหาร
printf() เป็นฟังก์ชั่นแสดงผลบนจอภาพคอมพิวเตอร์
scanf() เป็นฟังก์ชั่นรับข้อความจากแป้นคีย์บอร์ด
โปรดสังเกตว่า ทุก ๆ ฟังก์ชั่นจะมีเครื่องหมาย () เสมอ ส่วนจะมีอะไรภายในวงเล็บหรือไม่นั้น ตอนนี้อย่าพึ่งไปสนใจ ผมต้องการให้ผู้อ่านทราบในขั้นต้นเพียงว่า ทุก ๆ ฟังก์ชั่น จะมีเครื่องหมาย () ตามหลังเสมอ
ก่อนที่เราจะศึกษารายละเอียดในส่วนต่อไป ผมอยากทำความเข้าใจกับผู้เรียนเสียก่อนว่า ในยุคแรก ๆ ระบบคอมพิวเตอร์ ใช้รหัสฐานสองในการเขียนโปรแกรม ต่อมาจึงได้มีการพัฒนาภาษา Assembly ซึ่งเป็นภาษาระดับต่ำ ในเวลาต่อมา เมื่อโปรแกรมคอมพิวเตอร์ มีความสลับซับซ้อนมากขึ้น จึงได้พัฒนาโปรแกรมโดยใช้หลักการของ Structure ซึ่งภาษาที่สนับสนุนหลักการดังกล่าวได้แก่ C, Pascal, Basic และอื่น ๆ ในระยะนั้น การพัฒนาโปรแกรมดูเหมือนว่า จะไม่มีปัญหาอะไรเพราะสามารถสร้างโปรแกรมได้ทุกรูปแบบดีอยู่แล้ว แต่ในความเป็นจริงปัญหาที่เกิดขึ้นคือ การเขียนโปรแกรม ที่มีความสลับซับซ้อนสูง ๆ ไม่สามารถทำได้ดีนักด้วยภาษาที่ใช้หลักการ Structure จึงเป็นเหตุผลที่ต้องมีการพัฒนาแนวคิดใหม่ขึ้น นั่นคือหลักการที่ชื่อว่าObject Oriented โดยใช้แนวคิด คือรวมแนวคิดแบบ Structure เข้ากับการมองปัญหาเป็นวัตถุ หรือ Object ซึ่งโปรแกรมที่สนับสนุนแนวคิดดังกล่าวนี้คือ C++, Java, Python และอื่น ๆ นอกจากนั้นในยุคปัจจุบันได้มี .Net ของบริษัทไมโครซอฟต์ซึ่งได้แก่ Visual C++ .NET และ Visual Basic .NETโดยสนับสนับสนุนแนวคิดแบบ Object Oriented
ก่อนจะจบบทความนี้ ผมอยากจะสรุปความแตกต่างระหว่าง C และ C++ ให้ผู้อ่านทราบพอเป็นสังเขปดังต่อไปนี้
1. ภาษาซี มีจุดเด่นสูงสุดคือคำสั่ง struct ย่อมาจาก structure หมายถึงภาษาโครงสร้าง
2. ภาษา C++ มีจุดเด่นสูงสุดคือคำสั่ง Class ซึ่งมองปัญหาต่าง ๆ ออกเป็นส่วน ๆ เป็นกลุ่มก้อนหรือเป็นคลาส
3. ภาษา C และ C++ มีชนิดข้อมูลอันเดียวกัน เช่น มีตัวแปรเลขจำนวนเต็ม, ตัวแปรทศนิยม, ตัวแปร double และชนิดอื่น ๆ เหมือนกัน
4. ภาษา C และ C++ มีคำสั่งในการวนลูปทั้งหลาย เช่น for loop และ do while loop ที่มีรูปแบบการใช้งานเหมือนกัน 100 %
5. ภาษา C รับและแสดงผลข้อมูลโดยใช้ Header file ชื่อ stdio.h โดยใช้คำสั่ง printf() เพื่อแสดงผลข้อมูลให้ปรากฎลนจอภาพคอมพิวเตอร์ และคำสั่งscanf() เพื่อรับข้อมูลจากแป้นคีย์บอร์ด
ภาษา C++ รับและแสดงผลข้อมูลจาก Header file ชื่อ iostream.h โดยใช้คำสั่ง cout เพื่อแสดงผลข้อมูลให้ปรากฎบนจอภาพคอมพิวเตอร์ และคำสั่งcin เพื่อรับข้อมูลจากแป้นคีย์บอร์ด
ข้าพเจ้าหลับตาลงแล้วนึกย้อนกลับไปในวันแรกที่ตนสนใจที่จะเรียนรู้คอมพิวเตอร์ วันที่ 12 สิงหาคม 2535 คือจุดเริ่มต้นของการเรียนรู้เกี่ยวกับคอมพิวเตอร์ของข้าพเจ้า ในยุคนั้นคอมพิวเตอร์ในเมืองไทยนับเป็นเครื่องมือสำหรับบุคคลบางกลุ่มบางพวกเท่านั้น ได้แก่กลุ่มนักวิจัยและครูบาอาจารย์ในสายเทคโนโลยีระดับสถาบันหรือมหาวิทยาลัยภายในประเทศไทย
คอมพิวเตอร์ในยุคแรก ๆ ที่ผมเริ่มต้นใช้ สามารถแสดงสีได้เพียงสีเดียว คือ สีเขียว เรียกว่าจอภาพแบบ Monochrome (Mono แปลว่าหนึ่ง Chromeแปลว่า สี) ในวันนั้นผมยังคงเป็นนักศึกษาหนุ่มที่มีความปรารถนาอยากรู้อยากเห็น และได้ถามประโยคหนึ่งกับ อ.ที่ปรึกษาว่า "อาจารย์ครับ.. เครื่องที่ตั้งอยู่ข้างโต๊ะอาจารย์ คืออะไรหรือครับ ?" เสียงตอบจากท่านอาจารย์ "อ้อ.. เครื่องไมโครคอมพิวเตอร์" ผมถามกลับไปด้วยความสงสัย "มันใช้งานอยากหรือเปล่าครับ ?" คำตอบคือ "อืม.. ไม่ยากหรอก ถ้าสนใจเฮาสิสอนให้" (เฮา หมายถึง ผม หรือ เรา แทนผู้พูด) นับจากนั้นเป็นต้นมา ผมจึงได้เริ่มก้าวสู่เส้นทางสายคอมพิวเตอร์มาโดยตลอด
ในปีนั้น (พ.ศ. 2535) คอมพิวเตอร์ที่ใช้งานมีฮาร์ดดีกส์ซึ่งเป็นแหล่งเก็บข้อมูลซึ่งมีขนาดเพียง 10 MB เท่านั้น ซึ่งถือว่าน้อยมากเมื่อเปรียบเทียบกับปัจจุบันนี้ ผมยังจำได้ว่าระบบปฏิบัติการที่ใช้คือ DOS 2.0 ของบริษัทไมโครซอฟต์ โดยเมื่อเปิดเครื่องคอมพิวเตอร์ขึ้นมาครั้งแรก จะปรากฎข้อความบนจอภาพคอมพิวเตอร์ดังนี้
ถัดจากนั้นแสดงข้อความดังนี้
เมื่อเคาะ Enter 2 ครั้งจะเข้าสู่ DOS PROMPT ดังนี้
ในยุคนั้นบรรดาผู้ใช้คอมพิวเตอร์ภายในประเทศไทยนิยมพิมพ์เอกสารด้วยโปรแกรม CW หรือ RW ซึ่งเป็นโปรแกรมที่สร้างขึ้นโดยมหาวิทยาลัยจุฬาลงกรณ์ และโรงพยาบาลราชวิถี ผมเชื่อว่า นักคอมพิวเตอร์หรือเด็ก ๆ สมัยใหม่ส่วนมากไม่รู้จัก CW และ RW
ผมนับได้ว่าอยู่ในช่วงรอยต่อระหว่างระบบ DOS และ Windows และเป็นช่วงเวลา ที่ได้เรียนรู้ระบบใหม่และเก่าในเวลาเดียวกัน
สมัยก่อนนั้นการสร้างไฟล์ หรือสร้างโฟล์เดอร์จะต้องเข้าใจโครงสร้าง และชุดคำสั่งที่ใช้ในการจัดการเกี่ยวกับไฟล์และโฟลเดอร์ทั้งหลาย ปัจจุบันนี้นักคอมพิวเตอร์รุ่นใหม่ ส่วนใหญ่รู้จักการสร้าง Folder หรือลบและคัดลอกไฟล์ด้วยการลากรูปภาพกราฟิกเพียงไม่กี่ครั้งเท่านั้น นั่นคือความแตกต่างระหว่างช่วงรอยต่อดังกล่าว !!
ปัจจุบันนี้เราสามารถสั่งงานคอมพิวเตอร์ด้วยการกระทำกับภาพกราฟิกได้อย่างสะดวกสบายกว่าในอดีตมากมายนัก แต่เมื่อเราต้องการเขียนโปรแกรมคอมพิวเตอร์ สิ่งที่เรามองข้ามไปคือ ชุดคำสั่งเก่า ๆ ก่อนที่จะมีระบบกราฟิกอย่างทุกวันนี้
ดังนั้น ในความคิดส่วนตัวของผม เชื่อเหลือเกินว่าโปรแกรมเมอร์ หรือผู้ที่ปรารถนาจะเขียนโปรแกรมสำหรับวินโดวส์ ไม่อาจจะหลีกเลี่ยงการเรียนรู้คำสั่งDOS ไปได้
ดังนั้นก่อนที่ท่านจะได้ศึกษาการเขียนโปรแกรมด้วยภาษา C ผู้เขียนขออนุมานว่าท่านมีความรู้พื้นฐานเกี่ยวกับ DOS มาพอสมควร หากท่านยังไม่รู้จักDOS ท่านควรจะหาโอกาสศึกษาคำสั่งเหล่านั้นเพิ่มเติมเป็นอันดับแรก
ในครั้งแรกที่ผมเริ่มเขียนโปรแกรมนั้น ได้เขียนจดหมายส่งมายังเพื่อนที่กรุงเทพฯ พร้อมร้องขอให้เพื่อนส่งภาษาซีมาให้ ใช้เวลาร่วม ๆ หนึ่งสัปดาห์ แต่ปัจจุบันนี้ เทคโนโลยีก้าวหน้าไปกว่าก่อนมากมายนัก เราสามารถเชื่อมต่อคอมพิวเตอร์สู่ระบบ Global Network และสามารถค้นหา ดาวน์โหลดภาษาซี เพื่อติดตั้งได้อย่างง่ายดาย
สมัยนั้น ผมใช้ Turbo C 2.0 ซึ่งมีขนาดไม่ถึง 1 MB สามารถบรรจุลงในแผ่น Disket เพียงแผ่นเดียว โปรแกรมแรกที่ผมเขียน เพื่อต้องการแสดงคำว่าHello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ ซึ่งมีโค๊ดภาษาซีดังนี้
ผลลัพธ์ของโปรแกรมดังกล่าวจะแสดงคำว่า Hello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ หลายคนอาจจะหัวเราะในใจว่า ศึกษามาตั้งเยอะแยะ เพียงแค่แสดงข้อความให้ปรากฎบนจอภาพคอมพิวเตอร์เท่านี้เองหรือ ? แต่ในความเป็นจริง เราสามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงานได้มากกว่านั้นอีกมากมาย ผมจึงได้เขียนโค๊ดอีกอันหนึ่ง โดยให้แสดงคำว่า Hello World อย่างไม่รู้จบสิ้น ด้วยโค๊ดภาษาซีดังนี้
ในตอนเริ่มต้นนี้ผู้อ่านจะรู้สึกอยากลองเขียนภาษาซีมากขึ้น ต่อไปผมจะได้พาท่านผู้อ่าน ไปดูวิธีการเขียนโปรแกรมตั้งแต่เริ่มต้น จนกระทั่งสามารถสั่งให้มันทำงานได้ ผมมารู้ทีหลังว่า ภาษาซีมีอยู่หลายตัวด้วยกัน เพราะว่าแต่ละตัวถูกผลิตขึ้นมาจากบริษัทต่าง ๆ มากมาย ได้แก่
- Microsoft C ของบริษัทไมโครซอฟต์
- TC และ TC++ ของบริษัท Borland
- BC และ BC++ ของบริษัท Borland
- Keil C (อ่านว่า คาย) ของบริษัท Keil
- Pic C ของบริษัทไมโครซิป
- Visual C++ ของบริษัทไมโครซอฟต์
- Quick C ของบริษัทไมโครซอฟต์
- ภาษาซี ในระบบปฏิบัติการ UNIX
นอกจากนั้นยังมีภาษาซีอีกหลากหลายบริษัทเหลือเกิน แต่ทั้งหมดนั้น ยังคงใช้หลักการเขียนโปรแกรมอันเดียวกันทั้งสิ้น
บทความนี้เราจะมาเริ่มต้นกับรูปแบบของการเขียนภาษา C กันก่อนนะครับซึ่งผมจะปูพื้นฐานในภาษา C ไปซักระยะนึงก่อน จากนั้นผมจะค่อยๆ นำท่านเข้าสู่รูปแบบของ C++ ตามลำดับ เพื่อเป็นการลำดับขั้นตอนการเรียนรู้ให้เข้าใจมากขึ้น
โครงสร้างของภาษา C
เรามาดูโครงสร้างของภาษา C อย่างละเอียดกันอีกครั้งนะครับ
บรรทัดที่ 1 คือ ประกาศส่วนหัวของโปรแกรมโดยการนำเอาไฟล์ stdio.h จาก library เข้ามาใช้งาน
บรรทัดที่ 2 คือ จุดเริ่มต้นของ mian โปรแกรม
บรรทัดที่ 3 คือ เครื่องหมายปีกกาเพื่อแสดงจุดเริ่มต้นของ main
บรรทัดที่ 4 คือ เนื้อหาภายใน main โปรแกรม
บรรทัดที่ 5 คือ เครื่องหมายปีกกาเพื่อแสดงจุดสิ้นสุดของ main
โปรแกรมแรกของภาษา C
เราจะมาลองเขียนโปรแกรมแรกของเรากันเลยนะครับ โดยผมจะสร้าง Project ชื่อว่า Hello และไฟล์ที่ชื่อว่า Hello.c นะครับ ใครยังสร้าง Project จาก Visual C++ ไม่เป็นให้ย้อนกลับไปดูบทความช่วงแรกๆ ด่วนเลยนะครับ ส่วนใครที่ไม่ได้ใช้โปรแกรม Visual C++ แต่ใช้ตัวคอมไพล์เลอร์ตัวอื่น เช่น Turbo c ก็ใช้เขียนโปรแกรมของบทความนี้ได้เหมือนกันครับเพียงแต่ท่านต้องใช้โปรแกรมของท่านเป็นอยู่แล้วนะครับ เพราะบทความของเราจะเน้นเฉพาะโปรแกรม Visual C++ ที่ส่วนใหญ่จะนิยมใช้กัน เมื่้อสร้าง Project เสร็จแล้วให้พิมพ์โค้ดลงไปตามนี้นะครับ
วิธีการ compile และ run โปรแแกรม
หลังจากที่เราพิมพ์โค้ดเรียบร้อยแล้วให้เรามาเริ่มต้นการ compile และ run เพื่อทดสอบโปรแกรมกันนะครับให้ทำตามนี้
1. กดที่ปุ่มนี้จะเป็นการ compile เพื่อตรวจสอบความถูกต้องของโปรแกรม
ผลที่ได้จะรายงานออกมาที่ส่วนล่างสุดของหน้าต่างของโปรแกรม Visual C++
2. จากนั้นให้กดไปที่ปุ่ม build
ผลที่ได้จะรายงานออกมาที่ส่วนล่างสุดของหน้าต่างของโปรแกรม Visual C++ เช่นกัน
3. สุดท้ายให้เรากดที่ปุ่ม execute program เพื่อทำการรันผลลัพธ์ออกมา
ผลที่ได้จะแสดงข้อความ Hello webthaidd.com ออกสู่จอภาพที่เป็นหน้าต่าง Dos
จากขั้นตอนทั้ง 3 ดังกล่าวเราอาจจะกดปุ่ม execute program อย่างเดียวก็ได้ซึ่งจะเป็นการ compile ,build และก็ run โปรแกรมให้เราเสร็จในครั้งเดียวเลย เหมาะสำหรับคนใจร้อน ซึ่งในการเขียนโค้ดแต่ละครั้งถ้าเราไม่กดเซฟไว้เมื่อมาทำการ compile ,build หรือ run อย่างใดอย่างหนึ่งนั้น โปรแกรมจะทำการเซฟให้เราโดยอัตโนมัติทันที
บทความนี้เราจะมาดูกฎเกณฑ์ต่างๆ ที่เราจำเป็นต้องรับรู้ไว้ก่อนที่จะเขียนโค้ดภาษา C เพื่อความถูกต้องในการเขียนโค้ด ลองมาดูกันเลยครับ
กฎในการเขียนภาษา C
1. คำสั่งในภาษา C ต้องเขียนด้วยตัวพิมพ์เล็ก
2. ทุกประโยคเมื่อจบประโยคแล้วต้องใช้เครื่องหมาย “;” แสดงการจบประโยค ยกเว้นฟังก์ชันที่ตามด้วย ( ) ไม่ต้องปิดท้ายด้วย “;”
3. ในหนึ่งโปรแกรมจะมีกี่ฟังก์ชันก็ได้แต่จะต้องมีฟังก์ชันที่ชื่อ main เสมอ
4. การใส่หมายเหตุ (Comment) เพื่อใช้เป็นส่วนที่อธิบายโปรแกรมสามารถกระทำได้ 2 รูปแบบ คือ
4.1 /* และ */ ใช้สำหรับข้อความที่ยาวกว่า 1 บรรทัด โดยโปรแกรมจะถือว่าข้อความที่ตามหลัง /*จะเป็นหมายเหตุจนกว่าจะพบเครื่องหมาย */ จึงจะแสดงว่าจบหมายเหตุแล้ว
5. // เหมาะสำหรับข้อความสั้นๆ 1 บรรทัด โดยถ้าบรรทัดใดขึ้นต้นด้วย // บรรทัดนั้นจะถือว่าเป็น หมายเหตุ
ชุดอักขระภาษา C
ภาษา C ใช้ตัวอักษรได้ทั้งเล็กและใหญ่ ตัวเลข 0-9 และตัวอักขระพิเศษในการสร้างองค์ประกอบพื้นฐานของโปแกรม อักขระพิเศษดังกล่าวมีดังนี้
นอกจากนี้ภาษา C ทุกรุ่นยังยอมให้มีการใช้อักขระอื่นๆ เช่น @ และ $ .ในส่วนที่เป็นสตริงและคำอธิบาย
กฎการตั้งชื่อ
การตั้งชื่อตัวแปรใดๆ ในโปรแกรมจะประกอบด้วยตัวอักษรหรือตัวเลขก็ได้ แต่อักขระตัวแรกจะต้องเป็นตัวอักษรเสมอ การตั้งชื่อตัวแปรสามารถกำหนดเป็นตัวอักษรเล็กหรือใหญ่ก็ได้ แต่ตัวอักษรเล็กและใหญ่ในคำๆ เดียวกันจะมีความหมายต่างกัน เราสามรถใช้ขีดล่าง ( _ ) มาตั้งชื่อก็ได้และสามารถกำหนดให้เป็นอักขระตัวแรกของชื่อก็ได้ ตัวอย่างการตั้งชื่อ เช่น
X
|
y12
|
sum_1
|
_temp
|
name
|
area
|
tax_rate
|
TABLE
|
ตัวอย่างการตั้งชื่อที่ผิด
4ht
|
ไม่ได้เพราะ
|
อักขระตัวแรกเป็นตัวเลข
|
“x”
|
ไม่ได้เพราะ
|
ใช้อักขระไม่ถูกต้อง (“)
|
order-no
|
ไม่ได้เพราะ
|
ใช้อักขระไม่ถูกต้อง (-)
|
error flag
|
ไม่ได้เพราะ
|
ใช้อักขระไม่ถูกต้อง (blank)
|
เป็นตัวอักษรที่ไม่สามารถพิมพ์ได้ เช่น ( “ ) ,( ‘ ) หรือ ( \ ) ถ้าต้องการพิมพ์ออกมาเราจะต้องใช้ \ แล้วตามด้วยอักขระที่ต้องการ มีลำดับหลีกที่ใช้ทั่วไป ดังนี้
อักขระ
|
escape sequences
|
ค่า ASCII
|
bell (กระดิ่ง )
|
\a
|
007
|
backspace
|
\b
|
008
|
แท็บตามแนวนอน
|
\t
|
009
|
ขึ้นบรรทัดใหม
|
\n
|
010
|
แท็บตามแนวตั้ง
|
\v
|
011
|
ขึ้นหน้าใหม่
|
\f
|
012
|
ปัดแคร่
|
\r
|
013
|
อัญประกาศ
|
\”
|
034
|
อะโพสโตรฟิ
|
\’
|
039
|
เครื่องหมายคำถาม
|
\?
|
063
|
แบ็กสแลช
|
\\
|
092
|
นัล
|
\0
|
000
|
ในบทความนี้ผมจะมากล่าวถึงเรื่องคำสั่งในการรับและแสดงผลข้อมูล (I/O Function) คือ printf() และ scanf() ที่ใช้ในภาษา C กันนะครับ ซึ่งเวลาที่เราต้องการให้โปรแกรมของเรารับข้อมูลเข้าไปหรือแสดงผลการคำนวณออกมาทางหน้าจอ เราจำเป็นต้องใช้ฟังก์ชันทั้ง 2 มาใช้งานให้ถูกต้อง ลองมาดูกันเลยครับ
ฟังก์ชัน printf()
เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้
printf(control, argument)
|
เช่น printf(“i = %d \n”,i); จะสังเกตว่า ภายใน “ “ จะมีเครื่องหมาย % อยู่ซึ่งเราจะเรียกว่า Format Code ซึ่งจะเป็นตัวกำหนดให้ข้อมูลที่อยู่ในตำแหน่งหลังเครื่องหมาย , แสดงออกมา โดยจะมีความหมายดังตาราง
ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ
อธิบายโปรแกรม
จากโปรแกรมนี้เราจะกำหนดตัวแปรออกเป็นชนิดต่างๆ 4 ชนิด แล้วกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้นแล้วให้แสดงผลลัพธ์ที่ตัวแปรเหล่านั้นเก็บไว้ออกมาทางจอภาพโดยใช้ฟังก์ชัน printf() และจะต้องคำนึงถึง Format Code ด้วย
printf("a = %c\n",a); --------------> ใช้ %c เพราะ a เป็น char
printf("x = %d\n",x); --------------> ใช้ %d เพราะ x เป็น int
printf("y = %f\n",y); --------------> ใช้ %f เพราะ y เป็น float (ทศนิยม)
printf("z = %f\n",z); --------------> ใช้ %f เพราะ z เป็น double (ทศนิยม)
นอกจากนั้นการแสดงผลลัพธ์ที่เป็นจุดทศนิยมเราสามารถกำหนดได้ว่าจะให้มีทศนิยมกี่ตำแหน่งโดยการกำหนดที่ Format Code ดังตัวอย่างต่อไปนี้
printf("y = %.2f\n",y); --------------> ใส่ค่า .2 หมายถึง แสดงทศนิยม 2 ตำแหน่ง
printf("z = %.3f\n",z); --------------> ใส่ค่า .3 หมายถึง แสดงทศนิยม 3 ตำแหน่ง
ฟังก์ชัน scanf()ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ
อธิบายโปรแกรม
จากโปรแกรมนี้เราจะกำหนดตัวแปรออกเป็นชนิดต่างๆ 4 ชนิด แล้วกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้นแล้วให้แสดงผลลัพธ์ที่ตัวแปรเหล่านั้นเก็บไว้ออกมาทางจอภาพโดยใช้ฟังก์ชัน printf() และจะต้องคำนึงถึง Format Code ด้วย
printf("a = %c\n",a); --------------> ใช้ %c เพราะ a เป็น char
printf("x = %d\n",x); --------------> ใช้ %d เพราะ x เป็น int
printf("y = %f\n",y); --------------> ใช้ %f เพราะ y เป็น float (ทศนิยม)
printf("z = %f\n",z); --------------> ใช้ %f เพราะ z เป็น double (ทศนิยม)
นอกจากนั้นการแสดงผลลัพธ์ที่เป็นจุดทศนิยมเราสามารถกำหนดได้ว่าจะให้มีทศนิยมกี่ตำแหน่งโดยการกำหนดที่ Format Code ดังตัวอย่างต่อไปนี้
printf("y = %.2f\n",y); --------------> ใส่ค่า .2 หมายถึง แสดงทศนิยม 2 ตำแหน่ง
printf("z = %.3f\n",z); --------------> ใส่ค่า .3 หมายถึง แสดงทศนิยม 3 ตำแหน่ง
เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้
scanf(control, argument)
|
อธิบายโปรแกรม
จากตัวอย่างมีการประกาศตัวแปร คือ a เป็นตัวแปรชนิด int ถัดมาเป็นการแสดงคำพูด Enter number : ที่หน้าจอ จากนั้นฟังก์ชัน scanf() จะทำงานโดยการรอรับข้อมูลจากผู้ใช้ให้เราพิมพ์ตัวเลขจำนวนเต็มใส่ลงไป ตัวเลขที่เราพิมพ์ลงไปนั้นจะถูกเก็บไว้ที่ตัวแปร a แล้วจึงแสดงผลลัพธ์ของตัวเลขนั้นอีกครั้งที่จอภาพ
scanf("%d" ,&a); --------------> %d เป็นการระบุรูปแบบของตัวแปรที่จะมารองรับค่า, &a คือ ตัวแปรที่จะมารับค่า
สำหรับฟังก์ชัน printf() และ scanf() นั้นจะเป็นฟังก์ชันพื้นฐานที่จะใช้กันบ่อยๆ ในภาษา C เราควรฝึกใช้งานให้คล่องนะครับ ส่วนใน C++ ฟังก์ชันทั้ง 2 นี้จะถูกเปลี่ยนแปลงไปและการใช้งานก็ต่างกันนิดหน่อยซึ่งผมจะยังไม่กล่าวถึงในตอนนี้นะครับ
บทความในตอนนี้จะเป็นตอนต่อจากตอนที่แล้วนะครับ ซึ่งในตอนที่แล้วเราได้กล่าวถึงคำสั่งแบบ simple if ไปโดยเป็นการ ตรวจสอบเงื่อนไขว่าถ้าเป็นจริงจะเข้าไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ แต่ถ้าเป็นเท็จจะข้ามไป สำหรับในตอนนี้ เราจะพูดถึงเงื่อนไขในแบบที่ 2 คือ if...else กันต่อเลยนะครับ
2 .แบบ 2 เงื่อนไข (if...else) มีรูปแบบดังนี้
จากรูปแบบของคำสั่งจะเห็นว่าจะมีลักษณะการเขียนคล้ายกับแบบ simple if แต่จะมีการเพิ่มเติมคำว่า else เข้าไปด้วย ซึ่งการทำงานของคำสั่งแบบนี้นั้นจะทำการตรวจ สอบเงื่อนไขที่ if ก่อนว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ใน if แต่ถ้าเป็นเท็จก็จะไปทำงานในกลุ่มคำสั่งที่อยู่ในส่วนของ else ซึ่งจะ เป็นเหมือนมีทางเลือก 2 ทางนั่นเอง ลองมาดูแผนภาพของคำสั่งแบบ if...else กันนะครับ
ดูจากแผนภาพแล้วจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนดไว้ในกลุ่มแรก แต่ถ้าเงื่อนไขเป็นเท็จก็จะวิ่งเข้ามาที่กลุ่มคำสั่งของ else ในกลุ่มที่ 2 จากนั้นจึงค่อยมาทำที่คำสั่งในส่วนถัดมาของโปรแกรมต่อไป ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับ
อธิบายโปรแกรม จากโปรแกรมได้ประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z จากนั้นมาเจอคำสั่ง if โดยมีเงื่อไข ว่า x มากกว่าหรือเท่ากับ yถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในส่วนของ if ทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วนของ else ของโปรแกรมคือ หาค่าของ x+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 10 นะครับ ให้ลองเปลี่ยนค่า x ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่า ผลออกมาจะเป็นอย่างไร?
สำหรับคำสั่งประเภท if..else ก็มีรูปแบบการใช้งานดังที่กล่าวมาแล้ว สำหรับในบทความตอนต่อไปเราจะมาเรียนรู้คำสั่งสุดท้ายของประเภท if กันนะครับนั่นคือ Nested if ติดตามตอนต่อไปนะครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น