Anda di halaman 1dari 43

ALGORITHM & PROGRAMMING

Disusun oleh
Panitia HIMTI-KIT 2022
Pengenalan Algoritma

Pengertian Algoritma

Algoritma adalah sebuah prosedur untuk memecahkan masalah dengan langkah-langkah


yang tersusun secara berurutan. Dalam pemograman algoritma didefinisikan sebagai
metode yang terdiri dari langkah-langkah terstruktur dalam memecahkan masalah
menggunakan komputer.

Algoritma yang baik haruslah:

● Memiliki alur yang benar untuk menyelesaikan masalah


● Menghasilkan output yang benar dengan waktu yang efisien
● Ditulis dengan kata-kata yang tidak ambigu
● Mudah untuk diimplementasikan kedalam bahasa pemograman

Contoh Algoritma
algoritma mengirim Email

1. Login ke situs layanan email


2. Pilih tulis email
3. Masukkan email yang dituju, subjek, dan isi email
4. Klik tombol kirim

Penyajian Algoritma
Algoritma dapat disajikan dalam dua bentuk, yaitu

Pseudocode

Pseudocode berasal dari dua kata, yaitu pseudo yang artinya semu dan code yang artinya
kode. pseudocode atau kode semu bukanlah sebuah bahasa pemograman melainkan
sebuah bahasa informal yang digunakan untuk mendeskripsikan suatu algoritma
pemograman secara sederhana. Pseudocode ini mirip dengan bahasa inggris sehari-hari
sehingga user friendly, lebih mudah dibaca, dan dipahami oleh manusia.
Contoh Pseudocode
Algoritma menghitung nilai rata-rata suatu kelas

berdasarkan contoh diatas biasanya pseudocode menggunakan keywords-keywords pada


basic computer operation seperti if, else, print, set, add, while, dll.

Basic Computer Operation:

1. Input
digunakan saat memperoleh informasi atau saat memasukan isi variabel, contoh:
Get name, Read data.

2. Output
digunakan saat menampilkan informasi, contoh: Print “Hello World”, Display total.

3. Compute
digunakan saat melakukan perhitungan matematika seperti add, subtract, multiply,
divide, scope, contoh: Add value to total, divide total by five.

4. Store
digunakan untuk menyimpan nilai kedalam suatu variabel, contoh: Total = num1 +
num2, set num1 to 100.

5. Selection
digunakan untuk mengambil keputusan dari suatu kondisi, contoh:
6. Repetition
digunakan untuk melakukan perulangan, contoh:

Flowchart

Flowchart adalah sebuah diagram yang menjelaskan alur proses (Algoritma) dari sebuah
program. Pada flowchart terdapat berbagai simbol yang memiliki fungsi masing-masing.

Structure Theorem

Berdasarkan structure theorem seluruh program komputer dapat dibagi menjadi beberapa
potongan kecil tugas yang jika digabungkan bisa melakukan tugas yang lebih besar.
Potongan kecil tersebut adalah Sequence, selection, dan Repetition.
1. Sequence
merupakan serangkaian commands atau statements

2. Selection
merupakan structure yang memungkinkan kita untuk memilih dari beberapa opsi
pernyataan

3. Repetition
merupakan sejumlah statements yang dapat diulang beberapa kali

Video : https://www.youtube.com/watch?v=kM9ASKAni_s

Pengenalan Bahasa C

Bahasa C dikembangkan oleh Dennis Ritchie di Bell Laboratories pada 1972. Bahasa
pemograman ini bisa digunakan untuk membuat berbagai program dan memiliki berbagai
kelebihan, yaitu:

● Mudah dipelajari
● Dapat digunakan di berbagai macam platform
● Induk dari semua bahasa pemograman
● Disupport dengan banyak libraries

Struktur Dasar Bahasa C


Setiap kali kita akan memulai coding menggunakan bahasa c, kita bisa menggunakan dua
template berikut

keduanya merupakan struktur dasar yang wajib dipahami dan keduanya sama-sama bisa
digunakan, namun biasanya di Binus disarankan untuk menggunakan template A agar dapat
dijalankan oleh system checker.

