Tuesday, 18 December 2018

Algorithm & Programming: File Processing

Dalam sebuah program, file digunakan sebagai tempat penampungan data-data selama operasi program. Tanpa file, data yang biasa diolah program hanya akan tersimpan sementara dalam memory dan akan hilang ketika program close. Dengan penyimpanan berbasis file, data yang diolah program dapat tersimpan terus walaupun program telah closed ataupun komputer telah di shutdown.

Definisi file :
File merupakan kumpulan dari record.
Record merupakan kumpulan dari field.
Field merupakan satu blok dari byte.
Byte merupakan kumpulan dari bit.

Text File merupakan file yang pola penyimpanan datanya dalam bentuk karakter.
Binary File merupakan file yang pola penyimpanan datanya di dalam disk berbentuk biner, yaitu seperti bentuk pada memory RAM.

Buffer Area merupakan bagian dari memori yang digunakan sebagai tempat sementara sebelum data dipindahkan ke dalam file.
Syntax : FILE *fp;

Open File
Syntax : FILE *fopen (const char *filename, const char *mode);

Macam-macam mode yang dapat digunakan untuk Open File adalah:

"r"     : membuka file untuk dibaca. Jika file tidak ada, maka akan bernilai NULL
"w"   : membuka file untuk ditulis. Jika sebelumnya sudah ada nama file yang sama, maka akan dilakukan overwrite file dengan file yang baru.
"a"    : membuka file untuk ditambahkan datanya di paling bawah baris terakhir pada nama file yang sebelumnya sudah ada. Jika file tidak ada, maka file baru akan dibuat secara otomatis.
"r+"   : sama dengan "r", namun dapat ditulis juga.
"w+" : sama dengan "w", namun dapat dibaca juga.
"a+"  : sama dengan "a", namun dapat dibaca juga.

Close File
Syntax : fclose(FILE *stream);

Input File : Membaca data dari file.
Syntax : fscanf(FILE *stream, const char *format[, argument]...);

Output File : Menulis data untuk disimpan ke dalam file.
Syntax : fprintf(FILE *stream, const char *format[, argument]...);

Cara mengetahui jika pointer sudah sampai pada end-of-file adalah dengan menggunakan
Syntax : feof(FILE *stream);






Algorithm & Programming: Searching & Sorting

Sorting adalah proses pengurutan data. Dengan sorting, proses pencarian atau searching dapat dilakukan dengan lebih cepat.

Terdapat 2 tipe sorting, yaitu:
- Ascending   : pengurutan dari data terkecil ke data terbesar.
- Descending : pengurutan dari data terbesar ke data terkecil.

Terdapat 2 sorting algorithm, yaitu:

- Internal sorting  :
  Pengurutan terhadap sekumpulan data yang disimpan di dalam memori utama komputer.

- External sorting :
  Pengurutan terhadap sekumpulan data yang disimpan di dalam memori sekunder.
  Hal ini biasanya dilakukan pada data yang memiliki volume besar.

Adapun macam-macam cara melakukan sorting sebagai berikut:

- Bubble Sort :
Merupakan cara melakukan sorting yang paling sederhana, namun kurang efektif jika digunakan untuk mencari data yang memiliki jumlah yang banyak.
Cara bekerjanya adalah dengan membandingkan 1 nilai dengan nilai yang ada di 1 index setelahnya

- Selection Sort :
Cara bekerjanya adalah dengan memilih elemen dengan nilai yang paling rendah dan menukarnya dengan elemen yang terpilih dengan elemen i.
Nilai i dimulai dari 0/1 sampai ke n, di mana n merupakan jumlah total elemen dikurangi 1.

- Insertion Sort :
Cara bekerjanya adalah membagi data yang akan diurutkan menjadi 2 bagian, yaitu yang belum diurutkan dan yang sudah diurutkan. Elemen pertama akan diambil dari bagian yang belum diurutkan dan diletakkan sesuai posisinya pada bagian yang telah diurutkan.

- Quick Sort :
Proses pengurutan ini termasuk ke dalam intermediate sorting.
Pada cara ini, algoritma nya dirumuskan berdasarkan pada pola divide-and-conquer.
Berbeda dengan merge sort, quick sorting hanya mengikuti langkah berikut:
    - Divide
    - Conquer

- Merge Sort :
Proses pengurutan ini termasuk ke dalam intermediate sorting.
Pada cara ini, algoritma nya dirumuskan dalam 3 langkah berpola divide-and-conquer, yaitu:
   - Divide
   - Conquer
   - Kombinasi

Searching adalah proses pencarian suatu data dengan menggunakan keyword tertentu.

Macam-macam algoritma searching, yaitu:

- Linear Search :
Proses searching ini merupakan proses yang paling sederhan, di mana dalam proses searching ini dibandingkan value array nya. Jika sama, maka itu lah data yang dicari.
Dalam proses ini, data tidak perlu diurutkan terlebih dahulu.

- Binary Search :
Proses searching ini dapat digunakan dengan baik pada array yang berjumlah kecil dan tidak berurutan. Namun tidak efektif jika digunakan untuk array yang berjumlah besar

- Interpolation Search :
Proses searching ini hampir sama dengan Binary Search. Analogi untuk proses searching ini adalah ketika kita mencari nama di buku nomor telephone.












 
 


Tuesday, 4 December 2018

Function, Recursion and Cloud Computing

Function adalah implementasi penggunaan module untuk suatu program, di mana program tersebut dibagi-bagi menjadi beberapa module sesuai dengan tugasnya masing-masing.

Function disebut juga sebagai sub-program.

Function di C dibagi menjadi 2, yaitu:
- Library function : function yang telah disediakan dalam suatu library.
- User-defined function : function yang dibuat sendiri oleh pengguna.

Recursive Function adalah suatu proses di mana fungsi memanggil dirinya sendiri.

Contoh:



Cloud Computing adalah pusat penyimpanan atau pengelolaan data dengan mengandalkan teknologi internet. 
Contohnya adalah Google Drive.

3 model pengiriman dalam Cloud Computing:
- Software as a Service (SaaS)
- Platform as a Service (PaaS)
- Infrastructure as a Service (IaaS)

4 model penyebaran dalam Cloud Computing:
- Public cloud
- Private cloud
- Hybrid cloud
- Community cloud

Thursday, 18 October 2018

Algorithm & Programming: Pointer and Array

POINTER

Pointer adalah variabel sebagai penunjuk isi atau konten dalam suatu variabel lainnya, yang ditandai dengan tanda (*)

Syntax: <type> *ptr_name;

Pointer to Pointer
Syntax: <type> **ptr_ptr;

Note:
*  = content of
& = address of

ARRAY

Array adalah kumpulan dari nilai-nilai data yang menggunakan satu nama yang sama.

Karakteristik Array =

1.) Bersifat homogen :
Semua element di dalam satu array memiliki tipe data yang sama.

2.) Akses random :
Setiap element dalam array dapat digunakan secara individual dan tidak perlu secara berurutan.

Terdapat 2 cara dalam mengakses element dalam suatu array, yaitu: *(A+2) atau A[2]

Syntax One Dimensional Array    : type array_value[value_dim];
Syntax Two Dimensional Array    : type name_array[row][column];
Syntax Three Dimensional Array : type name_array[row][column][depth];

STRING

String adalah array dengan tipe data character yang berakhir dengan null character ( '\0' )

Note: Bahasa C tidak mengenal tipe data string.

Function to manipulate string (header file string.h) :

  • strlen()
  • strcpy(a1,a2) 
  • strncpy(a1,a2,x)
  • strcat(a1,a2)
  • strncat(a1,a2,x)
  • strcmp(a1,a2)
  • etc

Thursday, 11 October 2018

Algorithm & Programming: Repetition

Pengertian dari repetition adalah satu atau lebih instruksi dalam waktu yang ditentukan.

Repetition yang sering digunakan dalam bahasa C adalah
  • For
  • While
  • Do-While
Repetition berkemungkinan menggunakan Go To, namun tidak disarankan untuk menggunakannya. Hal ini dikarenakan bahasa C bekerja secara sequence atau urut dari atas ke bawah, sedangkan Go To dapat bekerja secara tidak berurutan, sehingga dapat membingungkan bagi penggunanya.

Perbedaan While & Do-While adalah
  • While bekerja dengan melihat kondisi atau batasan yang telah tercantum terlebih dahulu. Jika kondisi atau batasan yang di-input tidak sesuai, maka While tidak akan menjalankan input-an tersebut.
  • Do-While bekerja dengan menjalankan input yang dimasukan terlebih dahulu, setelah itu ia akan memeriksa kembali apakah input tersebut sesuai dengan kondisi atau batasan yang telah tercantum pada Do-While tersebut.
Pada kelas besar kemarin, tidak terlalu banyak dibahas mengenai teori, melainkan lebih banyak langsung terjun pada coding nya, bagaimana For digunakan. While dan Do-While tidak terlalu dibahas, karena penggunaannya yang mirip, hanya syntax nya saja yang berbeda.

Berikut adalah beberapa contoh yang saya ingat.

Gambar di atas menunjukkan bagaimana cara mencetak bintang sebanyak yang telah ditentukan di dalam kondisinya dengan menggunakan repetition for




Gambar di atas menunjukkan bagaimana cara menampilkan bilangan genap dengan jumlah angka yang sesuai dengan angka yang di-input, dengan menggunakan repetition for

Gambar di atas menunjukkan cara bagaimana membuat perulangan simbol yang memiliki pola segitiga siku-siku dengan menggunakan repetition for. Jika angka yang di-input adalah angka ganjil, maka simbol yang keluar adalah '#'. Jika angka yang di-input adalah angka genap, maka simbol yang keluar adalah '*'.

Di kelas pada waktu itu pun disampaikan beberapa link yang dapat digunakan untuk mengasah kemampuan dalam coding. Beberapa di antaranya adalah

  • codechef.com
  • kattis.com
  • spoj.com