Wednesday, April 18, 2012

String dalam Pascal


String adalah Array!
 
Ya, pernyataan di atas adalah benar. Mengapa demikian? Pada dasarnya string adalah tipe data berupa untaian karakter-karakter. Dengan kata lain, string adalah array yang mana isinya berupa char/karakter. Dalam Pascal, cara pengaksesannya pun sama sintaksnya seperti mengakses array.



Pada visualisasi di atas, tampak bahwa S adalah variabel bertipe string, yang memiliki isi S = "OSN!". Pengaksesan perkarakter bisa dilakukan dengan cara seperti ini: S[0], S[1], dst.
String memiliki kapasitas untuk menyimpan karakter sebanyak 255 karakter (array [1..255] of char). Namun, ada tipe lain yang serupa, yaitu ansistring. Ansistring memiliki kapasitas jumlah karakter yang secara teori tidak terbatas.
Sebelum diisi oleh karakter apapun, string dalam Pascal berisi karakter-karakter null (bernilai 0 dalam ASCII).

Contoh program yang menggunakan string:
var
  S  : string;
begin
  S := 'Gue Gaptex, kalo gue bukan Gaptex, maka gue bukan gue.';
  writeln(S);

  S[1] := 'L';
  S[2] := 'O';
  S[3] := 'E';
  writeln(S);
end.

Output:
Gue Gaptex, kalo gue bukan Gaptex, maka gue bukan gue.
LOE Gaptex, kalo gue bukan Gaptex, maka gue bukan gue.


Mengapa disediakan tipe data string? Bukankah dengan array of char saja juga bisa? Can I just use array of char to solve problems that is string-related?
String memiliki lebih banyak advantages dibanding dengan menggunakan array of char:
  • String dapat langsung di-output kan dengan menggunakan write/writeln.
  • Pascal memiliki banyak fungsi-fungsi bawaan yang berguna untuk memanipulasi string, sehingga tidak perlu lagi menulis fungsi-fungsi tersebut.
Beberapa operasi dan fungsi yang disediakan pascal:

String Concatenation/Penggabungan String

Fungsi ini berguna untuk menggabungkan dua buah string. Ada dua cara yang bisa digunakan, yaitu dengan menggunakan operator '+' atau dengan fungsi Concat.
Deklarasi fungsi concat:
function concat (s1 [, s2, ..., sn]:string):string;

Contoh program yang menggunakan fungsi concatenation:
var
  S1,S2,S3,strip  : string;
  res1,res2       : string;
begin
  S1 := 'Bayu';
  S2 := 'Otong';
  S3 := 'Soko';
  strip := '-';

  res1 := S1 + strip + S2 + strip + S3;
  writeln(res1);

  res2 := concat(S3,strip,S2,strip,S1);
  writeln(res2);
end.

Output:
Bayu-Otong-Soko
Soko-Otong-Bayu


Penghapusan Substring

Prosedur ini berguna untuk menghapus satu atau beberapa karakter berurutan dalam sebuah string. Prosedurnya bernama delete
Deklarasi prosedur delete:
procedure delete (var S : string; i, n : integer);

Prosedur ini berfungsi menghapus n karakter dalam string S mulai dari posisi ke-i. Contoh program yang menggunakan fungsi delete:
var
  S : string;
begin
  S := 'My name is Smeargle.';

  writeln('Before deletion:');
  writeln(S);
  writeln;

  delete(S,2,8);
  writeln('After deletion:');
  writeln(S);
end.

Output:
Before deletion:
My name is Smeargle.
 
After deletion:
Ms Smeargle.


Menyalin Substring

Fungsi ini berguna untuk menyalin sebuah substring dari suatu variabel string ke variabel string lain. Fungsinya bernama copy
Deklarasi fungsi copy:
function copy(S : string; i, n : integer):string;

Fungsi ini mengembalikan salinan n karakter dalam string S mulai dari posisi ke-i. Contoh program yang menggunakan fungsi copy:
var
  S,S2 : string;
begin
  S := 'My name is Smeargle.';

  S2 := copy(S,4,4);
  writeln(S2);

  S2 := copy(S,12,8);
  writeln(S2);
end.

Output:
name
Smeargle


Menyisipkan String

Prosedur ini berguna untuk menyisipkan/insert sebuah substring dari suatu variabel string ke variabel string lainnya. Prosedurnya bernama insert
Deklarasi fungsi copy:
procedure copy(S1 : string; var S2 : string; i : integer);

Prosedur ini berfungsi menyisipkan string S1 ke S2 di posisi ke-i. Contoh program yang menggunakan fungsi insert:
var
  S1,S2 : string;
begin
  S1 := 'SMA DEPOK';
  S2 := 'NEGERI 1 ';
  writeln(S1);
  insert(S2,S1,5);
  writeln(S1);
end.

Output:
SMA DEPOK
SMA NEGERI 1 DEPOK


Mendapatkan Posisi Substring

Fungsi ini berguna untuk mencari sebuah nilai i, di mana i adalah indeks kemunculan pertama dari sebuah string A di string B. Fungsinya bernama pos
Deklarasi fungsi pos
function pos(A : string; B : string): byte;

Fungsi ini mengembalikan nilai indeks tempat kemunculan pertama string A pada string B. Bila tidak ditemukan, akan mengembalikan nilai 0. Contoh program yang menggunakan fungsi pos:
var
  S : string;
begin
  S := 'One Two Three Four Five Six etc.';
  writeln(pos('Three',S));
  writeln(pos('Ten',S));
end.

Output:
9
0


Mendapatkan Panjang String

Fungsi ini berguna untuk mencari panjang string. Fungsinya bernama length
Deklarasi fungsi pos
function length(S : string): integer;

Contoh program yang menggunakan fungsi pos:
var
  S : string;
begin
  S := 'One Two Three Four Five Six etc.';
  writeln(length(S));
  S := 'Wa Wu Wo';
  writeln(length(S));
  S := '';
  writeln(length(S));
end.

Output:
32
8
0


Soal-soal latihan:

No comments:

Post a Comment