วันพุธที่ 31 กรกฎาคม พ.ศ. 2556

ภาษาคอมพิวเตอร์


ภาษาคอมพิวเตอร์ หมายถึง ภาษาใดๆ ที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์ หรือคอมพิวเตอร์ด้วยกัน แล้วคอมพิวเตอร์สามารถทำงานตามคำสั่งนั้นได้ คำนี้มักใช้เรียกแทนภาษาโปรแกรม แต่ความเป็นจริงภาษาโปรแกรมคือส่วนหนึ่งของภาษาคอมพิวเตอร์เท่านั้น และมีภาษาอื่นๆ ที่เป็นภาษาคอมพิวเตอร์เช่นกัน ยกตัวอย่างเช่น HTML เป็นทั้งภาษามาร์กอัปและภาษาคอมพิวเตอร์ด้วย แม้ว่ามันจะไม่ใช่ภาษาโปรแกรม หรือภาษาเครื่องนั้นก็นับเป็นภาษาคอมพิวเตอร์ ซึ่งโดยทางเทคนิคสามารถใช้ในการเขียนโปรแกรมได้ แต่ก็ไม่จัดว่าเป็นภาษาโปรแกรม ภาษาคอมพิวเตอร์สามารถแบ่งออกเป็นสองกลุ่มคือ
   1) ภาษาระดับสูง (high level)
   2) ภาษาระดับต่ำ (low level)
         ภาษาระดับสูงถูกออกแบบมาเพื่อให้ใช้งานง่ายและสะดวกสบายมากกว่าภาษาระดับต่ำ โปรแกรมที่เขียนถูกต้องตามกฎเกณฑ์และไวยากรณ์ของภาษาจะถูกแปล (compile) ไปเป็นภาษาระดับต่ำเพื่อให้คอมพิวเตอร์สามารถนำไปใช้งานหรือปฏิบัติตามคำสั่งได้ต่อไป ซอฟต์แวร์สมัยใหม่ส่วนมากเขียนด้วยภาษาระดับสูง แปลไปเป็นออบเจกต์โค้ด (object code) แล้วเปลี่ยนให้เป็นชุดคำสั่งในภาษาเครื่อง ภาษาคอมพิวเตอร์อาจแบ่งกลุ่มได้เป็นอีกสองประเภทคือ ภาษาที่มนุษย์อ่านออก (human-readable) และภาษาที่มนุษย์อ่านไม่ออก (non human-readable) ภาษาที่มนุษย์อ่านออกถูกออกแบบมาเพื่อให้มนุษย์สามารถเข้าใจและสื่อสารได้โดยตรงกับคอมพิวเตอร์ ส่วนใหญ่เป็นภาษาอังกฤษ) ส่วนภาษาที่มนุษย์อ่านไม่ออกจะมีโค้ดบางส่วนที่ไม่อาจอ่านเข้าใจได้ เด้าหมาสี้หมา [แก้] ตัวอย่างภาษาคอมพิวเตอร์ ภาษาโปรแกรม ภาษาสคริปต์ ภาษามาร์กอัป ภาษาสอบถาม Transformation language
  

