The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

เอกสารประกอบการเรียนหน่วยที่ 3

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by YAMEEN WANTALA, 2020-05-06 03:16:43

หน่วยที่ 3

เอกสารประกอบการเรียนหน่วยที่ 3

ชอ่ื -สกุล....................................................... เลขท.่ี ...........ชัน้ ม.5/.........

ใบความรทู้ ่ี 3
ตัวดาเนินการและนิพจน์ทางคณิตศาสตร์
Operator and Expression

นิพจน์ (Expression) คือการดาเนินการที่ทาให้ได้ผลลัพธ์เป็นค่าหนึ่งค่า โดยการดาเนินการ
ประกอบด้วยตัวดาเนินการ (Operator) และตัวถูกดาเนินการ (Operand) ตัวดาเนินการแทนโดยใช้
เคร่ืองหมายทางคณิตศาสตร์เพ่ือกาหนดการทางานสาหรับการคานวณหรือการเปรียบเทียบ ส่วนตัวถูก
ดาเนินการอาจเป็นค่าคงท่ี ตวั แปร ตงั คงที่ หรอื นิพจน์

3.1ตวั ดาเนนิ การ (Operator)

 3.1.1 ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operator)
ในการเขียนโปรแกรมจะใช้ตัวดาเนินการทางคณิตศาสตร์เป็นตัวเชื่อมในการเขียนโปรแกรม

เพ่ือหาผลลัพธ์จากการคานวณซึ่งสามารถกระทากับข้อมูลได้หลายรูปแบบ เช่น บวก ลบ คูณ หาร

เปอร์เซน็ ต์ ดงั ตัวอย่างในตารางท่ี 3.1

ตารางที่ 3.1 : ความหมายของตัวดาเนนิ การเลขคณติ และตัวอย่างการใช้

Arithmetic Operator ความหมาย ตวั อยา่ ง ผลลัพธ์ (สมมตใิ ห้ a = 6
+ การบวก 10 + 2 และ b = 2)
12

a+b 8

- การลบ 10 – 2 8

a–3 3

* การคณู 10 * 2 20

a * b 12

/ การหาร 10 / 2 5

a/b 3

% การหาเศษจากการหาร 10 % 2 0

a%b 0

หน้า 2

 3.1.2 ตัวดาเนนิ การเปรียบเทียบหรือตัวดาเนนิ การสัมพันธ์ (Relational Operator)
ในการเขียนโปรแกรมจาเป็นต้องมีการเปรียบเทียบข้อมูล 2 ตัวว่า มากกว่า น้อยกว่า หรือ

เท่ากัน โดยใช้ตัวดาเนินการสัมพันธ์ (relational operator) ท่ีประกอบข้ึนเป็นนิพจน์ทางตรรกะ ผลลัพธ์จาก

นิพจนท์ ใ่ี ชต้ ัวดาเนินการสัมพันธไ์ ดค้ ่าเป็นจรงิ (1) หรอื เท็จ (0) มตี วั อยา่ งแสดงดงั ตารางท่ี 3.2

ตารางท่ี 3.2 : ความหมายของตัวดาเนินการสัมพนั ธต์ ัวอยา่ งการใช้

Relational Operator ความหมาย ตัวอย่าง ค่าท่ีได้เมอ่ื กาหนดให้
> มากกวา่ x>y x = 12, y = -5
1

>= มากกวา่ หรือเทา่ กับ x >= y 1

< น้อยกว่า x<y 0

<= น้อยกว่าหรอื เทา่ กับ x <= y 0

== เทา่ กับ x == y 0

!= ไม่เทา่ กับ x != y 1

 3.1.3 ตัวดาเนินการทางตรรกะ (Logical Operator)
นอกจากการเขียนนิพจน์ทางตรรกะที่มาจากตัวดาเนินการสัมพันธ์แล้ว นิพจน์ทางตรรกะ

หลายประโยคสามารถนามาใช้ร่วมกับตัวดาเนินการทางตรรกะ (logical operator) ท่ีให้ผลลัพธ์ออกมา

เป็นค่าทางตรรกะจริงหรือเท็จเช่นเดียวกัน ตัวดาเนินการทางตรรกะในภาษาซี แทนด้วยสัญลักษณ์ดัง

ตารางที่ 3.3

ตารางที่ 3.3 : ตัวดาเนินการทางตรรกะในภาษาซี

Logical Operator ความหมาย
&& และ (AND)

| | หรือ (OR)

! นิเสธ (NOT)

หน้า 3

ตารางท่ี 3.4 แสดงผลลัพธ์ของการใช้ตัวดาเนนิ การทางตรรกะ เมื่อสมมติให้ A และ B เปน็ นิพจนท์ าง

ตรรกะหรือนพิ จนเ์ ลขคณิตทมี่ ีคา่ เป็นจานวนเต็ม

ตารางท่ี 3.4 : ความหมายของตัวดาเนนิ การสัมพันธแ์ ละตวั อย่างการใช้

AB A && B A||B !A
True True True True False

True False False True False

False True False True True

False False False False True

 3.1.4 ตัวดาเนนิ การกาหนดคา่ (Assignment Operator)
การกาหนดคา่ ใหก้ ับตัวแปรใช้เคร่อื งหมาย = เปน็ ตวั ดาเนินการกาหนดคา่ ในรูปแบบดงั นี้
var_name = constant หรือ var_name = expression

var_name คือ ช่ือตัวแปรที่ถกู กาหนดคา่ และต้องอยู่ทางซา้ ยของเคร่ืองหมาย = เสมอ
constant คือ คา่ คงที่
expression คือ นิพจน์

การกาหนดค่าใหก้ ับตวั แปรทาไดท้ ัง้ การกาหนดค่าคงทใ่ี ห้กับตัวแปร เชน่
x=1

หรอื ใช้นพิ จนป์ ระกอบในคาสัง่ เชน่
x=y+1

อกี ตัวอย่างหน่งึ ถ้าเขยี นคาส่ังกาหนดค่าดงั นี้
1. number = 1
2. number = number + 5

บรรทัดท่ีหน่ึงค่าเร่ิมต้นของ number เป็น 1 ในบรรทัดท่ีสองมีการทางาน 2
ขั้นตอนคือ ข้ันตอนแรกบวกค่าในประโยคทางขวา คือ ค่าของ number (เท่ากับ 1) บวกกับ 5 ได้เท่ากับ
6 กาหนดให้กับตัวแปร number ท่ีอยู่ทางซ้ายของเครื่องหมาย = เพราะฉะนั้นหลังจากการทางานของ
คาส่งั นี้ คา่ ของตัวแปร number เปลยี่ นจาก 1 เป็น 6

หน้า 4

 3.1.5 ตวั ดาเนนิ การประกอบ (Compound Operator)
ในภาษาซีสามารถรวมตวั ดาเนนิ การ 2 ตัวเขา้ ดว้ ยกนั โดยการรวมตวั ดาเนินการกาหนดค่ากับ

ตัวดาเนนิ การเลขคณิตเข้าด้วยกัน เปน็ ตวั ดาเนินการประกอบ (compound operator)

ตารางที่ 3.5 แสดงการกาหนดคา่ ให้กับตวั แปรในภาษาซี สมมติกาหนดให้ x = 5 และ y =

2 จะไดผ้ ลลพั ธ์ดังตาราง

Compound Operator ตัวอยา่ งการใชง้ าน ความหมาย ค่าของ x
+= x += y x = x + y 7

–= x -= y x=x–y 3

*= x *= y x=x*y 10

/= x /= y x=x/y 2.5

%= x %= y x=x%y 1

 3.1.6 ตัวดาเนนิ การแบบยูนารี (Unary Operator)
ตัวดาเนินการจะเรียกว่าเป็นตัวดาเนินการยูนารี (unary operator) หรือตัวดาเนินการ

ไบนารี (binary operator) ขึ้นอยู่กับจานวนของตัวถูกดาเนินการ ถ้าตัวดาเนินการน้ันใช้กับตัวถูกดาเนินการ

1 ตัวเรียกว่า unary operator ส่วนตัวดาเนินการที่ใช้กับตัวถูกดาเนินการ 2 ตัวเรียกว่า binary operator

สาหรับตวั ดาเนินการบางตัวเช่น + และ – สามารถเป็นได้ทั้ง unary เช่น +x และ –x หรือ binary เช่น x + y

และ x – y

ตัวดาเนินการยนู ารที ถ่ี ูกเรยี กใช้อย่เู สมอ ได้แก่ ตัวดาเนินการเพ่ิมคา่ และลดค่า มกี ารใชง้ านดงั น้ี

ตวั ดาเนินการเพ่ิมค่าและลดค่า (Increment and Decrement Operator)
ตัวดาเนินการเพ่ิมค่าใช้เครื่องหมาย ++ และตัวดาเนินการลดค่าใช้เครื่องหมาย –– โดยที่ตัว

ดาเนินการทงั้ 2 ตวั นใี้ ชง้ านได้ 2 รปู แบบ คอื prefix mode ซง่ึ เตมิ ตวั ดาเนินการไว้ขา้ งหน้า และแบบ postfix

