Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Unit 4 ประเภทของข้อมูล และตัวดำเนินการ

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

Published by paiboonclass, 2020-05-15 01:31:10

Description: Unit 4 ประเภทของข้อมูล และตัวดำเนินการ

Search

Read the Text Version

บทที่ 4 ประเภทของข้อมูล และตัวดาเนนิ การ 1

4.1 ชนิดของขอ้ มูล ในการเขียนโปรแกรมเมื่อมีการประกาศตัวแปรคอมพิวเตอร์จะจอง หน่วยความจาใหก้ ับตัวแปรน้ัน ถ้าหากตัวแปรเก็บขอ้ มูลต่างประเภทกัน หน่วยความจาที่ใชส้ าหรบั เก็บขอ้ มลู ก็จะไม่เท่ากนั ดว้ ย สาหรบั ขอ้ มลู ในภาษาซี อาจแบง่ ออกไดเ้ ป็ น 4 กลุ่มดงั ต่อไปน้ ี - ขอ้ มูลชนิดชิมเปิ ล (simple type) - ขอ้ มูลประเภทสตรงิ (string type) - ขอ้ มลู ประเภทโครงสรา้ ง (structure type) - ขอ้ มลู ประเภทพอยตเ์ ตอร์ (pointer type) ในหัวข้อน้ ี จะกล่าวถึงข้อมูลชนิ ดซิมเปิ ลและข้อมูลชนิ ดสตริงก่อน สว่ นขอ้ มลู ประเภทอ่ืน ๆ จะกล่าวต่อไปในภายหลงั 2

