226111 Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การเขียนรหัสเทียม (Pseudo Code)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Application Development Overview Nithi Thanon Computer Science Prince of Songkla University.
Advertisements

อัลกอริทึ่มทำงานวนซ้ำ
Chapter 8 : Logic Modeling & Data Modeling
ลักษณะโครงสร้างของผังงาน
LAB 1 ให้นักศึกษาเขียน Flowchart โดยใช้โปรแกรม Microsoft Word วาดรูป Flowchart ส่ง Flowchart ที่วาดเสร็จแล้วในชั่วโมง และ print ใส่กระดาษ ส่งในครั้งหน้า.
ครั้งที่ 8 Function.
เฉลย Lab 10 Loop.
การควบคุมทิศทางการทำงาน
ผังงานโปรแกรม (Program Flowchart)
Repetitive Statements (Looping)
Repetitive Or Iterative
การเขียนผังงาน ผังงานคือ อะไร ?.
Week 5 การทำซ้ำโดย while loop และ do while loop
Week 5 การทำซ้ำโดย while loop และ do while loop
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
Programming & Algorithm
Week 6 For loop, break and continue (Control Structure 3)
20 May 2556 Problem Analysis and Algorithms in Programming.
การทำซ้ำ Pisit Nakjai.
Problem Analysis and Algorithm (การวิเคราะห์ปัญหา และการจำลองความคิด)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
Problem Analysis and Algorithm in Programming (การวิเคราะห์ปัญหา และการจำลองความคิดในการเขียนโปรแกรมคอมฯ)
ผังงานโปรแกรม (Program Flowchart)
BC322 : Computer Programing (ครั้งที่ 1)
อัลกอริทึมและผังงาน อาจารย์สมเกียรติ ช่อเหมือน
บทที่ 10 การออกแบบรายงาน Output Design
โครงสร้างการทำงานแบบวนซ้ำ
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
หลักการโปรแกรม อ.ธนากร อุยพานิชย์.
การประมวลผลแบบวน ( LOOP )
การควบคุมทิศทางการทำงาน
แนวข้อสอบ Final (จดด่วน)
Concept of Programing.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
INC 161 , CPE 100 Computer Programming
ใช้สำหรับ Turbo C++ Version 3.0
การเขียนผังงาน (Flowchart)
ภาษา C เบื้องต้น.
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 6 ผังงานและการออกแบบผังงานเพื่อแก้ปัญหาการเขียนโปรแกรมเบื้องต้น.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
(Array, Pointer, Structure)
คำอธิบายรายวิชา การเขียนผังงาน รหัสเทียม ตรรกศาสตร์เบื้องต้น การเขียนโปรแกรมคอมพิวเตอร์แบบโครงสร้าง ชนิดตัวแปร ตัวดำเนินการทางตรรกะ ตัวดำเนินการเปรียบเทียบ.
“หลักการแก้ปัญหา”.
บทที่ 4 ตัวแปร (Variables)
บทที่ 2 ขั้นตอนการทำงาน (Algorithm)
การออกแบบระบบ System Design.
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การออกแบบผังงานแบบมีเงื่อนไขร่วมกับการทำงานแบบวนซ้ำ.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
ข้อมูล ตัวแปร และค่าคงที่ของภาษา VB
ขั้นตอนวิธี Algorithms.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop) Part1
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
การเขียนผังงาน (Flow Chart)
การเขียนโปรแกรมคอมพิวเตอร์
การเขียนซูโดโค้ด และการเขียนโฟลชาร์ต
BC320 Introduction to Computer Programming
การทำงานแบบมีเงื่อนไข (if, if-else, if-else-if, Nested-if)
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop) Part2
ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
การเขียนโปรแกรมภาษา Java (ต่อ)
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
การตั้งมาตรฐานคุณภาพ
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

226111 Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การเขียนรหัสเทียม (Pseudo Code)

Outline 1 Objectives 2 Problem Analysis 3 Process Description 4 5 Pseudo Code 5 Assignments

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

