ประเภทของข้อมูลและตัวดำเนินการ data...

30
ปปปปปปปปปปปปปปปปปป ปปปปปปปปปปปปป Data Types and Operator (ปปปปป 3)

Upload: griffith-trujillo

Post on 15-Mar-2016

51 views

Category:

Documents


11 download

DESCRIPTION

ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator (บทที่ 3). ประเภทของข้อมูล. ข้อมูลในภาษาซี แบ่งได้เป็น 4 กลุ่ม ข้อมูลชนิดอย่างง่าย (Simple Type) ข้อมูลประเภทแถวอักขระ (String Type) ข้อมูลชนิดโครงสร้าง (Structure Type) ข้อมูลชนิดศรชี้ (Pointer Type). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

1

ประเภทของขอ้มูลและตัวดำ�เนินก�ร

Data Types and Operator ( บทที่ 3)

Page 2: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

2

ประเภทของขอ้มูลประเภทของขอ้มูลขอ้มูลในภาษาซ ี แบง่ได้เป็น 4 กลุ่ม

ขอ้มูลชนิดอยา่งง่าย (Simple Type) ขอ้มูลประเภทแถวอักขระ (String Type)

ขอ้มูลชนิดโครงสรา้ง (Structure Type)

ขอ้มูลชนิดศรชี ้ (Pointer Type)

Page 3: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

3

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)

ขอ้มูลประเภทลำาดับ (Ordinal Type) ขอ้มูลจำานวนเต็ม ขอ้มูลอักขระ ขอ้มูลตรรกะ

ขอ้มูลประเภทจำานวนจรงิ (Real Type)

Page 4: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

4

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)

ขอ้มูลประเภทลำาดับ (Ordinal Type) ขอ้มูลจำานวนเต็มชนิด ตัวอยา่ง

integer ...,-3,-2,-1,0,1,2,3,...

binary 0 , 1

Octal 0124 , 076 , 04

hexadecimal 0x17, 0xd ,0x5f

Page 5: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

5

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)• ขอ้มูลจำานวนเต็ม

ชนิดขอ้มูล ชว่งของขอ้มูลท่ีเก็บไว้int -32768...32767

unsigned int 0...65535

signed int -32768...32767

short int -32768...32767

unsigned short int 0...65535

signed short int -32768...32767

long int -2,147,483,648...2,147,483,647

Page 6: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

6

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)

ขอ้มูลประเภทลำาดับ (Ordinal Type) ขอ้มูลอักขระ (Character Data Type)

ขอ้มูลประเภทนี้จะเป็นตัวอักขระหนึ่งตัว ซึง่เป็นไปตาม

ตารางรหัส ASCII ได้แก่ ตัวอักษร ตัวเลข อักขระพเิศษ

ชนิดขอ้มูล ตัวอยา่งchar

'C' , 'a' , '\n' , '#' , '@''{' , '0' , '$'

Page 7: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

7

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)

ขอ้มูลประเภทลำาดับ (Ordinal Type) ขอ้มูลตรรกะ (Boolean Data Type) จะเป็นค่าทางลอจกิชนิด ตัวอยา่ง

boolean 1 , 0 , -4

ค่าเท็จ (False) แทนค่าด้วยเลข 0 ค่าจรงิ (True) แทนค่าด้วยเลข 1 - ค่าจรงิ คือ ค่าท่ีไมเ่ท่ากับ 0

Page 8: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

8

ขอ้มูลชนิดอยา่งง่าย ขอ้มูลชนิดอยา่งง่าย (Simple Type)(Simple Type)

ขอ้มูลประเภทจำานวนจรงิ (Real Data Type)

ไมเ่ป็นขอ้มูลชนิดลำาดับ เนื่องจากทศนิยมมไีด้หลายตำาแหน่งชนิด ตัวอยา่ง ชว่งของขอ้มูลท่ี

เก็บไว้float 11.25, -1.5E4, 2.5e-02 3.4E-38...3.4E+38 double 11.25, -1.5E4, 2.5e-02 1.7E-308...1.7E+308

long double 11.25, -1.5E4, 2.5e-02 3.4E-4932... 1.1E+4932

Page 9: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

9

ขอ้มูลประเภทแถวอักขระ ขอ้มูลประเภทแถวอักขระ (String Type)(String Type)

