Sunday, January 22, 2023

Struktur Data Queue

 

Flowchart Strutur Data Queue

Pengertian Queue

Queue adalah struktur data linier yang menerapkan prinsip operasi dimana elemen data yang masuk pertama akan keluar lebih dulu. Prinsip ini dikenal dengan istilah FIFO (First In, First Out).

Contoh nyata dalam kehidupan sehari-hari yang dapat menggambarkan struktur data queue adalah barisan orang yang menunggu untuk membeli tiket di gedung bioskop.

Orang yang baru datang akan bergabung dengan barisan dari ujung dan orang yang berdiri di depan akan menjadi yang pertama mendapatkan tiket dan meninggalkan barisan. Demikian pula dalam struktur data queue, data yang ditambahkan terlebih dahulu akan meninggalkan antrian terlebih dahulu.

Berikut ini adalah ilustrasi dari queue

Pada gambar di atas, karena elemen 1 ditambahkan ke antrian lebih dulu daripada 2, maka 1 adalah elemen yang pertama dihapus dari antrian. Hal ini mengikuti aturan operasi FIFO.

Dalam istilah pemrograman, menempatkan item dalam struktur data queue disebut enqueue, sedangkan operasi menghapus item dari queue disebut dequeue.

Kita dapat mengimplementasikan queue dalam bahasa pemrograman apa pun seperti C, C++, Java, Python atau C#, dengan spesifikasi yang hampir sama.

Jenis-jenis Queue

Secara umum ada 4 jenis struktur data queue, meliputi:

1. Simple Queue

Simple queue adalah struktur data queue paling dasar di mana penyisipan item dilakukan di simpul belakang (rear atau tail) dan penghapusan terjadi di simpul depan (front atau head).

Simple Queue

2. Circular Queue

Pada circular queue, simpul terakhir terhubung ke simpul pertama. Queue jenis ini juga dikenal sebagai Ring Buffer karena semua ujungnya terhubung ke ujung yang lain. Penyisipan terjadi di akhir antrian dan penghapusan di depan antrian.

Circular Queue

3. Priority Queue

Priority Queue adalah strruktur data queue dimana simpul akan memiliki beberapa prioritas yang telah ditentukan. Simpul dengan prioritas terbesar akan menjadi yang pertama dihapus dari antrian. Sedangkan penyisipan item terjadi sesuai urutan kedatangannya. 

Priority Queue

Aplikasi priority queue antara lain algoritma jalur terpendek Dijkstra, algoritma prim, dan teknik kompresi data seperti kode Huffman.

4. Double-Ended Queue (Dequeue)

Dalam double-ended queue (dequeue), operasi penyisipan dan penghapusan dapat terjadi di ujung depan dan belakang dari queue.

Double-Ended Queue (Dequeue)

Fungsi dan Kegunaan Queue

Berikut ini adalah beberapa fungsi queue yang paling umum dalam struktur data:

  • Queue banyak digunakan untuk menangani lalu lintas (traffic) situs web.
  • Membantu untuk mempertahankan playlist yang ada pada aplikasi media player
  • Queue digunakan dalam sistem operasi untuk menangani interupsi.
  • Membantu dalam melayani permintaan pada satu sumber daya bersama, seperti printer, penjadwalan tugas CPU, dll.
  • Digunakan dalam transfer data asinkronus misal pipeline, IO file, dan socket.


Kelebihan Queue

Kelebihan queue di antarnya:

  • Data dalam jumlah besar dapat dikelola secara efisien.
  • Operasi seperti penyisipan dan penghapusan dapat dilakukan dengan mudah karena mengikuti aturan masuk pertama keluar pertama.
  • Queue berguna ketika layanan tertentu digunakan oleh banyak konsumen.
  • Queue cepat untuk komunikasi antar-proses data.
  • Queue dapat digunakan dalam implementasi struktur data lainnya.

Kekurangan Queue

