Anda di halaman 1dari 17

PDM – UTS [more simplified]

#Program design & Developing Algorithm

Stepnya dalam developing algorithm + program design:

a. Define the problem


problem utamanya apa sih?
Dipecah jadi input, process, output

b. Outline solution
bikin solusi scr grs bsr , dia ada apa ada yg d proses
biasanya yg dibuat adalah sbb:
- Proses utama yg diliat. Step by stepnya dia apa aja prosesnya
- Subtask utama ada / ga?
- UI / user interfacenya ada / ga?
- Control structurenya (selection, repetition)
- Variabel nya apa aja + data structurenya ada / ga ?
- Mainline logic [inti prosesnya yg hrs dilakukan]

c. Develop outline to Algo – dari outline yg udh d buat jadiin algoritmanya


d. Test result dari algoritma
e. Coding algonya ke bhs program
f. Jalanin programnya
g. Document + maintain programnya

Metodologi desain program (3)

 Procedure Driven
- Melakukan pendekatan lwt fungsi2 dlm program dan apa aja sih yg dia lakukan.
- Tiap fungsi dipecah jadi aliran data yg lbh kecil dan spesifik

 Event Driven
- Melakukan pendekatan lwt event / interaksi tertentu dri luar yg bikin ada
perubahan pd program jd bentuk yg baru.
- Pas program dpt trigger dri user, program akan pindah dari 1 state ke state lain

 Data Driven
- Melakukan pendekatan lwt kestabilan data dalam program dan proses2 yg
terlibat. Analisis data + hubungan antar data utk nentuin jenis data struktur yg hrs
digunakan
- Stlh input output udh ditentuin, baru kt nentuin proses yg akan dilakukan.

Content is created by Tartarus_CySec©


Procedural vs OOP

Procedural OOP
Fokus pd apa aj yg dilakukan program, Berfokus pd objek dan bgmn objek tsb
identifikasi dan organisir proses dlm bekerja
program
Problem dipecah jd bbrp tugas / modul Problem dipecah jd sekumpulan objek yg
terpisah yg saling berkaitan
Make pendekatan top-down Tiap objek punya tugas dan tanggungjawab
tertentu

FlowChart

Pelajarin!

Algoritma & PseudoCode

Algoritma -> Langkah2 dlm problem solving

- Jelas, Tepat, dan ga ambigu


- Memberi solusi yg tepat utk tiap kasus
- Ga looping forever

PseudoCode -> Langkah2 utk menggambarkan sebuah algoritma

- Statement harus ditulis dalam bahasa inggris sederhana.


- Setiap instruksi ditulis di baris berbeda.
- Keyword dan perataan tulisan (indentation) digunakan untuk menunjukkan control
structure tertentu.
- Setiap kelompok instruksi ditulis dari atas ke bawah dengan satu jalan masuk (entry)
dan satu jalan keuar (exit).
- Kumpulan statement bisa dibentuk menjadi modul.

Content is created by Tartarus_CySec©


6 Operasi Dasar komputer (How to use Pseudocode properly)

1. Komputer bisa menerima input informasi.

Ketika komputer diperlukan untuk menerima informasi atau masukan dari sumber
tertentu, keyword Read dan Get digunakan dalam pseudocode tersebut. Read
biasanya digunakan ketika algoritma adalah untuk menerima masukan dari file,
sedangkan Get digunakan ketika algoritma adalah untuk menerima input dari
keyboard (saat lu ngetik inputan).

Contoh pseudocodenya:

Read student name


Get system date
Read system date
Read number_1, number_2
Get tax_code

2. Komputer bisa mengeluarkan output informasi.

Ketika komputer diperlukan untuk memberikan informasi atau output ke sebuah


device, keyword Print, Write, Put, Output atau Display digunakan dalam pseudocode
tersebut. Print biasanya digunakan ketika output yang akan dikirim ke printer,
sedangkan Write adalah digunakan ketika output ditulis ke dalam sebuah file. Jika
output ditulis ke layar, keyword Put, Output atau Display digunakan dalam
pseudocode tersebut.

Contoh pseudocodenya:

Print 'Program Completed'