เป็นการนำาตัวอักขระมาเรยีงต่อกันเป็นขอ้ความตั้งแต่หน่ึงตัวเป็นต้นไป สามารถเก็บตัวอักขระได้ 255 ตัว โดยตัวอักขระจะต้องอยูใ่นเครื่องหมาย “ ” ภาษาซ ีมกีารเติมตัวอักษรวา่ง Null ( \0 )

เป็นตัวสดุท้ายของสตรงิ

Example'C' 'O' 'M' 'P' 'U' 'T' 'E' 'R' '\O'

ใชเ้นื้อท่ีในการเก็บท้ังสิน้ 9 Bytes

Page 10: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

10

ค่าคงท่ี (Constant) หมายถึง ค่าในหน่วยความจำาท่ีมค่ีาคงท่ี

ตลอดโปรแกรม การประกาศค่าคงท่ี ทำาได้ 2 ลักษณะ คือ

ประกาศ ให้ค่าคงท่ี ชื่อวา่ a เป็นชนิด Integer

Const int a ; // ERRORประกาศ ให้ค่าคงท่ี ชื่อวา่ b เป็นชนิด Integer เก็บค่า 12 ไว้

Const int b = 12 ;

การประกาศค่าคงท่ีและตัวแปรการประกาศค่าคงท่ีและตัวแปร

Page 11: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

11

ตัวแปร (Variables) หม�ยถึง ค่�ในหน่วยคว�มจำ�ท่ีส�ม�รถเปล่ียน

ค่�ได้ ชื่อตัวแปรจะเป็นตำ�แหน่งหน่วยคว�มจำ�ที่เก็บ

ขอ้มูลอยู่ ก�รประก�ศตัวแปรส�ม�รถทำ�ได้ดังนี้

ตัวอยา่งเชน่

Type Variables_list

int count;

float data1 , data2;

การประกาศค่าคงท่ีและตัวแปรการประกาศค่าคงท่ีและตัวแปร

Page 12: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

12

ตัวอยา่งท่ี ตัวอยา่งท่ี 11#include <stdio.h>const int taxrate = 7;float itemcost , salestax;int main(){ printf("Please Enter Cost of item : "); scanf("%f" , &itemcost); salestax = (taxrate * itemcost) / 100; printf(" item Cost is = %.2f \n" , itemcost); printf(" Sales tax is %.2f\n" , salestax); return(0);} Output

Please Enter Cost of item : 500

ผลการทำางาน ?

OutputPlease Enter Cost of item : 500item Cost is = 500.00Sales tax is 35.00

Page 13: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

13

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

ภาษาซมีตัีวดำาเนินการ ดังต่อไปนี้ ตัวดำาเนินการเลขคณิต(Arithematic Operator)

ตัวดำาเนินการลอจกิ (Logic Operator)

ตัวดำาเนินการเปรยีบเทียบ(Relation Operator)

Page 14: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

14

ตัวดำาเนินการเลขคณิต ตัวดำาเนินการเลขคณิต(Arithematic Operator)(Arithematic Operator)

operator ความหมาย

ชนิดของขอ้มูล ตัวอยา่ง

+ บวก ตามชนิดของขอ้มูล 5 + 2

- ลบ ตามชนิดของขอ้มูล 5 - 2

* คณู ตามชนิดของขอ้มูล 5 * 2

/ หาร ตามชนิดของขอ้มูล 5 / 2

%

หารเอาผลลัพธ์เฉพาะเศษของการหาร( Modulo )

จำานวนเต็ม 5%2

++ การเพิม่ค่าขึน้หนึ่ง จำานวนเต็ม X++, ++X

-- การลดค่าลงหน่ึง จำานวนเต็ม X-- , --X

Page 15: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

15

ตัวอยา่งท่ี ตัวอยา่งท่ี 22

ค่าตัว แปร x

ค่าตัว แปร y

การดำาเนิน

การ

ค่าจากการกระ

ทำา

ผลลัพธ์ท่ีเก็บ

10 5 x = y + 2 7 X = 7

10 5 x = x/y 2 X = 2

10.0 5 x = x/y 2.0 X = 2.0

9 2 x = x%y 1 X = 1

14 -3 x = x%y 2 X = 2

-14 3 x = x%y -2 X = -2

Page 16: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

