Minggu, 11 Desember 2016

Heap Sort


Heap Sort adalah algoritma pengurutan data berdasarkan perbandingan, dan termasuk golongan selection sort. Walaupun lebih lambat daripada quick sort pada kebanyakan mesin , tetapi heap sort mempunyai keunggulan yaitu kompleksitas algoritma pada kasus terburuk adalah n log n.
Algoritma pengurutan heap sort ini mengurutkan isi suatu larik masukan dengan memandang larik masukan sebagai suatu Complete Binary Tree (CBT). Setelah itu Complete Binary Tree (CBT) ini dapat dikonversi menjadi suatu heap tree. Setelah itu Complete Binary Tree (CBT) diubah menjadi suatu priorit y queue. Algoritma pengurutan heap dimulai dari membangun sebuah heap dari kumpulan data yang ingin diurutkan, dan kemudian menghapus data yang mempunyai nilai tertinggi dan menempatkan dalam akhir dari larik yang telah terurut. Setelah memindahkan data dengan nilai terbesar, proses berikutnya adalah membangun ulang heap dan memindahkan nilai terbesar pada heap tersebut dan menempatkannya dalam tempat terakhir pada larik terurut yang belum diisi data lain.  Proses ini berulang sampai tidak ada lagi data yang tersisa dalam heap dan larik yang terurut penuh. Dalam implementasinya kita membutuhkan dua larik – satu untuk menyimpan heap dan satu lagi untuk menyimpan data yang sudah terurut. Tetapi untuk optimasi memori, kita dapat menggunakan ha nya satu larik saja. Yaitu dengan cara menukar isi akar dengan elemen terakhir dalam heap tree. Jika memori tidak menjadi masalah maka dapat tetap menggunakan dua larik yaitu larik masukan dan larik hasil.

Heap Sort memasukkan data masukan ke dalam struktur data heap. Nilai terbesar (dalam max-heap) atau nilai terkecil (dalam min-heap) diambil satu per satu sampai habis, nilai tersebut diambil dalam urutan yang terurut.

 Contoh :


 



Konversi array menjadi Heap. Tentukan node terakhir dalam array, yaitu K.





Pseudocode BFS dan DFS

ALGORITHM DFS(G)
//Implements a depth-first search traversal of a given graph
//Input: Graph G =V,E
/*Output: Graph G with its vertices marked with consecutive integers in the order they are first encountered by the DFS traversal*/
mark each vertex in V with 0 as a mark of being “unvisited”
count ←0
for each vertex v in V do
if v is marked with 0
dfs(v)
dfs(v)
//visits recursively all the unvisited vertices connected to vertex v
//by a path and numbers them in the order they are encountered
//via global variable count
count ←count + 1; mark v with count
for each vertex w in V adjacent to v do
if w is marked with 0
dfs(w)


ALGORITHM BFS(G)
//Implements a breadth-first search traversal of a given graph
//Input: Graph G = V,E
/*Output: Graph G with its vertices marked with consecutive integers in the order they are visited by the BFS traversal*/
mark each vertex in V with 0 as a mark of being “unvisited”
count ←0
for each vertex v in V do
if v is marked with 0
bfs(v)
bfs(v)
//visits all the unvisited vertices connected to vertex v
//by a path and numbers them in the order they are visited
//via global variable count
count ←count + 1; mark v with count and initialize a queue with v
while the queue is not empty do
for each vertex w in V adjacent to the front vertex do
if w is marked with 0
count ←count + 1; mark w with count
add w to the queue
remove the front vertex from the queue

Sumber : Levitin A. Introduction to the design and analysis of algorithms

Minggu, 04 Desember 2016

Sekilas Ilmu: Fungsi dan Prosedur

            Prosedur
Prosedur dalam bahasa C adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram dan digunakan di dalam blok program yang lainnya dengan cara menyebutkan judul prosedurnya. Prosedur tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut. Prosedur banyak digunakan pada program yang terstruktur, karena:
1.      Merupakan penerapan konsep program modular, yaitu memecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.

2.    Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

            Fungsi
       Fungsi dalam bahasa C adalah suatu kumpulan program yang mengerjakan suatu tugas spesifik tertentu yang bertujuan sama dengan prosedur yaitu untuk memecah program yang rumit menjadi lebih sederhana. Fungsi mempunyai output dengan tipe variabel yang kita tentukan harus menggunakan parameter dalam penggunaannya, berbeda dengan prosedur yang bisa tidak menggunakan parameter. 

Program Mencari Huruf dalam Sebuah Kata

Program ini menggunakan pointer, dimana kita perlu menginput kata yang akan digunakan, kemudian input posisi huruf yang ingin dicari.
Hasil akhir (Output) dari program ini adalah :



-----------------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
main(){
       char*ptr;
       char ptr2;
       int angka;
       char kata[10];
       printf("\nKata awal : ");
       gets(kata);
       ptr=kata;
       printf("\nPosisi huruf yang ingin dicari: ke- ");
       scanf("%d", &angka);
       ptr2=*(ptr+(angka-1));
       printf("\nMencetak huruf ke-%d: \n\n", angka);
       printf("Kata: %s\n\n", kata);
       printf("Huruf ke-%d: %c\n",angka, ptr2);
       return 0;

}

------------------------------------------------------------------------------------
Selamat mencoba!

Jumat, 25 November 2016

Program Mencari Kata


Berikut adalah algoritma mencari kata seperti layaknya google sederhana, menggunakan string (strcmp) bahasa C.

Algoritma Mencari_Kata
//Input beberapa kata, input kata yang akan dicari
//Output : pencarian kata yang dicari pada kata-kata yang sebelumnya telah diinput.
#include<stdio.h>
#include<conio.h>
#include<string.h>

main(){
       int banyakkata, i;
       char kata1[10][10];
       char kata2[10];
       printf("\nMasukkan banyak kata: ");
       scanf("%d", &banyakkata);
       for(int i=1; i<=banyakkata; i++){
              printf("\nMasukkan kata %d : ", i);
              scanf("%s", &kata1[i]);
       }
       printf("\nMasukkan kata yang ingin dicari: ");
       scanf("%s", &kata2);
      
       int jum_muncul=0;
       int indekskata[50];
      
       for(int i=0; i<banyakkata; i++){
              if(strcmp(kata1[i], kata2)==0){
                     indekskata[jum_muncul]=i+1;
                     jum_muncul++;
              }
       }
       if(jum_muncul!=0){
              printf("\n\nKata '%s' muncul %d kali di kata ", kata2, jum_muncul);
              for(i=1; i<=banyakkata; i++){
                     if(strcmp(kata1[i], kata2)==0){
                           printf("ke-%d ", i);
                     }
              }
       }
       else {
              printf("\n\nKata tidak ditemukan.");
       }
       getch();
}

Introduction Bahasa Pemrograman

Bahasa Pemrograman
Pemrograman berkaitan dengan komputer, yang digunakan untuk membantu menyelesaikan persoalan. Strategi penyelesaian masalah oleh komputer mesti ditanamkan pada mesin tersebut oleh manusia melalui suatu program oleh suatu bahasa pemrograman. Bahasa pemrograman adalah notasi yang digunakan untuk menulis program pada komputer. Dalam membuat suatu program, perlu diperhatikan beberapa hal, seperti sebagai berikut.
1.                  Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki tingkat kerumitan yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan suatu masalah membutuhkan tingkat kerumitan yang tinggi.
2.                  Syntax
Syntax adalah aturan menulis 'kalimat' agar mampu dimengerti dengan benar oleh bahasa pemrograman. Aturan syntax ini secara baku harus dipenuhi, karena saat proses compilasi setiap baris script akan di-check dan dipastikan apakah Compiler mengerti maksud kalimat tersebut atau tidak.
3.                  Interpreter, pustaka
Interpreter adalah perangkat lunak yang mampu mengeksekusi code program (yang ditulis oleh programmer) lalu menterjemahkannya ke dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh programmer tersebut. Pustaka atau Library adalah kumpulan program atau fungsi yang telah ada pada compiler atau intepreter untuk memudahkan pemrogram membuat program dan tidak perlu mengakses langsung sistem komputer untuk memprogram.
4.                  IDE + OS
IDE (Integrated Development Environment) adalah program komputer yang memiliki beberapa fasilitas yang diperlukan dalam pembangunan perangkat lunak. Tujuan dari IDE adalah untuk menyediakan semua utilitas yang diperlukan dalam membangun perangkat lunak. Dalam penggunaan IDE, diperlukan OS komputer sebagai pendukung.

