SlideShare a Scribd company logo
1 of 3
Download to read offline
ภาษา C 
พื้นฐานโปรแกรมภาษา C 
ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ สานักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช) ฝึกฝนและ พัฒนาการเขียนโปรแกรมภาษา C Introduction to C Programming การพัฒนาโปรแกรมคอมพิวเตอร์ บางคนก็ว่ายาก บางคนก็ว่าเป็นเรื่องสนุก หลายคนบอกว่า ขอเป็นแค่ผู้ใช้สนุกที่สุด แต่จะมีซักกี่คนที่จะมีใจรักที่จะก้าวไป บนถนนแห่งการพัฒนาฝีมือและฝึกฝนการเขียนโปรแกรมด้วยตัวเอง เพื่อให้มีผู้ที่สนใจนาไปใช้งาน และเพิ่มประสิทธิภภาพ ในการทางาน และ ความสะดวกสบายๆ ต่างๆมากขึ้น ว่าไปแล้วนักโปรแกรมเมอร์เหล่านี้ ก็ไม่แตกต่างจากผู้ที่ปิดทองหลัง พระมากนัก เพราะหลายๆ โปรแกรมที่มีให้ใช้งานกันในปัจจุบัน จะมีใครทราบบ้างไหมว่า ผู้เขียนโปรแกรมเหล่านั้นมีใคร กันบ้าง ดังนั้น ผู้ที่คิดจะก้าวมาเป็นนักพัฒนาโปรแกรมมืออาชีพ คงต้องอาศัยใจรักที่จะอยากจะพัฒนา และฝึกฝนฝืมือใน การเป็นโปรแกมเมอร์มืออาชีพมาเป็นอันดับหนึ่ง สาหรับบทความนี้จะเริ่มต้นด้วยการสอนให้เข้าใจในหลักการพื้นฐาน ของการการพัฒนาโปรแกรมในภาษา C ความรู้และความเข้าใจที่จาเป็นต่อการเป็นโปรแกรมเมอร์มืออาชีพในอนาคต เรา ลองเริ่มมาเรียนรู้กันอย่างคร่าวๆ กันเลยล่ะกัน โดยผู้เขียนจะอธิบายเป็นตอนๆ ทั้งหมด 8 ตอนด้วยกันได้แก่ 1. พื้นฐาน โปรแกรมภาษา C (Introduction to C Programming) 2. การเขียนโปรแกรมทางเลือก (Selection Structures) 3. การเขียนโปรแกรมแบบ วนซ้า (Repetition & Loop) 4. ฟังก์ชัน และการเขียนโปรแกรม แยกเป็นโมดูล (Functions & Modular Programming) 5. ตารางอาเรย์ (Arrays) 6. ตัวแปรพอย เตอร์ (Pointers) 7. ตัวแปรสตริง (String) 8. โครงสร้างสตักเจอร์ (Structure) 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; // คาสั่งการทางานของโปรแกรม } การอ่านข้อมูลและการแสดงผล (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 เป็นการกาหนดชื่อของตัวแปร ซึ่งอาจจะมีมากกว่า 1 ตัวแปร และจะแยกตัวแปรแต่ละตัวออก จากกันด้วยเครื่องหมาย comma (,) ตัวอย่าง รูปแบบของการกาหนดชนิดของตัวแปร

More Related Content

What's hot

โครงสร้างภาษาซี
โครงสร้างภาษาซีโครงสร้างภาษาซี
โครงสร้างภาษาซีPatipat04
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
บทที่1 พื้นฐานโปรแกรมภาษาซี
บทที่1 พื้นฐานโปรแกรมภาษาซีบทที่1 พื้นฐานโปรแกรมภาษาซี
บทที่1 พื้นฐานโปรแกรมภาษาซีKomkai Pawuttanon
 
ประวัติภาษา C
ประวัติภาษา Cประวัติภาษา C
ประวัติภาษา CFair Kung Nattaput
 
โครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีโครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีณัฐพล บัวพันธ์
 
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)Visaitus Palasak
 
ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้นApinyaphorn
 
บทที่4 เมธอด (METHOD)
บทที่4 เมธอด (METHOD)บทที่4 เมธอด (METHOD)
บทที่4 เมธอด (METHOD)N'Name Phuthiphong
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1Ja Phenpitcha
 

What's hot (17)

โครงสร้างภาษาซี
โครงสร้างภาษาซีโครงสร้างภาษาซี
โครงสร้างภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
บทที่1 พื้นฐานโปรแกรมภาษาซี
บทที่1 พื้นฐานโปรแกรมภาษาซีบทที่1 พื้นฐานโปรแกรมภาษาซี
บทที่1 พื้นฐานโปรแกรมภาษาซี
 
