• Tidak ada hasil yang ditemukan

Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu."

Copied!
64
0
0

Teks penuh

(1)

subprogram

subprogram

(2)

Motivasi

Motivasi

ÜPada dasarnya, manusia adalah makhluk yang

lemah.

ÜContoh : Untuk membangun gedung, tentulah

dibangun dari bata satu ke bata yang lain. Dari ruang ke ruang yang lain dst.

ÜMetode : Divide & Conquer (dibagi-bagi

menjadi bagian yang lebih kecil, lalu selesaikan masalah yang dihadapi)

(3)

ÜGedung bisa diibaratkan sebagai fungsi main()

sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu.

ÜContoh :

int main(void) // fungsi utama { float z;

z = sqrt(9); // fungsi kepustakaan }

(4)

Beberapa fungsi kepustakaan

Beberapa fungsi kepustakaan

Fungsi char array string.h

Fungsi utilitas stdlib.h

Fungsi char : tolower, isdigit, … ctype.h

Berisi fungsi matematika dan konstanta

(5)

Ü Bila kepustakaan tidak menyediakan fungsi yang kita perlukan à buat fungsi sendiri (user defined function) Ü Kapan fungsi diperlukan ?

Sesuatu yang dikerjakan beberapa kali dalam program

Sesuatu yang akan dikerjakan pada program yang berbeda

Sederetan operasi yang kompleks yang membuat arus program sukar diikuti

(6)

Cara kerja fungsi

(7)

Fungsi sebagai kotak hitam

Fungsi sebagai kotak hitam

ÜMenyembunyikan detail

ÜDapat menggunakan fungsi tanpa tahu apa yang

(8)

Bagian fungsi

Bagian fungsi

Ü Return type : tipe data dari harga yang dikembalikan oleh fungsi

Ü Nama : identifier yang deskriptif dan valid

Ü Daftar parameter : variabel yang menangani harga yang dilewatkan ke fungsi

Ü Badan : pernyataan yang melakukan operasi fungsi Ü Bentuk umum :

