หน่วยการเรียนรู้ที่ 8 ประเภทของข้อมูล
ประเภทของข้อมูลและตัวดำเนินการ
ในการเขียนโปรแกรมคอมพิวเตอร์ จะต้องมีการประมวลผลข้อมูล โดยข้อมูลจะถูกเก็บอยู่ในหน่วยความจำของคอมพิวเตอร์ในรูปแบบของตัวแปร การประกาศตัวแปรต่างๆ จะใช้หน่วยความจำไม่เท่ากัน และมีช่วงของการเก็บข้อมูลที่ไม่เท่ากัน ผู้เขียนโปรแกรมจำเป็นที่จะต้องทราบว่าข้อมูลที่ต้องการประมวลผลนั้นเป็นข้อมูลประเภทใด และในการประมวลผลจะต้องมีการกระทำกับตัวแปรต่างๆ ตัวที่มานำกระทำเรียกว่าตัวดำเนินการ ซึ่งมีทั้งการดำเนินการทางคณิตศาสตร์และทางลอจิก
ชนิดของข้อมูล
การประกาศข้อมูลในการเขียนโปรแกรมจะเป็นการกำหนดชื่อชนิดของข้อมูล หรือกำหนดประเภทของข้อมูลขึ้นมาใหม่ โดยข้อมูลในภาษาปาสคาลอาจแบ่งออกได้เป็น 4 กลุ่มดังต่อไปนี้
1. ข้อมูลชนิดซิมเปิล (Simple Type)
2. ข้อมูลชนิดสตริง (String Type)
3. ข้อมูลชนิดโครงสร้าง ( Structure Type)
4. ข้อมูลชนิดพอยต์เตอร์ ( Pointer Type)
1. ข้อมูลชนิดซิมเปิล
ข้อมูลชนิดซิมเปิลแบ่งได้เป็นข้อมูลประเภทลำดับ (Ordinal Type) และข้อมูลประเภทจำนวนจริง (Real Data Type) โดยข้อมูลแบบลำดับเป็นข้อมูลที่มีค่าเป็นลำดับแน่นอน เช่น ตัวเลขที่ใช้ในการนับลำดับตัวอักษร
ข้อมูลชนิดจำนวนเต็ม (Integer Data Type)
ข้อมูลชนิดนี้ใช้เก็บตัวเลขที่เป็นจำนวนเต็ม โดยข้อมูลชนิดนี้ยังแบ่งได้หลายประเภทขึ้นกับขนาดของหน่วยความจำที่คอมพิวเตอร์ใช้เก็บ โดยข้อมูลประเภทต่างๆ แสดงได้ดังตารางต่อไปนี้
ประเภท | ช่วงของข้อมูลที่เก็บได้ | ขนาดหน่วยความจำ |
byte | 0...255 | 1 ไบต์ |
shortint | -128...127 | 1 ไบต์ |
integer | -32768...32767 | 2 ไบต์ |
word | 0...65535 | 2 ไบต์ |
longint | -2,147,483,648...2,147,483,647 | 4 ไบต์ |
ข้อมูลชนิดตัวอักขระ (Character Data type)
ข้อมูลชนิดนี้จะเป็นตัวอักขระหนึ่งตัว ซึ่งเป็นไปตามตามรางรหัส ASCII ประกอบด้วยข้อมูลที่เป็นตัวอักษร ตัวเลข และอักขระพิเศษ ข้อมูลประเภทนี้ถึอได้ว่าเป็นข้อมูลแบบลำดับ เนื่องจากจะเรียงตามลำดับรหัส ASCII ข้อมูลประเภทนี้จะใช้เนื้อที่ในการเก็บหนึ่งไบต์ การประกาศข้อมูลให้เป็นตัวอักขระจะใช้คำว่า "Char"
ข้อมูลชนิดตรรกะ (Boolean Data type)
จะเป็นค่าทางลอจิก ได้แก่ จริง (True) กับเท็จ (False) ใช้ในคำสั่งควบคุมเพื่อตัดสินใจ การทำงานในการเรียงลำดับจะให้ค่าที่เป็นเท็จมีลำดับก่อนค่าที่เป็นจริง
ข้อมูลชนิดจำนวนจริง (Real Data type)
ข้อมูลชนิดนี้จะเป็นจำนวนจริงหรือเลขทศนิยม ข้อมูลชนิดนี้จะจัดลำดับก่อนหลังได้ยาก จึงไม่เป็นข้อมูลชนิดลำดับเนื่องจากทศนิยมมีได้หลายตำแหน่ง ข้อมูลจำนวนจริงนี้ยังแบ่งออกได้หลายประเภท โดยแต่ละประเภทจะใช้หน่วยความจำในการเก็บที่แตกต่างกัน ทำให้ข้อมูลที่ได้มีความต่างกัน ดังตัวอย่างตารางดังต่อไปนี้
ประเภท | ช่วงของข้อมูลที่เก็บได้ | ขนาดหน่วยความจำ |
real | 2.9 E -39 ... 1.7 E +38 | 6 ไบต์ |
single | 1.5 E -45 ... 3.4 E +38 | 4 ไบต์ |
double | 5.0 E -324 ... 1.7 E +308 | 8 ไบต์ |
extended | 3.4 E -4932 ... 1.1 E +4932 | 10 ไบต์ |
comp | -263 + 1 ... 263 -1 | 8 ไบต์ |
หมายเหตุ: 2.9 E -39 มีค่าเท่ากับ 2.9*10-3.9
ข้อมูลชนิดสตริง (String type)
ข้อมูลชนิดนี้จะเป็นการนำตัวอักขระมาเรียงต่อกันเป็นข้อความ โดยสามารถเก็บตัวอักขระได้สูงสุด 255 ตัวอักษร
ส่วนประกาศ (Declaration Part)
ในการเขียนโปรแกรมจะต้องมีส่วนสำหรับประกาศชนิดของข้อมูล (type), (label), (const), (var), (procedure) และ ฟังก์ชั่น
การประกาศค่าคงที่
ค่าคงที่เป็นค่าในหน่วยความจำที่มีค่าคงที่ตลอดโปรแกรม ในการประกาศค่าคงที่จะเป็นการกำหนดชื่อให้กับค่าคงที่ ถ้าในโปรแกรมส่วนใดเรียกชื่อที่ประกาศไว้ก็จะได้ข้อมูลตามที่ได้กำหนดไว้ การประกาศค่าคงที่จะใช้คำว่า const นำหน้าชื่อที่จะใช้เป็นค่าคงที่ โดยทำได้สองลักษณะดังนี้
รูปแบบ
const ชื่อ = ประเภทของข้อมูล = ค่าคงที่;
ในการประกาศค่าคงที่นี้เราอาจประกาศเพียงตัวเดียว หรือทำการประกาศพร้อมกันหลายตัวก็ได้
ตัวอย่างโปรแกรม
const size = 5;
perfect = 100.0;
pi = 3.14159;
การประกาศค่าคงที่ในลักษณะนี้ ภาษาปาสคาลจะเลือกประเภทของข้อมูลที่เหมาะสมให้กับชื่อค่าคงที่เอง โดย size จะเป็นข้อมูลประเภท integer ส่วน perfect และ pi จะเป็นข้อมูลประเภท real แต่ในการประกาศค่าคงที่นั้นสามารถกำหนดประเภทของข้อมูลลงไปได้ด้วย
ตัวอย่างโปรแกรม
const min = integer = 0;
ในตัวอย่างโปรแกรมนี้จะให้ชื่อ min มีค่าเท่ากับ 0 และเป็นข้อมูลชนิดตัวเลขจำนวนเต็ม โดยในการประกาศค่าคงที่นี้ ข้อมูลที่เก็บจะอยู่ในหน่วยความจำ ภาษาปาสคาลจะมองชื่อค่าคงที่เป็นหน่วยความจำตำแหน่งหนึ่งที่เก็บค่านั้น
การประกาศตัวแปร
ในภาษาปาสคาลสามารถประกาศตัวแปรสำหรับเก็บข้อมูลได้ โดยชื่อตัวแปรจะเป็นตำแหน่งหน่วยความจำที่เก็บข้อมูลอยู่ เป็นข้อมูลตามประเภทที่กำหนด และข้อมูลที่เป็นตัวแปรนี้จะสามารถเปลี่ยนแปลงได้โดยการทำงานของโปรแกรม
ในการเขียนโปรแกรมส่วนใหญ่จะต้องมีการประกาศตัวแปรเสมอ ในการรับข้อมูลจากแป้นพิมพ์เข้าสู่เครื่องคอมพิวเตอร์ จะมีการประกาศตัวแปรเอาไว้ ข้อมูลที่รับเข้ามาจะถูกนำไปเก็บไว้ในตัวแปรที่ได้ประกาศเอาไว้ การประกาศตัวแปรจะใช้คำว่า "var " นำหน้า ดังรูปแบบต่อไปนี้
รูปแบบ
var<ชื่อตัวแปร...> : ประเภทของข้อมูล;
<ชื่อตัวแปร...> : ประเภทของข้อมูล;
ในการประกาศตัวแปรสามารถประกาศครั้งละหลายตัวได้ ถ้าหาเป็นตัวแปรประเภทเดียวกันจะใช้เครื่องหมาย , คั่น ตัวอย่างเช่น จะประกาศตัวแปรชื่อ data1 และ data2 สำหรับเก็บตัวเลขจำนวนเต็มสามารถทำได้ดังนี้
var data1,data2 : integer;
แต่ถ้ามีการประกาศตัวแปรให้ชื่อ data1 เก็บเลขจำนวนเต็ม และ data2 เก็บเลขจำนวนจริงสามารถทำได้ดังนี้
var data1 : integer;
data2 : real;
ถ้าหากมีการประกาศตัวแปรเป็น
var ch : char;
คำว่า "char" ย่อมาจากคำว่า character ซึ่งเป็นข้อมูลที่ใช้สำหรับเก็บตัวอักขระตัวเลขหรือสัญลักษณ์ เพียง 1 ตัว การประกาศแบบนี้หมายความว่าให้ตัวแปร ch เป็นตัวแปรสำหรับเก็บอักขระตัวเดียว โดยจะต้องเขียนอยู่ในเครื่องหมาย ' ' เช่น 'A', 'a', '5', '=' เป็นต้น และนอกจากนี้เรายังสามารถกำหนดให้ตัวแปรนี้เก็บรหัสแอสกีของตัวอักขระได้ เช่น ถ้าต้องการเก็บอักขระที่มีรหัสแอสกีเป็น 201 สามารถทำได้ดังนี้
ch := #201;
ต่อมาถ้ามีการเขียนคำสั่งเป็น
writeln(ch);
ผลลัพธ์ที่ได้จะเป็นการพิมพ์ตัวอักขระที่มีรหัสแอสกีเท่ากับ 201
การประกาศประเภทของข้อมูลใหม่
การกำหนดข้อมูลชนิดใหม่นอกเหนือจากข้อมูลที่มีอยู่แล้วจะใช้คำว่า type นำหน้าโดยข้อมูลที่กำหนดอาจเป็นช่วงของข้อมูลหรือลำดับของข้อมูลก็ได้ โดยมีรูปแบบดังต่อไปนี้
รูปแบบ
type
ชื่อข้อมูลใหม่ = ข้อมูลที่กำหนด;
ชื่อข้อมูลใหม่ = ข้อมูลที่กำหนด;
................ ...................
ตัวอย่าง
ถ้าต้องการประกาศชื่อข้อมูลใหม่ให้ชื่อว่า days โดยข้อมูลนี้ประกอบด้วยคำย่อของวัน 7 วัน เช่น SUN MON TUE WED THU FRI และ SAT
type
days = (SUN,MON,TUE,WED,THU,FRI,SAT);
scores = 0...100;
weekdays = MON...FRI;
กฎการตั้งชื่อ
ในการเขียนโปรแกรมจะต้องมีการกำหนดชื่อต่างๆ หรือไอเดนติไฟเออร์ (Identifier) เพื่อให้โปรแกรมทำงานได้ ตัวอย่างเช่น การกำหนดชื่อโปรแกรม ชื่อของตัวแปรต่างๆ เป็นต้น การตั้งชื่อในภาษาปาสคาลมีรูปแบบดังนี้
1. ชื่อจะต้องไม่ซ้ำกับคำสงวน (Reserve word) และคำมาตรฐานที่คอมไพล์เลอร์รู้จัก
2. จะต้องขึ้นต้นด้วยตัวอักษร (A-Z,a-z)
3. ตัวต่อไปจะต้องเป็นตัวอักษรหรือตัวเลขหรือสัญลักษณ์
4. การตั้งชื่อจะต้องไม่มีช่องว่าง
คำสงวน เป็นคำที่มีความหมายที่โปรแกรมรู้จัก โดยมีรูปแบบการใช้งานที่แน่นอน ส่วนคำมาตรฐานเป็นคำที่มีความหมายอยู่แล้ว โปรแกรมสามารถเรียกใช้งานได้เลย คำสงวนในภาษาปาสคาล ได้แก่
absolute external mod shr and file nil string array for not then begin forward object to case function of type const goto or unit constructor if packed until destructor implementation procedure uses div in program var do inline record virtual downto interface repeat while else interrupt set with end label shl xor |