SlideShare ist ein Scribd-Unternehmen logo
1 von 39
ก่อนอื่นต้องขอกล่าวคำว่า quot;
สวัสดีquot;
 กับผู้อ่านทุกท่านนะครับ และขอขอบคุณที่เ้ข้ามาแวะชมและอ่านบทความใน เว็บไซต์ webthaidd.com รวมทั้งผู้อ่านที่มีความสนใจในบทความภาษา C และ C++ นะครับ<br />จุดเริ่มต้นของภาษาซีภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า quot;
The C Programming Languagequot;
 โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า quot;
ANSI Cquot;
<br />Dennis Ritchie<br />ภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ<br />เหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้น<br />จาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น<br />Bjarne Stroustrup<br />จำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับ<br />ต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกัน<br />ลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่้งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับ<br />ภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้าง<br />จากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)<br />ซึ่งการทำงานของโปรแกรมแบบโครงสร้างนั้นสามารถเข้าใจได้ง่ายและสามารถแก้ไขได้สะดวกครับ<br />ใครสร้างภาษาซี 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 (อ่านว่า คาย) เป็นผลิตภัณฑ์ของบริษัท Keil4. CCS เป็นผลิตภัณฑ์ของบริษัท MicroPIC (เป็นภาษาซีสำหรับไมโครคอนโทรลเลอร์)5. MinWG เป็น Standatd C/C++ ของค่าย GNU (เป็นของฟรีใช้งานได้โดยไม่เสียค่าลิขสิทธิ์)ภาษาซีมีข้อเด่น เรื่องใดบ้าง ? ผมขอสรุปข้อเด่นของภาษาซีเป็นข้อ ๆ ได้ดังนี้ 1. สามารถเข้าถึงอุปกรณ์ฮาร์ดแวร์ได้โดยตรง 2. สนับสนุนแนวคิดภาษา Structure ตอนนี้ผมอยากให้ผู้อ่านจำแค่ว่า quot;
ภาษาซีเป็นภาษา Structurequot;
 เท่านั้นก่อน รายละเอียดผมจะได้อธิบายในบทต่อ ๆ ไป 3. ภาษาซี มีตัวแปร Pointer 4. โค๊ดที่เขียนด้วยภาษาซี สามารถนำไปคอมไพล์ใหม่ในคอมพิวเตอร์รุ่นอื่น ๆ ได้ เช่น โค๊ดภาษาซีที่เขียนภายใต้ระบบปฏิบัติการ DOS สามารถนำซอร์สโค๊ดตัวเดียวกันนี้ไปคอมไพล์ในเครื่อง Mac หรือระบบ Unix ได้ โหลดภาษาซีได้จากที่ไหน ? ่ปัจจุบันนี้ ระบบ Global Network หรืออินเตอร์เน็ต ได้เปิดใช้อย่างกว้างขวางมากขึ้น ถ้าผู้อ่านนึกอยากจะได้ภาษาซี สามารถต่อเข้าอินเตอร์เน็ตและค้นหาได้อย่างรวดเร็ว อาจจะใช้เวลาเพียง 30 นาทีเท่านั้น<br />ผู้อ่านสามารถโหลดคอมไพลเลอร์ภาษาซี ของบริษัท Borland ได้ที่ลิงค์ด้านล่าง ->http://community.borland.com/article/20841/tc201.zip หรือท่านสามารถโหลดได้ที่นี่ TC.ZIP(1,017,901bytes)ก่อนจะไปยังหัวข้อต่อไป ผมอยากจะแนะนำเทคนิคการค้นหาไฟล์ในระบบ Global Network ด้วยการค้นไปที่เว็บไซด์ http://www.filemirrors.com/ จากนั้นป้อนชื่อไฟล์ที่ท่านต้องการค้น ลิงค์ด้านบนเป็นผลจากการป้อนคีย์เวิร์ด quot;
TCquot;
<br />ภาษาซีสำหรับผู้เริ่มต้น<br />  ข้าพเจ้าหลับตาลงแล้วนึกย้อนกลับไปในวันแรกที่ตนสนใจที่จะเรียนรู้คอมพิวเตอร์ วันที่ 12 สิงหาคม 2535 คือจุดเริ่มต้นของการเรียนรู้เกี่ยวกับคอมพิวเตอร์ของข้าพเจ้า ในยุคนั้นคอมพิวเตอร์ในเมืองไทยนับเป็นเครื่องมือสำหรับบุคคลบางกลุ่มบางพวกเท่านั้น ได้แก่กลุ่มนักวิจัยและครูบาอาจารย์ในสายเทคโนโลยีระดับสถาบันหรือมหาวิทยาลัยภายในประเทศไทย<br />  คอมพิวเตอร์ในยุคแรก ๆ ที่ผมเริ่มต้นใช้ สามารถแสดงสีได้เพียงสีเดียว คือ สีเขียว เรียกว่าจอภาพแบบMonochrome (Mono แปลว่าหนึ่ง Chrome แปลว่า สี) ในวันนั้นผมยังคงเป็นนักศึกษาหนุ่มที่มีความปรารถนาอยากรู้อยากเห็น และได้ถามประโยคหนึ่งกับ อ.ที่ปรึกษาว่า quot;
อาจารย์ครับ.. เครื่องที่ตั้งอยู่ข้างโต๊ะอาจารย์ คืออะไรหรือครับ ?quot;
 เสียงตอบจากท่านอาจารย์ quot;
อ้อ.. เครื่องไมโครคอมพิวเตอร์quot;
 ผมถามกลับไปด้วยความสงสัย quot;
มันใช้งานอยากหรือเปล่าครับ ?quot;
 คำตอบคือ quot;
