Anda di halaman 1dari 42

BAB IV STRUKTUR DASAR PROGRAM

Sebuah program dapat dibangun dari tiga buah struktur dasar, yaitu : - Struktur Urut (Sequential Structure) - Struktur Pemilihan (Selection Structure) - Struktur Pengulangan (Repetition Structure) 1. Struktur Urut (Sequential Structure) Merupakan struktur didalam melaksanakan instruksi dikerjakan secara beruntun atau berurutan baris per baris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan. Tiap instruksi dikerjakan satu per satu sebanyak satu kali Urutan pelaksanaan instruksi sama dengan urutan penulisan algoritma Instruksi terakhir merupakan akhir algoritma Urutan penulisan instruksi bisa menjadi penting, bila diubah dapat menyebabkan hasil yang berbeda.

Contoh : Algoritma Runtunan_1 {menunjukkan urutan yang berbeda memberi hasil yang berbeda} Deklarasi integer A, B; Deskripsi A 10; A 2 * A; B A; write(B); Algoritma Runtunan_2 {menunjukkan urutan yang berbeda memberi hasil yang berbeda} Deklarasi integer A, B; Deskripsi A 10; B A; A 2 * A; write(B);

Algoritma Runtunan_3 {algoritma untuk menghitung luas sebuah segitiga} Deklarasi real Alas, Tinggi; real Luas; Deskripsi write(Masukan Alas Segituga :); read(Alas); write(Masukan Tinggi Segitiga :); read(Tinggi); Luas Alas * Tinggi / 2; write(Luas Segitiga = , Luas);

2. Struktur Pemilihan (Selection Structure) Merupakan struktur yang digunakan untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu persyaratan. Ada dua bentuk instruksi pemilihan yang sering digunakan yaitu : - If/then/else - Case a. If/then/else Digunakan untuk memilih alternatif apabila suatu syarat atau kondisi dipenuhi (1 kasus), atau memilih satu alternatif dari dua kemungkinan berdasarkan apakah syarat terpenuhi atau tidak (2 kasus)

Bentuk 1 kasus : if (syarat) then aksi endif

syarat Y

Aksi

Apabila syarat dipenuhi maka aksi dijalankan Pada contoh berikut ini, Nilai x akan ditambah 5 apabila nilainya lebih besar dari 100 contoh : if (x >100) then x x + 5 endif

Bentuk 2 kasus : if (syarat) then aksi-1 else aksi-2 endif.

syarat Y

Aksi-1

Aksi-2

Apabila syarat dipenuhi maka aksi-1 dilaksanakan, tetapi bila syarat tidak terpenuhi maka aksi-2 yang dilaksanakan. Misal pada contoh berikut ini, bila x lebih besar dari 0 maka akan ditampilkan bilangan ini positif. Selain itu, akan ditampilkan bilangan ini negatif. contoh : if (x>0) then write(Bilangan ini positif) else write(Bilangan ini negatif) endif.

Bentuk bersusun (lebih dari 1 syarat) : if (syarat-1) T Syarat-1 then aksi-1 T Syarat-2 else if (syarat-2) Y Aksi-1 Y then aksi-2 Aksi-2 else aksi-3 endif endif.

Aksi-3

Pada bentuk ini,aksi-1 dilaksanakan, apabila syarat-1 terpenuhi, aksi-2 dilaksanakan apabila syarat-1 tidak dipenuhi, tetapi syarat-2 dipenuhi, dan aksi-3 hanya dilaksanakan apabila kedua syarat tidak terpenuhi.

Atau sebagai berikut : if (syarat-1) Syarat-1 then if (syarat-2) then aksi-1 Y else aksi-2 Syarat-2 endif Y else aksi-3 Aksi-1 endif.

T
Aksi-3

Aksi-2

Pada bentuk ini,aksi-1 dilaksanakan, apabila syarat-1 dan syarat-2 terpenuhi, apabila syarat-1 tidak terpenuhi maka aksi-3 langsung dilaksanakan, sedangkan aksi-2 hanya dilaksanakan apabila syarat-1 terpenuhi, tetapi syarat-2 tidak.

