String
String • String adalah deretan karakter dengan panjang tertentu var str : String; str2 : String[10]; • Elemen dari sebuah string dapat diakses dengan menggunakan indeksnya c := str[2];
String • Pada pascal, ada 3 jenis string: – ShortString: • maksimum 256 character • Di simpan di memori dengan representasi byte pertama berisi panjang string 4
T
O
K
I
• Deklarasi yang disertai ukuran akan selalu menghasilkan tipe ShortString – S : String[12];
String – AnsiString: tidak terbatas, panjang dibatasi dengan char ‘\0’. • Panjang tidak terbatas, reference counted
T
O
K
I
‘\0’
• Dapat dideklarasikan dengan menggunakan tipe AnsiString – S: AnsiString;
String • AnsiString digunakan dengan cara menset compiler directive {$H} atau {$LONGSTRINGS} • Contoh: – {$H+} – {$LONGSTRINGS ON}
• Kompilator akan mengkonversi kedua jenis string tsb secara otomatis. • Ekspresi yang mengandung kedua ShortString dan AnsiString akan menghasilkan AnsiString
String • Pchar: representasi string sebagai deretan character yang diakhiri dengan ‘\0’ • Alokasi dinamis, kita harus mendealokasikan kembali setelah tidak dipakai. • Manipulasi dengan library strings (uses strings;)
Operasi pada string • Menghitung panjang: length( str1 ); • Menggabungkan: – Str1 := concat( str2, str3, str4 ); – Str1 := str2+str3+str4;
• Case conversion – c1 := upcase( c2 ); – Uppercase( str ); -> uses sysutils;
• Mengkopi string – Str1 := copy( str2, 5, 2 );
Operasi pada String • Menghapus string – delete( str2, 5, 2 );
• Menyisipkan string – Insert( str2, str1, 5 );
• Mencari string – X := pos( str2, str1 );
• • • •
IntToStr(integer):String (sysutils) Str( integer ) Chr( integer ) Leftstr(String, integer)
Operasi pada library string • stralloc, strcat, strcomp, strcopy, strecopy, strend, stricomp, strlcat, strlcomp, strlcopy, strlen, strlicomp, strlower, strmove, strnew, strpas, strpos, strscan
Algoritma pengolahan String • • • • •
Searching Pattern matching Parsing Kompresi Enkripsi
Contoh function search( pat: String; text: String ): integer; var i, j, m, n: integer; begin search := 0; m := length(pat); if m=0 then begin search := 1; end else
begin n := length(text); j := 1; i := 1; while (i<=n) and (search = 0) do begin if text[i] <> pat[j] then begin i := i - j + 1; j := 1; end else begin j := j + 1; if j > m then begin search := i - j + 2; end end; i := i + 1; end end; end;
• • • • • • • •
‘tidakadastringyangdicari’ ‘tidar’ ‘tidakadastringyangdicari’ ‘tidar’ ‘tidakadastringyangdicari’ ‘tidar’ ‘tidakadastringyangdicari’ ‘tidar’