บทที ความรู้พืนฐานเกียวกบั การเขียนโปรแกรมคอมพวิ เตอร์ ธนกร สมอฝาก วิทยาลยั อาชวี ศกึ ษาขอนแก่น |
บทท่ี 1ความรพู ้ืนฐานเกีย่ วกบั การเขยี นโปรแกรมคอมพวิ เตอร1. การทํางานของคอมพิวเตอร 6. สิง่ ควรรูในการเรียนเขียนโปรแกรม2. คําศัพทท เี่ กย่ี วของ จุดมงุ หมายในการเขียนโปรแกรม การวเิ คราะหปญ หา โปรแกรม การออกแบบโปรแกรม ซอฟตแวร เครือ่ งมอื ชว ยออกแบบโปรแกรม3. ชนิดของโปรแกรมคอมพวิ เตอร ผังงาน และรหสั เทยี ม ซอฟตแ วรร ะบบ กระบวนการสาํ คญั ในเขียนโปรแกรม ระบบปฏบิ ตั ิการ เครอ่ื งมือชวยเขยี นโปรแกรม กฎเกณฑข องภาษา โปรแกรมแปลภาษา ตัวแปรและชนดิ ขอมลู ซอฟตแ วรป ระยกุ ต ตัวดําเนนิ การ และนพิ จน4. โปรแกรมภาษา คําสัง่ ทาํ งาน ภาษาระดับต่ํา ภาษาระดับสงู คาํ ส่งั ควบคมุ ทิศทางโปรแกรม คอมไพเลอร คาํ สั่งควบคุมทศิ ทางแบบเลอื กตดั สินใจ อินเทอรพรีเตอร ซอรสโคด คาํ สั่งควบคุมทิศทางแบบวนรอบ ฟง กชน่ั (built in, user defined, vender) ออ็ บเจก็ ตโ คด ตัวแปรชุด ลิงคเ กอร สวนตอ ประสานกบั มนษุ ย เอก็ ซควิ ไฟล การเขยี นโปรแกรมแบบเชิงวตั ถุ รันไทม การจดั การขอผิดพลาดในการเขียนโปรแกรม5. รปู แบบของโปรแกรมคอมพิวเตอร การแจกจายโปรแกรม คอนโซลแอปพลิเคชนั่ เดสกท อปแอปพลิเคชนั่ เวบ็ แอปพลิเคชัน่
1.1 การทํางานของคอมพิวเตอร คอมพิวเตอร เปนเคร่ืองจักรท่ีทํางาน ประมวลผล หรือจัดการกับขอมูล ตามรายการชุดคําสั่งทเ่ี รียกวา “โปรแกรม” ซ่งึ โปรแกรมทถี่ กู ตดิ ต้ัง หรือถกู โหลดเขา สคู อมพิวเตอร จะเปน ผบู อกคอมพวิ เตอรวา เมอ่ื ใดใหทําการรับขอมูล รบั ขอมูลมาแลวจะประมวลผลขอมูลน้ันอยางไร และจะดําเนินการประมวลผลหรือคํานวณดวยวิธีใด แลวจะไดส่ิงใดเปนเอาตพุต โดยมีซีพียู (central processing unit: CPU) ทําหนาที่เปนผูดําเนินการชุดคาํ ส่งั ของโปรแกรมเหลา นี้ รูปที่ 1-1 การทาํ งานของคอมพิวเตอร คอมพิวเตอรทุกชนิด ทุกประเภท จะมีซีพียทู ําหนาที่เปนเหมือนสมอง ทําหนาที่คิดคํานวณประมวลผลไมวาจะเปนคอมพิวเตอรสวนบุคคล ท้ังแบบตั้งโตะ คอมพิวเตอรโนตบุคหรือแท็บเล็ตก็ตาม คอมพิวเตอรทุกเคร่ืองจะตองมีซีพียูทําหนาท่ีเปนหนวยประมวลผลหลัก ซีพียูสามารถประมวลผลโปรแกรมไดหลากหลายรูปแบบ แตไมวาจะทํางานกับโปรแกรมรูปแบบใดก็ตาม คอมพิวเตอรก็จะมีกระบวนการหลัก ๆ ที่มีพื้นฐานการทํางานคลาย ๆ กัน ยกตัวอยาง การประมวลผลโปรแกรมเกมคอมพิวเตอร ซีพียูจะประมวลผลขอมูลทผ่ี ใู ชปอนเขา มา แลวโตต อบกลับไปใหผูใช ท้ังนขี้ ้ึนอยกู ับคาํ สั่งของโปรแกรมน้ัน อีกตัวอยาง ไดแก การประมวลผลการทํางานของโปรแกรมเว็บเบราเซอร ท่ีซ่ึงสวนใหญสามารถรันไดบนเครื่องพีซีท่ัวไป เมอ่ื ผูใชตองการเขาเย่ียมชมเว็บไซต ผูใชจะตองระบุชื่อเว็บไซต โดยพิมพชื่อเว็บไซตน้ันลงในชอง “ที่อยูเวบ็ ไซต” ของโปรแกรมเว็บเบราเซอร แลวโปรแกรมเว็บเบราเซอรก็จะรับเอาขอมูลท่ีอยูเว็บไซตที่ผูใช
ปอนเขามาและนําไปประมวลผล โดยโปรแกรมเว็บเบราเซอรนั้นจะทําการเชื่อมตอกับโปรแกรมผูใหบริการเว็บ(web server) ท่ีซึ่งรันอยูบนเครื่องคอมพิวเตอร เครื่องท่ีผูใชระบุถึงตามท่ีอยูเว็บไซต โดยจะเช่ือมตอผานระบบเครือขายอินเทอรเน็ต เม่ือโปรแกรมผูใหบริการเว็บไดรับขอมูลคําส่ังจากโปรแกรมเว็บเบราเซอร โปรแกรมผูใหบริการเว็บก็จะทํางาน ทําการประมวลผลตามคําส่ังที่รองขอมา หลังจากนั้นโปรแกรมผูใหบริการเว็บก็จะสงขอมูลยอนกลับไปยังโปรแกรมเว็บเบราเซอรนั้น เม่ือโปรแกรมเว็บเบราเซอรไดรับขอมูลโตตอบจากเครอ่ื งคอมพวิ เตอรท ี่เปนผใู หบริการเว็บ แลว โปรแกรมเว็บเบราเซอรก็จะนําขอมูลท่ีได มาแสดงผลออกทางหนา จอ รปู ท่ี 1-2 การทํางานของโปรแกรมเว็บเบราเซอร จากรูปที่ 1-1 และ 1-2 จะเห็นวาพ้ืนฐานกระบวนการทํางานของคอมพิวเตอร ประกอบดวยขั้นตอนหลกั ๆ คอื การรบั ขอมลู การประมวลผลขอมูล และการแสดงผลขอมูล1.2 ความหมายของโปรแกรมคอมพิวเตอร พจนานุกรมฉบับราชบัณฑิตยสถาน ใหความหมายของ “โปรแกรม” หมายถึง กําหนดการ รายการแสดงสวนคําวา “โปรแกรมคอมพิวเตอร” พจนานุกรมฉบับราชบัณฑิตยสถานยังใหความหมายวา โปรแกรมคอมพิวเตอร หมายถึง คําส่ัง ชุดคําส่ัง หรือสิ่งอ่ืนใดที่นําไปใชกับเคร่ืองคอมพิวเตอร เพ่ือใหเครื่องคอมพิวเตอรทาํ งาน หรือเพอื่ ใหไดรับผลอยางหนึ่งอยางใด
สําหรับในวงการคอมพิวเตอร สวนใหญมีผูใหนิยามความหมายของคําวา “โปรแกรม” หรือ “โปรแกรมคอมพิวเตอร” ในความหมายใกลเคียงกัน พอสรุปไดวา โปรแกรมคอมพิวเตอร คือ ชุดคําส่ังที่ใชอธิบายช้ินงานหรืออธิบายกลุมงาน หรือขั้นตอนการทํางานที่ประมวลผลโดยคอมพิวเตอร ซึ่งชุดคําส่ังน้ีสามารถใชสั่งงานใหคอมพิวเตอรทํางานอยางใดอยางหนึ่งตามตองการได ท้ังนีส้ วนใหญชุดคาํ ส่ังของโปรแกรมคอมพิวเตอร จะมีการออกแบบใหมีลําดบั การทํางาน ตามขนั้ ตอนวธิ ี (algorithms) แลวนําไปเขียนดวยภาษาคอมพิวเตอร หรือโปรแกรมภาษา (programming language)1.3 ความหมายของซอฟตแวร คําวา “โปรแกรมคอมพิวเตอร” อาจมีความหมายรวมถึง ซอฟตแวร แอปพลิเคชั่น หรือ โปรแกรมในตําราของไทยเรา พบวา มกี ารใชคําวา “โปรแกรม” แทนคําในภาษาอังกฤษหลายคาํ เชน computer program,computer program และ software ซึ่งคําวา “ซอฟตแวร” และ “โปรแกรม” อาจจะมีความหมายเหมือนกันหรือใกลเ คียงกัน และมีการใชทดแทนกันไดในบางโอกาส แตอ ยา งไรก็ตามคําวาโปรแกรมกับซอฟตแวร ยังมคี วามความแตกตา งที่สามารถอธิบายไดดังน้ี “ซอฟตแวร” มีความหมายที่กวางกวาโปรแกรม คําวา ซอฟตแวร อาจใชในการอางถึงโปรแกรม ขอมูลไลบรารี (library) รวมถึงไฟลอ่ืน ๆ ที่เก่ียวของ เชน เอกสารคูมือ (help) ซึ่งส่ิงเหลาน้ีจะรวมกันทํางานอยางใดอยา งหนึง่ ในเคร่ืองคอมพิวเตอร (หรอื อปุ กรณอื่น ๆ เชน แทบ็ เล็ต สมารทโฟน หรือหุนยนตในโรงงาน หรอืเครื่องใชไฟฟาตาง ๆ) ใหสําเร็จตามเปาหมายที่ตองการ ดังนั้นอาจกลาวไดวา “โปรแกรม” ก็คือ สวนหน่ึงของซอฟตแวร ในขณะท่ีคาํ วา “โปรแกรม” ที่แทจริงมีความหมายเฉพาะเจาะจงกวาคือ หมายถึงชุดของคําส่ังท่ีจะถูกทํางานโดยเคร่ืองคอมพวิ เตอร หรือชุดคําสั่งท่ีจะทําใหคอมพิวเตอรท าํ งานตามตองการ ตวั อยา ง เชน ซอฟตแ วรท่ีใชบันทึกช่ือ และท่ีอยูของบุคคล เพื่อจัดเก็บในฐานขอมูล ในกรณีนซ้ี อฟตแวรน้ีประกอบดวยสวนของโปรแกรมท่ีใชบันทึก และสวนของฐานขอมูล ซ่ึงฐานขอมูลไมไดทําหนาที่โปรแกรมแตฐานขอมูลเปนเพียงสวนเสริมในการทําใหระบบการทํางานมีประโยชนและความสามารถมากขึ้น แตเม่ือรวมท้งั สองอยา งเขาดว ยกันเราเรียกวาเปน “ซอฟตแ วร” อีกนัยหนึง่ อาจกลาวไดวา ซอฟตแวรเกิดจากการนาํ เอาโปรแกรมหลาย ๆ โปรแกรม มารวมกันก็ได เชนซอฟตแ วรทช่ี อ่ื วาไมโครซอฟตออฟฟซ (Microsoft Office) มอี งคป ระกอบเปน โปรแกรมยอ ยตาง ๆ เชน โปรแกรมไมโครซอฟตเวิรด (Microsoft Word) โปรแกรมไมโครซอฟตเอ็กเซล (Microsoft Excel) โปรแกรมไมโครซอฟตพาวเวอรพ อยนต (Microsoft PowerPoint) และอนื่ ๆ เปนตน คําวา “โปรแกรม” เกิดมากอนท่ีจะมีการบัญญัติศัพทคําวา “ซอฟตแ วร” เมื่อป ค.ศ. 1804 : โจเซฟ มารีแจคการด (Joseph Marie Jacquard : 1752 - 1834) นักประดิษฐชาวฝรั่งเศส ไดป ระดิษฐเครื่องทอผาท่ีสามารถควบคุมการทอผาลายสีตา ง ๆ ดวยบัตรเจาะรู (punched – card) เขาเก็บคําสั่ง (โปรแกรม) ไวใ นบัตรเจาะรู เพอ่ื
ส่ังใหคอมพิวเตอร ทํางานทอผาตามลวดลายและสีที่เขาตองการ เครื่องทอผาของเขาเปนเสมือนคอมพิวเตอรในขณะท่ีบตั รเจาะรูก็ถือวา เปนโปรแกรม เชน เดียวกัน ตอมาโปรแกรมถูกพัฒนารูปแบบการจัดเก็บ โดยใชส่ือบันทึกขอมูลอิเล็กทรอนิกส เชน หนวยความจําแฟลช (flash memory) หรือฮารดไดรฟ (hard drive) เปนตน เพื่อใหการดึงขอมูลมาใชงานทําไดอยางรวดเร็วและอัตโนมัติ รปู ที่ 1-2 ตัวอยางบัตรเจาะรู ท่ีมา: https://upload.wikimedia.org/wikipedia/commons/f/f3/Punched_card.jpgสรปุ ความแตกตางระหวา ง โปรแกรม กับ ซอฟตแวร 1. ซอฟตแวร เปน คาํ กวาง ๆ ท่อี ยา งนอยตอ งมี “โปรแกรมคอมพิวเตอร” เปนสวนประกอบในการทํางาน ในขณะที่คําวา “โปรแกรม” เปนคําท่ีใชเพ่ืออธิบายชุดคําส่ัง หรือรหัสคําสั่งท่ีใชในการควบคุม การทาํ งานของเคร่ืองคอมพวิ เตอร (หรอื อปุ กรณอ่ืน ๆ ท่ีคลา ยกัน) 2. โปรแกรม มีมากอ นซอฟตแวร 3. ซอฟตแวร มักจะมสี วนประกอบท่ีเปน ไฟล ในขณะท่ีโปรแกรมอาจจะมีสวนประกอบที่เปนไฟล หรอื แมก ระท่งั การใชบัตรเจาะรแู บบกระดาษแข็งก็ได แอปพลเิ คชั่นซอฟตแวร ในยุคเริ่มตนโปรแกรมคอมพิวเตอรจะเขียนเปนกลุมชุดคําส่ัง แลวเก็บบันทึกคําส่ังเหลานั้นไวในลักษณะของแฟมขอมูล หรือไฟล (files) เมื่อตองการใชงานก็เรียกคําส่ังเหลาน้ันขึ้นมาทํางาน โดยการพิมพชื่อคําสั่งผานทางคียบอรด เน่ืองจากในยุคแรก ๆ โปรแกรมระบบปฏิบัติการจะมีการรับคําส่ังจากผูใชในรูปแบบตัวอักษร หรือแบบบรรทัดคําส่ัง (CUI: Character User Interface or Command-line User Interface)ระบบปฏิบัติการคอมพิวเตอรแบบ CUI ท่ีเคยไดรับความนิยม ไดแก ระบบปฏิบัติการดอส (DOS) ตอมาหลังจากที่บริษัทไมโครซอฟต (Microsoft) และแอปเปล (Apple) ไดเปดตัวระบบปฏบิ ัติการที่มีสวนติดตอผูใชแบบกราฟก(GUI: Graphic User Interface) ทําใหผูใชคอมพิวเตอรสามารถส่ังใหคอมพิวเตอรทํางานไดโดยการคลิก
ท่ีรูปกราฟก ท่ีเปนสัญลักษณแทนโปรแกรมบนหนาจอได จึงมีการเปล่ียนมาใชคําวา “แอปพลิเคช่ันซอฟตแวร”(application software) แทนคําวา “โปรแกรม” หมายเหตุ ผูเรียนอาจสับสนเนื่องจากมีตําราบางเลม แปลคํา “application software” วา “โปรแกรมประยุกต” ซ่งึ การแปลวา “ซอฟตแวรป ระยุกต” นา จะใหความหมายไดต รงกวา1.4 ประเภทของซอฟตแวร ซอฟตแวร แบงออกเปน หลายประเภท ในทีน่ ี้จะกลา วถงึ ซอฟตแ วร สองประเภท ใหญ ๆ ไดแ ก ซอฟตแ วรประยุกต กับ ซอฟตแ วรร ะบบ 1.4.1 ซอฟตแ วรประยุกต ซอฟตแวรประยุกต เปนซอฟตแวรท่ีถูกพัฒนาข้ึนมา เพ่ือควบคุมใหระบบคอมพิวเตอรทํางานในลักษณะงานแบบเฉพาะ ตามจุดมุงหมายอยางใดอยางหนึ่ง (หรือหลายอยาง) ตามความตองการของผูใชท่ีนอกเหนือจากการทํางานปกติท่ัวไป เชน ซอฟตแวรที่ใชในงานประมวลคํา ซอฟตแวรที่ใชในงานดานกราฟกซอฟตแวรท ี่ใชกับการคํานวณตวั เลขในลักษณะตารางทํางาน หรือซอฟตแวรเพ่ือความบันเทิง ท่ีพัฒนาข้ึนสําหรับการดูหนงั ฟง เพลง เปน ตน รปู ท่ี 1-3 ตวั อยา งของซอฟตแวรป ระยุกต 1.4.2 ซอฟตแ วรระบบ ซอฟตแวรร ะบบ เปนซอฟตแวรที่มฟี ง กชั่นทํางานพ้ืนฐาน ที่จาํ เปนตอการใชงานของผูใช (มนุษย)และจําเปนตอซอฟตแวรอ่ืน ๆ ในการเรียกใชซอฟตแวรประยุกต ซอฟตแวรระบบจะทํางานแบบเช่ือมตอกับฮารดแวรโดยตรง ซอฟตแวรระบบ แบงออกเปนสามกลุมใหญ ๆ ไดแก ระบบปฏิบัติการ (operating system:OS) โปรแกรมควบคมุ อุปกรณ (device driver) และโปรแกรมยูทิลิตี้ (utilities program) 1) ระบบปฏิบัติการ (operating system: OS)
ระบบปฏิบัติการ เรียกยอ ๆ วา โอเอส (OS) เปนศนู ยรวมของซอฟตแวรทมี่ คี วามสําคัญตอการจัดการระบบคอมพิวเตอร เชน การจัดการทรัพยากร และการใหบริการทั่วไปสําหรับซอฟตแวรอ่ืน ๆที่ทํางานบนระบบปฏิบัติการน้ัน สวนประกอบหลัก ๆ ของระบบปฏิบัติการ ไดแก สวนการจัดการโปรแกรมสวนควบคุมการบูต เชลคําสั่ง ตัวจัดการการแสดงผลหนาตาง (window) และสวนจัดการการทํางานสวนตอประสานผูใช เปนตน ตัวอยางงานที่ระบบปฏิบัติการดําเนินการ เชน การตรวจสอบการรับขอมูลจากคียบอรด และการแสดงผลขอมูลออกทางอุปกรณเอาตพุตตาง ๆ เชน จอภาพ หรือเคร่ืองพิมพ การจัดการหนวยความจํา การจัดการโปรแกรมยอยเพ่ือสลับการเขาใชงานซีพียู การจดั การกับแฟมขอมูลบนหนวยความจํารองตาง ๆ เปนตน ระบบปฏิบัติการจะเปนตัวกลางในการติดตอสื่อสารระหวางผูใช กับฮารดแวรคอมพิวเตอรระบบปฏิบัติการสวนใหญ จะมีโปรแกรมพื้นฐาน หรือซอฟตแวรประยุกตบางสวนเพิ่มเติมมาใหดวย ทําใหผูใชสามารถสรา งสรรคงานบางอยา งโดยใชร ะบบปฏิบัติการคอมพิวเตอรไดเลย รปู ท่ี 1-4 ตวั อยา งระบบปฏิบัติการคอมพวิ เตอร 2) โปรแกรมควบคมุ อุปกรณ (device driver) โปรแกรมควบคุมอุปกรณ มักจะเรียกทับศัพทวา “ดีไวซไดรเวอร” หรือ “ไดรเวอร”คือ โปรแกรมท่ีควบคุมการทํางานของอุปกรณ หรือฮารดแวร ที่ติดตั้งเพิ่มเติมอยูกับเคร่ืองคอมพิวเตอร ทั้งน้ีอปุ กรณแตละตัวจะตองมีโปรแกรมไดรเวอรท่ีเหมาะสมของมันเอง ตัวอยางอุปกรณที่ติดต้ังในเครื่องคอมพิวเตอรไดแก อุปกรณสวนควบคุมการรับขอมูล อุปกรณสวนควบคุมการแสดงผลขอมูล (การดจอ) อุปกรณสวนควบคุมการเช่ือมตอเครือขาย หรือการดแลน (network interface card) อุปกรณการควบคุมการประมวลผลดานเสียง
(sound card) เปนตน อุปกรณเหลาน้ีตองมีโปรแกรมไดรเวอร ซ่ึงโปรแกรมไดรเวอรของอุปกรณบางตัวอาจถูกตดิ ตั้งพรอ มกับระบบปฏิบัติการ แตอ ปุ กรณบางตัวจะตองติดตั้งโปรแกรมไดรเวอรเพม่ิ เติมตา งหาก รปู ที่ 1-5 ตวั อยางโปรแกรมควบคมุ อุปกรณป ระมวลดานเสียง (sound card) http://www.telecommander.com/pics/links/Sound%20Cards/sblive51oem/sblive51oem.htm 3) โปรแกรมยทู ิลิต้ี (utilities program) โปรแกรมยูทิลิต้ี เปนโปรแกรมคอมพิวเตอรที่ไมสามารถจัดเขากลุมใด ๆ ไดท้ังซอฟตแวรประยุกต หรือซอฟตแวรระบบ เปนโปรแกรมขนาดเล็กท่ีมีประโยชนถ ูกออกแบบมา เพื่อชวยในการบํารุงรักษา และการดูแลคอมพิวเตอร ใหงาย และมีความสะดวกขึ้น โปรแกรมยูทิลิตี้สามารถจะติดต้ังไดอยางอิสระ และไมไดเปนสวนหนึ่งของระบบปฏิบัติการ แมวาบางตัวจะถกู ติดต้ังมาพรอมกับระบบปฏิบัติการ ตัวอยางของโปรแกรมยูทิลิตี้ ไดแ ก โปรแกรมชวยในการสํารองขอมูล โปรแกรมชวยจัดการคลิปบอรด โปรแกรมชวยรักษาความปลอดภัยคอมพิวเตอร เชน โปรแกรมปองกันและกําจัดไวรัสคอมพิวเตอร เปนตน โปรแกรมชวยเพิ่มประสิทธิภาพระบบคอมพิวเตอร โปรแกรมชวยการบีบอัดขอมูล โปรแกรมจัดการการใชคียบอรดรวมกันโปรแกรมควบคุมการทํางานระยะไกล โปรแกรมแชรภ าพหนา จอ ฯลฯ
รปู ท่ี 1-6 ตัวอยางโปรแกรมยทู ิลิต้ี http://www.avg.com/content/dam/uis/PC-Tune-up-gif.gif http://3.bp.blogspot.com/-T0H7Ev0xkcY/Vi54rj4nqRI/AAAAAAAABAw/HCkAMnrmW5Y/s1600/ESET%2BNOD32%2BAntivirus%2B9.0.318.20%2B%255B2%255D.png นอกจากน้ียังมีซอฟตแวรประเภทอ่ืน ๆ ไดแก ซอฟตแวรที่เปนอันตราย หรือมัลแวร และโปรแกรมแปลภาษา (programming language) เปน ตน ซอฟตแวรทีเ่ ปนอันตรายหรือมัลแวร (Malicious software or malware) ซอฟตแวรที่เปนอันตราย หรือมัลแวร เปนซอฟตแวรที่พัฒนาข้ึนมาเพื่อทําอันตรายและสรางหายนะใหกับเคร่ืองคอมพิวเตอร เปนโปรแกรมท่ีไมพึงประสงค มักใชในการกออาชญากรรมท่ีเกี่ยวของกับคอมพิวเตอร แตบ างโปรแกรมอาจเกิดข้ึนมา เพราะความคกึ คะนองของผูเขียนโปรแกรม รปู ที่ 1-7 ตวั อยางซอฟตแ วรป องกันมัลแวร https://www.bleepstatic.com/swr-guides/m/malware-defense/malware-defense.jpg
โปรแกรมแปลภาษา โปรแกรมแปลภาษามีหนาท่ีในการแปลภาษาระดับสูง ใหเปนภาษาระดับตํ่าหรือภาษาเคร่ือง เน่ืองจากการพัฒนาซอฟตแวรนั้น นักพัฒนาซอฟตแวรสวนใหญจะเขียนชุดคําสั่งคอมพิวเตอรหรือพัฒนาโปรแกรมคอมพิวเตอรโดยใชภาษาระดับสูง แตคอมพิวเตอรไมสามารถเขาใจ หรือทํางานดวยชุดคําส่ังที่เขียนดวยภาษาระดับสูงไมได จึงตองแปล หรือแปลงชุดคําสั่งของโปรแกรมใหเปนภาษาระดับตํ่า โดยอาศัยโปรแกรมแปลภาษา และโปรแกรมแปลภาษาน่ีเอง ท่ีเปนเครื่องมือทําใหเกิดการสรางสรรค และพัฒนาโปรแกรมประยุกต หรือซอฟตแ วรประยกุ ต อื่น ๆ อกี มากมาย (ดูรายละเอยี ดในเรือ่ ง ตวั แปลภาษา) รปู ที่ 1-8 การทํางานของโปรแกรมแปลภาษา1.5 ความหมายของการเขยี นโปรแกรมคอมพิวเตอร (Programming) การเขียนโปรแกรมคอมพิวเตอร คือ กระบวนการของการพัฒนาและการใชชุดคําสั่งตาง ๆ เพ่ือควบคุมใหคอมพิวเตอรทํางานอยางใดอยางหนึ่ง ตามวัตถุประสงคที่ตองการ ซึ่งชุดคําส่ังเหลาน้ี เรียกวา “โปรแกรมคอมพิวเตอร” โปรแกรมคอมพิวเตอรจะถูกเขียนข้ึนดวย “ภาษาคอมพิวเตอร” และภาษาคอมพิวเตอรนี่เองท่ีใชเ ปน เครือ่ งมอื สําหรับการตดิ ตอสอ่ื สาร ระหวา งคนกบั เครื่องคอมพิวเตอร (ฮารด แวร)1.6 ภาษาโปรแกรม (programming language) ภาษาโปรแกรม หรือภาษาคอมพิวเตอร ในท่นี ี้แบงเปน 2 ระดับ ไดแก - ภาษาระดับต่าํ ท่ีใกลชิดกับเคร่ือง (ฮารด แวร) แตไกลจากมนุษย - ภาษาระดับสงู ท่ีใกลชิดกับมนุษย แตไกลจากเคร่ือง (ฮารด แวร)
1.6.1 ภาษาระดับต่ํา ภาษาระดับต่ําเปนภาษาที่เขียนดวยระบบเลขฐานสองหรอื ไบนารี่ ซึ่งประกอบดวยเลข 0 และ 1และเปนภาษาเดียวที่เคร่ืองคอมพิวเตอร (ซีพียู) เขาใจ โปรแกรมคอมพิวเตอรที่เขียนดวยภาษาระดับต่ํานี้เราเรียกวา รหัสเครื่อง (machine codes) หรือภาษาเคร่ือง หรือภาษาไบนารี นกั พัฒนาซอฟตแวรไมนิยมเขียนโปรแกรมคอมพิวเตอรดวยภาษาเคร่ืองโดยตรง เน่ืองจากมีความยุงยากในการเขียน เพราะวาภาษาเครื่องน้ันเปนภาษาที่ประกอบดวยตัวเลขฐานสอง คอื เลข 0 กบั 1 เทา น้ัน และอกี ประการหนึ่งก็คอื ภาษาเคร่ืองเปนภาษาท่ีไมมีมาตรฐาน หมายถึง ซีพียูแตละตัวก็จะมีภาษาเครื่องของตนเอง น่ันหมายความวา คอมพิวเตอรท่ีใชซีพียูตางเบอรกัน จะไมสามารถใชโปรแกรมเดียวกันได อาจเรียกไดวาเปนภาษาที่ขึ้นตรงตอฮารดแวร แตขอดีของโปรแกรมท่ีเขียนดว ยภาษาเครื่อง กค็ ือ ประมวลผลไดเร็วกวา โปรแกรมที่เขียนดวยภาษาระดับสงูก) คาํ ส่งั ภาษาเครื่องของโปรแกรมเวบ็ เบราเซอร chrome ข) คําสั่งภาษาเคร่อื งของโปรแกรม Line PC รูปท่ี 1-9 ตวั อยา งคําสั่งภาษาเคร่ืองของโปรแกรม Chrome และ โปรแกรม Line PC 1.6.2 ภาษาระดบั สูง ดังท่ีไดกลาวมาแลว โดยท่ัวไปนักพัฒนาซอฟตแวรสวนใหญจะเขียนชุดคําสั่งคอมพิวเตอร หรือพัฒนาโปรแกรมคอมพิวเตอร ดวยภาษาระดับสูง ซึ่งเปนภาษาท่ีประกอบดวยคํา และวลีจากภาษาอังกฤษ (หรือภาษาอื่น ๆ) ที่ใกลเคียงกับภาษามนุษย ที่มนุษยเขาใจแตคอมพิวเตอรจะไมเขาใจคอมพิวเตอรสามารถเขาใจไดเฉพาะโปรแกรมที่เขียนในระบบเลขฐานสอง หรือไบนารี่ ที่ซ่งึ ชุดคําสั่งในโปรแกรมจะประกอบดวยตัวเลข 0 และ 1 เทา น้ัน เราเรียกชุดคาํ ส่งั แบบนี้วา รหัสเครอื่ ง (machine code) หรือภาษาเครือ่ งซ่งึ เคร่อื งคอมพวิ เตอรจะเขาใจเฉพาะภาษาเครื่อง แตมนุษยไมเขาใจหรือยากตอ การทําความเขาใจ และไมสะดวก
ในการเขียนหรือแกไข ภาษาเครื่องจัดเปนภาษาระดับตํ่า การเขียนโปรแกรมดวยภาษาระดับสูง จําเปนตองมีตวั แปลภาษา สําหรับทําหนาท่ีแปลชุดคาํ ส่ังที่เขียนดวยภาษาระดับสูง ใหเปน ภาษาเครอื่ ง ตวั อยางภาษาระดับสูงที่ไดร ับความนิยมในกลุมนักพัฒนาซอฟตแวร ไดแก ภาษาซี/ซีพลัส พลัส (C/C++) ภาษาซีชารป (C#) ภาษาจาวา(Java) ภาษา (Python) ภาษารูบี้ (Ruby) เปน ตน รปู ที่ 1-10 ตัวอยางชุดคําส่ังคอมพิวเตอรท่ีเขียนดวยระดับสงู เชน ภาษาซี1.7 การแปลภาษา เนื่องจากคอมพิวเตอรไมเขาใจคําสั่งท่ีเขียนขึ้นจากภาษาระดับสูง ทําใหโปรแกรมน้ันไมสามารถสั่งใหคอมพิวเตอรทํางานตามความตองการได จึงจําเปนตองมีกระบวนการแปลคําส่ังที่เขียนจากภาษาระดับสูงใหเปนภาษาเครื่อง (ซึ่งเปนสาเหตุหนึ่งท่ีทําใหโปรแกรมท่ีเขียนดวยภาษาระดับสูง ประมวลผลไดชากวาโปรแกรมทเ่ี ขียนดวยภาษาระดับตํ่า) ตัวแปลคําสง่ั หรือโปรแกรมแปลภาษา มี 2 ลกั ษณะ คอื คอมไพเลอร (compiler) และอินเตอรพ รีเตอร (interpreter) 1.7.1 คอมไพเลอร (compiler) คอมไพเลอร เปนโปรแกรมแปลภาษา ที่จะทําการแปลชุดคําส่ังของโปรแกรมท่ีถูกเขียนข้ึนจากภาษาระดับสูง (source code) โดยการตรวจสอบและแปลชุดคาํ สั่งท้ังหมดทั้งโปรแกรม พรอ มกันในครั้งเดียวผลลัพธท่ีไดจากการแปลจะเก็บไวในรูปของภาษาเคร่ือง ท่ีเรียกวาออบเจ็กตโคด (object Code) หลังจากนั้นจะนําออบเจก็ ตโคด ท่ีได ไปทําการเชื่อมโยง หรือรวมเขา กับออบเจ็กตไฟลที่จําเปน ท่ีตัวแปลภาษาจัดเตรียมมาใหโดยใชตัวลิงค (linker) แลวเก็บบันทึกลงในไฟลเอกซคิว (executed file) เพ่ือนําไปใชงานตอไป ขอดีของการแปลโดยใชคอมไพเลอร คือ ผลโดยรวมในการทํางานใชเวลาดําเนินการคอนขางเร็ว สวนขอเสียคือ หากมีขอผิดพลาด
ในโปรแกรม คอมไพเลอรจะแจงขอ ผิดพลาดนน้ั ภายหลังจากไดทาํ การตรวจสอบโปรแกรมท้ังหมดแลว ซ่ึงจะทําใหไมสะดวกในการคนหาและแกไขจดุ บกพรอง โปรแกรมภาษาที่ใชการแปลแบบคอมไพเลอร ไดแก C/C++ เปนตน 1.7.2 อนิ เทอรพรีเตอร (Interpreter) อินเทอรพรีเตอร เปนตัวแปลภาษา ท่ีมีการแปลทีละคําส่ัง หลังจากแปลคําสั่งแตละคําสั่งแลวโปรแกรมจะส่งั ใหคอมพิเตอรปฏิบัติงานตามคําสั่งนั้นทันที หลังจากนั้นจงึ แปลคําสั่งตอไป ซึ่งหากพบขอผิดพลาดที่จุดใดโปรแกรมจะหยุดทํางานทันที ทาํ ใหงายตอการคนหาและแกไขจุดบกพรองของโปรแกรม ลักษณะการแปลคําสง่ั ของอินเทอรพรีเตอรจะคลายกับการแปลภาษาของลาม ตัวอยางโปรแกรมภาษาท่ีใชการแปลแบบอินเทอร-พรเี ตอร ไดแก ภาษาไพธอน (Python) ภาษารูบ้ี (Ruby) เปนตน 1.7.3 เปรียบเทียบการทํางานระหวางอินเตอรพรเี ตอรกบั คอมไพเลอร การแปลของอินเทอรพรีเตอรอาจจะใชเวลานอยกวาในการแปลแตละคําส่ัง แตภาพโดยรวมของการแปลจะใชเวลานานกวาคอมไพเลอร ตวั อยางเชน ในกรณีของโปรแกรมที่มีลักษณะการทํางานแบบวนซํ้า(loop) อินเทอรพรีเตอรจะทํางานไดชากวาคอมไพเลอร เนื่องจากอนิ เทอรพรีเตอร ตองทําการแปลคําส่ังในทุก ๆรอบของการวนซ้ํา สวนคอมไพเลอรจะแปลเพียงคร้ังเดียว แลวเก็บผลการแปลคําสั่งไวในออบเจ็กตโคด ทําใหการทํางานแบบวนซํ้าทําไดอ ยางรวดเร็ว แตขอเสียของการเก็บออบเจ็กตโคดไวในหนวยความจําของคอมไพเลอรกค็ ือ ตอ งมีการเกบ็ ท้งั ตัวโปรแกรมที่เปนรหสั ตนฉบับ (source code) ออบเจก็ ตโ คด (object code) และสว นการทาํ งานของคอมไพเลอร ไวใ นหนวยความจําพรอ มกัน ทาํ ใหสน้ิ เปลืองเนอ้ื ท่ีในหนว ยความจํามากกวาการใชตัวแปลภาษาแบบอินเทอรพรีเตอร
รปู ท่ี 1-11 การทํางานของคอมไพเลอร กับอินเทอรพ รีเตอร 1.7.4 รหัสตนฉบับ (source code) รหัสตนฉบับ หรือท่ีนิยมเรียกทับศัพทวา “ซอรสโคด” คือ ชุดคําสั่งหรือโปรแกรมท่ีเขียนขึ้นดว ยภาษาระดับสูง กอนจะถูกนําไปแปลเปนรหัสเคร่ือง รหัสตนฉบับน้ีสามารถเขียนขึ้นโดยใชโปรแกรมประเภทแกไขขอความ (text editor) เชน Notepad เปนตน โดยท่ีเราสามารถบันทึกเก็บชุดคําส่ังรหัสตนฉบับน้ีไวในรูปแบบแฟมขอมูลหรือไฟลขอมูล ท่ีเรียกวา ซอรสไฟล (source file) เพ่ือเก็บไวใชสําหรับการปรับปรุงเปลี่ยนแปลงในโอกาสตอไปได รปู ที่ 1-12 ตวั อยางชุดคําสงั่ ในซอรสโคดท่ีเขียนดวยภาษาซี 1.7.5 ตัวลิงค (Linker)
ในภาษาคอมพิวเตอรระดับสูง เชน ภาษา C/C++ สวนใหญจะมีโปรแกรมยอย หรือชุดคําส่ังท่ีเปนตัวชวยอํานวยความสะดวกใหกับผูเขียนโปรแกรม ซึ่งเราเรียกวา ฟงกช่ัน (functions) ฟงกช ั่นเหลาน้ีจะถูกจัดเก็บไวในออบเจ็กตไฟล ท่ีติดมาพรอมกับชุดของคอมไพเลอร โดยในคอมไพเลอรจะมีตัวลิงค (linker)ท่ที ําหนาท่ีเชื่อมโยงคําสั่ง หรอื รวมเอาคาํ สั่งจากโปรแกรมยอยท่ีจําเปนท่ีตองทํางานรว มกัน ระหวางออบเจ็กตไฟลท่ีเกิดจากซอรสไฟลที่นักพัฒนาโปรแกรมเขียนข้ึน กับออบเจ็กตไฟลที่เก็บในฟงกชั่นตัวชวย ท่ีคอมไพเลอรเตรียมมาให เขาดว ยกัน แลว จัดเก็บลงในไฟลใหมที่สามารถใชงานได หรือรนั ไดดวยตัวเองได เราเรียกไฟลท ี่เกิดขึ้นใหมน้ีวา ไฟลเอกซคิว (executable file) ซ่ึงจะมีนามสกุลเปน .exe ในตัวอยางในรูปที่ 11-3 นี้เราเก็บซอรสโคดไวในซอรส ไฟลชอ่ื วา program1.c หลังจากคอมไพลและลิงคเสร็จแลว จะไดไ ฟลเอกซคิว คือ program1.exe เปนตน รปู ที่ 1-13 อธิบายการทาํ งานของคอมไพเลอรแ ละลิงคเกอรข องภาษาซี 1.7.6 ไฟลเ อกซคิว (executable file) ไฟลเอกซคิว program1.exe เปนไฟลโปรแกรมท่ีถูกแปลเปนภาษาเคร่ือง และมีการลิงคแลวโดยทใ่ี นการลงิ คนั้น ตวั ลิงคไดนาํ เอาฟงกช ั่น หรือคาํ สั่งทํางานท่ีจาํ เปน จากออบเจก็ ตไฟลของตัวแปลภาษา มาเก็บรวมเอาไวในไฟลเอกซคิวนี้เรียบรอ ยแลว จึงทําใหสามารถนาํ ไฟลน้ีไปใชงานหรือรัน ในคอมพิวเตอรเคร่ืองไหนก็ไดทีม่ ีส่ิงแวดลอมในการใชง าน หรอื สง่ิ แวดลอ มในการรัน (runtime) ทเี่ ขากันได โดยไมข้ึนอยูกับซีพียู
รปู ที่ 1-14 ตัวอยา งไฟลเ อ็กซคิวท่ีเกิดจากกระบวนการทาํ งานของตัวแปลภาษาซี 1.7.7 ส่งิ แวดลอมในการรนั โปรแกรม (runtime environment) เวลาทใี่ ชไปในขณะท่ีคอมพิวเตอรปฏิบัติการตามโปรแกรมใด โปรแกรมหนึง่ สิ่งแวดลอมในการรันโปรแกรม คือ โครงสรางพื้นฐานท่ีจําเปนในการเรียกใชโปรแกรม สําหรับข้นั ตอนการดําเนินการของการใชง านซอฟตแวรใหดูท่ีเวลาในการรัน (โปรแกรมเฟสวงจร) ระบบการทํางานที่เรียกวาระบบการทํางานสวนใหญดําเนินการบางสวนของรูปแบบการประหารนี้เปนในทางตรงกันขามกับเฟสวงจรรันไทมของโปรแกรมในระหวางที่ระบบรันไทมเปนในการดําเนินงาน ภาษาสวนใหญมีรูปแบบของระบบรันไทมซ่ึงดําเนินการควบคุมลําดับที่การทํางานที่ถูกระบุในแงของภาษาท่ีไดรับการดําเนินการ กวาปท่ีความหมายของคําวา 'ระบบรันไทม' ไดรับการขยายไปถึงเกือบพฤติกรรมใด ๆ ท่ีมีความมุงม่ันแบบไดนามกิ ระหวา งการดาํ เนินการ บางครง้ั อาจจะใชคาํ วา Virtual Machine https://th.answers.yahoo.com/question/index?qid=20110616051454AAHysKi 1.7.8 สงิ่ แวดลอมในการพฒั นาโปรแกรม (Integrated Development Environment: IDE) ปจจุบันน้ีตัวแปลภาษาคอมพิวเตอรสวนใหญ มักจะมีมาดวยกันเปนแพ็คเกจ (package)ท่ีเรียกวา ส่ิงแวดลอมในการพัฒนาโปรแกรม (Integrated Development Environment: IDE) โดยท่ัวไป
ในแพ็คเกจน้ีจะประกอบดวย โปรแกรมอิดิเตอร ตวั แปลภาษา ตัวลงิ ค และตวั โหลด หรือรันโปรแกรม โปรแกรมและเคร่อื งมอื ตาง ๆ เหลา น้จี ะชวยใหนักพัฒนาโปรแกรมสามารถทํางานไดสะดวก และสรา งสรรคงานไดเร็วข้ึน รปู ท่ี 1-14 ตัวอยา ง การพัฒนาโปรแกรมดวยภาษาซี โดยใช IDE เปน โปรแกรม Dev-C++ รูปท่ี 1-15 โปรแกรม NetBeans ตวั อยา ง IDE ของการพัฒนาโปรแกรมดวยภาษาจาวา
และ IDE ของตัวแปลภาษา C มีหลากหลายผูผลิต นักพัฒนาโปรแกรมสามารถเลือกใชไดตามความพอใจและความเหมาะสม การรนั โปรแกรม (executing a program) คอมพิวเตอร
1.7 รูปแบบของแอปลิเคช่นั1.7.1 คอนโซลแอปพลเิ คชั่น รปู ที่ 1-16 ตวั อยา งของโปรแกรมแบบคอนโซลแอปพลิเคช่นั 1.7.2 เดสกทอปแอปพลิเคชั่น รปู ที่ 1-17 ตวั อยา งของโปรแกรมแบบเดสกท อปแอปพลิเคช่ัน1.7.3 เว็บแอปพลิเคช่ัน
รปู ที่ 1-18 ตัวอยางของโปรแกรมแบบเวบ็ แอปพลิเคชั่นสรปุ ความแตกตางระหวาง โปรแกรม กับ ซอฟตแวร 1. ซอฟตแวร เปนคํากวาง ๆ ท่อี ยา งนอ ยตอ งมี “โปรแกรมคอมพวิ เตอร” เปน สวนประกอบในการทํางาน ในขณะที่คําวา “โปรแกรม” เปนคําท่ีใชเพ่ืออธิบายชุดคําส่ัง หรือรหัสคําส่ังท่ีใชในการควบคุม การทาํ งานของเครื่องคอมพวิ เตอร (หรอื อุปกรณอื่น ๆ ทีค่ ลายกัน) 2. โปรแกรม มีมากอนซอฟตแวร 3. ซอฟตแ วร มักจะมสี วนประกอบท่ีเปน ไฟล ในขณะท่ีโปรแกรมอาจจะมีสวนประกอบท่ีเปนไฟล หรือ แมก ระท่งั การใชบัตรเจาะรแู บบกระดาษแข็งก็ได
Search
Read the Text Version
- 1 - 21
Pages: