บทที่2 หลักการแก้ปัญหา


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

ขั้นตอนการแก้ปัญหา

1)  การวิเคราะห์และกำหนดรายละเอียดของปัญหา  (State The Problem) ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา
แต่ผู้แก้ปัญหามักจะมองข้ามไป
จุดประสงค์ของขั้นตอนนี้ คือ
การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือ
เงื่อนไขของปัญหาคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล
กล่าวโดยสรุปมีองค์ประกอบในการวิเคราะห์ดังนี้
การระบุข้อมูลเข้า
ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา 
         การระบุข้อมูลออก 
ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ การกำหนดวิธีประมวลผล
ได้แก่ การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก  
2) การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools And Algorithm Development) ขั้นตอนนี้เป็นขั้นตอนของการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน
หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาเงื่อนไขและข้อมูลที่มีอยู่
และสิ่งที่ต้องการหาในการแก้ปัญหาอย่างละเอียดถี่ถ้วน
หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาเงื่อนไขและข้อมูลที่มีอยู่
และสิ่งที่ต้องการหาในขั้นตอนที่ 1แล้ว
เราสามารถคาดคะเนวิธีการที่จะใช้ในการแก้ปัญหา
ขั้นตอนนี้จำเป็นต้องอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก
หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา
ขั้นตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหา
โดยพิจารณาความเหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่างๆ ของปัญหา
ซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแก้ปัญหาดังกล่าว
และสิ่งที่สำคัญที่สุดคือความคุ้นเคยในการใช้งานเครื่องมือนั้นๆ ของผู้แก้ปัญหา
อีกสิ่งหนึ่งที่ สำคัญในการแก้ปัญหา คือ
ยุทธวิธีที่ใช้ในการแก้ปัญหา หรือที่เราเรียกว่า “ขั้นตอนวิธี” (Algorithm) ในการแก้ปัญหาหลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว
ผู้แก้ปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวเพื่อให้ได้ผลลัพธ์ที่ถูกต้องที่สุด การออกแบบขั้นตอนวิธีในการแก้ปัญหาผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงาน
เพื่อให้ง่ายต่อความเข้าใจ เช่น ผังงาน (Flowchart) ที่จำลองวิธีขั้นตอนการแก้ปัญหาในรูปแบบสัญลักษณ์
รหัสจำลอง (Pseudo Code) ซึ่งเป็นการจำลองขั้นตอนวิธีการปัญหาในรูปแบบคำบรรยาย
การใช้เครื่องมือช่วยออกแบบดังกล่าว
นอกจากแสดงกระบวนการที่ชัดเจนแล้วยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิดพลาด
ของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวดเร็ว
3) การดำเนินการแก้ปัญหา (Implementation) หลังจากที่ออกแบบขั้นตอนวิธีเรียบร้อยแล้ว
ขั้นตอนนี้เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่เลือกไว้
การแก้ปัญหาดังกล่าวใช้คอมพิวเตอร์เข้ามาช่วยงาน
ขั้นตอนนี้ก็เป็นการใช้โปรแกรมสำเร็จหรือใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ ปัญหา
ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้
ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ ในขณะดำเนินการ
หากพบแนวทางที่ดีกว่าที่ออกแบบไว้ ก็สามารถปรับเปลี่ยนได้
4) การตรวจสอบและปรับปรุง (Refinement) หลังจากที่ลงมือแก้ปัญหาแล้ว
ต้องตรวจสอบให้แน่ใจว่า
วิธีการนี้ให้ผลลัพธ์ที่ถูกต้อง
โดยผู้แก้ปัญหาต้องตรวจสอบว่าขั้นตอนวิธีที่สร้างขึ้นสอดคล้องกับรายละเอียด
ของปัญหา ซึ่งได้แก่ ข้อมูลเข้าและข้อมูลออก
เพื่อให้มั่นใจว่าสามารถรองรับข้อมูลเข้าได้ทุกกรณีอย่างถูกต้องสมบูรณ์ ในขณะเดียวกันก็ต้องปรับปรุงวิธีการเพื่อให้การแก้ปัญหานี้ได้ผลลัพธ์ที่ดีที่สุด
ขั้นตอนทั้ง 4 ขั้นตอนดังกล่าวข้างต้น เป็นเสมือนขั้นบันได (Stair) ที่ทำให้มนุษย์ประสบความสำเร็จในการแก้ปัญหาต่างๆ
ได้ รวมทั้งการเขียนหรือพัฒนาโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหา ก็ต้องใช้กระบวนการตามขั้นตอนทั้ง4 นี้เช่นกัน
การถ่ายทอดความคิดในการแก้ปัญหา 
จากขั้นตอนการแก้ปัญหาทั้ง 4 ขั้นตอนจะเห็นว่าขั้นตอนที่สำคัญคือ การวางแผนในการแก้ปัญหา สำหรับการแก้ปัญหาที่ไม่ซับซ้อนมากนักเรามักจะมีคำตอบให้กับปัญหานั้นได้ทันทีเสมือนว่าคำตอบของปัญหาได้ถูกกำหนด ไว้แล้วโดยที่ไม่ได้ตระหนักถึกกระบวนการคิดที่แสดงให้เห็นถึงแนวทางการแก้ปัญหา และนำเราไปถึงคำตอบของปัญหา ที่เป็นเช่นนี้เนื่องจากมนุษย์มีรูปแบบในการแก้ไขปัญหาที่ใช้สัญชาตญาณ ความหยั่งรู้ที่ได้จากการสั่งสมความรู้ การใช้เหตุผล และประสบการณ์ที่ผ่านมา อย่างไรก็ตาม เพื่อให้การดำเนินการตามแนวทางในการแก้ปัญหาที่ได้จากการวางแผนในการแก้ปัญหาไปดำเนินการ โดยใช้กระบวนการทางเทคโนโลยีสารสนเทศนั้น จำเป็นต้องวางแผนเป็นขั้นตอน เป็นระเบียบ และสามารถนำไปปฏิบัติได้ ทั้งนี้ทำได้โดยอาศัยการถ่ายทอดความคิดที่มีการกำหนดจุดเริ่มต้น จุดสิ้นสุด และลำดับก่อนหลังของขั้นตอนการแก้ปัญหาที่ชัดเจนการถ่ายทอดความคิดอาจะอยู่ในรูปของข้อความที่เป็นลำดับซึ่งเรียกว่า รหัสลำลองหรือในรูปของผังงานการถ่ายทอดความคิดเป็นเครื่องมือที่ช่อยให้เราสามารถวางแผนการแก้ปัญหาได้อย่างถูกต้อง ครบถ้วนและตรวจสอบได้ โดยเฉพาะปัญหาที่ยุ่งยากซับซ้อน ตัวอย่างต่อไปนี้เป็นการถ่ายทอดความคิดเป็นรหัสลำลอง
ตัวอย่างที่การทำบะหมี่น้ำโดยใช้บะหมี่กึ่งสำเร็จรูป
เริ่มต้น > ต้มน้ำให้เดือด >ใส่เส้นบะหมี่>รอ 2 นาที> ใส่เครื่องปรุง> จบ
ตัวอย่างที่2 การคำนวณหาพื้นที่สามเหลี่ยม
เริ่มต้น> กำหนดความยาวของฐาน> คำนวณหาพื้นที่สามเหลี่ยม> กำหนดความสูง> แสดงผลลัพธ์> จบ
การถ่ายทอดความคิดในรูปของผังงานมักถูกใช้ในขั้นตอนการวางแผนในการแก้ปัญหาสำรับการดำเนินการแก้ปัญหา ด้วยวิธีการเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงาน ดังนั้นสถาบันมาตรฐานแห่งชาติอเมริกา (The American Standard Institute: ANSI) ได้กำหนดให้สัญญาลักษณ์ที่เป็นมาตรฐานในการเขียนผังงานไว้ ซึ่งในที่นี้จะแนะนำการใช้งานเพียง 5 สัญลักษณ์พื้นฐาน ดังนี้



