Tuesday, 18 December 2018

Sorting and Searching

Sorting seperti namanya, yaitu menyusun suatu data menjadi terurut baik dari kecil ke besar (ascending), maupun besar ke kecil (descending). Dengan sorting, data dapat ditampilkan atau tersimpan dengan urutan yang terurut (rapi) dan lebih mudah dicari atau diakses. Algoritma sorting sendiri terdiri dari beberapa jenis yaitu: bubble sort, selection sort, insertion sort, quick sort, dan merge sort. Yang akan dibahas saya hanya bubble sort, selection sort, dan insertion sort yang merupakan jenis sorting sederhana.

Bubble sort adalah salah satu algoritma sorting paling sederhana. Bubble sort membandingkan sebuah data dengan data yang ada di sampingnya, jika kondisi memenuhi, maka kedua data tersebut diswap atau ditukar tempatnya. Kondisi tersebut biasanya antara lebih besar atau lebih kecil, jika ascending maka kondisi swapnya adalah ketika data berikutnya lebih kecil dari data yang ditunjuk sekarang dan sebaliknya untuk descending.

Selection sort adalah jenis algoritma sorting yang mencari nilai terkecil/minimum (untuk ascending) atau nilai terbersar/maksimum (untuk descending) dalam suatu kumpulan data dan kemudian meletakkan nilai tersebut di depan kumpulan data tersebut. Dengan meletakkan data di depan kumpulan data tersebut, otomatis data yang terletak di depan telah tersusun. Proses ini akan terus berlanjut dengan mencari nilai minimum atau maksimum dari data yang belum tersusun tersebut.

Insertion sort adalah jenis algoritma sorting yang sesuai dengan namanya yaitu menyisip. Dalam insertion sort, kita membutuhkan suatu variabel tambahan untuk menyimpan sementara data yang sedang kita tunjuk. Data yang kita tunjuk ini akan menjadi acuan dalam sorting kita dan biasanya data yang ditunjuk pertama adalah data yang kedua. Data yang ditunjuk ini akan disimpan dulu di dalam variabel pembantu, kemudian isi dari variabel pembantu ini (data yang ditunjuk) akan dibandingkan dengan data-data sebelumnya. Perbandingan akan terus berjalan dari data ke data secara berurutan sampai memenuhi suatu kondisi, kondisi di sini berbeda dengan yang di bubble sort, untuk ascending ketika data yang menjadi acuan lebih besar dari data yang dibandingkan, maka perbandingan berhenti dan sebaliknya untuk descending. Ketika kondisi terpenuhi, data acuan tadi akan diselipkan kedalam kumpulan data dengan menggeser semua data yang lebih besar (ascending) atau lebih kecil (descending) dari data acuan tersebut.

Searching juga sepertin namanya yaitu mencari suatu data dalam kumpulan data. Dari kumpulan data-data, kita dapat mencari atau mengecek apakah data tersebut ada di dalam kumpulan data tersebut atau tidak dengan menggunakan searching. Ada beberapa jenis searching yaitu: linear search, binary search, interpolation search, dll.

Linear search adalah jenis searching paling sederhana yaitu mencari suatu data mulai dari data pertama hingga data yang terakhir. Akan dilakukan perbandingan terhadap semua data sampai data yang ingin dicari ketemu. Kelemahan dari jenis searching ini adalah ketika data yang akan kita cari terletak di bagian belakang kumpulan data, maka proses searching akan memakan waktu yang sangat lama untuk memperoleh hasil. Kelebihan satu-satunya dari linear search adalah bahwa kumpulan data tidak perlu terurut atau bolehh acak.

Binary search menggunakan sebuah acuan yang dinamakan mid. Selain mid, juga terdapat variabel bantuan lainnya yaitu left dan right. Mid, left dan right ini akan menyimpan index dari kumpulan data yang akan disearch. Left akan menyimpan indeks data paling kiri (data dengan nilai minimum), right akan menyimpan indeks data paling kanan (data dengan nilai maksimum) dan mid akan menyimpan indeks data tengah. Dari ini, ita dapat melihat bahwa binary search membutuhkan kumpulan data dalam keadaan tersusun dari kecil ke besar (ascending). Dalam kumpulan data dengan jumlah yang sangat besar, mid dapat dicari dengan rumus:
mid = (left+right)/2
Jika bernilai koma, nilai mid ini kemudian dibulatkan kebawah. Jika data yang dicari lebih besar dari data indeks ke mid, maka left akan menjadi mid+1, kemudian nilai mid akan berubah sesuai rumus di atas karena nilai leftnya berubah. Jika data yang dicari lebih kecil dari data indeks ke mid, maka right akan menjadi mid-1, kemudian nilai mid akan berubah sesuai rumus di atas karena nilai rightnya berubah. Proses ini akan terus berlanjut sampai data yang dicari sama dengan data indeks ke mid, dan jika kondisi ini terpenuhi, maka data berhasil ditemukan.

Interpolation search sama seperti binary search tetapi yang berbeda hanyalah rumus midnya. Dalam interpolation search, rumus mid sebagai berikut:
mid = (data yang dicari - data[left])x(right-left)/(data[right] - data[left]) + min
Selain dari nilai mid, semua proses searching interpolation search sama seperti binary search

Terimakasih telah membaca 😁


2201791295
binus.ac.id
skyconnectiva.com
Schumacher Goldwin

Structure

Struct adalah sebuah kumpulan data dengan tipe data yang berbeda membentuk suatu tipe data/struct data yang baru. Jadi di dalam struct ini dapat disimpan tipe-tipe data berbeda terkait suatu data. Misalnya kita ingin menyimpan suatu data mahasiswa yang memiliki NIM, nama, alamat, IPK, dll. Tentunya akan menjadi ribet apabila kita memasukkan semuanya ke dalam array masing-masing dengan indeks ke i adalah untuk mahasiswa satu dan indeks lain untuk mahasiswa lainnya. Jika hendak melakukan penghapusan atau mengupdate data-data tersebut akan sangat sulit apabila dengan menggunakan array sendiri-sendiri. Dengan struct, kita dapat membuat suatu tipe data baru yang dapat menampung data-data dengan tipe data yang berbeda tersebut. Untuk membuat struct, dapat ditulis dengan syntax sebagai berikut:
struct nama struct
{
      tipe data nama variabel;
};

Contohnya:
struct dataMahasiswa
{
      char NIM[15];
      char nama[100];
      char alamat[1000];
      double IPK;
};

Dengan mengetikkan kodingan di atas, kita telah berhasil menginisialisasi stuct baru kita, tahapan selanjutnya sebelum memakai struct tersebut adalah memberikan nama variabel untuk struct yang kita buat.

int main( )
{
      dataMahasiswa mahasiswa[100];
      mahasiswa[0].IPK = 4.0;
      mahasiswa[1].IPK = 3.5;
}

Seletah memberikan nama variabel pada struct, struct yang baru kita buat telah siap dipakai untuk menyimpan data.

Terimakasih telah membaca 😁

2201791295
binus.ac.id
skyconnectiva.com
Schumacher Goldwin

Cloud Computing

Cloud adalahh sebuah layanan yang diberikan suatu perusahaan untuk menyediakan tempat menyimpan data bagi para pengguna applikasi mereka. Cloud Computing adalah teknik mengatur atau mengkonfigurasi cloud itu sendiri.

Terdapat beberapa manfaat dari cloud computing antara lain:
- Dapat melakukan pemulihan kesalahan/error dengan lebih mudah
- Pengontrolan dokumen-dokumen atau data-data lebih teratur
- Interaksi antar pengguna lebih efektif dan efisien karena pengguna dapat membuka dan mengerjakan file yang sama dalam waktu bersamaan
- Menabung biaya tempat penyimpanan data

Tipe-tipe Cloud Computing:
- Public Cloud
- Private Cloud
- Hybrid Cloud
- Community Cloud

Terdapat beberapa model service dari Cloud Computing antara lain:
1. Infrastructure as a service (IaaS)
    Service yang diberikan berupa infrastuktur lengkap mulai dari server, jaringan, storage, dll
2. Platform as a service (PaaS)
    Service yang diberikan hanya berupa platform untuk kemudian membantu membuat suatu aplikasi
3. Software as a service (SaaS)
    Service yang hanya memberikan software penyimpanan data berupa cloud

Terimakasih telah membaca 😁


2201791295
binus.ac.id
skyconnectiva.com
Schumacher Goldwin

Saturday, 15 December 2018

File Processing

File Processing merupakan suatu proses membuka dan menutup file baik untuk membaca, menulis ataupun menambahkan sesuatu ke dalam suatu file.

Penulisan syntax:
FILE *nama variabel pointer;
nama variabel pointer = fopen("nama file yang dituju", "mode");
fclose(nama variabel pointer);

Dalam hal ini, nama variabel pointer dapat dinamai sesuka hati seperti variabel lain pada umumnya dan nama file yang dituju harus sama persis seperti yang aslinya. Mode untuk memproses file terdapat beragam jenis antara lain: w, r, a, w+, r+, a+, dll. Yang umum dipakai dan yang akan dibahas adalah w, r, dan a.

Mode w adalah mode write yaitu menuliskan sesuatu ke dalam file yang dituju dan syntax yang digunakan adalah:
fprintf(nama variabel pointer, "format penulisan", variabel yang ditulis);
Format penulisan sama seperti format penulisan printf pada umumnya. Dan jika file yang dituju tidak ada, makan mode w ini akan mengcreate file tersebut secara otomatis.

Mode r adalah mode read yaitu membaca data dari file yang dituju dan dapat menggunakan syntax:
fscanf(nama variabel pointer, "format scan", variabel tempat disimpan);
Format scan sama seperti format scan scanf pada umumnya.

Mode a adalah mode append yaitu menambahkan sesuatu ke file yang dituju dan syntax yang digunakan sama seperti mode w yaitu fprintf. Perbedaan mode w dan mode a adalah mode a menambahkan tulisan pada akhir dari file yang dituju sedangkan mode w mengoverwrite file tersebut, jadi data yang sebelumnya tersimpan di dalam file akan diganti dengan tulisan atau data baru.

Terimakasih telah membaca 😁

2201791295
binus.ac.id
skyconnectiva.com
Schumacher Goldwin

Tuesday, 11 December 2018

Function and Recurtion

Function adalah sebuah fungsi untuk melakukan sesuatu. Dalam bahasa pemrograman, function membantu menyederhanakan program yang membutuhkan penggunaan/pencarian sesuatu secara berulang-ulang. Misalnya dalam program kita membutuhkan untuk mencari bilangan maximum dalam banyak keadaan berbeda, jikalau kita mengetik code untuk mencari nilai maksimum berulang-ulang tentunya membuat codingan kita terasa panjang dan "jorok". Oleh karena itu, jika memakai function kita hanya perlu mengetik logic dari pencarian nilai maksimum sekali saja dan dibuat function, ketika ingin mencari nilai maksimum hanya memanggil function tersebut saja. Function tidak hanya membuat kodingan kita menjadi rapi dan mudah dilihat ataupun tidak perlu mengetik ulang-ulang, tetapi juga membuat kita lebih mudah memperbaiki kodingan ketika ada error/kesalahan.

Penulisan function dapat ditulis seperti berikut:
tipe data yang dibalikkan nama function ( parameter yang dikirim )
{
         statement;

}
Contohnya :
int maximum(int x, int y)
{

         if (x>y) return x;
         else return y;
}
Dalam hal ini, tipe data yang dibalikkan function ini adalah integer yaitu angka. Nama function adalah maxumum dengan 2 buah parameter integer. Sehingga ketika ingin memanggil function tersebut kita hanya perlu menuliskan maximum(4, 8); 
Parameter yang dikirim ke function tersebut adalah 4 dan 8. Di dalam function maximum ini, x akan menampung angka 4 dan y akan menampung angka 8. Dan kemudian menjalankan kodingan di dalam function tersebut. Dalam hal ini, hasil yang akan dikembalikan function tersebut adalah y karena x<y. Maka nilai dari maximum(4, 8) adalah 8. Tipe data yang dibalikkan dapat berupa void (tidak membalikkan apa-apa), float, string, char, double, long long int, dll.

Recurtion Function adalah sebuah function yang memanggil dirinya sendiri. Di dalam isi function tersebut, ia memanggil dirinya sendiri (function dia sendiri) untuk melakukan sebuah perulangan sampai sebuah kondisi tertentu (base case). Dalam recurtion function harus memiliki base case yang menjadi kondisi function tersebut berhenti memanggil dirinya sendiri. Dari segi ini, kita dapat melihat persamaan antara recurtion function dan perulangan. Benar sekali, recurtion function sama seperti sebuah perulangan dimana ia terus melakukan hal yang sama sampai sebuah kondisi tertentu. Dengan kata lain semua recurtion function dapat diubah menjadi perulangan dan semua perulangan dapat diubah menjadi recurtion function.
Contoh recurtion function:
int faktiroal(int x)
{
         if (x==0) return 1;

         else return x*faktorial(x-1);
}
Dalam hal ini, ketika parameter yang dikirim adalah 0, maka ia akan membalikkan nilai 1. Ketika parameter yang dikirim adalah yang lain maka ia akan membalikkan nilai x tersebut dikalikan dengan faktorial(nilai x dikurang 1). Function ini akan terus memanggil function dia sendiri sampai ketika nilai x nya sama dengan 0.

Terimakasih telah membaca 😁


2201791295
binus.ac.id
skyconnectiva.com
Schumacher Goldwin