940 likes | 1.52k Views
อัลกอริธึมและการวิเคราะห์ปัญหา. ครูเตชะภู พงษ์แจ่ม. นิยามอัลกอริธึม. อัลกอริธึม (Algorithm) หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตามขั้นตอนอย่างถูกต้องแล้ว จะต้องสามารถช่วยแก้ปัญหาหรือประมวลผลตามความต้องการได้สำเร็จ
E N D
อัลกอริธึมและการวิเคราะห์ปัญหาอัลกอริธึมและการวิเคราะห์ปัญหา ครูเตชะภู พงษ์แจ่ม
นิยามอัลกอริธึม • อัลกอริธึม (Algorithm) หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตามขั้นตอนอย่างถูกต้องแล้ว จะต้องสามารถช่วยแก้ปัญหาหรือประมวลผลตามความต้องการได้สำเร็จ • ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ
ตัวอย่าง การต้มไข่ไก่ • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm 1 • ต้มน้ำให้เดือด • ใส่ไข่ • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ Algorithm 2 - ต้มน้ำให้เดือด - ใส่ไข่ - รอ 5 นาที - ดับไฟ / ปิดเตา
Algotithm 1 Vs Algotithm 2 • ผลที่ได้เหมือนกันคือ ไข่ต้ม • ผลลัพธ์อัลกอริธึม 1 สามารถทานได้เลย ส่วนอัลกอริธึม 2 ต้องปอกก่อนทาน • สรุปคือ เราได้ผลลัพธ์ตามที่โจทย์ต้องการคือ ไข่ต้ม
Algotithm 3 การต้มไข่ไก่ทาน • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm • ต้มน้ำให้เดือด • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ What’s up?
Algotithm 3 การต้มไข่ไก่ทาน • วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก • Algorithm • ต้มน้ำให้เดือด • รอ 10 นาที • ดับไฟ / ปิดเตา • ปอกไข่ Algorithm นี้จะไม่ได้ไข่ต้ม เพราะ....
การวิเคราะห์ปัญหา • กระบวนการทำงานของคอมพิวเตอร์ Input Process Output • องค์ประกอบของงาน • Input , Process , Output การพิจารณา • ขั้นตอนการทำงานเป็นการนำเข้า ป้อนเข้าระบบ ถือเป็น Input • ขั้นตอนเกี่ยวกับการกระทำ(กริยา) ถือเป็น Process • ขั้นตอนการนำข้อมูลออกจากระบบ แสดงผล ถือเป็น Output
Example • เราลองนำขั้นตอนการต้มไข่มาวิเคราะห์ • ต้มน้ำให้เดือด => การกระทำ(Process) • ใส่ไข่ => การป้อนข้อมูล(Input) • รอ 10 นาที => การกระทำ(Process) • ดับไฟ => การกระทำ(Process) • ปอกไข่ => การกระทำ(Process) • ผลลัพธ์ => ไข่ต้มสุก (Output)
การวิเคราะห์ปัญหา ข้อมูลที่นำเข้าสู่ระบบคอมพิวเตอร์ประกอบด้วยอะไรบ้าง • การวิเคราะห์ปัญหา วิเคราะห์ผลลัพธ์ (Output) วิเคราะห์ Input Process เขียนขั้นตอนการแก้ปัญหา - กำหนดวัตถุประสงค์ของงาน - รูปแบบของผลลัพธ์
การวิเคราะห์ปัญหา ตัวอย่างต้องการคำนวณหาพื้นที่ของสามเหลี่ยมรูปหนึ่ง 1. วิเคราะห์ผลลัพธ์ พื้นที่สามเหลี่ยม กำหนดวัตถุประสงค์ การคำนวณหาพื้นที่สามเหลี่ยม รูปแบบผลลัพธ์ ความยาวฐาน = ……………… ความสูง = ……………… พื้นที่สามเหลี่ยม = …………… 2.กำหนดข้อมูลเข้า1. ความยาวฐาน 2. ความสูง
การวิเคราะห์ปัญหา 3. ขั้นตอนการประมวลผล • ป้อนความยาวฐาน • ป้อนความสูง • คำนวณพื้นที่สามเหลี่ยม จากสูตร พื้นที่สามเหลี่ยม = ความยาวฐาน ความสูง
ตัวอย่าง อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลข 1. เปิดเครื่องคิดเลข 2. พิมพ์ยอดเงิน 3. กดเครื่องหมาย (+) 4. กลับไปที่ข้อ 2 ทำจนกระทั่งราคาทั้งหมดถูกพิมพ์เข้าเครื่องและกด เครื่องหมาย = 5. เขียนยอดรวมราคา 6. ปิดเครื่องคิดเลข
การวิเคราะห์อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลขการวิเคราะห์อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลข • 1. วิเคราะห์ผลลัพธ์ : ยอดรวมราคา • 2. กำหนดข้อมูลเข้า : ยอดเงิน • 3. ขั้นตอนการประมวลผล • 3.1 พิมพ์ยอดเงิน • 3.2 กดเครื่องหมาย + • 3.3 วนการทำงาน • 3.4 กดเครื่องหมาย = • 3.5 คำนวณยอดรวมราคา
ตัวอย่าง 4 • การโยนเหรียญเสี่ยงทายเพื่อตัดสินใจว่าจะกินขนมปังหรือผลไม้ โดยมีเงื่อนไขว่า ถ้าออกหัวกินขนมปัง ถ้าออกก้อยกินผลไม้ • วัตถุดิบ : ผลการโยน ผลลัพธ์ : กินอะไร(ผลไม้/ขนมปัง) • โยนเหรียญ => การกระทำ • ดูเหรียญ => รับข้อมูล • ถ้าออกหัว => ไปขั้นตอนที่ 5 • ถ้าออกก้อย => ไปขั้นตอนที่ 6 • กินขนมปัง => ไปขั้นตอนที่ 7 • กินผลไม้ => ไปขั้นตอนที่ 7 • หยุด
การออกแบบอัลกอริธึม • ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ ซึ่งในแต่ละแบบเครื่องคอมพิวเตอร์ก็จะใช้ในหน่วยความจำ และเวลาในการประมวลผลไม่เท่ากัน ดังนั้น การจะเปรียบเทียบว่าโปรแกรมคอมพิวเตอร์ใครเก่งกว่ากันนั้นจึงใช้การเปรียบเทียบและประสิทธิภาพของอัลกอริธึมนั่นเอง • อัลกอริธึมของใครใช้เวลาในการประมวลผลและหน่วยความจำน้อยกว่า ถือว่าอัลกอริธึมนั้นฉลาดกว่า
ประสิทธิภาพของอัลกอริธึม • จะพิจารณาอยู่ 2 ส่วนหลักๆ ดังนี้ • หน่วยความจำ(memory)ที่จะต้องใช้ในการประมวลผล • เวลา(time)ที่ใช้ในการประมวลผล
อัลกอริธึมที่ดีจะประกอบด้วยคุณสมบัติต่างๆดังนี้อัลกอริธึมที่ดีจะประกอบด้วยคุณสมบัติต่างๆดังนี้ • อัลกอริธึมที่ดีต้องมีความถูกต้อง (correctness) • อัลกอริธึมที่ดีต้องง่ายต่อการอ่าน(readability) • อัลกอริธึมที่ดีต้องสามารถปรับปรุงได้ง่ายต่ออนาคต(ease of modification) • อัลกอริธึมที่ดีสามารถนำกลับมาใช้ใหม่ได้(Reusability) • อัลกอริธึมที่ดีต้องมีประสิทธิภาพ (efficiency)
การควบคุมการทำงานของโปรแกรม (Program Control Flow) • การควบคุมการทำงานของโปรแกรมเป็นเครื่องมือที่ผู้พัฒนาโปรแกรมใช้ในการแสดงลำดับการทำงานของโปรแกรมหรือใช้อธิบายอัลกอริธึม ให้เป็นระบบและง่ายต่อความเข้าใจ โดยโครงสร้างอาจจะอยู่ในรูปแบบดังนี้คือ 1. ผังงาน (Flowchart) ซึ่งเป็น Flow Diagram ชนิดหนึ่งสำหรับใช้อธิบายขั้นตอนการทำงานของโปรแกรมในลักษณะรูปภาพ 2. ชุดคำสั่งเทียม (Pseudocode) จะมีสัญลักษณ์คล้ายกับภาษาอังกฤษ ก้ำกึ่งระหว่างภาษาอังกฤษกับภาษาคอมพิวเตอร์ใช้ในการอธิบายลักษณะโครงสร้างข้อมูล และการทำงานของอัลกอริธึมที่เราเขียนขึ้น
Flow Chart และ Pseudo Code Algorithm Summation • Sum = 0 • Input (value1) • Input (value2) • Input (value3) • Sum = value1 + value2 + value3 • Output (sum) End . การเขียนอัลกอริธึมการบวกเลข 3 ตัว ในรูปแบบ Pseudo
สัญลักษณ์ในผังงาน (Flow Chart)
สัญลักษณ์ในผังงาน (Flow Chart)
จงเขียนผังงานแสดงการเขียนและส่งจดหมายจงเขียนผังงานแสดงการเขียนและส่งจดหมาย ตัวอย่างการเขียนผังงาน
ตัวอย่างผังงานการทานยาตัวอย่างผังงานการทานยา
วิธีการเขียนผังงานที่ดีวิธีการเขียนผังงานที่ดี • 1. ใช้สัญลักษณ์ตามที่กำหนดไว้ • 2. ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง หรือจากซ้ายไปขวา • 3. คำอธิบายในภาพสัญลักษณ์ผังงานควรสั้นกะทัดรัด และเข้าใจง่าย • 4. ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า - ออก • 5. ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน • 6. ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรมจริง
โครงสร้างพื้นฐานที่ใช้ในการเขียนโปรแกรมโครงสร้างพื้นฐานที่ใช้ในการเขียนโปรแกรม 1. โครงสร้างแบบลำดับ (Sequence Structure) 2. โครงสร้างแบบเลือก (Selection Structure) 3. โครงสร้างแบบทำซ้ำหรือวนรอบ (Repetition or Looping Structure)
1. โครงสร้างแบบลำดับ (Sequence Structure) • ทำงานตามลำดับ • ทำงานจากบนลงล่าง (จุดเริ่มต้นถึงสิ้นสุด) • มีจุดเริ่มต้นจุดเดียว – จุดสิ้นสุดจุดเดียว • อาจเรียกใช้โมดูลอื่นได้
START คำสั่ง 1 คำสั่ง 2 คำสั่ง 3 STOP ผังงานโปรแกรมโครงสร้างแบบลำดับ
START ราคา = 0 รับจำนวนสินค้า และราคา ราคา = จำนวนชิ้น*ราคา พิมพ์ราคา STOP ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า
ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า • อัลกอริธึม • เริ่มต้นทำงาน • กำหนดค่า จำนวนเงินที่ชำระ(Price) เท่ากับศูนย์ • รับข้อมูล จำนวนสินค้า (Amt) และ ราคา (Cost) • คำนวณจำนวนเงินที่ชำระ จาก Price = Amt x Cost • แสดงผล จำนวนที่ต้องชำระ • จบการทำงาน รหัสเทียม (Pseudo Code) Begin Price = 0 Read Amt, Cost Price = Amt x Cost Write Price End
แบบฝึกหัดโปรแกรมคำนวณพื้นที่สามเหลี่ยมแบบฝึกหัดโปรแกรมคำนวณพื้นที่สามเหลี่ยม การแสดงผล : พื้นที่สามเหลี่ยม การรับข้อมูล : ความสูงและฐาน การประมวลผล : คำนวณพื้นที่สามเหลี่ยม ½ x สูง x ฐาน จงเขียน Algorithm, Pseudo code, Flowchart
ตัวอย่าง โปรแกรมคำนวณพื้นที่สามเหลี่ยม • อัลกอริธึม • เริ่มต้นทำงาน • กำหนดค่า พื้นที่สามเหลี่ยม(Area)= 0 • รับข้อมูล ความสูง(Height) และ ฐาน (Base) • คำนวณพื้นที่สามเหลี่ยม จากArea = Height x Base • แสดงผล พื้นที่สามเหลี่ยม • จบการทำงาน รหัสเทียม (Pseudo Code) Begin End
ตัวอย่าง โปรแกรมคำนวณพื้นที่สามเหลี่ยม Flowchart
แบบฝึกหัดโปรแกรมคำนวณพื้นที่วงกลมแบบฝึกหัดโปรแกรมคำนวณพื้นที่วงกลม การแสดงผล : พื้นที่วงกลม การรับข้อมูล : การประมวลผล : จงเขียน Algorithm, Pseudo code, Flowchart
2. โครงสร้างแบบเลือก (Selection Structure) • มีเงื่อนไขที่ต้องตัดสินใจเลือกการทำงาน • ผลลัพธ์ของเงื่อนไขคือ จริง หรือ เท็จ เท่านั้น
ใช่ เงื่อนไข งานที่ต้องทำ ไม่ใช่ งานต่อไป 2.1 Flowchart แบบหนึ่งทางเลือก • แบบ 1 ทางเลือก หรือ โครงสร้าง IF….THEN • เป็นโครงสร้างที่ทดสอบเงื่อนไข แล้วเลือกว่าจะทำหรือไม่ทำ ก่อนที่จะไปทำงานอื่นต่อไป
2.1 Flowchart แบบหนึ่งทางเลือก - แบบ 1 ทางเลือก หรือ โครงสร้าง IF….THENจะทำงานเมื่อเงื่อนไขเป็นจริง เงื่อนไข เท็จ/FALSE จริง/TRUE คำสั่ง A รหัสเทียม IF …………… THEN …(คำสั่งA)…
2.1 Flowchart แบบหนึ่งทางเลือก • ตัวอย่าง โครงสร้าง IF….THEN • แม่ถามว่าหิวข้าวหรือไม่ ถ้าหิวก็ให้กิน ถ้าไม่หิวไม่ต้องกิน แล้วจึง เดินงานไปโรงเรียน (งานต่อไป) ใช่ หิวใช่ไหม? งานกินข้าว ไม่ใช่ งานเดินทางมาเรียน
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ เงื่อนไข - ถ้าได้คะแนนสอบ 50 คะแนนขึ้นไป ให้พิมพ์ข้อความความ ‘You pass’- ถ้าได้คะแนนต่ำกว่า 50 คะแนน ให้จบการทำงาน
Score>=50 Write ‘You pass’ STOP ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Read Score Y N
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ • อัลกอริธึม • เริ่มต้นทำงาน • รับค่า คะแนนสอบ(Score) • ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้พิมพ์ทางหน้าจอว่า ‘You pass’ • จบการทำงาน รหัสเทียม (Pseudo Code) Begin Read Score IF Score >= 50 THEN Write ‘You pass’ End
ตัวอย่างรับค่าอายุนักศึกษา ถ้าอายุนักศึกษาน้อยกว่า 20 ปี ให้แสดงคำว่า “you are so young” จงเขียน Algorithm, Pseudo code, Flowchart
2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE ใช่ ไม่ใช่ เงื่อนไข งาน 2 งาน 1
เงื่อนไข 2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE เท็จ/FALSE จริง/TRUE คำสั่ง B คำสั่ง A รหัสเทียม IF …………….. THEN …..(คำสั่งB)….. ELSE ..…(คำสั่งA)...… END IF
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ เงื่อนไข • ถ้าได้คะแนนสอบ 50 คะแนนขึ้นไป ให้พิมพ์ข้อความว่า ‘Pass’- ถ้าได้คะแนนต่ำกว่า 50 คะแนน ให้พิมพ์ข้อความว่า ‘Fail’ • ตัวแปร Grade เก็บค่าผลลัพธ์
Read Score Score>=50 ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Y Grade = ‘Pass’ N Grade = ‘Fail’ Write Grade STOP
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ รหัสเทียม (Pseudo Code) Begin Read Score IF Score >= 50 THEN Grade = ‘Pass’ ELSE Grade = ‘Fail’ END IF Write Grade End • อัลกอริธึม • เริ่มต้นทำงาน • รับค่า คะแนนสอบ (Score) • ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้ทำนิพจน์ Grade=‘Pass’ ถ้าน้อยกว่า 50 คะแนน ให้ทำนิพจน์ Grade=‘Fail’ • แสดงผล เกรด (Grade) • จบการทำงาน
ตัวอย่างให้รับค่า A,B ถ้า A>B ให้หาค่าผลต่าง แต่ถ้าไม่ใช่ให้หาค่าผลรวม จงเขียน Algorithm, Pseudo code, Flowchart