ภาษาคอมพิวเตอร์คืออะไร?
ภาษาคอมพิวเตอร์ (Computer Language) คือภาษาที่ใช้ หรือเกี่ยวข้องกับคอมพิวเตอร์ ซึ่งมักใช้ร่วมกับภาษาโปรแกรม แต่ภาษาคอมพิวเตอร์นั้นมีความหมายที่กว้างกว่า โดยไม่จำเป็นที่จะต้องเป็นภาษาโปรแกรม ซึ่งเป็นที่รู้กันว่าภาษาอย่าง HTML หรือ SQL ไม่ใช่ภาษาโปรแกรม แต่ถือว่าเป็นภาษาคอมพิวเตอร์ ภาษาโปรแกรม (Program Language) คือ วิธีการมาตรฐานในการสื่อสารสำหรับแสดงคำสั่งไปยังคอมพิวเตอร์ ภาษาโปรแกรมกำหนดไวยากรณ์และการตีความหมายจากโปรแกรมคอมพิวเตอร์ที่เขียนขึ้น ภาษาโปรแกรมทำให้โปรแกรมเมอร์สามารถระบุอย่างชัดเจนถึงข้อมูลที่คอมพิวเตอร์จะทำงาน และวิธีการที่คอมพิวเตอร์จะประมวลผลข้อมูลเหล่านั้น ภาษาคอมพิวเตอร์มีการพัฒนาหรือมีวิวัฒนาการมาโดยลำดับเช่นเดียวกับคอมพิวเตอร์ โดยจะสามารถแบ่งออกเป็นยุคหรือเป็นรุ่นของภาษา (Generation) ซึ่งในยุคหลังๆ จะมีการพัฒนาภาษาให้มีความสะดวกในการอ่านและเขียนง่ายขึ้นกว่าภาษาในยุคแรกๆ เนื่องจากจะมีโครงสร้างภาษาใกล้เคียงกับภาษาอังกฤษ เราสามารถแบ่งภาษาคอมพิวเตอร์ออกได้เป็น 5 ยุคดังนี้
1. ภาษาเครื่อง (Machine Language) เป็นภาษาที่เกิดขึ้นในยุคแรกสุด และเป็นภาษาเดียวที่เครื่องคอมพิวเตอร์จะสามารถเข้าใจคำสั่งได้ ภาษาเครื่องจะแทนข้อมูลหรือคำสั่งในโปรแกรมด้วยกลุ่มของตัวเลข 0 และ 1 หรือที่เรียกว่าเลขฐานสอง ซึ่งจะสัมพันธ์กับการเปิด (On) และการปิด (Off) ของสัญญาณไฟฟ้าภายในเครื่องคอมพิวเตอร์
 2. ภาษาแอสแซมบลี (Assembly Language) เป็นภาษาที่มีการใช้สัญลักษณ์ข้อความ (Mnemonic codes) แทนกลุ่มของเลขฐานสอง เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง แต่เนื่องจากคอมพิวเตอร์รู้จักเฉพาะภาษาเครื่องเท่านั้น ดังนั้นภาษาแอสแซมบลี จึงต้องใช้ตัวแปลภาษาที่เรียกว่า “แอสแซมเบลอร์ (Assembler)” เพื่อแปลคำสั่งภาษาแอสแซมบลีให้เป็นภาษาเครื่อง นอกจากนี้ผู้ที่จะเขียนโปรแกรมภาษาแอสแซมบลี ได้จะต้องมีความรู้ความเข้าใจในเรื่องของฮาร์ดแวร์เป็นอย่างดีเนื่องจากต้องยุ่งเกี่ยวกับการใช้งานหน่วยความจำที่เป็นรีจิสเตอร์ภายในตลอด ดังนั้นจึงเหมาะกับงานที่ต้องการความเร็วในการทำงานสูง ถึงแม้ว่าภาษานี้จะง่ายกว่าการเขียนภาษาเครื่อง แต่ก็ยังถือว่าเป็นภาษาชั้นต่ำที่ยังยากต่อการเขียนและการเรียนรู้มากสำหรับผู้ที่ไม่มีความรู้ด้านฮาร์ดแวร์นัก