Write customer record to master file
Put out name, address, and postcode
Output total_tax
Display 'End of data'

Catatan: biasanya instruksi output Prompt dibutuhkan sebelum instruksi input Get. Keyword
Prompt menyebabkan pesan dikirimkan ke layar, kemudian membutuhkan respon dari user
yang biasanya berupa pemasukan input. Contoh pseudocodenya:

Prompt for student_mark


Get student_mark

Content is created by Tartarus_CySec©


3. Komputer bisa melakukan operasi aritmatik.

Operasi yang digunakan antara lain:

+ untuk menambah - untuk mengurangi

* untuk mengalikan / untuk membagi

( ) untuk tanda kurung = untuk menunjukkan nilai dari sebuah proses

Pada pseudocode berlaku juga urutan operasi matematika.

Contoh PseudoCode:

add number to total


total = total+number
divide total_marks by student_count
sales_tax=cost*price*0.10
compute C=(F-32)*5/9

4. Komputer bisa memberikan nilai ke variabel atau memory location.

3 hal penting dalam menulis pseudocode untuk memberikan nilai ke


variabel/memory location:
1) Memberikan nilai awal data dalam pseudocode.
2) Memberikan nilai sebagai hasil dari sebuah proses.
3) Menyimpan variabel untuk digunakan nanti.

Contoh pseudocode:

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

Catatan: tanda ← adalah tanda assign operation.

Content is created by Tartarus_CySec©


5. Komputer bisa membandingkan 2 variabel dan memilih 1 dari 2 pilihan.
Menggunakan IF, THEN, dan ELSE.
Contoh pseudocode :

IF student_attendance_status is part_time THEN


add 1 to part_time_count
ELSE
add 1 to full_time_count
ENDIF

6. Komputer bisa mengulang sekumpulan kegiatan.


Menggunakan DOWHILE dan ENDDO.
Contoh pseudocode :

DOWHILE student_total < 50


Read student record
Print student name, address to report
add 1 to student_total
ENDDO

Catatan : perulangan dengan fungsi for memakai variabel i, j, dan k karena fungsi tsb
memakai vektor.

Cara mengecek solution algorithm saat melakukan desk checking:

1. Bisa diperiksa saat koding.


2. Memberikan 2 atau 3 simple input yang valid untuk mengetesnya.
3. Menetapkan hasil yang diharapkan untuk setiap case yang di tes.
4. Membuat tabel yang relevan dengan nama variabel dalam algoritma.
5. Menjalankan tes pertama baris-perbaris di dalam algoritma dan melihat apakah data
yang dimasukkan di setiap variable sudah sesuai dengan logic atau belum.
6. Mengulang langkah ke 5 dengan data tes lain sampai algoritma mencapai akhir dari
logic.
7. Periksa apakah hasil yang diharapkan pada langkah 3sudah sesuai dengan hasil di
langkah ke 6 atau belum.

Content is created by Tartarus_CySec©


Tipe2 Data

Variabel, Constant, dan Literal

- Variabel adalah kumpulan memori yang ditugaskan untuk menyimpan data tertentu.
Isi dari variable bisa saja berubah selama program berjalan.
- Constant adalah data yang tidak akan berubah baik nama maupun isinya selama
program berjalan.
- Literal adalah constant yang namanya adalah representasi dari nilainya.

Data Type:

- Elementary / variable data type:


1. Integer: 10, 20 30, -6
2. Real: 19.2, 1.92E+01, -0.01
3. Character: ‘A’, dst.
4. Boolean: true atau false (1 atau 0)
- Data Structure
1. Record: kumpulan data item atau fields yg nampung hub antardata.
2. File: kumpulan dari records yang saling berhubungan.
3. Array: kumpulan data yang sama tipenya.
4. String: kumpulan karakter.

Tipe file yang bisa menampung data:

- Sequential atau text files: data disimpan dan diambil secara berurutan.
- Direct atau random-access files: data disimpan dan diambil secara acak
menggunakan key atau index.

Content is created by Tartarus_CySec©


#Selection, Repetition, Control Structures

