Input Non-Case Sensitive di Pascal

Input Non-Case Sensitive di Pascal

47

Berhubung yang post masih newbie jadi mohon maaf apabila banyak kesalahan. Tanpa basa-basi saya akan coba share pengalaman sedikit. Tentang masalah input yang kadang-kadang membuat jengkel bila case-sensitive.

Sebagai contoh pada potongan berikut:

var input:string;

begin

 readln(input);

 if input="yes" then writeln("berhasil")

 else writeln("gagal");

 readln;

end.

Mungkin tidak masalah jika kita input dengan 'yes' saja. Namun bila dilakukan keisengan bila user meng-input 'Yes', maka program akan menampilkan 'salah'. Nah, untuk mengatasi hal tersebut kita gunakan suatu fungsi yang digunakan untuk mengkonversi hasil input dan kemudian ditampilkan kembali dalam bentuk yang sama. Dengan kata lain, baik huruf kapital maupun huruf kecil akan dikonversi ke dalam suatu bentuk.

Bisa saja string 'yes' tersebut dirubah menjadi 'YES', dan bila user menginput 'Yes' maka tetap hasil konversi adalah 'YES'.

Catatan: Alasan karena hasil konversi dirubah ke kapital adalah karena rentan huruf kapital antara lain 65 - 90, sedangkan huruf kecil 97 - 122.

berikut adalah fungsi yang saya buat.

function checkStr(s:string):string;

label checking;

var i,intStr:integer; hasil:string; paramKe:integer;

begin

 paramKe:=1;

 hasil:="";

 for i:=1 to length(s) do begin

  if not(s[1]=" ") then begin

   if s[i]=" " then paramKe:=paramKe+1

   else begin

    intStr:=integer(s[i]);

    if (intStr>=97)and(intStr<=122) then begin

      intStr:=intStr-32;

      s[i]:=char(intStr);

      hasil:=hasil+s[i];

    end else if (intStr>=65)and(intStr<=90) then begin

      hasil:=hasil+s[i];

    end;

   end;

  end;

 end;

 checkStr:=hasil;

end;

fungsi buatan diatas masih memiliki kesalahan, dikarenakan program diatas mengabaikan karakter spasi sehingga karakter spasi tidak ditampilkan. Dan juga bila spasi ditambahkan pada kata dengan huruf pertama (contoh: ' ganteng'), maka fungsi tidak menampilkan apapun. Untuk pembenahannya mungkin agan-agan bisa menggubahnya sendiri :D

Penggunaan pada program:

program task;



uses crt,dos,sysutils;

label AWAL;



//Function Declaration

function checkStr(s:string):string;

label checking;

var i,intStr:integer; hasil:string; paramKe:integer;

begin

 paramKe:=1;

 hasil:="";

 for i:=1 to length(s) do begin

  if not(s[1]=" ") then begin

   if s[i]=" " then paramKe:=paramKe+1

   else begin

    intStr:=integer(s[i]);

    if (intStr>=97)and(intStr<=122) then begin

      intStr:=intStr-32;

      s[i]:=char(intStr);

      hasil:=hasil+s[i];

    end else if (intStr>=65)and(intStr<=90) then begin

      hasil:=hasil+s[i];

    end;

   end;

  end;

 end;

 checkStr:=hasil;

end;

var str:string;



begin

AWAL:

 write("[email protected]> "); readln(str);

 if str="clear" then clrscr

 else if str="exit" then halt(0)

 else writeln(checkStr(str));

 goto AWAL;

end.

Sekian dan sekali lagi mohon maaf, bila banyak kesalahan. :D

Keywords: input non case pascal, tutorial pascal

Share:



Prev Post: