Anda di halaman 1dari 46

Algoritma dan

Pemrograman
3 SKS
Adi Wahyu Pribadi
Literatur
1. Rinaldi Munir, 1998, Algoritma dan Pemrograman 1 & 2; Informatika Bandung
2. Deitel etc., 2017, C++ How to Program, Pearson
3. Stanley B. Lippman, etc., 2013, C++ Primer 5th Edition, Addison-Wesley
Professional
4. Robert Setiadi, 2008, Algoritma itu Mudah, Prima Infosarana Media
Pengantar Algoritma
Cara menyelesaikan masalah dengan komputer

Masalah Algoritma Program Komputer Solusi


Mengenal Algoritma
Dalam kehidupan sehari-hari, kita selalu melakukan suatu aktivitas. Sejumlah langkah kita lakukan dalam
menyelesaikan aktivitas tersebut. Uniknya, dua orang yang berusaha mencapai tujuan yang sama belum
tentu melakukan langkah-langkah yang sama. Misal A dan B memasak Mie Rebus.

Yang dilakukan A:

● Ambil mie rebus → ambil panci, piring → masukkan air di panci → masak air → buka
bungkus mie → buka bumbu2 di piring → masukkan mie ke panci → matang dan taruh di
piring

Yang dilakukan B:

● Ambil mie rebus → ambil panci, piring → masukkan air di panci → buka bungkus mie → buka
bumbu2 di piring → masak air → masukkan mie ke panci → matang dan taruh di piring
Apakah Algoritma itu?
1. Ilustrasi membuat mie rebus menggambarkan sebuah algoritma dalam
kehidupan sehari-hari.
2. Jadi Algoritma adalah cara yang dapat ditempuh oleh komputer dalam
mencapai suatu tujuan, terdiri atas langkah-langkah yang terdefinisi dengan
baik, menerima input, melakukan proses, dan menghasilkan output. Meskipun
tidak selalu, biasanya sebuah algoritma memiliki sifat bisa dihitung
(computable) atau bisa diukur (measurable)
3. Ciri algoritma yang baik:
a. Berurutan
b. Tidak berarti ganda (ambigu)
c. Berhingga
5 Ciri Algoritma
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah. Program
yang tidak pernah berhenti adalah program yang berisi algoritma yang salah
2. Setiap langkah, harus didefinisikan dengan tepat dan tidak berarti ganda
3. Algoritma memiliki nol/lebih masukan (input)
4. Algoritma memiliki nol/lebih keluaran (output)
5. Algoritma harus efektif
Efektif vs Efisien?
Efektivitas vs Efisiensi?
Notasi Algoritma
● Notasi I : diagram alir (flowchart)
● Notasi II: pseudo-code
● Natosi III : Deskripsi Algoritma
Simbol-simbol pada Flowchart
No Simbol Gambar Keterangan

1. Terminal Menunjukkan awal & akhir program

2. Persiapan Memberikan nilai pada suatu variabel

3. Pengolahan/Proses Pengolahan aritmatika dan pemindahan


data

4. Keputusan Untuk operasi perbandingan logika

5. Input/Output Menyatakan proses input/baca data dan


output/tulis

6. Garis Digunakan untuk menyatakan urutan


pelaksanaan, atau alur proses
Pseudocode
● Pseudocode adalah teknik menuliskan algoritma secara high level tanpa
bergantung pada sebuah bahasa pemrograman.
● Biasanya Pseudocode dituliskan dengan kombinasi Bahasa Inggris dan
notasi matematika. Biasanya sebuah Pseudocode tidak terlalu detail
dibandingkan dengan program. Isu-isu detail dalam program yang sifatnya
teknis tidak dibahas di dalam Pseudocode.
Pseudocode I
Algoritma Luas_Segiempat
{ menghitung luas segiempat dengan memasukkan nilai lebar dan panjang
Segiempat }

Deklarasi
luas, panjang, lebar: integer;

Deskripsi
Input (panjang)
Input (lebar)
luas panjang * lebar
Print (luas)
Pseudocode II
Algoritma Luas_Segiempat
{ menghitung luas segiempat dengan memasukkan nilai lebar dan panjang
Segiempat }

Deklarasi
luas, panjang, lebar: integer;

Deskripsi
Read(panjang)
Read(lebar)
Luas ← panjang * lebar
Write(luas)
Ciri-ciri Algoritma
● Ada input
● Ada proses
● Ada output
● Memiliki instruksi-instruksi yang jelas dan tidak ambigu
Sifat Algoritma
● Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
● Tidak tergantung pada suatu bahasa pemrograman
● Notasi-notasinya dapat digunakan untuk seluruh bahasa manapun
Algoritma yang Baik dan Benar
Sebuah algoritma dikatakan BENAR jika algoritma tersebut berhasil
mengeluarkan output yang benar untuk semua kemungkinan input.

Sebuah algoritma dikatakan BAIK apabila seluruh proses di dalamnya efisien


