Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore เชี่ยวชาญการเขียนโปรแกรมด้วยไพธอน = Programming Expert with Python

เชี่ยวชาญการเขียนโปรแกรมด้วยไพธอน = Programming Expert with Python

Description: เชี่ยวชาญการเขียนโปรแกรมด้วยไพธอน = Programming Expert with Python.

Search

Read the Text Version

คำนำ ภาษาไพธอน (Python Language) เป็นภาษาทถ่ี กู ออกแบบและพฒั นามาเพอ่ื ใหผ้ เู้ รยี นสามารถ เรยี นรไู้ ดง้ า่ ย รวดเรว็ กระทดั รดั และมปี ระสทิ ธภิ าพสงู โดยการนาเอาคณุ ลกั ษณะเด่นๆ ของภาษาอ่นื ๆ มาเป็นพน้ื ฐานในการพฒั นาต่อยอด เชน่ ภาษา C, C++, Java, Perl, ABC, Modula-3, Icon, Matlab, ANSI C, Lisp, Smalltalk และ Tcl เป็นตน้ ไพธอนจงึ ถูกเรยี กว่าเป็นภาษาทม่ี หี ลายกระบวนทศั น์ หรอื หลายมมุ มอง (multi-paradigm languages) ซง่ึ เกดิ จากการผสมผสานรวมเอาแนวความคดิ ในการ พฒั นาซอฟตแ์ วรแ์ บบต่างๆ เขา้ ไวด้ ว้ ยกนั ใหอ้ ยใู่ นตวั ของไพธอน คอื การเขยี นโปรแกรมเชงิ วตั ถุ (Object-oriented programming), การเขยี นโปรแกรมเชงิ โครงสรา้ ง (Structured programming), การ โปรแกรมเชงิ ฟังชนั (Functional programming) และการเขยี นโปรแกรมเชงิ ลกั ษณะ (Aspect-oriented programming) ภาษาไพธอนเป็นภาษาทไ่ี ดร้ บั การพฒั นาต่อยอดจากนักพฒั นาโปรแกรมทวั่ โลก สง่ ผลใหภ้ าษา ดงั กล่าวมคี วามสามารถสงู และรองรบั งานดา้ นต่างๆ ไดม้ ากมายอาทเิ ช่น งานดา้ นวทิ ยาศาสตร์ วศิ วกรรมศาสตร์ ระบบฐานขอ้ มลู เกมสแ์ ละแอพพลเิ คชนั เครอื ขา่ ยคอมพวิ เตอร์ เวบ็ แอพพลเิ คชนั และ นิยมใชส้ าหรบั ประกอบการเรยี นการสอนในต่างประเทศตงั้ แต่ระดบั มธั ยมถงึ มหาวทิ ยาลยั เหน็ ไดจ้ ากมี หน่วยงานสาคญั ๆ ของโลกนาเอาภาษาไพธอนไปพฒั นางานของตนมากมาย เชน่ นาซ่า (NASA), กูเกลิ (Google), หน่วยงานของสหรฐั (USA Central Intelligence Agency :CIA), IBM และอ่นื ๆ สาหรบั ประเทศไทยกาลงั เพม่ิ มากขน้ึ เรอ่ื ยๆ เชน่ มหาวทิ ยาลยั มหดิ ล เกษตรศาสตร์ จฬุ าลงกรณ์ และพระจอม เกลา้ เจา้ คณุ ทหารลาดกระบงั เป็นตน้ หนงั สอื เลม่ น้ีจงึ เหมาะอยา่ งยงิ่ สาหรบั เป็นพน้ื ฐานสาหรบั ผทู้ ่ี ตอ้ งการเรม่ิ ตน้ เรยี นรใู้ นการเขยี นโปรแกรมไปจนถงึ ผเู้ ชย่ี วชาญทต่ี อ้ งการนาไปประยกุ ตใ์ ชเ้ ขา้ กบั งาน ของตนเอง หนงั สอื เล่มน้ไี มใ่ ช่หนงั สอื ไพธอนทด่ี ที ส่ี ุด ดงั นนั้ ถา้ มขี อ้ ผดิ พลาดประการใดเกดิ ขน้ึ ผเู้ ขยี น ขอน้อมรบั ไวท้ งั้ หมด ผเู้ ขยี นขอสงวนลขิ สทิ ธใิ ์ นหนงั สอื เล่มน้ีเพอ่ื ใชเ้ ป็นวทิ ยาทานเท่านนั้ หา้ มผใู้ ด จาหน่าย พมิ พ์ เพอ่ื ขาย ใหด้ าวน์โหลดโดยคดิ คา่ บรกิ าร หรอื ใชใ้ นเชงิ พาณชิ ยท์ งั้ สน้ิ แต่อนุญาตใหแ้ จกจ่ายได้ ทา้ ยน้ผี เู้ ขยี นหวงั เป็นอยา่ งยง่ิ ว่าผอู้ ่านจะไดร้ บั ประโยชน์จากหนงั สอื เลม่ น้ตี ามสมควร หากมี ขอ้ แนะนากรุณาแจง้ ใหผ้ เู้ ขยี นไดท้ ราบ เพอ่ื จะไดน้ าไปปรบั ปรงุ แกไ้ ขต่อไป จงึ ขอบคณุ มา ณ โอกาสน้ี ผศ.ดร. สชุ าติ คุม้ มะณี Email: [email protected] พมิ พเ์ ผยแพรเ่ มอ่ื 14 ตุลาคม 2558 แกไ้ ขลา่ สุดเมอ่ื 13 มกราคม 2561

