PENGENALAN ALGORITMA DAN STRUKTUR DATA (ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA)
Kebanyakan orang mempresepsi komputer
sebagai perangkat sangat digdaya dimana kehidupan manusia telah
dipercaya bergantung padanya. Agar komputer dapat dilakukan
pengoperasian yang sangat cepat dan menjadi digdaya yaitu dengan adanya
program. Pemogramanlah yang memberikan keajaiban itu. Program adalah
himpunan arahan yang memberitahu komputer apa-apa yang perlu dilakukan,
sebagai media yang digunakan manusia untuk berkomunikasi dengan
komputer, memberi milyaran perintah yang akan dijalankan secara
konsisten dan cepat oleh komputer. Program dapat ditulis dalam beragam
bahasa pemograman untuk menspesifikasikan arahan-arahan itu ke komputer
yang merupakan satu algoritma.
Algoritma adalah metode kerja yang dapat
di implementasikan di komputer yang mengolah suatu data masukan untuk
menghasilkan data keluaran. Data perlu distrukturkan agar dapat
diperoleh algoritma yang sederhana. Algoritma tidak dapat dipisahkan
dengan struktur data yang dipilih dalam merepresentasikan data
persoalan.
Struktur data dan algoritma merupakan
pondasi ilmu komputer. Bidang struktur data adalah gudang
perbendaharaan konsep dasar, kecerdikan, keampuhan abstraksi, beragam
algoritma, dan teknik untuk evaluasi. Struktur data mengumpulkan
item-item data dalam cara tertentu yang mempunyai aturan-aturan
pengaksesan tertentu. Struktur data umum memuat item-item seperti
record, array, set, list, stack, queue, deque, tree, binary tree, graph,
string, dan sebagainya.
1 . ALGORITMA PEMROGRAMANAlgoritma adalah satu prosedur yakni masukannya suatu instan masukan yang mungkin dan mentransformasikan menjadi keluar yang dikehendaki.
Contoh:
Persoalan pengurutan:
Masukan : satu sekuen n kunci a1, a2, a3, …, an
Keluaran : permutasi (penyusutan ulang) sekuen masukan sehingga a1′≤ a2′≤a3′≤…≤an’
Instan persoalan dapat berupa array nama seperti {mangga, apel, durian, semangka} atau daftar angka seperti {98, 8, 7, 101, 99}.
1.1 Ciri-ciri algoritma
Algoritma disusun dari sekumpulan langkah
yang berhingga, masing-masing langkahnya mungkin memerlukan satu
operasi atau lebih dan dirancang untuk menyelesaikan suatu persoalan
spesifik dengan usaha paling minimal.
Berikut ciri-ciri dari algoritmam:- Input – masukan, terdapat nol masukan atau lebih yang diberikan.
- Output – keluaran, sedikitnya terdapat satu keluaran yang dihasilkan.
- Definite – jelas, harus secara sempurna menyatakan apa yang dilakukan.
- Efective – efektif, setiap instruksi harus dapat dilakukan secara manual menggunakan pensil dan kertas selama sejumlah waktu yang berhingga.
- Terminater – berakhir, harus berhenti setelah sejumlah operasi.
Untuk mendeskripsikan algoritma diperlukan satu notasi untuk mengekspresikan satu sekuen langkah yang dilakukan.
Terdapat tiga alternatif yang paling sering digunakan, yaitu :
- Bahasa alami, seperti bahasa indonesia dan bahasa inggris.
- Pseudocode
- Bahasa pemrograman
Definisi kata Data dan Struktur sebagai berikut :
Data adalah:
“Bahan yang digunakan dalam perhitungan atau operasi untuk menghasilkan informasi yang berguna”
Sedangkan struktur mempunyai pengertian sebagai berikut:
“Struktur adalah pengaturan atau hubungan”
Maka struktur data dapat didefinisikan sebagai:
“Pengaturan atau hubungan dari data di dalam suatu sistem”
Kita tentu sering bekerja dengan program,
pertanyaan yang mungkin timbul adalah, “dimana letak kegunaan dari
struktur data dalam hubungannya dengan program ?”
Sebenarnya Struktur Data + Algoritma akan menjadi Program.
Hubungan struktur data dengan program dan algoritma
2.1 Tipe Data
Tipe data adalah:“Identifikasi yang umum dari suatu kelompok data sehingga kelompok data tersebut dapat dibedakan dari kelompok lainnya.”
Secara umum, tipe data dapat dikelompokkan ke dalam 2 kelas, yaitu tipe data atomik dan tipe data struktur.
Suatu data disebut sebagai tipe atomik bila data tersebut tidak dapat
diuraikan ke dalam bentuk yang lebih sederhana. Contohnya adalah: tipe
data Integer, tipe data Char, tipe data float dan seterusnya. Sedangkan
tipe data struktur, contohnya adalah : tipe data array, structure, dan
seterusnya.
Berikut akan dikemukakan contoh dari
masing-masing tipe data dengan menggunakan deskripsi yang biasanya
dilakukan dalam bahasa C.
Tipe Data Atomik- Tipe data : int A;
- Besar memori : 16 bit
- Jangkauan : -32768 sampai dengan 32768
Tipe data : int X[5];
Jenis tipe data diatas adalah tipe data struktur, komponennya terdiri dari tipe data INTEGER (dapat diuraikan ke dalam tipe data atomic berbentuk INTEGER), struktur atau hubungan antara komponennya disusun dalam bentuk ARRAY.
2.2 Level Abstraksi Tipe Data
Kita dapat membedakan adanya beberapa
level abstraksi dari suatu tipe data. Ada tipe data yang hanya berada di
dalam imajinasi kita saja. Bayangkan kita mempunyai sekumpulan
nama-nama orang, dan nama-nama itu diberi nomor urut. Dapat dibayangkan
operasi yang dapat dilakukan terhadap kumpulan nama tersebut. Seperti mencetak nama-nama, menemukan nama dengan urutan ke tiga dst. Tipe data yang demikian dikatakan berada pada level abstrak.
Jika tipe data abstrak tersebut kita
implementasikan dengan menggunakan bahasa pemrograman, maka kita dapat
menuliskan program untuk melakukan operasi-operasi seperti yang telah
disebutkan pada level abstrak di atas. Tipe data yang berada dalam
bahasa pemrograman dikatakan berada pada level virtual.
Pada akhirnya, pada saat program dijalankan, tipe data virtual harus secara fisik diload ke
dalam memory/processor dari mesin komputer yang dipergunakan untuk
menjalankan program tersebut. Tipe data yang demikian dikatakan berada
pada level physical.
Secara ringkas kita dapat membagi tipe data ke dalam 3 level abstraksi, yaitu:- Tipe Data Abstrak adalah tipe data sebagai hasil dari imajinasi kita.
- Tipe Data Virtual adalah tipe data yang berada dalam virtual memory atau dalam bahasa pemrograman.
- Tipe Data Physical adalah tipe data yang secara fisik atau nyata berada dalam memory / main processor.
Pada level physical, semua data dinyatakan dalam binary digit
(bit), yaitu berupa angka 0 dan 1. Data tipe ini sangat menyulitkan
manusia dalam membaca, menulis atau mengubahnya. Maka diciptakanlah
bahasa pemrograman yang memudahkan manusia untuk berkomunikasi dengan
computer. Bahasa pemrograman tingkat tinggi (high level language)
merupakan bahasa pemrograman yang paling mudah dimengerti oleh manusia.
Dalam bahasa pemrograman ini biasanya telah tersedia beberapa tipe data
yang dapat langsung dipergunakan bila kita menulis program dengan
bahasa ini. Tipe data ini disebut sebagai native data type.
Contoh native data type dalam C adalah:- int
- char
- long
- float dan lain – lain
Ada dua terminologi atau istilah yang akan dipergunakan dalam spesifikasi tipe data. Terminologi yang pertama adalah pre, yang merupakan singkatan dari precondition; menyatakan kondisi yang harus dipenuhi agar operasi dapat menghasilkan hasil yang benar. Terminologi yang kedua adalah post, yang merupakan singkatan dari postcondition; kondisi yang merupakan hasil dari operasi.
Sebagai contoh akan didefinisikan tipe data abstrak yang disebut letterstring yang merupakan kumpulan huruf ‘a’ sampai ‘z’, ‘A’ sampai ‘Z’ dan spasi. Hasil dari letterstring bisa berupa suatu kalimat yang mempunyai arti tertentu, atau juga bisa hanya merupakan kumpulan huruf yang tidak mempunyai arti apa-apa.
Contoh:
- SISTEM Informasi
- aaaaaiiiiieeeekkkkkk
- Algoritma / Pseudocode
- Perkalian 3 dengan 2 menghasilkan 6 (enam)
Batasan lain yang dispesifikasikan adalah jumlah huruf dalam letterstring tidak boleh melebihi 80 huruf, dan letterstring dengan 0 huruf (tanpa huruf) diperkenankan.
Berikut adalah spesifikasi formal dari tipe data abstrak letterstring.
- Elemen : Letterstring hanya boleh terdiri dari huruf ‘a’ sampai ‘z’, ‘A’ sampai ‘Z’ dan spasi.
- Struktur : Terdapat hubungan / struktur linier antara huruf-huruf.
- Domain : Hanya diperkenankan 0 – 80 huruf dalam letterstring.
- Operasi :
{operasi untuk mengambil 1 huruf yang paling kiri dari letterstring}
pre - Jumlah huruf dalam letterstring harus lebih dari 0.
post - leftletter berisi huruf paling kiri dari letterstring, dan jumlah huruf dalam letterstring akan berkurang 1.
Append (I:letter; var s:letterstring)
{operasi untuk menambahkan 1 huruf ke posisi paling kanan dari letterstring}
pre - Jumlah huruf dalam letterstring harus kurang dari 80.
post - leftletter bertambah 1 huruf pada posisi paling kanan.
empty (s:letterstring) : boolean
{operasi untuk mengecek apakah suatu string tidak berisi huruf (kosong)}
pre - tidak ada.
post - Jika letterstring tidak berisi huruf maka kondisi akan menghasilkan TRUE, selain itu FALSE.
full (s:letterstring) : boolean
{operasi untuk mengecek apakah suatu string sudah penuh}
pre - tidak ada.
post - Jika letterstring berisi 80 huruf maka kondisi akan menghasilkan TRUE, selain itu FALSE.
reverse (var s:letterstring)
{operasi untuk membalikan posisi huruf-huruf sehingga huruf pertama akan bertukar posisi dengan huruf terakhir dst}
pre - tidak ada.
post - Urutan dari huruf-huruf akan merupakan kebalikan dari posisi awalnya.
dst…
Selengkapnya silahkan klik disini
0 komentar:
Posting Komentar