Anda di halaman 1dari 31

Pengantar

Algoritma dan Pemrograman

Tim Penyusun Materi Pengenalan Teknologi Informasi


Institut Teknologi Bandung © 2018
Tujuan
• Mahasiswa mampu:
• Mendeskripsikan proses-proses umum dalam pengembangan perangkat
lunak dan program komputer
• Menjelaskan hubungan antara berpikir komputasional dengan
pemrograman
• Menjelaskan mengapa terdapat berbagai bahasa pemrograman dan
memberikan beberapa contoh
• Mejelaskan perbedaan compiler dengan interpreter
• Menjelaskan apa itu paradigma pemrograman dan paradigma
pemrograman prosedural
• Menjelaskan struktur dasar program prosedural

12/09/2018 Pengenalan Teknologi Informasi 2


User – Software – Hardware

12/09/2018 Pengenalan Teknologi Informasi 3


Perangkat Lunak
• Perangkat Lunak (software) memungkinkan pengguna
mengkomunikasikan suatu persoalan kepada komputer dan
komputer memberikan solusinya kepada pengguna
• Tanpa perangkat lunak, komputer hanya mesin bodoh!

Software = program + data + dokumentasi

12/09/2018 Pengenalan Teknologi Informasi 4


Problem Solving dengan Pemrograman
• Pemrograman (programming): adalah salah satu bentuk
penyelesaian persoalan (problem solving) di mana persoalan serta
solusinya direpresentasikan dalam bentuk yang bisa diproses oleh
komputer
• Secara umum terdiri atas langkah-langkah sbb.:
• Memahami persoalan
• Menyusun rencana untuk menyelesaikan persoalan → algoritma
• Menyusun solusi berdasarkan rencana → program komputer
• Mengevaluasi solusi

12/09/2018 Pengenalan Teknologi Informasi


5 5
Dari Persoalan Menjadi Program (1)
Analisis • Memahami persoalan
Persoalan dunia nyata

Rancangan • Merancang langkah-langkah/algoritma


Solusi • Menyusun modul-modul

Implementasi
• Menulis kode program
Perangkat
• Testing dan debugging
Lunak

• Penggunaan perangkat
Operasional lunak
dan Evaluasi • Evaluasi kinerja dan
maintenance

12/09/2018 Pengenalan Teknologi Informasi 6


Dari Persoalan Menjadi Program (2)
• Berdasarkan pemahaman terhadap
persoalan, programmer menyusun
daftar persoalan dan
mendekomposisi menjadi sub- Persoalan
persoalan
• Setiap sub-persoalan berpotensi
menjadi modul program
• Dalam kuliah ini, modul program akan Subpersoalan- Subpersoalan-
disusun dalan subprogram (tunggu 1 2
beberapa minggu lagi)
• Top down design: Mulai dari
persoalan besar didetilkan sampai Subpersoalan- Subpersoalan- Subpersoalan- Subpersoalan-
pada akhirnya menjadi langkah- 1.1 1.2 2.1 2.2
langkah penyelesaian sub-
persoalan → algoritma

12/09/2018 Pengenalan Teknologi Informasi 7


Diskusi
• Persoalan apa saja dalam bidang studi Anda yang pemecahannya
membutuhkan program komputer?

12/09/2018 Pengenalan Teknologi Informasi 8


Kemampuan Berpikir Komputasional
• Memecahkan masalah dengan pemrograman membutuhkan
kemampuan berpikir komputasional (computational thinking)
• Teknik-teknik berpikir komputasional:
• Dekomposisi persoalan (problem decomposition)
• Pengenalan pola (pattern recognition)
• Generalisasi pola dan abstraksi (pattern generalization and
abstraction)
• Rancangan algoritma (algorithm design)
• Analisis data dan visualisasi

12/09/2018 Pengenalan Teknologi Informasi 9


Dari Ide Menjadi Algoritma
• Algoritma: himpunan prosedur langkah per langkah untuk
menyelesaikan suatu [sub]persoalan
• Dapat ditulis dengan menggunakan teks atau gambar:
• Pseudocode (contoh: notasi algoritmik) → teks; persilangan antara bahasa
manusia dan bahasa pemrograman
• Flowchart → diagram
• Algoritma disusun dengan memanfaatkan control structure yang
menentukan bagaimana urutan langkah dieksekusi
• Sequence: langkah-langkah yang dieksekusi berurutan
• Conditional (percabangan): pilihan langkah
• Repetition/loop (pengulangan): pengulangan langkah
(tunggu beberapa minggu lagi)

12/09/2018 Pengenalan Teknologi Informasi •10


Contoh-1:
Memasak Kentang untuk Makan Malam
• Untuk makan malam, sejumlah kentang harus dikupas dan
dimasak
• Keadaan awal: kantong kentang tersedia di dapur
• Belum jelas apakah kentang tersedia cukup atau tidak
• Keadaan akhir: masakan dengan bahan dasar kentang tersedia
dan siap dihidangkan untuk makan malam