แนะนำเก่ียวกบั หนังสือ จดุ เด่นของหนังสือเล่มนี้ ? หนงั สอื “เช่ียวชำญกำรเขียนโปรแกรมด้วยภำษำไพธอน (Programming expert with Python)” ทท่ี า่ นถอื อยนู่ ้ี ถูกเรยี บเรยี งขน้ึ มาเพ่อื ตอบสนองกบั ผทู้ ต่ี อ้ งการเขยี นโปรแกรมสาหรบั แกป้ ัญหาต่างๆ ดว้ ยระบบคอมพวิ เตอร์ โดยหนงั สอื เลม่ ดงั กลา่ วน้ี เน้นการพฒั นาโปรแกรมดว้ ยภาษาไพ ธอน ซง่ึ เป็นทย่ี อมรบั กนั ทวั่ โลกว่าเป็นภาษาทส่ี ามารถเรยี นรไู้ ดง้ ่าย รวดเรว็ และมปี ระสทิ ธภิ าพในการ ทางานสงู ไมแ่ พภ้ าษาระดบั สงู อ่นื ๆ เชน่ ภาษา C/C++ จาวา (Java) เพริ ล์ (Perl) พเี อชพี (PHP) และ วชิ วลเบสคิ เป็นตน้ ซง่ึ ปัจจุบนั ภาษาไพธอนกาลงั ไดร้ บั ความนิยมเพม่ิ ขน้ึ อยา่ งรวดเรว็ (จากผลการ สารวจของ CodeEval.com ในปี 2014 พบว่ามผี เู้ ขยี นโปรแกรมดว้ ยภาษาไพธอนสงู ทส่ี ดุ ถงึ 30.3% รองลงมาคอื Java 22.2%, C++ เทา่ กบั 13%, Ruby 10.6%, JavaScript 5.2%, C# 5%, C 4.1%, PHP 3.3% ตามลาดบั ) เหน็ ไดจ้ ากหน่วยงานทม่ี ชี ่อื เสยี งระดบั โลกนาไพธอนไปพฒั นาระบบงานของตนอยา่ ง กวา้ งขวาง เช่น กเู กลิ นาซ่า เป็นตน้ ซง่ึ จะกล่าวถงึ ในหวั ขอ้ ถดั ไป สาหรบั จดุ เด่นของหนงั สอื เลม่ น้อี ยู่ ตรงท่ี ผเู้ ขยี นไดอ้ ธิบำยกำรเขียนโปรแกรมไพธอนเป็นลกั ษณะทีละขนั้ ตำมลำดบั (Step by Step) เร่ิมตงั้ แต่กำรเขียนโปรแกรมอย่ำงง่ำยๆ ไปจนถึงกำรเขียนโปรแกรมขนั้ สงู โดยมภี ำพและ โปรแกรมตวั อย่ำงประกอบคำอธิบำย ให้ผอู้ ่ำนสำมำรถเข้ำใจได้อย่ำงกว้ำงขวำง (เน้นตวั อย่ำง ในมมุ มองที่หลำกหลำย) เนื้อหำครอบคลมุ กำรใช้งำนมำกท่ีสดุ จนถึงเวอรช์ นั ปัจจบุ นั (เดือน มีนำคม 2557 คือเวอรช์ นั 3.4) รวมถงึ เน้อื หาของหนงั สอื เล่มน้คี รอบคลุมในทกุ ๆ สายอาชพี เช่น นกั เรยี น นิสติ นกั ศกึ ษา ครู อาจารย์ นกั วจิ ยั นกั วทิ ยาศาสตร์ นกั คณติ ศาสตร์ นกั พฒั นาโปรแกรม งาน ฐานขอ้ มลู เวบ็ แอพพลเิ คชนั ผดู้ แู ลระบบคอมพวิ เตอร์ และนกั พฒั นาโปรแกรมระบบเครอื ขา่ ย เป็นตน้ ใครบ้ำงที่สมควรอ่ำนหนังสือนี้เล่มนี้ ? หนงั สอื เลม่ น้ไี ดท้ าการกาหนดโครงสรา้ งของหนงั สอื ออกเป็น 5 ภาค ประกอบไปดว้ ย ภำคท่ี 1 เป็นการแนะนาถงึ การทางานของระบบคอมพวิ เตอรพ์ น้ื ฐาน และความสมั พนั ธก์ นั อยา่ งใกลช้ ดิ ระหว่างระบบคอมพวิ เตอรฮ์ ารด์ แวรแ์ ละโปรแกรม หรอื ซอฟตแ์ วร์ ทถ่ี กู ใชส้ าหรบั ควบคมุ และสงั่ งานใหร้ ะบบคอมพวิ เตอรฮ์ ารด์ แวร์ สามารถทางานไดต้ รงตามเป้าหมาย และตรงความตอ้ งการ ภำคท่ี 2 เป็นการอธบิ ายถงึ พน้ื ฐานการพฒั นาโปรแกรม เชน่ การเขา้ ใจชนดิ ของตวั แปรต่างๆ การกาหนดค่าตวั แปร คาสงั่ การประมวลผลทางคณติ ศาสตร์ โครงสรา้ งขอ้ มลู เงอ่ื นไข การทาซ้า ฟังชนั การจดั การขอ้ ผดิ พลาด อนิ พดุ -เอาทพ์ ดุ การจดั การแฟ้มขอ้ มลู การตรวจสอบและคน้ หาความผดิ ปกติ ของโปรแกรม และการเขยี นโปรแกรมเชงิ วตั ถุ เป็นตน้

ภำคที่ 3 เป็นการแนะนาการเขยี นโปรแกรมขนั้ สงู เพอ่ื ตอบสนองกบั นกั พฒั นาโปรแกรมทม่ี ี ความตอ้ งการเฉพาะดา้ น โดยยกตวั อยา่ งงานการเขยี นโปรแกรมในมุมมองเชงิ ลกึ กวา่ ภาคท่ี 2 เพอ่ื เป็น แนวทางใหผ้ สู้ นใจสามารถนาทกั ษะ และตวั อยา่ งดงั กล่าวไปประยกุ ตก์ บั งานของตนเองได้ เช่น นกั พฒั นาโปรแกรมดา้ นระบบคอมพวิ เตอร์ (System programming) นกั วเิ คราะหข์ อ้ ความและภาพ (Text and image processing) เวบ็ แอพพลเิ คชนั และฐานขอ้ มลู (Web/web services and database developing) โปรแกรมดา้ นระบบเครอื ขา่ ย (Network programming) การโปรแกรมโพรเซสและเธรด การโปรแกรมกบั งานสารสนเทศ (GIS) โครงสรา้ งขอ้ มลู (Data Structure) รวมไปถงึ การเขยี นโปรแกรม ภาษาไพธอนกบั งานดา้ นวทิ ยาศาสตรอ์ ่นื ๆ อกี มากมาย ภำคท่ี 4 แนะนาการเขยี นโปรแกรมกบั กราฟฟิกดว้ ยภาษาไพธอน (GUI) เพอ่ื อานวยความ สะดวกสาหรบั นกั พฒั นาโปรแกรมทต่ี อ้ งการกราฟฟิกเพ่อื สนบั สนุนการทางาน เช่น ความรเู้ บอ้ื งตน้ เกย่ี วกบั งานดา้ นกราฟฟิก ไดอะลอ็ ก เลเอาท์ การควบคุมอเี วนท์ เป็นตน้ ภำคที่ 5 แสดงไลบารพ่ี น้ื ฐานสาคญั ๆ ของภาษาไพธอน เพ่อื ใหผ้ อู้ ่านสามารถเลอื กนาไปใชก้ บั งานไดอ้ ย่างเหมาะสม ตารางต่อไปน้ี เป็นการสรปุ วา่ หนงั สอื เลม่ น้เี หมาะกบั ใครบา้ ง ดงั น้ี ภำคท่ี เนื้อหำเหมำะสมกบั ใครบ้ำง? 1 ผทู้ ส่ี นใจ นกั เรยี น นิสติ นกั ศกึ ษา นกั พฒั นาโปรแกรมระดบั ตน้ ทไ่ี มม่ คี วามรพู้ น้ื ฐานดา้ นการ พฒั นาโปรแกรมมาก่อน หรอื เพงิ่ เรม่ิ หดั เขยี นโปรแกรม หรอื ไมเ่ คยศกึ ษาเรอ่ื งการทางานของ ระบบคอมพวิ เตอร์ และซอฟตแ์ วรค์ อมพวิ เตอร์ 2 ผทู้ ส่ี นใจ นกั เรยี น นิสติ นกั ศกึ ษา อาจารย์ นกั วจิ ยั นกั พฒั นาโปรแกรมระดบั ตน้ ถงึ ระดบั กลาง ทม่ี คี วามรพู้ น้ื ฐานดา้ นระบบคอมพวิ เตอร์ และการพฒั นาโปรแกรมมาบา้ งแลว้ หรอื เคยเขยี นโปรแกรมดว้ ยภาษาอ่นื ๆ มาแลว้ (แต่ถา้ ตอ้ งการปพู น้ื ฐานการทางานของระบบ คอมพวิ เตอร์ กค็ วรอ่านภาคท่ี 1 ประกอบดว้ ย) 3 ผทู้ ส่ี นใจ นกั เรยี น นิสติ นกั ศกึ ษา อาจารย์ นกั วจิ ยั นกั พฒั นาโปรแกรมระดบั กลาง ถงึ สงู ทม่ี ี ความรพู้ น้ื ฐานดา้ นระบบคอมพวิ เตอร์ และการพฒั นาโปรแกรมมาเป็นอยา่ งดแี ลว้ หรอื เคย เขยี นโปรแกรมดว้ ยภาษาอ่นื ๆ มาแลว้ หรอื ตอ้ งการเปลย่ี นภาษา หรอื ตอ้ งการใชค้ ุณสมบตั ิ ของภาษาไพธอนในการพฒั นางานใหส้ อดคลอ้ งกบั งานของตน หรอื ภาษาเดมิ ทใ่ี ชง้ านอย่มู ี ขอ้ จากดั ในการใชง้ าน 4 ผทู้ ส่ี นใจ นกั เรยี น นสิ ติ นกั ศกึ ษา อาจารย์ นกั วจิ ยั นกั พฒั นาโปรแกรมระดบั เรม่ิ ต้น ถงึ สงู ท่ี มคี วามรพู้ น้ื ฐานดา้ นระบบคอมพวิ เตอร์ และการพฒั นาโปรแกรมมาแลว้ เพ่อื ตอบสนองต่อ งานดา้ นกราฟฟิก และตอบโตก้ บั ผใู้ ชง้ านดว้ ยเมาส์ เป็นตน้ 5 สาหรบั ผทู้ ส่ี นใจ โดยเขยี นโปรแกรมภาษาไพธอนมาแลว้

วิธีกำรอ่ำนหนังสือเล่มนี้ สาหรบั วธิ กี ารอ่านหนงั สอื เล่มน้ี ควรเรม่ิ จาก ตวั ผอู้ ่านตอ้ งประเมนิ ความสามารถของตนเองก่อน โดยการเทยี บกบั ตารางดา้ นบนทก่ี ลา่ วมาแลว้ จากนนั้ เรมิ่ อ่านตามความสามารถทผ่ี อู้ ่านมอี ยู่ ตวั อยา่ งเชน่ เมอ่ื ผอู้ ่านประเมนิ ตนเองแลว้ ว่าอยใู่ นระดบั เรมิ่ ตน้ (เคยเขยี นโปรแกรมมาบา้ งแต่เรม่ิ จะลมื เลอื นแลว้ ) เมอ่ื เทยี บกบั ตารางแลว้ ผอู้ ่านควรจะเรมิ่ ตน้ อ่านในภาคท่ี 2 ซง่ึ ในภาคท่ี 2 กม็ หี ลายบท ประกอบอยู่ ในทน่ี ้ี ถา้ ผอู้ ่านคดิ ว่าเขา้ ใจเรอ่ื งเกย่ี วกบั นิพจน์ (Expression) เป็นอย่างดแี ลว้ กส็ ามารถ ขา้ มไปอ่านในบทต่อไปของภาคท่ี 2 ไดเ้ ลย แต่มขี อ้ ทค่ี วรจดจาไวว้ า่ แมว้ า่ ผอู้ ่านจะเคยเขยี นโปรแกรม ดว้ ยภาษาอ่นื มาเป็นอยา่ งดแี ลว้ กต็ าม แต่ไมเ่ คยไดศ้ กึ ษาภาษาไพธอนมาก่อนเลย ผเู้ ขยี นแนะนาว่า ผอู้ ่านควรอ่านภาคท่ี 2 ทงั้ หมด เน่อื งจากไวยกรณ์ (Syntax) ของภาษาไพธอนจะมคี วามแตกต่างจาก ภาษาระดบั สงู อ่นื ๆ พอสมควร ทงั้ น้เี พราะภาษาไพธอนไดด้ ดั แปลง และแกไ้ ขขอ้ ดอ้ ย ของภาษา ระดบั สงู อ่นื ๆ แลว้ นามาบรรจไุ วใ้ นภาษาไพธอนนนั่ เอง สญั ลกั ษณ์ที่ใช้กบั หนังสือเล่มนี้  ตอ้ งการเน้นว่าบรรทดั นนั้ ๆ ว่ามคี วามสาคญั และควรอ่านอยา่ งละเอยี ด หรอื หมายถงึ ลาดบั ขนั้ ตอนของการทางาน เชน่ เปิดโปรแกรม  เลอื กเมนู 1  … เป็นตน้ Note: เน้อื หา ขอ้ ความ หรอื คาอธบิ ายทค่ี วรจดจาเอาไว้ เพราะจะเป็นประโยชน์ต่อการ เขยี นโปรแกรม Caution! เป็นสงิ่ ทผ่ี เู้ ขยี นโปรแกรมควรจะระมดั ระวงั หรอื หลกี เลย่ี งการกระทาดงั กลา่ ว Input file: เป็นแฟ้มขอ้ มลู อนิ พตุ สาหรบั ใชใ้ นการเขยี นโปรแกรม Tips: เป็นเคลด็ ลบั ขอ้ เสนอแนะ หรอื เกลด็ ความรทู้ ช่ี ่วยในการเขยี นโปรแกรม OUTPUT: เอาตพ์ ุตของโปรแกรม , , .. ลาดบั ขนั้ ตอนการทางานของโปรแกรม

สารบญั โดยยอ่ หน้า คำนำ แนะนำเกย่ี วกบั หนงั สอื ภาคที่ 1: แนะนาเบอื้ งต้นเกี่ยวกบั การเขียนโปรแกรม………………………………………………...1 บทท่ี 1 ระบบคอมพวิ เตอรท์ ำงำนอยำ่ งไร…………………………………………………………2 บทท่ี 2 โปรแกรมภำษำไพธอน ……………………………………..…………………………..18 ภาคท่ี 2 : การเขียนโปรแกรมภาษาไพธอนขนั้ พื้นฐาน………………………………………………43 บทท่ี 3 โครงสรำ้ งกำรเขยี นโปรแกรมภำษำไพธอน………………………………………..……45 บทท่ี 4 ตวั แปร กำรกำหนดคำ่ และชนิดขอ้ มลู ………………………………………………......61 บทท่ี 5 นิพจน์ ตวั ดำเนินกำร และตวั ถูกดำเนนิ กำร………………………..…………………...98 บทท่ี 6 เงอ่ื นไข กำรตดั สนิ ใจ กำรควบคุมทศิ ทำง และกำรทำซ้ำ……………………………..111 บทท่ี 7 ฟังชนั (Functions) …………………………………………………………………….153 บทท่ี 8 โมดลู และแพค็ เกจ……………………………..………………………………………..181 บทท่ี 9 กำรจดั กำรขอ้ ผดิ พลำด…………………………….…………………………………...190 บทท่ี 10 กำรจดั กำรแฟ้มขอ้ มลู …………………………….…………………………………...211 บทท่ี 11 กำรเขยี นโปรแกรมเชงิ วตั ถุ……………………….…………………………………..229 ภาคท่ี 3: การเขียนโปรแกรมภาษาไพธอนขนั้ สงู ……………………………………………………269 บทท่ี 12 นิพจน์ปกติ และกำรประมวลผลขอ้ ควำม……….……………………………………270 บทท่ี 13 ไพธอนกบั ฐำนขอ้ มลู ……….…………………………………………………………304 บทท่ี 14 เวบ็ และซจี ไี อ……….…………………………………………..……………………..317

บทท่ี 15 กำรเขยี นโปรแกรมกบั มลั ตเิ ธรดและระบบเครอื ขำ่ ย……..………………………….343 บทท่ี 16 กำรเขยี นโปรแกรมระบบสำรสนเทศภมู ศิ ำสตรเ์ บอ้ื งตน้ ...…………………………375 บทท่ี 17 โครงสรำ้ งขอ้ มลู เบอ้ื งต้น………………………………………...……………………407 บทท่ี 18 ปกณิ กะโปรแกรมมง่ิ ………………………………….…………...………………….433 ภาคที่ 4: การเขียนโปรแกรมกราฟฟิ ก……………………………………………………………..…474 บทท่ี 19 กำรเขยี นโปรแกรมกรำฟฟิกดว้ ยไพธอน…………………………………………….475 ภาคที่ 5: Standard Library of Python……………………………………………………………….568 1. ฟังชนั ภำยในสำหรบั ขอ้ มลู พน้ื ฐำน………………………………………….……………….568 2. ฟังชนั ภำยในสำหรบั ขอ้ มลู เชงิ ประกอบ……………………………………………………..597 3. เมธอดเกย่ี วกบั กำรบรหิ ำรจดั กำรแฟ้มขอ้ มลู และไดเรคทรอร…่ี ……………………………613 บรรณานุกรม………….……………………………….……………………..…………………………631 ดชั นีคาศพั ท.์ .…………………………………………………………………………………………….634

สารบญั โดยละเอียด หน้า ภาคท่ี 1: แนะนาเบอื้ งต้นเก่ียวกบั การเขียนโปรแกรม……………….………………………………..1 บทที่ 1 ระบบคอมพิวเตอรท์ างานอย่างไร………………………………………………………………2 1. ควำมเขำ้ ใจพน้ื ฐำนเกย่ี วกบั ระบบคอมพวิ เตอร…์ ……………………………………………2 2. ภำษำคอมพวิ เตอร…์ …………………………………………………………………………..3 3. กำรแปลภำษำ………………………………………………………………………………….6 4. ขนั้ ตอนกำรพฒั นำโปรแกรม…………………………………………………………………..8 5. หลกั กำรเขยี นผงั งำน…………………………………………………………………………..9 6. หลกั กำรเขยี นรหสั เทยี ม หรอื ซโู ดโคด้ ………………………………………………….……14 บทที่ 2 โปรแกรมภาษาไพธอน ……………………………………..…………………………………..18 1. ภำษำไพธอนคอื อะไร…………………………………………………………………………18 2. คุณสมบตั ิ และควำมสำมำรถของภำษำไพธอน……………………………………………..18 3. ประวตั กิ ำรสรำ้ งภำษำไพธอน………………………………………………………………..22 4. งำนดำ้ นต่ำงๆ ทไ่ี พธอนสนับสนุนในปัจจบุ นั ………………………………………………..24 5. ตวั อยำ่ งหน่วยงำนทเ่ี ลอื กใชไ้ พธอน…………………………………………………………26 6. ตวั อยำ่ งซอฟตแ์ วรท์ เ่ี ขยี นดว้ ยไพธอน………………………………………………………27 7. กำรตดิ ตงั้ และใชง้ ำนไพธอนบนระบบปฏบิ ตั กิ ำรวนิ โดวส์…………….…………………….28 8. กำรตดิ ตงั้ และใชง้ ำนไพธอนบนระบบปฏบิ ตั กิ ำรยนู ิกซ์-ลนิ ุกซ…์ ……..……………………31 กำรตดิ ตงั้ แบบ package บนลนิ ุกซ์ Centos/Fedora…………………………………..31 กำรตดิ ตงั้ แบบ package บนลนิ ุกซ์ Ubuntu/ LinuxMint/Debian……………………..31 กำรตดิ ตงั้ แบบ Manual บนลนิ ุกซ-์ ยนู ิกส…์ …………………………………………….32 9. กำรตดิ ตงั้ และใชง้ ำนไพธอนบนระบบปฏบิ ตั กิ ำรแมคอนิ ทอช……………………………..33 10. กำรใชง้ ำนไพธอน Python shell (IDLE: Python GUI) และ Command line บนวนิ โดวส.์ 33 วธิ กี ำรใชง้ ำน Python shell (IDLE: Python GUI) …………………………………….33 วธิ กี ำรใชง้ ำน Python ผ่ำนทำงคอมมำนดไ์ ลน์ (Command line) …………………….36 ปัญหำของ Python shell และ Python (Command line) …………………………….36 กำรสงั่ รนั โปรแกรมพรอ้ มกบั สง่ ค่ำตวั แปร argv, argc…………………………………37 กำรส่งคำ่ Arguments ผ่ำนทำง Command-Line………………………………………38

กำรตรวจสอบควำมผดิ พลำดของโปรแกรม…………………………………………….39 กำรตรวจสอบโปรแกรมโดยใช้ Debug………………………………………………….40 กำรตรวจสอบแบบใช้ Break point……………………………………………………...41 สรปุ กำรใชง้ ำน Python Debugger…………………………………………………….42 ภาคท่ี 2 : การเขียนโปรแกรมภาษาไพธอนขนั้ พื้นฐาน………………………………………………43 บทที่ 3 โครงสร้างการเขียนโปรแกรมภาษาไพธอน………………………………………..…………45 1. สวสั ดี ฉนั คอื ไพธอน Hello, I’m Python…………………………………………………….46 2. โครงสรำ้ งกำรเขยี นโปรแกรมไพธอน………………………………………………………..48 3. ไวยกรณ์พน้ื ฐำนทจ่ี ำเป็นอยำ่ งยง่ิ ตอ้ งจดจำ…………………………………………………49 4. คำสงั่ กำรแสดงผล…………………………………………………………………………….52 กำรพมิ พส์ ตรงิ หรอื สำยอกั ขระ………………………………………………………….54 กำรแปลงรปู แบบสำยอกั ขระ…………………………………………………………….55 กำรแสดงผลเลขทศนิยม…………………………………………………………………57 กำรเตมิ สญั ลกั ษณ์ และจดั ตำแหน่งหน้ำทศนยิ ม……………………………………….58 5. คำสงั่ รบั ค่ำขอ้ มลู จำกแป้นพมิ พ์ หรอื คยี บ์ อรด์ ………………………………………………58 6. คำสงั่ ช่วยเหลอื help ()……………………………………………………………………….60 บทท่ี 4 ตวั แปร การกาหนดค่าและชนิดข้อมลู ……………………………………………….............61 1. หลกั กำรตงั้ ช่อื ตวั แปร (Identifier)……………………………………………………………61 2. กำรใชง้ ำนตวั แปร (Using variables)………………………………………………………..62 3. คำสงวน (Reserved word, Keyword)………………………………………………………64 4. ชนดิ ขอ้ มลู …………………………………………………………………………………….64 ขอ้ มลู พน้ื ฐำน………………………………………………………………………..64 ขอ้ มลู ตวั เลข…………………………………………………………………….64 ขอ้ มลู ชนดิ สำยอกั ษร……………………………………………………………69 ขอ้ มลู เชงิ ประกอบ…………………………………………………………………...75 ลสิ ต…์ …………………………………………………………………………...75 ตวั ดำเนนิ กำรพน้ื ฐำนของลสิ ต์………………………………………..77 ทพั เพลิ (Tuples)………………………………………………………………..79 ตวั ดำเนินกำรพน้ื ฐำนทใ่ี ชก้ บั ทพั เพลิ …………………………………82

ดกิ ชนั นำรี (Dictionary)………………………………………………………..84 เซต (Sets)……………………………………………………………………..88 สรปุ กำรใชง้ ำนขอ้ มลู พน้ื ฐำนและขอ้ มลู เชงิ ประกอบ…………………………95 บทท่ี 5 นิพจน์ ตวั ดาเนินการ และตวั ถกู ดาเนินการ………………………………………………..98 1. ตวั ดำเนินกำรทำงคณติ ศำสตร…์ …………………………………………………………….98 2. ตวั ดำเนินกำรทำงดำ้ นกำรเปรยี บเทยี บ……………………………………………………100 3. ตวั ดำเนนิ กำรกำหนดค่ำ…………………………………………………………………….101 4. ตวั ดำเนินกำรระดบั บติ ……………………………………………………………………...103 5. ตวั ดำเนินกำรทำงตรรกศำสตร…์ …………………………………………………………..106 6. ตวั ดำเนนิ งำนกำรเป็นสมำชกิ ………………………………………………………………107 7. ตวั ดำเนนิ กำรเอกลษั ณ์……………………………………………………………………..108 8. ลำดบั ควำมสำคญั ของตวั ดำเนินกำร……………………………………………………….109 บทท่ี 6 เงื่อนไข การตดั สินใจ การควบคมุ ทิศทาง และการทาซา้ …………………………………111 1. กำรควบคมุ ทศิ ทำงแบบเลอื กทำ……………………………………………………………112 กำรควบคุมทศิ ทำงแบบ if……………………………………………………………...112 กำรควบคมุ ทศิ ทำงแบบ if…else……………………………………………………...115 กำรควบคมุ ทศิ ทำงแบบ if…elif………………………………………………………..118 กำรควบคุมทศิ ทำงแบบ nested if……………………………………………………..122 2. ควบคมุ ทศิ ทำงแบบวนรอบ หรอื ทำซำ้ (Loop, Iteration)…………………………………126 คำสงั่ While loop……………………………………………………………………….126 กำรวนซ้ำไมร่ จู้ บ (The Infinite Loop) ………………………………………………..128 กำรใชค้ ำสงั่ else รว่ มกบั while และ for……………………………………………...129 คำสงั่ ควบคุมกำรทำซ้ำ (Loop control statements) ………………………………...135 คำสงั่ break……………………………………………………………………136 คำสงั่ continue………………………………………………………………..138 คำสงั่ pass…………………………………………………………………….139 คำสงั่ for loop…………………………………………………………………………..140 กำรอำ้ งถงึ ขอ้ มลู สมำชกิ โดยกำรชต้ี ำแหน่งของ for loop……………………142

ฟังชนั range…………………………………………………………………..143 กำรใช้ else statement กบั for loop…………………………………………145 ลปู ซอ้ น (Nested loops) ………………………………………………………………150 บทที่ 7 ฟังชนั (Functions) …………………………………………………………………………….153 1. ฟังกช์ นั คอื อะไร?…………………………………………………………………………….153 2. ประโยชน์ของฟังชนั …………………………………………………………………………153 3. กำรประกำศฟังชนั …………………………………………………………………………..154 4. กำรเรยี กใชฟ้ ังชนั …………………………………………………………………………...155 5. กำรส่งผ่ำนอำรก์ วิ เมนต์……………………………………………………………………..156 Pass by value………………………………………………………………………….157 Pass by reference…………………………………………………………………….158 6. ชนิดของอำรก์ วิ เมนตท์ ส่ี ่งใหฟ้ ังชนั …………………………………………………………160 Required arguments………………………………………………………………….160 Keyword arguments…………………………………………………………………..161 Default arguments…………………………………………………………………….162 Variable-length arguments…………………………………………………………...163 7. กำรสรำ้ งฟังก์ชนั โดยไม่ระบุช่อื ……………………………………………………………..164 ขอ้ ดขี อง Anonymous functions………………………………………………………165 ขอ้ เสยี ของ Anonymous functions……………………………………………………165 8. กำรสง่ คำ่ กลบั จำกฟังชนั ……………………………………………………………………169 9. กำรส่งค่ำกลบั จำกฟังชนั หลำยค่ำ…………………………………………………………..173 10. ขอบเขตของตวั แปร…………………………………………………………………………174 ตวั แปรโกลบอล…………………………………………………………………………174 ตวั แปรชนดิ โลคอล……………………………………………………………………..174 11. กำรเรยี กตวั เอง หรอื กำรเวยี นเกดิ …………………………………………………………177 บทท่ี 8 โมดลู และแพค็ เกจ……………………………..……………………………………………….181 1. โมดลู คอื อะไร? ……………………………………………………………………………..181 2. กำรเรยี กใชง้ ำนโมดลู ……………………………………………………………………….182

กำรใชค้ ำสงั่ import………………………………………………………………………….182 กำรใชค้ ำสงั่ from module import function……………………………………………….182 กำรใชค้ ำสงั่ from module import *………………………………………………………..182 กำรใชค้ ำสงั่ import OldModule as NewModule…………………………………………183 ควำมแตกต่ำงระหว่ำง import, from module import function และ import *…………...185 ตำแหน่งทอ่ี ย่ขู องกำรโหลดโมดลู มำใชง้ ำน………………………………………………..186 PYTHONPATH…………………………………………………………………………….187 กำรโหลดโมดลู มำใชง้ ำนใหม่……………………………………………………………….187 3. แพค็ เกจ (Packages) ………………………………………………………………………187 บทท่ี 9 การจดั การข้อผิดพลาด…………………………….………………………………………….190 1. ขอ้ ผดิ พลำด (Exceptions) คอื อะไร?………………………………………………………190 2. กำรจดั กำรขอ้ ผดิ พลำด (Exceptions handling) ………………………………………...191 กำรตรวจจบั ควำมผดิ พลำดแบบไมก่ ำหนด Exceptions…………………………………194 กำรตรวจจบั ควำมผดิ พลำดแบบหลำย Exceptions……………………………………...195 กำรตรวจจบั ควำมผดิ พลำดแบบ try…else…finally………………………………………197 อำรก์ วิ เมนตข์ อง Exception………………………………………………………………..200 กำรตรวจจบั ควำมผดิ พลำดดว้ ยคำสงั่ Raising……………………………………………202 กำรสรำ้ ง Exception ขน้ึ มำใชง้ ำนเอง……………………………………………………...205 3. กำรยนื ยนั ในสมมตฐิ ำน (Assertions) ……………………………………………………..206 ขอ้ กำหนดในกำรใช้ assert…………………………………………………………………206 ประโยชน์ของ assert……………………………………………………………………….207 ตำแหน่งทน่ี ยิ มวำง assert ไว…้ ……………………………………………………………207 คำแนะนำเพม่ิ เตมิ อ่นื ๆ เกย่ี วกบั กำรใชง้ ำน assert……………………………………….207 บทที่ 10 การจดั การแฟ้มข้อมลู …………………………….………………………………………….211 1. แฟ้มขอ้ มลู คอื อะไร? ………………………………………………………………………..211 2. กำรบรหิ ำรจดั กำรกบั แฟ้มขอ้ มลู ……………………………………………………………211 กำรเปิดและปิดแฟ้ม……………………………………………………………………212 กำรเปิดแฟ้ม…………………………………………………………………...212

คณุ สมบตั ทิ เ่ี กย่ี วขอ้ งกบั แฟ้มขอ้ มลู …………………………………………..214 กำรปิดแฟ้ม……………………………………………………………………214 กำรดำเนินกำรกบั แฟ้มขอ้ มลู …………………………………………………………..216 กำรอ่ำนแฟ้มขอ้ มลู ……………………………………………………………216 กำรอ่ำนแฟ้มขอ้ มลู ทลี ะบรรทดั ……………………………………………….219 กำรอ่ำนแฟ้มขอ้ มลู ทลี ะคำ…………………………………………………….219 ตวั ชต้ี ำแหน่งในแฟ้มขอ้ มลู ……………………………………………………221 กำรเขยี นแฟ้มขอ้ มลู …………………………………………………………..223 กำรใชค้ ำสงั่ with กบั แฟ้มขอ้ มลู ……………………………………………...224 กำรจดั กำรแฟ้มและไดเรคทรอร…ี …………………………………………………….225 บทที่ 11 การเขียนโปรแกรมเชิงวตั ถ…ุ …………………….…………………………………………229 1. แนวคดิ เกย่ี วกบั หลกั กำรเขยี นโปรแกรม…………………………………………………...229 2. แนวคดิ เกย่ี วกบั กำรโปรแกรมเชงิ วตั ถุ……………………………………………………..229 แนวคดิ กำรเขยี นโปรแกรมเชงิ ฟังกช์ นั ………………………………………………...230 แนวคดิ เชงิ วตั ถุ (Object) ……………………………………………………………...230 ขอ้ ด-ี ขอ้ เสยี ของกำรเขยี นโปรแกรมเชงิ วตั ถุ…………………………………………..231 ควำมหมำยกำรโปรแกรมเชงิ วตั ถุ……………………………………………………..231 3. เรม่ิ ตน้ เขยี นโปรแกรมเชงิ วตั ถุดว้ ยไพธอน…………………………………………….…..237 กำรสรำ้ งคลำส………………………………………………………………………….237 กำรสรำ้ งอนิ สแตนซข์ องวตั ถุ…………………………………………………………..244 กำรเขำ้ ถงึ แอตทรบิ วิ ต์และเมธอด……………………………………………………...246 แอตทรบิ วิ ต์ชนิด built-in ในคลำส……………………………………………………..247 กำรลบวตั ถุทสี รำ้ งขน้ึ …………………………………………………………………..249 กำรสบื ทอดคณุ สมบตั ขิ องคลำส…………………………………………………….....251 กำรโอเวอรไ์ รดด์ ง้ิ เมธอด……………………………………………………………….258 กำรโอเวอรโ์ หลดดง้ิ เมธอด……………………………………………………………..261 กำรโอเวอรโ์ หลดตวั ดำเนินกำร………………………………………………………...263 กำรหอ่ หมุ้ ขอ้ มลู /กำรซ่อนขอ้ มลู ……………………………………………………….266 ภาคท่ี 3: การเขียนโปรแกรมภาษาไพธอนขนั้ สงู …………………………………………………...269

บทที่ 12 นิพจน์ปกติ และการประมวลผลข้อความ……….………………………………………...270 1. นพิ จน์ปกตคิ อื อะไร?……………………………………………………………………......270 2. นิพจน์ปกตอิ ยำ่ งงำ่ ย………………………………………………………………………..271 3. นพิ จน์ปกตใิ นไพธอน……………………………………………………………………….274 4. ไวยกรณ์ของนพิ จน์ปกต…ิ …………………………………………………………………274 1. สญั ลกั ษณ์ทใ่ี ชแ้ ทนตวั อกั ษรใดๆ เพยี ง 1 ตวั (.)…………………………………275 2. สญั ลกั ษณ์ทใ่ี ชเ้ ลอื กตวั อกั ขระใดๆ เพยี ง 1 ตวั จำกกลุ่มของอกั ขระ ([…])……..276 3. สญั ลกั ษณ์พเิ ศษอ่นื ๆ ทใ่ี ชส้ รำ้ ง Regex…………………………………………..278 4. กำรคน้ หำคำทต่ี ำแหน่งเรมิ่ ตน้ และสน้ิ สุดของขอ้ ควำม…………………………..289 5. เมธอด re.search()………………………………………………………………...291 6. กำรคน้ หำและแทนทค่ี ำดว้ ยเมธอด re.sub()……………………………………..297 7. เมธอด re.findall()…………………………………………………………………297 8. เมธอด re.match()…………………………………………………………………299 9. เมธอด re.split()……………………………………………………………………300 10. กำรกำหนดชอ่ื ใหก้ บั regex (Named group) ……………………………………301 11. ตวั อยำ่ งกำรเขยี น regex พรอ้ มคำอธบิ ำย………………………………………..302 บทที่ 13 ไพธอนกบั ฐานข้อมลู ……….………………………………………………………………..304 1. ฐำนขอ้ มลู คอื อะไร?…………………………………………………………………………304 2. กำรใชไ้ พธอนกบั ฐำนขอ้ มลู …………………………………………………………………305 3. กำรสรำ้ งฐำนขอ้ มลู และตำรำง………………………………………………………………309 4. คำสงั่ ดำเนินกำรเกย่ี วกบั ฐำนขอ้ มลู …………...……………………………………………311 1. คำสงั่ กำรเพมิ่ ระเบยี น (Insert Operation)………………………………………..311 2. คำสงั่ กำรอ่ำนระเบยี น (Read Operation)………………………………………..312 3. คำสงั่ กำรปรบั ปรงุ ระเบยี น (Update Operation)…………………………………313 4. คำสงั่ กำรลบระเบยี น (Delete Operation)………………………………………..314 5. กำรยนื ยนั และยกเลกิ คำสงั่ กำรดำเนินกำร………………………………………..315 6. คำสงั่ ยกเลกิ กำรเช่อื มต่อกบั ฐำนขอ้ มลู (Disconnect)……………………………316

บทท่ี 14 เวบ็ และซีจีไอ……….…………………………………………..……………………………..317 1. เวบ็ และซจี ไี อคอื อะไร?……………………………………………………………………...317 2. กำรตดิ ตงั้ เวบ็ เซริ ฟ์ เวอรแ์ ละกำรปรบั แต่ง………………………………………………….320 3. กำรเขยี นโปรแกรม CGI …………………………………………………………..……….322 เมธอด HTTP GET…………...…………………………………………………………….326 เมธอด HTTP POST……………………………………………………………………….326 กำรส่งขอ้ มลู ของ Checkbox ไปประมวลผลกบั CGI สครปิ ต์…………………………….329 กำรส่งขอ้ มลู ของ Radio button ไปประมวลผลกบั CGIสครปิ ต…์ ……………………….330 กำรส่งขอ้ มลู ของ Text Area ไปประมวลผลกบั CGI สครปิ ต์…………………………….331 กำรสง่ ขอ้ มลู ของ Drop Down Box ไปประมวลผลกบั CGI สครปิ ต์………………..……333 กำรใชค้ ุกก้ี (Cookie) ใน CGI สครปิ ต์……………………………………………………..334 กำรอพั โหลดแฟ้มดว้ ย CGI สครปิ ต…์ ……………………………………………………..337 กำรประยกุ ต์ CGI สครปิ ตท์ ำงำนรว่ มกบั ฐำนขอ้ มลู ……………………………………….339 บทท่ี 15 การเขียนโปรแกรมกบั มลั ติเธรดและระบบเครอื ข่าย……..……………………………..343 1. เธรดและโพรเซส…………………………………………………………………………….343 2. กำรเขยี นโปรแกรมกบั เธรด……………………………………..………………………….345 1. โมดลู Threading…………………………………………………………………..346 2. ซงิ โครไนซเ์ ธรด (Threads Synchronization)……………………………………349 3. กำรจดั ลำดบั ควำมสำคญั ของควิ สำหรบั มลั ตเิ ธรด………………………………..352 3. กำรเขยี นโปรแกรมเครอื ขำ่ ยแบบไคลเอน็ ต์-เซริ ฟ์ เวอร์ (Clients-Servers)……..………..355 1. หมำยเลขไอพแี อดเดรส (IP Address)…………………………………………....355 2. พอรต์ , เซริ ฟ์ เวอร์ และไคลเอน็ ต์ (Ports, Servers and Clients)…………….….356 3. เรม่ิ ตน้ กำรเขยี นโปรแกรมเซริ ฟ์ เวอร-์ ไคลเอน็ ต…์ …………………………….…357 4. กำรเขยี นโปรแกรมพดู คุยผ่ำนเน็ตเวริ ค์ (Chat)…………………………………..363 5. โปรแกรม Chat ทส่ี ำมำรถรองรบั ไคลเอน็ ตพ์ รอ้ มๆ กนั หลำยเครอ่ื ง……………367 บทที่ 16 การเขียนโปรแกรมระบบสารสนเทศภมู ิศาสตรเ์ บือ้ งต้น….…………………………….375 1. ระบบสำรสนเทศภมู ศิ ำสตร…์ ………………………………………………………………375

2. กำรตดิ ตงั้ โปรแกรม ArcGIS………………………………………………………………..377 3. กำรเขยี นโปรแกรมไพธอนกบั GIS (ArcGIS 10.x) ………………………………………379 3.1 กำรเรยี กใชง้ ำน Arcpy site package ดว้ ยไพธอน…………………………………...379 3.2 กำรเรยี กใช้ Tools ใน ArcGIS ดว้ ยไพธอน…………………………………………..381 3.3 กำรสรำ้ งตวั แปรเพ่อื ใชง้ ำนร่วมกบั arcpy……………………………………………..383 3.4 กำรเรยี กใชง้ ำนโมดลู ใน arcpy package……………………………………………...385 3.5 กำรอำ้ งองิ แผนทท่ี ใ่ี ชง้ ำนภำยใน ArcMap…………………………………………….385 3.6 กำรอำ้ งองิ แผนทท่ี ใ่ี ชง้ ำนภำยนอก ArcMap…………………………………………..386 3.7 กำรแสดงเฟรมขอ้ มลู (Data frame)…………………………………………………...387 3.8 กำรแสดงเลเยอร์ (Layers)……………………………………………………………..388 3.9 กำรคดั กรองเฉพำะเลเยอรท์ ต่ี อ้ งกำร…………………………………………………..389 3.10 กำรปรบั เปลย่ี นขอบเขตของแผนท่…ี ………………………………………..390 3.11 แสดงรำยชอ่ื ตำรำง (Tables) ………………………………………………...391 3.12 กำรเพม่ิ เลเยอรใ์ นเอกสำรแผนท่ี โดยใช้ AUTO_ARRANGE………………392 3.13 กำรเพมิ่ เลเยอรล์ งในแผนทโ่ี ดยกำรกำหนดตำแหน่งในเฟรมขอ้ มลู ………...393 3.14 กำรเปลย่ี นสญั ลกั ษณ์ (Symbology) ในเลเยอร…์ …………………………...394 3.15 ปรบั ปรงุ คุณสมบตั ติ ่ำงๆ ในเลเยอร์ (Layer properties) ……………………395 3.16 กำรคน้ หำตำแหน่งขอ้ มลู ตน้ ฉบบั ของแฟ้มแผนทแ่ี ละแฟ้มเลเยอร์………….398 3.17 กำรแกป้ ัญหำแหล่งขอ้ มลู ผดิ พลำดดว้ ยเมธอด………………………………400 3.18 กำรแกไ้ ขแหล่งขอ้ มลู ดว้ ยคำสงั่ MapDocument.replaceWorkspaces()…..401 3.19 แกไ้ ขแหล่งขอ้ มลู ในระดบั เลเยอร์ (Layer) และตำรำง (TableView)………..403 3.20 กำรคน้ หำกำรเช่อื มโยงแหล่งขอ้ มลู ทผ่ี ดิ พลำดทงั้ หมดในไดเรคทรอร…ี …...405 บทท่ี 17 โครงสรา้ งข้อมลู เบอื้ งต้น………………………………………...…………………………..407 1. กำรประเมนิ ประสทิ ธภิ ำพอลั กอรทิ มึ จำกเวลำทใ่ี ชท้ ำงำน…………………………………407 2. กำรประเมนิ ประสทิ ธภิ ำพอลั กอรทิ มึ จำกกำรนบั จำนวนบรรทดั คำสงั่ …………………….409 3. กำรประเมนิ ประสทิ ธภิ ำพอลั กอรทิ มึ จำกกำรคำนวณหน่วยควำมจำ……………………..411 4. กำรประเมนิ ประสทิ ธภิ ำพอลั กอรทิ มึ ดว้ ยฟังก์ชนั อตั รำกำรเตบิ โต………………………..413 5. กำรวเิ ครำะห์ Best-case, Worst-case และ Average-case……………………….……..419 6. กำรจดั เรยี งขอ้ มลู (Sorting) ……………………………………………………………….419 1. กำรจดั เรยี งขอ้ มลู แบบ Insertion Sort………………………………………………...420

2. กำรจดั เรยี งขอ้ มลู แบบ Selection Sort………………………………………………..422 3. กำรจดั เรยี งขอ้ มลู แบบ Bubble Sort…………………………………………………..425 4. กำรจดั เรยี งขอ้ มลู แบบ Merge Sort…………………………………………………...427 7. กำรคน้ หำขอ้ มลู (Searching) ……………………………………………………………...429 1. กำรคน้ หำขอ้ มลู แบบลำดบั (Sequential Search) …………………………………...429 2. กำรคน้ หำขอ้ มลู แบบพบั ครง่ึ (Binary Search) ………………………………………431 บทที่ 18 ปกิณกะโปรแกรมม่ิง………………………………….…………...…………………………433 1. วนั และเวลำ (Date/Time)…………………………………………………………………..433 2. สง่ จดหมำยอเิ ลก็ ทรอนิกส์ (Email) ………………………………………………………..435 3. กำรประยกุ ตใ์ ชฟ้ ังชนั map, filter, reduce, lambda กบั ขอ้ มลู แบบลำดบั ……………….437 4. ไพธอน Generators, yield…………………………………………………………………441 5. กำรเขยี นโปรแกรมไพธอนดว้ ย Eclipse…………………………………………………...443 6. กำรแปลงไพธอนสครปิ ตเ์ ป็น EXE (exceutable) ………………………………………...451 7. Decorator Vs Function…………………………………………………………………….453 8. เมธอด .format()…………………………………………………………………………….457 9. อำเรยแ์ ละเมทรกิ ซ์ (Array and Matrix) …………………………………………………..459 10. กำรสรำ้ งเน็ตเวริ ค์ กรำฟดว้ ย NetworkX…………………………………………………...464 11. กำรพรอ็ ตกรำฟ (Plot Graph) ดว้ ย MATPLOTLIB, NUMPY และ SCIPY……………..468 ภาคที่ 4: การเขียนโปรแกรมกราฟฟิ ก………………………………………………………………..472 บทท่ี 19 การเขียนโปรแกรมกราฟฟิ กด้วยไพธอน……………………………………………….....473 1. แนวควำมคดิ ในกำรออกแบบ GUI…………………………………………………………474 2. กำรสรำ้ ง GUI ดว้ ย Tk……………………………………………………………………...478 1. Widgets…………………………………………………………………………………478 2. กำรเรยี กใชง้ ำน Widgets………………………………………………………………479 3. กำรจดั กำรรปู ทรงเลขำคณติ ใหก้ บั Widgets (Geometry management)…………...481 4. กำรจดั กำรกบั เหตุกรำณ์ต่ำงๆ (Event Handling)……………………………………482 5. กำรตอบสนองต่อเหตุกำรณ์ทเ่ี กดิ ขน้ึ (Command Callbacks)………………………482

6. กำรผกู เหตุกำรณ์ต่ำงๆ เขำ้ กบั ไพธอน………………………………………………..483 7. สรปุ ขนั้ ตอนกำรสรำ้ ง GUI ดว้ ย tkinter และ tkk……………………………………..484 3. กำรจดั วำง Widgets ดว้ ยเลขำคณติ (Geometry management)………………………...485 1. เมธอด pack()…………………………………………………………………………..485 2. เมธอด grid()……………………………………………………………………………487 3. เมธอด place()………………………………………………………………………….488 4. คุณสมบตั พิ น้ื ฐำนของ Widgets…………………………………………………………….489 1. Dimension……………………………………………………………………………...489 2. Color……………………………………………………………………………………490 3. Font……………………………………………………………………………………..491 4. Anchors………………………………………………………………………………...492 5. Relief styles……………………………………………………………………………492 6. Bitmaps…………………………………………………………………………………493 7. Cursors…………………………………………………………………………………494 5. กำรสรำ้ งและใชง้ ำน Widgets พน้ื ฐำน……………………………………………………..487 1. Frame…………………………………………………………………………………..496 2. Button…………………………………………………………………………………..499 3. Canvas…………………………………………………………………………………502 4. Checkbutton……………………………………………………………………………506 5. Entry…………………………………………………………………………………….510 6. Label……………………………………………………………………………………514 7. Listbox………………………………………………………………………………….517 8. Menubutton…………………………………………………………………………….522 9. Message………………………………………………………………………………..524 10. Menu…………………………………………………………………………………....525 11. Radiobutton………………………………………………………………………....…530 12. Scale…………………………………………………………………………………....532 13. Scrollbar………………………………………………………………………………..535 14. Text…………………………………………………………………………………..…538 15. Toplevel……………………………………………………………………………...…543 16. Spinbox…………………………………………………………………………………545 17. LabelFrame…………………………………………………………………………….547

18. MessageBox………………………………………………………………………..…449 19. Widgets อ่นื ๆ ทน่ี ่ำสนใจ………………………………………………………………550 6. ตวั อยำ่ งกำรประยกุ ตใ์ ชง้ ำนไพธอน GUI…………………………………………………..552 1. เครอ่ื งคดิ เลขขนำดเลก็ (Mini-Calculator)…………………………………………….552 2. เกมส์ Tic-Tac-Toe……………………………………………………………………..557 ภาคที่ 5: Standard Library of Python……………………………………………………………….567 1. ฟังชนั ภายในสาหรบั ข้อมลู พื้นฐาน…………………………………………………………..568 กำรเปลย่ี นชนิดขอ้ มลู …………………………………………………………………..568 ฟังชนั คำนวณทำงคณติ ศำสตร…์ ……………………………………………………...572 ฟังชนั สุ่มตวั เลข…………………………………………………………………………576 ฟังชนั ตรโี กณมติ …ิ ……………………………………………………………………..578 คำ่ คงทท่ี ำงคณติ ศำสตร…์ ……………………………………………………………..582 เมธอดและฟังชนั ทด่ี ำเนนิ กำรกบั สตรงิ ………………………………………………..582 2. ฟังชนั ภายในสาหรบั ข้อมลู เชิงประกอบ……………………………………………………..597 ฟังชนั และเมธอดสำหรบั ลสิ ต์…………………………………………………………………..598 ฟังชนั สำหรบั ลสิ ต์………………………………………………………………………598 เมธอดสำหรบั ลสิ ต์……………………………………………………………………...600 ฟังชนั ภำยในสำหรบั ทพั เพลิ …………………………………………………………………….603 ฟังชนั ภำยในสำหรบั ทพั เพลิ …………………………………………………………...603 ฟังชนั และเมธอดสำหรบั ดกิ ชนั นำร…ี ………………………………………………………….604 ฟังชนั สำหรบั ดกิ ชนั นำร…ี ……………………………………………………………..604 เมธอดสำหรบั ดกิ ชนั นำร…ี …………………………………………………………….605 ฟังชนั และเมธอดสำหรบั เซต…………………………………………………………………...609 ฟังชนั สำหรบั เซต……………………………………………………………………….609 เมธอดสำหรบั เซต………………………………………………………………………609 3. เมธอดเกี่ยวกบั การบริหารจดั การแฟ้มข้อมลู และไดเรคทรอรี่………………………613 บรรณานุกรม………….…………………………………………………………………………….631 ดชั นีคาศพั ท.์ .………….…………………………………………………………………………….634

ภาคที่ 1 แนะนาเบอื้ งต้นเกี่ยวกบั การเขียนโปรแกรม (Introduction to basics programming) บทท่ี 1 ระบบคอมพวิ เตอรท์ ำงำนอยำ่ งไร บทท่ี 2 โปรแกรมภำษำไพธอน

บทท่ี 1 ระบบคอมพิวเตอรท์ ำงำนอย่ำงไร (How does the computer system work?) 1. ควำมเข้ำใจพื้นฐำนเกี่ยวกบั ระบบคอมพิวเตอร์ (Basics of computer system) ระบบคอมพวิ เตอรม์ คี วามสามารถในการคานวณ ประมวลผลขอ้ มลู ดว้ ยความเรว็ สงู และลด ภาระงานอนั ซบั ซอ้ นทม่ี นุษยท์ าไดย้ ากใหล้ ดลง ระบบคอมพวิ เตอรป์ ระกอบไปดว้ ย 5 ส่วนทส่ี าคญั คอื 1) อปุ กรณ์ฮำรด์ แวร์ (Hardware) หมายถงึ อุปกรณ์ต่างๆ ทป่ี ระกอบเขา้ เป็น ตวั เครอ่ื งคอมพวิ เตอร์ เชน่ หน่วยประมวลผลกลาง (CPU : Central processing unit) มหี น้าทใ่ี นการประมวลผลคาสงั่ หรอื ขอ้ มลู ต่างๆ หน่วยความจาหลกั (Main memory) ทาหน้าทจ่ี ดั เกบ็ ขอ้ มลู หรอื คาสงั่ ต่างๆ เพ่อื ประมวลผล อุปกรณ์แสดงขอ้ มลู (Output device) ทาหน้าทใ่ี นการแสดงผลต่างๆ ไดแ้ ก่ จอภาพ และเครอ่ื งพมิ พ์ หน่วยความจาสารอง (Auxiliary storage) มหี น้าทใ่ี นการจดั เกบ็ ขอ้ มลู ชนิดถาวร เช่น ฮารด์ ดสิ ก์ อุปกรณ์รบั ขอ้ มลู (Input device) เชน่ เมาส์ คยี บ์ อรด์ และตวั ถงั หรอื ตวั กลอ่ ง คอมพวิ เตอร์ (Case) เป็นต้น 2) ชุดของคาสงั่ ทท่ี าหน้าทส่ี งั่ งาน และควบคมุ การทางานของคอมพวิ เตอร์ เรยี กวา่ โปรแกรม หรือซอฟตแ์ วรค์ อมพิวเตอร์ (Computer programs) ซอฟตแ์ วรด์ งั กล่าวถกู พฒั นามาจากภาษาคอมพวิ เตอร์ (Programming language) ภาษาใดภาษา หน่งึ เช่น ภาษา C/C++ เป็นตน้ โดยโปรแกรมเมอร์ (Programmer) ซง่ึ เป็นผพู้ ฒั นา ซอฟตแ์ วรด์ งั กลา่ ว สาหรบั ซอฟตแ์ วรค์ อมพวิ เตอร์ แบง่ ออกเป็น 2 ประเภทคอื  ซอฟต์แวรร์ ะบบ (System software) เป็นซอฟตแ์ วรท์ ท่ี าหน้าทจ่ี ดั การ และ ควบคมุ ทรพั ยากรต่างๆ ของเครอ่ื งคอมพวิ เตอร์ และอานวยความสะดวกดา้ น เครอ่ื งมอื สาหรบั การทางานพน้ื ฐานต่างๆ ตงั้ แต่ผใู้ ชเ้ รม่ิ เปิดเครอ่ื งคอมพวิ เตอรไ์ ป จนถงึ การปิดระบบ เช่น ระบบปฏบิ ตั กิ าร (Operating system) และซอฟตแ์ วรท์ ่ี ตดิ ต่อ และควบคุมอุปกรณ์ฮารด์ แวรโ์ ดยตรง (Device driver program) เป็นตน้ ห น้ า 2

 ซอฟตแ์ วรป์ ระยกุ ต์ (Application software) หมายถงึ ซอฟตแ์ วรท์ พ่ี ฒั นาขน้ึ เพอ่ื ใชง้ านเฉพาะดา้ นตามความตอ้ งการของผใู้ ช้ เชน่ งานดา้ นการจดั ทาเอกสาร การ ทาบญั ชี ระบบฐานขอ้ มลู หรอื เวบ็ แอพพลเิ คชนั เป็นตน้ 3) ข้อมลู /สำรสนเทศ (Data/Information) คอื ขอ้ มลู ต่างๆ ทน่ี ามาประมวลผลดว้ ยระบบ คอมพวิ เตอร์ เพอ่ื ใหไ้ ดผ้ ลลพั ธต์ ามทผ่ี ใู้ ชต้ อ้ งการ ยกตวั อยา่ งขอ้ มลู เกย่ี วกบั นกั ศกึ ษา เช่น รหสั นกั ศกึ ษา ช่อื -นามสกุล ทอ่ี ยู่ หมายเลขโทรศพั ท์ ผล การศกึ ษา ทอ่ี ยอู่ าศยั เป็นตน้ 4) บคุ คลำกร (Peopleware) คอื เจา้ หน้าทป่ี ฏบิ ตั งิ านต่างๆ และผใู้ ชเ้ ครอ่ื งคอมพวิ เตอรใ์ น หน่วยงานนัน้ ๆ บคุ ลากรดา้ นคอมพวิ เตอรม์ คี วามสาคญั มาก เพราะการ ใชเ้ ครอ่ื งคอมพวิ เตอรท์ างานต่างๆ นนั้ จะตอ้ งมกี ารจดั เตรยี มระบบก่อน เสมอ 5) กระบวนกำรทำงำน (Documentation/Procedure) เป็นขนั้ ตอนการทางานเพอ่ื ใหไ้ ด้ ผลลพั ธจ์ ากคอมพวิ เตอร์ ในการทางานกบั คอมพวิ เตอรจ์ าเป็นตอ้ งใหผ้ ใู้ ชเ้ ขา้ ใจ ขนั้ ตอนการทางาน ตอ้ งมรี ะเบยี บปฏบิ ตั ใิ หเ้ ป็นแบบเดยี วกนั มกี ารจดั ทาค่มู อื การบารงุ รกั ษาเครอ่ื งคอมพวิ เตอร์ และซอฟตแ์ วร์ ใหเ้ ป็นมาตรฐานเดยี วกนั 2. ภำษำคอมพิวเตอร์ (Computer languages) ภำษำคอมพิวเตอร์ คอื ภาษาทม่ี นุษยส์ รา้ งขน้ึ เพอ่ื ใชต้ ดิ ต่อสอ่ื สารกบั ระบบคอมพวิ เตอร์ เพอ่ื ใหส้ ามารถปฏบิ ตั ติ ามคาสงั่ ได้ โดยแบ่งออกเป็น 5 ระดบั คอื 1) ภำษำเครื่อง (Machine language) เป็นภาษาทเ่ี กดิ ขน้ึ ในยคุ แรกสุด และเป็นภาษาเดยี วท่ี เครอ่ื งคอมพวิ เตอรส์ ามารถทาความเขา้ ใจคาสงั่ ได้ ภาษาเครอ่ื งจะแทนขอ้ มลู หรอื คาสงั่ ใน โปรแกรมดว้ ยกลุ่มของตวั เลข 0 และ 1 หรอื ทเ่ี รยี กวา่ เลขฐานสอง ซง่ึ จะสมั พนั ธก์ บั การเปิด (On) และการปิด (Off) ของสญั ญาณไฟฟ้าภายในเครอ่ื งคอมพวิ เตอร์ ดงั นนั้ จงึ เป็นภาษาทม่ี ี การทางานทร่ี วดเรว็ ทส่ี ดุ ตารางท่ี 1.1 แสดงตวั อยา่ งคาสงั่ ของภาษาเครอ่ื ง ตำรำงที่ 1.1 แสดงคาสงั่ ภาษาเครอ่ื ง ภำษำเครอื่ ง กำรดำเนิ นกำร ควำมหมำย 1000000100100101 Load Memory 5 -> R1 โหลดขอ้ มลู ในหน่วยความจาตาแหน่งท่ี 5 ใหก้ บั รจี ี 1000000101000101 Load Memory 10 -> R2 สเตอร์ R1 1010000100000110 R1 + R2 -> R0 โหลดขอ้ มลู ในหน่วยความจาตาแหน่งท่ี 10 ใหก้ บั รจี ี สเตอร์ R2 รวมคา่ R1 และ R2 แลว้ เกบ็ ในรจี สี เตอร์ R0 ห น้ า 3

