Fungsi perintah read dan readln
Jika perintah write dan writeln berfungsi untuk menampilkan ‘sesuatu’ ke jendela tampilan, maka perintah read dan readln berfungsi untuk memasukkan ‘sesuatu’ ke dalam kode program. Di dalam pemrograman, ini disebut sebagai perintah ‘input’.Cara Penulisan read dan readln
Untuk dapat menggunakan perintah read dan readln, kita harus mempersiapkan variabel yang akan menampung hasil inputan dari pengguna. Variabel ini juga harus memiliki tipe data yang sama dengan apa yang akan diinput.Sebagai contoh, jika kita mengharapkan pengguna untuk memasukkan nama, maka variabel penampung harus bertipe string, namun jika kita meminta inputan umur, maka harus menggunakan variabel bertipe integer.
Agar lebih memahami konsep ini, berikut adalah contoh kode program penggunaan kedua perintah ini:
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
| program input; uses crt; var nama,alamat: string ; umur: integer ; ipk: real ; begin clrscr; writeln ( 'Masukkan Data Mahasiswa' ); writeln ( '=======================' ); write ( 'Nama :' ); readln(nama); write ( 'Alamat :' ); readln(alamat); write ( 'Umur :' ); read(umur); write ( 'IPK :' ); readln(ipk); writeln ; writeln ( '=========HASIL=========' ); write ( 'Nama: ' ,nama, '. Alamat: ' ,alamat); writeln ( '. Umur: ' ,umur, '. IPK: ' ,ipk: 1 : 2 ); readln; end . |
Dalam kode diatas, saya menampung hasil inputan dalam variabel nama, alamat, umur, dan ipk. Ketika kode program sampai pada perintah readln(nama), maka tampilan akan berhenti sesaat untuk menunggu inputan. Tombol Enter digunakan untuk mengakhiri proses input, dan program akan lanjut ke perintah berikutnya.
Perbedaan read dan readln
Perintah read dan readln sama-sama digunakan untuk meminta input dari pengguna. Keduanya memiliki perbedaan dari cara pembacaan data.Perintah read akan membaca data secara ‘horizontal’. Setelah proses input selesai, posisi cursor akan tetap berada di baris yang sama. Kita bisa menggunakan karakter ‘spasi’ atau ‘enter’ untuk memisahkan 1 input dengan input lainnya (dengan beberapa pengecualian).
Perintah readln akan membaca data secara ‘vertikal’. Setelah proses input selesai, posisi cursor akan pindah ke baris baru. Kita bisa menggunakan karakter ‘enter’ untuk memisahkan 1 input dengan input lainnya.
Defenisi perbedaan diatas ‘hanya’ secara teori. Dalam prakteknya, kedua perintah ini akan membuat prilaku berbeda tergantung tipe data yang digunakan. Terutama untuk perintah read yang kadang berfungsi ‘aneh’. Kita akan melihat permasalahan ini melalui beberapa contoh kode program.
Penggunaan read dan readln untuk tipe data integer dan real
Jika menggunakan tipe data angka (integer/real), perintah read akan membaca seluruh inputan yang dipisah dengan spasi maupun enter. Berikut contoh penggunaannya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| program input; uses crt; var a,b,c,d: integer ; begin clrscr; writeln ( 'Input 4 angka, dipisah dengan spasi:' ); read(a); read(b); read(c); read(d); writeln ; writeln ( 'Hasil Input:' ); writeln ( 'a: ' ,a, ', b: ' ,b, ', c: ' ,c, ', d: ' ,d); readln; readln; end . |
Input 4 angka, dipisah dengan spasi: 65 7 89 999 Hasil Input: a: 65, b: 7, c: 89, d: 999 |
Perintah diatas juga bisa ditulis menjadi seperti berikut ini:
1
2
3
4
5
6
7
8
9
10
11
12
13
| program input; uses crt; var a,b,c,d: integer ; begin clrscr; writeln ( 'Input 4 angka, dipisah dengan spasi:' ); read(a,b,c,d); writeln ; writeln ( 'Hasil Input:' ); writeln ( 'a: ' ,a, '. b: ' ,b, '. c: ' ,c, ' d: ' ,d); readln; end . |
Jika menggunakan perintah readln, maka kita harus memisahkan keempat inputan dengan enter, seperti contoh berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| program input; uses crt; var a,b,c,d: integer ; begin clrscr; writeln ( 'Input 4 angka, dipisah dengan enter:' ); readln(a); readln(b); readln(c); readln(d); writeln ; writeln ( 'Hasil Input:' ); writeln ( 'a: ' ,a, '. b: ' ,b, '. c: ' ,c, ' d: ' ,d); readln; end . |
Input 4 angka, dipisah dengan enter: 45 23 65 111 Hasil Input: a: 45. b: 23. c: 65 d: 111 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| program input; uses crt; var a,b,c,d,e,f,g,h,i: integer ; begin clrscr; writeln ( 'Input Matriks 3x3' ); read(a,b,c); read(d,e,f); read(g,h,i); writeln ; writeln ( 'Hasil Matriks:' ); writeln (a, ' ' ,b, ' ' ,c); writeln (d, ' ' ,e, ' ' ,f); writeln (g, ' ' ,h, ' ' ,i); readln; readln; end . |
Input Matriks 3x3 4 5 6 9 7 1 4 9 9 Hasil Matriks: 4 5 6 9 7 1 4 9 9 |
Penggunaan read dan readln untuk tipe data char
Jika menggunakan tipe data char, perintah read akan membaca seluruh karakter teks (termasuk spasi dan enter) dalam 1 baris secara vertikal. Kita bisa mencoba hal ini melalui kode program berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| program input; uses crt; var a,b,c,d,e: char ; begin clrscr; writeln ( 'Input Teks Sembarang (5 karakter)' ); read(a); read(b); read(c); read(d); read(e); writeln ; writeln ( 'Hasil Teks:' ); write (a, ' ' ,b, ' ' ,c, ' ' ,d, ' ' ,e); readln; readln; end . |
Input Teks Sembarang (5 karakter) belajar Hasil Teks: b e l a j |
Jika anda mencoba menekan ‘enter’ pada saat menginput 5 karakter awal, maka pascal akan menampilkan sesuatu yang ‘berbeda’:
Input Teks Sembarang (5 karakter) a b Hasil Teks: b |
Sebuah karakter enter di dalam pascal terdiri dari 2 karakter khusus, yakni carriage return dan line feed. Kedua karakter ini hanya tampak seperti ‘spasi’ (kosong), sehingga jika kita menekan tombol enter, 2 variabel akan langsung terisi. 1 dengan karakter carriage return, dan 1 lagi dengan karakter line feed. Kedua variabel ini akan ditampilkan ‘kosong’.
Jika kita mengganti read dengan readln, pembacaan karakter akan dilakukan secara vertikal. Setiap karakter di pisah dengan enter, seperti contoh kode program berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| program input; uses crt; var a,b,c,d,e: char ; begin clrscr; writeln ( 'Input Teks Sembarang (5 karakter) :' ); readln(a); readln(b); readln(c); readln(d); readln(e); writeln ; writeln ( 'Hasil Teks:' ); write (a, ' ' ,b, ' ' ,c, ' ' ,d, ' ' ,e); readln; end . |
Input Teks Sembarang (5 karakter) : i l k o m Hasil Teks: i l k o m |
Jika anda menambahkan beberapa karakter setelah karakter pertama di sebuah baris, sisanya akan diabaikan oleh readln:
Input Teks Sembarang (5 karakter) : belajar pascal di dunia ilkom Hasil Teks: b p d d i |
Penggunaan read dan readln untuk tipe data string
Apabila menggunakan tipe data string, perintah read berprilaku sedikit ‘membingungkan’. Perhatikan contoh kode berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| program input; uses crt; var a,b,c,d: string ; begin clrscr; writeln ( 'Input 4 kata:' ); read(a); read(b); read(c); read(d); writeln ; writeln ( 'Hasil Teks:' ); writeln ( 'a: ' ,a); writeln ( 'b: ' ,b); writeln ( 'c: ' ,c); writeln ( 'd: ' ,d); readln; readln; end . |
Hasil program:
Input 4 kata: saya sedang belajar pascal Hasil Teks: a: saya sedang belajar pascal b: c: d: |
Hasil program:
Input 4 kata: saya Hasil Teks: a: saya b: c: d: |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| program input; uses crt; var a,b,c,d: string ; begin clrscr; writeln ( 'Input 4 kata:' ); readln(a); readln(b); readln(c); readln(d); writeln ; writeln ( 'Hasil Teks:' ); writeln ( 'a: ' ,a); writeln ( 'b: ' ,b); writeln ( 'c: ' ,c); writeln ( 'd: ' ,d); readln; end . |
Input 4 kata: belajar pascal di duniailkom sangat menyenangkan Hasil Teks: a: belajar pascal b: di duniailkom c: sangat d: menyenangkan |
Dalam tutorial kali ini kita telah membahas tentang cara menginput data ke dalam program menggunakan perintah read dan readln. Umumnya anda akan banyak menggunakan perintah readln dari pada read, karena seperti yang kita lihat pada kasus tipe data string, perintah read kadang tidak sesuai dengan apa yang dirancang. Selanjutnya kita membahas
Referensi:
http://stackoverflow.com/questions/5693186/pascal-read-readln-function-impurities
http://stackoverflow.com/questions/8997678/pascal-read-function-strange-behavior
Tidak ada komentar:
Posting Komentar