untuk menghasilkan solusi dalam waktu sesingkat mungkin dengan menggunakan
resource (sumber daya) seminimal mungkin
Istilah
Program: serangkaian instruksi yang disusun untuk menyelesaikan sebuah
masalah dengan menggunakan komputer

Pemrograman: kegiatan membuat program

Pemrogram/Programmer: orang yang menulis program


Tahapan Pemrograman
1. Mengerti persoalan yang akan diselesaikan
2. Menganalisa persoalan (Diagram Alur)
3. Menulis program
4. Menguji program
5. Menyimpan sebagai dokumentasi
Paradigma Pemrograman
● Prosedural / Terstruktur
● Paradigma Fungsional
● Paradigma Deklaratif / Logika
● Paradigma Object-Oriented
● Paradigma Konkuren
● Paradigma Relasional
Programming Language

Imperative Decalrative

Object
Procedural Parallel Logic Functional Database
Oriented

C, Pascal, Ada, Object Ada, Pascal LISP, APL,


Prolog SQL
Fortran, Pascal, C+ S, Occam, Scheme
Basic +, Java, C-Linda
Ruby, PHP,
Smalltalk,
Python
Bahasa Pemrograman C++
C ++ (/ ˌsiːˌplʌsˈplʌs /) adalah bahasa pemrograman serba guna yang dibuat oleh
Bjarne Stroustrup sebagai pengembangan dari bahasa pemrograman C, atau "C
dengan Kelas". C++ telah berkembang secara signifikan dari waktu ke waktu, dan
C ++ modern memiliki fitur berorientasi objek, generik, dan fungsional di samping
fasilitas untuk memanipulasi memori tingkat rendah.

C++ sudah distandardisasikan oleh International Organization for Standardization.


Standar terakhir pada tahun 2017.
Keywords C++
asm else new this auto enum

operator throw bool explicit private true

break export protected try case extern

public typedef catch false register typeid

char float reinterpret_cast typename class for

return union const friend short unsigned

const_cast goto signed using continue if

sizeof virtual default inline static void

delete int static_cast volatile do long

struct wchar_t double mutable switch while

namespace template dynamic_cast


Ketentuan Bahasa C++
● Bersifat Case Sensitive, artinya bahasa ● Variabel adalah sesuatu yang memiliki
C/C++ membedakan huruf besar & huruf nilai. Misalkan variabel panjang, variabel
kecil Contoh: N≠n lebar, variabel keliling, variabel luas.
● Komentar pada baris kode: ● Nilai dari suatu variabel dapat berubah-
○ // → semua karakter dibelakangnya ubah.
dianggap komentar ● Setiap variabel yang digunakan wajib
○ Diawali oleh /* dan diakhir dengan */ →
dideklarasikan terlebih dahulu.
semua karakter yang berada di antara
tanda tersebut dianggap komentar
● Di dalam C/C++ terdapat variabel global
● Setiap statement harus diakhiri tanda titik maupun variabel lokal
koma → ‘;’ ● Dipelajari berikutnya
● Awal dan akhir subroutine atau fungsi
harus diapit kurung kurawal ‘{‘ dan ‘}’
Tipe Data Dasar di C++
Tipe data Memory size Jangkauan nilai
● char
char 1 byte -128 hingga 127 atau 0 hingga 255
● int
● short char (signed) 1 byte -128 to 127
● long char (unsigned) 1 byte 0 to 255
● float
int 2 byte or 4 byte -32,768 to 32,767 or -2,147,483,648 to
● double 2,147,483,647
● long double
Int (unsigned) 2 byte or 4 byte 0 to 65,535 or 0 to 4,294,967,295

long 4 byte -9223372036854775808 to


9223372036854775807

Float (6 decimal places) 6 byte 1.2E-38 to 3.4E+38

double (15 decimal places) 8 byte 2.3E-308 to 1.7E+308

long double (15 decimal places) 10 byte 3.4E-4932 to 1.1E+4932


Install C++ di Windows 10
Sublime Text 3 Notepad++

● Download Sublime Text 3 ● Download Notepad++


https://www.sublimetext.com/ https://notepad-plus-plus.org/
● Ikuti cara yang dilakukan pada halaman ● Ikuti cara yang dilakukan pada halaman
ini ini
https://www.thecrazyprogrammer.com/2017/04/how-to https://www.thecrazyprogrammer.com/2015/08/config
-run-c-and-c-program-in-sublime-text.html ure-notepad-to-run-c-cpp-and-java-programs.html
Program C++ Sederhana
#include <iostream>

using namespace std;

main()
{
cout << "Hallo dunia!" << "\n";
}
Program C++ Sederhana
#include <iostream> // header

using namespace std; // namespace

main() // fungsi utama


{ // awal blok program
cout << "Hallo dunia!" << "\n"; // blok program
} // akhir blok program
Proses Kompilasi
Program C++
http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html
Operand dan Operator

Operand Operator Operand


X + Y
Input User (integer)
#include <iostream>

using namespace std;

main() {
int x; // variabel x dengan tipe data integer

cout << "masukkan sebuah nilai Integer?" << "\n";


cin >> x;
cout << "x = " << x << endl;
}
Operator Penugasan
Simbolnya =