Struktur dasar/template ini jika diperhatikan dapat dibagi menjadi dua bagian yaitu bagian
include dan fungsi main.
Include

● #include : berfungsi untuk mengimpor library


● <stdio.h> : library untuk input output

Singkatnya #include <stdio.h> berfungsi untuk mengimpor library agar kita bisa melakukan
input dan output

Fungsi Main

fungsi main merupakan fungsi utama sebuah program dan merupakan fungsi pertama yang
akan dijalankan. Perbedaan antara template A dan template B terdapat pada tipe fungsi
mainnya

● int : berarti fungsi tersebut perlu mengambalikan/me-return suatu angka atau integer.
● void : berarti fungsi tersebut tidak perlu mengembalikan/me-return apapun.

itulah alasan mengapa pada template A terdapat return 0 sedangkan pada template B tidak.

Aturan-Aturan Dalam Bahasa C


● Setiap statement harus diakhiri dengan
tanda titik koma (;).

● Merupakan Case Sensitive (Huruf kecil dan huruf


besar dianggap berbeda) artinya dalam bahasa C
printf dengan Printf merupakan hal yang berbeda,
begitu pula untuk int dan Int.

● Comment atau catatan dapat


ditambahkan didalam kode dan tidak
akan dijalankan. terdapat dua cara
untuk menambahkan comment:
○ // untuk satu baris saja
○ /* */ untuk semua baris yang
diapit
● Penulisan nama variabel tidak boleh diawali
oleh angka, tidak boleh sama, dan tidak
boleh menggunakan keywords yang
terdapat pada bahasa C.

berikut ini merupakan daftar keywords yang terdapat pada bahasa C:

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

Variabel
Variabel merupakan suatu wadah untuk menyimpan data atau informasi, setiap variabel
memiliki nama, nilai, alamat memori, dan tipe datanya. banyaknya memori yang diperlukan
oleh suatu variabel terdiri atas tipe datanya.

Format Deklarasi Variabel

Tipe Data

Tipe Data Ukuran Range Nilai Format Keterangan


Specifier

Int 4 bytes 2,147,483,648 %d bilangan bulat


s/d
2,147,483,647

Long Int 8 bytes 2,147,483,648 %ld bilangan bulat


s/d
2,147,483,647

Long Long Int 8 bytes 9,223,372,036,8 %lld bilangan bulat


54,775,808
s/d
9,223,372,036,8
54,775,807

Unsigned Int 4 bytes 0 %u bilangan bulat


s/d non negatif
4,294,967,295

Unsigned Long 8 bytes 0 %lu bilangan bulat


Int s/d non negatif
4,294,967,295

Unsigned Long 8 bytes 0 %llu bilangan bulat


Long Int s/d non negatif
18,446,744,073,
709,551,615

Float 4 bytes 3.4E-38 %f bilangan


s/d pecahan
3.4E+38

Double 8 bytes 1.7E-308 %lf bilangan


s/d pecahan
1.7E+308

Char 1 byte -128 %c karakter


s/d
127

Contoh Penggunaan

● mendeklarasikan variabel ipk bertipe float

● mendeklarasikan variabel angka bertipe int dengan nilai


awal 17

● mendeklarasikan variabel goldar bertipe char


dengan nilai ‘O’
● mendeklarasikan variabel makanan bertipe
char dengan panjang maksimal 15 karakter
dengan nilai “Bakmie”

Casting
Casting merupakan proses mengubah/mengkonversi tipe data

Input Dan Output


Input digunakan untuk meminta inputan kepada user dan output digunakan untuk
menampilkan hasil pada console. Dalam bahasa pemograman C untuk melakukan proses
input dan output diperlukan library <stdio.h>.

Input Operations
1. scanf();
● Fungsi : Untuk membaca sesuai input format
● Input format : “%type”

Type Fungsi

d untuk integer

c untuk character

s untuk string

x untuk hexadecimal

e, f, g untuk floating point

u untuk unsigned integer

o untuk unsigned integer

[] untuk me-scan string hingga tidak ditemukan value yg ada pada


tanda [ ]

[^ ] untuk me-scan string hingga menemukan value yg ada pada tanda


[]

● contoh:

2. getchar();
● Fungsi: untuk membaca inputan berupa 1 karakter
● contoh:

3. gets();
● Fungsi: untuk membaca inputan string atau array of char
● contoh:
Output Operations
1. printf();
● Fungsi: untuk menampilkan output sesuai format
● Output format:

● contoh:
2. putchar();
● Fungsi : digunakan untuk menampilkan output 1 karakter
● Contoh :

3. puts();
● Fungsi: menampilkan string ke console dan langsung membuat new line
● contoh:
Escape Sequence
Beberapa escape sequence yang ada dalam bahasa pemograman C:

Escape Sequence Fungsi

\n membuat baris baru atau new line

\t horizontal tab

\v vertical tab

\v menghapus karakter sebelumnya atau backspace

\r carriage return atau kembali ke awal baris

\a membuat suara ‘beep’

\\ print “\”

\? print “?”

\” print karakter “

\’ print karakter ‘

Operators

Operator Pada bahasa pemograman C terbagi menjadi beberapa jenis, yaitu

1. Operator Assignment
Operator ini berfungsi untuk memberi nilai. Operasinya berlangsung dengan
mengambil nilai dari sebelah kanan (=) dan menyimpannya kedalam variabel
disebelah kiri (=).
Contoh:
2. Operator Aritmatika
Operasi ini meliputi pertambahan, pengurangan, perkalian, pembagian, dll.

Simbol Fungsi

+ Pertambahan

- Pengurangan

* Perkalian

/ Pembagian

% Modulu (sisa bagi)

++ Increment

-- Decrement
contoh:

3. Operator Perbandingan
Operator ini digunakan untuk membadingkan apakah suatu statement diaggap
true(1) atau false(0)

Simbol Fungsi

== sama denga

!= tidak sama dengan

> lebih besar dari

>= lebih besar sama dengan dari

< lebih kecil dari


<= lebih kecil sama dengan dari
contoh:

4. Operator Logika
Operator ini mirip dengan operator perbandingan yang menghasilkan nilai true(1)
atau false(0)

Simbol Fungsi

&& (AND) jika semuanya bernilai true maka akan menghasilkan nilai true

|| (OR) jika salah satu bernilai true maka akan bernilai true juga

! (NOT) digunakan untuk membalik kondisi (co: true menjadi false)

A B AND OR

True True True True

True False False True

False True False True

False False False False


Contoh:

Selection (Control Statements)

Selection atau percabangan digunakan untuk menentukan alur program, pada


percabangan suatu statement akan dijalankan jika kondisinya terpenuhi. Pada
bahasa C terdapat 3 bentuk selection, yaitu:

● If Else
syntax:

keterangan tambahan:

○ else if bisa lebih dari satu tetapi if dan else hanya boleh satu
○ else if dan else itu optional boleh dipakai boleh juga engga
● Switch Case
syntax:

keterangan tambahan:
○ setiap case perlu diakhiri break kecuali default

● Ternary
syntax:

jika variabel memenuhi kondisi maka yang akan dijalankan adalah statement
1 tetapi jika tidak sesuai maka yang dijalankan adalah statement 2

Looping (Repetition)

Looping atau repetition merupakan fungsi untuk mengulang perintah sebanyak beberapa
kali selama memenuhi kondisi. Dalam bahasa C ada 3 cara untuk melakukan looping, yaitu:

● For
syntax:

keterangan:

○ perulangan ini digunakan jika kita tahu berapa banyak jumlah perulangan
yang harus dilakukan
○ deklarasi merupakan deklarasi variabel untuk perulangan
○ kondisi dicek apakah true atau false, jika true code akan terus dijalankan
hingga kondisi menjadi false
○ perubahan merupakan bagian mana yang akan terjadi perulangan
contoh:

● While
syntax:

keterangan:

○ perulangan while digunakan ketika kita tidak mengetahui jumlah pasti berapa
banyak kita harus melakukan perulangan
○ Perulangan akan terus terjadi selama kondisi bernilai true

contoh:
● Do While
syntax:

keterangan:

● perulangan do while digunakan ketika kita tidak mengetahui jumlah pasti


berapa banyak kita harus melakukan perulangan.
● Perbedaan antara while dan do while adalah pengecekan kondisi pada do
while dilakukan di akhir, sehingga code akan dijalankan terlebih dahulu 1x
lalu jika kondisi masih terpenuhi maka akan dilakukan perulangan.

contoh:

Array

Array merupakan variabel yang didalamnya terdapat sekumpulan data bertipe data sama.
Array bisa dibayangkan seperti sebuah rak atau tabel nilai-nilai dimana penomoran
tempatnya menggunakan index yang dimulai dari 0 dan berakhir di n-1. Array juga bisa
berupa array 2D atau 3D.

contoh deklarasi dan penjelasan indeks untuk array 1d:


contoh deklarasi dan penjelasan indeks untuk array 2d:

contoh aplikasi array:


Pointer

Pointer adalah sebuah variabel yang berisikan alamat memori. Setiap variabel yang kita
buat pada program akan memiliki alamat memori, alamat memori ini digunakan untuk
menentukan lokasi penyimpanan data pada memori.

Ada dua operator paling penting yang digunakan dalam pointer, yaitu:

1. & sebagai address operator


2. * sebagai dereferencing operator

penjelasan lebih lanjut :

ketika mendaklarasikan int x, maka kita


mereservasi sebuah tempat di memori, namun
belum memiliki nilai.

ketika mendeklarasikan int *pointerX,


maka kita mereservasi sebuah tempat di
memori, namun belum memiliki nilai

ketika me-assign &x kedalam


pointerX, maka nilai pointerX menjadi
alamat dari x
code ini membuat pointerX mengakses x
dan mengisi variable x dengan nilai

Function

Function merupakan kumpulan syntax yang dikelompokkan, singkatnya function digunakan


untuk mengelompokkan program menjadi bagian-bagian kecil.

Function terdiri dari return type, nama function, parameter, dan isi:

Penjelasan:

● Return type: tipe data yang dikembalikan dari hasil function yang dijalankan
● parameter: merupakan variabel yang menyimpan nilai untuk di proses
/passing/lempar ke function yang dituju

umumnya function mengembalikan / me-return suatu nilai, tetapi function juga bisa tidak
mengembalikan nilai apabila return typenya void.

contoh function yang tidak mengembalikan nilai


contoh function yang mengembalikan nilai

Parameter terdiri menjadi 2, ada parameter aktual dan ada juga parameter formal.
parameter aktual adalah parameter yang akan dipassing ke parameter di function yang
dituju/formal/penampung.

sebagai contoh berdasarkan code disebelah kiri

● parameter aktual = x dan y


● parameter formal = a dan b

Ada 2 cara melakukan passing parameter, yaitu:


● Passing by Value
dengan cara ini yang akan kita passing adalah nilai atau isi dari parameter aktualnya,
sehingga jika kita ubah di function nilainya di function awal tidak akan ikut berubah.
penjelasan:

nilai x di function tujuan bernilai 15 karena sebelum dicetak nilai x nya kita ganti
dengan 15. Nilai x di function awal tetap 10 karena kita hanya me-passing value dari
x sehingga perubahan pada function tujuan tidak akan mengubah isi variavbel di
function awal.

● Passing by Reference

dengan cara ini yang akan kita passing adalah alamat memori dari variable yang
akan digunakan, sedangkan parameter formalnya merupakan pointer yang menunjuk
ke alamat memori tersebut.

penjelasan:

karena yang kita passing adalah alamat memori dari variable yang akan digunakan,
maka saat program dijalankan nilai x di function awal pun akan ikut terganti.

Fungsi Rekursif

Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri. Meskipun sama-sama
melakukan perulangan rekursif dan iterasi memiliki perbedaan sebagai berikut:

Iterasi Rekursif

kode program lebih panjang dan kadang kode programnya lebih singkat dan mudah
sulit menerapkan solusi dari suatu problem dipahami

membutuhkan alokasi memori yang relatif membutuhkan alokasi memori yang relatif
lebih kecil lebih besar

iterasi akan berhenti apabila kondisi yang rekursif akan berhenti apabila telah
diterapkan di awal sudah bernilai false mencapai nilai return
contoh:

mengapa hasilnya 10? karena fungsi rekursif yang kita buat akan menambahkan angka
yang kita masukkan dengan (angka-1) lalu (angka-2) dan seterusnya hingga angka-n = 0,
sehingga ketika kita memasukkan nilai 4 kedalam program, yang terjadi adalah:
4+3+2+1 = 10

Structures And Union

Structure adalah tipe data untuk menyimpan sekumpulan data dengan tipe data yang
berbeda - beda atau bersifat heterogen.

● Structure di bahasa pemrograman lain disebut dengan record.


● Komponen pada structure biasa disebut member/field/element
Accessing Structure
Elemen dari structure dapat diakses dengan menggunakan operator dot (’.’)
Local Structure

Output:

A position:

x and y position? 5 10

B position :

x and y position? 15 15

Distance between A and B = 11.18 unit

Nested Structure

● Nested structure adalah sebuah structure yang mana salah satu elemennya adalah
sebuah structure lain
● Structure yang menjadi elemen structure lain juga harus dideklarasikan terlebih
dahulu
Structure Initialization

Variabel structure juga bisa di-assign ke variabel structure yang lain

Array Of Structure

● Tipe data structure hanya dapat mengandung


satu record. Sedangkan permasalahan di dunia
nyata membutuhkan banyak record data
● Dalam prakteknya, biasanya structure
dikombinasikan dengan array untuk membuat
banyak record data
Typedef

● typedef dapat diartikan sebagai alias


● Digunakan untuk mempersingkat penamaan
variabel
● Biasanya digunakan dalam structure

Bit Fields

● Sebuah struct dengan setiap elemen ditetapkan dengan jumlah bit tertentu
● Hanya dapat digunakan untuk tipe data unsigned int, signed int, ****atau int

Array di memuat 2000 elemen, yang


mana setiap elemen menggunakan 2 byte
(14 bit membutuhkan setidaknya dua
byte)

Union
Union digunakan untuk menggabungkan memory. Dengan menggunakan union, lokasi
memori dapat ditetapkan untuk dua atau lebih variabel dengan tipe data yang berbeda

syntax union: Contoh Penggunaan Union:


Enumaration
Enumerasi adalah tipe data dengan jumlah data yang telah ditentukan. Jumlah data yang
terbatas ini diberi nama agar program lebih mudah dibaca

syntax enumaration:

Contoh penggunaan enumaration:

Output:
0, 1, 2, 3, 4, 5, 6

Memory Allocation

Static keyword

● Keyword static dapat digunakan untuk tipe variabel atau nilai return suatu fungsi
tertentu
● Ciri static variabel:
1. Mengalokasikan memori saat program dimulai dan tidak mengalokasikan
memori saat program berakhir
2. Nilai defaultnya adalah 0

syntax penulisan static keyword:


contoh penggunaan static keyword:

Register Keyword

Keyword ini digunakan untuk meningkatkan kecepatan saat melakukan run time

syntax penulisan register keyword:

External keyword

Keyword ini digunakan untuk mengakses variabel pada suatu fungsi di file .c yang lain

syntax penulisan external keyword:

contoh pengunaan external keyword:

Command Line Argument

Terkadang suatu aplikasi membutuhkan input parameter dari command line, seperti DOS,
Linux. Contoh:
● copy file1 file2
● del file3

Bagaimana cara mendapatkan parameter file1, file2, dan file3?

Jawabannya adalah dengan menambahkan parameter pada main function

contoh penggunaan command line argument:

Untuk mengeksekusi perintah DOS atau Linux, dapat menggunakan library function
system(char *)

Output:

Welcome to BINUS The current date is:


08/07/2007 Enter the new date: (dd-mm-yy)

Memory Allocation

● Memory Allocation → Membutuhkan beberapa ruang memori(RAM) yang diatur oleh


operating system untuk dapat digunakan oleh program
● Memory De-allocation → Melepaskan ruang memori(RAM) kembali ke operating
system

Terdapat 2 jenis memory allocation, yaitu static memory allocation dan dynamic memory
allocation. Berikut perbedaannya
Static Dynamic

Dialokasikan saat compile time Dialokasikan saat run time

Disimpan di local stack memory Disimpan di heap memory

De-allocated saat program berakhir De-allocated saat program berakhir

Static Memory Allocation

Jika integer membutuhkan 4 bytes ruang memori, float


membutuhkan 8 bytes ruang memori, dan character
membutuhkan 1 byte ruang memori, maka data di atas
membutuhkan ruang memori sebanyak

100 * (9 + 26 + 8) + 4 = 4504 bytes

Dynamic Memory Allocation

Terdapat 4 fungsi pada dynamic memory allocation:

1. malloc() → digunakan untuk mengalokasikan satu blok memori secara dinamis di


memori heap
2. calloc() → digunakan untuk mengalokasikan beberapa blok memori secara dinamis
pada memori heap, dimana setiap elemen diberi ukuran calloc menginisialisasi
semua elemen dengan nol
3. realloc() → digunakan untuk mengalokasikan kembali beberapa blok memori atau
elemen secara dinamis di heap
4. free() → digunakan untuk melepaskan memori yang dialokasikan pada memori heap

contoh penggunan memory allocation:

Fungsi Syntax Contoh

malloc( ) void *malloc (size_t size); int *a;


a = (int *)malloc(sizeof(int));

calloc( ) void *calloc(size_t memblock, size_t size); int *a;


a = (int *)calloc(20,sizeof(int));

realloc( ) void *realloc(void *ptr, size_t size); int *a, *ptr;


a = (int *)realloc(ptr,sizeof(int));

free( ) void free (void *block); int *number1;


number1 = (int *) malloc (sizeof(int));
free(number1);

macro

● Menggunakan #define
● Ditempatkan di awal coding
● Ruang lingkupnya dimulai pada posisi deklarasi hingga akhir program
● Macro tidak dikenali oleh program lain

contoh penggunaan macro:

File Processing

Files and Streams

● Stream adalah urutan karakter. Semua input dan output adalah stream. File C adalah
stream itu sendiri
● Ketika program bahasa C dijalankan, maka terdapat 3 standar streams yang
diaktifkan dan terkait dengan file:
1. Standard input stream → Mengatur input stream dari keyboard
2. Standard output stream → Mengatur output stream ke layar monitor
3. Standard error stream → Mengatur error messaging
● File adalah kumpulan record, record adalah kumpulan field, field adalah kumpulan
byte, dan byte adalah kumpulan bit
File Definition

TEXT FILE disimpan dalam format teks atau file ASCII. Ukuran penyimpanannya tergantung
datanya (10000 data membutuhkan 5 byte). File dapat dibuka menggunakan aplikasi text
editor

Buffer Area

Buffer area adalah bagian dari memori yang digunakan sebagai tempat sementara sebelum
data dipindahkan ke suatu file. Buffer area juga dikenal sebagai stream pointer

syntax penulisan:

Open File

● Fungsi yang digunakan untuk membuka file adalah fopen()


● fopen() ditentukan di dalam library <stdio.h>
● fopen() mengembalikan pointer ke awal area buffer. Null akan dikembalikan jika file
tidak dapat dibuka

syntax penulisan:

Berikut ini beberapa mode atau keyword yang dapat dipakai untuk membuka suatu file:

Mode Deskripsi

r Membuka file untuk dibaca

w Membuat file untuk ditulis


a Membuka file untuk menambahkan data

r+ Membuka file untuk dibaca atau ditulis

w+ Membuat file untuk dibaca atau ditulis

a+ Membuka file untuk dibaca atau ditambahkan

rb Membuka binary file untuk dibaca

wb Membuat binary file untuk ditulis

Close File

● fclose() ditentukan di dalam library <stdio.h>


● fclose() akan mengembalikan nilai 0 jika sukses dijalankan, dan EOF (end of file)
atau -1 jika terjadi error
● fclose() akan melepaskan area buffer dan segera mengirim data yang tersisa ke file

syntax penulisan:

Input & Output File

Input → fscanf()

● Baca file dari file dengan format scanf


