Input/output
Proses
Decision (percabangan)
Inputkan nilai
(tugas,uts,uas)
NA = 25%tg+25%uts+50%uas
NA>60 Gagal
Lulus
Selesai
Program – Pemrograman
• Pemrograman : aktifitas yg dilakukan dengan
membuat instruksi untuk menyelesaikan
permasalahan yg dimengerti oleh komputer
• Program : coding, hasil pemrograman
• Bahasa Pemrograman : Bahasa program yang
digunakan untuk membuat urutan instruksi yg
dimengerti oleh komputer.
• Pemrograman (programmer) : orang yg
membuat program komputer.
Algoritma dengan pseudo-code
kecil bilangan pertama
if ( bilangan kedua < kecil)
kecil bilangan kedua
if ( bilangan ketiga < kecil)
kecil bilangan ketiga
Ouput(kecil)
Flow chart untuk menentukan bilangan terkecil
tugas
• Buat flowchart dari rumus :
a. Luas lingkaran
b. Keliling Persegi Panjang
Kriteria/ Aspek Penting dari Algoritma
1. Finiteness
• Algoritma harus berhenti after a finite number
of steps
2. Definiteness
• Setiap langkah harus didefinisikan secara
tepat, tidak boleh membingungkan (ambiguous)
3. Input
• Sebuah algoritma memiliki nol atau lebih input
yang diberikan kepada algoritma sebelum
dijalankan
4. Output
• Sebuah algoritma memiliki satu atau lebih
output, yang biasanya bergantung kepada input
5. Effectiveness
• Setiap algoritma diharapkan miliki sifat efektif
Langkah umum dalam pembuatan suatu program
• Mendefinisikan masalah
– mendefinisikan permasalahan. langkah ini harus dilakukan untuk
menentukan masalah yang ada serta ditentukan pula input dan
output program
• Mencari solusinya
– Bila untuk mendapatkan solusi harus melalui langkah yang
terlalu rumit dapat dilakukan pembagian masalah dalam
beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu
modul-modul kecil tersebut digabungkan menjadi satu untuk
dapat menentukan solusi.
• Menentukan algoritma
• Menulis program
• Menguji program
• Mendokumentasikan program
• Merawat program
TIGA BAGIAN ALGORITMA :
• Judul (Header)
• Kamus
• Algoritma
Contoh :
JUDUL ( Header)
– Program Luas_Kubus { judul algoritma }
KAMUS
– Kamus :
• X,Y : integer
• Cari : boolean
ALGORITMA
– Algoritma :
• Input (c,d)
• If c < d then
• ea+b
• Else
• e a-b
• Output( e )
Contoh Penulisan Kasus Algoritma
Bahasa Natural Pseudo code
Program nilai_maksimal Program Nilai_maksimal
Kamus Kamus
X = nilai pertama hasil,x,y : integer
Y = nilai kedua Algoritma
Hasil = hasil perbandingan input(x,y)
Algoritma if x > y then
a. Masukkan Nilai x dan y hasil x
b. Jika x lebih besar dari y,
else
nilai terbesar adalah x jika
tidak maka nilai terbesar hasil y
adalah nilai y output(hasil)
c. Cetak hasil nilai yg terbesar
TIPE DATA, OPERATOR DAN EKSPRESI
Var
a,b,x : shortInt;
Begin
a:=10;
b:=20;
X:=a*b; {x akan bernilai -56, bukan 200}
Writeln(‘Nilai x=‘, x);
End.
BILANGAN BULAT - next
• KONSTANTA :
– Harus ditulis tanpa mengandung titik desimal :
– Contoh : 78, -14, 7654, 0, 5, 9999, dsb
• OPERASI :
1. Operasi Aritmetika :
+ (tambah)
- (kurang)
* (kali)
Div (hasil bagi bilangan bulat)
Mod (sisa hasil bagi)
Contoh :
3 + 10 hasil : 13
10 DIV 3 hasil : 3
10 MOD 3 hasil : 1
BILANGAN BULAT - next
2. Operasi Perbandingan :
• Menghasilkan nilai boolean (true dan false)
3<8 True
17 = 17 True
Contoh:
6.4 + 5.7 hasil : 12.1
8.0 – 2.8 hasil: 5.2
10/2.5 hasil: 4.0 (operasi bilangan campuran)
7.2 * 0.5 hasil : 3.6
BILANGAN RIIL - next
2. Operasi Perbandingan :
menghasilkan nilai boolean (true dan false)
< Lebih kecil
≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
≠ Tidak sama dengan
Contoh :
‘a’ = ‘a’ hasil: true
‘T’ = ‘t’ hasil: false
‘y’ ≠ ‘y’ hasil: false
‘m’ < ‘z’ hasil: true
STRING
• Adalah untaian karakter dengan panjang
tertentu.
• NAMA TIPE :
– String
• RANAH NILAI :
– Deretan karakter yg telah didefinisikan pada ranah
karakter.
• KONSTANTA :
– Semua konstanta string harus diapit oleh tanda petik
tunggal.
Contoh: ‘SURABAYA’, ‘stts’, ‘Jl. Ngagel no. 73-77’,
‘…………………’, ‘k768532’, dll.
STRING - next
• OPERASI :
1. Operasi Penyambungan (Concatenation):
– Operator : + (penyambungan, bukan tambah)
Contoh :
‘Teknik’ + ‘Informatika’ hasil : ‘TeknikInformatika’
‘aaa’ + ‘ bbb’ hasil: ‘aaa bbb’
‘1’ + ‘2’ hasil: ’12’
2. Operasi Perbandingan :
STRING - next
2. Operasi Perbandingan
menghasilkan nilai boolean (true dan false)
< Lebih kecil
≤ Lebih kecil atau sama dengan
> Lebih besar
≥ Lebih besar atau sama dengan
= Sama dengan
≠ Tidak sama dengan
Contoh:
‘abcd’ = ‘abc’ hasil: false
‘aku’ < ‘AKU’ hasil: true
Syarat penamaan (variabel, konstanta, nama type
bentukan, nama field, nama fungsi,nama prosedur)
• Harus unik (tidak boleh dua buah nama yang
sama)
• Harus dimulai dengan huruf alfabet (tidak boleh
dimulai dg angka, spasi, atau karakter khusus
lainnya)
• Huruf besar dan huruf kecil tidak dibedakan
• Karakter penyusun nama hanya boleh huruf
alfabet, angka, dan ‘_’ (underscore)
• Tidak boleh mengandung operator aritmetika,
relasional, tanda banca, dan karakter khusus
lainnya
• Karakter tidak boleh dipisah dengan spasi
• Panjang nama tidak dibatasi
Contoh penamaan NAMA
Contoh yg salah Contoh yg benar
1. Peubah (variable) :
Tempat menyimpan nilai yg isinya dapat diubah
Contoh: X, nilai_ujian, jumlah : real
k : integer
2. Konstanta (constant)
Tempat penyimpanan di dalam memori yg nilainya tetap
selama pelaksanaan program dan Notasi yg
digunakan adalah const
Contoh ;
const
phi = 3.14, Nmaks = 100, sandi = ‘xyz’,
dll
Yg diberi nama dalam Algoritma -next:
3. Tipe Bentukan :
Nama tipe bentukan diberikan oleh pemrogram
Contoh:
Type
titik : record <x:real, y: real>
Type
Jam : record
< hh : integer {0..23}
mm : integer {0..59}
ss : integer {0..59} >
P : titik
J1, J2 : Jam
4. Nama Fungsi :
Function Maksimum (input A,B : integer) integer
{ mengembalikan nilai terbesar antara A dan B}
5. Nama prosedur :
Procedure Tukar(input/output A, B : integer)
{ mempertukarkan nilai A dan B}
2. Pembacaan :
Nilai peubah dapat diisi secara eksternal dari piranti masukan, misalnya
dari keyboard, dari file, mouse, dsb.
Akan membaca sesuai apa yg kita masukkan (inputkan).
Contoh :
Read (M)
: komputer membaca nilai M yg diinputkan dari luar (mis: keyboard),
jika nilai yg diketik adalah 78, maka lokasi memori yg bernama M
sekarang berisi 78
EKSPRESI
• Transformasi nilai menjadi keluaran
dilakukan melalui suatu perhitungan
(komputasi)
• Cara perhitungan itu dinyatakan dalam
suatu ekspresi
• Ekspresi terdiri atas :OPERAND dan
OPERATOR
Tiga macam ekspresi :
1. Ekspresi Aritmetik (operator aritmetik):
Contoh : a*b, a*b/c, a div b * c, a+b*c
: d a*b (tipe data d harus sama dengan hasil hitungan
ekspresi a*b)
Konstruksi Algoritma :
• Runtunan (sequence process)
• Pemilihan (selection process)
• Pengulangan (repetition/iteration process)
Runtunan (sequence process)
• Terdiri dari satu atau lebih pernyataan
• Tiap pernyataan dikerjakan secara berurutan sesuai dg urutan penulisannya
(sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan)
Bentuk umum :
proses 1
proses 2
proses 3
…
Contoh: mempertukarkan dua nilai dari dua buah variabel (peubah) A dan B.
Algoritma :
1. isikan nilai A ke dalam C
2. isikan nilai B ke dalam A
3. isikan nilai C ke dalam B
Hasil akhir : varibel A berisi nilai dari varibale B, dan variabel B berisi nilai dari
variabel A .
Pemilihan (selection process)
• Sebuah aksi dikerjakan jika kondisi tertentu dipenuhi
(True) dan apabila suatu kondisi tidak terpenuhi (false)
maka program akan melakukan aksi lain (jika ada) atau
langsung keluar dari blok pemilihan.
Contoh:
jika lampu traffic light berwarna merah, maka
berhenti
• Dalam Algoritma dan pemrograman Struktur pemilihan
dapat didefinisikan dengan dua cara yaitu menggunakan
statemen IF atau CASE.
Struktur IF
• Statemen IF akan diikuti oleh ekspresi
(sebagai kondsi yang diperiksa) dan selalu
berpasangan dengan kata kunci THEN.
Notasi Algoritma :
Program Genap
{mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari
piranti masukan merupakan bilangan genap}
Kamus
x : integer
Algoritma
Read (x)
If x mod 2 = 0 then
write(‘genap’)
endif
Algoritma Pemilihan dua aksi (IF-THEN-ELSE)
Contoh:
Mencetak “genap” jika data masukan adalah bilangan genap atau mencetak “ganjil” jika
data masukan adalah bilangan ganjil.
Notasi Algoritma :
Program Genap
{mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari
piranti masukan merupakan bilangan genap dan mencetak “bilangan ganjil jika
sebuah bilangan bulat yang dibaca merupakan bilangan ganjil}
Kamus
x : integer
Algoritma
Read (x)
If x mod 2 = 0 then
write(‘genap’)
Else
write(‘ganjil’)
endif
Pemilihan (selection process)-Nested-IF
• Struktur pemilihan bersarang (nested-if) :
– terdapat strktur IF didalam IF lainnya
– Aksi yang dilakukan lebih dari 2 buah
Bentuk umum :
if kondisi1 then
aksi1
else if kondisi2 then
aksi2
else
aksi-alternatif
Contoh :
if x > y then
if x > z then
tulis x sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
else
if y > z then
tulis y sebagai bilangan terbesar
else
tulis z sebagai bilangan terbesar
Tiga aksi atau lebih (Nested-IF)
• Tiga kasus :
• Empat kasus :
Notasi Algoritma :
Program JenisBilanganBulat
{menentukanapakah sebuah bilangan bulat merupakan bilangan positif, negatif, atau nol }
Kamus
x : integer
Algoritma
Read (x)
If x > 0 then
write(‘positif’)
Else
if x < 0 then
write(‘negatif’)
else
if x = 0 then
write(‘nol’)
endif
endif
endif
Kelebihan Struktur/Jenis Proses Pemilihan
• Kemampuannya yang memungkinkan
pemroses mengikuti jalur aksi yg berbeda
berdasarkan kondisi yang ada
------------------------------------------------------------------------------
-
Read(nomor_hari)
CASE nomor_hari
1: write(‘Minggu’)
2: write(‘Senin’)
3: write(‘Selasa’)
4: write(‘Rabu’)
5: write(‘Kamis’)
6: write(‘Jum’at’)
7: write(‘Sabtu;)
Otherwise: write(‘bukan hari yang benar’)
endCASE
NOTASI ALGORITMA
PROGRAM NamaHari
{ mencetak nama hari berdasarkan nomor hari (1..7) }
KAMUS
Nomor_hari : integer
ALGORITMA
Read(nomor_hari)
CASE nomor_hari
1: write(‘Minggu’)
2: write(‘Senin’)
3: write(‘Selasa’)
4: write(‘Rabu’)
5: write(‘Kamis’)
6: write(‘Jum’at’)
7: write(‘Sabtu;)
Otherwise: write(‘bukan hari yang benar’)
endCASE
Tidak semua bahasa
pemrograman menyediakan
struktur CASE
Bentuk umum:
For pencacahnilai_awal to nilai_akhir do
Aksi
Endfor
Contoh pengulangan FOR Positif untuk Satu
Aksi
PROGRAM cetak_satuaksi
KAMUS
i: integer {pencacah pengulangan}
ALGORITMA
For i1 to 5 do {ulang sebanyak 5 kali}
Write(‘I Love Dinda’) {aksi yang diulang}
endfor
Contoh Notasi Algoritma pengulangan FOR Positif
untuk membuat tabel
PROGRAM cetak_tabel
KAMUS
a,b,c: integer
Bagi : real;
ALGORITMA
Write(‘-----------------------------------’)
write(‘a a*a a*a*a 1/a’)
Write(‘-----------------------------------’)
for a1 to 10 do
b a*a
c a*a*a
bagi 1/a
Write(a,b,c,bagi)
Endfor
Write(‘-----------------------------------’)
FOR menurun (descending) / FOR negatif
Bentuk umum:
ALGORITMA :
For i10 downto 1 do {ulang sebanyak 10 kali secara
menurun}
Write(i) {Aksi yang diulang}
endfor
Pengulangan FOR tersarang
(nested-FOR)
• Perulangan FOR berada pada perulangan
FOR yang lainnya
• Perulangan yang lebih dalam akan
diproses terlebih dahulu sampai habis,
kemudian perulangan yang lebih luar baru
akan bertambah, masuk lagi ke
perulangan dalam sampai habis, dst. Dan
berakhir pada akhir pengulangan luar.
Contoh :Pengulangan FOR tersarang
(nested-FOR)
PROGRAM nested_for
KAMUS
I,j: integer {pencacah pengulangan}
ALGORITMA
For i1 to 3 do
For j1 to 2 do
write(i,j)
endfor
Endfor
Struktur pengulangan- repeat-until
• Bentuk umum :
Repeat
aksi
Until kondisi
(pengulangan aksi dilakukan hingga kondisi
berhenti terpenuhi)
- Pengulangan akan dijalankan terus kalau
kondisi masih bernilai FALSE
- Pengulangan berhenti, jika kondisi bernilai
TRUE
while-do vs repeat-until
•
Repeat-until vs while-do
Kondisi pengulangan kondisi pengulangan
Di evaluasi di akhir di evaluasi di awal
I1
Repeat
write (‘hello pascal’)
II+1
Until I > 10
WHILE atau REPEAT ?
• Gunakan konstruksi WHILE pada kasus
yg mengharuskan terlebih dahulu
pemeriksaan kondisi objek sebelum objek
dimanipulasi
• Gunakan konstruksi REPEAT pada kasus
yg terlebih dahulu memanipulasi objek,
baru kemudian memeriksa kondisi objek
tersebut.
perbandingan
WHILE (benar) Repeat ( salah)
• ALGORITMA : • ALGORITMA :
• S0 • S0
• Read(x) • Repeat
• While x ≠ 0 do • read(x)
• s s + 1/x • s s + 1/x
• read(x) • Until x = 0
• Endwhile
• Write (s) • Write (s)
perbandingan
Repeat ( benar) While (salah)
ALGORITMA : ALGORITMA :
Repeat While nomormenu≠ 3 do
write(‘ MENU ‘) write(‘ MENU ‘)
write(‘1. Baca Data’) write(‘1. Baca Data’)
write(‘2. cetak data’) write(‘2. cetak data’)
write(‘3. keluar’) write(‘3. keluar’)
write(‘masukan pilihan anda(1/2/3) ? ‘) write(‘masukan pilihan anda(1/2/3) ? ‘)
read(nomormenu) read(nomormenu)
case nomormenu case nomormenu
1 : write (‘anda memilih menu nomor 1’) 1 : write (‘anda memilih menu nomor 1’)
2 : write(‘anda memilih meniu nomo 2’) 2 : write(‘anda memilih meniu nomo 2’)
3 : write(‘keluar program’ 3 : write(‘keluar program’
endcase endcase
endwhile
Until nomormenu = 3
Latihan
• Buatlah sebuah algoritma lengkap, untuk
menghitung jumlah deret bilangan bulat
dari 3 sampai dengan 10. dengan
menggunakan konstruksi pengulangan
REPEAT-UNTIL !
• Transformasikan algoritma di atas ke
program komputer dengan bahasa pascal
• Lakukan modifikasi algoritma dan program
komputer di atas untuk menghitung nilai
rata-rata, dan tampilkanlah nilai rata-rata
tersebut.
PEMROGRAMAN MODULAR
• adalah suatu teknik pemrograman di mana
program yang biasanya cukup besar
dibagi-bagi menjadi beberapa bagian
program yang lebih kecil .
• Dalam beberapa bahasa pemrograman
disebut : sub-rutin, modul, prosedur, atau
fungsi.
STRUKTUR POHON
PROGRAM A
Baca(A,B:Integer)
ALGORITMA:
read(A)
read(B)
Tukar(A, B:integer)
DEKLARASI
temp : integer {peubah bantu}
ALGORITMA
temp A
AB
B temp
Tulis(A,B : integer)
ALGORITMA
output(A)
output(B)
ALGORITMA
Baca(A,B)
Tukar(A,B)
Tulis(A,B)
KEUNTUNGAN Pemrogram Modular
Contoh :
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : sembarang}
{K.akhir : luas segitiga tercetak}
DEKLARASI
Alas, tinggi, luas : real
ALGORITMA
Read(alas, tinggi)
Luas (alas * tingg) / 2
Write(luas)
Pemanggilan Prosedur
• Nama Global :
Nama-nama (Konstanta, peubah(variabel), tipe, dll)
yang dideklarasikan di dalam program utama. (dapat
dikenal/digunakan dibagian manapun dalam program
(progam utama maupun prosedur).
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
alas, tinggi : real
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : sembarang}
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I 1 to N do
read(alas, tinggi
HitungLuasSegitiga
endfor
_______________________________________________________________
Nama Peubah (variabel) I, N, alas, tinggi variabel GLOBAL
Nama Peubah (variabel) luas variabel LOKAl
Menggunakan variabel Global atau variabel Lokal
• HitungLuasSegitiga(a*0.2, t*0.1)
• HitungLuasSegitiga(12, 6)
Parameter keluaran
• Parameter keluaran dideklarasikan di dalam
header prosedur, sebagaimana parameter
masukan
• Parameter keluaran dideklarasikan dengan
keyword OUTPUT.
• Ketika prosedur yg mengandung parameter
keluaran dipanggil, maka nama parameter
aktual menggantikan (substitute) nama
parameter formal yg bersesuaian.
Contoh : parameter keluaran-next
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
a, t, L : real
Procedure HitungLuasSegitiga(input alas, tinggi : real, output
luas:real)
{menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi nilainya }
{K.akhir : luas segitiga tercetak}
ALGORITMA
Luas (alas * tinggi) / 2
ALGORITMA
read(N) { tentukan banyaknya segitiga }
for I 1 to N do
read(a, t)
HitungLuasSegitiga(a, t, L)
Write(L)
endfor
Parameter masukan/keluaran
• Prosedur harus dapat mengakomodasi baik
masukan dari dan keluaran ke blok program
pemanggil
• Maka gunakan parameter masukan/ keluaran
• Bila parameter aktual diubah nilainya di dalam
badan prosedur, maka sesudah pemanggilan
prosedur nilai parameter aktual di titik
pemanggilan juga berubah
• Parameter masukan/keluaran dideklarasikan di
dalam header prosedur dengan keyword
INPUT/OUTPUT
• Parameter aktual harus berupa peubah, tidak
boleh berupa ekspresi atau konstanta
Contoh : parameter masukan/keluaran
PROGRAM Cetak0Sampai10
{ mencetak nilai dari 0 sampai 10 }
DEKLARASI
x : integer
procedure Inc(input/output x : integer)
{menaikan nilai x sebesar 1}
{K.Awal : x sudah terdefinisi nilainya}
{K.Akhir : nilai x bertambah 1}
DEKLARASI
ALGORITMA
xx+1
ALGORITMA
X0
repeat
write(x)
inc(x)
until x > 10
Parameter masukan - parameter masukan/keluaran
PROGRAM xyz
PROGRAM xyz DEKLARASI
DEKLARASI a, b : integer
a, b : integer Procedure tambah(input/output
Procedure tambah(input x,y:integer) x,y:integer)
Deklarasi Deklarasi
Algoritma Algoritma
xx+4 xx+4
Y y +4 Y y +4
write(‘nilai x dan y di akhir prosedur write(‘nilai x dan y di akhir prosedur
tambah:’) tambah:’)
Write(‘ x=‘, x) Write(‘ x=‘, x)
Write(‘ y=‘, y) Write(‘ y=‘, y)
ALGORITMA ALGORITMA
a 15 a 15
B 10 B 10
Write(‘nilai a dan b sebelum panggil Write(‘nilai a dan b sebelum panggil
prosedur tambah:’) prosedur tambah:’)
Write(‘ a=‘, a) Write(‘ a=‘, a)
Write(‘ b=‘, b) Write(‘ b=‘, b)
Tambah(a,b) Tambah(a,b)
Write(‘nilai a dan b sesudah panggil Write(‘nilai a dan b sesudah panggil
prosedur tambah:’) prosedur tambah:’)
Write(‘ a=‘, a) Write(‘ a=‘, a)
Write(‘ b=‘, b) Write(‘ b=‘, b)
Program dg prosedur atau
tanpa prosedur
• Dianjurkan menulis program yg modular
• Program yg dipecah menjadi beberapa
prosedur menunjukkan teknik
pemrograman yg baik dan terstruktur
Prosedur dg parameter atau
tanpa parameter
• Dianjurkan menulis prosedur dg parameter
• Parameter dapat mengurangi kebutuhan
penggunaan peubah (variabel) global
Parameter masukan atau
parameter keluaran
• Bila prosedur menghasilkan keluaran yg
digunakan oleh program pemanggil, gunakan
parameter keluaran untuk menampung keluaran
tsb.
• Bila prosedur tidak menghasilkan keluaran, atau
kalaupun menghasilkan keluaran tapi keluaran
tsb hanya digunakan di dalam prosedur itu saja,
maka gunakan parameter masukan.
• Bila prosedur menerima masukan sekaligus
keluaran pada parameter yg sama, gunakan
parameter masukan/keluaran.