3. ภาษาชั้นสูง (High-level Language) เรียกอีกอย่างว่าภาษารุ่นที่ 3 (3rd Generation Languages หรือ 3GLs) เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียนและอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆ ไป และที่สำคัญคือ ผู้เขียนโปรแกรมไม่จำเป็นต้องมีความรู้เกี่ยวกับระบบฮาร์ดแวร์ ตัวอย่างของภาษาประเภทนี้ ได้แก่ ภาษาฟอร์แทน (FORTRAN) โคบอล (COBOL) เบสิก (BASIC) ปาสคาล (PASCAL) ซี (C) เอดา (ADA) เป็นต้น อย่างไรก็ตามโปรแกรมที่ถูกเขียนด้วยภาษาประเภทนี้จะทำงานได้ก็ต่อเมื่อมีการแปลงให้เป็นภาษาเครื่องเสียก่อน ซึ่งวิธีการแปลงภาษาชั้นสูงให้เป็นภาษาเครื่องนั้น จะทำได้โดยใช้โปรแกรมที่เรียกว่า “คอมไพล์เลอร์ (Compiler)” หรือ “อินเตอร์พรีเตอร์ (Interpreter)” อย่างใดอย่างหนึ่ง โดยภาษาชั้นสูงแต่ละภาษาจะมีตัวแปลภาษาเฉพาะเป็นของตนเองใช้แทนกันไม่ได้
   3.1 คอมไพเลอร์ จะทำการแปลโปรแกรมทั้งโปรแกรมให้เป็นภาษาเครื่องทีเดียวการแปลนี้จะเป็นการตรวจสอบไวยากรณ์ของภาษา ถ้ามีข้อผิดพลาดทางไวยากรณ์ของภาษาเกิดขึ้น (Syntax error) ก็จะแจ้งให้ทราบ เป็นข้อความไดแอคนอสติค (Diagnostic Message) เพื่อให้ผู้เขียนโปรแกรมแก้ไขให้ถูกต้อง แล้วจึงค่อยแปลคำสั่งใหม่ โปรแกรมที่ยังไม่ผ่านการแปลจะเรียกว่า Source Program หรือ Source module แต่ถ้าผ่านการแปลเรียบร้อยแล้วและไม่มีข้อผิดพลาดใดๆ จะเรียกโปรแกรมส่วนนี้ว่า Object Program หรือ Object module ออปเจกต์โปรแกรมนี้จะยังไม่สามารถทำงานได้ จะต้องผ่านลิงค์ (Link) หรือรวมเข้ากับไลบรารี่ (Library) ของระบบก่อนจึงจะเป็นโปรแกรมที่สามารถทำงานได้หรือเป็นภาษาเครื่องที่เรียกว่า เอ็กซ์ซีคิวท์โปรแกรม (Execute Program) หรือ โหลดโมดูล (Load module) ซึ่งโดยทั่วไปแล้วจะเป็นไฟล์ที่มีนามสกุลเป็น .exe หรือ .com และสามารถนำโปรแกรมนี้ไปใช้งานได้ตลอดโดยไม่ต้องแปลใหม่อีก แต่ถ้ามีการแก้ไขโปรแกรมแม้เพียงเล็กน้อยก็จะต้องทำการแปลใหม่ตั้งแต่ต้น
  3.2 อินเตอร์พรีเตอร์ เป็นตัวแปลภาษาที่จะทำการแปลโปรแกรมภาษาชั้นสูงทีละคำสั่งให้เป็นภาษาเครื่องและทำการ Execute หรือทำงานคำสั่งนั้นทันทีทันใดก่อนที่จะทำการแปลในบรรทัดถัดไป ถ้าในระหว่างการแปลเกิดพบข้อผิดพลาดที่บรรทัดใดก็จะฟ้อง ให้ทำการแก้ไขทีละบรรทัดนั้นทันที อินเตอร์พรีเตอร์นี้เมื่อโปรแกรมเสร็จแล้วจะไม่สามารถเก็บเป็น Execute Program ได้ซึ่งต่างกับคอมไพเลอร์ ดังนั้นเมื่อจะเรียกใช้งานหรือรันโปรแกรมก็จะต้องทำการแปลโปรแกรมใหม่ทุกครั้ง ดังนั้นเมื่อจะเรียกใช้งาน Execute Program คอมไพเลอร์ ย่อมจะทำงานได้เร็วกว่าการเรียกใช้งานโปรแกรมที่ต้องผ่านการแปลด้วยอินเตอร์พรีเตอร์แต่ประโยชน์ของภาษาที่ถูกแปลด้วย อินเตอร์พรีเตอร์คือโปรแกรมจะมีโครงสร้างที่ง่ายต่อการพัฒนาตัวอย่างของภาษาโปรแกรมที่มีการใช้อินเตอร์พรีเตอร์ เป็นตัวแปลภาษาได้แก่ ภาษาเบสิก ภาษาเพิร์ล เป็นต้น การเขียนโปรแกรมด้วยภาษาชั้นสูงนอกจากจะให้ความสะดวกแล้ว ผู้เขียนแทบจะไม่ต้องมีความรู้เกี่ยวกับการทำงานของฮาร์ดแวร์ก็สามารถเขียนโปรแกรมสั่งให้เครื่องคอมพิวเตอร์ทำงานได้ ข้อดีอีกอย่างคือสามารถนำโปรแกรมที่เขียนขึ้นไปใช้งานบนเครื่องใดก็ได้ คือมีลักษณะที่ไม่ขึ้นอยู่กับกับเครื่อง (Hardware Independent) เพียงแต่ต้องทำการการแปลโปรแกรมใหม่เท่านั้น แต่ภาษาเครื่องที่ได้จากการแปลภาษาชั้นสูงนี้อาจเยิ่นเย้อ และไม่มีประสิทธิภาพเท่ากับการเขียนด้วยภาษาเครื่องหรือแอสเซมบลีโดยตรง ภาษารุ่นที่ 3 นี้ส่วนใหญ่จะจัดอยู่ในกลุ่มของภาษาที่มีแบบแผน (Procedural language) เนื่องจากลักษณะการเขียนโปรแกรมจะมีโครงสร้างแบบแผนที่เป็นระเบียบ คือ งานทุกอย่างผู้เขียนโปรแกรมต้องเขียนโปรแกรมควบคุมการทำงานเองทั้งหมด และต้องเขียนคำสั่งการทำงานที่เป็นขั้นตอนทุกอย่าง ไม่ว่าจะเป็นการสร้างแบบฟอร์มกรอกข้อมูล การประมวลผล หรือการสร้างรายงาน ซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อนและใช้เวลาในการพัฒนาค่อนข้างยาก
 4. ภาษาชั้นสูงมาก (Very high-level Language) เรียกได้อีกอย่างว่าภาษาในรุ่นที่ 4 (4GLs: Fourth Generation Languages) ภาษานี้เป็นภาษาที่อยู่ในระดับที่สูงกว่าภาษารุ่นที่ 3 มีลักษณะของภาษาในรุ่นที่เป็นธรรมชาติคล้ายๆ กับภาษาพูดของมนุษย์จะช่วย ในเรื่องของการสร้างแบบฟอร์มบนหน้าจอเพื่อจัดการเกี่ยวกับข้อมูล รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่ 3 ตัวอย่างของภาษาในรุ่นที่ 4 ได้แก่ Informix-4GL, Focus, Sybase, InGres เป็นต้น
