ภาษา ซี

ใครสร้างภาษาซี 


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"


ฟังก์ชั่นคืออะไร
เมื่อเราพูดถึงคำว่า ฟังก์ชั่น จะหมายถึง ความรับผิดชอบต่อหน้าที่ของตนเอง ยกตัวอย่างเช่น
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)
เป็นตัวอักษรที่ไม่สามารถพิมพ์ได้ เช่น ( “ ) ,( ‘ ) หรือ ( \ ) ถ้าต้องการพิมพ์ออกมาเราจะต้องใช้ \ แล้วตามด้วยอักขระที่ต้องการ มีลำดับหลีกที่ใช้ทั่วไป ดังนี้

อักขระ
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
จากข้อมูลที่กล่าวมาทั้งหมดนั้นจะช่วยบอกรูปแบบการเขียนภาษา C ให้เราได้มากขึ้นเพื่อนนำไปใช้เขียนโค้ดได้อย่างถูกต้อง ซึ่งกฎเหล่านี้อาจจะนำไปใช้กับการเขียนโปรแกรมภาษาอื่นๆ ได้อีกด้วย เพราะโครงสร้างของภาษาคอมพิวเตอร์ส่วนใหญ่มักจะไม่ต่างกันมากนัก เราไม่ควรละเลยกฎเหล่านี้เพราะมันอาจจะทำให้เราเสียเวลาในการค้นหาและแก้ไขจุกบกพร่ิองของโปรแกรมเมื่อเิกิดข้อผิดพลาดได้



 ในบทความนี้ผมจะมากล่าวถึงเรื่องคำสั่งในการรับและแสดงผลข้อมูล (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()

เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้
scanf(control, argument)
ฟังก์ชัน scanf จะมีลักษณะคล้ายกับ printf โดยเราจะต้องใส่ Format Code ไว้ในเครื่องหมาย " " และระบุตัวแปรที่จะมารับข้อมูลจากผู้ใช้ที่ป้อนเข้ามา โดยจะต้องมี & นำหน้าตัวแปรที่เราต้องการใส่ค่าเสมอ ยกเว้นตัวแปรที่เป็นอะเรย์ ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ


อธิบายโปรแกรม 
จากตัวอย่างมีการประกาศตัวแปร คือ 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 ติดตามตอนต่อไปนะครับ







ไม่มีความคิดเห็น: