Modul 05
RUNTUNAN
Algoritma merupakan runtunan (sequence) satu atau lebih instruksi, yang
berarti bahwa:
1. Tiap instruksi dikerjakan satu persatu;
2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis di dalam teks algoritmanya;
4. akhir dari instruksi terakhir merupakan akhir algoritma.
Urutan instruksi di dalam algoritma adalah penting. Urutan instruksi
menunjukkan urutan logik penyelesaian masalah. Bergantung pada masalahnya,
urutan instruksi yang berbeda mungkin tidak ada pengaruhnya terhadap solusi
persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda pula.
3.1 Urutan instruksi yang tidak berpengaruh terhadap solusi persoalan.
Contoh kasus:
Dibaca dua buah nilai integer, A dan B. Hitung jumlah keduanya dan hasil kali
keduanya, lalu cetak jumlah dan hasil kali tersebut.
Dasar pemrograman/ Modul_05_Runtunan 1
5
Algortima Runtunan_1
Deklarasi:
A, B, C, D : integer
Deskripsi:
Read(A, B)
C  A + B
D  A * B
Write(C,D)
Algortima Runtunan_2
Deklarasi:
A, B, C, D : integer
Deskripsi:
Read(A, B)
D  A * B
C  A + B
Write(C,D)
Kedua algoritma di atas akan menghasilkan keluaran yang sama meskipun
urutan instruksinya diubah.
3.2 Urutan instruksi berpengaruh terhadap solusi persoalan.
Contoh kasus:
Diketahui dua buah nilai integer, masing-masing disimpan di dalam dua buah
peubah (variabel), A dan B. Bagaimana cara mempertukarkan nilai A dan B ?
misalnya, sebelumnya pertukaran A=8 dan B=5, maka setelah pertukaran, nilai A=5
dan B=8.
Dalam mempertukarkan nilai dua buah variabel, perlu digunakan variabel bantu,
misalnya temp.
Kedua algoritma di atas akan memberikan hasil yang berbeda. Pada algoritma
pertama akan memberikan hasil yang diinginkan sebaliknya pada algortima kedua nilai
A da nilai b tidak akan bertukar.
Contoh:
1. Tulislah program untuk menampilkan jumlah hari, jam, menit, dan detik dari
masukan berupa lamanya waktu dalam detik. Sebagai contoh, masukan 100.000
Dasar pemrograman/ Modul_05_Runtunan 2
Algoritma Tukar_1
Deklarasi:
A : integer {nilai pertama}
B : integer {nilai kedua}
Temp : integer {variabel bantu}
Deskripsi:
Read(A, B)
Write(A,B)
temp  A
A  B
B  temp
Write(A,B)
Algoritma Tukar_2
Deklarasi:
A : integer {nilai pertama}
B : integer {nilai kedua}
Temp : integer {variabel bantu}
Deskripsi:
Read(A, B)
Write(A,B)
temp  A
B  temp
A  B
Write(A,B)
detik akan menghasilkan keluaran: 1 hari, 3 jam 46 menit dan 40 detik. Keluaran
dari program ini adalah banyaknya hari, jam, menit dan detik dari waktu detik yang
dimasukan.
Jawab:
Misalkan masukan 100.000 detik. Langkah-langkah penghitungan tersebut dapat
diltuliskan sebagai berikut:
- Banyaknya hari = 100.000 / (60 * 60 * 24) = 100.000 / 86.400 = 1 hari.
- Banyaknya jam = (100.000 – 1 * 86.400)/ (60 * 60) = 13.600 / 3600 = 3 jam
- Banyaknya menit = (13.600 – 3 * 3.600) / 60 = 2.800 / 60 = 46 menit
- Banyaknya detik = (2.800 – 46 * 60) = 2.800 – 2.760 = 40 detik.
Berdasarkan contoh penghitungan di atas, maka dapat dituliskan algoritma
pencarian hari, jam, menit dan detik adalah sebagai berikut:
Jika algoritma di atas ditranslasikan ke bahasa Pascal, digunakan tipe data longint
untuk variabel detik karena range(ranah nilai) tipe integer terbatas, sedangkan tipe
longint mempunyai range yang lebih besar dari integer.
Berikut ini Program Konversi Detik dalam bahasa Pascal:
Dasar pemrograman/ Modul_05_Runtunan 3
Algortima Konversi_detik
Deklarasi
Detik : longint;
Hr, jm, mn, dt : integer;
Deskripsi
Read(detik)
hr  detik / 86400
detik  detik – hr * 86400
jm  detik / 3600
detik  detik – jm * 3600
mn  detik / 60
detik  detik – mn * 60
dt  detik.
Write(hr, jm, mn, dt)
Program Konversi_Detik
Const
Satuhari = 60 * 60 * 24;
Var
Detik: longit;
hr, jm, mn, dt: integer;
Begin
Write (’masukkan waktu (dalam detik): ’);
Readln(detik);
Writeln(detik,’ detik terdiri dari’);
hr := detik div satuhari;
detik := detik – hr * satuhari;
jm := detik div 3600;
detik := detik – jm * 3600;
mn := detik div 60;
dt := detik – mn * 60;
Writeln(hr, ’ hari’);
Writeln(jm, ’ jam’);
Writeln(mn, ’ menit’);
Writeln(dt, ’ detik’);
End.
Keluaran program di atas adalah sebagai berikut:
Masukkan waktu (dalam detik) : 100000
100000 detik terdiri dari:
1 hari
3 jam
46 menit
40 detik
Dasar pemrograman/ Modul_05_Runtunan 4
2. Dibaca nama karyawan dan gaji pokok bulanannya. Gaji bersih yang diterima
pegawai adalah:
gaji bersih = gaji pokok + tunjangan – pajak
Tunjangan karyawan dihitung 20% dari gaji pokok, sedangkan pajak adalah 15%
dari gaji pokok ditambah tunjangan. Nama karyawan dan gaji bersihnya dicetak ke
piranti keluaran. Tuliskan algoritmanya.
Jawab:
Tunjangan = 0.2 * gaji pokok
Pajak = 0.15 * (gaji pokok + tunjangan)
Gaji bersih = gaji pokok + tunjangan – pajak
Dari ketentuan di atas kita dapat tuliskan algoritma sebagai berikut:
Berikut ini program menghitung Gaji Karyawan yang dituliskan dalam bahasa
Pascal:
Program Mengitung_Gaji_Karyawan;
Var
Nama : string[25];
Gapok, tunjangan, gaber : real;
Begin
Write(’Masukkan Nama Karyawan : ’);
Readln(nama);
Dasar pemrograman/ Modul_05_Runtunan 5
Algoritma Gaji_Karyawan
Deklarasi
Nama : string
GaPok, Tunjangan, GaBer : real
Deskripsi
Read (Nama, GaPok)
Tunjangan  0.2 * GaPok
Pajak  0.15 * (GaPok + Tunjangan)
GaBer  GaPok + Tunjangan – Pajak
Write(nama, GaBer)
Write(’Masukkan Gaji Pokok : ’);
Readln (gapok);
Tunjangan := 0.2 * gapok;
Pajak := 0.15 (gapok + tunjangan);
Gaber := gapok + tunjangan – pajak;
Writeln(’Gaji Bersih : ’, gaber:7:2);
End.
Jika Program dijalankan maka keluaran dari program adalah sebagai berikut:
Masukkan Nama Karyawan : Yahya
Masukkan Gaji Pokok : 1000000
Gaji Bersih : 1020000.00
3. Buatlah program untuk mencari nilai jam, menit, detik dari total detik yang
dimasukkan
Tampilan program sbb:
Masukkan Total detik: 4000
1 jam 6 menit 40 detik
Dasar pemrograman/ Modul_05_Runtunan 6
Algoritma mendapatkan Jam Menit dan Detik
Deklarasi
jj, mm, dd: integer
Detik, sisa: long Integer
Deskripsi
Read (Detik)
jj  detik div 3600
sisa  detik mod 3600
mm  sisa div 60
dd  sisa mod 60
Write(jj, mm, dd)
Latihan:
1. Buatlah Algoritma dalam bentuk pseudocode dan tuliskan kode programnya
dalam bahasa PAscal untuk menukar dua buah bilangan. Pada algoritma
tersebut tidak diperkenankan menukar nama variabel saja tetapi nilai kedua
variabel tersebut yang dipertukarkan. Jika program tersebut dijalankan maka
hasil tampilan adalah sebagi berikut:
Masukkan Nilai 1= 10
Masukkan Nilai 2= 35
Penukaran nilai....
Nilai 1= 35
Nilai 2= 10
2. Buatlah algoritma dan program dalam bahasa Pascal untuk meminta masukan
berupa nama, nim, absen, nilai tugas, nilai uts dan nilai uas. Berdasarkan ,
absen, nilai tugas, nilai uts dan nilai uas tersebut hitunglah nilai akhir mahasiswa
tersebut dengan menggunakan formula sebagai berikut:
Nilai akhir = 10% absen + 20% tugas + 30% uts + 40% uas
Hasil keluaran yang diharapkan adalah sbb:
Nama = Yulia
NIM = 4150235262
Absen = 70
Tugas = 85
UTS = 70
UAS = 50
Yulia 4150235262 mendapatkan Nilai akhir = 65
Dasar pemrograman/ Modul_05_Runtunan 7
Referensi:
Cheltenham Computer Training, C Programming, www.cctglobal.com, United Kingdom,
1997
Deitel & Deitel, C How to Program 3rd Edition, Prentice Hall, New Jersey, 2001
Jogiyanto, Konsep Dasar Pemrograman Bahasa PASCAL, Andi Offset, Yogyakarta,
1993
Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba
Teknika, Jakarta, 2004