1000001000000110 Store R0 -> Memory 6 นาขอ้ มลู ใน R0 เกบ็ ลงหน่วยความจาตาแหน่งท่ี 6 1111111111111111 HALT หยุดการทางาน 2) ภำษำระดบั ตำ่ (Low level language) สบื เน่อื งจากภาษาเครอ่ื งเป็นภาษาทเ่ี ขา้ ใจไดย้ าก และมคี วามยงุ่ ยากเป็นอยา่ งมากในการเขยี นโปรแกรม ดงั นนั้ จงึ ไมเ่ ป็นทน่ี ิยม ส่งผลใหม้ กี าร ใชง้ านอยา่ งจากดั ดงั นนั้ จงึ ไดม้ ผี คู้ ดิ คน้ พฒั นาภาษาคอมพวิ เตอรข์ น้ึ ใหมเ่ พ่อื แกป้ ัญหา ดงั กลา่ ว เรยี กวา่ ภำษำแอสแซมบลี (Assembly language) โดยการนาตวั อกั ษร ภาษาองั กฤษเป็นรหสั แทนการทางาน และตงั้ ชอ่ื ตวั แปรแทนตาแหน่งทอ่ี ยทู่ ใ่ี ชเ้ กบ็ ขอ้ มลู การใชส้ ญั ลกั ษณ์ช่วยใหก้ ารเขยี นโปรแกรมทาความเขา้ ใจไดง้ า่ ยยงิ่ ขน้ึ และยงั คงคุณสมบตั ิ ดา้ นความเรว็ เหมอื นกบั ภาษาระดบั ต่าไวด้ ว้ ย ตวั อยา่ งในตารางท่ี 1.2 ตำรำงที่ 1.2 แสดงคาสงั่ ภาษาระดบั ต่า (Assembly code) ภำษำแอสแซมบลี กำรดำเนินกำร ควำมหมำย LOAD R1, M[5] Load Memory 5 -> R1 โหลดขอ้ มลู ในหน่วยความจาตาแหน่งท่ี 5 ใหก้ บั รจี ี สเตอร์ R1 LOAD R2, M[10] Load Memory 10 -> R2 โหลดขอ้ มลู ในหน่วยความจาตาแหน่งท่ี 10 ใหก้ บั รจี ี สเตอร์ R2 ADD R0, R1, R2 R1 + R2 -> R0 รวมคา่ R1 และ R2 แลว้ เกบ็ ในรจี สี เตอร์ R0 SAVE R0, M[6] Store R0 -> Memory 6 นาขอ้ มลู ใน R0 เกบ็ ลงหน่วยความจาตาแหน่งท่ี 6 HALT HALT หยุดการทางาน โปรแกรมทถ่ี กู เขยี นดว้ ยภาษาแอสแซมบลนี นั้ ยงั ไมส่ ามารถนาไปใชง้ านกบั เครอ่ื ง คอมพวิ เตอรไ์ ดท้ นั ที จาเป็นตอ้ งมกี ารแปลคาสงั่ ภาษาแอสแซมบลเี ป็นภาษาเครอ่ื งเสยี ก่อน สาหรบั โปรแกรมแปลภาษาน้มี ชี ่อื วา่ “แอสเซมเบลอร์ (Assembler)” ซง่ึ แตกต่างไปตาม สถาปัตยกรรมของเครอ่ื งคอมพวิ เตอรแ์ ต่ละชนดิ ดงั นนั้ แอสเซมเบลอร์จะไมส่ ามารถใชแ้ ปล โปรแกรมภาษาแอสเซมบลขี า้ มสถาปัยกรรมได้ เช่น สถาปัยกรรม 16 บติ กบั 32 บติ เป็นตน้ แมว้ ่าภาษาแอสเซมบลใี ชต้ วั อกั ษรช่วยในการพฒั นาโปรแกรมแลว้ กต็ าม แต่กย็ งั มคี วามหา่ งไกล กบั ภาษาทม่ี นุษยส์ ามารถเขา้ ใจไดอ้ ย่มู าก ภาษาแอสเซมบลจี งึ มผี ใู้ ชง้ านเพม่ิ ขน้ึ ไม่มากนกั โดย สว่ นใหญ่มกั นิยมใชใ้ นกรณที ต่ี อ้ งการควบคมุ การทางานของเครอ่ื งคอมพวิ เตอรโ์ ดยตรง 3) ภำษำระดบั สงู (High level language) เป็นภาษาทถ่ี กู สรา้ งขน้ึ เพอ่ื ชว่ ยอานวยความ สะดวกในการเขยี นโปรแกรม กลา่ วคอื ลกั ษณะของคาสงั่ จะประกอบดว้ ยคาต่างๆ ใน ภาษาองั กฤษ ซง่ึ ผอู้ ่านสามารถทาความเขา้ ใจความหมายไดท้ นั ที จงึ ทาใหผ้ เู้ ขยี นโปรแกรม สามารถเพม่ิ ขดี ความสามารถในการพฒั นาโปรแกรมไดด้ กี วา่ การเขยี นโปรแกรมดว้ ย ห น้ า 4