● Mengembalikan jumlah field yang dibaca saat berhasil, dan EOF jika terjadi error

Output → fprintf()

● Penulisan data ke file menggunakan format fprintf


● Mengembalikan jumlah byte yang ditulis jika berhasil dan nilai negatif jika terjadi error

syntax penulisan:

contoh penggunaan fprintf():


contoh penggunaan fscanf():

Sorting

Sorting adalah proses mengurutkan data dari suatu kumpulan data, seperti mengurutkan
data dalam array

sorting type:

1. Ascending → Mengurutkan data dari nilai terkecil ke terbesar


2. Descending → Mengurutkan data dari yang nilai terbesar ke terkecil

simple sort:

● bubble sort
● selection sort
● insertion sort

Intermediate sort

● quick sort
● merge sort
Bubble sort

source code:
Selection Sort

source code:
Insertion Sort
Source code:

Searching

Dalam suatu projek yang besar, maka program akan memerlukan data dalam jumlah yang
besar. Jika kita ingin mencari elemen data dari suatu array maka diperlukan ada searching
atau pencarian. Dalam C programming, terdapat beberapa metode dalam melakukan
searching, di antaranya:

1. Linear Search
2. Binary Search

Linear Search

● Dalam linear search, setiap elemen dalam array akan dibandingkan satu per satu
● Elemen dalam array tidak harus urut untuk melakukan metode ini karena pencarian
dilakukan secara urut dari elemen pertama hingga terakhir
● Algoritma:
1. n ⇒ total data dari array x
2. Untuk setiap x[i] dalam perulangan 0 < i < n-1, cek apakah x[i] sama dengan
nilai key atau tidak
3. Jika x[i] sama dengan key maka index = 1 yang berarti data yang dicari
ditemukan, dan perulangan dihentikan
4. Jika tidak, maka pencarian akan terus dilakukan hingga elemen array terakhir
5. Jika pencarian sudah mencapai elemen terakhir dan tidak menemukan
elemen yang dicari, maka index = -1 yang berarti data yang dicari tidak
ditemukan
Binary Search

● Jika linear search bekerja dengan baik dengan data yang tidak terurut, maka binary
search harus digunakan untuk data yang sudah terurut
● Binary search bekerja jauh lebih efektif dan efisien dibanding linear search, walaupun
dalam implmentasi codingnya sendiri sedikit lebih kompleks
● Algoritma:
1. n ⇒ total data dalam array x
2. left = 0, right = n-1
3. mid = (left + right) / 2
4. Jika x[mid] = key maka index = mid, dan data yang dicari sudah ditemukan
5. Jika x[mid] < key maka left = mid + 1
6. Jika x[mid] > key maka right = mid + 1
7. Jika left ≤ right dan x[mid] ≠ key, maka ulangi poin 3
8. Jika x[mid] ≠ key maka index = -1 yang berarti data yang dicari tidak
ditemukan

Advanced Learning In C

C Fundamentals
Advanced learning dalam bahasa C sendiri berfokus pada bagaimana developer bisa
membuat kode dari program seefektif dan seefisien mungkin
contoh:

Contoh di atas menunjukkan penulisan kode yang buruk karena baris 2 ditulis dalam satu
baris. Maka perlu dilakukan refactor menjadi
Beberapa contoh lainnya:

Algortihm Complexity
Secara umum, kita tidak seberapa memperhatikan kompleksitas suatu algoritma, baik
secara seberapa besar penyimpanan maupun kecepatan waktu program. Padahal jika
program dibuat seefektif dan seefisien mungkin, maka program akan menjadi jauh lebih
baik. Berikut ini salah satu contoh notasi kompleksitas algoritma dengan notasi Big-O

Algoritma Sorting Kasus Terburuk Kasus Rata-Rata Kasus Terbaik

Bubble Sort O(n2) O(n2) O(n2)

Selection Sort O(n2) O(n2) O(n2)

Insertion Sort O(n2) O(n2) O(n)

Quick Sort O(n2) O(n log n) O(n log n)

Merge Sort O(n log n) O(n log n) O(n log n)

Anda mungkin juga menyukai