Contoh : 1.Algoritma menunjukkan pemakaian instruksi pemilihan if/then/else untuk menentukan apakah bilangan bulat yang dimasukkan lewat keyboard adalah bilangan genap atau bilangan ganjil

Algoritma Pemilihan_1 {contoh algoritma untuk menunjukkan pemakaian instruksi pemilihan, algoritma ini menerima satu bilangan bulat kemudian memeriksanya apakah bilangan genap atau bilangan ganjil. } Definisi Variabel integer bilangan; Deskripsi write (Masukkan Satu Bilangan Bulat :); read(bilangan); if(bilangan % 2 == 0) then write (Bilangan Bulat); else writre (Bilangan Ganjil); endif

Contoh : 2.Algoritma berikut ini menunjukkan pemakaian instruksi pemilihan yang dibuat bersusun, di mana ada 3 bilangan bulat dimasukkan lewat keyboard kemudian dicari bilangan yang terbesar di antara ketiganya.

Algoritma Pemilihan_2 {contoh algoritma menerima3 bilangan bulat kemudian menetapkan bilangan yang terbesar, memanfaatkan bentuk bersusun.} Definisi Variabel integer A, B, C, maks; Deskripsi write (Masukkan Bilangan 1 :); read(A); write (Masukkan Bilangan 2 :); read(B); write (Masukkan Bilangan 3 :); read(C);

If (A>B) then if (A>C) then write(Maksimum =, A); else write(Maksimum =, C); endif else if (B>C) then write(Maksimum =, B); else write(Maksimum =, C); endif endif

Latihan : 1. Buatlah algoritma untuk menampilkan gaji bersih pegawai, dengan memasukkan gaji pokok kemudian menghitung tunjangan sebesar 25%, dan pajak pph 15% 2. Buatlah Algoritma yang membaca tiga data yaitu nilai tugas, nilai mid, dan nilai sem, kemudian menghitung nilai akhir = 20% nilai tugas + 30% nilai mid + 50% nilai sem. Tampilkan Nilai Akhir ini.
3. Buatlah Algoritma yang meminta suhu dalam skala celcius dan menampilkan suhu tersebut dalam skala Fahrenheit. (F=9/5*C+32) Quiz : Susun sebuah algoritma yang membaca data seorang mahasiswa mengikuti matakuliah Pemrograman Terstruktur berupa NoBp, Nama, serta Nilai Tugas, Nilai Mid, dan Nilai Sem, kemudian menghitung Nilai Akhir = 20% Tugas + 30% Mid + 50% Sem, dan memberi nilai huruf A bila Nilai akhir > 85, nilai B bila 70 < akhir < 86, nilai C bila 55 < Akhir < 71, nilai D bila 40 < akhir < 56, dan E bila Akhir < 41.

b. Instruksi Case
Instruksi Case digunakan sebagai instruksi pemilihan di mana aksi yang akan dilakukan hanya bergantung pada nilai dari satu macam variabel.
Bentuk Umum : case (variabel) nilai-1 : aksi-1; nilai-2 : aksi-2; nilai-3 : aksi-3; .. default : aksi-n; endcase.

Bentuk case di atas dapat diterjemahkan sebagai berikut : Dimungkinkan ada n-buah aksi, mulai dari aksi-1 hingga aksi-n. Setiap aksi hanya dilakukan apabila suatu nilai variabel dicapai sesuai persyaratan. Misalnya aksi-1 dilakukan hanya bila variabel bernilai nilai-1, aksi-2 dilaksanakan apabila variabel bernilai nilai-2, dan seterusnya. Apabila tak satu pun nilai variabel yang cocok maka aksi-n dikerjakan sebagai aksi default (hanya dikerjakan apabila tidak ada yang memenuhi syarat).

Contoh : Gaji karyawan pada sebuah perusahaan didasarkan pada jam kerja dalam satu bulan serta posisi atau golongannya dalam perusahaan itu. Upah per jam menurut golongan adalah sebagai berikut : Golongan Upah/jam (Rp) A 5000 B 6000 C 7500 D 9000 Apabila karyawan bekerja lebih dari 150 jam per minggu maka kelebihan jam kerja tersebut dihitung sebagai lembur dengan upah/jam 25% di atas upah reguler. Buat sebuah algoritma yang menerima nama, golongan, serta jam kerja karyawan, kemudian tampilkan gaji totalnya dalam satu bulan.

Jawab : Algoritma Gaji_Karyawan {Algoritma menerima nama, golongan serta jam kerja, kemudian menampilkan total gaji yang diterima karyawan} Deklarasi real gaji, total, jamkerja, lembur, upah; string nama; char gol; Deskripsi write(Masukkan Nama Karyawan :); read(nama); write(Masukan Golongan :); read(gol); write(Masukan Jam Kerja :); read(jamkerja)

Case(gol) A : upah 5000; B : upah 6000; C : upah 7500; D : upah 9000; default : write(Golongan Salah !); upah 0; Endcase. If (jamkerja > 150) then lembur (jamkerja 150) * upah * 1.25; gaji 150 * upah; else lembur 0; gaji jamkerja * upah; Endif Total gaji + lembur; Write(Gaji yang diterima Sdr. , nama, adalah = Rp., total);

3. Struktur Perulangan (Repetition Structure) Merupakan struktur yang dapat mengulang pelaksanaan sederetan instruksi-instruksi lainnya berulang-ulang sesuai persyaratan yang ditetapkan.

Struktur perulangan pada dasarnya terdiri atas : - Kondisi perulangan : suatu kondisi yang harus dipenuhi agar perulangan dapat terjadi. - Badan (body) perulangan : deretan instruksi yang akan diulang-ulang pelaksanaannya. - Pencacah (Counter) perulangan : suatu variabel yang nilainya harus berubah agar perulangan dapat terjadi dan pada akhirnya membatasi jumlah perulangan yang dapat dilaksanakan
Ada tiga macam bentuk instruksi perulangan yang biasa ditemukan dalam program, yaitu while-do, repeat-until, dan for.

a. Perulangan While-do
Bentuk umum : while (kondisi) do .. instruksi-instruksi .. endwhile
Kondisi T Y Instruksiinstruksi

Maksudnya : Ulangi instruksi-instruksi selama kondisi yang diberikan masih terpenuhi.

Contoh 1: Algoritma berikut ini menggunakan while/do untuk menampilkan angka 1 hingga 100 secara berurutan. Perhatikan bahwa perintah : angka 1 adalah kondisi awal, sedangkan instruksi : angka angka + 1, adalah kondisi yang bisa mengubah kondisi hingga tidak terpenuhi pada saat angka > 100. Algoritma Perulangan_1 {mencetak angka 1 hingga 100} Deklarasi integer angka ; Deskripsi angka 1; while (angka <=100) do write (angka); angka angka + 1; endwhile.

Contoh 2 : Algoritma ini menggunakan while/do dan juga if/then/else untuk menampilkan syair Anak Ayam Yang Mati mulai dari 10 hingga habis. Algoritma Perulangan_2 {mencetak syair anak ayam} Deklarasi integer anak ; Deskripsi anak 10; while (anak > 0) do write (Anak Ayamku Turun : , anak); anak anak - 1; if (anak>0) then write (Mati Satu Tinggal :, anak); else write (Mati Satu Tinggal Saya); endif endwhile.

b. Perulangan Repeat - Until Bentuk umum : repeat .. instruksi-instruksi .. until (kondisi)

Instruksiinstruksi

T Kondisi

Maksudnya : Ulangi pelaksanaan instruksi-instruksi hingga kondisi terpenuhi. Kesimpulan : 1. Instruksi-instruksi akan diulang hanya apabila kondisi tidak terpenuhi, dan ketika kondisi terpenuhi maka perulangan berhenti 2. Instruksi-instruksi dikerjakan terlebih dahulu sebelum kondisi diperiksa 3. Harus ada instruksi yang mendahului repeat/until agar kondisi tidak terpenuhi sehingga perulangan bisa berlangsung 4. Harus ada instruksi di antara instruksi yang diulang sehingga pada akhirnya dapat mengubah kondisi menjadi terpenuhi dan perulangan berhenti. 5. Apabila di awal pelaksanaan kondisi sudah terpenuhi, maka instruksi-instruksi paling tidak dikerjakan satu kali.

Contoh 3 : Algoritma beriktut ini menampilkan UPI-YPTK sebanyak 25 kali, dengan memanfaatkan instruksi repeat until Algoritma Perulangan_3 {Memakai repeat-until untuk menampilkan UPI-YPTK sebanyak 25 kali} Deklarasi integer cacah ; Deskripsi cacah 1;
repeat write (UPI-YPTK); cacah cacah + 1; until (cacah > 25).

Contoh 4 : Gunakan repeat-until untuk menghitung jumlah angka 1 + 2 +3 + + N, dimana N adalah angka bulat yang dimasukkan lewat keyboard Algoritma Perulangan_4 {Menghitung jumlah 1 + 2 + 3+ + N, N dimasukkan dari keyboard} Deklarasi integer cacah, N, jumlah ; Deskripsi write(Masukkan Nilai N : ); read(N); cacah 1; jumlah 0; repeat jumlah jumlah + cacah; cacah cacah + 1; until (cacah > N). write(Jumlahnya = , jumlah);

Contoh 5 : Gunakan repeat-until untuk menghitung rata-rata dari N buah bilangan yang dimasukkan lewat keyboard Algoritma Perulangan_5 {Menghitung rata-rata dari N buah bilangan} Deklarasi integer bilangan, cacah, N, jumlah ; real rata; Deskripsi write(Masukkan Nilai N : ); read(N); cacah 1; jumlah 0; repeat write(Masukkan Bilangan Ke-, cacah); read (bilangan); jumlah jumlah + bilangan; cacah cacah + 1; until (cacah > N). rata jumlah/N; write(Rata-rata = , rata);

c. Perulangan For
Bentuk umum : For (var = awal to akhir step n) .. instruksi-instruksi .. endfor

Var = Awal

atau
Var = Awal to Akhir

Var=akhir?

Y T
Instruksiinstruksi

Instruksiinstruksi

Var = var + n Var = var + n

Maksudnya : Ulangi instruksi-instruksi tersebut berdasarkan variabel perulangan mulai nilai awal hingga nilai akhir dengan perubahan nilai sebesar n Kesimpulan : 1. Variabel perulangan (var) harus bertipe dasar (integer, real atau char) 2. Nilai awal harus lebih kecil dari akhir bila n > 0 (positif) 3. Nilai awal harus lebih besar dari akhir bila n < 0 (negatif) 4. Mula-mula variabel var bernilai awal, kemudian setiap satu kali putaran maka nilai var bertambah sebesar n 5.Perulangan akan berhenti apabila nilai var sudah mencapai akhir.

Contoh 6 : Algoritma beriktut ini menampilkan UPI-YPTK sebanyak 10 kali, dengan memanfaatkan instruksi For Algoritma Perulangan_6 {Memakai For end for untuk menampilkan UPI-YPTK sebanyak 10 kali} Deklarasi integer cacah ; Deskripsi For (cacah =1 to 10 step 1) write (UPI-YPTK); endfor.

Contoh 7 : Algoritma untuk menghitung rata-rata dari N buah bilangan yang dimasukkan lewat keyboard, menggunakan instruksi For Algoritma Perulangan_7 {Menghitung rata-rata dari N buah bilangan} Deklarasi integer angka, cacah, N, jumlah ; real rata; Deskripsi write(Masukkan Nilai N : ); read(N); jumlah 0; For (cacah = 1 to N step 1) write(Masukkan Bilangan Ke-, cacah); read (angka); jumlah jumlah + angka; endfor. rata jumlah/N; write(Rata-rata = , rata);

Contoh 8: Algoritma melakukan pencacahan mundur mulai dari 100, 99, 98, , hingga 0 dengan menggunakan instruksi For Algoritma Perulangan_8 {mencacah terbalik atau count down} Deklarasi integer cacah ; Deskripsi For (cacah = 100 to 0 step -1) write(cacah); endfor. write(Sukses !);

Contoh Soal : Buatlah sebuah algoritma untuk menghitung jumlah deret dengan N buah suku sebagai berikut : S = 1 1/2 + 1/4 - 1/6 + 1/8 1/10 + 1/12 1/14 + ... Jawab : Analisis : - Ketika dijalankan maka akan ada permintaan untuk memasukkan jumlah suku N - Bila diperhatikan maka tanda berselang-seling positif dan negatif; pada posisi ganjil maka tandanya positif dan posisi genap maka tandanya negatif - Nilai yang dijumlahkan adalah kelipatan dari (1/2) yang dikalikan sesuai dengan posisinya, mula-mula 1/2 kemudian 1/(2*2), 1/(2*3),

Algoritma Jumlah_Deret_V1 {menjumlahkan deret bersuku N} Deklarasi integer N, cacah, k; real S; Deskripsi write(Berapa banyak suku ?); read(N); S 1; cacah 1; k 0; while (cacah < = N) do cacah cacah + 1 k k + 2; if (cacah % 2 = 0) then S S 1/k; else S S + 1/k; endif endwhile write (Jumlah Deret = , S);

Algoritma Jumlah_Deret_V2 {menjumlahkan deret bersuku N} Deklarasi integer N, cacah, k, tanda; real S; Deskripsi write(Berapa banyak suku ?); read(N); S 1; cacah 1; k 0; tanda +1 while (cacah < = N) do k k + 2; cacah cacah + 1 tanda (-1) * tanda S s + tanda * (1/k); endwhile write (Jumlah Deret = , S);

Contoh: Andaikata dari keyboard dimasukan N buah data (bilangan bulat) kemudian akan dikelompokkan menjadi 2 (dua) macam, yaitu kelompok bilangan ganjil dan kelompok bilangan genap dalam bentuk jumlahan sehingga keluaran (output) berbentuk sebagai berikut : Jumlah Bilangan Ganjil = Jumlah Bilangan Genap = Buatlah algoritmanya dan flowchart program dengan menggunakan struktur perulangan whiledo, repeatuntil dan for

Jawab : Analisis : a. Berapa banyak data harus diketahui terlebih dahulu N b. Lakukan perulangan sebanyak N kali untuk : - Meminta data - Memeriksa data apakah ganjil atau genap - Menjumlahkan data sesuai kelompoknya. c. Tampilkan hasil penjumlahan.

Whiledo
Algoritma Ganjilgenap {Mengelompokan data dalam bentuk jumlahan bilangan ganjil dan genap} Deklarasi integer cacah, N, Bil, Genap, Ganjil; Deskripsi write (Berapa Banyak Bilangan ? ); read (N); cacah 1; genap 0; ganjil 0; While (cacah < N) do write ( Masukkan Bilangan ke- , cacah); read (Bil); if (Bil % 2 = 0) then Genap Genap + Bil; else Ganjil Ganjil + Bil; endif cacah cacah + 1; Endwhile Write (Jumlah Bilangan Ganjil = , Ganjil); Write (Jumlah Bilangan Genap = , Genap);
Star 11

Int cacah, N, Bil, Genap, Ganjil

Cacah=cacah+1

Read(N)

Cacah=1, genap=0, ganjil=0

T Cacah < N Y Read (bil) Write(ganjil) Write(genap) Stop Bil%2=0 Y Genap=genap + bil Ganjil=ganjil + bil T

RepeatUntil
Algoritma Ganjilgenap {Mengelompokan data dalam bentuk jumlahan bilangan ganjil dan genap} Deklarasi integer cacah, N, Bil, Genap, Ganjil; Deskripsi write (Berapa Banyak Bilangan ? ); read (N); cacah 1; genap 0; ganjil 0; Repeat write ( Masukkan Bilangan ke- , cacah); read (Bil); if (Bil % 2 = 0) then Genap Genap + Bil; else Ganjil Ganjil + Bil; endif cacah cacah + 1; Until (cacah > N) Write (Jumlah Bilangan Ganjil = , Ganjil); Write (Jumlah Bilangan Genap = , Genap);
Star
1

Int cacah, N, Bil, Genap, Ganjil

Y Cacah>N Write(ganjil) Write(genap)