Example 1 จงเขียนผังงานและโปรแกรมรับชื่อนามสกุล รหัสนักศึกษา คะแนนสอบรวม และคะแนนเต็ม หากนักศึกษาสอบได้มากกว่า 60% ให้แสดงผลชื่อ นามสกุล รหัสนักศึกษา คะแนน และผลสอบว่าผ่าน Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม Output Analysis แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนนสอบ ผลสอบ Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม ตรวจสอบว่าคะแนนมากกว่าหรือเท่ากับ 60 % หรือไม่ ถ้าจริง แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนน และแสดงว่าสอบผ่าน

Example 1 (cont.) Variable Define first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนรวม full : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนเต็ม

Process Description 4. แสดงผล คะแนนสอบและคะแนนเต็ม 6. จบการทำงาน 1. เริ่มต้นการทำงาน 2. รับค่า ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม 3. แสดงผล ชื่อ / นามสกุล / รหัสนักศึกษา 4. แสดงผล คะแนนสอบและคะแนนเต็ม 5. ตัดสินใจเพื่อทำคำสั่งควบคุมการทำงานแบบมีเงื่อนไข โดยถ้านักศึกษาสอบได้มากกว่า 60% แล้วให้แสดง ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ และผลสอบ 6. จบการทำงาน

Pseudo Code 4. Show Point / Full Point 1. Begin 2. Read Name / Surname / ID / Point / Full Point 3. Show Name / Surname / ID 4. Show Point / Full Point 5. if (Point > = 60 %) Show Name / Surname / ID / Point / Passed 6. End

Example 1 (cont.) START first, last, id, point/full >= 0.6 False first, last, id True "passed" point, full 1 END

Example 2 จงเขียนผังงานและโปรแกรมสำหรับรับ ชื่อ นามสกุล รหัสนักศึกษา และคะแนนวิชา Computers and Programming เพื่อตรวจสอบว่านักศึกษาได้เกรดระดับใด โดยใช้เกณฑ์ดังนี้ คะแนน 90 – 100 ได้เกรด A คะแนน 80 – 89.99 ได้เกรด B คะแนน 70 – 79.99 ได้เกรด C คะแนน 60 – 69.99 ได้เกรด D คะแนน 0 – 59.99 ได้เกรด F แล้วแสดงผลลัพธ์ ชื่อ สกุล รหัสนักศึกษา คะแนน และเกรด

Example 2 (cont.) Output Analysis แสดงชื่อ นามสกุล รหัสนักศึกษา คะแนน และเกรดที่ได้ Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนน Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ แสดงผลชื่อ-สกุล รหัสนักศึกษา และคะแนน

Example 2 (cont.) Process Analysis (ต่อ) การตรวจสอบคะแนนสอบ ถ้ามากกว่าหรือเท่ากับ 80 แสดงผลว่าได้เกรด B ถ้ามากกว่าหรือเท่ากับ 70 แสดงผลว่าได้เกรด C ถ้ามากกว่าหรือเท่ากับ 60 แสดงผลว่าได้เกรด D ถ้าไม่ตรงเงื่อนไขที่ผ่านมาทั้งหมด แสดงผลว่าได้เกรด F

Example 2 (cont.) Variable Define first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนเต็มสำหรับเก็บคะแนน

Example 2 (cont.) first, last, id, point first, last, id, point "Grade A" START a b True False Point >= 90

Example 2 (cont.) "Grade C" "Grade D" END "Grade F" "Grade B" a b True "Grade D" False END "Grade F" Point >= 60 Point >= 70 Point >= 80 "Grade B" a b

Example 3 Output Analysis แสดงผลเลขรวมของตัวเลขจาก 0-100 Input Analysis ไม่มี Process Analysis โปรแกรมทำการบวกค่าเก็บไว้ในตัวแปรผลลัพธ์ แล้วเพิ่มค่าจนถึง 100 Variable Define count เป็นตัวแปรชนิดจำนวนเต็มเพื่อนับจำนวน sum เป็นจำนวนเต็มเพื่อเก็บค่าผลรวม

