วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา...

Preview:

Citation preview

0

วชา การพฒนาโปรแกรม (ภาษาซ) รหสวชา ว31293

หนวยการเรยนรท 3 นพจนและตวด าเนนการ

ผลการเรยนร

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

จดประสงคการเรยนร

1. บอกประวตความเปนมา และลกษณะของภาษา C ได 2. สามารถคนหาและดาวนโหลดโปรแกรมภาษา C ได 3. สามารถใชงานโปรแกรมภาษา C ได

สาระการเรยนร 1. ตวด าเนนการ (Operator) 2. ตวถกด าเนนการ (Operand) 3. นพจน (Expression) 4. เครองหมายและตวด าเนนการทางคณตศาสตร 5. การเปลยนชนดขอมล

1

ใบความรท 3 เรอง การประมวลผลดวยซ

จดท าโดย นางพรพนารตน ชมภนช

เมอรจกวธการเตรยมขอมลพรอมทงการสรางตวแปรส าหรบเกบขอมลขนมาแลว ตอไปจะเปนการน าขอมลเหลานนมาด าเนนการ (Operator) โดยการด าเนนการอาจจะหมายถง การน าขอมลมาค านวณทางคณตศาสตร ตรรกศาสตร หรอเปรยบเทยบ เพอใหไดผลลพธออกมา ดงทจะไดเรยนรกนในบทน

การประมวลผลดวยภาษาซ การเขยนโปรแกรมคอมพวเตอรนนตองมการประมวลผลขอมล โยขอมลจะถกเกบในหนวยความจ าคอมพวเตอรในรปแบบของตวแปร การประกาศตวแปรตาง ๆ จะใชหนวยความจ าไมเทากน และมชวงในการเกบขอมลไมเทากน ผเขยนโปรแกรมจะตองทราบวาขอมลทตองการประมวลผลนนเปนขอมลประเภทใด และในการประมวลผลจะตองมการประท ากบตวแปรตาง ๆ ดงนนผเขยนโปรแกรมตองท าความเขาใจวาการประมวลผลนนตองรจกกบ ตวด าเนนการ ตวถกด าเนนการ และนพนจ จงจะสามารถเขยนโปรแกรมใหท างานตามทตองการได

1. ตวด าเนนการ (Operator)

ตวด าเนนการ คอ เครองหมายหรอสญลกษณพเศษทใชในการด าเนนการทางคณตศาสตร การด าเนนการทางตรรกศาสตร หรออน ๆ

2. ตวถกด าเนนการ (Operand)

ขอมลทท างานกบตวด าเนนการจะเรยกวา ตวถกด าเนนการ ตวด าเนนการบางตวจะใชตวถกด าเนนการเพยงตวเดยว ขณะทตวด าเนนการบางตวจะตองใชตวถกด าเนนการถง 2 ตว และตวด าเนนการจะใชประกอบกบตวถกด าเนนการในการสรางนพจน

3. นพจน (Expression)

นพจน หมายถง การน าคาคงท หรอตวแปร มาสมพนธกนโดยใชตวด าเนนการทางคณตศาสตรเปนตวเชอม ตวอยางเชน

2

ตวอยาง

count + 1

ตวถกด าเนนการตวท 1 (ตวแปร) ตวด าเนนการ ตวถกด าเนนการตวท 2 (คาคงท)

ดงนน นพจนในภาษา C เปนการน าขอมลและตวแปรในภาษา C มาด าเนนการดวยเครองหมายทางคณตศาสตร ตรรกศาสตร หรอเครองหมายมาเปรยบเทยบในภาษา C เปนตวสงงาน

เครองหมายและตวด าเนนการทางคณตศาสตร ในภาษาซมตวด าเนนการ (Operator) อยหลายประเภท ซงตวด าเนนการเหลานสามารถน ามาสรางเปนนพจนได อนไดแก

1. ตวด าเนนการทางคณตศาสตร (Arithmetic Operator) 2. ตวด าเนนการยนาร (Unary Operator) 3. ตวด าเนนการเชงสมพนธ (Relational Operator) 4. ตวด าเนนการเชงตรรกะ (Logical Operator)

1. ตวด าเนนการทางคณตศาสตร (Arithmetic Operator)

การด าเนนการพนฐานทสดในชวตประจ าวนและในการเขยนโปรแกรมกคอ การค านวณทางคณตศาสตร ซงถอไดวาเปนการด าเนนการทตองกระท าอยบอยครง โดยเครองหมายทใชในการค านวณทางคณตศาสตรในภาษา C มดงน

ตวด าเนนการ ความหมาย

+ บวก (addition)

- ลบ (subtraction)

* คณ (multiplication)

/ หาร(division)

% หารเอาเศษ (Modulo)

ตวอยาง ถาก าหนดใหตวแปร x และ y เกบคาจ านวนเตมเทากบ 15 และ 9 ตามล าดบ ผลลพธทไดคอ

3

z=x+y ผลลพธทไดคอ ตวแปร z มคาเทากบ 24 z=x-y ผลลพธทไดคอ ตวแปร z มคาเทากบ 6 z=x*y ผลลพธทไดคอ ตวแปร z มคาเทากบ 135 z=x/y ผลลพธทไดคอ ตวแปร z มคาเทากบ 1 z=x%y ผลลพธทไดคอ ตวแปร z มคาเทากบ 6

2. ตวด าเนนการยนาร (Unary Operator)

ตวด าเนนการยนารจะใชกบตวถกด าเนนการเพยงตวเดยว ปกตจะอยหนาตวถกด าเนนการ แตบางครงกอาจอยหลงตวถกด าเนนการ ตวด าเนนการยนารทรจกกนด คอ ตวด าเนนการยนารลบ นนกคอ เครองหมายลบทน ามาใชน าหนาคาตวเลข หรอน าหนาคาตวแปร ซงจะสงผลใหคาถกเปลยนเปนคาตดลบโดยทนท เชน -10 , -x

ตวอยาง ถาก าหนดใหตวแปร x และ y เกบคาจ านวนเตมเทากบ 10 และ 2 ตามล าดบ ผลลพธทไดคอ z=x+y ผลลพธทไดคอ ตวแปร z มคาเทากบ 12 z=-x+y ผลลพธทไดคอ ตวแปร z มคาเทากบ -8 z=-x*y ผลลพธทไดคอ ตวแปร z มคาเทากบ -20 z=x- -y ผลลพธทไดคอ ตวแปร z มคาเทากบ 12 กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8 9

10 11

#include <stdio.h> #include <conio.h> main ( ) {

int a=10 , b=2; printf("a=10 , b=2 \n \n"); printf("-a+b = %d \n ", -a+b); printf("-a*b = %d \n ", -a*b); printf("a--b = %d \n ", a- -b); getche( );

}

รปภาพ แสดงผลลพธทไดจากการท างานของ โปรแกรม ex04_1.exe

4

นอกจากนนยงมตวด าเนนการยนารทใชมาก กคอ ตวด าเนนการเพมคาหรอ ลดคา ซงการใชเครองหมายทางคณตศาสตรประเภทของการเพมคาลดคาลงทละหนง สามารถใชไดดงแสดงในตาราง

ตวด าเนนการ ความหมาย

++ เพมคาขนอกหนง (increment)

-- ลดคาลงอกหนง (decrement)

การเขยนยนารแบบเพมคาหรอลดคา แบบเพมคาหรอลดคา สามารถก าหนดได 2 รปแบบคอ

แบบท 1 เครองหมายอยขางหนา

ตวอยาง z = ++x หมายถง เพมคาใหกบตวแปร x อก 1 กอนทก าหนดคาใหกบตวแปร z

แบบท 2 เครองหมายอยขางหลง

ตวอยาง z = x++ หมายถง ก าหนดคาของตวแปร x ใหกบตวแปร z กอนทจะเพมคา

ใหกบตวแปร x อก 1 กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8 9

10 11 12 13

#include <stdio.h> #include <conio.h> int x=5 , y=5 , z=0; main( ) { z=++x; printf(“z = %d \n”, z); printf(“x = %d\ n”, x); z=y++; printf(“z = %d \n”, z); printf(“y = %d\ n”, y); getch( ); }

รปภาพ แสดงผลลพธทไดจากการท างานของ โปรแกรมex04_2.exe

5

นอกจากนแลวยงมตวด าเนนการอกประเภทหนงคอ ประเภทลดรป ซงเรยกวา Compound Assignment ซงไดแกตวด าเนนการตอไปน

ตวด าเนนการ ตวอยาง ความหมายเหมอนกน

+ = a+ =b; a= a+b;

- = a- = b; a= a-b; *= a* = b; a= a*b;

/ = a/ = b; a= a/b;

% = a% = b; a= a% b;

ตวอยาง บวกแบบลดรป a += 5; หรออกความหมาย คอ a=a+5;

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

a -= 2; หรออกความหมาย คอ a=a+2;

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

ตวอยาง คณแบบลดรป a*= b; หรออกความหมาย คอ a=a*b;

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

ตวอยาง หารแบบลดรป a /= 4; หรออกความหมาย คอ a=a / 4;

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

6

ตวอยาง หารเอาเศษแบบลดรป a %= b; หรออกความหมาย คอ a=a%b;

หมายถง หารคาในตวแปร a กบคาในตวแปร b แลวผลลพธทไดจากการหาร กลบไปเกบไวทตวแปร a อกครง 3. ตวด าเนนการเชงสมพนธ (Relational Operator)

ตวด าเนนการเชงสมพนธ เปนเครองหมายทใชในการเปรยบเทยบ ตดสนใจ และผลของการเปรยบเทยบเปนได 2 กรณ คอ เปนจรง (True) หรอ เปนเทจ (False) ถาเปนจรงจะใหคาเปน 1 และถาเปนเทจ จะใหคาเปน 0 ตวด าเนนการเชงสมพนธทใชมดงน

ตวด าเนนการ ความหมาย ตวอยาง

< นอยกวา a<b

<= นอยกวาเทากบ a<= b > มากกวา a>= b

>= มากกวาเทากบ a >= b

= = เทากบ a == b != ไมเทากบ a != b

สวนใหญแลวการด าเนนการเปรยบเทยบจะท างานรวมกบการด าเนนการอน ๆ เชน เปรยบเทยบจากการค านวณทางคณตศาสตร หรอเปรยบเทยบเพอก าหนดเงอนไขรวมกบการท างานของโปรแกรมโครงสรางแบบเลอกท า (Selection) หรอแบบท าซ า เชน ในรวมกบค าสง if หรอค าสง while เปนตน

ตวอยาง ถา a , b และ c เปนตวแปรจ านวนเตมมคาเปน 10 , 20 และ 30 ตามล าดบ เมอก าหนดรปแบบการท างานดงในตาราง

ตวด าเนนการ ผล คาทได

a<b จรง 1

(b+c)>(a+50) เทจ 0

c!=30 เทจ 0

7

กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8

#include <stdio.h> #include <conio.h> main( ) { printf(“10 > 5 = %d\n”,10 > 5); printf(“10 < 5 =%d\n”,10 < 5); getch( ); }

รปภาพ แสดงผลลพธทไดจากการท างานของ โปรแกรม ex04_3.exe

4. ตวด าเนนการเชงตรรกะ (Logical Operator)

ตวด าเนนการทางตรรกะ เปนเครองหมายทใชในการเปรยบเทยบตดสนใจ โดยเอาเงอนไขตงแต 2 เงอนไขขนไปมาเปรยบเทยบกน ผลของการเปรยบเทยบเปนได 2 กรณเปนจรง (True) หรอ เปนเทจ (False) ถาเปนจรงจะใหคาเปน 1 และถาเปนเทจ จะใหคาเปน 0 ตวด าเนนการทางตรรกะทใชมดงน