อืม.. ไม่ยากหรอก ถ้าสนใจเฮาสิสอนให้quot;
 (เฮา หมายถึง ผม หรือ เรา แทนผู้พูด) นับจากนั้นเป็นต้นมา ผมจึงได้เริ่มก้าวสู่เส้นทางสายคอมพิวเตอร์มาโดยตลอด<br />  ในปีนั้น (พ.ศ. 2535) คอมพิวเตอร์ที่ใช้งานมีฮาร์ดดีกส์ซึ่งเป็นแหล่งเก็บข้อมูลซึ่งมีขนาดเพียง 10 MBเท่านั้น ซึ่งถือว่าน้อยมากเมื่อเปรียบเทียบกับปัจจุบันนี้ ผมยังจำได้ว่าระบบปฏิบัติการที่ใช้คือ DOS 2.0 ของบริษัทไมโครซอฟต์ โดยเมื่อเปิดเครื่องคอมพิวเตอร์ขึ้นมาครั้งแรก จะปรากฎข้อความบนจอภาพคอมพิวเตอร์ดังนี้<br />ถัดจากนั้นแสดงข้อความดังนี้<br />เมื่อเคาะ Enter 2 ครั้งจะเข้าสู่ DOS PROMPT ดังนี้<br />  ในยุคนั้นบรรดาผู้ใช้คอมพิวเตอร์ภายในประเทศไทยนิยมพิมพ์เอกสารด้วยโปรแกรม CW หรือ RW ซึ่งเป็นโปรแกรมที่สร้างขึ้นโดยมหาวิทยาลัยจุฬาลงกรณ์ และโรงพยาบาลราชวิถี ผมเชื่อว่า นักคอมพิวเตอร์หรือเด็ก ๆ สมัยใหม่ส่วนมากไม่รู้จัก CW และ RW<br />  ผมนับได้ว่าอยู่ในช่วงรอยต่อระหว่างระบบ DOS และ Windows และเป็นช่วงเวลา ที่ได้เรียนรู้ระบบใหม่และเก่าในเวลาเดียวกัน<br />  สมัยก่อนนั้นการสร้างไฟล์ หรือสร้างโฟล์เดอร์จะต้องเข้าใจโครงสร้าง และชุดคำสั่งที่ใช้ในการจัดการเกี่ยวกับไฟล์และโฟลเดอร์ทั้งหลาย ปัจจุบันนี้นักคอมพิวเตอร์รุ่นใหม่ ส่วนใหญ่รู้จักการสร้าง Folder หรือลบและคัดลอกไฟล์ด้วยการลากรูปภาพกราฟิกเพียงไม่กี่ครั้งเท่านั้น นั่นคือความแตกต่างระหว่างช่วงรอยต่อดังกล่าว !!<br />  ปัจจุบันนี้เราสามารถสั่งงานคอมพิวเตอร์ด้วยการกระทำกับภาพกราฟิกได้อย่างสะดวกสบายกว่าในอดีตมากมายนัก แต่เมื่อเราต้องการเขียนโปรแกรมคอมพิวเตอร์ สิ่งที่เรามองข้ามไปคือ ชุดคำสั่งเก่า ๆ ก่อนที่จะมีระบบกราฟิกอย่างทุกวันนี้<br />  ดังนั้น ในความคิดส่วนตัวของผม เชื่อเหลือเกินว่าโปรแกรมเมอร์ หรือผู้ที่ปรารถนาจะเขียนโปรแกรมสำหรับวินโดวส์ ไม่อาจจะหลีกเลี่ยงการเรียนรู้คำสั่ง DOS ไปได้<br />  ดังนั้นก่อนที่ท่านจะได้ศึกษาการเขียนโปรแกรมด้วยภาษา C ผู้เขียนขออนุมานว่าท่านมีความรู้พื้นฐานเกี่ยวกับ DOS มาพอสมควร หากท่านยังไม่รู้จัก DOS ท่านควรจะหาโอกาสศึกษาคำสั่งเหล่านั้นเพิ่มเติมเป็นอันดับแรก<br />  ในครั้งแรกที่ผมเริ่มเขียนโปรแกรมนั้น ได้เขียนจดหมายส่งมายังเพื่อนที่กรุงเทพฯ พร้อมร้องขอให้เพื่อนส่งภาษาซีมาให้ ใช้เวลาร่วม ๆ หนึ่งสัปดาห์ แต่ปัจจุบันนี้ เทคโนโลยีก้าวหน้าไปกว่าก่อนมากมายนัก เราสามารถเชื่อมต่อคอมพิวเตอร์สู่ระบบ Global Network และสามารถค้นหา ดาวน์โหลดภาษาซี เพื่อติดตั้งได้อย่างง่ายดาย<br />  สมัยนั้น ผมใช้ Turbo C 2.0 ซึ่งมีขนาดไม่ถึง 1 MB สามารถบรรจุลงในแผ่น Disket เพียงแผ่นเดียว โปรแกรมแรกที่ผมเขียน เพื่อต้องการแสดงคำว่า Hello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ ซึ่งมีโค๊ดภาษาซีดังนี้<br />  ผลลัพธ์ของโปรแกรมดังกล่าวจะแสดงคำว่า Hello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ หลายคนอาจจะหัวเราะในใจว่า ศึกษามาตั้งเยอะแยะ เพียงแค่แสดงข้อความให้ปรากฎบนจอภาพคอมพิวเตอร์เท่านี้เองหรือ ? แต่ในความเป็นจริง เราสามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงานได้มากกว่านั้นอีกมากมาย ผมจึงได้เขียนโค๊ดอีกอันหนึ่ง โดยให้แสดงคำว่า Hello World อย่างไม่รู้จบสิ้น ด้วยโค๊ดภาษาซีดังนี้<br />  ในตอนเริ่มต้นนี้ผู้อ่านจะรู้สึกอยากลองเขียนภาษาซีมากขึ้น ต่อไปผมจะได้พาท่านผู้อ่าน ไปดูวิธีการเขียนโปรแกรมตั้งแต่เริ่มต้น จนกระทั่งสามารถสั่งให้มันทำงานได้ ผมมารู้ทีหลังว่า ภาษาซีมีอยู่หลายตัวด้วยกัน เพราะว่าแต่ละตัวถูกผลิตขึ้นมาจากบริษัทต่าง ๆ มากมาย ได้แก่- Microsoft C ของบริษัทไมโครซอฟต์- TC และ TC++ ของบริษัท Borland- BC และ BC++ ของบริษัท Borland - Keil C (อ่านว่า คาย) ของบริษัท Keil- Pic C ของบริษัทไมโครซิป- Visual C++ ของบริษัทไมโครซอฟต์- Quick C ของบริษัทไมโครซอฟต์- ภาษาซี ในระบบปฏิบัติการ UNIX<br />นอกจากนั้นยังมีภาษาซีอีกหลากหลายบริษัทเหลือเกิน แต่ทั้งหมดนั้น ยังคงใช้หลักการเขียนโปรแกรมอันเดียวกันทั้งสิ้น<br />สำหรับบทความนี้เราจะมาดูกฎเกณฑ์ต่างๆ ที่เราจำเป็นต้องรับรู้ไว้ก่อนที่จะเขียนโค้ดภาษา C เพื่อความถูกต้องในการเขียนโค้ด ลองมาดูกันเลยครับ<br />กฎในการเขียนภาษา C1. คำสั่งในภาษา C ต้องเขียนด้วยตัวพิมพ์เล็ก2. ทุกประโยคเมื่อจบประโยคแล้วต้องใช้เครื่องหมาย “;” แสดงการจบประโยค ยกเว้นฟังก์ชันที่ตามด้วย ( )ไม่ต้องปิดท้ายด้วย “;”3. ในหนึ่งโปรแกรมจะมีกี่ฟังก์ชันก็ได้แต่จะต้องมีฟังก์ชันที่ชื่อ main เสมอ4. การใส่หมายเหตุ (Comment) เพื่อใช้เป็นส่วนที่อธิบายโปรแกรมสามารถกระทำได้ 2 รูปแบบ คือ4.1 /* และ */ ใช้สำหรับข้อความที่ยาวกว่า 1 บรรทัด โดยโปรแกรมจะถือว่าข้อความที่ตามหลัง /*จะเป็นหมายเหตุจนกว่าจะพบเครื่องหมาย */ จึงจะแสดงว่าจบหมายเหตุแล้ว5. // เหมาะสำหรับข้อความสั้นๆ 1 บรรทัด โดยถ้าบรรทัดใดขึ้นต้นด้วย // บรรทัดนั้นจะถือว่าเป็น หมายเหตุ<br />ชุดอักขระภาษา Cภาษา C ใช้ตัวอักษรได้ทั้งเล็กและใหญ่ ตัวเลข 0-9 และตัวอักขระพิเศษในการสร้างองค์ประกอบพื้นฐานของโปแกรม อักขระพิเศษดังกล่าวมีดังนี้ นอกจากนี้ภาษา C ทุกรุ่นยังยอมให้มีการใช้อักขระอื่นๆ เช่น @ และ $ .ในส่วนที่เป็นสตริงและคำอธิบาย<br />กฎการตั้งชื่อการตั้งชื่อตัวแปรใดๆ ในโปรแกรมจะประกอบด้วยตัวอักษรหรือตัวเลขก็ได้ แต่อักขระตัวแรกจะต้องเป็นตัวอักษรเสมอ การตั้งชื่อตัวแปรสามารถกำหนดเป็นตัวอักษรเล็กหรือใหญ่ก็ได้ แต่ตัวอักษรเล็กและใหญ่ในคำๆ เดียวกันจะมีความหมายต่างกัน เราสามรถใช้ขีดล่าง ( _ ) มาตั้งชื่อก็ได้และสามารถกำหนดให้เป็นอักขระตัวแรกของชื่อก็ได้ ตัวอย่างการตั้งชื่อ เช่น<br />Xy12sum_1_tempnameareatax_rateTABLE<br />*** การตั้งชื่อไม่สามารถตั้งชื่อเหมือนกับคำสงวนได้และไม่สามารถเว้นช่องว่างระหว่างชื่อได้ ***ตัวอย่างการตั้งชื่อที่ผิด<br />4htไม่ได้เพราะอักขระตัวแรกเป็นตัวเลข“x”ไม่ได้เพราะใช้อักขระไม่ถูกต้อง (“)order-noไม่ได้เพราะใช้อักขระไม่ถูกต้อง (-)error flagไม่ได้เพราะใช้อักขระไม่ถูกต้อง (blank)<br />ลำดับหลีก (escape sequences)เป็นตัวอักษรที่ไม่สามารถพิมพ์ได้ เช่น ( “ ) ,( ‘ ) หรือ ( ) ถ้าต้องการพิมพ์ออกมาเราจะต้องใช้ แล้วตามด้วยอักขระที่ต้องการ มีลำดับหลีกที่ใช้ทั่วไป ดังนี้<br />อักขระescape sequencesค่า ASCIIbell (กระดิ่ง )007backspace008แท็บตามแนวนอน009ขึ้นบรรทัดใหม010แท็บตามแนวตั้ง011ขึ้นหน้าใหม่012ปัดแคร่013อัญประกาศ034อะโพสโตรฟิ039เครื่องหมายคำถาม063แบ็กสแลช092นัล000<br />จากข้อมูลที่กล่าวมาทั้งหมดนั้นจะช่วยบอกรูปแบบการเขียนภาษา C ให้เราได้มากขึ้นเพื่อนนำไปใช้เขียนโค้ดได้อย่างถูกต้อง ซึ่งกฎเหล่านี้อาจจะนำไปใช้กับการเขียนโปรแกรมภาษาอื่นๆ ได้อีกด้วย เพราะโครงสร้างของภาษาคอมพิวเตอร์ส่วนใหญ่มักจะไม่ต่างกันมากนัก เราไม่ควรละเลยกฎเหล่านี้เพราะมันอาจจะทำให้เราเสียเวลาในการค้นหาและแก้ไขจุกบกพร่ิองของโปรแกรมเมื่อเิกิดข้อผิดพลาดได้<br />2 .แบบ 2 เงื่อนไข (if...else) มีรูปแบบดังนี้ จากรูปแบบของคำสั่งจะเห็นว่าจะมีลักษณะการเขียนคล้ายกับแบบ simple if แต่จะมีการเพิ่มเติมคำว่า elseเข้าไปด้วย ซึ่งการทำงานของคำสั่งแบบนี้นั้นจะทำการตรวจ สอบเงื่อนไขที่ if ก่อนว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ใน if แต่ถ้าเป็นเท็จก็จะไปทำงานในกลุ่มคำสั่งที่อยู่ในส่วนของ else ซึ่งจะ เป็นเหมือนมีทางเลือก 2 ทางนั่นเอง ลองมาดูแผนภาพของคำสั่งแบบ if...else กันนะครับ<br />ดูจากแผนภาพแล้วจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนดไว้ในกลุ่มแรก แต่ถ้าเงื่อนไขเป็นเท็จก็จะวิ่งเข้ามาที่กลุ่มคำสั่งของ else ในกลุ่มที่ 2 จากนั้นจึงค่อยมาทำที่คำสั่งในส่วนถัดมาของโปรแกรมต่อไป ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับ อธิบายโปรแกรม จากโปรแกรมได้ประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z จากนั้นมาเจอคำสั่ง if โดยมีเงื่อไข ว่า x มากกว่าหรือเท่ากับ y ถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในส่วนของ ifทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วนของ else ของโปรแกรมคือ หาค่าของ x+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 10 นะครับ ให้ลองเปลี่ยนค่า x ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่า ผลออกมาจะเป็นอย่างไร?<br />สำหรับคำสั่งประเภท if..else ก็มีรูปแบบการใช้งานดังที่กล่าวมาแล้ว สำหรับในบทความตอนต่อไปเราจะมาเรียนรู้คำสั่งสุดท้ายของประเภท if กันนะครับนั่นคือ Nested if <br />ฟังก์ชั่นคืออะไร<br />เมื่อเราพูดถึงคำว่า ฟังก์ชั่น จะหมายถึง ความรับผิดชอบต่อหน้าที่ของตนเอง ยกตัวอย่างเช่น<br />add() เป็นฟังก์ชั่น ทำการบวก subtract() เป็นฟังก์ชั่น ทำการลบ multiply() เป็นฟังก์ชั่น ทำการคูณ devision() เป็นฟังก์ชั่น ทำการหาร printf() เป็นฟังก์ชั่นแสดงผลบนจอภาพคอมพิวเตอร์ scanf() เป็นฟังก์ชั่นรับข้อความจากแป้นคีย์บอร์ด<br />  โปรดสังเกตว่า ทุก ๆ ฟังก์ชั่นจะมีเครื่องหมาย () เสมอ ส่วนจะมีอะไรภายในวงเล็บหรือไม่นั้น ตอนนี้อย่าพึ่งไปสนใจ ผมต้องการให้ผู้อ่านทราบในขั้นต้นเพียงว่า ทุก ๆ ฟังก์ชั่น จะมีเครื่องหมาย () ตามหลังเสมอ<br />  ก่อนที่เราจะศึกษารายละเอียดในส่วนต่อไป ผมอยากทำความเข้าใจกับผู้เรียนเสียก่อนว่า ในยุคแรก ๆ ระบบคอมพิวเตอร์ ใช้รหัสฐานสองในการเขียนโปรแกรม ต่อมาจึงได้มีการพัฒนาภาษา Assembly ซึ่งเป็นภาษาระดับต่ำ ในเวลาต่อมา เมื่อโปรแกรมคอมพิวเตอร์ มีความสลับซับซ้อนมากขึ้น จึงได้พัฒนาโปรแกรมโดยใช้หลักการของ Structure ซึ่งภาษาที่สนับสนุนหลักการดังกล่าวได้แก่ C, Pascal, Basic และอื่น ๆ ในระยะนั้น การพัฒนาโปรแกรมดูเหมือนว่า จะไม่มีปัญหาอะไรเพราะสามารถสร้างโปรแกรมได้ทุกรูปแบบดีอยู่แล้ว แต่ในความเป็นจริงปัญหาที่เกิดขึ้นคือ การเขียนโปรแกรม ที่มีความสลับซับซ้อนสูง ๆ ไม่สามารถทำได้ดีนักด้วยภาษาที่ใช้หลักการ Structure จึงเป็นเหตุผลที่ต้องมีการพัฒนาแนวคิดใหม่ขึ้น นั่นคือหลักการที่ชื่อว่า Object Oriented โดยใช้แนวคิด คือรวมแนวคิดแบบ Structure เข้ากับการมองปัญหาเป็นวัตถุ หรือObject ซึ่งโปรแกรมที่สนับสนุนแนวคิดดังกล่าวนี้คือ C++, Java, Python และอื่น ๆ นอกจากนั้นในยุคปัจจุบันได้มี .Net ของบริษัทไมโครซอฟต์ซึ่งได้แก่ Visual C++ .NET และ Visual Basic .NET โดยสนับสนับสนุนแนวคิดแบบ Object Oriented<br />ก่อนจะจบบทความนี้ ผมอยากจะสรุปความแตกต่างระหว่าง 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() เพื่อรับข้อมูลจากแป้นคีย์บอร์ด<br />  ภาษา C++ รับและแสดงผลข้อมูลจาก Header file ชื่อ iostream.h โดยใช้คำสั่ง cout เพื่อแสดงผลข้อมูลให้ปรากฎบนจอภาพคอมพิวเตอร์ และคำสั่ง cin เพื่อรับข้อมูลจากแป้นคีย์บอร์ด<br />ฟังก์ชัน printf()เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้<br />printf(control, argument)<br />เช่น printf(“i = %d ”,i); จะสังเกตว่า ภายใน “ “ จะมีเครื่องหมาย % อยู่ซึ่งเราจะเรียกว่า Format Codeซึ่งจะเป็นตัวกำหนดให้ข้อมูลที่อยู่ในตำแหน่งหลังเครื่องหมาย , แสดงออกมา โดยจะมีความหมายดังตาราง<br />ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ<br />อธิบายโปรแกรม จากโปรแกรมนี้เราจะกำหนดตัวแปรออกเป็นชนิดต่างๆ 4 ชนิด แล้วกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้นแล้วให้แสดงผลลัพธ์ที่ตัวแปรเหล่านั้นเก็บไว้ออกมาทางจอภาพโดยใช้ฟังก์ชัน printf() และจะต้องคำนึงถึง Format Code ด้วย<br />printf(quot;