สัญลักษณ์
ชื่อเรียก
ความหมาย
เริ่มต้นจุดเริ่มต้น-สิ้นสุดของผังงาน
การนำข้อมูลเข้า-ออกแบบทั่วไปจุดนำข้อมูลเข้า-ออก โดยไม่ระบุอุปกรณ์
การปฏิบัติจุดที่มีการปฏิบัติการอย่างใดอย่างหนึ่ง
การตัดสินใจจุดที่จะต้องเลือกอย่างใดอย่างหนึ่ง
ทิศทางทิศทางขั้นตอนการดำเนินงานซึ่งจะปฏิบัติต่อเนื่องกันตามลูกศรชี้
วิธีการกำหนดค่าให้แก่ตัวแปรใน C++ ทำได้ ดังนี้
        1. การใช้ประโยคคำสั่งเครื่องหมายเท่ากับ (=) โดยกำหนดให้ชื่อตัวแปรที่จะใช้เก็บค่าอยู่ทางซ้าย
มือของ เครื่องหมาย = ตัวแปรหรือค่าคงที่อยู่ทางด้านขวาของเครื่องหมาย ดังเช่นตัวอย่างโปรแกรมต่อ
ไปนี้
ตัวอย่างโปรแกรม variable.cpp แสดงการกำหนดค่าคงที่ให้กับตัวแปรในโปรแกรม โดยใช้
เครื่องหมายเท่ากับ =
/*Program : variable.cpp
Process : Display set value of varible */
#include <iostream.h>
#include <conio.h>
void main()
{ int number; //declaration variable การประกาศตัวแปรภายในฟังก์ชันmain()
float sales,purchase; //declaration variable
// set value of variable
number = 50;
sales = 5000.75; การกำหนดค่าคงที่ให้กับตัวแปร
purchase = 3500.50;
clrscr(); // function clear screen from <conio.h>
//show value from variable
cout << "Show varlue of variable"<<endl;
cout << "number = " << number<<endl;
cout << "sales = " << sales<<endl;
cout << "purchase = " << purchase;
getch(); // function getch() for wait to press anykey from <conio.h>
}
หมายเหตุ กรณีเป็นตัวแปรประเภทตัวเลข ค่าคงที่ด้านขวามือห้ามมีเครื่องหมายวรรคตอนใด ๆ
ทั้งสิ้น ยกเว้นจุดทศนิยม ส่วนตัวแปรประเภท char กำหนดค่าคงที่ในเครื่องหมาย '_' เช่น ch = 'A';
        2. การกำหนดค่าเริ่มต้นให้แก่ตัวแปร> เมื่อมีการประกาศใช้ตัวแปรในลักษณะ definition มีการ
