RANGKUMAN – REKENING PAM (PROJECT KELOMPOK)

Kali ini saya akan membagikan sedikit projek kecil yang saya terima. Post kali ini juga sebagai rangkuman dari seluruh materi-materi dari post awal. Notasi yang saya akan bagikan kali ini nantinya akan menjadi aplikasi sederhana untuk input output rekening PAM yang dibuat oleh saya dan 2 teman kelompok saya.

(Maaf jika adanya kekurangan dalam segi kerapian indentasi dikarenakan tidak bisa diberi indent secara otomatis oleh karena saya copy-paste dari catatan yang saya tulis sendiri di notepad++ sebelumnya. Yang sebenarnya text aslinnya semuanya di notepad++ sudah dalam kondisi berindentasi/rapi)

/*

NAMA : NATHANAEL FREDERICKO W, MARTINUS ALBERT B, NATHANIEL ROCCO ADRIAN
NIM : A11.2018.10882, A11.2018.10880, A11.2018.10879
MAKUL : DASAR PEMROGRAMAN (TEORI)
TEMPAT : RUMAH NATHAN, RUMAH ALBERT,RUMAH ROCCO
WAKTU : 6-12-2018
PROGRAM : APLIKASI INPUT OUTPUT REKENING PAM

*/

JUDUL :
REKENING PAM

TIPE BENTUKAN :
tipe state
<
kota, provinsi <- string
>

tipe keterangan
<
nomer, meter ,pemakaian <- integer
golongan <- string
>

tipe nama
<
depan, belakang <- string
>

tipe date
<
tgl, bln, thn <- integer
>

tipe waktu
<
hari <- string
tanggal <- date
>

tipe tempat
<
alamat, kelurahan, kecamatan <- string
rt, rw <- integer
>

tipe nominal
<
tagihan, denda, angsuran, admin, total <- integer
>

tipe rekening
<
statex <- statex
keteranganx <- keterangan
namax <- nama
waktux <- waktu
tempatx <- tempat
periode <- date
nominalx <- nominal
>

KAMUS :
PAM <- array of [1..255] rekening
i, j, x <- integer
jumlah, cari, fungsi, dicari <- integer
pilih_searching, pilih_sorting <-integer
temp, mark, tanda <- integer

PROSEDUR DAN FUNGSI :
procedure input(x)
procedure output(x)
procedure sortingA(y,x)
procedure sortingB(y,x)
procedure sortingSA(y,x)
procedure sortingSB(y,x)
function searching(search)
procedure searchings(x)

DESKRIPSI:
{
i = 0
input(i)
i = 0
output(i)

// SEARCHING
input (fungsi) // INPUT ANGKA 1 (JALANKAN FUNGSI) ATAU !1 (LEWATI)
if (fungsi = 1) then
{
/*TIPE SEARCHING :
1. NOMER PELANGGAN
2. NAMA PELANGGAN
*/
input (pilih_searching)
if (pilih_searching = 1) then
{
input (dicari) // INPUT NOMER PELANGGAN YANG DICARI
searching (dicari) // MEMANGGIL FUNGSI SEARCHING NOMER (PARAMETER AKTUAL : dicari)
if (mark = 1) then
{
output(PAM[i].namax.depan,PAM[i].namax.belakang)
output(PAM[i].tempatx.alamat)
output(PAM[i].tempatx.rt,PAM[i].tempatx.rw)
output(PAM[i].keteranganx.golongan)
output(PAM[i].keteranganx.meter)
output(PAM[i].keteranganx.pemakaian)
output(PAM[i].periode.bln,PAM[i].periode.thn)
output(PAM[i].nominalx.tagihan)
output(PAM[i].nominalx.denda)
output(PAM[i].nominalx.angsuran)
output(PAM[i].nominalx.admin)
output(PAM[i].nominalx.total)

if (PAM[i].nominalx.lunas <= 0)
{
output(“LUNAS”)
}
else
{
output(“BELUM LUNAS”)
}
}
else
{
output (“NOMER PELANGGAN TIDAK DITEMUKAN”)
}
}
else if (pilih_searching = 2) then
{
i = 0 // DEKLARASI NILAI VARIABLE PARAMETER AKTUAL (PEMANGGILAN PROSEDUR)
searchingS(i) // MEMANGGIL FUNGSI SEARCHING NAMA (PARAMETER AKTUAL : i)
}
else
{
output (“SALAH INPUT”)
}
}
else
{
output(“THANK YOU”)
}

//SORTING
input (fungsi) // INPUT ANGKA 1 (JALANKAN FUNGSI) ATAU !1 (LEWATI)
if (fungsi = 1) then
{
/*TIPE SORTING :
1. NOMER PELANGGAN
2. NAMA PELANGGAN
*/
input (pilih_sorting)
if (pilih_sorting = 1) then
{
input (fungsi) // INPUT ANGKA 1 (ASCENDING) ATAU !1 (DESCENDING)
if (fungsi = 1)
{
j = 0
sortingA(j,i)
}
else
{
j = 0
sortingB(j,i)
}
}
else if (pilih_sorting = 2) then
{
input (fungsi) // INPUT ANGKA 1 (ASCENDING) ATAU !1 (DESCENDING)
if (fungsi = 1)
{
i = 0
sortingSA(i,j)
}
else
{
i = 0
sortingSB(i,j)
}
}
}
else
{
output(“THANK YOU”)
}

}

input(x) // PROSEDUR INPUT | PARAMETER x SEBAGAI i
{
// DESKRIPSI
input (jumlah) // INPUT JUMLAH REKENING
while (x < jumlah) do
{
input(PAM[x].statex.kota)
input(PAM[x].statex.provinsi)
input(PAM[x].keteranganx.nomer)
input(PAM[x].namax.depan)
input(PAM[x].namax.belakang)
input(PAM[x].tempatx.alamat)
input(PAM[x].tempatx.rt)
input(PAM[x].tempatx.rw)
input(PAM[x].keteranganx.golongan)
input(PAM[x].keteranganx.meter)
input(PAM[x].keteranganx.pemakaian)
input(PAM[x].perxode.bln)
input(PAM[x].perxode.thn)
input(PAM[x].nominalx.tagihan)
input(PAM[x].nominalx.denda)
input(PAM[x].nominalx.angsuran)
input(PAM[x].nominalx.admin)
PAM[x].nominalx.total = PAM[x].nominalx.tagihan + PAM[x].nominalx.denda + PAM[x].nominalx.admxn-PAM[x].nominalx.angsuran
PAM[x].nominalx.lunas = PAM[x].nominalx.total – PAM[x].nominalx.bayar;
x = x + 1
}
}

output(x) // PROSEDUR OUTPUT | PARAMETER x SEBAGAI i
{
// DESKRIPSI
while (x < jumlah) do
{
output(PAM[x].statex.kota)
output(PAM[x].statex.provinsi)
output(PAM[x].keteranganx.nomer)
output(PAM[x].namax.depan)
output(PAM[x].namax.belakang)
output(PAM[x].tempatx.alamat)
output(PAM[x].tempatx.rt)
output(PAM[x].tempatx.rw)
output(PAM[x].keteranganx.golongan)
output(PAM[x].keteranganx.meter)
output(PAM[x].keteranganx.pemakaian)
output(PAM[x].perxode.bln)
output(PAM[x].perxode.thn)
output(PAM[x].nominalx.tagihan)
output(PAM[x].nominalx.denda)
output(PAM[x].nominalx.angsuran)
output(PAM[x].nominalx.admin)
PAM[x].nominalx.total = PAM[x].nominalx.tagihan + PAM[x].nominalx.denda + PAM[x].nominalx.admxn-PAM[x].nominalx.angsuran
PAM[x].nominalx.lunas = PAM[x].nominalx.total – PAM[x].nominalx.bayar;
x = x + 1

if (PAM[x].nominalx.lunas <= 0)
{
output(“LUNAS”)
}
else
{
output(“BELUM LUNAS”)
}
x = x + 1
}
}

