15
= C programming By…iamchmmy = บทที9 Operators หน้า 1

บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 1

Page 2: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 2

ตวด าเนนการ (Operators) ในการเขยนโปรแกรมภาษาซ ม 3 ประเภท

คอ 1.ตวด าเนนการค านวณ 2.ตวด าเนนการเปรยบเทยบ และ 3.ตวด าเนนการทางตรรกศาสตร

1. ตวด าเนนการค านวณ (Mathematical Operators) ตวด าเนนการค านวณ ใชเพอชวยค านวณคาตวเลขดวยตวด าเนนการทางคณตศาสตร

พนฐาน

ตวด าเนนการค านวณ ไดแก

+ ตวด าเนนการ บวก (sum) - ตวด าเนนการ ลบ (minus) * ตวด าเนนการ คณ (multiply) / ตวด าเนนการ หาร (divide) % ตวด าเนนการมอดลส (modulus) หรอหารแลว เอาเฉพาะเศษ เทานน

ตวอยางการใชตวด าเนนการค านวณ

5 + 3 = 8 6 – 2 = 4 5 * 7 = 35 8 / 3 = 2 8 % 3 = 2 10 / 6 = 1 หารเอาผลลพธ 1 0 % 6 = 4 หารเอาเศษ 7 / 2 = 3 7 % 2 = 1

บทท 9 Operators

7 % 2 = 1

เราจะอานวา เจด มอด สอง เทากบ หนง

Page 3: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 3

เราสามารถใชตวด าเนนการค านวณเหลาน ท าการค านวณแลวเกบคาไวในตวแปรหรอแสดงผลลพธออกมาเลยกได ดงตวอยางตอไปน

โคด

int x = 7, y = 3;

int sum, mod, div;

sum = x + y;

mod = x % y;

div = x / y;

printf("sum = %d\n", sum); printf("x + y = %d\n", x + y); printf("mod = %d\n", mod); printf("div = %d\n", div); printf("%d + %d + %d = %d", sum, mod, div, sum + mod + div);

ผลลพธคอ

ถาสงเกตด ๆ จะเหนวา div หรอ x / y มคาเปน 2 ไมใช 2.333 ทงนเพราะวา

ตวแปร int ท าอะไรกบตวแปร int กตองไดตวแปร int 7 หารดวย 3 จงไดค าตอบเปน 2 โดยคอมพวเตอรจะแปลง 2.333 ใหเปน int ดวยการปดทศนยมทง (int คอประเภทของตวแปรทเกบคาเปนตวเลขจ านวนเตม)

sum = 10 x + y = 10 mod = 1 div = 2 10 + 1 + 2 = 13

ประกาศตวแปร ทงหมด 5 ตว คอ x, y sum, mod และ div

ค านวณแลวเกบคาไวในตวแปร โดยใชตวด าเนนการ + % และ / ตามล าดบ

Page 4: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 4

หากมการใชตวด าเนนการค านวณมากกวา 1 ตว เราจะท าอยางไร ?

โคด int x = 3 + 4 * 2; printf("%d", x);

ผลลพธคอ

ท าไมผลลพธจงเปน 11 ท าไมไมเทากบ 14 !!

นนเปนเพราะวาคอมพวเตอรจะท าการคณ และหาร กอนบวก และลบเสมอ

เชน 3 + 4 * 2 คอมพวเตอรจะท า 4 * 2 กอน มคาเทากบ 8 แลวคอยน าไปบวกกบ 3 จงได 11 นนเองแตถาตองการใหคอมพวเตอร ท าการบวก กอนการคณ ใหใสเครองหมายวงเลบ ( ) ครอบไว ดงน

โคด int x =(3 + 4) * 2;

printf("%d", x);

ผลลพธคอ

11

14

Page 5: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 5

ล าดบการท างานของตวด าเนนการค านวณ (Operator Precedence)

ลองมาดอกตวอยาง

โคด int x = 1 + 5 % ( 8 - 4 / 2 * 3 ) * 4;

printf("%d", x);

ผลลพธคอ

เหนตวเลขและเครองหมายด าเนนการหลายตวแบบนอยาเพงทอใจนะ ไปดค าอธบายกน

( ) • คอมพวเตอรจะท าการค านวณในวงเลบกอนเสมอ

* / % • ตวด าเนนการทง 3 ตวนมความส าคญเทากน ท างานเรยงจากซายไป

ขวา เจอเครองหมายใดกอน ท ากอน

+ - • ตวด าเนนการทง 2 ตวนมความส าคญเทากน ท างานเรยงจากซายไป

ขวา เจอเครองหมายใดกอน ท ากอน

5

Page 6: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 6

น าความรเรองล าดบการท างานของตวด าเนนการค านวณมาใช ชวยกนหาค าตอบโจทยนกน

1 + 5 % ( 8 - 4 / 2 * 3 ) * 4

1 + 5 % ( 8 - 2 * 3 ) * 4

1 + 5 % ( 8 - 6 ) * 4

1 + 5 % 2 * 4

1 + 1 * 4

1 + 4

5

