C lu
- 1. 1. พื้นฐานโปรแกรมภาษา C (Introduction to C Programming) ก่อนอื่นของแนะนาพื้นฐานเกี่ยวกับคอมพิวเตอร์กันซักนิด ก่อนที่จะเริ่มเรียนรู้ ภาษา C กัน หน่วยสาคัญที่สุดของคอมพิวเตอร์ก็คือ หน่วยประมวลผลหรือที่เรียกกันว่า CPU โดยปกติ CPU จะมีภาษาของตัวเองที่เรียกว่า ภาษาเครื่อง (Machine Language) ซึ่งจะเป็นภาษาที่ประกอบไปด้วยเลขฐานสองมากมาย ดังนั้นการที่จะเขียนโปรแกรมควบคุมการทางานของคอมพิวเตอร์ โดยใช้ ภาษาเครื่องโดยตรงนั้นจึงทาได้ยาก จึงได้มีการพัฒนาตัวแปรภาษาเครื่องที่เรียกว่า โปรแกรมภาษาระดับสูงขึ้นมา หรือที่เรียกว่า High Level Languages โดยภาษาในระดับสูงเหล่านี้ จะมีลักษณะรูปแบบการเขียน (Syntax) ที่ทาให้เข้าใจได้ง่ายต่อการสื่อสารกับผู้พัฒนา และถูกออกแบบมาให้ ง่ายต่อการใช้งาน และจะเปลี่ยนคาสั่งจากผู้ใช้งาน ไปเป็นเป็นภาษาเครื่อง เพื่อที่จะควบคุมการทางานของคอมพิวเตอร์ต่อไป ตัวอย่างของโปรแกรมภาษา ระดับสูง ได้แก่ COBOL ใช้กันมากสาหรับโปรแกรมทางด้านธุรกิจ, Fortran ใช้กันมากสาหรับการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เพราะง่ายต่อการคานวณ, Pascal มีใช้กันทั่วไป แต่เน้นสาหรับการพัฒนาเครื่องมือสาหรับการเรียนการสอน, C & C++ ใช้ทั่วไป ปัจจุบันมีผู้เลือกที่จะใช้กัน อย่างแพร่หลาย, PROLOG เน้นหนักไปทางด้านงานประเภท AI และ JAVA ใช้ได้ทั่วไป ปัจจุบันเริ่มมีผู้หันมาสนใจกันมากและเพิ่มขึ้นอย่างรวดเร็ว คราวนี้ เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็ วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนาเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะ อยู่ในรูปแบบของ Source Program หรือ Source Code จากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทาการ Compile Source code หรือกล่าวง่ายๆ คือแปลง Source code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้น Complier ก็จะทาการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทางานใน Libraries ต่างๆ ที่จาเป็นต่อการใช้งาน แล้วนาไปไว้ใน หน่วยความจา แล้วเราก็จะสามารถ Run เพื่อดูผลของการทางานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทาการแก้ หรือที่เรียกกันใน ภาษาคอมพิวเตอร์ว่า การ Debug นั่นเอง ภาษา C เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา C มาเขียนเป็นคาสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคาสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คาจากัดความของคาว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สาหรับ Compiler ภาษา C ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borland การใช้งาน Compiler ทั้งสอง ตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษา C กันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา C แบบ ง่ายๆ กันก่อนกับ โปรแกรม Hello World #include main() { printf("Hello World!!!!! "); } บรรทัดแรก #include เป็นการบอกว่าให้ทาการรวม Header file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น header ที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จาเป็นจาก Header นั้นๆ ได้ อาทิเช่น
[[5519]]
รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา C จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้ Function main() ในการกาหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กาหนดขึ้นไว้ บรรทัดถัดมาจะเป็นเครื่องหมาย { ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด { และเครื่องหมายปิด } ตามลาดับ ภายใน Function main() จะมีคาสั่ง (Statement) printf("Hello World!!!!! "); ซึ่ง printf เป็น Function ในภาษา C ทาหน้าที่ให้โปรแกรม ทาการแสดงผลออกทางหน้าจอว่า Hello World!!!!! และทุกครั้ง ผู้พัฒนาจะต้องทาการจบคาสั่งหรือ Statement ด้วยเครื่องหมาย semi-colon ; ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้ // ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคาอธิบายโปรแกรม #include void main() { constant declarations; // การกาหนดค่าคงที่ ต่างๆ variable declarations; // การกาหนดตัวแปรต่างๆ executable statements; // คาสั่งการทางานของโปรแกรม } การอ่านข้อมูล
- 2. และการแสดงผล (Input & Output) รูปแบบการใช้งานฟังก์ชัน printf จะทาการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตาม ด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้ printf( const char *format [, argument]... ); สาหรับการนาข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะ เป็นฟังก์ชันสาหรับอ่านข้อมูลจากคีย์บอร์ด และจะนาข้อมูลที่ User ทาการพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่ เรียกว่า pointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กาหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้ scanf( const char *format [,argument]... );
ตัวแปร (Variables)
ตัวแปร (Variables) ตัวแปรจะเป็นชื่อที่ใช้ในการบอกจานวนหรือปริมาณ ซึ่งสามารถที่จะทาการเปลี่ยนแปลงจานวนได้ด้วยโปรแกรมคอมพิวเตอร์ การตั้งชื่อ ตัวแปร จะต้องตั้งชื่อให้แตกต่างไปจากชื่อของตัวแปรอื่นๆ ยกตัวอย่างชื่อของตัวแปร ได้แก่ x, y, peter, num_of_points และ streetnum เป็น ต้น โดยปกติการเขียนโปรแกรมที่ดี ควรจะตั้งชื่อตัวแปรให้สอดคล้องกับการทางานหรือหน้าที่ของตัวแปรนั้นๆ เพราะเมื่อถึงเวลาต้องมาทาการปรับปรุงแก้ไข โปรแกรม จะสามารถทาได้โดยไม่ยากนัก ในภาษา C หรือ C++ ได้มีกฏในการตั้งชื่อตัวแปรที่สามารถใช้งานได้ดังนี้ - ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษร - ชื่อ ตัวแปรจะประกอบไปด้วย ตัวอักษร ตัวแลข และ _ ได้เท่านั้น - ชื่อตัวแปรจะต้องไม่ใช่ชื่อ reserved word (ชื่อที่มีการจองไว้แล้ว) ตัวอย่างของชื่อตัวแปรที่ สามารถนามาใช้ตั้งชื่อได้ ได้แก่ length, days_in_year, DataSet1, Profit95, Pressure, first_one และตัวอย่างของชื่อ ที่ไม่สามารถ นามาใช้เป็นชื่อตัวแปรได้ ยกตัวอย่างเช่น day-in-year, 1data, int, first.val เป็นต้น reserved word (ชื่อที่มีการจองไว้แล้ว) Reserved words หรือตัวแปรที่ได้จองไว้แล้วนั้น จะประกอบไปด้วยตัวอักษรตัวเล็กทั้งหมด และจะมีความสาคัญสาหรับภาษา C++ และจะไม่นามาใช้ด้วยวัตถุประสงค์ อื่นๆ ตัวอย่างของ Reserved words ได้แก่ and, bool, break, case, catch, char, class, continue, default, delete, do, double, if , else, enum, export, extern เป็นต้น นอกจากนี้ในภาษา C หรือ C++ ชื่อตัวแปร ที่ประกอบไปด้วยอักษรเล็ก หรือใหญ่ ก็มีความ แตกต่างกัน หรือที่เรียกว่า Case sensitive ยกตัวอย่างเช่น “X’ และ ‘x’ เป็นตัวแปรต่างกัน ‘peter’ และ ‘Peter’ เป็นตัวแปรต่างกัน “bookno1’ และ ‘bookNo1’ เป็นตัวแปรต่างกัน “XTREME’ และ ‘xtreme’ เป็นตัวแปรต่างกัน “X1’ และ ‘x1’ เป็นตัวแปรต่างกัน “int’ และ ‘Int’ เป็นตัวแปรต่างกัน การกาหนดชนิดของตัวแปร (Declaration of Variables) ในภาษา C หรือ C++ (และโปรแกรมในภาษาอื่นๆ) ตัว แปรทุกตัวที่จะมีการเรียกใช้ในโปรแกรมจาเป็นต้องมีการกาหนดชนิดของตัวแปรนั้นๆ ก่อนที่จะทาการเรียกใช้ตัวแปร การกาหนดชนิดของตัวแปรมีวัตถุประสงค์ หลัก 2 ประการได้แก่ - เป็นการบอกชนิด และตั้งชื่อตัวแปรที่จะเรียกใช้ ชนิดของตัวแปรจะทาให้คอมไพเลอร์สามารถแปลคาสั่งได้อย่างถูกต้อง (ยกตัวอย่างเช่น ใน CPU คาสั่งที่ใช้ในการบวกตัวเลขจานวนเต็ม 2 จานวน ย่อมแตกต่างจากคาสั่งที่จะบวกจานวนจริง 2 จานวนเข้าด้วยกัน) - ชนิดของตัวแปร ยังเป็นบ่งบอก คอมไพเลอร์ให้ทราบว่าจะต้องจัดเตรียมเนื้อที่ให้กับตัวแปรตัวนั้นมากน้อยเท่าใด และจะจัดวางตัวแปรนั้นไว้แอดเดรส (Address) ไหนที่สามารถเรียกมาใช้ใน code ได้ สาหรับในบทความนี้จะพิจารณาชนิดตัวแปร 4 ชนิดที่ใช้กันมากได้แก่ int, float, bool และ char int ชนิดตัวแปรที่สามารถแทนค่าจานวน เต็มได้ทั้งบวกและลบ โดยปกติสาหรับคอมพิวเตอร์ทั่วไป คอมไพเลอร์ จะจองเนื้อที่ 2 ไบต์ สาหรับตัวแปรชนิด int จึงทาให้ค่าของตัวแปรมีค่าตั้งแต่ -32768 ถึง +32768 ตัวอย่างของค่า int ได้แก่ 123 -56 0 5645 เป็นต้น floatชนิดของตัวแปรที่เป็นตัวแทนของจานวนจริง หรือตัวเลขที่มีค่าทศนิยม ความ ละเอียดของตัวเลขหลังจุดทศนิยมขึ้นอยู่กับระบบคอมพิวเตอร์ โดยปกติแล้ว ตัวแปรชนิด float จะใช้เนื้อที่ 4 ไบต์ นั่นคือจะให้ความละเอียดของตัวเลขหลังจุด ทศนิยม 6 ตาแหน่ง และมีค่าอยู่ระหว่าง -1038 ถึง +1038 ตัวอย่างของค่า float ได้แก่ 16.315 -0.67 31.567 bool ชนิดของตัวแปรที่สามารถ เก็บค่าลอจิก จริง (True) หรือ เท็จ (False) ตัวแปรชนิดนี้ เป็นที่รู้จักกันอีกชื่อคือ ตัวแปรบูลีน (Boolean) ตัวอย่างของตัวแปรชนิด bool ได้แก่ 1 0 true false (เมื่อ 1 = true และ 0 = false) char เป็นชนิดตัวแปรที่เป็นตัวแทนของ ตัวอักษรเพียงตัวเดียว อาจเป็นตัวอักษร ตัวเลข หรือตัวอักขระ พิเศษ โดยปกติตัวแปรชนิดนี้จะใช้เนื้อที่เพียง 1 ไบต์ ซึ่งจะให้ตัวอักษรในรูปแบบที่แตกต่างกันได้ถึง 256 ค่า การเขียนรูปแบบของ char หลายๆ ตัว โดยปกติ จะอ้างอิงกับ American Standard Code for Information Interchange (ASCII) ตัวอย่างของตัวแปรชนิด char ได้แก่ '+' 'A' 'a' '*' '7' การกาหนดชนิดของตัวแปร สามารถเขียนได้อยู่ในรูป type identifier-list; เมื่อ type บ่งบอกชนิดของตัวแปร ส่วน identifier-list เป็น
myvar = num;
- 3. }
void main()
{
int myvar, myvar_before, myvar_after; //Local variable for this function
myvar = 5;
myvar_before = myvar; // myvar_before = 5;
test_locvar(100); // call function
myvar_after = myvar; // myvar_after = 5;
}
2) ตัวแปรส่วนกลาง (Gl