sortingA(y,x) // PROSEDUR SORTING NOMER (ASCENDING – BUBBLESORT) | PARAMETER x SEBAGAI i & y SEBAGAI j
{
// DESKRIPSI
while (y < jumlah) do
{
x = y + 1
while (x < jumlah ) do
{
if (PAM[y].keteranganx.nomer > PAM[x].keteranganx.nomer) then // JIKA NILAI INDEX SEBELUMYA > SETELAHNYA, TUKAR POSISI
{
temp = PAM[y].keteranganx.nomer // TAMPUNG NILAI INDEX SEBELUM
PAM[y].keteranganx.nomer = PAM[x].keteranganx.nomer // UBAH NILAI INDEX SEBELUM KE INDEX SESUDAH
PAM[x].keteranganx.nomer = temp // UBAH NILAI INDEX SESUDAH KE INDEX SEBELUM
}
x = x + 1
}
y = y + 1
}
x = 0 // DEKLARASI DIPERLUKAN SUPAYA TIDAK KONFLIK DENGAN NILAI VARIABLE SEBELUMNYA
while (x < jumlah) do // OUTPUT NOMER PELANGGAN (SUDAH TERURUT)
{
output (PAM[x].keteranganx.nomer)
x = x + 1
}
}

sortingB(y,x) // PROSEDUR SORTING NOMER (DESCENDING – BUBBLESORT) | PARAMETER x SEBAGAI i & y SEBAGAI j
{
// DESKRIPSI
while (y < jumlah) do
{
x = y + 1
while (x < jumlah ) do
{
if (PAM[y].keteranganx.nomer < PAM[x].keteranganx.nomer) then // JIKA NILAI INDEX SETELAHNYA > SEBELUMNYA, TUKAR POSISI
{
temp = PAM[x].keteranganx.nomer // TAMPUNG NILAI INDEX SETELAH
PAM[x].keteranganx.nomer = PAM[y].keteranganx.nomer // UBAH NILAI INDEX SETELAH KE INDEX SEBELUM
PAM[y].keteranganx.nomer = temp // UBAH NILAI INDEX SEBELUM KE SESUDAH
}
x = x + 1
}
y = y + 1
}
x = 0 // DEKLARASI DIPERLUKAN SUPAYA TIDAK KONFLIK DENGAN NILAI VARIABLE SEBELUMNYA
while (x < jumlah) do // OUTPUT NOMER PELANGGAN (SUDAH TERURUT)
{
output (PAM[x].keteranganx.nomer)
x = x + 1
}

sortingSA(x,y) // PROSEDUR SORTING NAMA (ASCENDING – BUBBLESORT) | PARAMETER x SEBAGAI i & y SEBAGAI j
{
// KAMUS LOKAL
tempS <- string // SEBAGAI VARIABLE WADAH SEMENTARA SELAMA PERTUKARAN

// DESKRIPSI
while (x < jumlah) do
{
y = x + 1
while (y < jumlah) do
{
if (PAM[x].namax.depan > PAM[y].namax.depan) // JIKA NAMA DI INDEX SEBELUM > NAMA DI INDEX SESUDAH (BERDASARKAN ABJAD)
{
// UNTUK SORTING PADA BAGIAN NAMA DEPAN NYA
tempS = PAM[x].namax.depan // TAMPUNG NAMA INDEX SEBELUM
PAM[x].namax.depan = PAM[y].namax.depan // UBAH NAMA INDEX SEBELUM KE SESUDAH
PAM[y].namax.depan = tempS // UBAH NAMA INDEX SESUDAH KE SEBELUM

// UNUTK SORTING PADA BAGIAN NAMA BELAKANG NYA
tempS = PAM[x].namax.belakang // TAMPUNG NAMA INDEX SEBELUM
PAM[x].namax.belakang = PAM[y].namax.belakang // UBAH NAMA INDEX SEBELUM KE SESUDAH
PAM[y].namax.belakang = tempS // UBAH NAMA INDEX SESUDAH KE SEBELUM
}
y = y + 1
}
x = x + 1
}
x = 0
while (x < jumlah) do
{
output(PAM[x].keteranganx.nomer,PAM[x].namax.depan,PAM[x].namax.belakang)
x = x + 1
}
}

sortingSB(x,y) // PROSEDUR SORTING NAMA (DESCENDING – BUBBLESORT) | PARAMETER x SEBAGAI i & y SEBAGAI j
{
// KAMUS LOKAL
tempS <- string // SEBAGAI VARIABLE WADAH SEMENTARA SELAMA PERTUKARAN

// DESKRIPSI
while (x < jumlah) do
{
y = x + 1
while (y < jumlah)do
{
if (PAM[x].namax.depan < PAM[y].namax.depan) < 0) // JIKA NAMA DI INDEX SEBELUM > NAMA DI INDEX SESUDAH (BERDASARKAN ABJAD)
{
// UNTUK SORTING PADA BAGIAN NAMA DEPAN NYA
tempS = PAM[x].namax.depan // TAMPUNG NAMA INDEX SEBELUM
PAM[x].namax.depan = PAM[y].namax.depan // UBAH NAMA INDEX SEBELUM KE SESUDAH
PAM[y].namax.depan = tempS // UBAH NAMA INDEX SESUDAH KE SEBELUM

// UNTUK SORTING PADA BAGIAN NAMA BELAKANG NYA
tempS = PAM[y].namax.belakang // TAMPUNG NAMA INDEX SEBELUM
PAM[y].namax.belakang = PAM[x].namax.belakang // UBAH NAMA INDEX SEBELUM KE SESUDAH
PAM[x].namax.belakang = tempS // UBAH NAMA INDEX SESUDAH KE SEBELUM
}
y = y + 1
}
x = x + 1
}
x = 0
while (x < jumlah) do // OUTPUT NOMER PELANGGAN (SUDAH TERURUT)
{
output(PAM[x].keteranganx.nomer,PAM[x].namax.depan,PAM[x].namax.belakang)
x = x + 1
}
}