Kelemahan struktur data queue adalah sebagai berikut:

  • Operasi seperti penyisipan dan penghapusan elemen dari tengah cenderung banyak memakan waktu.
  • Dalam queue konvensional, elemen baru hanya dapat dimasukkan ketika elemen yang ada dihapus dari antrian.
  • Mencari elemen data pada struktur queue membutuhkan time complexity O(N).
  • Ukuran maksimum antrian harus ditentukan sebelumnya

flowchart queue program




Tuesday, January 17, 2023

CV Hasna Maulani Mukarom

Pemograman Struktur Data

 Pemograman Struktur Data

Struktur data mendapatkan peran bagian yang penting dan dapat menjadi wajib dipahami oleh para programmer. 

Hal ini dikarenakan struktur ini mampu memberikan kemudahan bagi pengguna dalam mengakses data yang dibutuhkan secara tepat dan cepat. Ditambah lagi, adanya struktur data yang mempunyai format khusus mampu memberikan kemudahan dalam mengatur, memproses, mengambil, dan menyimpan data.

Apa itu Struktur Data?

Struktur data yaitu cara menyimpan dan mengatur data dengan menyusunnya secara terstruktur pada sistem komputer atau database yang memudahkan dalam akses. Secara teknis, data yang berupa angka, huruf, simbol, dan lainnya ini ditempatkan pada kolom-kolom dan susunan tertentu. 

Dalam menyusun data, masih ada beberapa istilah yang harus Anda pahami, yaitu node dan indeks. Berikut mengenai penjelasan tentang kedua istilah tersebut.

  • Node, merupakan elemen yang berada pada struktur data. Setiap node mengandung pointer ke node selanjutnya.
  • Indeks, merupakan objek pada sistem database yang dapat mempercepat proses pencarian data. 

Struktur data bisa dapat digunakan sebagai pengelolaan database, melakukan kompres file, sampai mengolah data lainnya. Praktis, struktur ini menjadi hal yang perlu untuk dipelajari karena bisa membantu Anda dalam menyatukan berbagai elemen data yang lebih efektif. Ditambah lagi, struktur data juga dapat mempengaruhi ketepatan algoritma suatu program.

7 Tipe Struktur Data

Setelah mengetahui apa itu struktur data, selanjutnya Anda dapat mempelajari tujuh tipe struktur data yang dapat digunakan dalam menyimpan data di komputer. Berikut adalah penjelasan selengkapnya.

1. Array

struktur-data

Tipe Array memiliki kumpulan elemen yang berjarak saling berdekatan. Array bisa membantu seseorang dalam melakukan pencarian data secara acak dengan menggunakan indeksnya. 

Kapasitas elemen yang bisa dialokasikan pada tipe array ini bersifat statis. Jika Anda ingin menambahkan elemen baru ke array, maka Anda perlu membuat array baru dengan ukuran yang lebih besar. Sebaliknya, jika Anda ingin menghapus elemen tertentu, Anda perlu untuk membuat array baru dengan ukuran yang lebih kecil.

Selain itu, array juga memberikan peluang untuk Anda dalam menyimpan beberapa data dengan jenis yang sama pada satu nama. Tipe array biasa dapat digunakan dalam membangun struktur data, seperti vektor dan matriks.

Keunggulan tipe array:

  • Dapat digunakan untuk implementasi tipe lainnya, seperti queue dan stack.
  • Proses pencarian data dapat dilakukan lebih cepat.

Kekurangan tipe array:

  • Penambahan dan pengurangan data ini memerlukan waktu yang lebih lama karena tipe array dapat menampung data secara berurutan.

2. Linked List

struktur-data

Linked list merupakan struktur data yang terdiri dari urutan data linier yang dapat dihubungkan satu sama lain. Saat menggunakan tipe linked list, Anda perlu untuk mengakses data secara manual. Hal ini dikarenakan Anda tidak dapat mencari data dengan sistem acak.