12/09/2018 Pengenalan Teknologi Informasi 11


Memasak kentang untuk makan malam
Kentang
tersedia? Mau
Ya dimasak
apa?
Kupas Kentang
Tidak
Goreng ? Sup ?
Rebus ?

Beli Kentang

12/09/2018 Pengenalan Teknologi Informasi 12


Memasak Kentang untuk Makan Malam –
Pseudocode
if kentang_tersedia? = tidak then
Beli_Kentang
{ Di titik ini kentang sudah tersedia }
Kupas_Kentang
if pilihan_masakan = goreng then
Goreng_Kentang
else if pilihan_masakan = rebus then
Rebus_Kentang
else { pilihan_masakan = sup }
Buat_Sup

12/09/2018 Pengenalan Teknologi Informasi 13


Memasak Kentang untuk Makan Malam –
Flowchart
Mulai

Kentang
Kentang Tidak Beli
Beli Kentang
Kentang
Tersedia?
Tersedia?

Ya

Kupas Kentang
Goreng Kentang
goreng

Rebus Kentang Selesai


Dimasak rebus
apa?
Buat Sup
sup
12/09/2018 Pengenalan Teknologi Informasi 14
Contoh-2:
Perbaikan Jam Dinding
• Keadaan awal: Jam dinding tidak menunjukkan waktu yang tepat
• Keadaan akhir: Jam dinding menunjukkan waktu yang tepat
• Bila jarum tidak bergerak, ganti baterai
• Jika bergerak berarti baterai masih hidup tinggal dilakukan
perbaikan letak jarum jam

12/09/2018 Pengenalan Teknologi Informasi 15


Perbaikan Jam Dinding: Flowchart-1
Mulai

Ya Perbaiki Jarum panjang


Jarum dan pendek pada lokasi
Bergerak? yang tepat

Tidak

Ganti Apa yang salah


Baterai Baru
dengan solusi
ini??
Selesai

12/09/2018 Pengenalan Teknologi Informasi 16


Perbaikan Jam Dinding: Flowchart-2
Mulai

Ya Perbaiki jarum panjang


Jarum
dan pendek pada lokasi
Bergerak?
yang tepat Bagaimana jika
Tidak ternyata setelah
Ganti
dua hari jam
Baterai Baru kembali tidak
tepat?
Selesai

12/09/2018 Pengenalan Teknologi Informasi 17


Perbaikan Jam Dinding: Flowchart-3
Mulai

Perbaiki Jarum
Jarum Ya panjang dan
Bergerak? pendek pada
lokasi yang tepat
Tidak

Ganti Jam
Periksa jam setelah
Baterai Baru tepat
2 hari
Tidak waktu?

Ya
Selesai

12/09/2018 Pengenalan Teknologi Informasi 18


Perbaikan Jam Dinding: Pseudocode
Setara dengan Flowchart-3

if jarum_bergerak? = tidak then


Ganti_Baterai_Baru
{ Di titik ini jarum jam sudah pasti bergerak }
repeat
Perbaiki_Letak_Jarum_Jam
Periksa_Jam_Setelah_2_Hari
if jarum_jam_tepat? = tidak then
Ganti_Baterai_Baru
until (jarum_jam_tepat? = ya)

12/09/2018 Pengenalan Teknologi Informasi 19


Contoh-3
Which photo do you want?
2014-JP-03

Johnny has 8 photos. He would like to give one of them to Bella. He asks her some questions to
find out which photo she wants:
“Do you want a photo with a beach umbrella?” “Yes.”
“Do you want a photo where I have something on my head?” “No.”
“Do you want a photo where you can see the sea?” “Yes.”
Which photo should Johnny give to Bella? (Source: Bebras Challenge)

12/09/2018 Pengenalan Teknologi Informasi 20


Mulai
Which photo do you want? –
ambil foto ke-1
Flowchart
Tidak
ada payung?

Tidak
Ya Ya
Cetak foto
Ya
ada sesuatu
semua foto sudah Ya
di kepala? foto sesuai foto sesuai
diperiksa? atau foto
ditemukan ditemukan? Selesai
Tidak sesuai ditemukan?

Tidak Tidak
dapat melihat Ya
Cetak foto tidak
laut?
ditemukan

cek foto
berikutnyaYa
12/09/2018 Pengenalan Teknologi Informasi 21
ambil_foto_ke_1
Which photo do repeat
you want? – if ada_payung? = ya then
if ada_sesuatu_di_kepala? = tidak then
Pseudocode if dapat_melihat_laut? = ya then
foto_sesuai_ditemukan
else
cek_foto_berikutnya
else
cek_foto_berikutnya
else
cek_foto_berikutnya
until (semua_foto_sudah_diperiksa) or
(foto_sesuai_ditemukan)

