• Tidak ada hasil yang ditemukan

Materi Struktur Data Bahasa C++

N/A
N/A
Protected

Academic year: 2022

Membagikan "Materi Struktur Data Bahasa C++"

Copied!
10
0
0

Teks penuh

(1)

Materi Struktur Data Bahasa C++

1. TIPE DATA

2. PROCEDURE DAN FUNCTION 3. ARRAY DAN STRUCT

4. SORTING 5. POINTER 6. LINKED LIST

7. STACK, QUEUE DAN TREE

(2)

BAB I

“TIPE DATA”

Tipe data dalam program C++ menyediakan lima macam tipe data dasar, yaitu tipe data integer (nilai numerik bulat yang dideklarasikan int), floating point (nilai numerik pecahan ketepatan tunggal yang dideklarasikan dengan float), double-precision (nilai numerik pecahan ketepatan ganda yang dideklarasikan dengan double), karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan void). Jadi Terdapat 5 tipe data bawaan dari bahasa C++, yaitu: int, float, double, char dan void

Contohnya sebuah stack bisa diimplementasikan menggunakan tipe data semi

terstruktur, yaitu menggunakan array dan beberapa variabel integer sebagai penunjuk

top of the stack . Karena menggunakan array, maka pemrogram dimungkinkan untuk

mencetak isi stack bisa dimulai dari dasar stack, padahal prinsip stack hanya

mengijinkan akses data (push maupun pop) pada posisi top. Stack bisa

diimplementasikan menggunakan struktur data yang sesuai dengan tipe data abstrak

stack, dimana pemrogram tidak diperkenankan mengakses isi array tanpa melalui

teknik yang benar.

(3)

BAB II

“PROCEDURE DAN FUNCTION”

Fungsi/prosedur adalah suatu bagian dari program yang digunakan untuk menjalankan suatu tugas tertentu dan letaknya terpisah dari bagian program yang menggunakannya. Suatu fungsi/prosedur dipanggil/digunakan dengan tujuan khusus, yaitu untuk mengerjakan suatu tugas tertentu, dimana tugas-tugas tersebut dapat berupa tugas input (menyimpan hasil ke dalam suatu array atau file) dan/atau output (menampilkan hasil di layar monitor) ataupun melakukan penyeleksian dan perhitungan.

Suatu Fungsi/prosedur dapat memberikan suatu hasil balik ke program yang memanggilnya atau tidak meberikan hasil balik sama sekali. Hasil balik ini biasanya berupa suatu nilai yang dibutuhkan oleh bagian program yang memanggilnya

Fungsi / Function adalah satu blok kode yang melakukan tugas tertentu atau satu blok instruksi yang di eksekusi ketika dipanggil dari bagian lain dalam suatu program.

Tujuan pembuatan fungsi adalah :

- Memudahkan dalam pembuatan program.

- Menghemat ukuran program.

Keuntungan memakai fungsi :

- Menguraikan tugas pemrograman rumit menjadi langkah-langkah yang lebih sederhana atau kecil.

- Mengurangi duplikasi kode (kode yang sama ditulis berulang-ulang) dalam program.

- Dapat menggunakan kode yang ditulis dalam berbagai program yang berbeda.

- Memecah program besar menjadi kecil sehingga dapat dikerjakan oleh programmer-programmer atau dipecah menjadi beberapa tahap sehingga mempermudah pengerjaan dalam sebuah projek

- Menyembunyikan informasi dari user sehingga mencegah adanya perbuatan iseng seperti memodifikasi atau mengubah program yang kita buat

- Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu kesalahan kita

tinggal mencari fungsi yang bersangkutan saja dan tak perlu mencari kesalahan

tersebut di seluruh program.

(4)

BAB III

“ARRAY DAN STRUCT”