4.1.1 ขอ้ มูลชนิดซิมเปิ ล ขอ้ มลู ชนิดซิมเปิ ลแบ่งไดเ้ ป็ นขอ้ มลู ประเภทลาดบั (Ordinal type) และ ขอ้ มลู ประเภทจานวนจรงิ (Real Data Type) • โดยขอ้ มูลแบบลาดบั (Ordinal Type) เป็ นขอ้ มูลที่มีค่าเป็ นลาดับแน่นอน เช่นตัวเลขที่ใชใ้ นการนับ ลาดับ ตัวอกั ษรเป็ นตน้ ในภาษาซียงั แบ่งขอ้ มูลชนิดลาดับออกไดห้ ลายประเภท ใน ที่น้ ีจะกล่าวถึงขอ้ มลู ประเภทจานวนเต็ม ขอ้ มลู อกั ขระ และขอ้ มลู ตรรกะ 3

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(2) • ขอ้ มูลชนิดจานวนเตม็ (Integer Data Type) ขอ้ มูลประเภทน้ ีจะใชเ้ ก็บตัวเลขที่เป็ นจานวนเต็ม ในคอมพิวเตอรจ์ ะใช้ หน่วยความจาในการเก็บขอ้ มลู ถา้ หากคอมพิวเตอรใ์ ชห้ น่วยความจา 8 บิตหรือ 1 ไบตใ์ นการเก็บขอ้ มลู จะทาใหเ้ ก็บขอ้ มลู ท่ีเป็ นเลขฐานสิบได้ ในช่วง 0 ถึง 255 แต่ถา้ ใชห้ น่วยความจามากกว่าน้ันในการเก็บขอ้ มูล ก็จะสามารถเก็บ ขอ้ มลู ก็จะสามารถเก็บตวั เลขช่วงท่ีกวา้ งข้ นึ ได้ ข้อมูลชนิ ดจานวนเต็มน้ ี ยังแบ่งได้หลายประเภทข้ ึนกับขนาดของ หน่วยความจาท่ีคอมพิวเตอรใ์ ชเ้ ก็บโดยขอ้ มลู ประเภทต่าง ๆ แสดงไดด้ งั ตาราง ต่อไปน้ ี 4

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(3) ตารางแสดงชนิดของขอ้ มูล ประเภท ชว่ งของขอ้ มูลที่เก็บได้ หน่วยความจา char unsigned char -128 to 127 1 ไบต์ signed char int 0 to 255 1 ไบต์ unsigned int long -128 to 127 1 ไบต์ Unsigned long int -32,768 to 32,767 2 ไบต์ 0 to 65,535 2 ไบต์ -2,147,483,648 to 2,147,483,647 4 ไบต์ 0 to 4,294,967,296 4 ไบต์ 5

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(4) • ขอ้ มูลประเภทตวั อกั ขระ (Character Data Type) ขอ้ มูลประเภทน้ ีจะเป็ นตวั อกั ขระหนึ่งตวั ซึ่งเป็ นไปตามตารางรหสั ASCII ประกอบดว้ ยขอ้ มลู ที่เป็ นตวั อกั ษร ตวั เลข และอกั ขระพิเศษ ขอ้ มลู ประเภทน้ ีจะ เป็ นขอ้ มลู แบบลาดบั ได้ เนื่องจากเรียงตามลาดบั รหสั ASCII ขอ้ มลู ประเภทน้ ีจะ ใชเ้ น้ ือท่ีในการเก็บหน่ึงไบตเ์ ชน่ ‘A’,’B’,’C’ นอกจากน้ ียงั มอี กั ขระพิเศษเช่น ‘\\n’ รหสั ข้ นึ บรรทดั ใหม่ ‘\\t’ รหสั เวน้ วรรค 1 tab ‘\\a’ เสียง Beep 6

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(5) • ขอ้ มูลประเภทตรรก (Boolean Data Type) จะเป็ นค่าทางลอจิก ไดแ้ ก่ จรงิ (True) กบั เท็จ (False) จะใชใ้ นคาสงั่ ควบคุมเพ่ือตัดสินใจการทางาน ในการเรียงลาดับจะใหค้ ่าที่เป็ นเท็จมีลาดับ ก่อนค่าท่ีเป็ นจริง ในการเขียนโปรแกรมบางคร้งั จะแทนค่าจริงดว้ ยเลขจานวน เต็ม 1หรือค่าที่มากกวา่ 1 และแทนคา่ เท็จดว้ ยเลข 0 7

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(6) • ขอ้ มูลประเภทจานวนจรงิ (Real Data Type) ขอ้ มลู ประเภทน้ ีจะเป็ นจานวนจริงหรือเลขทศนิยม ขอ้ มูลประเภทน้ ีจะ จดั ลาดบั ก่อนหลงั ไดย้ าก จึงไม่เป็ นขอ้ มลู ชนิดลาดบั เน่ืองจากทศนิยมมไี ดห้ ลาย ตาแหน่ง ขอ้ มลู จานวนจริงน้ ียงั แบ่งออกไดห้ ลายประเภท โดยแต่ละประเภทจะ ใชห้ น่วยความจาในการเก็บแตกต่างกัน ทาใหเ้ ก็บขอ้ มูลไดแ้ ตกต่างกัน ดัง ตารางต่อไปน้ ี ประเภท ชว่ งของขอ้ มลู ท่ีเกบ็ ได้ หน่วยความจา float 3.4 x 10-38 to 3.4 x 1038 4 ไบต์ double 1.7 x 10-308 to 1.7 x 10308 8 ไบต์ long double 3.4 x 10-4032 to 1.1 x 104032 10 ไบต์ 8

4.1.1 ขอ้ มูลชนิดซิมเปิ ล(7) • ขอ้ มูลประเภทสตรงิ (string type) นอกจากขอ้ มูลแบบตัวเลขและตัวอักษรแล้วในภาษาซียังมีขอ้ มูลอีก ประเภทหน่ึงเรียกว่าสตริง ขอ้ มลู ประเภทน้ ีจะเป็ นการนาตัวอกั ขระมาต่อเรียง กบั เป็ นขอ้ ความต้งั แต่หน่ึงตวั ข้ ึนไป โดยสามารถเก็บตวั อกั ขระได้ 255 ตวั โดย ตัวอกั ขระจะตอ้ งอย่ใู นเคร่ืองหมาย ‚ ‚ ในการเขียนโปรแกรมดว้ ยภาษาซีจะมี การเติมตวั อกั ษรวา่ ง NULL (\\0) เป็ นตวั สุดทา้ ย อยา่ งเชน่ การเก็บสตริงคาวา่ ‚COMPUTER‛ จะใชเ้ น้ ือท่ีในการเก็บ 9 ไบต์ โดยแต่ละไบตเ์ ป็ นดงั น้ ี ‚C‛ ‚O‛ ‚M‛ ‚P‛ ‚U‛ ‚T‛ ‚E‛ ‚R‛ ‚\\0‛ 9

4.2 การประกาศตวั แปรและคา่ คงท่ี หากตอ้ งการใหโ้ ปรแกรมรบั ขอ้ มูลจากผูใ้ ชม้ าเก็บไว้ หรือมีการคานวณ และเก็บผลลพั ธจ์ ะตอ้ งสรา้ งตวั แปรสาหรบั เก็บขอ้ มลู ที่เป็ นผลลพั ธน์ ้ัน พจิ ารณา โปรแกรมต่อไปน้ ี 4.2.1 การประกาศคา่ คงที่ ค่าคงท่ี (Constant) เป็ นค่าในหน่วยความจาที่มีค่าคงท่ีตลอดโปรแกรม ในการประกาศค่าคงที่จะเป็ นการกาหนดช่ือใหค้ ่าคงที่ ถา้ ในโปรแกรมส่วนใด เรียกช่ือท่ีประกาศไวก้ ็จะไดข้ อ้ มูลท่ีกาหนด การประกาศค่าคงที่จะใชค้ าว่า const นาหน้า ซ่ึงทาไดส้ องลกั ษณะดงั ต่อไปน้ ี รูปแบบ const ชนิดขอ้ มลู ช่ือตวั แปร เชน่ const int a; รูปแบบ const ชนิดขอ้ มลู ชื่อตวั แปร = คา่ ขอ้ มลู เช่น const int count = 100; 10

4.2.1 การประกาศคา่ คงท่ี(2) การประกาศคา่ คงท่ีดว้ ย #define เราสามารถใช้ #define ซ่ึงเป็ นคาสงั่ สาหรบั นิยามคา่ มาประกาศคา่ คงท่ี ได้ การประกาศค่าคงท่ีดว้ ยวธิ ีน้ ีจะไมต่ อ้ งระบุชนิดของขอ้ มลู และไมต่ อ้ งมี เคร่ืองหมาย ; ต่อทา้ ย ดงั น้ ี รูปแบบ #define ชอ่ื ค่าคงที่ คา่ ท่ีตอ้ งการเก็บ ตวั อยา่ งเช่น #define PI 3.14 #define X (5+3)/2 11

4.2.2 การประกาศตวั แปร รูปแบบ ชนิดขอ้ มลู ชื่อตวั แปร, …, N; หรอื รปู แบบสมการ variable = expression; ตวั อยา่ ง int feet, inches; inches = feet * 12; //(=, +, -, *, /) ***ใหน้ ักเรียนเขียนโปรแกรม ตัวอยา่ งที่ 4.1 (หน้า 71) 12

4.3 การตง้ั ช่ือ 1. ช่ือจะตอ้ งไม่ซ้ากบั คาสงวน (Reserved word) และคา มาตรฐานที่คอมไพลเ์ ลอรร์ จู้ กั 2. จะตอ้ งข้ ึนตน้ ดว้ ยตวั อกั ษร (A-Z, a-z) หรือเคร่ืองหมาย _ (Underscore) เท่าน้ัน 3. ตัวต่อไปตอ้ งเป็ นตัวอักษะหรือตัวเลขหรือเครื่องหมาย _ (Underscore) 4. การต้งั ช่ือจะตอ้ งไมม่ ชี อ่ งวา่ ง 5. ตวั อกั ษรตวั เล็กและตวั ใหญจ่ ะมคี วามหมายแตกต่างกนั 13

