886201 Programming Fundamental 1 - เว็บไซต์เพื่อการเรียนการสอน

Download Report

Transcript 886201 Programming Fundamental 1 - เว็บไซต์เพื่อการเรียนการสอน

หลักการโปรแกรม 1
Lecture 2: การวิเคราะหปั
์ ญหา, ตัวแปรอยาง
่
งาย,
การรับขอมู
่
้ ลเขา,
้ การคานวณและ
แสดงผลลัพธ ์
ภาษาคอมพิวเตอรและการพั
ฒนา
์
โปรแกรม
• กาหนดและวิเคราะหปั
์ ญหา (Problem Definition and
Problem Analysis)
• เขียนผังงานและซูโดโค้ด (Pseudocoding)
• เขียนโปรแกรม (Programming)
• ทดสอบและแกไขโปรแกรม
(Program Testing and
้
Debugging)
• ทาเอกสารและบารุงรักษาโปรแกรม (Program
Documentation and Maintenance)
การกาหนดและวิเคราะหปั
์ ญหา
• กาหนดขอบเขตของปัญหา
• กาหนดลักษณะของขอมู
้ ลเขาและออกจากระบบ
้
(Input/Output Specification)
• กาหนดวิธก
ี ารประมวลผล (Process
Specification)
ตัวอยาง
่
ถาหากต
องการออกแบบโปรแกรมให
้
้
้
คอมพิวเตอรรั์ บคาข
่ อมู
้ ล 3 คา่ และแสดง
คาเฉลี
ย
่ ทางจอภาพ เราอาจกาหนดและ
่
วิเคราะหปั
์ ญหาไดดั
้ งนี้
1. รับขอมู
ด
้ ลจากคียบอร
์
์
•
•
รับขอมู
้ ลเฉพาะทีเ่ ป็ นตัวเลขมาเก็บในตัวแปร
ถาข
้ อมู
้ ลเทากั
่ บ 0 ให้รับใหม่
ตัวอยาง
(ตอ)
่
่
2. หาคาเฉลี
ย
่
่
•
•
•
รวมคาทุ
ั มาเขาด
น
่ กคาที
่ ร่ บ
้ วยกั
้
นาคาผลรวมที
ไ่ ดหารด
วย
3
่
้
้
นาคาผลลั
พธไปเก็
บในตัวแปร
่
์
3. แสดงผลลัพธทางจอภาพ
์
•
•
ย
่ เทากั
แสดงคาวาค
่ บ
่
่ าเฉลี
แสดงผลลัพธโดยมี
ทศนิยมสองตาแหน่ง
์
ขัน
้ ตอนการทางาน
การประมวลผล
ลตัวที่
ขรัอมู
้ ออก
้ บขลอมู
1
(input)
รับขอมู
ลตัวที่
้
(output)
2
รับขอมู
้ ลตัวที่
3
ขอมู
้ ลเขา้
หาผลรวม
แสดงคาเฉลี
ย
่
่
(process)
ของเลขทัง้
เป็ นทศนิยม
3 จานวน
2 ตาแหน่ง
นาผลรวม
หารดวย
3
้
การเขียนผังงานและซูโดโค้ด
หลังจากทีไ่ ดวิ
้ ตอนตอไปจะใช
้ เคราะหปั
้ ขัน
่
้
์ ญหาแลว
เครือ
่ งมือช่วยในการออกแบบโปรแกรม โดยเขียนเป็ นลาดับ
ขัน
้ ตอนการทางานของโปรแกรมทีเ่ รียกวาอั
ึ
่ ลกอริทม
(Algorithm) โดยจะเขียนแสดงขัน
้ ตอนการแกปั
้ ญหา ดวย
้
ประโยคทีช
่ ด
ั เจนไมคลุ
่ มเครือ และมีรายละเอียดการทางาน
พอสมควรเพียงพอทีจ
่ ะนาไปเขียนเป็ นโปรแกรมให้ทางานจริง
โดยอัลกอริทม
ึ นั้นอาจเขียนให้อยูในรู
ปของรหัสจาลองหรือซูโด
่
โค้ด (Pseudo-code) หรือเขียนเป็ นผังงาน (Flowchart) ก็ได้
แทนขัน
้ ตอนวิธก
ี าร
ทางานโดยใช้
สั ญลักษณแทน
์
ความหมายของการ
และ
ทางานบางอยาง
่
มีเส้นลูกศรแสดงลาดับ
หรือทิศทางการทางาน
START
sum = 1
print sum
sum = sum + 1
T
sum <= 5
F
STOP
ซูโดโคด หมายถึงการแทน
ขัน
้ ตอนวิธก
ี ารทางานโดยใช้
คาในภาษาอังกฤษ มาเรียง
ตอกั
่ อธิบายวิธก
ี าร
่ นเพือ
ทางานแลวได
ความหมายเป็
น
้
้
ขัน
้ ตอนการทางานทีต
่ องการ
้
Procedure PRTone2five
sum =1
do
print sum
sum = sum + 1
while sum <= 5
end
กระบวนการแกปั
วเตอร ์
้ ญหาดวยคอมพิ
้
วิเคราะหปั
์ ญหา
• ตองการอะไร
้
• ตองการเอาต
พุ
้
์ ตอยางไร
่
• ขอมู
้ ลเขาเป็
้ นอยางไร
่
• ตัวแปรทีใ
่ ช้
• วิธก
ี ารประมวลผลเป็ นอยางไร
่
การเขียนผังงาน
ผังงานเป็ นแผนภาพทีแ
่ สดงลาดับขัน
้ ตอนในการ
ทางานของโปรแกรม โดยมีการลงรายละเอียด ใส่
วิธก
ี าร และจัดลาดับขัน
้ ตอนของโปรแกรม ตัง้ แต่
บขอมู
เริม
่ ตนจากการรั
้ ล การประมวลผล ไปจนถึงการ
้
แสดงผลลัพธการท
างาน
์
สั ญลักษณที
์ ใ่ ช้ในการเขียนผังงาน
สั ญลักษณที
์ ใ่ ช้ในการเขียนผังงาน
ตัวอยางการเขี
ยนผังงาน
่
สั ญลักษณ ์
ของการ
รับคา่
สั ญลักษณ ์
ของการ
คานวณ
ผังงานแบบทางเลือก
เป็ นการทางานทีต
่ องมี
การตัดสิ นใจ เพือ
่ เลือกการทางาน
้
โดยใช้สั ญลักษณการเปรี
ยบเทียบ
์
F
T
F
T
condition
condition
stmt F
stmt T
ผังงานแบบวนซา้ (while-do)
condition
T
stmt R1
stmt R2
F
Pretest เพราะ
ทดสอบกอนท
างาน
่
ภายในลูป
ผังงานแบบวนซา้ (do-while)
stmt R1
stmt R2
condition
T
F
Posttest
เพราะ
ทางาน
กอน
่
แลวจึ
้ ง
ทดสอบ
ตัวอยาง
่
ตัวอยาง
จงเขียนผังงานเพือ
่ กาหนดคาให
่
่
้กับตัวแปร a และ
b แลวเปรี
ยบเทียบเพือ
่ แสดงผล
้
ถาตั
าตั
้ วแปร a มีคามากกว
่
่ วแปร b ให้พิมพค
่ วแปร
์ าตั
a ออกมาแสดงบนจอภาพ
ถาไม
ใช
้
่ ่ ให้พิมพค
่ วแปร b ออกมาแสดงบนจอภาพ
์ าตั
START
a = 10
b=5
T
a>b
F
print “B = “, b
print “A = “, a
STOP
ตัวอยาง
่
จงเขียนผังงานในการจับไมสั
ง้ ถาได
ไม
้ ้ นไมยาวสามครั
้
้
้ ้
ยาวให้ไดเงิ
ไม
้ น 100 บาท ถาได
้
้ สั
้ ้ นให้เสี ยเงิน 100 บาท
ซูโดโค้ด
ซูโดโค้ดเป็ นคาอธิบายขัน
้ ตอนการทางานของโปรแกรม
โดยใช้ถอยค
าผสมระหวางภาษาอั
งกฤษและภาษาการเขียน
้
่
โปรแกรมแบบโครงสรางที
เ่ ขาใจง
ายมาแสดงล
าดับการทางานของ
้
้
่
โปรแกรม หรืออาจใช้ภาษาไทยก็ได้ โดยให้ผู้เขียนโปรแกรม
สามารถพัฒนาขัน
้ ตอนตาง
ๆ ให้เป็ นโปรแกรมไดง้ ายขึ
น
้
่
่
ตัวอยางเช
่
่ นในการเขียนซูโดโคดส
้ าหรับให้
คอมพิวเตอรหาค
าเฉลี
ย
่ จากขอมู
ั เขาทาง
่
้ ลทีร่ บ
้
์
แป้นพิมพอาจเขี
ยนไดดั
้ งนี้
์
การวิเคราะหปั
์ ญหา
ตัวอยางที
่ 1
่
จงเขียนแนวทางการแกปั
วเตอร ์
้ ญหาดวยคอมพิ
้
สาหรับให้คอมพิวเตอรค
่ ้างพนักงานเป็ น
์ านวณหาคาจ
รายชัว
่ โมง จากนั้นแสดงคาจ
่ านวณได้
่ ้างทีค
ตัวอยางการวิ
เคราะห ์
่
วิธท
ี า
ต้องการอะไร
ตองการทราบค
าจ
้
่ ้างของพนักงานแตละคน
่
ต้องการเอาตพุ
่
์ ตอยางไร
ตองการเอาต
พุ
้
่ ้างสุทธิของพนักงานทาง
์ ตเป็ นคาจ
จอภาพ
ตัวอยางการวิ
เคราะห ์
่
ข้อมูลเขา้
• รหัสพนักงาน
• ชือ
่ พนักงาน
• จานวนชัว
่ โมงทางานเก็บในตัวแปรชือ
่ Hours
• คาจ
่ โมงเก็บในตัวแปรชือ
่ PayRate
่ ้างรายชัว
ตัวอยางการวิ
เคราะห ์
่
กาหนดวิธก
ี ารคานวณ
คาจ
่ โมง x อัตราตอชั
่ โมง
่ ้างสุทธิ = จานวนชัว
่ ว
ขัน
้ ตอนการประมวลผล
1. เริม
่ ตน
้
2. รับรหัสพนักงาน, ชือ
่ พนักงาน, จานวนชัว
่ โมง
ทางาน, คาจ
่ โมง
่ ้างรายชัว
3. คานวณ คาจ
่ ้างสุทธิ = Hours x PayRate
4. แสดงผลลัพธ ์ เป็ นรหัสพนักงาน ชือ
่ และ
คาจ
่ ้างสุทธิ
5. จบการทางาน
ตัวอยางที
่ 2
่
จงเขียนแนวทางการแกปั
วเตอรในการหา
้ ญหาดวยคอมพิ
้
์
ปริมาตรทรงกระบอก และแสดงคาปริ
มาตรทีค
่ านวณได้
่
ต้องการอะไร
ตองการค
านวณปริมาตรของรูปทรงกระบอก
้
ต้องการเอาตพุ
่
์ ตอยางไร
คาปริ
มาตรทรงกระบอกเป็ นรูปแบบเลขทศนิยมทางจอภาพ
่
การวิเคราะหปั
์ ญหา
ข้อมูลเขา้ ความสูงของทรงกระบอก (h) และรัศมีของ
ทรงกระบอก(r) เป็ นรูปแบบเลขทศนิยม
วิธก
ี ารคานวณ
ปริมาตรทรงกระบอก =
 x รัศมี2 x ความสูง
