710130 06 datatype

Page 1

ข้อมูลและการดาเนินการกับข้อมูล อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)


เนื้อหาที่สนใจ • ชนิดของข้อมูล (data type) – Primary Data Types • ชนิดข้อมูลแบบจานวนเต็ม • ชนิดข้อมูลแบบทศนิยม • ชนิดข้อมูลแบบตัวอักษร • Void Data type – Secondary Data Types • Derived Data types • User Defined types

• การนาชนิดข้อมูลแบบต่าง ๆ มาใช้ในการเขียนโปรแกรมผ่านตัวแปรของภาษาซี

http://1.bp.blogspot.com/-tw1caa8lBus/Vphe8RV3rwI/AAAAAAAAAKM/wAhp-ds7iQM/s1600/8.png


ชนิดของข้อมูล (data type) • ชนิดของข้อมูล หรือ ข้อมูลพื้นฐาน คือ การจัดหมวดหมู่ของข้อมูล ซึ่งช่วย ให้ตัวแปลภาษาทราบว่าจะนาไปใช้ในการเขียนโปรแกรม • ชนิดข้อมูลแต่ละชนิด มีรูปแบบและการดาเนินการที่แตกต่างกันไป • ภาษาคอมพิวเตอร์ต่างๆ จะรองรับชนิดข้อมูลพื้นฐาน • ขนาดในการจัดเก็บในหน่วยความจาและค่าที่เป็นไปได้ เช่น

http://javaeasy.weebly.com/java-data-types.html


http://www.wearejobseekers.com/online-tests/computer-science-tests/c-programming-tests/quiz-on-data-types/


Primary Data Types

– ความแตกต่างของข้อมูลแต่ละชนิดในการประมวลผลข้อมูล – ข้อมูลเชิงเดี่ยว http://www.studytonight.com/c/datatype-in-c.php


การกาหนดพื้นที่ในหน่วยความจา

http://www.eitworld.com/Popular_Tutorials/C_Tutorial/C-Data-types.html


ชนิดข้อมูลแบบจานวนเต็ม (Integer Data type)

http://www.btechsmartclass.com/CP/c-data-types.htm


ชนิดข้อมูลแบบทศนิยม (Floating Point Data type)


ชนิดข้อมูลแบบตัวอักษร (Character Data type)


Void Data type • ชนิดข้อมูลว่างเปล่า ไม่มีค่าใด ๆ • กาหนดฟังก์ชันที่ไม่ได้ส่งคืนค่า คือฟังก์ชันที่พิมพ์เฉพาะข้อความและไม่มี ค่าที่จะส่งคืน เช่น


Secondary Data Types • ประกอบด้วย – Derived Data types – User Defined types

• ข้อมูลเชิงกลุ่ม หรือชุดข้อมูล

https://www.boxatwork.com/


Derived Data types • • • •

Arrays ชนิดข้อมูลแบบเรียงแถว Structures ชนิดข้อมูลแบบโครงสร้าง Unions ชนิดข้อมูลแบบยูเนียน Enumeration ชนิดข้อมูลแบบสัญลักษณ์

https://uk.pinterest.com/explore/data-structures/


ชนิดข้อมูลแบบโครงสร้าง • รูปแบบ struct struct_name { member_type1 member_name1; member_type2 member_name2; member_type3 member_name3; . . } object_names;

ตัวอย่าง struct person { char name[20]; int age; float money; };