5. ภาษาธรรมชาติ (Natural Language) เป็นภาษาในยุคที่ 5 ที่มีรูปแบบเป็นแบบ Nonprocedural เช่นเดียวกับภาษารุ่นที่ 4 ภาษา ธรรมชาตินี้ ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชี่ยวชาญ (Expert System) ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์ (Artificial Intelligence) ในการที่พยายามทำให้คอมพิวเตอร์เปรียบเสมือนกับเป็นผู้เชี่ยวชาญคนหนึ่ง ที่สามารถคิดและตัดสินใจได้เช่นเดียวกับมนุษย์ การที่เรียกว่าภาษาธรรมชาติ เพราะมนุษย์สามารถใช้ภาษาพูดป้อนเข้าไปในคอมพิวเตอร์ได้โดยตรง ซึ่งอาจมีรูปแบบที่ไม่แน่นอนตายตัว แล้วคอมพิวเตอร์ก็จะแปลคำสั่งเหล่านั้น ให้อยู่ในรูปแบบที่คอมพิวเตอร์เข้าใจ ถ้าคำถามใดไม่กระจ่างก็จะมีการถามกลับเพื่อให้เข้าใจคำถาม เมื่อเข้าใจคำถามแล้วคอมพิวเตอร์ก็จะสามารถตอบคำถามของมนุษย์ได้อย่างถูกต้อง พร้อมทั้งมีข้อแนะนำต่างๆ เพื่อช่วยในการตัดสินใจของ
มนุษย์ได้อีกด้วย


วันพุธที่ 10 กรกฎาคม พ.ศ. 2556

