Anda di halaman 1dari 283

PERTEMUAN 1

DESAIN PROGRAM
OBJEKTIF
STEPS IN PROGRAM DEVELOPMENT
• Mendeskripsikan langkah-langkah dalam proses pengembangan program

PROGRAM DESIGN METHODOLOGY


• Memperkenalkan metodologi desain program

PROCEDURAL VERSUS OBJECT-ORIENTED PROGRAMMING


• Memperkenalkan pemrograman prosedural dan berorientasi objek

AN INTRODUCTION TO ALGORITHMS AND PSEUDOCODE


• Memperkenalkan algoritma dan pseudocode

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

Tujuh langkah dasar pengembangan program:


1. Define the problem.
2. Outline the solutions.
3. Develop the outline into an algorithm.
4. Test the algorithm for correctness.
5. Code the algorithm into a specific programming language.
6. Run the program on the computer.
7. Document and maintain the program
STEPS IN PROGRAM DEVELOPMENT
1. Define the problem (Menentukan Masalah)
Langkah ini melibatkan membaca dan membaca ulang
masalah dengan cermat sampai Anda benar-benar
memahami apa yang diperlukan.

Untuk membantu analisis awal ini, masalah harus dibagi


menjadi tiga komponen terpisah:
• Masukan (the Inputs)
• Keluaran (The Outputs)
• Langkah-langkah pemrosesan untuk menghasilkan
output yang dibutuhkan
STEPS IN PROGRAM DEVELOPMENT
2. Outline the solution. Outline solusi setelah masalah
didefinisikan, Anda dapat memutuskan untuk
memecahnya menjadi tugas atau langkah yang lebih
kecil, dan membuat garis besar (outline) solusi.
Garis besar awal ini biasanya merupakan rancangan
kasar dari solusi dan dapat mencakup:
• langkah-langkah utama yang terlibat
• subtugas utama (jika ada)
• antarmuka pengguna (jika ada)
• struktur kontrol utama (misalnya loop pengulangan)
• variabel utama dan struktur record
• logika utama.
STEPS IN PROGRAM DEVELOPMENT
3. Develop the outline into an algorithm
(Kembangkan garis besar menjadi algoritma).
Garis besar solusi yang dikembangkan pada Langkah
2 kemudian dikembangkan menjadi algoritma:
Serangkaian langkah-langkah tepat yang
menggambarkan tugas-tugas yang harus dilakukan
dan urutan pelaksanaannya. Menggunakan
pseudocode (bentuk bahasa Inggris terstruktur)
untuk mewakili algoritma solusi.
STEPS IN PROGRAM DEVELOPMENT
4. Test the algorithm for correctness (Uji kebenaran algoritma)
Langkah ini adalah salah satu yang paling penting dalam pengembangan
program, namun ini adalah langkah yang paling sering dilewati.
Tujuan utama dari desk checking algoritma adalah untuk mengidentifikasi
kesalahan logika utama lebih awal, sehingga kesalahan dapat dengan
mudah dikoreksi.
Data uji perlu berjalan melalui setiap langkah dalam algoritma untuk
memeriksa bahwa instruksi dijelaskan algoritma akan benar-benar
melakukan apa yang seharusnya. Pemrogram ‘berpikir' melalui logika
algoritma, persis seperti komputer, melacak semua variabel utama pada
selembar kertas.
STEPS IN PROGRAM DEVELOPMENT
5. Code the algorithm into a specific programming
(Kodekan algoritma ke dalam pemrograman)

Kodekan algoritma ke dalam pemrograman pilihan.


Bahasa pemrograman hanya setelah semua
pertimbangan desain dalam empat langkah
sebelumnya terpenuhi, Anda harus benar-benar
mulai mengkodekan program ke dalam
pemrograman pilihan Anda.
STEPS IN PROGRAM DEVELOPMENT
6. Run the program on the computer (Jalankan program
di komputer)

Langkah ini menggunakan kompiler program dan data uji


yang dirancang pemrogram untuk menguji kode
kesalahan sintaksis (yang terdeteksi pada waktu
kompilasi) dan kesalahan logika (yang terdeteksi pada
waktu berjalan).
Jika program telah dirancang dengan baik, frustrasi dan
keputusasaan yang sering dikaitkan dengan pengujian
program dapat dikurangi seminimal mungkin. Langkah ini
mungkin perlu dilakukan beberapa kali hingga Anda
yakin bahwa program berjalan sesuai kebutuhan.
STEPS IN PROGRAM DEVELOPMENT
7. Document and maintain the program (Dokumentasikan dan pemeliharaan program)

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)

Pendekatan event-driven untuk desain program didasarkan pada


gagasan bahwa suatu peristiwa atau interaksi dengan dunia luar
dapat menyebabkan program berubah dari satu keadaan ke
keadaan yang lain.
Status identifikasi awal suatu program, kemudian semua pemicu
yang mewakili peristiwa yang valid untuk status tersebut
ditetapkan. Misalnya, ketika pengguna program dapat saja memilih
“mouse event”mengklik tombol kiri mouse, mengklik tombol kanan
mouse, menyeret mouse atau mengklik dua kali mouse, maka
setiap tindakan klik mouse tersebut dapat memicu perintah yang
berbeda dalam program dan dengan demikian tentukan akan
menghasilkan status program yang berbeda sesuai dengan “mouse
event”.
PROGRAM DESIGN METHODOLOGY
Data-driven program design (Desain program berbasis
data)

Pendekatan berbasis data untuk desain program


didasarkan pada gagasan bahwa, data dalam suatu
program lebih stabil daripada proses yang terlibat.
Pendekatan ini dimulai dengan analisis data dan
hubungan antara data, untuk menentukan struktur data.
Setelah struktur data didefinisikan, output/luaran data
yang diperlukan diperiksa yang selanjutnya digunakan
untuk menetapkan proses apa yang diperlukan untuk
mengubah data input menjadi output/luaran yang
diperlukan.
PROCEDURAL VS OBJECT-ORIENTED
PROGRAMMING
Procedural Programming (Pemrograman prosedural )
Pemrograman prosedural didasarkan pada pendekatan
terstruktur dan top-down untuk menulis program yang
efektif. Pendekatan ini berkonsentrasi pada apa yang
harus dilakukan oleh suatu program dan melibatkan
pengidentifikasian dan pengorganisasian proses-proses
dalam program. Masalahnya biasanya dipecah menjadi
tugas atau fungsi yang terpisah dan mencakup:
• Pengembangan top-down (the top-down development),
• Desain modular (modular design).
PROCEDURAL VS OBJECT-ORIENTED
PROGRAMMING
Top-down development
Dalam pengembangan desain program top-down, solusi
umum untuk masalah diuraikan terlebih dahulu. Outline/Garis
besar kemudian dibagi secara bertahap menjadi langkah-
langkah yang lebih rinci sampai akhirnya tingkat yang paling
rinci telah selesai.
Setelah proses pengembangan top-down (disebut juga
dekomposisi fungsional atau stepwise refinement)
programmer mulai membuat kode program.

Kelebihan dari desain pengembangan program menggunakan


cara ini adalah ketepatan pemrograman yang lebih presisi
daripada yang mungkin dilakukan sebelumnya.
PROCEDURAL VS OBJECT-ORIENTED
PROGRAMMING
Modular design (desain modular)
Pemrograman prosedural juga menggabungkan konsep
desain modular, yang melibatkan pengelompokan tugas
bersama karena semuanya melakukan fungsi yang sama.

Desain modular terhubung langsung ke pengembangan


top-down, karena langkah-langkah atau subtugas di
mana solusi program dibagi membentuk modul program.
Desain modular yang baik juga membantu dalam
membaca dan memahami program.
PROCEDURAL VS OBJECT-ORIENTED
PROGRAMMING
Object-oriented programming

Pemrograman berorientasi objek juga didasarkan pada


pemecahan masalah; namun, fokus utamanya adalah
pada hal-hal (atau objek) yang membentuk program.
Program ini berkaitan dengan bagaimana objek
berperilaku, sehingga memecahkan masalah menjadi
satu set objek terpisah yang melakukan tindakan dan
berhubungan satu sama lain.
Objek-objek ini memiliki properti yang tetap, dan setiap
objek bertanggung jawab untuk melakukan serangkaian
tugas terkait.
AN INTRODUCTION TO ALGORITHM
AND PSEUDOCODE

Sebuah program harus dirancang secara sistematis dan tepat


sebelum pengkodean (menulis kode program) dimulai.
Proses desain ini menghasilkan konstruksi algoritma
AN INTRODUCTION TO ALGORITHM
AND PSEUDOCODE
Apa itu algoritma?
Algoritma seperti resep: ia mencantumkan langkah-langkah yang terlibat
dalam menyelesaikan tugas.
Algoritma dapat didefinisikan dalam istilah pemrograman sebagai
seperangkat instruksi yang terperinci, tidak ambigu, dan teratur yang
dikembangkan untuk menggambarkan proses yang diperlukan untuk
menghasilkan output yang diinginkan, dari input yang diberikan.
Algoritma dapat ditulis dalam bahasa Inggris sederhana dan bukan
dokumen formal. Namun, agar bermanfaat, ada beberapa prinsip yang
harus dipatuhi. Sebuah algoritma harus memenuhi kriteria berikut:
• Jelas, tepat, dan tidak ambigu (bermakna ganda)
• memberikan solusi yang benar dalam semua kasus
• memiliki akhir.
Contoh algoritma
What is pseudocode?
Pseudocode merupakan cara populer untuk merepresentasikan algoritma.
Ppseudocode telah dipilih sebagai metode utama untuk merepresentasikan suatu
algoritma karena mudah dibaca dan ditulis, dan memungkinkan pemrogram untuk
berkonsentrasi pada logika masalah.
Pseudocode adalah bahasa Inggris yang sangat terstruktur. Ini adalah bahasa
Inggris yang telah diformalkan dan disingkat agar terlihat seperti bahasa komputer
tingkat tinggi. Tidak ada pseudocode standar saat ini. Penulis tampaknya
mengadopsiteknik khusus mereka sendiri dan seperangkat aturan, yang sering kali
menyerupai bahasa pemrograman tertentu.
Konvensi pseudocode:
1 Pernyataan ditulis dalam bahasa Inggris sederhana.
2 Setiap instruksi ditulis pada baris terpisah.
3 Kata kunci dan lekukan digunakan untuk menandakan struktur kontrol tertentu.
4 Setiap set instruksi ditulis dari atas ke bawah, dengan hanya satu entri dan satu
luaran.
5 Kelompok pernyataan dapat dibentuk menjadi modul, dan modul itu diberi
nama.
PROGRAM DATA &
PSEUDOCODE
PERTEMUAN 2
Objectives
• To introduce common words, keywords and meaningful names when writing pseudocode
• To define the three basic control structures as set out in the Structure Theorem
• To illustrate the three basic control structures using pseudocode
• To describe program data

Outline
2.1 Program data
2.2 How to write pseudocode
2.3 Meaningful names

2.4 The Structure Theorem


PROGRAM DATA
Karena program ditulis untuk memproses data, Anda harus memiliki pemahaman yang baik tentang sifat dan
struktur data yang sedang diproses. Data dalam program dapat berupa variabel tunggal, seperti integer atau
karakter, atau item grup (kadang-kadang disebut agregat), seperti array atau file.

Variabel, konstanta dan literal

• 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