mode ซง่ึ เตมิ ตวั ดาเนนิ การไวข้ า้ งหลงั

ตารางที่ 3.6 แสดงรปู แบบและความหมายของรูปแบบดงั กลา่ ว

สมมตกิ าหนดคา่ เริ่มต้นให้ a = 2 จะไดผ้ ลลัพธ์ดงั นี้

การคานวณ ตัวอย่าง ความหมาย ค่าของ a
เพิ่มค่าของตัวถูกดาเนินการอีก 1 (prefix mode)
++a a = a + 1 3

เพ่ิมค่าของตวั ถกู ดาเนินการอีก 1 (postfix mode) a++ a = a + 1 3

ลดค่าของตัวถูกดาเนินการออก 1 (prefix mode) ––a a = a – 1 1

ลดคา่ ของตวั ถกู ดาเนินการออก 1 (postfix mode) a–– a = a – 1 1

หน้า 5

3.2 นิพจนเ์ ลขคณิต (Arithmetic Expression)

นิพจน์ หมายถึง การนาตัวแปร ค่าคงที่ มาสัมพันธ์กันโดยใช้เครื่องหมายหรือตัวดาเนินการอย่างใด

อยา่ งหนึ่งเปน็ ตวั เช่อื ม โดยมีกฎเกณฑท์ ั่วไป ดังนี้

1. เขยี นตัวอักษรหลายตัวตดิ กนั โดยไมม่ เี คร่อื งหมายค่นั เช่น xyz ถือเปน็ 1 ตวั แปร

2. กรณีนิพจน์มีค่าของตัวแปรหรือค่าคงท่ีต่างชนิดกัน ภาษาซีจะเปลย่ี นเป็นชนดิ ข้อมูลท่ีละเอียดกว่า

เช่น หากนิพจน์มี int กับ long ชนิดขอ้ มลู ใหม่จะเป็น long, หากนพิ จน์มี int กบั float ชนิดข้อมลู ใหมจ่ ะ

เปน็ float

การใช้นพิ จน์มอี งค์ประกอบสาคญั 2 ส่วนคอื ตัวดาเนนิ การและตัวถกู ดาเนนิ การ

 ตัวอย่างนพิ จนใ์ นภาษาซี
ตารางท่ี 3.7 : ตวั อยา่ งนิพจนใ์ นภาษาซี

นิพจนท์ างคณติ ศาสตร์ นิพจน์ภาษาซี
2x2
2*(x*x)
10x+3xy+10y2 10*x+3*x*y+10*y*y
(a+b)*(a+b)
(a+b)2

3.3 Precedence and Associativity

Precedence หมายถึงลาดับการทางานก่อนหลังของตวั ดาเนินการเม่ือใช้ตัวดาเนินการมากกว่าหน่ึง

ตัวในการเขียนนิพจน์ ส่วน Associativity ใช้ระบุลาดับการทางานว่า ทางานจากซ้ายไปขวาหรือขวาไปซ้าย
เมอ่ื ตัวดาเนนิ การมี precedence ในลาดับเดยี วกัน ตวั อยา่ งเชน่

k = 10 + 2 * 4
ในกรณนี ี้ precedence ของ * เหนอื กว่า + เพราะฉะน้ันค่าของ k ได้มาจาก 2 * 4 เป็น 8 แลว้ นาไป
บวกกบั 10 จึงเท่ากบั 18

10 / 2 * 4 % 3 * 4
ในกรณนี ี้ตัวดาเนินการทใ่ี ช้คือ / * % ซ่ึงมี precedence ในลาดับเดยี วกัน ทาให้ได้ associativity ท่ี

ทางานจากซา้ ยไปขวา นิพจนน์ จี้ ึงทางานเทียบเทา่ กับ ((((10 / 2) * 4) % 3) * 4)

Precedence และ Associativity ของตวั ดาเนนิ การสามารถตรวจสอบได้จากตารางที่ 3.8

หน้า 6

ตารางท่ี 3.8 : Precedence และ Associativity ของ Operator

Precedence กลุ่มของตัวดาเนินการ ตวั ดาเนนิ การ Associativity
1 เครื่องหมายวงเล็บ (Operator) ซ้ายไปขวา

() []

1 เคร่อื งหมายเรียกใชช้ นดิ ข้อมูล . –> ซา้ ยไปขวา

แบบโครงสรา้ ง (Structure)

2 ตัวดาเนินการ unary – ++ – ! * & (type) ขวาไปซา้ ย

sizeof (type)

3 คณู หาร และหาเศษจากการหาร */% ซ้ายไปขวา

