PERTEMUAN ALPRO KEEMPATBELAS


Untuk pertemuan alpro terakhir kemarin qt,bercerita ttng bagaimanakah masa depan kami setelah lulus perguruan tinggi ini,intinya pengen menjadi apa gitu, heheheheeh...tetapi kemarin qt juga mempelajari materi tentang Array Rekursive.
                Nah apakah Array rekursive itu.....?

      Array adalah sebuah struktur data yang terdiri atas banyak variabel dengan tipe data sama, dimana masing-masing elemen variabel mempunyai nilai indeks. Setiap elemen array mampu untuk menyimpan satu jenis data (yaitu: variabel).
Sifat Array
     Array merupakan struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan terlebih dahulu dan tak bisa di ubah saat program berjalan.
    Array atau larik di definisikan sebagai pemesanan alokasi memory berurutan.definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian.


Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal.
Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
 KARAKTERISTIK ARRAY
a)      Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
b)      Mempunyai tipe data sama (bersifat homogen)
c)      Dapat diakses secara acak.

DEKLARASI ARRAY
Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu :
a)      Type data array
b)      Nama variable array
c)      Subkrip / index array.
Contoh deklarasi dari array adalah sebagai berikut :
int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
integer.

                                              JENIS ARRAY
1.      ARRAY DIMENSI SATU
Deklarasi         : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :
n
p (Index Array)
i = 1
p = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).

PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE
Rumus             :  @A[i] = B + (i – 1) * L
Dimana            :  @A[i]           :  Posisi array yang dicari
                                    B         :  Posisi awal index di memori computer
                                    i           :  Subkrip atau index array yang di cari
                                    L          :  Ukuran atau besar memori suatu tipe data
2.      ARRAY DIMENSI DUA
Deklarasi         : Type_Data Nama_Variabel [index1] [index2]
            Menentukan jumlah elemen dalam array dimensi dua :

n
p (Index Array)
i = 1

p = Perkalian dari statemen sebelumnya

PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE
Terbagi dua cara pandang (representasi) yang berbeda :
·         Secara kolom per kolom (coloumn major order / CMO)

@M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L

·         Secara baris per baris (row major order / RMO)

@M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L

Keterangan      :
@M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index array, i = Baris, j = Kolom, L = Ukuran memory type data, K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.

3.      ARRAY DIMENSI TIGA
Deklarasi         : type_Data Nama_Variabel [index1][index2][index3]
Menentukan jumlah elemen dalam array dimensi tiga :
n
p (Index Array)
i = 1
p = Perkalian dari statemen sebelumnya

PEMETAAN (MAPPING) ARRAY DIMENSI TIGA KE STORAGE

Rumus : @M[n][m][p] = M[0][0][0] + {((n – 1) * (index1)) + ((m – 1) *     (index2)) + ((p – 1) * (index3)} * L




                            PENGERTIAN REKURSIF
Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Menurut definisi dalam Microsoft Bookshelf, Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir.

Kelebihan Perulangan Rekursif:
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
Dapat melakukan perulangan dengan batasan fungsi.
Kekurangan Perulangan Rekursif:
Tidak bisa melakukan nested loop atau looping bersarang.
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
Trace error sulit.
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.


Komentar