Chapter1
Chapter1Chapter1
Chapter1
 
Computer
ComputerComputer
Computer
 
ประวัติภาษา C
ประวัติภาษา Cประวัติภาษา C
ประวัติภาษา C
 
Python programmingggg
Python programminggggPython programmingggg
Python programmingggg
 
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอนโครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
 
Lab Computer Programming 1
Lab Computer Programming 1Lab Computer Programming 1
Lab Computer Programming 1
 
งานจารทรงศักดิ์
งานจารทรงศักดิ์งานจารทรงศักดิ์
งานจารทรงศักดิ์
 
โครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีโครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซี
 
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
 
Gnewvb01 090401013958-phpapp01
Gnewvb01 090401013958-phpapp01Gnewvb01 090401013958-phpapp01
Gnewvb01 090401013958-phpapp01
 
ภาษา C เบื้องต้น
ภาษา C เบื้องต้นภาษา C เบื้องต้น
ภาษา C เบื้องต้น
 
บทที่4 เมธอด (METHOD)
บทที่4 เมธอด (METHOD)บทที่4 เมธอด (METHOD)
บทที่4 เมธอด (METHOD)
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น 1
 
Learn 2
Learn 2Learn 2
Learn 2
 

Similar to ภาษา C

การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีchoco336
 
3 software deverlop
3 software deverlop3 software deverlop
3 software deverlopPor Kung
 
หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1SubLt Masu
 
2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซีmansuang1978
 
ประวัติภาษาซี
ประวัติภาษาซีประวัติภาษาซี
ประวัติภาษาซีHathaichon Nonruongrit
 
โปรแกรม
โปรแกรมโปรแกรม
โปรแกรมthanapon51105
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาAeew Autaporn
 
Algorithm flow chart
Algorithm flow chartAlgorithm flow chart
Algorithm flow chartbbgunner47
 
ความหมายของโปรแกรมคอมพิวเตอร์
ความหมายของโปรแกรมคอมพิวเตอร์ความหมายของโปรแกรมคอมพิวเตอร์
ความหมายของโปรแกรมคอมพิวเตอร์Onrutai Intanin
 
การพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาการพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาwinewic199
 
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2การพัฒนาโปรแกรม วิชญา เลขที่ 26.2
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2winewic199
 
โปรแกรมคอม
โปรแกรมคอมโปรแกรมคอม
โปรแกรมคอมOnrutai Intanin
 
โปรแกรมคอม
โปรแกรมคอมโปรแกรมคอม
โปรแกรมคอมOnrutai Intanin
 

Similar to ภาษา C (20)

การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
การเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซีการเขียนโปรแกรมภาษาซี
การเขียนโปรแกรมภาษาซี
 
3 software deverlop
3 software deverlop3 software deverlop
3 software deverlop
 
หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1หน่วยการเรียนรู้ที่ 1
หน่วยการเรียนรู้ที่ 1
 
Know 1 1
Know 1 1Know 1 1
Know 1 1
 
2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี2. โครงสร้างภาษาซี
2. โครงสร้างภาษาซี
 
ประวัติภาษาซี
ประวัติภาษาซีประวัติภาษาซี
ประวัติภาษาซี
 
โปรแกรม
โปรแกรมโปรแกรม
โปรแกรม
 
Pbl2
Pbl2Pbl2
Pbl2
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
สอนภาษาc
สอนภาษาcสอนภาษาc
สอนภาษาc
 
Algorithm flow chart
Algorithm flow chartAlgorithm flow chart
Algorithm flow chart
 
ความหมายของโปรแกรมคอมพิวเตอร์
ความหมายของโปรแกรมคอมพิวเตอร์ความหมายของโปรแกรมคอมพิวเตอร์
ความหมายของโปรแกรมคอมพิวเตอร์
 
การพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาการพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญา
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
 
Learn 1
Learn 1Learn 1
Learn 1
 
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2การพัฒนาโปรแกรม วิชญา เลขที่ 26.2
การพัฒนาโปรแกรม วิชญา เลขที่ 26.2
 
โปรแกรมคอม
โปรแกรมคอมโปรแกรมคอม
โปรแกรมคอม
 
โปรแกรมคอม
โปรแกรมคอมโปรแกรมคอม
โปรแกรมคอม
 

