string = array of char
สตริง เป็นข้อมูลชนิดตัวอักษรหลายตัว เรียงกันรูปแถวลำดับ (array)
เราสามารถแสดงอักษรของ string ทีละตัวอักษรได้
ในโดยเขียนในลักษณะของ array of char ดังนี้
uses
crt ;
var
s : string;
begin
clrscr ;
s := 'nobita';
write ( s[3] );
readln ;
end.
โปรแกรมจะแสดง อักษร b เพียงตัวเดียว (ตัวอักษรตัวที่ 3)
array หมายเลข 0 ของ string
จะเก็บอักษร asscii เบอร์ที่ตรงกับ
จำนวนของอักษรของ string นั้นๆ
อย่างเช่น ด้านบน s[0] จะเท่ากับ chr(6)
การที่ s[0] เก็บตัวอักษร asscii เบอร์ที่ตรงกับจำนวนอักษร
หมายความว่า string สามารถมีขนาดตั้งแต่ 0 - 255 ตัวอักษร
|
คำสั่งในการแก้ไขสตริง
โพรซีเจอร์ ..
insert (ข้อความแทรก,var ข้อความที่จะแก้ไข, ตำแหน่ง )
s := 'game';
insert ('play ', s, 1);
{หลังจาก procedureทำงาน s เท่ากับ 'play game' }
delete (var ข้อความที่จะแก้ไข, ตำแหน่ง, จำนวนอักษร)
s := 'game';
delete ( s, 1, 2);
{หลังจาก procedureทำงาน s เท่ากับ 'me' }
ฟังค์ชั่น ..
หาตำแหน่ง
pos(ข้อความที่จะค้นหา, ข้อความ)
s := 'game';
write(pos('am', s));
{แสดง 2}
substring
copy(ข้อความ, ตำแหน่ง, จำนวนอักษร)
s:=copy( 'thailand', 7, 2 );
write ( s );
{แสดง nd}
การประกาศชนิดข้อมูล
ชนิดข้อมูลโดยทั่วไป compiler จัดสรรไว้ให้แล้ว
ตัวอย่างเช่น string char integer real boolean
แต่อย่างไรก็ตาม เพื่อให้โปรแกรมทำงานตรงกับความต้องการ
หรือทำให้โปรแกรมดูเข้าใจได้ง่ายและเป็นระเบียบมากยิ่งขึ้น
ผู้เขียนโปรแกรม สามารถจะสร้างชนิดข้อมูลขึ้นมาใหม่ดังต่อไปนี้
1. ลดความยาวของชนิดข้อมูล string
type
s30 = string[30];
var
person_name : s30;
เป็นการประกาศตัวแปรเป็น string ที่มีความยาวได้ไม่เกิน 30 ตัวอักษร
2. ประกาศตัวแปร array มาสร้างเป็นชนิดข้อมูล
type
score_of_student = array[1..50] of integer;
var
mor1_1score : score_of_student;
mor1_2score : score_of_student;
3. ประกาศข้อมูลชนิดช่วง
type
num_of_student = 1..50 ;
exam_score = 1..100;
grade = 'A'..'F' ;
var
mor3_1num : num_of_student;
mor3_2num : num_of_student;
math_score : exam_score;
EnGrade : grade;
4. ประกาศเป็น enumerated (ตัวแปรชนิดกำหนดเอง)
type
days = (sun,mon,tue,wed,thu,fri,sat);
var
day : days;
begin
day := mon;
{ในการทราบลำดับของข้อมูล ของตัวแปรจะใช้ function ord() ดังนี้}
write (ord(day));
readln;
end.
ตัวแปรชนิด enumerated ไม่ใช่ตัวแปรสตริง
การประกาศตัวแปรชนิดนี้จะเป็นการ
ประกาศตัวแปรชนิด ordinal (ตัวแปรที่มีลำดับ)
5. ในภาษา pascal นี้ยังสามารถสร้างชนิดของตัวแปรได้อีกหลายชนิด
เช่น record, file, pointer, object, set แต่ในเบื้องต้นจะศึกษาเพียงเท่านี้ครับ
|
array แบบหลายมิติ
การประกาศ ตัวแปร 2 มิติ
var
list : array[1..3,1..5] of string;
หรือ
type
s = array[1..5] of string;
var
list : array[1..3] of s;
เป็นการประกาศตัวแปร
list[1,1],list[1,2],list[1,3],list[1,4],list[1,5],
list[2,1],list[2,2],list[2,3],list[2,4],list[2,5],
list[3,1],list[3,2],list[3,3],list[3,4],list[3,5]
เป็นชนิด string
การใช้งานก็เหมือนกับ array ธรรมดา
เช่น
list[1,1] := 'doraemon';
* การประกาศ array 3 4 มิติก็จะใช้วิธีการเขียนคล้ายๆ กัน
|