• 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:

• Beberapa program berbeda dapat mengakses data yang sama.

• Data dapat dimasukkan dan digunakan kembali (reuse) beberapa kali.

• Data dapat dengan mudah diperbarui (updated) dan dipelihara (maintained).

• Data lebih mudah akurat.


PROGRAM DATA
Ada dua jenis file di mana data dapat disimpan:

• 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.

• Kelengkapan: semua bagian wajib harus ada.

• Tanggal yang benar: tanggal masuk harus dapat diterima (beda format penulisan tanggal dapat
menyebabkan kesalahan saat validasi data).
PSEUDOCODE
Outline

2.1 How to write pseudocode

2.2 Meaningful names

2.3 The Structure Theorem


PSEUDOCODE
HOW TO WRITE PSEUDOCODE

Saat merancang algoritma, fakta yang perlu diingat bahwa komputer


melakukan serangkaian instruksi yang Anda tulis. Jika Anda menggunakan
kata dan frasa dalam kode semu (pseudocode) yang sesuai dengan
sejumlah enam operasi dasar computer. Enam operasi komputer dasar:
1 Komputer dapat menerima (masukan) informasi
2 Komputer dapat mengeluarkan informasi
3 Komputer dapat melakukan operasi aritmatika (perhitungan)
4 Komputer dapat menetapkan/memberikan nilai ke variabel atau
memori
5 Komputer dapat membandingkan dua variabel dan juga dapat memilih
salah satu dari dua tindakan alternatif yang ada.
6 Komputer dapat mengulangi sekelompok perintah/tindakan
PSEUDOCODE
Komputer dapat menerima (masukan) informasi

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:

Read student name


Get system date
Read number_1, number_2
Get tax_code

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:

Print ‘Program Completed’


Write customer record to master file
Put out name, address and postcode
Output total_tax
Display ‘End of data’
PSEUDOCODE
A computer can perform arithmetic (Komputer dapat melakukan aritmatika)

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:

divide total_marks by student_count


sales_tax = cost_price * 0.10
compute C = (F – 32) * 5/9
PSEUDOCODE
Urutan operasi
Saat menulis perhitungan matematis untuk komputer, urutan operasi matematika standar berlaku untuk
kodesemu dan sebagian besar bahasa komputer. Operasi pertama yang dilakukan adalah perhitungan apa
pun yang ada di dalam tanda kurung. Selanjutnya, perkalian atau pembagian apa pun, seperti yang terjadi dari
kiri ke kanan, akan dilakukan. Kemudian, setiap penambahan atau pengurangan, seperti yang terjadi dari kiri
ke kanan, akan dilakukan.
PSEUDOCODE
A computer can assign a value to a variable or memory location (Komputer dapat menetapkan nilai ke
variabel atau lokasi memori). Ada tiga contoh di mana Anda dapat menulis kodesemu untuk menetapkan nilai
ke variabel atau lokasi memori:

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:

Initialise total_price to zero


Set student_count to 0
total_price = cost_price + sales_tax
total_price 🡨 cost_price + sales_tax
store customer_num in last_customer_num

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:

IF student_attendance_status is part_time THEN


add 1 to part_time_count
ELSE
add 1 to full_time_count
ENDIF

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

Contoh ini menggambarkan sejumlah poin:

1 Variabel student_total diinisialisasi sebelum kondisi DOWHILE dieksekusi.

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:

1. Input: daftar sumber data yang disediakan untuk masalah.

2. Output: daftar output yang dibutuhkan.

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.

Input Processing Output


Angka1
Angka2 total
Angka3
Kedua, garis bawahi kata kerja dan kata keterangan yang digunakan dalam spesifikasi. Ini untuk menetapkan tindakan yang
diperlukan.
Contoh selanjutnya sekarang akan terlihat seperti ini:

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:

Input Processing Output


max_temp
avg_temp
min_temp

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:

Input Processing Output


Prompt suhu
max_temp Get suhu
avg_temp
min_temp Calculate average suhu
Display average suhu
Designing a solution algorithm
Merancang algoritma solusi adalah tugas yang paling menantang dalam siklus hidup suatu program. Setelah
masalah didefinisikan dengan benar, Anda dapat mulai menguraikan solusi. Upaya pertama dalam merancang
algoritma solusi biasanya tidak menghasilkan produk jadi. Langkah-langkah solusi mungkin nantinya dapat
diubah atau dihapus. Pseudocode berguna dalam proses coba-coba ini, karena relatif mudah untuk
menambah, menghapus, atau mengubah instruksi. Jangan ragu untuk mengubah algoritma, atau bahkan
membuangnya dan memulai lagi, jika Anda tidak sepenuhnya puas dengannya atau jika algoritma tidak benar,
program tidak akan pernah benar.

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

Input Processing Output


Angka1 Read 3 Angka three numbers
Angka2 Jumlahkan ketiga angka tersebut total
Angka3 Print angka total

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:

1 Sebuah nama telah diberikan untuk algoritma, yaitu Add_three_numbers.

Nama algoritma harus menjelaskan secara singkat fungsi dari algoritma,dan biasanya dinyatakan sebagai kata kerja tunggal diikuti
oleh objek dua kata.

2 Pernyataan END di akhir algoritma menunjukkan bahwa algoritma selesai.

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.

Selecting test data


Saat memilih data uji untuk memeriksa algoritma, lihat spesifikasi program dan pilih kasus uji
sederhana yang didasarkan pada persyaratan spesifikasi, bukan algoritma. Dengan melakukan ini,
Anda masih dapat berkonsentrasi pada apa yang seharusnya dilakukan oleh program. Untuk
memeriksa algoritma, Anda hanya memerlukan beberapa kasus uji sederhana yang akan mengikuti
jalur utama logika algoritma. Tes yang jauh lebih komprehensif akan dilakukan setelah algoritma
dikodekan ke dalam bahasa pemrograman.
Steps in desk checking an algorithm
Ada enam langkah sederhana yang harus diikuti saat melakukan desk checking suatu algoritma:

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

