Please enable JavaScript.
Coggle requires JavaScript to display documents.
การเขียนโปรแกรมภาษาขั้นพื้นฐาน (การเขียนโปรแกรมเบื้องต้นด้วยภาษาซี…
การเขียนโปรแกรมภาษาขั้นพื้นฐาน
การเขียนโปรแกรมเบื้องต้นด้วยภาษาซี
ประวัติความเป็นมาของภาษาซี
ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์
ข้อดีข้อเสียของภาษาซี
เป็นภาษาคอมพิวเตอร์ที่มีการพัฒนาขึ้นใช้งานเพื่อเป็นภาษามาตรฐานที่ไม่ขึ้นกับโปรแกรมจัดระบบงานและไม่ขึ้นกับฮาร์ดแวร์
เป็นภาษาคอมพิวเตอร์ที่อาศัยหลักการที่เรียกว่า "โปรแกรมโครงสร้าง" จึงเป็นภาษาที่เหมาะกับการพัฒนาโปรแกรมระบบ
เป็นคอมไพเลอร์ที่มีประสิทธิภาพสูง ให้รหัสออบเจ็กต์สั้น ทำงานได้รวดเร็ว เหมาะกับงานที่ต้องการ ความรวดเร็วเป็นสำคัญ
มีความคล่องตัวคล้ายภาษาแอสแซมบลี ภาษาซีสามารถเขียนแทนภาษาแอสแซมบลีได้ดี ค้นหาที่ผิดหรือ แก้โปรแกรมได้ง่าย ภาษาซีจึงเป็นภาษาระดับสูงที่ทำงานเหมือนภาษาระดับต่ำ
มีความคล่องตัวที่จะประยุกต์เข้ากับงานต่างๆ ได้เป็นอย่างดี การพัฒนาโปรแกรม เช่น เวิร์ดโพรเซสซิ่ง สเปรดชีต ดาตาเบส ฯลฯ มักใช้ภาษาซีเป็นภาษาสำหรับการพัฒนา
เป็นภาษาที่มีอยู่บนเกือบทุกโปรแกรมจัดระบบงาน มีในเครื่องไมโครคอมพิวเตอร์ตั้งแต่ 8 บิต ไปจนถึง 32 บิต เครื่องมินิคอมพิวเตอร์ และเมนเฟรม
เป็นภาษาที่รวมข้อดีเด่นในเรื่องการพัฒนา จนทำให้ป็นภาษาที่มีผู้สนใจมากมายที่จะเรียนรู้หลักการของภาษา และวิธีการเขียนโปรแกรม ตลอดจนการพัฒนางานบนภาษานี้
ขั้นตอนการพัฒนาโปรแกรมภาษาซี
ขั้นตอนที่ 3 เชื่อมโยงโปรแกรม (link)
การเขียนโปรแกรมภาษาซีนั้นผู้เขียนโปรแกรมไม่จำเป็นต้องเขียนคำสั่งต่างๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชันมาตรฐานให้ผู้เขียนโปรแกรมสามารถเรียกใช้งานได้ เช่น การเขียนโปรแกรมแสดงข้อความ “Kritsada” ออกทางหน้าจอ ผู้เขียนโปรแกรมสามารถเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่น มาตรฐานของภาษาซีมาใช้งานได้ โดยส่วนการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานต่าง ๆ จะถูกจัดเก็บอยู่ในเฮดเดอร์ไฟล์แต่ละตัว แตกต่างกันไปตามลักษณะการใช้งาน ด้วยเหตุนี้ภาษาเครื่องที่ได้จากขั้นตอนที่ 2 จึงยังไม่สามารถนำไปใช้งานได้ แต่ต้องนำมาเชื่อมโยงเข้ากับ library ก่อน ซึ่งผลจากการเชื่อมโยงจะทำให้ได้ executable program (ไฟล์นามสกุล.exe เช่น work.exe) ที่สามารถนำไปใช้งานได้
ขั้นตอนที่ 2 คอมไพล์โปรแกรม (compile)
นำ source code จากขั้นตอนที่ 1 มาทำการคอมไพล์เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ source code ว่าเกิดข้อผิดพลาดหรือไม่หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรมและทำการคอมไพล์โปรแกรมใหม่ อีกครั้ง หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลไฟล์ source code จากภาษาซีไปเป็นภาษาเครื่อง (ไฟล์นามสกุล .obj) เช่น ถ้าไฟล์ source code ชื่อ work.c ก็จะถูกแปลไปเป็นไฟล์ work.obj ซึ่งเก็บภาษาเครื่องไว้เป็นต้น
ขั้นตอนที่ 4 ประมวลผล (run)
เมื่อนำ executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะได้ผลลัพธ์ (output) ของโปรแกรมออกมา
ขั้นตอนที่ 1 เขียนโปรแกรม (source code)
ใช้ editor เขียนโปรแกรมภาษาซีและทำการบันทึกไฟล์ให้มีนามสกุลเป็น .c เช่น work.c เป็นต้น editor คือ โปรแกรมที่ใช้สำหรับการเขียนโปรแกรม โดยตัวอย่างของ editor ที่นิยมนำมาใช้ในการเขียนโปรแกรมได้แก่ Notepad, Edit ของ Dos, TextPad, Dev C++ และ EditPlus เป็นต้น ผู้เขียนโปรแกรมสามารถเลือกใช้โปรแกรมใดในการเรียนโปรแกรมก็ได้ แล้วแต่ความถนัดของแต่ละบุคคล
กฏพื้นฐานของภาษาซี
เครื่องหมายปีกกาเปิดเป็นสัญลักษณ์แสดงการเริ่มต้นการทำงานและเครื่องหมายปีกกาปิดเป็นสัญลักษณ์แสดงการสิ้นสุดการทำงาน
การเลือกใช้ฟังก์ชันพื้นฐานต่างๆของภาษาจะต้องรู้ว่าอยู่ไหนโมดุลข้ออะไรจะต้องเขียนอยู่บนสุดของโปรแกรม
คำสั่งแต่ละคำสั่งจะต้องเปิดด้วยเครื่องหมายSemicolon (;)เสมอ
การใช้ตัวอักษรภาษาอังกฤษพิมพ์เล็กและพิมพ์ใหญ่ในภาษาซีจะมีความแตกต่างกัน
คำสั่งต่างๆจะต้องเขียนด้วยตัวอักษรภาษาอังกฤษพิมพ์เล็ก
ส่วนของการประกาศตัวแปรจะต้องถูกเขียนอยู่ก่อนที่จะมีการเรียกใช้เสมอและจะต้องเขียนอยู่ต้นblockก่อนคำสั่งอื่น
ภาษาคอมพิวเตอร์
ความหมายภาษาคอมพิวเตอร์
ภาษาใด ๆ ที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์ หรือคอมพิวเตอร์ด้วยกัน แล้วคอมพิวเตอร์สามารถท างานตามค าสั่งนั้นได้ ภาษาคอมพิวเตอร์มีมากมายหลายพันภาษา แต่ภาษาที่สั่งให้ คอมพิวเตอร์ท างานได้จริงนั้นมีภาษาเดียว คือ ภาษาเครื่อง ( machine language )
ประเภทของภาษาคอมพิวเตอร์
ภาษาแอสเซมบลี (Assembly Language) เป็นภาษาที่เขียนเป็นตัวพยัญชนะและตัวเลขฐานสิบ เช่นเดียวกับภาษาเครื่องต่างกันตรงที่ว่า ภาษา แอสเซมเบลอร์เขียนเป็นตัวอักษรโดยไม่ค านึงว่าเลขฐานสองเป็นอย่างไร และต้องการตัวแปลชุดค าสั่งภาษา แอสเซมเบลอร์ เมื่อถึงเวลาท างานยังต้องใช้ชุดค าสั่งควบคุมเข้าช่วยอีกด้วย
ภาษาระดับสูง (High Level Language) เรียกอีกอย่างว่า ภาษารุ่นที่ 3 (3rd Generation Languages หรือ 3GLs) เป็นภาษาที่ถูกสร้าง ขึ้นมาเพื่อให้สามารถเขียนและอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่ว ๆ ไป และที่ ส าคัญคือ ผู้เขียนโปรแกรมไม่จ าเป็นต้องมีความรู้เกี่ยวกับระบบฮาร์ดแวร์แต่อย่างใด
ภาษาเครื่อง (Machine Language) เป็นภาษาที่แท้จริงของเครื่องคอมพิวเตอร์ คอมพิวเตอร์ทุกเครื่องจะท างานได้แต่เฉพาะภาษาเครื่อง เท่านั้น ในงานทางคอมพิวเตอร์ทั่วไปจะไม่เขียนเป็นภาษาเครื่อง เพราะเครื่องคอมพิวเตอร์แต่ละเครื่องจะมีลักษณะ แตกต่างกันไป
แนวคิดในการเขียนโปรแกรม
ปัจจุบันคอมพิวเตอร์เข้ามาเกี่ยวข้องและมีบทบาทกับชีวิตประจำวัน แต่คอมพิวเตอร์ไม่สามารถทำงานได้หากไม่มีคำสั่ง ผู้เขียนโปรแกรมจึงต้องเขียนคำสั่งให้คอมพิวเตอร์ทำงาน เพื่อให้ได้ผลลัพท์ตามที่ต้องการ ดังนั้นการเรียนรู้เกี่ยวกับวิธีการเขียนโปรแกรม เพื่อเป็นพื้นฐานที่จะทำความเข้าใจและสามารถเขียนโปรแกรม เพื่อสั่งงานให้คอมพิวเตอร์ทำงานตามต้องการได้ โดยจะต้องมี การวิเคราะห์ผลลัพธ์ การวิเคราะห์ข้อมูล การวิเคราะห์ตัวแปร
1.การเขียนโปรแกรมเชิงโครงสร้าง
1.1.โครงสร้างแบบเป็นลำดับขั้นตอน
ประกอบด้วยคำสั่งหรือชุดคำสั่งไม่มีเงื่อนไข ไม่มีการตัดสินใจ มีทางเข้าทางเดียวและมีทางออก ทางเดียว ดำเนินการแบบเรียงลำดับต่อเนื่อง โดยแต่ละขั้นตอนมีการดำเนินงานเพียงครั้งเดียว
1.3.โครงสร้างแบบทำซ้ำ
เป็นการทำงานในลักษณะวนซ้ำหลายๆ รอบ โดยจะหลุดออกจากเงื่อนไขก็ต่อเมื่อเงื่อนไขตรงตามกำหนดไว้
1.2.โครงสร้างแบบมีทางเลือกในการตัดสินใจเลือกทางใดทางหนึ่ง
เป็นโครงสร้างที่มีเงื่อนไข และมีการตรวจสอบเงื่อนไข ว่าเป็นค่าจริงหรือค่าเท็จแล้วดำเนินงานตามคำสั่งที่เป็นไปตามเงื่อนไขที่กำหนด
2.การเขียนโปรแกรมเชิงวัตถุ
แนวคิดเชิงวัตถุตั้งอยู่บนพื้นฐานการแจกแจงรายละเอียดของปัญหา ในการเขียนโปรแกรมเพื่อให้เป็นไปตามหลักการเชิงวัตถุนั้น ต้องพยายามมองรูปแบบวัตถุให้ออก การทำความเข้าใจถึงหลักการเขียนโปรแกรมเชิงวัตถุต้องอาศัยจินตนาการพอสมควร ซึ่งจะมองวัตถุหนึ่งๆ เป็นแหล่งรวมของข้อมูลและกระบวนการเข้าไว้ด้วยกัน โดยจะมีคลาส เป็นตัวกำหนดคุณสมบัติของวัตถุ และคลาสจะสามารถสืบทอดคุณสมบัติ ไปยังคลาสย่อยต่างๆ ที่เรียกว่า Subclass ได้ด้วยคุณสมบัติดังกล่าวจำทำให้เกิดการนำมาใช้ใหม่ ที่ทำให้ลดขั้นตอนการพัฒนาโปรแกรมลงได้ โดยเฉพาะโปรแกรมขนาดใหญ่ที่มีความซับซ้อนสูง
หลักการเขียนโปรแกรม
การวิเคราะห์ปัญหา (Problem Analysis)
กำหนดวัตถุประสงค์ของงาน เพื่อพิจารณาว่าโปรแกรมต้องทำการประมวลผลอะไรบ้าง
พิจารณาข้อมูลนำเข้า (Input) เพื่อให้ทราบว่าจะต้องนำข้อมูลอะไรเข้าคอมพิวเตอร์ ข้อมูลมีคุณสมบัติ
ใช้ใน การแสดงผล เช่นการแสดงออกทางจอภาพ การแสดงออกทางเครื่องพิมพ์
เป็นอย่างไร ตลอดจนลักษณะและรูปแบบของข้อมูลที่จะนำเข้า
พิจารณาการประมวลผล (Process) เพื่อให้ทราบว่าโปรแกรมมีขั้นตอนการประมวลผลอย่างไรและมีเงื่อนไขการประมวลผลอะไรบ้าง
พิจารณาข้อสนเทศนำออก (Output) เพื่อให้ทราบว่ามีข้อสนเทศอะไรที่จะแสดง ตลอดจนรูปแบบและสื่อที่จะ
การออกแบบโปรแกรม (Design)
การออกแบบขั้นตอนการทำงานของโปรแกรมเป็นขั้นตอนที่ใช้เป็นแนวทางในการลงรหัสโปรแกรม ผู้ออกแบบขั้นตอนการทำงานของโปรแกรมอาจใช้เครื่องมือต่างๆ ช่วยในการออกแบบ อาทิเช่น คำสั่งลำลอง (Pseudocode) หรือ ผังงาน (Flow chart) การออกแบบโปรแกรมนั้นไม่ต้องพะวงกับรูปแบบคำสั่งภาษาคอมพิวเตอร์ แต่ให้มุ่งความสนใจไปที่ลำดับขั้นตอนในการประมวลผลของโปรแกรมเท่านั้น