Berguna untuk memberi nilai pada suatu variabel


Input User (integer)
#include <iostream>
using namespace std;

main() {
int x, y, sum;

cout << "Type a number: ";


cin >> x;
cout << "Type another number: ";
cin >> y;
sum = x + y;
cout << "Sum is: " << sum;
}
Input User (karakter)
#include <iostream>
using namespace std;

int main(int argc, char const *argv[])


{
char x;

cout << "tuliskan sebuah karakter: " << endl;


cin >> x;
cout << "karakter tersebut adalah " << x << endl;

return 0;
}
Input User (string)
#include <iostream>
using namespace std;

int main(int argc, char const *argv[])


{
string nama;

cout << "Siapa nama Anda?" << endl;


cin >> nama;
cout << "Halo " << nama << "!" << endl;

return 0;
}
Operator Aritmatika
Operator Nama Contoh
+ Penjumlahan X + Y

- Pengurangan X - Y

* Perkalian X * Y

/ Pembagian X / Y

% Modulus X % Y

++ Increment ++X, X++

-- Decrement --X, X--


Hierarki Operator Aritmatika
1. ++ --
2. * / %
3. + -

● Operator dengan prioritas lebih tinggi akan dikerjakan


lebih dulu
● Kalau prioritas operator sama, maka yang dikerjakan yang
sebelah kiri lebih dulu
● Tanda kurung akan mengubah urutan pengerjaan
Hirarki
#include<iostream>
using namespace std;

main() {
int x, y, hasil;

cout << "x :"; cin >> x;


cout << "y :"; cin >> y;
hasil = x*y+2*5;
cout << "x * y + 2 * 5 = " << hasil << endl;
}
Operator Penaikan dan Penurunan
● Operator penaikan ++, Operator penurunan --
● Untuk tipe data bilangan bulat (int, long)
● x = x + 1 bisa ditulis x++ atau ++x
● y = y – 1 bisa ditulis y-- atau --y
● x++ dan y-- disebut post increment dan post decrement
● ++x dan --y disebut pre increment dan pre decrement
#include<iostream>
using namespace std;
Increment
main() {
int r, s;

r = 22; s = 55; r++; s++;


cout << "Tanda ++ di belakang" << endl;
cout << "r = " << r << endl;
cout << "s = " << s << endl;

r = 22; s = 55; ++r; ++s;


cout << "Tanda ++ di belakang" << endl;
cout << "r = " << r << endl;
cout << "s = " << s << endl;
}
Operator Majemuk
● Untuk memendekkan penulisan operator penugasan

● Macam
○ += → x += 5 → x = x+5
○ -= → x -= 5 → x = x - 5
○ *= → x *= 5 → x = x * 5
○ /= → x /= 5 → x = x / 5
○ %= → x %= 5 → x = x % 5
Pengoperasian Apabila Operand Beda Tipe
● Tipe char akan dikonversikan ke tipe int
● Tipe float akan dikonversikan ke tipe double
● Jenjang tertinggi adalah mulai dari long double, double, long int, unsigned
int dan int. Ini berarti jika tipe double dioperasikan dengan tipe int, maka
hasilnya adalah tipe double sebagai jenjang tertinggi
Equality and Comparison Operators
Operator Nama Contoh
== Sama dengan x == y

!= Tidak sama dengan x != y

> Lebih besar x > y

< Lebih kecil x < y

>= Lebih besar sama dengan x >= y

<= Lebih kecil sama dengan x <= y


Logical Operators
Operator Nama Deskripsi Contoh
&& Dan Mengembalikan nilai true jika kedua x < 5 && x < 10
pernyataan itu benar
|| Atau Mengembalikan nilai true jika salah x < 5 || x < 4
satu dari pernyataan itu benar
! Tidak Membalikkan hasilnya, !(x < 5 && x < 10)
mengembalikan false jika hasilnya
benar
Konversi Tipe Data
● Konversi dengan Operator cast
○ Konversi diatur oleh pemrogram
○ Cara ini disebut type cast
○ Syntax : tipe_data(data)
○ Contoh : int (kar) → mengubah tipe data variabel kar menjadi tipe data integer
● Konversi Tipe pada Penugasan ke Variabel
○ Tipe data yang dimasukkan ke variabel akan dikonversikan sesuai dengan tipe variabel
#include <iostream>
using namespace std; Konversi
main() {
int x = 10; // integer x
char y = 'a'; // character c

// y secara implisit dikonversi ke ASCII


// nilai karakter 'a' adalah 97

x = x + y;

// x secara implisit dikonversi ke float


float z = x + 1.0;

cout << "x = " << x << endl


<< "y = " << y << endl
<< "z = " << z << endl;
}
#include <iostream>
using namespace std; Konversi 2
int main()
{
double x = 1.2;

// konversi variabel x dari double ke integer


int sum = (int)x + 1;

cout << "Sum = " << sum;

return 0;
}

Anda mungkin juga menyukai