a = %cquot;
,a); --------------> ใช้ %c เพราะ a เป็น charprintf(quot;
x = %dquot;
,x); --------------> ใช้ %d เพราะ x เป็น intprintf(quot;
y = %fquot;
,y); --------------> ใช้ %f เพราะ y เป็น float (ทศนิยม)printf(quot;
z = %fquot;
,z); --------------> ใช้ %f เพราะ z เป็น double (ทศนิยม)<br />นอกจากนั้นการแสดงผลลัพธ์ที่เป็นจุดทศนิยมเราสามารถกำหนดได้ว่าจะให้มีทศนิยมกี่ตำแหน่งโดยการกำหนดที่ Format Code ดังตัวอย่างต่อไปนี้<br />printf(quot;
y = %.2fquot;
,y); --------------> ใส่ค่า .2 หมายถึง แสดงทศนิยม 2 ตำแหน่งprintf(quot;
z = %.3fquot;
,z); --------------> ใส่ค่า .3 หมายถึง แสดงทศนิยม 3 ตำแหน่ง<br />ฟังก์ชัน scanf()เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้<br />scanf(control, argument)<br />ฟังก์ชัน scanf จะมีลักษณะคล้ายกับ printf โดยเราจะต้องใส่ Format Code ไว้ในเครื่องหมาย quot;
 quot;
 และระบุตัวแปรที่จะมารับข้อมูลจากผู้ใช้ที่ป้อนเข้ามา โดยจะต้องมี & นำหน้าตัวแปรที่เราต้องการใส่ค่าเสมอ ยกเว้นตัวแปรที่เป็นอะเรย์ ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ<br />อธิบายโปรแกรม จากตัวอย่างมีการประกาศตัวแปร คือ a เป็นตัวแปรชนิด int ถัดมาเป็นการแสดงคำพูด Enter number : ที่หน้าจอ จากนั้นฟังก์ชัน scanf() จะทำงานโดยการรอรับข้อมูลจากผู้ใช้ให้เราพิมพ์ตัวเลขจำนวนเต็มใส่ลงไป ตัวเลขที่เราพิมพ์ลงไปนั้นจะถูกเก็บไว้ที่ตัวแปร a แล้วจึงแสดงผลลัพธ์ของตัวเลขนั้นอีกครั้งที่จอภาพ<br />scanf(quot;
%dquot;
 ,&a); --------------> %d เป็นการระบุรูปแบบของตัวแปรที่จะมารองรับค่า, &a คือ ตัวแปรที่จะมารับค่า<br />สำหรับฟังก์ชัน printf() และ scanf() นั้นจะเป็นฟังก์ชันพื้นฐานที่จะใช้กันบ่อยๆ ในภาษา C เราควรฝึกใช้งานให้คล่องนะครับ ส่วนใน C++ ฟังก์ชันทั้ง 2 นี้จะถูกเปลี่ยนแปลงไปและการใช้งานก็ต่างกันนิดหน่อยซึ่งผมจะยังไม่กล่าวถึงในตอนนี้นะครับ<br />การเขียนโปรแกรมให้ได้ผลลัพธ์ต่างๆ ตามที่เราต้องการนั้นสิ่งที่ขาดไม่ได้อีกอย่างหนึ่งคือ เงื่อนไขและการตัดสินใจของโปรแกรม ซึ่งผมจะมากล่าวถึงเรื่องการสร้างเงื่อนไขของโปรแกรมเพื่อให้โปรแกรมของเราดำเนินไปตามขั้นตอนตามความต้องการของเรา<br />คำสั่ง ifเป็นคำสั่งที่ใช้ในการตรวจสอบเงื่อนไขว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ และถ้าเป็นเท็จก็จะไปทำงานอีกจุดหนึ่งซึ่งเป็นทางเลือก อีกทางหนึ่งในโปรแกรม ผมจะแบ่งรูปแบบของคำสั่งออกเป็น 3 แบบ คือ แบบเงื่อนไขเดียว (simple if) ,แบบ 2 เงื่อนไข (if…else) และแบบซ้อน (nested if)<br />1 .แบบเงื่อนไขเดียว (simple if) มีรูปแบบดังนี้ เราจะเห็นรูปแบบในการเขียนของคำสั่งนี้นะครับ โดยเงื่อนไขในวงเล็บนั้นจะเป็นประโยคทางตรรก ถ้าตรวจสอบแล้วเป็นจริงก็จะเข้ามาทำงานในกลุ่มคำสั่งที่เรากำหนด ไว้ในขอบเขตของเครื่องหมายปีกกา แต่ถ้าเป็นเท็จก็จะข้ามไปทำส่วนต่อไปของโปรแกรมทันทีตามภาพดูจากแผนภาพจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งมาตามลูกศรเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะ วิ่งข้ามมาที่คำสั่งถัดไปซึ่งก็คือส่วนต่อไปของโปรแกรมที่ไม่ได้เกี่ยวข้องกับคำสั่ง if นั่นเอง รูปแบบนี้เป็น simple if นะครับ ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับอธิบายโปรแกรม จากโปรแกรมจะีประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z คำสั่ง if มีเงื่อไข ว่า x มากกว่าหรือเท่ากับ y ถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในเครื่องหมายปีกกาทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วน ต่อไปของโปรแกรมคือ หาค่าของx+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 6 และ z = 10 ครับ ให้ลองเปลี่ยนค่าx ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่าผลออกมาจะเป็นอย่างไร ?<br />สำหรับคำสั่งประเภท simple if นั้นใช้งานได้ง่ายเพียงสร้างเงื่อนไขขึ้นมาเพื่อให้มันทำงานเวลาที่เงื่อนไขเป็นจริง แต่ถ้าเรามีทางเลือกมากกว่าหนึ่งทางเราควรจะเปลี่ยนไปใช้คำสั่งที่เหมาะสมขึ้นซึ่งผมจะพูดถึงคำสั่งif..else<br />เขียนโปรแกรมภาษาซีด้วย Turbo C<br />ขั้นที่ 1 ก่อนอื่นต้องดาวน์โหลดโปรแกรม TC เป็นลำดับแรก ผู้เขียนอนุมานว่าผู้อ่านไม่มีประสบการณ์ในการติดตั้ง TC ดังนั้นหากท่านสามารถติดตั้งได้เอง โปรดข้ามหัวข้อนี้ไป เพื่อเข้าสู่เนื้อหาที่ Advanced มากขึ้น เริ่มต้นโดยให้ผู้อ่านเปิดโปรแกรม Windows Explorer และคลิ๊กที่แถบ URL ด้านบน พิมพ์คำว่าhttp://www.sptc.ac.th/nprotech/articles/C0001/TC.zip ดังภาพต่อไปนี้<br />ขั้นที่ 2 เมื่อพิมพ์ URL ครบแล้วให้ท่านกด Enter หนึ่งครั้งเพื่อ Download File TC.zip ซึ่งจะปรากฎผลลัพธ์ดังนี้- ถ้าท่านต้องการเปิดไฟล์ คลิ๊ก Open - ถ้าต้องการบันทึกไฟล์ คลิ๊ก Save - ถ้าต้องการยกเลิกการดาวน์โหลดคลิ๊ก Cancel- ถ้าต้องการข้อมูลมากกว่านี้ คลิ๊ก More Info<br />ขั้นที่ 3 เลือก Save และคลิ๊กลูกศรชี้ลง ตลอดจนเลือก ไดวร์ C: ดังภาพต่อไปนี้ผู้เขียนต้องการให้ท่านเลือกไดเร็คทอรี่เพื่อเก็บไฟล์เอาไว้ที่ C:เพราะว่าภายในโปรแกรมดังกล่าวนี้ ได้ทำการตั้งค่าพารามิเตอร์ต่าง ๆ เกี่ยวกับการคอมไพล์ไว้ในไดเร็คทอรี่ C:C ดังนั้น หากท่านขยายไฟล์ผิดตำแหน่ง จะทำให้ไม่สามารถคอมไพล์ได้ วิธีแก้ทำได้โดยการปรับเปลี่ยนที่เมนู Directory ให้ตรงกับไดเร็คทอรี่ที่ท่านได้เก็บไฟล์ไว้ยังตำแหน่งที่ท่านต้องการ แต่ถ้าท่าน ทำตามวิธีที่ผู้เขียนแนะนำ ท่านไม่ต้องทำการปรับแก้ค่าตัวเลือกใด ๆ ผู้เขียนจะกล่าวถึงรายละเอียดส่วนนี้ในบทต่อ ๆ ไป ตอนนี้ต้องการให้ผู้อ่านสามารถคอมไพล์โค๊ดภาษาซีได้เท่านั้น ดังนั้นท่านควรปฏิบัติตามแนวทาง ที่ได้แสดงเอาไว้ในบทความชุดนี้อย่างเคร่งครัด เว้นเสียแต่ท่านเข้าใจสิ่งที่ผู้เขียนกำลังอธิบายนี้แล้ว จึงสามารถดูผ่าน ๆ ได้อย่างรวดเร็ว<br />ขั้นที่ 4 เริ่มต้นการดาวน์โหลด ภาพด้านล่างนี้ แสดงการดาวน์โหลดไฟล์ ขณะนี้ เครื่องที่ผู้เขียนใช้งานอยู่บนระบบ LAN จึงสามารถโหลดไฟล์ดังกล่าวด้วยความเร็วสูงกว่าการโหลดด้วย Modem ธรรมดา สังเกตที่อัตราการ Transfer rate ที่ 31.0KB/Sec หากเป็นโมเดมธรรมดาจะอยู่ที่ประมาณ 5 KB/Sec<br />ขั้นที่ 5 เมื่อดาวน์โหลดเสร็จแล้วคลาย Zip ไฟล์ TC.zip ที่โหลดมาแล้วด้วยการคลิ๊กขวา ดังภาพต่อไปนี้สังเกตว่าไฟล์ที่เราโหลดมานั้นมีชื่อว่า TC.zip ผู้เขียนต้องการให้ท่าน Save เอาไว้ที่ไดรว์ C:และคลายZip ออกไปไว้ที่โฟล์เดอร์ C:C<br />ขั้นที่ 6 ดับเบิ้ลคลิ๊กโฟลเดอร์ C:C ไฟล์ที่คลาย Zip เรียบร้อยแล้วจะเก็บไว้ที่โฟล์เดอร์ C:C และภายในไดเร็คทอรี่ดังกล่าวจะประกอบด้วยโฟล์เดอร์ C:CNCLUDE และ C:CIB รายละเอียดส่วนนี้จะกล่าวถึงอีกครั้งในบทหลัง ๆ แต่ตอนนี้ให้ท่านเข้าใจเพียงว่า ภายในโฟล์เดอร์ ทั้งสองจะเก็บไฟล์ ที่มีนามสกุล .H และ .LIB เอาไว้ในโฟล์เดอร์ทั้งสองตามลำดับ<br />ขั้นที่ 7 เรียกให้ Turbo C ทำงานโดยคลิ๊กที่ไฟล์ TC ดังภาพต่อไปนี้ ความจริงในขั้นตอนนี้ผู้อ่านสามารถคลิ๊ก Start > Run และพิมพ์คำว่า C:CC.EXE จากนั้นกดแป้น Enter ซึ่งจะให้ผลเช่นเดียวกับขั้นตอนนี้ กล่าวคือเรียกให้ Turbo C ทำงานและพร้อมจะเขียนโปรแกรมและคอมไพล์ต่อไป<br />ขั้นที่ 8 เมื่อไฟล์ TC.EXE ถูกเรียกให้ทำงานจะปรากฎผลลัพธ์ดังนี้ ภาพด้านล่างนี้เป็นหน้าจอของโปรแกรมTC ถ้าผู้อ่านต้องการให้โปรแกรมแสดงผลเต็มจอ สามารถกดแป้น Alt + Enter (กด Alt ค้างไว้ แล้วตามด้วย Enter หนึ่งครั้ง) จะเป็นการสลับไปมาระหว่างโหมด Full Screen กับโหมด Windows และในทำนองเดียวกัน ถ้าต้องการสลับกลับมายังโหมดวินโดวส์ธรรมดา ให้กด Alt + Enter ได้เช่นเดียวกัน<br />ขั้นที่ 9 พิมพ์โค๊ดภาษาซี ในขั้นตอนนี้ผู้อ่านจะต้องกด Esc ซ้ำ ๆ สักสองสามครั้งเพราะว่า กำลังอยู่ในสถานะการเลือกเมนู การกด Esc จะทำให้กลับมายังจอภาพที่ใช้ในการแก้ไขโค๊ด จากนั้นผู้อ่านจึงเริ่มต้นพิมพ์โค๊ด ตามตัวอย่างด้านล่างนี้<br />ขั้นที่ 10 ทำการคอมไพล์ด้วยการกด Alt + R แล้วกด Enter หนึ่งครั้ง ขั้นตอนนี้อาจจะกด Ctrl + F9 จะปรากฎผลเช่นเดียวกัน ในขั้นตอนนี้เรายังไม่ได้บันทึกไฟล์เป็น Helloworld.c ดังนั้นผลลัพธ์ที่ได้จะสร้างไฟล์ชื่อว่า noname.exe ซึ่งก็จะให้ผลลัพธ์อันเดียวกัน ขั้นตอนต่อไปจะแสดงการบันทึกแฟ้มข้อมูล<br />ขั้นที่ 11 ออกจากโปรแกรม TC โดยการกด Alt + Q หรือกด Alt + F และเลื่อนลูกศรมาที่ Quit ให้ผลเช่นเดียวกัน เนื่องจากเรายังไม่ได้บันทึกแฟ้มข้อมูล เมื่อทำการออกจากโปรแกรม คอมไพล์เลอร์จะถามว่าต้องการบันทึกซอร์สโค๊ดหรือไม่ ให้ตอบตามความต้องการของท่าน ในกรณีตัวอย่างนี้เราจะบันทึกไฟล์เก็บไว้ในชื่อ helloworld.c<br />ขั้นที่ 12 ก่อนที่จะจบการทำงานโปรแกรมภาษาจะถามเราเกี่ยวกับการบันทึกไฟล์ ถ้าปรารถนาจะบันทึกให้กด Yes อย่างที่ได้กล่าวไปแล้วในขั้นตอนนี้ ผู้อ่านจะบันทึกหรือไม่บันทึกขึ้นอยู่กับตัวท่านเอง แต่บทความนี้สำหรับผู้เริ่มต้น เราจะบันทึกไฟล์ชื่อ helloworld.c ดังนั้นกด Y เพื่อบอกคอมไพล์เลอร์ว่า เราต้องการบันทึกซอรส์โค๊ด<br />ขั้นที่ 13 ตั้งชื่อไฟล์ว่า helloworld.c จากนั้นกดแป้น Enter หนึ่งครั้ง เนื่องจาก TurboC 2.0 สนับสนุนการตั้งชื่อไฟล์ระบบเก่า คือตั้งได้ 8 ตัว และนามสกุล 3 ตัว ดังนั้น จะเกิดการตัดคำอัตโนมัติให้เหลือเพียงคำว่าhellowor.c แทนที่จะเป็น helloworld.c<br />ขั้นที่ 14 ในขั้นตอนที่ผ่านมาเราได้คอมไพล์โค๊ดภาษาซีเสร็จแล้วต่อไปต้องการรันโค๊ดใน DOS Prompt ขอให้ท่านเลือก Start > Run ในขั้นตอนนี้ท่านผู้อ่านสามารถคลิ๊ก Start > Run และพิมพ์คำว่าC:Coname.exe ซึ่งจะให้ผลเร็ว และจะปิดวินโดวส์ไปอย่างรวดเร็ว ดังนั้นเราจึงควรจะออกไปที่ DOS Prompt ด้วยการพิมพ์คำสั่ง Start > Run และพิมพ์ CMD ซึ่งคำสั่ง CMD จะมีสำหรับวินโดวส์ NT และ2000 และ XP เท่านั้น ไม่สามารถใช้คำสั่ง CMD ในวินโดวส์ที่ต่ำกว่าที่กล่าวมาได้ ดังนั้นถ้าเป็นระบบปฏิบัติการตัวเก่า ท่านต้องเปลี่ยนมาพิมพ์คำว่า Command เต็ม ๆ แทนคำว่า CMD<br />ขั้นที่ 15 พิมพ์คำสั่ง cmd เพื่อไปยัง Dos Prompt ดังที่ได้กล่าวไปแล้วคำสั่ง CMD ใช้ได้เฉพาะใน NT, 2000 และ XP เท่านั้น ถ้าจะให้ทำงานได้ในระบบปฏิบัติการรุ่นเก่าต้องพิมพ์คำว่า Command แทน CMD<br />ขั้นที่ 16 ได้ผลลัพธ์ดังต่อไปนี้ คำสั่ง CMD จะเป็นโปรแกรมที่บอกให้ระบบปฏิบัติการรับคำสั่ง DOS เหมือนในระบบเดิม เพียงแต่ว่า CMD ต่างจาก Command ตรงที่เราสามารถใช้ลูกเล่นต่าง ๆ ได้ เช่นใช้คำสั่ง cd in* ซึ่งจะหมายถึงเข้าไปในไดเร็คทอรี่อะไรก็ได้ที่ขึ้นต้นด้วยคำว่า win เป็นต้น ซึ่งแท้จริงเป็นการเพิ่มประสิทธิภาพของ Command ให้ดีขึ้นนั่นเอง นอกจากนั้น CMD ยังสามารถ ใช้เมาส์ลากตัวอักษรบริเวณที่เราต้องการแล้วคลิ๊กขวา เพื่อคัดลอกข้อความนั้นเอาไปยังคลิปบอร์ด ได้อีกด้วย หรือถ้าคลิ๊กลงบนพื้นที่Console ก็จะหมายถึงการวางข้อความที่อยู่ในคลิปบอร์ดลงในพื้นที่ Console เป็นต้น รายละเอียดส่วนนี้ศึกษาได้จากคู่มือการใช้งานคำสั่ง CMD ใน Online Help ของวินโดวส์<br />ขั้นที่ 17 พิมพ์คำสั่ง cd c เพื่อเข้าไปยังไดเร็คทอรี่ TC จากนั้นพิมพ์คำว่า HELLOWOR.EXE เนื่องจากTC2.0 สนับสนุนการตั้งชื่อไฟล์เพียง 8 ตัว ดังนั้นจะมีชื่อเพียง HELLOWOR เท่านั้น ผลลัพธ์ของการExecute จะให้ผลคือคำว่า Hello World ปรากฎบนจอภาพคอมพิวเตอร์<br />ขั้นที่ 18 ผลลัพธ์ของการคอมไพล์จะปรากฎคำว่า Hello World ปรากฎบนจอภาพคอมพิวเตอร์ ขอให้ ท่านผู้อ่านระลึกไว้ว่า ขณะนี้เรากำลังเรียนรู้ตัวอย่างการคอมไพล์ด้วย Turbo Cในหัวข้อต่อไป เราจะศึกษาเกี่ยวกับการคอมไพล์ภาษาซีด้วยไมโครซอฟต์วิชวลซีพลัส ๆ (Visual C++)<br />.H คืออะไรกันแน่<br />  อืม .H เรียกอีกอย่างว่า Header File หมายถึงไฟล์ที่อยู่ส่วนบนของประโยค main() ประกาศเอาไว้ เพื่อเรียกใช้คำสั่งที่ถูกจัดเก็บไว้ใน Header file นั้น ๆ<br />ภายในภาษา C มาตรฐานจะมี Header File มีทั้งหมด 15 ไฟล์ ดังต่อไปนี้<br />assert.hctype.herrno.hfloat.hlimits.hlocale.hmath.hsetjmp.hsignal.hstdarg.hstddef.hstdio.hstdlib.hstring.htime.h<br />  นอกจากนั้นภายใน Header แต่ละตัว จะประกอบด้วยคำสั่งต่าง ๆ ดังรายละเอียดต่อไปนี้ (สำหรับผู้เริ่มต้น ขอให้อย่าพึ่งสนใจรายละเอียดของ ชุดคำสั่งทั้งหลาย ผมเพียงต้องการสรุปให้ท่านเห็นอย่างชัดเจน ในเบื้องต้นเท่านั้นว่าภายใน Header File หรือไฟล์ซึ่งมีนามสกุล .H ประกอบด้วยฟังก์ชั่นต่าง ๆ ดังที่แสดงไว้ในรายละเอียดด้านล่างเท่านั้น ส่วนรายละเอียดและตัวอย่างการใช้งานเราจะได้ศึกษาในบทถัด ๆ ไป)<br />1 assert.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />assert()  <br />2 ctype.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />isdigit()isupperislowerisalphaisprintisalnumisspacetouppertolower<br />3 errno.h ประกอบด้วยมาร์โครและอ็อบเจ็คดังต่อไปนี้<br />EDOMERANGEerrno<br />4 float.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />FLT_RADIXFLT_ROUNDSFLT_DIGFLT_EPSILONFLT_MANT_DIGFLT_MAXFLT_MAX_10_EXPFLT_MAX_EXPFLT_MINFLT_MIN_10_EXPFLT_MIN_EXPDBL_DIGDBL_EPSILONDBL_MANT_DIGDBL_MAXDBL_MAX_10_EXPDBL_MAX_EXPDBL_MINDBL_MIN_10_EXPDBL_MIN_EXP<br />5 limits.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />CHAR_BITCHAR_MAXCHAR_MININT_MAXINT_MINLONG_MAXLONG_MINSCHAR_MAXSCHAR_MINSHRT_MAXSHRT_MINUCHAR_MAXUCHAR_MINUINT_MAXULONG_MAXUSHRT_MAX<br />6 locale.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />setlocalelocaleconv <br />7 math.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />acosasinatanatan2coscoshsinsinhtantanhexpfrexpldexploglog10modfpowsqrtceilfabsfloorfmod<br />8 setjmp.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />setjmplongjmp <br />9 signal.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />signalraise <br />10 stdarg.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />va_startva_argva_end<br />11 stddef.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />ptrdiff_tsize_tNULLoffsetofwchar_t<br />12 stdio.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />clearerrfclosefeofferrorfflushfgetposfopenfreadfreopenfseekfsetposftellfwriteremoverenamerewindsetbufsetvbuftmpfiletmpnamprintfscanffgetcfgetsfputcfputsgetcgetchargetsputcputcharputsungetcperror<br />13 stdlib.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />atofatoiatolstrtodstrtolstrtoulcallocfreemallocreallocabortatexitexitgetenvsystembsearchqsortabsdivlabsldivrandsrandmblenmbstowcsmbtowcwcstombswctomb<br />14 string.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />memchrmemcmpmemcpymemmovememsetstrcatstrncatstrchrstrcmpstrncmpstrcollstrcpystrncpystrcspnstrerrorstrlenstrpbrkstrrchrstrspnstrstrstrtokstrxfrm<br />15 time.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />asctimeclockctimedifftimegmtimelocaltimemktimestrftimetime<br />
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C

Weitere ähnliche Inhalte

Ähnlich wie C

ประวัติภาษาซี
ประวัติภาษาซีประวัติภาษาซี
ประวัติภาษาซีrussana
 
ความเป็นมาของภาษาC
ความเป็นมาของภาษาCความเป็นมาของภาษาC
ความเป็นมาของภาษาCWittaya Kaewchat
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1HamHam' Kc
 
ภาษา C
ภาษา Cภาษา C
ภาษา Cnutty_npk
 
ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์Tanadon Boonjumnong
 
น.ส. มณีรัตน์ อาจแก้ว
น.ส. มณีรัตน์  อาจแก้วน.ส. มณีรัตน์  อาจแก้ว
น.ส. มณีรัตน์ อาจแก้วManeerat Artgeaw
 
ใบความรู้ที่ 2 กำเนิดภาษาซี
ใบความรู้ที่ 2 กำเนิดภาษาซีใบความรู้ที่ 2 กำเนิดภาษาซี
ใบความรู้ที่ 2 กำเนิดภาษาซีdechathon
 
หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1SubLt Masu
 

Ähnlich wie C (20)

Lesson1
Lesson1Lesson1
Lesson1
 
Lesson1
Lesson1Lesson1
Lesson1
 
Lesson1
Lesson1Lesson1
Lesson1
 
ประวัติภาษาซี
ประวัติภาษาซีประวัติภาษาซี
ประวัติภาษาซี
 
ความเป็นมาของภาษาC
ความเป็นมาของภาษาCความเป็นมาของภาษาC
ความเป็นมาของภาษาC
 
vb.net
vb.netvb.net
vb.net
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
ภาษาC
ภาษาCภาษาC
ภาษาC
 
งานทำBlog บทที่ 1
งานทำBlog บทที่ 1งานทำBlog บทที่ 1
งานทำBlog บทที่ 1
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
ภาษา C
ภาษา Cภาษา C
ภาษา C
 
ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์
 
น.ส. มณีรัตน์ อาจแก้ว
น.ส. มณีรัตน์  อาจแก้วน.ส. มณีรัตน์  อาจแก้ว
น.ส. มณีรัตน์ อาจแก้ว
 
ใบความรู้ที่ 2 กำเนิดภาษาซี
ใบความรู้ที่ 2 กำเนิดภาษาซีใบความรู้ที่ 2 กำเนิดภาษาซี
ใบความรู้ที่ 2 กำเนิดภาษาซี
 
หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1
 
ภาษาเบสิก
ภาษาเบสิกภาษาเบสิก
ภาษาเบสิก
 
หน่วยที่ 4
หน่วยที่ 4หน่วยที่ 4
หน่วยที่ 4
 

Mehr von พงศธร ภักดี

แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6พงศธร ภักดี
 
แผนการสอน เว็บไซต์ ม.5
แผนการสอน เว็บไซต์ ม.5แผนการสอน เว็บไซต์ ม.5
แผนการสอน เว็บไซต์ ม.5พงศธร ภักดี
 
แผนการสอน ระบบเครือข่าย ม.3
แผนการสอน ระบบเครือข่าย ม.3แผนการสอน ระบบเครือข่าย ม.3
แผนการสอน ระบบเครือข่าย ม.3พงศธร ภักดี
 
แผนการสอน ระบบปฏิบัติการ Windows ม.1
แผนการสอน ระบบปฏิบัติการ Windows ม.1แผนการสอน ระบบปฏิบัติการ Windows ม.1
แผนการสอน ระบบปฏิบัติการ Windows ม.1พงศธร ภักดี
 
