Perbedaan Read dan Readln di Pascal: Solusi Output Berantakan Sejajar ke Samping
Judul "Cetak Output Pascal Berbaris Tidak Turun Kebawah atau Cara Mengatasi Output Pascal yang Tidak Turun ke Bawah (Read vs Readln)" terdengar aneh memang, tapi justru itulah masalah yang sering dihadapi pemula saat belajar pemrograman Pascal. Ketika sedang asyik coding, banyak kesalahan yang bisa membuat pusing, terutama saat mencari tahu di mana letak bug tersebut. Salah satu masalah klasik yang sering dialami programmer Pascal pemula adalah ketika mencetak output di console, hasilnya tidak turun ke bawah (enter), melainkan berbaris ke arah kanan.
Gambar 1: Gambar Solusi Output Pascal Berantakan Sejajar ke Samping
Seperti yang terlihat pada screenshot di atas, tulisan "Nama Barang" dan "Banyak Barang" berada sejajar dalam satu baris. Seharusnya, tulisan tersebut berjejer ke bawah agar terlihat rapi dan mudah dibaca. Masalah ini sangat umum terjadi bagi siswa atau mahasiswa yang sedang belajar pemrograman Pascal di sekolah atau kampus.
Penyebab Output Pascal Tidak Turun ke Bawah
Masalah ini sebenarnya sangat mudah diatasi. Penyebab utamanya adalah penggunaan perintah read yang tidak diikuti dengan ln (line). Mari kita lihat potongan kode Pascal yang bermasalah berikut ini:
begin
clrscr;
write('Masukkan Nama Pelanggan : ');read(nama);
write('Masukkan Banyak Data : ');readln(n);
for i:=1 to n do
begin
write('Nama Barang : ');read(sw[i].nabar);
write('Banyak Barang : ');read(sw[i].banyak);
write('Harga Satuan : ');read(sw[i].hasat);
sw[i].jlh:=sw[i].banyak * sw[i].hasat;
writeln();
end;
Solusi: Ganti read dengan readln
Untuk mengatasi permasalahan di atas, solusinya sangat sederhana: ubah perintah read menjadi readln. Perintah readln (read line) akan membaca input dan langsung pindah ke baris berikutnya, sedangkan read hanya membaca input tanpa pindah baris.
Berikut adalah hasil setelah kode diperbaiki:
begin
clrscr;
write('Masukkan Nama Pelanggan : ');readln(nama);
write('Masukkan Banyak Data : ');readln(n);
for i:=1 to n do
begin
write('Nama Barang : ');readln(sw[i].nabar);
write('Banyak Barang : ');readln(sw[i].banyak);
write('Harga Satuan : ');readln(sw[i].hasat);
sw[i].jlh:=sw[i].banyak * sw[i].hasat;
writeln();
end;
Gambar 1: Gambar Perbaikan kode Pascal dengan mengganti read menjadi readln
Perbedaan read dan readln dalam Pascal
Untuk memahami lebih dalam, berikut perbedaan mendasar antara read dan readln:
- read - Membaca input dari keyboard tanpa pindah ke baris berikutnya. Kursor tetap berada di posisi setelah input terakhir.
- readln - Membaca input dari keyboard dan langsung pindah (enter) ke baris berikutnya. Kursor akan berada di awal baris baru.
- writeln - Menulis output dan pindah ke baris berikutnya.
- write - Menulis output tanpa pindah baris.
Kejadian-kejadian aneh pada Pascal seperti output yang tidak turun ke bawah pasti banyak dialami oleh pemula. Error-error sederhana seperti ini sebenarnya sering disebabkan oleh kesalahan ketik atau kurang memahami perbedaan perintah dasar Pascal.
Kode Lengkap Program Pascal Toko Swalayan
Untuk referensi lengkap, berikut adalah kode lengkap program Pascal untuk sistem kasir toko swalayan yang sudah diperbaiki:
program swalayan;
uses crt;
Type Rswalayan=record
jlh:longint;
banyak:longint;
nabar:string;
hasat:longint;
total:longint;
end;
var sw:array[1..100]of Rswalayan;
i,n:integer;
nama:string;
pembayaran, kembalian : longint;
begin
clrscr;
write('Masukkan Nama Pelanggan : ');readln(nama);
write('Masukkan Banyak Data : ');readln(n);
for i:=1 to n do
begin
write('Nama Barang : ');readln(sw[i].nabar);
write('Banyak Barang : ');readln(sw[i].banyak);
write('Harga Satuan : ');readln(sw[i].hasat);
sw[i].jlh:=sw[i].banyak * sw[i].hasat;
writeln();
end;
clrscr();
gotoxy(10,10);write('-----------------------------------------------------------------------');
gotoxy(30,11);write('TOKO TIP TOP':20);
gotoxy(10,12);write('-----------------------------------------------------------------------');
gotoxy(10,13);write('Nama Pelanggan : ',nama);
writeln();
gotoxy(10,14);write('No');
gotoxy(15,14);write('Nama Barang ');
gotoxy(35,14);write('Banyak Barang ');
gotoxy(52,14);write('Harga Satuan ');
gotoxy(68,14);write('Jumlah');
for i:=1 to n do
begin
gotoxy(10,15+i);write(i);
gotoxy(15,15+i);write(sw[i].nabar);
gotoxy(35,15+i);write(sw[i].banyak);
gotoxy(55,15+i);write(sw[i].hasat);
gotoxy(68,15+i);write(sw[i].jlh);
sw[i].total:=sw[i].total + sw[i].jlh;
end;
gotoxy(10,16+i);write('-----------------------------------------------------------------------');
gotoxy(10,17+i);write('Total : ',sw[i].total);
gotoxy(10,18+i);write('Pembayaran : ');readln(pembayaran);
gotoxy(10,19+i);write('Kembalian : ',pembayaran-sw[i].total);
readln;
end.
Hasil Tampilan Program
Dengan perbaikan kode di atas, tampilan program Pascal toko swalayan akan menjadi rapi dan profesional seperti berikut:
Gambar 1: Gambar Perbaikan kode Pascal agar turun kebawah
Kesimpulan
Masalah output Pascal yang tidak turun ke bawah adalah masalah klasik yang sering dihadapi pemula. Solusinya sangat sederhana: gunakan readln sebagai pengganti read ketika Anda ingin kursor pindah ke baris berikutnya setelah input. Pemahaman yang baik tentang perbedaan read dan readln sangat penting dalam pemrograman Pascal, terutama untuk membuat tampilan console yang rapi dan user-friendly.
Walaupun Pascal dianggap bahasa pemrograman "jadul", bahasa ini masih relevan dipelajari di sekolah-sekolah sebagai pengantar logika pemrograman sebelum mempelajari bahasa modern seperti Python, Java, atau C++. Semoga tutorial ini membantu Anda dalam belajar Pascal!