• การใช้งาน struct person student; – strcpy(student.name, “somkiat"); – student.age = 35; – student.money = 20.50; http://marcuscode.com/lang/c/structures


structure กับอาร์เรย์ struct point { float x; float y; };

struct point p[2]; p[0].x = 1.5; p[0].y = 2.3; p[1].x = -3.4; p[1].y = -5.4;

https://xn--3ds84hvwlol4b.com/amazon/credit-card/


User Defined types • ผู้เขียนโปรแกรม สามารถกาหนดชนิดข้อมูลขึ้นเองได้ • สร้างจากชนิดข้อมูลพื้นฐาน • “enum” ใช้กาหนดเป็นชนิดข้อมูลในการเขียนโปรแกรม


การนาประเภทข้อมูลมาใช้งาน • สัญลักษณ์ที่ใช้แทนข้อมูลแต่ละประเภท ทาให้ทราบปริมาณหรือขนาด ของข้อมูลที่จัดเก็บในหน่วยความจา ผ่านชื่อ “ตัวแปร” • เช่น int x = 0 หมายถึง x คือ จานวนเต็ม 0 • หรือ char ans=‘n’ หมายถึง ans คือ ตัวอักษร n

http://www.dife.info/index.php/art-design-and-technology/multimedia-production


หลักการตั้งชื่อตัวแปร 1. 2. 3. 4.

ต้องขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _(Underscore) เท่านั้น ภายในชื่อตัวแปรสามารถใช้ตัวอักษร A-Z หรือ a-z หรือตัวเลข0-9 หรือเครื่องหมาย _ ภายในชื่อห้ามเว้นชื่องว่าง หรือใช้สัญลักษณ์นอกเหนือจากข้อ 2 ตัวอักษรเลขหรือใหญ่มีความหมายแตกต่างกัน

http://www.natthawat.us/index.php/2015-05-27-03-00-16/75-5


การประกาศตัวแปรในภาษา C int num; float y; char n;

สร้างตัวแปรชื่อ num เพื่อเก็บข้อมูลชนิดจานวนเต็ม สร้างตัวแปรชื่อ y เพื่อเก็บข้อมูลชนิดเลขทศนิยม สร้างตัวแปรชื่อ n เพื่อเก็บข้อมูลชนิดตัวอักขระ

int num; num=10; num=1*5; float y; y= 10.40f; y=3/2; char n; n=‘y’; n=‘n’;

http://www.c4learn.com/java/java-variable-naming-rules/


ประกาศตัวแปรสาหรับข้อความ • char name[n] = “str”; • สตริง (String) คือ การจัดเก็บตัวอักษรหลายๆ ตัวต่อเรียงกัน หรือ • ชุดข้อมูลแบบเรียงแถว (Array) – อาร์เรย์ของตัวอักษรมาต่อกันจานวน n ตัว

https://www.tutorialspoint.com/cprogramming/c_strings.htm


รหัสควบคุมลักษณะ (Format String)

• ในการเขียนโปรแกรมเบื้องต้น มักจะแสดงผลผ่านหน้าจอคอมพิวเตอร์ http://www.macare.net/c/index.php?id=-22


การแปลงชนิดของข้อมูล (Data Type Conversion) • แปลงชนิดข้อมูลอัตโนมัติโดยคอมไพเลอร์ (Implicit Type Conversion) • •

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

• แปลงชนิดข้อมูลตามผู้เขียนโปรแกรม (Explicit Type Conversion) • (ชนิดข้อมูลDesc) นิพจน์หรือตัวแปรที่ต้องการแปลงข้อมูล • เช่น AA = (float)A


ตัวดาเนินการทางคณิตศาสตร์ ตัว ดาเนินการ

กระบวนการ

ข้อมูลที่ถูกกระทา

ข้อมูลผลลัพธ์

+

บวก (Addition)

จานวนเต็ม,จานวนจริง

จานวนเต็ม,จานวนจริง

-

ลบ (Subtraction)

จานวนเต็ม,จานวนจริง

จานวนเต็ม,จานวนจริง

*

คูณ (Multiplication)

จานวนเต็ม,จานวนจริง

จานวนเต็ม,จานวนจริง

/

หาร (Real Number Division)

จานวนเต็ม,จานวนจริง

จานวนจริง

%

การหารแบบเอาเศษ (Modulus)

จานวนเต็ม

จานวนเต็ม

https://sites.google.com/a/moeipit.ac.th/kheiyn-porkaerm-phasa-si/khxmul-laea-taw-danein-kar http://www.jaturapad.com/online-class/c/l03-04.html


ตัวดาเนินการเปรียบเทียบ ตัวดาเนินการ

การกระทา

==

เท่ากับ

!=

ไม่เท่ากับ

<=

น้อยกว่าหรือเท่ากับ

>=

มากกว่าหรือเท่ากับ

>

มากกว่า

<

น้อยกว่า


ตัวดาเนินการทางตรรกศาสตร์ ตัวดาเนินการ

การกระทา

&&

ดาเนินการ AND ค่าสองค่า ถ้าค่าทั้งสองเป็นจริง ผลลัพธ์จะเป็นจริง

||

ดาเนินการ OR ค่าสองค่า ถ้าค่าทั้งสองเป็นเท็จ ผลลัพธ์จะเป็นเท็จ

!

ดาเนินการ NOT เปลี่ยนค่า จากจริงเป็นเท็จ จากเท็จเป็นจริง


ตัวดาเนินการแบบบิต ตัวดาเนินการ

การกระทา

&

ดาเนินการ AND ให้ค่าของบิตผลลัพธ์เป็น 1 ถ้าบิตที่นามาดาเนินการ And กันเป็น 1 ทั้งคู่ กรณีอื่น ๆ จะให้ค่าของบิตผลลัพธ์เป็น 0

|

ดาเนินการ OR ให้ค่าของบิตผลลัพธ์เป็น 0 ถ้าหากบิตที่นามาดาเนินการ or กันเป็น 0 ทั้งคู่ กรณีอื่น จะให้ค่าของบิตผลลัพธ์เป็น 1

^

ดาเนินการ Exclusive OR (XOR) การกาหนดค่าให้ตัวแปรทางซ้ายมือลดค่าลงเท่ากับค่า (expression) หรือตัวแปรทางขวามือ

~

ดาเนินการ NOT กลับค่าบิตจาก 0 เป็น 1 และจาก 1 เป็น 0 (1's complement)

>>

ดาเนินการ Shift right เลื่อนทุกบิตไปทางขวา

<<

ดาเนินการ Shift left เลื่อนทุกบิตไปทางซ้าย


ตัวดาเนินการกาหนดค่าเชิงประกอบ ตัวดาเนินการ

ตัวอย่าง

การประมวลผล

*=

a *= 1.25

a = a * 1.25

/=

b /= c

b=b/c

%=

d %= 3

d=d%3

+=

x += 1

x=x+1

-=

y -= z

y=y-z


ตัวดาเนินการเพิ่มค่าและลดค่า ตัวดาเนินการ

นิพจน์

ความหมาย

++ (Prefix)

++a

เพิ่มค่าให้กับ a หนึ่งค่าก่อน จึงนาค่าใหม่ของ a ในนิพจน์นี้ไปใช้

++ (Postfix)

a++

นาค่าปัจจุบันของ a ในนิพจน์นี้ไปใช้ก่อน จึงเพิ่มค่าให้กับ a หนึ่งค่า

-- (Prefix)

--b

ลดค่าให้กับ b หนึ่งค่าก่อน จึงนาค่าใหม่ของ b ในนิพจน์นี้ไปใช้

-- (Postfix)

b--

นาค่าปัจจุบันของ b ในนิพจน์นี้ไปใช้ก่อน จึงลดค่าให้กับ b หนึ่งค่า


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

ตัวดาเนินการ

ความหมาย

1

()

เครื่องหมายวงเล็บ

2

++, --

ตัวดาเนินการเพิ่มค่า/ลดค่า

3

-, !

ยูนารีลบ (เอกภาคลบ) และตรรกะ NOT

4

*, /, %

คูณ หาร โมดูลัส

5

+, -

บวก ลบ


ตัวดาเนินการข้อความ • # include<string.h> • ฟังก์ชันที่ใช้งานเกี่ยวกับสตริง (string functions) – ฟังก์ชัน strlen( ) ความยาวของข้อความ – ฟังก์ชัน strcmp( ) เปรียบเทียบข้อความ 2 ชุด – ฟังก์ชัน strcpy( ) คัดลอกข้อความ – ฟังก์ชัน strcat( ) ต่อข้อความ – ฟังก์ชัน strstr() ตัดข้อความ

https://pixabay.com/th/ข้อความ-ลูกโป่ง-คาพูด-สัญลักษณ์-35398/


โครงสร้างข้อมูล • ความเข้าใจโครงสร้างข้อมูลแต่ละชนิด ทาให้เข้าใจตรรกะที่เกี่ยวกับวิธีการสร้าง การ ดึงข้อมูล และการเข้าถึงข้อมูลได้อย่างรวดเร็ว • ช่วยให้นาขั้นตอนวิธีต่างๆ มาพัฒนาโปรแกรมให้มีประสิทธิภาพ สามารถแก้ไขปัญหา ที่ยุ่งยากซับซ้อนได้

http://hassayaneee.blogspot.com/

http://www.thaiall.com/datastructure/


สรุป • ข้อมูลและการดาเนินการกับข้อมูล การประกาศตัวแปรเพื่อจัดเก็บข้อมูลโดย ระบุประเภทของข้อมูล เพื่อช่วยในการจัดการพืน้ ที่ในหน่วยความจาและ กาหนดขอบเขตของข้อมูลที่ใช้ในการเขียนโปรแกรม • ประเภทของข้อมูลแบ่งเป็น 2 แบบ 1) ข้อมูลพื้นฐาน 2) กลุ่มข้อมูลที่ประกอบ จากข้อมูลพื้นฐาน • ในการเขียนโปรแกรมเพื่อประมวลผลคอมพิวเตอร์ทมี่ ีประสิทธิภาพ ขึ้นอยู่กับ การจัดการตัวแปรตามโครงสร้างข้อมูลของภาษาคอมพิวเตอร์ เพื่อใช้การ ดาเนินการจัดเก็บ ประมวลผล และแสดงผลข้อมูลของผู้เขียนโปรแกรม


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.