Modul Praktikum II
INPUT DATA
TUJUAN PRAKTIKUM
1. Mengenal Statemen dasar I/O dalam Pascal
2. Memahami tentang penulisan struktur program input-output dalam pascal.
3. Memahami fungsi-fungsi input dan output pada pascal.
4. Memahami fungsi-fungsi tambahan pada pascal
INPUT
Seperti Anda ketahui sebelumnya, hampir semua program komputer mengambil input dari user.
Jika Anda tidak tahu bagaimana untuk mengambil input maka Anda tidak akan menjadi seorang
programmer.
Pascal memiliki dua fungsi utama untuk mengambil input dari user :
a. Read
read (variabel);
Ini membaca semua karakter diketik, sampai pengguna menekan enter, memasukkan nilai
ke dalam variabel. Jika variabel bertipe integer, sedangkan type yang diberikan user string yang
kemudian kesalahan akan terjadi. Jika type variabel didefinisikan adalah string kemudian “read”
hanya akan mengambil X karakter pertama dari baris dan menempatkan mereka ke dalam string,
di mana X adalah ukuran string. Read tidak memindahkan kursor ke baris berikutnya setelah
masukan.
b. readln
Sintaks:
readln (variabel);
Penjelasan:
Ini persis sama dengan read kecuali syantaks ini mampu memindahkan kursor ke baris
berikutnya setelah pengguna menekan enter.
OUTPUT :
Perintah output dalam pascal sangat mirip dengan sintaks perintah masukan.
a. write
Sintaks:
write (variabel);
write (variabel: f)
f = lebar field
Penjelasan:
Perintah write menampilkan string karakter pada layar. Ketika lebar field disertakan, tulisan yang
benar write ('Hello': 10); akan menghasilkan output sebagai berikut ...
00000Hello
(0 = spasi)
Perhatikan bahwa 'Halo' yang benar-blok dalam bidang sepuluh karakter, ruang yang tersisa
datang sebelum 'Hello' ditambahkan dengan “0”.
Saat menulis bilangan real, Anda harus menentukan lebar lapangan dan jumlah tempat desimal
yang ditampilkan, jika pascal akan menulis ke layar dalam bentuk standar (ini tidak baik).
Sebuah lapangan lebar nol hanya akan menulis nyata seperti jika Anda tidak ditentukan lebar
lapangan.
Jika Anda ingin menulis kombinasi hal, memisahkan dengan koma. misalnya
write ('Halo', nama, ', berat badan Anda, berat badan: 00:02,'. kg ');
Di atas akan menulis sesuatu seperti ini ... Hello Joe Bob, berat badan Anda 76,54 kg.
Catatan: Perintah menulis tidak memindahkan kursor ke baris berikutnya setelah eksekusi.
b. writeln
Sintaks:
writeln (variabel);
writeln (variabel: f)
Penjelasan:
Perintah writeln adalah persis sama dengan menulis perintah kecuali kenyataan bahwa itu
menggerakkan kursor ke baris berikutnya setelah eksekusi.
CATATAN: Semua perintah di atas juga digunakan saat membaca dan menulis ke file. Ini akan
dibahas kemudian.
Contoh Program;
uses CRT;
begin
end.
c. Dilatasi
Fungsi : Mengalikan dua buah angka yang dimasukan dengan angka tertentu.
uses crt;
var absis,ordinat,pengali:integer;
procedure dilat(a,b,peng:integer);
var c,d:integer;
begin
c:=a*peng;
d:=b*peng;
writeln('(',c,',',d,')');
end;
begin
writeln('Kordinat Awal');
write('Absis : ');readln(absis);
write('Ordinat : ');readln(ordinat);
writeln;
dilat(absis,ordinat,pengali);
readln;
end.
uses crt;
var x,y,z,s:integer;
function fungsi(a,b,c,x:integer):integer;
begin
fungsi:=a*(x*x)-b*x+c;
end;
begin
write('masukan a : ');readln(x);
write('masukan b : ');readln(y);
write('masukan c : ');readln(z);
write('masukan x : ');readln(s);
writeln('f(x)=',x,'(x^',x,'2)-',y,'x+',z);
writeln('f(',s,') =',fungsi(x,y,z,s));
readln;
end.
Fungsi : Menghitung tanggal gerhana pada bulan tertentu dengan rumus yang sudah ada.
Hint: Sebenarnya intinya hanya membuat prosedur yang menampilkan jumlah hari dalam bulan
tertentu..waktu gerhana ini sebagai tambahan saja.
uses crt;
var b,ha,ger:integer;
bul:string;
procedure maks(s:integer);
var y,k:integer;
begin
case s of
1,3,5,7,8,10,12:ha:=31;
4,6,9,11:ha:=30;
2:begin
k:=y mod 4;
if k=0 then
ha:=28
else ha:=29;
end;
end;
end;
procedure hitung(bee:integer);
begin
ger:=bee-(2*b);
end;
begin
maks(b);
hitung(ha);
case b of
1 : WRITE('Januari');
2:WRITE('Februari');
3:WRITE('Maret');
4:WRITE('April');
5:WRITE('Mei');
6:WRITE('Juni');
7:write('Juli');
Modul Praktikum Algoritma dan Pemrograman 7
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri
8:WRITE('Agustus');
9:write('September');
10:write('Oktober');
11:WRITE('November');
12:WRITE('Desember');
end;
readln;
end.
Penjumlah Pecahan
uses crt;
var pemi,pemII,penyi,penyII:integer;
j,k:integer;
function pemb(a,c:integer):integer;
begin
j:=penyii;
k:=penyi;
pemb:=a*j+k*c;
end;
function peny(b,d:integer):integer;
Modul Praktikum Algoritma dan Pemrograman 8
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri
begin
peny:=b*d;
end;
begin
writeln('Pecahan 1 ');
write('Pembilang i :');readln(pemi);
write('Penyebut i :');readln(penyI);
writeln;
write('Pecahan 2 ');
write('Pembilang ii :');readln(pemII);
writeln;
readln;
end.
Record
Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai
type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil
dengan menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield.
Sebuah record disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan
tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang
berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat buah field.
Modul Praktikum Algoritma dan Pemrograman 9
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri
Deklarasi record
Type
Variable = record
…field = type data
…field = type data
…field = type data
End.
STATEMENT “WITH”
Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat
digunakan statement WITH. Dengan statement ini penulisannya akan lebih sederhana. Bentuk
TYPE x = RECORD
No : integer;
Kode : char;
Juml : integer;
Harga : real;
END;
VAR p,q : x;
Untuk membaca variabel p dan q di atas dengan memanfaatkan statement WITH bentuknya menjadi :
Pernyataan seperti :
Data.npm :=‘22297566’
Modul Praktikum Algoritma dan Pemrograman 10
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri
Data.Nama:=‘Abdul Kadir’
Data.Fakultas:=‘Teknik’
Type
Hasil = record
Jari-jari = real;
Keliling = real;
Luas = real;
End.
Var
Lingkaran = hasil;
Begin
Write (jari-jari lingkaran?); real readln (lingkaran.jari-jari);
Lingkaran.keliling :=2 * Pi * lingkaran.jari-jari;
Lingkaran.luas := Pi * sqr (lingkaran jari-jari);
Writeln;
Writeln (‘keliling lingkaran =’, lingkaran.keliling:7:2);
Writeln (‘luas lingkaran =’, lingkaran luas :7:2);
End.
program record;
uses crt;
type
TSiswa = record
nim : string[8];
Modul Praktikum Algoritma dan Pemrograman 11
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri
nama : string[25];
agama : string[10];
ktp : string[25];
end;
var
s : TSiswa;
umur,ts,tl : integer;
begin
clrscr;
write (’Masukkan tahun sekarang: ‘); readln (ts);
writeln (’Isikan data anda dalam Form ini’);
write (’NIM : ‘); readln (s.nim);
write (’NAMA : ‘); readln (s.nama);
write (’TAHUN LAHIR : ‘); readln (tl);
umur := (ts-tl);
write (’AGAMA : ‘);readln (s.agama);
write (’NO.KTP : ‘); readln (s.ktp);
writeln;
writeln (’Berikut ini informasi yang anda berikan: ‘);
writeln (’NIM : ‘, s.nim);
writeln (’NAMA : ‘, s.nama);
writeln (’Umur : ‘,umur);
writeln (’AGAMA : ‘, s.agama);
writeln (’NO.KTP : ‘, s.ktp);
READLN;
end.
a. ABS(fungsi)
Memberikan nilai mutlak dari suatu argumen.
Sintaks: ABS(x);
b. ARCTAN(fungsi)
Memberikan nilai dari fungsi arctangent dari perhitungan goniometri.
Sintaks: ARCTAN(x);
Dimana x dapat bertipe real atau integer dan akan menghasil kan nilai bertipe real.
c. COS(fungsi)
Memberikan nilai dari fungsi Cosinus.
Sintaks: COS(x);
d. EXP(fungsi)
Menghitung nilai pangkat dari bilangan e (bilangan alam),
yaitu sebesar x.
Sintaks: EXP(x);
x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real.
e. FRAC(fungsi)
Untuk mendapatkan nilai pecahan dari suatu bilangan.
Sintaks: FRAC(x);
Tipe dari x sama seperti yang diatas.
f. INT(fungsi)
Memberikan nilai integer (bilangan bulat) dari suatu variabel dengan membuang bilangan
di belakang koma.
Sintaks: INT(X);
g. LN(fungsi)
Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x.
Sintaks: LN(x);
h. SIN(fungsi)
Memberikan nilai dari fungsi Sinus.
Sintaks: SIN(x);
i. SQR(fungsi)
Digunakan untuk menghitung nilai pangkat kuadrat dari suatu bilangan.
Sintaks: SQR(x);
Tipe dari x bisa berupa real maupun integer. Dan hasilnya akan sama dengan tipe
dari x.
j. SQRT(fungsi)
Digunakan untuk menghitung nilai akar dari suatu bilangan.
Sintaks: SQRT(x);
Contoh :
PROGRAM Aritmatik; USES
CRT;
VAR x : REAL;
BEGIN
CLRSCR;
WRITE('masukkan nilai dari X = ');
READLN(x);
IF x<0 THEN x:=ABS(x);
WRITELN('Nilai X = ',x:5:2);
WRITELN('Nilai eksponentialnya =
',EXP(x):9:3); WRITELN('Nilai logaritma
alamnya = ',LN(x):9:3); WRITELN('Nilai
integernya = ',INT(x):5:2); WRITELN('Nilai
fraksionalnya = ',FRAC(x):5:2);
WRITELN('Nilai X dipangkatkan =
',SQRT(x):9:3); WRITELN('Nilai X diakarkan =
',SQRT(x):9:3); WRITE('Nilai X jika
dimasukkan dalam '); WRITELN('fungsi
SIN,COS,TANGEN : '); WRITELN('- Sinus =
',SIN(x):9:3);
WRITELN('- Cosinus = ',COS(x):9:3);
WRITELN('- Tangen = ',ARCTAN(x):9:3);
END.
Hasilnya :
masukkan nilai dari X = -2.5
Nilai X = 2.50
Nilai eksponensialnya = 12,182
Nilai logarima alamnya = 0,196
Nilai integernya = 2.00
Nilai fraksionalnya = 0.50
Nilai X dipangkatkan = 6.250
Nilai X diakarkan = 1.581
a. CHR(fungsi)
Merubah nilai dari byte ke bentuk karakter yang sesuai dengan kode ASCII.
Sintaks: CHR(x); Keterangan :
x bertipe byte
contoh : WRITELN(CHR(61);
hasilnya : a
b. ORD(fungsi)
Merubah nilai suatu variabel dari bentuk karakter ke bentuk longint.
Sintaks: ORD(X);
c. ROUND(fungsi)
Membulatkan data tipe real ke data tipe longint.
Sintaks: ROUND(X);
Keterangan : Jika nilai pecahan < 0,5 maka dibulatkan kebawah.
Jika nilai pecahan > 0,5 maka dibulatkan keatas.
contoh : WRITELN('10/3 dibulatkan = ',ROUND(10/3));
hasilnya : 10/3 dibulatkan = 3
d. TRUNC(fungsi)
Membulatkan kebawah data tipe real ke data tipe longint.
Sintaks: TRUNC(X);
contoh :
WRITELN('20/3 dibulatkan kebawah = ',TRUNC(20/3));
hasilnya : 20/3 dibulatkan kebawah = 6
a. PRED(fungsi)
Memberikan nilai sebelum nilai argumen dalam urutannya dalam ASCII.
Sintaks: PRED(x);
b. SUCC(fungsi)
Memberikan nilai sesudah nilai argumen dalam urutannya dalam ASCII.
Sintaks: SUCC(x);
c. INC(fungsi)
Menambah (increments) nilai suatu variabel.
Sintaks: INC(x,i); {i >= 1}
d. DEC(fungsi)
Mengurangi (decrements) nilai suatu variabel.
Sintaks: DEC(x,i); {i >=1}
Contoh :
('Senin','Selasa','Rabu','Kamis',
'Jumat','Sabtu','Minggu');
BEGIN
WRITELN('DAFTAR NAMA HARI');
urutanhr := hr0;
WHILE Urutanhr < hr7 DO BEGIN
urutanhr := SUCC(urutanhr);
WRITE('hari ke ,ORD(Urutanhr):2,' adalah ');
WRITELN(namahr[urutanhr]);
END;
END.
Hasilnya adalah :
DAFTAR NAMA HARI hari ke 1 adalah Senin hari ke 2 adalah Selasa hari ke 3
adalah Rabu hari ke 4 adalah Kamis hari ke 5 adalah Jumat hari ke 6 adalah Sabtu
hari ke 7 adalah Minggu
b. TEXTBACKGROUND(prosedur)
Untuk mengatur warna latar belakang dari karakter-karakter dilayar.
Sintaks: TEXTBACKGROUND(Color : Byte);
c. WINDOW(prosedur)
Untuk membuat suatu jendela (window) yang terletak pada layar.
Sintaks: WINDOW(x1,x2,y1,y2 : Byte);
x1,x2 = kordinat kiri atas dengan nilai maksimal sesuai dengan mode layar.
y1,y2 = kordinat kanan bawah dgn nilai maksimal sesuai dengan mode layar.
d. TEXTMODE(prosedur)
Untuk mengatur lebar layar, 80 kolom atau 40 kolom.
Sintaks: TEXTMODE(Mode: Byte);
Default = C80
e. SOUND(prosedur)
Untuk mengaktifkan suara(beep) pada internal speaker.
Sintaks: SOUND(Hz : word);
Untuk mengnonaktifkannya, gunakan statemen NOSOUND.
Contoh :