Post on 28-Jan-2020
= C programming By…iamch❀mmy =
บทท 9 Operators หนา 1
= 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
เราจะอานวา เจด มอด สอง เทากบ หนง
= 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
ค านวณแลวเกบคาไวในตวแปร โดยใชตวด าเนนการ + % และ / ตามล าดบ
= 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
= 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
= 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
= C programming By…iamch❀mmy =
บทท 9 Operators หนา 7
ตวอยางท 1 การใชตวด าเนนการค านวณ
เพอน ๆ ลองทบทวนดนะ
และน าโคดโปรแกรมในตวอยาง
ไปใชในโปรแกรม Dev-C++
ไดผลลพธเหมอนเราไหมนะ ?
= 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
ตวด าเนนการ == ใชในการเปรยบเทยบ สวน = ใชก าหนดคาใหตวแปร
= 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
= 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.
= 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++ ดนะ
= 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 (ฟอลส) แปลวา เทจ
= 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) จะไมเขาไปท าค าสงขางในวงเลบปกกา จงไมมการ
แสดงผลขอความใด ๆ ออกมาทางหนาจอ
= C programming By…iamch❀mmy =
บทท 9 Operators หนา 14
จากตวอยางน หากเราตองการเขยนค าวา That's not true! ออกมาทางหนาจอ ภาษาซกมรปแบบการเขยนดงน
นนคอ จะเขาไปท าตามค าสงใน else (พมพประโยค That's not true! ออกทางหนาจอ) เมอเงอนไขใน if ไมเปนจรงนนเอง นกเรยนจะเขาใจตวอยางนดขน เมอไดเรยนในบทถดไป
เพอน ๆ ลองน าโคดโปรแกรมในตวอยาง
ไปใชในโปรแกรม Dev-C++ ดนะ
เมอเขาใจแลวกเขาไปท าแบบฝกหดเลย
= 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