16

การดำาเนินการ ผลลัพธ์

ชนิดผลลัพธ์

13 / 5 * 3 6จำานวนเต็

6 * 5 / 10 * 2 + 10 16จำานวนเต็

(6 * 5) / (10 * 2) + 10 11จำานวนเต็

(6 * 5.0) / (10 * 2 + 10) 1.0จำานวนจริ

(6 * 5.0) / (10 * (2 + 10)) 0.25จำานวนจริ

3 * (4 % (6 / 2)) + 5 8จำานวนเต็

ตัวอยา่งท่ี ตัวอยา่งท่ี 33

Page 17: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

17

ค่าตัวแปรx การดำาเนินการ ค่าจากการก

ระทำา7 x = x+1 8

7 x = x-1 6

7 x = x++ 8

7 x = ++x 8

7 x = x-- 6

7 x = --x 6

7 Y = ++x Y มค่ีาเป็น 8

7 Y = x++ Y มค่ีาเป็น 7

ตัวอยา่งท่ี ตัวอยา่งท่ี 44

Page 18: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

18

จากตัวอยา่งท่ี จากตัวอยา่งท่ี 44 ถ้า x มค่ีาเป็น 7

y = + + x แล้ว

อธบิายได้วา่ x มค่ีาเป็น 7 ต่อ มา เพิม่ค่า x ขึน้หนึ่ง

แล้วสง่ให้ตัวแปร y ทำาให้ y มค่ีาเป็น 8 ถ้า x มค่ีาเป็น 7 y = x + + แล้ว

อธบิายได้วา่ x มค่ีาเป็น 7 ทำาให้ y มค่ีาเป็น 7 ด้วย

และเพิม่ค่า x ขึน้หนึ่ง สง่ผลให้ x มค่ีาเป็น 8

สรุปได้วา่ - ถ้าวางตัวดำาเนิน

การไวห้น้าตัวแปรจะทำาการเพิม่ค่าก่อนแล้วจงึสง่ค่าให้

กับ y

- ถ้าวางตัวดำาเนิน การไวห้ลังตัวแปร

จะทำาการสง่ค่าให้กับy ก่อนแล้วจงึเพิม่

ค่า x อีกหนึ่ง

Page 19: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

19

ตัวดำาเนินการเปรยีบเทียบ ตัวดำาเนินการเปรยีบเทียบ(Relation Operator)(Relation Operator)

operator ความหมาย

ชนิดของขอ้มูล

ตัวอยา่ง

ผลลัพธ์

< น้อยกวา่ boolean 5 < 4 0

<= น้อยกวา่หรอืเท่ากับ boolean 5 <= 5 1

== เท่ากับ boolean 0 == 0 1> มากกวา่ boolean 5 > 4 1

>= มากกวา่หรอืเท่ากับ boolean 5 >= 4 1

!= ไมเ่ท่ากับ boolean 0 != 0 0

Page 20: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

20

ตัวดำาเนินการลอจกิ ตัวดำาเนินการลอจกิ (Logic (Logic Operator)Operator)

operator ความหมาย

ชนิดของขอ้มูล

ตัวอยา่ง

ผลลัพธ์

&& AND boolean 1 && -1 1|| OR boolean 1 || 0 1! NOT boolean !4 0

A B A && B1100

1010

1000

A B A || B1100

1010

1110

A !A10

01

ตารางค่าความจรงิ AND

ตารางค่าความจรงิ OR

ตารางค่าความจรงิ NOT

Page 21: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

21

#include <stdio.h>int main(){ int A , B; printf(" A B A OR B\n"); A = 1; B = 1; printf("| %d | %d | %d |\n", A, B, A||B); A = 1; B = 0; printf("| %d | %d | %d |\n", A, B, A||B); A = 0; B = 1; printf("| %d | %d | %d |\n", A, B, A||B); A = 0; B = 0; printf("| %d | %d | %d |\n", A, B, A||B); return(0);} A B A OR B

| 1 | 1 | 1 || 1 | 0 | 1 || 0 | 1 | 1 || 0 | 0 | 0 |

ตัวอยา่งท่ี ตัวอยา่งท่ี 55

ผลการทำางาน ?

Page 22: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

22

การยุบนิพจน์โดยใช ้ การยุบนิพจน์โดยใช้(Compound (Compound Assignment)Assignment)

