ISI 1 Open Source Open source adalah software yang membuka membebaskan source codenya untuk dilihat orang lain dan membiarkan orang lain mengetahui cara kerja software tersebut. Orang lain juga bisa memperbaiki kelemahan yang ada pada software tersebut. Dan salah satu keunggulannya adalah bahwa Open source dapat diperoleh dan digunakan secara gratis tanpa perlu membayar lisensi. Salah satu open source software yang terkenal yaitu Linux. Mozilla Firefox, WordPress dan masih banyak lagi. 2 Freeware Freeware adalah suatu software atau aplikasi yang dapat digunakan oleh semua orang tanpa membayar. 3 GPL( General Public License) GPL yaitu sebuah lembaga yang menangani suatu perlindungan terhadap software yang bersifat Open Source. Bisa juga dikatakan GPL adalah lembaga yang melindungi HAKI (Hak Atas Kekayaan Intelektual) dari pembuat software. GPL didirikan oleh FSF (Free Software Foundation ) yang merupakan suatu lembaga yang menyediakan wadah/tempat bagi para programmer handal yang membuat software yang bersifat Free dan Open Source. Dalam perjanjian GPL ini seseorang boleh mengkopi software tersebut, mengubah, memodifikasi, dan mendistribusikan kembali software tersebut dengan syarat bahwa nama penulis pertama dari program CMS adalah suatu sistem yang di gunakan untuk mempermudah dalam memfasilitasi pembuatan, pengelolaan, pembaharuan, dan publikasi content pada sebuah situs website ataupun blog. Dengan adanya content management system (cms) yang terintegrasi pada suatu website atau blog, seseorang dalam melakukan pengelolaan situs yang dinamis beserta isi data content nya yang berupa informasi dalam bentuk teks, grafik, images, video maupun dalam format lainnya semakin di permudah bahkan untuk orang awan sekalipun dapat mengelolah suatu website ataupun blog beserta isi content nya dengan sangat cepat dan mudah tanpa harus mempunyai keahlian khusus tentang bahasa programming HTML, PHP, dan lainnya. 5 Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Sistem kerja komputer yang terdiri dari brainware, hardware, dan software. Tanpa salah satu dari ketiga sistem tersebut, komputer tidak akan berguna. Software terbangun atas susunan program dan syntax (cara penulisan/pembuatan program). Untuk menyusun program atau syntax, diperlukannya langkah-langkah yang sistematis dan logis untuk dapat menyelesaikan masalah atau tujuan dalam proses pembuatan suatu software. Maka,Algoritma berperan penting dalam penyusunan program atau syntax tersebut,selain untuk komputer algoritma juga sering digunakan dalam kehidupan sehari-hari misalnya langkah-langkah membuat kue bolu,langkah-langkah mendapatkan IPK 4 dan lain sebagainya. 5.1 Algoritma Pencarian (searching) Pencarian adalah langkah –langka untuk menemukan nilai(data) tertentu didalam sekumpulan data yang bertipe sama.Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful). · Macam-macam Algoritma Pencarian (Searching) 5.1.1 Pencarian sekuensial (Sequential searching) · Pencarian Sekuensial (sequential searching) atau pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling sederhana. Contoh kode algoritma pencarian menggunakan Dev C++: #include <stdio.h> #include <stdlib.h> main(){ int data[10] = {1,2,3,4,5,6,7,8,9,10}; int cari; int flag=0; printf("masukkan data yang ingin dicari = "); scanf("%d",&cari); for(int i=0;i<8;i++){ if(data[i] == cari) flag=1; } if(flag==1) printf("Data ada\n"); else printf("Data tidak ada\n"); system("PAUSE"); return(0); } Tampilan program :
Catatan :Kode program diatas digunakan untuk mencari angka/ bilangan yang diinginkan oleh user dengan kondisi jika angka yang dicari lebih dari 0 dan kurang dari 9 maka di program akan tampil “Data ada” ,jika angka yang dicari kurang dari satu atau lebih dari 8 maka di program akan tampil”Data tidak ada”. Dari program diatas, terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array data satu persatu berdasarkan indeksnya. · Program menggunakan sebuah variabel flag yang berguna untuk menadai ada atau tidaknya data yang dicari dalam array data. Hanya bernilai 0 atau 1. · Flag pertama kali diinisialiasasi dengan nilai 0. · Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0. · Semua elemen array data akan dibandingkan satu persatu dengan data yang dicari dan diinputkan oleh user. 5.1.2 Pencarian Beruntun dengan Sentinel Jika pencarian bertujuan untuk menambahkan elemen baru setelah elemen terakhir larik, maka terdapat sebuah varian dari metode pencarian beruntun yang mangkus. Nilai x yang akan dicari sengaja ditambahkan terlebih dahulu. Data yang ditambahkan setelah elemen terakhir larik ini disebut sentinel. o Algoritma Procedure SeqSearchWithSentinel(input L: LarikInt, input n: integer, input x: integer, output idx: integer) DEKLARASI I: integer ALGORITMA L[n+1] ← X {sentinel} I ← 1 While (L[i] ≠ x) do I ← i+1 Endwhile If idx = n+1 then idx ← -1 else idx ← 1 endif · Contoh program #include <stdio.h> #include <conio.h> void main(){ int data[7] = {3,12,9,-4,21,6}; int cari,i; printf("masukkan data yang ingin dicari = "); scanf("%d",&cari); data[6] = cari; i=0; while(data[i] != cari) i++; if(i<6) printf("Data ada!\n"); else printf("Data tidak ada!\n"); getch; return 1; } 5.1.3 Pencarian Biner (binary search) Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. Data yang disimpan di dalam larik harus sudah terurut. BST adalah binary tree yang mana data di dalamnya tersusun sedemikian rupa sehingga pada setiap subtree di dalamnya berlaku: setiap data di subtree kiri < data root subtree < setiap data di subtree kanan. o Algoritma class BinaryNode { void printInOrder( ) { if( left != null ) left.printInOrder( ); // Left System.out.println( element ); // Node if( right != null ) right.printInOrder( ); // Right } } class BinaryTree { public void printInOrder( ) { if( root != null ) root.printInOrder( ); } } Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
Algoritma pencarian biner dapat dituliskan sebagai berikut :
Contoh program int binary_search(int cari){ int l,r,m; l = 0; r = n-1; int ktm = 0; while(l<=r && ktm==0){ m = (l+r)/2; if(data[m] == cari) ktm=1; else if (cari < data[m]) r=m-1; else l=m+1; { if(ktm==1) return 1; else return 0; } } } 5.2 Algoritma Sorting · Macam-macam Algoritma Pengurutan (Sorting) 5.2.1 Bouble Sort Proses yang terjadi pada pengurutan dengan metode Bubble sort adalah selalu membandingkan dua data yang berdekatan. Apabila data yang berada disebelah kanannya bernolai lebih kecil, maka ditukarkan sampai semua data terurut sehingga memunculkan data terbesar diposisi paling akhir. Berikut ini ilustrasi dari bubble sort.
Dan berikut ini contoh pengimplementasian metode bubble sort dalam bentuk program.
#include <stdio.h> int main() { int array[100000], n, i, j, swap; printf("Berapa Data Yang Diinginkan? "); scanf("%d", &n); for (i = 0; i < n; i++) { printf("Data ke %d : ",i+1); scanf("%d", &array[i]); } for (i = 0 ; i < ( n - 1 ); i++) { for (j = 0 ; j < n - i - 1; j++) { if (array[j] > array[j+1]) { swap = array[j]; array[j] = array[j+1]; array[j+1] = swap; } } } printf("Data Setelah diurutkan:n"); for ( i = 0 ; i < n ; i++ ) { printf("%d\n", array[i]); } return 0; } Ketika dijalanakan anda akan dimintai mengisi berapa data yang diinginkan, kemudian isi data tersebut persatu, program diatas dirancang untuk menerima 100000 inputan data/bilangan. 5.2.2 Selection Sort adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar. Proses pengurutan menggunakan metode selection sort secara terurut nik adalah sebagai berikut:
#include <stdio.h> int main() { int data[100], n, i, j, position, swap; printf("Masukkan Jumlah data : "); scanf("%d", &n); printf("nMasukkan %d datan", n); for ( i=0 ; i<n ; i++ ) { printf("Data ke %d : ", i+1); scanf("%d", &data[i]); } for ( i=0 ; i<(n-1) ; i++ ) { position=i; for (j=i+1; j<n ; j++) { if ( data[position] > data[j] ) position=j; } if ( position != i ) { swap = data[i]; data[i] = data[position]; data[position] = swap; } } printf("Data setelah diurutkan:n"); for ( i=0 ; i<n ; i++ ) { printf("%dt", data[i]); } return 0; } 5.2.3.Insertion Sort Proses yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort adalah dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai. Data pada posisi pertama diandaikan memang sudah pada tempatnya. Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Agar lebih mudah dalam memahaminya silahkan perhatikan ilustrasi gambar berikut ini:
Contoh program #include <stdio.h> #include <stdlib.h> int main() { int n, data[1000], i, j, t; printf("Masukkan Jumlah data : "); scanf("%d", &n); for (i = 0; i < n; i++) { data[i]=rand() % 100000 + 1; } for (i = 1 ; i <= n - 1; i++) { j = i; while ( j > 0 && data[j] < data[j-1]) { t = data[j]; data[j] = data[j-1]; data[j-1] = t; j--; } } printf("Data setelah diurutkan:n"); for (i = 0; i <= n - 1; i++) { printf("%dt", data[i]); } return 0; } Konsep dari program diatas, pengguna akan diminta memasukkan jumlah data yang ingin dirandom sebanyak n buah bilangan. Kebetulan ceritanya diatas saya memasukan nilai 27, yang berarti akan dirandom data sebanyak 27 angka dari angka 1 - dengan n. setelah dirandom, data/angka tersebut disimpan dalam sebuah array. pada contoh diatas, bilangan yang sudah dirandom disimpan pada array data[i]. Page 2 |