searching(search) // FUNGSI SEARCHING NOMER (PARAMETER FORMAL : search)
{
// DESKRIPSI
i = 0
while (i < jumlah) do
{
if (dicari = PAM[i].keteranganx.nomer) // JIKA YANG DICARI DITEMUKAN PADA ARRAY KE SEKIAN, BERI TANDA
{
search = dicari // MENANDAI NILAI search ADALAH NILAI YANG DICARI
mark = 1 // SEBAGAI PENANDA APAKAH NILAI YANG DICARI DITEMUKAN, JIKA TIDAK DITEMUKAN MAKA mark TIDAK BERNILAI
tanda = i // PENANDA DI ARRAY KE BERAPA NILAI DITEMUKAN
}
i = i + 1
}
return search
}

searchingS(x) // PROSEDUR SEARCHING NAMA (PARAMETER FORMAL : x)
{
// KAMUS LOKAL
cari_nama <- string // VARIABLE SEMENTARA UTK PENAMPUNG NAMA YANG DICARI

// DESKRIPSI
input (cari_nama) // VARIABLE UTK PENAMPUNG NAMA YANG DICARI (NAMA DEPAN)
while (x < jumlah) do
{
if (PAM[x].namax.depan = cari_nama) then // JIKA NAMA DALAM INDEX ARRAY = NAMA YANG DICARI, TAMPILKAN DATA TERSEBUT
{
output(PAM[x].statex.kota)
output(PAM[x].statex.provinsi)
output(PAM[x].keteranganx.nomer)
output(PAM[x].namax.depan)
output(PAM[x].namax.belakang)
output(PAM[x].tempatx.alamat)
output(PAM[x].tempatx.rt)
output(PAM[x].tempatx.rw)
output(PAM[x].keteranganx.golongan)
output(PAM[x].keteranganx.meter)
output(PAM[x].keteranganx.pemakaian)
output(PAM[x].perxode.bln)
output(PAM[x].perxode.thn)
output(PAM[x].nominalx.tagihan)
output(PAM[x].nominalx.denda)
output(PAM[x].nominalx.angsuran)
output(PAM[x].nominalx.admin)
PAM[x].nominalx.total = PAM[x].nominalx.tagihan + PAM[x].nominalx.denda + PAM[x].nominalx.admxn-PAM[x].nominalx.angsuran
PAM[x].nominalx.lunas = PAM[x].nominalx.total – PAM[x].nominalx.bayar;
x = x + 1

if (PAM[x].nominalx.lunas <= 0)
{
output(“LUNAS”)
}
else
{
output(“BELUM LUNAS”)
}
}
x = x + 1
}