การถ่ายทอดความคิดในการแก้ปัญหาด้วยอัลกอริทึม



        รหัสลำลองหรือ pseudocode เป็นคำบรรยายที่เขียนแสดงขั้นตอนวิธี(algorithm) ของการเขียนโปรแกรม โดยใช้ภาษาที่กะทัดรัด สื่อสารกับโปรแกรมเมอร์ผู้เขียนโปรแกรม โดยอาจใช้ภาษาที่ใช้ทั่วไปและอาจมีภาษาที่ใช้ในการเขียนโปรแกรมประกอบ แต่ไม่มีมาตรฐานแน่นอนในการเขียน pseudocode  และไม่สามารถนำไปทำงานบนคอมพิวเตอร์โดยตรง(เพราะไม่ใช่คำสั่งในภาษาคอมพิวเตอร์) และไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง นิยมใช้ pseudocode แสดง algorithmมากกว่าใช้ผังงาน เพราะผังงานอาจไม่แสดงรายละเอียดมากนักและใช้สัญลักษณ์ซึ่งทำให้ไม่สะดวกในการเขียน เช่นโปรแกรมใหญ่ ๆ มักจะประกอบด้วยคำสั่งต่างๆที่ใกล้เคียงกับภาษาคอมพิวเตอร์ที่ใช้ในการเขียนโปรแกรมจริงๆ เช่น begin…end, if…else, do…while, while, for, read และ print การเขียนรหัสจำลองจะต้องมีการวางแผนสำหรับการอ้างอิงถึงข้อมูลต่างๆที่จะใช้ในโปรแกรมด้วยการสร้างตัวแปร โดยใช้เครื่องหมายเท่ากับ (=) แทนการกำหนดค่าให้กำหนดตัวแปรนั้นๆ

        ผังงาน (flowchart) คือ แผนภาพซึ่งแสดงลำดับขั้นตอนของการทำงาน โดยแต่ละขั้นตอนจะถูกแสดงโดยใช้สัญลักษณ์ซึ่งมีความหมายบ่งบอกว่า ขั้นตอนนั้น ๆ มีลักษณะการทำงาน ทำให้ง่ายต่อความเข้าใจ ว่าในการทำงานนั้นมีขั้นตอนอะไรบ้าง และมีลำดับอย่างไร

        ประเภทของผังงา
1. ผังงานระบบ (system flowchart) เป็นผังซึ่งแสดงขอบเขต และลำดับขั้นตอนการทำงานของระบบหนึ่ง ๆ
2. ผังงานโปรแกรม (Program flowchart) เป็นผังงานซึ่งแสดงลำดับขั้นตอนการทำงานของโปรแกรมหนึ่ง
         การใช้สัญลักษณ์
        จะใช้สัญลักษณ์ที่เป็นรูปภาพแทนคำสั่งการทำงานโดยจะไม่ใช้คำอธิบายลักษณะการทำงาน มีลูกศรแสดงทิศทางการไหลของข้อมูลตั้งแต่เริ่มต้นไปสิ้นสุดโปรแกรม

 

   โครงสร้างการเขียนผังงา
        เป็นรูปแบบพื้นฐานของการเขียนผังงาน เนื่องจากเขียนได้ง่ายและนำไปใช้งานมากที่สุด
                            
    


        ผังงานโปรแกรมสามารถนำมาใช้เขียนโปรแกรม โดยในการเขียนโปรแกรมสามารถเลือกใช้ภาษาได้หลายภาษา ไม่ว่าจะเป็นภาษาแอสเซมบลี ภาษาเบสิก ภาษาซี ภาษาปาสคาล ภาษาโคบอล ภาษาฟอร์แทรน หรือภาษาอื่น ๆ ซึ่งแต่ละภาษาก็มีรูปแบบไวยากรณ์ของภาษาที่ใช้แตกต่างกันออกไป แต่โดยทั่วไปแล้วจะมีรูปแบบหรือโครงสร้างของคำสั่งที่คล้ายกัน โดยทั่วไปทุกคำสั่งจะมีคำสั่งพื้นฐานต่อไปนี้
•    คำสั่งการรับข้อมูลเข้า และการแสดงผล
•    คำสั่งการกำหนดค่า
•    คำสั่งการเปรียบเทียบเงื่อนไข
•    คำสั่งการทำซ้ำหรือการวนลูป

•        ช่วยให้สามารถทำความเข้าใจลำดับขั้นตอนการทำงานของโปรแกรมหรือระบบใด ๆได้อย่างรวดเร็ว
•        ช่วยแสดงลำดับขั้นตอนการทำงาน ทำให้สามารถเขียนโปรแกรมได้อย่างเป็นระบบไม่สับสน นอกจากนี้ผังงานยังเป็นอิสระต่อภาษาที่ใช้ในการ เขียนโปรแกรม กล่าวคือจากผังงานเดียวกันสามารถนำไปเขียนโปรแกรมด้วยภาษาใดก็ได้
•        ช่วยในการตรวจสอบ และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด ช่วยให้การดัดแปลง แก้ไข ทำได้อย่างสะดวกและรวดเร็ว 
•        ช่วยให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมได้อย่างง่าย และรวดเร็ว

                                                             

วันพุธที่ 3 กรกฎาคม พ.ศ. 2556