Menurut definisinya, array (larik) adalah suatu variabel yang mepresentasikan daftar (list) atau kumpulan data yang memiliki tipe data sama. Setiap daya yang terdapat dalam array tersebut menempati alamat memori yang berbeda serta disebut dengan elemen array. Selanjutnya untuk mengakses nilai dari suatu elemen array, kita akan menggunakan indeks dari array tersebut. Perlu sekali untuk diperhatikan bahwa dalam bahasa C, indeks array selalu dimulai dari angka 0, nukan 1. Hal ini berbeda dengan bahasa pemrograman lainnyya (misalnya bahasa Pascal) dimana indeks awal array dapat ditentukan sendiri sesuai keinginan kita.

Larik atau biasa dipanggil array dapat dikatakan sebagai baris atau deret. Contoh realnya sederet/sebaris kamar yang ada didalam hotel. Sedangkan arti array dalam bahasa pemrograman yakni sebuah variabel sejenis yang berderet yang memiliki alamat yang berdampingan atau bersebelahan. Array juga dapat dikatakan sebagai tipe terstruktur yg terdiri dari sejumlah komponen yang mempunyai tipe data yang sama. Variabel array ada tiga yaitu : array satu dimensi, array duadimensi dan array multidimensi.

Untuk mengetahui mengapa kita harus mengunakan array, asumsikan bahwa kita mempunyai lima buah variabel x1,x2,x3,x4 dan x5 yang semuanya bertipe float.

Selanjutnya kita ingin mengetahui nillai rata-rata nilai dari variabel tersebut. Program

memang pendek karena data ynag kita miliki hanya 5 buah. Namun bagaimana apabila

kita ingin menghitung rata-rata dari 100 atau bahkan 1000 data ? Oleh sebab itu, untuk

menyederhanakan program dalam kasus ini, seharusnya kita menggunakan array. Pada

saat array dideklarasikan, apabila kita tidak melakukan inisialisasi nilai secara eksplisit

terhadap elemen-elemen didalamnya, maka kompilator C akan secara otomatis mengeset

nilai dari setiap elemen tersebut ke nol.

(5)

BAB IV

“SORTING”

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik atau disebut juga ascending (dari data kecil ke data lebih besar) ataupun menurun/descending(dari data besar ke data kecil). Metode sorting sangat banyak seperti , Bubble Sort / Pengurutan Gelembung, Selection Sort/Pengurutan Maksimum-minimum, Insertion Sort/Pengurutan sisip.

1. Bubble Sort

Pengurutan yang paling tua dan sederhana untuk diimplementasikan.

Algoritma ini juga cukup mudah untuk dimengerti. Algoritma pengurutan gelembung dalam implementasi bahasa C adalah sebagai berikut. Pengurutan gelembung ini menggunakan dua buah kalang (loop) for. Kalang yang pertama melakukan travesal dari indeks terkecil sedangkan kalang yang kedua melakukan traversal dari indeks terbesar. Kalang yang satu berada di dalam kalang yang lain dan panjang masing-masing tergantung pada banyaknya elemen.

Merupakan metode sorting termudah, diberi nama “Bubble” karena proses pengurutan secara berangsur- angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar, jika pengurutan ascending. Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar, jika pengurutan descending. Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya. Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

2. Selection Sort

Merupakan kombinasi antara sorting dan searching. Untuk setiap proses,

akan dicari elemen elemen yang belum diurutkan yang memiliki nilai terkecil atau

terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk

putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan

(6)

ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

3. Insertion Sort

Pengurutan dengan penyisipan bekerja dengan cara menyisipkan masing- masing nilai di tempat yang sesuai (di antara elemen yang lebih kecil atau sama dengan nilai tersebut dengan elemen yang lebih besar atau sama dengan nilai tersebut). yaitu jika elemen dalam tabel telah terurut. Kalang (loop) while tidak pernah dijalankan. Untuk kasus terburuk algoritma ini berjalan Nmax kali.

Sehingga, seperti pengurutan gelembung, pengurutan dengan penyisipan

mempunyai kompleksitas algoritma O(n2). Walaupun mempunyai kompleksitas

algoritma yang sama, namun jika dijalankan dengan data input yang sama, algritma

pengurutan dengan penyisipan dua kali lebih cepat dan efisien dibandingkan

dengan pengurutan gelembung. Namun, algoritma ini tetap kurang efisien untuk

tabel berukuran besar (menyimpan banyak nilai). Algoritma pengurutan dengan