ภาษาระดบั ต่าอย่างภาษาแอสแซมบลี หรอื ภาษาเครอ่ื ง สาหรบั ตวั อยา่ งโปรแกรมภาษา ระดบั สงู อาทเิ ช่น ภาษาฟอรแ์ ทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาปาสคาล (Pascal) ภาษาเบสกิ (BASIC) ภาษาวชิ วลเบสกิ (Visual Basic) ภาษาซี (C) และภาษาจา วา (Java) เป็นตน้ โปรแกรมทเ่ี ขยี นดว้ ยภาษาระดบั สงู แต่ละภาษาจะตอ้ งมโี ปรแกรมทท่ี า หน้าทแ่ี ปลภาษาระดบั สงู ใหเ้ ป็นภาษาเครอ่ื งเสมอ เช่น โปรแกรมแปลภาษา C/C++ เป็น ภาษาเครอ่ื ง โปรแกรมแปลภาษาปาสคาลเป็นภาษาเคร่อื ง เป็นตน้ โดยปกตแิ ลว้ คาสงั่ แต่ ละคาสงั่ ในภาษาระดบั สงู จะถูกแปลเป็นภาษาเครอ่ื งมากกวา่ 1 คาสงั่ เสมอ ดงั ตวั อยา่ งใน ตารางท่ี 1.3 ตำรำงที่ 1.3 แสดงการเปรยี บเทยี บระหว่างคาสงั่ ภาษาระดบั สงู (ภาษา C)/ต่า/เครอ่ื ง ภำษำระดบั สูง ภำษำแอสแซมบลี ภำษำเครอื่ ง int X=880; X: .word 880 X = X + 5; LOAD R1 X 10010011000011110000000000100000 10011001000011110000000000000000 10000011111000100000000000000000 ADD R2 R1 #5 10110011000100100000000000000101 STORE R2 X 10010011000011110000000000100000 10011001000011110000000000000000 10000101111001000000000000000000 HALT 11111111111111111111111111111111 รปู ท่ี 1.1 แสดงความสมั พนั ธร์ ะหว่างคอมพวิ เตอรฮ์ ารด์ แวร์ ภาษาเครอ่ื ง ภาษาแอสแซมบลี และ ภาษาระดบั สงู สงั เกตว่าภาษาทม่ี คี วามเรว็ สงู ทส่ี ดุ จะอยใู่ นระดบั ต่าทส่ี ดุ ภาษาทม่ี ี มนุษยเ์ ขา้ ใจไดง้ า่ ยทส่ี ุดจะอยใู่ นระดบั บนสดุ (ใกลเ้ คยี งภาษามนุษยม์ ากทส่ี ดุ ) และภาษาท่ี คอมพวิ เตอรเ์ ขา้ ใจไดด้ ที ส่ี ดุ คอื ภาษาเครอ่ื งนนั่ เอง (อยใู่ นระดบั ต่าทส่ี ดุ ) รปู ท่ี 1.1 แสดงความสมั พนั ธร์ ะหว่างภาษาคอมพวิ เตอรช์ นดิ ต่างๆ กบั ฮารด์ แวร์ ห น้ า 5

4) ภำษำระดบั สงู มำก (Very high-level language) เป็นภาษาทผ่ี เู้ ขยี นโปรแกรมเพยี งแต่ กาหนดว่าตอ้ งการใหโ้ ปรแกรมทาอะไรบา้ งกส็ ามารถเขยี นโปรแกรมไดท้ นั ที โดยไม่ตอ้ ง ทราบวา่ ทางานไดอ้ ย่างไร ทาใหก้ ารเขยี นโปรแกรมสามารถทาไดง้ า่ ย และรวดเรว็ ขอ้ มลู จะ เกบ็ อยใู่ นฐานขอ้ มลู (Database) เรยี กภาษาน้ีว่า ภาษาเรยี กคน้ ขอ้ มลู (Query language) หรอื SQL (Structured Query Language) ตวั อยา่ งของภาษาแสดงในตารางท่ี 1.4 ตำรำงท่ี 1.4 แสดงคาสงั่ ในภาษา SQL คำสงั่ ในภำษำ SQL ควำมหมำย select * from employees ดงึ ขอ้ มลู จาก Table employees โดยตอ้ งการดงึ where employee_id > 1 order แถวทม่ี ี employee_id มากกวา่ 1 และเรยี งตาม by employee_id ASC employee_id จากน้อยไปหามาก 5) ภำษำธรรมชำติ (Natural languages) เรยี กไดว้ ่าเป็น ภาษาธรรมชาติ เน่อื งจากมคี วาม ใกลเ้ คยี งกบั ภาษามนุษยม์ ากทส่ี ดุ ภาษาน้สี ามารถรองรบั เทคโนโลยปี ัญญาประดษิ ฐ์ (Artificial Intelligence : AI) หรอื ระบบผเู้ ชย่ี วชาญ (Expert System) ซง่ึ ทาใหเ้ ครอ่ื ง คอมพวิ เตอรส์ ามารถทจ่ี ะเขา้ ใจคาสงั่ จากเสยี งพดู และโตต้ อบกบั มนุษยไ์ ด้ เชน่ ภาษาโป รลอ็ ก (Prolog) ภาษาลสิ ป์ (Lisp) เป็นตน้ จากตารางท่ี 1.5 เป็นตวั อยา่ งการทางานของ ภาษาโปรลอ็ ก ทต่ี อ้ งการรวมค่าตวั เลข 2 จานวนเขา้ ดว้ ยกนั ตำรำง 1.5 ตวั อยา่ งภาษาธรรมชาติ (Prolog) คำสงั่ ภำษำโปรลอ็ ก ผลกำรทำงำน tart:- sum,nl. ?- start. sum:- write('X= '), read(X), X= |: 1. write('Y= '), read(Y), Y= |: 2. S is X+Y, Sum is 3 write('Sum is '), write(S). yes 3. กำรแปลภำษำ (Translation) การแปลภาษาของคอมพวิ เตอรแ์ บ่งออกเป็น 2 ประเภทคอื  คอมไพเลอร์ (Compiler) เป็นรปู แบบการแปลภาษาทต่ี อ้ งแปลโปรแกรมต้นฉบบั (Source code/Source program) ทงั้ โปรแกรมใหเ้ ป็นภาษาเครอ่ื งก่อนการทางาน เสมอ โดยระหว่างขนั้ ตอนการแปลภาษาน้ี คอมไพเลอรจ์ ะทาการตรวจสอบไวยากรณ์ ห น้ า 6

