Assalamu’alaikum Wr. Wb., Nama saya Fajar Muhammad, Saya Mahasiswa Universitas Muhammadiyah Sidoarjo Semester 2 Program Studi Informatika Fakultas Sains & Teknologi.
Silahkan akses link berikut: Universitas Muhammadiyah Sidoarjo atau Fakultas Sains dan Teknik Universitas Muhammadiyah Sidoarjo
Nama : Fajar Muhammad
NIM : 191080200075
Kelas : 2A1-Informatika
Algoritma adalah:
Pernyusunan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang akan digunakan.
BAB I
Struktur Data, Array, Pointer, Dan Struktur
A.
Konsep Dasar Struktur Data
Struktuk data adalah
sebuah bagian dari ilmu pemrograman dasar yang mempuyai karakteristik yang
terkait dengan sifat dan cara penyimpanan sekaligus pengguna atau pengakses
data. Struktuk data bertujuan agar cara mereprentsikan data dalam membuat
program dapat dilakuian secara efesien dalam pengolahan di memori dan
pengolahan penyimpanan dari program ke storage juga lebih mudah dilakukan.
B.
Konsep Dasar Array
Array adalah
kumpulan elemen-elemen data. Kumpulan elemen tersebut mempunyai susunan yang
teratur. Jmlah elemen terbatas, dan semua elemen mempunyai tipe data yang sama.
Jenis-jenis array :
1.
Array Satu Dimensi
Setruktur array
suatu dimensi dapat di deklarasikan dengan bentuk umum berupa: tipe_var
nama_var [ukuran];
Dengan:
- Tipe_var: untuk menyatakan
jenis elemen array (misalnya int,char,unsigned)
- Nama_var: untuk menyatakan nama
variable yang dipakai
- Ukuran: untuk menyatakan jumlah
maksimal elemen array.
Contoh : float nilai_ujian [5];
2.
Array Dua Dimensi
Tipe
data array dua dimensi bisa digunakan ntuk menyimpan, mengolah maupun
menampilkan suatu data dalam bentuk
table atau matriks. Untuk mendeklarasikan
array agar dapat menyimpan data adalah :
Tipe_var_nama_var[ukuran1][ukuran2];
Dimana :
-
Ukuran 1 menunjukkan jumlah /nomor baris.
-
Ukuran 2 menunukan jumlah /nomor kolom.
Jumlah
elemen yang di milki array dua dimensi dapat ditentukan dari hasil perkalian :
Ukuran1
X ukuran 2.
Seperti
halnya pada array satu dimensi, data array dua dimensi akan ditempatkan pada
memori secara berurutan.
3.
Array multidimensi/Dimensi
Banyak
Array
berdimensi banyak atau multidimensi terdiri dari array yang tidak terbatas
hanya dua dimensi saja. Bentuk umum pendeklarasian array multi dimensi adalah :
tipe_var nama_var [ukuran1][ukuran2]…[ukuran];
Contoh
: int data_angka [3][6][6];
Yang
merupakan array tiga
dimensi.
Gambar
berikut memperlihatikan urutan komponen array dalam memori. Untuk variable array
nilai_tes:
C.
Konsep Dasar Pointer
Pointer adalah sebuah
variable yang berisi alamat variable yang lain. Satu pointer dimksudkan untuk
menunjuk kesuatu alamat memori sehingga alamat dari suatu variable dapat
diketahui dengan mudah. Deklarasi ponter :
Oprator pointer :
-
Oprator ‘&’ ; untuk
mendapatkan alamat memori operand/variable ponter.
-
Oprator ‘*’ : untuk mengakses
nilai data operand/variable pointer.
D.
Konsep Dasar Struktur
Struktur adalah
koleksi dari variable yang dinyatakan sebuah nama, dengan sifat setiap variable
dapat memiliki tipe yang berlainan. Struktur bisa dipakai untuk mengelompokkan
beberapa informasi yang berkaitan menjadi sebuah satu kesatuan. Contoh sebuah
struktur adalah informasi data tanggal, yang berisi tanggal, bulan, dan tahun.
Mendeklarasikan Struktur :
Contoh pendefinisian
tipe data
Struktur adalah :
struct
Data_tanggal
{int tanggal;
Masing-masing
tipe dari elemen struktur dapat berlainan. Adapun variable_struktur1 sampai
dengan variable_struktur M menyatakan bahwa variable struktur yang
dideklarasikan bisa lebih dari satu. Jika ada lebih dari satu variable, antara
variable struktur dipisahkan dengan tanda koma.
Mengakses Elemen
Struktur:
Elemen
dalam struktur dapat diakses dengan mengguanakan bentuk:
Variable_struktur.nama_field
Antara
variable_struktur dab nama_field dipisahkan dengan oprator titik (disebut
oprator anggota struktur). Contoh berikut merupakan intruksi untuk mengisikan data pada file
tanggal:
Tgl_lahir.tanggal=30
int bulan;
Int
tahun;
};
Yang
mendefinisikan tipe bernama data_tanggal, yang terdiri dari tiga buah elemen
berupa tanggal, bulan, dan tahun. Bentuk umum dalam mendefenisikan struktur
adalah :
Struct
nama_tipe_struktur
{
Tipefiled1; tipefiled2; tipefiled3;
}variable_struktur….variable_strukturM;
BAB II
Linked List
Linked List
adalah sejumlah objek atau elemen yang dihubungkan satu dengan lainya sehingga
membentuk suatu list. Sedangkan objek atau elemen itu sendiri adalah merupakan gabungan
beberapa data(variable) yang dijadikan satu kelompok atau structure atau record
yang dibentuk dengan perintah struct.
Untuk menggabungkan objek satu dengan lainya, diperlukan paling tidak sebuah
variable yang bertipe pointer. Syarat linked
list adalah harus dapat diketahui alamat simpul pertama atau biasa dipakai
variable First/Start/Header. Struktur
dasar sebuah list seperti gambar berikut :
Istilah-istilah
dalam linked list :
A.
Simpul
Simpul terdiri dari
dua bagian yaitu :
-
Bagian data
-
Bagian pointer yang menunjuk ke
simpul berikutnya
B.
First/Header
Variabel
First/Header berisi alamat (pointer)/acuan (refrence) yang menunjuk lokasi simpul
pertama linked list, digunakan
sebagai awal penelusuran linked list.
C.
Nill/Null
Tidak bernilai,
digunakan untuk menyatakan tidak mengacu ke manapun.
D.
Simpul Terakhir(Last)
Simpul terakhir linked list berarti tidak
menunjuk simpul berikutnya. Tidak terdapat alamat disimpan di field pointer di simpul terakhir.
Jenis-jenis linked list :
1.
List kosong
List kosong hanya
terdiri dari sebuah penunjuk elemen yang berisi NULL(kosong), tidak meiliki
satu buah elemen pun sehingga hanya berupa penunjuk awal elemen berisi NULL.
2.
List tunggal
List tunggal adalah list
yang elemenya hanya menyimpan informasi elemen setelahnya (next), sehingga jalanya pengaksesan list hanya dapat dilakukan
secara maju. List tunggal terbagi menjadi tiga jenis yaitu list tunggal dengan
kepala (first), list tunggal dengan
kepala (first) dan ekor (tail), serta list tunggal yang berputar.
3.
List ganda
List ganda adalah sebuah
list yang elemenya menyimpan informasi elemen sebelumnya dan informasi elemen
setelahnya, sehingga proses penelusuran list dapat dilakukan secara maju dan
mundur. List ganda terbagi menjadi tiga jenis yaitu list ganda dengan kepala (first), list ganda dengan kepala (first) dan ekor (tail), serta list ganda yang berputar.
Operasi Dasar pada Linked List :
IsEmpty
: Fungsi ini menentukan apakah linked list kosong atau tidak.
Size
: operasi untuk mengirim jumlah elemen di linked list.
Create
: operasi untuk penciptaan list baru yang kosong.
Insertfirst
: operasi untuk penyisipan simpul sebagai simpul pertama.
Insertafter
: operasi untuk penyisipan simpul setelah simpul tertentu.
Installaast
: operasi untuk penyisipan simpul setelah simpul terakhir.
Insertbefore
: operasi untuk penyisipan simpul sebelum simpul tertentu.
Deletefirst
: operasi penghapusan simpul pertama.
Deleteafter
: operasi untuk penghapusan setelah simpul tertentu.
Deletelast
: operasi penghapusan simpul terakhir.
BAB III
Stack (Tumpukan)
Stack adalah kumpulan
elemen-elemen yang tersimpan dalam suatu
tumpukan. Aturan penyisipan dan penghapusan elemennya tertentu:
- Penyisipan selalu dilakukan ”di atas”
TOP
- Penghapusan selalu dilakukan pada TOP
Karena aturan penyisipan
dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi
operasi, elemen yang ditambahkan paling akhir akan menjadi elemen yang akan
dihapus. Dikatakan bahwa elemen Stack tersusun secara LIFO (Last In First Out).
Beberapa contoh
penggunaan stack adalah pemanggilan prosedur, perhitungan ekspresi aritmatika,
rekursifitas, backtracking, penanganan interupsi, dan lain-lain. Karakteristik
penting stack sebagai berikut:
1. Elemen stack yaitu item-item data di
elemen stack
2. TOP (elemen puncak dari stack)
3. Jumlah elemen pada stack
4. Status/kondisi stack, yaitu :
- Penuh
Bila elemen di tumpukan mencapai kapasitas maksimum
tumpukan. Pada kondisi ini, tidak mungkin dilakukan penambahan ke tumpukan.
Penambahan di elemen
menyebabkan kondisi kesalahan Overflow.
- Kosong
Bila tidak ada elemen
tumpukan. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen tumpukan.
Pengambilan elemen menyebabkan kondisi kesalahan Underflow.
Stack memiliki
operasi-operasi pokok sebagai berikut :
Push : Untuk menambahka item pada tumpukan paling
atas.
Clear :Untuk mengosongkan stack.
IsEmpty : Untuk memeriksa apakah stack kosong.
IsFull :
Untuk memeriksa apakah stack sudah penuh.
Representasi stack:
- Representasi statis
Stack dengan
representasi statis biasanya diimplementasikan dengan menggunakan array. Sebuah
array memiliki tempat yang dialokasikan diawal sehingga sebuah elemen yang
dimasukkan dalam sebuah array terbatas pada tempat yang ada pada array. Karena
menggunakan array maka stack dengan representasi statis dalam mengalami kondisi
elemen penuh.
- Representasi dinamis
Stack dengan
representasi dinamis biasanya diimplementasikan dengan menggunakan pointer yang
menunjuk pada elemen-elemen yang dialokasikan pada memori.Karena semua operasi
pada sebuah stack diawali dengan elemen yang paling atas maka jika menggunakan
representasi dinamis saat elemen ditambahkan
akan menggunakan penambahan elemen pada awal stack (addfirst) dan saat
pengambilan atau penghapusan elemen menggunakan penghapusan di awal stack
(deffirst).
BAB IV
Queue (Antrian)
Antrian adalah salah satu kumpulan data yang
penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut sisi
belakang atau REAR), dan penghapusan atau pengambilan elemen dilakukan lewat
ujung yang lain (disebut sisi depan atau front).prinsipyang digunakan dalam
antrian ini adalah FIFO (First in first
out) yaitu elemen yang pertama kali masuk akan keluar pertama kalinya.
Karakteristik penting antrian sebagai berikut:
Elemen antrian yaitu item-item data terdapat dalam
antrian.
A.
Heat/font
(elemen terdepan dalam antrian).
B.
Tail/rear
(elemen terakhir antrian).
C.
Jumlah
antrian pada antrian (count).
D.
Status/kondisi
antrian, ada dua yaitu:
-
Penuh
Bila elemen pada antrian mencapai
kapasitas maksimum antrian. Pada kondisi ini, tidak mungkin dilakuakan
penambahan ke antrian. Penambahan di elemen menyebabkan kondisi kesalahan
overflow.
-
Kosong
Bila tidak ada elemen antrian. Pada kondisi ini,
tidak mungkin dilakuakan pengambilan elemen antrian. Pengambilan elemen
menyebabkan kondisi kesalahan underflow.
Operasi-operasi pokok pada antrian diantaranya adalah:
1.
Create
→ Membuat antrian baru.
2.
IsEmpety
→ Untuk memeriksa apakah Antrian sudah penuh atau belum.
3.
IsFull→mengecek
apakah Antrian sudah penuh atau belum.
4.
Enqueue/Insert
→ menambahkan elemen ke dalam Antrian, penambahan elemen selaluditambahkan di
elemen paling belakang.
5.
Dequeue/Remove
→ untuk menghapus elemen terdepan/pertama dari Antrian
Algoritma QDELETE.
Representasi queue : Representasi Statis dan Representasi Dinamis.
BAB V
Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil
dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu
sendiri. Contoh menghitung nilai faktorial. Rekursif sangat memudahkan untuk
memecahkan permasalahan yang kompleks. Sifat-sifat rekursif:
-
Dapat
digunakan ketika inti dari masalah terjadi
berulang kali.
-
Sedikit
lebih efisien dari iterasi tapi lebih elegan.
-
Method-methodnya
dimungkinkan untuk memanggil dirinya sendiri.
Data yang berada dalam method tersebut seperti argument disimpan sementara
ke dalam stack sampai method pemanggilnya diselesaikan.
BAB VI
Sorting (Pengurutan)
Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk menyusun
kembali himpunan obyek menggunakan aturan tertentu. Ada dua macam urutan yang
biasa digunakan dalam proses pengurutan yaitu:
- Urutan
naik (ascending) yaitu dari data yang mempunyai nilai paling kecil sampai
paling besar.
- Urutan
turun (descending) yaitu dari data yang mempunyai nilai paling besar sampai
paling kecil.
Contoh : data bilangan 5,2,6, dan 4 dapat diurutkan naik menjadi 2,4,5,6
atau diurutkan turun menjadi 6,5,4,2. Pada data yang bertipe char,nilai data
dikatakan lebih kecil atau lebih besar dari yang lain didasarkan pada urutan
relatif (collating sequence) seperti dinyatakan dalam tabel ASCII. Keuntungan
dari data yang sudah dalam keadaan terurut yaitu :
A. Data mudah dicari, mudah untuk dibetulkan,
dihapus, disisipi atau digabungkan. Dalam keadaan terurutkan, kita mudah
melakukan pengecekan apakah ada data yang hilang.
B. Misalnya kamus bahasa, buku telepon.
C. Mempercepat proses pencarian data yang
harus dilakukan berulang kali.
Beberapa faktor yang berpengaruh pada efektifitas
suatu algoritma pengurutan antara lain :
A. Banyak data yang diurutkan.
B. Kapasitas pengingat apakah mampu menyimpan
semua data yang kita miliki.
C. Tempat penyimpanan data,misalnya
piringan,pita atau kartu,dll.
Beberapa algoritma metode pengurutan dan prosedurnya sebagai berikut:
1.
Bubble
sort
Bubble sort adalah suatu metode pengurutan yang
membandingkan elemen yang sekarang dengan elemen berikutnya. Apabila elemen
sekarang>elemen berikutnya,maka posisinya ditukar. Kalau tidak,tidak perlu
ditukar.diberi nama “bubble”karena proses pengurutan secara berangsur-angsur
bergerak/berpindah ke posisinya yang tepat,seperti gelembung yang keluar dari
sebuah gelas bersoda.
Algoritma bubble sort:
1.
i=0
2.
selama
(i<N-1)kerjakan baris 3 sampai 7
3.
j=N-1
4.
selama
(j>=i)kerjakan baris 5 sampai 7
5.
jika
(data [j-1]>data[j]maka tukar data[j-1]dengan data[j]
6.
j=j-1
7.
i=i+1
2.
Selection
Sort
Metode seleksi melakukan pengurutan dengan cara
mencari dta yang terkecil kemudian menukarnya
dengan data yang digunakan
sebagai acuan atau sering dinamakan pivot. Selama
proses,pembandingan dan
pengubahan hanya dilakukan pada indeks pembanding saja,pertukaran data
secara
fisik terjadi pada akhir proses.
Algoritma seleksi dapat dituliskan sebagai berikut:
1.
i=0
2.
selama(i<N-1)kerjakan
baris 3 sampai dengan 9
3.
k=i
4.
j=i+1
5.
selama
(j<N)kerjakan baris 6 dan 7
6.
jika
(data[k]>data[j]maka k=j
7.
j=j+1
8.
tukar
data [i] dengan data[k]
9.
i=i+1
3.
Merger
Sort
Merge sort ialah algoritma pengurutan yang
berdasarkan pada strategi divide and conquer. Algoritma ini terdiri dari dua
bagian utama, pembagian list yang diberikan untuk di-sort ke dalam beberapa
sublist yang lebih kecil,dan sort (mengurutkan)
dan merge (menggabungkan) sublist-sublist yang lebih kecil ke dalam list
hasil yang sudah diurutkan. Pembagian bisa dikatakan cukup mudah karena
sublist-sublist tersebut dibagi ke dalam dua sublist yang ukurannya adalah
setengah dari ukuran semula. Hal ini terus diulang sampai sublist itu cukup
kecil untuk di-sort secara efisien (umumnya telah terdiri dari satu atau dua
elemen). Dalam langkah merge dua sublist disatukan kembali dan diurutkan pada
saat yang sama. Algoritma untuk merge sort ialah sebagai berikut:
A. untuk kasus n=1,maka table a sudah terurut
sendiirinya (langkah solve)
B. untuk kasus n>1,maka:
- DEVIDE:
bagi table a menjadi dua bagian,bagian kiri dan bagian kanan, masing-masing
bagian berukuran n/2 elemen.
- CONQUER: secara
rekursif,terapkan algoritma D-dan-C pada masing-masing bagian.
- MERGE: gabung
hasil pengurutan kedua bagian sehingga diperoleh table a yang terurut.
Sekian rangkuman yang bisa saya ambil dari praktikum algoritma dan struktur data, semoga ini bermanfaat bagi kita semua dan bila ada salah-salah kata di dalam blog yang saya tulis, saya meminta maaf yang sebesar – besarnya. Sekian dan terima kasih.
Wassalamu’alaikum Wr. Wb.