4.3 การตง้ั ชื่อ(2) คำสงวน เป็ นคาท่ีมีความหมายท่ีโปรแกรมรู้จกั โดยมีรูปแบบการใช้งานที่ แน่นอน สว่ นคามาตรฐานเป็ นคาท่ีมีความหมายอย่แู ล้ว โปรแกรมสามารถเรียกใช้ งานได้เลย คาสงวนในภาษาซีได้แก่ คาสงวนใน C มาตรฐาน (ANSI Standard C) คาที่มีเพิ่มใน Borland C auto double int struct do asm huge break else long switch if _cs interrupt case enum register typedef static _ds near char extern return union while _es pascal const float short unsigned default _ss _export continue for signed void goto cdecl sizeof volatile far 14

4.3 การตง้ั ช่ือ(3) คาถาม การต้ังชอื่ ต่อไปนีข้ ้อใดถกู ต้อง ข้อใดไมถ่ กู ต้อง 1. Average 8. $XYZ 2. 1234A 9. George 3. Program 10. 4X2 4. A*B 5. 506-74-3981 6. A1234 7. Hot Dog 15

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

4.4.1 ตวั ดาเนินการเลขคณิต(2) ตวั ดาเนินการ กระบวนการ ขอ้ มูลที่ถูกกระทา ขอ้ มูลผลลพั ธ์ + บวก (Addition) จานวนเต็ม,จานวนจริง จานวนเต็ม,จานวนจริง - ลบ (Subtraction) จานวนเต็ม,จานวนจริง จานวนเต็ม,จานวนจริง * คูณ (Multiplication) จานวนเต็ม,จานวนจริง จานวนเต็ม,จานวนจริง / หาร (real number Division) จานวนเต็ม,จานวนจริง จานวนจริง % การหารแบบเอาเศษ (Modulus) จานวนเต็ม จานวนเต็ม ++ การเพมิ่ ค่าข้ นึ หน่ึง (Increment) จานวนเต็ม จานวนเต็ม -- การลดค่าลงหนึ่ง (Decrement) จานวนเต็ม จานวนเต็ม 17

4.4.1 ตวั ดาเนินการเลขคณิต(3) ตวั อยา่ ง ต่อไปเป็ นการใชต้ วั ดาเนินการบวกลบ และคณู 1. 3 + 4 = 7 2. 7.0 - 3.0 = 4.0 3. 6 * 1.5 = 9.0 4. 1.5 -1 = 0.5 5. 2.25 * 1.5 = 3.375 6. 5.8 + 3 = 8.8 18

4.4.1 ตวั ดาเนินการเลขคณิต(4) ตวั อยา่ ง ต่อไปเป็ นการใชต้ วั ดาเนินการหารแบบต่างๆ 1. 9 / 2 = 4.5 2. 9 % 2 = 1 3. 18 % 2 = 0 4. -14 % 3 = -2 5. 14 %-3 = 2 6. 18.2 / 2 = 9.1 19

