BERPIKIR KOMPUTASI
A. STRUKTUR DATA
Struktur data adalah cara menyimpan, mengambil, dan menyusun data. Struktur data memungkinkan data yang ada di komputer lebih mudah diakses dan diperbarui.Fondasi setiap program komputer adalah data dan algoritma. Dengan algoritma, program komputer dapat menggunakan data secara efektif. Sementara struktur data ibarat kontainer yang menyimpan banyak data dengan layout tertentu. Tiap jenis struktur data memiliki layout masing-masing.
Karena memori komputer terbatas, tata letak (tata letak) data harus diatur dengan baik. Oleh karena itu, penyimpanan data memerlukan “formasi” khusus agar data lebih cepat dan tidak menghabiskan banyak memori.
Dua struktur lain yang di gunakan dalam bidang informatika yaitu
1. Tree
Tree dalam bahasa inggris diartikan Pohon. Dalam Struktur Data Konsep Tree mirip seperti pohon yaitu kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layaknya struktur sebuah pohon. Struktur Tree adalah suatu cara merepresentasikan suatu struktur hirarki ( one — to many ) secara grafis yang mirip sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan — node — node dari atas ke bawah. Konsep Tree Di seuah struktur data yang tidak linier yang menggambarkan hubungan yang hirarkis ( one to many ) dan tidak linier antara elemen — elemennya. Di struktur Data Konsep Tree terbagi menjadi 2 yaitu :
1. Tree Statik
Tree Statik adalah konsep struktur pohon yang isi node — nodenya tetap karena bentuk pohonnya sudah ditentukan.
2. Tree Dinamik
Tree Dinamik adalah konsep struktur pohon yang isi nodenya berubah — ubah karena proses penambahan ( insert ) dan pengurangan / penghapusan ( delete )
Jenis-jenis Tree
Struktur data tree dapat diklasifikasikan ke dalam 4 jenis, yaitu: General tree, Binary tree, Balanced tree, dan Binary search tree.
1. General tree
Struktur data tree yang tidak memiliki batasan jumlah node pada hierarki tree disebut General tree. Setiap simpul atau node bebas memiliki berapapun child node. Tree jenis adalah superset dari semua jenis tree.
2. Binary tree
Binary tree adalah jenis tree yang simpulnya hanya dapat memiliki paling banyak 2 simpul anak (child node). Kedua simpul tersebut biasa disebut simpul kiri (left node) dan simpul kanan (right node). Tree tipe ini lebih populer daripada jenis lainnya.
3. Balanced tree
Apabila tinggi dari subtree sebelah kiri dan subtree sebelah kanan sama atau kalaupun berbeda hanya berbeda 1, maka disebut sebagai balanced tree.
4. Binary search tree
Sesuai dengan namanya, Binary search tree digunakan untuk berbagai algoritma pencarian dan pengurutan. Contohnya seperti AVL tree dan Red-black tree. Struktur data tree jenis ini memiliki nilai pada simpul sebelah kiri lebih kecil daripada induknya. Sedangkan nilai simpul sebelah kanan lebih besar dari induknya.
Fungsi dan Kegunaan Tree
Berikut adalah fungsi dan kegunaan dari struktur data tree
- Dalam kehidupan nyata, struktur data tree membantu dalam pengembangan game.
- Membantu pengindeksan pada database.
- Decision Tree adalah tools yang biasanya digunakan dalam analisis keputusan. Metode ini memiliki struktur seperti diagram alur yang membantu untuk memahami data.
- Domain Name Server juga menggunakan struktur data tree.
- Kasus penggunaan tree yang paling umum adalah situs jejaring sosial, seperti Facebook, Instagram, Twitt
2. Graph
Graph adalah jenis struktur data umum yang susunan datanya tidak berdekatan satu sama lain (non-linier). Graph terdiri dari kumpulan simpul berhingga untuk menyimpan data dan antara dua buah simpul terdapat hubungan saling keterkaitan.
Simpul pada graph disebut dengan verteks (V), sedangkan sisi yang menghubungkan antar verteks disebut edge (E). Pasangan (x,y) disebut sebagai edge, yang menyatakan bahwa simpul x terhubung ke simpul y.
Jenis-jenis Graph
Graph dapat dibedakan berdasarkan arah jelajahnya dan ada tidaknya label bobot pada relasinya.
Berdasarkan arah jelajahnya graph dibagi menjadi Undirected graph dan Directed graph
Undirected graph
Pada undirected graph, simpul-simpulnya terhubung dengan edge yang sifatnya dua arah. Misalnya kita punya simpul 1 dan 2 yang saling terhubung, kita bisa menjelajah dari simpul 1 ke simpul 2, begitu juga sebaliknya.
Directed Graph
Kebalikan dari undirected graph, pada graph jenis ini simpul-simpulnya terhubung oleh edge yang hanya bisa melakukan jelajah satu arah pada simpul yang ditunjuk. Sebagai contoh jika ada simpul A yang terhubung ke simpul B, namun arah panahnya menuju simpul B, maka kita hanya bisa melakukan jelajah (traversing) dari simpul A ke simpul B, dan tidak berlaku sebaliknya.
Selain arah jelajahnya, graph dapat dibagi menjadi 2 berdasarkan ada tidaknya label bobot pada koneksinya, yaitu weighted graph dan unweighted graph.
Weighted Graph
Weighted graph adalah jenis graph yang cabangnya diberi label bobot berupa bilangan numerik. Pemberian label bobot pada edge biasanya digunakan untuk memudahkan algoritma dalam menyelesaikan masalah.
Contoh implementasinya misalkan kita ingin menyelesaikan masalah dalam mencari rute terpendek dari lokasi A ke lokasi D, namun kita juga dituntut untuk mempertimbangkan kepadatan lalu lintas, panjang jalan dll. Untuk masalah seperti ini, kita bisa mengasosiasikan sebuah edge e
dengan bobot w(e)
berupa bilangan ril.
Nilai bobot ini bisa apa saja yang relevan untuk masalah yang dihadapi: misalnya jarak, kepadatan, durasi, biaya, probabilitas, dan sebagainya.
Unweighted Graph
Berbeda dengan jenis sebelumnya, unweighted graph tidak memiliki properti bobot pada koneksinya. Graph ini hanya mempertimbangkan apakah dua node saling terhubung atau tidak.
Fungsi dan Kegunaan Graph
- Graph digunakan untuk merepresentasikan aliran komputasi.
- Digunakan dalam pemodelan grafik.
- Graph dipakai pada sistem operasi untuk alokasi sumber daya.
- Google maps menggunakan graph untuk menemukan rute terpendek.
- Graph digunakan dalam sistem penerbangan untuk optimasi rute yang efektif.
- Pada state-transition diagram, graph digunakan untuk mewakili state dan transisinya.
- Di sirkuit, graph dapat digunakan untuk mewakili titik sirkuit sebagai node dan kabel sebagai edge.
- Graph digunakan dalam memecahkan teka-teki dengan hanya satu solusi, seperti labirin.
- Graph digunakan dalam jaringan komputer untuk aplikasi Peer to peer (P2P).
- Umumnya graph dalam bentuk DAG (Directed acyclic graph) digunakan sebagai alternatif blockchain untuk cryptocurrency. Misalnya crypto seperti IOTA
Kamus Besar Bahasa Indonesia (KBBI) mencatat pengertian algoritma sebagai prosedur sistematis untuk menyelesaikan masalah matematika dalam langkah yang terbatas. Dalam konteks matematika, algoritma merupakan urutan pengambilan keputusan yang logis untuk memecahkan masalah.
Singkatnya, algoritma merupakan urutan langkah yang sistematis untuk menyelesaikan suatu masalah, khususnya pada komputer. Algoritma digunakan untuk penghitungan dan pengolahan data pada komputer menggunakan software tertentu.
Karakteristik Algoritma
- Keterbatasan (finiteness): algoritma harus berhenti setelah menyelesaikan sejumlah langkah yang terbatas dan mencapai tujuan akhirnya. Program yang tidak pernah berhenti dan terus berjalan tidak memiliki algoritma yang benar.
- Kepastian (definiteness): setiap proses dalam algoritma harus didefinisikan dengan jelas dan tidak ambigu untuk memastikan tidak ada kesalahan dalam menghasilkan output.
- Masukan (input): masalah yang ingin diketahui solusinya. Algoritma bisa terdiri dari memiliki satu atau lebih input yang akan diproses.
- Keluaran (output): satu atau lebih nilai keluaran yang dihasilkan sebagai solusi dari masalah atau input tersebut. Output bisa berupa pesan atau kuantitas yang berhubungan dengan input.
- Keefektifan (effectiveness): Setiap langkah dalam algoritma harus sederhana sehingga bisa diimplementasikan dalam waktu yang tepat
Donald E. Knuth, seorang ahli teori komputer, menjelaskan bahwa algoritma harus memiliki lima karakteristik yang saling berkaitan. Ada lima karakteristik yang harus dipenuhi dalam pembuatan algoritma, yaitu:
Jenis-jenis Algoritma
Algoritma sendiri dibagi ke dalam beberapa jenis. Yuk, kita lihat jenis-jenis algoritma yang kami lansir dari Nesaba Media.
1. Algoritma Rekursif
Algoritma rekursif adalah jenis algoritma yang akan melakukan perulangan sendiri hingga masalahnya terpecahkan. Selain itu, algoritma akan memanggil dirinya sendiri berulang kali hingga masalahnya terpecahkan.
2. Algoritma Divide and Conquer
Algoritma Divide and Conquer merupakan salah satu jenis algoritma yang membagi suatu masalah menjadi beberapa bagian. Langkah-langkah algoritma membagi dan menaklukkan antara lain membagi masalah menjadi bagian-bagian yang sama dan kemudian mencari solusi utama setelah diperoleh solusi untuk sub-bagiannya.
3. Algoritma Dynamic Programming
Algoritma pemrograman dinamis (Algoritma dynamic programming) merupakan algoritma yang bekerja dengan cara mencari solusi dari setiap bagian terkecil dari suatu permasalahan, hasilnya akan disimpan untuk menyelesaikan permasalahan baru di masa yang akan datang.
4. Algoritma Greedy
Algoritma greedy merupakan algoritma yang digunakan untuk mencari permasalahan optimasi. Cara kerja algoritma ini adalah mencari solusi optimal lokal apapun konsekuensi yang diterimanya, sehingga dapat ditemukan solusi optimal global.
5. Algoritma Brute Force
Algoritma brute force ini merupakan jenis algoritma dengan konsep yang paling sederhana. Algoritma ini menggunakan iterasi dari setiap solusi yang ditemukan untuk menemukan solusi yang paling sesuai dengan permasalahan yang ada.
Langkah-Langkah Mendesain Algoritma
Desain algoritma adalah proses penting dalam pengembangan perangkat lunak (software). Namun, masih banyak pemrogram yang mengabaikan proses ini padahal berguna dalam pemecahan masalah. Berikut langkah yang harus dilakukan untuk menghasilkan algoritma yang bekerja optimal.
1. Memahami Masalah yang Ingin Diselesaikan
Pertama, kamu harus memahami masalah yang ingin diselesaikan dengan algoritma. Pemahaman yang baik tentang suatu masalah akan membantu kamu dalam mencari solusi yang tepat. Untuk memahami masalah, kamu harus mengumpulkan informasi yang cukup tentang masalah tersebut dan membuat beberapa pertanyaan yang relevan.
2. Menganalisis Kompleksitas Masalah
Setelah memahami masalah, kamu juga harus menganalisis kompleksitas masalah. Analisis ini akan membantu kamu dalam menentukan jenis algoritma yang tepat untuk digunakan. Kompleksitas masalah dapat dianalisis menggunakan pertimbangan jumlah data, waktu eksekusi, dan ruang yang dibutuhkan oleh algoritma.
3. Membuat Pseudocode
Pseudocode merupakan deskripsi umum tentang cara kerja algoritma tanpa harus terikat bahasa pemrograman tertentu. Pseudocode berguna untuk mengembangkan kode program yang lebih baik dan lebih mudah dibaca oleh sistem komputer.
4. Menerjemahkan Pseudocode ke dalam Kode Program
Terakhir, kamu akan menerjemahkan pseudocode ke dalam kode program. Proses ini mencakup penulisan kode program dalam bahasa pemrograman tertentu, contohnya Java atau C+. Saat menuliskan kode program, kamu harus memperhatikan masalah kompleksitas, struktur kode yang jelas dan mudah dibaca, dan menghindari kesalahan pemrograman yang umum.
C. EKSPRESI DAN OPERASI LOGIKA
Ekspresi Logika(Logical Expression), Adalah Proposisi Yang Di Bangun Dengan Variabel Logika Yang Berasal Dari Pernyataan Atau Argumen
Operasi logika adalah operator kondisional dimana kedua variabel dibandingan, jika salah satu variabel bernilai benar maka output dari kondisional tersebut bernilai TRUE, jika nilai kedua dari variabel bernilai salah maka output dari kondisional tersebut bernilai FALSE
D. FLOWCHART
Flowchart adalah alat visual yang digunakan untuk merepresentasikan alur kerja atau proses dalam bentuk diagram. Dalam dunia pemrograman dan sistem, flowchart digunakan untuk merencanakan, menganalisis, dan memahami langkah-langkah yang diperlukan dalam menyelesaikan suatu tugas atau masalah.
Simbol Flowchart dan Fungsinya
Simbol-simbol dalam flowchart memiliki makna dan fungsi tertentu yang membantu dalam pemahaman alur kerja. Beberapa simbol dasar flowchart meliputi:
1. Simbol Awal (Mulai/Akhir):
Simbol ini menandakan awal dan akhir dari suatu proses atau algoritma. Biasanya direpresentasikan dengan bentuk oval atau persegi panjang dengan tepi melengkung.
2. Simbol Proses:
Simbol ini digunakan untuk menunjukkan langkah-langkah atau tindakan yang harus dilakukan dalam proses. Umumnya direpresentasikan dengan bentuk persegi panjang.
3. Simbol Keputusan (Keputusan):
Simbol ini menunjukkan titik keputusan dalam alur kerja yang memerlukan pilihan ya atau tidak. Biasanya direpresentasikan dengan bentuk berlian.
4. Simbol Input/Output:
Simbol ini digunakan untuk menunjukkan input atau output data dalam proses. Biasanya direpresentasikan dengan bentuk paralelogram.
5. Simbol Penghubung (Konektor):
Simbol ini digunakan untuk menghubungkan bagian-bagian flowchart yang terpisah. Biasanya direpresentasikan dengan garis lurus atau panah
Jenis flowchart
Flowchart sendiri terdiri dari lima jenis, masing-masing jenis memiliki karakteristik dalam penggunaanya. Berikut adalah jenis-jenisnya:
Flowchart dokumen
Pertama ada flowchart dokumen (document flowchart) atau bisa juga disebut dengan paperwork flowchart. Flowchart dokumen berfungsi untuk menelusuri alur form dari satu bagian ke bagian yang lain, termasuk bagaimana laporan diproses, dicatat, dan disimpan.Flowchart program
Selanjutnya kita akan membahas flowchart program. Flowchart ini menggambarkan secara rinci prosedur dari proses program. Flowchart program terdiri dari dua macam, antara lain: flowchart logika program (program logic flowchart) dan flowchart program komputer terinci (detailed computer program flowchart).Flowchart proses
Flowchart proses adalah cara penggambaran rekayasa industrial dengan cara merinci dan menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem.Flowchart sistem
Yang keempat ada flowchart sistem. Flowchart sistem adalah flowchart yang menampilkan tahapan atau proses kerja yang sedang berlangsung di dalam sistem secara menyeluruh. Selain itu flowchart sistem juga menguraikan urutan dari setiap prosedur yang ada di dalam sistem.Flowchart skematik
Terakhir ada flowchart skematik. Flowchart ini menampilkan alur prosedur suatu sistem, hampir sama dengan flowchart sistem. Namun, ada perbedaan dalam penggunaan simbol-simbol dalam menggambarkan alur. Selain simbol-simbol, flowchart skematik juga menggunakan gambar-gambar komputer serta peralatan lainnya untuk mempermudah dalam pembacaan flowchart untuk orang awam.
Simbol flowchart
Pada dasarnya simbol-simbol dalam flowchart memiliki arti yang berbeda-beda. Berikut adalah simbol-simbol yang sering digunakan dalam proses pembuatan flowchart.
Simbol-simbol di atas memiliki jenis dan fungsi yang berbeda-beda. Ada yang berfungsi untuk menghubungkan satu simbol dengan simbol lainnya seperti simbol flow, on-page dan off-page reference. Selain itu ada juga simbol yang berfungsi untuk menunjukan suatu proses yang sedang berjalan, dan yang terakhir terdapat simbol yang berfungsi untuk memasukan input dan menampilkan output
Komentar
Posting Komentar