penyisipan ini kurang lebih dua kali lebih cepat dibandingkan dengan algoritma

pengurutan gelembung dan hampir 40% lebih cepat dibandingkan algoritma

pengurutan dengan seleksi, walaupun algoritma ini masih lebih lambat

dibandingkan dengan algoritma shell sort (akan dibahas kemudian).

(7)

BAB V

“POINTER”

Pointer merupakan variabel yang menyimpan alamat lokasi memori dari suatu data, bukan nilai data tersebut. Pointer adalah built-in type di C dan C++, dimana C++

mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan "Abstract C Machine", yaitu model mesin abstrak dimana program C bekerja. Mesin abstrak tersebut memiliki prosesor untuk menginterpretasikan stream of instruction, dan addressable memory yang terbagi kedalam 3 bagian yaitu: automatic memory, static memory dan free memory. Addressable memory merupakan memory yang konten-nya dapat diambil jika diketahui alamatnya. Menurut Frieyadie. 2007. Edisi Revisi Buku Pemrograman C++

dengan Borland C++ 5.02. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu

pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari

suatu variabel dapat diketahui dengan mudah. Arti pointer dalam bahasa sehari-hari

adalah putunjuk atau dapat dikatakan sebagai penentu atau dapat diartikan sebagai tipe

data yang nilai nya mengarah pada nilai yang terdapat pada sebuah area memori (alamat

memori). Namun dalam bahasa C, Pointer bisa berfungsi sebagai variabel array berarti

pointer sebagai penunjuk elemen array ke-0 dalam variabel C. Kegunaan pointer yang

utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau

object dari class), menyimpan alamat dari sebuah fungsi (function pointer) dan dapat

berfungsi untuk mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya

nilai variabel bisa diubah di dalam fungsi serta dapat membuat variabel dinamis.

(8)

BAB VI

“LINKED LIST”

Pada programmer pemula hal yang sulit dipahami adalah pointer. Pointer pada dasarnya sama dengan variable lain. Dengan pointer setiap variable diletakan pada alamat memori yang besarnya cukup untuk menampung nilai dari sebuah variapel. Pada sebuah data, 2 byte untuk tipe data short, 4 byte untuk tipe data int, long dan float serta 8 byte untuk tipe data double. Tiap-tiap byte data memori mempunyai alamat yang unik.

Sebuah varibel alamat merupakan alamat dimana sebuah byte data pertama dapat dialokasikan.

1. Operator Dereference ( & )

Penjelasan Didalam mendeklarasikan suatu variabel harus pada lokasi yang pasti didalam penggantian memori.Pada umumnya kita tidak dapat menentukan dimana variabel akan ditempatkan Terkadang secara otomatis dilakukan oleh kompiler dan sistem operasi yang sedang aktif, tetapi sesekali sistem operasi akan memberikan banyak alamat yang kita tidak mengetahui dimana variabel ditempatkan. Hal ini dapat dilakukan dengan memberikan suatu identifier “ & ”(

ampersand sign ) didepan nama variabel, operator ini biasa disebut dengan “address of” operator alamat.

2. Operator Reference ( * )

Dengan menggunakan operator anda dapat mengakses secara langsung nilai yamg terdapat didalam variabel yang berpointer, hal ini dapat dilakukan dengan menambahkan identifier asterisk ( * ), agar apat menterjemahkan nilai sebenarnya dari suatu variabel. Operator ini biasa disebut dengan “value pointed by”. Dengan menggunakan operator reference ( * ) ini, menghasilkan nilai yang berada pada suatu alamat memori.

Seperti halnya variabel yang lain, variabel pointer juga haru dideklarasikan terlebih dahulu sebelum digunakan. Bentuk Umum :

Tipe_data *nama_pointer;

Tipe data pointer mendefinisikan tipe dari obyek yang ditunjuk oleh pointer. Secara teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori.

Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang

(9)

ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.

Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan

tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu

cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan

suatu tempat baru untuk menyimpan data yangdiperlukan. Struktur ini lebih dinamis

karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array

yang ukurannya tetap.

