Pengenalan Algoritma
dan Pemrograman
Algoritma
Dalam ilmu matematika dan komputasi, algoritma berarti
langkah-langkah yang harus ditempuh untuk kalkulasi atau
pemecahan masalah. Pada dasarnya definisi algoritma
abstrak, untuk lebih mudahnya dapat dipelajari melalui
contoh studi kasus berikut.
Jawab :
Dengan mudah persoalan tersebut dijawab dengan langkah-
langkah sebagai berikut :
1. Ambil pisau
2. Ambil 1 buah kentang
3. Kupas kulit kentang tersebut
4. Taruh kentang di mangkuk
5. Kembalikan pisau ke tempatnya jika kentang sudah habis
Ambil Taruh di
Kentang mangkuk
Flowchart 1 - Langkah Mengupas Kentang
Kompleksitas Algoritma
Algoritma bisa saja sederhana seperti contoh mengupas
kentang pada sebelumnya. Namun, perlu diketahui
terkadang ada beberapa proses yang dilewati dan dianggap
sudah dilakukan, contohnya seperti permasalahan berikut.
Jawab :
Terjadi beberapa perubahan pada flowchart mengupas
kentang seperti contoh berikut :
Taruh kentang di
Tajamkan pisau Nyalakan kompor
mangkok
Simbol Makna
Pseudocode Pascal
Begin begin
<isi program> <isi program>;
End end.
C++ Fortran
#include <nama library>
using namespace std;
program <nama program>
int main ()
<isi program>
{
<isi program>
end program <nama program>
return 0;
}
Tabel 2 - Perbedaan Sintaks Awal dan Akhir Program
Untuk memahami lebih jauh mengenai perbedaan sintaks
dalam masing-masing bahasa, perhatikan contoh kasus
berikut.
Jawab :
Pseudocode Pascal
Begin begin
Output (Hello World !) write(Hello World !);
End end.
C++ Fortran
#include <iostream>
using namespace std;
program HelloWorld
int main ()
write(*,*) Hello World !
{
cout << Hello World !;
end program HelloWorld
return 0;
}
Tabel 3 - Hello World dalam Empat Bahasa
Jawab :
<iostream> merupakan library yang mengandung fungsi cin dan cout yang
digunakan di dalam program. Fungsi cout digunakan untuk menampilkan teks
ke layar.
Input, Output, dan Komentar
Dalam pemrograman, dikenal istilah input, output, dan
komentar / comment. Input adalah masukan yang diberikan
oleh pengguna / user ketika program dijalankan, sementara
output adalah teks atau karakter tertentu yang ditampilkan
ke layar devais.
#include <iostream>
#include <string>
using namespace std;
int main() {
Jawab :
// <kalimat> adalah one line comment / 1 baris. \n merupakan penanda
pergantian baris pada C. \n bisa juga diganti menggunakan sintaks endl. Hal
yang berhubungan dengan ini akan dipelajari di subbab selanjutnya, yaitu
variabel.
Jawab :
Dari soal yang diberikan diketahui bahwa dibutuhkan 3
variabel yaitu nama, NIM, dan fakultas. Nama dan fakultas
lebih tepat menggunakan variabel string, sementara NIM
dapat menggunakan long integer ataupun string.
int main () {
string nama; // deklarasi variabel nama
string fakultas; // deklarasi variabel fakultas
long int NIM; // deklarasi variabel NIM
// output ke layar
cout << Nama anda << nama << , NIM anda << NIM
<< , Fakultas << fakultas;
return 0;
}
Adityo
16511298
STEI
Operator Aritmatik
Pada dasarnya, pemrosesan akan membutuhkan operasi
secara matematis seperti tambah, kurang, kali, dan bagi.
Operator aritmatik memiliki fungsi untuk melakukan operasi
secara matematis pada bahasa pemrograman. Jenis operator
aritmatik dapat dilihat pada tabel berikut.
Jawab :
Dalam kasus ini, akan digunakan pengubahan tipe data
ketika operasi pembagian sedang berjalan. Contoh
programnya adalah sebagai berikut.
#include <iostream>
using namespace std;
int main () {
// Deklarasi variabel
int a,b
float hasil;
return 0;
}
Perlu diperhatikan bahwa (float) mengubah fungsi operator
div (pembagian bil. bulat) menjadi operator pembagian biasa
(bilangan desimal). Bisa juga dilakukan lewat bentuk berikut :
hasil = float (a) / b.
Operator Relasi
Operator relasi adalah operator yang digunakan untuk
menyatakan relasi atau hubungan antara dua variabel.
Berbeda dengan operator aritmatik, operator relasi akan
selalu menghasilkan data true atau false.
Operator Logika
Tipe operator yang ke tiga adalah operator logika. Operator
logika adalah simbol yang memiliki fungsi khusus untuk
melakukan operasi logika seperti and, or, dan not.
Penggunaan operator logika biasanya berhubungan dengan
operator relasi, yaitu sebagai penghubung antara dua
operator relasi. Lebih jelasnya, operator logika
menghubungkan hasil (true atau false) yang didapat dari
operasi relasi dan memberikan hasil baru (true atau false)
berdasarkan operasi logika matematika.
if <kondisi/expression>
{ statement 1 } Start
Atau No
Cond. Process 1
if <kondisi/expression> Yes
{ statement 1 }
else Process 2 End
{ statement 2 }
Bagian expression adalah bagian syarat dari if-conditional.
Pada bentuk ke dua, apabila bagian expression dipenuhi,
maka program akan menjalankan statement 1, sementara
jika tidak dipenuhi, maka program akan menjalankan
statement 2. Statement berisi perintah-perintah yang akan
dijalankan oleh program seperti perintah print, scan, atau
manipulasi variabel.
if <kondisi/exp. 1>
{statement 1}
else { if <kondisi/exp. 2>
{statement 2}
else { if <kondisi/exp. 3>
{statement 3}
.
.
.
else { if <kondisi/exp. n>
{statement n}
else
{statement else}
}}}}}}}
Jawab :
Untuk membuat program yang menjawab permasalahan
diatas, perlu diketahui syarat-syarat atau kondisi dari
permasalahan. Kita tahu bahwa bilangan positif adalah
bilangan dengan nilai > 0, bilangan negative adalah bilangan
dengan nilai < 0, dan bilangan nol memiliki nilai = 0. Untuk itu
kita harus mengecek setiap syarat yang ada. Urutan
pengecekan sebenarnya bebas, berikut contoh jawaban.
#include <iostream>
using namespace std;
int main () {
int a; // deklarasi variabel
return 0;
}
int a;
for (a=1;a<=5;a++){
cout << \nHello !;
}
Output :
Hello !
Hello !
Hello !
Hello !
Hello !
Do-While While-Do
do while (<kondisi loop>)
{<statement loop>} {<statement loop>}
while (<kondisi loop>);
Jawab :
Untuk mengerjakan kasus ini, perlu diketahui terdapat 2
operasi yang dilakukan, yaitu menampilkan teks dan
melakukan perulangan. Teks yang ditampilkan dibuat dengan
logika if sederhana, jika angka tidak sama dengan nol maka
teks yang ditampilkan adalah angka tersebut. Bagian kedua,
yaitu looping, dapat dikerjakan menggunakan Do-While
maupun While-Do. Perbedaan utamanya terdapat pada
kondisi looping. Untuk lebih jelasnya, simak contoh program
pada halaman berikutnya.
#include <iostream>
using namespace std;
int main () {
// Deklarasi variabel
int a, i;
// Proses
cin >> a; // Input
return 0;
}
For Loop
Bentuk looping yang ke tiga adalah bentuk For. Bentuk ini
umumnya digunakan untuk pengulangan yang sudah
diketahui jumlahnya. Meskipun begitu, loop for bisa saja
dibuat seperti loop while. Sintaks loop for adalah sebagai
berikut.
Jawab :
Sebelum menjawab kasus ini kita perlu tahu terlebih dahulu,
ada berapa variabel yang kita butuhkan dan proses seperti
apa yang berjalan di dalam kasus ini. Variabel utama yang
digunakan dalam kasus ini adalah variabel penyimpan input
user dan variabel yang digunakan sebagai counter pada loop
for. Karena diminta jumlah dari deret, maka diperlukan pula
sebuah variabel untuk menyimpan hasil penjumlahan.
#include <iostream>
using namespace std;
int main () {
// deklarasi variabel
int i, a, sum;
// inisialisasi sum
sum = 0;
// proses looping
for (i=0;i<=a;i++){
sum = sum + i;
} // loop selesai ketika i > a
// output ke layar
cout << \njumlah deret adalah : << sum;
return 0;
}
Jawab :
Inisialisasi sum diperlukan karena pada proses penjumlahan sum akan
memanggil dirinya sendiri. Apabila sum tidak diinisialisasi, maka nilai sum
adalah null / tidak memiliki nilai sehingga akan terjadi error ketika ia
memanggil dirinya sendiri. Inisialisasi variabel sangat penting dalam
pemrograman khususnya ketika pemanggilan dirinya sendiri diperlukan.
Bab IV
Array
Array
Setelah membahas mengenai variabel dan beberapa proses
seperti percabangan dan pengulangan, pada bab ini kita akan
membahas kumpulan variabel atau array.
Dimensi
Seperti sebuah tabel, sebuah array dapat dibuat memiliki
beberapa dimensi. Dimensi disini berarti indeksnya memiliki
n komponen. Contoh, array berdimensi satu dengan jumlah
array 4 buah akan memiliki indeks dari nol sampai tiga. Array
dengan jumlah array 4 buah tersebut bisa saja
direpresentasikan menggunakan array dua dimensi dengan
ukuran 2x2. Array dua dimensi tersebut akan memiliki indeks
dari [0,0] sampai [1,1]. Untuk lebih jelasnya dapat disimak
ilustrasi berikut ini.
Jawab :
Sebelum menjawab kasus ini, kelompokkan terlebih dahulu
informasi yang ada dalam soal, seperti :
1. Terdapat array satu dimensi dengan isi bilangan
{0,3,4,1,2,5,6}.
2. Program yang diminta menerima input user berupa
integer kemudian melakukan pengecekan ke array satu
dimensi tersebut untuk menemukan bilangan yang
diinput user.
3. Program akan memberikan output apabila bilangan
ditemukan. Jika bilangan tidak ditemukan, maka
program akan memberitahu user bahwa bilangan yang
dicari tidak ditemukan.
int main () {
// Deklarasi variabel
int i, a; // i = counter, a = input user
int tabel[7] = {0,3,4,1,2,5,6};
// variabel array
// Loop
for (i = 0; i < 9; i++) {
if (a == tabel[i])
// Angka ditemukan
{
cout << \nBilangan anda ditemukan;
break;
}
} // loop selesai apabila I >= 9 atau break
return 0;
}
Jawab :
Sama seperti kasus sebelumnya, pertama-pertama
kelompokkan informasi yang ada di soal :
1. Terdapat 2 array 2 dimensi dengan ukuran 2x2
2. Isi array merupakan bilangan integer, dibebaskan.
Asumsikan isi array sudah fix.
3. Operasi yang dilakukan adalah penjumlahan antara dua
matrix, kemudian hasil operasi ditampilkan di layar.
Dari informasi yang ada, dibutuhkan empat variabel, yaitu
variabel counter 1, variabel counter 2, variabel matriks 1,
dan variabel matriks 2. Hasil operasi bisa saja dimasukkan
ke variabel baru, namun untuk mempersingkat, akan kita
buat isi program sebagai berikut.
#include <iostream>
using namespace std;
int main () {
// Inisialisasi dan deklarasi variabel
int i,n;
int mat1[2][2] = {{2,3},{5,7}};
int mat2[2][2] = {{1,6},{4,9}};
return 0;
}
Perlu diperhatikan bahwa terdapat 2 buah struktur loop di
dalam program di atas. Hal ini dikarenakan looping dilakukan
satu persatu, pertama looping akan dilakukan pada kolom,
ketika mencapai akhir kolom, baris akan berubah dan
counter kolom akan direset. Hal ini diulang terus menerus
hingga mencapai akhir baris.
Bab V
Fungsi dan Prosedur
Fungsi dan Prosedur
Setelah belajar mengenai program dan berbagai proses
seperti input output, deklarasi dan operasi variabel, logika
bercabang / if, dan looping, bagian terakhir dari dasar
pemrograman adalah penggunaan fungsi dan prosedur.
Variabel Lokal
Dengan adanya fungsi, variabel dibagi menjadi 2 yaitu
variabel lokal dan global. Variabel lokal adalah variabel yang
nilainya hanya berlaku di dalam fungsi tersebut. Variabel
lokal akan dihapus nilainya setelah fungsi selesai. Variabel
global, sebaliknya merupakan variabel yang berlaku di dalam
program. Variabel global bisa saja diubah atau dioperasikan
nilainya oleh sebuah fungsi. Tetapi, sebuah fungsi ada
baiknya hanya mengoperasikan parameter dan variabel
lokalnya ketika fungsi tersebut berjalan.
Fungsi Rekursif
Terdapat salah satu trik yaitu penggunaan fungsi rekursif.
Rekursif berarti fungsi tersebut memanggil dirinya sendiri
terus menerus sampai suatu syarat tercapai. Fungsi rekursif
tidak banyak digunakan dalam pemrograman dasar karena
sedikit kompleks.
= 0 + .
1
= 0 . + 2
2
Jawab :
Seperti biasa, kelompokkan terlebih dahulu informasi yang
diperoleh dari soal seperti berikut.
1. Terdapat 3 variabel dengan tipe float yang diinput oleh
user yaitu variabel kecepatan, percepatan, dan waktu.
2. 2 Variabel hasil yaitu posisi dan kecepatan akhir.
3. Terdapat 2 fungsi dan 1 prosedur yaitu countpos,
countvelocity, dan showresult.
4. Persamaan untuk kedua fungsi didefinisikan dalam soal.
#include <iostream>
using namespace std;
// Deklarasi fungsi
float countpos (float v, float a, float t)
{
// Deklarasi variabel lokal
float position;
// Proses
position = v*t + (0.5*v*t*t);
// Proses
velo = v + a*t;
// Program utama
int main ()
{
// Deklarasi variabel
float a,v,t;
float finalvelo, finalpos;
// Proses
cout << Masukkan nilai kecepatan : ;
cin >> v; cout << endl;
cout << Masukkan nilai percepatan : ;
cin >> a; cout << endl;
cout << Masukkan nilai waktu : ;
cin >> t; cout << endl;
return 0;
}