problem solving technique l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
????????????????? (Problem Solving Technique ) PowerPoint Presentation
Download Presentation
????????????????? (Problem Solving Technique )

Loading in 2 Seconds...

play fullscreen
1 / 43

????????????????? (Problem Solving Technique ) - PowerPoint PPT Presentation


  • 268 Views
  • Uploaded on

เทคนิคการแก้ปัญหา (Problem Solving Technique ). ปัญหาและอัลกอริทึม (Algorithmic Problems and Algorithm).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '????????????????? (Problem Solving Technique )' - bernad


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
algorithmic problems and algorithm
ปัญหาและอัลกอริทึม (Algorithmic Problems and Algorithm)

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

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

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

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

bubble sort
ตัวอย่าง : อัลกอริทึมของการเรียงลำดับข้อมูลแบบ Bubblesort

การเรียงลำดับข้อมูลคือการจัดลำดับของข้อมูลในชุดเดียวกันให้เรียงกันจากค่าน้อยไปมาก หรือจากค่ามากไปหาน้อย โดยการเปรียบเทียบข้อมูลในชุดนั้น

ตัวอย่าง

3

1

5

2

4

2

1

5

4

3

มีการใช้ดุลยพินิจ และวิจารณญาณในการแก้ปัญหา

slide6
การเรียงลำดับข้อมูลแบบ bubble sort

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

slide7
อัลกอริทึมของ Bubble Sort ที่เรียงข้อมูลจากน้อยไปมากเป็นดังนี้
  • ทำซ้ำขั้นตอนการจัดเรียงทั้งหมดจำนวนรอบเท่ากับจำนวนข้อมูลลบด้วยหนึ่ง
  • ทำซ้ำการเปรียบเทียบข้อมูลที่ไม่ได้เรียง
  • เปรียบเทียบข้อมูลปัจจุบันกับข้อมูลตัวถัดไป ถ้ามีค่ามากกว่าให้สลับข้อมูลกัน
  • ตรวจสอบว่าในรอบนั้นมีการสลับตำแหน่งกันหรือไม่

4.1 ถ้ามี ให้ลดจำนวนข้อมูลที่ยังไม่ได้เรียงลงไปหนึ่ง แล้วทำซ้ำข้อ 1 จนครบ

4.2 ถ้าไม่มี จบการทำงาน

slide8
ตัวอย่าง ข้อมูลที่ได้จากการเรียงข้อมูลด้วยวิธี Bubble Sort จากน้อยไปมาก

เริ่มต้น 5 7 2 9 8 1 3 6 0 4

รอบที่ 1 5 2 7 8 1 3 6 0 4 9

รอบที่ 2 2 5 7 1 3 6 0 4 8 9

รอบที่ 3 2 5 1 3 6 0 4 7 8 9

รอบที่ 4 2 1 3 5 0 4 6 7 8 9

รอบที่ 5 1 2 3 0 4 5 6 7 8 9

รอบที่ 6 1 2 0 3 4 5 6 7 8 9

รอบที่ 7 1 0 2 3 4 5 6 7 8 9

รอบที่ 8 0 1 2 3 4 5 6 7 8 9

รอบที่ 9 0 1 2 3 4 5 6 7 8 9

bubble sort9
#include <stdio.h>

#define N 10

void main(void) {

int data[10],loop,loopA,loopB,temp;

for(loop=0;loop<N;loop++)

{ printf(“Please Enter number of %d :“,loop +1);

scanf(“%d”,&data[loop]);

}

for(loopA=0;loopA<N;loopA++) {

for(loopB=0;loopB<N;loopB++) {

if (data[loopB] >data[loopB+1])

{ temp=data[loopB];

data[loopB]=data[loopB+1];

data[loopB+1]=temp;

}

}

for(loop=0;loop<N;loop++)

{ printf(“ %3d”,data[loop]);

}

printf(“\n”);

}

โปรแกรมเรียงลำดับแบบ Bubble Sort
slide10
ขั้นตอนการวิเคราะห์เพื่อการแก้ปัญหาขั้นตอนการวิเคราะห์เพื่อการแก้ปัญหา
  • ปัญหาที่จะนำมาวิเคราะห์เพื่อจัดทำโปรแกรมนั้นจะต้องเป็นปัญหาประเภท อัลกอริทึมเท่านั้น
  • เมื่อประสบปัญหาใด ๆ ก็ตาม สิ่งแรกที่กระทำก็คือ การพินิจพิเคราะห์ปัญหานั้นอย่างถี่ถ้วน
  • ขั้นต่อไปก็จะตั้งคำถามถามตัวเองเป็นลำดับว่า อะไรคือปัญหาหรือปัญหานั้นต้องการคำตอบอะไร
  • ถามตัวเองว่าสิ่งใดเป็นข้อมูลบ้าง และวิธีการแก้ปัญหาควรเป็นอย่างไร
  • จากนั้นก็จะคิดวางแผนการแก้ปัญหา
slide11
ขั้นตอนการแก้ปัญหา
  • วิเคราะห์ผลลัพธ์ที่โจทย์ต้องการ
  • วิเคราะห์ข้อมูลที่โจทย์ให้มา
  • วิเคราะห์กระบวนการแก้ปัญหาหรือการประมวลผลข้อมูล
slide12
ตัวอย่าง : จงคำนวณหาพื้นที่สามเหลี่ยม โดยให้ผู้ใช้ใส่ข้อมูลที่เกี่ยวข้อง ทางแป้นพิมพ์

ผลลัพธ์ คือการคำนวณพื้นที่

ข้อมูลที่จะต้องใช้ในการคำนวณพื้นที่ดังกล่าวนี้ ได้แก่ตัวเลขบอกขนาด ฐาน (Base) ตัวเลขบอกขนาด สูง (Height) ซึ่งวัดจากมุมมาตั้งฉากกับฐานซึ่งจะถูกป้อนทางแป้นพิมพ์

การประมวลผลข้อมูล ใช้สูตรคือ ตัวเลข 1/2 หรือ 0.5 ซึ่งเป็นเลขค่าคงที่ (Constant) จะต้องมาใช้คูณ ร่วมกับฐาน และสูง เป็นไปตามสูตรการคำนวณพื้นที่สามเหลี่ยม = 1/2 x ฐาน x สูง ซึ่งเป็นที่รู้กันโดยทั่วไป

slide13
ลักษณะข้อมูล

ลักษณะข้อมูลที่วิเคราะห์ได้จากโจทย์ปัญหาจะมีอยู่ 3 ลักษณะ

  • ข้อมูลที่โจทย์กำหนดมาให้โดยตรง

ตัวอย่างเช่น กำหนดให้ a = 20 b = 15 c = 5

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

ตัวอย่างเช่นคำนวณหาพื้นที่ ข้อมูลที่เป็นพื้นฐานคือสูตรที่ใช้ในการคำนวณ

slide15
ตัวอย่างปัญหาโจทย์ทางคอมพิวเตอร์ตัวอย่างปัญหาโจทย์ทางคอมพิวเตอร์
  • ต้องการทราบผลลัพธ์ของ 7+5 และให้แสดงผลลัพธ์
  • ให้รับข้อมูลเข้าจากผู้ให้ โดยข้อมูลนำเข้าทั้งสองจำนวนเป็นตัวเลขจำนวนเต็มใด ๆ แล้วให้ทำการเปรียบเทียบ หาค่าที่มากกว่า แสดงผลทางจอภาพ
  • ให้รับข้อมูลจำนวนเต็มจากผู้ใช้ 3 จำนวน แล้วดำเนินการเปรียบเทียบหาค่า สูงสุด สมมุติว่าทั้ง 3 ค่าไม่เท่ากัน แล้วแสดงค่าสูงสุดค่านั้น
slide16
ให้คำนวณพื้นที่แต่ละชนิดต่อไปนี้ : พื้นที่สี่เหลี่ยม, พื้นที่สามเหลี่ยม พื้นที่รูปวงกลม โดยรับข้อมูลที่เกี่ยวข้องจากผู้ใช้นำเข้าทางแป้นพิมพ์ แสดงขนาดของข้อมูลที่ใส่ พร้อมทั้งจำนวนเนื้อที่ที่คำนวณได้
  • ให้รับข้อมูลตัวเลขจำนวนจริงจากผู้ใช้ 10 จำนวน เพื่อดำเนินการหาผลรวม และค่าเฉลี่ยของตัวเลขทั้ง 10 จำนวนนั้น แสดงผลรวม และค่าเฉลี่ยที่ได้
  • รับข้อมูลไม่ทราบจำนวนจากผู้ใช้ ในที่นี้ข้อมูลเป็นตัวเลข และทำการบวกสะสมจนกระทั่งหมดข้อมูล ให้แสดงค่ายอดรวมและค่าเฉลี่ย
slide17
เทคนิคการออกแบบโปรแกรมในขั้นตอนเริ่มต้นเทคนิคการออกแบบโปรแกรมในขั้นตอนเริ่มต้น

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

slide18
โดยทั่วไปแล้วผู้เขียนโปรแกรมจะมีแนวทางการเริ่มต้นออกแบบด้วยการร่างลำดับของคำสั่งขึ้นมาก่อน เพื่อที่จะมองภาพของโปรแกรมออกมาได้อย่างเป็นรูปธรรม ง่ายต่อการเข้าใจ และสามารถนำกลับมาตรวจสอบได้ใหม่ภายหลัง ซึ่งรูปแบบการร่างลำดับของคำสั่ง ที่เป็นที่ยอมรับและใช้กันอย่างแพร่หลาย มีอยู่ด้วยกัน 2 รูปแบบคือ
  • รหัสจำลอง (Pseudo code)
  • ผังงาน (Flowchart)
pseudo code
รหัสจำลอง (Pseudo code)

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

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

โจทย์ นักศึกษาจะสอบผ่าน เมื่อได้คะแนนตั้งแต่ 50 คะแนนขึ้นไป

เขียนเป็นรหัสจำลองได้ว่า

ถ้าคะแนนของนักศึกษาสูงกว่าหรือเท่ากับ 50

พิมพ์ “Passed”

รหัสจำลองข้างต้นสามารถเขียนเป็นโปรแกรมภาษาซี ได้ดังนี้

if (score >= 50)

printf(“Passed\n”);

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

slide22
การเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบเป็นลำดับการเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบเป็นลำดับ

โปรแกรมที่มีโครงสร้างแบบเป็นลำดับ เป็นชุดของคำสั่งที่มีขั้นตอนเรียงกัน และการทำงานของโปรแกรมจะเลื่อนไปตามลำดับที่ปรากฏ ดังนั้นการเขียนรหัสจำลองก็จะเขียนตามลำดับขั้นการทำงานของโปรแกรมเช่นกัน ตัวอย่างเช่น

จงคำนวณหาดอกเบี้ย โดยรับค่าเงินต้นและอัตราดอกเบี้ยจากแป้นพิมพ์

เขียนเป็นรหัสจำลองได้ว่า

เริ่ม

รับค่าเงินต้น และอัตราดอกเบี้ยเพื่อใช้ในการคำนวณหาดอกเบี้ย

คำนวณหาดอกเบี้ยโดยใช้สมการ ดอกเบี้ย = เงินต้น*อัตราดอกเบี้ย

แสดงค่าของดอกเบี้ยที่คำนวณได้

จบ

slide23
การเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบทางเลือกการเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบทางเลือก

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

โจทย์ ธนาคารกำหนดอัตราดอกเบี้ยของผู้ฝากออมทรัพย์ในอัตราร้อยละ 4 แต่ให้อัตราดอกเบี้ยพิเศษสำหรับผู้ที่ฝากเงินออมทรัพย์มากกว่า 1,000,000 บาทขึ้นไป โดยให้ในอัตราร้อยละ 5 จงเขียนโปรแกรมคำนวณหาดอกเบี้ย โดยรับค่าเงินต้นจากแป้นพิมพ์

slide24
เริ่ม

รับค่าเงินต้น

ถ้า เงินต้นที่รับค่าเข้ามามากกว่า 1 ล้านบาท แล้ว

ให้ คำนวณดอกเบี้ยในอัตราร้อยละ 5

แต่ถ้าไม่ใช่แล้ว

ให้ คำนวณดอกเบี้ยในอัตราร้อยละ 4

ดอกเบี้ย = เงินต้น*อัตราดอกเบี้ย

แสดงค่าดอกเบี้ยที่คำนวณได้

จบ

slide25
การเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบทำซ้ำการเขียนรหัสจำลองของโปรแกรมที่มีโครงสร้างแบบทำซ้ำ

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

โจทย์ จงหาว่าค่าของตัวยกกำลัง n ค่าแรกที่ทำให้ 2 >10 (เมื่อ n เป็นจำนวนเต็มบวก) มีค่าเท่าใด

n

slide26
เริ่ม

กำหนดค่าเริ่มต้นของตัวยกกำลัง n เท่ากับ 0

กำหนดค่าเริ่มต้นของผลคูณ product เท่ากับ 1

เมื่อไรก็ตามที่ product <= 10

ให้คำนวณด้วยสมการ product = 2 * product

เพิ่มค่า n ขึ้นทีละ 1

แสดงค่าของตัวยกกำลัง n

จบ

flowchart
ผังงาน (Flowchart)

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

slide28
ผังงานช่วยอำนวยความสะดวกในการสื่อความหมายให้เข้าใจตรงกัน ใช้เป็นสื่อกลางในการติดต่อประสานความคิดระหว่างผู้ที่เกี่ยวข้อง เช่น ระหว่างนักวิเคราะห์ระบบกับผู้เขียนโปรแกรม หรือระหว่างผู้เขียนโปรแกรมกับผู้ใช้ได้เป็นอย่างดี
flowchart symbols
สัญลักษณ์ผังงาน ( Flowchart Symbols)

สัญลักษณ์ที่ใช้เขียนผังงานถูกกำหนดขึ้นโดยองค์กร ANSI (The American National Standard Institute) เป็นสัญลักษณ์มาตรฐานสากลเพื่อความสะดวกในการสื่อความหมายให้เข้าใจตรงกันและเป็นสากล ซึ่งมีสัญลักษณ์ต่างๆมากมาย ในที่นี้ขอแสดงบางส่วนของสัญลักษณ์ที่สำคัญที่ใช้เขียนผังงาน

slide30

ตัวอย่าง สัญลักษณ์ผังงาน

แทนจุดเชื่อม

slide31

ลักษณะผังงานของโครงสร้างต่างๆลักษณะผังงานของโครงสร้างต่างๆ

ในการเขียนโปรแกรมโดยทั่วไปจะประกอบด้วยโครงสร้างพื่นฐาน 3 รูปแบบซึ่งโปรแกรมทุกโปรแกรมสามารถเขียนขึ้นได้โดยใช้โครงสร้างควบคุมเพียง 3 ชนิด ต่อไปนี้ คือ

  • โครงสร้างแบบเป็นลำดับ (sequence structure)
  • โครงสร้างแบบมีการเลือก (selection structure)
  • โครงสร้างแบบทำซ้ำ (iteration structure)
slide32

ตัวอย่างโครงสร้างแบบเป็นลำดับ (SEQUENCE STRUCTURE)

จากตัวอย่าง อธิบายได้ดังนี้

1. เริ่มต้นการทำงาน

2. รับค่าเงินต้น และอัตราดอกเบี้ยเพื่อใช้ในการคำนวณหาดอกเบี้ย

3. คำนวณหาดอกเบี้ยโดยใช้สมการต่อไปนี้

ดอกเบี้ย = เงินต้น*อัตราดอกเบี้ย

4. แสดงค่าของดอกเบี้ยซึ่งคำนวณได้

5. จบการทำงาน

slide33

ตัวอย่างโครงสร้างแบบมีการเลือก (SELECTION STRUCTURE)

1. เริ่มต้นทำงาน

2. รับค่าเงินต้น

3. พิจารณาเงินต้นที่รับค่าเข้ามามากกว่า 1 ล้านบาทหรือไม่

3.1 ถ้าใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 5%

3.2 ถ้าไม่ใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 4%

ดอกเบี้ย = เงินต้น*0.04

4. แสดงค่าดอกเบี้ยที่คำนวณได้

5. จบการทำงาน

slide34

ตัวอย่างโครงสร้างแบบทำซ้ำ(ITERATION STRUCTURE)

ค่าของตัวยกกำลัง n ค่าแรกที่ทำให้

2 >10 (เมื่อ n เป็นจำนวนเต็มบวก)

n

slide35

ตัวอย่างการเขียนโฟลว์ชาร์ตกำหนดให้หน่วยความจำตำแหน่ง A และ B มีเลข 6 และ 2 เก็บอยู่ตามลำดับ จงเขียนผังงานแสดงการสลับค่า 6 และ 2 โดยสลับให้ได้ค่าเป็น A=2 และ B=6

ตำแหน่ง(Address)

ข้อมูล

เริ่มต้น

1

A = 6

6

2

A

A = B

W

6

B = 2

B = W

B

6

2

W = A

จบงาน

1

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

วิธีเขียนโฟลว์ชาร์ตที่ดี

  • ใช้สัญลักษณ์ตามที่กำหนด
  • สามารถแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง ซ้ายไปขวา
  • คำอธิบายสั้น กะทัดรัด เข้าใจง่าย
  • มีลูกศรแสดงทิศทางเข้าออกทุกแผนภาพ
  • ไม่ควรโยงเส้นไกลกันมากๆ ควรใช้สัญลักษณ์เชื่อมต่อแทน
  • ควรทดสอบความถูกต้องก่อนนำไปเขียนโปรแกรม
pseudo code37
ตัวอย่าง Pseudo Codeและโฟลว์ชาร์ต
slide38
ต้องการทราบผลลัพธ์ของ 7+5 และให้แสดงผลลัพธ์

กำหนด a=7

กำหนด b=5

กำหนดตัวแปร sum

sum=a+b

พิมพ์ค่า sum

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

รับค่า n1

รับค่า n2

ifn1 มากกว่า n2

พิมพ์ค่า n1

else if n1 ==n2

พิมพ์ค่า n1 = n2

else พิมพ์ n2

slide39

เริ่มต้น

เริ่มต้น

รับค่า n1

a=7

รับค่า n2

b=5

no

no

n1 > n2

n1 == n2

yes

yes

sum=a+b

พิมพ์ n1

พิมพ์ n1 = n2

พิมพ์ n2

พิมพ์ sum

สิ้นสุด

สิ้นสุด

slide40
ให้รับข้อมูลจำนวนเต็มจากผู้ใช้ 3 จำนวน แล้วดำเนินการเปรียบเทียบหาค่า สูงสุด สมมุติว่าทั้ง 3 ค่าไม่เท่ากัน แล้วแสดงค่าสูงสุดค่านั้น

รับค่า n1

รับค่า n2

รับค่า n3

ifn1 มากกว่า n2 แล้ว

if n1 มากกว่า n3

พิมพ์ค่า n1

else พิมพ์ค่า n3

else

if n2 มากกว่า n3

พิมพ์ค่า n2

else พิมพ์ค่า n3

slide41

เริ่มต้น

รับค่า n1

รับค่า n2

รับค่า n3

yes

no

n1 > 2

no

no

n2 > n3

n1 > n3

yes

yes

พิมพ์ n1

พิมพ์ n3

พิมพ์ n2

สิ้นสุด

slide42
ให้คำนวณพื้นที่แต่ละชนิดต่อไปนี้ : พื้นที่สี่เหลี่ยม, พื้นที่สามเหลี่ยม พื้นที่รูปวงกลม โดยรับข้อมูลที่เกี่ยวข้องจากผู้ใช้นำเข้าทางแป้นพิมพ์ แสดงขนาดของข้อมูลที่ใส่ พร้อมทั้งจำนวนเนื้อที่ที่คำนวณได้

รับค่าการกดเพื่อเลือกการคำนวณ

กด 1 คำนวณพื้นที่สี่เหลี่ยม : รับค่าความกว้าง

รับค่าความยาว

คำนวณพื้นที่สี่เหลี่ยม

พิมพ์ค่าพื้นที่

กด 2 คำนวณพื้นที่สามเหลี่ยม : รับค่าฐาน

รับค่าความสูง

คำนวณพื้นที่สามเหลี่ยม

พิมพ์ค่าพื้นที่

กด 3 คำนวณพื้นที่วงกลม : รับค่ารัศมี

คำนวณพื้นที่วงกลม

พิมพ์ค่าพื้นที่

slide43

เริ่มต้น

no

no

no

กด 1

กด 2

กด 3

รับค่าการกด

yes

yes

yes

รับค่าความกว้าง

รับค่าฐาน

รับค่ารัศมี

รับค่าความยาว

รับค่าความสูง

คำนวณพ.ท.

สี่เหลี่ยม

คำนวณพ.ท.

สามเหลี่ยม

คำนวณพ.ท.

วงกลม

พิมพ์พ.ท.

พิมพ์พ.ท.

พิมพ์พ.ท.

สิ้นสุด