สร้างตัวหนังสือแตกๆ ด้วย Photoshop
สร้างตัวหนังสือแตกๆ ด้วย Photoshopสร้างตัวหนังสือแตกๆ ด้วย Photoshop
สร้างตัวหนังสือแตกๆ ด้วย Photoshopพงศธร ภักดี
 

Mehr von พงศธร ภักดี (16)

วิชากราฟิก
วิชากราฟิกวิชากราฟิก
วิชากราฟิก
 
ภาษา C
ภาษา Cภาษา C
ภาษา C
 
Web
WebWeb
Web
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Excel
ExcelExcel
Excel
 
คอมเบื้องต้น1web
คอมเบื้องต้น1webคอมเบื้องต้น1web
คอมเบื้องต้น1web
 
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
แผนการสอน ผลิตสื่อวีดีทัศน์ ม.6
 
แผนการสอน เว็บไซต์ ม.5
แผนการสอน เว็บไซต์ ม.5แผนการสอน เว็บไซต์ ม.5
แผนการสอน เว็บไซต์ ม.5
 
แผนการสอน ระบบเครือข่าย ม.3
แผนการสอน ระบบเครือข่าย ม.3แผนการสอน ระบบเครือข่าย ม.3
แผนการสอน ระบบเครือข่าย ม.3
 
แผนการสอน ระบบปฏิบัติการ Windows ม.1
แผนการสอน ระบบปฏิบัติการ Windows ม.1แผนการสอน ระบบปฏิบัติการ Windows ม.1
แผนการสอน ระบบปฏิบัติการ Windows ม.1
 
Namo webeditor 6
Namo webeditor 6Namo webeditor 6
Namo webeditor 6
 
Excel
ExcelExcel
Excel
 
Photoshop
PhotoshopPhotoshop
Photoshop
 
สร้างตัวหนังสือแตกๆ ด้วย Photoshop
สร้างตัวหนังสือแตกๆ ด้วย Photoshopสร้างตัวหนังสือแตกๆ ด้วย Photoshop
สร้างตัวหนังสือแตกๆ ด้วย Photoshop
 
คู่มือOpen office
คู่มือOpen officeคู่มือOpen office
คู่มือOpen office
 
คู่มือOpen office
คู่มือOpen officeคู่มือOpen office
คู่มือOpen office
 