Return_type Nama (daftar parameter) { Badan fungsi

(9)

Pemanggilan fungsi (function call)

Pemanggilan fungsi (function call)

output = function( input1, input2)

• argument (input1 dan input2)

menyediakan informasi ke program

• Mengembalikan harga (informasi) kembali

(10)

Mendefinisikan dan memanggil Fungsi

Mendefinisikan dan memanggil Fungsi

void tampilkan_Pesan ( void )

{

cout << “Dalam fungsi tampilkan_Pesan \n”; }

void main ( void ) {

cout << “Di dalam main\n”; tampilkan_Pesan( );

cout << “Kembali ke main.\n”; } Afile.cpp Definisi Function main function Function call

Return type Nama Daftar Parameter

Function header

Di dalam main

Dalam fungsi tampilkan_Pesan Kembali ke main

(11)

Memanggil Fungsi

Memanggil Fungsi

void tampilkan_Pesan ( void ) {

cout << “Dalam fungsi tampilkan_Pesan \n”; }

void main ( void ) {

cout << “Di dalam main\n”; tampilkan_Pesan( );

cout << “Kembali ke main.\n”; } Afile.cpp Definisi Function main function Function call

Return type Nama Daftar Parameter

Di dalam main

Dalam fungsi tampilkan_Pesan Kembali ke main Program Output: 1. Eksekusi program mulai di sini 2. Function call dieksekusi dan mengarah ke definisi fungsi

3. Badan fungsi

di-eksekusi sampai selesai

4. Setelah fungsi selesai dieksekusi

(12)

Prototipe Fungsi

void tampilkan_Pesan ( void ) {

cout << “Dalam fungsi tampilkan_Pesan \n”; }

void main ( void ) {

cout << “Di dalam main\n”; tampilkan_Pesan( );

cout << “Kembali ke main.\n”; } Afile.cpp Definisi fungsi main function Function call #include <iostream.h>

void tampilkan_Pesan ( void );

Prototipe Fungsi menginformasikan kompiler tentang return type fungsi, banyak dan tipe parameternya Semicolon diperlukan Function header harus sama dengan prototipe

(13)

Function

Function

ÜFungsi pada dasarnya mengembalikan nilai

(return value)

ÜFungsi yang tidak mengembalikan nilai à

prosedur (yang dikembalikan void)

ÜAdakalanya ada lebih dari satu parameter yang

(14)

Fungsi yang mengembalikan 1 nilai

Fungsi yang mengembalikan 1 nilai

ÜPengertiannya sama dengan fungsi dalam

matematika

ÜContoh :

Fungsi y = f(x)= x + 5. Untuk setiap harga x maka akan mengakibatkan nilai y bertambah dengan 5

x dikatakan sebagai variabel independen (input) y dikatakan sebagai variabel dependen (output)

(15)

Bahasa C++ #include <iostream.h> int tambah5(int x) { return (x+5); } main() { int x, y;

cout << "Masukkan harga x : "; cin >> x; y = tambah5(x);

cout << "Setelah masuk fungsi bernilai : " << y; return 0;

(16)

Fungsi yang tak mengembalikan nilai

Fungsi yang tak mengembalikan nilai

ÜMisalkan akan dicetak bilangan dari 1 sampai n

Bahasa C++

#include <iostream.h>

void cetak(int n) {

int i;

for (i=1; i<=n; i++)

cout << "Harga n = " << i << endl; }

main() { int n;

cout << "Masukkan harga n : "; cin >> n; cetak(n);

return 0; }

(17)

Fungsi yang mengubah nilai parameter

Fungsi yang mengubah nilai parameter

ÜDinamakan pass by reference

ÜFungsi menggunakan variabel asal (tidak

menggunakan copy)

ÜArgumen harus berupa variabel, tidak boleh

konstanta

(18)

Contoh :

Contoh :

ÜBuatlah fungsi untuk menukar nilai dari dua

variabel.

ÜAnalisis :

ÜMisalkan kita punya variabel A = 3 dan B = 5

(input)

(19)

Langkah algoritma

Langkah algoritma

TEMP

No. Langkah Algoritma 1. temp diisi A temp ß A 2. (A kosong) A diisi B A ß B 3. (B kosong) B diisi temp B ß temp

(20)

prosedur tukar (input/output a : integer; b : integer)

{menukar isi dua nilai a menjadi nilai b, demikian pula sebaliknya} Deklarasi temp : integer Deskripsi temp ß a a ß b b ß temp

(21)

#include <iostream.h> void tukar (int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } main() { int a = 3, b = 5;

cout << "Sebelum Tukar\n";

cout << "Isi Nilai1 = " << a << endl; cout << "Isi Nilai2 = " << b << endl; tukar (&a,&b);

cout << "Sesudah Tukar\n";

cout << "Isi Nilai1 = " << a << endl; cout << "Isi Nilai2 = " << b << endl; return 0;

(22)

Passing Parameter (versi 1)

Passing Parameter (versi 1)

Ü Dari contoh terakhir, terlihat ada pernyataan :

tukar (&a,&b);

Ü Pernyataan ini dinamakan function call. Tanda & (alamat) dimaksudkan bahwa parameter a dan b nantinya dapat diubah dalam fungsi.

Ü Sebagai konsekuensinya dalam badan fungsi menjadi :

void tukar (int *a, int *b)

Ü Tanda * menandakan variabelnya bertipe pointer

main() {

int a = 3, b = 5;

cout << "Sebelum Tukar\n";

cout << "Isi Nilai1 = " << a << endl; cout << "Isi Nilai2 = " << b << endl; tukar (&a,&b);

cout << "Sesudah Tukar\n";

cout << "Isi Nilai1 = " << a << endl; cout << "Isi Nilai2 = " << b << endl; return 0;

(23)

Versi 2

Versi 2

void swap( double & a, double & b) { double temp; temp = a; a = b; b = temp; }

ÜPemanggilan fungsi di atas sama dengan cara

(24)

Argumen Default

Argumen Default

Ü Argumen default dilewatkan parameter bila saat fungsi dipanggil tidak menyertakan argumen

Ü Fungsi di atas dapat dipanggil dengan : Ü luas_lingkaran(); // output : 0

Ü luas_lingkaran(3); // output : 28.26

const float phi = 3.14;

void luas_lingkaran(int r=0) { cout << phi*r*r << endl;

(25)

Jenis parameter

Jenis parameter

ÜAda 2 jenis parameter yang dideklarasikan dalam subprogram, yaitu :

parameter nilai (value parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram)

parameter variabel (variable parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram)

(26)

ÜJenis parameter

ÜBentuk umum fungsi :

Jenis parameter Bahasa C++ parameter nilai menggunakan const

parameter variabel melalui pointer

Karakteristik Bahasa C++ mulai dengan … tipe hasil

nilai akhir dari fungsi return(hasil akhir)

Prototipe tipe_hasil nama(deklarasi variabel) contoh float rata(larik x, int n)

(27)

Template

Template

ÜAdakalanya kita ingin melewatkan berbagai jenis

parameter (bisa int,float, dll.) tetapi harusnya

(28)

Bahasa C++ #include <iostream.h> template<class T> T tambah5(T x) { return (x+5); } main() { int x; float y;

cout << "Masukkan harga x (integer) : "; cin >> x;

cout << "Setelah masuk fungsi bernilai : " << tambah5(x) << endl; cout << "Masukkan harga x (float) : "; cin >> y;

cout << "Setelah masuk fungsi bernilai : " << tambah5(y); return 0;

(29)

Mengapa menggunakan Fungsi ?

Mengapa menggunakan Fungsi ?

ÜMembagi program ke dalam unit (modul) kecil

yang mudah diatur (di-manage)

Setiap unit terpisah

Program yang besar menjadi mudah dimodifikasi dan dirawat

ÜMenyederhanakan program

Jika suatu tugas dilakukan beberapa kali dalam program, panggil fungsi jika diperlukan

(30)

Kasus 5.2.

Kasus 5.2.

ÜBuatlah fungsi yang menentukan nilai terbesar dari 2 bilangan bulat.

Fungsi maksimum2(input a, b : integer) : integer Deskripsi

if (a>b) then return a else return b

(31)

Overloading Function

Overloading Function

ÜKadang diinginkan beberapa fungsi yang

namanya sama namun dengan banyak

parameter yang berbeda à overloading function Contoh :

ÜFungsi untuk mencari maksimum dari 2 bilangan

(32)

Bahasa C++ #include <iostream.h>

int max(int x, int y) {

return (x > y ? x : y); }

int max(int x, int y, int z) {

int m = (x > y ? x : y); // m = max(x,y) return (z > m ? z : m);

}

int main() {

cout << "Maksimum 2 bilangan : " << max(99,77) << endl; cout << "Maksimum 3 bilangan : " << max(55,66,33);

return 0; }

(33)

Kasus 5.3.

Kasus 5.3.

ÜDengan menggunakan fungsi ln dan exp,

buatlah fungsi untuk menghasilkan nilai

x

y Analisis :

ÜDengan menggunakan sifat logaritma : ln(xy) = y*ln(x)

exp(ln(xy)) = exp(y*ln(x)) xy = exp(y*ln(x))

(34)

Fungsi Pangkat(input x, y : integer) {Menghitung nilai dari x pangkat y} Deskripsi

pangkat ß exp(y*ln(x))

Bahasa C++ #include <iostream.h>

#include <math.h>

float pangkat(int x, int y) { return(exp(y*log(x))); } main() {

float hasil; int a, b;

cout << "Menghitung hasil perpangkatan\n"; cout << "Tulis sebuah bilangan : "; cin >> a; cout << "Mau dipangkat berapa : "; cin >> b; hasil = pangkat(a,b);

cout << a << " pangkat " << b << " = " << hasil; return 0;

(35)

Kasus 5.4.

Kasus 5.4.

ÜBuatlah fungsi perkalian 2 bilangan bulat dengan menggunakan operator

penjumlahan. Analisis :

ÜMisalkan a dikalikan b (input) ÜProses :

(36)

Fungsi kali(input a, b : integer) : integer

{ Menghitung hasil perkalian a dan b menggunakan Operator Penjumlahan } Deklarasi hasil, i : integer Deskripsi hasil ß 0 for i ß1 to b do hasil ß hasil + a kali ß hasil

(37)

Bahasa C++

#include <iostream.h> #include <math.h>

int kali(int m, int n) { int i, hasil=0;

for (i=1; i<=abs(n); i++) hasil += m;

if (n<0) return(-hasil); else return(hasil); }

main() { int a, b;

cout << "Masukkan bilangan : "; cin >> a; cout << "Akan dikali dengan : "; cin >> b;

cout << "Nilai " << a << " x " << b << " = " << kali(a,b); return 0;

(38)

Bahan bacaan (kuis)

Bahan bacaan (kuis)

Ü [A4] Chapter 9: Functions Ü [S1] Ch 6: Functions

Ü [S2] 3.1 Functions Command line Inline function

Pelajari algoritma (+ analisis + buat contoh) Listing 3.3

Recursive integer-to-hexadecimal conversion (bandingkan dengan Listing 3.21)

Ü [S3] Recursive Function Calls, Pelajari algoritma power Ü [S4] Chapter 3. Recursion, pelajari mekanisme stack, tail

recursion, 3.3 Questions and Answers

(39)

Fungsi Rekursif

Fungsi Rekursif

Üadalah fungsi yang melakukan proses

perulangan dengan cara memanggil dirinya sendiri.

Überbeda dengan versi iteratif yang menggunakan perulangan for, while maupun do while.

ÜFungsi rekursif dapat dipandang sebagai sebuah “operator”.

(40)

Ciri fungsi rekursif

Ciri fungsi rekursif

ÜKasus penyetop. Dalam kasus ini terdapat nilai konstan (return value)

ÜKasus pemanggilan rekursif. Dalam kasus ini terdapat pemanggilan fungsi itu sendiri, tetapi harus mengarah kepada kasus

(41)

Ciri perulangan

Ciri perulangan

ÜKapan mulai ÜKapan berhenti

(42)

Kasus 5.5.

Kasus 5.5.

ÜBuatlah fungsi faktorial secara rekursif untuk mencari n!.

Analisis :

ÜKasus penyetop (= nilai awal) n = 0 atau n = 1

yaitu bernilai konstan 1

ÜKasus rekursif :

(43)

Fungsi rekursif

Fungsi rekursif

Fungsi faktorial(input n : integer) : longint Deklarasi

i : integer

faktorial : long integer

Deskripsi (rekursif) if (n=0) or (n=1) then faktorial ß 1 else faktorial ß n * faktorial(n-1) Deskripsi (iteratif) faktorial ß1 for i ß 1 to n do faktorial ß faktorial * i

(44)

Prosedur rekursif

Prosedur rekursif

Prosedur cetak(input n : integer) Deklarasi

i : integer

Deskripsi (rekursif) // nilai awal n

if (n>0) // kasus penyetop

cetak(n-1) // pemanggilan rekursi write(n)

endif

Deskripsi (iteratif) // nilai awal 1 // nilai akhir n

// naik 1 setiap kali berulang for i ß1 to n

write(i) endfor

(45)

Kasus 5.6.

Kasus 5.6.

Diberikan deret Fibonacci sebagai berikut : 1, 1, 2, 3, 5, 8, …

Ü Buatlah fungsi yang menghitung suku ke-n dari deret Fibonacci dengan menggunakan cara rekursif.

Ü Analisis :

Ü Suku ke-n dari deret Fibonacci diperoleh dengan rumus :

fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) dengan nilai awal untuk n=1 dan n=2 berharga 1.

(46)

fungsi fibonacci (input n : integer) : integer Deskripsi

if (n = 1) or (n = 2) then fibonacci ß 1 { kasus penyetop }

else fibonacci ß fibonacci(n-1) + fibonacci(n-2) { kasus rekursif } endif

Bahasa C++

#include <iostream.h>

int fibonacci (int n)

{ if ((n == 1) || (n == 2)) return(1);

else return(fibonacci(n-1) + fibonacci(n-2)); }

main() { int i, n;

cout << "Sampai suku ke : "; cin >> n;

for (i = 1; i <= n; i++) cout << fibonacci(i) << " "; return 0;

(47)

Iteratif Versus Rekursif

Iteratif Versus Rekursif

ÜCetaklah suatu kalimat dengan cara iteratif maupun cara rekursif.

Iteratif Rekursif

#include <iostream.h> #include <string.h> void balik(char *s) { int i;

for (i=strlen(s)-1; i>=0; i--) cout << s[i];

}

main(){

char *kata = "Algoritma"; balik(kata); return 0; } #include <iostream.h> #include <string.h> void balik(char *s) { if (*s != '\0') { balik(&s[1]); cout << s[0]; } } main() {

char *kata = "Algoritma"; balik(kata);

return 0; }

(48)

Kasus 5.8.

Kasus 5.8.

ÜBuatlah algoritma iteratif dan rekursif untuk menghitung gcd dari dua bilangan bulat

positif.

ÜAnalisis :

ÜJika n ≠ 0 dan m integer non negatif, kita dapat

menulis m = q.n + r untuk suatu integer non negatif q dan r dengan 0 ≤ r < n.

(49)

Contoh :

ÜJika n = 3, m = 16 maka 16 = 5(3) + 1, yaitu q =

5 dan r = 1.

ÜJika n = 10, m = 3 maka 3 = 0(10) + 3, yaitu q =

0 dan r = 3.

ÜUntuk mencari nilai gcd dari dua integer. kita

bisa menggunakan cara menulis di atas. Misalkan kita mau cari gcd(190,34).

(50)

ÜHarga r ≠ 0 terakhir dicapai adalah r = 2. Inilah hasil dari gcd(190,34). 34 | 190 à 190 = 5(34) + 20, r = 20 20 | 34 à 34 = 1(20) + 14, r = 14 14 | 20 à 20 = 1(14) + 6, r = 6 6 | 14 à 14 = 2(6) + 2, r = 2 2 | 6 à 6 = 3(2) + 0, r = 0 stop !

(51)

Versi rekursif gcd

Versi rekursif gcd

Ügcd didefinisikan sebagai berikut :

gcd(c,d) = c, jika d = 0

= gcd(c-d, d), jika d > 0 dan c > d.

(52)

fungsi gcd(c, d : integer) : integer

versi iteratif versi rekursif Deskripsi

while (d > 0) do r ß c mod d

c ß d { menyimpan harga r terakhir } d ß r { harga r terakhir untuk

menghentikan perulangan } endwhile gcd ß c Deskripsi if (d=0) then gcd ß c else if (c<d) then gcd ß gcd(d,c) else gcd ß gcd(c-d, d)

(53)

versi iteratif versi rekursif int gcd(int c, int d)

{ int r; while (d > 0) { r = c % d; c = d; d = r; } return (c); }

int gcd(int c, int d) {

if (d==0) return(c);

if (c<d) return(gcd(d,c)); return(gcd(c-d, d));

(54)

Macam-macam Metode Rekursi

Macam-macam Metode Rekursi

Ü Going Down Recursion (rekursi menurun), yaitu parameter menurun nilainya sampai dicapai kasus berhenti

Ü Going Up Recursion (rekursi menaik), yaitu

parameter menaik nilainya sampai dicapai kasus berhenti

Ü Two Half (rekursi separuh-separuh), rekursi dibagi menjadi 2 bagian, di mana setiap bagian juga merupakan subprogram rekursi.

(55)

Contoh kasus

Contoh kasus

ÜHitunglah nilai dari :

52 + 62 + 72 + 82 + 92 + 102

(56)

Going Down Recursion

Going Down Recursion

Going Down Recursion pemanggilan rekursi return value

GDR(5,10) ⇓ GDR(5,9)+10*10 ⇑ 25+36+49+64+81+100=355 GDR(5,9) ⇓ GDR(5,8) + 9*9 ⇑ 25+36+49+64+81=255 GDR(5,8) ⇓ GDR(5,7) + 8*8 ⇑ 25+36+49+64=174 GDR(5,7) ⇓ GDR(5,6) + 7*7 ⇑ 25+36+49=110 GDR(5,6) ⇓ GDR(5,5) + 6*6 ⇑ 25+36=61 GDR(5,5) 5*5 ⇑ 25

(57)

Going Up Recursion

Going Up Recursion

Going Up Recursion pemanggilan rekursi return value

GUR(5,10) ⇓ GUR(6,10)+ 5*5 ⇑ 100+81+64+49+36+25=355 GUR(6, 10) ⇓ GUR(7,10) + 6*6 ⇑ 100+81+64+49+36=330 GUR(7, 10) ⇓ GUR(8,10) + 7*7 ⇑ 100+81+64+49=294 GUR(8, 10) ⇓ GUR(9,10) + 8*8 ⇑ 100+81+64=245 GUR(9, 10) ⇓ GUR(10,10) + 9*9 ⇑ 100+81=181 GUR(10, 10) 10*10 ⇑ 100

(58)

Two-Half Recursion

Two-Half Recursion

Two Half rekursif call return value rekursif call return value

TF(5,10) ⇓ TF(5,7) + TF(8,10) ⇑ 110+245=355

TF(5,7) ⇓ TF(5,6) + TF(7,7) ⇑ 61+49=110 TF(8,10) ⇓ TF(8,9)+TF(10,10) ⇑ 145+10*10=245

TF(5,6) ⇓ TF(5,5) + TF(6,6) ⇑25+36=61 TF(8,9) ⇓ TF(8,8)+TF(9,9) ⇑ 64+81=145

TF(5,5) ⇑ 5*5=25 TF(8,8) ⇑ 8*8=64

(59)

Keuntungan menggunakan

fungsi

Keuntungan menggunakan

fungsi

ÜProgram yang dikerjakan team dalam proyek

besar

ÜMenyederhanakan tugas-tugas ÜSetiap fungsi adalah unit terpisah

ÜPendekatan pemrograman Top Down

ÜAbstraksi prosedural ÜInformation hiding ÜReuseability

(60)

Top Down Programming

Top Down Programming

ÜMerancang program dengan memecahnya

menjadi bagian yang lebih kecil

ÜMulai dengan perencanaan global kemudian

mengisi detailnya pada setiap level sampai lengkap

(61)

Abstraksi

Abstraksi

ÜMerujuk ke aksi dan menghindari detail untuk

berkonsentrasi pada substansi

ÜDapat menggunakan hal yang kompleks dengan

usaha yang kecil

(62)

Tugas

Tugas

ÜBuat analisis cara kerja dari fungsi rekursif

berikut : int zeros( int n ) {

if ( n == 0 ) return 1; if ( n < 10 ) return 0; if ( n % 10 == 0 ) return 1 + zeros( n / 10 ); else return zeros( n / 10 ); }

int factors(int n, int m) { if (n%m != 0) return 0; return 1 + factors(n/m, m); }

Cobalah dengan berbagai macam argumen.

Contoh :

zeros(20020); factors(1020, 2);

(63)

Kriteria Laporan

Kriteria Laporan

Ü Dengan memanggil fungsi, gambarlah menggunakan stack, perubahan pemanggilan pada proses rekursi (seperti contoh faktorial)

Ü Simpulkan cara kerjanya dengan kalimat naratif(cerita) Ü Buatlah versi iteratifnya !

Petunjuk : pelajari karakteristik perulangan (for, while, do .. While) beserta dengan karakteristik rekursi. Carilah

kesamaan dari 2 mtode tersebut

Ü Boleh bekerja berkelompok tetapi tetap mengumpulkan sendiri-sendiri. Bila kerja berkelompok tulislah di

sebelah kanan atas pekerjaan anda : BERKELOMPOK Ü Bila tidak tertulis : BERKELOMPOK, diasumsikan

bekerja sendiri. Apabila ada kesamaan dengan pekerjaan mahasiswa lain à tidak dinilai !

(64)

Minggu Depan

Minggu Depan

ÜArray 1 dimensi

ÜPersiapan mid term

Materi : dari awal sampai dengan subprogram termasuk rekursif

Menerima pertanyaan apabila ada materi yang belum dikuasai. Siapkan pertanyaan dari rumah !

Referensi

Dokumen terkait

1.4 Manfaat Penelitian Penelitian ini diharapkan dapat memberikan manfaat dapat memperkaya informasi dalam perkembangan teori graf tentang jumlah jarak eksentrik dan indeks jumlah

Berdasarkan hasil analisis pada setiap instrumen pengambilan data dan hasil penelitian yang relevan dapat disimpulkan bahwa siswa kelas VII K SMP negeri 7

Penerapan filosofi TQM ini memerlukan dukungan dari semua pihak, dimana kuncinya adalah kepemimpinan (Leadership), perubahan budaya (Culture change) dan pemberdayaaan

Dalam konsep ini proses-proses terdistribusi memetakan struktur data globalnya ke dalam dual-port memory yang terletak pada setiap node SCRAMNet sehingga setiap saat suatu

Jarak antara baris satu dengan baris berikutnya dalam pengetikan laporan kerja praktek adalah dua spasi. Khususnya untuk judul tabel, dan judul gambar yang lebih

Bentuk topografi antara tempat satu dengan yang lainnya tentu saja ada perbedaan. Hal tersebut tergantung dari daya tahan tanaman yang akan dibudidayakan terhadap

Hubungan antara ukuran diameter oosit dengan konsentrasi estradiol 17β pada tahap matang (TKO III) dari induk kepiting bakau Scylla serrata yang disuplementasi kolesterol dosis

dianggarkan melalui APBN/APBD, dan pada saatnya harus dikeluarkan melalui Kas Negara/Kas Daerah. Dalam APBN, pengeluaran Pemerintah Pusat dibedakan menjadi Pengeluaran untuk