Tipe linked list ini dipisahkan menjadi tiga jenis, yaitu singly linked listdoubly linked list, dan circular linked list. Ketiganya bisa dibedakan melalui proses traversal atau proses kunjungan ke setiap node pada satu waktu. 

Keunggulan tipe linked list:

  • Ukuran lebih dinamis.
  • Alokasi pada penggunaan memori dapat Anda sesuaikan dengan kebutuhan.
  • Penambahan atau pengurangan data menjadi lebih cepat.

Kekurangan tipe linked list:

  • Menghabiskan memori yang lebih besar.
  • Tidak dapat kembali ke node sebelumnya (reverse traversal), kecuali pada jenis doubly linked list.
  • Proses traversal menjadi lebih panjang karena tidak langsung dapat mengakses data dengan indeks.

3. Stack

struktur-data

Stack merupakan tipe struktur data yang linier dan mengikuti urutan yang tertentu. Urutan tersebut yang digunakan yaitu LIFO (Last In First Out) atau FILO (First In Last Out). Kedua istilah tersebut memiliki sama, yaitu data yang terakhir masuk akan menjadi data yang keluar pada pertama kali. 

Sebaliknya, data yang pertama masuk bisa menjadi data yang keluar terakhir.

Keunggulan tipe stack:

  • Bisa mengelola data yang lebih efisien.
  • Dapat membersihkan objek dengan cara otomatis.
  • Bisa mengatur memori secara lebih mandiri.

Kekurangan tipe stack:

  • Kapasitas memori yang tersedia sangat terbatas.
  • Memiliki potensi terjadi overflow saat jumlah objek terlalu banyak.
  • Tidak bisa mengakses data secara acak.

4. Queue

struktur-data

Queue yaitu tipe struktur data linear yang dapat mengikuti urutan tertentu, yaitu FIFO (First In First Out). Jadi, data yang masuk pertama kali merupakan data yang pertama kali diambil. 

Gambaran sederhana yang menjabarkan tipe ini adalah ketika orang yang sedang mengantri.  Siapa yang datang pertama, orang itulah yang akan dilayani terlebih dulu.

Keunggulan tipe queue:

  • Data yang masuk dapat dilayani sesuai urutannya.
  • Proses antrian data menjadi lebih cepat dan optimal.
  • Menghandle beberapa tipe data sekaligus.

Kekurangan tipe queue:

  • Ketika waktu pelayanan habis, maka data yang terakhir masuk tidak dapat dilayani.
  • Proses yang rumit ketika perlu dalam menambah atau menghapus elemen dari tengah.
  • Membutuhkan waktu yang lama saat mencari antrian.

5. Tree

struktur-data

Tree merupakan tipe struktur data yang mempunyai bentuk seperti pohon. Tipe tree efisien dalam menyimpan data secara hierarkis dikarenakan dapat disusun dalam berbagai level. Jadi, tipe ini sering dianggap sebagai kumpulan node yang saling dihubungkan.

Setiap node dapat berisi beberapa data atau link yang bersumber pada node lainnya. Beberapa istilah yang ada pada tipe tree yaitu:

  • Root: node terdapat pada tingkat paling atas..
  • Child node: Turunan pada setiap node.
  • Parent node: node yang mengandung sub-node.
  • Siblings: node yang bersumber dari parent node yang sama.
  • Leaf node: node yang tidak mempunyai turunan lagi. 

Keunggulan tipe tree:

  • Proses mencari data dapat dilakukan dengan cepat.

Kekurangan tipe tree:

  • Membutuhkan waktu yang lebih lama saat memasukkan data dikarenakan harus menyesuaikan dengan urutan nilainya.

6. Graph

struktur-data

Graph merupakan tipe yang mengandung beberapa node yang saling terhubung. Node pada tipe graph juga dikenal sebagai simpul. Jadi, setiap garis dapat saling menghubungkan dua simpul. Biasanya tipe ini diperlukan sebagai cara dalam menunjukkan jaringan tertentu. Misalnya seperti jaringan telepon.

Tipe graph ini dibedakan dua jenis jenis, yaitu directed graph dan undirected graph.  Directed graph yaitu setiap garis dapat terhubung ke semua simpul. Sedangkan undirected graph yaitu tidak semua simpul akan terhubung dengan garis. Jika sebuah simpul tidak dapat terhubung dengan simpul lainnya, maka disebut dengan isolated vertex. 

Keunggulan tipe graph:

  • Bisa membantu memeriksa hubungan antar node dengan cepat.
  • Cocok digunakan dalam bentuk grafik yang tidak mengandung banyak node.

Kekurangan tipe graph:

  • Membutuhkan waktu lama dalam memodifikasi data.

7. Hash Table

struktur-data

Hash table merupakan tipe yang digunakan dalam menyimpan data secara asosiatif. Tipe ini dapat menyimpan data dalam bentuk array. Hal ini memungkinkan Anda dalam mengakses data secara lebih cepat karena cukup menggunakan indeksnya saja.

Operasi utama yang dapat digunakan dalam hash table yaitu search (untuk mencari elemen), insert (untuk menyisipkan elemen), dan delete (untuk menghapus elemen). Contoh penggunaan tipe hash table yaitu untuk mencari data nama dan nomor telepon.

Keunggulan tipe hash table:

  • Dibandingkan dengan tipe lainnya, kadang penggunaan hash table lebih efisien dalam mencari data sehingga sering dipakai pada software untuk pengindeksan basis data.
  • Mudah dalam melakukan sinkronisasi.

Kekurangan tipe hash table:

  • Kemungkinan bentrokan data (collision) menjadi sangat besar sehingga menjadi tidak efisien.

Kesimpulan

Nah, kini Anda telah mengetahui apa itu struktur data. Selanjutnya Anda dapat coba untuk belajar pemrograman maupun membaca beberapa buku pemrograman dan menerapkannya.

Semoga bermanfaat 

Sunday, December 25, 2022

Tutorial Pemrograman Algoritma

 




Kode acara Bahasa C Menghitung diskon rabat Harga

Latihan kode program bahasa C kali ini akan membahas cara membuat serta menghitung bonus potongan harga. Soal ini umumnya digunakan buat menguji pemahaman seputar konsep variabel, operator perbandingan, dan syarat if else.

Tips menghasilkan Kode program bonus rabat Harga

karena ada beberapa syarat, kode program ini butuh struktur if else. Setiap syarat punya syarat campuran, sebagai akibatnya pula harus paham operator perbandingan dan operator akal pada bahasa C. Terakhir, butuh sedikit operasi aritmatika buat menghitung bonus serta total jumlah akhir yang wajib dibayar.

Soal diskon potongan Harga

Buatlah program yg meminta data inputan berupa total belanja. acara lalu menghitung berapa bonus yg mampu diperoleh menggunakan ketentuan menjadi berikut:


Bila total belanja kurang asal Rp. 100.000, tidak mendapat bonus.

Bila total belanja antara Rp. 100.000 – Rp. 500.000, mendapat diskon 10%.

Bila total belanja antara Rp. 500.000 – Rp. 1.000.000, mendapat bonus 20%.

Bila total belanja diatas Rp.1.000.000, menerima bonus 30%.

Kode program kemudian menampilkan harga yang harus dibayar sesudah dikurangi bonus.


Berikut model tampilan akhir yang diinginkan (1) :

## program Bahasa C diskon potongan Harga ##

============================================


Total Belanja: Rp.150000

Selamat, anda menerima bonus 10%

Total bayar: Rp.135000

Berikut contoh tampilan akhir yg diinginkan (dua) :


## acara Bahasa C bonus potongan Harga ##

============================================


Total Belanja: Rp.950000

Selamat, anda mendapat diskon 20%

Total bayar: Rp.760000

