Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
Advertisements

System Requirement Collection (2)
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
การเขียนโปรแกรมคอมพิวเตอร์ Computer programming
BC322 : Computer Programing (ครั้งที่ 1)
Click when ready  Wang991.wordpress.co m © All rights reserved Stand SW 100 Relation and function.
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
บทที่ 4 คำสั่งควบคุม โปรแกรม. คำสั่งควบคุมโปรแกรมออกได้เป็น 2 ประเภท คือ คำสั่งแบบกำหนดเงื่อนไข (Conditional Statement) คำสั่งแบบทำงานซ้ำ (Repetitive.
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
หน่วยที่ 6 แถวลำดับ (Array)
1.
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
1 exit() and break C++ provides a way to leave a program early (before its natural finish) with the exit() function. The format of exit() is as follows:
MEE 231 Computer Programming สัปดาห์ที่ 6 ภาษา C หลักการของโปรแกรม ชนิดของตัวแปร การดำเนินการ คำสั่งการรับค่าตัวแปร และการแสดงผล.
เรื่อง หลักการเขียนโปรแกรม เบื้องต้น จัดทำโดย นางสาวชาดา ศักดิ์บุญญารัตน์
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
วิธีการใ ช้ โปรแกรมคำนวณคะแนน กลุ่มเกษตรกรดีเด่น กองพัฒนาสหกรณ์ด้าน การเงินและร้านค้า กรมส่งเสริม สหกรณ์
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
สัญญาก่อสร้าง.
บทเรียนโปรแกรมเพื่อการทบทวน
ระบบตัวแทนจำหน่าย/ ตัวแทนขายอิสระ
โครงสร้างโปรแกรมภาษา C
บทที่ 5 การใช้คำสั่ง Select Case , For Next และ Do While
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 5 อินพุตและเอาต์พุต
โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน
แนวข้อสอบ Final (จดด่วน)
Chapter 4 ข้อความสั่ง เลือกทำ.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ครูวีรธรรม เทศประสิทธิ์ แผนกวิชาคอมพิวเตอร์ธุรกิจ
INC 161 , CPE 100 Computer Programming
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 6 ผังงานและการออกแบบผังงานเพื่อแก้ปัญหาการเขียนโปรแกรมเบื้องต้น.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ระบบตัวแทนจำหน่าย/ ตัวแทนขายอิสระ
โครงสร้างภาษา C Arduino
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การออกแบบผังงานแบบมีเงื่อนไขร่วมกับการทำงานแบบวนซ้ำ.
Principles of Problem Solving and Basic Programming หลักการแก้ปัญหาและการเขียนโปรแกรมเบื้องต้น2(1-2-3) สัปดาห์ที่ 13 การเขียนรหัสเทียม (Pseudo Code)
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C
บทที่ 8 เงื่อนไขตัดสินใจ
การบริหารจัดการหนี้ค้างชำระ กองทุนพัฒนาบทบาทสตรี
บทที่ 5 ระบบสารสนเทศเพื่อการบริหารทรัพยากรมนุษย์
วาระที่ 3.4 แนวทางการปฏิบัติงานโครงการตามนโยบาย กระทรวงเกษตรและสหกรณ์
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
สำนักงานกองทุนหมู่บ้านและชุมชนเมืองแห่งชาติ สาขา 7
BC320 Introduction to Computer Programming
การทำงานแบบมีเงื่อนไข (if, if-else, if-else-if, Nested-if)
บทที่ 9 การทำซ้ำ (Loop).
Week 5 C Programming.
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 7 การประมวลผลอาร์เรย์
การเปลี่ยนแปลงประมาณการทางบัญชี และข้อผิดพลาด
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบวนซ้ำ
Chapter 3 : Array.
27 , 30 ตุลาคม 2549 ธนาคารแห่งประเทศไทย
คู่มือการใช้งานระบบเสนอหัวข้อของนักศึกษา
Array: One Dimension Programming I 9.
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
ใบสำเนางานนำเสนอ:

Computer Programming การเขียนโปรแกรมคอมพิวเตอร์ สัปดาห์ที่ 7 โจทย์ประยุกต์คำสั่งควบคุมการทำงานแบบเงื่อนไขและคำสั่งควบคุมการทำงานแบบวนซ้ำ

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

Example 1 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’

Problem Analysis (cont.) Variable Define money เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของสมาชิกแต่ละราย bonus เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินปันผลที่ต้องจ่ายให้สมาชิกรายนั้นๆ money_1[] เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของสมาชิกแต่ละรายที่จะแสดงในส่วนของ for-loop ซึ่งจะวนแสดงตั้งแต่คนแรกที่ใช้บริการจนกระทั่งถึงสมาชิกรายสุดท้ายก่อนผู้ใช้โปรแกรมกดอักขระ ‘N’ เพื่อจบการทำงาน count , i เป็นตัวแปรชนิดจำนวนเต็มเพื่อการวนลูปและแสดงรายละเอียดสมาชิกแต่ละ 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 for loop START True bonus=money*0.02 False True money_1 [], money=0 latter money True (money >= 1)&& (money <= 500) bonus=money*0.02 False (money >= 501)&& (money <= 1,000) True bonus=money*0.05 False True (money >= 1,001)&& (money <= 5,000) bonus=money*0.1 False True (money >= 10,001 bonus=money*0.2 False Detail latter for loop True False latter != ‘N’ money_1[] END

Show money of each member (for-loop) i = 0 False i < count True money_1[] i++ END

#include<stdio.h> float money , bonus , money_1[ ]; char latter ; int count = 0, i; int main() { //prompt to describe the detail of program printf(" ***This is a program for calculate members bonus ***\n"); do { // read input money from user printf("Please enter your money : \n"); scanf("%f",& money); while (money < 1) //check for the right number ? printf("Error, you are enter the wrong number!!"); printf("Please enter your money again : \n"); scanf( “ %f”, & money); } // process for each condition if((money >=1 )&& (money <=500)) bonus = money *(2/100); else if((money >= 501) && (money <=1 000)) bonus = money *(5/100);

else if((money >=1001) && (money <=5000)) bonus = money *(10/100); else if((money >=5001) && (money <=10000)) bonus = money *(15/100); else if(money >10000) bonus = money *(20/100); //keep the data for show every member and show the detail of each member money_1 [count ] = bonus; count++; // count for for-loop printf("You r total payment per year is : %.2f\n", money); printf("You r return bonus is : %.2f \n", bonus); printf(“ Please enter the character ‘y' for continue 'or 'n' for end the program : "); scanf("%c", &latter); } while( latter != ‘n’ || latter != ‘N ‘); //check for the condition of while-loop for( i = 0; i< conunt ; i++) // show all of members bonus printf(“The return bonus of member [ i ] : %.2f \n", money_1 [ i ] ); printf("End of program\n"); return 0;

Example 2 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 เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินฝากของสมาชิกแต่ละราย profit_money [] เป็นตัวแปรชนิดทศนิยมเพื่อเก็บจำนวนเงินต้นรวมทั้งดอกเบี้ยที่ฝากอยู่ในบัญชีของสมาชิกแต่ละราย interest เป็นตัวแปรชนิดทศนิยมเพื่อเก็บจำนวนดอกเบี้ยเงินฝากของสมาชิกแต่ละราย count , i เป็นตัวแปรชนิดจำนวนเต็มเพื่อการวนลูปและแสดงรายละเอียดสมาชิกแต่ละราย 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 for loop START True interest=money*(0.75/100) False True money=0, profit_money [] Interest, latter, count, i money True latter == ‘a’ interest=money*(0.75/100) False latter == ‘b’ True interest=money*(1.60/100) False True latter == ‘c’ interest=money*(1.95/100) False latter == ‘e’ || latter == ‘f’ True interest=money*(2.55/100) False Detail latter for loop True False latter != ‘N’ profit_money[] END

Show money of each member (for-loop) i = 0 False i < count True profit_money[i] i++ END

#include<stdio.h> float money, interest , profit_money [ ]; char c, latter; int count = 0, i; int main() { //prompt the description of program printf(" ***The program for calculate compound interest of bank***\n"); do { //read input money from member printf("Please enter your money : \n"); scanf("%f", &money); while (money < 1) //check for the right number? printf(“Sorry"); printf(“Your number is wrong, please enter your money again : \n"); scanf( “ %f”, &money); } //show the list of account or menu to members printf(“Please choose the type of account from the following \n"); printf(“Press ‘a’ for Saving account which the interest per year is 0.75 %%"); printf(" Press ‘b’ for deposit account 3 months which the interest per year is 1.6 %%\n"); printf(" Press ‘c’ for deposit account 6 months which the interest per year is 1.95 %%\n "); printf(" Press ‘d’ for deposit account 12 months which the interest per year is 2.35 %%\n "); printf(" Press ‘e’ for deposit account 24 months which the interest per year is 2.55 %%\n "); printf(" Press ‘f’ for deposit account 36 months which the interest per year is 2.55 press : f\n"); //read input account from members printf(" Please enter the type of account : "); scanf("%c",&c );

if(c = =‘ a‘ || c = = ‘A') // check for each criterion { interest = (money /100)*0.75; } else if( c = = ‘b‘ || c = = 'B') interest = ((money /100)*1.6)*4; else if( c = = ‘ c'|| c = = ‘C') interest = ( (money /100)*1.95)*2; else if(c = = '|| c = = 'D') interest = (money /100)*2.35; else if( c = = 'e‘ || c = = ‘E‘ || c = = 'f‘ || c = = 'F‘ ) interest = (money /100)*2.55; //keep the data for show every member and show the detail of each member profit_money [count] = money +interest; count++; // count for for-loop printf("\n Your money is : %.2f baht\n", money); printf(“\nY our interest per year is : %.2f baht\n", interest); printf(“\n Your total money : %.2f\n", money + interest); //read character for end while-loop printf(" Please enter the character ‘y' for continue 'or 'n' for end the program : "); scanf("%c",&latter); while( latter = = ‘ y‘ || latter = = ‘Y'); //check the end criterion

for( i = 0; i< conunt ; i++) // show all of members bonus printf(“The return bonus of member [ i ] : %.2f \n", profit_money [ i ] ); printf("End of program\n"); return 0; }

Example 3 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 เป็นตัวแปรชนิดทศนิยมเพื่อรับจำนวนเงินค่าใช้จ่ายของลูกค้าแต่ละราย Discount เป็นตัวแปรชนิดทศนิยมเพื่อเก็บจำนวนเงินส่วนลดที่ลูกค้าแต่ละรายได้รับ total_payment [ ] เป็นตัวแปรชนิดทศนิยมเพื่อเรียกเก็บจำนวนเงินค่าใช้จ่ายของลูกค้าแต่ละรายภายหลังหักส่วนลด count , i เป็นตัวแปรชนิดจำนวนเต็มเพื่อการวนลูปและแสดงรายละเอียดของลูกค้าแต่ละราย 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 for loop START True discount=money*(2/100) False True money, total_payment [] =0 discount, latter, count, i money True (money >= 1,000)&& (money <= 1,500) discount=money*(2/100) False (money >= 1,501)&& (money <= 2,000) True discount=money*(5/100) False True (money >= 2,001)&& (money <= 5,000) discount=money*(12/100) False True (money >= 10,001 discount=money*(25/100) False Detail latter for loop True False latter != ‘N’ Total_payment[] END

Show money of each member (for-loop) i = 0 False i < count True total_payment[i] i++ END

#include<stdio.h> float money , discount , total_payment[ ]; char latter ; int count = 0, i; int main() { //prompt to describe the detail of program printf(" ***This is a program for calculate discount of construction store***\n"); do { // read input money from user printf("Please enter your money : \n"); scanf("%f",& money); while (money < 1) //check for the right number ? printf("Error, you are enter the wrong number!!"); printf("Please enter your money again : \n"); scanf( “ %f”, & money); } // process for each condition if((money >=1 )&& (money < 1000)) printf(“No any discount for this member\n!!"); else if((money >=1 000)&& (money <=1500)) discount = money *(2/100);

else if((money >= 1501) && (money <=2000)) discount = money *(5/100); else if((money >=2001) && (money <=5000)) discount = money *(12/100); else if((money >=5001) && (money <=10000)) discount = money *(15/100); else if(money >10000) discount = money *(25/100); //keep the data for show every member and show the detail of each member total_payment [ count] = discount ; count++; // count for for-loop printf("You r payment before discount is : %.2f\n", money); printf("You r discount is : %.2f \n", discount ); printf("You r payment after discount is : %.2f \n", money - discount ); //read character for end while-loop printf(“ Please enter the character ‘y' for continue 'or 'n' for end the program : "); scanf("%c", &latter); } while( latter != ‘n’ || latter != ‘ N’ ); //check for the condition of while-loop

for( i = 0; i< conunt ; i++) // show all of members bonus printf(“The total payment after discount of member [ i ] is : %.2f \n", money_1 [ i ] ); printf("End of program"); return 0; }

Example 4 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

Coding //check unit is more than 2000 unit? while(unit > 2000) { printf("Information not correct, please input angin :"); scanf("%d",&unit); } printf("Payment detail : \n"); //Calulate 1000 up val = 0; payment = 0.0; if(unit > 1000) val = unit - 1000; payment = val * 6.00; unit = unit - val; totalplayment += payment; printf(" 1000 unit up => %d * 6.00 = %.02f฿\n",val,payment); //Calulate 501 - 1000 Coding #include <stdio.h> #include <conio.h> int main() { //declaration of variable float payment, totalPlayment; int Unit, val; //begin do-while loop do //initial variables val = 0; Unit = 0; payment = 0.0; totalPlayment = 0.0; //get electrical power printf("\n Please enter the used electrical power : "); scanf("%d",&Unit);

Coding (cont.) //check unit is more than 2000 unit? while(Unit > 2000) { printf("Information not correct, please input again :"); scanf("%d",&Unit); } //prompt to user for payment detail printf("Payment detail : \n"); //variables declaration for calculate 1000 up val = 0; payment = 0.0; //continue

Coding (cont.) if(Unit > 1000) { val = Unit - 1000; payment = val * 6.00; Unit = Unit - val; totalPlayment += payment; } printf(" 1000 unit up ==> %d * 6.00 = %.02f ฿\n",val, payment); // variables declaration for calculate 501 - 1000 val = 0; payment = 0.0; if(Unit > 500) val = Unit - 500; payment = val * 5.00; printf(" 501 - 1000 ==> %d * 5.00 = %.02f฿\n",val, payment);

Coding (cont.) // variables declaration for calculate 101 - 500 val = 0; payment = 0.0; if(Unit > 100) { val = Unit - 100; payment = val * 4.50; Unit = Unit - val; totalPlayment += payment; } printf(" 101 - 500 ==> %d * 4.50 = %.02f฿\n",val, payment); // variables declaration for calculate 0 - 100 val = Unit; payment = val * 4.00;

Coding (cont.) totalPlayment += payment; printf(" 0 - 100 ==> %d * 4.00 = %.02f฿\n",val,payment); printf("Total payment %.02f ฿\n",totalPlayment); printf(“Do you want to process again [Y/N] : "); }while(getche () != 'N' || getche () != ‘n' ); //check for the condition of while-loop return 0; }

จงเขียนโปรแกรมเพื่อคำนวณเกรดเฉลี่ย (GPA) ของนิสิตวิศวกรรมไฟฟ้าชั้นปีที่ 1 ในภาคการศึกษาแรก โดยมีรายละเอียดของวิชาเรียนดังต่อไปนี้ 1. กำหนดให้รายวิชาที่ลงทะเบียน • วิชาฟิสิกส์ (Physics) 3 หน่วยกิต • วิชาแคลคูลัส (Calculus) 3 หน่วยกิต • วิชาเคมี (Chemistry) 3 หน่วยกิต • วิชาการเขียนโปรแกรมคอมพิวเตอร์เบื้องต้น (C Programming) 4 หน่วยกิต • วิชาพฤติกรรมมนุษย์ (Human Behavior) 1 หน่วยกิต 2. เกณฑ์การคิดคะแนนในแต่ละรายวิชา • A = 4.00 • B+= 3.50 • B = 3.00 • C+= 2.50 • C = 2.00 • D+ = 1.50 • D = 1.50 • F = 0.00 โปรแกรมจะทำการรับค่าของจำนวนนิสิตทั้งหมดที่ลงทะเบียนจากเจ้าหน้าที่กองบริการการศึกษา จากนั้นจะทำการคิดเกรดของนิสิตทั้งหมด โปรแกรมจะแสดงเกรดเฉลี่ยสำหรับเทอมแรกของนิสิตทุกคนออกสู่หน้าจอ (5 คะแนน)

จงเขียนโปรแกรมสำหรับเก็บประวัติการศึกษาของนิสิต (Student Profile) วิศวกรรมไฟฟ้าชั้นปีที่ 1 โดยกำหนดให้รายละเอียดของที่นิสิตแต่ละคนที่จะต้องจัดเก็บมีดังต่อไปนี้ • รหัสนิสิต (ID Code) --> (รหัสนิสิต 9 หลัก) • ชื่อ (Name) • สกุล (Last_name) • เพศ (Sex) --> (m : male, f : female) • ชั้นปี--> (1, 2, 3, 4) • เกรดเฉลี่ย (GPA)-->ป้อนโดยเจ้าหน้าที่กองบริการการศึกษา • อายุ (Age)--> (17, 18, 19, 20, …..) • ที่อยู่ (Address)-->(เลขที่ 19 หมู่ 2 ต. แม่กา อ. เมือง จ. พะเยา รหัสไปรษณีย์ 56000) โปรแกรมจะทำการรับจำนวนประวัติการศึกษาของนิสิต (Student Profile) วิศวกรรมไฟฟ้าชั้นปีที่ 1 ทั้งหมดที่จะบันทึกจากเจ้าหน้าที่กองบริการการศึกษา จากนั้นจะวนทำการบันทึกค่าจนครบจำนวนที่ป้อนเข้ามา เมื่อเสร็จสิ้นการบันทึกจะแสดงผลของการจัดเก็บข้อมูลของนิสิตทั้งหมดออกสู่หน้าจอ (5 คะแนน)

ตัวอย่างการรับข้อความ Please enter your ID Code : 55103026 Please enter your name : Aphisit Please enter your last name : Wongkeaw Please enter your sex : m Please enter the year : 1 Please enter your GPA : 3.25 Please enter your age : 19 Please enter your address : 19 Moo. 2, University of Phayao, Meaka Subdistrict, Maung District, Phayao Province, 56000

ใช้โปรแกรมที่ได้จากข้อ 1 และ 2 เพื่อทำการจัดเก็บประวัติการศึกษาของนิสิต (Student Profile) วิศวกรรมไฟฟ้าชั้นปีที่ 1 ให้สมบูรณ์ โดยกำหนดให้ดำเนินการดังนี้ดังนี้ (5 คะแนน) ภายในฟังก์ชันหลักให้ทำการรับ รหัสนิสิต ชื่อ-สกุล เพศ ชั้นปี อายุ และที่อยู่ ส่วน GPA กำหนดให้ฟังก์ชันหลักต้องเรียกใช้ฟังก์ชันในการคำนวนเกรดเฉลี่ย (Cal_GPA_Function) และส่งค่ากลับมาให้กับฟังก์ชันหลักอีกที ปรับแก้โปรแกรมจากข้อที่ 2 โดยสร้างฟังก์ชันในการแสดงผล (Show_Detial_Function) ที่ถูกเรียกใช้งานโดยฟังก์ชันหลัก ซึ่งผลลัพธ์ของการแสดงผลจากฟังก์ชันดังกล่าวสำหรับนิสิตแต่ละคนแสดงดังตัวอย่างด้านล่าง  

ตัวอย่างการแสดงผล ID Code : 55103026 Mr ตัวอย่างการแสดงผล ID Code : 55103026 Mr. Aphisit Wongkeaw Sex : m Year : 1 GPA : 3.25 Age : 19 Address : 19 Moo. 2, University of Phayao, Meaka Subdistrict, Maung District, Phayao Province, 56000