- Selection
IF -> ada IF simple, IF simple dgn null ELSE, IF yg dicombine, dan Nested IF

CASE
Cth pseudocode:
CASE of tax_code
0 : sales_tax = 0
1 : sales_tax = purch_amt * 0.03
2 : sales_tax = purch_amt * 0.05
3 : sales_tax = purch_amt * 0.07
ENDCASE

- Repetition

Tipe-tipe berdasarkan letak penempatan pengecekan looping:

- Di awal loop (leading decision loop: DOWHILE / while di C). Format:

DOWHILE condition p is true


statement block

DOWHILE digunakan untuk read records yang ada EOF:

1. DOWHILE more data


2. DOWHILE more records
3. DOWHILE records exist
4. DOWHILE NOT EOF

- Di akhir loop (trailing decision loop: REPEAT…UNTIL / do…while di C). Format:

REPEAT
statement
statement
….
UNTIL…

- Dengan hitungan (counted loop: for). Format:


DO loop_index = initial_value to final_value
statement block

Content is created by Tartarus_CySec©


#Modularization & general algorithms

1. Array Processing
a. Array adalah kumpulan data dengan data type yang sejenis.
b. Operasi yang umum di array:
- Memasukkan value ke dalam array.
- Processing value di dalam array.
- Mencari array dengan linear dan binary search.
- Mencetak value di array.

c. Paired arrays adalah array yang punya ukuran yang sama dan dipasangkan
karena elementnya saling berkaitan.

d. Mencari array biasanya dilakukan untuk:


- Update nilai array.
- Hapus nilai array.
- Ambil informasi dari array.

2. Modularisasi
a. Modularisasi adalah pembagian problem menjadi tugas-tugas tertentu.
b. Keuntungan modularisasi:
- Lebih mudah dipahami.
- Mencegah penggunaan code yang sama berulang-ulang.
- Bisa digunakan kembali di program lain.
- Lebih mudah dimaintain.

c. Hierarchy chart: proses yang lebih dulu dikerjakan terletak di sebelah kiri.

d. Langkah-langkah modularisasi:
- Tentukan problem.
- Pecah menjadi modul-modul.
- Buat hierarchy chart.
- Buat logika utama dari algoritma dengan pseudocode.
- Kembangkan pseudocode dari modul-modul kecil di hierarchy chart.
- Desk checking.

e. 3 modul paling umum:


- Initial process module: modul yang dijalankan di awal, sebelum loop
dimulai.
- Processing module: modul yang digunakan untuk memroses data atau
record di dalam looping.
- Final processing module: modul yang dijalankan di akhir, di luar looping.

Content is created by Tartarus_CySec©


3. Report Generation with Page Break
Ketika line di report sudah mencapai akhir dari batas yang ditentukan, diperlukan
page break.
a. Single level control break
- Control field adalah identifier record atau group record di dalam file.
- Ketika control field berubah dari record sebelumnya, dilakukan page
break.
- Ketika dilakukan page break, cetak record sebelumnya, lalu barulah record
yang sekarang diproses kembali.
- Variable yang digunakan:
 This_control_field untuk menunjukkan control field dari record saat
ini.
 Prev_control_field untuk menunjukkan control field dari record
sebelumnya.
 Satu atau lebih variable yang mengakumulasi total dari control
break.
 Satu atau lebih variable yang mengakumulasi total seluruh report.
- Contoh: menghitung total sales per salesman yang berbeda, kemudian
total seluruh report.

b. Multiple level control break


- Contoh: menghitung total sales per salesman yang berbeda, tetapi
divisinya sama, kemudian menghitung total sales per divisi, baru total
seluruh report.

4. Sequential File Update


a. Sequential file update melakukan update terhadap master file dengan
menambahkan update transaction di transaction file, kemudian dihasilkan
master file baru. Selain itu, audit dan error report juga dihasilkan.

b. Konsep:
- Master file: file yang mengandung informasi permanen dan semi-
permanen tentang data yang terkandung di dalamnya.
- Transaction file: mengandung semua data dan aktivitas yang ada di
master file. Biasanya ada 3 operasi di sini:
 Tambah record baru.
 Update atau ubah record tertentu.
 Delete record.