ของภาษา (Syntax) ถา้ มขี อ้ ผดิ พลาดทางไวยากรณ์ของภาษาเกดิ ขน้ึ (Syntax error) ก็ จะแจง้ ใหท้ ราบ เพอ่ื ใหผ้ เู้ ขยี นโปรแกรมแกไ้ ขใหถ้ ูกตอ้ งแลว้ จงึ แปลคาสงั่ ใหม่ เมอ่ื ผ่าน การแปลเรยี บรอ้ ยแลว้ และไมม่ ขี อ้ ผดิ พลาดใดๆ เกดิ ขน้ึ เรยี กโปรแกรมส่วนทแ่ี ปลเสรจ็ เรยี บรอ้ ยในขนั้ ตอนน้วี า่ ออปเจกตโ์ ปรแกรม (Object program หรอื Object module) แต่ออปเจกตโ์ ปรแกรมน้ีจะยงั ไมส่ ามารถทางานไดท้ นั ที จาเป็นตอ้ งผา่ นกระบวนการ ลงิ ค์ (Link) หรอื การรวมออปเจกตโ์ ปรแกรมของผเู้ ขยี นเขา้ กบั ไลบราร่ี (Library) ของ ระบบก่อน จากนนั้ จงึ เป็นโปรแกรมทส่ี ามารถทางานได้ หรอื เป็นภาษาเครอ่ื งทเ่ี รยี กว่า เอก็ ซซ์ คี วิ ทโ์ ปรแกรม (Execute program) หรอื โหลดโมดลู (Load module) ซง่ึ โดยทวั่ ไปแลว้ จะเป็นไฟลท์ ม่ี นี ามสกุลเป็น .exe หรอื .com และสามารถนาโปรแกรมน้ี ไปใชง้ านไดต้ ลอดโดยไมต่ อ้ งแปลใหมอ่ กี และทำงำนได้เรว็ แต่ถา้ มกี ารแกไ้ ข โปรแกรมตน้ ฉบบั แมเ้ พยี งเลก็ น้อย กจ็ าเป็นตอ้ งทาการแปลใหมต่ งั้ แต่ตน้ ดงั รปู ท่ี 1.2 รปู ท่ี 1.2 แสดงขนั้ ตอนการคอมไพลโ์ ปรแกรม  อินเทอรพ์ รเี ตอร์ (Interpreter) เป็นรปู แบบการแปลภาษาในลกั ษณะบรรทดั ต่อบรรทดั ในขณะโปรแกรมกาลงั ทางาน (อินเทอรพ์ รีเตอรจ์ ะทำกำรแปล และประมวลผลทีละ คำสงั่ ) ซง่ึ แตกต่างจากการแปลภาษาแบบคอมไพเลอร์ ถา้ ในระหว่างการแปลเกดิ พบ ขอ้ ผดิ พลาดทบ่ี รรทดั ใดกจ็ ะแสดงแจง้ เตอื นใหผ้ เู้ ขยี นโปรแกรมทราบทนั ที เพอ่ื ใหท้ า การแกไ้ ขใหถ้ กู ตอ้ งก่อนแปลบรรทดั ถดั ไป ดงั นนั้ เมอ่ื จะเรยี กใชง้ าน หรอื ประมวลผล โปรแกรมกจ็ ะตอ้ งทาการแปลโปรแกรมใหมท่ ุกครงั้ สง่ ผลใหก้ ารทำงำนช้ำกว่ำแบบ คอมไพเลอรม์ าก แต่ประโยชน์ของภาษาทถ่ี ูกแปลดว้ ยอนิ เตอรพ์ รเี ตอร์ คอื โปรแกรม จะมีโครงสร้ำงที่ง่ำยต่อกำรพฒั นำ ไมซ่ บั ซอ้ น และอ่านทาความเขา้ ใจไดง้ ่ายกว่า ตวั อยา่ งของภาษาทม่ี กี ารใชอ้ นิ เตอรพ์ รเี ตอร์ ไดแ้ ก่ ภาษาพเี อชพี (PHP) ภาษาเพริ ล์ (Perl) รวมถงึ ภาษาไพธอน (Python) ดว้ ย ดงั แสดงในภาพท่ี 1.3 จากสาเหตุทร่ี ปู แบบ ของการแปลภาษาทม่ี ขี อ้ เด่นขอ้ ดอ้ ยต่างกนั ดงั นนั้ จงึ มบี างภาษาประยกุ ตเ์ อาขอ้ ดขี อง การแปลภาษาทงั้ สองเขา้ ไวด้ ว้ ยกนั อยา่ งเช่น ภาษาเบสกิ เป็นตน้ ห น้ า 7

รปู ท่ี 1.3 แสดงขนั้ ตอนการทางานของอนิ เตอรพ์ รเี ตอร์ 4. ขนั้ ตอนกำรพฒั นำโปรแกรม (Software development) ในการพฒั นาโปรแกรมมขี นั้ ตอนทเ่ี รยี กว่า System development life cycle ดงั น้ี 1) คน้ หาความตอ้ งการของระบบ (System requirements) คอื การศกึ ษา และเกบ็ ความ ตอ้ งการของผใู้ ชโ้ ปรแกรม วา่ มคี วามตอ้ งการอะไรบา้ ง 2) วเิ คราะหร์ ะบบ (Analysis) คอื การนาเอาความตอ้ งการของผใู้ ชโ้ ปรแกรมมาวเิ คราะหว์ ่าจะ พฒั นาเป็นโปรแกรมตามทผ่ี ใู้ ชต้ อ้ งการไดห้ รอื ไม่ ถา้ ทาไดจ้ ะทาไดอ้ ย่างไรบา้ ง 3) การออกแบบระบบ (Design) เมอ่ื สรปุ ไดแ้ ลว้ วา่ โปรแกรมทจ่ี ะสรา้ งมลี กั ษณะใด ขนั้ ตอน ต่อมาคอื การออกแบบการทางานของโปรแกรมใหเ้ ป็นไปตามความตอ้ งการทว่ี เิ คราะหไ์ ว้ การออกแบบอาจจะออกแบบเป็นผงั งาน หรอื รหสั เทยี มกไ็ ด้ 4) การพฒั นาโปรแกรม (Coding) เมอ่ื ไดผ้ งั งานแลว้ ขนั้ ตอนต่อมาคอื การเขยี นโปรแกรมตาม ผงั งานทไ่ี ดอ้ อกแบบไว้ 5) การทดสอบ (System testing) เมอ่ื เขยี นโปรแกรมเสรจ็ เรยี บรอ้ ยแลว้ จะตอ้ งมกี ารทดสอบ เพอ่ื หาขอ้ ผดิ พลาดต่างๆ ของโปรแกรม เช่น โปรแกรมตรงตามความตอ้ งการของผใู้ ช้ หรอื ไม่ ถา้ พบขอ้ ผดิ พลาดกก็ ลบั ไปทาการออกแบบใหม่อกี ครงั้ (กลบั ไปทข่ี นั้ ตอนท่ี 3 แต่ ถา้ การวเิ คระหร์ ะบบไม่รดั กุมเพยี งพอ บางครงั้ อาจจาเป็นตอ้ งยอ้ นกลบั ไปดาเนินการใน ขนั้ ตอนท่ี 1 ใหมก่ ไ็ ด)้ 6) การดแู ลระบบ (Maintenance) เมอ่ื โปรแกรมผ่านการทดสอบแลว้ และผใู้ ชไ้ ดน้ าโปรแกรม ดงั กลา่ วไปใช้ ผพู้ ฒั นาจะต้องคอยดแู ล เน่อื จากอาจมขี อ้ ผดิ พลาดทห่ี าไมพ่ บในขนั้ ตอนการ ทดสอบโปรแกรม สาหรบั System development life cycle แสดงในรปู ท่ี 1.4 ห น้ า 8

รปู ท่ี 1.4 System development life cycle 5. หลกั กำรเขียนผงั งำน (Flowchart) ผงั งำน หรือ Flowchart เป็นกำรอธิบำยขนั้ ตอนวิธีกำรดำเนินงำนของ ระบบออกมำอย่ำงเป็นระบบ (อยใู่ นระหวา่ งขนั้ ตอนการวเิ คราะห์ และ การออกแบบระบบ) ซง่ึ ถูกเขยี นโดยใชร้ ปู สญั ลกั ษณ์ต่างๆ อธบิ ายถงึ กจิ กรรมทเ่ี กดิ ขน้ึ ในระบบงาน มเี สน้ เชอ่ื มโยงระหวา่ งสญั ลกั ษณ์อธบิ ายถงึ ความสมั พนั ธ์ และหวั ลกู ศรบอกถงึ ทศิ ทางขนั้ ตอนการทางาน เป็นตน้ การอธบิ ายขนั้ ตอนการทางานของระบบดว้ ยวธิ ี น้ี เป็นทน่ี ิยมมากกวา่ แบบอ่นื ๆ เน่อื งจากสามารถอธบิ ายลาดบั ขนั้ ตอนการทางานไดช้ ดั เจน มากกวา่ วธิ กี ารอ่นื ๆ เพราะผงั งานส่วนใหญ่จะถกู แสดงดว้ ยภาพ สญั ลกั ษณ์ เสน้ เช่อื ม ความสมั พนั ธ์ และกากบั ดว้ ยขอ้ ความทส่ี นั้ กระชบั สามารถตรวจสอบความถูกตอ้ งของ ระบบงานไดง้ า่ ย ผงั งานนิยมใชเ้ ขยี นแทนขนั้ ตอน คาอธบิ าย ขอ้ ความ หรอื คาพดู ทใ่ี ชใ้ น อลั กอรทิ มึ (Algorithm) เน่อื งจากมจี ดุ เด่นคอื สำมำรถอธิบำยขนั้ ตอนกำรดำเนินงำน ระหว่ำงผทู้ ี่เก่ียวข้อง ให้เข้ำใจได้ตรงกนั ไดด้ กี วา่ การอธบิ ายดว้ ยคาพดู ขอ้ ความ หรอื เทคนคิ การอธบิ ายแบบอ่นื ๆ ผงั งานมี 2 ชนิด คอื 1) ผงั งานระบบ (System flowchart) คอื ผงั งานทแ่ี สดงขนั้ ตอนการทางานในระบบ อยา่ งกวา้ งๆ แต่ไมเ่ จาะลงในระบบงานยอ่ ย 2) ผงั งานโปรแกรม (Program flowchart) คอื ผงั งานทแ่ี สดงถงึ ขนั้ ตอนในการทางาน ของโปรแกรม ตงั้ แต่รบั ขอ้ มลู คานวณ จนถงึ แสดงผลลพั ธ์ ประโยชน์ของผงั งำน 1. สามารถทาความเขา้ ใจ และแยกแยะปัญหาในระบบงานไดง้ า่ ย 2. แสดงลาดบั การทางานออกมาใหเ้ หน็ ไดอ้ ยา่ งชดั เจน 3. สามารถทาความเขา้ ใจระบบงานไดง้ า่ ย และรวดเรว็ เม่อื เวลาผ่านไปนาน ห น้ า 9

4. ช่วยในการตรวจสอบ และแกไ้ ขโปรแกรมไดง้ า่ ย เมอ่ื เกดิ ขอ้ ผดิ พลาด 5. ชว่ ยใหผ้ อู้ ่นื สามารถศกึ ษาการทางานของโปรแกรมไดอ้ ยา่ งงา่ ย และรวดเรว็ มากขน้ึ 6. ไมข่ น้ึ กบั ภาษาใดภาษาหน่งึ วิธีกำรเขียนผงั งำน  ใชส้ ญั ลกั ษณ์ตามทก่ี าหนดไว้  ใชล้ กู ศรแสดงทศิ ทางการไหลของขอ้ มลู จากบนลงล่าง หรอื จากซา้ ยไปขวา ยกเวน้ มกี ารทางานแบบยอ้ นกลบั  คาอธบิ ายในภาพควรมขี อ้ ความทส่ี นั้ กะทดั รดั และเขา้ ใจงา่ ย  ทกุ แผนภาพตอ้ งมลี กู ศรแสดงทศิ ทางเขา้ - ออก  ไมค่ วรโยงเสน้ เชอ่ื มผงั งานทอ่ี ยไู่ กลมากๆ ควรใชส้ ญั ลกั ษณ์จดุ เช่อื มต่อแทน  ผงั งานควรมกี ารทดสอบความถูกตอ้ งของการทางานก่อนนาไปเขยี นโปรแกรม ตำรำงท่ี 1.6 แสดงสญั ลกั ษณ์ต่างๆ ทถ่ี กู ใชใ้ นการเขยี น Flowchart ลำดบั สญั ลกั ษณ์ ช่ือเรยี ก ควำมหมำยของสญั ลกั ษณ์ 1 Start/End แทนจดุ เรม่ิ ตน้ และสน้ิ สุดการทางาน 2 Process การดาเนินงานยอ่ ยๆ ทเ่ี กดิ ขน้ึ ในระบบงาน เชน่ การประกาศตวั แปร การคานวณ 3 Decision เงอ่ื นไขการตดั สนิ ใจ หรอื ทางเลอื กในการ ดาเนินงาน 4 General นาเขา้ หรอื ส่งออกขอ้ มลู จากระบบ Input/Output คอมพวิ เตอรโ์ ดยไมร่ ะบุชนิดของอุปกรณ์ 5 Subprocess/ ระบบยอ่ ย ฟังชนั ยอ่ ย หรอื เรยี กโปรแกรม External Subroutine จากภายนอก 6 Database ฐานขอ้ มลู ทส่ี ามารถเกบ็ ขอ้ มลู ไดใ้ นปรมิ าณ มาก ใชส้ าหรบั รบั ขอ้ มลู เขา้ ระบบ หรอื จดั เกบ็ 7 External data ขอ้ มลู อ่นื ทน่ี าเขา้ -ส่งออก จากแหลง่ ขอ้ มลู อ่นื ภายนอก เช่น ขอ้ มลู จากต่างองคก์ ร ขอ้ มลู จากโปรแกรมอ่นื ๆ 8 Manual input รบั ขอ้ มลู จากผใู้ ชท้ ก่ี าหนดขอ้ มลู ขน้ึ มาใช้ งานเอง (การนาขอ้ มลู เขา้ ดว้ ยมอื ) ห น้ า 10

9 Display แสดงผลออกทางจอภาพ 10 Document ขอ้ มลู เป็นเอกสาร หรอื แสดงขอ้ มลู ออกทาง เครอ่ื งพมิ พ์ 11 Off-page reference ตอ้ งการเช่อื มโยงไปยงั หน้าอ่นื ๆ กรณที ไ่ี ม่ สามารถเขยี นผงั งานไดใ้ นหน้าเดยี ว 12 On-page reference ตอ้ งการเชอ่ื มโยงผงั งานอ่นื ๆ แต่อยใู่ นหน้า เพจเดยี วกนั 13 Arrow เสน้ ทางการดาเนินงาน ซง่ึ จะปฏบิ ตั ติ ามหวั ลกู ศรช้ี 14 Manual operation การทางานดว้ ยมอื (ทางานดว้ ยแรงคน) 15 Preparation กาหนดชอ่ื ตวั แปร ชนดิ ขอ้ มลู หรอื การ กาหนดค่าเรม่ิ ตน้ ต่างๆ ก่อนการทางาน 16 Sort จดั เรยี งขอ้ มลู ตามขอ้ กาหนดทต่ี งั้ ไว้ 17 Comment คาอธบิ ายการทางาน หลกั การเขยี นผงั งาน ผอู้ ่านจาเป็นตอ้ งเขา้ ใจโครงสรา้ งการเขยี น 3 แบบคอื โครงสรา้ งการ ทางานแบบตามลาดบั โครงสรา้ งการทางานแบบเลอื กกระทาตามเงอ่ื นไข และโครงสรา้ งการทางานแบบ การทาซ้า ซง่ึ มหี ลกั การเขยี นในแต่ละประเภทดงั ต่อไปน้ี 1. โครงสรา้ งการทางานแบบตามลาดบั (Sequence) เป็นรปู แบบการเขยี น Flowchart ทง่ี า่ ย ทส่ี ดุ คอื เขยี นใหก้ ารทางานเรมิ่ ตน้ จากบนลงลา่ ง (การทางานจะต่อเน่อื งกนั โดยเรมิ่ จาก ดา้ นบนลงมายงั ดา้ นลา่ ง) เขยี นคาสงั่ ทลี ะขนั้ ตอน หรอื คาสงั่ ละ 1 บรรทดั โดยมลี กู ศรชล้ี ง จากดา้ นบนลงดา้ นล่างเพ่อื แสดงลาดบั การทางาน เช่น สมมตใิ หง้ านชนดิ หน่ึงมกี ระบวนการ ทางานเป็น 3 ขนั้ ตอน โดยขนั้ ตอนแรกคอื อ่านขอ้ มลู จากผใู้ ช้ ขนั้ ตอนทส่ี องคอื การคานวณ และขนั้ ตอนสุดทา้ ยคอื การพมิ พข์ อ้ มลู ออกทางเครอ่ื งพมิ พ์ ซง่ึ สามารถแสดงไดด้ งั รปู ท่ี 1.5 ห น้ า 11

1 Start Input Read Data Input Input Execution 2 Printer Print 3 result Stop รปู ท่ี 1.5 โครงสรา้ งการทางานแบบตามลาดบั 2. โครงสรา้ งการทางานแบบเลอื กตดั สนิ ใจ หรอื เงอ่ื นไข (Decision หรอื Selection) คอื การ เขยี น Flowchart เมอ่ื ระบบงานเกดิ ทางเลอื กทจ่ี ะตอ้ งตดั สนิ ใจ หรอื เลอื กกระทาไปใน ทศิ ทางใดทศิ ทางหน่งึ โดยปกตจิ ะมเี หตุการณ์ใหก้ ระทา 2 แบบคอื เงอ่ื นไขเป็นจรงิ จะ กระทากระบวนการหน่งึ หรอื เป็นเทจ็ จะกระทาอกี กระบวนการหน่งึ แต่ถา้ การดาเนินงานมี ความซบั ซอ้ นมากขน้ึ จะตอ้ งใชเ้ งอ่ื นไขหลายชนั้ เช่น การตดั เกรดนกั ศกึ ษา เป็นตน้ จาก ตวั อยา่ งรปู ท่ี 1.6 แสดงผลการตดั สนิ ใจอยา่ งงา่ ย คอื ตอ้ งการตรวจสอบวา่ เลขจานวนเตม็ ท่ี รบั เขา้ มาเป็นเลขคห่ี รอื คู่ จากนนั้ พพิ มข์ อ้ ความว่าเป็นเลขจานวนค่หู รอื ค่ี Start Input Read Input Input integer Input = Processing Input % 2 False Input True == 0 Odd Even Stop รปู ที่ 1.6 โครงสรา้ งการทางานแบบเลอื กตดั สนิ ใจ ห น้ า 12

