Upload
sarocha-makranit
View
233
Download
0
Tags:
Embed Size (px)
Citation preview
บทท�� 4การเขี�ยนคำ�าสั่��ง
คำวบคำ�มแบบวนซ้ำ��า
น�พจน�ทางคำณิ�ตศาสั่ตร�
ทางคณิ�ตศาสตร์ นั้� �นั้เป็�นั้นั้�พจนั้ ท��ใช้�ในั้การ์ค�านั้วณิ ซึ่��งนั้�พจนั้ ทางคณิ�ตศาสตร์ นั้� �นั้จะมี�ร์"ป็แบบเหมี&อนั้ก�บสมีการ์คณิ�ตศาสตร์ แต(จะป็ร์ะกอบไป็ด้�วย ค(าคงท��หร์&อต�วแป็ร์ ซึ่��งเร์�ยกอ�กอย(างว(า ต�วถู"กด้�าเนั้�นั้การ์ “ ” (Operand) แล้�วเช้&�อมีก�นั้ด้�วย
เคร์&�องหมีายทางคณิ�ตศาสตร์ หร์&อเร์�ยกอ�กอย(างว(า ต�วด้�าเนั้�นั้การ์ (Operator) นั้��นั้เอง ร์"ป็แบบ [ต�วถู"กด้�าเนั้�นั้การ์ต�วแร์ก] [ต�วด้�าเนั้�นั้การ์] [ต�วถู"กด้�าเนั้�นั้การ์ต�วท��สอง] ต�วอย(าง A+B 2+A
ต�วดำ�าเน�นการทางคำณิ�ตศาสั่ตร� ต�วด้�าเนั้�นั้การ์ทางคณิ�ตศาสตร์ ของภาษา C มี�ด้�งนั้�� ตารางท�� 4.1 แสด้งต�วด้�าเนั้�นั้การ์ทางคณิ�ตศาสตร์
ต�วดำ�าเน�นการ คำวามหมาย + - * / % ++ --
บวก ล้บ ค"ณิ หาร์
หาร์เอาเศษหร์&อ Modulus เพ��มีค(าคร์��งล้ะ 1 ล้ด้ค(าคร์��งล้ะ 1
การ์สร์�างนั้�พจนั้ ทางคณิ�ตศาสตร์ ถู�าเป็�นั้นั้�พจนั้ ท��มี�ต�วถู"กด้�าเนั้�นั้การ์เพ�ยง 2 ต�วจะไมี(มี�ป็1ญหาอะไร์ แต(ถู�าเก�ด้มี�ต�วถู"กด้�าเนั้�นั้การ์มีากกว(า 2 ต�วข��นั้ไป็ ผู้"�ใช้�จะต�องค�านั้�งถู�งล้�าด้�บความีส�าค�ญของต�วด้�าเนั้�นั้การ์ด้�วย มี�ฉะนั้��นั้อาจจะได้�ผู้ล้ล้�พธ์ ท��ไมี(ตร์งตามีความีต�องการ์ได้�
ต�วอย(างการ์ด้�าเนั้�นั้การ์ทางคณิ�ตศาสตร์
ผู้"�ใช้�ต�องการ์ให�เอา 2 บวกก�บ 3 แล้�วนั้�าไป็ค"ณิด้�วย 5 ซึ่��งค�าตอบท��ผู้"�ใช้�ต�องการ์ ค&อ 25 แต(ถู�าผู้"�ใช้�เข�ยนั้นั้�พจนั้ เป็�นั้ 2 + 3 * 5 ผู้ล้ล้�พธ์ ท��ได้�จะเท(าก�บ 17 เพร์าะภาษา C จะค�ด้ตามีล้�าด้�บความีส�าค�ญของต�วด้�าเนั้�นั้การ์ (Precedence) ด้�งนั้�� เอา 3 ค"ณิก�บ 5 ได้� 15 แล้�วนั้�าไป็บวกก�บ 2 ได้� 17 ซึ่��งเป็�นั้ค�าตอบท��ไมี(ตร์งตามีความีต�องการ์ เพร์าะฉะนั้��นั้ผู้"�ใช้�จ�งต�องร์ะว�งเร์&�องนั้��อย(างมีาก ว�ธ์�การ์แก�ไขก6สามีาร์ถูท�าได้�โด้ยการ์ใช้�วงเล้6บเข�ามีาช้(วย ซึ่��งวงเล้6บจะมี�ล้�าด้�บความีส�าค�ญส"งท��ส8ด้ แล้ะเมี&�อล้�าด้�บความีส�าค�ญเท(าก�นั้ ให�ด้"ในั้ตาร์างโด้ยเร์�ยงจากซึ่�ายไป็ขวา ซึ่��งถู�ามี�หล้ายวงเล้6บซึ่�อนั้ก�นั้ ภาษา C จะค�ด้จากวงเล้6บในั้ออกมีา ด้�งนั้��นั้ถู�าต�วอย(างด้�านั้บนั้จะเข�ยนั้นั้�พจนั้ ให�ได้�ผู้ล้ล้�พธ์ ตามีต�องการ์ จะต�องเข�ยนั้ด้�งนั้�� (2 + 3) * 5 ผู้ล้ล้�พธ์ ท��ได้�จะเป็�นั้ 2 บวกก�บ 3 ได้� 5 แล้�วค"ณิด้�วย 5 จะเท(าก�บ 25
ตารางลำ�าดำ�บคำวามสั่�าคำ�ญขีองต�วดำ�าเน�นการทางคำณิ�ตศาสั่ตร�
ต�วดำ�าเน�นการ ลำ�าดำ�บคำวามสั่�าคำ�ญ++ , -- 16
- (เคร์&�องหมีายล้บหนั้�าต�วเล้ข)
15
* , / ,% 13
+ , - 12
ต�วอย%างน�พจน�ทางคำณิ�ตศาสั่ตร� แลำะว�ธี�การคำ�านวณิ
น�พจน� ว�ธี�การคำ�านวณิ10/2*3 เอา 10 หาร์ 2 ได้� 5 แล้�วค"ณิด้�วย 3
จะได้�ผู้ล้ล้�พธ์ 15
12*2+(2*6) เอา 2 ค"ณิ 6 ได้� 12 มีาค"ณิ 2 ได้� 24 จากนั้��นั้นั้�า 24มีาบวก 12 จะได้�ผู้ล้ล้�พธ์ 36
ต�วดำ�าเน�นการในการก�าหนดำคำ%า ต�วด้�าเนั้�นั้การ์ท��ใช้�ในั้การ์ก�าหนั้ด้ค(านั้��นั้จะเป็�นั้
เคร์&�องหมีาย = การ์ท�างานั้ของต�วด้�าเนั้�นั้การ์นั้��จะท�าการ์นั้�าค(าท��อย"(ทางด้�านั้ขวาของต�วด้�าเนั้�นั้การ์ไป็ เก6บไว�ในั้ต�วแป็ร์ทางด้�านั้ซึ่�ายของต�วด้�าเนั้�นั้การ์ส��งท��อย"(ด้�านั้ขวาของต�วด้�าเนั้�นั้ การ์นั้��นั้อาจจะเป็�นั้นั้�พจนั้ ทางคณิ�ตศาสตร์ หร์&อจะเป็�นั้ต�วแป็ร์ก6ได้� ร์"ป็แบบ [ต�วแป็ร์] = [นั้�พจนั้ ]Simple Assignments (การ์ก�าหนั้ด้ค(าแบบง(าย) Simple Assignments จะมี�ร์"ป็แบบเหมี&อนั้ก�บร์"ป็แบบด้�านั้บนั้ หร์&อเหมี&อนั้ก�บสมีการ์ทางคณิ�ตศาสตร์ ท��วไป็
ต�วอย(าง A = 2 Sum = 2 + A Sum = (2 * 5) + 6 ต�วอย(าง Simple Assignments
คำ%าขีอง x คำ%าขีอง y น�พจน� คำ%าขีองน�พจน� ผลำลำ�พธี�ขีองน�พจน� 10 5 x=y +2 7 x=7 10 5 x=x /y 2 x=2 10 5 x=y % 4 1 x=1
ต�วอย(าง A = 2 Sum = 2+A Sum = (2*5) +6
ต�วอย(าง Simple Assignments
โป็ร์แกร์มีภาษาซึ่� การ์ก�าหนั้ด้ให�ก�บต�วแป็ร์ในั้ล้�กษณิะต(าง ๆ
ตาราง คำวามหมายขีองต�วดำ�าเน�นการ
น�พจน�แบบ Compound เท�ยบเท%าก�บน�พจน�แบบ Simple x * = y x = x* y X / = y X = x/y
X % = y X =x %y X + = y X = x+y X - =y X =x-y
โปรแกรมภาษาซ้ำ� ผลำขีองต�วดำ�าเน�นการแบบผสั่ม
ต�วดำ�าเน�นการ ++ แลำะ --
ต�วด้�าเนั้�นั้การ์ ++ จะท�าการ์เพ��มีค(าของต�วแป็ร์อ�ก 1 ส(วนั้ -- นั้��นั้จะท�าการ์ล้ด้ค(าของต�วแป็ร์ล้ง 1 ซึ่��งการ์สร์�างนั้�พจนั้ ด้�วยต�วด้�าเนั้�นั้การ์ 2 ต�วนั้�� จะมี� 2 แบบ ค&อ
1.แบบ POSTFIX ร์"ป็แบบ [ต�วแป็ร์] [ต�วด้�าเนั้�นั้การ์] ต�วอย(าง A ++ A –ข��นั้ตอนั้การ์ท�างานั้ของนั้�พจนั้ แบบ POSTFIX
1. ให�x = a 2. จากนั้��นั้จะท�าการ์a = a + 1 หร์&อ เมี&�อนั้�พจนั้ เป็�นั้ y = b-- จะมี�ข��นั้ตอนั้การ์ท�าการ์ ด้�งนั้�� 1. ให�y = b 2. จากนั้��นั้จะท�าการ์ b = b – 1
คำ%าขีองa ตอนแรก น�พจน� ผลำลำ�พธี�ขีองน�พจน� คำ%าขีองa ตอนหลำ�ง 10 a++ 10 11 10 a-- 10 9
2.แบบ PREFIX ร์"ป็แบบ
[ต�วด้�าเนั้�นั้การ์] [ต�วแป็ร์]ต�วอย(าง ++a--a
ขี��นตอนการท�างานขีองน�พจน�แบบ Prefix เม.�อน�พจน� x = ++a 1. จากนั้��นั้จะท�าการ์ a = a + 1 2. ให� x = a หร์&อ เมี&�อนั้�พจนั้ เป็�นั้ y = --b จะมี�ข� �นั้ตอนั้การ์ท�าการ์ ด้�งนั้�� 1. จากนั้��นั้จะท�าการ์ b = b-1 2. ให�y = b
คำ%าขีองa ตอนแรก น�พจน� ผลำลำ�พธี�ขีองน�พจน� คำ%าขีองa ตอนหลำ�ง 10 ++a 11 11 10 --a 9 9
โปรแกรมภาษาซ้ำ�แสั่ดำงผลำขีองต�วดำ�าเน�นการ++ในแบบ PREFIX
คำ�าสั่��งคำวบคำ�มแบบวนซ้ำ��า การ์วนั้ซึ่��า • (LOOP) หมีายถู�ง การ์ก�าหนั้ด้เง&�อนั้ไขเพ&�อให�โป็ร์แกร์มีท�างานั้ในั้ STATEMENT เด้�มีมีากกว(า 1คร์��ง โด้ยจ�านั้วนั้คร์��งของการ์ท�างานั้จะเป็�นั้ไป็ตามีเง&�อนั้ไขท��ก�าหนั้ด้ไว� ค�าส��งแบบวนั้ซึ่��ามี� • 3ป็ร์ะเภท ด้�งนั้�� ค�าส��งวนั้ซึ่��าแบบ – FOR
– ค�าส��งวนั้ซึ่��าแบบ WHILE– ค�าส��งวนั้ซึ่��าแบบ DO...WHILE
คำ�าสั่��ง FOR
for เป็�นั้ค�าส��งท��ส� �งให�โป็แกร์มีมี�การ์ท�างานั้ซึ่��า ๆ วนั้ล้"ป็จนั้กว(าเง&�อนั้ไขท��ก�าหนั้ด้ไว�เป็�นั้เท6จ จ�งออกจากค�าส��ง for ไป็ท�าค�าส��งถู�ด้ไป็ ควร์ใช้�ค�าส��ง for ในั้กร์ณิ�ท��ทร์าบจ�านั้วนั้ร์อบของการ์ท�างานั้
ร/ปแบบการใช้1คำ�าสั่��ง for for (expression1; expression2; expression3)
statement; หร์&อfor (expression1; expression2; expression3){ statement(s);}
ลำ�กษณิะการท�างานขีองคำ�าสั่��ง for
ร์"ป็แบบท��วไป็ for ( นั้�พจนั้ ท��1 ; นั้�พจนั้ ท��2 ; นั้�พจนั้ ท�� 3 ) {
ค�าส��งวนั้ร์อบ; …….
}
เป็�นั้ค�าส��งท��ใช้�ในั้การ์ควบค8มีให�มี�การ์วนั้ร์อบค�าส��งหล้าย ๆร์อบ โด้ย นั้�พจนั้ ท�1 ค&อการ์ก�าหนั้ด้ค(าเร์��มีต�นั้ให�ก�บต�วแป็ร์ท��ใช้�ในั้การ์วนั้ร์อบ
นั้�พจนั้ ท��2 เป็�นั้การ์เป็ร์�ยบเท�ยบก(อนั้ท��จะวนั้ร์อบถู�าเง&�อนั้ไขของนั้�พจนั้ เป็�นั้จร์�งจะมี�การ์ท�างานั้ตามีค�าส��งวนั้ร์อบ นั้�พจนั้ ท��3 เป็�นั้ค�าส��งในั้การ์ก�าหนั้ด้ค(าท��จะเป็ล้��ยนั้แป็ล้งไป็ในั้แต(ล้ะร์อบ
ต�วอย%าง โป็ร์แกร์มี for1.c
#include <stdio.h> #include <conio.h> int counter ; char word[20] = "Bodindecha"; main() { clrscr(); for (counter = 5;counter<=10;counter = counter+1) printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word); }
การท�าซ้ำ��าแบบ WHILE
while เป็�นั้ค�าส��งให�มี�การ์ท�าซึ่��าเป็�นั้ร์อบ ๆ (loop) ล้�กษณิะการ์ท�างานั้ท�านั้องเด้�ยวก�บค�าส��ง for แต(ต(างก�นั้ตร์งท��ไมี(ทร์าบจ�านั้วนั้ร์อบท��แนั้(นั้อนั้ แต(ต�องมี�เง&�อนั้ไขท��เป็�นั้เท6จจ�งจะออกจากค�าส��ง while ได้�มี�ฉะนั้��นั้จะมี�ป็1ญหาท��โป็ร์แกร์มีท�างานั้แบบวนั้ซึ่��าแบบไมี(มี�ท��ส��นั้ส8ด้ (endless loop)
การท�าซ้ำ��าแบบ while อาจเข�ยนั้ผู้�งงานั้ ด้�งร์"ป็
ลำ�กษณิะการท�างานขีองคำ�าสั่��ง while
คำ�าสั่��ง WHILE ม�ร/ปแบบ ดำ�งน��while (นั้�พจนั้ ทด้สอบเง&�อนั้ไข) statement ; หร์&อ while (นั้�พจนั้ ทด้สอบเง&�อนั้ไข)
{ ค�าส� �งท��1; ค�าส� �งท��2; ... ค�าส� �งส8ด้ท�าย; } โด้ย while จะท�าการ์ท�าซึ่��าต(อไป็เมี&�อนั้�พจนั้ ทด้สอบเง&�อนั้ไขให�ผู้ล้ล้�พธ์ เป็�นั้จร์�งแล้ะท�าต(อจนั้กร์ะท��งผู้ล้ล้�พธ์ ของนั้�พจนั้ ทด้สอบเง&�อนั้ไขเป็�นั้เท6จ
คำ�าสั่��งท�าซ้ำ��าหร.อวนรอบ DO - WHILE
do while เป็�นั้ค�าส��งให�มี�การ์ท�าซึ่��าเป็�นั้ร์อบ ๆ (loop) ล้�กษณิะการ์ท�างานั้ท�านั้องเด้�ยวก�บค�าส��ง while แต(ต(างก�นั้ตร์งท��ค�าส��งนั้��จะมี�การ์ท�างานั้ตามีค�าส��งไป็ 1 ร์อบ ก(อนั้ท��จะทด้สอบเง&�อนั้ไข ถู�าเง&�อนั้ไขท��เป็�นั้จร์�งจะท�างานั้ต(อไป็ ถู�าเง&�อนั้ไขเป็�นั้เท6จจ�งจะออกจากค�าส��ง do while ค�าส��งนั้��ก6เช้(นั้เด้�ยวก�นั้จะต�องก�าหนั้ด้ให�มี�โอกาสท��เง&�อนั้ไขเป็�นั้เท6จได้� มี�ฉะนั้��นั้จะมี�ป็1ญหาท��โป็ร์แกร์มีท�างานั้แบบวนั้ซึ่��าแบบไมี(มี�ท��ส��นั้ส8ด้ (endless loop) กร์ณิ�ท��เง&�อนั้ไขเป็�นั้เท6จเพ�ยงอย(างเด้�ยวจะมี�การ์ท�างานั้ 1 ร์อบ ก(อนั้ออกจากการ์ท�าซึ่��า
ลำ�กษณิะการท�างานขีองคำ�าสั่��ง do-while
กรณิ�ศ2กษา การใช้1คำ�าสั่��งคำวบคำ�มวนซ้ำ��า การ์ใช้�ค�าส��ง while เพ&�อวนั้ค�านั้วณิค(าสะสมีต�วเล้ข
1 ถู�ง 10 แล้ะหาค(าเฉล้��ย แล้�วแสด้งผู้ล้ออกจอภาพ
ผู้ล้ล้�พธ์ ท��ได้�จากโป็ร์แกร์มี
ค�าอธ์�บายโป็ร์แกร์มี สามีาร์ถูอธ์�บายการ์ท�างานั้ของโป็ร์แกร์มีท��ส�าค�ญ ๆ ได้�ด้�งนั้��- บร์ร์ท�ด้ท�� 8 ค�าส��ง while (n < 11) เพ&�อควบค8มีการ์ท�างานั้ของโป็ร์แกร์มีให�ท�างานั้ซึ่��า ๆ ก�นั้ โด้ยการ์ท�างานั้ของค�าส��ง while จะตร์วจสอบเง&�อนั้ไข n < 11 เป็�นั้จร์�งหร์&อเท6จ ถู�าเป็�นั้จร์�งจะท�างานั้ตามีค�าส��งท��อย"(ภายในั้ loop while ค&อ บร์ร์ท�ด้ท�� 10 แล้ะ 11 จากนั้��นั้จะกล้�บมีาตร์วจสอบเง&�อนั้ไขใหมี( ท�าอย(างนั้��ซึ่��า ๆ จนั้กว(าตร์วจสอบเง&�อนั้ไข n < 11 เป็�นั้เท6จ จ�งจะออกจาก loop while แล้�วไป็ท�าค�าส��งบร์ร์ท�ด้ท�� 13 ถู�ง ค�าส��งบร์ร์ท�ด้ท�� 18
- บร์ร์ท�ด้ท�� 10 แล้ะ 11 เป็�นั้ค�าส��งท��โป็ร์แกร์มีจะท�างานั้ภายหล้�งจากตร์วจสอบเง&�อนั้ไข while แล้�วเป็�นั้จร์�ง นั้��นั้ค&อ ค�านั้วณิค(าสะสมีของต�วแป็ร์ sum แล้ะ เพ��มีค(า n ท�ล้ะ 1 ตามีล้�าด้�บ
- บร์ร์ท�ด้ท�� 13 ถู�ง 18 เป็�นั้ค�าส��งท��โป็ร์แกร์มีจะท�างานั้ภายหล้�งจากตร์วจสอบเง&�อนั้ไข while แล้�วเป็�นั้เท6จ ค&อ ล้ด้ค(าต�วแป็ร์ n ล้ง 1 แล้�วค�านั้วณิค(าเฉล้��ยเก6บไว�ท��ต�วแป็ร์ avg แล้ะพ�มีพ ค(าต�วแป็ร์ n, sum แล้ะ avg แสด้งท��จอภาพ พร์�อมีก�บพ�มีพ ข�อความีให�กด้ค�ย ใด้ ๆ เพ&�อกล้�บส"(โป็ร์แกร์มี ส8ด้ท�ายจะหย8ด้ร์อร์�บค(าใด้ ๆ จากค�ย บอร์ ด้ เช้(นั้ ถู�ากด้ enter ก6จะกล้�บส"(โป็ร์แกร์มี
แหลำ%งอ1างอ�ง
http://courseware.bodin.ac.th/computer/AdvancedLevel4/programming/C_language/4.htm
http://202.143.152.6/files/1106301616560373_1201240883219.ppt
http://158.108.103.7:12222/~boonchoo/images/stories/resources/pp254/5_loop.pdf
ร์ายช้&�อสมีาช้�ก กล้8(มีท�� 4 1.นั้างสาวป็ร์�ยาภร์ณิ แสงทว� เล้ขท�� 14 2.นั้างสาวต�นั้หยง ส8คนั้ธ์า เล้ขท�� 26 3.นั้างสาวท�มีร์�นั้ทร์ ผู้"กส� เล้ขท�� 27 4.นั้างสาวร์�ตต�กาล้ ข�าคมี เล้ขท�� 28 5.นั้างสาวสโร์ช้า มีากร์ะนั้�ตย เล้ขท�� 33 6.นั้างสาวจ8ฑาร์�ตนั้ ล้��มีทอว เล้ขท�� 34 ช้� �นั้มี�ธ์ยมีศ�กษาป็;ท�� 6/2 เสนั้อ ค8ณิคร์"ทร์งศ�กด้�< โพธ์�<เอ��ยมี
โร์งเร์�ยนั้เฉล้�มีพร์ะเก�ยร์ต�สมีเด้6จพร์ะศร์�นั้คร์�นั้ทร์ กาญจนั้บ8ร์