- Audit report: list detail mengenai transaksi yang dilakukan di master file.
- Error report: list detail mengenai error yang terjadi saat update.

Content is created by Tartarus_CySec©


#communication between modules

1. Flow of Information
Flow of information bisa diselesaikan dengan:
a. Scope of Variable (Local or Global)
Tergantung dari tempat deklarasi variable.
Yang bisa digunakan di semua modul/function : global variable.
Yang dideklarasikan di dalam submodule : lokal variable.

b. Passing Parameter
- Formal parameter: parameter yang muncul ketika submodule
dideklarasikan.
- Actual parameter: parameter yang muncul saat pemanggilan modul.
- Value parameter: melemparkan nilai suatu variable ke submodule.
- Reference parameter: melemparkan alamat memori suatu variable ke
submodule.
- Data parameter:

- Status parameter:

2. Module Coupling
- Data coupling terjadi ketika sebuah modul melempar elementary data
non-global kepada modul lainnya.

- Stamp coupling terjadi ketika sebuah modul melempar data structure


non-global kepada modul lainnya. Parameternya struct.

- Control coupling terjadi ketika sebuah modul melempar sebuah data


yang mengontrol logic modul penerima. (1 modul bergantung pd modul
lain)

- External coupling terjadi ketika dua atau lebih modul menggunakan data
elementary global / variabel global.

- Common coupling terjadi ketika dua atau lebih modul menggunakan


data structure global.

Catatan: non global = lokal

Content is created by Tartarus_CySec©


3. Module Cohesion

Level2 dalam kohesi (ini urut ya dri yg low ke high)

- Coincidental:
ketika elemen-elemen ditempatkan dalam suatu modul karena kebetulan
dijalankan bersamaan. Gaada relasi yg meaningful antar elemen, krn tiap
algo antar elemn ga sama dan ga saling berhubungan.

Contoh:
File_processing
open employee updates file
read employee record
print_page_heading
open employee master file
set page_count to one
set error_flag to false
END

- Logical:
ketika elemen-elemen ditempatkan dalam suatu modul karena mereka
melakukan hal yang sejenis.

Contoh:

Read_all_files(file_code)
CASE of file_code
1 : Read customer transaction record
IF not EOF
increment customer_transaction_count
ENDIF
2 : Read customer master record
IF NOT EOF
increment customer_master_count
ENDIF
3 : Read product master record
IF NOT EOF
increment product_master_count
ENDIF
ENDCASE
END

Content is created by Tartarus_CySec©


- Temporal:
ketika elemen-elemen ditempatkan dalam suatu modul karena mereka
dihubungkan oleh waktu penjalanan. (jalannya pd wkt tertentu)

Contoh:

Initialisation
open transaction file
read transaction record
transaction_count = 0
line = 0
number = 0
END

- Procedural:
ketika elemen-elemen ditempatkan dalam suatu modul karena mereka
beroperasi berdasarkan prosedur tertentu. Elemen-elemen tersebut
dieksekusi berdasarkan urutan tertentu. (simplenya, tiap elemen dlm
modul yg berelasi dia lakuin prosesnya bersamaan dlm 1 wkt.)

Contoh:

Read_student_record_and_total_student_ages
set number_of_records to zero
set total_age to zero
read student record
DOWHILE more records exist
add age to total_age
add 1 to number_of_records
ENDDO
print number_of_records, total_age
END

Content is created by Tartarus_CySec©


- Communicational:
ketika elemen-elemen ditempatkan dalam suatu modul karena mereka
menggunakan 1 sentral data yang sama. (logical x procedural)

Contoh:

validate_product_record
IF transaction_type NOT=‘0’’ THEN
error_flag = true
error_message = ‘invalid transaction type’
print_error_report
ENDIF
IF customer_number is NOT= numeric THEN
error_flag = true
error_message = ‘invalid customer number’
print_error_report
ENDIF
IF product_no = blanks OR produc_no has leading blanks THEN
error_flag = true
error_message = ‘invalid product no’
print_error_report
ENDIF
END

- Sequential:
ketika elemen-elemen ditempatkan dalam suatu modul karena mereka
menggunakan data hasil dari proses elemen sebelumnya.

