ข้อมูลและการดาเนินการกับข้อมูล อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (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) กลุ่มข้อมูลที่ประกอบ จากข้อมูลพื้นฐาน • ในการเขียนโปรแกรมเพื่อประมวลผลคอมพิวเตอร์ทมี่ ีประสิทธิภาพ ขึ้นอยู่กับ การจัดการตัวแปรตามโครงสร้างข้อมูลของภาษาคอมพิวเตอร์ เพื่อใช้การ ดาเนินการจัดเก็บ ประมวลผล และแสดงผลข้อมูลของผู้เขียนโปรแกรม