Selasa, 31 Desember 2013

Prosedur dan Fungsi

,
Assalamu'alaikum.. kali ini saya akan share tentang prosedur dan fungsi.

PROSEDUR

Modul program yang mengerjakan tugas/aktifitas yang spesifik dan menghasilkan suatu efek netto [LIE96]

Pendefinisian Prosedur


Procedure Namaprosedur (deklarasi parameter, jika ada)

{Spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan oleh prosedur ini.

K.Awal : keadaan sebelum prosedur dilaksanakan.

K. Akhir : Keadaan sete;ah prosedur dilaksanakan}

DEKLARASI

{semua nama yang dipakai di dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini}

ALGORITMA

{badan prosedur, berisi urutan instruksi}




contoh :



Procedure HitungLuasSegitiga

  {Menghitung luas segitiga dengan rumus L = (alas x tinggi) / 2}

  {K.Awal : sembarang}

  {K.Akhir : luas segitiga tercetak}

DEKLARASI

  alas  : real

  tinggi  : real

  luas  : real

ALGORITMA

  read(alas,tinggi)

  luas <- (alas x tinggi) / 2

  write(luas)


Pemanggilan prosedur





PROGRAM segitiga

  {Menghitung luas N buah segitiga}

DEKLARASI

  i, N : integer

  procedure HitungLuasSegitiga

  {Menghitung luas segitiga dengan rumus L = (alas x tinggi / 2}

ALGORITMA

  read (N) {tentukan banyaknya segitiga}

  for  I <- 1 to N do

  HitungLuasSegitiga

  endfor


Nama Global, Lokal dan Lingkup

Nama (konstanta, peubah, tipe dll) :
  • Lokal : Nama-nama yang dideklarasikan di dalam prosedur tersebut dikatakan lingkupnya (scope) “lokal”. Hanya berlaku di dalam prosedur yang melingkupinya saja.
  • Global : Nama-nama yang dideklarasikan di dalam program utama dikatakan lingkupnya “global”. Dapat digunakan di bagian manapun di dalam program.


Aturan dalam korespondensi satu-satu antara parameter aktuan dan formal


  • Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi prosedurnya
  • Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang bersesuaian
  • Tiap parameter aktual harus diekspresikan dalam cara yang taat-asas dengan parameter formal yang bersesuaian, bergantung pada jenis parameter formal.


Jenis Parameter formal

  • Parameter masukan (input parameter)
  • Parameter keluaran (output parameter)
  • Parameter masukan/keluaran (input/output parameter)

Parameter Masukan


Procedure HitungLuasSegitiga(input alas, tinggi : real)

DEKLARASI

  luas : integer

ALGORITMA

  Luas <- (alas * tinggi) /2

  write(luas)

Pemanggilan prosedur masukan



PROGRAM Segitiga

DEKLARASI

  i, N : integer

  alas, tinggi : real

  procedure HitungLuasSegitiga ( input alas, tinggi : real)

ALGORITMA

  read(N)

  for i <- 1 to N do

  read(alas, tinggi)

  HitungLuasSegitiga(alas, tinggi)

  endfor

Parameter Keluaran



Procedure HitungLuasSegitiga ( input alas, tinggi : real)

                   output luas : real)

DEKLARASI

 

ALGORITMA

  Luas <- (alas * tinggi) /2

Pemanggilan prosedur keluaran

 
PROGRAM Segitiga

DEKLARASI

  i, N : integer

  a, t, L : real

  Procedure HitungLuasSegitiga ( input alas, tinggi : real)

                     output luas : real)

ALGORITMA

  read(N)

  for i <- 1 to N do

  read(a, t)

  HitungLuasSegitiga(a, t, L)

  write(L)

  endfor


Parameter Masukan/Keluaran



Procedure inc(input/output x : integer)

DEKLARASI

 

ALGORITMA

  x <- x + 1


Pemanggilan prosedur masukan/keluaran


PROGRAM cetak0sampai10

DEKLARASI

  x : integer

  Procedure inc(input/output x : integer)

ALGORITMA

  x <- 0

  repeat

  write(x)

  inc(x)

  until x > 10


FUNGSI


