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 :)