ตวด าเนนการ ความหมาย

&& และ (and)

|| หรอ (or)

! ปฏเสธ (not)

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

ตวเปรยบเทยบ ผลลพธ

a b a && b a || b !a

T T T T F

T F F T F

F F F T T

F F F F T

8

กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8

#include <stdio.h> #include <conio.h> main( ) { int score=85; printf(“%d\n”,score>=80 && score<90); printf(“%d\n”,score< 80 || score>50); printf(“%d\n”,score==80); getch( ); }

รปภาพ แสดงผลลพธทไดจากการท างานของ โปรแกรม ex04_4.exe

ตวด าเนนการกบความส าคญ

ตวด าเนนการแตละตวมล าดบความส าคญกอนหลงทแตกตางกน โดยการประมวลผล จะกระท ากบตวด าเนนการทมล าดบความส าคญสงกอน แตถากรณทมล าดบความส าคญเทากน ตามปกตจะกระท ากบตวด าเนนการทพบกอนนนเอง และตอไปนเปนล าดบความส าคญของตวด าเนนการพนฐาน

ล าดบความส าคญ ตวด าเนนการ ความหมาย

1 ( ) เครองหมายวงเลบ

2 ++,-- ตวด าเนนการเพมคา/ลดคา

3 -, ! ยนารลบ และตรรกะ not

4 *, / , % คณ หาร โมดลส

5 + , - บวก ลบ

ตวอยาง การค านวณนพจน สามารถล าดบการค านวณ ไดดงน โจทย ans = 2+ 8 / 4 -12 / 3 + 8*2 = 2 + 8 / 4 - 12 / 3 + 8*2 = 2 + 2 - 4 + 16 ans = 16

9

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

income = salary + (ot * rate) + commission - tax

การเปลยนชนดขอมล ในภาษา C ยงมตวด าเนนการทเรยกวา การแคสต (Casting) เพอแปลงชนดขอมลจากชนดหนง มาเปนอกชนดหนงได วธท า คอ ใหระบชนดขอมลทตองการภายในเครองหมายวงเลบ หนานพจนทตองการ กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8 9

10

#include <stdio.h> #include <conio.h> float x = 20; int ans; main( ) { ans = (int) x / 5; printf(“ans = %d\n”,ans); getch( ); }

รปภาพ แสดงผลลพธทไดจากการท างานของโปรแกรม ex04_5.exe

10

การเขยนโปรแกรมค านวณ เราสามารถค านวณหาผลลพธของนพจนคณตศาสตรดวยการเขยนโปรแกรมภาษาซ ตวอยางตอไปนเปนการแสดงล าดบการประมวลผลทางคณตศาสตรของนพจนตาง ๆ กจกรรมเสรมทกษะ

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

1 2 3 4 5 6 7 8 9

10 11 12

#include <stdio.h> #include <conio.h> int x,y,sum; main() { printf("Enter The Length is : "); scanf ("%d", &x); printf("Enter The Width is : "); scanf ("%d", &y); sum = x*y; printf("The area is : %d", sum); getche( ); }

รปภาพ แสดงผลลพธทไดจากการท างานของ โปรแกรม ex04_6.exe

11

กจกรรมเสรมทกษะ

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

1 2 3 4 5 6

7 8 9

10 11 12 13 14 15 16 17

#include <stdio.h> #include <conio.h> main( ) { int a,b,c,d,e; a=(3+4)*5; b=3+4*5; c=(2+7)*4%10; d=2+7*4%10; e=10+2*8/4*3-5; printf("(3 + 4) * 5 =%d \n" , a); printf("3 + 4 * 5 =%d \n" , b); printf("(2 + 7) * 4 % 10 =%d \n", c); printf("(2 + 7) * 4 % 10 =%d \n", d);

printf("10 + 2 * 8 / 4 * 3- 5 =%d \n", e); getch(); }

รปภาพ แสดงผลลพธทไดจากการท างานของโปรแกรม ex04_7.exe

Recommended