ขัน
้ ตอนการประมวลผล
1. เริม
่ ตน
้
2. รับคาความสู
งและคารั
่
่ ศมีของทรงกระบอก
2 x h
3. คานวณคาปริ
ม
าตร
จาก
ปริ
ม
าตร
=

x
r
่
4. แสดงคาปริ
มาตรทรงกระบอกทางจอภาพ
่
5. จบการทางาน
การเขียนโปรแกรม
เปลีย
่ นขัน
้ ตอนการทางานให้อยูในรู
ปรหัส
่
ภาษาคอมพิวเตอร ์ การเขียนโปรแกรมจะตองเขี
ยนตามภาษาที่
้
คอมพิวเตอรเข
้
้ภาษาระดับสูง หรือระดับตา่ ซึง่
์ าใจโดยอาจใช
สามารถเลือกไดหลายภาษา
การเขียนโปรแกรมแตละภาษา
้
่
จะตองท
าตามหลักไวยากรณ์ (syntax) ทีก
่ าหนดไวในภาษานั
้น
้
้
โปรแกรมหาปริมาตรทรงกระบอก
#include <stdio.h>
#include <conio.h>
main()
{
?
getch();
}
โปรแกรมหาปริมาตรทรงกระบอก
#include <stdio.h>
#include <conio.h>
main()
{
int Height,Radius;
float Area;
getch();
}
กาหนดตัวแปร
ความสูงของ
ทรงกระบอก (h) และ
รัศมีของทรงกระบอก
(r)
เป็ น ผลลัพธ ์ รูปแบบ
เลขทศนิยม
โปรแกรมหาปริมาตรทรงกระบอก
#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)
:");
เป็ นรูปแบบเลขจานวน
เต็ม
:");
คาสั่ ง scanf() ใช้ใน
โปรแกรมหาปริมาตรทรงกระบอก
การรับคาจากผู
่
้ใช้มา
เก็บไวที
่ วั แปร Height
้ ต
#include <stdio.h>
และ Radius ตามลาดับ
#include <conio.h>
โดยทีผ
่ ้ใช
ู ้ตองป
main()
้ ้ อนคา่
{
แรก แลว
้ enter
int Height,Radius;
จากนั้นป้อนคาที
ส
่ อง 2
่
float Area;
วกด
enter อีกครัง้
printf("Please Enter Heightแล
:");
้
scanf("%d",&Height);
หนึ่ง
printf("Please Enter Radius :");
scanf("%d",&Radius);
getch();
}
โปรแกรมหาปริมาตรทรงกระบอก
#include <stdio.h>
#include <conio.h>
วิธีการคานวณ
ปริมาตรทรงกระบอก =  x รัศมี2 x ความสูง
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();
}
โปรแกรมหาปริมาตรทรงกระบอก
#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();
}
โปรแกรมหาปริมาตรทรงกระบอก (แสดงผล
เป็ นทศนิยม 2 ตาแหน่ง)
#include <stdio.h>
#include <conio.h>
กาหนด
รูปแบบการ
แสดงผลลัพธ ์
เป็ นทศนิยม
2 ตาแหน่ง
:");
ออกทาง
หนาจอ
:"); ้
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();
}
โปรแกรมพิมพข
์ ้อมูลนักเรียน
#include <iostream>
using namespace std;
int main()
{
}
ให้เขียนโปรแกรมเพือ
่ รับชือ
่ และกลุม
่
วิชาโปรแกรมมิง่ ของนักเรียน
จากนั้นให้แสดงขอความดั
งตัวอยาง
้
่
ตอไปนี
้
่
Hello, Susan (3401)
(จากตัวอยาง
Susan คือชือ
่
่
getch();
นักเรียน และ 3401 คือกลุม)
่
โปรแกรมพิมพข
์ ้อมูลนักเรียน
#include <iostream>
using namespace std;
int main()
{
string name;
int group;
cin >> name;
cin >> group;
return 0;
}
รับชือ
่ และกลุมวิ
่ ชา
โปรแกรมมิง่
โปรแกรมพิมพข
์ ้อมูลนักเรียน
#include <iostream>
using namespace std;
int main()
{
string name;
int group;
cin >> name;
cin >> group;
แสดงผลลัพธ ์
ออกทาง
หน้าจอ
cout << “Hello, ” << name
<< “ (” << group << “)” << endl;
return 0;
}
แบบฝึ ก
หัด
ลองเขียนโปรแกรมตอไปนี
้
่
• โปรแกรมสาหรับคานวณพื ้นที่สามเหลี่ยม
• โปรแกรมสาหรับคานวณความยาวรอบรูปของวงกลม
• โปรแกรมสาหรับเปลี่ยนหน่วยเมตรเป็ นเซนติเมตร
• www.krurock.com