Example 3 (cont.) START sum=0 count=1 False True sum=sum+count count++ END sum=sum+count count=1

Example 4 Example: จงเขียนผังงานและโปรแกรมแสดงผลรูปสี่เหลี่ยมขนาด n x n โดยโปรแกรมจะรอรับจำนวนเต็มจากผู้ใช้งาน ดังตัวอย่าง Please enter number : 4 Output **** Please enter number : 9 Output *********

Example 4 (cont.) Output Analysis ผลตัวเลข เป็นรูปสี่เหลี่ยมจัตุรัสขนาดเท่ากับจำนวนตัวเลขที่รับเข้ามา Input Analysis เลขจำนวนเต็มที่ผู้ใช้ป้อนเข้ามา Process Analysis โปรแกรมรอรับค่าจำนวนเต็มจากผู้ใช้งาน โปรแกรมวนรอบเพื่อทำการแสดง '*' เป็นรูปสี่เหลี่ยมจัตุรัส

Example 5 (cont.) บรรทัดที่ 1 แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา บรรทัดที่ 2 แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา … บรรทัดที่ n แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา Variable Define num เป็นจำนวนเต็มเพื่อใช้เก็บค่าตัวเลขที่ผู้ใช้ป้อน i เป็นจำนวนเต็มเพื่อใช้นับจำนวนบรรทัด j เป็นจำนวนเต็มเพื่อใช้นับจำนวน '*'

Example 4 (cont.) START num, i, j i<=num True False '\n' END i=1 j<=num j=1 j++ '*'

Example 5 Example: การประยุกต์ใช้ประโยควนซ้ำแบบซ้อนในการวนรับค่าคะแนนสอบของนักเรียน (score) ซึ่งมีค่าระหว่าง 0 – 100 และคำนวณคะแนนรวม (total) และคะแนนเฉลี่ย (average) ของคะแนนสอบที่ป้อนเข้ามาทั้งหมด หากผู้ใช้ป้อนค่า -1 ให้หยุดการวนรับค่าคะแนนสอบ และแสดงผลคะแนนรวม และคะแนนเฉลี่ยทางจอภาพ

Example 5 (cont.) Inner loop Outter loop

Example 6 Example: สหกรณ์แห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณเงินปันผลประกอบการ โปรแกรมจะทำการวนรับจำนวนเงินยอดรวมค่าใช้จ่ายของสมาชิกแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ จากนั้นจะแสดงจำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ โดยมีรายละเอียดของเงินปันผลดังนี้ ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 1-500 บาท จะมีเงินปันผล 2% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 501-1,000 บาท จะมีเงินปันผล 5% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 1,001-5,000 บาท จะมีเงินปันผล 10% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 5,001-10,000 บาท จะมีเงินปันผล15% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 10,001 บาทขึ้นไป จะมีเงินปันผล 20% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินยอดรวมค่าใช้จ่ายของสมาชิกแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณและแสดงจำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ

Problem Analysis Output Analysis จำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ Input Analysis จำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละราย Process Analysis โปรแกรมทำการรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละรายพร้อมทั้งคำนวณเงินปันผลของแต่ละราย จากนั้นโปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’ Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของสมาชิกแต่ละราย latter เป็นตัวแปรชนิดอักขระเพื่อเก็บค่าตัวอักขระเพื่อที่จะทำหรือจบเงื่อนไขการทำงาน

Process เริ่มต้นทำงาน ทำการรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละราย คำนวณเงินปันผลตามเงื่อนไขที่กำหนด แสดงเงินปันผลให้สมาชิกรายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกรายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน

Pseudo Code Begin Do { Read money of each member Calculate the bonus follow by each condition Show the money and bonus Read character ‘Y’ for continue read money of the other members (loop) } while (latter != ‘N’) End