4 บวกและลบ + – ซ้ายไปขวา

5 Bitwise Shift Right, Left >> << ซา้ ยไปขวา

6 ตัวดาเนินการสัมพันธ์ < ≤ >≥ ซา้ ยไปขวา

7 ตัวดาเนนิ การสัมพันธ์ == != ซา้ ยไปขวา

8 Bitwise & ซา้ ยไปขวา

9 Bitwise Exclusive OR ^ ซา้ ยไปขวา

10 Bitwise OR | ซา้ ยไปขวา

11 ตัวดาเนินการทางตรรกะ AND && ซ้ายไปขวา

12 ตวั ดาเนินการทางตรรกะ OR | | ซ้ายไปขวา

13 ตัวดาเนนิ การเงื่อนไข ? : ขวาไปซ้าย

14 ตวั ดาเนนิ การกาหนดคา่ = += –= *= /= %= ขวาไปซ้าย

15 Comma , ซา้ ยไปขวา

3.4 การแปลงชนดิ ขอ้ มลู (Type Conversion)

บางคร้ังการใช้นิพจน์อาจประกอบด้วยตัวถูกดาเนินการหลายตัวท่ีมีชนิดข้อมูลไม่เหมือนกัน ดังน้ัน
ค่าที่ไดจ้ ากนิพจนจ์ ะมชี นิดข้อมูลเปน็ ชนดิ ใด เพอ่ื การใช้งานดังกล่าวจงึ ตอ้ งแปลงชนดิ ขอ้ มลู ใหเ้ หมาะสม

ในภาษาซีมีการแปลงชนิดข้อมูล 2 รูปแบบคือ implicit type conversion และ explicit type
conversion

 implicit type conversion
สาหรับนิพจน์ท่ีประกอบด้วยตัวถูกดาเนินการต้ังแต่สองตัวขึ้นไปท่ีมีชนิดข้อมูลแตกต่างกัน ค่า

ของนิพจน์ยึดเกณฑ์การแปลงชนิดข้อมูลไปเป็นชนิดที่มีขอบเขตใหญ่กว่า เรียกการแปลงชนิดข้อมูล

แบบนี้วา่ implicit type conversion

หน้า 7

 explicit type conversion
กรณีต้องการแปลงชนิดข้อมูลของผลการคานวณของนิพจน์หรือค่าของตัวแปรให้เป็นชนิดข้อมูลที่

ต้องการ เรียกการแปลงชนดิ ข้อมลู แบบนีว้ า่ explicit type conversion ซึ่งมีรปู แบบดงั น้ี
(type) variable หรือ (type) expression
การระบชุ นดิ ข้อมลู ท่ีต้องการทาได้โดยระบชุ ่ือชนดิ ข้อมลู ไว้ภายในวงเลบ็ หน้าตวั แปรหรือนพิ จนท์ ี่

ตอ้ งการ การกาหนดชนดิ ขอ้ มูลลักษณะนี้เรียกไดอ้ ีกอย่างวา่ casting ตัวอยา่ งเช่น
int iNum = 5;
float fNum;
fNum = (float) iNum;

ประโยคคาสั่งนี้ทาให้ค่าของ iNum ท่ีเป็นชนิด int เปลี่ยนเป็น float แล้วเก็บค่าไว้ในตัวแปร fNum
ทเ่ี ปน็ ชนดิ float

3.5 ตัวอยา่ งโปรแกรม

โปรแกรมที่ 3.1 ตวั อยา่ งการแปลงชนดิ ขอ้ มูลแบบ implicit type conversion
#include <stdio.h>
int main()
{

float floatNum = 25.21;
int intNum = 300;
short shortNum = 10;

printf (“int * short is int : %d\n”, intNum * shortNum);
printf (“float + int is float : %.2f\n”, floatNum + intNum);

return 0;
}
ผลลัพธ์

int * short is int : 3000
float + int is float : 325.21

หน้า 8

โปรแกรมที่ 3.2 ตัวอยา่ งการแปลงชนดิ ขอ้ มลู แบบ implicit type conversion ในคาสงั่ กาหนดค่า
#include <stdio.h>
int main()
{

int iValue = 10;
float fValue = 15.5;
float fResult;

fResult = iValue + fValue;
printf (“%d + %.2f = %.2f”, iValue, fValue, fResult);

return 0;
}
ผลลพั ธ์

10 + 15.50 = 25.50

