259201 computer programming for engineers

45
1 259201 Computer Programming for Engineers Week 5 กกกกกก For -While

Upload: mahala

Post on 20-Jan-2016

67 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: 259201 Computer Programming for Engineers

1

259201Computer Programming

for Engineers

Week 5การใช้� For -While

Page 2: 259201 Computer Programming for Engineers

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 คำร��ง จำะที่�าอย�างไร?

Page 3: 259201 Computer Programming for Engineers

3

คำ�าต้อบ : ใช่ Forไฟล์' for1.m

Page 4: 259201 Computer Programming for Engineers

4

FOR

for i=1:1000 disp(‘Programming is fun.’);end

ถ้าต้องแสดงประโยคำน�� 1000 คำร��ง ที่�าไดโดย

แกที่��เด�ยว่

Page 5: 259201 Computer Programming for Engineers

5

FOR

ร(ปแบบการใช่งาน (Syntax)forfor index = index =expressionexpression

ช้�ดคำ�าสั่ �งใน ช้�ดคำ�าสั่ �งใน looploop

endend

Page 6: 259201 Computer Programming for Engineers

6

For - ต้�ว่อย�างการใช่งานไฟล์' for2.m

Page 7: 259201 Computer Programming for Engineers

7

Flowchart ของตั วอย่�างน��

i = 1

i<=15?

Display i

True

False

i = i + 3

1. ก�าหนดคำ�าเร��มตั�น

2. เง��อนไขการเข�าลู ป

3. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบ

ในแตั�ลูะรอบ

Page 8: 259201 Computer Programming for Engineers

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);

Page 9: 259201 Computer Programming for Engineers

9