if (foto_sesuai_ditemukan) then
cetak_foto
else
cetak_foto_tidak_ditemukan
12/09/2018 Pengenalan Teknologi Informasi 22
Dari Algoritma Menjadi Program
• Programmer mengubah algoritma menjadi kode program komputer
dengan menggunakan bahasa pemrograman
• Proses untuk menuliskan kode program berdasarkan algoritma
disebut sebagai coding
• File hasil menuliskan kode program: source code (kode sumber)
• Setiap pernyataan dalam algoritma ditranslasikan secara detil ke
dalam kode program
• Compiler/interpreter akan mentranslasi kode program dalam
bahasa pemrograman tertentu menjadi bentuk yang dipahami
oleh komputer
12/09/2018 Pengenalan Teknologi Informasi 23
Bahasa Pemrograman
• Setiap komputer memproses instruksi dalam bahasa mesin
(machine language)
• Kode-kode numerik yang digunakan untuk mengerjakan operasi-operasi
dasar:
• Adding and subtracting numbers
• Comparing numbers
• Moving numbers
• Repeating instructions
• Programmer menggunakan bahasa pemrograman tingkat tinggi
(high-level languages) untuk menuliskan kode program
• Pascal, C/C++, Matlab, Python, Fortran, Basic, Java, dll.

12/09/2018 Pengenalan Teknologi Informasi 24


Compiler vs Interpreter
• Compiler: membaca seluruh kode program sekaligus dan
menerjemahkannya menjadi kode yang dipahami mesin komputer
pre-processing processing
Source Code Object Code Mesin

• Contoh: C/C++, Pascal, Fortran


• Interpreter: membaca baris kode satu per satu
pre-processing Intermediate processing
Source Code Interpreter
Code

• Contoh: MATLAB, Python

12/09/2018 Pengenalan Teknologi Informasi 25


Paradigma Pemrograman
• Paradigma pemrograman adalah sudut pandang penyelesaian
persoalan dengan program komputer
• Contoh paradigma pemrograman:
• Paradigma prosedural (imperatif) → akan diajarkan di kuliah ini
• Paradigma berorientasi objek
• Paradigma deklaratif
• Dll.
• Paradigma prosedural (imperatif): Program didasari oleh
strukturisasi informasi di dalam memori dan manipulasi dari
informasi yang disimpan tersebut
Program = Algoritma + Struktur Data
12/09/2018 Pengenalan Teknologi Informasi 26
Bahasa Pemrograman Prosedural
• Ada RIBUAN bahasa pemrograman di dunia saat ini → termasuk
bahasa pemrograman prosedural
• Tidak mungkin semua bahasa pemrograman dipelajari di kuliah
• Oleh karena itu yang diajarkan adalah “belajar pemrograman” →
melalui pola pikir komputasional dan paradigma
pemrograman prosedural
• Bahasa pemrograman yang diajarkan di PTI-B: C/C++, Pascal,
Matlab, Python, Fortran
• Di kelas ini akan diajarkan: C++

12/09/2018 Pengenalan Teknologi Informasi 27


C++
• C++ merupakan bahasa pemrograman general purpose dan multi
paradigma (prosedural, object oriented)
• Bahasa pemrograman yang sangat populer dan banyak digunakan
• Dikembangkan oleh Bjarne Stroustrup mulai tahun 1979 di Bell Labs
• Merupakan pengembangan dari Bahasa C (prosedural murni) dengan
penambahan konsep object-orientation → tidak diajarkan di kelas ini
• Dalam kuliah ini, hanya akan menggunakan paradigma prosedural
• Merupakan bahasa yang case sensitive → perbedaan huruf besar dan
kecil berpengaruh

12/09/2018 Pengenalan Teknologi Informasi 28


Struktur Dasar Algoritma
Program <JudulProgram>
{ Spesifikasi Program }
KAMUS
{ Deklarasi type, variabel, konstanta, fungsi,
prosedur }
ALGORITMA
{ Deretan langkah algoritmik untuk penyelesaian
persoalan }
{ Ditulis dengan pseudocode atau flowchart }

12/09/2018 Pengenalan Teknologi Informasi 29


Struktur Dasar Program Prosedural C++
// Program <JudulProgram>
// Spesifikasi Program

#include <iostream>
using namespace std;

int main () {
// KAMUS
// Deklarasi type, variabel, konstanta, fungsi, prosedur

// ALGORITMA
// Deretan langkah algoritmik untuk penyelesaian persoalan

return 0;
}

12/09/2018 Pengenalan Teknologi Informasi 30


Program Pertama
// Program HelloWorld
• Buatlah program untuk // Mencetak Hello, World! ke layar
menuliskan “Hello, World!” ke
#include <iostream>
layar. using namespace std;

int main () {
// KAMUS
// belum diperlukan

// ALGORITMA
cout << “Hello, World!” << endl;
cout adalah
perintah untuk return 0;
mencetak teks ke }
layar/monitor

12/09/2018 Pengenalan Teknologi Informasi 31

Anda mungkin juga menyukai