กำหนดค่าคงที่ให้แก่ตัวแปรทันที 

ตัวอย่างโปรแกรม varia2.cpp แสดงการกำหนดค่าให้แก่ตัวแปร number, sales, purchase
ด้วยเครื่องหมาย = เมื่อประกาศตัวแปรในโปรแกรม
/*Program : varia2.cpp
Process : Display set value of varible */
#include <iostream.h>
#include <conio.h>
void main()
{ int number=500; //declaration and set value variable ประกาศตัวแปร
float sales=500.50,purchase=3500.75; //declaration and set value variable พร้อมกำหนดค่า
clrscr(); // function clear screen from <conio.h>
//show value from variable
cout << "Show varlue of variable"<<endl;
cout << "number = " << number<<endl;
cout << "sales = " << sales<<endl;
cout << "purchase = " << purchase;
getch(); // function getch() for wait to press anykey from <conio.h>
}
        3. การกำหนดค่าตัวแปรโดยการรับค่าทางแป้นพิมพ์ โดยการใช้ฟังก์ชันในการรับข้อมูล (Input)
เข้าไปเก็บไว้ในตัวแปร จะกล่าวรายละเอียดต่อไปในบทที่ 2
ตัวแปรประเภท Global และ Local



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

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

นอกจากนี้แล้ว คุณจุงยังให้ความเห็นว่า....... อย่ามองลูกค้าคือคนที่เข้ามาซื้อของเราเท่านั้น ถ้าเราสามารถมองคนอื่นๆ ที่เค้าเกียวข้องด้วย เป็นกลุ่มลูกค้าของเรา เช่น ถ้าเค้ามาซื้อของต้องนึกถึงครอบครัวของเค้า เราก็สามารถเสนอขายสินค้า ให้กับคนเพียงคนเดียวที่มาซื้อ แต่ได้ลูกค้าเป้นคนทั่งครอบครัว

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น