Download - Tgs Modul 2 Nisa
LAPORAN
TUGAS 2 PRAKTIKUM DASAR PEMROGRAMAN
Disusun Oleh :
Khusnunnisa Karima
(105623298)
D3 MANAJEMEN INFORMATIKA
TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI SURABAYA
2013
I. Dasar Teori
A. Netbeans dan Eclipse
Bahasa pemrograman Java lahir pertama kali dari The Green Project (James Gosling
dkk dari sun microsystems) pada tahun 1991 : Teknologi “*7”(Star Seven). Mula-mula
James Gosling menyebut bahasa pemrograman yang dihasilkannya dengan OAK: Sun
mengubahnya menjadi Java.Sun merilis versi awal java secara resmi pada awal 1996 yg
kemudian terus berkembang hingga muncul JDK 1.1 kmd JDK 1.2 shg mulai versi ini
java disebut java 2. Pada tahun 1998-1999 lahirlah teknologi J2EE(Java 2 Enterprise
Edition). Terakhir Teknologi Java melahirkan J2ME(Java 2 Micro Edition) yang sudah
diadopsi oleh Nokia, Siemens, SonyEricsson, Motorola untuk menghasilkan aplikasi
mobile baik games maupun software lainnya yang dpat dijalankan diperalatan mobile
seperti handphone.
Kelebihan java:
Multiplatform : dapat dijalankan di beberapa platform / sistem operasi
komputer
OOP (Object Oriented Programming) :semua aspek yang terdapat di Java adalah
Objek.
Perpustakaan Kelas yang lengkap : Java terkenal dengan kelengkapan library/
perpustakaan (kumpulan program yang disertakan dalam pemrograman java)
yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk
membangun aplikasinya.
Bergaya C++ : memiliki sintaks seperti bahasa pemrograman [C++] sehingga
menarik banyak pemrogram C++ untuk pindah ke Java.
Beberapa editor yang bisa digunakan untuk pemrograman java adalah:
Notepad : editor standard yang disediakan oleh windows. Tidak
dilengkapi dengan utilitas jumlah baris (berpengaruh pada pelacakan baris program
yang menyebabkan error kompilasi)
Netbeans : salah satu editor yang dilengkapi dengan pelacakan baris program
yang menyebabkan error kompilasi
Editor-editor lain: Eclipse, Gel, JBuilder, Jcreator dll
B. Penulisan Program di Java, Input, Output
Pada program-program yang membutuhkan data-data eksternal, maka
diperlukan suatu proses input dan ouput (I/O), dimana pada Java dukungan proses I/O
ini sudah disediakan dalam paket java.io. Di dalam paket tersebut tersimpan banyak
kelas dan interface siap pakai yang akan memudahkan programmer dalam
pengambilan dan penyimpanan informasi dari/ke media lain (misalnya file).
Program Java melakukan proses I/O melalui stream, yaitu sebuah abstraksi
yang dapat memberikan atau mendapatkan informasi. Stream dapat dihubungkan
dengan peralatan fisik yang terdapat dalam sistem I/O Java, seperti keyboard, file,
layar console, soket jaringan, dan lainnya. Walaupun dihubungkan dengan peralatan
fisik yang berbeda, cara kerja stream selalu sama, sehingga kode program yang ditulis
juga sama untuk masing-masing peralatan fisik. Misalnya, untuk melakukan
penulisan sebuah teks ke layar console maupun ke dalam file, maka dapat digunakan
kelas dan method yang sama.
Stream ada dua jenis, yaitu stream byte dan stream karakter. Stream byte
digunakan untuk memberikan atau menyimpan informasi data dalam bentuk byte,
misalnya untuk menulis dan membaca file biner. Sedangkan stream karakter pada
proses I/O yang melibatkan data-data berbentuk karakter, misalnya proses baca/tulis
ke suatu file teks, dengan menggunakan karakter Unicode.
Pendefinisian stream dilakukan dengan menggunakan empat kelas abstrak,
yaitu InputStream dan OutputStream, sebagai superclass untuk kelas-kelas dalam
kategori stream byte, dan kelas abstrak Reader dan Writer untuk kategori stream
Semua program Java otomatis akan mengimpor paket java.lang yang
mendefinisikan sebuah kelas bernama System yang berkaitan dengan lingkungan
runtime. Kelas System juga mendefinisikan tiga variabel stream, yaitu in, out, dan
err, dimana data-datanya dideklarasikan sebagai public atau static. Dengan demikian
variabel-variabel tersebut dapat digunakan tanpa harus membentuk objek dari kelas
System terlebih dahulu. System.out adalah stream output standar dengan default
layar console. System.in adalah objek dari tipe PrintStream, defaultnya berupa
keyboard dan mengacu pada stream input standar. Sedangkan pada stream error
standar terdapat System.err yang secara default berupa layar console. System.out dan
System.err adalah objek dari tipe PrintStream dan mempunyai cara kerja yang
sama, yaitu mengeluarkan pesan kesalahan ke layar console.
Node Stream
Terdapat tiga tipe dasar node, yaitu:
• File
• Memori (misalnya objek array atau String)
• Pipe (suatu kanal dari satu proses)
Melakukan Input
Dalam Java, input console dilakukan melalui pembacaan terhadap stream
System.in. Untuk mendapatkan karakter-karakter yang dimasukkan melalui keyboard
ke dalam layer console, diperlukan membungkus System.in di dalam objek
BufferedReader. Hal ini dilakukan untuk membentuk stream karakter karena
System.in sebenarnya merupakan stream bute. Adapun bentuk constructor dari
BufferedReader sebagai berikut,
BufferedReader(Reader inputReader)
inputReader adalah stream yang akan dihubungkan dengan instance atau objek dari
kelas BufferedReader yang dibuat. Karena Reader merupakan kelas abstrak, maka
perlu dicari kelas turunannya yang berupa kelas konkrit. Salah satunya adalah kelas
InputStreamReader, yang dapat mengonversi byte ke karakter. Sedangkan agar
objek dari InputStreamReader dapat dihubungkan dengan System.in, perlu
digunakan bentuk constructor seperti berikut,
InputStreamReader(InputStream inputStream)
Dalam hal ini, inputStream dapat diisi dengan System.in. Sehingga untuk membuat
objek BufferedReader yang dapat terhubung dengan keyboard, perlu digunakan
kode berikut:
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
Atau bisa juga ditulis:
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
Pada tahap ini objek br sudah siap digunakan untuk melakukan proses input, yaitu
dengan melakukan pemanggilan terhadap method read() maupun readline().
Membaca Input Data Karakter
Untuk membaca input berupa karakter, digunakan method read() yang terdapat
pada kelas BufferedReader, dengan pendeklarasian sebagai berikut:
int read() throws IOException .
Membaca Input Data String
Untuk melakukan input berupa string harus digunakan method readLine(), bukan
read(), dengan deklarasi method sebagai berikut:
String readLine() throws IOException
Proses input data string di dalam Java juga berlaku untuk karakter spasi.
Membaca Input Data Numerik
Untuk input berupa data numerik, maka caranya sama dengan melakukan input
terhadap data string. Selanjutnya string hasil input tersebut dikonversi ke tipe
numerik dengan memanggil method parseInt() yang terdapat pada kelas Integer
untuk bilangan bulat, atau parseDouble() yang terdapat pada kelas Double untuk
bilangan riil. Parameter yang dilewatkan ke dalam method tersebut harus bertipe
string. Sebaiknya proses konversi berada di dalam blok try-catch untuk menghindari
masukan string yang tidak dapat dikonversi ke bilangan bulat, misalnya string “abc”.
Menampilkan Output
Untuk menampilkan output ke layar console, dapat dengan mudah dilakukan
melalui method print() maupun println(). Untuk media output lainnya (misalnya: file),
method yang digunakan untuk melakukan proses ini adalah write().
Selain menggunakan System.out untuk menulis ke layar console, Java juga
menyediakan kelas PrintWriter untuk keperluan yang sama. PrintWriter adalah salah
satu kelas stream yang berbasis pada data karakter (character-based). Bentuk
constructor dari kelas PrintWriter adalah sebagai berikut:
PrintWriter(OutputStream outputStream, Boolean flushOnNewLine)
Dimana outputStream adalah objek dari OutputStream dan flushOnNewLine
adalah parameter Boolean yang menyatakan apakah stream output akan dibuang atau
tidak setiap kali method println() dipanggil.
Seperti halnya System.out, PrintWriter juga mendukung method print() dan
println() untuk semua tipe data, termasuk yang berjenis objek; cara kerjanya pun
sama seperti pada saat menggunakan System.out. Apabila argumen yang dilewatkan
berupa objek, maka PrintWriter akan memanggil method toString() dari objek
bersangkutan, kemudian menampilkan hasilnya. Cara pembentukan objek PrintWriter
untuk menampilkan output adalah sebagai berikut:
PrintWriter pw = new PrintWriter(System.out, true);
C. Operator: Assigment, Matematika, Perbandingan, Logika
1) Assignment
Adalah operator yang menggunakan tanda sama dengan (=) untuk mengisi sebuah
nilai dalam suatu variabel.
2) Matematika
Adalah operator yang digunakan untuk melaksanakan operasi aritmatika. Beberapa
operator aritmatika antara lain:
* : untuk perkalian
+ : untuk penjumlahan
- : untuk pengurangan
/ : untuk pembagian
% : untuk sisa pembagian (modulus)
3) Perbandingan
Adalah operator yang digunakan untuk membandingkan dua buah nilai atau
operand. Operator perbandingan ini antara lain:
< : untuk kurang dari > : untuk lebih dari
<= : untuk kurang dari atau sama dengan
>= : untuk lebiih dari atau sama dengan
== : untuk sama dengan
!= : untuk tidak sama dengan
<> : untuk tidak sama dengan
4) Logika
Adalah operator yang digunakan untuk melakukan operasi logika yaituoperator yang
menghasilkan nilai TRUE (benar) atau FALSE (salah). Bebarapa macam operator
logika antara lain:
and : menghasilkan nilai TRUE jika kedua operand bernilai TRUE
or : menghasilkan nilai TRUE jika salah satu operand bernilai TRUE
xor : menghasilkan nilai TRUE jika salah satu operand bernilai TRUE tetapi bukan
kedua duanya bernilai TRUE
! : menghasilkan nilai tidak TRUE
&& : menghasilkan nilai TRUE jika kedua operand bernilai TRUE
|| : menghasilkan nilai TRUE jika salah satu operand bernilai TRUE
D. Tingkatan Operator
Operator dapat diklasifikasikan menjadi 2 bentuk, yaitu unary operator dan
binary operator. Unary operator adalah operator yang hanya melibatkan 1 operan.
Sedangkan binary operator adalah operator yang melibatkan 2 operan. Java mempunyai
berbagai macam jenis operator yang dapat digolongkan menjadi operator aritmatika,
increment-decrement, bitwise, boolean, logik, shift (geser), penugasan, kombinasi dan
kondisi.
Arithmatic operator (operator aritmatika) adalah operator yang berfungsi untuk
operasi aritmatika. Yang termasuk dalam arithmatic operator bisa dilihat pada Tabel 3.1.
Tabel 3.1. Arithmatic operator
Arithmatic Operator Keterangan
+ Operasi penambahan
- Operasi pengurangan
* Operasi perkalian
/ Operasi pembagian
% Operasi modulus
Increment – decrement operator adalah operator yang berguna untuk menaikkan
1 nilai (increment) dan menurunkan 1 nilai (decrement). Yang termasuk increment-
decrement operator bisa dilihat pad a Tabel 3.2. Berdasarkan urutan eksekusi penaikkan
dan penurunan nilainya, increment-decrement operator ini dapat diklasifikasikan
menjadi 2 macam, yaitu pre-increment/decrement dan post-increment/decrement.
Tabel 3.2. Arithmatic operator
Increment-Decrement Operator Keterangan
++ increment
-- decrement
Bitwise operator adalah operator yang dipakai untuk operasi bit pada nilai
operan. Yang termasuk bitwise operator bisa dilihat pada Tabel 3.3.
Tabel 3.3. Bitwise Operator
Bitwise Operator Keterangan
~ Operasi complement
& Operasi AND
| Operasi OR
^ Operasi XOR
E. Percabangan (if, if....else, if...elseif...., switch)
1) IF
IF sederhana merupakan kombinasi antara IF – THEN, hanya mengakomodasi
alternative kondisi bernilai TRUE saja.
Syntax dari IF sederhana:
IF kondisi THEN statement_true;
IF kondisi THEN
BEGIN
Statement1_true;
Statement2_true;
END;
2) IF Else
Jika pada IF sederhana, kondisi salah tidak akan melaksanakan apapun maka
pada IF dengan alternatif – yang merupakan kombinasi IF – THEN – ELSE –
kondisi salah akan mempunyai statement yang dilaksanakan. Sebagai ilustrasi,
perhatikan kembali Listing Program 3 – 1, ada kondisi yang merupakan kebalikan
yaitu:
a bernilai TRUE dan not a bernilai FALSE
Pada saat dilaksanakan sebenarnya statement setelah IF not a THEN ...,
tidak akan dilaksanakan, karena nilai a:=TRUE. Cobalah untuk mengganti
a:=FALSE, maka statement setelah IF a THEN … -lah yang tidak akan
dilaksanakan. Sebenarnya kedua IF
sederhana tersebut dapat diringkas dengan IF – THEN – ELSE yang syntaxnya:
IF kondisi THEN statement_true
ELSE statement_false;
IF kondisi THEN
BEGIN
END
ELSE
statement1_true;
Statement2_true;
BEGIN
Statement1_false;
Statement2_false;
END;
3) IF Else if
IF kompleks disebabkan adanya kondisi yang mempunyai lebih dari dua
alternativejawaban. Syntaxnya adalah
IF kondisi1 THEN statement_kondisi1_true
ELSE IF kondisi2
THEN statement_kondisi1_false_kondisi2_true;
ELSE statement_ kondisi1_false_kondisi2_false;
IF kondisi1 THEN
BEGIN
statement1_kondisi1_true;
Statement2_kondisi1_true;
END
ELSE IF kondisi2 THEN
BEGIN
Statement1_kondisi1_false_kondisi2_true;
Statement2_kondisi1_false_kondisi2_true;
END
ELSE statement_kondisi1_false_kondisi2_false;
4) Switch
Dipakai pada saat kita ingin memberikan kondisi dengan beberapa syarat yang
identik yang masing-masing mempunyai pernyataan yang berbeda-beda. Pada
Java, nilai yang dilewatkan pada switch harus bertipe int, short, byte atau char.
Sintaks dari switch adalah sebagai berikut:
switch (ekspresi) {
case nilai1: Pernyataan1;
break;
case nilai2: Pernyataan2;
break;
default: Pernyataan3;
}
Ketika ekspresi bernilai nilai1, maka alur program akan mengeksekusi
pernyataan1. Selanjutnya break menyebabkan alur program keluar dari daerah
switch. Kalau ekspresi bernilai nilai2, maka alur program akan mengeksekusi
Pernyataan2. Apabila ekspresi mempunya nilai yang tidak sama dengan nilai1
dan nilai2, maka alur program akan menuju ke bagian default dan kemudian
mengeksekusi Pernyataan3.
II. Soal Praktikum
1. Tuliskan algoritma untuk mencari sisi miring dari suatu segitiga siku-siku jika diketahui diketahui
panjang dua sisi yang membentuk sudut siku-siku.
Petunjuk: sisi miring segitiga siku-siku dapat dihitung dengan rumus pythagoras, √
2. Tuliskan algoritma untuk menampilkan banyaknya pecahan uang paling efisien dari sejumlah
uang yang di inputkan oleh pengguna.
Pecahan uang yang digunakan: 100.000, 50.000, 20.000, 10.000, 5.000, 2.000, 1.000, 500, 200,
dan 100.
Contoh, untuk uang Rp 12.500, diperlukan 1 lembar 10.000, 1 lembar 2.000, dan 1 koin 500.
Input : jumlah uang
Output : banyaknya pecahan uang
3. Buat algoritma untuk mengkonversi bilangan dalam format desimal menjadi biner.
Input : bilangan desimal
Output : bilangan biner
Ilustrasi:
4. Untuk menentukan bonus pegawai, berdasarkan ketentuan yang diberikan oleh bagian personalia
dan keuangan sebagai berikut : Pegawai perusahaan digolongkan menjadi dua golongan, yaitu staf
dan non staf. Staf akan mendapatkan bonus sebesar 1 juta rupiah dengan syarat bahwa ia telah
bekerja paling tidak 5 tahun dan umurnya sudah mencapai 50 tahun; staf yang bekerja kurang dari
5 tahun dan berapapun umurnya, hanya mendapat bonus sebesar Rp. 500.000. Pegawai non staf
yang telah bekerja lebih dari 5 tahun akan mendapat bonus sebesar Rp. 400.000 jika berumur
lebih dari 50 tahun sedangkan pegawai non staf yang berumur kurang dari 50 tahun hanya
mendapat bonus Rp. 250.000. Pegawai staf yang umurnya kurang dari 50 tahun akan mendapat
bonus Rp. 300.000.
Buat algoritmanya?
5. Tarif pemasangan iklan baris di sebuah Surat Kabar ditentukan sebagai berikut :
- Hari : Minggu, Senin, Selasa, Rabu, Kamis dan Jumat, per baris Rp. 33.000,-
- Hari : Sabtu, per baris Rp. 40.000,-
Buatlah algoritma untuk menghitung total biaya iklan baris yang harus dibayar oleh
pengiklan.
Input : - Hari (Minggu, Senin, Selasa, Rabu, Kamis, Jumat atau Sabtu)
- Jumlah baris yang dipakai
Output : Total biaya iklan yang harus dibayar pengiklan
Tuliskan algoritma untuk kasus diatas dalam bentuk flowchart.
6. Info Harga Tiket Masuk bioskop Surabaya City adalah sebagai berikut :
- Senin – Kamis : Rp 15.000,-
- Jumat s/d Minggu : Rp 35.000,-
- Hari Libur : Rp 35.000,-
Input : - Hari (Minggu, Senin, Selasa, Rabu, Kamis, Jumat atau Sabtu)
- Libur atau Tidak Libur
- Jumlah tiket yang dibeli
Output : Total biaya tiket
Pertanyaan: Buat algoritma untuk menghitung total biaya tiket .
7. Di sebuah perbelanjaan di Surabaya diadakan Pekan Diskon, dimana perhitungan bonus dihitung
bertingkat untuk total belanja senilai :
- Rp. 150.000,- diskonnya : 10%
- Rp. 275.000,- diskonnya : 15%
- Rp. 300.000,- diskonnya : 20%
- Rp. 400.000,- ke atas diskonnya : 25%
Diskon tidak dihitung sebagai akumulasi dari diskon nilai belanja dibawahnya.
Buatlah algoritma untuk menghitung berapa nilai yang harus dibayar oleh pelanggan dengan total
nilai belanja tertentu bila disertakan pula perhitungan diskonnya.
Input : Total nilai belanja.
Output : Nilai Diskon (dalam rupiah/bukan persen), Nilai yang harus dibayar
8. Berikut ini adalah ketentuan untuk menghitung nilai, dan konversi menjadi nilai huruf.
Ketentuannya:
Nilai=((rata-rata tugas*30%)+(UTC*30%)+(UAC*40%))
Input = tugas1,tugas2,tugas3,UTC,UAC
Output = Nilai Akhir dan Nilai Huruf.
„A‟ jika nilai > 80 dan nilai <= 100
„AB‟ jika nilai > 70 dan nilai <= 80
„B‟ jika nilai > 65 dan nilai <= 70
„BC‟ jika nilai > 60 dan nilai <= 65
„C‟ jika nilai > 55 dan nilai <= 60
‟D‟ jika nilai > 40 dan nilai <= 55
‟E‟ jika nilai > 0 dan nilai <= 40
9. Berikut ini adalah tarif pemakaian Air PDAM Kota Surabaya
Jumlah Pemakaian (m3) Harga/m
3
Pemakaian I ( < 50 m3) Rp. 200,-
Pemakaian II ( 51 – 150 ) Rp. 500,-
Pemakaian III ( 151 – 300 ) Rp. 1.000,-
Pemakaian I V ( > 300 m3 ) Rp. 1.500,-
Input : Jumlah Pemakaian
Output : Besar biaya yang harus dibayar
Jumlah Pemakaian = 500 m3
Pemakaian I ( s/d 50 m3) Rp. 200,- * 50 = Rp. 10.000,-
Pemakaian II ( 51 – 150 ) Rp. 500,- * 100 = Rp. 50.000,-
Pemakaian III ( 151 – 300 ) Rp. 1.000,- * 150 = Rp. 150.000,-
Pemakaian IV ( > 300 m3 ) Rp. 1.500,- * 200 = Rp. 300.000,-
Biaya Total Rp. 510.000,-
Pertanyaan: Buat algoritma untuk kasus diatas.
10. Sebuah perusahaan kartu kredit memberikan cash back kepada nasabahnya berdasarkan jumlah
nilai pemakaian kartu kredit selama sebulan. Nilai pemakaian cash back
--------------------- ----------
s.d 1.000.000 5%
1.000.000 – 10.000.000 6%
10.000.000 – 25.000.000 7%
Diatas 25.000.000 8%
Ilustrasi: seorang nasabah yang total pemakaian selama sebulan 18.000.000, maka cash backnya=
5%x1.000.000+6%x9.000.000+7%x8.000.000 = 160.000
Buat algoritma untuk menghitung cash back yang diterima nasabah berdasarkan nilai pemakaian
kartu kredit.
III. PSOUDOCODE
a. Soal 1 Pythagoras
Deskripsi hasil , sisi1, sisi2 : Double
Implementasi
Output(hasil)
End.
b. Soal 2 Pecahan Uang
Deskripsi seratusribu, limapuluhribu, duapuluhribu, sepuluhribu, limaribu, duaribu, seribu, limaratus, duaratus,
seratus, inputuang, sisa : Integer
Implementasi
sisa - (seratusribu*100000);
- (limapuluhribu * 50000);
- (duapuluhribu * 20000);
- (sepuluhribu * 10000);
00;
- (limaribu * 5000);
- (duaribu * 2000);
- (seribu * 1000);
- (limaratus * 500);
- (seratus * 100);
if inputuang >= 100000 then
if seratusribu == 0 then
Output (“ ”)
else
Output (seratusribu)
endif
endif
if inputuang >= 50000 then
if limapuluhribu == 0 then
Output (“ ”)
else
Output (limapuluhribu)
endif
endif
if inputuang >= 20000 then
if duapuluhribu == 0 then
Output (“ ”)
else
Output (duapuluhribu)
endif
endif
if inputuang >= 10000 then
if sepuluhribu == 0 then
Output (“ ”)
else
Output (sepuluhribu)
endif
endif
if inputuang >= 5000 then
if limaribu == 0 then
Output (“ ”)
else
Output (limaribu)
endif
endif
if inputuang >= 2000 then
if duaribu == 0 then
Output (“ ”)
else
Output (duaribu)
endif
endif
if inputuang >= 1000 then
if seribu == 0 then
Output (“ ”)
else
Output (seribu)
endif
endif
if inputuang >= 500 then
if limaratus == 0 then
Output (“ ”)
else
Output (limaratus)
endif
endif
if inputuang >= 100 then
if seratus == 0 then
Output (“ ”)
else
Output (seratus)
endif
endif
if inputuang >= 0 then
Output (sisa)
End if
End.
c. Soal 3 Bilangan Desimal ke Biner
Deskripsi bilangan , hasil=0 , i=0 : Integer
Implementasi While bilangan>0 Repeat
hasil+=bilangan mod 2 * (int) Math.pow(10, i);
bilangan/=2;
i++;
Output (hasil)
End.
d. Soal 4 Bonus Pegawai
Deskripsi nama, pegawai : String
masakerja, umur : Integer
Implementasi If pegawai = staf then
If masakerja >=5 and umur >=50 then
Output (bonus)
Else if masakerja < 5 And umur = umur then
Output (bonus)
Else if masakerka = masakerja And umur < 50 then
Output (bonus)
End if
Else If pegawai = nonstaf then
If masakerja >= 5 And umur >=50 then
Output (bonus)
Else
Output (bonus)
End if
Else
Output (Pesan Error)
End.
e. Soal 5 Tarif Iklan
Deskripsi hari : String
baris : Double
Implementasi If hari = minggu Or hari = senin Or hari = selasa Or hari = rabu Or hari = kamis Or hari = jumat then
Output (baris * 33000)
Else if hari = sabtu then
Output (baris * 40000)
Else
Output (Pesan Error)
End.
f. Soal 6 Harga Tiket
Deskripsi hari, jenis : String
tiket : Integer
Implementasi If hari = senin Or hari = selasa Or hari = rabu Or hari = kamis then
If jenis = tidak then
Output (tiket*15000)
Else
Output (tiket*35000)
Else if hari = jumat Or hari = sabtu Or hari = minggu
If jenis = tidak then
Output (tiket*35000)
Else
Output (tiket*35000)
Else
Output (Pesan Error)
End.
g. Soal 7 Diskon Belanja
Deskripsi total, diskon, bayar : Double
Implementasi if total < 150000 then
- diskon
Output (diskon)
Output (bayar)
Else if total < 275000 then
- diskon
Output (diskon)
Output (bayar)
Else if total < 300000 then
- diskon
Output (diskon)
Output (bayar)
Else if total < 400000 then
- diskon
Output (diskon)
Output (bayar)
Else
- diskon
Output (diskon)
Output (bayar)
End.
h. Soal 8 Nilai Huruf
Deskripsi Nama : String
tugas1,tugas2,tugas3,UTS,UAS, rata2, total : Double
Implementasi rata2 = (tugas1+tugas2+tugas3)/3;
total = (rata2*(30%))+(UTS*(30%))+(UAS*(40%));
if total > 0 And total <= 40 then
Output (total)
Output (“E”)
else if total > 40 And total <= 55
Output (total)
Output (“D”)
else if total > 55 And total <= 60
Output (total)
Output (“C”)
else if total > 60 And total <= 65
Output (total)
Output (“BC”)
else if total > 65 And total <= 70
Output (total)
Output (“B”)
else if total > 70 And total <= 80
Output (total)
Output (“AB”)
else if total > 80 And total <= 100
Output (total)
Output (“A”)
End.
i. Soal 9 Tarif PDAM
Deskripsi Pemakaian : Double
Implementasi If pemakaian <= 0 then
Output ( pemakaian*0 )
Else if pemakaian <= 50 then
Output ( pemakaian*200)
Else if pemakain <=150 then
Output ((50*200)+((pemakaian - 100) * 500))
Else if pemakaian <= 300 then
Output ((50 * 200) + (100 * 500) + ((pemakaian - 150) * 1000))
Else
Output ((50 * 200) + (100 * 500) + (150 * 1000) + ((pemakaian - 300) * 1500))
End.
j. Soal 10 Cash Back
Deskripsi
jml_pemakaian : Integer
Implementasi pemakai
if jml_pemakaian<=1000000 then
Else if jml_pemakaian > 1000000 And jml_pemakaian <= 10000000 then
– 1000000
Else if jml_pemakaian > 10000000 And jml_pemakaian <= 25000000 then
-25000000
Else if jml_pemakaian > 25000000 then
– 25000000
cash_back_total=(pemakaian1*5%)+(pemakaian2*6%)+(pemakaian3*7%)+(pemakaian4*8%)
Output (jml_pemakaian , cash_back_total)
End.
IV . Kode Sumber (Source Code) beserta Outputnya
Jawaban Tugas:
1. Tuliskan algoritma untuk mencari sisi miring dari suatu segitiga siku-siku jika diketahui
diketahui panjang dua sisi yang membentuk sudut siku-siku.
Petunjuk: sisi miring segitiga siku-siku dapat dihitung dengan rumus pythagoras,
Jawab:
1.) Pythagoras
A. Source Code
B. Output
2. Tuliskan algoritma untuk menampilkan banyaknya pecahan uang paling efisien dari
sejumlah uang yang di inputkan oleh pengguna.
Pecahan uang yang digunakan: 100.000, 50.000, 20.000, 10.000, 5.000, 2.000, 1.000,
500, 200, dan 100.
Contoh, untuk uang Rp 12.500, diperlukan 1 lembar 10.000, 1 lembar 2.000, dan 1 koin
500.
Input : jumlah uang
Output : banyaknya pecahan uang
Jawab:
2.) Pecahan Uang
a. Source Code
b. Output
3. Buat algoritma untuk mengkonversi bilangan dalam format desimal menjadi biner.
Input : bilangan desimal
Output : bilangan biner
Ilustrasi:
Jawab:
3.) Konversi Bilangan Desimal
A. Source Code
B. Output
4. Untuk menentukan bonus pegawai, berdasarkan ketentuan yang diberikan oleh bagian
personalia dan keuangan sebagai berikut : Pegawai perusahaan digolongkan menjadi dua
golongan, yaitu staf dan non staf. Staf akan mendapatkan bonus sebesar 1 juta rupiah
dengan syarat bahwa ia telah bekerja paling tidak 5 tahun dan umurnya sudah mencapai
50 tahun; staf yang bekerja kurang dari 5 tahun dan berapapun umurnya, hanya mendapat
bonus sebesar Rp. 500.000. Pegawai non staf yang telah bekerja lebih dari 5 tahun akan
mendapat bonus sebesar Rp. 400.000 jika berumur lebih dari 50 tahun sedangkan pegawai
non staf yang berumur kurang dari 50 tahun hanya mendapat bonus Rp. 250.000. Pegawai
staf yang umurnya kurang dari 50 tahun akan mendapat bonus Rp. 300.000.
Buat algoritmanya?
Jawab:
4.) Bonus Pegawai
A. Source Code
B. Output
5. Tarif pemasangan iklan baris di sebuah Surat Kabar ditentukan sebagai berikut :
- Hari : Minggu, Senin, Selasa, Rabu, Kamis dan Jumat, per baris Rp.
33.000,-
- Hari : Sabtu, per baris Rp. 40.000,-
Buatlah algoritma untuk menghitung total biaya iklan baris yang harus dibayar oleh
pengiklan.
Input : - Hari (Minggu, Senin, Selasa, Rabu, Kamis, Jumat atau Sabtu)
- Jumlah baris yang dipakai
Output : Total biaya iklan yang harus dibayar pengiklan
Tuliskan algoritma untuk kasus diatas dalam bentuk flowchart.
Jawab:
5.) Tarif Iklan
A. Source Code
B. Output
6. Info Harga Tiket Masuk bioskop Surabaya City adalah sebagai berikut :
- Senin – Kamis : Rp 15.000,-
- Jumat s/d Minggu : Rp 35.000,-
- Hari Libur : Rp 35.000,-
Input : - Hari (Minggu, Senin, Selasa, Rabu, Kamis, Jumat atau Sabtu)
- Libur atau Tidak Libur
- Jumlah tiket yang dibeli
Output : Total biaya tiket
Pertanyaan: Buat algoritma untuk menghitung total biaya tiket .
Jawab:
6.) Harga Tiket Bioskop
A. Source Code
B. Output
7. Di sebuah perbelanjaan di Surabaya diadakan Pekan Diskon, dimana perhitungan bonus
dihitung bertingkat untuk total belanja senilai :
- Rp. 150.000,- diskonnya : 10%
- Rp. 275.000,- diskonnya : 15%
- Rp. 300.000,- diskonnya : 20%
- Rp. 400.000,- ke atas diskonnya : 25%
Diskon tidak dihitung sebagai akumulasi dari diskon nilai belanja dibawahnya.
Buatlah algoritma untuk menghitung berapa nilai yang harus dibayar oleh pelanggan
dengan total nilai belanja tertentu bila disertakan pula perhitungan diskonnya.
Input : Total nilai belanja.
Output : Nilai Diskon (dalam rupiah/bukan persen), Nilai yang harus dibayar.
Jawab:
7.) Harga Tiket Bioskop
A. Source Code
B. Output
8. Berikut ini adalah ketentuan untuk menghitung nilai, dan konversi menjadi nilai huruf.
Ketentuannya:
Nilai=((rata-rata tugas*30%)+(UTC*30%)+(UAC*40%))
Input = tugas1,tugas2,tugas3,UTC,UAC
Output = Nilai Akhir dan Nilai Huruf.
„A‟ jika nilai > 80 dan nilai <= 100
„AB‟ jika nilai > 70 dan nilai <= 80
„B‟ jika nilai > 65 dan nilai <= 70
„BC‟ jika nilai > 60 dan nilai <= 65
„C‟ jika nilai > 55 dan nilai <= 60
‟D‟ jika nilai > 40 dan nilai <= 55
‟E‟ jika nilai > 0 dan nilai <= 40
Jawab:
8.) Harga Tiket Bioskop
A. Source Code
B. Output
9. Berikut ini adalah tarif pemakaian Air PDAM Kota Surabaya
Jumlah Pemakaian (m3) Harga/m
3
Pemakaian I ( < 50 m3) Rp. 200,-
Pemakaian II ( 51 – 150 ) Rp. 500,-
Pemakaian III ( 151 – 300 ) Rp. 1.000,-
Pemakaian I V( > 300 m3 ) Rp.1.500,-
Input : Jumlah Pemakaian
Output : Besar biaya yang harus dibayar
Jumlah Pemakaian = 500 m3
Pemakaian I ( s/d 50 m3) Rp. 200,- * 50 = Rp. 10.000,-
Pemakaian II ( 51 – 150 ) Rp. 500,- * 100 = Rp. 50.000,-
Pemakaian III ( 151 – 300 ) Rp. 1.000,- * 150 = Rp. 150.000,-
Pemakaian IV( > 300 m3 ) Rp.1.500,- * 200 = Rp. 300.000,-
Biaya Total Rp. 510.000,-
Pertanyaan: Buat algoritma untuk kasus diatas.
Jawab:
9.) Tarif PDAM
A. Source Code
C. Output
10. Sebuah perusahaan kartu kredit memberikan cash back kepada nasabahnya berdasarkan
jumlah nilai pemakaian kartu kredit selama sebulan.
Nilai pemakaian cash back
--------------------- ----------
s.d 1.000.000 5%
1.000.000 – 10.000.000 6%
10.000.000 – 25.000.000 7%
Diatas 25.000.000 8%
Ilustrasi: seorang nasabah yang total pemakaian selama sebulan 18.000.000, maka cash
backnya= 5%x1.000.000+6%x9.000.000+7%x8.000.000 = 160.000
Buat algoritma untuk menghitung cash back yang diterima nasabah berdasarkan nilai
pemakaian kartu kredit.
Jawab:
10.) Cash Back
B. Source Code
D. Output