Tampilkan postingan dengan label Struktur Data. Tampilkan semua postingan
Tampilkan postingan dengan label Struktur Data. Tampilkan semua postingan
Rabu, 26 Oktober 2011

OPERATOR DELETE

Apabila kita menggunakan pernyataan new untuk mengalokasikan memori, suatu saat bisa terjadi memori tersebut tidak bisa digunakan. Untuk membebaskan memori kita gunakan perintah delete. Pernyataan :

delete y;
delete []x;

akan membebaskan memori yang dialokasikan oleh *y dan array satu dimensi x.

FUNGSI TEMPLATE - STRUKTUR DATA

Misalkan kita menginginkan fungsi lain menghitung ekspresi yang sama, namun parameternya bertipe float, maka contoh programnya sebagai berikut.

[sourcecode language="cpp"]
#include <iostream.h>


float ABC (float a, float b, float c)
{return a+b+b*c+(a+b-c)/(a+b)+4;}


void main()
{cout << ABC(2, 3, 4) << endl; }
[/sourcecode]

Daripada menulis berulang - ulang kali fungsi tersebut untuk berbagai macam tipe data, lebih baik kita membuat fungsi generik yang tipe datanya ditentukan oleh kompilator. Kode generik seperti ini di tulis dengan menggunakan pernyataan template sebagaimana diperlihatkan pada program di bawah ini.

[sourcecode language="cpp"]
#include <iostream.h>


template<class T>
T ABC(Ta, Tb, Tc)
{return a+b+b*c(a+b-c)/(a+b)+4;}


void main()
{cout << ABC(2, 3, 4) << endl;}
[/sourcecode]

Dari fungsi generik ini kompilator akan mengganti int untuk T untuk mengkontruksikan program, dan mengganti float untuk T pada program.

FUNGSI REKURSIF DUA PARAMETER : PERKALIAN DUA BUAH INTEGER

Definisi interatif untuk kasus perkalian dua buah integer adalah sebagai berikut :

Definisi : (iteratif)
a x b =
1. a + a +...+ a (b kali), untuk b > 0
2. (-a) + (-a) +...+ (-a) (b kali), untuk b < 0

Dalam definisi diatas dapat dilihat bahwa perulangan selalu dipertahankan bernilai positif, terutama untuk kasus b yang negatif, yaitu dengan cara mengalihkan nilai negatif ke a. Implementasi definisi tersebut menggunakan fungsi sebagai berikut :

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


int kali_interatif(int a, int b)
{
int i, hasil = 0; //nilai awal
for (i = 1; i <= abs(b); i++)
hasil = hasil + a;
if (b < 0) return - hasil;
else return hasil;
}


void main()
{
cout << "3x(-5) = " << kali_iteratif(3, -5) << endl;
}

Fungsi absolut (abs) digunakan untuk perulangan yang selalu positif (7). Fungsi abs prototip fungsinya berada pada math.h (2). Sementara bila b bernilai negatif dari perhitungan semula untuk b positif (9). Dalam implementasi menggunakan fungsi rekursif, nilai awal pada kasus iteratif digunakan sebagai kasus basis (penyetop). Sementara dua kasus yang ada pada definisi interatif digunakan dan dimodifikasi untuk kasus rekursif. Definisi rekursif dari kasus perkalian dua integer adalah sebagai berikut:

Definisi : (rekursif)
a x b =
1. 0, untuk b = 0
2. a + (a x (b-1)), untuk b > 0
3. -a + (a x (b + 1)), untuk b < 0

Implementasi deari rekursif diatas adalah sebagai berikut :

#include <iostream.h>


int kali_rekursif(int a, int b)
{
if (b==0)
return 0;
else if (b > 0)
return a + kali_rekursif(a, b - 1);
else 
return (-a) + kali_rekursif(a, b+1);
}


void main()
{
cout << " 3 x(-5) = " << kali_rekursif(3, -5) << endl;
}

FUNGSI FIBONANCCI SEQUENCE

Fibonancci Sequence adalah 1, 1, 2, 3, 4, 5, 13, 21, 34, 55, .... .Setiap bilangan setelah bilangan kedua merupakan jumlah dari dua bilangan sebelumnya. Dengan demikian 2 dari 1 + 1, 3 dari 2 + 1, 5 dari 3 +1 demikian seterusnya yang merupakan definisi rekursif.

Implementasi dari fungsi fibonancci secara logik ekuivalen dengan translasi langsung dari defini matematik. Karena Fn = n untuk n < 2, kita dapat sederhanakan dengan satu pernyataan if.

Itulah sedikit penjelasan tentang apa rekursif itu sendiri, sekarang langsung contoh implementasi rekursif dari fungsi fibonancci tersebut.

#include <conio>
#include <iostream>


using namespace std;


long fib(int);


int main()
{
for (int n = 0; n < 5; n++)
  cout << "fib(" << n << ") = " << fib(n) << endl;
getch(); return 0;
}


long fib(int n)
{
if (n < 2) return n; //basis
return fib(n - 1)+ fib(n - 2) //rekursif
}


Output program:

Fungsi Fibonancci
fib(0) = 0
fib(1) = 1
fib(2) = 1
fib(3) = 2
fib(4) = 3

CONST REFERENCE PARAMETER - STRUKTUR DATA

CONST REFERENCE PARAMETER - STRUKTUR DATA - C++ menyediakan mode lain untuk melewatkan parameter ke fungsi, yaitu const reference. Mode ini menandakan parameter reference tidak diubah oleh fungsi. Dengan demikian, nilai a, b, c tidak berubah. Pada contoh 1. memperlihatkan penulisan kode dengan mode ini.

Contoh 1.

#include <iostream.h>


template<class T>
T ABC(const T&a, const T&b, const T&c)
{return a+b+b*c+(a+b-c)/(a+b)+4}


void main()
{cout << ABC(2, 3, 4) << endl;}

Program 2. di bawah ini menggunakan penulisan yang lebih umum dibanding dengan program 1. Pada versi ini parameter formal bisa berbeda tipe datanya dan menghasilkan tipa yang sama denga parameter pertama.

Contoh 2.


#include <iostream.h>


template<class Ta, class Tb, class Tc>
Ta ABC(const Ta&a, const Tb&b, const Tc&c)
{return a+b+b*c(a+b-c)/(a+b)+4;}


void main()
{cout << ABC(2, 3, 4) << endl;}

Array Satu Dimensi

Array Satu Dimensi - Dalam suatu kasus, kadang diperlukan bekerja dengan array satu atau dua dimensi yang tidak diketahui berapa banyak ukurannya pada saat dikompilasi. Untuk itu diperlukan alokasi memori secara dinamis.

Untuk membuat array satu dimensi bertipe float x pada saat program dieksekusi, kita harus mendeklarasikan x sebagai pointer ke float, kemudian mengalokasikan sejumlah memori untuk array tersebut. Sebagai contoh, array floating point denga ukuran n dibuat sebagai berikut :

float *x = new float [n];

Operator new mengalokasikan memori untuk n buah bilangan floating point dan mengembalikan pointer ke element pertama. Element array diberi alamat dengan penulisan x[0]. x[1],...,x[n-1].

Rabu, 28 September 2011

Pengertian Struktur Data


Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
Secara garis besar type data dapat dikategorikan menjadi:
Type data sederhana.
  • Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.
  • Type data sederhana majemuk, misalnyaString
Struktur Data, meliputi:
  • Struktur data sederhana, misalnya array dan record.
  • Struktur data majemuk, yang terdiri dari:
Linier : Stack, Queue, sertaList dan Multilist
Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang standar yang biasanya digunakan dibidang informatika adalah:
* List linier (Linked List) dan variasinya
* Multilist
* Stack (Tumpukan)
* Queue (Antrian)
* Tree ( Pohon)
* Graph ( Graf )
REVIEW RECORD (REKAMAN)
Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram.
Rekaman disebut juga tipe terstruktur.

My Visitor

free counters
 
Candra Personal Blog powered by blogger.com
Design by Free7 Blogger Templates Simple Clean