∙ Mendefinisikan masalah dengan membuat defining diagram

∙ membuat algoritma solusi menggunakan pseudocode

∙ desk check algoritma menggunakan dua kasus uji yang valid


Soal Latihan
1. Untuk membantu analisis awal, masalah harus dibagi menjadi
… komponen terpisah
a. Satu d. Empat
b. Dua e. Lima
c. Tiga
2. Tugas yang paling menantang dalam siklus hidup
suatu program adalah …
a. Definisi masalah
b. Merancang algoritma solusi
c. Pengujian algoritma
d. Memilih data uji
e. Mengetes algoritma
3. Pilih kasus uji input sederhana yang valid. Dua atau tiga
kasus uji biasanya cukup, merupakan Langkah ke berapa
saat melakukan desk checking suatu algoritma :
a. Satu d. Empat
b. Dua e. Lima
c. Tiga
4. Langkah-langkah Processing yang diperlukan
untuk mengubah input menjadi …
a. Output d. Masukan
b. Proses e. Pseudocode
c. Algoritma
Soal Latihan
5. Upaya pertama dalam merancang algoritma solusi
biasanya tidak menghasilkan …
a. Produk jadi d.produk pilihan
b. Produk solusi e. produk langsung
c. Produk setengah jadi
SELECTION CONTROL
STRUCTURES
Pertemuan 4
Objectives
• To elaborate on the uses of simple selection, multiple selection and nested selection in algorithms
• To introduce the case construct in pseudocode
• To develop algorithms using variations of the selection control structure

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:

< less than


> greater than
= equal to
<= less than or equal to
>= greater than or equal to
<> not equal to
Ada beberapa variasi struktur seleksi, sebagai berikut:

1 Simple selection (simple IF statement)

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:

1. jika siswa paruh waktu, tanpa memandang jenis kelamin, atau

2 jika siswa perempuan, terlepas dari pola kehadiran.

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.

Linear nested IF statements

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

Ini dapat ditulis sebagai pernyataan IF gabungan:


IF student_attendance = part_time
AND student_age > 21 THEN
increment mature_pt_student
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

Input Processing Output


Prompt for characters
char_1 char_1
Accept three characters
char_2 char_2
Sort three characters
char_3 char_3
Output three characters
B Solution algorithm

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

First data set Second data set


har_1 k z
char_2 b s
char_3 g a
2 Expected results

First data set Second data set


char_1 b a
char_2 g s
char_3 k z
3 Desk check table

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

‘A’ : increment counter_A

‘B’ : increment counter_B

‘C’ : increment counter_C

other : increment error_counter

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:

• di awal loop (leading decision loop)

• di akhir loop (trailing decision loop)

• beberapa kali dihitung (counted loop).


Leading decision loop

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:

1 Kondisi logis p diuji.

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

Input Processing Output


Get Fahrenheit temperatures
f_temp Convert temperatures c_temp
(15 temperatures) Display Celsius temperatures (15 temperatures)
Display screen messag

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:

• Struktur DOWHILE untuk mengulang proses yang diperlukan

• 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

Algoritma solusi ini menggambarkan sejumlah poin:

1 Variabel temperature_count diinisialisasi sebelum kondisi DOWHILE dijalankan.

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

First data set Second data set


2 Expected results f_temp 32 50

First data set Second data set


c_temp 0 10
3 Desk check table

Statement temperature_ DOWHILE


f_temp c_temp
number count condition
1 0
2 true
3, 4 32
5 0
6 display
7 1
2 true
3, 4 50
5 10
6 display
7 2
Repetition using the REPEAT…UNTIL structure
Struktur REPEAT…UNTIL mirip dengan struktur DOWHILE, di mana sekelompok pernyataan diulang sesuai
dengan kondisi yang ditentukan. Namun, di mana struktur DOWHILE menguji kondisi di awal loop, struktur
REPEAT…UNTIL menguji kondisi di akhir loop. Ini berarti bahwa pernyataan dalam loop akan dieksekusi sekali
sebelum kondisi diuji. Jika kondisi salah, pernyataan akan diulang SAMPAI kondisi menjadi benar.

Format dari struktur REPEAT…UNTIL adalah:

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

input Processing Output


heading
inventory record Read inventory records selected records
• item_number Select low stock items • item_number
• item_description Print low stock records • item_description
• stock_figure Print total low stock items • stock_figure
total_low_stock_items

Anda perlu mempertimbangkan persyaratan berikut saat membuat algoritma solusi:


• sebuah REPEAT…UNTIL untuk melakukan pengulangan
• pernyataan IF untuk memilih angka stok kurang dari 20
• akumulator untuk total_low_stock_items
• IF ekstra, dalam loop REPEAT, untuk memastikan inventory record tidak diproses.
B Solution algorithm using REPEAT…UNTIL
Process_inventory_records
1 Set total_low_stock_items to zero
2 Print ‘Low Stock Items’ heading
REPEAT
3 Read inventory record
4 IF item_number > zero THEN
IF stock_figure < 20 THEN
Print item_number, item_description, stock_figure
increment total_low_stock_items
ENDIF
ENDIF
5 UNTIL item_number = zero
6 Print total_low_stock_items
END

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

First record Second record Third record


item_number 123 124 0
stock_figure 8 25
2 Expected results
Low Stock Items
123 8 (first record)
Total Low Stock Items = 1
3 Desk check table

Statement stock_ total_low


item_number stock_figure REPEAT UNTIL heading
number item_s
1 0
2 print
3 123 8
4 print print 1
5 false
3 124 25
4
5 false
3 0
4
5 true
6 print
Counted repetition

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:

1 inisialisasi loop_index ke initial_value yang diperlukan

2 tingkatkan loop_index dengan 1 untuk setiap melewati loop

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

Input Processing Output


Get Fahrenheit temperatures
f_temp Convert temperatures c_temp
(15 temperatures) Display Celsius temperatures (15 temperatures)
Display screen message

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:

• struktur DOWHILE untuk mengulang proses yang diperlukan

• penghitung, disebut temperature_count, diinisialisasi ke nol, yang akan mengontrol 15 pengulangan.


B Solution algorithm

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

First data set Second data set


f_temp 32 50

2 Expected results

First data set Second data set


c_temp 0 10
3 Desk check table

Statement number temperature_count f_temp c_temp


1 1
2, 3 32
4 0
5 display
1 2
2, 3 50
4 10
5 display

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.

Loading constant values into an array

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

• untuk mengambil informasi dari array

• untuk mengambil informasi dari elemen terkait dalam larik berpasangan.

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

Input Processing Output


Prompt for scores
Get scores
Calculate average 18 exam scores
18 exam scores
score average_score
Display scores
Display average score
B Control structures required
1 Array untuk menyimpan nilai ujian atau 'skor’
2 Indeks untuk mengidentifikasi setiap elemen dalam array
3 Lakukan DO loop untuk menerima skor
4 DO loop lain untuk menampilkan skor ke layer

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)

1. Single-Level Control Break


2. Multiple-Level Control Break
1. SINGLE-LEVEL BREAK
▪ Single-Level Control Break adalah pemberhentian dalam
logika program (berhenti atau mengulang untuk
mencetak judul baru) berdasarkan nilai sebuah variabel.
Contoh : no departemen.
HIERARCHY CHART SINGLE-
LEVEL BREAK
Produce_
Single_level
control_break

Initialize Print_page Process Print_ Print_


variable _headings _this_ control_ report_
_fields records total_line total

Print_ Accumulate_ Reset_


detail_line control_total control_
total
2. MULTIPLE-LEVEL BREAK
▪ Multiple-Level Control Break adalah pemberhentian
dalam logika program (berhenti atau mengulang untuk
mencetak judul baru) berdasarkan beberapa nilai
variabel. Contoh : total penjualan per sales dan total
penjualan per departemen
CONTOH LAPORAN MULTI-
LEVEL BREAK
HIERARCHY CHART MULTIPLE-
LEVEL BREAK
Proceduce_
multiple_level
control_break

Initialize Print_page Process Print_minor Print_major Print_


variable _headings _this_ _control_ _control_ report_
_fields records total total total

Print_ Accumulate_ Reset_ Reset_


detail_line control minor_control major_control
_ total _ total
CONTOH
KASUS
SUBORDINATE MODUL
1. Inisialisasi
Buka File
Total = 0
Hal = 0
Baris = 0
END
2. Cetak_Judul
Hal = hal + 1
Cetak “PT. Semesta Makmur Abadi ”
Cetak “Jalan Bahari Biru ”
Cetak “Jakarta”
Cetak “Laporan Gaji ”
Cetak “Tanggal Cetak “, date(), “Hal =”, hal
Cetak “No. NIP Nama Target Realisasi Komisi Gaji Pokok Total Gaji ”
END
SUBORDINATE MODUL (lanjutan)
3. Process_Record
komisi = (realisasi – target ) * 10000
Total_gaji = komisi + gaji_pokok
Cetak_Detail
accumulate_total
END
5. Cetak_Detail
Baris = baris +1
Cetak baris, NIP, Nama, Target, Realisasi, Komisi. Gaji_Pokok,
Total_gaji
END
SUBORDINATE MODUL (lanjutan)
6. Accumulate_total
Total = total + total_gaji
END
7. Cetak_total_Report
Cetak “Total gaji Sales”, total
Tutup File
END
ALGORITMA PEMECAHAN
Laporan_Penyewaan
Inisialisasi
Cetak_Judul
Baca Record Pertama
DO WHILE NOT EOF
If baris > 30 THEN
Cetak_Judul
Baris = 0
ENDIF
Process_Record
Baca Record Selanjutnya
Accumulate_total
ENDDO
Cetak_Total_Report
END
TUGAS 6
Buatlah subordinate modul dan flowchart untuk
menampilkan daftar gaji gaji karyawan, dengan ketentuan
sebagai berikut :
Kode Jabatan Gaji Kode Status Tunjangan
Jabatan Pokok Status
M Menikah 200.000
1 Administrasi 800.000
S Single 100.000
M Menikah 250.000
2 Operasional 850.000
S Single 150.000
TUGAS 6 (lanjutan)
Jumlah Karyawan = .... <diinput>

Bulan = ......... <diinput>

Input Data Karyawan

Data Karyawan ke = <counter jumlah>

NIP karyawan = ......... <diinput>

Nama Karyawan = ......... <diinput>

Kode Jabatan [1/2] = .... <diinput>

Kode Status [M/S] = .... <diinput>


TUGAS 6 (lanjutan)
Ketentuan :
▪ Banyak data karyawan yang diinput harus sama dengan
ketentuan jumlah karyawan yang sudah diberikan pada
awal input data.
▪ Total didapat dari pertambahan gaji pokok dengan
tunjangan.
▪ Setelah selesai diinput maka akan menghasilkan keluaran
dalam bentuk tabel yang jumlahnya sama sesuai dengan
jumlah data yang diinput.
TUGAS 6 (lanjutan)
Catatan Tugas :
▪ Tugas dibuat pada kertas folio bergaris dengan
menggunakan bolpoint.
▪ Tugas dikumpulkan pada saat pertemuan 10.
PERTEMUAN 10

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