Model Pemrograman
1.               Struktural
Pemrograman struktural atau terstruktur merupakan suatu tindakan untuk membuat program yang berisi instruksi-instruksi dalam bahasa komputer yang disusun secara logis dan sistematis supaya mudah dimengerti dan mudah dimodifikasi. Contoh bahasa pemrograman yang menggunakan model struktural adalah Pascal dan C. Pemrograman struktural adalah bahasa pemrograman yang mendukung pembuatan program sebagai kumpulan procedure atau function.
a.          Function
Fungsi adalah suatu kumpulan program yang mengerjakan suatu tugas spesifik tertentu yang bertujuan sama dengan prosedur yaitu untuk memecah program yang rumit menjadi lebih sederhana. Fungsi mempunyai output dengan tipe variabel yang kita tentukan harus menggunakan parameter dalam penggunaannya, berbeda dengan prosedur yang bisa tidak menggunakan parameter.
b.         Procedure
Prosedur dalam bahasa C adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram dan digunakan di dalam blok program yang lainnya dengan cara menyebutkan judul prosedurnya. Prosedur tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.

2.               Object-Oriented
Pemrograman berorientasi objek (PBO) atau object-oriented programming (OOP) merupakan pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Contoh bahasa pemrograman yang menggunakan model OOP adalah Java (JZEE, JZGE, JZME), Python.
a.          Object
Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.yang membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer
b.         Class
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.

Peran
Peran bahasa pemrograman dalam membuat program atau aplikasi sangatlah besar. Selain peran tersebut, bahasa pemrograman memiliki berbagai peran lainnya, seperti sebagai berikut.
a.          Jaringan komputer (Socket Programming)
Pemrograman berperan dalam jaringan komputer untuk saling berhubungan dan berkomunikasi. Peran bahasa pemrograman dalam hubungan komunikasi antar jaringan komputer ini disebut juga dengan socket programming. Dalam suatu aplikasi, untuk berkomunikasi melalui jaringan komputer terdapat bahasa pemrograman yang berfungsi untuk menerjemahkan data yang dikirim menjadi data analog agar dapat dimengerti oleh bahasa mesin. Beberapa bahasa pemrograman yang digunakan dalam hal ini adalah C, Java, Python.
b.         Database
Dalam database, diperlukan bahasa pemrograman untuk dapat mengolah data (data manipulation) dan memungkinkan juga untuk menghubungkan database yang satu dengan yang lainnya. Peranan bahasa pemrograman ini contohnya digunakan dalam DBC (Java ODBC, Python, dan lainnya)
c.          Internet of things
Internet of Things merupakan sebuah konsep yang bertujuan untuk memperluas manfaat dari konektivitas internet yang tersambung secara terus-menerus. Adapun kemampuan seperti berbagi data, remote control, dan sebagainya, termasuk juga pada benda di dunia nyata. Cara kerja Internet of Things yaitu dengan memanfaatkan bahasa pemrograman yang dimana akan muncul suatu interaksi antara sesama mesin yang terhubung secara otomatis tanpa campur tangan manusia dan dalam jarak berapa pun.
d.         Cloud computing (Platform as a service)
Merupakan gabungan pemanfaatan teknologi komputer dalam suatu jaringan dengan pengembangan berbasis internet yang mempunyai fungsi untuk menjalankan program atau aplikasi melalui komputer – komputer yang terkoneksi pada waktu yang sama, tetapi tak semua yang terkonekasi melalui internet menggunakan cloud computing. Teknologi ini mengizinkan para pengguna untuk dapat mengakses data yang disimpan dimana saja dan kapan saja dengan akses internet. Contohnya lewat penggunaan Yahoo atau Gmail.
e.          Intelligent Transportation System (ITS)
Mengintegrasikan pengguna jalan, sistem transportasi, dan kendaraan melalui sistem informasi dan teknologi komunikasi serta membantu sistem transportasi secara keseluruhan untuk bekerja secara efektif dan efisien. Sebagai aplikasi inti untuk pengelolaan lalu lintas kota, ITS akan mengelola dan menggunakan sumber daya data yang dibagikan antara berbagai sistem pengelolaan informasi yang memadukan informasi dan fungsi manajemen lalu lintas untuk memudahkan kerjasama antara beberapa sistem. Dalam hal ini, diperlukan mekanisme pengelolaan informasi yang standar.
f.          Parallel computing
Parallel computing adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Di dalam komputasi paralel ada yang dinamakan dengan pemrograman paralel yang merupakan teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.
g.         Bio informatika, E-Health
Merupakan salah satu peran pemrograman yang digabungkan dengan ilmu kesehatan. Bio informatika bisa dikatakan sebagai sistem komputasi untuk menganalisis informasi biologis. Sedangkan E-Health adalah teknologi yang digunakan untuk memproses berbagai jenis informasi ilmu kedokteran.