3. โครงสรา้ งการทางานแบบการทาซ้า (Repetition หรอื Loop) หมายถงึ กระบวนการทางานท่ี จาเป็นตอ้ งทาแบบเดมิ ซ้าๆ หลายๆ รอบ จนกว่าจะไดค้ าตอบทต่ี อ้ งการ หรอื จนกว่าจะจบ เงอ่ื นไขทก่ี าหนดไว้ ตวั อยา่ งเชน่ ตอ้ งการพมิ พข์ อ้ ความ “Hello, World” ซา้ กนั 5 ครงั้ ดงั รปู ท่ี 1.7 Start Integer i i for count =1 i=i+1 True Hello, i <= 5 World False Stop รปู ที่ 1.7 แสดงโครงสรา้ งการทางานแบบการทาซ้า ตวั อย่ำงกำรวิเครำะหร์ ะบบ และกำรเขียน Flowchart จงเขยี น Flowchart เพอ่ื แสดงผลการเรยี นเป็นเกรดแก่นกั ศกึ ษา โดยรบั คะแนนจาก แป้นพมิ พ์ และมเี งอ่ื นไขการใหเ้ กรดดงั เกณฑก์ ารใหค้ ะแนนดงั ต่อไปน้ี คะแนน เกรดท่ีได้ 80-100 A 75-79 B+ 70-74 B 65-69 C+ 60-64 C 55-59 D+ 50-54 D 0-49 F เรมิ่ ตน้ การเขยี น Flowchart 1. เขยี นสญั ลกั ษณ์เรมิ่ ตน้ (ใชส้ ญั ลกั ษณ์ลาดบั ท่ี 1 ในตารางท่ี 1.6) ดภู าพประกอบใน รปู ท่ี 1.8 ห น้ า 13

2. อ่านขอ้ มลู จากผใู้ ชง้ าน แลว้ เกบ็ ไวใ้ นตวั แปรชอ่ื Score (ใชส้ ญั ลกั ษณ์หมายเลข 4, 8 และ 13) 3. เปรยี บเทยี บว่าค่าขอ้ มลู ทอ่ี ยใู่ นตวั แปรชอ่ื Score มคี า่ อยรู่ ะหว่าง 80 – 100 หรอื ไม่ ถา้ ใช่ ใหพ้ มิ พเ์ กรด “A” ถา้ ไมใ่ ช่ใหเ้ ปรยี บเทยี บกบั ค่าในตารางเกรด ไปเรอ่ื ยๆ ถา้ ค่าใน Score อยใู่ นชว่ งของเกรดใดๆ ใหท้ าการพมิ พเ์ กรดทไ่ี ดอ้ อกทางจอภาพ แต่ ถา้ ไมใ่ ช่ หรอื ไมเ่ ป็นจรงิ ใหเ้ ล่อื นมาเปรยี บเทยี บไปเรอ่ื ยๆ จนกว่าจะไมส่ ามารถ เปรยี บเทยี บไดอ้ กี จะพมิ พเ์ กรด F (ใชส้ ญั ลกั ษณ์หมายเลข 3, 9 และ 13) 4. เมอ่ื ไมส่ ามารถเปรยี บเทยี บต่อไปไดอ้ กี แลว้ ใหจ้ บการทางาน (ใชส้ ญั ลกั ษณ์ หมายเลข 1, 12 และ 13) 1 Start 2 Read Score Input integer 3 True False A Score >= 80 4 3 Stop True False B+ Score >= 75 3 True False B Score >= 70 3 True False C+ Score >= 65 3 True False C Score >= 60 3 True False D+ Score >= 55 3 True False D Score >= 50 F รปู ท่ี 1.8 แสดง Flowchart การคานวณเกรดของนกั ศกึ ษา 6. หลกั กำรเขียนรหสั เทียม หรือซโู ดโค้ด (Pseudo Code) รหสั เทยี ม (Pseudo code) คอื การเขยี นขนั้ ตอนการดาเนนิ การของโปรแกรมใหอ้ ย่ใู น รปู แบบคาสงั่ ขอ้ ความภาษาองั กฤษทม่ี รี ปู แบบกะทดั รดั แต่ไมม่ กี ฎเกณฑท์ แ่ี น่นอนตายตวั ห น้ า 14

มองดคู ลา้ ยภาษาระดบั สงู ทใ่ี ชก้ บั เครอ่ื งคอมพวิ เตอร์ ซง่ึ ไมเ่ จาะจงภาษาใดภาษาหน่งึ รปู แบบ คาสงั่ ทน่ี ิยมใชเ้ ป็นมาตรฐาน แสดงในตารางท่ี 1.7 ตำรำงที่ 1.7 คาสงั่ มาตรฐานสาหรบั ใชเ้ ขยี นรหสั เทยี ม คำสงั่ (Keyword) ควำมหมำย WHILE คาสงั่ ใหท้ างานซ้า โดยตรวจสอบเงอ่ื นไขก่อนเขา้ ทางาน IF-THEN-ELSE คาสงั่ ใหเ้ ลอื กทาอยา่ งใดอยา่ งหน่งึ (จรงิ ทาหลงั IF เทจ็ ทาหลงั THEN) REPEAT-UNTIL คาสงั่ ใหท้ างานซา้ โดยอนุญาตใหท้ างานก่อนการตรวจสอบเงอ่ื นไข CASE คาสงั่ ใหเ้ ลอื กตดั สนิ ใจไดม้ ากกว่า 2 ทางเลอื ก FOR, LOOP คาสงั่ ใหว้ นซ้าจนกวา่ เงอ่ื นไขจะเป็นเทจ็ READ คาสงั่ อ่านขอ้ มลู เขา้ มาเพอ่ื ประมวลผล COMPUTE คาสงั่ ประมวลผลขอ้ มลู SET, INIT คาสงั่ กาหนดค่าเรม่ิ ตน้ ใหต้ วั แปร PRINT, DISPLAY คาสงั่ แสดงผลลพั ธข์ องการประมวลผล INCREASE คาสงั่ เพม่ิ คา่ ใหก้ บั ตวั แปร END คาสงั่ หยดุ การทางาน ADD, SUB, +, -, * คาสงั่ ดาเนินการทางคณติ ศาสตร์ เกณฑใ์ นกำรเขียนรหสั เทียม 1. ประโยคคาสงั่ แต่ละคาสงั่ ใหเ้ ขยี นเป็นภาษาองั กฤษทง่ี ่าย (ใชศ้ พั ทง์ า่ ยๆ) 2. เขยี นประโยคคาสงั่ 1 คาสงั่ ต่อหน่งึ บรรทดั เท่านนั้ 3. คาสงั่ หลกั (Keyword) ควรเขยี นตวั หนาเพอ่ื เน้นว่าตอ้ งการทาอะไร 4. ควรเขยี นคาสงั่ ใหม้ ลี กั ษณะเป็นแบบยอ่ หน้า เพ่อื แยกโครงสรา้ งการควบคุม และทาให้ ผอู้ ่านเขา้ ใจไดง้ า่ ย 5. คาสงั่ ถกู เขยี นจากบนลงล่างโดยมที างเขา้ -ออก เพยี งทางเดยี ว ขนั้ ตอนกำรเขียนรหสั เทียม ลาดบั ขนั้ ตอนการเขยี นรหสั เทยี มเพอ่ื สงั่ ใหร้ ะบบคอมพวิ เตอรด์ าเนนิ การแบ่งออกเป็น 6 ขนั้ ตอนดงั น้ี (ในการทางานจรงิ อาจไมจ่ าเป็นตอ้ งเรยี งลาดบั จาก 1 – 6 เสมอไป) ขนั้ ตอนที่ 1: การกาหนดค่าใหก้ บั ตวั เกบ็ ขอ้ มลู (ตวั แปร) ห น้ า 15

 การกาหนดค่าเรม่ิ ตน้ ใหต้ วั แปร ถอื วา่ เป็นขนั้ ตอนแรกสุดทส่ี มควรกระทาเป็นอยา่ งยงิ่ เพอ่ื เตรยี มตวั ก่อนการประมวลผล คาสงั่ ทน่ี ยิ มใช้ คอื INITIALIZE หรอื SET เชน่ SET Count = 1  การกาหนดค่าทเ่ี กดิ จากการประมวลผลไวใ้ นตวั แปรจะใชเ้ ครอ่ื งหมาย “=“ เชน่ Count = Count + 1 หรอื Sum = 50, Average = Sum / Count เป็นตน้ ขนั้ ตอนท่ี 2: การรบั ขอ้ มลู ทงั้ จากคยี บ์ อรด์ ตวั แปร หรอื จากแฟ้มขอ้ มลู คาสงั่ ทน่ี ยิ มใช้ คอื READ หรอื GET เช่น READ Input ขนั้ ตอนท่ี 3: การคานวณทางคณติ ศาสตร์ สามารถใชเ้ ครอ่ื งหมายทางคณติ ศาตรท์ ใ่ี ชก้ นั โดยทวั่ ไปไดต้ ามปกติ คอื +, -, *, /, %, ==, <>, ( ) เป็นตน้ เชน่ X = (G + 15) * 8/5 ขนั้ ตอนท่ี 4: การเปรยี บเทยี บ และการตดั สนิ ใจ คาสงั่ ทใ่ี ช้ คอื IF, THEN, ELSE ขนั้ ตอนที่ 5: การดาเนินงานแบบทาซ้า คาสงั่ ทใ่ี ช้ คอื WHILE, FOR, LOOP เป็นตน้ ขนั้ ตอนท่ี 6: การแสดงผลลพั ธ์ ทงั้ จากจอภาพ เครอ่ื งพมิ พ์ อุปกรณ์ภายนอกอ่นื ๆ คาสงั่ ทใ่ี ช้ คอื PRINT, WRITE, PUT, DISPLAY, OUTPUT เชน่ PRINT “Hello, Python” ตวั อย่ำงกำรเขียนรหสั เทียม สาหรบั การต้มมามา่ และการหาคา่ เฉลย่ี ของเกรดนิสติ จานวน N คน ตวั อยา่ งรหสั เทยี มการตน้ มามา่ (ภาษาไทย) 1. เตรยี มมามา่ ไว้ 1 ซอง 2. ฉีกซองมามา่ และเทลงถว้ ยเปล่า 3. ฉกี ซองเครอ่ื งปรงุ แลว้ เทลงถว้ ยเดมิ 4. ตม้ น้ารอ้ นใหเ้ ดอื ด 3 - 5 นาที แลว้ เทลงถว้ ย 5. ปิดฝา แลว้ รอ 3 นาที 6. เปิดฝา แลว้ รบั ประทาน ตวั อยา่ งรหสั เทยี มการหาค่าเฉลย่ี ของเกรดนสิ ติ จานวน N คน 1. SET total to zero 2. SET grade counter to one 3. WHILE grade counter is less than or equal to N 4. INPUT the next grade ห น้ า 16

5. ADD the grade into the total 6. INCREASE grade counter 7. SET the class average to the total divided by N 8. PRINT the class average. ในตวั อยา่ งรหสั เทยี มการหาคา่ เกรดเฉลย่ี ของนสิ ติ บรรทดั ท่ี 1 เป็นการกาหนดคา่ total ใหม้ คี า่ เป็น 0 โดยตวั แปรดงั กล่าวใชเ้ พอ่ื เกบ็ ค่าผลรวมของเกรดจานวน N ตวั บรรทดั ท่ี 2 กาหนดค่าให้ grade counter มคี า่ เป็น 1 ใชเ้ พ่อื เป็นตวั นบั จานวน บรรทดั ท่ี 3 เป็นการตรวจสอบเงอ่ื นไขว่า grade counter มคี า่ น้อยกว่า หรอื เท่ากบั N จรงิ หรอื ไม่ ถา้ เป็นจรงิ จะทาในบรรทดั ท่ี 4 ต่อไป แต่ถา้ เป็นเทจ็ โปรแกรม จะกระโดดไปทางานบรรทดั ท่ี 7 ซง่ึ บรรทดั น้ี เป็นการกาหนดคา่ ใหต้ วั แปร class average ซง่ึ ค่าท่ี กาหนดใหต้ วั แปรดงั กล่าวเป็นผลมาจากการนาเอาค่าทเ่ี กบ็ ในตวั แปร total หารดว้ ย N (สมการการหา ค่าเฉลย่ี ) และบรรทดั ท่ี 8 เป็นการพมิ พผ์ ลลพั ธค์ า่ เฉลย่ี ออกทางเอาตพ์ ตุ สาหรบั ในบรรทดั ท่ี 4 เป็นการ รบั คา่ เกรดของนสิ ติ จากอนิ พุต และบรรทดั ท่ี 5 จะเป็นคาสงั่ รวมเกรดของนิสติ แต่ละคนเขา้ ไวด้ ว้ ยกนั และเกบ็ ลงในตวั แปร total และบรรทดั ท่ี 6 เป็นการเพมิ่ ค่าใหต้ วั แปร grade counter ขน้ึ ครงั้ ละ 1 จนกว่าเงอ่ื นไขการวนรบั ขอ้ มลู เกรดจะเป็นเทจ็ นนั่ คอื จานวนนสิ ติ มากกว่า N นนั่ เอง จบบทท่ี 1 ห น้ า 17

บทที่ 2 โปรแกรมภาษาไพธอน (Python programming language) 1. ภาษาไพธอนคืออะไร (What’s python language) ไพธอน (Python = งเู หลอื ม ตามความหมายในพจนานุกรม) คอื ภาษาระดบั สงู ทใ่ี ชใ้ นการพฒั นาโปรแกรมอกี ภาษาหน่ึงทม่ี คี วามสามารถสงู ไม่ แพภ้ าษาอ่นื ๆ ทม่ี อี ยใู่ นปัจจบุ นั ถกู สรา้ งขน้ึ โดยนกั พฒั นาโปรแกรมช่อื Guido van Rossum เป็นชาวดชั ท์ (Dutch) ประเทศเนเธอรแ์ ลนด์ เกดิ เมอ่ื วนั ท่ี 31 มกราคม พ.ศ. 2499 ภาษาไพธอนไดร้ บั อทิ ธพิ ลมาจากภาษา ABC ซง่ึ มี ความสามารถในการจดั การเกย่ี วกบั ขอ้ ผดิ พลาดของโปรแกรม (Exception handling) ไดด้ ี และดงึ เอาความสามารถเด่นๆ ของภาษาระดบั สงู อ่นื ๆ มาประยกุ ตด์ ดั แปลงใชก้ บั ไพ ธอนดว้ ย สง่ ผลใหภ้ าษาไพธอนเป็นทน่ี ิยม และใชง้ านกนั อยา่ งกวา้ งขวางในปัจจุบนั เน่อื งจากเป็นภาษา ทส่ี ามารถเรยี นรไู้ ดง้ ่าย รวดเรว็ รปู แบบการเขยี นโปรแกรมมคี วามกระทดั รดั และมปี ระสทิ ธภิ าพสงู จาก การนาเอาคุณลกั ษณะเด่นๆ ของภาษาอ่นื ๆ มาเป็นพน้ื ฐานในการพฒั นาต่อยอดน้เี อง ไพธอนจงึ ถกู เรยี กว่าเป็นภาษาทม่ี หี ลายกระบวนทศั น์ หรอื หลายมุมมอง (Multi-paradigm languages) ซง่ึ เป็นการ ผสมผสานรวมเอาแนวความคดิ ในการพฒั นาซอฟตแ์ วรแ์ บบต่างๆ เขา้ ไวด้ ว้ ยกนั ใหอ้ ยใู่ นตวั ของไพธอน คอื Object-oriented programming, Structured programming, Functional programming และ Aspect-oriented programming 2. คณุ สมบตั ิและความสามารถของภาษาไพธอน (Features and capability of Python) ไพธอนถกู พฒั นาขน้ึ มาโดยไม่ขน้ึ กบั แพลตฟอรม์ (Platform independent) กล่าวคอื สามารถ ทางานไดท้ งั้ บนระบบปฏบิ ตั กิ ารตระกลวู นิ โดวส์ (Windows NT, 2000, 2008, XP, 7, 8, 8.1) ตระกูลยู นกิ ส-์ ลนิ กซ์ (Unix, Linux, xBSD) และตระกลู แมคดว้ ย (Macintosh) โดยระบบปฏบิ ตั กิ ารเหลา่ น้ตี ดิ ตงั้ เพยี งโปรแกรมแปลภาษาใหเ้ ป็นภาษาเครอ่ื งของสถาปัตยกรรมนนั้ ๆ เท่านนั้ ดขู อ้ มลู เพม่ิ เตมิ เกย่ี วกบั แพลตฟอรม์ ทไ่ี พธอนสนบั สนุนไดท้ เ่ี วบ็ ของไพธอน http://www.python.org ห น้ า 18

ภาษาไพธอนเป็นซอฟตแ์ วรเ์ สรี (Open source software) เหมอื นภาษาพเี อชพี (PHP) ทาให้ ทุกคนสามารถนาไพธอนมาพฒั นาโปรแกรมไดฟ้ รๆี โดยไมต่ อ้ งเสยี ค่าใชจ้ า่ ย และคุณสมบตั คิ วามเป็น ซอฟตแ์ วรเ์ สรี ทาใหม้ โี ปรแกรเมอรท์ วั่ โลกเขา้ มาช่วยกนั พฒั นาใหไ้ พธอนมคี วามสามารถสงู ขน้ึ เรอ่ื ยๆ สง่ ผลใหส้ ามารถครอบคลุมงานในลกั ษณะต่างๆ อยา่ งกวา้ งขวาง สามารถสรปุ คุณสมบตั ิ และ ความสามารถของภาษาไพธอนไดด้ งั ต่อไปน้ี คณุ สมบตั ิเด่นของภาษาไพธอน  โปรแกรมตน้ ฉบบั ทถ่ี ูกเขยี นขน้ึ ดว้ ยภาษาไพธอน สามารถนาไปประมวลผลไดก้ บั หลาย ระบบปฏบิ ตั กิ าร (Portable/Cross platform/Platform independent) เชน่ Unix, Linux, Microsoft-windows (NT, 2000, 2003, 2008, 2012, 95, 98, ME, XP, 7, 8, 8.1), Amiga, Macintosh, BeOS, AIX, AROS, AS/400, OS/2, xBSD, VMS, QNX, MS-DOS, OS/390, z/OS, Palm OS, PlayStation, Psion, Solaris, RISC OS, HP-UX, Pocket PC และ VMS เป็นตน้  ตวั ภาษาไพธอนถกู สรา้ งขน้ึ มาจากภาษาซี ทาใหไ้ ดร้ บั อทิ ธพิ ลไวยกรณ์ทางภาษาตดิ มาจาก ภาษาซดี ว้ ย ดงั นนั้ ผทู้ ค่ี ุน้ เคยกบั การเขยี นโปรแกรมภาษาซสี ามารถปรบั ตวั ในเขยี นภาษา ไพธอนไดไ้ มย่ าก  ภาษาไพธอนเป็นภาษาทส่ี วยงาม งา่ ยต่อการเรยี นรู้ (Readability) เขยี นโปรแกรมได้ กระชบั (Writability) เน่อื งจากมโี ครงสรา้ งของภาษาไม่ซบั ซอ้ นเขา้ ใจงา่ ย เป็นภาษาทม่ี ี ความยดื หยนุ่ สงู มาก (Flexibility) และมคี วามเสถยี รภาพ (Reliability)  ไพธอนมคี วามสามารถในการจดั การหน่วยความจาอตั โนมตั ิ (Garbage collection) สามารถบรหิ ารจดั การพน้ื ทห่ี น่วยความจาทใ่ี ชง้ านแบบไมต่ ่อเน่อื งใหส้ ามารถทางานได้ อยา่ งมปี ระสทิ ธภิ าพ ทาใหผ้ เู้ ขยี นโปรแกรมไมต่ อ้ งกงั วลเกย่ี วกบั การคนื หน่วยความจาคนื ใหก้ บั ระบบเหมอื นภาษาซี ห น้ า 19

 การแปลภาษาของภาษาไพธอนเป็นแบบอนิ เทอรพ์ รเี ตอร์ เป็นภาษาสครปิ ต์ คอื จะ ประมวลผลไปทลี ะบรรทดั ทาใหใ้ ชเ้ วลาในการเขยี นโปรแกรม และการคอมไพลไ์ ม่มาก เหมาะกบั งานดา้ นการดแู ลระบบ (System administration) เป็นอยา่ งยง่ิ  ไวยากรณ์อ่านงา่ ย เน่อื งจากภาษาไพธอนไดก้ าจดั การใชส้ ญั ลกั ษณ์ทใ่ี ชใ้ นการกาหนด ขอบเขต {…} ของโปรแกรมออกไป (สาหรบั ผทู้ เ่ี ขยี นภาษา C หรอื Java มาก่อน ในตอน แรกๆ จะไมค่ ่อยชอบนกั แต่เมอ่ื เขยี นไปเรอ่ื ยๆ จะรสู้ กึ ว่าคลอ่ งตวั กว่า) โดยใชก้ ารย่อหน้า แทน ทาใหส้ ามารถอ่านโปรแกรมทเ่ี ขยี นไดง้ า่ ย นอกจากนนั้ ยงั มกี ารสนบั สนุนการเขยี น docstring ซง่ึ เป็นขอ้ ความสนั้ ๆ ทใ่ี ชอ้ ธบิ ายการทางานของฟังกช์ นั คลาส และโมดลู ไดด้ ว้ ย  ไพธอนเป็นภาษากาว (Glue language) คอื สามารถเรยี กใชภ้ าษาอ่นื ๆ ไดห้ ลายภาษา ทา ใหเ้ หมาะทจ่ี ะใชเ้ ขยี นเพอ่ื ประสานงานกบั โปรแกรมทเ่ี ขยี นในภาษาอ่นื ๆ ไดด้ ี  ภาษาไพธอนถูกสรา้ งขน้ึ โดยรวบรวมคุณสมบตั เิ ด่นๆ ของภาษาต่างๆ เขา้ มาไวด้ ว้ ยกนั อาทเิ ชน่ ภาษา C, C++, Java, Perl, ABC, Modula-3, Icon, Matlab, ANSI C, Lisp, Smalltalk และ Tcl เป็นตน้  ไพธอนสามารถเรยี กใชภ้ าษา C/C++ ได้ ในทางกลบั กนั ภาษา C/C++ กอ็ นุญาตใหฝ้ ัง ชดุ คาสงั่ ของไพธอนเอาไวภ้ ายในภาษา C/C++ ไดเ้ ช่นเดยี วกนั  ไมต่ อ้ งเสยี คา่ ใชจ้ า่ ยใดๆ ทงั้ สน้ิ เพราะตวั แปรภาษาไพธอนอยภู่ ายใตล้ ขิ สทิ ธิ ์GNU หรอื ซอฟตแ์ วรเ์ สรี  ภาษาไพธอน และชุดของไลบารี สนับสนุนการประมวลผลทางดา้ นวยิ าศาสตร์ และ วศิ วกรรมศาสตรไ์ ดอ้ ยา่ งมปี ระสทิ ธภิ าพ  มคี วามยดื หยุ่นสงู ทาใหก้ ารจดั การกบั งานดา้ นขอ้ ความ และ Text File ไดเ้ ป็นอยา่ งดี  ไพธอนมฟี ังกช์ นั ทส่ี นับสนุนการเช่อื มต่อกบั ระบบฐานขอ้ มลู ไดห้ ลากหลายชนดิ เช่น MySQL, Sybase, Oracle, Informix, ODBC และอ่นื ๆ  ไพธอนสนบั สนุนการเขยี นโปรแกรมเชงิ วตั ถุ (Object-Oriented Programming)  ไพธอนนาเสนอโครงสรา้ งตวั แปรใหม่ (Built-in Object Types) เพอ่ื ใหผ้ เู้ ขยี นโปรแกรม สะดวกในการพฒั นางานมากขน้ึ เช่น ลสิ ต์ (List) ดกิ ชนั นารี (Dictionary) ทพั เบลิ (Tuple) และเซต็ (Set) เป็นตน้ ซง่ึ โครงสรา้ งตวั แปรใหมเ่ หล่าน้ี ทาให้งา่ ยต่อการใชง้ าน และมี ประสทิ ธภิ าพสงู  ไพธอนเตรยี มเครอ่ื งมอื ต่างๆ เพ่อื ใชใ้ นการประมวลผลขอ้ มลู ประเภทเทก็ ซไ์ ฟล์ การจดั เรยี ง ขอ้ มลู การเช่อื มต่อสตรงิ การตรวจสอบเง่อื นไขของขอ้ ความ การแทนคา ไวอ้ ยา่ งครบถว้ น ห น้ า 20

 ภาษาไพธอนเป็นภาษาประเภท Server side script คอื การทางานของภาษาไพธอนจะ ทางานดา้ นฝัง่ เซริ ฟ์ เวอร์ (Server) แลว้ สง่ ผลลพั ธก์ ลบั มายงั ไคลเ์ อนท์ (Client) ทาใหม้ คี วาม ปลอดภยั สงู  ไพธอนมโี มดลู สนบั สนุนการเขยี นโปรแกรมกบั ระบบ (System) เช่น โปรเซส เธรด รวมถงึ ระบบเครอื ขา่ ยคอมพวิ เตอร์ ไดเ้ ป็นอยา่ งดี  ไพธอนเตรยี มเครอ่ื งมอื สาหรบั สรา้ ง Internet script หรอื CGI script สาหรบั เชอ่ื มต่อกบั เครอื ขา่ ยอนิ เทอรเ์ น็ตผา่ นซอ็ กเกต็ (Sockets API) จงึ ทาใหส้ ามารถเชอ่ื มต่อ และใชง้ าน แอพพเิ คชนั ต่างๆ แบบระยะไกลได้ เชน่ FTP, Glopher, SSH เป็นตน้  สนบั สนุนเทคโนโลยี Component Object Model Technologies (COM) ของวนิ โดวส์ CORBA, ORBs, XML เป็นตน้  ไพธอนจดั เตรยี มเครอ่ื งมอื สาหรบั จดั การงานดา้ น Regular Expression (กลมุ่ ของ สญั ลกั ษณ์ทใ่ี ชใ้ นการคน้ หา แทนท่ี หรอื เปรยี บเทยี บคา/ขอ้ ความกบั ขอ้ มลู ชนิดสตรงิ ) ไว้ อยา่ งเพยี งพอ  ภาษาไพธอนใชพ้ ฒั นาเวบ็ เซอรว์ สิ (Web service) รวมทงั้ ใชบ้ รหิ ารการสรา้ งเวบ็ ไซต์ สาเรจ็ รปู ทเ่ี รยี กว่า Content Management Framework (CMF)  ไพธอนอนุญาตใหผ้ พู้ ฒั นาโปรแกรมสามารถสรา้ ง Dynamic Link Library (DLL) จากภาษา อ่นื ๆ เพอ่ื ใชง้ านรว่ มกบั ไพธอนได้ เชน่ .dll ของวนิ โดวส์ เป็นตน้  ไพธอนใชม้ าตรฐานสาหรบั สรา้ งอนิ เตอรเ์ ฟส คอื Tkinter API ทไ่ี ดร้ บั อทิ ธพิ ลมาจาก Tcl/Tk ทท่ี างานบนยนู กิ สม์ าก่อน ซง่ึ สนบั สนุนกราฟฟิกของ X windows, วนิ โดวส์ และ Macintosh จดุ เดน่ ทส่ี าคญั ของการใช้ Tkinter API คอื ชว่ ยใหผ้ พู้ ฒั นาโปรแกรมไมจ่ าเป็นตอ้ งแกไ้ ขรหสั ตน้ ฉบบั เมอ่ื นาไปทางานบนระบบปฏบิ ตั กิ ารอ่นื ๆ  ไพธอนมไี ลบรารที ส่ี นบั สนุนงานดา้ นการสรา้ งภาพกราฟฟิก และการประมวลผลภาพ (Image processing) มากมาย เชน่ การปรบั ความคมชดั ของภาพ การอ่านไฟลภ์ าพขนาด ใหญ่ การบนั ทกึ ไฟลใ์ หใ้ นรปู แบบต่างๆ ไดอ้ ยา่ งสะดวก และมปี ระสทิ ธภิ าพ  ไพธอนเตรยี มไลบรารสี าหรบั สนบั สนุนการเขยี นโปรแกรมทางดา้ นปัญญาประดษิ ฐ์ (Artificial intelligent) เชน่ Naive Bayes และ K-Nearest Neighbors ไวด้ ว้ ย  ไพธอนสนบั สนุนการทางานแบบ Dynamic typing คอื สามารถเปลย่ี นชนิดของขอ้ มลู ได้ งา่ ย และสะดวก  สนบั สนุนใหส้ ามารถเขยี นโปรแกรมจาวารว่ มกบั ไพธอนได้ โดยใช้ Jython โดยทางานอยู่ บน Java Virtual Machine (JVM) ได้ ห น้ า 21

 สนบั สนุนการเขยี นโปรแกรมรว่ มกบั .NET Framework ของไมโครซอฟต์ โดยการใช้ IronPython  ไพธอนสนบั สนุนการสรา้ งเอกสาร PDF โดยไมต่ อ้ งตดิ ตงั้ Acrobat Writer  ไพธอนสนบั สนุนการสรา้ ง Shockwaves Flash (SWF) โดยไมจ่ าเป็นตอ้ งตดิ ตงั้ Macromedia Flash คณุ สมบตั ิด้อยของภาษาไพธอน  ความเรว็ : ไพธอนเป็นภาษาสครปิ ต์ (Scripting language) ซง่ึ ทางานโดยมตี วั แปลภาษา (Interpreter) แปลงคาสงั่ ในแต่ละบรรทดั ของโปรแกรมตน้ ฉบบั (Source code) ใหเ้ ป็น ภาษาเครอ่ื ง (Machine code) ในขณะทโ่ี ปรแกรมกาลงั ทางาน ซง่ึ แตกต่างจากภาษาซี C++ โคบอล หรอื ปาสคาล เพราะภาษาเหล่าน้ีจะทาการแปลรหสั ตน้ ฉบบั ใหก้ ลายเป็น ภาษาเครอ่ื งทงั้ หมดก่อนเรมิ่ ตน้ ทางาน สง่ ผลใหโ้ ปรแกรมขนาดใหญ่ทเ่ี ขยี นขน้ึ ดว้ ยภาษาไพ ธอนจะทางานไดช้ า้ กวา่ โปรแกรมทใ่ี ชเ้ ทคนิคการคอมไพลแ์ ฟ้มตน้ ฉบบั ทงั้ หมดก่อน  โอกาสเกิดข้อผิดพลาดชนิด Runtime Error สงู ขึ้น: จดุ ดอ้ ยในขอ้ น้ี มผี ลกระทบมาจาก การแปลภาษาแบบ Interpreter และการไมไ่ ดแ้ ปลรหสั ตน้ ฉบบั ทงั้ หมดก่อนทางานนนั่ เอง ในการประกาศตวั แปรของภาษาสครปิ ต์ จะไม่มกี ารตรวจสอบความถกู ตอ้ งของการเรยี กใช้ ตวั แปร และชนิดของตวั แปรทงั้ หมดก่อนเรมิ่ ทางาน ดงั นนั้ ถา้ ผพู้ ฒั นาโปรแกรมขาดความ ระมดั ระวงั (Logic error) ในระหว่างพฒั นาโปรแกรม จะทาใหม้ โี อกาสเกดิ ความผดิ พลาด จากการเรยี กใชต้ วั แปรทไ่ี มไ่ ดป้ ระกาศไว้ หรอื ใชง้ านตวั แปรผดิ ประเภทไดง้ า่ ย  การระบขุ อบเขตของคาสงั่ และตวั แปร: ไพธอนไมใ่ ช้ {…} เป็นสญั ลกั ษณ์สาหรบั กาหนด ขอบเขตของคาสงั่ หรอื ตวั แปรในการเขยี นโปรแกรม เหมอื นกบั ภาษาระดบั สงู เชน่ C/C++ และ Java แต่ใชก้ ารยอ่ หน้าเพอ่ื บอกขอบเขตของคาสงั่ และตวั แปรแทน สง่ ผลใหย้ ากต่อ การพฒั นาโปรแกรมทม่ี ขี นาดใหญ่ และโปรแกรมตน้ ฉบบั มคี วามซบั ซอ้ นมากๆ เช่น nested loop เพราะตอ้ งสงั เกตุการยอ่ หน้าใหถ้ ูกตอ้ ง Note: แมว้ า่ โปรแกรมทถ่ี กู พฒั นาดว้ ยไพธอนจะมคี วามเรว็ ในการทางานชา้ กว่า C/C++ และ Java กต็ าม แต่ไพธอนมขี อ้ เดน่ ทส่ี าคญั คอื ความเรว็ ในการพฒั นาโปรแกรม ปัจจุบนั มี โปรแกรมเมอรพ์ ยายามจะนาขอ้ ดขี องไพธอน คอื ความยดื หยุน่ และความง่ายในการเขยี น โปรแกรม รวมกบั ความเรว็ ในการทางานของ C/C++ เขา้ ไวด้ ว้ ยกนั เชน่ cython, Psyco, py2exe, cx_Freeze, py2app, bbfreeze, IronPython เป็นตน้ 3. ประวตั ิการสร้างภาษาไพธอน (History of Python) ห น้ า 22