Adapun mengenai langkah-langkah di dalam perancangan


file tersebut adalah sebagai berikut:
1.Menentukan banyaknya jumlah kebutuhan file yang nanti
akan digunakan di dalam program.
Banyaknya file yang dibutuhkan oleh sistem diperoleh dari
hasil perancangan database menggunakan Normalisasi.
Dari hasil Normalisasi terbentuk tabel-tabel atau file-file
yang akan dijelaskan di dalam spesifikasi file.
2.Menentukan parameter dari file yang akan dibuat.
Parameter yang dimaksud adalah elemen-elemen yang
menjelaskan spesifikasi singkat mengenai file.
Sekilas Analisa Program Penggajian

Program Penggajian adalah sebuah aplikasi yang


melakukan proses penghitungan gaji pegawai, dengan
dasar input absen dan proses yang dilakukan secara batch
atau tunda (satu kali dalam sebulan).
Input: Data absen harian
Proses: Penghitungan Gaji, parameternya:
▪ Tunjangan pegawai (dari status pegawai)
▪ Gaji Pokok (dari golongan pegawai)
▪ Lembur (dari kehadiran pegawai)
▪ Potongan (jika pegawai mempunyai potongan
yang dibebankan pada gaji)
Output: Laporan Gaji Bulanan dan Slip Gaji pegawai
CONTOH TABEL PEGAWAI
No Elemen Data Akronim Tipe Panjang Ket
1 No Induk Pegawai NIP Text 6 PK

2 Nama Pegawai NaPeg Text 25

3 Alamat Pegawai AlmPeg Text 50

4 dst……. …….. …. ……..

Jika dijumlahkan panjang record pegawai 180


misal
Parameter File
A. NAMA FILE H. MEDIA FILE
B. AKRONIM FILE I. FIELD KEY
C. KODE FILE J. SOFTWARE
D. TYPE FILE
E. Panjang Record
F. ORGANISASI
FILE
G. ACCESS FILE
PARAMETER FILE
a. NAMA FILE
▪ Nama yang dibuat untuk menunjukkan nama file yang digunakan.
Dituliskan di dalam source program.
▪ Contoh: File_Pegawai, File_Lembur, dll.
b. AKRONIM FILE
▪ Nama yang dibuat untuk menunjukkan file disimpan dalam
tabel/database, dituliskan dengan extension-nya.
▪ Contoh: Pegawai.mdb, Lembur.dbf, Absensi.myd
c. KODE FILE
▪ Nama yang dibuat pada saat file digambarkan dalam bentuk
diagram (Normalisasi)
▪ Contoh: Tabel Pegawai, Tabel Lembur, Tabel Absen
PARAMETER FILE (lanjutan)
d. TYPE FILE
▪ Tipe dari tabel yang digunakan dalam program.
▪ Contoh: File Master, File Transaksi, File Laporan, File Histori, File
Backup, File Kerja dan File Library
e. Panjang Record (RECORD-SIZE)
▪ Jumlah karakter yang digunakan dalam satu record.
▪ Contoh: 180 Characters
f. ORGANISASI FILE
▪ Organisasi yang digunakan pada saat menyimpan data ke dalam
tabel.
▪ Contoh: Index Sequential
g. ACCESS FILE
▪ Cara mengakses data yang disimpan pada tabel.
▪ Contoh: Random
PARAMETER FILE (lanjutan)
h. MEDIA FILE
▪ Media yang digunakan untuk menyimpan file (tabel)
▪ Contoh : Harddisk
i. FIELD KEY
▪ Kunci field yang dipakai dalam program pada saat
program mengakses database
▪ Contoh : Nomor Induk Pegawai (NIP)
j. SOFTWARE
▪ Software yang digunakan untuk membuat tabel.
▪ Contoh : Microsoft Access 2007, MySQL
2. Teknik Perancangan Program
Masalah Bisnis
1. Menentukan banyaknya jumlah kebutuhan program
yang akan dibuat.
Jumlah program yang dibutuhkan oleh sistem dibuat
dalam bentuk modul yang nantinya akan digambarkan
dalam diagram HIPO. Dalam HIPO dapat diketahui
dengan jelas hirarki program. Program mana yanng
memanggil program lainnya, dan kemana program
akan kembali setelah selesai melakukan eksekusi.
2. Menentukan Parameter dari Program yang akan dibuat.
Parameter yang. dimaksud adalah elemen-elemen
yang menjelaskan spesifikasi singkat mengenai
program.
2. Teknik Perancangan Program
Masalah Bisnis (lanjutan)
Parameter Program meliputi hal-hal sebagai berikut:
a.NAMA PROGRAM
▪ Nama yang dibuat untuk menunjukkan identitas program
▪ Contoh: Program HitungGaji
b.AKRONIM PROGRAM
▪ Nama yang dibuat untuk menyimpan source program
▪ Contoh: HitGaji.vbp
c.KODE PROGRAM
▪ Nama yang dibuat pada saat file digambarkan dalam
bentuk diagram (HIPO)
▪ Contoh: Gj01
2. Teknik Perancangan Program
Masalah Bisnis (lanjutan)
d. FUNGSI PROGRAM
▪ Menjelaskan fungsi atau kegunaan dari program yang
dibuat
▪ Contoh: Untuk program Gaji, maka fungsi program
dituliskan: Program untuk perhitungan gaji
karyawan.
e. BAHASA PEMROGRAMAN
▪ Menentukan bahasa pemrograman yang digunakan
pada saat pembuatan souce program, biasanya
berhubungan dengan point (b) untuk menyatakan
extension file.
▪ Contoh: Visual Basic 6.0
2. Teknik Perancangan Program
Masalah Bisnis (lanjutan)

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

Dosen menjelaskan tentang pembahasan program


