Pascal - Dizeler
Pascal'daki dizge, aslında isteğe bağlı bir boyut belirtimine sahip bir karakter dizisidir. Karakterler sayısal, harfler, boş, özel karakterler veya hepsinin bir kombinasyonu olabilir. Extended Pascal, sisteme ve uygulamaya bağlı olarak çok sayıda dizi nesnesi sağlar. Programlarda kullanılan daha yaygın dizge türlerini tartışacağız.
Bir dizeyi birçok şekilde tanımlayabilirsiniz -
Character arrays - Bu, tek tırnak içine alınmış, sıfır veya daha fazla bayt boyutlu karakter dizisi olan bir karakter dizisidir.
String variables - Turbo Pascal'da tanımlandığı şekliyle String türünün değişkeni.
Short strings - Boyut spesifikasyonuna sahip Dize türü değişkeni.
Null terminated strings - değişkeni pchar yazın.
AnsiStrings - Ansistringler, uzunluk sınırı olmayan dizelerdir.
Pascal yalnızca bir dize operatörü, dize birleştirme operatörü (+) sağlar.
Örnekler
Aşağıdaki program ilk dört tür dizeyi yazdırır. Sonraki örnekte AnsiStrings kullanacağız.
program exString;
var
greetings: string;
name: packed array [1..10] of char;
organisation: string[10];
message: pchar;
begin
greetings := 'Hello ';
message := 'Good Day!';
writeln('Please Enter your Name');
readln(name);
writeln('Please Enter the name of your Organisation');
readln(organisation);
writeln(greetings, name, ' from ', organisation);
writeln(message);
end.
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Please Enter your Name
John Smith
Please Enter the name of your Organisation
Infotech
Hello John Smith from Infotech
Aşağıdaki örnek birkaç işlevi daha kullanıyor, bakalım -
program exString;
uses sysutils;
var
str1, str2, str3 : ansistring;
str4: string;
len: integer;
begin
str1 := 'Hello ';
str2 := 'There!';
(* copy str1 into str3 *)
str3 := str1;
writeln('appendstr( str3, str1) : ', str3 );
(* concatenates str1 and str2 *)
appendstr( str1, str2);
writeln( 'appendstr( str1, str2) ' , str1 );
str4 := str1 + str2;
writeln('Now str4 is: ', str4);
(* total lenghth of str4 after concatenation *)
len := byte(str4[0]);
writeln('Length of the final string str4: ', len);
end.
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
appendstr( str3, str1) : Hello
appendstr( str1, str2) : Hello There!
Now str4 is: Hello There! There!
Length of the final string str4: 18
Pascal String Fonksiyonları ve Prosedürleri
Pascal, dizeleri işleyen çok çeşitli işlevleri ve prosedürleri destekler. Bu alt programlar uygulama açısından farklılık gösterir. Burada, Free Pascal tarafından sağlanan çeşitli dizge işleme alt programları listeliyoruz -
Sr.No. | İşlev ve Amaç |
---|---|
1 | function AnsiCompareStr(const S1: ; const S2:):Integer; İki dizeyi karşılaştırır |
2 | function AnsiCompareText(const S1: ; const S2:):Integer; İki dizeyi karşılaştırır, büyük / küçük harfe duyarlı değildir |
3 | function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):; Dizeden tırnakları kaldırır |
4 | function AnsiLastChar(const S:):PChar; Dizenin son karakterini alır |
5 | function AnsiLowerCase(const s:): Dizeyi tamamen küçük harfe dönüştürür |
6 | function AnsiQuotedStr(const S: ; Quote: Char):; Bir dizeden alıntılar |
7 | function AnsiStrComp(S1: PChar;S2: PChar):Integer; Dizeleri büyük / küçük harfe duyarlı olarak karşılaştırır |
8 | function AnsiStrIComp(S1: PChar; S2: PChar):Integer; Büyük / küçük harf duyarlı dizeleri karşılaştırır |
9 | function AnsiStrLComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; Büyük / küçük harfe duyarlı dizelerin L karakterlerini karşılaştırır |
10 | function AnsiStrLIComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; Büyük / küçük harf duyarlı dizelerin L karakterlerini karşılaştırır |
11 | function AnsiStrLastChar(Str: PChar):PChar; Dizenin son karakterini alır |
12 | function AnsiStrLower(Str: PChar):PChar; Dizeyi tamamen küçük harfe dönüştürür |
13 | function AnsiStrUpper(Str: PChar):PChar; Dizeyi tamamen büyük harfe dönüştürür |
14 | function AnsiUpperCase(const s:):; Dizeyi tamamen büyük harfe dönüştürür |
15 | procedure AppendStr(var Dest: ; const S:); 2 dize ekler |
16 | procedure AssignStr(var P: PString; const S:); Yığın üzerindeki dizelerin değerini atar |
17 | function CompareStr(const S1: ; const S2:):Integer; overload; İki dizeyi büyük / küçük harfe duyarlı olarak karşılaştırır |
18 | function CompareText(const S1: ; const S2:):Integer; Büyük / küçük harfe duyarlı olmayan iki dizeyi karşılaştırır |
19 | procedure DisposeStr(S: PString); overload; Dizeyi yığından kaldırır |
20 | procedure DisposeStr(S: PShortString); overload; Dizeyi yığından kaldırır |
21 | function IsValidIdent( const Ident:):Boolean; Dize geçerli bir pascal tanımlayıcı mı |
22 | function LastDelimiter(const Delimiters: ; const S:):Integer; Bir dizedeki son karakter oluşumu |
23 | function LeftStr(const S: ; Count: Integer):; Bir dizenin ilk N karakterini alır |
24 | function LoadStr(Ident: Integer):; Kaynaklardan dizeyi yükler |
25 | function LowerCase(const s: ):; overload; Dizeyi tamamen küçük harfe dönüştürür |
26 | function LowerCase(const V: variant ):; overload; Dizeyi tamamen küçük harfe dönüştürür |
27 | function NewStr(const S:):PString; overload; Yığın üzerine yeni dizge ayırır |
28 | function RightStr(const S: ; Count: Integer):; Bir dizenin son N karakterini alır |
29 | function StrAlloc(Size: Cardinal):PChar; Dize için bellek ayırır |
30 | function StrBufSize(Str: PChar):SizeUInt; Bir dizge için bellek ayırır |
31 | procedure StrDispose(Str: PChar); Dizeyi yığından kaldırır |
32 | function StrPas(Str: PChar):; PChar'ı pascal dizeye dönüştürür |
33 | function StrPCopy(Dest: PChar; Source:):PChar; Pascal dizesini kopyalar |
34 | function StrPLCopy(Dest: PChar; Source: ; MaxLen: SizeUInt):PChar; Pascal dizesinin N baytını kopyalar |
35 | function UpperCase(const s:):; Dizeyi tamamen büyük harfe dönüştürür |