Upload
velvet
View
43
Download
0
Embed Size (px)
DESCRIPTION
หลักการ โปรแกรม 1. Lecture 2: การวิเคราะห์ปัญหา, ตัวแปรอย่างง่าย, การรับข้อมูลเข้า, การคำนวณและแสดงผลลัพธ์. ภาษาคอมพิวเตอร์และการพัฒนาโปรแกรม. กำหนดและวิเคราะห์ปัญหา (Problem Definition and Problem Analysis) เขียนผังงานและซูโดโค้ด (Pseudocoding) เขียนโปรแกรม (Programming) - PowerPoint PPT Presentation
Citation preview
หลั�กการโปรแกรม 1Lecture 2: การวิ เคราะห�ป�ญหา, ตั�วิแปรอย่�างง�าย่, การร�บข้�อม�ลัเข้�า, การค�านวิณแลัะแสดงผลัลั�พธ์�
ภาษาคอมพิ�วเตอร์ และการ์พิ�ฒนาโปร์แกร์ม• ก�าหนดแลัะวิ เคราะห�ป�ญหา (Problem Definition and Problem Analysis)
• เข้%ย่นผ�งงานแลัะซู�โดโค�ด (Pseudocoding) • เข้%ย่นโปรแกรม (Programming) • ทดสอบแลัะแก�ไข้โปรแกรม (Program Testing and Debugging)
• ท�าเอกสารแลัะบ�าร)งร�กษาโปรแกรม (Program Documentation and Maintenance)
การ์ก�าหนดและว�เคร์าะห ป�ญหา• ก�าหนดข้อบเข้ตัข้องป�ญหา • ก�าหนดลั�กษณะข้องข้�อม�ลัเข้�าแลัะออกจากระบบ (Input/Output Specification)
• ก�าหนดวิ ธ์%การประมวิลัผลั (Process Specification)
ต�วอย่�างถ้�าหากตั�องการออกแบบโปรแกรมให�คอมพ วิเตัอร�ร�บค�าข้�อม�ลั 3 ค�า แลัะแสดงค�าเฉลั%/ย่ทางจอภาพ เราอาจก�าหนดแลัะวิ เคราะห�ป�ญหาได�ด�งน%1
1. ร�บข้�อม�ลัจากค%ย่�บอร�ด • ร�บข้�อม�ลัเฉพาะท%/เป2นตั�วิเลัข้มาเก3บในตั�วิแปร • ถ้�าข้�อม�ลัเท�าก�บ 0 ให�ร�บใหม�
ต�วอย่�าง (ต�อ)
2. หาค�าเฉลั%/ย่ • รวิมค�าท)กค�าท%/ร �บมาเข้�าด�วิย่ก�น • น�าค�าผลัรวิมท%/ได�หารด�วิย่ 3 • น�าค�าผลัลั�พธ์�ไปเก3บในตั�วิแปร
3. แสดงผลัลั�พธ์�ทางจอภาพ • แสดงค�าวิ�าค�าเฉลั%/ย่เท�าก�บ • แสดงผลัลั�พธ์�โดย่ม%ทศน ย่มสองตั�าแหน�ง
ขั้�!นตอนการ์ทำ�างาน
ร�บข้�อม�ลัตั�วิท%/ 1ร�บข้�อม�ลัตั�วิท%/ 2ร�บข้�อม�ลัตั�วิท%/ 3
หาผลัรวิมข้องเลัข้ท�1ง 3 จ�านวินน�าผลัรวิมหารด�วิย่ 3
แสดงค�าเฉลั%/ย่เป2นทศน ย่ม 2 ตั�าแหน�ง
ข้�อม�ลัเข้�า การประมวิลัผลั ข้�อม�ลัออก (input) (process) (output)
การ์เขั้#ย่นผั�งงานและซู&โดโค'ด หลั�งจากท%/ได�วิ เคราะห�ป�ญหาแลั�วิ ข้�1นตัอนตั�อไปจะใช้�เคร6/องม6อ
ช้�วิย่ในการออกแบบโปรแกรม โดย่เข้%ย่นเป2นลั�าด�บข้�1นตัอนการท�างานข้องโปรแกรมท%/เร%ย่กวิ�าอ�ลักอร ท7ม (Algorithm) โดย่จะเข้%ย่นแสดงข้�1นตัอนการแก�ป�ญหา ด�วิย่ประโย่คท%/ช้�ดเจนไม�คลั)มเคร6อ แลัะม%ราย่ลัะเอ%ย่ดการท�างานพอสมควิรเพ%ย่งพอท%/จะน�าไปเข้%ย่นเป2นโปรแกรมให�ท�างานจร ง โดย่อ�ลักอร ท7มน�1นอาจเข้%ย่นให�อย่��ในร�ปข้องรห�สจ�าลัองหร6อซู�โดโค�ด (Pseudo-code) หร6อเข้%ย่นเป2นผ�งงาน (Flowchart) ก3ได�
ผั�งงาน หมาย่ถ้7งการแทนข้�1นตัอนวิ ธ์%การท�างานโดย่ใช้�ส�ญลั�กษณ�แทนควิามหมาย่ข้องการท�างานบางอย่�าง แลัะม%เส�นลั�กศรแสดงลั�าด�บ หร6อท ศทางการท�างาน
FSTO
P
T
START
sum = sum + 1
sum <= 5
print sum
sum = 1
ซู&โดโคด หมาย่ถ้7งการแทนข้�1นตัอนวิ ธ์%การท�างานโดย่ใช้�ค�าในภาษาอ�งกฤษ มาเร%ย่งตั�อก�น
เพ6/ออธ์ บาย่วิ ธ์%การท�างานแลั�วิได�ควิามหมาย่เป2นข้�1นตัอนการ
ท�างานท%/ตั�องการ
Procedure PRTone2five
sum =1
do
print sum
sum = sum + 1
while sum <= 5
end
กร์ะบวนการ์แก'ป�ญหาด'วย่คอมพิ�วเตอร์ ว�เคร์าะห ป�ญหา
• ตั�องการอะไร • ตั�องการเอาตั�พ)ตัอย่�างไร• ข้�อม�ลัเข้�าเป2นอย่�างไร • ตั�วิแปรท%/ใช้� • วิ ธ์%การประมวิลัผลัเป2นอย่�างไร
การ์เขั้#ย่นผั�งงานผ�งงานเป2นแผนภาพท%/แสดงลั�าด�บข้�1นตัอนในการ
ท�างานข้องโปรแกรม โดย่ม%การลังราย่ลัะเอ%ย่ด ใส�วิ ธ์%การ แลัะจ�ดลั�าด�บข้�1นตัอนข้องโปรแกรม ตั�1งแตั�เร /มตั�นจากการร�บข้�อม�ลั การประมวิลัผลั ไปจนถ้7งการแสดงผลัลั�พธ์�การท�างาน
ผั�งงานแบบทำางเล.อกเป2นการท�างานท%/ตั�องม%การตั�ดส นใจ เพ6/อเลั6อกการท�างาน โดย่ใช้�ส�ญลั�กษณ�การเปร%ย่บเท%ย่บ
FT
stmt F
condition
FT
stmt T
condition
ผั�งงานแบบวนซู�!า (while-do)
T
F
stmt R2
condition
stmt R1
Pretest เพิร์าะทำดสัอบก�อนทำ�างานภาย่ในล&ป
ผั�งงานแบบวนซู�!า (do-while)
F
stmt R1
Tcondition
stmt R2
Posttest เพิร์าะทำ�างานก�อน แล'วจึ0งทำดสัอบ
ต�วอย่�างต�วอย่�าง จงเข้%ย่นผ�งงานเพ6/อก�าหนดค�าให�ก�บตั�วิแปร a แลัะ b แลั�วิเปร%ย่บเท%ย่บเพ6/อแสดงผลั ถ้�าตั�วิแปร a ม%ค�ามากกวิ�าตั�วิแปร b ให�พ มพ�ค�าตั�วิแปร a ออกมาแสดงบนจอภาพ ถ้�าไม�ใช้� ให�พ มพ�ค�าตั�วิแปร b ออกมาแสดงบนจอภาพ
ต�วอย่�างจงเข้%ย่นผ�งงานในการจ�บไม�ส�1นไม�ย่าวิสามคร�1ง ถ้�าได�ไม�ย่าวิให�
ได�เง น 100 บาท ถ้�าได�ไม�ส� 1นให�เส%ย่เง น 100 บาท
ซู&โดโค'ดซู�โดโค�ดเป2นค�าอธ์ บาย่ข้�1นตัอนการท�างานข้องโปรแกรมโดย่ใช้�
ถ้�อย่ค�าผสมระหวิ�างภาษาอ�งกฤษแลัะภาษาการเข้%ย่นโปรแกรมแบบโครงสร�างท%/เข้�าใจง�าย่มาแสดงลั�าด�บการท�างานข้องโปรแกรม หร6ออาจใช้�ภาษาไทย่ก3ได� โดย่ให�ผ��เข้%ย่นโปรแกรมสามารถ้พ�ฒนาข้�1นตัอนตั�าง ๆ ให�เป2นโปรแกรมได�ง�าย่ข้71น
ตั�วิอย่�างเช้�นในการเข้%ย่นซู�โดโค�ดส�าหร�บให�คอมพ วิเตัอร�หาค�าเฉลั%/ย่จากข้�อม�ลัท%/ร �บเข้�าทางแป;นพ มพ�อาจเข้%ย่นได�ด�งน%1
การ์ว�เคร์าะห ป�ญหาต�วอย่�างทำ#+ 1 จงเข้%ย่นแนวิทางการแก�ป�ญหาด�วิย่คอมพ วิเตัอร� ส�าหร�บให�คอมพ วิเตัอร�ค�านวิณหาค�าจ�างพน�กงานเป2นราย่ช้�/วิโมง จากน�1นแสดงค�าจ�างท%/ค�านวิณได�
ต�วอย่�างการ์ว�เคร์าะห ว�ธี#ทำ�าต'องการ์อะไร์
ตั�องการทราบค�าจ�างข้องพน�กงานแตั�ลัะคน
ต'องการ์เอาต พิ3ตอย่�างไร์ ตั�องการเอาตั�พ)ตัเป2นค�าจ�างส)ทธ์ ข้องพน�กงานทาง
จอภาพ
ต�วอย่�างการ์ว�เคร์าะห ขั้'อม&ลเขั้'า
• รห�สพน�กงาน• ช้6/อพน�กงาน• จ�านวินช้�/วิโมงท�างานเก3บในตั�วิแปรช้6/อ Hours• ค�าจ�างราย่ช้�/วิโมงเก3บในตั�วิแปรช้6/อ PayRate
ต�วอย่�างการ์ว�เคร์าะห ก�าหนดว�ธี#การ์ค�านวณ์
ค�าจ�างส)ทธ์ = จ�านวินช้�/วิโมง x อ�ตัราตั�อช้�/วิโมง ขั้�!นตอนการ์ปร์ะมวลผัล
1. เร /มตั�น 2. ร�บรห�สพน�กงาน, ช้6/อพน�กงาน, จ�านวินช้�/วิโมงท�างาน, ค�าจ�างราย่ช้�/วิโมง
3. ค�านวิณ ค�าจ�างส)ทธ์ = Hours x PayRate 4. แสดงผลัลั�พธ์� เป2นรห�สพน�กงาน ช้6/อ แลัะค�าจ�างส)ทธ์ 5. จบการท�างาน
ต�วอย่�างทำ#+ 2จงเข้%ย่นแนวิทางการแก�ป�ญหาด�วิย่คอมพ วิเตัอร�ในการหา
ปร มาตัรทรงกระบอก แลัะแสดงค�าปร มาตัรท%/ค�านวิณได�
ต'องการ์อะไร์ ตั�องการค�านวิณปร มาตัรข้องร�ปทรงกระบอก
ต'องการ์เอาต พิ3ตอย่�างไร์ ค�าปร มาตัรทรงกระบอกเป2นร�ปแบบเลัข้ทศน ย่มทางจอภาพ
การ์ว�เคร์าะห ป�ญหาขั้'อม&ลเขั้'า ควิามส�งข้องทรงกระบอก (h) แลัะร�ศม%ข้องทรงกระบอก(r) เป2นร�ปแบบเลัข้ทศน ย่ม
ว�ธี#การ์ค�านวณ์ ปร มาตัรทรงกระบอก = x ร�ศม%2 x ควิามส�ง
ขั้�!นตอนการ์ปร์ะมวลผัล 1. เร /มตั�น 2. ร�บค�าควิามส�งแลัะค�าร�ศม%ข้องทรงกระบอก 3. ค�านวิณค�าปร มาตัร จาก ปร มาตัร = x r2 x h 4. แสดงค�าปร มาตัรทรงกระบอกทางจอภาพ 5. จบการท�างาน
การ์เขั้#ย่นโปร์แกร์มเปลั%/ย่นข้�1นตัอนการท�างานให�อย่��ในร�ปรห�สภาษาคอมพ วิเตัอร�
การเข้%ย่นโปรแกรมจะตั�องเข้%ย่นตัามภาษาท%/คอมพ วิเตัอร�เข้�าใจโดย่อาจใช้�ภาษาระด�บส�ง หร6อระด�บตั�/าซู7/งสามารถ้เลั6อกได�หลัาย่ภาษา การเข้%ย่นโปรแกรมแตั�ลัะภาษาจะตั�องท�าตัามหลั�กไวิย่ากรณ� (syntax) ท%/ก�าหนดไวิ�ในภาษาน�1น
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area;
getch();}
ก�าหนดต�วแปร์ ความสั&งขั้องทำร์งกร์ะบอก (h) แลัะร์�ศม#ขั้องทำร์งกร์ะบอก (r) เป2น ผลัลั�พธ์� ร์&ปแบบเลขั้ทำศน�ย่ม
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area; printf("Please Enter Height :"); scanf("%d",&Height); printf("Please Enter Radius :"); scanf("%d",&Radius);
getch();}
ร์�บค�าความสั&งขั้องทำร์งกร์ะบอก (h) แลัะร์�ศม#ขั้องทำร์งกร์ะบอก (r) เป2นร์&ปแบบเลขั้จึ�านวนเต5ม
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area; printf("Please Enter Height :"); scanf("%d",&Height); printf("Please Enter Radius :"); scanf("%d",&Radius);
getch();}
ค�าส�/ง scanf() ใช้�ในการร�บค�าจากผ��ใช้�มาเก3บไวิ�ท%/ตั�วิแปร Height แลัะ Radius ตัามลั�าด�บโดย่ท%/ผ��ใช้�ตั�องป;อนค�าแรก แลั�วิ enter จากน�1นป;อนค�าท%/สอง 2 แลั�วิกด enter อ%กคร�1งหน7/ง
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area; printf("Please Enter Height :"); scanf("%d",&Height); printf("Please Enter Radius :"); scanf("%d",&Radius);
Area=3.14*(Radius*Radius)*Height;getch();
}
ว�ธี#การ์ค�านวณ์ ปร์�มาตร์ทำร์งกร์ะบอก = x
ร�ศม%2 x ควิามส�ง
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area; printf("Please Enter Height :"); scanf("%d",&Height); printf("Please Enter Radius :"); scanf("%d",&Radius);
Area=3.14*(Radius*Radius)*Height;printf("Area = %f",Area);getch();
}
แสดงผลัลั�พธ์�ออกทางหน�าจอ
โปร์แกร์มหาปร์�มาตร์ทำร์งกร์ะบอก (แสัดงผัลเป6นทำศน�ย่ม 2 ต�าแหน�ง)#include <stdio.h>
#include <conio.h>
main(){
int Height,Radius; float Area; printf("Please Enter Height :"); scanf("%d",&Height); printf("Please Enter Radius :"); scanf("%d",&Radius);
Area=3.14*(Radius*Radius)*Height;printf("Area = %.2f",Area);getch();
}
ก�าหนดร�ปแบบการแสดงผลัลั�พธ์�เป2นทศน ย่ม 2 ตั�าแหน�งออกทางหน�าจอ
โปร์แกร์มพิ�มพิ ขั้'อม&ลน�กเร์#ย่น#include <iostream>
using namespace std;
int main(){
getch();}
ให�เข้%ย่นโปรแกรมเพ6/อร�บช้6/อแลัะกลั)�มวิ ช้าโปรแกรมม /งข้องน�กเร%ย่น จากน�1นให�แสดงข้�อควิามด�งตั�วิอย่�างตั�อไปน%1Hello, Susan (3401)(จากตั�วิอย่�าง Susan ค6อช้6/อน�กเร%ย่น แลัะ 3401 ค6อกลั)�ม)
โปร์แกร์มพิ�มพิ ขั้'อม&ลน�กเร์#ย่น#include <iostream>
using namespace std;
int main(){
string name;int group;
cin >> name;cin >> group;
return 0;}
ร�บช้6/อแลัะกลั)�มวิ ช้าโปรแกรมม /ง
โปร์แกร์มพิ�มพิ ขั้'อม&ลน�กเร์#ย่น#include <iostream>
using namespace std;
int main(){
string name;int group;
cin >> name;cin >> group;
cout << “Hello, ” << name << “ (” << group << “)” << endl;
return 0;}
แสดงผลัลั�พธ์�ออกทางหน�าจอ