259201 computer programming for engineers
DESCRIPTION
259201 Computer Programming for Engineers. Week 5 การใช้ For -While. FOR. ในกรณีที่ต้องการทำงานซ้ำๆ เช่น ถ้าต้องการแสดงคำว่า. Programming is fun. จำนวน 5 ครั้ง อาจทำได้ดังนี้คือ. disp(‘Programming is fun.’); disp(‘Programming is fun.’); disp(‘Programming is fun.’); - PowerPoint PPT PresentationTRANSCRIPT
1
259201Computer Programming
for Engineers
Week 5การใช้� For -While
2
FOR ในกรณี�ที่��ต้องการที่�างานซ้ำ��าๆ เช่�น ถ้าต้องการ
แสดงคำ�าว่�า
จำ�านว่น 5 คำร��ง อาจำที่�าไดด�งน��คำ�อ
Programming is fun.
disp(‘Programming is fun.’);disp(‘Programming is fun.’);disp(‘Programming is fun.’);disp(‘Programming is fun.’);disp(‘Programming is fun.’);
แต้�ถ้าต้องแสดงประโยคำน�� 1000 คำร��ง จำะที่�าอย�างไร?
3
คำ�าต้อบ : ใช่ Forไฟล์' for1.m
4
FOR
for i=1:1000 disp(‘Programming is fun.’);end
ถ้าต้องแสดงประโยคำน�� 1000 คำร��ง ที่�าไดโดย
แกที่��เด�ยว่
5
FOR
ร(ปแบบการใช่งาน (Syntax)forfor index = index =expressionexpression
ช้�ดคำ�าสั่ �งใน ช้�ดคำ�าสั่ �งใน looploop
endend
6
For - ต้�ว่อย�างการใช่งานไฟล์' for2.m
7
Flowchart ของตั วอย่�างน��
i = 1
i<=15?
Display i
True
False
i = i + 3
1. ก�าหนดคำ�าเร��มตั�น
2. เง��อนไขการเข�าลู ป
3. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบ
ในแตั�ลูะรอบ
8
FOR : ต้�ว่อย�าง - การสราง vector
% การสรางเว่กเต้อร'โดยที่)กสมาช่+กม�คำ�า เป,น 0for 1 5I = : % ให้น�บจำ�านว่น I ไปต้��งแต้� 1 ถ้.ง 5 () = 0enddisp(x);
% การสราง vector โดยสมาช่+กม� Index เป,น 1, 3, 5, 7, 9 ม�คำ�าเป,น 1
for 1 2 10I = : : %ให้น�บจำ�านว่น I ไปต้��งแต้� 1ถ้.ง 10 โดยน�บไปที่�ล์ะ 2
1x(I) =end
disp(x);
9
เกมที่าย่ตั วเลูขส)�มต้�ว่เล์ขที่��ม�คำ�าอย(�ในช่�ว่ง (0,10) แล์ว่ว่น
รอบร�บคำ�าจำากคำ�ย'บอร'ดไม�เก+น 5 คำร��ง ห้ากภายใน 5 คำร��งที่ายถ้(ก จำะแสดง
ขอคำว่าม You got it ห้ากที่ายไม�ถ้(กในแสดงขอคำว่าม You failed. Please try again next time.
10
n = round(rand(1)*10); i = 1
11
เกมที่าย่ตั วเลูข (guessNum.m)
12
ผลูลู พธ์)เกมที่าย่ตั วเลูข
13
หาผลูบวกสั่ะสั่มของเลูข 1 ถึ+ง n เข�ยน m-file ช่��อ
cummulativeSum ห้าผล์บว่กสะสมของเล์ข 1 ถ้.ง
n
14
หาผลูบวกสั่ะสั่ม% cummulativesum.mn = input('n = ');csum = 0;for i = 1:n csum = csum + i;endfprintf('Cummulative sum from 1 to %d is %d.', n, csum);
>> cummulativesumn = 10Cummulative Sum from 1 to 10 is 55.
15
ห้าผล์บว่กสะสม จำากสมการ csum = csum + i csum = 0 i= 1 csum = csum + i = 0+1 = 1 i= 2 csum = csum + i = 1+2 = 3 i= 3 csum = csum + i = 3+3 = 6 i= 4 csum = csum + i = 6+4 = 10 i= 5 csum = csum + i = 10+5 = 15 csum = 15
16
หาคำ�าเฉลู��ย่ของตั วเลูข 5 เลูข (cavg.m)
17
ห้าคำ�าเฉล์��ยของต้�ว่เล์ข 5 ต้�ว่จำากสมการ csum = csum + n
โดยที่�� n = input(‘Please input number’)
csum = 0, for i = 1:5
input n= 4 csum = csum + n= 0+4 = 4
input n= 2 csum = csum + n= 4+2 = 6
input n= 5 csum = csum + n= 6+5 = 11
input n= 1 csum = csum + n= 11+1 =12
input n= 3 csum = csum + n= 12+3 =15
cavg = csum/5 = 15/5 = 3.00
18
For ซ้�อนก น
ในห้ล์ายกรณี�ที่��จำะต้องม�การใช่ for ซ้ำอนก�น เช่�น ถ้าต้องการแสดงส(ต้รคำ(ณีแม� 2 ถ้.ง 6 โดยต้�ว่คำ(ณีม�คำ�า 1 ถ้.ง 12
ในกรณี�น�� for ล์(ปช่��นนอกใช่ต้�ว่แปร base ม�คำ�าว่+�งจำาก 2 ถ้.ง 6 ส�ว่น for ล์(ปช่��นในใช่ต้�ว่แปร mul ม�คำ�าว่+�งจำาก 1 ถ้.ง 12
19
ตั วอย่�าง : สั่ ตัรคำ ณ
for base = 2:6 for mul = 1:12
fprintf(‘%d x %d = %d\n’, base, mul, base * mul); endend
แบบฝึ0กห ด : ที่ดล์องเข�ยน Flowchart ของโปรแกรมน��
20
ตั วอย่�าง : For ซ้�อนก น ในบางกรณี� ล์(ปช่��นนอกแล์ะล์(ปช่��นในม�ต้�ว่แปรที่��ข.�นต้�อก�น เช่�น
for i = 1:5 for j = 1:i
fprintf('%d ', j); end fprintf('\n');end
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
ในกรณี�น�� for ล์(ปช่��นนอกใช่ต้�ว่แปร i ม�คำ�าว่+�งจำาก 1 ถ้.ง 5
ส�ว่น for ล์(ปช่��นในใช่ต้�ว่แปร j ม�คำ�าว่+�งจำาก 1 ถ้.ง i
21
ตั วอย่�าง : For ซ้�อนก น ถ้าต้องการให้แสดงผล์ด�งต้�อไปน�� โดยแกไขโปรแกรมได
เฉพาะ 2 บรรที่�ดแรก จำะต้องแกไขอย�างไร?
1 2 3 4 51 2 3 41 2 3 1 2 1
22
การใช้� WHILE
นอกจำากสามารถ้ว่นซ้ำ��าการที่�างาน (Loop) ไดดว่ยการใช่ For แล์ว่ ย�งสามารถ้ใช่ While ได
การใช่ While จำะต้องม�การก�าห้นดเง��อนไขของการว่นที่�างาน ถ้าเป,นจำร+งให้ที่�างาน (เขาไปใน Loop) อ�กคำร��งไปเร��อยๆ ถ้าเป,นเที่4จำให้ห้ย)ดการว่นที่�างาน (ออกจำากล์(ป)
23
WHILE
ร(ปแบบการใช่งาน (Syntax)whilewhile เง��อนไขเง��อนไข คำ�าสั่ �งคำ�าสั่ �งendend
24
Flowchart ของตั วอย่�างน��
i = 1
i<=5?
Display ‘Programming is fun’
True
False
i = i + 1
1. ก�าหนดคำ�าเร��มตั�น
2. เง��อนไขการเข�าลู ป
3. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบ
ในแตั�ลูะรอบ
25
การใช้� WHILE (ตั วอย่�างเปร�ย่บเที่�ย่บก บ For) จำากต้�ว่อย�างการว่นล์(ปโดยการใช่ For (ต้�ว่อย�าง for1.m)
% for1.mfor i = 1:5 disp('Programming is fun');end
สามารถ้เข�ยนโดยการใช่ While ไดด�งน��% while1.mi = 1;while i <= 5 disp('Programming is fun'); i = i + 1;end
1. ก�าหนดคำ�าเร��มตั�น2. เง��อนไขการเข�าลู ป
3. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบใน
แตั�ลูะรอบ
26
แบบฝึ0กห ด
for base = 2:6 for mul = 1:12
fprintf(‘%d x %d = %d\n’, base, mul, base * mul); endend
จำากต้�ว่อย�างโปรแกรมส(ต้รคำ(ณีที่��ใช่ For ซ้ำอนก�นสองช่��น
เข�ยนให้ม�โดยการใช่ While แที่นไดอย�างไร?
27
WHILE
ในการใช่งานที่��ผ�านมา การว่นล์(ปโดยใช่ For ห้ร�อ While จำะต้องร( ก�อนว่�าจำะม�การว่นล์(ปก��รอบ
แต้�ส�าห้ร�บในกรณี�ที่��ต้องการที่�างานซ้ำ��าๆ แต้�ไม�ร( ล์�ว่งห้นาว่�าจำะว่นก��รอบ
เช่�น จำะให้ว่นล์(ปไปเร��อยๆ โดยให้ม�การถ้ามผ(ใช่ว่�าต้องการจำะว่นล์(ปต้�อห้ร�อไม� เป,นต้น
28
WHILE -เกมที่ายต้�ว่เล์ขแที่นที่��จำะจำ�าก�ด 5 คำร��ง ให้ถ้ามผ(ใช่ว่�าต้องการที่ายต้�อไปเร��อยๆ ห้ร�อ
ไม� ห้ากต้องการให้ที่�าต้�อ ห้ากไม�ต้องการให้ออกจำาก loop
ส�งเกต้ว่�า ในขณีะเข�ยนโปรแกรม ไม�สามารถ้ร( ก�อนไดว่�าโปรแกรมจำะว่นล์(ปก��คำร��ง
29
แที่นที่��จำะเพ+�มจำ�านว่นรอบ เพ��อน�บจำ�านว่นรอบเห้ม�อน forก4เปล์��ยนเป,นร�บ input จำาก user ว่�าต้องการให้ที่�าต้�อห้ร�อไม�cont = input(‘……’);
n = round(rand(1)*10); i = 1 ; cont = ‘y’
30
WHILE - เกมที่ายต้�ว่เล์ข
ส�ว่นที่��ต้�างจำาก for
การต้รว่จำสอบแล์ะการห้าจำ)ดที่��ผ+ดในโปรแกรม
ในการเข�ยนโปรแกรม ม�กจำะต้องม�การต้รว่จำสอบอย(�เสมอ ว่�าโปรแกรมน��น สามารถ้ที่�างานอย�างถ้(กต้องต้ามที่��ไดออกแบบไว่ห้ร�อไม�
ซ้ำ.�งบางคำร��ง การเข�ยนโปรแกรมที่��ผ+ดพล์าด จำะที่�าให้โปรแกรมไม�สามารถ้ที่�างานต้ามที่��ไดออกแบบไว่ แล์ะจำะที่�าให้ผล์การคำ�านว่ณีผ+ดพล์าดได
31
ขอผ+ดพล์าดที่��เก+ดข.�นในการเข�ยนโปรแกรม สามารถ้แบ�งออกเป,น 2 ประเภที่ ไดแก� ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมต้�อได
ขอผ+ดพล์าดที่��สามารถ้ run โปรแกรมได แต้�ให้ผล์การคำ�านว่ณีที่��ไม�ถ้(กต้อง
32
Error ประเภที่น�� ต้รว่จำสอบไดง�าย เพราะ user ที่ราบว่�าโปรแกรมม�ขอผ+ดพล์าดเก+ดข.�นอย�างแน�นอน
Error ประเภที่น�� ต้รว่จำสอบไดยาก ด�งน��น จำ.งต้องม�การที่ดสอบ run โปรแกรมอย�างรอบคำอบ ในขณีะที่��เข�ยนโปรแกรม
การต้รว่จำสอบแล์ะการห้าจำ)ดที่��ผ+ดในโปรแกรม
ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมไดError ประเภที่น�� จำะที่�าให้โปรแกรมไม�สามารถ้
คำ�านว่ณีผล์ล์�พธ์'ได แล์ะจำะม�ขอคำว่ามเต้�อนแสดงใน command window เพ��ออธ์+บาย error ที่��เก+ดข.�น
การแกไข error ประเภที่น�� สามารถ้แกไขไดจำากการอ�านรายล์ะเอ�ยดจำากขอคำว่ามเต้�อนที่��โปรแกรมแสดง
33
ไม�ไดม�การก�าห้นดคำ�าของต้�ว่แปร ห้ร�อฟ6งก'ช่� �น y แล์ะ x ในโปรแกรม
% bug1.m
x = [3,50,75,95,110];
y = [32,65,73,68,70];
z = x+y;
disp(Z)
34
ไม�ไดม�การก�าห้นดคำ�าของต้�ว่แปร ห้ร�อฟ6งก'ช่� �น Z
Error เก+ดข.�นในไฟล์' bug1 ที่��บรรที่�ดที่�� 4
คำ�าส��งที่��เก+ด error คำ�อ คำ�าส��ง disp(Z)
ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมได
% bug1.m
x = [3,50,75,95,110];
y = [32,65,73,68,70];
z = x+y;
disp(Z)
35
Error ที่��เก+ดข.�น เก+ดจำากอะไร???ต้�ว่แปร Z ไม�เที่�าก�บ z เน��องจำาก ช่��อต้�ว่แปรใน MATLAB เป,น case sensitive
ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมได
Error ประเภที่น�� ต้รว่จำสอบไดยาก เน��องจำาก โปรแกรมสามารถ้ที่�าการคำ�านว่ณีได แต้�ผล์ล์�พธ์'จำากการคำ�านว่ณีไม�ถ้(กต้อง
สามารถ้ห้าขอผ+ดพล์าดประเภที่น��ได จำากการที่ดล์อง run โปรแกรมที่)กคำร��ง ห้ล์�งจำากที่��เข�ยน code ซ้ำ.�งคำว่รต้รว่จำสอบการที่�างานในจำ)ดต้�างๆ เช่�น จำ)ดที่��เป,นการที่�างานแบบเง��อนไข (คำ�าส��ง if) โดยป7อนคำ�า
ที่��งในกรณี�ที่��เง��อนไขเป,นจำร+ง แล์ะเง��อนไขเป,นเที่4จำ จำ)ดที่��ม�การคำ�านว่ณี การก�าห้นดคำ�า ห้ร�อการเปล์��ยนคำ�าให้
ก�บต้�ว่แปร36
ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมได
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
การก�าห้นดให้ โปรแกรมเป8ด M-Files ที่��ม�ขอผ+ดพล์าด เม��อม� debug เก+ดข.�น
37
การก�าห้นดให้ โปรแกรมห้ย)ดที่�างาน เม��อม� error เก+ดข.�น
38ก�าห้นดให้โปรแกรมห้ย)ดที่�างาน เม��อม� error เก+ดข.�น
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
การก�าห้นด break point ในบรรที่�ดที่��ต้องการต้รว่จำสอบผล์การคำ�านว่ณี โดยว่าง cursor ไว่ห้นาบรรที่�ดที่��ต้องการ break แล์ะเล์�อก icon ก�าห้นด break point
39
คำ�าส��งในการก�าห้นดห้ร�อยกเล์+ก break point
ส�ญล์�กษณี' break point
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
เม��อโปรแกรมห้ย)ด สามารถ้ต้รว่จำสอบคำ�าของต้�ว่แปรต้�างๆ ไดจำากการน�า cursor มาไว่ห้นาช่��อต้�ว่แปรที่��ต้องการที่ราบคำ�า
โปรแกรมจำะข.�น message box ที่��แสดงประเภที่ แล์ะคำ�าของต้�ว่แปรน��นๆ
40
Message box ที่��แสดงประเภที่ แล์ะคำ�าของต้�ว่แปร
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
เราสามารถ้ run โปรแกรมที่�ล์ะบรรที่�ดได โดยคำล์+กที่�� icon step
คำ�าส��ง step ใช่ในการ run โปรแกรมที่�ล์ะบรรที่�ด
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
เราสามารถ้ออกจำาก debug mode ไดดว่ยการเล์�อกที่�� tab debug แล์ะเล์�อกคำ�าส��ง Exit debug mode
42
ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม
ต้�ว่อย�าง จำงเข�ยนโปรแกรมในการห้าคำ�าคำะแนนส(งส)ดของ
น�กศึ.กษา โดยที่�� user จำะต้องก�าห้นดจำ�านว่นน�กศึ.กษาที่��จำะกรอกคำะแนน เม��อกรอกคำะแนนจำนคำรบแล์ว่ โปรแกรมจำะแสดงคำ�าคำะแนนที่��มากที่��ส)ด แล์ะแสดงคำ�าคำะแนนเฉล์��ยของน�กศึ.กษากล์)�มน�� (save ในช่��อ maxscore.m)
43
ผล์ล์�พธ์'จำากการ run โปรแกรม
ต้�ว่อย�าง: maxscore.m
44
ต้�ว่อย�าง จำากไฟล์' maxscore.m ในน�กศึ.กษาที่ดล์อง run
โปรแกรมในเง��อนไขต้�างๆ ด�งน�� ก�าห้นด break point ในบรรที่�ดที่�� 9 ที่)กคำร��งที่��โปรแกรมห้ย)ดที่�างาน ให้น�กศึ.กษาส�งเกต้คำ�าของ
ต้�ว่แปรต้�างๆ ที่ดล์อง run โปรแกรม ที่�ล์ะบรรที่�ด โดยใช่คำ�าส��ง step
พรอมที่��งส�งเกต้คำ�าของต้�ว่แปรที่��เปล์��ยนไป
45