นิพจน์ ตัวดำาเนินการท่ียุบแล้ว

x = x + y x += y x = x - y x -= y x = x * y x *= yx = x / y x /= yx = x % y x %= y

z = (x+1) + (y+1) z = ++x + ++y

Page 23: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

23

ขนาดของหน่วยความจำาของขอ้มูลขนาดของหน่วยความจำาของขอ้มูลเรยีงจากน้อยไปมากเรยีงจากน้อยไปมาก

charshort

intunsigned int

long intunsigned long int

floatdouble

long double

Page 24: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

24

การเปลี่ยนประเภทของขอ้มูลการเปลี่ยนประเภทของขอ้มูลx y นิพจน์ zint int z = x + y int

float float z = x + y float

int float z = x + y float

int double z = x * y double

char float z = x + y float

short long z = (x + y) / 4.6 long then float

ผลลัพธจ์ะเก็บในขอ้มูลประเภทท่ีใหญ่กว่�เสมอ

Page 25: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

25

การเปลี่ยนประเภทของขอ้มูลการเปลี่ยนประเภทของขอ้มูล

ภาษาซสีามารถเปลี่ยนประเภทของขอ้มูลให้เป็นไปตามท่ีผู้ใชต้้องการได้ โดยการนำาชนิดขอ้มูลไวห้น้าขอ้มูลเชน่x นิพจน์ ผลลัพธ์

int float x float

float (int)(x + 2.5 ) int

int (float)( x +1) float

Page 26: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

26

#include <stdio.h>int main(){ int i , j; scanf("%d %d" , &i , &j ); printf(" i < j: %d\n" , i<j ); printf(" i <= j: %d\n" , i<=j ); printf(" i == j: %d\n" , i==j ); printf(" i > j: %d\n" , i>j ); printf(" i >= j: %d\n" , i>=j ); return(0);}

ผลการทำางาน

6 -1

ตัวอยา่งท่ี ตัวอยา่งท่ี 66

16 i < j: i <= j: i == j: i > j: i >= j:

6 -1 i < j: 0 i <= j: 0 i == j: 0 i > j: 1 i >= j: 1

16 i < j: 1 i <= j: 1 i == j: 0 i > j: 0 i >= j: 0

Page 27: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

27

#include <stdio.h>int main(){ int i , j; scanf("%d %d" , &i , &j ); printf(" i && j: %d\n" , i && j ); printf(" i || j : %d\n" , i || j ); printf(" !i : %d\n" , !i ); printf(" !j : %d\n" , !j ) ; return(0);}

ผลการทำางาน

0 -2

ตัวอยา่งท่ี ตัวอยา่งท่ี 77

2-1 i && j: i || j : !i : !j :

0 -2 i && j: 0 i || j : 1 !i : 1 !j : 0

2-1 i && j: 1 i || j : 1 !i : 0 !j : 0

Page 28: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

28

ลำาดับการดำาเนินงานของ ลำาดับการดำาเนินงานของOperator Operator

1. ()

2. ! (Not) , ++ , -- , -

3. * , / , %

4. + , -

5. < , > , <= , >=

6. == , !=

7. && (And)

8. || (Or)

9. = , *= , /= , %= , += , -=,

ในกรณีอยูใ่นลำาดับเดียวกันจะทำาจากซา้ยไปขวา

วงเล็บติดลบ

Page 29: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

29

#include <stdio.h>int main(){ int i , j; printf("2+3 && 1 : %d\n" , 2+3 && 1); printf("2+3 && 0 : %d\n" , 2+3 && 0); printf("-3 < 1 && 1 : %d\n" , -3 < 1 && 1); printf("12/3*5 > 10 < 5: %d\n" , 12/3*5 > 10 < 5); return(0);}

2+3 && 1 : 2+3 && 0 : -3 < 1 && 1 : 12/3*5 > 10 < 5:

ตัวอยา่งท่ี ตัวอยา่งท่ี 88

ผลการทำางาน ?

2+3 && 1 : 12+3 && 0 : 0-3 < 1 && 1 : 112/3*5 > 10 < 5: 1

Page 30: ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator  (บทที่ 3)

30

จบประเภทของขอ้มูลและตัวดำ�เนินก�ร

Data Types and Operator

Question ?