โปรแกรมท่ี 3.3 ตัวอยา่ งการแปลงชนดิ ข้อมูลแบบ explicit type conversion
#include <stdio.h>
int main()
{

int i1 = 10;
int i2 = 3;
float f;

f = i1 / i2;
printf(“No casting i1/i2 –> f = %.2f\n”, f);
f = (float) (i1 / i2);
printf(“casting by (float) (i1/i2) –> f = %.2f\n”, f);
f = (float) i1 / i2;
printf(“casting by (float) i1/i2 –> f = %.2f\n”, f);

หน้า 9

return 0;
}

ผลลพั ธ์
No casting i1/i2 –> f = 3.00
casting by (float) (i1/i2) –> f = 3.00
casting by (float) i1/i2 –> f = 3.33

โปรแกรมที่ 3.4 ตัวอยา่ งการรับคา่ ข้อมูลเขา้ 3 จานวนและการคานวณผลคณู ของค่าทร่ี บั เข้า
#include <stdio.h>
int main()
{

int n1,n2,n3;
int result;

printf(“Enter three numbers: ”);
scanf(“%d %d %d”,&n1,&n2,&n3);
result = n1 * n2 * n3;
printf(“%d * %d * %d = %d\n”,n1,n2,n3,result);

return 0;
}
ผลลัพธ์ สมมตใิ ห้คา่ ข้อมูลทรี่ บั เขา้ 3 จานวนคอื 10 20 30 ตามลาดบั

Enter three numbers: 10 20 30
10 * 20 * 30 = 6000

หน้า 10

โปรแกรมที่ 3.5 จงเขียนโปรแกรมเพ่ือคานวณหาผลลพั ธ์ของตวั แปร z
เม่อื z = 4*4*x+7*(4–2*y) โดยตวั แปร x และ y ไดม้ าจากการใช้ฟงั กช์ ันรบั ข้อมูล scanf
#include<stdio.h>
int main ()
{

float x , y , z;
printf(“Enter value of x : ”);
scanf(“%f”, &x);
printf(“Enter value of y : ”);
scanf(“%f”, &y);
z = 4*4*x+7*(4–2*y);
printf(“z = %f”,z);
return 0;
}
ผลลพั ธ์ สมมตใิ ห้ค่าข้อมูลทรี่ ับเขา้ ของตัวแปร x =2 และ y = 2
Enter value of x : 2
Enter value of y : 2
z = 32.00

3.6 สรุป

 Expression หรือนิพจน์คือการดาเนินการท่ีทาให้ได้ผลลัพธ์เป็นค่าหน่ึงค่า โดยนิพจน์ประกอบด้วย
ตวั ดาเนินการ (operator) และตัวถูกดาเนนิ การ (operand)

 ตัวดาเนินการเป็นไปได้ทั้งตัวดาเนินการยูนารี (unary operator) หรือตัวดาเนินการไบนารี (binary
operator) ขึ้นอยู๋กับจานวนของตัวถูกดาเนินการ ถ้าตัวดาเนินการนั้นใช้กับตัวถูกดาเนินการ 1 ตัว
เรียกวา่ unary operator สว่ นตวั ดาเนินการทใี่ ช้กับตัวถูกดาเนินการ 2 ตัว เรียกวา่ binary operator

 Precedence หมายถึงลาดับในการทางานก่อนหลังของตัวดาเนินการเม่ือใช้ตัวดาเนินการมากกว่า
หน่ึงตัวในการสร้างนิพจน์

 Associativity ใช้ระบุลาดับการทางานว่าทางานจากซ้ายไปขวาหรือขวาไปซ้าย เม่ือตัวดาเนินการมี
precedence เดียวกนั

 การใช้ตวั ดาเนินการหลายตัวในนิพจนต์ อ้ งคานึงถึง precedence และ associativity

หน้า 11

 การใช้เคร่ืองหมายวงเล็บ ( ) สามารถกาหนดลาดับการทางานท่ีต้องการได้ เน่ืองจากเครื่องหมาย
วงเลบ็ มี precedence ในลาดับแรกสดุ

 การแปลงชนิดขอ้ มูลมี 2 รูปแบบคอื implicit type conversion และ explicit type conversion
 Implicit type conversion เกิดข้ึนเมื่อตัวถูกดาเนินการ 2 ตัวมีชนิดข้อมูลคนละชนิดกัน ทาให้ผล

การคานวณคา่ จากนิพจน์ยดึ เกณฑก์ ารแปลงชนิดข้อมลู ไปเป็นชนิดท่ีมีของเขตใหญ่กวา่
 Explicit type conversion สามารถแปลงชนิดข้อมลู ของค่าจากนิพจนใ์ หเ้ ปน็ ชนิดข้อมลู ทต่ี ้องการ


Click to View FlipBook Version