Flowchart START True money=money*0.02 False True money=money*0.05 latter money True (money >= 1)&& (money <= 500) money=money*0.02 False (money >= 501)&& (money <= 1,000) True money=money*0.05 False True (money >= 1,001)&& (money <= 5,000) money=money*0.1 False True (money >= 10,001 money=money*0.2 False money latter True False latter != ‘N’ money_1[] END

Example 7 Example: ธนาคารแห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณเงินอัตรา ดอกเบี้ย (บุคคลธรรมดา) ที่จะต้องจ่ายสำหรับลูกค้าในแต่ละประเภททราบ ซึ่งโปรแกรมจะทำการวนรับจำนวนเงินฝากและประเภทของการฝากของ สมาชิกแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ จากนั้นจะ การแสดงจำนวนอัตราดอกเบี้ยรวมเงินต้นที่สมาชิกแต่ละรายจะได้รับ โดยมี รายละเอียดของประเภทบัญชีเงินฝากและอัตราดอกเบี้ยที่จะได้รับต่อปีดังนี้ ถ้าฝากออมทรัพย์จะคิดอัตราดอกเบี้ย 0.75% ถ้าฝากประจำ 3 เดือนจะคิดอัตราดอกเบี้ย 1.6% ถ้าฝากประจำ 6 เดือนจะคิดอัตราดอกเบี้ย 1.95% ถ้าฝากประจำ 12 เดือนจะคิดอัตราดอกเบี้ย 2.35% ฝากประจำ 24 เดือนจะคิดอัตราดอกเบี้ย 2.55% ฝากประจำ 36 เดือนจะคิดอัตราดอกเบี้ย 2.55% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินฝากของสมาชิกแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณและแสดงจำนวนเงินต้นรวมทั้งอัตราดอกเบี้ยที่สมาชิกแต่ละรายจะได้รับ

Problem Analysis Output Analysis แสดงจำนวนเงินต้น ดอกเบี้ย และจำนวนอัตราดอกเบี้ยรวมเงินต้นที่สมาชิกแต่ละรายจะได้รับ Input Analysis รับจำนวนเงินฝากและประเภทของการฝากของสมาชิกแต่ละราย Process Analysis โปรแกรมจะรับค่าจำนวนเงินฝากและประเภทของการฝากของสมาชิกแต่ละราย พร้อมทั้งคำนวณดอกเบี้ยตามจำนวนเงินและประเภทบัญชีที่ฝากของแต่ละราย แสดงเงินต้น แสดงดอกเบี้ย แสดงเงินต้นรวมดอกเบี้ย จากนั้นโปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’

Problem Analysis (cont.) Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินฝากของสมาชิกแต่ละราย latter เป็นตัวแปรชนิดอักขระเพื่อเก็บค่าตัวอักขระเพื่อที่จะทำหรือจบเงื่อนไขการทำงาน ‘a’ = Saving account : บัญชีออมทรัพย์ ‘b’ = Deposit account 3 months : บัญชีฝากประจำ 3 เดือน ‘c’ = Deposit account 6 months : บัญชีฝากประจำ 6 เดือน ‘d’ = Deposit account 12 months : บัญชีฝากประจำ 12 เดือน ‘e’ = Deposit account 24 months : บัญชีฝากประจำ 24 เดือน ‘f’ = Deposit account 36 months : บัญชีฝากประจำ 36 เดือน

Process เริ่มต้นทำงาน เช็คว่าจำนวนเงินที่รับเข้ามาถูกต้อง ทำการรับค่ายอดเงินฝากและประเภทบัญชีของสมาชิกแต่ละราย คำนวณดอกเบี้ยเงินฝากตามเงื่อนไขที่กำหนด แสดงผลเงินต้น ดอกเบี้ยเงิน และเงินต้นรวมดอกเบี้ยให้สมาชิกรายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกรายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน

Pseudo Code Begin Do { Read and check money of each member Read type of account Calculate the interest follow by each condition Show amount of money, interest and compound interest Read character ‘Y’ for continue read money of the other members (loop) } while (latter != ‘N’) End

Flowchart START True money=money*(0.75/100) False True False True latter money True latter == ‘a’ money=money*(0.75/100) False latter == ‘b’ True money=money*(1.60/100)*4 False True latter == ‘c’ money=money*(1.95/100)*2 False latter == ‘e’ || latter == ‘f’ True money=money*(2.55/100) False money latter True False latter != ‘N’ money_1[] END

Example 8 Example: ร้านขายวัสดุก่อสร้างแห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณ ส่วนลดให้ก้บลูกค้าที่มาใช้บริการ ซึ่งโปรแกรมจะทำการวนรับจำนวน ยอดเงินรวมของลูกค้าแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อน อักขระ ‘N’ จากนั้นจะการแสดงจำนวนส่วนลดที่ลูกค้าแต่ละรายจะได้รับ โดย มีรายละเอียดของส่วนลดดังนี้ ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 1,000-1,500 บาท จะมีเงินส่วนลด 2% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 1,501-2,000 1บาท จะมีเงินส่วนลด 5% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 2001-5,000 บาท จะมีเงินส่วนลด 12% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 5001-10,000 บาท จะมีเงินส่วนลด 15% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 10,001 บาทขึ้นไป จะมีเงินส่วนลด 25% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินรายจ่ายทั้งหมดของลูกค้าแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณส่วนลดและแสดงจำนวนเงินที่ต้องจ่ายภายหลังจากหักส่วนลดสำหรับลูกค้าแต่ละราย

Problem Analysis Output Analysis จำนวนเงินยอดเต็มที่ต้องจ่าย ส่วนลดที่สมาชิก และยอดเงินที่ต้องจ่ายหลังหักส่วนลดของลูกค้าแต่ละรายจะได้รับ Input Analysis จำนวนยอดเงินรวมของลูกค้าแต่ละราย Process Analysis โปรแกรมทำการรับค่าจำนวนยอดเงินรวมของลูกค้าแต่ละรายพร้อมทั้งคำนวณเงินส่วนลดของแต่ละราย จากนั้นแสดงจำนวนเงินยอดเต็มที่ต้องจ่าย ส่วนลดที่สมาชิก และยอดเงินที่ต้องจ่ายหลังหักส่วนลดของลูกค้าแต่ละรายจะได้รับ โปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’

Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของลูกค้าแต่ละราย latter เป็นตัวแปรชนิดอักขระเพื่อเก็บค่าตัวอักขระเพื่อที่จะทำหรือจบเงื่อนไขการทำงาน

Process เริ่มต้นทำงาน ทำการรับค่ายอดเงินรวมค่าใช้จ่ายทั้งหมดของลูกค้าแต่ละราย เช็คว่าการป้อนจำนวนเงินถูกต้องหรือไม่ ถ้าถูกต้องคำนวณส่วนลดตามเงื่อนไขของยอดเงินซื้อสินค้าที่กำหนด แสดงเงินยอดค่าใช้จ่ายเต็ม จำนวนเงินส่วนลด และยอดค่าใช้จ่ายหลังลดให้ลูกค้ารายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งหมดของลูกค้ารายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน

Pseudo Code Begin Do { Read money of each customer Calculate the discount follow by each condition Show the payment before discount, discount, total payment after discount Read character ‘Y’ for continue read money of the other customers (loop) } while (latter != ‘N’) End

Flowchart START True money=money*(2/100) False True latter money True (money >= 1,000)&& (money <= 1,500) money=money*(2/100) False (money >= 1,501)&& (money <= 2,000) True money=money*(5/100) False True (money >= 2,001)&& (money <= 5,000) money=money*(12/100) False True (money >= 10,001 money=money*(25/100) False money latter True False latter != ‘N’ money_1[] END

Example 9 Example: ณ ศูนย์บริการไฟฟ้าแห่งหนึ่งต้องการโปรแกรมที่ใช้คำนวณค่า ไฟฟ้าของผู้ใช้งานแต่ละราย ซึ่งโปรแกรมจะทำการวนรับจำนวนหน่วยไฟที่ ใช้ทั้งหมดแต่ละราย โดยจะรับข้อมูลเป็นจำนวนกำลังงานไฟฟ้าที่ใช้ไป (มี หน่วยเป็นยูนิต) ซึ่งมีข้อกำหนดว่ากำลังไฟฟ้าที่รับเข้ามาจะไม่เกิน 2000 ยู นิต โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ แล้วนำมาคำนวณค่า ไฟฟ้าในอัตราก้าวหน้าดังนี้ ถ้ากำลังไฟที่ใช้อยู่ในช่วง 0 – 100 ยูนิต คิดค่าไฟฟ้า ยูนิตละ 4.00 บาท ถ้ากำลังไฟที่ใช้อยู่ในช่วง 101 – 500 ยูนิต คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 4.50 บาท ถ้ากำลังไฟที่ใช้อยู่ในช่วง 501 – 1000 ยูนิต คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 5.00 บาท 1001 ยูนิตขึ้นไป คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 6.00 บาท จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน โปรแกรมภาษาซี โดยรับจำนวนหน่วยไฟที่ใช้ทั้งหมดแต่ละราย และเมื่อเสร็จสิ้นการทำงานจะคำนวณค่าใช้จ่ายสำหรับสมาชิกแต่ละราย

Example 4 (cont.) ตัวอย่าง Please enter the used electrical power : 1400 Payment detail : 1000 unit up ==> 400 * 6.00 = 2400฿ 501 – 1000 unit ==> 500 * 5.00 = 2500฿ 101 – 500 unit ==> 400 * 4.50 = 1800฿ 0 – 100 unit ==> 100 * 4.00 = 400฿   Total payment : 7100฿

Problem Analysis Output Analysis จำนวนหน่วยกำลังไฟฟ้าที่ใช้และค่าไฟฟ้าในอัตราก้าวหน้า Input Analysis หน่วยไฟที่ผู้ใช้ใช้งานต่อเดือน Process Analysis โปรแกรมทำการรับค่าหน่วยไฟที่ผู้ใช้ใช้งานแต่ละรายต่อเดือนเข้ามา เช็คว่ากำลังไฟฟ้าที่รับเข้ามาจะไม่เกิน 2000 ยูนิต พร้อมทั้งคำนวณค่าไฟฟ้าในอัตราก้าวหน้าของผู้ใช้แต่ละราย จากนั้นแสดงยอดเงินที่ต้องจ่าย โปรแกรมจะทำการวนรับค่ากำลังไฟฟ้าที่ใช้ต่อเดือนของผู้ใช้คนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้งานโปรแกรมกด ‘N’

Problem Analysis (cont.) Variable Define Unit เป็นตัวแปรชนิดจำนวนเต็มเพื่อเก็บกำลังไฟฟ้าที่ใช้ของผู้ใช้แต่ละราย val เป็นตัวแปรชนิดจำนวนเต็มใช้เก็บจำนวนกำลังไฟฟ้าที่จะต้องคำนวณใน แต่ละเงื่อนไขตามการคำนวณอัตราก้าวหน้า payment เป็นตัวแปรชนิดทศนิยมเพื่อเก็บค่าใช้จ่ายชั่วคราวในแต่ละเงือนไข totalPayment เป็นตัวแปรชนิดทศนิยมค่าใช้จ่ายทั้งหมดที่จะต้องแจ้งแก่ผู้ใช้

Process เริ่มต้นทำงาน ทำการรับค่าจำนวนหน่วยกำลังไฟฟ้าที่ใช้ของผู้ใช้แต่ละราย เช็คว่าการป้อนจำนวนหน่วยไฟว่าถูกต้องหรือไม่ ถ้าถูกต้องคำนวณรายจ่ายตามเงื่อนไขของยอดเงินซื้อสินค้าที่กำหนด แสดงหน่วยกำลังงานไฟฟ้าที่ใช้และเงินยอดค่าใช้จ่ายให้ผู้ใช้แต่ละรายนั้นทราบ ทำการวนรับค่ากำลังงานไฟฟ้าที่ใช้ของผู้ใช้รายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน

Pseudo Code Begin Do { Read electrical power (unit) and check the criterion (!> 2,000 unit) Calculate the discount follow by each condition Show the payment before discount, discount, total payment after discount Read character ‘Y’ for continue read money of the other customers (loop) } while (latter != ‘N’) End

Unit, totalPayment,payment,val totalPayment += payment Flowchart START C Unit, totalPayment,payment,val Get Unit Unit > 2,000 || Unit < 0 Y Unit > 1,000 Y val = Unit – 1000 payment = val * 6.00 totalPayment += payment “Show 1000 unit up” A

totalPayment += payment TotalPayment += payment Flowchart (cont.) Unit > 500 val = Unit – 500 payment = val * 5.00 totalPayment += payment Show “501 - 1000” A Unit > 100 val = Unit – 100 payment = val * 4.50 TotalPayment += payment Show “101 - 500” B val = Unit payment = val * 4.00 Show “0 – 100” Show totaPayment Getch == 'N' C Y N END

แล้วคำนวณส่วนสูงเฉลี่ย แล้วแสดงผลส่วนสูงของนักศึกษาทั้งหมด Example 10 Example 2 : จงเขียนผังงานและโปรแกรม เพื่อรับจำนวนนักศึกษาในห้อง หลังจากนั้น ให้โปรแกรมรอรับส่วนสูงของคน n คน แล้ววิเคราะห์ว่ามีนักศึกษาในห้องมีส่วนสูงช่วงต่างๆ จำนวนกี่คน แล้วคำนวณส่วนสูงเฉลี่ย แล้วแสดงผลส่วนสูงของนักศึกษาทั้งหมด 0 – 160 161 – 170 171 – 180 181 - 200

Problem Analysis Output Analysis จำนวนนักศึกษาที่สูงแต่ละช่วง ส่วนสูงของนักศึกษาเฉลี่ยในห้อง ส่วนสูงของนักศึกษาทั้งหมด Input Analysis จำนวนนักศึกษาทั้งหมด และส่วนสูงของแต่ละคน Process Analysis โปรแกรมรับจำนวนนักศึกษา วนรอบเพื่อรับส่วนสูงเท่ากับจำนวนนักศึกษา วนรอบเพื่อตรวจสอบช่วงส่วนสูงของนักศึกษาและหาผลรวมส่วนสูงของนักศึกษาทุกคน คำนวณหาค่าเฉลี่ย

Variable Define num เป็นจำนวนเต็มเพื่อเก็บจำนวนนักศึกษา a เป็นจำนวนเต็มเพื่อตรวจตำแหน่งตัวแปร และนับรอบ range1=0, range2=0, range3=0, range4=0 เป็นจำนวนเต็มสำหรับเก็บค่าจำนวนนักศึกษาแต่ละช่วง high[300] เป็นตัวแปรแถวลำดับชนิดทศนิยมเพื่อเก็บส่วนสูง avg = 0 เป็นจำนวนทศนิยมเพื่อเก็บค่าผลรวมและค่าเฉลี่ย

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

Begin Read amount of students Repeat { Read each height of student Check and increase amount of each range Calculate the summation of height } Calculate the average height End

True num,a range1=0,range2=0 range3=0,range4=0 high[300],avg=0 high[a] a=0 START num a<num a++ False (2)

(2) a=0 False a<num True <=160 T range1++ F <=170 T range2++ avg=avg/num F <=180 T range3++ (3) F range4++ avg=avg+high[a] a++

END (3) True a<num a++ a=0 high[a] range1 range2 range3 range4 avg False

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

message[c]==POINT || message[c]==QU START count count=0, c=0, message[100] message END message[c]!=\0 False True message[c]==POINT || message[c]==QU True count++ False c++