Kamis, 31 Maret 2011

struktur data tentang array atau larik

Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan (kontigu) serta bertipe data sama pula. Array juga mempnyai pengertian sebuah elemen variable yang menyimpan sekumpulan data yang memiliki tipe yang sama. Setiap data yang memiliki tipe yang sama. Setiap data tersebut menempati lokasi atau alamat memori yang berbeda-beda dan selanjutnya disebut dengan elemen array. Elemen array itu kemudian dapat kita akses melalui indeks yang terdapat di dalamnya. Namun penting sekali untuk diperhatikan bahwa dalam C++, indeks array selalu dimulai dari 0 ,bukan dari 1.
Untuk mendeklarasikan sebuah array dalam C++,kita harus menggunakan tanda [   ] (bracket). Adapun bentuk umum dari pendeklarasiannya adalah sebagai berikut:
Tipe_data nama_array[jumlah_elemen]
sebagai contoh jika kita ingin mendeklarasikan sebuah array (  misalnya dengan nama LARIK) yang memilki 25 elemen dengan tipe data int, maka pendeklarasiannya adalah seperti  berikut: int LARIK[25]. Ruang memori yang dibutuhkan untk pendeklarasian array tersebut adalah 100 byte,yang berasal dari 25x4 byte(4 merupakan ukuran dari tipe data int ). Sedangkan cara yang digunkan untuk mengakses elemennya adalah dengn menuliskan indeksnya. Misalnya kita ingin mengambil nilai yang terdapat pada elemen ke 10 dan menampung nilai tersebut ke dalam sebuah variable yang bertipe int juga(missal X), maka kita harus menuliskan sintak X=LARIK[9]
Larik dapat diakses berdasarkan indeksnya. Indeks larik umumnya dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat dengan menggunakan perulangan (looping).

Larik satu dimensi

Larik satu dimensi merupakan jenis larik dasar dan jenis larik yang paling sering digunakan, pemakaian larik satu dimensi terutama dipakai dalam tipe data string (terutama dalam bahasa Bahasa pemrograman C).
Larik dua dimensi
Larik/array dua dimensi merupakan tipe larik yang lain. Larik dua dimensi sering dipakai untuk merepresentasikan tabel dan matriks dalam pemrograman.

contoh source code  operasi penjumlahan untuk matrik 2X2 dengan menggunakan bahasa pemrograman c++



#include "iostream.h"

void main()
{

int X[2][2];int Y[2][2];int Z[2][2];
int i,j;

cout<<"masukkan bilangan untuk matrik A\n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
          cout<<"input A ("<<i<<","<<i<<") = ";
          cin>>X[i][j];
     }
}
cout<<"masukkan bilangan untuk matrik B\n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
          cout<<"input B ("<<i<<","<<i<<") = ";
          cin>>Y[i][j];
     }
}
cout<<"\nmatriks A adalah \n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
          cout<<X[i][j]<<"\t";
     }
     cout<<"\n";
}
cout<<"\nmatriks B adalah \n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
          cout<<Y[i][j]<<"\t";
     }
     cout<<"\n";
}
cout<<"penjumlahan matriks A dan B adalah \n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
         
          cout<<X[i][j]<<"+"<<Y[i][j]<<"\t";
     }
     cout<<"\n";
}

cout<<"hasilnya= \n";
for(i=0;i<=1;i++)
{
     for(j=0;j<=1;j++)
     {
         
          Z[i][j]=X[i][j]+Y[i][j];
          cout<<Z[i][j]<<"\t";
     }
     cout<<"\n";
}


}

semoga bermanfaat

Selasa, 29 Maret 2011

struktur data tentang fungsi rekursif

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. Satu atau lebih kondisi penghentian yang bias dievaluasi untuk parameter-parameter tertentu. Langkah rekursif dimana nilai sekarang dalam algoritma bisa didefinisikan dalam nilai sebelumnya. Langkah rekursif harus menuju ke kondisi penghentian 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. Secara umum penyelesaian secara rekursif digunakan jika penyelesaian sulit dilaksankan secara iterative, efisiensi dengan cara  rekursif sudah memadai, efisiensi bukan masalah dibandingkan  dengan kejelasan logika program

Meskipun penulisan program dengan cara rekursif bisa lebih pendek,namun Terdapat kekurangan dan kelebihan dalam fungsi rekursif ini. Berikut adalah penjelasan penjelasan mengenai kelebihan dan kekurangan dalam mengguankan fungsi rekursif:

Kelebihan perulangan rekursif:
v  Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
v  Dapat melakukan perulangan dengan batasan fungsi.

Kekurangan perulangan rekursif:
v  Tidak bisa melakukan nested loop atau looping bersarang.
v  Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
v  Trace error sulit.
v  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).
v  Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
v  Pemborosan (Redundancy) dapat terjadi dalam
v  penyelesaian masalah secara rekursif

contoh source code tentang program untuk melakukan penjumlahan pada sebuah deret bilangan. Kemudian akan menampilkan hasil akhir berupa perkalian tiap bilangan hasil penjumlahan.

Contoh:

 Input: bil1 =3       hasil 1=1+2+3=6
 Input: bil 2=2       hasil 2=1+2=3
Output : hasil akhir =6*3=18 (muncul angka 18 di layar monitor)

#include "iostream.h"

int bil_satu(int a)
{
     if(a==0) return(0);
     return (a+bil_satu(a-1));
}

int bil_dua(int b)
{
     if(b==0) return(0);
     return (b+bil_dua(b-1));
}
main ()
{
     int j;
     int k;
     int hasil;


     cout<<"masukan angka pertama=";
     cin>>j;
    
     cout<<"hasil="<<bil_satu(j)<<endl;
    
    
    
     cout<<"masukan angka kedua=";
     cin>>k;

     cout<<"hasil="<<bil_dua(k)<<endl;
    

     hasil=(bil_satu(j)*bil_dua(k));

     cout<<"hasil dari "<<bil_satu(j)<<" x "<<bil_dua(k)<<" =             "<<hasil<<"";
     cout<<endl;
    
     return (1);    
    

}


semoga bermanfaat

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More