วิชาการเขียนโปรแกรมภาษาซี (ว32281)
วิชาการเขียนโปรแกรมภาษาซี (ว32281)
ภาษาเป็นตัวแทนการสื่อสารระหว่าง 2 สิ่งหรือหลายๆสิ่งเพื่อให้เกิดความหมายและความเข้าใจตรงกันเช่น มนุษย์ใช้คำพูดสื่อสารกันก็ถือว่าค าพูดนั้นเป็นภาษาหรืออาจใช้มือในการสื่อสารระหว่างคนที่เป็นใบ้พูดไม่ได้หรือแม้แต่ดนตรีก็ถือว่าเป็นภาษาชนิดหนึ่งที่เป็นสากลเพราะคนชาติใดมาฟังก็จะให้ความรู้สึกเดียวกันในทางคอมพิวเตอร์นั้นก็ต้องท าการพัฒนาภาษาที่จะสื่อสารระหว่างมนุษย์กับเครื่องคอมพิวเตอร์แต่
ด้วยเหตุที่เครื่องคอมพิวเตอร์เป็นอุปกรณ์อิเล็กทรอนิกส์ซึ่งมีเฉพาะวงจรการเปิดและปิดท าให้เครื่องคอมพิวเตอร์สื่อสารโดยใช้เลขฐานสองเท่านั้นเรียกภาษาที่ใช้เฉพาะเลขฐานสองในคอมพิวเตอร์ว่าภาษาเครื่อง(Machine Language) การที่มนุษย์จะเรียนรู้ภาษาเครื่องนั้นยากมากเพราะนอกจากจะต้องศึกษาถึงอุปกรณ์นั้นอีกด้วยซึ่งจะทำให้การใช้งานคอมพิวเตอร์เป็นเรื่องยุ่งยากจึงมีผู้คิดค้นภาษาคอมพิวเตอร์ขึ้นเพื่อทำหน้าที่ในการติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์กับมนุษย์โดยผู้ใช้จะสามารถติดต่อกับเครื่องคอมพิวเตอร์โดยผ่านทางภาษาคอมพิวเตอร์(Computer Programming Language)
ประเภทของภาษาเหล่านั้นการกำหนดว่าเป็นภาษาระดับต่ำหรือภาษาระดับสูงจะขึ้นอยู่กับภาษานั้นใกล้เคียงกับภาษาเครื่องคอมพิวเตอร์(ใกล้เคียงกับรหัส 0 และ 1 เรียกว่า ภาษาระดับต่ า) หรือว่าใกล้เคียงกับภาษาที่มนุษย์ใช้ (ใกล้เคียงกับภาษาอังกฤษเรียกว่า ภาษาระดับสูง)
1.1 ภาษาเครื่อง (Machine Language)
เป็นภาษาระดับตำ่ที่สุดเพราะใช้เลขฐานสองแทนข้อมูล (0 และ 1)และค าสั่งต่างๆทำให้การเขียนโปรแกรมยุ่งยากมาก ตัวอย่าง แสดงคำสั่งของภาษาเครื่องมีดังนี้ถ้าเราต้องการสั่งให้เครื่องท างานตามค าสั่ง 9 + 3 แสดงได้ดังนี้
การบวกแทนด้วยรหัส 10101010
เลข 9 เปลี่ยนเป็นเลขฐานสอง 00001001
เลข 3 เปลี่ยนเป็นเลขฐานสอง 00000011
ดังนั้น คำสั่ง 9 + 3 เขียนเป็นภาษาเครื่องได้ดังนี้
00001001 10101010 00000011 ---------> ภาษาเครื่อง
9 + 3 --------> ภาษามนุษย์และภาษาคอมพิวเตอร์
1.2 ภาษาแอสเซมบลี(Assembly Language)
ภาษาแอสเซมบลีใช้รหัสเป็นค าแทนค าสั่งภาษาเครื่องทำให้นักเขียนโปรแกรมสามารถเขียนโปรแกรมได้ง่ายขึ้นคือใช้สัญลักษณ์แทนเลข 0 และ 1 ของภาษาเครื่องซึ่งสัญลักษณ์ที่ใช้จะเป็นคำสั่งสั้นๆ ทำให้การเขียนโปรแกรมง่ายขึ้นกว่าภาษาเครื่อง แต่ก็ยังคงยุ่งยากมากในการจำคำสั่งทั้งหมด
ตัวอย่างที่ แสดงคำสั่งของภาษาแอสเซมบลีมีดังนี้ ถ้าเราต้องการสั่งให้เครื่องท างานตามค าสั่ง 9 + 3 แสดงได้ดังนี้
MOV AX, 9
MOV BX, 3
ADD AX, BX
2. ภาษาระดับสูง (High Level Language)
ภาษาระดับสูงจะใช้ค าในภาษาอังกฤษแทนคำสั่งต่างๆ รวมทั้งสามารถใช้นิพจน์ทางคณิตศาสตร์ได้ด้วยทำให้นักเขียนโปรแกรมสามารถใช้เวลามุ่งไปในการศึกษาถึงทางแก้ปัญหาเท่านั้นไม่ต้องเป็นกังวลว่าคอมพิวเตอร์จะทำงานอย่างไรอีกต่อไปภาษาระดับสูงนี้ถือว่าเป็นภาษายุคที่สาม (third-generation
language) ซึ่งทำให้เกิดการประมวลผลข้อมูลเพิ่มมากขึ้นและมีผู้หันมาใช้คอมพิวเตอร์กันมากขึ้น
เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง (Machine Language) ซึ่งประกอบขึ้นจากรหัสฐานสองเท่านั้น จึงต้องมีการใช้โปรแกรมตัวแปลภาษา
คอมพิวเตอร์ (Translator) ในการแปลภาษาคอมพิวเตอร์ภาษาต่างๆไปเป็นภาษาเครื่อง
ตัวแปลภาษาที่มีการใช้อยู่ในปัจจุบันสามารถแบ่งได้เป็น 3 ตัวดังนี้
1. แอสเซมเบลอ (Assembler)
เป็นตัวแปลภาษาแอสแซมบลีซึ่งเป็นภาษาระดับต่ำให้เป็นภาษาเครื่อง
2. คอมไพเลอร์(Compiler)
จะทำการแปลโปรแกรมทั้งโปรแกรมให้เป็นภาษาเครื่องทีเดียวการแปลนี้จะเป็นการตรวจสอบไวยากรณ์ของภาษาถ้ามีข้อผิดพลาดทางไวยากรณ์ของภาษาเกิดขึ้นก็จะแจ้งให้ทราบ
3. อินเตอร์พรีเตอร์(Interpreter)
จะทำการแปลโปรแกรมภาษาชั้นสูงทีละคำสั่ง ทีละบรรทัดระหว่างการแปลเกิดพบข้อผิดพลาดที่ บรรทัดใดก็จะฟ้องให้ทำการแก้ไขทีละบรรทัดนั้นทันที
ตัวแปรภาษาทุกตัวจะทำการแปรภาษาคอมพิวเตอร์ให้เป็นภาษาเครื่อง (ตัวเลข 0 กับ 1) เพื่อให้ เครื่องคอมพิวเตอร์เข้าใจและทำงานตามคำสั่งได้
ขั้นตอนนี้เป็นขั้นตอนที่สำคัญที่สุด ผู้เขียนโปรแกรมต้องวิเคราะห์ปัญหาให้ออกว่าจะต้องทำการเขียนโปรแกรม
เพื่อแก้ปัญหาอะไร และต้องวิเคราะห์ด้วยว่าข้อมูลที่จะนำเข้ามาใช้ในโปรแกรมมีอะไรบ้าง
คือ การนำปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 มาวางแผนอย่างเป็นขั้นตอนว่าจะต้องเขียนโปรแกรมเพื่อแก้ปัญหาอย่างไร การวางแผนอย่างเป็นขั้นตอนนี้ เรียกว่า อัลกอริทึม (Algorithm) ซึ่งแบ่งออกเป็น 2 รูปแบบคือ
1. ซูโดโค้ด ( Pseudocode)
คือการเขียนอัลกอริทึมโดยใช้ การอธิบายด้วยรหัสจำลองหรือรหัสเทียม
2. โฟลวชาร์ต ( Flowchart)
คือ การเขียนอัลกอริทึมโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมาย ตัวอย่างเช่น
เป็นการนำอัลกอริทึมจากขั้นตอนที่ 2 มาเขียนโปรแกรมให้ถูกต้องตามหลักของภาษาซี
เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการรัน (Run) โดยทดสอบป้อนค่า เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ที่ได้ว่าถูกต้องหรือไม่ ให้ทดสอบหลายๆ ครั้ง หากผลลัพธ์ถูกต้อง แสดงว่าโปรแกรมที่เขียนถูกต้องแล้ว หากผิดแสดงว่าโปรแกรมผิดพลาดผู้เขียนโปรแกรมต้องกลับไปตรวจสอบและแก้ไขใหม่อีกครั้ง
จุดประสงค์ที่สำคัญของการทำคู่มือ คือ ช่วยให้ผู้อื่นศึกษา ซอร์สโค้ด ของโปรแกรมได้ง่ายขึ้น การจัดทำคู่มือไม่มีกฎเกณฑ์ระบุไว้แน่นอน แต่ผู้เขียนโปรแกรมควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด
เรื่อง ขั้นตอนการพัฒนาโปรแกรม