บทที่ 4: ภาษาปาสคาล แบบวนซ้ำ

Download Report

Transcript บทที่ 4: ภาษาปาสคาล แบบวนซ้ำ

บทที่ 4 (ส่ วนที่ 3)
การเขียนโปรแกรมภาษาปาสคาล
โดยใช้ โครงสร้ างหลักทั้ง 3 โครงสร้ าง
ในโปรแกรม
204101 Introduction to Computer
1
แบบฝึ กหัด 1
START
1.ผลลัพธ์ ของโปรแกรมนี้
คืออะไร
k = 4
For row = 1 to k
STOP
For col = 1 to k
Print ‘*’
Print Newline
หมายเหตุ
Newline คือให้ขน
ึ้ บรรท ัดใหม่
204101 Introduction to Computer
ทดลองเขียนโปรแกรมภาษา
ปาสคาลจากผังงานี้
2
แบบฝึ กหัด 2
2. จงเขียนโปรแกรมเพือ่ รับข้อมูลอักขระ 1 ตัว และข้ อมูลเลข
จานวนเต็ม 2 จานวน ( a และ b) แล้ วคานวณและแสดงค่ า
c ตามเงือ่ นไขนี้ ถ้ ารับข้ อมูลอักขระเป็ น ‘P’ ให้ คานวณ
c = a +b และถ้ าเป็ น ‘M’ ให้ คานวณ c = a*b โดยให้
โปรแกรมวนทาซ้าได้ 5 รอบ
204101 Introduction to Computer
3
ตัวอย่ าง 12
จงเขียนโปรแกรมเพือ่ คานวณเงินค่ าจ้ างของพนักงานจานวน 20
คน โดยกาหนดให้ รับข้ อมูลจานวนชั่วโมงทางานและข้ อมูล
ประเภทของพนักงาน ซึ่งพนักงานแต่ ละประเภทได้ รับค่ าจ้ างต่ อ
ชั่วโมงต่ างกัน ดังนี้
ประเภทของพนักงาน
ค่ าจ้ างบาท / ชั่วโมง
1
55
2
75
3
90
4
100
204101 Introduction to Computer
4
ตัวอย่ าง 12 (ต่ อ)
เมื่อคิดค่ าจ้ างของลูกจ้ างคนเดียว
START
Read H,T
Yes
No
T=1
Yes
P=H*55
T=2
No
Yes
P=H*75
P=H*90
T=3
No
P=H*100
Print P
STOP
204101 Introduction to Computer
5
ตัวอย่ าง 12 (ต่ อ)
START
เมื่อคิดค่ าจ้ างของลูกจ้ างหลายคน
i=1
แบบที่ 1 กรณีคดิ ค่ าจ้ างของลูกจ้ าง 20 คน
No
i<=20
Yes
Read H,T
Yes
STOP
No
T=1
Yes
P=H*55
P=H*75
T=2
No
Yes
P=H*90
Print P
i=i+1
204101 Introduction to Computer
T=3
No
P=H*100
ทราบจานวนรอบแน่ นอน
สามารถใช ้ repeat until
หรือ loop for ก็ได้ 6
เมื่อคิดค่ าจ้ างของลูกจ้ างหลายคน
ตัวอย่ าง 12 (ต่ อ)
แบบที่ 2 กรณีคดิ ค่ าจ้ างของลูกจ้ าง N คน
START
Read N
For i = 1 to N
STOP
Read H,T
1
4
T
2
3
P=H*55
P=H*100
P=H*75
P=H*90
Print P
204101 Introduction to Computer
7
program Employee;
โปรแกรมนีเ้ ป็ นคาสั่ งภาษาปาสคาล
uses WinCrt;
ของตัวอย่ างที่ 12 ในกรณีใด ?
var N, T , i : integer;
H,P : real;
begin
write('Input number of Employees : '); readln(N);
for i := 1 to N do
begin
write('Input Hours : '); readln(H);
write('Input Type : '); readln(T);
case T of
1 : P := H*55;
2 : P := H*75;
3 : P := H*90;
4 : P := H*100;
end;
write('P = ' ,P:1:2);
end;
8
204101 Introduction to Computer
ตัวอย่ าง 1 (ต่ อ)
ตัวอย่ าง 13
แบบที่ 1
จงเขียนโปรแกรมเพือ่ รับ
ข้ อมูลเลขจานวนเต็ม
10 จานวน โดยให้ แสดง
เฉพาะค่ าของเลขตา่ สุ ด
บนจอภาพ
START
i = 1, min = 999
No
i <= 10
Yes
Read num
Print min
No
หมายเหตุ โปรแกรมจะทางาน
ถูกต้ องเมือ่ ข้ อมูลเลขจานวน
เต็มทุกตัวตา่ กว่ า 999
204101 Introduction to Computer
min > num
Yes
STOP
min = num
i=i+1
9
ตัวอย่ าง 13 ( ต่ อ )
แบบที่ 2
START
จงเขียนโปรแกรมเพือ่ รับข้ อมูล
เลขจานวนเต็ม 10 จานวน
โดยให้ แสดงเฉพาะค่ าของเลข
ต่าสุ ดบนจอภาพ
Read num
i = 1, min = num
No
i < 10
Yes
Read num
Print min
No
ต่ างจากแบบที่ 1
ตรงไหน ?
204101 Introduction to Computer
Yes
min > num
STOP
min = num
i=i+1
10
ตัวอย่ าง 14
จงเขียนโปรแกรมสาหรับรับคะแนนของนักศึกษาที่เรียนวิชา
204101 กลุ่มหนึ่ง แล้วหาค่ าคะแนนของนักศึกษาทีม่ ีค่ามากทีส่ ุ ด
(Max) และค่ าคะแนนเฉลีย่ (Average)ของนักศึกษากลุ่มนี้ แสดง
ผลลัพธ์ ออกทางจอภาพ
กาหนดให้
- ข้ อมูลคะแนนของนักเรียนทุกคนต้ องไม่ ต่ากว่ า 0
- โปรแกรมหยุดรับข้ อมูลคะแนน เมื่อรับค่ าคะแนนเป็ น -1
204101 Introduction to Computer
11
ตัวอย่ าง 14 (ต่ อ)
START
กรณีไม่ ทราบจานวนพนักงาน
i=1, sum=0, max= -1
Read score
No
score != -1
Yes
sum = sum + score
No
Yes
max < score
max = score
No
i>1
Yes
avg=sum/(i-1)
Print avg,max
i=i+1
Read score
STOP
204101 Introduction to Computer
12
program Employee;
uses WinCrt;
var i : integer;
score,max,sum,avg : real;
begin
i := 1; sum := 0; max := -1;
write('Input score : '); readln(score);
while score <> -1 do begin
sum := sum + score;
if (max < score) then max := score;
i := i + 1;
write('Input score : '); readln(score);
end;
if (i > 1) then begin
avg := sum/(i-1);
writeln('maximum = ' , max:1:2);
writeln('average = ' , avg:1:2);
end;
204101
Introduction to Computer
end.
13
แบบฝึ กหัด3
START
Read k
โปรแกรมนี้ทำงำนอะไร
For row = 1 to k
STOP
For col = 1 to k
Yes
row=1 or row = k
Yes
Print ‘*’
No
col>1 and col < k
Print ‘ ’
No
Print ‘*’
Print Newline
หมายเหตุ
Newline
ึ้ บรรท ัดใหม่
204101 Introduction
to Computer คือให้ขน
14
แบบฝึ กหัด
4. จงเขียนโปรแกรมสาหรับวาดรูปสามเหลีย่ มความสู ง k ด้ วยสัญลักษณ์ *
ตัวอย่ างเช่ น ถ้ ารับ k เป็ น 3 รูปทีแ่ สดงคือ
***
**
*
5. จงเขียนโปรแกรมเพือ่ รับข้ อมูลเลขจานวนเต็ม N จานวน และนับว่ามีเลข
จานวนเต็มคู่ และจานวนเต็มคีอ่ ย่ างละกีจ่ านวน (กรณีเลขศูนย์ ไม่ นับ)
204101 Introduction to Computer
15
ทดสอบกันหน่อย
จงเขียนโปรแกรมเพือ
่ ร ับข้อมูลเลขจานวนเต็ม M และพิมพ์ชุดข้อมูล
เลขจานวนเต็ม โดยเริม
่ ต้นที่ 1 ทงหมด
ั้
M จานวน
ด ังต ัวอย่าง
ถ้า M = 5 ผลล ัพธ์ทแ
ี่ สดงบนจอภาพคือ 1 6 3 12 5
ถ้า M = 12 ผลล ัพธ์ทแ
ี่ สดงบนจอภาพคือ 1 6 3 12 5 18 7 24 9 30 11 36
หมายเหตุ ในชุดข้อมูล ค่าต ัวเลขของตาแหน่งคูแ
่ ละเลขคีจ
่ ะมี
ั ันธ์ไม่เหมือนก ัน
ความสมพ
204101 Introduction to Computer
16