Program ini merupakan program penjualan tiket kereta api yang menggunakan konsep array, perulangan, prosedur dan kondisional. Program ini menampung data pemesanan tiket kedalam array satu dimensi dan mencetak hasil pemesanan menggunakan prosedur. Program ini dapat memfilter data berdasarkan pilihan tujuan menggunakan kondisional.
1. DAFTAR PUSTAKA
DAFTAR PUSTAKA ................................................................................................................................... 1
BAB I ........................................................................................................................................................ 2
A. DASAR TEORI ............................................................................................................................... 2
B. TUJUAN ....................................................................................................................................... 6
BAB II ....................................................................................................................................................... 7
PEMBAHASAN ..................................................................................................................................... 7
BAB III .................................................................................................................................................... 10
A. KESIMPULAN ............................................................................................................................. 10
B. HASIL ( PRINT SCREEN) .............................................................................................................. 10
1
2. BAB I
A. DASAR TEORI
Saat program kita buat sudah menjadi besar kita akan mengalami kesulitan dalam
mengatur kode program, jika semua kode tersebut disatukan. Untuk mengatasi
permasalahan tersebut, kita bisa menggunakan subprogram utnuk membuat program kita
terbagi menjadi beberapa bagian yang masing-masing lebih kecil dan lebih mudah
dikelola.
Pemecahan program menjadi subprogram yang lebih kecil juga akan
mempermudah kita jika ingin membuat program yang serupa, kita hanya perlu menyalin
atau memakai subprogram yang sudah ada di dalam program kita yang baru.
Dalam setiap bahasa pemrograman prosedural (contohnya Pascal) umumnya
dikenal Procedure (Prosedur) dan Function (Fungsi), dua buah bentuk subprogram yang
umum. Fungsi adalah subprogram yang memetakan suatu nilai dari suatu domain ke
domain lain, sedangkan prosedur adalah suatu subprogram yang melakukan aksi tertentu.
a. Prosedur
Prosedur memungkinkan kita membagi program dengan mengelompokkan aksi
menjadi bagianbagianyang jelas terpisah, prosedur juga memungkinkan kita
memisahkan bagian program yang sering diulang sehingga tidak perlu ditulis ulang
di setiap waktu.
Prosedur banyak digunakan pada program terstruktur karena:
Merupakan penerapan konsep program modular, yaitu memecah-mecah
program yang rumit menjadi program-program bagian yang lebih sederhana
dalam bentuk-bentuk prosedur.
Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali
saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu
bila diperlukan.
b. Fungsi
Sama seperti definisi dalam matematika, fungsi dalam pemrograman juga berarti
pemetaan suatu nilai dari suatu domain ke domain yang lain. Pascal sudah
menyediakan aneka fungsi standar, seperti fungsi trigonometri, fungsi kuadrat, dan
lain-lain.
2
3. Dalam implementasinya fungsi hampir sama persis dengan prosedur (boleh memiliki
variabel, parameter, dan lain-lain) dengan satu perbedaan yaitu fungsi dapat dan
harus mengembalikan nilai.
Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah
fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursi diimplementasikan
dalam sebuah fungsi yang memanggil dirinya sendiri.Contoh fungsi rekursif misalnya adalah
fungsi pangkat, faktorial, dan barisan fibonacci.
Rekursif mempunyai kelebihan pada kode program yang lebih ringkas dan mudah
dipahami. Sedangkan kesulitannya yaitu membutuhkan alokasi memori yang besar dan tidak
cocok ketika kinerja tinggi diperlukan, karena terjadi overhead pemanggilan fungsi dalam
jumlah yang relatif besar.
Kenapa membuat program Rekursif? Persoalan yang ingin diselesaikan
memangmengandung definisi “rekursif”. Program yang dibuat mengolah data
bertyperekursif. Karena programmernya ingin menulis solusirekursif, persoalan yang tidak
rekursif tidak perludiselesaikan secara rekursif, tapi bisa diselesaikansecara rekursif. Untuk
mencari solusi dari program rekursif adalah solusi rekursif yang berangkat dari
definisirekursif :Baca baik-baik persoalan, dan buatdefinisi rekursif sesuai definisi persoalan,
solusi rekursif karena persoalan diwakilioleh struktur data rekursif, buat prosedur/fungsi
rekursif (anda harusmembuat prosedur/fungsi denganparameter). Lalu apa persoalan dari
program rekursif? Yaitu program harus dijamin berhenti.Sulit dibayangkan eksekusinya tanpa
terikatdefinisinya. Dalam pemrogramanfungsional, tidak masalah sebab konstruksibukan dari
eksekusi melainkan dari definisi. Performansi, keterbatasan implementasimesin
pengeksekusi. Dalam paradigmafungsional, hal ini tidak menjadi masalah.
Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus
memiliki :
kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau
special condition)
pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)
Secara umum bentuk dari sub program rekursif memiliki statemen kondisional:ifkondisi
khusus tak dipenuhithen panggil diri-sendiri dengan parameter yang sesuai else lakukan
instruksi yang akan dieksekusi bila kondisi khusus dipenuhi.
3
4. Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah
penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu
permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program
rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara
algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori,
waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien. Dengan
demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi
kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-
permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian
/ searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang)
Salah satutipe data terstruktur yang dipelajaridalampemrogamanadalah array
ataudenganistilahlainnyaadalahlarik.Terminologidarilarikitusendiri, yaitu:
Larikadalahderetanrinci data yang mempunyaitipe data sejenis. Untaikarakter
(string) merupakancontoh array.
Setiaprinci data disebutdengankomponenatauelemen array.
Setiaplarik (array) bias dioperasikanmenggunakanpemilihelemen array yang
disebut index atausubskrip.
Dalam program, index atausubskriptersebutdiletakkandalamtandakurungkotak [ ],
setelahnama array yang akandioperasikan.
Untukmendeklarasikan variable array ditentukandengan:
Varnama : array [index] of tipe;
Dengan
Var, array, of : kata kunci yang harusada.
Nama : nama array yang akan di deklarasikan.
Index : batasan index yang akanadapada array yang akan di
deklarasikan.
Tipe : tipe array.
a. Array Satu Dimensi
Pendefinisian array secara umum adalah sebagai berikut : jika kita ingin membuat
beberapa array dengan tipe/jenis yang sama, kita lebih baik jika mendeklarasikan
dengan type selanjutnya dengan deklarasi var.
Type
4
5. nama_array=array[bawah..atas] of tipe_data;
var
variabel_array:nama_array;
atau dengan menggunakan statement var:
var
variabel_array:array[bawah..atas] of tipe_data;
Penjelasan: bawah dan atas menyatakan batas untuk array, tipe_data adalah
merupakan tipe variabel yang dipunyai array 9mis. Integer, char, real, dsb).
b. Array Multidimensi
Dalam array multidimensi terdiri atas baris (row) dan kolom (column). Index
pertama adalah baris dan yang kedua adalah kolom.
Type nama_array=array[bawah..atas, bawah..atas] of tipe_data;
Var variabel_array:nama_array;
Atau dengan menggunakan statement var:
Var variabel_array:array[bawah..atas, bawah..atas] of tipe_data;
Record merupakantipe data terstruktur, yang terdiridari item data danmasing-
masingdapatmempunyaitipe data yang berbeda-beda. Item data itudinamakanFIELD.
Deklarasitipe data record diawalidengan keyword RECORD yang diikutiolehsuatudaftar field
dandiakhiridengan keyword END.
Contoh:
TYPE
Rec_Langganan = RECORD
KODE : STRING[10];
NAMA : STRING[30];
ALAMAT : STRING[50];
PIUTANG : REAL;
END;
VAR
PELANGGAN : Rec_Langganan;
Ataumendeklarasikanlangsung di bagiandeklarasivariabel
VAR
PELANGGAN : RECORD
KODE : STRING[10];
5
6. NAMA : STRING[10];
ALAMAT : STRING[10];
PIUTANG : REAL;
END;
Tipe data recordnyaadalah “Rec_Langganan” dan variable yang
menggunakantipetersebutadalah “PELANGGAN”, jikainginmemberikannilaikesalahsatu
field, contohnya field “NAMA” makacarapenulisannyaadalah:
PELANGGAN.NAMA := „Bla-Bla bin bla‟;
Berbedadengan array dalamsuatu record masing-masing data
bisaberlainantipedatanya.Tipe data elemen record dapatberupatipe data apasajatermasuk
array.
B. TUJUAN
1. Laporanini di buatuntukmemenuhiTugasBesarPemrogramanDasar.
2. Program ini di buatuntukpenjualantiketkeretaapi.
3. Program ini di buatsupayamahasiswalebihpahamtentangpenggunaan array,
perulangan, kondisional, procedure atau function.
6
7. BAB II
PEMBAHASAN
Program iniadalah program yang di jalankanuntukpenjualantiketkeretaapi. Didalam program
initerdapat 4 point pembahasanyaituperulangan, kondisional, procedure, dan array.
Perulangandengan statement for digunakanuntukmengulangstatemenatausuatublok
statement berulang kali. Perulangandengan statement for
dapatberupaperulanganpositifdanperulangannegaif.Dalam program iniperulangannya :
for i:=15 to 78 do
begin
gotoxy(i,22);write(chr(177));
delay(200);
end;
textcolor(15);
end;
Script inijika di jalankanakanmenghasilkangaris yang
panjangdanwarnanyatelahditentukandanpanjangdari cursor x ke-15 sampaikursor x ke-78.
Kondisiadalahsuatu proses pemilihanaksidiantarabeberapa alternative
yangdiberikan.Dalam program initerdapatkondisiyaitumenggunakan if then else :
if a=1 then data[i].tujuan:='Bandung'
else
if a=2 then data[i].tujuan:='Surabaya'
else
if a=3 then data[i].tujuan:='Jakarta';
Script inijika di run akanmenghasilkanpilihan yang akan di tentukanpemakai program
jikamemilihangka 1 makaakanterlihat output „Bandung‟, jika 2 akankeluar output „Surabaya‟,
danjika 3 makaakankeluar output „Jakarta‟.
7
8. if a=1 then begin
data[i].harga:=200000;
data[i].kelas:='Bisnis';
end
else
if a=2 then begin
data[i].harga:=330000;
data[i].kelas:='Bisnis';
end
else
if a=3 then begin
data[i].harga:=300000;
data[i].kelas:='Bisnis';
end;
end;
Script kondisionaliniakanmencetak data dariinputanpengguna program
inisesuaidenganpilihan yang telah di tentukanpengguna.
Procedure di gunakanuntukmembagi program dengan mengelompokkan aksi menjadi
bagianbagianyang jelas terpisah, prosedur juga memungkinkan kita memisahkan bagian
program yang sering diulang sehingga tidak perlu ditulis ulang di setiap waktu. Procedure
yang di gunakanuntuk program iniadalah :
procedurejadwal(var d:byte);
begin
if d=1 then begin gotoxy(3,15);writeln('Bandung = 07.00 , 12.00 , 20.00');end
else
if d=2 then begin gotoxy(3,15);writeln('Surabaya = 08.00 , 13.00 , 21.00');end
else
if d=3 then begin gotoxy(3,15);writeln('Jakarta = 06.00 , 11.00 , 19.00');end;
end;
Procedure inijika di jalankanakanmemberikan output „jadwal‟
kepadapenggunayaitumemberikanpemilihan data yang harus di inputkanolehpengguna
program. Adapun procedure yang lainnyaseperti:
8
9. procedurehasil;
begin
clrscr;
gotoxy(3,3);writeln('Nama = ',data[i].nama);
gotoxy(3,4);writeln('Tujuan = ',data[i].tujuan);
gotoxy(3,5);Writeln('Kebrangkatan = ',data[i].brangkat);
gotoxy(3,6);writeln('Kelas = ',data[i].kelas,'
',data[i].harga:0:2);
gotoxy(3,7);writeln('Jumlahtiket = ',data[i].tiket);
gotoxy(3,8);writeln('Total = ',data[i].toth:0:2);
end;
Procedure hasilinijika di jalankanakanmencetakdarisemuapemilihan yang telah di
tentukanolehpengguna, darimulai input nama, tujuan,
keberangkatandanseterusnyaakanterlihatsemuapada procedure ini.
Tipe data array digunakanuntukmenampungsederetan data dengannilai yang
sama.Pada program ini di gunakantipe data array 1 dimensi. Script programnyadalah :
typepesan = record
nama,tujuan,kelas,brangkat:string[50];
harga,toth:real;
tiket:byte;
end;
vardata:array[1..100] of pesan;
i:byte;
Array di tuliskanpada variable.Untukpembacaandatanyadapat di tulisseperti script
berikut :
if a=1 then begin
data[i].harga:=310000;
data[i].kelas:='Ekonomi';
end
9
10. BAB III
A. KESIMPULAN
Pascal dapat di gunakanuntukmembuat program semuamacamaspek, semuafungsidari
type, kndisinyajugadapatdisesuaikandandapat di pahami.Pembuatan program
akanlebihmudahjikapembuatprogram mengetahuidasar-dasardari turbo pascal.
B. HASIL ( PRINT SCREEN)
usescrt;
typepesan = record
nama,tujuan,kelas,brangkat:string[50];
harga,toth:real;
tiket:byte;
end;
vardata:array[1..100] of pesan;
i:byte;
procedureselamat;
vari,j:byte;
begin
clrscr;
gotoxy(35,9);textcolor(11);writeln('S');
delay(400);
gotoxy(35,9);writeln('SE');
delay(400);
gotoxy(35,9);writeln('SEL');
delay(400);
gotoxy(35,9);writeln('SELA');
delay(400);
gotoxy(35,9);writeln('SELAM');
delay(400);
gotoxy(35,9);writeln('SELAMA');
delay(400);
gotoxy(35,9);writeln('SELAMAT');
delay(400);
gotoxy(35,9);writeln('SELAMAT ');
delay(400);
gotoxy(35,9);writeln('SELAMAT D');
delay(400);
gotoxy(35,9);writeln('SELAMAT DA');
delay(400);
gotoxy(35,9);writeln('SELAMAT DAT');
delay(400);
gotoxy(35,9);writeln('SELAMAT DATA');
10
12. delay(200);
end;
textcolor(15);
end;
procedurejadwal(var d:byte);
begin
if d=1 then begin gotoxy(3,15);writeln('Bandung = 07.00 , 12.00 ,
20.00');end
else
if d=2 then begin gotoxy(3,15);writeln('Surabaya = 08.00 , 13.00 ,
21.00');end
else
if d=3 then begin gotoxy(3,15);writeln('Jakarta = 06.00 , 11.00 ,
19.00');end;
end;
proceduredaftar;
var a:byte;
b,c:char;
begin
clrscr;
gotoxy(3,3);write('NamaAnda : ');readln(data[i].nama);
writeln;
gotoxy(11,4);writeln('Tujuan');
gotoxy(3,5);writeln('pilih 1 untuk Bandung');
gotoxy(3,6);writeln('pilih 2 untuk Surabaya');
gotoxy(3,7);writeln('pilih 3 untuk Jakarta');
gotoxy(3,8);Write('Pilihan : ');readln(a);
if a=1 then data[i].tujuan:='Bandung'
else
if a=2 then data[i].tujuan:='Surabaya'
else
if a=3 then data[i].tujuan:='Jakarta';
writeln;
writeln;
gotoxy(11,9);writeln('Kelas');
gotoxy(3,10);Writeln('pilih A untukBisnis');
gotoxy(3,11);writeln('pilih B untuk VIP');
gotoxy(3,12);writeln('pilih C untukEkonomi');
gotoxy(3,13);write('pilihan : ');readln(b);
case b of
'a','A':begin
if a=1 then begin
data[i].harga:=200000;
data[i].kelas:='Bisnis';
12
13. end
else
if a=2 then begin
data[i].harga:=330000;
data[i].kelas:='Bisnis';
end
else
if a=3 then begin
data[i].harga:=300000;
data[i].kelas:='Bisnis';
end;
end;
'b','B':begin
if a=1 then begin
data[i].harga:=300000;
data[i].kelas:='VIP';
end
else
if a=2 then begin
data[i].harga:=320000;
data[i].kelas:='VIP';
end
else
if a=3 then begin
data[i].harga:=400000;
data[i].kelas:='VIP';
end;
end;
'c','C':begin
if a=1 then begin
data[i].harga:=310000;
data[i].kelas:='Ekonomi';
end
else
if a=2 then begin
data[i].harga:=320000;
data[i].kelas:='Ekonomi';
end
else
if a=3 then begin
data[i].harga:=200000;
data[i].kelas:='Ekonomi';
end;
end;
end;
13
14. gotoxy(3,14);Write('Apakahandainginmelihatjadwal? (y/n):
');readln(c);
if (c='y') or (c='Y') then
begin
jadwal(a);
gotoxy(3,16);write('jadwalkeberangkatan =
');readln(data[i].brangkat);
end
else
gotoxy(3,17);write('Berapatiket yang andabeli?
');readln(data[i].tiket);
data[i].toth:=(data[i].tiket)*(data[i].harga);
gotoxy(20,18);writeln('Terimakasih');
end;
procedurehasil;
begin
clrscr;
gotoxy(3,3);writeln('Nama = ',data[i].nama);
gotoxy(3,4);writeln('Tujuan = ',data[i].tujuan);
gotoxy(3,5);Writeln('Kebrangkatan = ',data[i].brangkat);
gotoxy(3,6);writeln('Kelas = ',data[i].kelas,'
',data[i].harga:0:2);
gotoxy(3,7);writeln('Jumlahtiket = ',data[i].tiket);
gotoxy(3,8);writeln('Total = ',data[i].toth:0:2);
end;
labela,b;
var t:char;
j:byte;
begin
clrscr;
selamat;
i:=1;
a: begin
clrscr;
daftar;
hasil;
gotoxy(3,9);write('Inginmelakukantransaksikembali (y/n) :
');readln(t);
if (t='y') or (t='Y') then
begin
i:=i+1;
goto a;
end
else
14
15. if (t='n') or (t='N') then
goto b;
end;
b: begin
clrscr;
gotoxy(26,9);writeln('TERIMAKASIH KEPERCAYAAN ANDA MENGGUNAKAN JASA
KAMI UNTUK PERJALANAN ANDA');
gotoxy(32,11);writeln('ANDA TIDAK PUAS DENGAN PELAYANAN KAMI?');
gotoxy(37,13);writeln('SILAHKAN HUBUNGI (0271) 666999');
readln;
end;
end.
HasilOutput :
15