Input Non-Case Sensitive di Pascal

Share:
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:
1
2
3
4
5
6
7
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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('task@root> '); readln(str);
 if str='clear' then clrscr
 else if str='exit' then halt(0)
 else writeln(checkStr(str));
 goto AWAL;
end.
Sekian dan terimakasih :D 

like fanpage kita di 
https://www.facebook.com/pages/G-ART-MEDIA/1558990464340287


No comments

# Terima Kasih Telah Berkunjung Semoga Artikel Yang Kamu Baca Bermanfaat :)