• Tidak ada hasil yang ditemukan

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

N/A
N/A
Protected

Academic year: 2022

Membagikan "MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal"

Copied!
19
0
0

Teks penuh

(1)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1

Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Deklarasi global:

type TInfo = integer type Address = pointer to Elemen

type Elemen = record <Info: TInfo, Next: Address>

type Senarai = record <First: Address>

procedure Alokasi(output P: Address)

{memesan satu unit penyimpan untuk dijadikan elemen senarai}

{K. Awal: - }

{K.Akhir: P terdefinisi, siap digunakan sebagai elemen list}

procedure Create(output L: Senarai) {membuat senarai kosong}

{K. Awal: - }

{K.Akhir: tercipta sebuah list kosong, L.First = Nil}

procedure InsertFirst(input/output L: Senarai, input P: Address)

{Menyisipkan P sebagai elemen pertama senarai}

{K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen pertama senarai}

procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak}

procedure HitGanjil(input L: Senarai, output NGj: integer) {Menghitung banyak elemen senarai yang info-nya ganjil}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: NGj terdefinisi, yaitu banyak elemen senarai yang bernilai ganjil. Jika senarai kosong,

maka NGj = -99 }

(2)

P: Address L: Senarai

k, N, NGj: integer X: TInfo

Deskripsi:

Create(L)

write (‘Banyak elemen senarai?’); read (N) for k  1 to N do

write (‘masukkan info’); read (X) Alokasi(P)

Info(P)  X Next(P)  Nil InsertFirst(L, P) endfor

Cetak(L)

HitGanjil(L, NGj)

write(‘banyak info ganjil =’, NGj)

(3)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-2, Pertemuan ke-2

Nama file : P02-XXX

Deskripsi: Senarai, Penyisipan

Deklarasi global:

type TInfo = integer type Address = pointer to Elemen

type Elemen = record <Info: TInfo, Next: Address>

type Senarai = record <First: Address>

procedure Alokasi(output P: Address)

{memesan satu unit penyimpan untuk dijadikan elemen senarai}

{K. Awal: - }

{K.Akhir: P terdefinisi, siap digunakan sebagai elemen list}

procedure Create(output L: Senarai) {membuat senarai kosong}

{K. Awal: - }

{K.Akhir: tercipta sebuah list kosong, L.First = Nil}

procedure InsertFirst(input/output L: Senarai, input P: Address)

{Menyisipkan P sebagai elemen pertama senarai}

{K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen pertama senarai}

procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev}

{K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev}

procedure SisipK(input/output L: Senarai, input P: Address, input k: integer)

{menyisipkan P sebagai elemen ke-k}

{K. Awal: L terdefinisi, P terdefinisi, k terdefinisi, > 0}

{K.Akhir: P menjadi elemen ke-k}

procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

(4)

{K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak}

procedure HitElemen(input L: Senarai, output NEl: integer) {Menghitung banyak elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: NEl terdefinisi, yaitu banyak elemen senarai } P: Address

L: Senarai Pil, k: integer X: TInfo

Deskripsi:

Create(L) repeat

write(‘Pemrosesan Senarai’) write(‘1. Penyisipan’) write(‘2. Cetak’)

write(‘3. Hitung Elemen’) write(‘4. Selesai’)

write(‘Masukkan pilihan[1/2/3/4]’); read(Pil) if (Pil=1) then

write (‘Info yang akan disisipkan adalah: ’); read(X) Alokasi(P); Next(P)  Nil; Info(P)  X

wriite (‘Sisipkan sebagai elemen ke-?’); read(k) SisipK(L,P,k)

else if (Pil=2) then Cetak(L)

else if (Pil=3) then

HitungElemen(L,NEl);

write(‘Banyak elemen senarai = ’,NEl) else if (Pil=4) then

write(‘Program Selesai’) else

write(‘Salah pilih’) endif

endif endif endif until (Pil=4)

(5)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-3, Pertemuan ke-3 dan ke-4

Nama file : P03-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Hapus elemen

Deklarasi global:

type TInfo = integer type Address = pointer to Elemen

type Elemen = record <Info: TInfo, Next: Address>

type Senarai = record <First: Address>

procedure Alokasi(output P: Address)

{memesan satu unit penyimpan untuk dijadikan elemen senarai}

{K. Awal: - }

{K.Akhir: P terdefinisi, siap digunakan sebagai elemen list}

procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi}

{K.Akhir: P dikembalikan ke sistem}

procedure Create(output L: Senarai) {membuat senarai kosong}

