280 likes | 534 Views
วิชาการเขียนโปรแกรมภาษาซี. ครูทิตยา พล ขีดขีน กลุ่มสาระการเรียนรู้การงานอาชีพและเทคโนโลยี โรงเรียนทรายทองวิทยา อำเภอโพนทราย จังหวัดร้อยเอ็ด สพ ม. เขต 27. หน่วยที่ 1 ภาษาคอมพิวเตอร์และการโปรแกรม. สาระสำคัญ
E N D
วิชาการเขียนโปรแกรมภาษาซีวิชาการเขียนโปรแกรมภาษาซี ครูทิตยา พลขีดขีน กลุ่มสาระการเรียนรู้การงานอาชีพและเทคโนโลยี โรงเรียนทรายทองวิทยา อำเภอโพนทราย จังหวัดร้อยเอ็ด สพม. เขต 27
หน่วยที่ 1 ภาษาคอมพิวเตอร์และการโปรแกรม • สาระสำคัญ เครื่องคอมพิวเตอร์เป็นอุปกรณ์ทางอิเล็กทรอนิกส์ สิ่งที่คอมพิวเตอร์เข้าใจคือสัญญาณทางไฟฟ้า แต่ในการเขียนโปรแกรมเพื่อให้คอมพิวเตอร์ทำงานนั้นมีภาษาให้เลือกใช้หลายภาษา นักเรียนจะต้องเข้าใจว่าเหตุใดคอมพิวเตอร์จึงสามารถประมวลผลภาษาโปรแกรมได้ และโปรแกรมที่ได้ถูกสร้างขึ้นก็มีหลายประเภทขึ้นอยู่กับการประยุกต์มาใช้งานกับเครื่องคอมพิวเตอร์ สำหรับโปรแกรมที่นำมาใช้ในการเรียนนี้คือ โปรแกรม DEV C++ ซึ่งนักเรียนจะต้องเข้าใจขั้นตอนในการพัฒนาโปรแกรมด้วยภาษาซีให้สามารถประมวลผลตามต้องการได้
จุดประสงค์ • มีความรู้ความเข้าใจเกี่ยวกับความหมายของภาษาคอมพิวเตอร์ • มีความรู้ความเข้าใจเกี่ยวกับการแปลงภาษาคอมพิวเตอร์ • มีความรู้ความเข้าใจเกี่ยวกับประเภทของโปรแกรม • มีความรู้ความสามารถในขั้นตอนการพัฒนาโปรแกรม
เนื้อหา • โปรแกรมภาษา • ประเภทของโปรแกรม • ขั้นตอนการพัฒนาโปรแกรม • ขั้นตอนการพัฒนาโปรแกรมด้วย DEV C++ • แบบฝึกหัดหลังเรียน
คอมพิวเตอร์ (Computer) • ตามพจนานุกรมฉบับราชบัณฑิตยสถาน พ.ศ. 2552 หมายถึง “เครื่องอิเล็กทรอนิกส์แบบอัตโนมัติ ทำหน้าที่เสหมือนสมองกล ให้สำหรับแก้ปัญหาต่างๆ ทั้งที่ง่ายและซับซ้อน โดยวิธีทางคณิตศาสตร์ “ • ตัวเครื่องคอมพิวเตอร์ที่ประกอบด้วยวงจรทางไฟฟ้าอิเล็กทรอนิกส์จะเรียกว่าฮาร์ดแวร์ (Hardware) โดยส่วนประกอบที่สำคัญได้แก่ หน่วยรับข้อมูล หน่วยประมวลผล หน่วยแสดงผล และหน่วยเก็บข้อมูล
ภาษาคอมพิวเตอร์ (Computer) • ภาษาที่คอมพิวเตอร์เข้าใจ คือ ภาษาเครื่อง (Machine Language) ซึ่งเป็นรหัสเลขฐานสอง • รหัสนีโมนิก(mnemonic) เป็นอักษรภาษาอังกฤษใช้แทนคำสั่งรหัสเลขฐานสอง • ภาษาคอมพิวเตอร์ที่ใช้รหัสนีโมนิกในการเขียนโปรแกรมเรียกว่า ภาษาแอสแซมบลี (Assembly Language) • เป็นภาษาที่ทำงานได้เร็ว เพราะเข้าถึงหน่วยประมวลผลได้เร็วที่สุดเป็น เราเรียกภาษานี้ว่า ภาษาระดับต่ำ (Low – Level Language)
ภาษาระดับสูง (High– Level Language) • มีการพัฒนาภาษาโปรแกรมเป็นภาษาระดับสูงโดยใช้คำภาษาอังกฤษมาสั่งงานและควบคุมคอมพิวเตอร์ • เช่น BASIC, COBOL,FORTRAN และ ภาษา C
ตัวอย่าง ถ้าหากต้องการเขียนโปรแกรมภาษา C โดยสั่งให้พิมพ์คำว่า “Test” ซึ่งใช้คำสั่งที่เป็นคำภาษาอังกฤษเข้าใจง่ายๆ ดังนี้ • #include<stdio.h> • main() { • Printf(“Test”); } เมื่อต้องการให้คอมพิวเตอร์ทำงานจะต้องนำตัวแปลภาษาซี หรือ ซีคอมไพล์เลอร์มาแปลงคำภาษาอังกฤษด้านบนให้เป็นเลขฐานสองที่คอมพิวเตอร์เข้าใจอีกทีหนึ่ง
1.โปรแกรมภาษา รหัสภาษาเครื่อง (Executable Program) โปรแกรมต้นฉบับ(Source Program) โปรแกรมแปลภาษา ขั้นตอนการแปลภาษาแอสเซมบลีเป็นภาษาเครื่อง โปรแกรมต้นฉบับ(Source Program) โปรแกรมแอสเซมเบอร์(Assembler) รหัสภาษาเครื่อง
สำหรับการเขียนโปรแกรมด้วยภาษาระดับสูงจะมีวิธีในการแปลสองประเภทคือ การแปลคำสั่งทีละคำสั่งให้เครื่องทำงานทีละคำสั่ง จากนั้นจึงแปลคำสั่งบรรทัดต่อไปเช่น การเขียนโปรแกรมด้วยภาษาเบสิก ตัวแปลภาษาประเภทนี้เรียกว่า อินเตอร์พรีเตอร์ (Interpreter) การทำงานของตัวอินเตอร์พรีเตอร์นี้จะแปลความหมายของคำสั่งทีละคำสั่ง ถ้าไม่พบข้อผิดพลาดเครื่องจะทำคำสั่งที่แปลได้ แต่ถ้าพบข้อผิดพลาดจะหยุดทำงานและแจ้งข้อผิดพลาดออกมา
การแปลคำสั่งอีกแบบหนึ่งเรียกว่า คอมไพเลอร์ (Compiler) โดยมันจะมองโปรแกรมต้นฉบับทั้งหมด และแปลให้เป็นรหัสภาษาเครื่อง ถ้าพบข้อผิดพลาดก็จะแจ้งออกมา ทำให้โปรแกรมทำงานได้เร็ว เพราะเครื่องไม่ต้องแปลอีกเมื่อจะทำคำสั่งถัดไป สำหรับตัวแปรภาษาเบสิกรุ่นใหม่ๆ จะทำการแปลแบบคอมไพเลอร์ เช่น เทอร์โบเบสิก หรือวิชวลเบสิก เป็นต้น
อินเตอร์พรีเตอร์ รหัสภาษาเครื่อง (Executable Program) โปรแกรมต้นฉบับ(Source Program) Interpreter แปลทีละบรรทัด คอมไพเลอร์ โปรแกรมต้นฉบับ(Source Program) รหัสภาษาเครื่อง Compiler แปลทั้งโปรแกรม
ภาษาซี • เป็นภาษาโปรแกรมที่โปรแกรมเมอร์นิยมใช้กันมาก เนื่องจากเป็นภาษาที่มีความเร็วในการทำงานสูงใกล้เคียงกับภาษาเครื่อง มีโครงสร้างที่ชัดเจน เข้าใจง่าย และสามารถเขียนโปรแกรมเพื่อติดต่อกับฮาร์ดแวร์ของเครื่องคอมพิวเตอร์ได้เป็นอย่างดี • เกิดขึ้นที่ห้องปฏิบัติการเบลล์เล็บ (Bell Labs) นายเดนนีสริทซี (Dennis Ritchi ) เป็นผู้พัฒนาขึ้น การศึกษาภาษาซียังถือว่าเป็นพื้นฐานในการศึกษาภาษาใหม่ๆ ได้ • ข้อเสีย คำสั่งไม่เหมือนคำศัพท์ภาษาอังกฤษโดยตรง จึงอาจจะจดจำยากขึ้น และวิธีการใช้คำสั่งจะมีกฎเกณฑ์รายละเอียดจำนวนมาก จึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
2. ประเภทของโปรแกรม • โปรแกรมระบบปฏิบัติการ ทำหน้าที่คอยดูแลระบบ ติดต่อกับฮาร์ดแวร์ส่วนต่างๆ เช่น Dos (Operating System),UNIX,Windows • โปรแกรมเอนกประสงค์ (Utility Program) ช่วยอำนวยความสะดวกกับผู้ใช้และเป็นเครื่องมือแก้ปัญหาหรือวิเคราะห์ปัญหารวมทั้งตรวจสอบระบบ เช่น McAfee Virus Scan,Winzip • โปรแกรมประยุกต์ หรือ ซอฟต์แวร์สำเร็จรูป (Package Software) เป็นโปรแกรมที่พัฒนาขึ้นมาสำหรับงานเฉพาะด้าน เช่น เกม ,ดาต้าเบส,กราฟฟิก,อินเทอร์เน็ต ,ประมวลผลคำ
3.ขั้นตอนการพัฒนาโปรแกรม3.ขั้นตอนการพัฒนาโปรแกรม • กำหนดและวิเคราะห์ปัญหา (Problem Definition and Problem Analysis) • เขียนฝังงานและซูโดโค้ด (Pseudocoding) • เขียนโปรแกรม (Programming) • ทดสอบและแก้ไขโปรแกรม (Program Testingand Debugging) • ทำเอกสารและบำรุงรักษาโปรแกรม (Program Documentationand Maintenance)
1. การกำหนดและวิเคราะห์ปัญหา • กำหนดขอบเขตของปัญหา • กำหนดลักษณะของข้อมูลเข้าและออกจากระบบ (Input/Output Specification) • กำหนดวิธีการประมวลผล (Process Specification)
ถ้าหากต้องการออกแบบโปรแกรมให้คอมพิวเตอร์รับค่าข้อมูล 3 ค่า และแสดงค่าเฉลี่ยทางจอภาพ เราอาจกำหนดและวิเคราะห์ปัญหาได้ดังนี้ • 1. รับข้อมูลจากคีย์บอร์ด • 1.1 รับข้อมูลเฉพาะที่เป็นตัวเลขมาเก็บในตัวแปร • 1.2 ถ้าเท่ากับ 0 ให้รับใหม่ • 2. หาค่าเฉลี่ย • 2.1 รวมค่าทุกค่าที่รับมาเข้าด้วยกัน • 2.2 นำค่ารวมที่ได้หารด้วย 3 • 2.3 นำค่าผลลัพธ์ไปเก็บในตัวแปร • 3. แสดงผลลัพธ์ทางหน้าจอ • 3.1 แสดงค่าว่าค่าเฉลี่ยเท่ากับ • 3.2 แสดงผลลัพธ์โดยมี่ทศนิยมสองตำแหน่ง
นำเข้าข้อมูล ประมวลผล นำข้อมูลออก รับข้อมูลตัวที่ 1 รับข้อมูลตัวที่ 2 รับข้อมูลตัวที่ 3 อ่านค่าเฉพาะที่เป็นตัวเลข 3 ตัว นำตัวเลขทั้งสามตัวมารวมกัน นำผลรวมมาหารด้วย 3 แสดงค่าเฉลี่ย ทศนิยมสองตำแหน่ง
2.การเขียนผังงานและซูโดโค้ด2.การเขียนผังงานและซูโดโค้ด • เขียนลำดับขั้นตอนการทำงานของโปรแกรมที่เรียกว่า อัลกอริทึม (Algorithm) ซึ่งแสดงขั้นตอนการแก้ปัญหา โดยใช้ประโยคที่ชัดเจนไม่คลุมเครือ และมีรายละเอียดการทำงานพอสมควร เพียงพอที่จะนำไปเขียนเป็นโปรแกรมให้ทำงานจริง อาจเขียนให้อยู่ในรูปของรหัสจำลองหรือ ซูโดโค้ด (Pseudo-code) หรือเขียนเป็นผังงาน (Flowchart) ก็ได้ • (Pseudo-code) เป็นคำอธิบายขั้นตอนการทำงานของโปรแกรม เป็นคำย่อ ไม่มีรูปแบบเฉพาะตัว • ผังงาน (Flowchart) จะใช้สัญลักษณ์ต่างๆ แทนการทำงานและทิศทางของโปรแกรม
3.การเขียนโปรแกรม • เขียนเป็นโปรแกรมเพื่อให้คอมพิวเตอร์สามารถประมวลผลได้ โดยเปลี่ยนขั้นตอนการทำงานให้อยู่ในรูปรหัสภาษาคอมพิวเตอร์ การเขียนโปรแกรมต้องเขียนตามภาษาที่คอมพิวเตอร์เข้าใจโดยอาจใช้ภาษาระดับสูง หรือ ระดับต่ำ ซึ่งสามารถเลือกได้หลายภาษา การเขียนโปรแกรมแต่ละภาษาจะต้องทำตามหลักไวยากรณ์ (Syntax) ที่กำหนดไว้ในภาษานั้น นอกจากนี้การเลือกใช้ภาษาจะต้องพิจารณาถึงความถนัดของผู้เขียนโปรแกรมด้วย
4. การทดสอบและแก้ไขโปรแกรม • หลังจากเขียนโปรแกรมจะต้องทดสอบความถูกต้องของโปรแกรมที่เขียนขึ้น หาจุดผิดพลาดของโปรแกรมว่ามีหรือไม่ และตรวจสอบจนไม่พบข้อผิดอีก • จุดผิดพลาดของโปรแกรม เรียกว่า บัก (Bug) • การแก้ไขข้อผิดพลาดให้ถูกต้อง เรียกว่า ดีบัก (Debug) • ข้อผิดพลาดจากการเขียนโปรแกรมมี 2 ประเภท • 1. เขียนคำสั่งไม่ถูกต้องตามหลักการเขียนโปรแกรมภาษานั้นๆ เรียกว่า Syntax Error หรือ Coding Error • 2. ข้อผิดพลาดทางตรรก หรือ Logical Errorเป็นข้อผิดพลาดที่โปรแกรมทำงานได้ แต่ผลลัพธ์ออกมาไม่ถูกต้อง
5. ทำเอกสารและบำรุงรักษาโปรแกรม • ขั้นตอนนี้ทำให้ผู้ใช้สามารถใช้งานโปรแกรมได้อย่างมีประสิทธิภาพ และสะดวกในการตรวจสอบข้อผิดพลาดโดยเขียนเป็นเอกสารประกอบโปรแกรมขึ้นมา โดยทั่วไปแล้วแบ่งออกเป็นสองประเภท คือ • 1. คู่มือการใช้ หรือ User Document หรือ User Guide ซึ่งจะอธิบายการใช้โปรแกรม • 2. คู่มือโปรแกรมเมอร์ หรือ Program Document หรือ Technical Reference ซึ่งจะอำนวยความสะดวกในการแก้ไขโปรแกรม และพัฒนาโปรแกรมในอนาคต โดยจะมีรายละเอียดต่างๆ เกี่ยวกับโปรแกรม เช่น ชื่อโปรแกรม การับข้อมูล การพิมพ์ผลลัพธ์ขั้นตอนต่างๆ ในโปรแกรมเป็นต้น ส่วนการบำรุงรักษาโปรแกรม (Maintenance) เป็นการที่ผู้เขียนโปรแกรมจะต้องคอยตรวจสอบการใช้โปรแกรมจริง เพื่อแก้ไขข้อผิดพลาดซึ่งอาจเกิดขึ้นในภายหลัง รวมทั้งพัฒนาโปรแกรมให้ทันสมัยอยู่เสมอเมื่อเวลาผ่านไป
4.ขั้นตอนการพัฒนาโปรแกรมด้วย DEV C++ • การเขียนโปรแกรมด้วย DEV C++ มี 3 ขั้นตอนดังนี้ • 1. เขียนโปรแกรมต้นฉบับด้วยโปรแกรม DEV C++ • 2. ใช้คอมไพเลอร์แปลภาษาซี • ทำการเชื่อมโยงไฟล์
ขบวนการทั้งสามชั้นตอนสามารถทำได้โดย DEV C++ เพียงตัวเดียว เนื่องจากโปรแกรมนี้ได้รวมโปรแกรมพัฒนางาน หรือ ไอดีอี (Integrate Development Environment: IDE) เอาไว้ด้วย ทำให้สามารถเขียนโปรแกรมต้นฉบับได้ง่ายขึ้น เมื่อเขียนโปรแกรมต้นฉบับแล้ว จะต้องจัดเก็บเป็นไฟล์ที่มีนามสกุลเป็น .C จากนั้นให้คอมไฟล์โปรแกรมก็จะได้ไฟล์ออบเจ็กต์โค้ดที่มีนามสกุลเป็น .OBJ เมื่อทำการเชื่อมโยงไฟล์เข้ากับไลบรารีคำสั่งด้วย Link จะได้ไฟล์ที่มีนามสกุลเป็น.EXE ที่พร้อมทำงานได้บนเครื่องคอมพิวเตอร์