สาหรบั ประวตั กิ ารพฒั นาภาษาไพธอนนนั้ ตอ้ งยอ้ นกลบั ไปช่วงปลายปี 1980 (พ.ศ. 2523) ซง่ึ เป็นช่วงทม่ี คี วามคดิ รเิ รมิ่ ทจ่ี ะสรา้ งภาษาไพธอน แต่การเรม่ิ ตน้ การพฒั นาจรงิ ๆ เกดิ ขน้ึ ในช่วงเดอื น ธนั วาคมปี 1989 โดยนกั พฒั นาโปรแกรมชอ่ื Guido van Rossum ทางานท่ี CWI (National Research Institute for Mathematics and Computer Science) เป็นชาวดชั ท์ ประเทศเนเธอรแ์ ลนด์ โดยไพธอน ไดร้ บั อทิ ธพิ ล และความสาเรจ็ มาจากโปรแกรมภาษา ABC ท่ี ณ ในเวลานนั้ มคี วามสามารถเกย่ี วกบั การ จดั การขอ้ ผดิ พลาดของโปรแกรม (exception handling) และการเชอ่ื มต่อ (Interfacing) กบั ระบบปฏบิ ตั กิ าร Amoeba operating system ไดเ้ ป็นอยา่ งดี โดย Guido van Rossum ถอื วา่ เป็นผรู้ เิ รม่ิ และคดิ คน้ แต่เขามคี วามคดิ วา่ ผลงานอย่างไพธอนทเ่ี ขาสรา้ งนนั้ เป็นผลติ ผลทเ่ี กดิ ขน้ึ จากความ สนุกสนานเป็นหลกั โดยเขาไดอ้ า้ งงานชน้ิ น้ีวา่ เป็น Benevolent Dictator for Life (BDFL = ผลงานทถ่ี ูก สรา้ งขน้ึ จากความสนุกสนาน) เพราะเป็นผลงานซง่ึ มกั จะเกดิ จากความไมไ่ ดต้ งั้ ใจ และอยากทางานท่ี เป็นอสิ ระนนั้ เอง ซง่ึ คนทถ่ี กู กลา่ วถงึ วา่ ทางานในลกั ษณะแบบน้ีมาก่อนกไ็ ดแ้ ก่ Linus Torvalds ผสู้ รา้ ง Linux kernel, Larry Wall ผสู้ รา้ ง Perl programming language นนั่ เอง กมุ ภาพนั ธ์ ค.ศ. 1991 (พ.ศ. 2534) Van Rossum ไดเ้ ผยแพร่ภาษาไพธอนออกมาครงั้ แรกคอื เวอรช์ นั 0.9.0 ขณะนนั้ เขากาลงั พฒั นาไพธอนในส่วนของ การสบื ทอดคณุ สมบตั ิ (inheritance) การจดั การความ ผดิ พลาด (exception handling) ฟังชนั ชนิดของตวั แปรหลกั ๆ เชน่ list, dict, str และตวั แปรอ่นื ๆ สาหรบั ใชก้ บั ไพธอนในอนาคต และเปิดเผยส่วนทใ่ี ชบ้ รหิ ารจดั โมดลู ของระบบ (Module system) โดย ยมื คณุ สมบตั ทิ ด่ี มี าจาก Modula-3 มกราคม ค.ศ. 1994 (พ.ศ. 2537) ต่อมาอกี ประมาณ 3 ปี Van Rossum จงึ ไดเ้ ผยแพรไ่ พธอนใน เวอรช์ นั ท่ี 1.0 ออกมา ซง่ึ เวอรช์ นั น้ีมคี ณุ สมบตั หิ ลกั ๆ ทเ่ี พมิ่ เตมิ ขน้ึ มาคอื lambda, reduce, filter และ map ซง่ึ บางสว่ นไดน้ าเอาคุณสมบตั มิ าจากภาษา Lisp มาประยกุ ตใ์ ชง้ าน ค.ศ. 1995 (พ.ศ. 2538) ไพธอนเวอรช์ นั 1.2 นนั้ ไดถ้ ูกปล่อยออกมา โดยขณะนนั้ Van Rossum ยงั คง พฒั นาไพธอนอยทู่ ่ี CWI เนเธอรแ์ ลนด์ ต่อมาเขาไดย้ า้ ยไปพฒั นาไพธอนต่อท่ี Corporation for National Research Initiatives (CNRI) เรสตนั มลรฐั เวอรจ์ เิ นีย ประเทศสหรฐั อเมรกิ า ขณะทเ่ี ขา ทางานอยทู ่ี CNRI เขาไดพ้ ฒั นา และปลอ่ ยไพธอนเวอรช์ นั ต่างๆ ออกมาหลายรุน่ ดงั น้คี อื 1.4, 1.5 และ รนุ่ 1.6 ซง่ึ เพมิ่ คุณสมบตั ขิ องไพธอนใหส้ งู ขน้ึ เช่น เพม่ิ ความสามารถในการจดั การกบั จานวนเชงิ ซอ้ น (Complex number), data hiding และ name mangling เป็นตน้ ซง่ึ หลงั จากปล่อยรนุ่ 1.6 ออกมาแลว้ Guido van Rossum กไ็ ดอ้ อกจาก CNRI เพอ่ื ทาธรุ กจิ พฒั นาซอฟตแ์ วรแ์ บบเตม็ ตวั โดยก่อนทจ่ี ะเรม่ิ ทางานธรุ กจิ เขาไดท้ าใหไ้ พธอนนนั้ มลี ขิ สทิ ธแิ ์ บบ General Public License (GPL) โดยท่ี CNRI และ Free Software Foundation (FSF) ไดร้ วมกนั เปิดเผยรหสั โปรแกรมทงั้ หมด เพ่อื ใหไ้ พธอนนนั้ ไดช้ ่อื วา่ เป็นซอฟตแ์ วรเ์ สรี และเพอ่ื ใหต้ รงตามขอ้ กาหนดของ GPL-compatible ดว้ ย (แต่ยงั คงไมส่ มบรู ณ์เพราะ ห น้ า 23

การพฒั นาในรนุ่ 1.6 นนั้ ออกมาก่อนทจ่ี ะใชส้ ญั ญาลขิ สทิ ธแิ ์ บบ GPL ทาใหย้ งั มบี างส่วนทย่ี งั เปิดเผย ไมไ่ ด)้ และในปีเดยี วกนั นัน้ เอง Guido van Rossum กไ็ ดร้ บั รางวลั จาก FSF ในชอ่ื วา่ \"Advancement of Free Software\" โดยในปีนนั้ เองไพธอน 1.6.1 กไ็ ดอ้ อกมาเพ่อื แกป้ ัญหาขอ้ ผดิ พลาดของตวั ซอฟตแ์ วร์ และใหเ้ ป็นไปตามขอ้ กาหนด ของ GPL-compatible license อยา่ งสมบรู ณ์ คลุ าคม ค.ศ. 2000 (พ.ศ. 2543) ในปีน้ี Van Rossum และ Python Core Development team ไดย้ า้ ย ไปทางานรว่ มกบั BeOpen.com และไดเ้ ผยแพรไ่ พธอนเวอรช์ นั ท่ี 2.0 ส่สู าธารณชน บนเวบ็ ไซตข์ อง BeOpen.com หลงั จากนนั้ Van Rossum และนกั พฒั นาไพธอนคนอ่นื ๆ ทอ่ี ยใู่ นทมี ทช่ี อ่ื ว่า PythonLabs กไ็ ดจ้ บั มอื รว่ มกนั ทางานในภายใตช้ อ่ื ทมี ว่า Digital Creations ซง่ึ เวอรช์ นั น้ไี ดเ้ พม่ิ ความสามารถของไพ ธอนใหส้ นบั สนุน List ทไ่ี ดล้ อกเลยี นแบบมาจากภาษา SETL และการจดั การหน่วยความจาคนื ใหร้ ะบบ (Garbage collection) เมษายน ค.ศ. 2001 (พ.ศ. 2544) คลอดไพธอนเวอรช์ นั 2.1 ซง่ึ ไดส้ บื ทอด และพฒั นามาจาก 1.6.1 เกอื บทงั้ หมด และจากไพธอนเวอรช์ นั 2.0 บางส่วน ไพธอนไดท้ าการเปลย่ี นชอ่ื สญั ญาลขิ สทิ ธใิ ์ หมเ่ ป็น Python Software Foundation License โดยทใ่ี นไพธอนเวอรช์ นั 2.1 รหสั alpha เป็นสขิ สทิ ธขิ ์ อง Python Software Foundation (PSF) ซง่ึ เป็นองคก์ รทไ่ี มห่ วงั ผลกาไรเช่นเดยี วกบั Apache Software Foundation เวอรช์ นั น้ไี ดเ้ พมิ่ คุณสมบตั ขิ อง Nested scopes ธนั วาคม ค.ศ. 2001 เวอรช์ นั 2.2 ปรบั โครงสรา้ งการเขยี นโปรแกรมคลา้ ยภาษาซี กรกฎาคม ค.ศ. 2003 เวอรช์ นั 2.3 พศจิกายน ค.ศ. 2004 เวอรช์ นั 2.4 กนั ยายน ค.ศ. 2006 เวอรช์ นั 2.5 สิงหาคม ค.ศ. 2008 เวอรช์ นั 2.6 กนั ยายน ค.ศ. 2010 เวอรช์ นั 2.7 ธนั วาคม ค.ศ. 2008 เวอรช์ นั 3.0 หรอื เรยี กวา่ Python 3000 หรอื Py3K ถกู ออกแบบเพ่อื แกไ้ ข ขอ้ บกพรอ่ งบางอยา่ งในการออกแบบขนั้ พน้ื ฐานของภาษา เช่น การขจดั คณุ ลกั ษณะทซ่ี ้าซอ้ นของ เวอรช์ นั ก่อนหน้า ปัจจบุ นั ภาษาไพธอนเผยแพรอ่ อกมา คอื เวอรช์ นั 3.4.0 beta2 (มกราคม 2014) โดย เพมิ่ เตมิ ความสามารถใหมๆ่ เพม่ิ ขน้ึ เรอ่ื ย สามารถอ่านขอ้ มลู เพมิ่ เตมิ ไดท้ ่ี http://www.python.org 4. งานด้านต่างๆ ที่ไพธอนสนับสนุนในปัจจบุ นั (Application domains) ตามทไ่ี ดก้ ล่าวไวแ้ ลว้ ในตอนตน้ วา่ ภาษาไพธอนเป็นภาษาแบบผสมผสานหลายกระบวนทศั น์ (Multi-paradigm language) ดงั นนั้ จงึ รองรบั การพฒั นางานไดห้ ลากหลายประเภท ดงั น้ี ห น้ า 24

1. สนบั สนุนการพฒั นางานเกย่ี วกบั เวบ็ แอพพลเิ คชนั (Web application) สาหรบั งานใน สว่ นของซอฟตแ์ วรข์ นาดใหญ่ ใชพ้ ฒั นา Common Gateway Interface (CGI), เฟรม เวริ ค์ ของ Django และ TurboGears, โซลชู นั ระดบั สงู อย่างเชน่ Zope และ Mega รวม ไปถงึ Content Management Systems ขนั้ สงู อยา่ ง Plone และ CPS เป็นตน้ สว่ นฝัง่ ของไคลเ์ อนท์ (Custom web solutions) ไพธอนกส็ นบั สนุนงานในหลายๆ ดา้ น เช่น HTML และ XML, E-mail, RSS feeds และโพรโทคอลเกย่ี วกบั งานอนิ เทอรเ์ น็ตอ่นื ๆ 2. สนบั สนุนงานดา้ นฐานขอ้ มลู (Database Access) ไพธอนสามารถเชอ่ื มต่อกบั ฐานขอ้ มลู ไดม้ ากมายหลายคา่ ย โดยผ่านทาง ODBC Interfaces และผ่านทาง Standard database API ของไพธอนโดยตรง เช่น MySQL, Oracle, MS SQL Server, PostgreSQL, SybODBC, ZODB, Durus และอ่นื ๆ ทจ่ี ะมเี พมิ่ เตมิ ขน้ึ อกี ใน อนาคต 3. สนบั สนุนงานดา้ น Desktop GUIs ตวั ตดิ ตงั้ ของไพธอนมี Tk GUI development library อยใู่ นตวั อยแู่ ลว้ ดงั นนั้ ผเู้ ขยี นโปรแกรมสามารถสรา้ งกราฟฟิกไดท้ นั ทโี ดยไมต่ อ้ งตดิ ตงั้ ซอฟตแ์ วรอ์ ่นื ๆ เพมิ่ เตมิ ซง่ึ ไลบารดี งั กล่าวเหมอื นกบั Microsoft Foundation Classes, wxWidgets, GTK, Qt, pyside, Delphi และอ่นื ๆ ทาใหส้ ามารถพฒั นาซอฟตแ์ วร์ ประยกุ ตต์ ่างๆ แบบกราฟฟิกไดง้ า่ ย 4. สนบั สนุนงานดา้ นวทิ ยาศาสตร์ และการประมวลผลตวั เลข (Scientific and Numeric computation) ไพธอนรองรบั การทางานดา้ นนกั วทิ ยาศาสตร์ วศิ วกรรมศาสตร์ เช่น ทฤษฎกี ารคานวณ คณติ ศาสตร์ เป็นตน้ 5. สนบั สนุนงานดา้ นชวี สารสนเทศศาสตร์ (Bioinformatics) เช่น Bioinformatics และ Physics เป็นตน้ 6. สนบั สนุนงานดา้ นการโปรแกรมเครอื ข่าย (Network programming) ไพธอนสามารถ เขยี นโปรแกรมในระดบั ต่าเพ่อื เช่อื มต่อกบั ระบบเครอื ข่ายไดเ้ ป็นอยา่ งดี งา่ ยต่อการ พฒั นาโดยอาศยั Sockets สามารถทางานรว่ มกบั โมดลู อยา่ ง Twisted และ Framework สาหรบั สรา้ ง Asyncronous network programming เป็นตน้ 7. สนบั สนุนดา้ นการศกึ ษา (Education) ไพธอนเหมาะสาหรบั การเรยี นการสอนในทุก สาขาวชิ าทเ่ี ก่ยี วขอ้ งกบั การพฒั นาซอฟตแ์ วร์ สามารถนาหลกั สตู รท่ี Python Software Foundation เตรยี มไว้ คอื pyBiblio และ Software Carpentry Course นามาสอนได้ ทนั ที หรอื แทรกเขา้ ไปในรายวชิ าดงั กล่าวเพอ่ื เสรมิ ความรูก้ ไ็ ด้ 8. สนบั สนุนดา้ นการพฒั นาเกมส์ และงานดา้ น 2, 3D (Game and 2/3D Graphics Rendering) ชว่ งเวลาทผ่ี า่ นมาไพธอนถกู ใชใ้ นการพฒั นาเกมสท์ งั้ เชงิ ธรุ กจิ และ สมคั รเลน่ โดยมกี ารสรา้ ง Framework สาหรบั พฒั นา Game บนไพธอนโดยเฉพาะซง่ึ ห น้ า 25

เรยี กว่า PyGame และ PyKyra นอกจากน้ไี พธอนยงั มไี ลบรารที ม่ี คี วามสามารถในการ ทา 3D Graphics Rendering อยมู่ ากมาย 9. การพฒั นาซอฟตแ์ วร์ (Software development) ไพธอนนัน้ สนบั สนุนการพฒั นา ซอฟตแ์ วรท์ ม่ี กี ารควบคุมคุณภาพ โดยมเี ครอ่ื งมอื ในการพฒั นาท่ตี ดิ มากบั ไพธอนเอง เช่น Scons สาหรบั สรา้ งรหสั เครอ่ื ง (Build), Buildbot และ Apache Gump ทใ่ี ชส้ าหรบั งาน Automated continuous compilation และ Testing, Roundup หรอื Trac สาหรบั การคน้ หาขอ้ ผดิ พลาด (bug tracking) และการบรหิ ารจดั การโครงการพฒั นาซอฟตแ์ วร์ (Project management) 5. ตวั อย่างหน่วยงานที่เลือกใช้ไพธอน แบ่งตามประเภทต่างๆ ได้ดงั นี้ 1. หน่วยงานเกย่ี วกบั เวบ็ แอพพลเิ คชนั เช่น Yahoo Maps, Yahoo Groups, Google, Zope Corporation, Ultraseek, Linux Weekly News, ElasticHosts Cloud Servers, Shopzilla, Multiplayer.it เป็นตน้ 2. หน่วยงานเกย่ี วกบั การสรา้ งเกมส์ (Games) เช่น Battlefield 2, Crystal Space, Star Trek Bridge Commander, Civilization 4, QuArK (Quake Army Knife) เป็นตน้ 3. หน่วยงานเกย่ี วกบั งานกราฟฟิก (Graphics) เช่น Industrial Light & Magic, Walt Disney Feature Animation, HKS, Inc. (ABAQUS/CAE), Blender 3D เป็นตน้ 4. หน่วยงานเกย่ี วกบั สถาบนั การเงนิ (Financial) เช่น Altis Investment Management, ABN AMRO Bank, Treasury Systems, Bellco Credit Union เป็นตน้ ห น้ า 26

5. หน่วยงานเกย่ี วกบั งานดา้ นวทิ ยาศาสตร์ (Science) เช่น National Weather Service, Applied Maths, The National Research Council of Canada, NASA, Swedish Meteorological and Hydrological Institute (SMHI), Environmental Systems Research Institute (ESRI), Nmag Computational Micromagnetics, Objexx Engineering เป็นตน้ 6. หน่วยงานเกย่ี วกบั งานดา้ นการออกแบบอุปกรณ์อเิ ลก็ ทรอนกิ ส์ เช่น Ciranova, Productivity Design Tools เป็นตน้ 7. หน่วยงานเกย่ี วกบั งานดา้ นการพฒั นาซอฟตแ์ วร์ (Software development) เชน่ Object Domain, Red Hat, SGI, Inc., MCI Worldcom, Nokia เป็นตน้ 8. หน่วยงานเกย่ี วกบั งานดา้ นการศกึ ษา (Education) เชน่ University of California, Irvine, Delft University of Technology, Faculty of Aerospace Engineering, Delft, Netherlands, Smeal College of Business, The Pennsylvania State University, New Zealand Digital Library, IT Certification Exam preparation เป็นตน้ 9. หน่วยงานเกย่ี วกบั งานดา้ นซอฟตแ์ วรธ์ รุ กจิ เช่น Raven Bear Systems Corporation, Thawte Consulting, Advanced Management Solutions Inc., IBM, RealNetworks, dSPACE, Escom, Nexedi, Nektra, WuBook เป็น ตน้ 10. หน่วยงานของรฐั บาล เช่น the USA Central Intelligence Agency (CIA) 6. ตวั อย่างซอฟตแ์ วรท์ ่ีเขียนด้วยไพธอน 1. บติ ทอรเ์ รนต์ (BitTorrent) 2. Chandler โปรแกรมจดั การขอ้ มลู ส่วนบคุ คล 3. บางส่วนของ GNOME ห น้ า 27

4. บางส่วนของ Blender 5. Mailman โปรแกรมจดั การจดหมายกลุ่ม (เมลลงิ่ ลสิ ต)์ 6. MoinMoin โปรแกรมวกิ ิ 7. Portage สว่ นจดั การแพกเกจของ Gentoo Linux 8. Zope แอปพลเิ คชนั เซริ ฟ์ เวอร์ 9. เทอรโ์ บเกยี ร์ และ Django สาหรบั พฒั นาโปรแกรมประยกุ ตบ์ นเวบ็ และอกี มากมาย สามารถอ่านเพมิ่ เตมิ ไดท้ ่ี https://wiki.python.org/moin/Applications 7. การติดตงั้ และใช้งานไพธอนบนระบบปฏิบตั ิการวินโดวส์ 1. ดาวน์โหลดไฟลต์ ดิ ตงั้ ของไพธอนไดจ้ าก http://www.python.org ดงั รปู 2.1 รปู ท่ี 2.1 ดาวน์โหลดไพธอนสาหรบั วนิ โดวส์ คลก๊ิ ดาวน์โหลดท่ี Python เวอรช์ นั ล่าสดุ (ในทน่ี ้คี อื Python 3.3.3 stable) ตอ่ จากนนั้ ใหค้ ลกิ๊ เลอื กท่ี Windows X86-64 MSI Installer (3.3.3) เพ่อื ดาวน์โหลดตวั ตดิ ตงั้ ซง่ึ จะมสี ่วนขยายเป็น .msi ขนาดของไฟลป์ ระมาณ 20 เมก็ กะไบต์ 2. เมอ่ื ไดไ้ ฟล์ python-3.3.3.msi แลว้ ใหด้ บั เบล้ิ คลกิ เพอ่ื เขา้ สขู่ นั้ ตอนการตดิ ตงั้ ดงั รปู ท่ี 2.2 ห น้ า 28

รปู ที่ 2.2 เรม่ิ ตน้ การตดิ ตงั้ ไพธอน ใหเ้ ลอื ก Install for all users แลว้ คลกิ Next > 3. จะเขา้ ส่หู น้าจอเลอื ก Path ในการตดิ ตงั้ ดงั รปู ท่ี 2.3 ใหเ้ ลอื ก C:\\Python33 แลว้ คลกิ Next > รปู ท่ี 2.3 เลอื กไดเรคทรอรที จ่ี ะตดิ ตงั้ ไพธอน 4. จะเขา้ สหู่ น้าจอ เลอื ก Features ในการตดิ ตงั้ ใหเ้ ลอื กตดิ ตงั้ ตามค่ามาตรฐาน แลว้ คลกิ Next > ในรปู 2.4 ห น้ า 29

รปู ท่ี 2.4 เลอื ก Features รอจนตดิ ตงั้ เสรจ็ จะไดห้ น้าจอดงั รปู ท่ี 2.5 5. คลกิ ป่มุ Finish เป็นการสน้ิ สุดขนั้ ตอนการตดิ ตงั้ รปู ที่ 2.5 สน้ิ สดุ การตดิ ตงั้ ไพธอน 6. ทดสอบใชง้ านโปรแกรมภาษาไพธอน เขา้ ไปท่ี Start >> Program >> Python3.3 >> IDLE (Python GUI) จะไดห้ น้าจอ ดงั รปู ท่ี 2.6 ห น้ า 30

รปู ท่ี 2.6 แสดงไพธอนพรอ้ มใชง้ าน (Prompt หรอื Python shell) 8. การติดตงั้ และใช้งานไพธอนบนระบบปฏิบตั ิการยนู ิกซ์-ลินุกซ์ โดยปกตไิ พธอนจะตดิ ตงั้ มากบั ลนิ ุกซอ์ ยแู่ ลว้ ทดสอบโดยการเปิดเทอรม์ นิ อล และพมิ พค์ าสงั่ python@root:~$ python จะแสดงเวอรช์ นั ของไพธอนออกมา ถา้ ไม่ปรากฏแสดงว่ายงั ไมไ่ ดต้ ดิ ตงั้ เอาไว้ วธิ กี ารตดิ ตงั้ ทาได้ 2 วธิ คี อื ตดิ ตงั้ แบบ package และแบบ Manual การติดตงั้ แบบ package บนลินุกซ์ Centos/Fedora 1. พมิ พค์ าสงั่ ต่อไปน้ใี นเทอรม์ นิ อล python@root:~$ yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel รอสกั ครู่ โปรแกรมจะตดิ ตงั้ package ต่างๆ ใหอ้ ตั โนมตั ิ เมอ่ื ไมม่ ขี อ้ ผดิ พลาดใดๆ เกดิ ขน้ึ โพธอนจะสามารถเรยี กใชง้ านไดท้ นั ทโี ดยใชค้ าสงั่ python@root:~$ python Note: การตดิ ตงั้ แบบ Package ตอ้ งเช่อื มต่อกบั เครอื ขา่ ยอนิ เทอรเ์ น็ตเสมอ การติดตงั้ แบบ Package บนลินุกซ์ Ubuntu/ LinuxMint/Debian 1. พมิ พค์ าสงั่ ต่อไปน้ใี นเทอรม์ นิ อล ห น้ า 31