Tips Pemrograman
Berikut ini adalah tips-tips untuk memahami pemrograman.
1.         Pahami algoritma
Dalam membuat sebuah program, diperlukan pemahaman kuat atas algoritma agar program dapat dijalankan dengan urutan yang logis.
2.         Kuasai sintaks
Diperlukan penguasaan sintaks dari bahasa pemrograman yang digunakan agar dapat menerjemahkan bahasa algoritmik menjadi bahasa pemrograman sehingga program dapat dijalankan sesuai rencana.
3.         Pahami model pemrograman (struktural/object-oriented)
Pembuatan program juga perlu diperhatikan dan dipahami mengenai model pemrograman yang akan digunakan, baik struktural ataupun object-oriented.
4.         Berlatih
Seperti yang sudah diketahui bahwa banyak berlatih akan membuat seseorang terbiasa. Maka dari itu, banyak berlatih dan belajar pemrograman akan membuat kita menjadi terbiasa dan lebih cekatan dalam membuat program.
5.         Studi kasus sehari-hari
Dalam belajar memahami dan mengerti, perlu juga untuk melihat dunia sekeliling dan menjadikannya sebagai bahan latihan. Gunakan suatu masalah yang ada di sekitar dan pecahkan masalah tersebut dalam suatu bahasa pemrograman.
6.         Aktif dalam pengembangan (project, open source, github, dll)
Aktif dalam pengembangan diperlukan untuk memperluas wawasan, khususnya terkait dengan pemrograman. Hal ini dapat dilakukan dengan mulai turut serta dalam suatu project.

Security
Security dalam hal pemrograman berarti keamanan, dan hal-hal lain yang perlu diperhatikan agar program dapat berjalan sesuai logika dan rencana. Adapun hal-hal yang perlu diwaspadai tersebut adalah sebagai berikut.
a.       Kesalahan algoritma
Seperti yang diketahui, algoritma berarti pemecahan masalah yang diurutkan secara logis. Jika dalam membuat program terjadi kesalahan algoritma, otomatis program tersebut tidak akan berjalan secara logis atau bahkan akan timbul error yang tidak diinginkan.
b.      Buffer Overflow
Buffer adalah memori yang menyimpan data ketika data dipindahkan antara dua device atau antara device dan aplikasi. Buffer overflow adalah keadaan dimana buffer (variabel yang di gunakan suatu aplikasi untuk menyimpan datanya di memori) terisi dengan data yang ukurannya melebihi kapasitas.

Tingkat Pemrograman
Secara umum, bahasa pemrograman dapat dibedakan menjadi dua, yaitu tingkat tinggi dan tingkat rendah.
a.       Tingkat tinggi
Merupakan bahasa tingkat tinggi yang mempunyai ciri-ciri mudah dimengerti dan dipelajari karena kedekatannya terhadap bahasa sehari – hari. Bahasa program tingkat tinggi diterjemahkan kepada sebuah atau beberapa mesin dengan menggunakan compiler. Contoh : Pascal, C, Java, dan lainnya.
b.      Tingkat rendah
Bahasa pemrograman generasi pertama. Bahasa jenis ini sangat sulit dimengerti karena instruksinya menggunakan bahasa mesin. Bahasa mesin memerlukan penulisan yang panjang dan terkesan rumit. Contohnya adalah bahasa assembly yang merupakan bahasa dengan pemetaan satu – persatu terhadap instruksi komputer. Setiap intruksi assembly diterjemahkan dengan menggunakan assembler. 

Minggu, 20 November 2016

Sejarah Mouse


Mouse, atau “Tikus” dalam istilah baku Bahasa Indonesia-nya, merupakan salah satu perangkat keras (hardware) dalam sebuah komputer, yang berfungsi sebagai alat input utama selain keyboard. Mouse dikategorikan sebagai sebuah Pointing Device (alat penunjuk/pemilih). Gerakan kursor di layar monitor mewakili pergerakan dari piranti mouse itu sendiri. Dengan mengarahkan kursor mouse pada icon/GUI (Graphic User Interface) tertentu, kemudian mengeksekusi perintah dengan cara meng-kliknya, seorang pengguna dapat menjalankan perintah tertentu pada program komputernya.
Mouse merupakan peralatan inputan yang berfungsi untuk menggerakkan pointer yang ada pada layar monitor untuk menjalankan suatu program atau icon-icon perintah yang ada pada layar monitor dengan cara melakukan klik kiri, klik kanan, double klik, drag and drop, ataupun scroll lock.


Mouse pertama ditemukan oleh Douglas Engelbart dari Stanford Research Institute pada tahun 1963. Mouse adalah satu dari beberapa alat penunjuk (pointing device) yang dikembangkan untuk oN Line System (NLS) milik Engelbard. Selain mouse, yang pada mulanya disebut “bug”, juga dikembangkan beberapa alat pendeteksi gerakan tubuh yang lain, misalnya alat yang diletakkan di kepala untuk mendeteksi gerakan dagu. Karena kenyamanan dan kepraktisannya, mouse-lah yang dipilih. Mouse pertama berukuran besar, dan menggunakan dua buah roda yang saling tegak lurus untuk mendeteksi gerakan ke sumbu X dan sumbu Y.


Bill English di Xerox PARC pada awal tahun 1970. Ia menggunakan bola yang dapat berputar kesegala arah, kemudian putaran bola tersebut dideteksi oleh roda-roda sensor didalam mouse tersebut. Pengembangan tipe ini kemudian melahirkan mouse tipe Trackball, yaitu jenis mouse terbalik dimana pengguna menggerakkan bola dengan jari, yang populer antara tahun 1980 sampai 1990. Xerox PARC juga mempopulerkan penggunaan keyboard QWERTY dengan dua tangan dan menggunakan mouse pada saat dibutuhkan saja.


Mouse optikal pertama dibuat oleh Steve irsch dari Mouse Systems Corporation. Mouse jenis ini menggunakan LED (light emitting diode) dan photo dioda untuk mendeteksi gerakan mouse. Mouse optikal pertama hanya dapat digunakan pada alas (mousepad) khusus yang berwarna metalik bergaris-garis biru abu-abu. Mouse optikal saat ini dapat digunakan hampir di semua permukaan padat dan rata, kecuali permukaan yang memantulkan cahaya.




Mouse laser pertama kali diperkenalkan oleh Logitech, perusahaan mouse terkemuka yang bekerja sama dengan Agilent Technologies pada tahun 2004, dengan nama Logitech MX 1000. Logitech mengklaim bahwa mouse laser memilki tingkat akurasi 20 kali lebih besar dari mouse optikal.

DIY (Ubah Gulungan Tisu Toilet Jadi Hiasan Dinding)



Gulungan Tisu Toilet Menjadi Hiasan Dinding


Bahan :

1.      Bekas gulungan tisu toilet (sesuai kebutuhan)
2.      Lem
3.      Gunting
4.      Bobby pin (jepit rambut kecil)
5.      Spray paint





Langkah – langkah :

1.      Gunting bekas gulungan tisu secara horisontal. Usahakan agar ukurannya sama agar hasilnya jadi lebih bagus, tapi sesuaikan juga dengan keinginan anda.


2.      Rekatkan potongan – potongan tadi dengan lem di ujungnya


3.      Jepit dengan bobby pin hingga lem kering sehingga potongan merekat sempurna


4.      Jika sudah terbentuk 5 mahkota bunga, anda bisa mulai mewarnainya dengan spray paint sesuai selera anda

5.      Rangkai bunga – bunga tadi sedemikian rupa sehingga menjadi hiasan dinding yang cantik dan simpel


sumber : https://www.cutoutandkeep.net/projects/toilet-paper-roll-wall-art