Materi UAS Pemrograman terstruktur

Materi UAS Pemrograman terstruktur


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

  1. Mempermudah dan menjelaskan langkah-langkah pengembangan program atau aplikasi.
  2. Menjelaskan Tentang Pemrograman Terstruktur dan Teknik Pemrograman Terstruktur
  3. Algoritma, Structure English dan Pseudocode.

1.   Langkah-langkah Pengembangan Program

  1. Definisikan  Masalah
  2. Analisa Pemecahan Masalah
  3. Pengembangan Outline ke dalam Algoritma
  4. Implementasi algoritma kedalam coding atau program
  5. Pengetesan dan eksekusi program
  6. 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

  1. Pemrograman Top-down
  2. Pemrograman Modular
  3. 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 :
  1. 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.
  1. 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 :
  1. 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 :
  1. 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 :
  1. 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)
  1. 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

ANot A
TrueFalseFalseTrue
ABA and BA or BA 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
  1. Ekspresi aritmatika
Ekspresi è Operator Aritmatik.
  1. 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 +,*,-
  1. Tingkatan Operator Aritmatika
(dari tinggi ke rendah):
~/, dwmod
~*
~+,-
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.
  1. 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
  1. 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 :
  1. Bila N=1, maka N bukan bilangan prima selesai
  2. Bila N=2, maka N adalah bilangan prima selesai
  3. 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
  1. Kondisi k selalu acak.
  1. Bila k bernilai true maka statement_1 s/d statement_n dikerjakan kemudian dicek lagi kondisi k.
  2. 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
  1. Melakukan statement_1 s/d statement_n.
  2. Cek kondisi k.
  3. 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 :
  1. Definisi Masalah
Menginventarisir semua masalah ke dalam 3 elemen yaitu (1) masukan (2) proses, dan (3) keluaran.
  1. Kebutuhan/Penggunaan Struktur Kontrol
Menganalisa struktur kontrol apa saja yang digunakan dalam memecahkan masalah.
  1. Algoritma Pemecahan
Menuliskan pseudocode algoritma pemecahan berdasarkan point (1) dan (2)
  1. 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
  1. DO WHILE untuk melakukan pengulangan.
  2. IF untuk mencek jumlah > 200.
  3. 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
  1. Seleksi / Selection.
IF THEN ELSE
Ya
tidak
Statement a
Statement b
CASE
V1V2V3V4V5
BlokSta 1BlokSta 2BlokSta 3BlokSta 4BlokSta 5
  1. 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
  1. Linear Nested IF statement
  1. 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.

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.

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
  1. Cetak judul
Dibuat Modul untuk Mencetak Judul
  1. Perhitungan
Dibuat Modul untuk menghitung
Ä Jumlah harga
Ä Diskon
Ä Ongkos Muat
Ä Ongkos Paket
C.Hierarchy Chart / Bagan Susun
Mencetak
Lap_Pesan
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
  1. Cetak_Judul
Hal = hal + 1
Cetak ‘———————————-‘
Cetak ‘———————————-‘
Cetak ‘———————————-‘
Cetak ‘———————————-‘
END.
  1. 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
  1. Data Masukan

Record

No.
Prod
Nama Prod
Jml
Pesan
Harga
Unit
Biaya
Muat
Biaya
Paket
1
100Mouse
10
100
20
50
2
200Printer
20
200
10
20
3
300Handphone
100
300
10
20
  1. 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

D.   Nent

Do
While
Hal
Baris
No.
Product
Jml
Pesan
Harga
Biaya
Muat
Biaya
Paket
Jumlah
Harga
00
= 00
100101002050
HILEYa
I1700
CetakCetakCetak
ah1
200202001020
HILEya
I4600
CetakCetakCetak
ah2
3001003001020
HILEya
I30000
CetakCetakCetak
ah3
EOF
HILEtidak

A.     Komunikasi Antar Modul

Tujuan
  1. Menyampaikan data dari modul pemanggil ke modul yang dipanggil (subordinate)
  2. Menyampaikan informasi dan subordinate ke modul pemanggil
  3. 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
  1. Coincidental
  2. Logical
  3. Temporal
  4. Procedural
  5. Communicational
  6. Sequential
  7. 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