bisnis, dan untuk selanjutnya mengembangkan
sendiri dari contoh yang diberikan.
TABEL PADA SISTEM INFORMASI
PERPUSTAKAAN
1. Tabel Anggota
2. Tabel Buku
3. Tabel User
4. Status
5. Tabel Peminjaman
6. Tabel Pengembalian dan
7. Tabel Detail Peminjaman
SPESIFIKASI FILE/DATABASE
1. Spesifikasi Tabel Anggota

Nama File : Tabel Anggota


Akronim File : tbl_anggota.myd
Fungsi File : untuk menyimpan data anggota perpustakaan
Tipe File : File Master
Organisasi File : Sequential/Random /Index Sequential
Akses File : Random
Media File : Harddisk
Panjang Record : 160 karakter
Kunci Field : noang
Software : MySQL
Tabel II.1
Tabel Anggota
No Elemen Data Akronim Tipe Panjang Ket
1 Nomor Anggota noang varchar 10 PK
2 Nama Anggota nama varchar 20
3 Jenis Kelamin jk varchar 1
4 Alamat alamat varchar 50
5 Pekerjaan pekerjaan varchar 15
6 Telepon telp varchar 15
7 Alamat Email email varchar 25
8 Tanggal Daftar tgldaftar Date 8
9 Tanggal Berlaku tglberlaku Date 8
10 Status status varchar 9
SPESIFIKASI FILE/DATABASE
(lanjutan)
2. Spesifikasi Tabel Buku
Nama File : Tabel Buku
Akronim File : tbl_buku.myd
Fungsi File : untuk menyimpan data buku perpustakaan
Tipe File : File Master
Organisasi File : Index Sequential
Akses File : Random
Media File : Harddisk
Panjang Record: 161 karakter
Kunci Field : kdbuku
Software : MySQL
Tabel II.2
Tabel Buku
No Elemen Data Akronim Tipe Panjang Ket
1 Kode Buku kdbuku varchar 7 PK
2 Judul Buku judul varchar 80
3 Pengarang pengarang varchar 20
4 Penerbit penerbit varchar 25
5 Tahun Terbit thnterbit year 4
6 Kota Terbit kota Varchar 15
7 Stok stok tinyint 2
8 Tanggal Entri tgl_entri Date 8
PENGKODEAN
Kode yang dibuat dalam pengkodean adalah field-field
yang dijadikan sebagai kunci primer (Primary Key/PK):
1.Nomor Anggota