upa-program yang memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan). 

  • Fungsi diakses dengan memanggil namanya 
  • Fungsi mengandung daftar parameter formal 
  • Parameternya merupakan parameter masukan


Pendefinisian Fungsi


Function NamaFungsi (input : deklarasi parameter, jika ada) -> tipe

{Spesifikasi fungsi, berisi penjelasan tentang apa yang dilakukan  dan dikembalikan oleh fungsi .}

DEKLARASI

{semua nama yang dipakai di dalam fungsi dan hanya berlaku lokal di dalam prosedur didefinisikan di sini}

ALGORITMA

{badan fungsi, berisi urutan instruksi yang menghasilkan nilai yang akan dikembalikan oleh fungsi}

Return  ekspresi {pengembalikan nilai yang dihasilkan fungsi}



 

Contoh



Function Genap(input n : integer) –> boolean

  {true jika n adalah bilangan genap, atau false jika tidak genap}

DEKLARASI

  {tidak ada}

ALGORITMA
  return (n mod 2 = 0)


Prosedur atau Fungsi


  • Fungsi digunakan apabila modul program mengembalikan sebuah nilai
  • Prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi

Sekian, semoga bermanfaat. wassalamu'alaikum..
































Read more →

Rekursif

,

Assalamu'alaikum.. kali ini saya akan share makul algoritma tentang rekursif . Selamat membaca ! 

KONSEP REKURSIF

  • Rekursif adalah suatu proses yang memanggil dirinya sendiri.
  • Fungsi Rekursif adalah sebuah fungsi yang memanggil dirinya sendiri
  • Perbedaan rekursif dengan fungsi/prosedur adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi.

Contoh 1 Proses Rekursif :

Berikut contoh fungsi rekursif untuk menghitung hasil kali dari dua bilangan :



Selama nilai b bukan 1, fungsi akan terus memanggil perintah a + kali (a, b-1), yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b.

     Uraian Langkahnya



Sebelum melakukan penambahan, program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti (2).

Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir

Contoh 2 Proses Rekursif:

Contoh : fungsi untuk menghitung harga pangkat suatu nilai bilangan bulat misalnya 35


statement pertama menunjukkan nilai yang utama dari fungsi, dan statemen kedua menunjukan perulangan penurunan dari n yaitu n-1.




 

Ciri Khas Fungsi Rekursif

  • Fungsi rekursif selalu memiliki kondisi yang menyatakan kapan fungsi tersebut berhenti. Kondisi ini harus dapat dibuktikan akan tercapai , karena jika tidak tercapai maka kita tidak akan dapat membuktikan bahwa fungsi akan berhenti, yang berarti algoritma tidak benar
  • Fungsi rekursif selalu memanggil dirinya sendiri sambil mengurangi atau memecahkan data masukan setiap panggilannya. Hal ini penting, karena tujuan utama dari rekursif adalah memecahkan masalah dengan mengurangi masalah tersebut menjadi masalah-masalah kecil.

Kekurangan fungsi rekursif

  • Memerlukan memory yang lebih banyak untuk menyimpan activation record dan variabel lokal. Activation record diperlukan waktu proses kembali kepada pemanggil
  • Memerlukan waktu yang lebih banyak untuk menangani activation record

Secara umum gunakan penyelesaian rekursif hanya jika:

  • Penyelesaian sulit dilaksanakan secara iteratif.
  • Efisiensi dengan cara rekursif sudah memadai.
  • Efisiensi bukan masalah dibandingkan dengan kejelasan logika program

Perbandingan Iterasi dan Rekursif

Iterasi merupakan suatu teknik perulangan yang digunakan pada penulisan program. Perulangan yang dimaksud adalah seperti perintah-perintah while .. do ataupun for .. do.
iterasi dan rekrusif itu sama-sama digunakan untuk proses perulangan.





Intinya adalah jika sebuah masalah dapat diselesaikan dengan cara iteratif maka gunakan iteratif. Jika penyelesaian dengan menggunakan iteratif memerlukan algoritma yang relatif rumit maka dapat dicoba dengan pendekatan rekursif karena rekursif memerlukan sumber daya yang lebih banyak


semoga bermanfaat, wassalamu'alaikum..




Read more →