0186-P01 Merged
0186-P01 Merged
DESAIN PROGRAM
OBJEKTIF
STEPS IN PROGRAM DEVELOPMENT
• Mendeskripsikan langkah-langkah dalam proses pengembangan program
PROGRAM DATA
• Mendeskripsikan data
Tiga pendekatan yang berbeda untuk desain program
diperkenalkan, yaitu prosedur-driven, event-driven dan
desain program data-driven. Pemrograman prosedural dan
pemrograman berorientasi objek diperkenalkan, bersama
dengan pengembangan top-down dan desain modular.
Algoritma didefinisikan sebagai seperangkat instruksi yang
terperinci, tidak ambigu, dan berurutan yang dikembangkan
untuk menggambarkan proses yang diperlukan untuk
menghasilkan output yang diinginkan dari masukan yang
diberikan.
Pseudocode adalah cara seperti bahasa Inggris untuk
mewakili algoritma. Pemrogram/programmer perlu memiliki
pemahaman yang baik tentang data yang akan diproses;oleh
karena itu, variabel data, konstanta dan literal didefinisikan,
dan dasar-dasar data, struktur data, file dan validasi data.
STEPS IN PROGRAM DEVELOPMENT
“Computer programming is an Art”.
Pemrograman dapat didefinisikan sebagai pengembangan solusi untuk
masalah yang telah diidentifikasi sebelumnya, merangkai instruksi terkait,
dan ketika ‘dipindahkan’ ke komputer, akan menghasilkan hasil yang
diinginkan.
Ini bagian pertama dari definisi programming adalah untuk merancang
solusi untuk masalah yang diidentifikasi.
Melompat langsung ke fase pengkodean tanpa mendesain terlebih dahulu
solusi yang tepat biasanya menghasilkan program yang mengandung
banyak kesalahan sehingga seringkali programmer kemudian
menghabiskan banyak waktu untuk menemukan dan memperbaiki
kesalahannya.
Seorang programmer yang berpengalaman akan terlebih dahulu
merancang solusi terlebih dahulu, cek solusi secara manual (desk check),
baru pindahkan/tuliskan ke kode program bahasa pemrograman yang
dipilih.
STEPS IN PROGRAM DEVELOPMENT
Dokumentasi program tidak boleh dicantumkan sebagai langkah terakhir dalam proses pengembangan
program, karena ini benar-benar merupakan tugas berkelanjutan dari definisi awal masalah hingga hasil
tes akhir.
Dokumentasi mencakup:
a. Dokumentasi eksternal (seperti bagan hierarki, algoritma solusi, dan hasil data pengujian) dan
b. Dokumentasi internal yang mungkin telah dikodekan dalam program.
Pemeliharaan program mengacu pada perubahan yang mungkin perlu dilakukan pada program.
Seringkali, perubahan ini dilakukan oleh programmer yang berbeda dari programmer yang pertama kali
menulis program. Jika program telah dirancang dengan baik menggunakan teknik pemrograman
terstruktur, kode akan terlihat sebagai dokumentasi diri, sehingga perawatan lebih mudah.
PROGRAM DESIGN METHODOLOGY
Prinsip dasar desain program didasarkan pada kenyataan
bahwa sebuah program menerima data masukan,
memproses data tersebut, dan kemudian mengirimkan
data tersebut ke pengguna program sebagai keluaran.
Baru-baru ini, sejumlah pendekatan berbeda untuk
desain program telah muncul, dan yang paling umum
adalah:
• procedure-driven
• event-driven
• data-driven
PROGRAM DESIGN METHODOLOGY
Procedure-driven program design (Desain program yang
digerakkan oleh prosedur)
Pendekatan prosedur-driven untuk desain program didasarkan
pada gagasan bahwa fitur paling penting dari sebuah program
adalah apa yang dilakukan oleh – proses atau fungsinya.
Berkonsentrasi pada apa yang harus dilakukan program,
programmer mengidentifikasi dan mengatur proses dalam
program. Aliran data masuk dan keluar dari setiap proses atau
fungsi menjadi pertimbang. Strategi dikembangkan untuk
memecah setiap fungsi menjadi aliran data yang lebih kecil dan
lebih spesifik.
PROGRAM DESIGN METHODOLOGY
Event-driven program design (Desain program yang digerakkan
oleh peristiwa)
Outline
2.1 Program data
2.2 How to write pseudocode
2.3 Meaningful names
• Variabel adalah nama yang diberikan untuk kumpulan sel memori yang dirancang untuk menyimpan item
data tertentu. Disebut variabel karena nilai yang disimpan dalam sel memori tersebut dapat berubah atau
bervariasi saat program dijalankan. Misalnya, variabel yang disebut total_amount mungkin berisi beberapa
nilai selama eksekusi program
• Konstanta adalah item data dengan nama dan nilai yang tetap sama selama eksekusi program. Misalnya,
nama lima puluh dapat diberikan untuk item data yang berisi nilai 50.
• Literal adalah konstanta yang namanya adalah representasi tertulis dari nilainya.
PROGRAM DATA
Tipe data
Di awal program, programmer harus secara jelas mendefinisikan bentuk atau jenis data. Tipe data dapat
berupa item dasar data atau struktur data.
• Item dasar data dasar adalah item yang berisi variabel tunggal yang selalu diperlakukan sebagai satu unit.
Item data ini biasanya diklasifikasikan ke dalam tipe data. Tipe data terdiri dari satu set nilai data dan satu
set operasi yang dapat dilakukan pada nilai-nilai tersebut. Tipe data dasar yang paling umum adalah:
PROGRAM
Integer
DATA
mewakili satu set bilangan bulat, positif, negatif atau nol. Contoh: 3, 576, -5
Float
mewakili satu set angka, positif atau negatif, yang dapat mencakup nilai sebelum
atau setelah titik desimal. Contoh: 19.2, 1.92E+01, –0.01
Char
mewakili set karakter pada keyboard, ditambah beberapa special karakter.
Contoh: ‘A’, ‘b’, ‘$’
Boolean
mewakili bendera kontrol atau sakelar yang mungkin berisi salah satu dari hanya dua nilai yang
mungkin, benar atau salah.
PROGRAM DATA
Struktur data
Struktur data adalah struktur yang terdiri dari item data lainnya. Item data yang dikandungnya adalah
komponennya, yang mungkin berupa item data dasar atau struktur data lainnya. Dalam struktur data, data
dikelompokkan bersama dengan cara tertentu, yang mencerminkan situasi yang terkait dengan program.
Struktur data yang paling umum adalah:
record:
kumpulan item data atau bidang yang semuanya memiliki hubungan dengan satu sama lain. Misalnya, catatan
siswa mungkin berisi catatan siswa, nomor, nama, alamat dan mata pelajaran yang terdaftar.
file:
kumpulan catatan terkait. Misalnya, file siswa mungkin berisi: kumpulan catatan tentang siswa.
PROGRAM DATA
Array:
Struktur data yang terdiri dari sejumlah variabel atau data item yang semuanya memiliki tipe data yang sama
dan diakses oleh yang sama nama. Misalnya, sebuah array yang disebut skor mungkin berisi kumpulan nilai
ujian siswa. Akses ke masing-masing item dalam array adalah dibuat dengan menggunakan indeks atau
subscript di samping nama array. Misalnya, skor (3) mewakili skor ketiga dalam larik yang disebut skor.
String:
Kumpulan karakter yang bisa tetap atau variabel. Sebagai contoh, “Jenny Parker” dapat mewakili struktur data
string sebagai nama siswa.
PROGRAM DATA
File
Metode penyimpanan informasi yang populer adalah memasukkan dan menyimpan data dalam file. Ada
beberapa keuntungan utama menggunakan file:
• file sequential (berurutan) atau teks, di mana data disimpan dan diambil secara berurutan
• direct or random-access files (file akses langsung atau acak), di mana data disimpan dan diambil secara acak,
menggunakan kunci atau indeks.
Note:
File berurutan dapat dibuka untuk membaca atau menulis, tetapi tidak keduanya operasi pada file yang sama.
File akses acak dapat dibuka untuk membaca dan menulis di berkas yang sama.
PROGRAM DATA
Validasi data
Data harus selalu menjalani pemeriksaan validasi sebelum diproses oleh sebuah program. Jenis data yang
berbeda memerlukan pemeriksaan yang berbeda dan bisa sangat spesifik; namun, pemeriksaan validasi data
yang paling umum adalah sebagai berikut:
• Jenis yang benar: data input harus sesuai dengan definisi tipe data yang dinyatakan di awal program.
• Rentang yang benar: data input harus berada dalam kumpulan/rentang nilai yang diperlukan.
• Panjang yang benar: data input – misalnya, string – harus benar panjangnya.
• Tanggal yang benar: tanggal masuk harus dapat diterima (beda format penulisan tanggal dapat
menyebabkan kesalahan saat validasi data).
PSEUDOCODE
Outline
Ketika komputer diperlukan untuk menerima informasi atau input dari sumber tertentu, apakah itu
terminal, disk atau perangkat lain, kata kerja Read dan Get digunakan dalam pseudocode. Read
biasanya digunakan ketika algoritma menerima input dari record pada file, sedangkan Get
digunakan ketika algoritma menerima input dari keyboard. Contoh, instruksi pseudocode untuk
menerima informasi adalah:
Setiap contoh menggunakan kata kerja tunggal, Read atau Get, diikuti oleh satu atau lebih kata
benda untuk menunjukkan data apa yang akan diperoleh.
PSEUDOCODE
A computer can put out information (Komputer dapat mengeluarkan informasi)
Ketika komputer diperlukan untuk mengirimkan informasi atau output ke perangkat, kata kerja Print, Write,
Put, Output atau Display digunakan dalam pseudocode. Print biasanya digunakan ketika output akan dikirim
ke printer, sedangkan Write digunakan ketika output akan ditulis ke file. Jika output akan ditulis ke layar, kata-
kata Put, Output atau Display digunakan dalam pseudocode. Contoh pseudocode yang umum adalah:
Sebagian besar program memerlukan bantuan komputer untuk melakukan berbagai macam perhitungan
matematis, atau untuk menerapkan rumus, dan untuk ini seorang programmer dapat menggunakan simbol
matematika yang sebenarnya atau kata-kata untuk simbol tersebut. Misalnya, instruksi pseudocode yang
sama dapat dinyatakan sebagai salah satu dari berikut ini:
add number to total
total = total + number
Kedua ekspresi dengan jelas menginstruksikan komputer untuk menambahkan satu nilai ke nilai lainnya,
sehingga keduanya dapat diterima dalam pseudocode. Simbol sama dengan '=' digunakan untuk menunjukkan
penetapan nilai sebagai hasil dari beberapa pemrosesan.
PSEUDOCODE
Agar konsisten dengan bahasa pemrograman tingkat tinggi, simbol berikut dapat ditulis dalam pseudocode:
+ for add
– for subtract
* for multiply
/ for divide
( ) for parentheses
Kata kerja Hitung dan Hitung juga tersedia. Beberapa contoh instruksi pseudocode untuk melakukan
perhitungan adalah:
1. Untuk memberikan data nilai awal dalam pseudocode, kata kerja Initialise atau Set digunakan.
2. Untuk menetapkan nilai sebagai hasil dari beberapa pemrosesan, simbol '=' atau '←' ditulis.
3. Untuk menyimpan variabel untuk digunakan nanti, kata kerja Save atau Store digunakan.
PSEUDOCODE
Beberapa contoh pseudocode nya:
Perhatikan bahwa simbol '=' digunakan untuk menetapkan nilai ke variabel sebagai hasil dari beberapa
pemrosesan dan tidak setara dengan simbol matematika '='. Untuk alasan ini, beberapa programmer
lebih suka menggunakan simbol '←' untuk mewakili operasi penetapan.
PSEUDOCODE
A computer can compare two variables and select one of two alternative actions (Komputer dapat
membandingkan dua variabel dan memilih salah satu dari dua tindakan alternatif)
Operasi komputer penting yang tersedia bagi pemrogram adalah kemampuan untuk membandingkan dua
variabel dan kemudian, sebagai hasil perbandingan, memilih salah satu dari dua tindakan alternatif. Untuk
merepresentasikan operasi ini dalam pseudocode, kata kunci khusus digunakan: IF, THEN dan ELSE.
Perbandingan data ditetapkan dalam klausa IF, dan pilihan alternatif ditentukan oleh opsi THEN atau ELSE.
Hanya satu dari alternatif ini yang akan dilakukan. Contoh pseudocode yang khas untuk mengilustrasikan
operasi ini adalah:
Dalam contoh ini, status kehadiran siswa diselidiki, dengan hasil bahwa akumulasi jumlah_waktu_paruh atau
hitung_waktu_penuh bertambah. Perhatikan penggunaan indentasi untuk menekankan opsi THEN dan ELSE,
dan penggunaan ENDIF pembatas untuk menutup operasi.
PSEUDOCODE
A computer can repeat a group of actions (Komputer dapat mengulangi sekelompok Tindakan)
Ketika ada urutan langkah pemrosesan yang perlu diulang, dua kata kunci khusus, DOWHILE dan
ENDDO, digunakan dalam pseudocode. Kondisi pengulangan sekelompok tindakan ditetapkan dalam
klausa DOWHILE, dan tindakan yang akan diulang tercantum di bawahnya. Sebagai contoh:
DOWHILE student_total < 50
Read student record
Print student name, address to report
add 1 to student_total
ENDDO
Dalam contoh ini, mudah untuk melihat pernyataan yang harus diulang, karena pernyataan tersebut
segera mengikuti pernyataan DOWHILE dan diberi indentasi untuk penekanan tambahan. Kondisi yang
mengontrol dan akhirnya mengakhiri pengulangan ditetapkan dalam klausa DOWHILE, dan kata kunci
ENDDO bertindak sebagai pembatas. Segera setelah kondisi pengulangan ditemukan salah, kontrol
diteruskan ke pernyataan berikutnya setelah ENDDO
PSEUDOCODE
Meaningful names
Saat merancang algoritma solusi, seorang programmer harus memperkenalkan beberapa nama unik, yang akan digunakan
untuk mewakili variabel atau objek dalam masalah. Semua nama harus bermakna. Nama yang diberikan ke variabel
hanyalah metode untuk mengidentifikasi lokasi penyimpanan tertentu di komputer.
Keunikan sebuah nama akan membedakan lokasi ini dengan lokasi lainnya. Seringkali sebuah nama menggambarkan jenis
data yang disimpan dalam variabel tertentu. Misalnya, variabel mungkin salah satu dari tiga tipe data sederhana: bilangan
bulat, bilangan real atau karakter.
Nama itu sendiri harus cukup transparan untuk menggambarkan variabel secara memadai; misalnya, angka1, angka2 dan
angka3 adalah nama yang lebih bermakna untuk tiga angka daripada A, B dan C.
Jika lebih dari satu kata digunakan dalam nama variabel, maka garis bawah berguna sebagai pemisah kata, misalnya
pajak_penjualan dan jumlah_kata.
Sebagian besar bahasa pemrograman tidak mentolerir spasi dalam nama variabel, karena spasi akan menandakan akhir dari
nama variabel dan dengan demikian menyiratkan bahwa ada dua variabel. Jika garis bawah tidak dapat digunakan, maka
kata dapat digabungkan dengan penggunaan huruf kapital sebagai pemisah kata, misalnya Pajak Penjualan dan WordCount.
Untuk keterbacaan, tidak disarankan untuk merangkai kata-kata semua dalam huruf kecil. Nama seperti 'carregistration'
jauh lebih sulit dibaca daripada 'carRegistration'.
PSEUDOCODE
The Structure Theorem
Teorema Struktur merevolusi desain program dengan membangun kerangka kerja terstruktur untuk mewakili
algoritma solusi. Teorema Struktur menyatakan bahwa adalah mungkin untuk menulis program komputer apa
pun dengan hanya menggunakan tiga struktur kontrol dasar yang mudah direpresentasikan dalam
pseudocode: urutan, seleksi dan pengulangan.
PSEUDOCODE
Urutan
Struktur kontrol urutan adalah eksekusi langsung dari satu langkah pemrosesan demi satu. Dalam
pseudocode, konstruksi ini direpresentasikan sebagai urutan pernyataan pseudocode:
statement a
statement b
statement c
Struktur kontrol urutan dapat digunakan untuk mewakili empat operasi komputer dasar pertama yang
terdaftar sebelumnya: menerima informasi, mengeluarkan informasi, melakukan aritmatika, dan menetapkan
nilai. Misalnya, urutan pernyataan yang khas dalam suatu algoritma mungkin berbunyi:
add 1 to pageCount
Print heading line1
Print heading line2
Set lineCount to zero
Read customer record
Instruksi ini menggambarkan struktur kontrol urutan sebagai straightforward list yang ditulis satu demi satu,
secara top-to-bottom. Setiap instruksi akan dieksekusi sesuai urutan kemunculannya.
Selection
Struktur kontrol seleksi adalah penyajian suatu kondisi dan pilihan antara dua tindakan, pilihan tergantung pada apakah kondisinya
benar atau salah. Konstruk ini mewakili kemampuan pengambilan keputusan komputer dan digunakan untuk menggambarkan operasi
komputer dasar kelima, yaitu membandingkan dua variabel dan memilih salah satu dari dua alternatif tindakan. Dalam pseudocode,
seleksi diwakili oleh kata kunci IF, THEN, ELSE dan ENDIF:
IF condition p is true THEN
statement(s) in true case
ELSE
statement(s) in false case
ENDIF
Jika kondisi p benar, maka pernyataan atau pernyataan dalam kasus benar akan dieksekusi, dan pernyataan dalam kasus salah akan
dilewati. Jika tidak (pernyataan ELSE) pernyataan dalam kasus benar akan dilewati dan pernyataan dalam kasus salah akan dieksekusi.
Dalam kedua kasus, kontrol kemudian lolos ke langkah pemrosesan berikutnya setelah pembatas ENDIF. Contoh pseudocode yang khas
mungkin berbunyi:
IF student_attendance_status is part_time THEN
add 1 to part_time_count
ELSE
add 1 to full_time_count
ENDIF
PSEUDOCODE
Repetition
Struktur kendali repetisi dapat didefinisikan sebagai penyajian sekumpulan instruksi yang akan dilakukan
berulang-ulang, selama kondisinya benar. Ide dasar dari kode berulang adalah bahwa blok pernyataan
dieksekusi berulang-ulang, sampai kondisi terminasi terjadi. Konstruksi ini mewakili operasi komputer dasar
keenam, yaitu mengulangi sekelompok tindakan. contoh pseudocode repetition sebagai:
DOWHILE condition p is true
statement block
ENDDO
Perulangan DOWHILE adalah perulangan keputusan terdepan; yaitu, kondisi diuji sebelum pernyataan
apa pun dieksekusi. Jika kondisi dalam pernyataan DOWHILE ditemukan benar, blok pernyataan setelah
pernyataan itu dieksekusi satu kali. Pembatas ENDDO kemudian memicu kembalinya kontrol ke
pengujian ulang kondisi. Jika kondisi masih benar, pernyataan diulangi, dan proses pengulangan
berlanjut sampai kondisi ditemukan salah. Kontrol kemudian diteruskan ke pernyataan yang mengikuti
pernyataan ENDDO.
PSEUDOCODE
Sangat penting bahwa setidaknya satu pernyataan dalam blok pernyataan mengubah kondisi dan
akhirnya menjadikannya salah, karena jika tidak, logika dapat menghasilkan loop tanpa akhir. Berikut
adalah contoh pseudocode yang mewakili struktur kontrol pengulangan:
Set student_total to zero
DOWHILE student_total < 50
Read student record
student name, address to report
add 1 to student_total
ENDDO
2 Selama total_siswa kurang dari 50 (yaitu, kondisi DOWHILE benar), blok pernyataan akan diulang.
3 Setiap kali blok pernyataan dieksekusi, satu instruksi di dalam blok itu akan menyebabkan variabel
student_total bertambah.
4 Setelah 50 iterasi, total_siswa akan sama dengan 50, yang menyebabkan kondisi DOWHILE menjadi
salah dan pengulangan berhenti. Penting untuk disadari bahwa inisialisasi dan peningkatan selanjutnya
dari variabel yang diuji dalam kondisi adalah fitur penting dari konstruk DOWHILE.
DEVELOPING AN
ALGORITHM
Pertemuan 3
Objectives
• To introduce methods of analysing a problem and developing a solution
• To develop simple algorithms using the sequence control structure
• To introduce methods of manually checking the developed solution
Outline
3.1 Defining the problem
3.2 Designing a solution algorithm
3.3 Checking the solution algorithm
Defining the problem
Langkah pertama, dan salah satu yang paling penting, adalah mendefinisikan masalah. Ini melibatkan
membaca dan membaca ulang masalah dengan cermat sampai Anda benar-benar memahami apa yang
diperlukan. Cukup sering, informasi tambahan perlu dicari untuk membantu menyelesaikan setiap ambiguitas
atau kekurangan dalam spesifikasi masalah. Untuk membantu analisis awal ini, masalah harus dibagi menjadi
tiga komponen terpisah:
3. Pemrosesan: daftar tindakan yang diperlukan untuk menghasilkan keluaran yang diperlukan.
Saat membaca rumusan masalah, komponen input dan output mudah diidentifikasi, karena
menggunakan kata-kata deskriptif seperti kata benda dan kata sifat. Komponen pemrosesan juga
diidentifikasi dengan mudah. Pernyataan masalah biasanya menggambarkan langkah-langkah
pemrosesan sebagai tindakan, menggunakan kata kerja dan kata keterangan.
Saat membagi masalah menjadi tiga komponen yang berbeda, analisis kata-kata aktual yang
digunakan dalam spesifikasi, dan bagi menjadi kata-kata yang deskriptif dan yang menyiratkan
tindakan. Mungkin membantu untuk menggarisbawahi kata benda, kata sifat dan kata kerja yang
digunakan dalam spesifikasi.
Dalam beberapa masalah pemrograman, input, proses, dan output mungkin tidak didefinisikan
dengan jelas. Dalam kasus seperti itu, yang terbaik adalah berkonsentrasi pada output yang
diperlukan. Melakukan hal ini kemudian akan menentukan input, dan cara akan ditetapkan untuk
menentukan langkah-langkah pemrosesan yang diperlukan untuk menghasilkan output yang
diinginkan. Pada tahap ini, bagian pemrosesan harus menjadi daftar tindakan apa yang perlu
dilakukan, bukan bagaimana tindakan itu akan diselesaikan.
Jangan mencoba untuk menemukan solusi sebelum masalah sepenuhnya didefinisikan.
Mari kita lihat contoh sederhana. Sebuah program diperlukan untuk membaca tiga angka, menjumlahkannya dan
mencetak totalnya.
Dengan melihat kata benda dan kata sifat yang digarisbawahi, mudah untuk melihat bahwa input untuk masalah ini
adalah tiga angka dan outputnya adalah total. Akan sangat membantu untuk menuliskan dua komponen pertama ini
dalam diagram sederhana, yang disebut diagram pendefinisian.
Sebuah program diperlukan untuk membaca tiga angka, menjumlahkannya dan mencetak totalnya.
Dengan melihat kata-kata yang digarisbawahi, dapat dilihat bahwa kata kerja pemrosesan adalah 'baca’,
‘jumlah' dan 'cetak'. Langkah-langkah ini sekarang dapat ditambahkan ke diagram pendefinisian kita untuk
membuatnya lengkap. Saat menuliskan setiap kata kerja pemrosesan, sertakan juga objek atau kata benda
yang terkait dengan setiap kata kerja. Diagram yang mendefinisikan sekarang menjadi:
Input Processing Output
Baca 3 Angka three numbers
Angka1
Jumlahkan ketiga angka
Angka2 total
tersebut
Angka3
Cetak angka total
Input untuk masalah, Output yang akan dihasilkan, dan langkah-langkah Processing yang diperlukan untuk
mengubah input menjadi output.
Ketika menulis langkah-langkah pemrosesan dalam suatu algoritma, gunakan kata-kata yang menggambarkan
pekerjaan yang harus dilakukan dalam hal tugas atau fungsi tertentu. Sebagai contoh:
Read three numbers
add numbers together
Print total number
Ada pola dalam kata-kata yang dipilih untuk menggambarkan langkah-langkah ini. Setiap tindakan
digambarkan sebagai kata kerja tunggal diikuti oleh objek dua kata. Penelitian telah menunjukkan bahwa jika
Anda mengikuti konvensi ini untuk menggambarkan langkah pemrosesan, dua manfaat akan dihasilkan.
Pertama, Anda menggunakan pendekatan disiplin untuk mendefinisikan masalah dan, kedua, pemrosesan
dibagi menjadi tugas atau fungsi yang terpisah.
Contoh:
Sebuah program diperlukan untuk meminta operator terminal untuk pembacaan suhu maksimum dan
minimum pada hari tertentu, menerima pembacaan tersebut sebagai bilangan bulat, dan menghitung dan
menampilkan ke layar suhu rata-rata, dihitung dengan (suhu maksimum + suhu minimum)/2.
Pertama, menetapkan komponen input dan output dengan menggarisbawahi kata benda dan kata sifat dalam
pernyataan masalah. Sebuah program diperlukan untuk meminta operator terminal untuk maksimum dan
minimum suhu pada hari tertentu, terima pembacaan tersebut sebagai bilangan bulat, dan hitung serta
tampilkan ke layar suhu rata-rata, dihitung dengan (suhu maksimum + suhu minimum)/2.
Komponen input adalah pembacaan suhu maksimum dan minimum, dan output adalah suhu rata-rata.
Menggunakan nama yang bermakna, komponen algoritma ini dapat diatur dalam diagram pendefinisian
sebagai berikut:
Sekarang buat langkah-langkah pemrosesan dengan menggarisbawahi kata kerja dalam pernyataan masalah.
Sebuah program diperlukan untuk meminta operator terminal untuk pembacaan suhu maksimum dan
minimum pada hari tertentu, menerima pembacaan tersebut sebagai bilangan bulat, dan menghitung dan
menampilkan ke layar suhu rata-rata, dihitung dengan (suhu maksimum + suhu minimum)/2.
Kata kerja pemrosesan adalah 'prompt’, get', 'calculate' dan 'display'. Dengan menemukan objek terkait dari
kata kerja ini, diagram pendefinisian sekarang dapat diselesaikan, sebagai berikut:
Ada beberapa argumen bahwa pekerjaan seorang programmer berakhir dengan desain algoritma. Setelah itu,
seorang pembuat kode atau programmer dapat mengkodekan algoritma solusi ke dalam bahasa
pemrograman tertentu. Dalam praktiknya, ini biasanya tidak terjadi. Namun, penting bahwa Anda tidak
memulai pengkodean sampai langkah-langkah yang diperlukan untuk mendefinisikan masalah dan rancangan
algoritma solusi selesai.
Berikut adalah algoritma solusi untuk tiga contoh sebelumnya. Semua melibatkan struktur kontrol urutan saja; tidak ada
keputusan atau loop, sehingga algoritma solusinya relatif sederhana. Contoh, Sebuah program diperlukan untuk membaca
tiga angka, menjumlahkannya dan mencetak totalnya.
A Defining diagram
B Solution algorithm
Diagram yang menentukan menunjukkan apa yang diperlukan, dan perhitungan sederhana akan menentukan caranya.
Menggunakan pseudocode dan struktur kontrol urutan membangun algoritma solusi sebagai berikut:
Add_three_numbers
Read Angka1, Angka2, Angka3
total = Angka1+ Angka2+ Angka3
Print total
END
Ada beberapa hal yang perlu dipertimbangkan dalam algoritma solusi ini:
Nama algoritma harus menjelaskan secara singkat fungsi dari algoritma,dan biasanya dinyatakan sebagai kata kerja tunggal diikuti
oleh objek dua kata.
3 Semua langkah pemrosesan antara nama algoritme dan pernyataan END telah diindentasi agar mudah dibaca.
4 Setiap langkah pemrosesan dalam diagram pendefinisian berhubungan langsung dengan satu atau lebih pernyataan dalam
algoritma. Misalnya, ‘baca tiga angka' dalam diagram pendefinisian menjadi Read angka1, angka2, angka3' dalam algoritma; dan
'Menjumlahkan angka' menjadi 'total = angka1 + angka2 + angka3'.
Sekarang setelah algoritma selesai, desk checking solusi dan kemudian menerjemahkannya ke dalam Bahasa pemrograman
Checking the solution algorithm
Setelah algoritma solusi telah ditetapkan, itu harus diuji kebenarannya. Langkah ini diperlukan karena
sebagian besar kesalahan logika utama terjadi selama pengembangan algoritma, dan jika tidak terdeteksi,
kesalahan ini dapat diteruskan ke program.
Jauh lebih mudah untuk mendeteksi kesalahan dalam pseudocode daripada dalam kode program yang
sebenarnya. Ini karena begitu pemrograman dimulai, biasanya diasumsikan bahwa logika algoritmanya benar.
Kemudian, ketika kesalahan terdeteksi, perhatian Anda terfokus pada baris kode individu untuk
mengidentifikasi masalah, bukan pada logika yang dinyatakan dalam algoritma. Seringkali terlalu sulit untuk
mundur dan menganalisis program secara keseluruhan. Akibatnya, banyak jam yang membuat frustrasi dana
terbuang sia-sia selama pengujian, yang sebenarnya hal ini dapat dihindari dengan menghabiskan beberapa
menit saja dengan desk checking algoritma solusi.
Desk checking melibatkan penelusuran melalui logika algoritma dengan beberapa data uji yang dipilih.
Artinya, ‘bekerja' melalui logika algoritma persis seperti yang dilakukan komputer, melacak semua nilai
variabel utama pada selembar kertas. 'Memainkan logika seperti komputer' ini tidak hanya membantu
mendeteksi kesalahan sejak dini, tetapi juga membantu Anda menjadi terbiasa dengan cara program berjalan.
Semakin dekat Anda dengan eksekusi program, semakin mudah untuk mendeteksi kesalahan.
1 Pilih kasus uji input sederhana yang valid. Dua atau tiga kasus uji biasanya cukup.
2 Tetapkan hasil sederhana yang diharapkan untuk setiap kasus uji. Ini adalah salah satu alasan untuk memilih data uji sederhana: jauh lebih mudah
untuk menentukan total 10, 20 dan 30 daripada 3,75, 2,89 dan 5,31!
3 Buatlah tabel pada selembar kertas dari nama variabel yang relevan dalam algoritma.
4 Jalankan kasus uji pertama melalui algoritma, baris demi baris, simpan catatan langkah demi langkah dari isi setiap variabel dalam tabel saat data
melewati logika.
5 Ulangi proses walk-through menggunakan kasus data uji lainnya, hingga algoritma telah mencapai akhir logisnya.
6 Periksa apakah hasil yang diharapkan yang ditetapkan pada Langkah 2 cocok dengan hasil aktual yang dikembangkan pada Langkah 5.
Dengan memeriksa algoritma di meja, Anda mencoba mendeteksi kesalahan lebih awal. Ini adalah ide yang baik untuk orang lain selain penulis
algoritma solusi untuk merancang data uji untuk program, karena mereka tidak dipengaruhi oleh logika program.
Desk checking akan menghilangkan sebagian besar kesalahan, tetapi masih tidak dapat membuktikan bahwa
algoritma tersebut 100% benar!. Contoh
A Solution algorithm
Add_three_numbers
1 Read Angka1, Angka2, Angka3
2 total = Angka1+ Angka2+ Angka3
3 Print total
END
B Desk checking
1. Pilih dua set data uji masukan. Tiga angka yang dipilih adalah 10, 20 dan 30 untuk kasus uji pertama
dan 40, 41 dan 42 untuk yang kedua.
First data
Second data set
set
Angka1 10 40
Angka2 20 41
Angka3 30 42
1. Tetapkan hasil yang diharapkan untuk setiap kasus uji
Second data
First data set
set
total 60 123
3. Siapkan tabel nama variabel yang relevan, dan lewati setiap kumpulan data uji melalui algoritme solusi, pernyataan
demi pernyataan. Nomor baris telah digunakan untuk mengidentifikasi setiap pernyataan dalam program.
Angka Angka
Statement number Angka3 total
1 2
First pass
1 10 20 30
2 60
3 print
Second pass
1 40 41 42
2 123
3 print
Periksa apakah hasil yang diharapkan (60 dan 123) cocok dengan hasil sebenarnya (total kolom dalam tabel)
Desk checking ini, yang seharusnya memakan waktu tidak lebih dari beberapa menit, Anda sekarang dapat
melanjutkan untuk mengkodekan algoritma ke dalam bahasa pemrograman. Perhatikan bahwa jika, pada
akhir desk checking, hasil aktual tidak sesuai dengan hasil yang diharapkan, algoritma mungkin berisi
kesalahan logika. Dalam hal ini, perlu periksa kembali ke algoritma nya, lalu perbaiki kesalahan.
Simpulan
Outline
4.1 The selection control structure
4.2 Algorithms using selection
4.3 The case structure
The selection control structure
Struktur kontrol seleksi diperkenalkan pada Bab 2 sebagai konstruksi kedua dalam Teorema Struktur. Struktur
ini mewakili kemampuan pengambilan keputusan dari komputer. Artinya, Anda dapat menggunakan struktur
kontrol pemilihan dalam pseudocode untuk mengilustrasikan pilihan antara dua atau lebih tindakan,
tergantung pada apakah suatu kondisi benar atau salah. Kondisi dalam pernyataan IF didasarkan pada
perbandingan dua item, dan biasanya dinyatakan dengan salah satu operator relasional berikut:
Seleksi sederhana terjadi ketika pilihan dibuat antara dua jalur alternatif, tergantung pada hasil dari suatu
kondisi yang benar atau salah. Struktur direpresentasikan dalam pseudocode menggunakan kata kunci IF,
THEN, ELSE dan ENDIF. Sebagai contoh:
IF account_balance < $300 THEN
service_charge = $5.00
ELSE
service_charge = $2.00
ENDIF
Hanya satu dari jalur THEN atau ELSE yang akan diikuti, tergantung pada hasil kondisi dalam klausa IF.
2 Simple selection with null false branch (null ELSE statement)
Struktur ELSE null adalah variasi dari struktur IF sederhana. Ini digunakan ketika tugas dilakukan hanya ketika
kondisi tertentu benar. Jika kondisinya salah, maka tidak ada pemrosesan yang terjadi dan pernyataan IF akan
dilewati. Sebagai contoh:
IF student_attendance = part_time THEN
add 1 to part_time_count
ENDIF
Dalam hal ini, kolom part_time_count akan diubah hanya jika student_attendance adalah part_time.
3 Combined selection (combined IF statement)
Pernyataan IF gabungan adalah pernyataan yang berisi beberapa kondisi, masing-masing terhubung dengan
operator logika AND atau OR. Jika konektor AND digunakan untuk menggabungkan kondisi maka kedua
kondisi harus benar agar kondisi gabungan menjadi benar. Sebagai contoh:
IF student_attendance = part_time
AND student_gender = female THEN
add 1 to female_part_time_count
ENDIF
Dalam hal ini, setiap catatan siswa akan menjalani dua tes. Hanya siswa perempuan dan yang kehadirannya
terdaftar sebagai paruh waktu yang akan dipilih, dan variabel female_part_time_count akan bertambah. Jika
salah satu kondisi ditemukan salah, penghitung akan tetap tidak berubah.
Jika konektor OR digunakan untuk menggabungkan dua kondisi apa pun, maka hanya satu kondisi yang harus
benar agar kondisi gabungan dianggap benar. Jika tidak ada kondisi yang benar, kondisi gabungan dianggap
salah. Mengubah AND dalam contoh di atas menjadi OR secara dramatis mengubah hasil dari pemrosesan
pernyataan IF.
IF student_attendance = part_time
OR student_gender = female THEN
add 1 to female_part_time_count
ENDIF
Dalam contoh ini, jika salah satu atau kedua kondisi ditemukan benar, kondisi gabungan akan dianggap benar.
Artinya, penghitung akan bertambah:
Hanya siswa yang bukan perempuan dan bukan paruh waktu yang akan diabaikan. Jadi, female_part_time_count akan berisi jumlah total siswa paruh
waktu perempuan, siswa paruh waktu laki-laki dan siswa penuh waktu perempuan. Akibatnya, female_part_time_count bukan lagi nama yang berarti
untuk variabel ini. Anda harus sepenuhnya memahami pemrosesan yang terjadi saat menggabungkan kondisi dengan operator logika AND atau OR.
Lebih dari dua kondisi dapat dihubungkan bersama dengan operator AND atau OR. Namun, jika kedua operator digunakan dalam satu pernyataan IF,
tanda kurung harus digunakan untuk menghindari ambiguitas. Lihatlah contoh berikut:
IF record_code = ‘23’
OR update_code = delete
AND account_balance = zero THEN
delete customer record
ENDIF
Pernyataan IF sekarang tidak lagi ambigu, dan jelas kondisi apa yang diperlukan untuk menghapus customer record . Catatan hanya akan dihapus
jika saldo akun sama dengan nol dan customer record = 23 atau update_code = hapus.
4 Nested selection (nested IF statement)
Pemilihan bersarang terjadi ketika kata IF muncul lebih dari sekali dalam pernyataan IF. Pernyataan IF
bersarang dapat diklasifikasikan sebagai linier atau non-linier.
Pernyataan IF bersarang linier digunakan ketika bidang sedang diuji untuk berbagai nilai dan tindakan yang
berbeda akan diambil untuk setiap nilai.
Bentuk IF bersarang ini disebut linier, karena setiap ELSE segera mengikuti kondisi IF yang sesuai dengannya.
Perbandingan dilakukan sampai kondisi benar ditemukan, dan tindakan yang ditentukan dijalankan sampai
pernyataan ELSE berikutnya tercapai. Pernyataan IF bersarang linier harus diindentasi agar mudah dibaca,
dengan setiap IF, ELSE, dan ENDIF yang sesuai disejajarkan.
Sebagai contoh:
IF record_code = ‘A’ THEN
Increment counter_A
ELSE
IF record_code = ‘B’ THEN
increment counter_B
ELSE
IF record_code = ‘C’ THEN
increment counter_C
ELSE
increment error_counter
ENDIF
ENDIF
ENDIF
Perhatikan bahwa ada jumlah pernyataan IF, ELSE dan ENDIF yang sama, bahwa setiap pernyataan ELSE dan
ENDIF diposisikan sedemikian rupa sehingga sesuai dengan pernyataan IF yang cocok, dan lekukan yang benar
membuatnya mudah dibaca dan dipahami. Blok pernyataan IF bersarang seperti ini kadang-kadang disebut
sebagai 'pernyataan IF berjenjang', karena mereka mengalir seperti air terjun.
Non-linear nested IF statements
Pernyataan IF bersarang non-linear terjadi ketika sejumlah kondisi berbeda harus dipenuhi sebelum tindakan
tertentu dapat terjadi.
Disebut nonlinier karena pernyataan ELSE dapat dipisahkan dari pernyataan IF yang dipasangkan. Indentasi
sekali lagi penting ketika mengekspresikan bentuk seleksi ini dalam pseudocode. Setiap pernyataan ELSE dan
ENDIF harus disejajarkan dengan kondisi IF yang sesuai dengannya.
Contoh:
IF student_attendance = part_time THEN
IF student_gender = female THEN
IF student_age > 21 THEN
add 1 to mature_female_pt_students
ELSE
add 1 to young_female_pt_students
ENDIF
ELSE
add 1 to male_pt_students
ENDIF
ELSE
add 1 to full_time_students
ENDIF
Perhatikan bahwa jumlah kondisi IF sama dengan jumlah pernyataan ELSE dan ENDIF. Menggunakan lekukan
yang benar membantu untuk melihat kumpulan pernyataan IF, ELSE, dan ENDIF mana yang cocok. Namun,
pernyataan IF bersarang non-linier mungkin mengandung kesalahan logika yang sulit untuk diperbaiki,
sehingga harus digunakan dengan hemat dalam pseudocode.
Jika memungkinkan, ganti serangkaian pernyataan IF bersarang non-linier dengan pernyataan IF gabungan.
Penggantian ini dimungkinkan dalam pseudocode karena dua pernyataan IF berurutan bertindak seperti
pernyataan IF gabungan yang menggunakan operator AND. Ambil contoh pernyataan IF bersarang nonlinier
berikut:
IF student_attendance = part_time THEN
IF student_age > 21 THEN
increment mature_pt_student
ENDIF
ENDIF
Hasilnya akan sama untuk kedua ekspresi pseudocode, tetapi format yang terakhir lebih disukai, jika logika
memungkinkan, hanya karena lebih mudah dipahami.
Algorithms using selection
Mari kita lihat beberapa contoh pemrograman yang menggunakan struktur kontrol seleksi. Dalam setiap
contoh, masalah akan didefinisikan, algoritma solusi akan dikembangkan dan algoritma akan diuji secara
manual. Untuk membantu mendefinisikan masalah, kata kerja pemrosesan dalam setiap contoh telah
digarisbawahi.
Contoh, rancang algoritma yang akan meminta operator tiga karakter, menerima karakter tersebut sebagai
input, mengurutkannya ke dalam urutan menaik dan menampilkannya ke layar
A Defining diagram
Algoritma solusi membutuhkan serangkaian pernyataan IF untuk mengurutkan tiga karakter ke dalam urutan menaik.
Read_three_characters
1 Prompt the operator for char_1, char_2, char_3
2 Get char_1, char_2, char_3
3 IF char_1 > char_2 THEN
temp = char_1
char_1 = char_2
char_2 = temp
ENDIF
4 IF char_2 > char_3 THEN
temp = char_2
char_2 = char_3
char_3 = temp
ENDIF
5 IF char_1 > char_2 THEN
temp = char_1
char_1 = char_2
char_2 = temp
ENDIF
6 Output to the screen char_1, char_2, char_3
END
Dalam solusi ini, sebagian besar logika algoritma berkaitan dengan pengurutan tiga karakter ke dalam urutan menaik.
Penyortiran ini dilakukan tetapi dengan menggunakan pseudocode yang 'menukar' dua item, sebagai berikut:
temp = char_1
char_1 = char_2
char_2 = temp
Di sini, nilai dalam variabel char_1 dan char_2 'ditukar', dengan menggunakan variabel sementara, temp.
Pseudocode seperti ini harus ditulis dengan hati-hati untuk memastikan item tidak hilang ditukar.
C Desk checking
Dua set karakter yang valid akan digunakan untuk memeriksa algoritma; karakter k, b dan g sebagai himpunan
pertama dan z, s dan a sebagai himpunan kedua.
1 Input data
Nomor baris telah digunakan untuk mengidentifikasi setiap pernyataan dalam program. Perhatikan bahwa
saat desk memeriksa logika, setiap pernyataan IF diperlakukan sebagai satu pernyataan.
Statement number char_1 char_2 char_3 temp
First pass
1, 2 k b g
3 b k k
4 g k
5
6 output output output
Second pass
1, 2 z s a
z
3 s z
4 a z z
5 a s s
6 output output output
The case structure
Struktur case control dalam pseudocode adalah cara lain untuk mengekspresikan pernyataan IF bersarang
linier. Ini digunakan dalam pseudocode karena dua alasan: dapat diterjemahkan ke dalam banyak bahasa
tingkat tinggi, dan membuat pseudocode lebih mudah untuk ditulis dan dipahami. IF bersarang sering terlihat
rumit dalam pseudocode dan bergantung pada struktur dan lekukan yang benar agar mudah dibaca. Mari kita
lihat contoh yang digunakan sebelumnya dalam bab ini:
IF record_code = ‘A’ THEN
increment counter_A
ELSE
IF record_code = ‘B’ THEN
increment counter_B
ELSE
IF record_code = ‘C’ THEN
increment counter_C
ELSE
increment error_counter
ENDIF
ENDIF
ENDIF
Struktur IF bersarang linier ini dapat diganti dengan struktur case control. Kasus sebenarnya bukan struktur
kontrol tambahan. Ini menyederhanakan struktur kontrol pemilihan dasar dan memperluasnya dari pilihan
antara dua nilai ke pilihan dari beberapa nilai. Dalam satu struktur kasus, beberapa jalur logika alternatif
dapat direpresentasikan. Dalam pseudocode, kata kunci CASE OF dan ENDCASE berfungsi untuk
mengidentifikasi struktur, dengan beberapa nilai yang diindentasi, sebagai berikut:
CASE OF single variable
value_1 : statement block_1
value_2 : statement block_2
.
.
value_n : statement block_n
value_other : statement block_other
ENDCASE
Jalur yang diikuti dalam struktur kasus tergantung pada nilai variabel yang ditentukan dalam klausa CASE OF.
Jika variabel berisi nilai_1, pernyataan blok_1 dijalankan; jika berisi nilai_2, blok pernyataan_2 dijalankan, dan
seterusnya. Nilai_lainnya disertakan jika variabel tidak berisi nilai yang tercantum.
Kita sekarang dapat menulis ulang pernyataan IF bersarang linier di atas dengan pernyataan kasus, sebagai
berikut:
CASE OF record_code
ENDCASE
Dalam kedua bentuk pseudocode, logika pemrosesannya persis sama. Namun, solusi kasus jauh lebih mudah
dibaca.
REPETITION CONTROL
STRUCTURE
Pertemuan 5
Objectives
• To develop algorithms that use the DOWHILE and REPEAT…UNTIL control structures
• To introduce a pseudocode structure for counted repetition loops
• To develop algorithms using variations of the repetition construct
Outline
5.1 Repetition using the DOWHILE structure
5.2 Repetition using the REPEAT…UNTIL structure
5.3 Counted repetition
Algoritma solusi yang dikembangkan sejauh ini memiliki satu karakteristik yang sama:
mereka menunjukkan logika program yang diperlukan untuk memproses hanya satu set nilai input.
Namun, sebagian besar program memerlukan logika yang sama untuk diulang untuk beberapa set data.
Cara paling efisien untuk mengatasi situasi ini adalah dengan membuat struktur perulangan dalam
algoritma yang akan menyebabkan logika pemrosesan diulang beberapa kali.
Ada tiga cara berbeda di mana satu set instruksi dapat diulang, dan setiap cara ditentukan oleh di mana
keputusan untuk mengulang ditempatkan:
konstruksi DOWHILE diperkenalkan sebagai representasi pseudocode dari loop berulang. Formatnya
adalah:
DOWHILE condition p is true
statement block
ENDDO
Konstruk DOWHILE adalah loop keputusan terdepan – kondisi diuji sebelum pernyataan apa pun
dieksekusi. Pada loop DOWHILE di atas, pemrosesan berikut terjadi:
2 Jika kondisi p ditemukan benar, pernyataan dalam blok pernyataan dieksekusi satu kali. Pembatas
ENDDO kemudian memicu kembalinya kontrol ke pengujian ulang kondisi p.
3 Jika kondisi p masih benar, pernyataan dieksekusi lagi, dan proses pengulangan berlanjut sampai
kondisi ditemukan salah.
4 Jika kondisi p ditemukan salah, kontrol diteruskan ke pernyataan berikutnya setelah pembatas ENDDO
dan tidak ada pemrosesan lebih lanjut yang terjadi di dalam loop
Ada dua pertimbangan penting yang harus Anda perhatikan sebelum merancang loop DOWHILE:
• Pengujian kondisi berada di awal loop. Ini berarti bahwa mungkin perlu untuk melakukan beberapa
pemrosesan awal untuk mengatur kondisi secara memadai sebelum dapat diuji.
• Satu-satunya cara untuk mengakhiri perulangan adalah dengan membuat kondisi DOWHILE salah. Ini
berarti beberapa proses harus diatur dalam blok pernyataan yang pada akhirnya akan mengubah
kondisi sehingga kondisi menjadi salah. Kegagalan untuk melakukan ini menghasilkan loop tanpa akhir
Using DOWHILE to repeat a set of instructions a known number of times
Ketika satu set instruksi harus diulang beberapa kali, counter dapat digunakan dalam pseudocode, yang
diinisialisasi sebelum pernyataan DOWHILE dan bertambah tepat sebelum pernyataan ENDDO. Mari kita
lihat sebuah contoh.
Fahrenheit–Celsius conversion
Setiap hari, stasiun cuaca menerima 15 suhu yang dinyatakan dalam derajat Fahrenheit. Sebuah
program akan ditulis yang akan menerima setiap suhu Fahrenheit, mengubahnya menjadi Celcius dan
menampilkan suhu yang dikonversi ke layar. Setelah 15 suhu diproses, kata-kata 'Semua suhu diproses'
akan ditampilkan di layar.
A Defining diagram
Setelah menentukan input, output, dan pemrosesan, Anda siap untuk menguraikan solusi untuk
masalah tersebut. Ini dapat dilakukan dengan menuliskan struktur kontrol yang diperlukan dan
variabel tambahan apa pun yang akan digunakan dalam algoritma solusi. Dalam contoh ini, Anda
membutuhkan:
• Penghitung, yang disebut hitungan suhu, diinisialisasi ke nol, yang akan mengontrol 15
pengulangan
B Solution algorithm
Fahrenheit_Celsius_conversion
1 Set temperature_count to zero
2 DOWHILE temperature_count < 15
3 Prompt operator for f_temp
4 Get f_temp
5 compute c_temp = (f_temp – 32) * 5/9
6 Display c_temp
7 add 1 to temperature_count
ENDDO
8 Display ‘All temperatures processed’ to the screen
END
2 Selama temperature_count kurang dari 15 (yaitu, DOWHILE kondisi benar), pernyataan antara DOWHILE dan ENDDO akan dieksekusi.
3 Variabel temperature_count bertambah satu kali dalam loop, tepat sebelum pembatas ENDDO (yaitu, tepat sebelum diuji lagi dalam
kondisi DOWHILE).
4 Setelah 15 iterasi, temperature_count akan sama dengan 15, yang menyebabkan kondisi DOWHILE menjadi salah dan kontrol diteruskan
ke pernyataan setelah ENDDO.
C Desk checking
Meskipun program akan membutuhkan 15 record untuk diproses dengan benar, pada tahap ini hanya
perlu memeriksa algoritma dengan dua set data yang valid.
1 Input data
REPEAT
statement
statement
.
.
UNTIL condition is true
REPEAT…UNTIL adalah keputusan yang mengikuti loop; pernyataan dieksekusi sekali sebelum kondisi diuji.
Ada dua pertimbangan yang perlu Anda perhatikan sebelum menggunakan REPEAT…UNTIL.
Pertama, pengulangan REPEAT…UNTIL dieksekusi ketika kondisinya salah; hanya ketika kondisinya menjadi
benar, pengulangan berhenti. Jadi, logika klausa kondisi dari struktur REPEAT…UNTIL adalah kebalikan dari
DO..WHILE. Misalnya, 'DOWHILE more record' sama dengan 'REPEAT... SAMPAI tidak ada record lagi', dan
'DOWHILE number NOT = 99' sama dengan 'REPEAT...UNTIL number = 99'.
Kedua, pernyataan dalam struktur REPEAT…UNTIL akan selalu dieksekusi setidaknya sekali. Akibatnya, tidak
perlu membaca priming saat menggunakan REPEAT…UNTIL. Satu pernyataan Baca di awal loop sudah cukup;
namun, pernyataan IF tambahan segera setelah pernyataan Baca harus disertakan, untuk mencegah
pemrosesan rekaman cuplikan. Sekarang mari kita bandingkan algoritma yang menggunakan struktur
DO..WHILE dengan masalah yang sama menggunakan struktur REPEAT…UNTIL.
Perhatikan loop DO..WHILE berikut:
Process_student_records
Set student_count to zero
Read student record
DOWHILE student_number NOT = 999
Write student record
increment student_count
Read student record
ENDDO
Print student_count
END
Ini dapat ditulis ulang sebagai loop keputusan tambahan, menggunakan REPEAT…UNTIL struktur sebagai berikut:
Process_student_records
Set student_count to zero
REPEAT
Read student record
IF student number NOT = 999 THEN
Write student record
increment student_count
ENDIF
UNTIL student number = 999
Print student_count
END
Sebuah program diperlukan untuk membaca serangkaian catatan inventaris yang berisi nomor item, deskripsi item, dan
gambar stok. Catatan terakhir dalam file memiliki nomor item nol. Program ini menghasilkan laporan stok barang rendah,
dengan hanya mencetak catatan yang memiliki angka stok kurang dari 20 barang. Judul akan dicetak di bagian atas laporan
dan jumlah total stok barang yang sedikit dicetak di bagian akhir.
A Defining diagram
Algoritma solusi memiliki struktur sederhana, dengan satu pernyataan Baca di awal loop
REPEAT…UNTIL dan pernyataan IF tambahan di dalam loop untuk memastikan rekaman trailer tidak
salah ditambahkan ke akumulator total_low_stock_items.
C Desk checking
total_low_stock_items (nomor item sama dengan nol) akan digunakan untuk menguji algoritma:
1 Input data
Counted loop
Pengulangan terhitung terjadi ketika jumlah yang tepat dari iterasi loop diketahui sebelumnya. Eksekusi loop dikendalikan oleh indeks loop, dan alih-
alih menggunakan DOWHILE, atau REPEAT…UNTIL, kata kunci sederhana DO digunakan sebagai berikut:
DO loop_index = initial_value to final_value
statement block
ENDDO
Loop DO melakukan lebih dari sekedar mengulang blok pernyataan. Itu akan:
3 uji nilai loop_index di awal setiap loop untuk memastikan bahwa itu berada dalam kisaran nilai yang dinyatakan
4 mengakhiri loop ketika loop_index telah melebihi nilai akhir yang ditentukan.
Dengan kata lain, konstruk pengulangan terhitung akan melakukan inisialisasi, penambahan, dan pengujian penghitung loop secara otomatis. Ini juga
akan menghentikan loop setelah jumlah pengulangan yang diperlukan telah dieksekusi.
Mari kita lihat lagi Contoh sebelumnya, yang memproses 15 suhu di stasiun cuaca setiap hari. Algoritma solusi
dapat ditulis ulang untuk menggunakan loop DO.
Fahrenheit–Celsius conversion
Setiap hari, stasiun cuaca menerima 15 suhu yang dinyatakan dalam derajat Fahrenheit. Sebuah
program akan ditulis yang akan menerima setiap suhu Fahrenheit, mengubahnya menjadi Celcius dan
menampilkan suhu yang dikonversi ke layar. Setelah 15 suhu diproses, kata-kata 'Semua suhu diproses'
akan ditampilkan di layar.
A Defining diagram
Setelah menentukan input, output, dan pemrosesan, Anda siap untuk menguraikan solusi untuk masalah
tersebut. Ini dapat dilakukan dengan menuliskan struktur kontrol yang diperlukan dan variabel tambahan apa
pun yang akan digunakan dalam algoritma solusi. Dalam contoh ini, Anda membutuhkan:
Solusinya akan membutuhkan loop DO dan penghitung loop (temperature_count) untuk memproses pengulangan.
Fahrenheit_Celsius_conversion
1 DO temperature_count = 1 to 15
2 Prompt operator for f_temp
3 Get f_temp
4 compute c_temp = (f_temp – 32) * 5/9
5 Display c_temp
ENDDO
6 Display ‘All temperatures processed’ to the screen
END
Perhatikan bahwa loop DO mengontrol semua pengulangan:
• Menginisialisasi temperature_count ke 1.
• Menambah temperature_count sebesar 1 untuk setiap melewati loop.
• Menguji temperature_count di awal setiap pass untuk memastikan bahwa itu berada dalam kisaran 1 s/d 15.
• Secara otomatis mengakhiri loop setelah temperature_count melebihi 15.
C Desk checking
Dua catatan yang valid harus cukup untuk menguji kebenaran algoritma. Tidak perlu memeriksa
konstruksi loop DO untuk semua 15 record.
1 Input data
2 Expected results
Desk checking algoritma dengan dua kasus uji input menunjukkan bahwa hasil yang diharapkan telah
tercapai.
ARRAY PROCESSING
Pertemuan 6
Objectives
• To introduce arrays and the uses of arrays
• To develop pseudocode algorithms for common operations on arrays
• To illustrate the manipulation of single- and two-dimensional arrays
Outline
6.1 Array processing
6.2 Initialising the elements of an array
6.3 Searching an array
6.4 Writing out the contents of an array
6.5 Programming examples using arrays
6.6 Two-dimensional arrays
Array processing
Array adalah salah satu alat pemrograman paling kuat yang tersedia. Mereka menyediakan programmer
dengan cara mengatur kumpulan item data homogen (yaitu, item yang memiliki tipe yang sama dan
panjang yang sama) ke dalam struktur data tunggal. Array, kemudian, adalah struktur data yang terdiri
dari sejumlah variabel yang semuanya memiliki tipe data yang sama, misalnya semua nilai ujian untuk
kelas yang terdiri dari 30 siswa matematika. Dengan menggunakan array, satu nama variabel seperti
'skor' dapat dikaitkan dengan semua 30 nilai ujian.
Item data individu yang membentuk array disebut sebagai elemen larik. Elemen dalam array dibedakan
satu sama lain dengan menggunakan indeks atau subskrip, diapit dalam tanda kurung, mengikuti nama
array, misalnya 'skor (3)'.
Subskrip menunjukkan posisi elemen dalam array; skor (3) mengacu pada skor ujian ketiga, atau elemen
ketiga dari skor array, dan skor (23) mengacu pada skor ujian ke-23. Subskrip atau indeks dapat berupa
angka atau variabel, dan kemudian dapat digunakan untuk mengakses item apa pun dalam batas larik
yang valid, misalnya:
scores (6), or
scores (index)
Array adalah struktur data internal; mereka diperlukan hanya selama durasi program di mana mereka
didefinisikan. Mereka adalah mekanisme yang sangat nyaman untuk menyimpan dan memanipulasi
kumpulan item data serupa dalam suatu program, dan Anda harus terbiasa dengan operasi yang paling
umum dilakukan pada mereka. Array kadang-kadang disebut sebagai tabel.
Operations on array
Operasi yang paling umum dilakukan pada array adalah:
• memuat satu set nilai awal ke dalam elemen array
• memproses elemen array
• mencari array, menggunakan pencarian linear atau biner, untuk tertentu sebuah elemen
• menulis isi array ke laporan.
Biasanya, elemen array diproses secara berurutan, dimulai dengan elemen pertama. Ini dapat dicapai
dengan mudah dalam pseudocode baik dengan loop DO atau loop DOWHILE.
Simple algorithms that manipulate arrays
Algoritma berikut melibatkan manipulasi sederhana dari array. Setiap algoritma ditulis menggunakan
loop DO. Dalam setiap algoritma, array diberi nama 'array', subscript diberi nama 'indeks' dan isi array
serta jumlah elemen telah ditetapkan. Jumlah elemen dalam array disimpan dalam variabel
number_of_elements. Contoh
Find_sum_of_elements
Set sum to zero
DO index = 1 to number_of_elements
sum = sum + array (index)
ENDDO
Print sum
END
Initialising the elements of an array
Dalam contoh ini, elemen array dicari untuk menentukan elemen mana yang terbesar. Algoritme dimulai dengan
menempatkan elemen pertama dari array ke dalam variabel terbesar_elemen, dan kemudian melihat elemen lain dari
array untuk melihat apakah ada nilai yang lebih besar. Nilai terbesar kemudian dicetak. Karena array adalah struktur
data internal, nilai awal harus ditempatkan ke dalam array sebelum informasi apa pun dapat diambil darinya. Nilai
awal ini dapat ditetapkan ke elemen array sebagai konstanta, atau dapat dibaca ke dalam array dari file.
Metode ini hanya boleh digunakan bila data dalam larik tidak mungkin diubah – misalnya, nama 12 bulan dalam
setahun. Untuk menginisialisasi array seperti itu, buatlah sebuah array yang disebut month_table, yang berisi 12
elemen dengan ukuran yang sama. Kemudian tetapkan elemen array dengan nama bulan, satu per satu, sebagai
berikut:
Initialise_month_table
month_table(1) = ‘January ’
month_table(2) = ‘February ’
:::
month_table(12) = ‘December ’
END
Perhatikan bahwa setiap elemen larik harus berukuran elemen terbesar – dalam hal ini September – jadi, nama bulan
yang lebih pendek harus diisi dengan kosong (spasi).
Loading initial values into an array from an input file
Mendefinisikan elemen array sebagai konstanta dalam program tidak disarankan jika nilainya sering
berubah, karena program perlu diubah setiap kali elemen array berubah. Prosedur umum adalah
membaca nilai input ke dalam elemen array dari file input.
Pembacaan serangkaian nilai dari file ke dalam array dapat diwakili oleh loop DOWHILE sederhana.
Loop harus berakhir ketika array penuh atau file input telah mencapai akhir file. Kedua kondisi ini dapat
dipenuhi dalam klausa kondisi dari loop DOWHILE.
Dalam algoritma pseudocode berikut, nilai dibaca dari file input dan ditetapkan ke elemen array, dimulai
dengan elemen pertama, hingga tidak ada lagi nilai input atau array penuh. Nama array adalah 'array',
subscript adalah 'index', dan jumlah maksimum elemen yang dapat ditampung oleh array adalah
max_num_elements.
Read_values_into_array
Set max_num_elements to required value
Set index to zero
Read first input value
DOWHILE (input values exist) AND (index < max_num_elements)
index = index + 1
array (index) = input value
Read next input value
ENDDO
IF (input values exist) AND index = max_num_elements THEN
Print ‘Array size too small’
ENDIF
END
Perhatikan bahwa pemrosesan akan berhenti ketika file input telah mencapai EOF atau array penuh.
Pesan kesalahan akan dicetak jika ada lebih banyak item data input daripada elemen dalam array.
Searching an array
Operasi umum pada array adalah mencari elemen array untuk item data tertentu. Alasan untuk mencari
array mungkin:
• untuk mengedit nilai input – yaitu, untuk memeriksa apakah itu adalah elemen yang valid dari sebuah
array
Saat mencari array, merupakan keuntungan jika array diurutkan ke dalam urutan menaik, sehingga,
ketika kecocokan ditemukan, sisa array tidak perlu dicari. Jika Anda menemukan elemen larik yang
sama dengan entri input, kecocokan telah ditemukan dan pencarian dapat dihentikan. Juga, jika Anda
menemukan elemen larik yang lebih besar dari entri input, tidak ada kecocokan yang ditemukan dan
pencarian dapat dihentikan. Perhatikan bahwa jika entri array yang lebih besar dicari lebih sering
daripada entri yang lebih kecil, mungkin ada keuntungan untuk mengurutkan array ke dalam urutan
menurun. Sebuah array dapat dicari baik menggunakan pencarian linier atau pencarian biner.
A linear search of an array
Pencarian linier melibatkan melihat setiap elemen array, satu per satu, dimulai dengan elemen pertama. Lanjutkan
pencarian sampai Anda menemukan elemen yang dicari atau Anda mencapai akhir array. Pencarian linier sering
digunakan untuk memvalidasi item data. Algoritma pseudocode untuk pencarian linier dari sebuah array akan
membutuhkan sebuah flag program bernama element_found. Bendera ini, awalnya disetel ke false, akan disetel ke
true setelah nilai yang dicari ditemukan, yaitu, ketika elemen larik saat ini sama dengan item data yang dicari. Dalam
algoritme berikut, item data yang dicari disimpan dalam variabel input_value, dan variabel max_num_elements berisi
jumlah total elemen dalam array.
Linear_search_of_an_array
Set max_num_elements to required value
Set element_found to false
Set index to 1
DOWHILE (NOT element_found) AND (index <= max_num_elements)
IF array (index) = input_value THEN
Set element_found to true
ELSE
index = index + 1
ENDIF
ENDDO
IF element_found THEN
Print array (index)
ELSE
Print ‘value not found’, input_value
ENDIF
END
Writing out the contents of an array
Elemen array dapat digunakan sebagai akumulator data, untuk ditulis ke laporan. Menuliskan isi array
melibatkan mulai dengan elemen pertama dari array dan berlanjut sampai semua elemen telah ditulis. Ini
dapat diwakili oleh loop DO sederhana. Dalam algoritma pseudocode berikut, nama arraynya adalah
'array' dan subscriptnya adalah 'index'. Jumlah elemen dalam array diwakili oleh number_of_elements.
Write_values_of_array
DO index = 1 to number_of_elements
Print array (index)
ENDDO
END
Programming examples using arrays
Rancang program yang akan meminta dan menerima 18 nilai ujian dari tes matematika, menghitung
rata-rata kelas, dan menampilkan semua skor dan skor rata-rata ke layar skor.
A Defining diagram
C Solution algorithm
Process_exam_scores
Set total_score to zero
DO index = 1 to 18
Prompt operator for score
Get score
scores (index) = score
total_score = total_score + scores (index)
ENDDO
Compute average_score = total_score / 18
DO index = 1 to 18
Display scores (index)
ENDDO
Display average_score
END
Two-dimensional arrays
Dalam beberapa aplikasi bisnis, misalnya, ada kebutuhan untuk array multidimensi, di mana dua atau
lebih subskrip diperlukan untuk menemukan elemen dalam array. Array dua dimensi dimuat dalam
kolom dalam urutan baris; semua kolom untuk baris satu dimuat sebelum pindah ke baris dua dan
memuat kolom untuk baris itu, dan seterusnya. Pembacaan serangkaian nilai dari file ke dalam array dua
dimensi dapat diwakili oleh loop DO dalam loop DOWHILE.
Read_values_into_array
Set max_num_elements to 24
Set row_index to zero
Read input file
DOWHILE (input values exist) AND (row_index < 6)
row_index = row_index + 1
DO column_index = 1 to 4
freight_charges (row_index, column_index) = input value
Read input file
ENDDO
ENDDO
IF (input values exist) AND row_index = 6 THEN
Print ‘Array size too small’
ENDIF
END
PERTEMUAN 9
ALGORITMA UNTUK
MASALAH BISNIS
POKOK BAHASAN
1. Struktur Program
2. Struktur Chart
3. Membuat Laporan Dengan Page Break
4. Contoh Algoritma Penyelesaian
STRUKTUR PROGRAM
Secara umum program yang dilakukan untuk memproses
data yang dibaca dari file dapat digambarkan sbb:
Sub Proses_record
Proses_inisialisasi
Baca record pertama
Do while not EOF
process_record_ini
Baca next record
ENDDO
Proses_final
END
STRUKTUR CHART
Algoritma di atas digambarkan dengan struktur chart
berikut:
• Tiga modul di atas dapat berisi statement yang
dibutuhkan untuk memproses data yang dibaca dari file
• Main program dari struktur chart sudah ada sehingga
dapat dikembangkan proses dari ketiga modul tersebut
STRUKTUR
PROGRAM & CHART
Sub Proses_record
Proses_inisialisasi
Baca record pertama
Do while not EOF
process_record_ini
Baca next record
ENDDO
Proses_final
END
MEMBUAT LAPORAN DENGAN
PAGE BREAK
▪ Suatu laporan membutuhkan:
– Judul
– Baris judul
– Kolom judul
– Detail
– Total
▪ Di samping itu suatu halaman laporan hanya
menampung beberapa baris record, sehingga harus
mengatur pemindahan ke halaman baru
▪ Untuk itu dibutuhkan sebuah control break untuk
memeriksa kapan harus pindah ke halaman baru (page
break)
MEMBUAT LAPORAN DENGAN
PAGE BREAK (lanjutan)
PERANCANGAN
PROGRAM UNTUK
MASALAH BISNIS
POKOK BAHASAN
1. Teknik Perancangan Program
Berorientasi Bisnis
– Teknik Perancangan File/ Database dalam
bentuk spesifikasi file
– Teknik Perancangan Program dalam bentuk
spesifikasi program
2. Contoh kasus dan contoh penggunaan
teknik perancangan file dan program
TEKNIK PERANCANGAN PROGRAM
BERORIENTASI BISNIS
▪ Berikut ini akan dijelaskan beberapa teknik
perancangan program di dalam sebuah
pemrograman terstruktur untuk mendukung
proses pembangunan/pengembangan sistem.
▪ Teknik perancangan file/database dalam bentuk
spesifikasi file
▪ Teknik perancangan program dalam bentuk
spesifikasi program
1. Teknik Perancangan File atau Database
f. PROGRAM FLOWCHART
▪ Menggambarkan logika atau proses program dalam
bentuk flowchart.
g. PROSES PROGRAM
▪ Menjelaskan secara rinci mengenai isi dan proses
program, termasuk penjelasan dari command button
apabila dijalankan.
Contoh Program Bisnis
pada
Sistem Perpustakaan
1.Kode Buku
Spesifikasi Program (Diagram
HIPO
KONSEP PEMROGRAMAN
BERORIENTASI OBJEK
POKOK BAHASAN
1. Pendahuluan
2. Pengenalan Pemrograman Berorientasi Objek
3. Pengenalan Objek & Class
4. Karakteristik OOP
5. Kelebihan OOP
6. Pemrograman Terstruktur VS Pemrograman
Berorientasi Objek
PENDAHULUAN
• Perancangan prosedural memiliki keterbatasan dalam
pengembangan sistem yang besar, jaringan dan sistem
multi user.
• Meskipun disusun secara terstruktur dan modular, tetap
menjadi sangat rumit dan sulit dipahami.
• Kurangnya menyadari pekerjaan yang dilakukan dengan
tim pengembang sehingga terjadi duplikasi pada
beberapa bagian.
• Teknologi berorientasi objek dapat mengatasi
permasalahan di atas serta memberikan fleksibilitas dan
ekonomis untuk program sistem jaringan dan multi user
PENGENALAN PEMROGRAMAN
BERORIENTASI OBJEK
▪ Pemrograman berbasis objek (OOP)
berdasarkan pada konsep objek dan
interaksinya.
▪ Objek dapat menerima pesan (message),
mengolah data, dan mengirimkan pesan ke
objek lain 🡪 membentuk interaksi antar objek.
▪ Objek bersifat independen: tiap objek dapat
dipandang sebagai sebuah entitas mandiri yang
memiliki peran atau tanggung jawab tertentu.
PENGENALAN PEMROGRAMAN
BERORIENTASI OBJEK (lanjutan)
APAKAH OBJEK ?
▪ Objek adalah representasi sebuah entitas yang
memiliki makna tertentu yang menjadi perhatian si
pemandang.
▪ Segala sesuatu yang ada di dunia adalah objek.
Cth : Manusia, Bunga, Hewan, Mobil, Meja, Kursi,
Sepeda, Kereta, Pesawat terbang, dll.
▪ Setiap sistem terdiri dari objek-objek (sistem juga
termasuk objek).
▪ Evaluasi & pengembangan sistem disebabkan oleh
interaksi antara objek-objek di dalam atau di luar
sistem.
APAKAH KELAS ?
▪ Merupakan template untuk membuat obyek.
merupakan prototipe/blue prints yang
mendefinisikan variable-variabel dan
method –method secara umum.
▪ Objek (instances) merupakan hasil instansiasi
dari suatu kelas, proses pembentukan obyek
dari suatu class disebut dengan instantiation.
banyak instance
(wujud nyata)
satu template
7
CONTOH KELAS
Class Mobil
Behavior/Tingkah Laku :
Akseleration(), Turn(direction),
Stop(), Break() dll
Identitas :
B7471UL
ATRIBUT
▪ Atribut adalah data yang membedakan
antara objek satu dengan yang lain.
▪ Contoh atribut mobil : manufaktur, model,
warna, jumlah pintu, ukuran engine,
kecepatan dll
▪ Dalam class, atribut disebut sebagai
variabel.
ATRIBUT (lanjutan)
▪ Instance variable
– adalah atribut untuk tiap obyek dari class yang sama.
– Tiap obyek mempunyai dan menyimpan nilai
atributnya sendiri.
– Jadi tiap obyek dari class yang sama boleh
mempunyai nilai yang sama atau beda
▪ Class variable:
– adalah atribut untuk semua obyek yang dibuat dari
class yang sama.
– Semua obyek mempunyai nilai atribut yang sama.
– Jadi semua obyek dari class yang sama mempunyai
hanya satu nilai yang value nya sama.
TINGKAH LAKU
• Tingkah laku/behavior adalah hal-hal yang bisa
dilakukan oleh objek dari suatu class.
• Behavior dapat digunakan untuk mengubah nilai atribut
suatu objek, menerima informasi dari objek lain, dan
mengirim informasi ke obyek lain untuk melakukan suatu
task.
• Dalam class, behavior disebut juga sebagai methods.
• Contoh: mobil
akseleration
stop
turn
break
TINGKAH LAKU (lanjutan)
• Method adalah serangkaian statements dalam
suatu class yang menghandle suatu task
tertentu.
• Cara objek berkomunikasi dengan objek lain
adalah dengan menggunakan method.
RESPONSIBILITY
▪ Responsibility adalah sebuah kontrak atau
sebuah obligasi dari sebuah class.
▪ Saat sebuah class dibuat, semua objek dalam
class tersebut memiliki keadaan dan tingkah
laku yang sama.
▪ Saat sebuah class dimodelkan, awal yang baik
adalah menspesifikasikan responsibilities
sesuatu dalam sebuah kamus.
▪ Teknik seperti CRC card (Class Responsibility
Collaboration) dan use case dapat membantu.
KONSTRUKTOR
▪ Konstruktor adalah proses instansiasi objek dari kelas
dilakukan pada operasi khusus atau sekumpulan
instruksi.
▪ Konstruktor menetapkan nilai awal untuk atribut objek
baru.
▪ Konstruktor biasanya memiliki nama yang sama dengan
kelasnya.
▪ Pseudocode untuk instansiasi objek baru
Create nama-objek as new nama-Class()
▪ Contoh :
Create mobil as new Mobil()
KONSTRUKTOR (lanjutan)
▪ Kata NEW menunjukkan pembuatan objek baru.
▪ Nama kelas diawali dengan huruf besar. Contoh : Mobil,
Siswa, Pendaftaran, dll.
▪ Nama objek diawali dengan huruf kecil. Contoh : mobil,
siswa, pendaftaran, dll
▪ Konstruktor memungkinkan :
– Memiliki parameter yang menginisilisasi atribut
dengan nilai spesifik. Contoh : Create mobil as new
Car (”Ford”, ”Falcon”, 4, 300, 6, ”Biru”, 0); atau
– Tidak memiliki parameter. Objek baru dengan nilai
default untuk semua atributnya.
AKSESOR & MUTATOR
Nilai variabel dari objek tersedia untuk semua operasi di
dalam objek tersebut, tetapi tersembunyi dari objek luar.
Untuk keamanan, operasi publik dikenal istilah aksesor
dan mutator, yang membolehkan objek luar untuk
mengakses nilai pada atribut.
▪ Aksesor adalah nama operasi yang mengakses nilai.
Nama aksesor dimulai dengan kata GET seperti
getPaySlip().
▪ Mutator adalah nama operasi yang merubah nilai atribut.
Operasi mutator memungkinkan objek eksternal untuk
mengubah nilai yang tersimpan dalam atribut. Nama
mutator diawali dengan kata SET seperti setPayRate().
VISIBILITY
▪ Visibility merupakan kemampuan suatu obyek
untuk melihat atau berhubungan dengan obyek
lain.
▪ Atribut dan metoda dapat memiliki salah satu
sifat visibility berikut :
▪ Private (-), tidak dapat dipanggil dari luar
class yang bersangkutan
▪ Protected (#), hanya dapat dipanggil oleh
class yang bersangkutan dan anak-anak yang
mewarisinya
▪ Public (+), dapat dipanggil oleh siapa saja
PENGIRIMAN
PESAN/MESSAGING
• Objek-objek bekerjasama dengan mengirimkan
pesan dari satu objek ke objek lainnya.
• Suatu obyek mengirimkan pesan ke objek lain
untuk melakukan sebuah operasi.
• Suatu objek juga dapat menerima pesan dari
objek lain untuk melakukan operasi lainnya.
• Kunci dalam pemrograman berorientasi objek
adalah bahwa setiap objek itu sendiri
bertanggung jawab untuk melaksanakan tugas.
PENGIRIMAN
PESAN/MESSAGING (lanjutan)
• Ini termasuk interaksi dan komunikasi dengan
benda-benda lainnya.
• Objek mengirim pesan ke objek lainnya. Pesan
mungkin menyampaikan informasi tambahan
melalui parameter untuk benda-benda
penerima.
Contoh Messaging
• Mobil yang diparkir di depan rumah hanya
sepotong logam yang dengan sendirinya tidak
mampu melakukan aktivitas apapun. Pengemudi
harus menyalakan mobil, menggunakan rem, dll
• Objek "pengetik" dapat mengirim pesan
"mengubah ukuran (20)" ke objek huruf untuk
mengubah ukuran font.
KARAKTERISTIK OOP
▪ Abstraksi
▪ Enkapsulasi
▪ Inheritansi
▪ Polimorfisme
ABSTRAKSI
• Abstraksi adalah proses penyembunyian
kerumitan dari suatu proses untuk
permasalahan yang dihadapi.
• Contoh : Orang hanya perlu berpikir bahwa
mobil adalah sebuah objek yang telah memiliki
prilaku spesifik, yang dapat digunakan sebagai
alat transportasi, sehingga dia/mereka tinggal
menggunakannya atau mengendarainya tanpa
harus mengetahui kerumitan proses yang
terdapat di dalam mobil tersebut.
ABSTRAKSI (lanjutan)
Memiliki :
Tinggi
Segitiga
Alas
Apa yang anda ingin segitiga lakukan ?
Hitung Luas
Hitung Keliling
ENKAPSULASI
Enkapsulasi atau pembungkusan berfungsi
untuk melindungi suatu objek dari dunia
luar, sehingga seseorang tidak akan mampu
merusak objek yang terbungkus. Objek yang
terbungkus dalam suatu kelas baik data
maupun fungsinya tidak bisa terlihat apalagi
dirubah pada saat objek digunakan.
CONTOH ENKAPSULASI
30
POLIMORFISME
▪ Polimorfisme dapat diartikan sebagai
kemampuan suatu bahasa pemrograman untuk
memiliki fungsi-fungsi atau metode yang
bernama sama tetapi berbeda dalam parameter
dan implementasi kodenya (overloading).
▪ Kelas turunan dapat menggunakan fungsi yang
ada pada kelas pewarisnya dan dapat
mengimplementasikan kode yang berbeda dari
fungsi pewarisnya ini dinamakan overriding.
CONTOH POLIMORFISME
Resume
Membentuk Objek Baru
TAHAPAN PERANCANGAN
PROGRAM BERORIENTASI OBJEK
1. Identifikasi kelas, atribut, responsibility
dan operasi
2. Menentukan hubungan antar objek dan
kelas
3. Perancangan algoritma untuk operasi
menggunakan desain struktur
4. Mengembangkan tes algoritma
KELEBIHAN PEMROGRAMAN
BERORIENTASI OBJEK
• Menyediakan struktur modular yang jelas untuk program sehingga
bagus digunakan untuk mendefinisikan tipe data abstrak di mana
detil implementasinya tersembunyi.
• Mempermudah dalam memelihara dan memodifikasi kode yang
sudah ada. Objek yang baru dapat dibuat tanpa mengubah kode
yang sudah ada.
• Menyediakan framework untuk library kode di mana komponen
software yang tersedia dapat dengan mudah diadaptasi dan
dimodifikasi oleh programmer. Hal ini sangat berguna untuk
mengembangkan GUI.
• Resiko kesalahan relative kecil (lebih sedikit mengetik), sintaks juga
tidak perlu dihafalkan, karena semuanya sudah disediakan.
• Waktu debugging lebih singkat, karena setiap objek tidak perlu di-
debug setiap kali digunakan
PEMROGRAMAN TERSTRUKTUR VS
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Terstruktur PBO
a. Penekanan pada urutan yang a. Pendekatan lebih pada data
harus dikerjakan (algoritma bukanya pada fungsi/prosedur
pemecahan masalah)
b. Program berukuran besar b. Program besar dibagi ke dalam
dipecah-pecah menjadi program- Objek-objek. Struktur data
program yang lebih kecil dirancang dan menjadi
(Modular) karakteristik dari objek-objek
c. Kebanyakan fungsi/prosedur c. Fungsi-fungsi yang
berbagi data global mengoperasikan data tergabung
dalam suatu objek yang sama
PEMROGRAMAN TERSTRUKTUR VS
PEMROGRAMAN BERORIENTASI OBJEK
(lanjutan)
Pemrograman Terstruktur PBO
d. Data bergerak secara bebas d. Data tersembunyi dan terlindung
dalam sistem, dari satu fungsi ke dari fungsi/prosedur yang ada di
fungsi yang lain saling terkait luar
TAHAPAN PERANCANGAN
BERORIENTASI OBJEK
POKOK BAHASAN
1. Identifikasi kelas, atribut, responsibility
dan operasi
2. Menentukan hubungan antar objek dan
kelas
3. Perancangan algoritma untuk operasi
menggunakan desain struktur
4. Mengembangkan tes algoritma atau
menjalankan algoritma
IDENTIFIKASI KELAS, ATRIBUT,
RESPONSIBILITY DAN OPERASI
▪ Sama seperti pendekatan top-
down, untuk mendefinisikan garisbawahi kata
benda dan sifat yang relevan dengan masalah.
▪ Contoh
Dibutuhkan program untuk membaca file karyawan
yang berisikan berisi nomor karyawan, tingkat
upah, dan jumlah jam kerja per minggu.
Program kemudian memvalidasi upah dan jam
kerja. Jika benar, hitung upah mingguan
pegawai dan cetak payslip
IDENTIFIKASI KELAS, ATRIBUT,
RESPONSIBILITY DAN OPERASI (lanjutan)
Validasi : menurut aturan perusahaan, maksimal
seorang pegawai bekerja 60 jam seminggu dan
maksimum 250,000 per jam. Jika jam bekerja ata
u tingkat upah melebihi aturan, input data dan
pesan yang sesuai akan dicetak dan
upah mingguan karyawan tidak dihitung.
Hitung upah mingguan : upah mingguan dihitung
jam kerja dikali tingkat upah. Jika lebih dari 35 jam
kerja, pembayaran untuk lembur jam kerja dihitung
setengahnya.
IDENTIFIKASI KELAS, ATRIBUT,
RESPONSIBILITY DAN OPERASI
(lanjutan)
Kelas Atribut Responsibility operasi
Payslip empNum Validasi data +setEmpNum()
+setPayRate()
+setHoursWorked
()
payRate Laporan validasi data +getValidInput(Va
lidInput)
hoursWorked Hitung upah mingguan -setPay()
(mutator)
weeklyPay Cetak slip gaji untuk setiap +printPaySlip()
absen yang valid
Payroll File data Baca file data absen +runTimeSheet()
absen +run()
MENENTUKAN HUBUNGAN ANTAR
OBJEK DAN KELAS
▪ Berdasarkan pernyataan masalah diperoleh dua
kelas yaitu penggajian dan payslip. Objek dari
kelas penggajian menggunakan objek dari kelas
payslip. Hubungan antar kelas digambarkan
dengan notasi UML.
Payroll Uses Payslip
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR
▪ Setiap operasi dalam kelas memerlukan penjelasan
langkah-demi langkah instruksi yang menghasilkan
perilaku yang diperlukan. Masing-masing algoritma
dimulai dengan nama operasi dan diakhiri dengan
pernyataan END.
▪ Data yang dibutuhkan objek payslip dikirim dari
penggajian segera setelah diciptakan. Nilai atribut
tersedia untuk semua operasi di dalam kelas
▪ dan empNumber, weeklyPay, validInput, hoursWorked
dan payRate dapat dilihat untuk setiap operasi.
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR (lanjutan)
setEmpNumber(inEmpNumber)
empNumber = inEmpNumber
END
setPayRate(inPayRate)
set errorMessage to blank
IF inPayRate>MAX_PAY THEN
errorMessage = ”Rate upah melebihi 250,000”
Print empNumber, inPayRate, errorMessage
validInput = false
ELSE payRate = inPayRate
END IF
END
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR (lanjutan)
setHoursWorked(inHoursWorked)
Set errorMessage to blank
IF inHoursWorked > MAX_HOURS THEN
errorMessage = ”Jam kerja melebihi 60”
Print empNumber, inHoursWorked, errorMessage
validInput = false
ELSE
hoursWorked = inHoursWorked
ENDIF
END
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR (lanjutan)
setPay()
IF hoursWorked <= NORM_HOURS THEN
weeklyPay = payRate * hoursWorked
ELSE
overtimeHours = hoursWorked – NORM_HOURS
overtimePay = overtimeHours * payRate * 1.5
weeklyPay = (payRate * NORM_HOURS) +
overtimePay
ENDIF
END
PERANCANGAN ALGORITMA UNTUK OPERASI
MENGGUNAKAN DESAIN STRUKTUR (lanjutan)
Konstruktor paySlip dapat menggunakan mutator untuk
diperbaharui nilai-nilai atribut. Namun, jika data tidak valid, nilai
tidak akan diperbaharui, mungkin diperbaharui dengan data
yang tidak valid. Oleh karena itu, standar konstruktor harus
memperbaharui seluruh atribut.
Payslip()
Set empNumber to ”Uknown”
Set payRate to 0.0
Set hoursWorked to 0
Set validInput to true
Set weeklyPay to 0.0
END
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR (lanjutan)
Konstruktor menerima input yang dapat memanggil standar
konstruktor sebelum pengaturan nilai atribut
Payslip(inEmpNumber, inPayRate, inHoursWorked)
Payslip()
setEmpNumber(inEmpNumber)
setPayRate(inPayRate)
SetHoursWorked(inHoursWorked)
IF validInput THEN
setPay()
ENDIF
END
PERANCANGAN ALGORITMA UNTUK
OPERASI MENGGUNAKAN DESAIN
STRUKTUR (lanjutan)
Objek eksternal perlu mengetahui tentang validitas payslip dan
upah mingguan yang dihitung. Aksesor menginformasikan objek
lain tentang validitas payslip
getValidInput(validInput)
END
printPayslip()
IF validInput THEN
Print empNumber, payRate, hoursWorked, weeklypay
ENDIF
END
MENGEMBANGKAN TES ATAU
MENJALANKAN ALGORITMA
▪ Langkah terakhir adalah mengembangkan kelas yang
memiliki operasi dengan algoritma seperti baris utama pada
program prosedural.
▪ Menjalankan algoritma dengan membuat kelas yang
berisikan algoritma utama.
▪ Tes atau menjalankan kelas menyediakan interface antara
objek payslip dan lingkungan luar termasuk pengguna.
▪ File data absen merupakan bagian dari interface antara
lingkungan luar dan objek payslip. Data absen akan menjadi
atribut pada driver kelas dan driver konstruktor akan
membuka file.
Payroll()
timeSheetFile = ”timesheet.dat”
END
MENGEMBANGKAN TES ATAU
MENJALANKAN ALGORITMA (lanjutan)
Input Proses Output
Data Absen Baca data absen Cetak paySlip
empNumber Buat payslip dari data absen Pesan kesalahan untuk
hoursWorked Cetak paySlip yang valid paySlip yang tidak valid
payRate
Payroll 1..*
Payslip
-timesheetFile Uses empNumber
+run() payRate
hoursWorked
validInput
weeklyPay
+setEmpNumber(EmpNumb
er)
+setpayRate(PayRate)
+setHoursWorked(HoursWo
rked)
-setPay()
+getValidInput(validInput)
+printPayslip
Analisa kasus
Sebuah sawah berbentuk segitiga 🡪
kalimat ini dapat dimaknai kita dapat
membentuk Class SAWAH_SEGITIGA
Methods getPupuk ()
digunakan untuk menghitung
berapa jumlah pupuk yang
diperlukan.
Kenapa SegitigaCtrl?
Kenapa attributnya
“private” karena attribute
ini hanya bias diakses
HANYA oleh class itu atau
turunannya saja.
Kenapa
Class control untuk
Segitiga dan
BujurSangkar dibuat
terpisah?
PERANCANGAN
BERORIENTASI OBJEK
UNTUK MULTI KELAS
POKOK BAHASAN
1. Pendahuluan
2. Hubungan Antar Kelas
3. Inheritansi
4. Polimorfisme
PENDAHULUAN
▪ Keunggulan utama bahasa pemrograman
berorientasi objek adalah pada
kemampuan dalam membangun program
yang besar.
▪ Dalam merancang program yang
menggunakan beberapa kelas perlu
mempertimbangkan hubungan antar
kelas.
NOTASI
▪ Pendekatan perancangan berorientasi
objek dan pemrograman berorientasi
objek telah menjadi metodologi yang
stabil.
▪ Notasi yang digunakan untuk
perancangan berorientasi objek adalah
UML (Unified Modelling Language) dari
Rumbaugh, Booch, dan jacobsen.
HUBUNGAN ANTAR KELAS
1. Hubungan yang paling sederhana adalah hubungan
antar dua kelas yang independen satu sama lain.
Sebuah kelas dapat menggunakan layanan yang lain
disebut dengan asosiasi.
2. Sebuah kelas mungkin dibuat oleh kelas lain atau
mengandung kelas lain yang merupakan bagian dari
dirinya sendiri. Hubungan kolektif dapat berupa
agregasi atau komposisi.
3. Kelas memungkinkan mewarisi seluruh atribut dan
operasi dari kelas induk, memiliki nama yang unik,
atribut dan operasi yang berbeda dengan kelas induk.
Bentuk hubungan antara kelas induk dan anak adalah
generalisasi.
ASOSIASI
▪ Asosiasi menggambarkan interaksi yang
mungkin terjadi antara suatu objek dengan objek
yang lain.
▪ Asosiasi memungkinkan suatu kelas untuk
menggunakan atau mengetahui atribut atau
operasi yang dimiliki oleh kelas lain.
▪ Ada 2 jenis asosiasi :
▪ Asosiasi dua arah atau
▪ Asosiasi satu arah (pasif)
6
ASOSIASI (lanjutan)
▪ Contoh : kelas mobil dan kelas garasi
merupakan kelas independen. Mobil kadang
menggunakan layanan kelas garasi seperti
parkir. Objek yang diinstansiasi dari kedua kelas
dapat saling berinteraksi melalui pengiriman
atau penerimaan pesan
Mobil menggunakan
Garasi
1..2 1
multiplisitas
ASOSIASI (lanjutan)
▪ Pada asosiasi terdapat muliplisitas.
▪ Multiplisitas adalah jumlah banyaknya obyek sebuah
kelas yang berelasi dengan sebuah obyek lain pada
kelas lain yang berasosiasi dengan klass tersebut.
Tipe Notasi UML Keterangan
Exactly 1 or blank Seorang Karyawan bekerja pada satu dan
hanya satu departemen
Zero or 1 0..1 Seorang Karyawan memiliki satu suami/istri
atau tidak punya suami/istri
Zero or More 0..* or * Customer dapat tidak melakukan
pembayaran sampai beberapa kali
1 or More 1..* Universitas menawarkan paling sedikit 1
matakuliah sampai beberapa matakuliah
Specific range 7..9 Tim memiliki pertandingan terjadwal
sebanyak 7, 8, atau 9 pertandingan
ASOSIASI (lanjutan)
9
ASSOCIATIONS
public class A {
public B b;
public A(){
}
}
public class B {
public B(){
}
}
AGREGASI
▪ Agregasi adalah hubungan suatu kelas yang
merupakan bagian dari kelas lain namun bersifat
tidak wajib.
▪ Simbol :
11
KOMPOSISI
▪ Komposisi adalah hubungan suatu kelas yang
merupakan bagian yang wajib dari kelas lain.
▪ Simbol :
12
GENERALISASI
▪ Generalisasi diperlukan untuk memperlihatkan
hubungan pewarisan antar objek atau kelas.
▪ Simbol :
13
GENERALISASI
public class Person {
public Person(){
public Employee(){
}
POLYMORPHISM
• Polymorphism adalah kemampuan untuk
mempunyai beberapa bentuk yang berbeda.
• Polymorphism diimplementasikan dengan
mekanisme inheritance dan overriding
hewan
“bersuara”
Output
Overriding menggunakan keyword “super”
Contoh Overriding Python
----------------
Hasil running code program 🡪
PERTEMUAN 14
IMPLEMENTASI ALGORITMA
KE DALAM BAHASA
PEMROGRAMAN
BERORIENTASI OBJEK
POKOK BAHASAN
Bahasa Pemrograman Yang Mendukung OOP
BAHASA PEMROGRAMAN
BERORIENTASI OBJEK
Bahasa pemrograman yang mendukung OOP
antara lain:
1.SmallTalk
2.C++
3.Java, dll
SMAL TALK
▪ Smalltalk adalah bahasa pemrograman
berorientasi objek yang pertama kali populer.
▪ Smalltalk dikembangkan di Xerox PARC-
Amerika Serikat.
▪ Ide dasar Smalltalk meliputi:
1. Semua adalah objek
2. Objek bisa saling berkomunikasi melalui
messages atau berita
3. Semua tersedia untuk dimodifikasi
BAHASA C++
▪ C++ dibuat pada tahun 1980an oleh Bell Labs sebagai
pengembangan dari Bahasa Pemrograman C (yang
dibuat oleh Brian W. Kernighan dan Denies M. Ricthie
pada tahun 1972). Salah satu perbedaan yang paling
mendasar dengan bahasa C adalah C++ medukung
konsep pemrograman berorientasi objek (Object
Oriented Language).
▪ Tahun 1980 seorang ahli yang bernama Bjarne
Stroustrup mengembangkan beberapa hal dari bahasa
C yang dinamakan “C with Classes” yang berganti nama
pada tahun 1983 menjadi C++.
▪ C++ merupakan bahasa pemrograman yang case
sensitive.
JAVA
▪ Java adalah bahasa pemrograman berorientasi objek yang
dikembangkan oleh Sun Microsystems sejak tahun 1991.
▪ Bahasa Pemrograman Java pertama lahir dari The Green
Project, yang berjalan selama 18 bulan, dari awal tahun 1991
hingga musim panas 1992. Proyek tersebut belum
menggunakan versi yang dinamakan Oak. Proyek ini dimotori
oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill
Joy, beserta sembilan pemrogram lainnya dari Sun
Microsystems. Salah satu hasil proyek ini adalah maskot Duke
yang dibuat oleh Joe Palrang.
▪ Java adalah bahasa pemrograman yang mirip dengan C/C++
▪ Keunggulanya adalah Java dapat berjalan di banyak platform
perangkat keras (Multy-Platform).
PHP
Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs personal). PHP pertama kali
dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama Form Interpreted
(FI), yang wujudnya berupa sekumpulan skrip yang digunakan untuk mengolah data formulir dari web.
Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI. Dengan
perilisan kode sumber ini menjadi sumber terbuka, maka banyak pemrogram yang tertarik untuk ikut
mengembangkan PHP.
Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini, interpreter PHP sudah diimplementasikan dalam
program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan
PHP/FI secara signifikan. Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter
PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut
merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP
diubah menjadi akronim berulang PHP: Hypertext Preprocessor.
Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP
4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai
disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan
dan stabilitas yang tinggi. Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP
mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke
dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi
objek. Versi terbaru dan stabil dari bahasa pemograman PHP saat ini adalah versi 8.0.
PYTHON
Python dibuat dan dikembangkan oleh Guido Van
Rossum, yaitu seorang programmer yang berasal dari
Belanda. Pembuatannya berlangsung di kota Amsterdam,
Belanda pada tahun 1990. Pada tahun 1995 Python
dikembangkan lagi agar lebih kompatibel oleh Guido Van
Rossum. Selanjutnya pada awal tahun 2000, terdapat
pembaharuan versi Python hingga mencapai Versi 3
sampai saat ini. Python mendukung beberapa paradigma
pemrograman, termasuk pemrograman terstruktur
(terutama, prosedural), berorientasi objek, dan fungsional.
PERTEMUAN 15
REVIEW/QUIZ