C

  • 1. ก่อนอื่นต้องขอกล่าวคำว่า quot; สวัสดีquot;  กับผู้อ่านทุกท่านนะครับ และขอขอบคุณที่เ้ข้ามาแวะชมและอ่านบทความใน เว็บไซต์ webthaidd.com รวมทั้งผู้อ่านที่มีความสนใจในบทความภาษา C และ C++ นะครับ<br />จุดเริ่มต้นของภาษาซีภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า quot; The C Programming Languagequot;  โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้ ต่อมาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า quot; ANSI Cquot; <br />Dennis Ritchie<br />ภาษาซีนั้นจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงานกับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ<br />เหตุผลที่ควรเรียนภาษาซีก็เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้น<br />จาก C สู่ C++ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น<br />Bjarne Stroustrup<br />จำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++ เลยไม่ได้เหรอ? คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ครับ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก ซึ่งในบทความในช่วงแรกผมจะนำเสนอหลักและแนวคิดในการเขียนโปรแกรมภาษา C ก่อนนะครับ เพื่อให้ผู้อ่านได้เข้าใจในพื้นฐานก่อนนะครับ<br />ต่อไปจะขอเกริ่นถึงการเขียนโปรแกรมแบบโครงสร้างสักเล็กน้อยก่อนนะครับ แล้วก็จะเริ่มเข้ากระบวนการการเขียนโปรแกรมกัน<br />ลักษณะโปรแกรมแบบโครงสร้างการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่้งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้นครับ ผมจะยกตัวอย่างในภาษา C ในรูปแบบการเขียนโปรแกรมแบบโครงสร้างให้ดูดังด้านล่างนะครับ<br />ภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้าง<br />จากโปรแกรมข้างต้นนะครับ สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ นะครับ ก็คือส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)ส่วนที่ 3 แสดงผลทางจอภาพ (Display)<br />ซึ่งการทำงานของโปรแกรมแบบโครงสร้างนั้นสามารถเข้าใจได้ง่ายและสามารถแก้ไขได้สะดวกครับ<br />ใครสร้างภาษาซี 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 (อ่านว่า คาย) เป็นผลิตภัณฑ์ของบริษัท Keil4. CCS เป็นผลิตภัณฑ์ของบริษัท MicroPIC (เป็นภาษาซีสำหรับไมโครคอนโทรลเลอร์)5. MinWG เป็น Standatd C/C++ ของค่าย GNU (เป็นของฟรีใช้งานได้โดยไม่เสียค่าลิขสิทธิ์)ภาษาซีมีข้อเด่น เรื่องใดบ้าง ? ผมขอสรุปข้อเด่นของภาษาซีเป็นข้อ ๆ ได้ดังนี้ 1. สามารถเข้าถึงอุปกรณ์ฮาร์ดแวร์ได้โดยตรง 2. สนับสนุนแนวคิดภาษา Structure ตอนนี้ผมอยากให้ผู้อ่านจำแค่ว่า quot; ภาษาซีเป็นภาษา Structurequot; เท่านั้นก่อน รายละเอียดผมจะได้อธิบายในบทต่อ ๆ ไป 3. ภาษาซี มีตัวแปร Pointer 4. โค๊ดที่เขียนด้วยภาษาซี สามารถนำไปคอมไพล์ใหม่ในคอมพิวเตอร์รุ่นอื่น ๆ ได้ เช่น โค๊ดภาษาซีที่เขียนภายใต้ระบบปฏิบัติการ DOS สามารถนำซอร์สโค๊ดตัวเดียวกันนี้ไปคอมไพล์ในเครื่อง Mac หรือระบบ Unix ได้ โหลดภาษาซีได้จากที่ไหน ? ่ปัจจุบันนี้ ระบบ Global Network หรืออินเตอร์เน็ต ได้เปิดใช้อย่างกว้างขวางมากขึ้น ถ้าผู้อ่านนึกอยากจะได้ภาษาซี สามารถต่อเข้าอินเตอร์เน็ตและค้นหาได้อย่างรวดเร็ว อาจจะใช้เวลาเพียง 30 นาทีเท่านั้น<br />ผู้อ่านสามารถโหลดคอมไพลเลอร์ภาษาซี ของบริษัท Borland ได้ที่ลิงค์ด้านล่าง ->http://community.borland.com/article/20841/tc201.zip หรือท่านสามารถโหลดได้ที่นี่ TC.ZIP(1,017,901bytes)ก่อนจะไปยังหัวข้อต่อไป ผมอยากจะแนะนำเทคนิคการค้นหาไฟล์ในระบบ Global Network ด้วยการค้นไปที่เว็บไซด์ http://www.filemirrors.com/ จากนั้นป้อนชื่อไฟล์ที่ท่านต้องการค้น ลิงค์ด้านบนเป็นผลจากการป้อนคีย์เวิร์ด quot; TCquot; <br />ภาษาซีสำหรับผู้เริ่มต้น<br />  ข้าพเจ้าหลับตาลงแล้วนึกย้อนกลับไปในวันแรกที่ตนสนใจที่จะเรียนรู้คอมพิวเตอร์ วันที่ 12 สิงหาคม 2535 คือจุดเริ่มต้นของการเรียนรู้เกี่ยวกับคอมพิวเตอร์ของข้าพเจ้า ในยุคนั้นคอมพิวเตอร์ในเมืองไทยนับเป็นเครื่องมือสำหรับบุคคลบางกลุ่มบางพวกเท่านั้น ได้แก่กลุ่มนักวิจัยและครูบาอาจารย์ในสายเทคโนโลยีระดับสถาบันหรือมหาวิทยาลัยภายในประเทศไทย<br />  คอมพิวเตอร์ในยุคแรก ๆ ที่ผมเริ่มต้นใช้ สามารถแสดงสีได้เพียงสีเดียว คือ สีเขียว เรียกว่าจอภาพแบบMonochrome (Mono แปลว่าหนึ่ง Chrome แปลว่า สี) ในวันนั้นผมยังคงเป็นนักศึกษาหนุ่มที่มีความปรารถนาอยากรู้อยากเห็น และได้ถามประโยคหนึ่งกับ อ.ที่ปรึกษาว่า quot; อาจารย์ครับ.. เครื่องที่ตั้งอยู่ข้างโต๊ะอาจารย์ คืออะไรหรือครับ ?quot; เสียงตอบจากท่านอาจารย์ quot; อ้อ.. เครื่องไมโครคอมพิวเตอร์quot; ผมถามกลับไปด้วยความสงสัย quot; มันใช้งานอยากหรือเปล่าครับ ?quot; คำตอบคือ quot; อืม.. ไม่ยากหรอก ถ้าสนใจเฮาสิสอนให้quot; (เฮา หมายถึง ผม หรือ เรา แทนผู้พูด) นับจากนั้นเป็นต้นมา ผมจึงได้เริ่มก้าวสู่เส้นทางสายคอมพิวเตอร์มาโดยตลอด<br />  ในปีนั้น (พ.ศ. 2535) คอมพิวเตอร์ที่ใช้งานมีฮาร์ดดีกส์ซึ่งเป็นแหล่งเก็บข้อมูลซึ่งมีขนาดเพียง 10 MBเท่านั้น ซึ่งถือว่าน้อยมากเมื่อเปรียบเทียบกับปัจจุบันนี้ ผมยังจำได้ว่าระบบปฏิบัติการที่ใช้คือ DOS 2.0 ของบริษัทไมโครซอฟต์ โดยเมื่อเปิดเครื่องคอมพิวเตอร์ขึ้นมาครั้งแรก จะปรากฎข้อความบนจอภาพคอมพิวเตอร์ดังนี้<br />ถัดจากนั้นแสดงข้อความดังนี้<br />เมื่อเคาะ Enter 2 ครั้งจะเข้าสู่ DOS PROMPT ดังนี้<br />  ในยุคนั้นบรรดาผู้ใช้คอมพิวเตอร์ภายในประเทศไทยนิยมพิมพ์เอกสารด้วยโปรแกรม CW หรือ RW ซึ่งเป็นโปรแกรมที่สร้างขึ้นโดยมหาวิทยาลัยจุฬาลงกรณ์ และโรงพยาบาลราชวิถี ผมเชื่อว่า นักคอมพิวเตอร์หรือเด็ก ๆ สมัยใหม่ส่วนมากไม่รู้จัก CW และ RW<br />  ผมนับได้ว่าอยู่ในช่วงรอยต่อระหว่างระบบ DOS และ Windows และเป็นช่วงเวลา ที่ได้เรียนรู้ระบบใหม่และเก่าในเวลาเดียวกัน<br />  สมัยก่อนนั้นการสร้างไฟล์ หรือสร้างโฟล์เดอร์จะต้องเข้าใจโครงสร้าง และชุดคำสั่งที่ใช้ในการจัดการเกี่ยวกับไฟล์และโฟลเดอร์ทั้งหลาย ปัจจุบันนี้นักคอมพิวเตอร์รุ่นใหม่ ส่วนใหญ่รู้จักการสร้าง Folder หรือลบและคัดลอกไฟล์ด้วยการลากรูปภาพกราฟิกเพียงไม่กี่ครั้งเท่านั้น นั่นคือความแตกต่างระหว่างช่วงรอยต่อดังกล่าว !!<br />  ปัจจุบันนี้เราสามารถสั่งงานคอมพิวเตอร์ด้วยการกระทำกับภาพกราฟิกได้อย่างสะดวกสบายกว่าในอดีตมากมายนัก แต่เมื่อเราต้องการเขียนโปรแกรมคอมพิวเตอร์ สิ่งที่เรามองข้ามไปคือ ชุดคำสั่งเก่า ๆ ก่อนที่จะมีระบบกราฟิกอย่างทุกวันนี้<br />  ดังนั้น ในความคิดส่วนตัวของผม เชื่อเหลือเกินว่าโปรแกรมเมอร์ หรือผู้ที่ปรารถนาจะเขียนโปรแกรมสำหรับวินโดวส์ ไม่อาจจะหลีกเลี่ยงการเรียนรู้คำสั่ง DOS ไปได้<br />  ดังนั้นก่อนที่ท่านจะได้ศึกษาการเขียนโปรแกรมด้วยภาษา C ผู้เขียนขออนุมานว่าท่านมีความรู้พื้นฐานเกี่ยวกับ DOS มาพอสมควร หากท่านยังไม่รู้จัก DOS ท่านควรจะหาโอกาสศึกษาคำสั่งเหล่านั้นเพิ่มเติมเป็นอันดับแรก<br />  ในครั้งแรกที่ผมเริ่มเขียนโปรแกรมนั้น ได้เขียนจดหมายส่งมายังเพื่อนที่กรุงเทพฯ พร้อมร้องขอให้เพื่อนส่งภาษาซีมาให้ ใช้เวลาร่วม ๆ หนึ่งสัปดาห์ แต่ปัจจุบันนี้ เทคโนโลยีก้าวหน้าไปกว่าก่อนมากมายนัก เราสามารถเชื่อมต่อคอมพิวเตอร์สู่ระบบ Global Network และสามารถค้นหา ดาวน์โหลดภาษาซี เพื่อติดตั้งได้อย่างง่ายดาย<br />  สมัยนั้น ผมใช้ Turbo C 2.0 ซึ่งมีขนาดไม่ถึง 1 MB สามารถบรรจุลงในแผ่น Disket เพียงแผ่นเดียว โปรแกรมแรกที่ผมเขียน เพื่อต้องการแสดงคำว่า Hello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ ซึ่งมีโค๊ดภาษาซีดังนี้<br />  ผลลัพธ์ของโปรแกรมดังกล่าวจะแสดงคำว่า Hello World ให้ปรากฎบนจอภาพคอมพิวเตอร์ หลายคนอาจจะหัวเราะในใจว่า ศึกษามาตั้งเยอะแยะ เพียงแค่แสดงข้อความให้ปรากฎบนจอภาพคอมพิวเตอร์เท่านี้เองหรือ ? แต่ในความเป็นจริง เราสามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงานได้มากกว่านั้นอีกมากมาย ผมจึงได้เขียนโค๊ดอีกอันหนึ่ง โดยให้แสดงคำว่า Hello World อย่างไม่รู้จบสิ้น ด้วยโค๊ดภาษาซีดังนี้<br />  ในตอนเริ่มต้นนี้ผู้อ่านจะรู้สึกอยากลองเขียนภาษาซีมากขึ้น ต่อไปผมจะได้พาท่านผู้อ่าน ไปดูวิธีการเขียนโปรแกรมตั้งแต่เริ่มต้น จนกระทั่งสามารถสั่งให้มันทำงานได้ ผมมารู้ทีหลังว่า ภาษาซีมีอยู่หลายตัวด้วยกัน เพราะว่าแต่ละตัวถูกผลิตขึ้นมาจากบริษัทต่าง ๆ มากมาย ได้แก่- Microsoft C ของบริษัทไมโครซอฟต์- TC และ TC++ ของบริษัท Borland- BC และ BC++ ของบริษัท Borland - Keil C (อ่านว่า คาย) ของบริษัท Keil- Pic C ของบริษัทไมโครซิป- Visual C++ ของบริษัทไมโครซอฟต์- Quick C ของบริษัทไมโครซอฟต์- ภาษาซี ในระบบปฏิบัติการ UNIX<br />นอกจากนั้นยังมีภาษาซีอีกหลากหลายบริษัทเหลือเกิน แต่ทั้งหมดนั้น ยังคงใช้หลักการเขียนโปรแกรมอันเดียวกันทั้งสิ้น<br />สำหรับบทความนี้เราจะมาดูกฎเกณฑ์ต่างๆ ที่เราจำเป็นต้องรับรู้ไว้ก่อนที่จะเขียนโค้ดภาษา C เพื่อความถูกต้องในการเขียนโค้ด ลองมาดูกันเลยครับ<br />กฎในการเขียนภาษา C1. คำสั่งในภาษา C ต้องเขียนด้วยตัวพิมพ์เล็ก2. ทุกประโยคเมื่อจบประโยคแล้วต้องใช้เครื่องหมาย “;” แสดงการจบประโยค ยกเว้นฟังก์ชันที่ตามด้วย ( )ไม่ต้องปิดท้ายด้วย “;”3. ในหนึ่งโปรแกรมจะมีกี่ฟังก์ชันก็ได้แต่จะต้องมีฟังก์ชันที่ชื่อ main เสมอ4. การใส่หมายเหตุ (Comment) เพื่อใช้เป็นส่วนที่อธิบายโปรแกรมสามารถกระทำได้ 2 รูปแบบ คือ4.1 /* และ */ ใช้สำหรับข้อความที่ยาวกว่า 1 บรรทัด โดยโปรแกรมจะถือว่าข้อความที่ตามหลัง /*จะเป็นหมายเหตุจนกว่าจะพบเครื่องหมาย */ จึงจะแสดงว่าจบหมายเหตุแล้ว5. // เหมาะสำหรับข้อความสั้นๆ 1 บรรทัด โดยถ้าบรรทัดใดขึ้นต้นด้วย // บรรทัดนั้นจะถือว่าเป็น หมายเหตุ<br />ชุดอักขระภาษา Cภาษา C ใช้ตัวอักษรได้ทั้งเล็กและใหญ่ ตัวเลข 0-9 และตัวอักขระพิเศษในการสร้างองค์ประกอบพื้นฐานของโปแกรม อักขระพิเศษดังกล่าวมีดังนี้ นอกจากนี้ภาษา C ทุกรุ่นยังยอมให้มีการใช้อักขระอื่นๆ เช่น @ และ $ .ในส่วนที่เป็นสตริงและคำอธิบาย<br />กฎการตั้งชื่อการตั้งชื่อตัวแปรใดๆ ในโปรแกรมจะประกอบด้วยตัวอักษรหรือตัวเลขก็ได้ แต่อักขระตัวแรกจะต้องเป็นตัวอักษรเสมอ การตั้งชื่อตัวแปรสามารถกำหนดเป็นตัวอักษรเล็กหรือใหญ่ก็ได้ แต่ตัวอักษรเล็กและใหญ่ในคำๆ เดียวกันจะมีความหมายต่างกัน เราสามรถใช้ขีดล่าง ( _ ) มาตั้งชื่อก็ได้และสามารถกำหนดให้เป็นอักขระตัวแรกของชื่อก็ได้ ตัวอย่างการตั้งชื่อ เช่น<br />Xy12sum_1_tempnameareatax_rateTABLE<br />*** การตั้งชื่อไม่สามารถตั้งชื่อเหมือนกับคำสงวนได้และไม่สามารถเว้นช่องว่างระหว่างชื่อได้ ***ตัวอย่างการตั้งชื่อที่ผิด<br />4htไม่ได้เพราะอักขระตัวแรกเป็นตัวเลข“x”ไม่ได้เพราะใช้อักขระไม่ถูกต้อง (“)order-noไม่ได้เพราะใช้อักขระไม่ถูกต้อง (-)error flagไม่ได้เพราะใช้อักขระไม่ถูกต้อง (blank)<br />ลำดับหลีก (escape sequences)เป็นตัวอักษรที่ไม่สามารถพิมพ์ได้ เช่น ( “ ) ,( ‘ ) หรือ ( ) ถ้าต้องการพิมพ์ออกมาเราจะต้องใช้ แล้วตามด้วยอักขระที่ต้องการ มีลำดับหลีกที่ใช้ทั่วไป ดังนี้<br />อักขระescape sequencesค่า ASCIIbell (กระดิ่ง )007backspace008แท็บตามแนวนอน009ขึ้นบรรทัดใหม010แท็บตามแนวตั้ง011ขึ้นหน้าใหม่012ปัดแคร่013อัญประกาศ034อะโพสโตรฟิ039เครื่องหมายคำถาม063แบ็กสแลช092นัล000<br />จากข้อมูลที่กล่าวมาทั้งหมดนั้นจะช่วยบอกรูปแบบการเขียนภาษา C ให้เราได้มากขึ้นเพื่อนนำไปใช้เขียนโค้ดได้อย่างถูกต้อง ซึ่งกฎเหล่านี้อาจจะนำไปใช้กับการเขียนโปรแกรมภาษาอื่นๆ ได้อีกด้วย เพราะโครงสร้างของภาษาคอมพิวเตอร์ส่วนใหญ่มักจะไม่ต่างกันมากนัก เราไม่ควรละเลยกฎเหล่านี้เพราะมันอาจจะทำให้เราเสียเวลาในการค้นหาและแก้ไขจุกบกพร่ิองของโปรแกรมเมื่อเิกิดข้อผิดพลาดได้<br />2 .แบบ 2 เงื่อนไข (if...else) มีรูปแบบดังนี้ จากรูปแบบของคำสั่งจะเห็นว่าจะมีลักษณะการเขียนคล้ายกับแบบ simple if แต่จะมีการเพิ่มเติมคำว่า elseเข้าไปด้วย ซึ่งการทำงานของคำสั่งแบบนี้นั้นจะทำการตรวจ สอบเงื่อนไขที่ if ก่อนว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ใน if แต่ถ้าเป็นเท็จก็จะไปทำงานในกลุ่มคำสั่งที่อยู่ในส่วนของ else ซึ่งจะ เป็นเหมือนมีทางเลือก 2 ทางนั่นเอง ลองมาดูแผนภาพของคำสั่งแบบ if...else กันนะครับ<br />ดูจากแผนภาพแล้วจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนดไว้ในกลุ่มแรก แต่ถ้าเงื่อนไขเป็นเท็จก็จะวิ่งเข้ามาที่กลุ่มคำสั่งของ else ในกลุ่มที่ 2 จากนั้นจึงค่อยมาทำที่คำสั่งในส่วนถัดมาของโปรแกรมต่อไป ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับ อธิบายโปรแกรม จากโปรแกรมได้ประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z จากนั้นมาเจอคำสั่ง if โดยมีเงื่อไข ว่า x มากกว่าหรือเท่ากับ y ถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในส่วนของ ifทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วนของ else ของโปรแกรมคือ หาค่าของ x+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 10 นะครับ ให้ลองเปลี่ยนค่า x ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่า ผลออกมาจะเป็นอย่างไร?<br />สำหรับคำสั่งประเภท if..else ก็มีรูปแบบการใช้งานดังที่กล่าวมาแล้ว สำหรับในบทความตอนต่อไปเราจะมาเรียนรู้คำสั่งสุดท้ายของประเภท if กันนะครับนั่นคือ Nested if <br />ฟังก์ชั่นคืออะไร<br />เมื่อเราพูดถึงคำว่า ฟังก์ชั่น จะหมายถึง ความรับผิดชอบต่อหน้าที่ของตนเอง ยกตัวอย่างเช่น<br />add() เป็นฟังก์ชั่น ทำการบวก subtract() เป็นฟังก์ชั่น ทำการลบ multiply() เป็นฟังก์ชั่น ทำการคูณ devision() เป็นฟังก์ชั่น ทำการหาร printf() เป็นฟังก์ชั่นแสดงผลบนจอภาพคอมพิวเตอร์ scanf() เป็นฟังก์ชั่นรับข้อความจากแป้นคีย์บอร์ด<br />  โปรดสังเกตว่า ทุก ๆ ฟังก์ชั่นจะมีเครื่องหมาย () เสมอ ส่วนจะมีอะไรภายในวงเล็บหรือไม่นั้น ตอนนี้อย่าพึ่งไปสนใจ ผมต้องการให้ผู้อ่านทราบในขั้นต้นเพียงว่า ทุก ๆ ฟังก์ชั่น จะมีเครื่องหมาย () ตามหลังเสมอ<br />  ก่อนที่เราจะศึกษารายละเอียดในส่วนต่อไป ผมอยากทำความเข้าใจกับผู้เรียนเสียก่อนว่า ในยุคแรก ๆ ระบบคอมพิวเตอร์ ใช้รหัสฐานสองในการเขียนโปรแกรม ต่อมาจึงได้มีการพัฒนาภาษา Assembly ซึ่งเป็นภาษาระดับต่ำ ในเวลาต่อมา เมื่อโปรแกรมคอมพิวเตอร์ มีความสลับซับซ้อนมากขึ้น จึงได้พัฒนาโปรแกรมโดยใช้หลักการของ Structure ซึ่งภาษาที่สนับสนุนหลักการดังกล่าวได้แก่ C, Pascal, Basic และอื่น ๆ ในระยะนั้น การพัฒนาโปรแกรมดูเหมือนว่า จะไม่มีปัญหาอะไรเพราะสามารถสร้างโปรแกรมได้ทุกรูปแบบดีอยู่แล้ว แต่ในความเป็นจริงปัญหาที่เกิดขึ้นคือ การเขียนโปรแกรม ที่มีความสลับซับซ้อนสูง ๆ ไม่สามารถทำได้ดีนักด้วยภาษาที่ใช้หลักการ Structure จึงเป็นเหตุผลที่ต้องมีการพัฒนาแนวคิดใหม่ขึ้น นั่นคือหลักการที่ชื่อว่า Object Oriented โดยใช้แนวคิด คือรวมแนวคิดแบบ Structure เข้ากับการมองปัญหาเป็นวัตถุ หรือObject ซึ่งโปรแกรมที่สนับสนุนแนวคิดดังกล่าวนี้คือ C++, Java, Python และอื่น ๆ นอกจากนั้นในยุคปัจจุบันได้มี .Net ของบริษัทไมโครซอฟต์ซึ่งได้แก่ Visual C++ .NET และ Visual Basic .NET โดยสนับสนับสนุนแนวคิดแบบ Object Oriented<br />ก่อนจะจบบทความนี้ ผมอยากจะสรุปความแตกต่างระหว่าง 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() เพื่อรับข้อมูลจากแป้นคีย์บอร์ด<br />  ภาษา C++ รับและแสดงผลข้อมูลจาก Header file ชื่อ iostream.h โดยใช้คำสั่ง cout เพื่อแสดงผลข้อมูลให้ปรากฎบนจอภาพคอมพิวเตอร์ และคำสั่ง cin เพื่อรับข้อมูลจากแป้นคีย์บอร์ด<br />ฟังก์ชัน printf()เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้<br />printf(control, argument)<br />เช่น printf(“i = %d ”,i); จะสังเกตว่า ภายใน “ “ จะมีเครื่องหมาย % อยู่ซึ่งเราจะเรียกว่า Format Codeซึ่งจะเป็นตัวกำหนดให้ข้อมูลที่อยู่ในตำแหน่งหลังเครื่องหมาย , แสดงออกมา โดยจะมีความหมายดังตาราง<br />ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ<br />อธิบายโปรแกรม จากโปรแกรมนี้เราจะกำหนดตัวแปรออกเป็นชนิดต่างๆ 4 ชนิด แล้วกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้นแล้วให้แสดงผลลัพธ์ที่ตัวแปรเหล่านั้นเก็บไว้ออกมาทางจอภาพโดยใช้ฟังก์ชัน printf() และจะต้องคำนึงถึง Format Code ด้วย<br />printf(quot; a = %cquot; ,a); --------------> ใช้ %c เพราะ a เป็น charprintf(quot; x = %dquot; ,x); --------------> ใช้ %d เพราะ x เป็น intprintf(quot; y = %fquot; ,y); --------------> ใช้ %f เพราะ y เป็น float (ทศนิยม)printf(quot; z = %fquot; ,z); --------------> ใช้ %f เพราะ z เป็น double (ทศนิยม)<br />นอกจากนั้นการแสดงผลลัพธ์ที่เป็นจุดทศนิยมเราสามารถกำหนดได้ว่าจะให้มีทศนิยมกี่ตำแหน่งโดยการกำหนดที่ Format Code ดังตัวอย่างต่อไปนี้<br />printf(quot; y = %.2fquot; ,y); --------------> ใส่ค่า .2 หมายถึง แสดงทศนิยม 2 ตำแหน่งprintf(quot; z = %.3fquot; ,z); --------------> ใส่ค่า .3 หมายถึง แสดงทศนิยม 3 ตำแหน่ง<br />ฟังก์ชัน scanf()เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลออกทางจอภาพ มีรูปแบบดังนี้<br />scanf(control, argument)<br />ฟังก์ชัน scanf จะมีลักษณะคล้ายกับ printf โดยเราจะต้องใส่ Format Code ไว้ในเครื่องหมาย quot; quot;  และระบุตัวแปรที่จะมารับข้อมูลจากผู้ใช้ที่ป้อนเข้ามา โดยจะต้องมี & นำหน้าตัวแปรที่เราต้องการใส่ค่าเสมอ ยกเว้นตัวแปรที่เป็นอะเรย์ ลองมาดูตัวอย่างจากโปรแกรมต่อไปนี้ครับ<br />อธิบายโปรแกรม จากตัวอย่างมีการประกาศตัวแปร คือ a เป็นตัวแปรชนิด int ถัดมาเป็นการแสดงคำพูด Enter number : ที่หน้าจอ จากนั้นฟังก์ชัน scanf() จะทำงานโดยการรอรับข้อมูลจากผู้ใช้ให้เราพิมพ์ตัวเลขจำนวนเต็มใส่ลงไป ตัวเลขที่เราพิมพ์ลงไปนั้นจะถูกเก็บไว้ที่ตัวแปร a แล้วจึงแสดงผลลัพธ์ของตัวเลขนั้นอีกครั้งที่จอภาพ<br />scanf(quot; %dquot; ,&a); --------------> %d เป็นการระบุรูปแบบของตัวแปรที่จะมารองรับค่า, &a คือ ตัวแปรที่จะมารับค่า<br />สำหรับฟังก์ชัน printf() และ scanf() นั้นจะเป็นฟังก์ชันพื้นฐานที่จะใช้กันบ่อยๆ ในภาษา C เราควรฝึกใช้งานให้คล่องนะครับ ส่วนใน C++ ฟังก์ชันทั้ง 2 นี้จะถูกเปลี่ยนแปลงไปและการใช้งานก็ต่างกันนิดหน่อยซึ่งผมจะยังไม่กล่าวถึงในตอนนี้นะครับ<br />การเขียนโปรแกรมให้ได้ผลลัพธ์ต่างๆ ตามที่เราต้องการนั้นสิ่งที่ขาดไม่ได้อีกอย่างหนึ่งคือ เงื่อนไขและการตัดสินใจของโปรแกรม ซึ่งผมจะมากล่าวถึงเรื่องการสร้างเงื่อนไขของโปรแกรมเพื่อให้โปรแกรมของเราดำเนินไปตามขั้นตอนตามความต้องการของเรา<br />คำสั่ง ifเป็นคำสั่งที่ใช้ในการตรวจสอบเงื่อนไขว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ และถ้าเป็นเท็จก็จะไปทำงานอีกจุดหนึ่งซึ่งเป็นทางเลือก อีกทางหนึ่งในโปรแกรม ผมจะแบ่งรูปแบบของคำสั่งออกเป็น 3 แบบ คือ แบบเงื่อนไขเดียว (simple if) ,แบบ 2 เงื่อนไข (if…else) และแบบซ้อน (nested if)<br />1 .แบบเงื่อนไขเดียว (simple if) มีรูปแบบดังนี้ เราจะเห็นรูปแบบในการเขียนของคำสั่งนี้นะครับ โดยเงื่อนไขในวงเล็บนั้นจะเป็นประโยคทางตรรก ถ้าตรวจสอบแล้วเป็นจริงก็จะเข้ามาทำงานในกลุ่มคำสั่งที่เรากำหนด ไว้ในขอบเขตของเครื่องหมายปีกกา แต่ถ้าเป็นเท็จก็จะข้ามไปทำส่วนต่อไปของโปรแกรมทันทีตามภาพดูจากแผนภาพจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งมาตามลูกศรเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะ วิ่งข้ามมาที่คำสั่งถัดไปซึ่งก็คือส่วนต่อไปของโปรแกรมที่ไม่ได้เกี่ยวข้องกับคำสั่ง if นั่นเอง รูปแบบนี้เป็น simple if นะครับ ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับอธิบายโปรแกรม จากโปรแกรมจะีประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z คำสั่ง if มีเงื่อไข ว่า x มากกว่าหรือเท่ากับ y ถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในเครื่องหมายปีกกาทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วน ต่อไปของโปรแกรมคือ หาค่าของx+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 6 และ z = 10 ครับ ให้ลองเปลี่ยนค่าx ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่าผลออกมาจะเป็นอย่างไร ?<br />สำหรับคำสั่งประเภท simple if นั้นใช้งานได้ง่ายเพียงสร้างเงื่อนไขขึ้นมาเพื่อให้มันทำงานเวลาที่เงื่อนไขเป็นจริง แต่ถ้าเรามีทางเลือกมากกว่าหนึ่งทางเราควรจะเปลี่ยนไปใช้คำสั่งที่เหมาะสมขึ้นซึ่งผมจะพูดถึงคำสั่งif..else<br />เขียนโปรแกรมภาษาซีด้วย Turbo C<br />ขั้นที่ 1 ก่อนอื่นต้องดาวน์โหลดโปรแกรม TC เป็นลำดับแรก ผู้เขียนอนุมานว่าผู้อ่านไม่มีประสบการณ์ในการติดตั้ง TC ดังนั้นหากท่านสามารถติดตั้งได้เอง โปรดข้ามหัวข้อนี้ไป เพื่อเข้าสู่เนื้อหาที่ Advanced มากขึ้น เริ่มต้นโดยให้ผู้อ่านเปิดโปรแกรม Windows Explorer และคลิ๊กที่แถบ URL ด้านบน พิมพ์คำว่าhttp://www.sptc.ac.th/nprotech/articles/C0001/TC.zip ดังภาพต่อไปนี้<br />ขั้นที่ 2 เมื่อพิมพ์ URL ครบแล้วให้ท่านกด Enter หนึ่งครั้งเพื่อ Download File TC.zip ซึ่งจะปรากฎผลลัพธ์ดังนี้- ถ้าท่านต้องการเปิดไฟล์ คลิ๊ก Open - ถ้าต้องการบันทึกไฟล์ คลิ๊ก Save - ถ้าต้องการยกเลิกการดาวน์โหลดคลิ๊ก Cancel- ถ้าต้องการข้อมูลมากกว่านี้ คลิ๊ก More Info<br />ขั้นที่ 3 เลือก Save และคลิ๊กลูกศรชี้ลง ตลอดจนเลือก ไดวร์ C: ดังภาพต่อไปนี้ผู้เขียนต้องการให้ท่านเลือกไดเร็คทอรี่เพื่อเก็บไฟล์เอาไว้ที่ C:เพราะว่าภายในโปรแกรมดังกล่าวนี้ ได้ทำการตั้งค่าพารามิเตอร์ต่าง ๆ เกี่ยวกับการคอมไพล์ไว้ในไดเร็คทอรี่ C:C ดังนั้น หากท่านขยายไฟล์ผิดตำแหน่ง จะทำให้ไม่สามารถคอมไพล์ได้ วิธีแก้ทำได้โดยการปรับเปลี่ยนที่เมนู Directory ให้ตรงกับไดเร็คทอรี่ที่ท่านได้เก็บไฟล์ไว้ยังตำแหน่งที่ท่านต้องการ แต่ถ้าท่าน ทำตามวิธีที่ผู้เขียนแนะนำ ท่านไม่ต้องทำการปรับแก้ค่าตัวเลือกใด ๆ ผู้เขียนจะกล่าวถึงรายละเอียดส่วนนี้ในบทต่อ ๆ ไป ตอนนี้ต้องการให้ผู้อ่านสามารถคอมไพล์โค๊ดภาษาซีได้เท่านั้น ดังนั้นท่านควรปฏิบัติตามแนวทาง ที่ได้แสดงเอาไว้ในบทความชุดนี้อย่างเคร่งครัด เว้นเสียแต่ท่านเข้าใจสิ่งที่ผู้เขียนกำลังอธิบายนี้แล้ว จึงสามารถดูผ่าน ๆ ได้อย่างรวดเร็ว<br />ขั้นที่ 4 เริ่มต้นการดาวน์โหลด ภาพด้านล่างนี้ แสดงการดาวน์โหลดไฟล์ ขณะนี้ เครื่องที่ผู้เขียนใช้งานอยู่บนระบบ LAN จึงสามารถโหลดไฟล์ดังกล่าวด้วยความเร็วสูงกว่าการโหลดด้วย Modem ธรรมดา สังเกตที่อัตราการ Transfer rate ที่ 31.0KB/Sec หากเป็นโมเดมธรรมดาจะอยู่ที่ประมาณ 5 KB/Sec<br />ขั้นที่ 5 เมื่อดาวน์โหลดเสร็จแล้วคลาย Zip ไฟล์ TC.zip ที่โหลดมาแล้วด้วยการคลิ๊กขวา ดังภาพต่อไปนี้สังเกตว่าไฟล์ที่เราโหลดมานั้นมีชื่อว่า TC.zip ผู้เขียนต้องการให้ท่าน Save เอาไว้ที่ไดรว์ C:และคลายZip ออกไปไว้ที่โฟล์เดอร์ C:C<br />ขั้นที่ 6 ดับเบิ้ลคลิ๊กโฟลเดอร์ C:C ไฟล์ที่คลาย Zip เรียบร้อยแล้วจะเก็บไว้ที่โฟล์เดอร์ C:C และภายในไดเร็คทอรี่ดังกล่าวจะประกอบด้วยโฟล์เดอร์ C:CNCLUDE และ C:CIB รายละเอียดส่วนนี้จะกล่าวถึงอีกครั้งในบทหลัง ๆ แต่ตอนนี้ให้ท่านเข้าใจเพียงว่า ภายในโฟล์เดอร์ ทั้งสองจะเก็บไฟล์ ที่มีนามสกุล .H และ .LIB เอาไว้ในโฟล์เดอร์ทั้งสองตามลำดับ<br />ขั้นที่ 7 เรียกให้ Turbo C ทำงานโดยคลิ๊กที่ไฟล์ TC ดังภาพต่อไปนี้ ความจริงในขั้นตอนนี้ผู้อ่านสามารถคลิ๊ก Start > Run และพิมพ์คำว่า C:CC.EXE จากนั้นกดแป้น Enter ซึ่งจะให้ผลเช่นเดียวกับขั้นตอนนี้ กล่าวคือเรียกให้ Turbo C ทำงานและพร้อมจะเขียนโปรแกรมและคอมไพล์ต่อไป<br />ขั้นที่ 8 เมื่อไฟล์ TC.EXE ถูกเรียกให้ทำงานจะปรากฎผลลัพธ์ดังนี้ ภาพด้านล่างนี้เป็นหน้าจอของโปรแกรมTC ถ้าผู้อ่านต้องการให้โปรแกรมแสดงผลเต็มจอ สามารถกดแป้น Alt + Enter (กด Alt ค้างไว้ แล้วตามด้วย Enter หนึ่งครั้ง) จะเป็นการสลับไปมาระหว่างโหมด Full Screen กับโหมด Windows และในทำนองเดียวกัน ถ้าต้องการสลับกลับมายังโหมดวินโดวส์ธรรมดา ให้กด Alt + Enter ได้เช่นเดียวกัน<br />ขั้นที่ 9 พิมพ์โค๊ดภาษาซี ในขั้นตอนนี้ผู้อ่านจะต้องกด Esc ซ้ำ ๆ สักสองสามครั้งเพราะว่า กำลังอยู่ในสถานะการเลือกเมนู การกด Esc จะทำให้กลับมายังจอภาพที่ใช้ในการแก้ไขโค๊ด จากนั้นผู้อ่านจึงเริ่มต้นพิมพ์โค๊ด ตามตัวอย่างด้านล่างนี้<br />ขั้นที่ 10 ทำการคอมไพล์ด้วยการกด Alt + R แล้วกด Enter หนึ่งครั้ง ขั้นตอนนี้อาจจะกด Ctrl + F9 จะปรากฎผลเช่นเดียวกัน ในขั้นตอนนี้เรายังไม่ได้บันทึกไฟล์เป็น Helloworld.c ดังนั้นผลลัพธ์ที่ได้จะสร้างไฟล์ชื่อว่า noname.exe ซึ่งก็จะให้ผลลัพธ์อันเดียวกัน ขั้นตอนต่อไปจะแสดงการบันทึกแฟ้มข้อมูล<br />ขั้นที่ 11 ออกจากโปรแกรม TC โดยการกด Alt + Q หรือกด Alt + F และเลื่อนลูกศรมาที่ Quit ให้ผลเช่นเดียวกัน เนื่องจากเรายังไม่ได้บันทึกแฟ้มข้อมูล เมื่อทำการออกจากโปรแกรม คอมไพล์เลอร์จะถามว่าต้องการบันทึกซอร์สโค๊ดหรือไม่ ให้ตอบตามความต้องการของท่าน ในกรณีตัวอย่างนี้เราจะบันทึกไฟล์เก็บไว้ในชื่อ helloworld.c<br />ขั้นที่ 12 ก่อนที่จะจบการทำงานโปรแกรมภาษาจะถามเราเกี่ยวกับการบันทึกไฟล์ ถ้าปรารถนาจะบันทึกให้กด Yes อย่างที่ได้กล่าวไปแล้วในขั้นตอนนี้ ผู้อ่านจะบันทึกหรือไม่บันทึกขึ้นอยู่กับตัวท่านเอง แต่บทความนี้สำหรับผู้เริ่มต้น เราจะบันทึกไฟล์ชื่อ helloworld.c ดังนั้นกด Y เพื่อบอกคอมไพล์เลอร์ว่า เราต้องการบันทึกซอรส์โค๊ด<br />ขั้นที่ 13 ตั้งชื่อไฟล์ว่า helloworld.c จากนั้นกดแป้น Enter หนึ่งครั้ง เนื่องจาก TurboC 2.0 สนับสนุนการตั้งชื่อไฟล์ระบบเก่า คือตั้งได้ 8 ตัว และนามสกุล 3 ตัว ดังนั้น จะเกิดการตัดคำอัตโนมัติให้เหลือเพียงคำว่าhellowor.c แทนที่จะเป็น helloworld.c<br />ขั้นที่ 14 ในขั้นตอนที่ผ่านมาเราได้คอมไพล์โค๊ดภาษาซีเสร็จแล้วต่อไปต้องการรันโค๊ดใน DOS Prompt ขอให้ท่านเลือก Start > Run ในขั้นตอนนี้ท่านผู้อ่านสามารถคลิ๊ก Start > Run และพิมพ์คำว่าC:Coname.exe ซึ่งจะให้ผลเร็ว และจะปิดวินโดวส์ไปอย่างรวดเร็ว ดังนั้นเราจึงควรจะออกไปที่ DOS Prompt ด้วยการพิมพ์คำสั่ง Start > Run และพิมพ์ CMD ซึ่งคำสั่ง CMD จะมีสำหรับวินโดวส์ NT และ2000 และ XP เท่านั้น ไม่สามารถใช้คำสั่ง CMD ในวินโดวส์ที่ต่ำกว่าที่กล่าวมาได้ ดังนั้นถ้าเป็นระบบปฏิบัติการตัวเก่า ท่านต้องเปลี่ยนมาพิมพ์คำว่า Command เต็ม ๆ แทนคำว่า CMD<br />ขั้นที่ 15 พิมพ์คำสั่ง cmd เพื่อไปยัง Dos Prompt ดังที่ได้กล่าวไปแล้วคำสั่ง CMD ใช้ได้เฉพาะใน NT, 2000 และ XP เท่านั้น ถ้าจะให้ทำงานได้ในระบบปฏิบัติการรุ่นเก่าต้องพิมพ์คำว่า Command แทน CMD<br />ขั้นที่ 16 ได้ผลลัพธ์ดังต่อไปนี้ คำสั่ง CMD จะเป็นโปรแกรมที่บอกให้ระบบปฏิบัติการรับคำสั่ง DOS เหมือนในระบบเดิม เพียงแต่ว่า CMD ต่างจาก Command ตรงที่เราสามารถใช้ลูกเล่นต่าง ๆ ได้ เช่นใช้คำสั่ง cd in* ซึ่งจะหมายถึงเข้าไปในไดเร็คทอรี่อะไรก็ได้ที่ขึ้นต้นด้วยคำว่า win เป็นต้น ซึ่งแท้จริงเป็นการเพิ่มประสิทธิภาพของ Command ให้ดีขึ้นนั่นเอง นอกจากนั้น CMD ยังสามารถ ใช้เมาส์ลากตัวอักษรบริเวณที่เราต้องการแล้วคลิ๊กขวา เพื่อคัดลอกข้อความนั้นเอาไปยังคลิปบอร์ด ได้อีกด้วย หรือถ้าคลิ๊กลงบนพื้นที่Console ก็จะหมายถึงการวางข้อความที่อยู่ในคลิปบอร์ดลงในพื้นที่ Console เป็นต้น รายละเอียดส่วนนี้ศึกษาได้จากคู่มือการใช้งานคำสั่ง CMD ใน Online Help ของวินโดวส์<br />ขั้นที่ 17 พิมพ์คำสั่ง cd c เพื่อเข้าไปยังไดเร็คทอรี่ TC จากนั้นพิมพ์คำว่า HELLOWOR.EXE เนื่องจากTC2.0 สนับสนุนการตั้งชื่อไฟล์เพียง 8 ตัว ดังนั้นจะมีชื่อเพียง HELLOWOR เท่านั้น ผลลัพธ์ของการExecute จะให้ผลคือคำว่า Hello World ปรากฎบนจอภาพคอมพิวเตอร์<br />ขั้นที่ 18 ผลลัพธ์ของการคอมไพล์จะปรากฎคำว่า Hello World ปรากฎบนจอภาพคอมพิวเตอร์ ขอให้ ท่านผู้อ่านระลึกไว้ว่า ขณะนี้เรากำลังเรียนรู้ตัวอย่างการคอมไพล์ด้วย Turbo Cในหัวข้อต่อไป เราจะศึกษาเกี่ยวกับการคอมไพล์ภาษาซีด้วยไมโครซอฟต์วิชวลซีพลัส ๆ (Visual C++)<br />.H คืออะไรกันแน่<br />  อืม .H เรียกอีกอย่างว่า Header File หมายถึงไฟล์ที่อยู่ส่วนบนของประโยค main() ประกาศเอาไว้ เพื่อเรียกใช้คำสั่งที่ถูกจัดเก็บไว้ใน Header file นั้น ๆ<br />ภายในภาษา C มาตรฐานจะมี Header File มีทั้งหมด 15 ไฟล์ ดังต่อไปนี้<br />assert.hctype.herrno.hfloat.hlimits.hlocale.hmath.hsetjmp.hsignal.hstdarg.hstddef.hstdio.hstdlib.hstring.htime.h<br />  นอกจากนั้นภายใน Header แต่ละตัว จะประกอบด้วยคำสั่งต่าง ๆ ดังรายละเอียดต่อไปนี้ (สำหรับผู้เริ่มต้น ขอให้อย่าพึ่งสนใจรายละเอียดของ ชุดคำสั่งทั้งหลาย ผมเพียงต้องการสรุปให้ท่านเห็นอย่างชัดเจน ในเบื้องต้นเท่านั้นว่าภายใน Header File หรือไฟล์ซึ่งมีนามสกุล .H ประกอบด้วยฟังก์ชั่นต่าง ๆ ดังที่แสดงไว้ในรายละเอียดด้านล่างเท่านั้น ส่วนรายละเอียดและตัวอย่างการใช้งานเราจะได้ศึกษาในบทถัด ๆ ไป)<br />1 assert.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />assert()  <br />2 ctype.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />isdigit()isupperislowerisalphaisprintisalnumisspacetouppertolower<br />3 errno.h ประกอบด้วยมาร์โครและอ็อบเจ็คดังต่อไปนี้<br />EDOMERANGEerrno<br />4 float.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />FLT_RADIXFLT_ROUNDSFLT_DIGFLT_EPSILONFLT_MANT_DIGFLT_MAXFLT_MAX_10_EXPFLT_MAX_EXPFLT_MINFLT_MIN_10_EXPFLT_MIN_EXPDBL_DIGDBL_EPSILONDBL_MANT_DIGDBL_MAXDBL_MAX_10_EXPDBL_MAX_EXPDBL_MINDBL_MIN_10_EXPDBL_MIN_EXP<br />5 limits.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />CHAR_BITCHAR_MAXCHAR_MININT_MAXINT_MINLONG_MAXLONG_MINSCHAR_MAXSCHAR_MINSHRT_MAXSHRT_MINUCHAR_MAXUCHAR_MINUINT_MAXULONG_MAXUSHRT_MAX<br />6 locale.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />setlocalelocaleconv <br />7 math.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />acosasinatanatan2coscoshsinsinhtantanhexpfrexpldexploglog10modfpowsqrtceilfabsfloorfmod<br />8 setjmp.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />setjmplongjmp <br />9 signal.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />signalraise <br />10 stdarg.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />va_startva_argva_end<br />11 stddef.h ประกอบด้วยรายละเอียดต่าง ๆ ดังนี้<br />ptrdiff_tsize_tNULLoffsetofwchar_t<br />12 stdio.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />clearerrfclosefeofferrorfflushfgetposfopenfreadfreopenfseekfsetposftellfwriteremoverenamerewindsetbufsetvbuftmpfiletmpnamprintfscanffgetcfgetsfputcfputsgetcgetchargetsputcputcharputsungetcperror<br />13 stdlib.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />atofatoiatolstrtodstrtolstrtoulcallocfreemallocreallocabortatexitexitgetenvsystembsearchqsortabsdivlabsldivrandsrandmblenmbstowcsmbtowcwcstombswctomb<br />14 string.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />memchrmemcmpmemcpymemmovememsetstrcatstrncatstrchrstrcmpstrncmpstrcollstrcpystrncpystrcspnstrerrorstrlenstrpbrkstrrchrstrspnstrstrstrtokstrxfrm<br />15 time.h ประกอบด้วยฟังก์ชั่นดังต่อไปนี้<br />asctimeclockctimedifftimegmtimelocaltimemktimestrftimetime<br />