Read(N)

Cacah=1, genap=0, ganjil=0

Stop

Read (bil)

Bil%2=0
Y Genap=genap + bil Ganjil=ganjil + bil

Cacah=cacah+1 1

For
Algoritma Ganjilgenap {Mengelompokan data dalam bentuk jumlahan bilangan ganjil dan genap} Deklarasi integer cacah, N, Bil, Genap, Ganjil; Deskripsi write (Berapa Banyak Bilangan ? ); read (N); genap 0; ganjil 0; For (cacah=1 to N step 1) write ( Masukkan Bilangan ke- , cacah); read (Bil); if (Bil % 2 = 0) then Genap Genap + Bil; else Ganjil Ganjil + Bil; endif Endfor Write (Jumlah Bilangan Ganjil = , Ganjil); Write (Jumlah Bilangan Genap = , Genap);
Star

Int cacah, N, Bil, Genap, Ganjil

Read(N)

genap=0, ganjil=0

Cacah=1 to N Step 1 Cacah N Y Read (bil) Write(ganjil) Write(genap) Stop Bil%2=0 Y Genap=genap + bil Ganjil=ganjil + bil T

Latihan : 1. Susun sebuah algoritma yang menerima input berupa sebuah bilangan bulat X > 1 kemudian menghitung ratarata dari bilangan bulat yang ada antara 1 hingga X
2. Susun sebuah algoritma untuk menghitung jumlah deret berikut ini dengan N buah suku di mana N dibaca dari keyboard : 1 1/3 + 1/5 - 1/7 + 1/9 1/11 + ...

Quiz : Pembayaran Listrik pada sebuah Perusahaan Listrik didasarkan pada Golongan Pelanggannya. Tarif per Kwh menurut golongan adalah sebagai berikut : Golongan Tarif/Kwh (Rp) AA 1000 BB 2500 CC 4000 DD 5500
Apabila pemakaian lebih dari 150 kwh per bulan, maka kelebihan pemakaian tersebut dihitung sebagai kelebihan dengan potongan tarif/kwh 15% di bawah tarif regular. Buat sebuah algoritma yang menerima nama, golongan, serta Jumlah Pemakaian, kemudian tampilkan total pembayaran dalam satu bulan.

Algoritma Pembayaran_Listrik {Algoritma menerima nama, golongan serta Jumlah Pemakaian, kemudian menampilkan total pembayaran yang dibayarkan Pelanggan} Deklarasi real bayar, total, Jlhpakai, lebihbyr, tarif; string nama, gol; Deskripsi write(Masukkan Nama Pelanggan :); read(nama); write(Masukan Golongan :); read(gol); write(Masukan Jumlah Pemakaian :); read(jlhpakai);

Case(gol) AA : tarif 1000; BB : tarif 2500; CC : tarif 4000; DD : tarif 5500; default : write(Golongan Salah !); tarif 0; Endcase. If (jlhpakai > 150) then lebihbyr (jlhpakai 150) * tarif * 0.15; bayar 150 * tarif; else lebihbyr 0; bayar jlhpakai * tarif; Endif Total bayar + lebihbyr; Write(Tagihan Listrik sdr. , nama, adalah = Rp., total);

Sebuah asuransi sosial untuk kesehatan dapat memberikan tanggungan jasa kesehatan pada setiap pemegang polis yang dirawat di rumah sakit yang dituju. Adapun bentuk tampilan yang diinginkan adalah sebagai berikut : Proses Data Pemegang Polis Nomor Polis : Nama Pemegang Polis : Plan (A1/A2/A3) : Rumah Sakit : Lama di Rawat : Biaya Inap Perhari : Total Biaya Perawatan : Ketentuan Proses : Biaya penginapan ditentukan oleh Plan dengan ketentuan sebagai berikut : - Jika Plan A1, maka biaya perawatan perhari Rp. 800000, - Jika Plan A2, maka biaya perawatan perhari Rp. 650000, - Jika Plan A3, maka biaya perawatan perhari Rp. 500000, - Total Biaya Perawatan = Lama di Rawat * Biaya Perawat perhari

Anda mungkin juga menyukai