การคิดเชิงคำนวณ
บทที่1 แนวคิดเชิงคำนวณ
แนวคิดเชิงคำนวณ(ComputationalThinking) เป็นกระบวนการวิเคราะห์กระบวนการแก้ ปัญหาในหลากหลายลักษณะเช่นการจัดลำดับเชิงปัญหาเพื่อให้ได้แนวทางหาคำตอบ อย่างเป็นขั้นตอนที่สามารถนำไปปฏิบัติได้โดยบุคคลหรือคอมพิวเตอร์อย่างถูกต้องการ
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
แนวคิดเชิงคำนวณ ที่เกี่ยวข้องกับการแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) นั้นเป็นการแตกปัญหาที่ซับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลง เพื่อช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้นทำให้คิดอย่างเป็นระบบมากยิ่งขึ้น
การพิจารณารูปแบบ (Pattern Recognition)
ดังนั้นการพิจารณารูปแบบ เป็นการหารูปแบบซึ่งเป็นทักษะการหาความสัมพันธ์ที่เกี่ยวข้อง แนวโน้ม และลักษณะ ทั่วไปของสิ่งต่าง ๆ การหารูปแบบเพื่อสร้างความเข้าใจระหว่างองค์ประกอบเหล่านั้น
การคิดเชิงนามธรรม (Abstraction)
แนวคิดนามธรรมจึงเป็นองค์ประกอบหนึ่งของแนวคิดเชิงคำนวณ ซึ่งใช้กระบวนการคัดแยกคุณลักษณะที่สำคัญออกจากรายละเอียดปลีกย่อย ในปัญหาหรืองานที่กำลังพิจารณา เพื่อให้ได้ข้อมูลที่จำเป็นและเพียงพอในการแก้ปัญหา แนวคิดนามธรรมบางอย่างอาจจะอยู่ในรูปแบบของรูปร่างหรือรูปทร
การออกแบบอัลกอริทึม (Algorithm)
การออกแบบอัลกอริทึม ในแนวคิดเชิงคำนวณจึงเป็นการพัฒนากระบวนการหาคำตอบให้เป็นขั้นตอนที่บุคคลหรือคอมพิวเตอร์สามารถนำไปปฏิบัติตามเพื่อแก้ปัญหาได้ อัลกอริทึมที่ดี จะต้องมีความถูกต้อง ต้องมีลำดับขั้นตอนที่ชัดเจน มีความยืดหยุ่นในการใช้งาน ใช้เวลาในการพัฒนาน้อย และง่ายต่อการทำความเข้าใจ
บทที่2การแก้ปัญหาและขั้นตอนวิธี
การแก้ปัญหาด้วยคอมพิวเตอร์
ปัญหาที่สามารถแก้ได้ด้วยคอมพิวเตอร์ ไม่จำเป็นต้องเป็นปัญหาทางคณิตศาสตร์เสมอไป
ซึ่งก่อนจะแก้ปัญหาต้องเข้าใจปัญหาและความต้องการให้ชัดเจนแล้วค่อยพัฒนาขั้นตอนวิธีที่สามารถใช้งานได้
มี 7 ขั้นตอน
การนิยามปัญหา
(Problem Definition)
สิ่งสำคัญที่สุด คือเราต้องทำความเข้าใจให้ได้ว่าปัญหาคืออะไร
ประเด็นหลักอยู่ที่ใด และต้องการให้ได้ผลลัพธ์อะไร
การวิเคราะห์ปัญหา (Problem Analysis)
การหาผลลัพธ์ของปัญหา (output) ว่าคืออะไร
มีข้อมูลนำเข้า (input) อะไรบ้างที่จะทำให้ได้ผลลัพธ์
ระบุวิธีการประมวลผล (Process) ต้องทราบวิธีการประมวลผล หรือวิธีคิดให้ได้ผลลัพธ์ตามต้องการ
การออกแบบอัลกอริทึม ( Algorithm Design )
การออกแบบอัลกอริทึม เป็นการคิดหาขั้นตอนการแก้ปัญหาทีละขั้น เราต้องคิดว่าจะทำอย่างไรจึงจะแก้ปัญหาได้ และสามารถนำมาแปลงเป็นคำสั่งของภาษาโปรแกรมได้โดยง่าย
การพัฒนาโปรแกรม
( Program Development )
นักเขียนโปรแกรม ( Programmer ) ต้องนำเอาคำอธิบายของขั้นตอนการแก้ปัญหาแต่ละขั้นจาก
อัลกอริทึมมาแปลงเป็นคำสั่งของภาษาโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เช่น เขียนด้วยภาษา Java , Python , C# เป็นต้น
การพัฒนาโปรแกรมจะทำได้ง่าย ถ้าอัลกอริธึมถูกต้อง และมีความชัดเจน
การทดสอบความถูกต้อง
( Program Testing )
การทดสอบ (Testing) เพื่อหาข้อผิดพลาดจากการเขียนคำสั่งผิด
ไวยกรณ์ของภาษา หรือข้อผิดพลาดจากการคำนวณ
การทดสอบควรทดสอบทุกกรณีที่คาดว่าจะเกิดขึ้น
การจัดทำเอกสาร
( Documentation )
ถือว่าเป็นงานที่สำคัญที่นักเขียนโปรแกรมส่วนใหญ่ละเลย การจัดทำเอกสารมีได้ 2 แบบ คือ
- จัดทำเอกสารคู่มือผู้ใช้
- เอกสารคู่มือพัฒนา ซึ่งเอกสารนี้มีความสำคัญต่อองค์กร เพราะช่วยให้การบำรุงรักษาโปรแกรมทำได้ง่ายขึ้น และใช้อ้างอิงในกรณีที่มีการเปลี่ยนแปลงใด ๆ ในระบบ
การบำรุงรักษา
( Maintenance )
การเขียนหมายเหตุในโปรแกรมถือว่าเป็นสิ่งจำเป็นที่ควรจะทำ เพื่ออธิบายความคิดว่าขณะนั้นได้คิดอะไร เป็นสิ่งที่ช่วยเตือนความทรงจำของตัวผู้เขียนเอง และคนอื่น
การดูแลบำรุงรักษาให้ระบบสามารถใช้งานได้นานที่สุด โดยจะต้องดูแลรักษาเครื่องคอมพิวเตอร์ โปรแกรมและอุปกรณ์ต่อพ่วงต่าง ๆ ที่ใช้ในระบบ ให้สามารถใช้งานได้ปกติ และถ้าในอนาคตเทคโนโลยีต่าง ๆ ได้เปลี่ยนแปลงไป ก็จะต้องสามารถปรับเปลี่ยนแก้ไขโปรแกรมหรือส่วนบกพร่องต่าง ๆ ให้สามารถรับความเปลี่ยนแปลงของเทคโนโลยีในอนาคตได้ ขั้นตอนนี้จึงถือเป็นขั้นตอนที่ใช้ระยะเวลายาวนานที่สุด
ข้อมูลที่เกี่ยวข้องกับการทำงานของคอมพิวเตอร์
ข้อมูลเข้า ( input) เป็นข้อมูลที่ใช้เพื่อประมวลผล
ข้อมูลออก ( Output) เป็นข้อมูลที่แสดงผลลัพธ์
การระบุข้อมูลเข้า และข้อมูลออกอาจจะไม่สามารถทำได้อย่างชัดเจน จึงต้องทำความเข้าใจกับปัญหามากขึ้น
การออกแบบขั้นตอนวิธี คือ ขั้นตอนการแก้ปัญหาอย่างเป็นลำดับ โดยประกอบด้วยชุดคำสั่งการทำงานอย่างเป็นลำดับและชัดเจน
เครื่องมือในการออกแบบขั้นตอนวิธี ประกอบด้วย
บรรยาย (Narrative Description)
รหัสเทียม (Pseudo Code)
ผังงาน (FlowChart)
ลักษณะขั้นตอนวิธี
แก้ปัญหาได้อย่างมีประสิทธิภาพ
ให้คำตอบที่ถูกต้อง
ใช้เวลาในการปฏิบัติการน้อย
ชัดเจนและกระทัดรัด
การออกแบบขั้นตอนวิธีด้วยการบรรยาย เป็นการเขียนบรรยายวิธีการแก้ปัญหาอย่างเป็นลำดับโดยใช้ภาษาธรรมชาติเช่น วิธีการต้มบะหมี่กึ่งสำเร็จรูป
รหัสเทียม(Pseudo Code)เป็นการเขียนโปรแกรมในรูปแบบภาษาอังกฤษที่มีขั้นตอนและรูปแบบแน่นอนกะทัดรัด
เป็นเครื่องมือในการกำหนดโครงร่างกระบวนการทำงานของการเขียนโปรแกรมและใช้เป็นต้นแบบในการทบทวน ปรับปรุงแก้ไขและพัฒนาโปรแกรมของโปรแกรมเมอร์และนักวิเคราะห์ระบบ
หลักการเขียรหัสเทียม(Pseudo Code)ใช้ภาษาอังกฤษที่เข้าใจง่ายในหนึ่งบรรทัด มีเพียงหนึ่งประโยคคำสั่งเท่านั้น
ใช้ย่อหน้าแบ่งการแสดงการทำงานเพื่อให้อ่านง่าย
แต่ละประโยคคำสั่งให้เขียนจากบนลงล่าง และมีทางออกทางเดียว
กลุ่มของประโยคคำสั่งอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เป็นโมดูล
รูปแบบการเขียน
รหัสเทียม
(Pseudo Code)
การอ่านข้อมูล สามารถใช้คำสั่ง READ, INPUT หรือ GET ได้
การแสดงผลข้อมูล สามารถใช้คำสั่ง DISPLAY, PRINT, PROMPT หรือ WRITE ได้
การกำหนดเงื่อนไขหรือการตัดสินใจ (Dicision) ใช้คำสั่ง if...then
การทำงานแบบวนซ้ำ ด้วย REPEAT ... UNTIL
การทำงานแบบวนซ้ำด้วย WHILE ... ENDWHILE
การทำงานแบบวนซ้ำด้วย FOR ... ENDFORการประมวลผล ( Process ) คือ
การกระทำใดๆ ที่เป็นการคำนวณ เช่น บวก ลบ คูณ หาร ซึ่งจะใช้คำศัพท์ง่ายๆ เช่น
ADD ใช้บวกเพิ่มค่าให้ตัวแปร
SUBTRACT ใช้ลบค่าออกจากตัวแปร
SET ใช้กำหนดค่าให้ตัวแปร แต่การใช้ จึงนิยมใช้ตัวดำเนินการมากกว่า เช่น
- , - , * , / , %
click to edit
รู้จัก ตัวแปร (Variable)
ตัวแปร คือ ชื่อที่ใช้แทนข้อมูลการจองพื้นที่ในหน่วยความจำของคอมพิวเตอร์สำหรับเก็บข้อมูลที่ต้องใช้ในการทำงานของโปรแกรม
ผังงาน
(FlowChart)
เป็นการใช้สัญลักษณ์ เพื่ออธิบายขั้นตอนการทำงานของโปรแกรม
ผังงานแบบลำดับ( Sequence FlowChart)
ผังงานแบบทางเลือก( Condition FlowChart)
ผังงานแบบทำซ้ำ( Loop FlowChart)
click to edit
บทที่ 3 ข้อมูล การแก้ปัญหาและขั้นตอนวิธี
การประมวลผลข้อมูล
ข้อมูล (data) หมายถึง ข้อเท็จจริง (fact) ที่อยู่ในรูปแบบตัวอักษร ตัวเลข สัญลักษณ์พิเศษ รูปภาพ ภาพเคลื่อนไหว และเสียง ซึ่งสามารถบันทึกไว้อย่างต่อเนื่องและมีความหมายอยู่ในตัว
ข้อมูลปฐมภูมิ (Primary Data) คือ ข้อมูลที่ได้จากจุดกำเนิดของข้อมูลนั้นๆ เป็นการเก็บรวบรวมหรือบันทึกจากแหล่งข้อมูลโดยตรงด้วยวิธีการต่างๆ
ข้อมูลทุติยภูมิ (Secondary Data) คือ การนำข้อมูลที่ผู้อื่นได้เก็บรวบรวมหรือบันทึกไว้แล้วมาใช้งาน ผู้ใช้ไม่จำเป็นต้องเก็บรวบรวมหรือบันทึกด้วยตนเอง
ามประเภทของข้อมูลและโปรแกรมที่ใช้สร้างข้อมูล ได้แก่
ข้อมูลตัวอักษร (Text Data) เช่น ตัวหนังสือ ตัวเลข และสัญลักษณ์ ข้อมูลประเภทนี้มักมีนามสกุลต่อท้ายไฟล์เป็น .txt และ .doc
ข้อมูลภาพ (Image Data) เช่น ภาพกราฟิกต่างๆ และภาพถ่ายจากกล้องดิจิตอล ข้อมูลประเภทนี้มักมีนามสกุลต่อท้ายไฟล์เป็น .bmp .gif และ .jpg
ข้อมูลเสียง (Sound Data) เช่น เสียงพูด เสียงดนตรี และเสียงเพลง ข้อมูลประเภทนี้มักมีนามสกุลต่อท้ายชื่อไฟล์เป็น .wav .mp3
ข้อมูลภาพเคลื่อนไหว (Video Data) เช่นภาพเคลื่อนไหว ภาพมิวสิควีดิโอ ภาพยนตร์ คลิปวีดีโอ ข้อมูลประเภทนี้มักมีนามสกุลต่อท้ายชื่อไฟล์เป็น .avi .mov
การแบ่งข้อมูลตามระบบคอมพิวเตอร์
- ข้อมูลอักขระ (Character Data) มีลักษณะเป็นตัวอักษร ตัวหนังสือ และสัญลักษณ์ต่างๆ ซึ่งสามารถนำเสนอข้อมูลและเรียงลำดับได้แต่ไม่สามารถนำมาคำนวณได้ เช่น หมายเลขโทรศัพท์ เลขที่บ้าน และชื่อของนักเรียน
- ข้อมูลกราฟิก (Graphical Data) เป็นข้อมูลที่เกิดจากจุดพิกัดทางคอมพิวเตอร์ ทำให้เกิดรูปภาพหรือแผนที่ เช่น เครื่องหมายการค้า แบบก่อสร้างอาคาร และกราฟ
- ข้อมูลภาพลักษณ์ (Image Data) เป็นข้อมูลแสดงความเข้มและสีของรูปภาพที่เกิดจากการสแกนของสแกนเนอร์เป็นหลัก ซึ่งสามารถนำเสนอข้อมูล ย่อหรือขยาย และตัดต่อได้ แต่ไม่สามารถนำมาคำนวณหรือดำเนินการอย่างอื่นได้
อมูลเชิงจำนวน (Numeric Data) มีลักษณะเป็นตัวเลขที่สามารถนำมาคำนวณด้วยคอมพิวเตอร์ได้ เช่น จำนวนเงินในกระเป๋า จำนวนค่าโดยสารรถประจำทาง และจำนวนนักเรียนในห้องเรียน
อมูลเชิงจำนวน (Numeric Data) มีลักษณะเป็นตัวเลขที่สามารถนำมาคำนวณด้วยคอมพิวเตอร์ได้ เช่น จำนวนเงินในกระเป๋า จำนวนค่าโดยสารรถประจำทาง และจำนวนนักเรียนในห้องเรียน
ปัจจุบันวิทยาการข้อมูล (Data science) กําลังเข้ามามีบทบาทสําคัญในการขับเคลื่อนในด้านต่าง ๆ ของทุกประเทศ ไม่ว่าจะเป็นด้านเศรษฐกิจ ด้านสังคม ด้านสุขภาพ ด้านการเกษตร ด้านอุตสาหกรรม ดังนั้น การศึกษาเรื่องวิทยาการข้อมูลจะส่งผลให้ผู้เรียนมีความพร้อมในการเข้าสู่สังคมยุคดิจิทัลมากขึ้น อีกทั้งยังเป็น กําลังสําคัญในการพัฒนาประเทศไทยให้เจริญก้าวหน้าด้วยเช่นกัน
กระบวนการของวิทยาการข้อมูล (Data science process) ประกอบด้วย การตั้งคําถาม การเก็บรวบรวมข้อมูล การสํารวจข้อมูล การวิเคราะห์ข้อมูล และการสื่อสารและการทําผลลัพธ์ให้เป็นภาพสู่ผู้ใช้ กลุ่มเป้าหมาย สามารถก่อให้เกิดประโยชน์ทั้งในด้านการใช้ข้อมูลเพื่อช่วยเพิ่มมูลค่าให้กับบริการและผลิตภัณฑ์ และในด้านการวิเคราะห์ปัญหาที่เกิดขึ้นในอดีต เพื่อนําไปสู่การตัดสินใจในการแก้ปัญหาที่เกิดขึ้น
การคิดเชิงออกแบบ (Design Thinking Process) เป็นการประยุกต์วิธีการออกแบบผลิตภัณฑ์ บริการ ตลอดจนนวัตกรรมใหม่ๆ มาสู่การทำงานในส่วนต่างๆ ตลอดจนการบริหารจัดการองค์กรให้มีประสิทธิภาพมากขึ้น นอกจากการคิดเชิงออกแบบ (Design Thinking Process) จะเป็นประโยชน์สำหรับการสร้างสรรค์สิ่งใหม่แล้ว ก็ยังเป็นประโยชน์ต่อการทำงานที่จะช่วยให้บุคลากรมีระบบความคิดที่ดีและพร้อมในการหาวิธีการแก้ปัญหาใหม่ๆ ที่พัฒนาอยู่เสมอด้วย ซึ่งนั่นอาจเป็นวิธีการตอบโจทย์ที่ดีที่สุดสำหรับองค์กรไม่ว่าจะเจอปัญหาอะไร หรือสร้างแนวทางใดให้ไปสู่ความสำเร็จ