กระบวนการเทคโนโลยีสาีรสนจเทศ


1. การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem) 

ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้
อยู่เสมอ จุดประสงค์ของขั้นตอนนี้ คือการทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร และสิ่งที่ต้องการคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล ในการวิเคราะห์ปัญหาใด กล่าวโดยสรุปมีองค์ประกอบในการวิเคราะห์ ดังนี้
          1. การระบุข้อมูลเข้า  ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
          2. การระบุข้อมูลออก  ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ
          3  การกำหนดวิธีประมวลผล  ได้แก่ การพิจารณาขั้นตอนวิธีหาคำตอบหรือข้อมูลออก

2. การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools and Algorithm development) 
ขั้นตอนนี้เป็นขั้นตอนของการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาข้อมูลและเงื่อนไขที่มีอยู่ และสิ่งที่ต้องการหาในขั้นตอนที่  1  แล้ว เราสามารถคาดคะเนวิธีการที่จะใช้ในการแก้ปัญหา ขั้นตอนนี้จำเป็นต้องอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา
            ขั้นตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหา โดยพิจารณาความเหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่างๆ ของปัญหาซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแก้ปัญหาดังกล่าว และสิ่งที่สำคัญคือความคุ้นเคยในการใช้งานเครื่องมือนั้นๆ ของผู้แก้ปัญหา

          
 อีกสิ่งหนึ่งที่สำคัญในการแก้ปัญหา คือยุทธวิธีที่ใช้ในการแก้ปัญหาหรือที่เราเรียกว่า ขั้นตอนวิธี(algorithm) ในการแก้ปัญหา  หลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว ผู้แก้ปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวเพื่อให้ได้ผลลัพธ์ที่ถูกต้องและดีที่สุด การออกแบบขั้นตอนวิธีในการแก้ปัญหา ผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงานเพื่อให้ง่ายต่อความเข้าใจ เช่น  ผังงาน (flowchart) ที่จำลองขั้นตอนวิธีการแก้ปัญหาในรูปของสัญลักษณ์  รหัสลำลอง (pseudo code) ซึ่งเป็นการจำลองขั้นตอนวิธีการแก้ปัญหาในรูปของคำบรรยาย การใช้เครื่องมือช่วยออกแบบดังกล่าวนอกจากแสดงกระบวนการที่ชัดเจนแล้ว ยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิดพลาดของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวดเร็ว


3. การดำเนินการแก้ปัญหา (Implementation) 
หลังจากที่ได้ออกแบบขั้นตอนวิธีเรียบร้อยแล้ว ขั้นตอนนี้เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่ได้เลือกไว้หากการแก้ปัญหาดังกล่าวใช้คอมพิวเตอร์เข้ามาช่วยขั้นตอนนี้ก็เป็นการใช้โปรแกรมสำเร็จหรือใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ปัญหา ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ ในขณะที่ดำเนินการหากพบแนวทางที่ดีกว่าที่ออกแบบไว้ก็สามารถปรับเปลี่ยนได้

4. การตรวจสอบและปรับปรุง (Refinement) 

หลังจากที่ลงมือแก้ปัญหาแล้ว ต้องตรวจสอบให้แน่ใจว่าวิธีการนี้ให้ผลลัพธ์ที่ถูกต้อง โดยผู้แก้ปัญหาต้องตรวจสอบว่าขั้นตอนวิธีที่สร้างขึ้นสอดคล้องกับรายละเอียดของปัญหา ซึ่งได้แก่ ข้อมูลเข้า และข้อมูลออก เพื่อให้มั่นใจว่าสามารถรองรับข้อมูลเข้าได้ในทุกกรณีอย่างถูกต้องและสมบูรณ์ ในขณะเดียวกันก็ต้องปรับปรุงวิธีการเพื่อให้การแก้ปัญหานี้ได้ผลลัพธ์ที่ดีที่สุด
                   ขั้นตอนทั้ง  4   ขั้นตอนดังกล่าวข้างต้น เป็นเสมือนขั้นบันได (stair) ที่ทำให้มนุษย์สามารถประสบความสำเร็จในการแก้ปัญหาต่างๆ ได้ รวมทั้งการเขียนหรือพัฒนาโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหาก็ต้องใช้กระบวนการตามขั้นตอนทั้ง  4   นี้เช่นกัน