เกมที่าย่ตั วเลูขส)�มต้�ว่เล์ขที่��ม�คำ�าอย(�ในช่�ว่ง (0,10) แล์ว่ว่น

รอบร�บคำ�าจำากคำ�ย'บอร'ดไม�เก+น 5 คำร��ง ห้ากภายใน 5 คำร��งที่ายถ้(ก จำะแสดง

ขอคำว่าม You got it ห้ากที่ายไม�ถ้(กในแสดงขอคำว่าม You failed. Please try again next time.

Page 10: 259201 Computer Programming for Engineers

10

n = round(rand(1)*10); i = 1

Page 11: 259201 Computer Programming for Engineers

11

เกมที่าย่ตั วเลูข (guessNum.m)

Page 12: 259201 Computer Programming for Engineers

12

ผลูลู พธ์)เกมที่าย่ตั วเลูข

Page 13: 259201 Computer Programming for Engineers

13

หาผลูบวกสั่ะสั่มของเลูข 1 ถึ+ง n เข�ยน m-file ช่��อ

cummulativeSum ห้าผล์บว่กสะสมของเล์ข 1 ถ้.ง

n

Page 14: 259201 Computer Programming for Engineers

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.

Page 15: 259201 Computer Programming for Engineers

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

Page 16: 259201 Computer Programming for Engineers

16

หาคำ�าเฉลู��ย่ของตั วเลูข 5 เลูข (cavg.m)

Page 17: 259201 Computer Programming for Engineers

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

Page 18: 259201 Computer Programming for Engineers

18

For ซ้�อนก น

ในห้ล์ายกรณี�ที่��จำะต้องม�การใช่ for ซ้ำอนก�น เช่�น ถ้าต้องการแสดงส(ต้รคำ(ณีแม� 2 ถ้.ง 6 โดยต้�ว่คำ(ณีม�คำ�า 1 ถ้.ง 12

ในกรณี�น�� for ล์(ปช่��นนอกใช่ต้�ว่แปร base ม�คำ�าว่+�งจำาก 2 ถ้.ง 6 ส�ว่น for ล์(ปช่��นในใช่ต้�ว่แปร mul ม�คำ�าว่+�งจำาก 1 ถ้.ง 12

Page 19: 259201 Computer Programming for Engineers

19

ตั วอย่�าง : สั่ ตัรคำ ณ

for base = 2:6 for mul = 1:12

fprintf(‘%d x %d = %d\n’, base, mul, base * mul); endend

แบบฝึ0กห ด : ที่ดล์องเข�ยน Flowchart ของโปรแกรมน��

Page 20: 259201 Computer Programming for Engineers

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

Page 21: 259201 Computer Programming for Engineers

21

ตั วอย่�าง : For ซ้�อนก น ถ้าต้องการให้แสดงผล์ด�งต้�อไปน�� โดยแกไขโปรแกรมได

เฉพาะ 2 บรรที่�ดแรก จำะต้องแกไขอย�างไร?

1 2 3 4 51 2 3 41 2 3 1 2 1

Page 22: 259201 Computer Programming for Engineers

22

การใช้� WHILE

นอกจำากสามารถ้ว่นซ้ำ��าการที่�างาน (Loop) ไดดว่ยการใช่ For แล์ว่ ย�งสามารถ้ใช่ While ได

การใช่ While จำะต้องม�การก�าห้นดเง��อนไขของการว่นที่�างาน ถ้าเป,นจำร+งให้ที่�างาน (เขาไปใน Loop) อ�กคำร��งไปเร��อยๆ ถ้าเป,นเที่4จำให้ห้ย)ดการว่นที่�างาน (ออกจำากล์(ป)

Page 23: 259201 Computer Programming for Engineers

23

WHILE

ร(ปแบบการใช่งาน (Syntax)whilewhile เง��อนไขเง��อนไข คำ�าสั่ �งคำ�าสั่ �งendend

Page 24: 259201 Computer Programming for Engineers

24

Flowchart ของตั วอย่�างน��

i = 1

i<=5?

Display ‘Programming is fun’

True

False

i = i + 1

1. ก�าหนดคำ�าเร��มตั�น

2. เง��อนไขการเข�าลู ป

3. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบ

ในแตั�ลูะรอบ

Page 25: 259201 Computer Programming for Engineers

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. การปร บคำ�าตั วแปรที่��ใช้�ที่ดสั่อบใน

แตั�ลูะรอบ

Page 26: 259201 Computer Programming for Engineers

26

แบบฝึ0กห ด

for base = 2:6 for mul = 1:12

fprintf(‘%d x %d = %d\n’, base, mul, base * mul); endend

จำากต้�ว่อย�างโปรแกรมส(ต้รคำ(ณีที่��ใช่ For ซ้ำอนก�นสองช่��น

เข�ยนให้ม�โดยการใช่ While แที่นไดอย�างไร?

Page 27: 259201 Computer Programming for Engineers

27

WHILE

ในการใช่งานที่��ผ�านมา การว่นล์(ปโดยใช่ For ห้ร�อ While จำะต้องร( ก�อนว่�าจำะม�การว่นล์(ปก��รอบ

แต้�ส�าห้ร�บในกรณี�ที่��ต้องการที่�างานซ้ำ��าๆ แต้�ไม�ร( ล์�ว่งห้นาว่�าจำะว่นก��รอบ

เช่�น จำะให้ว่นล์(ปไปเร��อยๆ โดยให้ม�การถ้ามผ(ใช่ว่�าต้องการจำะว่นล์(ปต้�อห้ร�อไม� เป,นต้น

Page 28: 259201 Computer Programming for Engineers

28

WHILE -เกมที่ายต้�ว่เล์ขแที่นที่��จำะจำ�าก�ด 5 คำร��ง ให้ถ้ามผ(ใช่ว่�าต้องการที่ายต้�อไปเร��อยๆ ห้ร�อ

ไม� ห้ากต้องการให้ที่�าต้�อ ห้ากไม�ต้องการให้ออกจำาก loop

ส�งเกต้ว่�า ในขณีะเข�ยนโปรแกรม ไม�สามารถ้ร( ก�อนไดว่�าโปรแกรมจำะว่นล์(ปก��คำร��ง

Page 29: 259201 Computer Programming for Engineers

29

แที่นที่��จำะเพ+�มจำ�านว่นรอบ เพ��อน�บจำ�านว่นรอบเห้ม�อน forก4เปล์��ยนเป,นร�บ input จำาก user ว่�าต้องการให้ที่�าต้�อห้ร�อไม�cont = input(‘……’);

n = round(rand(1)*10); i = 1 ; cont = ‘y’

Page 30: 259201 Computer Programming for Engineers

30

WHILE - เกมที่ายต้�ว่เล์ข

ส�ว่นที่��ต้�างจำาก for

Page 31: 259201 Computer Programming for Engineers

การต้รว่จำสอบแล์ะการห้าจำ)ดที่��ผ+ดในโปรแกรม

ในการเข�ยนโปรแกรม ม�กจำะต้องม�การต้รว่จำสอบอย(�เสมอ ว่�าโปรแกรมน��น สามารถ้ที่�างานอย�างถ้(กต้องต้ามที่��ไดออกแบบไว่ห้ร�อไม�

ซ้ำ.�งบางคำร��ง การเข�ยนโปรแกรมที่��ผ+ดพล์าด จำะที่�าให้โปรแกรมไม�สามารถ้ที่�างานต้ามที่��ไดออกแบบไว่ แล์ะจำะที่�าให้ผล์การคำ�านว่ณีผ+ดพล์าดได

31

Page 32: 259201 Computer Programming for Engineers

ขอผ+ดพล์าดที่��เก+ดข.�นในการเข�ยนโปรแกรม สามารถ้แบ�งออกเป,น 2 ประเภที่ ไดแก� ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมต้�อได

ขอผ+ดพล์าดที่��สามารถ้ run โปรแกรมได แต้�ให้ผล์การคำ�านว่ณีที่��ไม�ถ้(กต้อง

32

Error ประเภที่น�� ต้รว่จำสอบไดง�าย เพราะ user ที่ราบว่�าโปรแกรมม�ขอผ+ดพล์าดเก+ดข.�นอย�างแน�นอน

Error ประเภที่น�� ต้รว่จำสอบไดยาก ด�งน��น จำ.งต้องม�การที่ดสอบ run โปรแกรมอย�างรอบคำอบ ในขณีะที่��เข�ยนโปรแกรม

การต้รว่จำสอบแล์ะการห้าจำ)ดที่��ผ+ดในโปรแกรม

Page 33: 259201 Computer Programming for Engineers

ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมไดError ประเภที่น�� จำะที่�าให้โปรแกรมไม�สามารถ้

คำ�านว่ณีผล์ล์�พธ์'ได แล์ะจำะม�ขอคำว่ามเต้�อนแสดงใน command window เพ��ออธ์+บาย error ที่��เก+ดข.�น

การแกไข error ประเภที่น�� สามารถ้แกไขไดจำากการอ�านรายล์ะเอ�ยดจำากขอคำว่ามเต้�อนที่��โปรแกรมแสดง

33

ไม�ไดม�การก�าห้นดคำ�าของต้�ว่แปร ห้ร�อฟ6งก'ช่� �น y แล์ะ x ในโปรแกรม

Page 34: 259201 Computer Programming for Engineers

% 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 โปรแกรมได

Page 35: 259201 Computer Programming for Engineers

% 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 โปรแกรมได

Page 36: 259201 Computer Programming for Engineers

Error ประเภที่น�� ต้รว่จำสอบไดยาก เน��องจำาก โปรแกรมสามารถ้ที่�าการคำ�านว่ณีได แต้�ผล์ล์�พธ์'จำากการคำ�านว่ณีไม�ถ้(กต้อง

สามารถ้ห้าขอผ+ดพล์าดประเภที่น��ได จำากการที่ดล์อง run โปรแกรมที่)กคำร��ง ห้ล์�งจำากที่��เข�ยน code ซ้ำ.�งคำว่รต้รว่จำสอบการที่�างานในจำ)ดต้�างๆ เช่�น จำ)ดที่��เป,นการที่�างานแบบเง��อนไข (คำ�าส��ง if) โดยป7อนคำ�า

ที่��งในกรณี�ที่��เง��อนไขเป,นจำร+ง แล์ะเง��อนไขเป,นเที่4จำ จำ)ดที่��ม�การคำ�านว่ณี การก�าห้นดคำ�า ห้ร�อการเปล์��ยนคำ�าให้

ก�บต้�ว่แปร36

ขอผ+ดพล์าดที่��ไม�สามารถ้ run โปรแกรมได

Page 37: 259201 Computer Programming for Engineers

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

การก�าห้นดให้ โปรแกรมเป8ด M-Files ที่��ม�ขอผ+ดพล์าด เม��อม� debug เก+ดข.�น

37

Page 38: 259201 Computer Programming for Engineers

การก�าห้นดให้ โปรแกรมห้ย)ดที่�างาน เม��อม� error เก+ดข.�น

38ก�าห้นดให้โปรแกรมห้ย)ดที่�างาน เม��อม� error เก+ดข.�น

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

Page 39: 259201 Computer Programming for Engineers

การก�าห้นด break point ในบรรที่�ดที่��ต้องการต้รว่จำสอบผล์การคำ�านว่ณี โดยว่าง cursor ไว่ห้นาบรรที่�ดที่��ต้องการ break แล์ะเล์�อก icon ก�าห้นด break point

39

คำ�าส��งในการก�าห้นดห้ร�อยกเล์+ก break point

ส�ญล์�กษณี' break point

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

Page 40: 259201 Computer Programming for Engineers

เม��อโปรแกรมห้ย)ด สามารถ้ต้รว่จำสอบคำ�าของต้�ว่แปรต้�างๆ ไดจำากการน�า cursor มาไว่ห้นาช่��อต้�ว่แปรที่��ต้องการที่ราบคำ�า

โปรแกรมจำะข.�น message box ที่��แสดงประเภที่ แล์ะคำ�าของต้�ว่แปรน��นๆ

40

Message box ที่��แสดงประเภที่ แล์ะคำ�าของต้�ว่แปร

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

Page 41: 259201 Computer Programming for Engineers

เราสามารถ้ run โปรแกรมที่�ล์ะบรรที่�ดได โดยคำล์+กที่�� icon step

คำ�าส��ง step ใช่ในการ run โปรแกรมที่�ล์ะบรรที่�ด

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

Page 42: 259201 Computer Programming for Engineers

เราสามารถ้ออกจำาก debug mode ไดดว่ยการเล์�อกที่�� tab debug แล์ะเล์�อกคำ�าส��ง Exit debug mode

42

ว่+ธ์�การต้รว่จำสอบการที่�างานของโปรแกรม

Page 43: 259201 Computer Programming for Engineers

ต้�ว่อย�าง จำงเข�ยนโปรแกรมในการห้าคำ�าคำะแนนส(งส)ดของ

น�กศึ.กษา โดยที่�� user จำะต้องก�าห้นดจำ�านว่นน�กศึ.กษาที่��จำะกรอกคำะแนน เม��อกรอกคำะแนนจำนคำรบแล์ว่ โปรแกรมจำะแสดงคำ�าคำะแนนที่��มากที่��ส)ด แล์ะแสดงคำ�าคำะแนนเฉล์��ยของน�กศึ.กษากล์)�มน�� (save ในช่��อ maxscore.m)

43

ผล์ล์�พธ์'จำากการ run โปรแกรม

Page 44: 259201 Computer Programming for Engineers

ต้�ว่อย�าง: maxscore.m

44

Page 45: 259201 Computer Programming for Engineers

ต้�ว่อย�าง จำากไฟล์' maxscore.m ในน�กศึ.กษาที่ดล์อง run

โปรแกรมในเง��อนไขต้�างๆ ด�งน�� ก�าห้นด break point ในบรรที่�ดที่�� 9 ที่)กคำร��งที่��โปรแกรมห้ย)ดที่�างาน ให้น�กศึ.กษาส�งเกต้คำ�าของ

ต้�ว่แปรต้�างๆ ที่ดล์อง run โปรแกรม ที่�ล์ะบรรที่�ด โดยใช่คำ�าส��ง step

พรอมที่��งส�งเกต้คำ�าของต้�ว่แปรที่��เปล์��ยนไป

45