ท าในวงเลบกอน เจอเครองหมาย / กอน ท ากอน (จากซายไปขวา) 4/2 ไดคาเปน

2

เจอ * ท าเลย 2 * 3 ไดคาเปน 6

ในวงเลบ 8 – 6 ไดคาเปน 2

จากซายไปขวา เจอเครองหมาย % กอน ท ากอน 5%2 ไดคาเปน 1

จากนนท า * กอน + คอ 1 * 4 ไดคาเปน 4

บวกกนเลย

เย ๆ ๆ ไดผลลพธ คอ 5

Page 7: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 7

ตวอยางท 1 การใชตวด าเนนการค านวณ

เพอน ๆ ลองทบทวนดนะ

และน าโคดโปรแกรมในตวอยาง

ไปใชในโปรแกรม Dev-C++

ไดผลลพธเหมอนเราไหมนะ ?

Page 8: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 8

2. ตวด าเนนการเปรยบเทยบ (Relational Operators) เ ร าส าม ารถก าหนดกา รท า ง านขอ ง โ ป รแกรม ให เ ป น ไปตาม เ ง อ น ไ ขต า ง ๆ

ทตองการไดโดยตรวจสอบเงอนไขดวยตวด าเนนการเปรยบเทยบ ตวด าเนนการเปรยบเทยบ ใชเปรยบเทยบตวเลขเทานน ผลลพธจากการเปรยบเทยบ

อาจจะเปนเทจ (มคาเทากบ 0) หรอจรง (มคาเทากบ 1 หรอมคาใดๆ ทไมเทากบ 0) ในภาษาซ จะไมมขอมลชนด true หรอ false ทงนเราจะใชในค าสงประเภทเงอนไข

ตวด าเนนการเปรยบเทยบ ไดแก == ตวด าเนนการ เทากน != ตวด าเนนการ ไมเทากน >= ตวด าเนนการ มากกวาหรอเทากบ <= ตวด าเนนการ นอยกวาหรอเทากบ > ตวด าเนนการ มากกวา < ตวด าเนนการ นอยกวา

ตวอยาง

การด าเนนการ ผลลพธ คาทให

5 == (3+2) จรง 1 9 != 9 เทจ 0

10 >= 6 จรง 1 5 <= 5 จรง 1 6 > 8 เทจ 0 1 < 3 จรง 1

(x<= 8) ถาเราให x มคาเปน 4 จะไดวา 4 <= 8

จรง 1

ตวด าเนนการ == ใชในการเปรยบเทยบ สวน = ใชก าหนดคาใหตวแปร

Page 9: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 9

โคด printf(“value of true = %d”, 5==5);

ผลลพธคอ

5 ==5 เปนการเปรยบเทยบวา 5 มคาเทากบ 5 หรอไม ค าตอบคอใช (จรง) ใหคาเปน 1

ล าดบการท างานของตวด าเนนการเปรยบเทยบ

< <=

> >=

• ตวด าเนนการ 4 ตวนมล าดบความส าคญเทากน แตจะต ากวาตวด าเนนการค านวณ และท างานจากซายไปขวา

== !=

• ตวด าเนนการทง 2 ตวนมล าดบความส าคญเทากน แตต ากวาตวด าเนนการ 4 ตวดานบน และท างานจากซายไปขวา

value of true = 1

Page 10: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 10

ตวอยางท 2 การใชตวด าเนนการเปรยบเทยบ

ค าอธบายโปรแกรม บรรทดท 5 int x = 4;

ประกาศตวแปรชอ x เปนประเภทตวเลขจ านวนเตม มคาเทากบ 4 บรรทดท 6 printf("The value of (x==4) is %d.\n", x==4);

ใหเปรยบเทยบคาวา x มคาเทากบ 4 จรงหรอไม ในตวอยางนเราไดก าหนดคา x เทากบ 4 ไวในบรรทดท 5 ดงนน 4==4 จงเปนจรง ใหคาเปน 1 ผลลพธ คอ The value of (x==4) is 1.

บรรทดท 7 printf("The value of (x!=4) is %d.\n", x!=4);

ใหเปรยบเทยบคาวา x มคาไมเทากบ 4 จรงหรอไม (ในตวอยางนคอไมจรง) ดงนนจงใหคา 0 ออกมา ผลลพธ คอ The value of (x!=4) is 0.

บรรทดท 8 printf("The value of (4*x-2<=3) is %d.\n", 4*x-2<=3);

ใหเปรยบเทยบคาวา 4*x-2 มคานอยกวาหรอเทากบ 3 จรงหรอไม (ในตวอยางนคอไมจรง) ใหคาเปน 0 ผลลพธ คอ The value of (4*x-2<=3) is 0.

Page 11: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 11

บรรทดท 9 printf("The value of (2*x%%3>4) is %d.\n", 2*x%3>4);

ใหเปรยบเทยบคาวา 2*x%%3 มคามากกวา 4 จรงหรอไม (ในตวอยางนคอไมจรง) ใหคาเปน 0 ผลลพธ คอ The value of (2*x%%3>4) is 0. และทใช %2 ตวเพอใหแสดงเครองหมาย % ออกทางหนาจอ 1 ตว อก 1 ตวหมายถงการมอด (การหารแบบเอาเศษเปนผลลพธ)

3. ตวด าเนนการทางตรรกศาสตร (Logical Operators) ตวด าเนนการทางตรรกศาสตร ใชเพอเชอมประโยคใหเปนประโยคทซบซอนขนและชวยใน

การสรางประโยคแบบเงอนไข

ตวด าเนนการทางตรรกศาสตร ไดแก

! แทนตวด าเนนการ not (ไม) && แทนตวด าเนนการ and (และ) || แทนตวด าเนนการ or (หรอ)

เชน ประโยค x + 2 นอยกวา 8 และ x หาร 3 ลงตว หรอ x ไม นอยกวา 2 จะ สามารถเขยนใหเปนประโยคเงอนไขไดวา x + 2 < 8 && x % 3 == 0 || ! (x < 2)

การสรางประโยคเงอนไข จะไดค าตอบจากการเชอมแตละประโยคเปนจรงหรอเทจ อยางใดอยางหนงเทานน เราตองรจกคาความจรงของการเชอมประโยคดวยตวด าเนนการทางตรรกศาสตรแตละตว ในบทนจะกลาวถงตวด าเนนการ && และ || เทานน

เพอน ๆ ลองน าโคดโปรแกรม

ในตวอยาง

ไปใชในโปรแกรม Dev-C++ ดนะ

Page 12: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 12

ตารางคาความจรง ของตวด าเนนการทางตรรกศาสตร ซงนกเรยนควรทองจ าใหได ดงน

ประโยคท 1 ประโยคท 2 && (และ) || (หรอ)

T T T T

T F F T

F T F T

F F F F

ตวอยาง

การด าเนนการ ค าตอบ คาทให

(2<3) && (3>1) จรง 1 (2>3) || (4<1) เทจ 0

! (2> 3) จรง 1

เครองหมาย ! เรยกวาเอกคลาเมชน มารค (exclamation mark) เครองหมาย & เรยกวา แอมเพอรแซนด (ampersand) เรยกสนๆวา

แอนด และเครองหมาย | เรยกวา ไปพ (pipe)

T ยอมาจากค าวา true (ทร) แปลวา จรง F ยอมาจากค าวา False (ฟอลส) แปลวา เทจ

Page 13: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 13

ตวอยางท 3 การใชตวด าเนนการตรรกศาสตร

ค าอธบายโปรแกรม บรรทดท 5 int x = 5;

ประกาศตวแปรชอ x เปนตวแปรประเภทตวเลขจ านวนเตม มคาเทากบ 5 บรรทดท 6 if((x + 3 > 7 || (x <= 5 || x % 3 == 0)) && x < 1)

ใหแทนคา x ดวยเลข 5 และด าเนนการทละขน ไดดงน if((1 || (1 || 0)) && 0) if((1 || 1) && 0) if(1 && 0) if(0) ไดคาเปนเทจ (0) จะไมเขาไปท าค าสงขางในวงเลบปกกา จงไมมการ

แสดงผลขอความใด ๆ ออกมาทางหนาจอ

Page 14: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 14

จากตวอยางน หากเราตองการเขยนค าวา That's not true! ออกมาทางหนาจอ ภาษาซกมรปแบบการเขยนดงน

นนคอ จะเขาไปท าตามค าสงใน else (พมพประโยค That's not true! ออกทางหนาจอ) เมอเงอนไขใน if ไมเปนจรงนนเอง นกเรยนจะเขาใจตวอยางนดขน เมอไดเรยนในบทถดไป

เพอน ๆ ลองน าโคดโปรแกรมในตวอยาง

ไปใชในโปรแกรม Dev-C++ ดนะ

เมอเขาใจแลวกเขาไปท าแบบฝกหดเลย

Page 15: บทที่ 9 Operators หน้า 1 · = C programming By…iamch mmy = บทที่ 9 Operators หน้า 3 เราสามารถใช้ตัวด าเนินการค

= C programming By…iamch❀mmy =

บทท 9 Operators หนา 15

ท ค าศพท ค าอาน ความหมายทเกยวของกบภาษาซ

1 divide ดไวด หารตวเลขแลวน าผลลพธมาใชงาน

(เรยกสน ๆ วา div ดฟ)

2 logical ลอจจเคล มเหตผล เกยวกบตรรกวทยา

3 mathematicle แมธธะแมททเคล เกยวกบคณตศาสตร

4 minus ไมเนส ลบ

5 modulus มอจจะเลส หารตวเลขแลวน าเศษมาใชงาน

(เรยกสน ๆ วา mod มอด)

6 multiply มลทะไพล คณ

7 operator ออพพะเรเทอะ ด าเนนการ

8 precedence พรซเดนท ล าดบ

9 relational รเลชนนอล ความสมพนธ ความเกยวของ

10 sum ซม บวก

11 value แวลลว คา

++ จบบทท 9 ++

ค าศพทภาษาองกฤษนารประจ าบทท 9