program pascal kereta
DESCRIPTION
Laporan pascal tiket keretaTRANSCRIPT
DAFTAR PUSTAKA
DAFTAR PUSTAKA..................................................................................................................................2
BAB I......................................................................................................................................................3
A. DASAR TEORI.............................................................................................................................3
B. TUJUAN......................................................................................................................................7
BAB II.....................................................................................................................................................8
PEMBAHASAN....................................................................................................................................8
BAB III..................................................................................................................................................11
A. KESIMPULAN............................................................................................................................11
B. HASIL ( PRINT SCREEN).............................................................................................................11
1
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
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: if kondisi
khusus tak dipenuhi then panggil diri-sendiri dengan parameter yang sesuai else lakukan
instruksi yang akan dieksekusi bila kondisi khusus dipenuhi.
Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah
penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu
3
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 satu tipe data terstruktur yang dipelajari dalam pemrogaman adalah array atau
dengan istilah lainnya adalah larik.Terminologi dari larik itu sendiri, yaitu:
Larik adalah deretan rinci data yang mempunyaitipe data sejenis. Untaikarakter
(string) merupakancontoh array.
Setiaprinci data disebutdengankomponenatauelemen array.
Setiaplarik (array) bias dioperasikan menggunakan pemilih elemen array yang
disebut index atau subskrip.
Dalam program, index atau subskrip tersebut diletakkan dalam tanda kurung kotak
[ ], setelahnama array yang akan dioperasikan.
Untuk mendeklarasikan variable array ditentukan dengan:
Varnama : array [index] of tipe;
Dengan
Var, array, of : kata kunci yang harus ada.
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
nama_array=array[bawah..atas] of tipe_data;
var
variabel_array:nama_array;
4
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 merupakan tipe data terstruktur, yang terdiri dari item data dan masing-masing
dapat mempunyai tipe data yang berbeda-beda. Item data itu dinamakan FIELD. Deklarasi
tipe data record diawali dengan keyword RECORD yang diikuti oleh suatu daftar field dan
diakhiri dengan keyword END.
Contoh:
TYPE
Rec_Langganan = RECORD
KODE : STRING[10];
NAMA : STRING[30];
ALAMAT : STRING[50];
PIUTANG : REAL;
END;
VAR
PELANGGAN : Rec_Langganan;
Atau mendeklarasikan langsung di bagian deklarasi variabel
VAR
PELANGGAN : RECORD
KODE : STRING[10];
NAMA : STRING[10];
ALAMAT : STRING[10];
PIUTANG : REAL;
5
END;
Tipe data recordnya adalah “Rec_Langganan” dan variable yang menggunakan tipe
tersebut adalah “PELANGGAN”, jika ingin memberikan nilai ke salah satu field, contohnya
field “NAMA” maka cara penulisannya adalah:
PELANGGAN.NAMA := ‘Bla-Bla bin bla’;
Berbeda dengan array dalam suatu record masing-masing data bisa berlainan tipe
datanya. Tipe data elemen record dapat berupa tipe data apa saja termasuk array.
B. TUJUAN
1. Laporan ini di buat untuk memenuhi Tugas Besar Pemrograman Dasar.
2. Program ini di buat untuk penjualan tiket kereta api.
3. Program ini di buat supaya mahasiswa lebih paham tentang penggunaan array,
perulangan, kondisional, procedure atau function.
BAB II
PEMBAHASAN
6
Program ini adalah program yang di jalankan untuk penjualan tiket kereta api. Didalam
program ini terdapat 4 point pembahasan yaitu perulangan, kondisional, procedure, dan array.
Perulangan dengan statement for digunakan untuk mengulang statemen atau suatu blok
statement berulang kali. Perulangan dengan statement for dapat berupa perulangan positif dan
perulangan negaif. Dalam program ini perulangannya :
Script ini jika di jalan kan akan menghasilkan garis yang panjang dan warnanya telah
ditentukan dan panjang dari cursor x ke-15 sampai kursor x ke-78.
Kondisi adalah suatu proses pemilihan aksi diantara beberapa alternative yang diberikan.
Dalam program ini terdapat kondisi yaitu menggunakan if then else :
Script ini jika di run akan menghasilkan pilihan yang akan di tentukan pemakai program jika
memilih angka 1 maka akan terlihat output ‘Bandung’, jika 2 akan keluar output ‘Surabaya’,
dan jika 3 maka akan keluar output ‘Jakarta’.
7
for i:=15 to 78 do
begin
gotoxy(i,22);write(chr(177));
delay(200);
end;
textcolor(15);
end;
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';
if a=1 then begin
data[i].harga:=200000;
data[i].kelas:='Bisnis';
end
else
if a=2 then begin
data[i].harga:=330000;
Script kondisional ini akan mencetak data dari inputan pengguna program ini sesuai
dengan pilihan yang telah di tentukan pengguna.
Procedure di gunakan untuk 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. Procedure
yang di gunakan untuk program ini adalah :
Procedure ini jika di jalankan akan memberikan output ‘jadwal’ kepada pengguna yaitu
memberikan pemilihan data yang harus di inputkan oleh pengguna program. Adapun
procedure yang lainnya seperti:
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;
procedure jadwal(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 hasil;
begin
clrscr;
gotoxy(3,3);writeln('Nama = ',data[i].nama);
gotoxy(3,4);writeln('Tujuan = ',data[i].tujuan);
Procedure hasil ini jika di jalankan akan mencetak dari semua pemilihan yang telah di
tentukan oleh pengguna, dari mulai input nama, tujuan, keberangkatan dan seterusnya akan
terlihat semua pada procedure ini.
Tipe data array digunakan untuk menampung sederetan data dengan nilai yang sama.
Pada program ini di gunakan tipe data array 1 dimensi. Script programnya dalah :
Array di tuliskan pada variable. Untuk pembacaan datanya dapat di tulis seperti script
berikut :
BAB III
A. KESIMPULAN
9
procedure hasil;
begin
clrscr;
gotoxy(3,3);writeln('Nama = ',data[i].nama);
gotoxy(3,4);writeln('Tujuan = ',data[i].tujuan);
type pesan = record
nama,tujuan,kelas,brangkat:string[50];
harga,toth:real;
tiket:byte;
end;
var data:array[1..100] of pesan;
if a=1 then begin
data[i].harga:=310000;
data[i].kelas:='Ekonomi';
end
Pascal dapat di gunakan untuk membuat program semua macam aspek, semua fungsi
dari type, kndisinya juga dapat disesuaikan dan dapat di pahami. Pembuatan program
akan lebih mudah jika pembuat program mengetahui dasar-dasar dari turbo pascal.
B. HASIL ( PRINT SCREEN)
uses crt;
type pesan = record
nama,tujuan,kelas,brangkat:string[50];
harga,toth:real;
tiket:byte;
end;
var data:array[1..100] of pesan;
i:byte;
procedure selamat;
var i,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);
10
gotoxy(35,9);writeln('SELAMAT DATA');
delay(400);
gotoxy(35,9);writeln('SELAMAT DATAN');
delay(400);
gotoxy(35,9);writeln('SELAMAT DATANG');
delay(400);
gotoxy(41,11);writeln('D');
delay(400);
gotoxy(41,11);writeln('DI');
delay(400);
gotoxy(34,13);writeln('P');
delay(400);
gotoxy(34,13);writeln('PT');
delay(400);
gotoxy(34,13);writeln('PT.');
delay(400);
gotoxy(34,13);writeln('PT.D');
delay(400);
gotoxy(34,13);writeln('PT.DA');
delay(400);
gotoxy(34,13);writeln('PT.DAS');
delay(400);
gotoxy(34,13);writeln('PT.DASS');
delay(400);
gotoxy(34,13);writeln('PT.DASSA');
delay(400);
gotoxy(34,13);writeln('PT.DASSA ');
delay(400);
gotoxy(34,13);writeln('PT.DASSA E');
delay(400);
gotoxy(34,13);writeln('PT.DASSA EX');
delay(400);
gotoxy(34,13);writeln('PT.DASSA EXP');
delay(400);
gotoxy(34,13);writeln('PT.DASSA EXPR');
delay(400);
gotoxy(34,13);writeln('PT.DASSA EXPRE');
delay(400);
gotoxy(34,13);writeln('PT.DASSA EXPRES');
delay(400);
11
gotoxy(34,13);writeln('PT.DASSA EXPRESS');
delay(400);
gotoxy(3,22);WRITE('LOADING : ');
delay(400);
for i:=15 to 78 do
begin
gotoxy(i,22);write(chr(177));
delay(200);
end;
textcolor(15);
end;
procedure jadwal(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 daftar;
var a:byte;
b,c:char;
begin
clrscr;
gotoxy(3,3);write('Nama Anda : ');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;
12
gotoxy(11,9);writeln('Kelas');
gotoxy(3,10);Writeln('pilih A untuk Bisnis');
gotoxy(3,11);writeln('pilih B untuk VIP');
gotoxy(3,12);writeln('pilih C untuk Ekonomi');
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';
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
13
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;
gotoxy(3,14);Write('Apakah anda ingin melihat jadwal? (y/n): ');readln(c);
if (c='y') or (c='Y') then
begin
jadwal(a);
gotoxy(3,16);write('jadwal keberangkatan = ');readln(data[i].brangkat);
end
else
gotoxy(3,17);write('Berapa tiket yang anda beli? ');readln(data[i].tiket);
data[i].toth:=(data[i].tiket)*(data[i].harga);
gotoxy(20,18);writeln('Terimakasih');
end;
procedure hasil;
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('Jumlah tiket = ',data[i].tiket);
gotoxy(3,8);writeln('Total = ',data[i].toth:0:2);
end;
label a,b;
var t:char;
14
j:byte;
begin
clrscr;
selamat;
i:=1;
a: begin
clrscr;
daftar;
hasil;
gotoxy(3,9);write('Ingin melakukan transaksi kembali (y/n) : ');readln(t);
if (t='y') or (t='Y') then
begin
i:=i+1;
goto a;
end
else
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.
Hasil Output :
15
16