(10)

BAB VII

“STACK, QUEUE DAN TREE”

Struktur dari program C merupakan kumpulan dari sebuah atau lebih fungsi-fungsi.

Fungsi pertama yang harus ada di program C yaitu bernama main(). Fungsi main() ini adalah fungsi pertama yang akan diproses pada saat program di-kompile dan dijalankan, sehingga disebut sebagai fungsi yang mengontrol fungsi-fungsi lain. Suatu fungsi di program C dibuka dengan kurung kurawal buka ({) dan ditutup dengan kurung kurawal tutup (}). Di antara kurung kurawal dapat dituliskan statemen-statemen program C.

Fungsi-fungsi lain selain fungsi utama dapat dituliskan setelah atau sebelum fungsi utama dengan deskripsi prototype fungsi pada bagian awal program. Dapatjuga dituliskan pada file lain yang apabila ingin dipakai maka harus menuliskan header filenya, dengan preprocessor directive.

Bahasa C merupakan bahasa pemrograman yang paling terkenal didunia dan mempunyai kemampuan lebih dari pada bahasa pemrograman yang lain. Bahasa C sendiri merupakan hasil buah karya dari Dennis Ritchi yang merupakan pengembangan dari bahasa BCPL yang telah ada lebih dahulu.Bahasa C merupakan General purpose language yaitu bahasa pemrograman yang dapat digunakan untuk tujuan apa saja.

Diantaranya untuk pembuatan aplikasi pemrograman system, aplikasi cerdas(artificial intelligence), sistem pakar, utility, driver, database, browser, network programming, system operasi, game, virus dan lain-lain.

STACK adalah salah satu list linear dalam struktur data yang digunakan untuk

menyimpan dan mengambil data dengan konsep LIFO (Last In First Out). Dimana dalam

stack ini kumpulan data yang masuk diletakkan di atas data yang lain. Dan berdasar

konsep LIFO maka data yang terakhir kali disimpan dalam stack akan menjadi data yang

pertama kali diambil. Dalam prosesnya, untuk memasukkan sebuah data ke dalam stack

atau dengan kata lain ke bagian atas dari sebuah tumpukan digunakan perintah push. Dan

untuk memindahkan data dari tempat tersebut digunakan perintah pop. Sedangkan dalam

penyajiannya, stack bisa memakai array atau linked list.

Referensi

Dokumen terkait

Tugas akhir ini adalah aplikasi deteksi kematangan dan kelayakan buah pepaya secara otomatis dengan bantuan webcam eksternal dan pengolahan citra.. Teknik ini berguna

Mampu menerapkan perhitungan Sistem Rangka Pemikul Momen Menengah (SRPMM) yang sesuai dengan SNI beton 03-2847-2002 dan SNI gempa 03- 1726-2002 untuk perencanaan struktur gedung

Peranan CSFs dalam perencanaan strategis adalah sebagai penghubung antara strategi bisnis organisasi dengan strategi sistem informasi yang dimiliki, memfokuskan

Hal ini dapat dilihat pada analisis data hasil belajar siklus I, setelah dilaksanakan pembelajaran IPA dengan menerapkan pendekatan saintifik berbantuan Project

Namun, agar Anda dapat menceritakan pengalaman Anda secara sistematis dan terperinci, buatlah sebuah catatan tentang hal-hal yang berkaitan dengan pengalaman yang akan

Hasil uji statistik menunjukkan ada hubungan antara pola asuh orang tua dengan stress pada remaja di SMP Negeri 3 Gamping Sleman Yogyakarta. Hasil penelitian ini

DIDISPOSISIKAN KE WADEK BAKSI, KABAG. TATA USAHA DAN KASUBBAG. SURAT DIPROSES DI SUBBAG. SURAT DIBERI NOMOR, TANGGAL DAN STEMPEL OLEH SUBBAG. MAHASISWA MENGAMBIL SURAT TERSEBUT

Hasil observasi kedua yang dilakukan dalam menunjukkan bahwa keberhasilan RA Miftahul Huda Ngasem dalam proses bermain matematika awal melalui beberapa tahapan, meliputi