Contoh:

Process_purchases
set total_purchases to zero
prompt and get number_of_purchases
DO loop_index = 1 to number_of_purchases
prompt and get purchase
add purchase to total_purchases
ENDDO
sales_tax = total_purchases*sales_tax_percent
amount_due = total_purchases + sales_tax
END

Content is created by Tartarus_CySec©


- Functional:
ketika elemen-elemen di dalam suatu modul berkontribusi untuk
menyelesaikan satu tugas spesifik tertentu. (tiap element algonya udh
klop)

Contoh:

Calculate_sales_tax
IF price < $50 THEN
sales_tax = product_price * 0.25
ELSE
IF price < $100 THEN
sales_tax = product_price * 0.20
ELSE
sales_tax = product_price * 0.10
ENDIF
ENDIF
END

Teori ttg coupling dan cohesion

- Cohesion : pengukuran seberapa kuat sebuah modul, dan makin ketat


tiap elemen dan makin dependen yaudah bagus
- Coupling : mau liat ketergantungan antar modul. Makin kecil
dependensinya yaudah bagus (bagusan independen)

Yang bagus adalah tight cohesion dan loose coupling

Content is created by Tartarus_CySec©


#Data Flow Diagram

a. DFD adalah diagram yang menggambarkan proses bisnis dan data yang ada di
dalamnya. DFD adalah model konseptual, bukan merepresentasikan program
komputer.

b. Elemen:
- Process: harus dinamakan dengan kata kerja dan diakhiri kata benda,
harus punya minimal satu input dan satu output.
- Data flow: satu data atau kumpulan data logical, harus diberi nama
dengan kata benda.
- Data store: kumpulan data yang disimpan dengan cara tertentu, diberi
nama dengan kata benda, disertakan dengan nomor identifikasi dan
deskripsi.
- External entity: orang, organisasi, atau sistem yang berada di luar sistem,
tetapi berinteraksi dengan sistem. External entity menyediakan data
kepada system atau menerima data dari sistem.

c. Level-level DFD:
- Context diagram:
1. DFD pertama di setiap business model.
2. Hanya ada satu context diagram di setiap business model.
3. Di dalam context diagram menggambarkan keseluruhan business
model dengan satu proses saja dan menunjukkan data flow dari dan
ke external entity.
4. Biasanya semua input dan output adalah berasal dari dan menuju ke
external entity.
5. Jika ada input atau output yang terhubung ke data store di external
system, lebih baik dituliskan sebagai external entity.

- Level 0 DFD:
1. Menunjukkan semua proses di level pertama (diberi nomor 1, 2, 3,
dst.).
2. Menunjukkan semua proses high-level dari sistem dan bagaimana
mereka terhubung.
3. Business model hanya punya satu DFD level 0.
4. Kunci dalam membuat DFD adalah balancing (memastikan informasi
yang ada di dalam DFD sesuai dengan DFD level berikutnya).

Content is created by Tartarus_CySec©


- Level 1 DFD:
1. Menjelaskan setiap proses yang ada di DFD level 0.
2. Proses di level 1 diberi nomor berdasarkan proses level 0 mana yang
dijelaskan. Contohnya menjelaskan proses nomor 1 di level 0, maka
ditulis 1.1, 1.2, 1.3, dst.
- Level 2 DFD:
1. Menjelaskan setiap proses yang ada di DFD level 1.
2. Proses di level 2 diberi nomor berdasarkan proses level 1 mana yang
dijelaskan. Contohnya menjelaskan proses nomor 1.1 di level 1, maka
ditulis 1.1.1, 1.1.2, 1.1.3, dst.

d. Validating the DFD


Problem yang mungkin terjadi adalah:
a. Semantic error. Semantic artinya apakah DFD secara akurat
merepresentasikan bisnis yang dimodelkan.
b. Syntax error. Syntax artinya apakah DFD yang dibuat sudah mengikuti aturan
bahasa pembuatan DFD.

Content is created by Tartarus_CySec©


Content is created by Tartarus_CySec©

Anda mungkin juga menyukai