Berikut contoh tampilan akhir yg diinginkan (3) :


## acara Bahasa C diskon rabat Harga ##

============================================


Total Belanja: Rp.2545000

Selamat, anda menerima bonus 30%

Total bayar: Rp.1781500

Berikut contoh tampilan akhir yg diinginkan (4) :


## program Bahasa C bonus rabat Harga ##

============================================


Total Belanja: Rp.10000

Total bayar: Rp.10000

Kode Pemograman :

#include <stdio.h>
 
int main(void)
{
  printf("## Program Bahasa C Diskon Potongan Harga ## \n");
  printf("============================================ \n\n");
 
  int total_belanja, harga_akhir;
 
  printf("Total Belanja: Rp.");
  scanf("%d",&total_belanja);
 
  if ((total_belanja >= 100000) && (total_belanja < 500000)) {
    harga_akhir = total_belanja - (0.1*total_belanja);
    printf("Selamat, anda mendapat diskon 10%% \n");
  }
  else if ((total_belanja >= 500000) && (total_belanja < 1000000)) {
    harga_akhir = total_belanja - (0.2*total_belanja);
    printf("Selamat, anda mendapat diskon 20%% \n");
  }
  else if (total_belanja >= 1000000) {
    harga_akhir = total_belanja - (0.3*total_belanja);
    printf("Selamat, anda mendapat diskon 30%% \n");
  }
  else {
    harga_akhir = total_belanja;
  }
 
  printf("Total bayar: Rp.%d \n",harga_akhir);
 
  return 0;
}

Ini adalah screenshots an dari program yg ada di atas :

   
Input

                 
Output
               

 

Dengan membaca blog ini, diharapkan para pembaca dapat mengembangkan pengetahuan, pemahaman, dan kemampuan dalam bidang komputer.

Demikian kalimat penutup dari saya apabila ada kesalahan dalam penulisan mohon dimaklumi.

Sunday, December 18, 2022

Ringkasan Algoritma Dan Struktur Data

 


 

Pengertian Struktur Data

Struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.Dengan kata lain struktur data adalah sebuah skema organisasi, seperti variabel dan array dan lain-lain, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada data tersebut.

 Tipe Data dalam bidang informatika tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer.

 Tipe dasar atau tipe data sederhana atau biasa juga disebut dengan tipe data primitif adalah tipe data yang sudah ada dan dijadikan standar dalam bahasa pemrograman tertentu.

1.       Integer (Bilangan Bulat)

2.       Float atau double (Bilangan Real)

3.       Char (Karakter)

4.       Boolean (logika)

 Tipe data bentukan Tipe data yang dibentuk dari tipe data dasar dengan maksud mempermudah pekerjaan programer.

 Tipe data abstrak (Abstract Data Type)Model matematika dari obyek data yang menyempurnakan tipe data dengan cara mengaitkannya dengan fungsi-fungsi yang beroperasi pada data yang bersangkutan

 Konstanta dan Variabel Suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu didalam proses program.

 Array Suatu alokasi beberapa tempat di memori yang tersimpan secara berurutan yang digunakan untuk menyimpan beberapa nilai dengan tipe data yang homogeny.

 Stack Sekumpulan data yang strukturnya menyerupai tumpukan. Stack harus diberi nama sebagai identifikasi.

 Queue Suatu kumpulan data dengan operasi pemasukan atau penyimpanan data hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (rear) dan operasi pengambilan atau penghapusan hanya diperbolehkan pada sisi lainnya yang disebut sisi depan (front).

 Tree Salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarki (hubungan one to many) antara elemen-elemen.

 Graph Dalam bidang matematika dan ilmu komputer, graph adalah struktur yang menggambarkan relasi antar obyek dari sebuah koleksi obyek.

Struktur Data Queue

  Flowchart Strutur Data Queue Pengertian Queue Queue adalah  struktur data  linier yang menerapkan prinsip operasi dimana elemen data yang ...