{K. Awal: - }

{K.Akhir: tercipta sebuah list kosong, L.First = Nil}

procedure InsertFirst(input/output L: Senarai, input P: Address)

{Menyisipkan P sebagai elemen pertama senarai}

{K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen pertama senarai}

procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev}

{K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev}

procedure DeleteFirst(input/output L: Senarai, output P:Address)

{menghapus elemen pertama senarai}

{K. Awal: L terdefinisi, tidak kosong}

{K.Akhir: P adalah alamat elemen yang dihapus}

(6)

procedure DeleteAfter(input/output P, Prev: Address) {menghapus elemen setelah elemen dengan alamat Prev}

{K. Awal: Prev terdefinisi}

{K.Akhir: P adalah alamat elemen yang dihapus}

procedure HapusX(input/output L: Senarai,

input X: TInfo, output P: Address) {mencari keberadaan X, jika ditemukan maka hapus elemen X}

{K. Awal: L terdefinisi, X terdefinisi}

{K.Akhir: Jika X ditemukan P adalah alamat elemen yang dihapus. Jika X ditemukan, maka P = Nil}

procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak}

procedure HitElemen(input L: Senarai, output NEl: integer) {Menghitung banyak elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: NEl terdefinisi, yaitu banyak elemen senarai } function Selesai(input Pil:integer)boolean

{mengembalikan true jika Pil = 5}

P: Address L: Senarai Pil,k : integer X: TInfo

Deskripsi:

Deskripsi:

Create(L) repeat

write(‘Pemrosesan Senarai’) write(‘1. Penyisipan’) write(‘2. Hapus Elemen’) write(‘3. Cetak’)

write(‘4. Hitung Elemen’) write(‘5. Selesai’)

write(‘Masukkan pilihan[1/2/3/4]’); read(Pil)

(7)

case (pil)

1: write (‘Info yang akan disisipkan adalah: ’); read(X) Alokasi(P); Next(P) = Nil; Info(P)  X

write (‘Sisipkan sebagai elemen ke-?’); read (k) SisipK(L, P, k)

2: write(‘Elemen yang akan dihapus?’); read (X) HapusX(L, X, P)

if (P = Nil) then

write(X, ‘tidak ditemukan’);

else

DeAlokasi(P) endif

3: Cetak

4: HitungElemen(L,NEl);

write(‘Banyak elemen senarai = ’,NEl) 5: write(‘Program Selesai’)

endcase

until (Selesai(Pil))

(8)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-4, Pertemuan ke-5 dan ke-6

Nama file : P04-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai yang Info-nya Terstruktur

Deklarasi global:

type DataMhs = record <Nama: string[25], NIM: string[12], IPK: real>

type TInfo = DataMhs

type Address = pointer to Elemen

type Elemen = record <Info: TInfo, Next: Address>

type Senarai = record <First: Address>

procedure Alokasi(output P: Address)

{memesan satu unit penyimpan untuk dijadikan elemen senarai}

{K. Awal: - }

{K.Akhir: P terdefinisi, siap digunakan sebagai elemen list}

procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi}

{K.Akhir: P dikembalikan ke sistem}

procedure Create(output L: Senarai) {membuat senarai kosong}

{K. Awal: - }

{K.Akhir: tercipta sebuah list kosong, L.First = Nil}

procedure InsertFirst(input/output L: Senarai, input P: Address)

{Menyisipkan P sebagai elemen pertama senarai}

{K. Awal: L terdefinisi, mungkin kosong, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen pertama senarai}

procedure InsertAfter(input/output P, Prev: Address) {Menyisipkan P setelah elemen dengan alamat Prev}

{K. Awal: Prev terdefinisi, P terdefinisi yaitu alamat elemen yang akan disisipkan}

{K.Akhir: P menjadi elemen setelah elemen dengan alamat Prev}

procedure DeleteFirst(input/output L: Senarai, output P:Address)

{menghapus elemen pertama senarai}

(9)

{K. Awal: L terdefinisi, tidak kosong}

{K.Akhir: P adalah alamat elemen yang dihapus}

procedure DeleteAfter(input/output P, Prev: Address) {menghapus elemen setelah elemen dengan alamat Prev}

{K. Awal: Prev terdefinisi}

{K.Akhir: P adalah alamat elemen yang dihapus}

procedure HapusX(input/output L: Senarai,

input NIMX: string, output P: Address) {mencari keberadaan data mahasiswa yang NIM-nya = NIMX, jika ditemukan maka hapus data mahasiswa tersebut}

{K. Awal: L terdefinisi, X terdefinisi}

{K.Akhir: Jika X ditemukan P adalah alamat elemen yang dihapus. Jika X ditemukan, maka P = Nil}

procedure Cetak(input L: Senarai) {Mencetak semua info elemen senarai}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: Semua elemen senarai dikunjungi dan info-nya dicetak}

procedure CariMhsTerbaik(input L: Senarai, output MhsTerbaik: DataMhs) {Mencari data mahasiswa dengan IPK tertinggi}

{K. Awal: L terdefinisi, mungkin kosong}

{K.Akhir: MhsTerbaik terdefinisi, yaitu data mahasiswa dengan IPK tertinggi }

function Selesai(input Pil:integer)boolean {mengembalikan true jika Pil = 5}

P: Address L: Senarai Pil,k : integer X: TInfo

NIMX: string[12]

Deskripsi:

Deskripsi:

Create(L) repeat

write(‘Pemrosesan Senarai’) write(‘1. Penyisipan’) write(‘2. Hapus Elemen’)

(10)

write(‘3. Cetak’)

write(‘4. Cari mahasiswa terbaik’) write(‘5. Selesai’)

write(‘Masukkan pilihan[1/2/3/4]’); read(Pil) case (pil)

1: write (‘Nama mahasiswa ’); read(X.Nama) write (‘NIM? ’); read(X.NIM)

write (‘IPK ’); read(X.IPK)

Alokasi(P); Next(P) = Nil; Info(P)  X

write (‘Sisipkan sebagai elemen ke-?’); read (k) SisipK(L, P, k)

2: write(‘NIM yang akan dihapus?’); read (NIMX) HapusX(L, NIMX, P)

if (P = Nil) then

write(NIMX, ‘tidak ditemukan’);

else

DeAlokasi(P) endif

3: Cetak

4: CariMhsTerbaik(L, MhsTerbaik)

write(‘Mahasiswa terbaik adalah’,MhsTerbaik.Nama, MhsTerbaik.NIM, MhsTerbaik.IPK)

5: write(‘Program Selesai’) endcase

until (Selesai(Pil))

(11)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-5, Pertemuan ke-7 dan ke-8

Nama file : P05-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Antrian

Deklarasi:

const NMAX = 10 {maksimum elemen larik}

type TInfo = integer {atau tipe terdefinisi lainnya}

type Address = integer[0..NMAX]

type Antrian = record <Head: Address, Tail: Address, ArrQ: array[1..NMAX] of TInfo>

Q: Antrian

procedure CreateQ(output Q: Antrian)

{membuat antrian kosong, representasi fisik larik}

{K. Awal: - }

{K.Akhir: Q terdefinisi, Q.Head = 0, Q.Tail = 0}

function EmptyQ(input Q: Antrian) boolean

{mengembalikan true jika antrian kosong, Q.Head = 0 and Q.Tail = 0}

procedure EnQueue(input/output Q: Antrian, input X:

TInfo)

{menyisipkan X sebagai elemen antrian yang direpresentasi secara fisik menggunakan larik}

{K. Awal: Q terdefinisi, X terdefinisi}

{K.Akhir: X menjadi elemen antrian}

procedure DeQueue(input/output Q: Antrian, output X:

TInfo)

{menghapus elemen antrian yang direpresentasi dengan larik, elemen bergeser maju}

{K. Awal: Q terdefinisi, tidak kosong}

{K.Akhir: X adalah elemen yang dihapus, elemen bergeser maju, antrian mungkin jadi kosong}

procedure Cetak(input Q: Antrian)

{mencetak elemen antrian mulai dari Head sampai Tail}

{K. Awal: Q terdefinisi}

{K.Akhir: semua elemen antrian dicetak}

(12)

function Selesai(input Pil:integer)boolean {mengembalikan true jika pil = 4}

Deskripsi:

Create(Q) repeat

write(“Pemrosesan Antrian”) write(“1. Penyisipan”) write(“2. Hapus”) write(“3. Cetak”) write(“4. Selesai”)

write(“Pilihan [1/2/3/4]”); read(Pil) case (Pil)

1: write(“Info yang akan disisipkan?”); read(X) EnQueue(Q,X)

2: DeQueue(Q,X)

write(“Elemen yang dihapus adalah”,X) 3: Cetak(Q)

endcase

until Selesai(pil)

procedure Cetak(input Q: Antrian)

{mencetak elemen antrian mulai dari Head sampai Tail}

{K. Awal: Q terdefinisi}

{K.Akhir: semua elemen antrian dicetak}

Deklarasi:

X: TInfo

Deskripsi:

if Empty(Q) then

write(“Antrian kosong”) else

while not Empty(Q) do DeQueue(Q,X)

write (X) endwhile endif

(13)

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-6, Pertemuan ke-9

Nama File: P06-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Tumpukan (Stack)

Deklarasi global:

const NMAX = 10 {maksimum elemen larik}

type TInfo = integer {atau tipe terdefinisi lainnya}

type Address = integer[0..NMAX]

type Stack= record <Top: Address,ArrQ: array[1..NMAX] of TInfo>

S: Stack

procedure CreateStack(output S: Stack)

{membuat Stack kosong, representasi fisik larik}

{K. Awal: - }

{K.Akhir: S terdefinisi, S.Top = 0}

function EmptyStack(input S: Stack) boolean {mengembalikan true jika Stack kosong, S.Top = 0}

procedure Push(input/output S: Stack, input X: TInfo)

{menyisipkan X sebagai elemen Stack yang direpresentasi secara fisik menggunakan larik}

{K. Awal: S terdefinisi, X terdefinisi}

{K.Akhir: X menjadi elemen stack}

procedure Pop(input/output S: Stack, output X: TInfo) {menghapus elemen Stack yang direpresentasi dengan larik}

{K. Awal: S terdefinisi, tidak kosong}

{K.Akhir: X adalah elemen yang dihapus, stack mungkin jadi kosong}

procedure Cetak(input S: Stack)

{mencetak elemen Stack mulai top sampai bottom}

{K. Awal: S terdefinisi}

{K.Akhir: semua elemen Stack dicetak}

function Selesai(input Pil:integer)boolean {mengembalikan true jika pil = 4}

(14)

Deskripsi:

CreateStack(S) repeat

write(“Pemrosesan Stack”) write(“1. Penyisipan”) write(“2. Hapus”) write(“3. Cetak”) write(“4. Selesai”)

write(“Pilihan [1/2/3/4]”); read(Pil) case (Pil)

1: write(“Info yang akan disisipkan?”); read(X) Push(S,X)

2: if not EmptyStack(S) then Pop(S,X)

write(“Elemen yang dihapus adalah”,X) else

write (“stack kosong”) endif

3: Cetak(S) endcase

until Selesai(pil)

procedure Cetak(input S: Stack)

{mencetak elemen Stack mulai dari Top sampai bottom}

{K. Awal: S terdefinisi}

{K.Akhir: semua elemen Stack dicetak}

Deklarasi:

X: Tinfo

Deskripsi:

if EmptyStack(S) then write(“Stack kosong”) else

while not IsEmpty(S) do Pop(Q,X)

write (X) endwhile endif

(15)

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-8, Pertemuan ke-10

Nama File: P08-XXX (XXX adalah 3 digit terakhir NIM Deskripsi: Graf

Deklarasi global:

const MakSimpul = 10

type Graf = array[1..MakSimpul, 1..MakSimpul] of integer G: Graf

Dikunjungi: array[1..MakSimpul] of boolean NSimpul: integer

procedure DFS(input v: integer)

{menelusuri semua simpul graf secara dfs }

{k. awal: v terdefinisi, yaitu simpul awal penelusuran } {k.akhir: semua simpul yang dikunjungi dicetak di layar}

procedure BFS(input v: integer)

{menelusuri seluruh simpul graf dengan skema bfs}

{k. awal: v terdefinisi, yaitu simpul awal penelusuran}

{k.akhir: semua simpul yang dikunjungi dicetak di layar}

i,j,v,k: integer Deskripsi

write (‘banyak simpul? ’); read (NSimpul) {buat graf}

for i 1 to nsimpul do for j 1 to nsimpul do

write (‘simpul’,i, ‘terhubung dengan simpul’,j, ‘?’) read (G[i,j])

endfor endfor repeat

write (‘mulai dari simpul?’); read(v) write (‘Kunjungan DFS’)

{siapkan larik kunjungan untuk DFS}

for k  1 to NSimpul do dikunjungi[k]  false endfor

(16)

DFS(v);

write (‘kunjungan BFS’);

{siapkan larik kunjungan untuk BFS}

for k1 to NSimpul do dikunjungi[k] false;

endfor

BFS(v) getch();

until (v > NSimpul);

(17)

MODUL PRAKTIKUM STRUKTUR DATA Modul Ke-8, Pertemuan ke-11 dan ke-12

Nama File: P08-XXX (XXX adalah 3 digit terakhir NIM Deskripsi: Pohon Pencarian Biner (BST)

Deklarasi global:

type TInfo = integer {atau tipe terdefinisi lainnya}

type BST = pointer to Simpul

type Simpul = record <Info: TInfo, Kiri: BST, Kanan:

BST>

Akar: BST

procedure Alokasi(output P: BST)

{memesan satu unit penyimpan untuk dijadikan elemen bst}

{K. Awal: - }

{K.Akhir: P terdefinisi, siap digunakan sebagai elemen bst}

procedure DeAlokasi(input P: Address) {K. Awal: P terdefinisi}

{K.Akhir: P dikembalikan ke sistem}

procedure Create(output Akar: BST) {membuat BST kosong}

{K. Awal: - }

{K.Akhir: Akar = Nil}

procedure InOrder(input Akar: BST) {menelusuri BST secara inorder}

{K. Awal: Akar terdefinisi }

{K.Akhir: semua simpul dikunjungi secara inorder}

procedure PreOrder(input Akar: BST) {menelusuri BST secara preorder}

{K. Awal: Akar terdefinisi }

{K.Akhir: semua simpul dikunjungi secara preorder}

procedure PostOrder(input Akar: BST) {menelusuri BST secara postorder}

{K. Awal: Akar terdefinisi }

{K.Akhir: semua simpul dikunjungi secara postorder}

procedure InsertBST(input/output Akar: BST, input X:

TInfo)

(18)

{menyisipkan X ke dalam BST}

{K. Awal: Akar terdefinisi, X terdefinisi } {K.Akhir: X menjadi elemen daun}

procedure DeleteBST(input/output Akar: BST, input X:

TInfo,

output Found: boolean) {menghapus simpul BST yang info-nya = X}

{K. Awal: BST terdefinisi, tidak kosong}

{K.Akhir: Jika X ada maka simpul yang info-nya = X dihapus

dari BST dan Found = true. Jika X tidak ada maka

Found = false}

function Selesai(input Pil:integer)boolean {mengembalikan true jika pil = 3}

Deskripsi:

create(akar) repeat

write("traversal inorder: ");inorder(akar) write("traversal preorder: ");preorder(akar) write("traversal postorder: ");postorder(akar) write("1. penyisipan")

write("2. hapus") write("3. selesai")

write("pilihan [1/2/3] "); read(pil) if pil = 1 then

write("masukkan info yang disisipkan "); read(x) insertbst(akar, x)

else

if pil = 2 then

write("masukkan info yang akan dihapus ");

read(x)

deletebst(akar,x,found) if not found then

write(x, “tidak ditemukan") endif

else

if pil = 3 then

write("program selesai") else

write("salah pilih ") endif { pil = 3 }

(19)

endif { pil = 2 } endif {pil = 1 } until selesai(pil)

Referensi

Dokumen terkait

melalui program meningkatkan pengawasan untuk menjamin akuntabilitas, transparansi, dan perbaikan kinerja aparatur Negara/pemerintah. Penyusunan Laporan Akuntabilitas

Ketentuan dalam pasal 18 (delapan belas) Undang-Undang No. 11 tahun 2012 tentang Sistem Peradilan Pidana Anak yang menghendaki agar penyidikan dilakukan dalam

Dalam ilmu matematika khususnya untuk kelas 1 dan 2 sekolah dasar diajarkan pengenalan bilangan asli hingga 99 dengan menggunakan benda sekitarnya,

KU108 Metodologi Penelitian &amp; Penulisan 2 Maria Dewi Candra, M.Th1. TS622 Prolegomena &amp; Sistem-sistem Teologi 3 Ramly

Selanjutnya untuk mengetahui akan kewajiban setiap orang Islam baik bagi orang laki-laki dan perempuan dalam menuntut ilmu menurut perspektif para kyai Bangkalan, yang hal

1) Jasa Akses Internet, maksudnya adalah penyedia jasa sebuah akses internet yang diberikan kepada masyarakat untuk digunakan dan diambil manfaatnya. 2) Alat

Diskusi: Berdasarkan pemaparan dari berbagai jurnal penelitian ilmiah menyampaikan bahwa penggunaan media vidio dalam pemberian penyuluhan pada anak- anak tentang

Kedua, pola interaksi decisional yaitu pola pertentangan yang berlangsung pada perumusan (KUA) dan (PPAS) sehingga mengakibatkan keterlamabatan penetapan APBD, pola