4.4.1 ตวั ดาเนินการเลขคณิต(5) ในนิพจน์การคานวณหนงึ่ ๆ อาจมีตวั ดาเนินการหลายตวั ได้ โดยผลลพั ธ์ทไี่ ด้ จะเกิดจากการกระทาของตวั ดาเนินการแตล่ ะตวั ดงั ตารางตอ่ ไปนี ้ การกระทา ผลลพั ธ์ 12 % 5 * 3 6 จานวนเต็ม 6 * 5 / 10 * 2 + 10 16.0 จานวนจริง (6 * 5) / (10 * 2) + 10 11.5 จานวนจริง (6 * 5) / (10 *2 + 10) 1.0 จานวนจริง (6 * 5) / (10 * (2 +10) 0.25 จานวนจริง จากตารางจะเห็นว่าถ้ามีตัวดาเนินการหลายตัว ผลลัพธ์จะเกิดจากการ กระทาของตวั ดาเนินการแตล่ ะตวั ถ้าหากมีการใช้วงเลบ็ การกระทาใดๆ จะกระทา ในวงเลบ็ กอ่ น 20

4.4.1 ตวั ดาเนินการเลขคณิต(6) สาหรับลาดบั ก่อนหลังของการทาตวั ดาเนินการแสดงได้ดังตารางต่อไปนี ้ โดนเรียงจากลาดบั สงู สดุ ไปลาดบั ตา่ สดุ ตวั ดาเนินการ การทางาน ลาดบั การทางาน ( ) การทาในวงเล็บ การทางานในวงเล็บมีลาดบั การทางานสูงสุด ถา้ หากมีวงเล็บซอ้ นกนั จะทาวงเล็บในสุดกอ่ น * , / หรือ % การคณู ถา้ หากมีตัวดาเนินการหลายตัวในประโยค + หรือ - การหาร DIV เดียวกนั จะทาจากซา้ ยไปขวา การหาร MOD ถา้ หากมีตัวดาเนินการหลายตัวในประโยค การบวก ลบ เดียวกนั จะทาจากซา้ ยไปขวา 21

4.4.1 ตวั ดาเนินการเลขคณิต(7) ตวั อยา่ ง 5 % 2 + 14 / 3 - 6 1 + 4.66 - 6 : หาร MOD และ DIV กอ่ นทาการบวกลบ 5.66 - 6 -0.33 22

4.4.1 ตวั ดาเนินการเลขคณิต(8) ตวั อยา่ ง 3 * (4 % (6 / 2)) + 5 3 * (4 % 3) + 5 : ทาในวงเล็บในกอ่ นทาวงเล็บนอก 3* 1 +5 8 23

4.4.1 ตวั ดาเนินการเลขคณิต(9) ตวั อยา่ ง 7.5 – 10.0 / 4.0 * ( 2 + 3 ) 7.5 – 10.0 / 4.0 * 5 7.5 – 2.5 * 5 7.5 – 12.5 -5.0 24

4.4.1 ตวั ดาเนินการเลขคณิต(10) ตวั อยา่ ง ถา้ หากใหค้ อมพวิ เตอรท์ าประโยคต่อไปน้ ี Y = 2 * 5 * 5 + 3 * 5 + 7 ลาดบั การทางานจะเป็ นดงั น้ ี ข้นั ท่ี 1 Y = 2 * 5 * 5 + 3 * 5 + 7 ; 2 * 5 = 10 ข้นั ท่ี 2 Y = 10 * 5 + 3 * 5 + 7 ; 10 * 5 = 50 ข้นั ท่ี 3 Y = 50 + 3 * 5 + 7 ; 3 * 5 = 15 ข้นั ที่ 4 Y = 50 + 15 + 7 ; 50 + 15 = 65 ข้นั ที่ 5 Y = 65 + 7 ; 65 + 7 =72 25

4.4.1 ตวั ดาเนินการเลขคณิต(11) คาถาม หลงั จากคอมพวิ เตอรท์ าคาสงั่ ตอ่ ไปน้ ี เอาตพ์ ตุ ที่ไดจ้ ะเป็ นอยา่ งไร ก. 26 % 4 ข. 26.0 / 4.0 ค. 26 / 4 คาถาม ในการทาคาสงั่ ตอ่ ไปน้ ี ผลลพั ธท์ ่ีไดจ้ ะเป็ นอยา่ งไร ก. 1 + 2 * 3 + 4 ข. 6 + 4 / 2 + 3 ค. 2 / 3 * 4 คาถาม พิจารณาโปรแกรมดงั น้ ี 2 + 3 * 4 จะมีค่าเท่ากบั 20 เพราะ (2 + 3) * 4 หรือเท่ากบั 14 เพราะ 2 + (3 * 4) 26

4.4.1 ตวั ดาเนินการเลขคณิต(11) คาถาม หลงั จากคอมพิวเตอรท์ าคาสงั่ ต่อไปน้ ี เอาตพ์ ุตที่ไดจ้ ะเป็ นอยา่ งไร ก. 26 % 4 2 ข. 26.0 / 4.0 6.5 ค. 26 / 4 6 คาถาม ในการทาคาสงั่ ตอ่ ไปน้ ี ผลลพั ธท์ ี่ไดจ้ ะเป็ นอยา่ งไร ก. 1 + 2 * 3 + 4 11 ข. 6 + 4 / 2 + 3 11 ค. 2 / 3 * 4 2.67 คาถาม พจิ ารณาโปรแกรมดงั น้ ี 2 + 3 * 4 จะมีค่าเท่ากบั 20 เพราะ (2 + 3) * 4 หรือเท่ากบั 14 เพราะ 2 + (3 * 4) 27

4.4.1 ตวั ดาเนินการเลขคณิต(12) ในการใชต้ วั ดาเนินการเพม่ิ ค่าและลดค่า (Increment and Decremment) คา่ ของขอ้ มลู จะเปลี่ยนแปลงคร้งั ละหน่ึงคา่ และใชก้ บั ตวั แปรประเภทจานวน เต็ม ตวั อยา่ งเชน่ ถา้ หากตอ้ งการเพิ่มคา่ ของตวั แปร x ข้ นึ หน่ึงคา่ อาจเขยี นได้ เป็ น x =x +1 ถา้ หากใชต้ วั ดาเนินการเพม่ิ คา่ จะทาใหเ้ ขียนส้นั ลง โดยเขยี นไดด้ งั น้ ี ++x หรือ x++ และถา้ หากตอ้ งการลดค่าในตวั แปร x ลงหน่ึงค่าอาจเขียนไดด้ งั น้ ี --x หรือ x-- ซ่ึงจะมีค่าเท่ากบั x = x – 1; 28

4.4.1 ตวั ดาเนินการเลขคณิต(13) ในการใชต้ วั ดาเนินการเพ่ิมค่าและลดค่าน้ันการวางตวั ดาเนินการไวห้ น้า และหลงั ตวั แปร บางคร้งั จะไดผ้ ลไม่เท่ากนั เช่น ในกรณีท่ีใชต้ วั ดาเนินการแลว้ สง่ ค่าใหก้ บั อีกตวั แปรหนึ่งดงั ต่อไปน้ ี x = 10; y = ++ x; จากการเขียนขา้ งบน เร่ิมแรกให้ x มีค่าเท่ากบั 10 ต่อมาเพ่ิมค่า x ข้ ึน หน่ึงแลว้ สง่ ใหต้ วั แปร y หลงั จากการทาประโยคขา้ งบนจะทาใหต้ วั แปร y มีค่า เท่ากบั 11 แต่ถา้ เขยี นเป็ น 29

4.4.1 ตวั ดาเนินการเลขคณิต(14) x = 10; y = x++; หลงั จากทาคาสงั่ จะทาใหต้ วั แปร y มีค่าเป็ น 10 แต่คา่ ใน x จะเป็ น 11 ซึ่งสรุปไดว้ ่าการวางตัวดาเนินการไวด้ า้ นหลังจะทาใหโ้ ปรแกรมส่งค่าใหก้ บั ตวั แปร y ก่อน จากน้ันเพ่ิมค่าตัวมนั ข้ ึนหนึ่ง แต่ถา้ วางตัวดาเนินการไวด้ า้ นหน้า โปรแกรมจะเพิม่ คา่ ใหก้ บั ตวั แปรกอ่ นจากน้ันจงึ สง่ ใหก้ บั ตวั แปร y 30

4.4.1 ตวั ดาเนินการเลขคณิต(15) ถา้ หากสมมุติวา่ i = 10 และ j = 2 พิจารณาการดาเนินการต่อไปน้ ี i * j++ ผลลพั ธจ์ ะเท่ากบั 20 และ j = 3 (เพิ่มคา่ หลงั จากการคณู ) i * ++j ผลลพั ธจ์ ะเท่ากบั 30 และ j = 3 (เพิ่มค่าก่อนการคณู ) i * j-- ผลลพั ธจ์ ะเท่ากบั 20 และ j = 1 (ลดค่าหลงั การคณู ) i * --j ผลลพั ธจ์ ะเท่ากบั 10 และ j = 1 (ลดคา่ กอ่ นการคณู ) ***ใหน้ ักเรยี นเขยี นโปรแกรม ตวั อยา่ งที่ 4.2 และ 4.3 (หนา้ 78-79) 31

4.4.2 ตวั ดาเนินการเปรียบเทยี บ ตวั ดาเนินการเปรียบเทียบ (Relation Operators) จะนาขอ้ มลู สองคา่ มา เปรียบเทียบกนั โดยขอ้ มลู ท้งั สองค่าจะตอ้ งเป็ นขอ้ มลู ประเภทเดียวกนั ผลลพั ธ์ ท่ีไดจ้ ะเป็ นคา่ ทางลอจิกคือจริงหรอื เท็จ ตวั ดาเนินการ กระบวนการ == เท่ากบั ไม่เท่ากบั != , <> <= น้อยกวา่ หรือเท่ากบั >= มากกวา่ หรือเท่ากบั > < มากกวา่ นอ้ ยกวา่ 32

4.4.2 ตวั ดาเนินการเปรียบเทยี บ(2) ตวั อยา่ ง 6 > 2 ผลลพั ธเ์ ป็ นจริง เน่ืองจาก 6 มากกวา่ 2 จริง 8 >= 3 ผลลพั ธเ์ ป็ นจริง เนื่องจาก 8 มคี ่ามากกวา่ หรือเท่ากบั 3 จริง 5 >= 18 ผลลพั ธเ์ ป็ นเท็จ เนื่องจาก 5 ไมไ่ ดม้ ากกวา่ หรือเท่ากบั 18 7 == 4 ผลลพั ธเ์ ป็ นเท็จ เน่ืองจาก 7 ไมเ่ ท่ากบั 4 33

4.4.3 ตวั ดาเนินการทางตรรก (Logical Operator) ตวั ดาเนินการทางตรรก (logical operator) ประกอบดว้ ย การทา AND, OR และ NOT เม่ือกระทากบั ค่าใดๆ ผลลพั ธท์ ่ีออกมาจะเป็ นจริงหรือเท็จ ตวั ดาเนินการทางตรรกแสดงไดด้ งั ตารางต่อไปน้ ี ตวั ดาเนินการ การกระทา && AND คา่ สองค่า ถา้ คา่ ท้งั สองเป็ นจริงผลลพั ธจ์ ะเป็ นจริง | | OR ค่าสองคา่ ถา้ คา่ ท้งั สองเป็ นเท็จผลลพั ธจ์ ะเป็ นเท็จ ! เปล่ียนคา่ จากจรงิ เป็ นเท็จ จากเท็จเป็ นจริง ตวั อยา่ ง การกระทาต่อไปน้ ีจะใหผ้ ลลพั ธเ์ ป็ นจริง (5 == 4+1) && (18 <= 6*4) 34

4.4.3 ตวั ดาเนินการทางตรรก (Logical Operator)(2) ถ้าหากในประโยคภาษาซีมีการใชต้ ัวดาเนินการเปรียบเทียบและตัว ดาเนิ นการทางตรรกหลายตัวโปรแกรมภาษาซีจะจัดลาดับความสาคัญการ ทางานกอ่ นหลงั ดงั ต่อไปน้ ี ตวั ดาเนินการ ลาดบั การทางาน ! 1 2 > >= < <= 3 == != 4 && 5 || 35

4.4.3 ตวั ดาเนินการทางตรรก (Logical Operator)(3) ตวั อยา่ ง การกระทาต่อไปน้ ีผลลพั ธท์ ่ีไดจ้ ะเป็ นจริงหรือเท็จ ถา้ X = 6 , Y = 13 และ Z = 4.2 (X != Y / 2) || (Z <= Y) && (!(Z == X/2)) วธิ ีทา (6 != 13 / 2) || (4.2 <= 13) && (!(4.2 == 6/2)) (6 != 6.5 ) || (4.2 <= 13) && (!(4.2 == 3 )) true || true && true true ดงั น้ันผลลพั ธท์ ี่ไดจ้ ะเป็ นจริง 36

4.4.3 ตวั ดาเนินการทางตรรก (Logical Operator)(4) ถา้ หากคอมพวิ เตอรท์ าคาสงั่ ต่อไปน้ ี !1&&0 ผลลพั ธเ์ ท่ากบั 0 หรือ เท็จ !(1&&0) ผลลพั ธเ์ ท่ากบั 1 หรือ จรงิ การดาเนินการทางตรรกและการเปรียบเทียบผลลพั ธท์ ี่ไดจ้ ะเป็ นคา่ จริง หรือเท็จ ซ่ึงโปรแกรมสามารถแสดงผลใหอ้ ยใู่ นรปู ของตวั เลขได้ ดงั ตวั อยา่ ง ชุดคาสงั่ ต่อไปน้ ี int x; x = 1; printf(‚%d‛,x>10); ผลลพั ธห์ ลงั จากการทาคาสงั่ คอมพิวเตอรจ์ ะพิมพ์ 1 เพราะ x มากวา่ 10 37

4.4.4 ตวั ดาเนินการแบบบิต (Bitwise Operators) มกั จะใหใ้ นการทดสอบบิต เล่ือนบิต เซ็ตบิต โดยนาไบตห์ รือเวิรด์ ขอ้ มูล มากระทาต่อกนั โดยกบั ชนิดขอ้ มลู แบบ char หรือ int เท่าน้ัน ตวั ดาเนินการ แบบบิตแสดงด้งั ตารางต่อไปน้ ี ตวั ดาเนินการ การกระทา & ดาเนินการ AND | ดาเนินการ OR ^ ดาเนินการ Exclusive OR (XOR) ~ กลบั คา่ บิต (1’s complement) >> เล่ือนทุกบิตไปทางขวา << เล่ือนทุกบิตไปทางซา้ ย 38

4.4.4 ตวั ดาเนินการแบบบิต (Bitwise Operators)(2) ตวั อยา่ ง การเล่ือนบิต ตวั แปร char x; คา่ ขอ้ มูล ค่าของ x x = 7; 00000111 7 x = x << 1; 00001110 14 x = x << 3; 01110000 112 x = x << 2; 11000000 192 x = x >> 1; 01100000 96 x = x >> 2; 00011000 24 39

4.4.5 ตวั ดาเนินการลาดบั การใหค้ ่า (Comma Operator) • ตวั ดาเนินการตวั น้ ีจะใชเ้ คร่ืองหมาย , (Comma) ซ่ึงใชใ้ นการรวมนิพจน์หรอื คาสงั่ หลายๆ ตวั ใหเ้ ป็ นคาสงั่ เดียว โดยการทางานจะป็ นลาดบั จากซา้ ยไปขวา ตวั อยา่ งเข่น X = (Y=3, Y+1); ผลลพั ธ์ X = 4 ตวั อยา่ งต่อไป Y=10; X = (Y =Y-5, 25/Y); ผลลพั ธ์ X = 5 40

4.5 การยุบนิพจนโ์ ดยใช้ (Compound Assignment) การใชต้ ัวดาเนินการบางประเภทสามารถนามารวมกนั เป็ น Compound operators ได้ ดงั ตวั อยา่ งตารางต่อไปน้ ี ตวั ดาเนินการ ตวั อยา่ ง การประมวลผล *= total *= 1.25; total = total * 1.25; /= ant /= factor ant = ant / factor; %= day %= 3; day = day % 3; += count += 1; count = count + 1; -= adjust -= 0.5; adjust = adjust – 0.5; <<= a <<= b a = a << b; &= a &= b a = a & b; |= a |= b a = a | b; ^= a ^= b a = a^ b; 41

4.6 การเปลีย่ นประเภทของขอ้ มูล char ch; int i; float f; double d; result = (ch / 1) + (f * d) – (f + d); int double double double double ***ให้นักเรียนเขยี นโปรแกรม ตวั อยา่ งท่ี 4.4 และ 4.5 (หนา้ 86-87) 42

สรุปทา้ ยบทเรียน 4.1 ชนิดของขอ้ มลู 4.2 การประกาศตวั แปรและค่าคงที่ 4.3 การต้งั ช่ือ 4.4 ตวั ดาเนินการ (Operator) 4.5 การยุบนิพจน์โดยใช้ (Compound Assignment) 4.6 การเปล่ียนประเภทของขอ้ มลู 43


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook