บทที่ 2 อัลกอริธึมและการวิเคราะห์ปัญหา
นิยามอัลกอริธึม อัลกอริธึม (Algorithm) หมายถึง ลำดับขั้นตอนวิธีในการทำงานของโปรแกรมเพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตามขั้นตอนอย่างถูกต้องแล้ว จะต้องสามารถช่วยแก้ปัญหาหรือประมวลผลตามความต้องการได้สำเร็จ ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ
ตัวอย่าง การต้มไข่ไก่ Algorithm 2 ต้มน้ำให้เดือด - ต้มน้ำให้เดือด วัตถุดิบ : ไข่ไก่ ผลลัพธ์ : ไข่ต้มสุก Algorithm 2 Algorithm 1 ต้มน้ำให้เดือด - ต้มน้ำให้เดือด ใส่ไข่ - ใส่ไข่ รอ 10 นาที - รอ 5 นาที ดับไฟ / ปิดเตา - ดับไฟ / ปิดเตา ปอกไข่
Algotithm 1 Vs Algotithm 2 ผลที่ได้เหมือนกันคือ ไข่ต้ม ผลลัพธ์อัลกอริธึม 1 สามารถทานได้เลย ส่วนอัลกอริธึม 2 ต้องปอกก่อนทาน สรุปคือ เราได้ผลลัพธ์ตามที่โจทย์ต้องการคือ ไข่ต้ม
การวิเคราะห์ปัญหา กระบวนการทำงานของคอมพิวเตอร์มีองค์ประกอบใดบ้าง Input Process Output การพิจารณา ขั้นตอนการทำงานเป็นการนำเข้า ป้อนเข้าระบบ Input Process ขั้นตอนเกี่ยวกับการกระทำ(กริยา) Output ขั้นตอนการนำข้อมูลออกจากระบบ แสดงผล
Example เราลองนำขั้นตอนการต้มไข่มาวิเคราะห์ ต้มน้ำให้เดือด => การกระทำ(Process) ใส่ไข่ => การป้อนข้อมูล(Input) รอ 10 นาที => การกระทำ(Process) ดับไฟ => การกระทำ(Process) การกระทำ(Process) ปอกไข่ => => ผลลัพธ์ (Output) ไข่ต้มสุก
เขียนขั้นตอนการแก้ปัญหา การวิเคราะห์ปัญหา ข้อมูลที่นำเข้าสู่ระบบคอมพิวเตอร์ประกอบด้วยอะไรบ้าง การวิเคราะห์ปัญหา วิเคราะห์ผลลัพธ์ (Output) วิเคราะห์ Input Process เขียนขั้นตอนการแก้ปัญหา - กำหนดวัตถุประสงค์ของงาน - รูปแบบของผลลัพธ์
ตัวอย่าง อัลกอริธึมเพื่อทำการบวกราคาโดยใช้เครื่องคิดเลข 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 หยุด
การออกแบบอัลกอริธึม ในการเขียนอธิบายอัลกอริธึมนั้น เราสามารถคิดอัลกอริธึมเพื่อมาแก้ปัญหาได้หลายแบบ ซึ่งในแต่ละแบบเครื่องคอมพิวเตอร์ก็จะใช้ในหน่วยความจำ และเวลาในการประมวลผลไม่เท่ากัน ดังนั้น การจะเปรียบเทียบว่าโปรแกรมคอมพิวเตอร์ใครเก่งกว่ากันนั้นจึงใช้การเปรียบเทียบและประสิทธิภาพของอัลกอริธึมนั่นเอง อัลกอริธึมของใครใช้เวลาในการประมวลผลและหน่วยความจำน้อยกว่า ถือว่าอัลกอริธึมนั้นฉลาดกว่า
อัลกอริธึมที่ดีจะประกอบด้วยคุณสมบัติต่างๆดังนี้ อัลกอริธึมที่ดีต้องมีความถูกต้อง (correctness) อัลกอริธึมที่ดีต้องง่ายต่อการอ่าน(readability) อัลกอริธึมที่ดีต้องสามารถปรับปรุงได้ง่ายต่ออนาคต(ease of modification) อัลกอริธึมที่ดีสามารถนำกลับมาใช้ใหม่ได้(Reusability) อัลกอริธึมที่ดีต้องมีประสิทธิภาพ (efficiency)
การควบคุมการทำงานของโปรแกรม (Program Control Flow) การควบคุมการทำงานของโปรแกรม เป็นเครื่องมือที่ผู้พัฒนาโปรแกรมใช้ในการแสดงลำดับการทำงานของโปรแกรมหรือใช้อธิบายอัลกอริธึม ให้เป็นระบบและง่ายต่อความเข้าใจ โดยโครงสร้างอาจจะอยู่ในรูปแบบดังนี้คือ 1. ผังงาน (Flowchart) ซึ่งเป็น Flow Diagram ชนิดหนึ่งสำหรับใช้อธิบายขั้นตอนการทำงานของโปรแกรมในลักษณะรูปภาพ 2. ชุดคำสั่งเทียม (Pseudocode) จะมีสัญลักษณ์คล้ายกับภาษาอังกฤษ ก้ำกึ่งระหว่างภาษาอังกฤษกับภาษาคอมพิวเตอร์ใช้ในการอธิบายลักษณะโครงสร้างข้อมูล และการทำงานของอัลกอริธึมที่เราเขียนขึ้น
สัญลักษณ์ในผังงาน (Flow Chart)
สัญลักษณ์ในผังงาน (Flow Chart)
สัญลักษณ์ในผังงาน
ตัวอย่างการเขียนผังงาน จงเขียนผังงานแสดงการเขียนและส่งจดหมาย
วิธีการเขียนผังงานที่ดี 1. ใช้สัญลักษณ์ตามที่กำหนดไว้ 2. ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง หรือจากซ้ายไปขวา 3. คำอธิบายในภาพสัญลักษณ์ผังงานควรสั้นกะทัดรัด และเข้าใจง่าย 4. ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า – ออก 5. ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน 6. ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรมจริง
โครงสร้างพื้นฐานที่ใช้ในการเขียนโปรแกรม 1. โครงสร้างแบบลำดับ (Sequence Structure) 2. โครงสร้างแบบเลือก (Selection Structure) 3. โครงสร้างแบบทำซ้ำหรือวนรอบ (Repetition or Looping Structure)
1. โครงสร้างแบบลำดับ (Sequence Structure) มีจุดเริ่มต้นจุดเดียว – จุดสิ้นสุดจุดเดียว ทำงานตามลำดับ อาจเรียกใช้โมดูลอื่นได้ ทำงานจากบนลงล่าง (จุดเริ่มต้นถึงสิ้นสุด)
ผังงานโปรแกรมโครงสร้างแบบลำดับ คำสั่ง 1 คำสั่ง 2 คำสั่ง 3 START STOP
ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า ราคา = 0 รับจำนวนสินค้า และราคา ราคา = จำนวนชิ้น*ราคา พิมพ์ราคา START STOP Input Process Output ?
ตัวอย่าง โปรแกรมรับข้อมูลจำนวนสินค้าและราคาสินค้า อัลกอริธึม เริ่มต้นทำงาน รหัสเทียม (Pseudo Code) Begin End 2. กำหนดค่า จำนวนเงินที่ชำระ(Price) เท่ากับศูนย์ Price = 0 3.รับข้อมูล จำนวนสินค้า (Amt) และ ราคา (Cost) Read Amt, Cost 4. คำนวณจำนวนเงินที่ชำระ จาก Price = Amt x Cost Price = Amt x Cost 5.แสดงผล จำนวนที่ต้องชำระ Write Price 6. จบการทำงาน
มีเงื่อนไขที่ต้องตัดสินใจเลือกการทำงาน 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 คะแนน ให้จบการทำงาน
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Input Process Output ? Read Score Score>=50 Y Write ‘You pass’ N STOP
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ อัลกอริธึม รหัสเทียม (Pseudo Code) Begin End เริ่มต้นทำงาน รับค่า คะแนนสอบ(Score) ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้พิมพ์ทางหน้าจอว่า ‘You pass’ จบการทำงาน Read Score IF Score >= 50 THEN Write ‘You pass’
2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE ไม่ใช่ ใช่ เงื่อนไข งาน 2 งาน 1
2.2 Flowchart แบบสองทางเลือก แบบ 2 ทางเลือก หรือ โครงสร้าง IF…THEN...ELSE เงื่อนไข เท็จ/FALSE จริง/TRUE คำสั่ง A คำสั่ง B รหัสเทียม IF …………….. THEN …..(คำสั่งB)….. ELSE ..…(คำสั่งA)...… END IF
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ เงื่อนไข ถ้าได้คะแนนสอบ 50 คะแนนขึ้นไป ให้พิมพ์ข้อความว่า ‘Pass’ - ถ้าได้คะแนนต่ำกว่า 50 คะแนน ให้พิมพ์ข้อความว่า ‘Fail’ ตัวแปร Grade เก็บค่าผลลัพธ์
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ START Read Score Score>=50 Y Grade = ‘Pass’ N Grade = ‘Fail’ Write Grade STOP
ตัวอย่าง โปรแกรมแสดงผลการสอบทางหน้าจอ อัลกอริธึม เริ่มต้นทำงาน รับค่า คะแนนสอบ (Score) ถ้าคะแนนสอบตั้งแต่ 50 คะแนนขึ้นไป ให้ทำนิพจน์ Grade=‘Pass’ ถ้าน้อยกว่า 50 คะแนน ให้ทำนิพจน์ Grade=‘Fail’ แสดงผล เกรด (Grade) จบการทำงาน รหัสเทียม (Pseudo Code) Begin Read Score IF Score >= 50 THEN Grade = ‘Pass’ ELSE Grade = ‘Fail’ END IF Write Grade End
2.2 Flowchart แบบหลายทางเลือก แบบหลายทางเลือก หรือ โครงสร้าง ELSE…IF เริ่มต้น คำสั่งเมื่อเป็นจริง เงื่อนไข 3 เงื่อนไข 1 เงื่อนไข 2 จบงาน ใช่ ไม่ใช่ รหัสเทียม IF …เงื่อนไข 1….. THEN …คำสั่งเมื่อเป็นจริง.. ELSE IF …เงื่อนไข 2….. …. ELSE …เมื่อไม่เข้าเงื่อนไขใดๆ 36
ตัวอย่าง โปรแกรมประมวลผลการเรียน เงื่อนไข คะแนนสอบสูงกว่า 80 คะแนน ได้เกรด A คะแนนสอบ 70-79 คะแนนขึ้นไป ได้เกรด B คะแนนสอบ 60-69 คะแนนขึ้นไป ได้เกรด C คะแนนสอบ 50-59 คะแนนขึ้นไป ได้เกรด D คะแนนสอบต่ำกว่า 50 คะแนน ได้เกรด F
ตัวอย่าง START Read Score N Y Y N N Y Y N Write Grade STOP Grade = ‘A’ Score>=70 N Y Score>=60 Grade = ‘B’ Grade = ‘C’ Y N Score>=50 Grade = ‘D’ Grade = ‘F’ Write Grade STOP
BC320 Introduction to Computer Programming หรือ BC320 Introduction to Computer Programming
ตัวอย่าง โปรแกรมประมวลผลการเรียน อัลกอริธึม เริ่มต้นทำงาน 5.จบการทำงาน รหัสเทียม (Pseudo Code) Begin End 2. รับค่า คะแนนสอบ (Score) READ Score IF Score >= 80 3. เปรียบเทียบคะแนนสอบ>=80 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘A’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=70 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘B’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=60 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘C’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=50 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘D’ ถ้าเป็นเท็จ ให้ให้ทำนิพจน์ Grade=‘F’ THEN Grade = ‘A’ ELSE IF Score >=70 THEN Grade = ‘B’ ELSE IF Score >=60 THEN Grade = ‘C’ ELSE IF Score >=50 THEN Grade = ‘D’ ELSE Grade = ‘F’ 4. แสดงผล เกรด (Grade) WRITE Grade
ตัวอย่าง คำนวณหายอดเงินที่ลูกค้าต้องชำระ โดยตรวจสอบจากราคาสินค้า ตัวอย่าง คำนวณหายอดเงินที่ลูกค้าต้องชำระ โดยตรวจสอบจากราคาสินค้า - ถ้าซื้อสินค้า 0-100 บาท ได้ส่วนลด 5 บาท - ถ้าซื้อสินค้า 101-200 บาท ได้ส่วนลด 10 บาท - ถ้าซื้อสินค้าเกิน 200 บาท ได้ส่วนลด 20 บาท โดยแสดงผลลัพธ์เป็นยอดเงินที่ลูกค้าต้องชำระ
ตัวอย่างคำนวณหายอดเงินที่ลูกค้าต้องชำระ โดยตรวจสอบจากราคาสินค้า อัลกอริธึม เริ่มต้นทำงาน รับค่า ราคาสินค้า (price) เปรียบเทียบราคาสินค้า<=100 ถ้าเป็นจริง ให้ทำนิพจน์ price=price-5 ถ้าเป็นเท็จ ให้เปรียบเทียบราคาสินค้า<=200 ถ้าเป็นจริง ให้ทำนิพจน์ price=price-10 ถ้าเป็นเท็จ ให้ทำนิพจน์ price=price-20 แสดงผล ราคาสินค้า (price) จบการทำงาน รหัสเทียม (Pseudo Code) Begin End Flowchart ?
3. โครงสร้างแบบทำซ้ำหรือวนรอบ (Repetition or Looping Structure) การวนซ้ำแบบทดสอบเงื่อนไขก่อน 2. การวนซ้ำแบบทดสอบเงื่อนไขทีหลัง 3. การวนซ้ำแบบวนซ้ำแน่นอน
3. โครงสร้างแบบทำซ้ำหรือวนรอบ (Repetition or Looping Structure) 3.1 การวนซ้ำแบบทดสอบเงื่อนไขก่อน หรือ While ลูปแบบ While ในการทำงานครั้งแรกจะตรวจสอบเงื่อนไขก่อนทุกครั้ง ก่อนจะเข้าลูปการทำงาน แต่เมื่อพบว่าเงื่อนไขเป็นเท็จจะออกจากลูปทันที While (เงื่อนไข) จริง กลุ่มคำสั่งที่ ต้องทำซ้ำ เท็จ ออกจากวนรอบ(ลูป)
WHILE Loop มีเงื่อนไขในการหยุดการทำงาน ตรวจเงื่อนไขก่อนการทำงานทุกครั้ง ถ้าใช่ตามที่เงื่อนไขต้องการ จะให้ทำงานต่อไป อาจไม่ได้ทำเลยแม้แต่ครั้งเดียว
3.2 Flowchart แบบวนลูป ชนิด While ตัวอย่าง จงเขียนผังงานแสดงการทำงานของการแสดงค่าตัวเลขจำนวนเต็มบวก โดยเริ่มต้นตั้งแต่เลข 1-5 วิเคราะห์ เงื่อนไขในการหยุด แสดงตัวเลขมากกว่า 5 ผลลัพธ์ คือ ค่าตัวเลข <=5 แสดงตัวเลขจำนวนเต็มบวก ข้อมูลเข้า คือ กำหนดค่าเริ่มต้นของตัวเลขจำนวนเต็มบวก ใแปรเป็น numberตัวแปรเป็น number การประมวลผล คือ ตรวจสอบค่าตัวเลข <=5 พิมพ์ค่า วนรอบจนกว่าเงื่อนไขจะเป็นเท็จ
ตัวอย่าง แสดงการทำงานของการแสดงค่าตัวเลข ตั้งแต่เลข 1 ถึงเลข 5 โดยใช้ While START number = 1 NO While number <= 5 YES Print number number = number+1 END
ตัวอย่าง โปรแกรมแสดงเลข 1-5 อัลกอริธึม เริ่มต้นทำงาน กำหนดค่าเริ่มต้นตัวเลข Number=1 ถ้า Number ยังน้อยกว่าหรือเท่ากับ 5 ให้พิมพ์ค่าของ Number และให้เพิ่มค่า Number ครั้งละ 1 ค่า แต่ถ้าเป็นเท็จให้ออกจากการทำงาน จบการทำงาน รหัสเทียม (Pseudo Code) Begin End Number = 1 While Number <= 5 { Write Number Number=Number+1 }
3.1 Flowchart แบบวนลูป ชนิด While Loop START ตัวอย่าง โปรแกรมบวกเลข 1 ถึง 5 Sum = 1+2+3+4+5 number = 1 , Sum=0 เงื่อนไขในการหยุด ? NO While number <= 5 YES Sum = Sum+number number = number+1 Print Sum END
ตัวอย่าง โปรแกรมแสดงผลบวกเลข 1-5 อัลกอริธึม เริ่มต้นทำงาน กำหนดค่าเริ่มต้นตัวเลข Number=1 และผลรวม Sum=0 ถ้า Number ยังน้อยกว่าหรือเท่ากับ 5 ให้บวกค่าของ Number เก็บไว้ที่ Sum วนรอบจนกว่าเงื่อนไขเป็นเท็จให้ออกจากการทำงาน แสดงผลการบวก จบการทำงาน รหัสเทียม (Pseudo Code) Begin End
3.2 Flowchart แบบวนลูป ชนิด Do-While กลุ่มคำสั่งที่ต้องการวนซ้ำ Do-While เงื่อนไข Yes No
DO WHILE มีเงื่อนไขในการหยุดการทำงาน ได้ทำงานอย่างน้อย 1 ครั้ง หลังจากนั้นในแต่ละครั้งจะมีตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงก็จะวนรอบทำงานต่อ ถ้าเป็นเท็จจะออกจากลูป
3.2 Flowchart แบบวนลูป ชนิด Do-While ตัวอย่าง จงเขียนผังงานแสดงการทำงานของการแสดงค่าตัวเลขจำนวนเต็มบวก โดยเริ่มต้นตั้งแต่เลข 1-5 เมื่อหยุดแสดงผลค่าตัวเลขแล้วให้แสดงข้อความ “I Love URU” วิเคราะห์ เงื่อนไขในการหยุด แสดงตัวเลขมากกว่า 5 ผลลัพธ์ คือ ค่าตัวเลข <= 5 แสดงตัวเลขจำนวนเต็มบวก ค่าตัวเลข > 5 แสดงข้อความ “I Love URU” ข้อมูลเข้า คือ กำหนดค่าเริ่มต้นของตัวเลขจำนวนเต็มบวก ใช้ตัวแปรเป็น number การประมวลผล คือ พิมพ์ค่าตัวเลข ตรวจสอบค่าตัวเลข <=5 วนรอบจนกว่าเงื่อนไขจะเป็นเท็จ ถ้าค่าตัวเลข > 5 แสดงข้อความ “I Love URU”
ตัวอย่าง แสดงการทำงานของการแสดงค่าตัวเลข START ตัวอย่าง แสดงการทำงานของการแสดงค่าตัวเลข ตั้งแต่เลข 1 ถึงเลข 5 โดยใช้ Do-While number = 1 Print number number = number+1 YES While number <= 5 NO Display “I love URU” END
ตัวอย่าง โปรแกรมแสดงเลข 1-5 อัลกอริธึม เริ่มต้นทำงาน กำหนดค่าเริ่มต้นตัวเลข number=0 เพิ่มค่า number ทีละ 1 ค่า number=number+1 และให้พิมพ์ค่าของ number ถ้าค่าของ number ยังน้อยกว่าหรือเท่ากับ 5 ให้ทำข้อ 3 ไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จ และออกจากการทำงาน จบการทำงาน รหัสเทียม (Pseudo Code) Begin number = 0 Do { number = number+1 write Number } While number <=5 End
3.2 Flowchart แบบวนลูป ชนิด Do-While ตัวอย่าง จงเขียนผังงานแสดงการทำงานของการแสดงการบวกเลข 1-10 วิเคราะห์ เงื่อนไขในการหยุด แสดงตัวเลขมากกว่า 10 ผลลัพธ์ คือ ผลรวมของการบวกเลข 1-10 ข้อมูลเข้า คือ กำหนดค่าเริ่มต้นของตัวเลขจำนวนเต็มบวก และผลรวมการบวก การประมวลผล บวกค่าเลขจำนวนเต็มบวก ตรวจสอบค่าของเลขจำนวนเต็มบวก <= 10 วนรอบจนกว่าเงื่อนไขจะเป็นเท็จ พิมพ์ค่าผลรวม
3.2 Flowchart แบบวนลูป ชนิด Do-While ตัวอย่าง โปรแกรมบวกเลข 1 ถึง 10 Sum = 1+2+3+4+5+6+7+8+9+10 START i=0 , Sum=0 เงื่อนไขในการหยุด ? i = i+1 Sum=Sum+i จริง เท็จ i<=10 Print Sum STOP
ตัวอย่าง โปรแกรมแสดงผลบวก 1-10 อัลกอริธึม เริ่มต้นทำงาน กำหนดค่าเริ่มต้นตัวเลข i=0 และผลรวม sum=0 เพิ่มค่า i ทีละ 1 ค่า i=i+1 และหาผลรวมของการบวก sum=sum+i ถ้า i ยังน้อยกว่าหรือเท่ากับ 10 ให้ทำข้อ 3 ไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จจึงออกจากลูป พิมพ์ค่าผลรวม จบการทำงาน รหัสเทียม (Pseudo Code) Begin End
3.3 Flowchart แบบวนลูป ชนิด For (เงื่อนไข) กลุ่มคำสั่งที่ ต้องทำซ้ำ จริง ออกจากวนรอบ(ลูป) เท็จ
FOR Loop งานที่ต้องทำซ้ำเป็นจำนวนรอบที่แน่นอน ไม่มีเงื่อนไขในการหยุดการทำงาน หยุดทำงานเมื่อทำครบเป็นจำนวนรอบที่ต้องการ มีตัวนับ (Counter) คอยควบคุมจำนวนรอบ
3.3 Flowchart แบบวนลูป ชนิด For ตัวอย่าง จงเขียนผังงานแสดงการทำงานของการแสดงค่าตัวเลข ตั้งแต่เลข 1 ถึงเลข 10 วิเคราะห์ จำนวนรอบ 10 รอบ ผลลัพธ์ คือ แสดงตัวเลข 10 จำนวน ตั้งแต่เลข 1 ถึงเลข 10 ข้อมูลเข้า คือ การกำหนดค่าเริ่มต้นให้ตัวแปรนับรอบใช้ตัวแปรเป็น i การประมวลผล คือ ทำการวนรอบแสดงตัวเลข 10 รอบ แสดงตัวเลข ตั้งแต่เลข 1 ถึงเลข 10
3.3 Flowchart แบบวนลูป ชนิด For START ตัวอย่าง แสดงการทำงานของการแสดงค่าตัวเลข ตั้งแต่เลข 1 ถึงเลข 10 ถ้าแสดงตัวเลขครบแล้วให้แสดงข้อความว่า “Very Good” i = 1 NO Print “Very Good” for i <= 10 YES Display i i = i+1 END
ตัวอย่าง โปรแกรมแสดงผลบวก 1-10 อัลกอริธึม เริ่มต้นทำงาน กำหนดค่าเริ่มต้นตัวเลข i=1 ถ้า i ยังน้อยกว่าหรือเท่ากับ 10 ให้พิมพ์ค่า i และเพิ่มค่า i ทีละ 1 ค่า i=i+1 ทำข้อ 3 ไปเรื่อยๆ จนกว่าค่าของ i จะเป็นเท็จ พิมพ์ข้อความ “Very Good” จบการทำงาน รหัสเทียม (Pseudo Code) Begin i=1 for i<=10 { Write i i=i+1 } Write “Very Good” End
จงเขียน Algorithm, Pseudo code, Flowchart ตัวอย่าง กำหนดให้โปรแกรมแสดงคำว่า “Hello” จำนวน 50 ครั้ง เมื่อแสดงครบแล้วให้แสดงคำว่า “Good buy” จงเขียน Algorithm, Pseudo code, Flowchart
ประโยชน์ของผังงาน 1. ลำดับขั้นตอนการทำงานของโปรแกรม และสามารถนำไปเขียนโปรแกรมได้โดยไม่สับสน 2. ตรวจสอบความถูกต้อง และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด 3. การปรับปรุง เปลี่ยนแปลง แก้ไข ทำได้อย่างสะดวกและรวดเร็ว 4. ทำให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมได้อย่างง่าย และรวดเร็วมากขึ้น
แบบฝึกหัด 1. จงเขียน Algorithm, Pseudo code, Flowchart ของโปรแกรมที่กำหนดให้ต่อไปนี้ 1.1 โปรแกรมคำนวณหาค่า y ของสมการ y = x^2 + 2x +10 1.2 โปรแกรมแสดงยอดขาย ถ้าซื้อสินค้ามากกว่า 1000 บาทมีส่วนลดให้ 100 บาท 1.3 โปรแกรมแสดงยอดขายของร้านค้าแห่งหนึ่งมีนโยบาย ลดราคาให้ลูกค้า ถ้าเป็นชายจะลดให้ 50 บาท แต่ถ้าเป็นหญิง จะลดให้ 100 บาท
แบบฝึกหัด 1.4 โปรแกรมแสดงขนาดของการใช้ยาตามอายุของผู้ใช้ อายุมากกว่า 10 ปี แสดงข้อความรับประทานครั้งละ 3 ช้อนชา อายุ 6-10 ปี แสดงข้อความรับประทานครั้งละ 2 ช้อนชา อายุ 2-5 ปี แสดงข้อความรับประทานครั้งละ 1 ช้อนชา เด็กอายุต่ำกว่า 1 ปี ห้ามรับประทาน
แบบฝึกหัด 2. จงเขียน Flowchart สำหรับวนรอบรับค่าตัวเลข แล้วแสดงค่าตัวเลขที่รับเข้ามาออกทางจอภาพ โดยที่เมื่อรับค่าตัวเลขเป็น -999 จะสิ้นสุดการวนรอบและจบโปรแกรม 3. จงเขียน Flowchart สำหรับวนรอบรับค่าตัวเลข และในระหว่างรับให้หาผลรวมของตัวเลขที่รับเข้ามา โปรแกรมจะหยุดรับค่าเมื่อใส่ตัวเลข -999 และจะแสดงผลรวมของตัวเลขทั้งหมดที่รับเข้ามาและหยุดทำงาน
จงเขียน Algorithm, Pseudo code, Flowchart ตัวอย่าง ให้รับค่า A,B ถ้า A>B ให้หาค่าผลต่าง แต่ถ้าไม่ใช่ให้หาค่าผลรวม จงเขียน Algorithm, Pseudo code, Flowchart