Dasar pemrograman/ Modul_05_Runtunan 8

Dasar Pemrograman materi kuliah

  • 1.
    Modul 05 RUNTUNAN Algoritma merupakanruntunan (sequence) satu atau lebih instruksi, yang berarti bahwa: 1. Tiap instruksi dikerjakan satu persatu; 2. Tiap instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang; 3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis di dalam teks algoritmanya; 4. akhir dari instruksi terakhir merupakan akhir algoritma. Urutan instruksi di dalam algoritma adalah penting. Urutan instruksi menunjukkan urutan logik penyelesaian masalah. Bergantung pada masalahnya, urutan instruksi yang berbeda mungkin tidak ada pengaruhnya terhadap solusi persoalan, tetapi mungkin juga menghasilkan keluaran yang berbeda pula. 3.1 Urutan instruksi yang tidak berpengaruh terhadap solusi persoalan. Contoh kasus: Dibaca dua buah nilai integer, A dan B. Hitung jumlah keduanya dan hasil kali keduanya, lalu cetak jumlah dan hasil kali tersebut. Dasar pemrograman/ Modul_05_Runtunan 1 5 Algortima Runtunan_1 Deklarasi: A, B, C, D : integer Deskripsi: Read(A, B) C  A + B D  A * B Write(C,D) Algortima Runtunan_2 Deklarasi: A, B, C, D : integer Deskripsi: Read(A, B) D  A * B C  A + B Write(C,D)
  • 2.
    Kedua algoritma diatas akan menghasilkan keluaran yang sama meskipun urutan instruksinya diubah. 3.2 Urutan instruksi berpengaruh terhadap solusi persoalan. Contoh kasus: Diketahui dua buah nilai integer, masing-masing disimpan di dalam dua buah peubah (variabel), A dan B. Bagaimana cara mempertukarkan nilai A dan B ? misalnya, sebelumnya pertukaran A=8 dan B=5, maka setelah pertukaran, nilai A=5 dan B=8. Dalam mempertukarkan nilai dua buah variabel, perlu digunakan variabel bantu, misalnya temp. Kedua algoritma di atas akan memberikan hasil yang berbeda. Pada algoritma pertama akan memberikan hasil yang diinginkan sebaliknya pada algortima kedua nilai A da nilai b tidak akan bertukar. Contoh: 1. Tulislah program untuk menampilkan jumlah hari, jam, menit, dan detik dari masukan berupa lamanya waktu dalam detik. Sebagai contoh, masukan 100.000 Dasar pemrograman/ Modul_05_Runtunan 2 Algoritma Tukar_1 Deklarasi: A : integer {nilai pertama} B : integer {nilai kedua} Temp : integer {variabel bantu} Deskripsi: Read(A, B) Write(A,B) temp  A A  B B  temp Write(A,B) Algoritma Tukar_2 Deklarasi: A : integer {nilai pertama} B : integer {nilai kedua} Temp : integer {variabel bantu} Deskripsi: Read(A, B) Write(A,B) temp  A B  temp A  B Write(A,B)
  • 3.
    detik akan menghasilkankeluaran: 1 hari, 3 jam 46 menit dan 40 detik. Keluaran dari program ini adalah banyaknya hari, jam, menit dan detik dari waktu detik yang dimasukan. Jawab: Misalkan masukan 100.000 detik. Langkah-langkah penghitungan tersebut dapat diltuliskan sebagai berikut: - Banyaknya hari = 100.000 / (60 * 60 * 24) = 100.000 / 86.400 = 1 hari. - Banyaknya jam = (100.000 – 1 * 86.400)/ (60 * 60) = 13.600 / 3600 = 3 jam - Banyaknya menit = (13.600 – 3 * 3.600) / 60 = 2.800 / 60 = 46 menit - Banyaknya detik = (2.800 – 46 * 60) = 2.800 – 2.760 = 40 detik. Berdasarkan contoh penghitungan di atas, maka dapat dituliskan algoritma pencarian hari, jam, menit dan detik adalah sebagai berikut: Jika algoritma di atas ditranslasikan ke bahasa Pascal, digunakan tipe data longint untuk variabel detik karena range(ranah nilai) tipe integer terbatas, sedangkan tipe longint mempunyai range yang lebih besar dari integer. Berikut ini Program Konversi Detik dalam bahasa Pascal: Dasar pemrograman/ Modul_05_Runtunan 3 Algortima Konversi_detik Deklarasi Detik : longint; Hr, jm, mn, dt : integer; Deskripsi Read(detik) hr  detik / 86400 detik  detik – hr * 86400 jm  detik / 3600 detik  detik – jm * 3600 mn  detik / 60 detik  detik – mn * 60 dt  detik. Write(hr, jm, mn, dt)
  • 4.
    Program Konversi_Detik Const Satuhari =60 * 60 * 24; Var Detik: longit; hr, jm, mn, dt: integer; Begin Write (’masukkan waktu (dalam detik): ’); Readln(detik); Writeln(detik,’ detik terdiri dari’); hr := detik div satuhari; detik := detik – hr * satuhari; jm := detik div 3600; detik := detik – jm * 3600; mn := detik div 60; dt := detik – mn * 60; Writeln(hr, ’ hari’); Writeln(jm, ’ jam’); Writeln(mn, ’ menit’); Writeln(dt, ’ detik’); End. Keluaran program di atas adalah sebagai berikut: Masukkan waktu (dalam detik) : 100000 100000 detik terdiri dari: 1 hari 3 jam 46 menit 40 detik Dasar pemrograman/ Modul_05_Runtunan 4
  • 5.
    2. Dibaca namakaryawan dan gaji pokok bulanannya. Gaji bersih yang diterima pegawai adalah: gaji bersih = gaji pokok + tunjangan – pajak Tunjangan karyawan dihitung 20% dari gaji pokok, sedangkan pajak adalah 15% dari gaji pokok ditambah tunjangan. Nama karyawan dan gaji bersihnya dicetak ke piranti keluaran. Tuliskan algoritmanya. Jawab: Tunjangan = 0.2 * gaji pokok Pajak = 0.15 * (gaji pokok + tunjangan) Gaji bersih = gaji pokok + tunjangan – pajak Dari ketentuan di atas kita dapat tuliskan algoritma sebagai berikut: Berikut ini program menghitung Gaji Karyawan yang dituliskan dalam bahasa Pascal: Program Mengitung_Gaji_Karyawan; Var Nama : string[25]; Gapok, tunjangan, gaber : real; Begin Write(’Masukkan Nama Karyawan : ’); Readln(nama); Dasar pemrograman/ Modul_05_Runtunan 5 Algoritma Gaji_Karyawan Deklarasi Nama : string GaPok, Tunjangan, GaBer : real Deskripsi Read (Nama, GaPok) Tunjangan  0.2 * GaPok Pajak  0.15 * (GaPok + Tunjangan) GaBer  GaPok + Tunjangan – Pajak Write(nama, GaBer)
  • 6.
    Write(’Masukkan Gaji Pokok: ’); Readln (gapok); Tunjangan := 0.2 * gapok; Pajak := 0.15 (gapok + tunjangan); Gaber := gapok + tunjangan – pajak; Writeln(’Gaji Bersih : ’, gaber:7:2); End. Jika Program dijalankan maka keluaran dari program adalah sebagai berikut: Masukkan Nama Karyawan : Yahya Masukkan Gaji Pokok : 1000000 Gaji Bersih : 1020000.00 3. Buatlah program untuk mencari nilai jam, menit, detik dari total detik yang dimasukkan Tampilan program sbb: Masukkan Total detik: 4000 1 jam 6 menit 40 detik Dasar pemrograman/ Modul_05_Runtunan 6 Algoritma mendapatkan Jam Menit dan Detik Deklarasi jj, mm, dd: integer Detik, sisa: long Integer Deskripsi Read (Detik) jj  detik div 3600 sisa  detik mod 3600 mm  sisa div 60 dd  sisa mod 60 Write(jj, mm, dd)
  • 7.
    Latihan: 1. Buatlah Algoritmadalam bentuk pseudocode dan tuliskan kode programnya dalam bahasa PAscal untuk menukar dua buah bilangan. Pada algoritma tersebut tidak diperkenankan menukar nama variabel saja tetapi nilai kedua variabel tersebut yang dipertukarkan. Jika program tersebut dijalankan maka hasil tampilan adalah sebagi berikut: Masukkan Nilai 1= 10 Masukkan Nilai 2= 35 Penukaran nilai.... Nilai 1= 35 Nilai 2= 10 2. Buatlah algoritma dan program dalam bahasa Pascal untuk meminta masukan berupa nama, nim, absen, nilai tugas, nilai uts dan nilai uas. Berdasarkan , absen, nilai tugas, nilai uts dan nilai uas tersebut hitunglah nilai akhir mahasiswa tersebut dengan menggunakan formula sebagai berikut: Nilai akhir = 10% absen + 20% tugas + 30% uts + 40% uas Hasil keluaran yang diharapkan adalah sbb: Nama = Yulia NIM = 4150235262 Absen = 70 Tugas = 85 UTS = 70 UAS = 50 Yulia 4150235262 mendapatkan Nilai akhir = 65 Dasar pemrograman/ Modul_05_Runtunan 7
  • 8.
    Referensi: Cheltenham Computer Training,C Programming, www.cctglobal.com, United Kingdom, 1997 Deitel & Deitel, C How to Program 3rd Edition, Prentice Hall, New Jersey, 2001 Jogiyanto, Konsep Dasar Pemrograman Bahasa PASCAL, Andi Offset, Yogyakarta, 1993 Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta, 2004  Dasar pemrograman/ Modul_05_Runtunan 8