ภาษา C

  • 1. ภาษา C พื้นฐานโปรแกรมภาษา C ดร. จันทร์จิรา สินทนะโยธิน, วิศรุต พลสิทธิ สานักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (สวทช) ฝึกฝนและ พัฒนาการเขียนโปรแกรมภาษา C Introduction to C Programming การพัฒนาโปรแกรมคอมพิวเตอร์ บางคนก็ว่ายาก บางคนก็ว่าเป็นเรื่องสนุก หลายคนบอกว่า ขอเป็นแค่ผู้ใช้สนุกที่สุด แต่จะมีซักกี่คนที่จะมีใจรักที่จะก้าวไป บนถนนแห่งการพัฒนาฝีมือและฝึกฝนการเขียนโปรแกรมด้วยตัวเอง เพื่อให้มีผู้ที่สนใจนาไปใช้งาน และเพิ่มประสิทธิภภาพ ในการทางาน และ ความสะดวกสบายๆ ต่างๆมากขึ้น ว่าไปแล้วนักโปรแกรมเมอร์เหล่านี้ ก็ไม่แตกต่างจากผู้ที่ปิดทองหลัง พระมากนัก เพราะหลายๆ โปรแกรมที่มีให้ใช้งานกันในปัจจุบัน จะมีใครทราบบ้างไหมว่า ผู้เขียนโปรแกรมเหล่านั้นมีใคร กันบ้าง ดังนั้น ผู้ที่คิดจะก้าวมาเป็นนักพัฒนาโปรแกรมมืออาชีพ คงต้องอาศัยใจรักที่จะอยากจะพัฒนา และฝึกฝนฝืมือใน การเป็นโปรแกมเมอร์มืออาชีพมาเป็นอันดับหนึ่ง สาหรับบทความนี้จะเริ่มต้นด้วยการสอนให้เข้าใจในหลักการพื้นฐาน ของการการพัฒนาโปรแกรมในภาษา C ความรู้และความเข้าใจที่จาเป็นต่อการเป็นโปรแกรมเมอร์มืออาชีพในอนาคต เรา ลองเริ่มมาเรียนรู้กันอย่างคร่าวๆ กันเลยล่ะกัน โดยผู้เขียนจะอธิบายเป็นตอนๆ ทั้งหมด 8 ตอนด้วยกันได้แก่ 1. พื้นฐาน โปรแกรมภาษา C (Introduction to C Programming) 2. การเขียนโปรแกรมทางเลือก (Selection Structures) 3. การเขียนโปรแกรมแบบ วนซ้า (Repetition & Loop) 4. ฟังก์ชัน และการเขียนโปรแกรม แยกเป็นโมดูล (Functions & Modular Programming) 5. ตารางอาเรย์ (Arrays) 6. ตัวแปรพอย เตอร์ (Pointers) 7. ตัวแปรสตริง (String) 8. โครงสร้างสตักเจอร์ (Structure) 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 ต่างๆ ที่
  • 2. จาเป็นต่อการใช้งาน แล้วนาไปไว้ในหน่วยความจา แล้วเราก็จะสามารถ 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; // คาสั่งการทางานของโปรแกรม } การอ่านข้อมูลและการแสดงผล (Input & Output) รูปแบบการใช้งานฟังก์ชัน printf จะทาการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้ printf( const char *format [, argument]... ); สาหรับการนา ข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanf ซึ่งจะเป็นฟังก์ชันสาหรับอ่านข้อมูลจากคีย์บอร์ด และจะนาข้อมูลที่ User ทา การพิมพ์ไปเก็บไว้ใน argument โดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่า pointer (รายละเอียดจะได้ กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กาหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้ scanf( const char *format [,argument]... ); ตัวแปร (Variables) ตัวแปร (Variables) ตัวแปรจะเป็นชื่อที่ใช้ในการบอกจานวนหรือปริมาณ ซึ่งสามารถที่จะทาการเปลี่ยนแปลงจานวน ได้ด้วยโปรแกรมคอมพิวเตอร์ การตั้งชื่อตัวแปร จะต้องตั้งชื่อให้แตกต่างไปจากชื่อของตัวแปรอื่นๆ ยกตัวอย่างชื่อของตัว
  • 3. แปร ได้แก่ 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 เป็นการกาหนดชื่อของตัวแปร ซึ่งอาจจะมีมากกว่า 1 ตัวแปร และจะแยกตัวแปรแต่ละตัวออก จากกันด้วยเครื่องหมาย comma (,) ตัวอย่าง รูปแบบของการกาหนดชนิดของตัวแปร