1. Bahasa tingkat tinggi, merupakan bahasa yang mudah dimengerti oleh manusia
karena menggunakan bahasa yang biasa digunakan oleh manusia, yang biasanya
didominasi menggunakan bahasa inggris.
3. Bahasa tingkat rendah, merupakan bahasa yang berupa kode-kode singkatan dan
sulit dipahami karena instruksinya menggunakan bahasa mesin.
Contoh : Assembly.
Untuk pembahasan materi ini, bahasa pemrograman yang akan dipelajari adalah
bahasa C++, karena C++ merupakan perkembangan dari bahasa C yang
merupakan bahasa yang banyak digunakan pada mikrokontroler.
Algoritma
Setiap jenis bahasa memiliki struktur penyusunnya sendiri berupa prosedur
sistematis yang dinyatakan dalam kode untuk membuat perintah. Dalam
penyusunan prosedur tersebut diperlukan sebuah algoritma. Algoritma merupakan
deretan instruksi yang jelas dalam menyelesaikan suatu masalah.
Analisis :
o Input : a (alas) dan t (tinggi)
o Luas Segitiga = a*t/2
Algoritma :
1.
a. Masukan nilai alas (a) dan nilai tinggi segitiga (t)
b. Maka untuk menghitung luas digunakan rumus alas dengan tinggi
yang sudah ditentukan
c. Rumus untuk menghitung Luas Segitiga yaitu L = 1/2*a*t
d. Nilai L (Luas) akan dicetak sebagai output ke perangkat output
(keluaran)
Flowchart
Akan tetapi kalau hanya algoritma saja mungkin agak susah dipahami, oleh karena
itu agar mudah dipahami maka diperlukan sebuah flowchart. Flowchart adalah
adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan
proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan
proses lainnya dalam suatu program.
Simbol flowchart
Contoh Flowchart untuk mencari luas segitiga
Gambar Flowchart Menghitung Luas Segitiga
Pendeklarasian :
#include Pada bagian ini, kita mendefinisikan library (pustaka) apa saja yang akan kita gun
<iostream> program. Library bisa kita anggap sebagai program lain yang ingin kita gunakan d
program kita. Sebagai contoh <iostream> merupakan library berisi fungsi untuk in
using Bagian ini sebenarnya bersifat opsional, bisa ditulis bisa tidak. Pada contoh, kita m
namespace namespace std karena fungsi-fungsi pada iostream dibungkus dalam namespace
std; kita tidak menggunakan namespace std, maka untuk menggunakan fungsi cin da
pada iostream harus diawali dengan std::.
int main () { Bagian ini adalah bagian terpenting, karena pada bagian ini kita akan banyak men
program. Fungsi main() adalah fungsi yang akan dieksekusi pertama kali saat pro
Fungsi ini wajib ada di setiap program yang dibuat untuk dieksekusi.
}
; Setiap selesai menulis satu perintah, pastikan diakhiri dengan tanda “;” yang men
bahwa satu baris perintah itu telah selesai
Perintah Output :
simbol << ditambahkan setelah cout dan kemudian baru bisa ditampilkan teks ke layar da
ingin ditampilkan harus berada di dalam tanda petik (“ ”) agar bisa dicetak. untuk membua
bisa menggunakan “endl” atau simbol “\n”.
contoh :
cout<<”Hello World!”<< endl ;
cout<<”Hello World! /n” ;
cin digunakan untuk mengambil input dari keyboard. Fungsi cin membutuhkan variabel untuk
data yang diinputkan. Variabel berfungsi untuk menyimpan data saat program berjalan. U
akan dibahas pada BAB 6. tipe data
Contoh :
int x;
cout<<“Masukkan x : “;
cin>>x;
scanf() Fungsi scanf() sebenarnya dari bahasa C, tapi bisa juga digunakan pada C++. Fungsi sca
fungsi untuk mengambil input dari keyboard.
Operator Aritmatika :
+ Penjumlahan
– Pengurangan
* Perkalian
/ Pembagian
% Sisa Bagi
Operator Penugasan :
= Pengisian nilai
== Sama dengan
|| Logika OR
! Negasi / Kebalikan
Operator Bitwise :
& AND
| OR
^ XOR
~ NOT
Contoh dan hasil dari program dari perhitungan luas segitiga dengan
menggunakan bahasa C++
Program :
#include <iostream>;
#include <string>;
using namespace std;
int main()
{
int a, t;
float luas;
cout<<"Masukkan panjang alas: ";
cin>>a;
cout<<"Masukkan tinggi segitiga: ";
cin>>t;
luas = 0.5*a*t;
cout<<"Luas segitiga adalah "<< luas;
}
Hasil :
Gambar Hasil Perhitungan Luas Segitiga
Sumber :
o informatikalogi.com
o ppns.ac.id
o w3schools.com
o cplusplus.com
BAB 2. Condition
1. Kondisi “if”
Kondisi if digunakan untuk mengeksekusi sebuah statement atau blok program
hanya jika kondisi yang dipersyaratkan terpenuhi.
Gambar Flowchart Kondisi if
if (kondisi)
statement
Dengan kondisi merupakan ekspresi yang akan diuji. Jika hasil pengujian kondisi
terpenuhi (bernilai benar), maka statement akan dieksekusi. Jika hasil pengujian
kondisi tidak terpenuhi (bernilai salah), maka statement tidak akan dijalankan
(diabaikan), dan program akan melanjutkan mengeksekusi statement-statement
program selanjutnya. Sebagai contoh, program berikut akan menuliskan “x bernilai
seratus” apabila nilai yang tersimpan pada variabel x adalah 100.
if (x == 100)
if (x == 100){
cout << x;
Program lengkapnya
#include <iostream>
int main()
int x;
cout<<"Masukkan x : ";
cin>>x;
if (x == 100){
cout << x ;
}
2. Kondisi “if-else”
Untuk dapat mengatur tindakan apa yang akan dijalankan oleh program seandainya
kondisi yang dipersyaratkan tidak terpenuhi, maka dapat menggunakan
kondisi else yang digunakan bersama-sama dengan if. Kondisi else berarti apabila
semua kondisi tidak terpenuhi, maka statement pada kondisi else yang akan
menjadi keluarannya. Format penggunaan if..else adalah sebagai berikut :
if (kondisi)
statement1
else statement2
Contoh program
if (x == 100) {
}
else {
}
Statement cout << “x bernilai 100” akan dicetak di layar monitor apabila nilai
masukan x adalah 100. Apabila nilai masukan x tidak sama dengan 100, maka pada
layar monitor akan tercetak tulisan : x bukan 100.
Program lengkapnya
#include <iostream>
int main()
{
int x;
cout<<"Masukkan x : ";
cin>>x;
if (x == 100) {
}
else {
}
Berikut ini adalah kode program yang akan menguji apakah nilai yang tersimpan
pada variabel x merupakan bilangan : positif, negatif, atau nol.
if (x>0) {
}
else if (x<0) {
}
else {
}
Program diatas menjelaskan apabila nilai masukan x lebih dari 0 maka bilangan x
adalah positif, kemudian apabila nilai masukan x kurang dari 0 maka bilangan x
adalah negatif. Pada statement terakhir apabila nilai masukan x adalah bukan
bilangan positif atau negatif, maka nilai x adalah 0 karena hanya bilangan 0 yang
bukan merupakan bilangan negatif maupun bilangan positif.
Program lengkapnya
#include <iostream>
int main()
int x;
cout<<"Masukkan x : ";
cin>>x;
if (x>0) {
}
else if (x<0) {
}
else {
}
Gambar Statement 1
Gambar Statement 2
Gambar Statement Lainnya
4. Kondisi “switch-case”
Kondisi switch-case digunakan untuk mengecek sejumlah atau beberapa
kemungkinan ekspresi. Berikut flowchart dari switch-case :
Gambar Flowchart Switch-Case
switch (ekspresi){
case konstanta 1 :
case konstanta 2 :
kumpulan statement 2; break;
default :
switch (x) {
case 1 :
break;
case 2 :
break;
default :
Program lengkapnya
#include <iostream>
int main()
int x;
cout<<"Masukkan x : ";
cin>>x;
switch (x) {
case 1 :
break;
case 2 :
break;
default :
}
Gambar Statement 1
Gambar Statement 2
Gambar Statement default
Sumber :
o uny.ac.id
o w3schools.com
o cplusplus.com
o medium.com
BAB 3. Looping
1. Loop “while”
Format penggunaan while adalah sebagai berikut :
while (ekspresi)
statement
Berikut flowchart perintah while :
Gambar Flowchart Perintah While
#include <iostream>
using namespace std;
int main(){
int n;
cout << "masukkan angka mulai = ";
cin >> n;
while (n > 0){
cout << n << ", ";
--n;
}
cout << "FIRE!";
return 0;
}
Output program :
Dalam menggunakan loop while, pastikan program akan berakhir pada titik tertentu.
Jika tidak, loop akan berlanjut hingga tak terhingga. Seperti contoh program di atas,
pengulangan while berakhir dikarenakan kondisi n>0 sudah tidak terpenuhi akibat
dari nilai n dikurangi dengan 1 (melalui perintah –n) mencapai angka 0.
2. Loop “do-while”
Format penggunaan do…while adalah sebagai berikut :
do statement
while (kondisi);
Kondisi do-while hampir sama seperti loop while, bedanya hanya pada letak
statementnya. Loop do-while akan mengevaluasi nilai kondisi yang dipersyaratkan
setelah statement do dijalankan.
#include <iostream>
using namespace std;
3. Loop “for”
Format penggunaan for adalah sebagai berikut :
Berikut flowchart perulangan for :
Gambar Flowchart Perulangan For
#include <iostream>
using namespace std;
int main(){
for (int n = 10; n > 0; n--){
cout << n << ", ";
}
cout << "FIRE!";
return 0;
}
Output :
Gambar Output
Statement Jump
a. Statement : break
Dengan menggunakan perintah break, loop dapat dilompati meskipun kondisi akhir
masih belum terjadi. Hal ini dapat dilakukan sebagai strategi untuk menghindari loop
yang tak terhingga atau memaksa program untuk menghentikan operasi perulangan.
Gambar Flowchart Statement Break
Berikut contoh program yang akan menghentikan perulangan sebelum kondisi akhir
perulangan terpenuhi :
#include <iostream>
using namespace std;
int main (){
int n;
}
return 0;
}
Output :
b. Statement : continue
Statement continue menyebabkan program men-skip sisa loop yang sedang
dijalankan (seperti telah menemui akhir loop) dan menyebabkan program melompat
ke awal perulangan.
Berikut merupakan flowchart statement continue :
Gambar Flowchart Statement Continue
#include <iostream>
using namespace std;
int main(){
for (int n = 10; n > 0; n--){
if (n == 5) continue;
cout << n << “, “;
}
cout << “FIRE!”;
return 0;
}
Output :
c. Statement : goto
Goto mengakibatkan program melompat secara mutlak ke titik atau bagian lain pada
program. Kode program yang menjadi tujuan dari lompatan goto diidentifikasi
dengan label, yang kemudian digunakan sebagai argumen bagi statement goto.
Label tersebut merupakan sebuah identifier yang diikuti dengan tanda titik dua (:).
Gambar Flowchart Statement Goto
#include <iostream>
using namespace std;
int main(){
int n;
cout<<"Masukkan nilai : ";
cin>>n;
loop :
cout << n << ", ";
n--;
if (n>0) goto loop;
cout << "FIRE!";
return 0;
}
Output :
Sumber :
o uny.ac.id
o w3schools.com
o cplusplus.com
o medium.com
BAB 4. Fungsi dan Rekursi
Fungsi
Sebuah fungsi (function) merupakan sekumpulan statement yang akan dieksekusi
apabila fungsi tersebut dipanggil pada titik tertentu dalam program. Format
penggunaan fungsi dalam program C++ adalah sebagai berikut :
Keterangan :
o tipe : merupakan tipe data yang nilainya dikembalikan oleh fungsi
yang bersangkutan.
o nama : merupakan identifier yang digunakan untuk memanggil
fungsi yang bersangkutan.
o parameter : setiap parameter terdiri dari tipe data dan identifier (contoh :
int x), dan bertindak sebagai variabel lokal dalam fungsi tersebut.
Parameter-parameter yang berbeda dipisahkan dengan tanda koma (,).
o statement : merupakan tubuh fungsi, yang berupa blok program yang
berada diantara tanda kurung kurawal ({ }).
#include <iostream>
int r;
r = a + b;
int main(){
int z;
return 0;
}
Output :
1. Fungsi “void”
Void adalah fungsi yang tidak perlu mengembalikan sebuah nilai. Fungsi void dapat
digunakan seperti pada program berikut :
#include <iostream>
printmessage();
Output :
Fungsi pada program tersebut hanyalah sebagai mencetak pesan dan tidak perlu
ada pengembalian sebuah nilai.
2. Fungsi “Rekursif”
Rekursif adalah suatu proses dari sebuah fungsi yang dapat memanggil dirinya
sendiri secara berulang-ulang. Berikut contoh program fungsi rekursif :
#include <iostream>
int main(){
int r, hasil;
cin >> r;
cout << "Faktorial " << r << "! = " << hasil;
Output :
Sumber :
o cplusplus.com
o petanikode.com
o w3schools.com
o uny.ac.id
BAB 5. Array
Array merupakan struktur data yang digunakan untuk menyimpan sekumpulan data
dalam satu tempat. Setiap data dalam Array memiliki indeks, sehingga kita akan
mudah memprosesnya. Indeks array selalu dimulai dari angka nol (0).
A. Array 1 Dimensi
Array digunakan untuk menyimpan lebih dari 1 data dengan tipe data yang sama.
Ilustrasi Array dapat dilihat sebagai berikut :
o Array Data elemen pertama ditulis sebagai data[0]
o Array Data elemen kedua ditulis sebagai data[1]
o Array Data elemen ketiga ditulis sebagai data[2]
o Array Data elemen keempat ditulis sebagai data[3]
o Array Data elemen kelima ditulis sebagai data[4]
atau :
Penulisan jumlah elemen pada array juga mempengaruhi isi array, sebagai
contoh :int
Jadi isi Data pada elemen ketiga dan keempat akan kosong jika jumlah elemen
sudah ditetapkan. tetapi jika jumlah elemen tidak ditetapkan (Data[]), maka array
akan menyesuaikan sendiri.
#include <iostream>
int n;
}
return 0;
}
Output :
B. Array Multidimensi
Array multidimensi dapat dideskripsikan sebagai tabel. Sebagai contoh, array dua
dimensi dapat dibayangkan sebagai sebagai tabel dua dimensi dengan masing-
masing elemen terdiri dari elemen baris dan kolom, serta memiliki tipe data yang
sama. Array multidimensi biasanya digunakan untuk membuat matriks.
Contoh array 2 dimensi dan ilustrasinya :
int data[3,4];
data[1, 0] = 7;
#include <iostream>
int main(){
int matriks[3][3] = {
{1, 3, 5},
{5, 3, 1},
{6, 2, 3}
};
cout<<"Isi Data pada indeks ke-(2,1): "<< matriks[2][1];
return 0;
Output :
Sumber :
o cplusplus.com
o uny.ac.id
o w3schools.com
BAB 6. Variabel dan Tipe Data
Variabel adalah sebuah nama lokasi penyimpanan di dalam memori. Sementara tipe
data adalah jenis data yang akan disimpan di dalam variabel. Pembuatan variabel
atau deklarasi variabel di C++ dapat kita lakukan seperti :
string nama;
int umur;
char jenis_kelamin;
1. int
#include <iostream>
return 0;
Output :
1000
2. float
int main () {
return 0;
Output :
6.65
3. double
#include <iostream>
int main () {
return 0;
Output :
99.99
int main() {
return 0;
Output :
#include <iostream>
int main () {
return 0;
Output :
Selain itu, bisa menggunakan kode ASCII untuk menampilkan karakter tertentu :
#include <iostream>
int main () {
return 0;
Output :
#include <iostream>
int main() {
return 0;
Output :
Hello
Sumber :
o w3schools.com
o cplusplus.com
o tutorialspoint.com
BAB 7. Stack dan Queue
A. Stack
Stack adalah struktur data yang mengikuti prinsip LIFO (Last In First Out), yang
berarti elemen yang dimasukkan terakhir akan dikeluarkan terlebih dahulu.
Ilustrasinya dapat dilihat sebagai berikut :
#include <iostream>
#define MAX 10
struct Stack {
} Tumpukan;
void init() {
Tumpukan.top = -1;
}
bool isEmpty() {
bool isFull() {
void push() {
if (isFull()) {
} else {
Tumpukan.top++;
cout << "Data " << Tumpukan.data[Tumpukan.top] << " masuk ke stack"
<< endl;
}
void pop() {
if (isEmpty()) {
} else {
cout << "\nData " << Tumpukan.data[Tumpukan.top] << " sudah terambil"
<< endl;
Tumpukan.top--;
}
}
void printStack() {
if (isEmpty()) {
} else {
}
int main() {
init();
do {
printStack();
switch (pilihan) {
case 1:
push();
break;
case 2:
pop();
break;
default:
cout << "Pilihan tidak tersedia" << endl;
break;
}
Outputnya :
B. Queue
Queue adalah struktur data yang mengikuti prinsip FIFO (First In First Out), yang
berarti elemen yang dimasukkan pertama akan dikeluarkan terlebih dahulu.
Ilustrasinya dapat dilihat sebagai berikut :
//Deklarasi struct antrian
struct Queue {
}Q;
//cek apakah antrian penuh
bool isFull() {
//cek apakah antrian kosong
bool isEmpty() {
return Q.rear == 0;
//Menampilkan Queue
void printQueue() {
if (isEmpty()) {
}
else {
//manambahkan data ke antrian
void enqueue() {
if (isFull())
{
}
else {
int data;
Q.data[Q.rear] = data;
Q.rear++;
printQueue();
}
// mengambil data dari antrian
void dequeue() {
if (isEmpty())
{
}
else{
cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;
Q.rear--;
printQueue();
}
int main() {
int choose;
do
{
//Tampilan menu
<< "-------------------\n"
<< "-------------------\n"
switch (choose)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
default:
cout << "Pilihan tidak tersedia";
break;
}
return 0;
Output :
Gambar Hasil Queue
Sumber :
o hackerearth.com
o bekti.net
o geeksforgeeks.org
BAB 8. Algoritma Pengurutan (Sorting)
B A C A =====> A A B C
1. Selection Sort
Mencari elemen minimum diantara array[m…n], dan menaruhnya di array[m].
Misalkan elemen-elemen yang akan diurutkan : 64, 25, 12, 22, 11
o Elemen minimum diantara array[0…4]
o Elemen minimum diantara array[1…4]
o Elemen minimum diantara array[2…4]
11, 12, 22 ,25, 64
o Elemen minimum diantara array[3…4]
Contoh program sorting dengan metode Selection sort dengan array pada
program :
#include<iostream>
using namespace std;
min = i;
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
int main() {
int i;
cout<<endl;
selectionSort(a, n);
return 0;
Output :
Gambar Output Selection Sort
2. Bubble Sort
Membandingkan 2 elemen dan menukarnya jika syarat terpenuhi. Misalkan elemen-
elemen yang akan diurutkan : 5, 1, 4, 2, 8
o Percobaan pertama:
o Percobaan kedua:
1, 4, 2, 5, 8 => 1, 4, 2, 5, 8
o Percobaan ketiga dibutuhkan untuk memastikan bahwa elemen-elemen
sudah terurut :
1, 2, 4, 5, 8 => 1, 2, 4, 5, 8
3. Insertion Sort
Menempatkan elemen minimum ke awal array setelah dibandingkan dengan
elemen-elemen sebelumnya. Misalkan elemen-elemen array yang akan diurutkan :
12, 11, 13, 5, 6
o Elemen 2 dibandingkan dengan elemen 1
o Elemen 3 dibandingkan dengan elemen 1 dan 2
11, 12, 13, 5, 6 => 11, 12, 13, 5, 6
o Elemen 4 dibandingkan dengan elemen 1, 2 dan 3
11, 12, 13, 5, 6 => 5, 11, 12, 13, 6
o Elemen 5 dibandingkan dengan elemen 1, 2, 3 dan 4
5, 11, 12, 13, 6 => 5, 6, 11, 12, 13
Sumber :
o geeksforgeeks.org
o tutorialspoint.com
o kodedasar.com
1. Sequential Search
Dalam pencarian suatu elemen, list atau array dilalui secara berurutan dan setiap
elemennya diperiksa. Salah satu contohnya adalah Linear Search.
#include <iostream>
int main(void){
int iArray[] = {1706, 30, 45, 60, 90, 42, 1138, 47, 451, 6174, 73};
} else {
std::cout << "Value found at index " << returnVal << std::endl;
}
return 0;
if(list[start]==key){
return start;
} else {
start++;
}
}
return -1;
Output :
2. Interval Search
Dikhususkan untuk mencari struktur data yang sudah terurut. Dalam pencarian,
Algoritma tipe ini lebih efisien dibanding Linear Search karena dilakukan dengan
terus mengincar titik tengah dari suatu struktur data dan membagi search space-nya
menjadi 2.
Sumber :
o tutorialspoint.com
o geeksforgeeks.org
o slideplayer.info