SƏTİRLƏRLƏ İŞ
Proqramlaşdırma dillərinin hamısında simvollar ardıcıllığı, başqa sözlə, sətir-
lərlə iş nəzərdə tutulub.
Sətir konstantla, yaxud dəyişənin qiymətilə verilə bilər. Pascal dilində sətir
konstantı apostrofa alınmış simvollar ardıcıllığı kimi verilir:
‘Pascal’
‘1234’
‘Araz çayı’
‘’
ardıcıllığı uzunluğu sıfır olan xüsusi sətir konstantıdır. Belə sətrə boş sətir
deyilir.
Sətrin maksimal uzunluğu konkret proqramlaşdırma dilindən, yaxud verilmiş
dilin konkret translyatorundan asılıdır. Müasir proqramlaşdırma sistemlərində
sətirlərin uzunluğuna praktik olaraq hədd qoyulmur.
Turbo Pascal dilində sətir dəyişənləri
string
tipinə malikdir. Məsələn, proq -
ramda
var a: string;
təsviri
a
-nın sətir dəyişəni olduğunu bildirir.
Sətirlərlə əməliyyatlar ədədlərlə yerinə yetirilən əməliyyatlardan fərqlənir.
Sə tirlərin toplanması və ya çıxılmasının, vurulması və ya bölünməsinin elə bir
mənası yoxdur. Sətirlər üzərində aparılan əsas əməliyyat sətirlərin birləş di ril -
məsi, yaxud konkatenasiyasıdır. Bu əməliyyat nəticəsində ikinci sətir birinci sət -
rin sonuna birləşdirilir. Konkatenasiya əməli
+
(plyus) simvolu ilə işarə olu nur.
var a, man: string;
...
man := ‘On’;
a := man + ‘ manat’;
Əməl işarələri eyni olsa da, (
+
) birləşdirmə əməli toplama əməlindən fərqlə -
nir.
Sətirləri birləşdirmək üçün
Concat
funksiyasından da istifadə olunur.
Məsələn,
a := Concat(man, ‘ manat’);
1.11.
46
Əslində sətirlər üzərində əməllər ədədlər üzərindəki əməllərdən daha çoxdur.
Ancaq burada hər hansı əməl işarəsindən istifadə o qədər də əlverişli deyil və
qeyri-adidir. Ona görə də qalan sətir əməlləri, adətən, standart funksiyalar va si -
təsilə yerinə yetiri lir. Proqramlaşdırma dillərinin əksəriyyətində aşağıdakı əmə -
liy yatlar mümkündür:
• sətrin uzunluğunun müəyyənləşdirilməsi;
• alt sətrin seçilməsi;
• simvolların artırılması, yaxud uzaqlaşdırılması;
• sətirdə simvolun axtarılması;
• sətirdəki simvolların (hərflərin) registrinin dəyişdirilməsi.
Bu göstərilən və bəzi başqa əməliyyatları yerinə yetirmək üçün Turbo Pascal
dilində nəzərdə tutulmuş funksiyalarla tanış olaq.
Length (St) .
Bu funksiya
St
sətrinin uzunluğunu hesablayır. Sətrin uzun-
luğu dedikdə həmin sətirdə olan simvolların sayı nəzərdə tutulur. Boş sətrin
uzunluğu 0-a bərabərdir. Hər hansı
S
sətrinin uzunluğunu hesablayıb
LenS
də yi şə ninə mənimsətmək əməlini
LenS := Length(S)
;
operatoru kimi yazmaq lazım dır.
S := ‘Hello’;
L := Length(S);
WriteLn_(L);_{_Çıxışa_5_qiyməti_veriləcək_}_S_:=_‘Hello_Students’;_WriteLn'>WriteLn(L);
{ Çıxışa 5 qiyməti veriləcək }
S := ‘Hello Students’;
WriteLn(Length(S)); { Çıxışa 14 qiyməti veriləcək }
S := ‘ ’;
{ Boş sətir }
WriteLn(Length(S)); { Çıxışa 0 qiyməti veriləcək }
Copy (St,Index,Count).
Bəzən sətrin müəyyən hissəsini ayırıb götür mək la -
zım gəlir. Məsələn, əgər
Date
dəyişəninə mənimsədilmiş
’17 may 2008’
sət -
rin dəki üç komponenti (gün, ay, il) ayrı-ayrı emal etmək tələb olunursa, bunu
Copy
funksiyası vasitəsilə etmək mümkündr.
Tutaq ki, proqramda tarix sətri GG AAA İİİİ formatındadır. (Burada GG –
ayın gününü (1-2-ci simvollar), AAA – ayın adının qısaldılması (4-6-cı sim -
1.
PASCAL
proqramlaşdırma dili
47
vol lar) və İİİİ – ili (8-11-ci simvollar) göstərir). Əgər
Date, Month, Day
və
Year
sətir dəyişənləridirsə, aşağıdakı operator
Day
dəyişəninə
Date
sətrinin
birinci simvolundan başlayaraq iki ardıcıl simvol (‘17’) mənimsədəcək.
Day := Copy (Date, 1, 2);
Eyni qayda ilə ayı göstərən alt sətir (
‘may’
)
Month
dəyişəninə, ili bildirən
alt sətir (
‘2008’
) isə
Year
dəyişəninə mənimsədilir.
Month := Copy (Date, 4, 3);
Year := Copy (Date, 8, 4);
Insert (Subst,St,Index).
Bu prosedur
St
sətrinə
Index
möv qe yindən başla-
yaraq
Subst
sətrini artırır. Məsələn,
Insert (‘p’, ‘Alay’, 3)
prosedurunun icrasından sonra
‘Alay’
sətri
‘Alpay’
sətrinə çevriləcək.
Delete (St,Index,Count).
Bu prosedur
St
sətrinin
Index
möv qe yin dən baş -
la yaraq
Count
sayda simvolu silir. Məsələn,
Delete (‘Alqoritm’,1,4)
prose du -
runun tətbiqi nəticəsində
‘Alqoritm’
sətri
‘ritm’
sətrinə çevriləcək.
Pos (Subst,St).
Bu funksiya
St
sətrində
Subst
alt sətrini axtarır. Əgər ax ta -
rış uğurlu olarsa, funksiya nəticədə alt sətrin aşkarlandığı mövqenin nömrəsi-
ni verir. Əks halda, yəni axtarış uğursuz olarsa, funksiyanın nəticəsi 0 (sıfır)
olacaq. Nəzərə almaq lazımdır ki, bu funksi ya alt sətri birinci aşkarladığı
mövqenin nömrəsini çıxışa verir. Başqa sözlə, əgər sətirdə axtarılan alt sətirdə
bir neçə dəfə rast gəlinirsə, funksiyanın nəticəsi olaraq alt sətrin ilk aşkarlan -
dığı yerin nömrəsi götürüləcək.
48
S := ‘1 nömrəli orta məktəb’;
S1 := ‘orta’;
J := Pos(S1, S);
WriteLn(J); { Ekrana 11 ədədi çıxarılacaq }
S1 := ‘əsas’;
J := Pos(S1, S);
WriteLn(J); { Ekrana 0 ədədi çıxarılacaq }
Val (St,X,Code).
Turbo Pascalda sətri ədədə çevirən standart funksiya –
Val
funksiyası vardır. Bu zaman, təbii ki, çevrilən sətir ədədi sətir olmalıdır (yəni,
ədəddən ibarət olmalıdır, məsələn, ‘17.5’, yaxud ‘1234’). Funksiyanın pa ra -
metrlərindən
St
ilkin sətrin özü,
X
alınan ədədin mənimsədildiyi dəyişən,
Code
isə çevrilmənin uğurla keçib-keçmədiyini bildirən parametrdir. Belə ki,
çevrilmə uğurlu olarsa,
Code
parametrinin qiyməti 0 olacaq, əks halda həmin
parametrə sətirdə səhvin baş verdiyi yerin nömrəsi yazılacaq. Aşağıdakı pro-
qram fraqmenti
NumStr
dəyişəninə tam ədədi qiymət verir.
repeat
Write (‘Tam ədədi daxil edin: ’);
ReadLn (NumStr);
Val (NumStr, IntNum, Error)
until Error = 0;
Əgər daxil edilən ədəd sətirdirsə,
Val
proseduru bu sətri
IntNum
tam ədədi nə
mənimsədir. Əgər oxunan sətirdə rəqəmdən başqa ayrı simvollar da olarsa,
Error
dəyişəninin qiyməti sıfırdan fərqli olacaq və beləliklə də dövr təkrarla -
na caq.
Str (X,St)
. Bu prosedur
Val
prosedurunun əksini edir, yəni ədədi sətrə çe vi rir.
Str (123 :5, NumSt)
operatoru
NumSt
dəyişəninə ‘ 123’ sətrini yazacaq.
Burada 5 sətirdəki simvolların sayını göstərir.
İndi göstərilən prosedurların bəzilərinin tətbiq olunduğu aşağıdakı misala
baxaq. Burada istifadəçinin göstərdiyi sözə sətirdə neçə dəfə rast gəlindiyi he -
sablanır.
1.
PASCAL
proqramlaşdırma dili
49
Dostları ilə paylaş: |