Disusun oleh
Panitia HIMTI-KIT 2022
Pengenalan Algoritma
Pengertian Algoritma
Contoh Algoritma
algoritma mengirim Email
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
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
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
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.
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.
Tipe Data
Contoh Penggunaan
Casting
Casting merupakan proses mengubah/mengkonversi tipe data
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
● 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:
\t horizontal tab
\v vertical tab
\\ print “\”
\? print “?”
\” print karakter “
\’ print karakter ‘
Operators
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
++ Increment
-- Decrement
contoh:
3. Operator Perbandingan
Operator ini digunakan untuk membadingkan apakah suatu statement diaggap
true(1) atau false(0)
Simbol Fungsi
== sama denga
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
A B AND OR
● 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:
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.
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:
Function
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.
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.
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
Structure adalah tipe data untuk menyimpan sekumpulan data dengan tipe data yang
berbeda - beda atau bersifat heterogen.
Output:
A position:
x and y position? 5 10
B position :
x and y position? 15 15
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
Array Of 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
Union
Union digunakan untuk menggabungkan memory. Dengan menggunakan union, lokasi
memori dapat ditetapkan untuk dua atau lebih variabel dengan tipe data yang berbeda
syntax 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
Register Keyword
Keyword ini digunakan untuk meningkatkan kecepatan saat melakukan run time
External keyword
Keyword ini digunakan untuk mengakses variabel pada suatu fungsi di file .c yang lain
Terkadang suatu aplikasi membutuhkan input parameter dari command line, seperti DOS,
Linux. Contoh:
● copy file1 file2
● del file3
Untuk mengeksekusi perintah DOS atau Linux, dapat menggunakan library function
system(char *)
Output:
Memory Allocation
Terdapat 2 jenis memory allocation, yaitu static memory allocation dan dynamic memory
allocation. Berikut perbedaannya
Static Dynamic
macro
● Menggunakan #define
● Ditempatkan di awal coding
● Ruang lingkupnya dimulai pada posisi deklarasi hingga akhir program
● Macro tidak dikenali oleh program lain
File Processing
● 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
syntax penulisan:
Berikut ini beberapa mode atau keyword yang dapat dipakai untuk membuka suatu file:
Mode Deskripsi
Close File
syntax penulisan:
Input → fscanf()
Output → fprintf()
syntax penulisan:
Sorting
Sorting adalah proses mengurutkan data dari suatu kumpulan data, seperti mengurutkan
data dalam array
sorting type:
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