Komputasional dan
Pemrograman Prosedural
Tim Penyusun Materi KU1072
KU1072/Pengenalan Teknologi
Informasi B
Tahap Tahun Pertama Bersama
Institut Teknologi Bandung
Tujuan Pertemuan
Mahasiswa mampu:
Menjelaskan apa itu berpikir komputasional dan
teknik-teknik di dalamnya
Menjelaskan bagaimana komputasi
dimanfaatkan dalam keilmuan fakultas/sekolah
Memahami representasi dan pemrosesan data
dan program dalam mesin komputer
Menjelaskan bagaimana proses dari source code
menjadi program dengan menggunakan
kompilator/interpreter
Menjelaskan apa yang dimaksud paradigma
pemrograman prosedural
20/01/16
Berpikir Komputasional
20/01/16
Pengantar
Video: Computational Thinking_ A Digital
Age Skill for Everyone - YouTube
[720p].mp4
20/01/16
Computational Thinking
Computational thinking is the thought
processes involved in formulating
problems and their solutions so that the
solutions are represented in a form that
can be effectively carried out by an
information-processing agent.
Jan Cuny, Larry Snyder, and Jeannette M. Wing,
"Demystifying Computational Thinking for NonComputer Scientists", 2010
20/01/16
Kemampuan Berpikir
Komputasional
(1)
Berpikir komputasi memungkinkan
kita untuk
menggunakan komputasi sesuai dengan kebutuhan
kita. Kemampuan ini akan menjadi salah satu
kemampuan dasar yang harus dimiliki di abad 21
(http://link.cs.cmu.edu/article.php?a=600 )
Kemampuan Berpikir
Komputasional
(2)
Merepresentasikan himpunan
keterampilan
(skill) dan perilaku (attitude) yang secara
universal harus dipelajari dan digunakan,
tidak hanya oleh para computer
scientist
Jeanette M. Wing, Computational Thinking,
2006
20/01/16
Kemampuan Berpikir
Komputasional
(3)
Teknik-teknik yang
digunakan
Dekomposisi pesoalan (problem
decomposition)
Pengenalan pola (pattern recognition)
Generalisasi pola dan abstraksi (pattern
generalization and abstraction)
Rancangan algoritma (algorithm design)
Analisis data dan visualisasi
20/01/16
Pemanasan
20/01/16
Instruksi-0
Siapkan di atas meja selembar kertas
A4, pensil, dan penghapus
Berikan nama, NIM, dan kelas di pojok
kanan atas
20/01/16
10
Instruksi-1
Ceritakan hal-hal dan langkah-langkah yang kamu
lakukan hari ini, mulai dari:
Bangun tidur
s.d.
11
Instruksi-2
Berkelompoklah berdua dengan teman di
sebelahmu
Dari langkah-langkah yang dikerjakan pada
instruksi-1, tandai dari lembar milikmu dan
teman di sebelahmu hal-hal dapat
dikatakan sama/mirip
Ingatlah: Cara Anda dan teman Anda bisa berbeda
dalam menyatakan hal yang sama/mirip, misalnya
representasi (gambar, teks), kalimat yang
berbeda, berbeda tingkat kedetilannya
Waktu : 10 menit
20/01/16
12
Instruksi-3
Berdasarkan hasil perbandingan sebelumnya,
tuliskan ulang (dalam bentuk tes) di salah
satu lembar (jangan lupa menuliskan nama
dan NIM partner) apa yang disebut sebagai:
Hal-hal yang dilakukan oleh seorang
mahasiswa kelas XX pada hari ini mulai
dari bangun tidur s.d. tiba di kelas untuk
mulai mengikuti kuliah PTI-B
Waktu : 5 menit
20/01/16
13
20/01/16
14
Problem Decomposition/
Dekomposisi Persoalan (1)
Decomposition: ability to break down a
task into minute details so that we can
clearly explain a process to another
person or to a computer or even to just
write notes for ourselves
Dalam latihan:
Tugas individual untuk mendekomposisi hal-hal
yang dilakukan untuk pergi ke kuliah pada hari
ini
20/01/16
15
Problem Decomposition/
Dekomposisi Persoalan (2) Contoh
Nama : Deasy Duck
NIM : 16515888
Kelas : XX
16
Problem Decomposition/
Dekomposisi Persoalan (3)
Contoh lain:
Menjelaskan bahan-bahan dari suatu masakan
tertentu berdasarkan cita rasanya
Mendeskripsikan cara untuk menuju ke rumah
dari kampus
Dekomposisi bilangan 256.37 menjadi 2*102 +
5*101 + 6*100 + 3*10-1 + 7*10-2
Dekomposisi bilangan menjadi faktor prima,
misalnya: 20 = 2 * 2 * 5
20/01/16
17
Pattern Recognition/
Pengenalan Pola (1)
18
Pattern Recognition/
Pengenalan Pola (2) - Contoh
Nama : Deasy Duck
NIM : 16515888
Kelas : XX
19
Pattern Recognition/
Pengenalan Pola (3) - Contoh
Nama : Deasy Duck
NIM : 16515888
Kelas : XX
Nama : Donald Duck
NIM : 1651599
XX
Keadaan awal : Baru bangun tidur
1.Bersiap-siap untuk pergi berolahraga
Keadaan awal : Baru bangun tidur
2.Pergi dari rumah ke Lapangan Saraga ITB
1.Persiapan olahraga pagi
3.Tiba di Saraga ITB
2.Pergi jogging keliling daerah sek
4.Berolahraga pagi dengan jogging selama setengah jam di Lapang
3.Merapikan tempat tidur dan bers
5.Pulang ke rumah
rumah
6.Bersih-bersih rumah
4.Sarapan pagi
7.Sarapan pagi
5.Mandi dan ganti baju
8.Mandi dan ganti baju
6.Menyiapkan buku catatan dan al
9.Menyiapkan laptop, buku catatan, alat-alat tulis, HP, tablet dan m
untuk kuliah
10.Berpamitan pada orang tua
7.Jalan kaki menuju ke pinggir jala
11.Menyiapkan motor
Lama
12.Pergi ke kampus dengan menggunakan motor
8.Menunggu angkot Cisitu-Tegaleg
13.Memarkir motor di lapangan parkir Aula Barat
9.Naik angkot sampai di pertigaan
14.Berjalan kaki menuju ruang kuliah
Tamansari
Berpikir Komputasi dan Sumur Bandung
20/01/16
20
Keadaan
akhir : tiba di KU1072/Pengantar
kelas
untuk
mulai mengikuti kuliah PTI-B
dan Pemrograman
Prosedural kaki sampai ruang kuliah
10.Jalan
Pattern Recognition/
Pengenalan Pola (4)
Contoh lain:
Anak-anak mengenali apa yang benar dan apa yang
salah berdasarkan pengamatan mereka terhadap
sikap/reaksi orang tua dan guru. Ini menentukan sikap
mereka di masa depan.
Orang yang bekerja di pasar saham mengamati pola-pola
dalam harga saham untuk menentukan kapan mereka
harus jual atau beli
Dalam ilmu matematika, kita dapat mengikuti suatu pola
untuk menjelaskan logika mengapa perkalian antara dua
buah bilangan negatif hasilnya adalah positif:
20/01/16
-3
-3
-3
-3
-3
-3
*
*
*
*
*
*
3 = -9
2 = -6
1 = -3
0=0
-1 = 3
-2 = 6 dst
KU1072/Pengantar Berpikir Komputasi
dan Pemrograman Prosedural
21
Pattern Recognition/
Pengenalan Pola (5)
Pola penjualan saham
to
t1
t2
t3
t5
t4
t6
20/01/16
22
23
NIM : 16513888
Kelas : XX
Nama : Donald Duck
NIM : 1651399
XX
Keadaan awal : Baru bangun tidur
1.Bersiap-siap untuk pergi berolahraga
Keadaan awal : Baru bangun tidur
2.Pergi dari rumah ke Lapangan Saraga ITB
1.Persiapan untuk olahraga pagi
3.Tiba di Saraga ITB
2.Pergi jogging keliling daerah sek
4.Berolahraga pagi dengan jogging selama setengah jam di Lapang
3.Merapikan tempat tidur dan bers
5.Pulang ke rumah
rumah
6.Bersih-bersih rumah
4.Sarapan pagi
7.Sarapan pagi
5.Mandi dan ganti baju
8.Mandi dan ganti baju
6.Menyiapkan buku catatan dan al
9.Menyiapkan laptop, buku catatan, alat-alat tulis, HP, tablet dan m
untuk kuliah
10.Berpamitan pada orang tua
7.Jalan kaki menuju ke pinggir jala
11.Menyiapkan motor
Lama
12.Pergi ke kampus dengan menggunakan motor
8.Menunggu angkot Cisitu-Tegaleg
13.Memarkir motor di lapangan parkir Aula Barat
9.Naik angkot sampai di pertigaan
14.Berjalan kaki menuju ruang kuliah
Tamansari
Berpikir Komputasi dan Sumur Bandung
20/01/16
24
Keadaan
akhir : tiba di KU1072/Pengantar
kelas
untuk
mulai mengikuti kuliah PTI-B
dan Pemrograman
Prosedural kaki sampai ruang kuliah
10.Jalan
25
20/01/16
26
27
20/01/16
28
20/01/16
29
Algorithm Design/
Desain Algoritma (1)
Algorithm design: ability to develop step-bystep strategy for solving a problem
Berbasis pada dekomposisi persoalan,
pengenalan pola, dan disusun berdasarkan
generalisasi pola dan abstraksi
Dalam latihan:
Menyusun langkah-langkah mulai dari bangun tidur
s.d. tiba di kelas untuk mulai mengikuti kuliah PTI-B
Algoritma dapat spesifik (lihat hasil tugas instruksi-1),
dapat generik (dengan memanfaatkan pola dan
abstraksi, lihat hasil tugas instruksi-2 dan instruksi-3)
Semakin generik, semakin banyak persoalan yang
dapat diselesaikan tujuan penyusunan algoritma
20/01/16
30
Algorithm Design/
Desain Algoritma (2)
Contoh lain:
31
20/01/16
32
Kemampuan Berpikir
Komputasional dalam Kuliah
PTI-B
Kemampuan melakukan dekomposisi
persoalan
Kemampuan mengenali pola
Kemampuan menggeneralisasi pola dan
mengabstraksi
Kemampuan merancang algoritma
Kemampuan analisis data dan visualisasi
20/01/16
33
Contoh Persoalan
20/01/16
34
20/01/16
35
20/01/16
36
Komponen Hardware
37
Software Algorithm
Program
Perangkat(1)
Lunak (software)
memungkinkan pengguna
mengkomunikasikan suatu persoalan
kepada komputer dan komputer
memberikan solusinya kepada pengguna
Tanpa perangkat lunak, komputer hanya mesin
bodoh!
20/01/16
38
Software Algorithm
Program
(2)
Algoritma: himpunan
prosedur langkah per
langkah untuk menyelesaikan suatu persoalan
Pekerjaan programmer adalah mengubah
algoritma menjadi program komputer
dengan menggunakan bahasa pemrograman
Program komputer dituliskan oleh programmer dalam
bentuk source code
Compiler/interpreter akan mentransformasi source
code menjadi executable code yaitu bentuk akhir
program yang dapat diberikan kepada user
20/01/16
39
Bahasa Komputer
Setiap komputer memproses instruksi dalam
bahasa mesin (machine language)
Kode-kode numerik yang digunakan untuk
mengerjakan operasi-operasi dasar:
KU1072/Pengenalan Teknologi
Informasi B
40
Programmer
membuat
source code
Pengguna
20/01/16
Compiler
Dalam bahasa
pemrograman tingkat
tinggi (mis. C++,
Pascal, Fortran)
Executab
le code
kompilasi
source code
menjadi
object code
Object
code
Link
Dalam bahasa
mesin
KU1072/Pengenalan Teknologi
Informasi B
41
20/01/16
42
Paradigma Pemrograman
Prosedural
20/01/16
43
Paradigma Pemrograman
Pemrograman [komputer] adalah proses
untuk memformulasi persoalan komputasi
menjadi program [komputer]
Paradigma [pemrograman] adalah sudut
pandang penyelesaian persoalan dengan
[program]
Contoh paradigma pemrograman:
Paradigma prosedural (imperatif) akan
diajarkan di kuliah ini
Paradigma berorientasi objek
Paradigma deklaratif
Dll.
20/01/16
44
Pemrograman Prosedural
Program didasari oleh strukturisasi
informasi di dalam memori dan
manipulasi dari informasi yang disimpan
tersebut
20/01/16
45
Berpikir Prosedural
Sejumlah aksi dijalankan secara berurutan
(sekuensial)
Setiap aksi akan memberikan efek
eksekusi tertentu
Aksi harus selesai (tidak bisa terusmenerus) harus ada kontrak mulai dan
selesai
Jelas keadaan awal (initial state)
Jelas keadaan akhir (final state)
20/01/16
46
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
47
Mau
dimasak
apa?
Ya
Tidak
Kupas Kentang
Goreng ?
Rebus ?
Sup ?
Beli kentang
20/01/16
48
Menuliskan Algoritma
20/01/16
49
50
Selesai
Pilihan
Proses
Alur
pilihan
Alur
20/01/16
Pilihan
51
Contoh-1:
Memasak Kentang untuk Makan
Malam
Program MakanMalam
{ Mempersiapkan dan memasak kentang untuk
makan malam }
{ Keadaan awal: kantong kentang tersedia di
dapur }
{ Keadaan akhir: masakan dengan bahan dasar
kentang tersedia dan siap dihidangkan untuk
makan malam}
KAMUS
... { belum digunakan }
ALGORITMA
KU1072/Pengantar Berpikir Komputasi
dan Pemrograman Prosedural
... { flowchart dan notasi
algoritmik lihat pada
20/01/16
52
Flowchart:
Memasak Kentang untuk Makan
Malam
Mulai
Kentang
Kentang
Tersedia?
Tersedia?
Tidak
Beli Kentang
Kentang
Beli
Ya
Kupas Kentang
Goreng Kentang
goreng
Rebus Kentang
Dimasak
apa?
20/01/16
rebus
Selesai
Buat Sup
53
Notasi Algoritmik:
Memasak Kentang untuk Makan
Malam
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
20/01/16
54
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
Buat programnya dan buatlah algoritmanya
dalam flowchart dan notasi algoritmik.
20/01/16
55
56
Flowchart-1:
Perbaikan Jam
Dinding
Mulai
Jarum
Bergerak?
Ya
Perbaiki Jarum
panjang dan pendek
pada lokasi yang tepat
Tidak
Ganti
Baterai Baru
Selesai
20/01/16
57
Flowchart-2:
Perbaikan Jam
Dinding
Mulai
Jarum
Bergerak?
Ya
Perbaiki Jarum
panjang dan pendek
pada lokasi yang tepat
Tidak
Ganti
Baterai Baru
Selesai
20/01/16
Bagaimana jika
ternyata setelah
dua hari jam
kembali tidak
tepat?
58
Notasi Algoritmik
Setara dengan Flowchart-2
20/01/16
59
Mulai
Flowchart-3:
Perbaikan Jam
Dinding
Ya
Jarum
Bergerak?
Perbaiki Jarum
panjang dan
pendek pada
lokasi yang tepat
Tidak
Ganti
Baterai Baru
Selesai
20/01/16
Tidak
Jam tepat
waktu?
Periksa jam
setelah 2 hari
Ya
KU1072/Pengantar Berpikir Komputasi
dan Pemrograman Prosedural
60
Notasi Algoritmik
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)
20/01/16
61
Data
20/01/16
62
Abstraksi Data
90
Suhu Air?
Berat Badan?
Kecepatan
Kendaraan
Bergerak
20/01/16
63
Persoalan Abstraksi
Data
Suhu Air?
Berat Badan?
Kecepatan
Kendaraan
Bergerak
75
derajat
Celcius
20/01/16
Kilogram
Km/jam
64
Struktur
Data
NIM:
Nama
Kota Lahir
Tanggal Lahir
Nama Ayah
Nama Ibu
20/01/16
Nomor KTP:
Nama
Kota Lahir
Tanggal Lahir
Nama Ayah
Nama Ibu
65
Bahasa Pemrograman
Prosedural
20/01/16
66
Bahasa Pemrograman
Prosedural
Ada RIBUAN bahasa pemrograman di dunia
67
Contoh-3: Menghitung
Tabungan
Tabungan di bank selalu bertambah setiap tahun
Bank memiliki bunga yang setiap tahun
bertambah
BNI memiliki bunga tahunan 10% per tahun
Untuk uang 100 ribu, maka setelah satu tahun akan
menjadi 110 ribu.
68
Masukkan tabungan:1000
Tahun Depan =>1100
20/01/16
69
Bagaimana Program
dibuat?
20/01/16
70
Program Menghitung
Tabungan
Program
MenghitungTabungan
{ Menghitung tabungan setelah 1 tahun
berdasarkan masukan dari pengguna }
KAMUS
NilaiTabungan : real { nilai simpanan dalam
tabungan, dlm.
rupiah }
ALGORITMA
... { flowchart dan notasi algoritmik lihat pada slideslide berikutnya }
20/01/16
71
Flowchart-1: Menghitung
Tabungan
mulai
Input variabel
NilaiTabungan dari
keyboard (masukan
pengguna)
input
(NilaiTabungan)
NilaiTabungan = NilaiTabungan
+ (NilaiTabungan * 0.1)
output
(NilaiTabungan)
seles
ai
20/01/16
72
Notasi Algoritmik-1:
Menghitung Tabungan
input ( NilaiTabungan )
NilaiTabungan NilaiTabungan + ( NilaiTabungan *
0.1 )
output ( NilaiTabungan )
20/01/16
73
Flowchart-2: Menghitung
Tabungan
mulai
Menampilkan ke layar
tulisan Masukkan
tabungan
output (Masukkan
tabungan:)
input
(NilaiTabungan)
NilaiTabungan = NilaiTabungan
+ (NilaiTabungan * 0.1)
output (Tahun depan
=>)
output
(NilaiTabungan)
Menampilkan ke layar
tulisan Tahun depan
=>
seles
ai
20/01/16
74
Notasi Algoritmik-2:
Menghitung Tabungan
output (Masukkan tabungan:)
input ( NilaiTabungan )
20/01/16
75
Algoritma
20/01/16
input (NilaiTabungan)
NilaiTabungan NilaiTabungan
+ (NilaiTabungan * 0.1)
output( NilaiTabungan )
KU1072/Pengantar Berpikir Komputasi dan
Pemrograman Prosedural
76
20/01/16
77
readln akan
membaca dari hasil
ketik di keyboard
readln(NilaiTabungan);
NilaiTabungan := NilaiTabungan +
NilaiTabungan * 0.1;
writeln(NilaiTabungan);
KU1072/Pengantar Berpikir Komputasi dan
Pemrograman Prosedural
78
read *, NilaiTabungan
NilaiTabungan = NilaiTabungan +
NilaiTabungan * 0.1;
print *, NilaiTabungan
79
80
KAMUS
int main() {
NilaiTabungan
: real { nilai simpanan dalam
// KAMUS
tabungan,
dlm.
float NilaiTabungan;
rupiah }
// ALGORITMA
ALGORITMA
cin >> NilaiTabungan;
input ( NilaiTabungan
) + NilaiTabungan
NilaiTabungan
= NilaiTabungan
NilaiTabungan
NilaiTabungan +
cout
<< NilaiTabungan;
return 0;
( NilaiTabungan
* 0.1 )
}
output ( NilaiTabungan )
20/01/16
* 0.1;
81
{ KAMUS }
KAMUS
var
NilaiTabungan
{
NilaiTabungan: real
: real;
tabungan, dlm.
{ ALGORITMA }
rupiah }
begin
readln(NilaiTabungan);
ALGORITMA
NilaiTabungan := NilaiTabungan + NilaiTabungan * 0.1;
input ( NilaiTabungan )
writeln(NilaiTabungan);
NilaiTabungan NilaiTabungan +
end.
( NilaiTabungan * 0.1 )
output ( NilaiTabungan )
20/01/16
82
input ( NilaiTabungan )
end program HitungUangDiBank
NilaiTabungan NilaiTabungan +
( NilaiTabungan * 0.1 )
output ( NilaiTabungan )
20/01/16
83
Terima Kasih
20/01/16
84