PENDAHULUAN
Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program.
Pada pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan
secara modular, dapat membantu kita dalam membangun suatu program.
I. MERANCANG PROGRAM
A. Tujuan
- Mempermudah dan menjelaskan langkah-langkah pengembangan program atau aplikasi.
- Menjelaskan Tentang Pemrograman Terstruktur dan Teknik Pemrograman Terstruktur
- Algoritma, Structure English dan Pseudocode.
1. Langkah-langkah Pengembangan Program
- Definisikan Masalah
- Analisa Pemecahan Masalah
- Pengembangan Outline ke dalam Algoritma
- Implementasi algoritma kedalam coding atau program
- Pengetesan dan eksekusi program
- Dokumentasi dan pemeliharaan program
Studi Kasus :
Mengubah mile menjadi kilometer
• Analisis
Data yang dibutuhkan:
1) Input mile (jarak dalam mile)
2) Output km (jarak dalam kilometer)
3) Pembanding 1 mile = 1,609 km
• Algoritma
1) Masukan data dalam mile
2) Ubah ke dalam kilometer
3) Menampilkan data dalam km
2. Pemrograman Terstruktur
- Pemrograman Top-down
- Pemrograman Modular
- Theorema Struktur / Struktur Kontrol
1. Sequence
2. Selection
3. Repetition
3. Algoritma dan Pseudocode
3.1 Definisi Algoritma
- Pola pikir yang terstruktur yang berisi tahap-tahap penyelesaian masalah
- Jelas, tepat, tak samar-samar
- Memberikan pemecahan yang tepat untuk semua kasus.
- Memiliki akhir.
- Dapat disajikan dengan mengunakan dua teknik, yaitu teknik tulisan dan gambar.
Turn on Calculator
Clear Calculator
Repeat the following instruction
Key in dolar ammount
Key in decimal point
Key in cent ammount
Until all prices ware been entered
While down total price
Turn of calculator
3.2 Penyajiannya dengan 2 (dua) teknik :
- Teknik Tulisan
- Pseudocode (Structure English)
B. Teknik Gambar
- Structure Chart
- HIPO
- Flowchart
- Nassi Schneiderman Chart
3.3 Structure English dan Pseudocode
- Structure English è alat yang cukup efisien untuk menggambarkan suatu algoritma. Basis dari structure English è bahasa Inggris (dapat dalam bahasaIndonesia.
- Dasar penggambaran algoritma è bahasa manusia
- Structure English è menggambarkan suatu algoritma yang akan dikomunikasikan kepada pemakai sistem.
- Pseudocode è kode yang mirip dengan kode pemrograman yang sebenarnya.
- Pseudocode è pseudo (imitasi atau mirip atau menyerupai), dan code (program).
- Pseudocode è berbasis bahasa pemrograman seperti PASCAL, atau C++, è lebih tepat digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada programmer.
- Pseudocode lebih rinci dari structure English, misalnya dalam menyatakan tipe data yang digunakan.
3.4 Penulisan pada structure english dan pseudocode è struktur penulisan sequence structure, selection structure dan looping structure.
- Struktur Urut pada Structure English dan Pseudocode.
1. Contoh structure English (Indonesia) adalah sebagai berikut :
- Inisialisasi dan pemberian nilai awal variabel
- Baca data panjang dan lebar empat persegi panjang
- Hitung luas empat persegi panjang sama dengan panjang dikalikan lebar
- Tampilkan hasil hitungan
2. Contoh Struktur Urut pada Pseudocode adalah sebagai berikut :
- Struktur Keputusan pada Structure English dan Pseudocode
1. Contoh penulisan selection structure pada structure English (Indonedia) :
- Inisialisasi variabel
- Baca data nilai siswa
- Jika nilai siswa lebih besar dari 60 maka status sama dengan lulus, jika tidak maka status sama dengan gagal.
- Cetak status siswa
2. Contoh penulisan struktur keputusan pada pseudocode adalah :
- Struktur Perulangan pada Structure English dan Pseudocode
1. Contoh penulisan looping structure pada structure English (Indonesia) :
- Inisialisasi variabel yang digunakan
- Tentukan nilai awal hitungan
- Bila hitungan belum mencapai lebih besar dari sepuluh, maka ulangilah blok instruksi berikut ini :
ð Cetak kata ‘MERDEKA’
ð Hitungan ditambah Satu
- Selesai
2. Contoh penulisan looping structure pada pseudocode adalah :
- Gayapenulisan Structure English
- Common Style (Menggunakan huruf besar di awal dan selanjutnya huruf kecil )
- Capitalized Common Style (menggunakan huruf besar semua)
- Outline Common Style (dengan menggunakan nomor urut)
- Gayalain (tiap kata kunci ditulis dengan huruf besar semua)
- Aturan Penulisan Pseudocode
- Tulis satu pseudocode suatu instruksi pada satu baris
- Pisahkan modul-modul atau kelompok pseudocode instruksi è spasi beberapa baris untuk mempermudah pembacaan
- Bedakan bentuk huruf dalam penulisan pseudocode.
- pseudocode instruksi è huruf kapital
- pseudocode komentar atau variabel è huruf kecil.
- Berikanlah tabulasi yang berbeda untuk penulisan pseudocode instruksi-instruksi yang berada dalam kalang (loop) atau struktur kondisional.
- Lakukan pembatasan jumlah baris pseudocode instruksi setiap modulnya, misalnya 50 – 75 baris instruksi per modul, sehingga tidak terlalu panjang.
V. SELECTION STRUCTURE
Tujuan :
- Mempelajari penggunaan selection structure
- Mengenal case dalam pseudocode
- Mengembangkan algoritma menggunakan berbagai variasi selection structure.
Contoh Kasus Dalam Selection Structure
1. Simple Selection (simple IF statement)
IF acc_balance < 300 THEN
Service_change = 5
ELSE
Service_change = 2
ENDIF
2. Simple Selection With out false branch (With out ELSE)
IF no_mhs invalid THEN
hapus record mahasiswa
ENDIF
I. OPERASI DALAM ALGORITMA
Operasi è bilangan bulat ada 3 macam
- Operasi Aritmatik
- Operasi Perbandingan/ Relasional
- Operasi logika.
A. Operasi aritmatik
Operator Aritmatika :
+ (Tambah/ Penjumlahan)
- (Kurang/ Pengurangan)
* (Kali/ Perkalian)
/ (Bagi/ Div) = Divide
Mod ( sisa hasil bagi) = Modula
Contoh Operasi Aritmatika bilangan bulat
3+10 (Hasil:13)
87-31 (Hasil :56)
5*10 (Hasil :50)
10 div 3 (Hasil :3)
10 mod 3 (Hasil:1)
20 div 4 (Hasil :5)
20 mod 5 (Hasil :0)
B. Operasi Perbandingan / Relasional
Operasai Relasional è Operasi terhadap bilangan bulat
< (lebih kecil)
> ( lebih besar )
£ ( kurang dari atau sama dengan )
³ (lebih dari atau sama dengan )
= ( sama dengan )
¹ (tidak sama dengan )
Contoh:
<8 (true)
>15 (false)
11£11 (true)
11=11 (true)
(10 div 2) ¹5 (false )
C. Operasai Logika
And, Or, Not, dan Xor.
Tabel kebenaran logika
A Not A
TrueFalse FalseTrue
A | Not A |
TrueFalse | FalseTrue |
A | B | A and B | A or B | A xor B |
TrueTrue
False
False
| TrueFalse
True
False
| TrueFalse
False
False
| TrueTrue
True
False
| FalseTrue
True
False
|
II. EKSPRESI
- Ekspresi èOperand dan Operator
- Hasil Evaluasi dari sebuah Ekpresi è nilai yang sesuai dengan type operand yang dipakai .
- 3 macam ekpresi
- Ekspresi aritmatika
Ekspresi è Operator Aritmatik.
- Ekspresi Numerik
Ekspresi è Operandnya berupa Numerik.
Contoh:
- (A/2.5)+C*B ~ Operandnya adalah A, B, dan C , dan Operatornya adalah /,+,*
- J*K)-10*(o+K) ~ Operandnya adalah O, I, J, K, dan Operatornya adalah +,*,-
- Tingkatan Operator Aritmatika
(dari tinggi ke rendah):
~/, dw, mod
~*
~+,-
D. Ekspresi Relasional
- Ekspresi è Operator Relasional.
- Hasil Evaluasi Ekspresi è nilai – nilai bertype Bolean ( True and False ).
Contoh:
Not ada (Hasil False )
Adaand True (Hasil True )
~<5 (Hasil False)
ada Xor (~ =Y ) (Hasil True )
III. STATEMENT INPUT-OUTPUT
¨ Statement Input èstatement / fungsi yang digunakan untuk membaca data dari keyboard.
¨ Fungsi-fungsi yang bisa digunakan pada bahasa C ( Turbo C )
- getchar ( ); – getche ( );
- getch ( ); – gets ( );
- scsnf ( );
¨ scanf
- Format :
Int scanf (const char *format [,argumen]…);
- Spesifikasi format adalah : “ % type “
Contoh 1:
/*program luas_segi_empat*/
int panjang,lebar,luas;
void main( )
{
scanf(“%d”,&panjang)
scanf(“%d”,&lebar);
luas=panjang*lebar
}
I. STRUKTUR SELEKSI
¨ Kontruksi if
Sintak:
If(ekpresi boolean ) statement;
Atau
If (ekpresi boolean){
Statement 1;
Statement 2; blok statement
………
}
¨ Kontruksi if-else
¨ Sintak:
If (ekpresi boolean ) statement 1;
Else statement 2;
Atau
If (statement 1;
Statement 2; blok statement 1
……….
}
else
{
statement 3;
statement 4; blok statement 2
………
}
Contoh 1
Susunlah algoritma untuk membaca tiga variabel kemudian susunlah ketiga nilai variabel tsb dengan urutan menaik (ascending) dan tampilkan ketiga variabel hasil sort tsb.
Penyelesaian.
- Diagram
A. Input
Proses
|
Output
| |
Var-1Var-2
Var-3
| Tampilkan ktr u/ membacaKetiga var tsb
Baca var_1, var_2, var_3
Sort
Cetak ketiga variabel tsb.
| Var-1Var-2
Var-3
|
- Algoritma Pemecahan
Baca tiga_variabel.
Tampilkan keterangan u/ membaca tiga var
Baca Var_1, Var_2, Var_3
IF Var_1 > Var_2 THEN
temp = Var_1
Var_1 = Var_2
Var_2 = temp
ENDIF
IF Var_2 > Var_3 THEN
temp = Var_2
Var_2 = Var_3
Var_3 = temp
ENDIF
IF Var_1 > Var_2 THEN
temp = Var_1
Var_1 = Var_2
Var_2 = temp
ENDIF
Cetak Var_1, Var_2, Var_3
END.
II. STRUKTUR CASE
A. Kontruksi Case Of
CASE OF variabel
nilai_1 : statement_1
nilai_2 : statement_2
“ :
“ :
nilai_n : statement_n
nilai_lain : statement_lain
ENDCASE
B. Kontruksi switch-case (Case Of)
¨ Digunakan è pengganti kontruksi if-else bertingkat yang terlalu jauh
¨ Sintak kontruksi switch-case
Switch.(ekpresi )
{
case constant 1 :statement 1;break;
case constant 2 : statement 2;break;
default:statement;
}
¨ Selesaiakan tugas dibawah ini dengan struktur CASE
¨ Contoh program menghitung nilai ujian
Tabel Nilai
Nilai Akhir
|
Bobot
|
Nilai Huruf
|
85-100
|
4
|
A: Sangat Baik
|
75-84
|
3
|
B: Baik
|
65-64
|
2
|
C: Cukup
|
50-64
|
1
|
D:Kurang
|
0-49
|
0
|
E: Gagal
|
Mata kuliah Algoritma dan Pemrograman dilengkapi dengan praktikum di lab Sofware,maka nilai akhir dihitung dan
Nilai Teori = 50%(Ujian Semester)+30%(Ujian Mid Semester)+ 10%(Tugas Mandiri Teori)+ 10%(Absen Teori)
Nilai Praktikum = 40%(Ujian Praktikum) + 30%(Kuis Praktikum) + 15%(TMPraktikum) + 15%(Abs Praktikum)
Nilai Akhir= (Nilai Teori +Nilai praktikum)/2;
Untuk A. Diagram
B. Algoritma pemecahan
C. Desk checking
III. SUB PROGRAM
¨ Beberapa statement digabungkan dalam suatu modul è menyelesaikan suatu tugas tertentu.
¨ Modul è sekumpulan statement tersebut sering digunakan pada tempat lain di dalam program.
IV. KEUNTUNGAN MENGGUNAKAN MODUL
1. Rancangan Top-down dengan teknik sub goal, program besar dapat dibagi menjadi modul-modul yang lebih kecil.
2. Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.
3. Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesalahan dapat dilokalisir dalam suatu modul.
4. Modifikasi dapat dilakukan, tanpa mengganggu programsecar keseluruhan.
5. Mempermudah dokumentasi.
¨ Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap Subprogram.
¨ Contoh pembagian program menjadi beberapa subprogram.
METODE PERANCANGAN
II. CONTOH PROGRAM UNTUK MENGUJI APAKAH SUATU BILANGAN N ADALAH PRIMA
Algoritma :
- Bila N=1, maka N bukan bilangan prima selesai
- Bila N=2, maka N adalah bilangan prima selesai
- Bila N>2 ,maka lakukan langkankah langkah berikut
- Untuk setiap X yang berada :
1<X < N,uji apakah Xhabis dibagi X
- Bila ya maka N bukan bilangan prima ,bilatidak maka Nadalah bilangan prima
Untuk menyatakan N habis dibagi X dapat digunakan statement sbb:N%X= =0
Maka langkah 3 dapat ditafsirkan dengan statement –statement berikut:
For (X=2;X<=N-1;X=+ +)
If ((N % X) = =0) N bukan prima;
III. REPETITON STRUCTURE
A. Tujuan :
- Mengembangkan algoritma menggunakan DO WHILE dan REPEAT – UNTIL.
- Mengenal pseudocode untuk pengulangan
- Mengembangkan algoritma menggunakan berbagai variasi pengulangan.
B. Pengulangan menggunakan struktur DO
¨ Konstruksi WHILE
DO WHILE kondisi k bernilai true
statement_1
statement_2
………..
statement_n
ENDDO
¨ 3 proses è DO WHILE
- Kondisi k selalu acak.
- Bila k bernilai true maka statement_1 s/d statement_n dikerjakan kemudian dicek lagi kondisi k.
- Bila kondisi k bernilai false maka statement_1 s/d statement_n tidak dikerjakan. Alur logika menuju ke ENDDO dan terus ke statement berikutnya.
Contoh 6.1
Mengkonversikan derajat Celsius ke Reamur dan Fahrenheit. Yang dibaca adalah derajat Celsius data dibaca sebanyak 15 kali.
A. Diagram
A. Input
Proses
|
Output
| |
Celsius(15 kali) | Baca CelsiusHitung Reamur
Hitung Fahrenheit
| CelsiusReamur
Fahrenheit
|
B. Algoritma Pemecahan
X = 0
DO WHILE X < 15
X = X + 1
Baca Celsius
Reamur = 4/5 * Celsius
Fahrenheit = 9/5 * Celsius + 32
ENDDO
C. Pengulangan Menggunakan Struktur REPEAT – UNTIL
REPEAT
statement_1
statement_2
….
statement_n
UNTIL kondisi k true
Ada3 proses dilakukan dalam REPEAT – UNTIL
- Melakukan statement_1 s/d statement_n.
- Cek kondisi k.
- Bila kondisi k bernilai false maka diulangi mengerjakan statement_1 s/d n lagi. Bila kondisi k bernilai true maka tidak terjadi pengulangan lagi selanjutnya mengerjakan statement berikutnya.
Contoh 6.1 ditulis menggunakan REPEAT – UNTIL sbb :
X = 0
REPEAT
X = X + 1
Baca Celsius
Reamur = 4/5 * Celsius
Fahrenheit = 9/5 * Celsius + 32
Cetak Celsius, Reamur, Fahrenheit
UNTIL X = 15
Pengulangan struktur DO … ENDDO
DO perbandingan (nilai_index)
statement_1
…
statement_n
ENDDO
Logika pengulangan sama dengan DO WHILE.
Sequence, Repetition, dan Selection
Tujuan :
- Mengembangkan pemecahan dengan menggunakan tiga struktur logika Sequence, Selection, dan Repetition.
- Pemecahan Masalah
Semua pemecahan maslah harus dilakukan dalam 4 tahap proses yaitu :
- Definisi Masalah
Menginventarisir semua masalah ke dalam 3 elemen yaitu (1) masukan (2) proses, dan (3) keluaran.
- Kebutuhan/Penggunaan Struktur Kontrol
Menganalisa struktur kontrol apa saja yang digunakan dalam memecahkan masalah.
- Algoritma Pemecahan
Menuliskan pseudocode algoritma pemecahan berdasarkan point (1) dan (2)
- Desk Checking
Melakukan check dengan data untuk menguji kebenaran dari algoritma dibuat.
Contoh 7.1
Rancanglah algoritma untuk membaca 2 bilangan. Kemudian hitunglah jumlah, rata-rata, dan hasil perkalian dua bilangan tsb. Cetaklah tanda ‘*’ bila jumlahnya lebih besar dari 200. Program akan berhenti bila salah satu bil = 0 dan tetap melakukan proses bila kedua bilangan tsb salah satunya tidak berharga nol.
A. Definisi Diagram
B. Input
Proses
|
Output
| |
Bil_1
Bil_2
| Baca bil_1, bil_2Hitung jumlah.
Hitung rata-rata.
Hitung perkalian.
Cetak jumlah, rata-rata perkalian dan ‘*’ bila jumlah > 200.
| JumlahRata-rata
Perkalian
‘*’
|
B. Kebutuhan struktur kontrol
- DO WHILE untuk melakukan pengulangan.
- IF untuk mencek jumlah > 200.
- NOT dan AND yang digunakan pada DO WHILE.
C.Algoritma pemecahan
Proses_Bilangan
Baca_bil_1, bil_2
DO WHILE NOT (bil_1 = 0 AND bil_2 = 0)
Jumlah = bil_1 + bil_2
Kali = bil_1 * bil_2
Rata = Jumlah / 2
IF Jumlah > 200 THEN
Cetak Jumlah, ‘*’, kali, rata
ELSE
Cetak Jumlah, Kali, Rata
ENDIF
Baca bil_1, bil_2
ENDDO
END.
D.Tabel Desk Checking
Tugas : Buat Tabel Desk Checking !
Contoh 7.2
Rancanglah algoritma untuk membaca data mhs dari file MHS. Data yang dibaca terdiri dari field nim, nama dan nilai Program harus mencetak laporan yang terdiri dari nim, nama, nilai dan grade. Untuk menentukan grade digunakan rumus sbb :
A = 85 – 100
B = 75 – 84
C = 65 – 74
D = 55 – 64 E = 0 – 54
A. Definisi Diagram
Input
Proses
|
Output
| |
Record mhs- Nim
- Nama
- Nilai
| Cetak judul.Baca record mhs.
Tentukan grade.
Cetak detail.
|
Judul
Detail
Nim
Nama
Nilai
Grade
|
B. Kebutuhan struktur kontrol
(1) DO WHILE
(2) IF
C.Algoritma Pemecahan
Cetak_Nilai_mahasiswa
Cetak judul_nilai_mahasiswa
Baca file MHS
DO WHILE NOT EOF
IF Nilai > 84 THEN
Grade = A
ELSE
IF Nilai > 74 THEN
Grade = B
ELSE
IF Nilai > 64 THEN
Grade = C
ELSE
IF Nilai > 54 THEN
Grade = D
ELSE
Grade = E
ENDIF
ENDIF
ENDIF
ENDIF
Cetak Nim, Nama, Nilai, Grade
Baca file MHS
ENDDO
END.
Nassi-Schneiderman
Diagram
A. Tujuan :
- Mengembangkan algoritma dengan menggunakan N-S Diagram.
B. Tiga Dasar Struktur Kontrol
1. Unit / Sequence.
Statement a |
Statement b |
Statement c |
- Seleksi / Selection.
IF THEN ELSE
Ya |
tidak
|
Statement a
|
Statement b
|
CASE
V1 | V2 | V3 | V4 | V5 |
BlokSta 1 | BlokSta 2 | BlokSta 3 | BlokSta 4 | BlokSta 5 |
- Repetition.
DO WHILE
Do while Kondisi (k)
| |
Blok statement
|
REPEAT – UNTIL
Blok statement
| |
REPEAT UNTIL kondisi (k)
|
Simple IF statement
Ya |
tidak
|
Statement-1
|
Statement-2
|
Null ELSE statement
Ya |
tidak
|
Statement -1
|
Statement -2
|
Nested IF statement
- Linear Nested IF statement
- Non Linear Nested IF statement
Contoh 8.1
Rancanglah algoritma untuk menyusun tiga bilangan, kemudian cetak tiga bilangan tersebut. Terlebih dahulu tiga bilangan tersebut dibaca.
A. Definisi diagram
B. Input
Proses
|
Output
| |
bil_1bil_2
bil_3
| Baca bil_1, bil_2, bil_3Susun/Sort
Cetak bil_1, bil_2, bil_3
| bil_1bil_2
bil_3
|
B. Algoritma Pemecahan
Baca tiga-variabel
Tampilkan ktr untuk baca tiga variabel
Baca tiga variabel
IF bil_1 > bil_2
Ya Tidak
temp = bil_1
bil_1 = bil_2
bil_2 = temp
IF bil_2 > bil_3
Ya Tidak
temp = bil_2
bil_2 = bil_3
bil_3 = temp
IF bil_1 > bil_3
Ya Tidak
temp = bil_1
bil_1 = bil_3
bil_3 = temp
Cetak bil_1, bil_2
bil_3
C. Nassi-Schneiderman Diagram (Lanjutan)
Tujuan :
Mengembangkkan algortima dengan menggunakan N-S Diagram.
Latihan Soal
9.1 Kerjakan soal dengan N-S diagram bagi soal tugas pertemuan 5 dalam transparan. 05/06-09 tentang Proses Record Langganan.
Buat :
- Definisi Diagram
- Kebutuhan Struktur Kontrol
- Algoritma Pemecahan dengan N-S Diagram
- Desk Checking
Modular Programming
-
Tujuan :
- § Mengenal modul sebagai cara untuk memecahkan masalah.
- § Menyajikan hirarki chart.
- § Mengembangkan program menggunakan modul.
A. Definisi Masalah.
B. Menginventarisir Struktur Kontrol.
C.Menyusun algoritma, menggunakan prinsip sequence, selection, repetition.
Modular Programming
- Ø Memecahkan algoritma ke dalam algoritma yang lebih kecil / modul.
- Ø Modul yang dibentuk mempunyai kesatuan tugas / fungsi maupun kesatuan proses / prosedur.
- Ø Setiap modul harus mempunyai single entry dan single exit secara beruntun dari atas ke bawah / awal ke akhir modul.
- Ø Memiliki main program dan sub program atau modul.
Contoh 10.1
Rancanglah algoritma untuk membaca tiga bilangan, kemudian susun bilangan tersebut dan cetak ketiga bilangan tersebut ke layar.
A. Diagram Definisi.
Tujuan :
- § Mengenal modul sebagai cara untuk memecahkan masalah.
- § Menyajikan hirarki chart.
- § Mengembangkan program menggunakan modul.
A. Definisi Masalah.
B. Menginventarisir Struktur Kontrol.
C.Menyusun algoritma, menggunakan prinsip sequence, selection, repetition.
Modular Programming
- Ø Memecahkan algoritma ke dalam algoritma yang lebih kecil / modul.
- Ø Modul yang dibentuk mempunyai kesatuan tugas / fungsi maupun kesatuan proses / prosedur.
- Ø Setiap modul harus mempunyai single entry dan single exit secara beruntun dari atas ke bawah / awal ke akhir modul.
- Ø Memiliki main program dan sub program atau modul.
Contoh 10.1
Rancanglah algoritma untuk membaca tiga bilangan, kemudian susun bilangan tersebut dan cetak ketiga bilangan tersebut ke layar.
A. Diagram Definisi.
A. Input
Proses
Output
bil_1bil_2
bil_3
Baca bil_1, bil_2, bil_3Sort bil_1, bil_2, bil_3
Cetak bil_1, bil_2, bil_3
bil_1bil_2
bil_3
B. Algoritma Pemecahan
Baca tiga bilangan
Baca bil_1, bil_2, bil_3
DO While NOT (bil_1 = 0 AND bil_2 = 0 AND bil_3 = 0)
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END.
Dari penyelesaian algoritma diatas dapat dibuat penyelesaian dengan modul sbb :
Baca_tiga_bilangan
Baca bil_1, bil_2, bil_3
DO WHILE NOT (bil_1= 0 AND bil_2=0 AND bil_3=0)
Sort_tiga_bilangan
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END
Sort_tiga_bilangan
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
END.
Proses
|
Output
| |
bil_1bil_2
bil_3
| Baca bil_1, bil_2, bil_3Sort bil_1, bil_2, bil_3
Cetak bil_1, bil_2, bil_3
| bil_1bil_2
bil_3
|
B. Algoritma Pemecahan
Baca tiga bilangan
Baca bil_1, bil_2, bil_3
DO While NOT (bil_1 = 0 AND bil_2 = 0 AND bil_3 = 0)
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END.
Dari penyelesaian algoritma diatas dapat dibuat penyelesaian dengan modul sbb :
Baca_tiga_bilangan
Baca bil_1, bil_2, bil_3
DO WHILE NOT (bil_1= 0 AND bil_2=0 AND bil_3=0)
Sort_tiga_bilangan
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END
Sort_tiga_bilangan
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
END.
B. Modular Programming (Lanjutan)
Contoh 11.1
Proses dilakukan untuk membuat laporan pemesanan. Data dibaca dari file order. Record Order terdiri dari nomor_product, nama_product, jumlah pesanan, harga_perunit, biaya_angkut_perunit, biaya_paket_perunit.
Bentuk laporan yang diminta sebagai berikut :
PT. XYZ
Hal : 99
Laporan Pemesanan Barang
No. Nama Jumlah Jumlah
Product Product Pesanan Harga
xxxx x———x 999 999.999
xxxx x———x 999 999.999
Setiap halaman terdiri dari 45 baris detail.
Jumlah harga = Jumlah_Pesan x Harga_Perunit
Bila Jumlah harga > 10000 diberikan discount 10 %. Biaya angkut dan biaya paket termasuk juga dalam jumlah harga.
A. Diagram Definisi
C. Input
Proses
Output
Record PesananNo. product
Nama_Product
Jumlah_pesanan
Harga
Ongkos_angkut
Ongkos_paket
Cetak judulBaca Record
Hitung jumlah harga
Hitung discount
Hitung ongkos angkut
Hitung ongkos paket
Cetak detail
Hitung konter
JudulDetail
No. product
Nama
Jumlah
Jumlah_harga
B. Pengelompokan kegiatan dalam Modul
- Cetak judul
Dibuat Modul untuk Mencetak Judul
- Perhitungan
Dibuat Modul untuk menghitung
Ä Jumlah harga
Ä Diskon
Ä Ongkos Muat
Ä Ongkos Paket
C.Hierarchy Chart / Bagan Susun
Proses
|
Output
| |
Record PesananNo. product
Nama_Product
Jumlah_pesanan
Harga
Ongkos_angkut
Ongkos_paket
| Cetak judulBaca Record
Hitung jumlah harga
Hitung discount
Hitung ongkos angkut
Hitung ongkos paket
Cetak detail
Hitung konter
| JudulDetail
No. product
Nama
Jumlah
Jumlah_harga
|
|
D.Logika Main Program
Main Program melakukan
Ä DO WHILE
Ä Memanggil dua modul
Ä Mencetak detail
Ä Menghitung jumlah harga
Ä Membaca data dari file order
Mencetak_Lap_Pesanan
Hal = 0
Cetak_Judul
Baris = 0
Buka file order
Baca file order
DO WHILE NOT EOF
IF baris > 45 THEN
Cetak Judul
Baris = 0
ENDIF
Hitung_Jumlah_Harga
Cetak detail
Baris = baris + 1
Baca file order
ENDDO
Tutup file order
END.
E. Merancang pseudocode bagi Modul
- Cetak_Judul
Hal = hal + 1
Cetak ‘———————————-‘
Cetak ‘———————————-‘
Cetak ‘———————————-‘
Cetak ‘———————————-‘
END.
- Hitung_Jumlah_Harga
Jumlah_Harga = Jumlah_Pesan * Harga
IF Jumlah_Harga > 10000 THEN
Diskon = Jumlah_Harga * 0.1
ELSE
Diskon = 0
ENDIF
Jumlah_harga = Jumlah_Harga_Diskon
Ongkos_Muat = Jumlah_Pesan * Biaya_Muat
Ongkos_Paket = Jumlah_Pesan * Biaya_Paket
Jumlah_Harga = Jumlah_Harga + Ongkos_Muat + Ongkos_Paket
END.
F. Desk Checking
- Data Masukan
Record
No.
Prod
Nama Prod
Jml
Pesan
Harga
Unit
Biaya
Muat
Biaya
Paket
1
100 Mouse
10
100
20
50
2
200 Printer
20
200
10
20
3
300 Handphone
100
300
10
20
- Hasil yang diharapkan
PT. ABC
Hal 1
No. Nama Jumlah Jumlah
Product Product Pesanan Harga
100 Mouse 10 1700
200 Printer 20 4600
300 Handphone 30 30000
No.
Prod
|
Nama Prod
|
Jml
Pesan
|
Harga
Unit
|
Biaya
Muat
|
Biaya
Paket
| |
1
| 100 | Mouse |
10
|
100
|
20
|
50
|
2
| 200 | Printer |
20
|
200
|
10
|
20
|
3
| 300 | Handphone |
100
|
300
|
10
|
20
|
D. Nent
Do
While
|
Hal
|
Baris
|
No.
Product
|
Jml
Pesan
|
Harga
|
Biaya
Muat
|
Biaya
Paket
|
Jumlah
Harga
| |
0 | 0 | ||||||||
1 | |||||||||
= 0 | 0 | ||||||||
100 | 10 | 100 | 20 | 50 | |||||
HILE | Ya | ||||||||
I | 1700 | ||||||||
Cetak | Cetak | Cetak | |||||||
ah | 1 | ||||||||
200 | 20 | 200 | 10 | 20 | |||||
HILE | ya | ||||||||
I | 4600 | ||||||||
Cetak | Cetak | Cetak | |||||||
ah | 2 | ||||||||
300 | 100 | 300 | 10 | 20 | |||||
HILE | ya | ||||||||
I | 30000 | ||||||||
Cetak | Cetak | Cetak | |||||||
ah | 3 | ||||||||
EOF | |||||||||
HILE | tidak | ||||||||
A. Komunikasi Antar Modul
Tujuan
- Menyampaikan data dari modul pemanggil ke modul yang dipanggil (subordinate)
- Menyampaikan informasi dan subordinate ke modul pemanggil
- Informasi / Data yang dikirim / diterima di pass 2 arah dari modul pemanggil ke subordinate maupun sebaliknya.
Contoh 12.1
Rancanglah algoritma untuk membaca tiga bilangan. Susunlah / sort ketiga bilangan tersebut dan cetak bilangan tersebut. Gunakan Modul untuk memecahkan masalah ini.
A. Diagram Definisi
B. Input |
Proses
|
Output
|
bil_1bil_2
bil_3
| Baca bil_1, bil_2, bil_3Sort
Cetak bil_1, bil_2, bil_3
| bil_1bil_2
bil_3
|
B. Pembagaian Aktivitas ke dalam Modul
Aktivitas masalah ini dibagi ke dalam 2 kegiatan :
(1) Baca_tiga_bilangan
(2) Sort_tiga_bilangan
C.Hierarchi Chart / Bagan Susun
D.Algoritma Main Program
Baca_tiga_bilangan
Baca bil_1, bil_2, bil_3
DO WHILE NOT (bil_1 = 0 AND bil_2 = 0 AND bil_3 = 0)
Sort_tiga_bilangan (bil_1, bil_2, bil_3)
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END.
E. Algortima Modul
Sort_tiga_bilangan (bil_1, bil_2, bil_3)
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
END.
E. Kohesi
Tujuan :
; Memperkenalkan kohesi sebagai ukuran suatu modul
; Merancang modul yang baik dengan ukuran kohesi
Kohesi
Keeratan hubungan elemen-elemen di dalam suatu modul
Macam – macam Kohesi
- Coincidental
- Logical
- Temporal
- Procedural
- Communicational
- Sequential
- Functional
Contoh 13.1
Menghitung_pajak_penjualan
IF harga > 5000 THEN
Pajak = harga * 0.25
ELSE
IF harga > 4000 THEN
Pajak = harga * 0.15
ELSE
IF harga > 3000 THEN
Pajak = harga * 0.15
ELSE
IF harga > 2000 THEN
Pajak = harga * 0.1
ELSE
Pajak = 0
ENDIF
ENDIF
ENDIF
ENDIF
END.
Kohesi Sequential
Ä Mempunyai pekerjaan yang beruntun
Ä Kegiatan yang dilakukan lebih dari satu
Ä Hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya
Ä Dapat dipecah menjadi Functional
Contoh 13.2
Menghitung_penjualan
IF JB > 300 THEN
POT = JB * HB * 0.15
ELSE
IF JB > 200 THEN
POT = JB * HB * 0.1
ELSE
IF JB > 100 THEN
POT = JB * HB * 0.05
ELSE
POT = 0
ENDIF
ENDIF
ENDIF
P = JB * HB – POT
TP = TP + P
END.
Kohesi Komunikasional
Ä Kegiatan lebih dari satu
Ä Menggunakan data yang sama
Ä Dapat dijadikan Functional
Contoh 13.3
Proses_perhitungan
C = A + B
D = A – B
E = A * B
F = A / B
G = A mod B
END.
Contoh 13.4
Validate_Product_Record
IF transaction_type NOT = ‘0’ THEN
error_flag = true
error_msg = ‘invalid_trans_type’
print_error_report
ENDIF
IF cust_number is NOT numeric THEN
error_flag = true
error_msg = ‘invalid_cust_number’
print_error_report
ENDIF
IF product_no = blanks or product_no has
leading blanks THEN
error_flag = true
error_msg = ‘invalid_product_no’
print_error_report
ENDIF
END.
Kohesi Procedural
Ä Satu kegiatan dengan kegiatan lain tidak berhubungan.
Ä Hubungan antara elemen yang satu dengan lainnya karena urutan statement.
Ä Dapat dipecahkan menjadi Functional.
Contoh 13.5
Read_student_record_and_total_student_ages
set number_record to zero
set total_age to zero
read student_record
DO WHILE more record exist
Add age to total_age
Add 1 to number_record
Read student_record
ENDDO
Print_number_record, total_age
END.
PEMROGRAMAN TERSTRUKTUR XI
Kohesi ( Lanjutan )
Kohesi Temporal
Ä Elemen-elemen terlibat dalam berbagai kegiatan yang mempunyai hubungan dalam waktu.
Ä Urutan tidak penting.
Contoh 14.1
Initialisation
Buka File Transaksi
Total_transaksi = 0
Total_pen = 0
Baris = 30
No = 0
Hal = 0
END.
Kohesi Logical
Ä Elemen-elemen melakukan kegiatan dengan kategori yang sama.
Ä Parameter masukan menentukan kegiatan yang dilaksanakan.
Ä Tidak semua kegiatan dikerjakan.
Contoh 14.2
Read_all_files (file_code)
CASE if file_code
1 : Read customer_transaction record
IF not EOF THEN
increment cust_trans_count
2 : Read customer_master record
IF not EOF THEN
increment cust_master_count
3 : Read product_master record
IF not EOF THEN
increment product_master_count
ENDIF
ENDCASE
END.
Kohesi Konsidental
Ä Elemen-elemen tidak mempunyai hubungan.
Contoh 14.3
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
0 comments