1.Kode Buku
Spesifikasi Program (Diagram
HIPO

Catatan: Login tidak


perlu digambarkan di
dalam HIPO
Spesifikasi Program dalam
perancangan program
Berdasarkan HIPO, spesifikasi program diantaranya:
1.Spesifikasi Program Menu Utama
2.Spesifikasi Program Data Anggota
3.Spesifikasi Program Data Buku
4.Spesifikasi Program Data User
5.Spesifikasi Program Transaksi Peminjaman
6.Spesifikasi Program Transaksi Pengembalian
7.Spesifikasi Program Laporan Data Anggota
8.Spesifikasi Program Laporan Data Buku
9.Spesifikasi Program Laporan Peminjaman
10.Spesifikasi Program Laporan Pengembalian
11.Spesifikasi Program Pencetakan Kartu Anggota
12.Spesifikasi Program Pencetakan Laporan
Catatan: hanya no.5 yang dijelaskan dalam pertemuan ini
Spesifikasi Program Transaksi
Peminjaman
Nama program : Peminjaman
Akronim : Peminjaman.vbp
Fungsi : Untuk melakukan peminjaman buku
Bahasa program : PHP
Bentuk tampilan : Lihat Lampiran C.6
Proses Program :
a. Klik Tambah untuk meminjam buku dan nomor peminjaman muncul
otomatis. Isikan data anggota dan data buku yang dipinjam, jika
peminjaman melebihi batas jumlah peminjaman maka muncul
pesan “peminjaman lebih dari 2 buku”.
b. Klik Simpan untuk menyimpan data peminjaman
c. Klik Batal untuk pembatalan peminjaman
d. Klik Cetak untuk mencetak bukti transaksi peminjaman
e. Klik Tutup untuk keluar dari menu transaksi peminjaman
PROGRAM FLOWCHART
Flowchart yang dibuat diantaranya:
1.Flowchart Login
2.Flowchart Menu Utama
3.Flowchart Anggota
4.Flowchart Buku
5.Flowchart User
6.Flowchart Peminjaman
7.Flowchart Pengembalian
8.Flowchart Laporan Peminjaman
9.Flowchart Laporan Pengembalian

Catatan: hanya no.2 yang dijelaskan dalam pertemuan ini, selebihnya


Dosen mengembangkan sendiri bentuk flowchart di atas
Flowchart Menu Utama
Flowchart Menu Utama
(lanjutan)
PERTEMUAN 11

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

Sebuah kelas Sebuah objek


(Konsep) (Realisasi)

Rekening Bank Udin


Saldo: Rp5.257.000
Bank
Rekening Bank Ali
Saldo :Rp13.245.069
Beberapa objek
dari kelas yang sama
Rekening Bank Susi
Saldo : Rp366.891.833
CONTOH KELAS (lanjutan)

Class Mobil

Class Mobil B7471UL B851OK


Warna Biru Merah
Tahun 2009 2008
Variabel Manufaktur Toyota Mitsubishi
Instance Kecepatan 80 km/jam 60 km/jam
Method Instance Akseleration()
Stop()
Break()
Turn(direction)
STRUKTUR KELAS
Contoh kelas mobil Contoh Objek Mobil
Mobil Nama B7471UL: Mobil B851OK:Mobil
Class
Warna Biru Merah
Tahun 2009 2008
Manufaktur Atribut Toyota Mitsubishi
Kecepatan K80 km/jam 60 km/jam
+Akseleration() +Akseleration() +Akseleration()
+Turn(direction) +Turn(direction) +Turn(direction)
+Stop() Method +Stop() +Stop()
+Break() /behavior +Break() +Break()
KARAKTERISTIK OBJEK
Attributes :
Warna, Tahun Produksi, Manufaktur,
kecepatan

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

Disini terjadi penyembunyian informasi tentang


bagaimana cara kerja pengecekan validitas kartu,
kecocokan pin yang dimasukkan, koneksi ke database
server, dll, dimana hal-hal tersebut tidak perlu diketahui
oleh pengguna tentang bagaimana cara kerjanya.
INHERITANSI
Kelas dapat menurunkan metode-metode
dan properti-properti yang dimilikinya pada
kelas lain. Kelas yang mewarisi metode dan
properti dari objek lain dinamakan kelas
turunan. Kelas turunan ini mampu
mengembangkan metode sendiri.
CONTOH INHERITANSI

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

e. Fungsi-fungsi mentransformasi e. Objek-objek dapat saling


data dari satu bentuk ke bentuk berkomunikasi dengan saling
yang lain mengirim message satu sama
lain
f. Pendekatan adalah pendekatan f. Pendekatanya adalah bottom up
top down (dari atas ke bawah) (dari bawah ke atas)
PERTEMUAN 12

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

Algoritma untuk driver class Payslip


run()
Baca empNumber, hoursWorked, payRate
DoWhile more records
Create paySlip as New Payslip(empNumber, payRate, hoursWorked)
payslip.printPayslip()
Baca Payslip(empNumber, payRate, hoursWorked
Enddo
END
MENGEMBANGKAN TES ATAU DRIVER
ALGORITMA (lanjutan)

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

Tetapi bagaimana jika kita dihadapkan


dengan bentuk sawah yang beda-beda
(SEGITIGA, BUJUR_SANGKAR,
PERSEGI_PANJANG, POLYGON)?
Sawah dapat menjadi ABSTRACT dan bentuk
sawah(SEGITIGA, BUJUR_SANGKAR,
PERSEGI_PANJANG, POLYGON) merupakan
turunan dari sawah.

Abstrak dapat diumpamakan sebagai kepala tanpa


badan, dimana informasi berupa konsep.

Abstrak tidak dapat digunakan langsung, hanya


turunannya yang dapat menggunakan
attribute/method tersebut
Review pengertian class
Abstract “Sawah”

Sawah tidak memiliki


atribut, tetapi memiliki
methods bentuk ()
yang dapat
mendeskripsikan
bentuk sawah.
Sawah Segitiga

(sawah) Segitiga merupakan


instant/class turunan dari
sawah. Class ini memiliki 2
atribut dimensi (Alas dan
Tinggi).

Methods (get dan set)


digunakan untuk “mengisi” dan
“mengambil” nilai dari
attribute
Cara hitung Kebutuhan PUPUK?
Hitung kebutuhan pupuk kita
bentuk class SegitigaCtrl
(fungsi nya untuk mengontrol
class Segitiga)

Methods getPupuk ()
digunakan untuk menghitung
berapa jumlah pupuk yang
diperlukan.
Kenapa SegitigaCtrl?

Class ini dibentuk untuk


“mengendalikan” class segitiga tanpa
harus merubah class Segitiga.

Kasus saat ini mencari berapa jumlah


pupuk yang diperlukan, jika nanti kita
perlu menghitung luas atau keliling
segitiga bagaimana?

Kita cukup menambahkan fungsi


getLuas () dan/atau getkeliling () disini
Private Segitiga sgt

Adalah instant yang


menunjukkan bahwa class ini
merupakan class turunan dari
segitiga.

Artinya class SegitigaCtrl dapat


menggunakan seluruh methods
dari class (induk) Segitiga. Kita
cukup fokus kan pada fungsi apa
yang hendak kita terapkan di
segitiga.
BagaimanaJika bentuk sawah berbeda?
Bujursangkar misalnya
Kita cukup “extend”
sawah dengan
BujurSangkar.

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?

Karena fungsi nya


berbeda, ketika kita
menghitung luas
segitiga, akan berbeda
dengan cara menghitung
luas bujur sangkar.
PERTEMUAN 13

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 class Employee


extends Person {

public Employee(){

}
POLYMORPHISM
• Polymorphism adalah kemampuan untuk
mempunyai beberapa bentuk yang berbeda.
• Polymorphism diimplementasikan dengan
mekanisme inheritance dan overriding

hewan
“bersuara”

anjing kucing kuda


“menggonggong” “mengeong” “meringkik”
CONTOH POLYMORPHISM

Polymorphism menggunakan keyword “extend”


Output
----------------
* PHP tidak mendukung Overloading
OVERLOADING
▪ Menuliskan kembali method dengan nama
yang sama pada suatu class.
▪ Tujuan : memudahkan
penggunaan/pemanggilan method dengan
fungsionalitas yang mirip.
CONTOH OVERLOADING
public class Calculation {
void sum(int a,int b) {
System.out.println(a+b);
}
void sum(int a,int b,int c) {
System.out.println(a+b+c);
}

public static void main(String args[]){


Calculation cal = new Calculation();
cal.sum(20,30,60); // perhatikan nama class sama
cal.sum(20,20); //beda jumlah yang dijumlahkan tapi nama sama
}
}
OVERRIDING
▪ Subclass yang berusaha memodifikasi tingkah
laku yang diwarisi dari superclass.
▪ Tujuan: subclass memiliki tingkah laku yang
lebih spesifik.
▪ Dilakukan dengan cara mendeklarasikan
kembali method milik parent class di subclass.
CONTOH OVERRIDING

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

Anda mungkin juga menyukai