ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยΚυπριανός Μιχαηλίδης ได้เปลี่ยน 6 ปีที่แล้ว
1
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การเขียนรหัสเทียม (Pseudo Code)
2
Outline 1 Objectives 2 Problem Analysis 3 Process Description 4 5
Pseudo Code 5 Assignments
3
Objectives เพื่อให้นิสิตรู้และเข้าใจกระบวนการในการวิเคราะห์โจทย์ปัญหาอันเป็นพื้นฐานในการประมวลผลเบื้องต้นของภาษาคอมพิวเตอร์ การวิเคราะห์โจทย์ปัญหา การอธิบายกระบวนการทำงาน การเขียนรหัสเทียม การเขียนผังการไหลของข้อมูล เพื่อเตรียมความพร้อมให้นิสิตสามารถวิเคราะห์และแก้ปัญหาโจทย์ทางด้านวิศวกรรมคอมพิวเตอร์เบื้องต้นได้
4
Example 1 จงเขียนผังงานและโปรแกรมรับชื่อนามสกุล รหัสนักศึกษา คะแนนสอบรวม และคะแนนเต็ม หากนักศึกษาสอบได้มากกว่า 60% ให้แสดงผลชื่อ นามสกุล รหัสนักศึกษา คะแนน และผลสอบว่าผ่าน Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม Output Analysis แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนนสอบ ผลสอบ Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม ตรวจสอบว่าคะแนนมากกว่าหรือเท่ากับ 60 % หรือไม่ ถ้าจริง แสดงผลชื่อ-สกุล รหัสนักศึกษา คะแนน และแสดงว่าสอบผ่าน
5
Example 1 (cont.) Variable Define
first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนรวม full : ตัวแปรชนิดจำนวนทศนิยมสำหรับเก็บคะแนนเต็ม
6
Process Description 4. แสดงผล คะแนนสอบและคะแนนเต็ม 6. จบการทำงาน
1. เริ่มต้นการทำงาน 2. รับค่า ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ / คะแนนเต็ม 3. แสดงผล ชื่อ / นามสกุล / รหัสนักศึกษา 4. แสดงผล คะแนนสอบและคะแนนเต็ม 5. ตัดสินใจเพื่อทำคำสั่งควบคุมการทำงานแบบมีเงื่อนไข โดยถ้านักศึกษาสอบได้มากกว่า 60% แล้วให้แสดง ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ และผลสอบ 6. จบการทำงาน
7
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
8
Example 1 (cont.) START first, last, id, point/full >= 0.6
False first, last, id True "passed" point, full 1 END
9
Example 2 จงเขียนผังงานและโปรแกรมสำหรับรับ ชื่อ นามสกุล รหัสนักศึกษา และคะแนนวิชา Computers and Programming เพื่อตรวจสอบว่านักศึกษาได้เกรดระดับใด โดยใช้เกณฑ์ดังนี้ คะแนน 90 – 100 ได้เกรด A คะแนน 80 – ได้เกรด B คะแนน 70 – ได้เกรด C คะแนน 60 – ได้เกรด D คะแนน 0 – ได้เกรด F แล้วแสดงผลลัพธ์ ชื่อ สกุล รหัสนักศึกษา คะแนน และเกรด
10
Example 2 (cont.) Output Analysis
แสดงชื่อ นามสกุล รหัสนักศึกษา คะแนน และเกรดที่ได้ Input Analysis ชื่อ / นามสกุล / รหัสนักศึกษา / คะแนน Process Analysis โปรแกรมรอรับชื่อ / นามสกุล / รหัสนักศึกษา / คะแนนสอบ แสดงผลชื่อ-สกุล รหัสนักศึกษา และคะแนน
11
Example 2 (cont.) Process Analysis (ต่อ) การตรวจสอบคะแนนสอบ
ถ้ามากกว่าหรือเท่ากับ 80 แสดงผลว่าได้เกรด B ถ้ามากกว่าหรือเท่ากับ 70 แสดงผลว่าได้เกรด C ถ้ามากกว่าหรือเท่ากับ 60 แสดงผลว่าได้เกรด D ถ้าไม่ตรงเงื่อนไขที่ผ่านมาทั้งหมด แสดงผลว่าได้เกรด F
12
Example 2 (cont.) Variable Define
first : ตัวแปรชนิดข้อความสำหรับเก็บชื่อขนาด 20 last : ตัวแปรชนิดข้อความสำหรับเก็บนามสกุลขนาด 20 id : ตัวแปรชนิดข้อความสำหรับเก็บรหัสนักศึกษาขนาด 9 point : ตัวแปรชนิดจำนวนเต็มสำหรับเก็บคะแนน
13
Example 2 (cont.) first, last, id, point first, last, id, point
"Grade A" START a b True False Point >= 90
14
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
15
Example 3 Output Analysis แสดงผลเลขรวมของตัวเลขจาก 0-100
Input Analysis ไม่มี Process Analysis โปรแกรมทำการบวกค่าเก็บไว้ในตัวแปรผลลัพธ์ แล้วเพิ่มค่าจนถึง 100 Variable Define count เป็นตัวแปรชนิดจำนวนเต็มเพื่อนับจำนวน sum เป็นจำนวนเต็มเพื่อเก็บค่าผลรวม
16
Example 3 (cont.) START sum=0 count=1 False True sum=sum+count count++
END sum=sum+count count=1
17
Example 4 Example: จงเขียนผังงานและโปรแกรมแสดงผลรูปสี่เหลี่ยมขนาด n x n โดยโปรแกรมจะรอรับจำนวนเต็มจากผู้ใช้งาน ดังตัวอย่าง Please enter number : 4 Output **** Please enter number : 9 Output *********
18
Example 4 (cont.) Output Analysis
ผลตัวเลข เป็นรูปสี่เหลี่ยมจัตุรัสขนาดเท่ากับจำนวนตัวเลขที่รับเข้ามา Input Analysis เลขจำนวนเต็มที่ผู้ใช้ป้อนเข้ามา Process Analysis โปรแกรมรอรับค่าจำนวนเต็มจากผู้ใช้งาน โปรแกรมวนรอบเพื่อทำการแสดง '*' เป็นรูปสี่เหลี่ยมจัตุรัส
19
Example 5 (cont.) บรรทัดที่ 1 แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา บรรทัดที่ 2 แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา … บรรทัดที่ n แสดงผล '\n' แล้วแสดงผล '*' จำนวนเท่ากับค่าที่รับมา Variable Define num เป็นจำนวนเต็มเพื่อใช้เก็บค่าตัวเลขที่ผู้ใช้ป้อน i เป็นจำนวนเต็มเพื่อใช้นับจำนวนบรรทัด j เป็นจำนวนเต็มเพื่อใช้นับจำนวน '*'
20
Example 4 (cont.) START num, i, j i<=num True False '\n' END i=1
j<=num j=1 j++ '*'
21
Example 5 Example: การประยุกต์ใช้ประโยควนซ้ำแบบซ้อนในการวนรับค่าคะแนนสอบของนักเรียน (score) ซึ่งมีค่าระหว่าง 0 – 100 และคำนวณคะแนนรวม (total) และคะแนนเฉลี่ย (average) ของคะแนนสอบที่ป้อนเข้ามาทั้งหมด หากผู้ใช้ป้อนค่า -1 ให้หยุดการวนรับค่าคะแนนสอบ และแสดงผลคะแนนรวม และคะแนนเฉลี่ยทางจอภาพ
22
Example 5 (cont.) Inner loop Outter loop
23
Example 6 Example: สหกรณ์แห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณเงินปันผลประกอบการ โปรแกรมจะทำการวนรับจำนวนเงินยอดรวมค่าใช้จ่ายของสมาชิกแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ จากนั้นจะแสดงจำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ โดยมีรายละเอียดของเงินปันผลดังนี้ ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน บาท จะมีเงินปันผล 2% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 501-1,000 บาท จะมีเงินปันผล 5% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 1,001-5,000 บาท จะมีเงินปันผล 10% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 5,001-10,000 บาท จะมีเงินปันผล15% ถ้าจำนวนเงินของสมาชิกที่ซื้อสิ้นค้าในสหกรณ์ทั้งปีมีจำนวน 10,001 บาทขึ้นไป จะมีเงินปันผล 20% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินยอดรวมค่าใช้จ่ายของสมาชิกแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณและแสดงจำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ
24
Problem Analysis Output Analysis
จำนวนเงินปันผลที่สมาชิกแต่ละรายจะได้รับ Input Analysis จำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละราย Process Analysis โปรแกรมทำการรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละรายพร้อมทั้งคำนวณเงินปันผลของแต่ละราย จากนั้นโปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’ Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของสมาชิกแต่ละราย latter เป็นตัวแปรชนิดอักขระเพื่อเก็บค่าตัวอักขระเพื่อที่จะทำหรือจบเงื่อนไขการทำงาน
25
Process เริ่มต้นทำงาน
ทำการรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกแต่ละราย คำนวณเงินปันผลตามเงื่อนไขที่กำหนด แสดงเงินปันผลให้สมาชิกรายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกรายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน
26
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
27
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
28
Example 7 Example: ธนาคารแห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณเงินอัตรา ดอกเบี้ย (บุคคลธรรมดา) ที่จะต้องจ่ายสำหรับลูกค้าในแต่ละประเภททราบ ซึ่งโปรแกรมจะทำการวนรับจำนวนเงินฝากและประเภทของการฝากของ สมาชิกแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ จากนั้นจะ การแสดงจำนวนอัตราดอกเบี้ยรวมเงินต้นที่สมาชิกแต่ละรายจะได้รับ โดยมี รายละเอียดของประเภทบัญชีเงินฝากและอัตราดอกเบี้ยที่จะได้รับต่อปีดังนี้ ถ้าฝากออมทรัพย์จะคิดอัตราดอกเบี้ย 0.75% ถ้าฝากประจำ 3 เดือนจะคิดอัตราดอกเบี้ย 1.6% ถ้าฝากประจำ 6 เดือนจะคิดอัตราดอกเบี้ย 1.95% ถ้าฝากประจำ 12 เดือนจะคิดอัตราดอกเบี้ย 2.35% ฝากประจำ 24 เดือนจะคิดอัตราดอกเบี้ย 2.55% ฝากประจำ 36 เดือนจะคิดอัตราดอกเบี้ย 2.55% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินฝากของสมาชิกแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณและแสดงจำนวนเงินต้นรวมทั้งอัตราดอกเบี้ยที่สมาชิกแต่ละรายจะได้รับ
29
Problem Analysis Output Analysis
แสดงจำนวนเงินต้น ดอกเบี้ย และจำนวนอัตราดอกเบี้ยรวมเงินต้นที่สมาชิกแต่ละรายจะได้รับ Input Analysis รับจำนวนเงินฝากและประเภทของการฝากของสมาชิกแต่ละราย Process Analysis โปรแกรมจะรับค่าจำนวนเงินฝากและประเภทของการฝากของสมาชิกแต่ละราย พร้อมทั้งคำนวณดอกเบี้ยตามจำนวนเงินและประเภทบัญชีที่ฝากของแต่ละราย แสดงเงินต้น แสดงดอกเบี้ย แสดงเงินต้นรวมดอกเบี้ย จากนั้นโปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’
30
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 เดือน
31
Process เริ่มต้นทำงาน เช็คว่าจำนวนเงินที่รับเข้ามาถูกต้อง
ทำการรับค่ายอดเงินฝากและประเภทบัญชีของสมาชิกแต่ละราย คำนวณดอกเบี้ยเงินฝากตามเงื่อนไขที่กำหนด แสดงผลเงินต้น ดอกเบี้ยเงิน และเงินต้นรวมดอกเบี้ยให้สมาชิกรายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งปีของสมาชิกรายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน
32
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
33
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
34
Example 8 Example: ร้านขายวัสดุก่อสร้างแห่งหนึ่งต้องการโปรแกรมสำหรับคำนวณ ส่วนลดให้ก้บลูกค้าที่มาใช้บริการ ซึ่งโปรแกรมจะทำการวนรับจำนวน ยอดเงินรวมของลูกค้าแต่ละราย โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อน อักขระ ‘N’ จากนั้นจะการแสดงจำนวนส่วนลดที่ลูกค้าแต่ละรายจะได้รับ โดย มีรายละเอียดของส่วนลดดังนี้ ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 1,000-1,500 บาท จะมีเงินส่วนลด 2% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 1,501-2,000 1บาท จะมีเงินส่วนลด 5% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน ,000 บาท จะมีเงินส่วนลด 12% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน ,000 บาท จะมีเงินส่วนลด 15% ถ้าจำนวนเงินของลูกค้าที่ซื้อสิ้นค้าด้วยจำนวนเงิน 10,001 บาทขึ้นไป จะมีเงินส่วนลด 25% จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน และโปรแกรมภาษาซี โดยรับจำนวนเงินรายจ่ายทั้งหมดของลูกค้าแต่ละราย และเมื่อเสร็จสิ้นการทำงานทำการคำนวณส่วนลดและแสดงจำนวนเงินที่ต้องจ่ายภายหลังจากหักส่วนลดสำหรับลูกค้าแต่ละราย
35
Problem Analysis Output Analysis
จำนวนเงินยอดเต็มที่ต้องจ่าย ส่วนลดที่สมาชิก และยอดเงินที่ต้องจ่ายหลังหักส่วนลดของลูกค้าแต่ละรายจะได้รับ Input Analysis จำนวนยอดเงินรวมของลูกค้าแต่ละราย Process Analysis โปรแกรมทำการรับค่าจำนวนยอดเงินรวมของลูกค้าแต่ละรายพร้อมทั้งคำนวณเงินส่วนลดของแต่ละราย จากนั้นแสดงจำนวนเงินยอดเต็มที่ต้องจ่าย ส่วนลดที่สมาชิก และยอดเงินที่ต้องจ่ายหลังหักส่วนลดของลูกค้าแต่ละรายจะได้รับ โปรแกรมจะทำการวนรับค่าจำนวนเงินยอดรวมค่าใช้จ่ายทั้งปีของสมาชิกคนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้กด ‘N’
36
Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของลูกค้าแต่ละราย latter เป็นตัวแปรชนิดอักขระเพื่อเก็บค่าตัวอักขระเพื่อที่จะทำหรือจบเงื่อนไขการทำงาน
37
Process เริ่มต้นทำงาน
ทำการรับค่ายอดเงินรวมค่าใช้จ่ายทั้งหมดของลูกค้าแต่ละราย เช็คว่าการป้อนจำนวนเงินถูกต้องหรือไม่ ถ้าถูกต้องคำนวณส่วนลดตามเงื่อนไขของยอดเงินซื้อสินค้าที่กำหนด แสดงเงินยอดค่าใช้จ่ายเต็ม จำนวนเงินส่วนลด และยอดค่าใช้จ่ายหลังลดให้ลูกค้ารายนั้นทราบ ทำการวนรับค่ายอดเงินรวมค่าใช้จ่ายทั้งหมดของลูกค้ารายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน
38
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
39
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
40
Example 9 Example: ณ ศูนย์บริการไฟฟ้าแห่งหนึ่งต้องการโปรแกรมที่ใช้คำนวณค่า ไฟฟ้าของผู้ใช้งานแต่ละราย ซึ่งโปรแกรมจะทำการวนรับจำนวนหน่วยไฟที่ ใช้ทั้งหมดแต่ละราย โดยจะรับข้อมูลเป็นจำนวนกำลังงานไฟฟ้าที่ใช้ไป (มี หน่วยเป็นยูนิต) ซึ่งมีข้อกำหนดว่ากำลังไฟฟ้าที่รับเข้ามาจะไม่เกิน 2000 ยู นิต โปรแกรมจะจบการทำงานเมื่อผู้ใช้ป้อนอักขระ ‘N’ แล้วนำมาคำนวณค่า ไฟฟ้าในอัตราก้าวหน้าดังนี้ ถ้ากำลังไฟที่ใช้อยู่ในช่วง 0 – 100 ยูนิต คิดค่าไฟฟ้า ยูนิตละ 4.00 บาท ถ้ากำลังไฟที่ใช้อยู่ในช่วง 101 – 500 ยูนิต คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 4.50 บาท ถ้ากำลังไฟที่ใช้อยู่ในช่วง 501 – 1000 ยูนิต คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 5.00 บาท 1001 ยูนิตขึ้นไป คิดค่าไฟฟ้าที่เกินมา ยูนิตละ 6.00 บาท จงวิเคราะห์โปรแกรม เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนผังงาน โปรแกรมภาษาซี โดยรับจำนวนหน่วยไฟที่ใช้ทั้งหมดแต่ละราย และเมื่อเสร็จสิ้นการทำงานจะคำนวณค่าใช้จ่ายสำหรับสมาชิกแต่ละราย
41
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฿
42
Problem Analysis Output Analysis
จำนวนหน่วยกำลังไฟฟ้าที่ใช้และค่าไฟฟ้าในอัตราก้าวหน้า Input Analysis หน่วยไฟที่ผู้ใช้ใช้งานต่อเดือน Process Analysis โปรแกรมทำการรับค่าหน่วยไฟที่ผู้ใช้ใช้งานแต่ละรายต่อเดือนเข้ามา เช็คว่ากำลังไฟฟ้าที่รับเข้ามาจะไม่เกิน 2000 ยูนิต พร้อมทั้งคำนวณค่าไฟฟ้าในอัตราก้าวหน้าของผู้ใช้แต่ละราย จากนั้นแสดงยอดเงินที่ต้องจ่าย โปรแกรมจะทำการวนรับค่ากำลังไฟฟ้าที่ใช้ต่อเดือนของผู้ใช้คนถัดไปหากผู้ใช้กด ‘Y’ และโปรแกรมจะสิ้นสุดการทำงานหากผู้ใช้งานโปรแกรมกด ‘N’
43
Problem Analysis (cont.)
Variable Define Unit เป็นตัวแปรชนิดจำนวนเต็มเพื่อเก็บกำลังไฟฟ้าที่ใช้ของผู้ใช้แต่ละราย val เป็นตัวแปรชนิดจำนวนเต็มใช้เก็บจำนวนกำลังไฟฟ้าที่จะต้องคำนวณใน แต่ละเงื่อนไขตามการคำนวณอัตราก้าวหน้า payment เป็นตัวแปรชนิดทศนิยมเพื่อเก็บค่าใช้จ่ายชั่วคราวในแต่ละเงือนไข totalPayment เป็นตัวแปรชนิดทศนิยมค่าใช้จ่ายทั้งหมดที่จะต้องแจ้งแก่ผู้ใช้
44
Process เริ่มต้นทำงาน
ทำการรับค่าจำนวนหน่วยกำลังไฟฟ้าที่ใช้ของผู้ใช้แต่ละราย เช็คว่าการป้อนจำนวนหน่วยไฟว่าถูกต้องหรือไม่ ถ้าถูกต้องคำนวณรายจ่ายตามเงื่อนไขของยอดเงินซื้อสินค้าที่กำหนด แสดงหน่วยกำลังงานไฟฟ้าที่ใช้และเงินยอดค่าใช้จ่ายให้ผู้ใช้แต่ละรายนั้นทราบ ทำการวนรับค่ากำลังงานไฟฟ้าที่ใช้ของผู้ใช้รายถัดไป ถ้าผู้ใช้โปรแกรมกด ‘Y’ และจบการทำงานหากผู้ใช้โปรแกรมกด ‘N’ จบการทำงาน
45
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
46
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
47
totalPayment += payment TotalPayment += payment
Flowchart (cont.) Unit > 500 val = Unit – 500 payment = val * 5.00 totalPayment += payment Show “ ” A Unit > 100 val = Unit – 100 payment = val * 4.50 TotalPayment += payment Show “ ” B val = Unit payment = val * 4.00 Show “0 – 100” Show totaPayment Getch == 'N' C Y N END
48
แล้วคำนวณส่วนสูงเฉลี่ย แล้วแสดงผลส่วนสูงของนักศึกษาทั้งหมด
Example 10 Example 2 : จงเขียนผังงานและโปรแกรม เพื่อรับจำนวนนักศึกษาในห้อง หลังจากนั้น ให้โปรแกรมรอรับส่วนสูงของคน n คน แล้ววิเคราะห์ว่ามีนักศึกษาในห้องมีส่วนสูงช่วงต่างๆ จำนวนกี่คน แล้วคำนวณส่วนสูงเฉลี่ย แล้วแสดงผลส่วนสูงของนักศึกษาทั้งหมด 0 – 160 161 – 170 171 – 180
49
Problem Analysis Output Analysis จำนวนนักศึกษาที่สูงแต่ละช่วง
ส่วนสูงของนักศึกษาเฉลี่ยในห้อง ส่วนสูงของนักศึกษาทั้งหมด Input Analysis จำนวนนักศึกษาทั้งหมด และส่วนสูงของแต่ละคน Process Analysis โปรแกรมรับจำนวนนักศึกษา วนรอบเพื่อรับส่วนสูงเท่ากับจำนวนนักศึกษา วนรอบเพื่อตรวจสอบช่วงส่วนสูงของนักศึกษาและหาผลรวมส่วนสูงของนักศึกษาทุกคน คำนวณหาค่าเฉลี่ย
50
Variable Define num เป็นจำนวนเต็มเพื่อเก็บจำนวนนักศึกษา a เป็นจำนวนเต็มเพื่อตรวจตำแหน่งตัวแปร และนับรอบ range1=0, range2=0, range3=0, range4=0 เป็นจำนวนเต็มสำหรับเก็บค่าจำนวนนักศึกษาแต่ละช่วง high[300] เป็นตัวแปรแถวลำดับชนิดทศนิยมเพื่อเก็บส่วนสูง avg = 0 เป็นจำนวนทศนิยมเพื่อเก็บค่าผลรวมและค่าเฉลี่ย
51
เริ่มต้นทำงาน ทำการรับจำนวนนักศึกษา วนรอบเท่ากับจำนวนนักศึกษาที่ป้อนเข้ามาเพื่อรับส่วนสูงของนักศึกษาแต่ละคน วนรอบเพื่อตรวจสอบจำนวนของนักศึกษาที่มีความสูงตรงกับแต่ละช่วงความสูงและหาค่าผลรวมความสูงของนักศึกษาทั้งหมด หาค่าเฉลี่ยความสูง จบการทำงาน
52
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
53
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)
54
(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++
55
END (3) True a<num a++ a=0 high[a] range1 range2 range3 range4 avg False
56
Example 11 Example 2 : จงเขียนผังงานและโปรแกรม เพื่อรับข้อความเข้ามาแล้วตรวจสอบว่ามีทั้งหมดกี่ประโยค วิเคราะห์โจทย์ เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัสเทียม เขียนแผนภาพการไหลของข้อมูล เขียนโค้ด
57
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++
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.