12
0 วิชา การพัฒนาโปรแกรม (ภาษาซี) รหัสวิชา ว31293 หน่วยการเรียนรู้ที3 นิพจน์และตัวดาเนินการ ผลการเรียนรู มีความรู้ความเข้าใจเกี่ยวกับตัวดาเนินการและตัวถูกดาเนินการ นิพจน์ เครื่องหมายทาง คณิตศาสตร์ และการเปลี่ยนชนิดข้อมูลในภาษาซีเพื่อการเขียนโปรแกรมได้ จุดประสงค์การเรียนรู 1. บอกประวัติความเป็นมา และลักษณะของภาษา C ได้ 2. สามารถค้นหาและดาวน์โหลดโปรแกรมภาษา C ได้ 3. สามารถใช้งานโปรแกรมภาษา C ได้ สาระการเรียนรู 1. ตัวดาเนินการ (Operator) 2. ตัวถูกดาเนินการ (Operand) 3. นิพจน์ (Expression) 4. เครื่องหมายและตัวดาเนินการทางคณิตศาสตร์ 5. การเปลี่ยนชนิดข้อมูล

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

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

0

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

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

ผลการเรยนร

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

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

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

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

Page 2: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

1

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

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

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

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

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

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

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

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

3. นพจน (Expression)

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

Page 3: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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 ตามล าดบ ผลลพธทไดคอ

Page 4: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 5: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 6: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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 อกครง

Page 7: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 8: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 9: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 10: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 11: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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

Page 12: วิชา การพัฒนาโปรแกรม ภาษาซี)0 ว ชา การพ ฒนาโปรแกรม (ภาษาซ ) รห สว ชา ว31293

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