Anda di halaman 1dari 11

Soal UAS Algoritma dan Pemrograman 2

PTI - UIN Arraniry

Instruksi:
1. Kerjakan menggunakan software DevC++ sesuai dengan deskripsi soal dan contoh
algoritma yang diberikan.
2. Untuk setiap soal, copy-kan source code yang telah dikerjakan ke dalam satu file word
beserta screenshot hasil tes sesuai contoh.
3. Source Code harus menggunakan INDENTASI dan harus lulus compile.
4. Kumpulkan hard copy file word dengan judul berisi nama matakuliah, unit, nama
lengkap, NIM, dan tanggal pada
di
5. Kumpulkan softcopy file source code (masing-masing soal) dalam satu file zip dengan
nama file: UAS-PTI-UIN-nama-NIM.zip
1. Soal: Lama Bekerja
Tulis program untuk menentukan lama bekerja seorang pegawai, jika jam masuk dan jam
pulang diinput. Catatan: jam berupa angka 1-12, dan seorang pegawai bekerja kurang dari
12 jam.
Contoh Masukan dan keluaran:
Jam Jam Keluaran/tampilan
masuk keluar
10 11 Lama bekerja 1 jam
10 2 Lama bekerja 4 jam
10 7 Lama bekerja 9 jam

Algoritma:
Algoritma Lama_Bekerja
{jam berupa angka 1-12, dan seorang pegawai bekerja kurang dari 12 jam}

KAMUS DATA
iMasuk, iKeluar, iLama: Integer

BEGIN
Input(iMasuk)
Input(iKeluar)

If (iKeluar >= iMasuk) Then


iLama  iKeluar - iMasuk
Else
iLama  (12-iMasuk) + iKeluar
end if
Program:
Output(iLama)
END

2. Soal: Biaya Parkir


Tulis program untuk menentukan biaya parkir yang dihitung berdasarkan lama parkir.
Lama parkir dihitung dari selisih jam masuk dan jam keluar diinput. Biaya parkir 2 jam
pertama 2000, perjam berikutnya 500.
Contoh Masukan dan keluaran:
Jam Jam keluar Lama keluaran/tampilan
masuk
10 11 1 Biaya = 2000
10 2 4 Biaya = 3000
Algoritma:
Algoritma Biaya_Parkir
{menghitung biaya parkir}

KAMUS DATA
iMasuk, iKeluar, iLama, iBiaya: Integer

BEGIN
Input(iMasuk)
Input(iKeluar)

If (iKeluar >= iMasuk) Then


iLama  iKeluar - iMasuk
Else
iLama  (12-iMasuk) + iKeluar
End If

If (iLama > 2) Then


iBiaya  2000 + ((iLama - 2)*500)
else
iBiaya  2000

Output(iBiaya)
END

3. Soal: Penggabungan Resistor


Tulis program untuk menghitung resistor pengganti dari 3 buah resistor yang disusun
secara seri atau paralel. Rumus untuk resistor pengganti sbb:
Seri: Rgab = R1 + R2 + R3
Paralel: 1/Rgab = 1/R1 + 1/R2 + 1/R3
Besar R1, R2 dan R3 serta jenis penyusunan (seri/paralel) diinput oleh user.
Algoritma:
Algoritma Menghitung_Resistor

KAMUS DATA
iPilihan: Integer
fR1, fR2, fR3, fResPengganti: Float

BEGIN
Input(fR1,fR2,fR3)
Input(iPilihan)

Case iPilihan
1: fResPengganti  fR1+ fR2+ fR3
2: fResPengganti  (1.0/fR1)+ (1.0/fR2)+ (1.0/fR3)
fResPengganti  1.0/fResPengganti
Otherwise: output(“pilihan salah”)
End Case

Output(fResPengganti)

END

4. Soal: Harga barang


Buatlah program untuk menyelesaikan masalah berikut :
Program akan menerima masukan berupa kode, jenis dan harga, dengan jenis adalah "A",
"B", dan "C". Untuk setiap jenis, masing-masing akan diberikan diskon sebesar 10%
untuk A, 15% untuk B, dan 20% untuk C. Program akan menghitung berapa harga
setelah didiskon.
Contoh masukan :
Jenis = B
kode = 10
harga = 10000
Contoh keluaran :
Jenis barang B mendapat diskon = 15%, Harga setelah didiskon = 8500
Algoritma:
Algoritma Menghitung_Barang

KAMUS DATA
iKode,iHarga:integer
cJenis: character

BEGIN
Input(cJenis)
Input(iKode)
Input(iHarga)

Case(cJenis)
'A': iHDiskon  0,9 * iHarga
'B': iHDiskon  0,85 * iHarga
'C': iHDiskon  0,8 * iHarga
End Case

output(iHDiskon)
END
Program:

5. Soal: Gaji karyawan mingguan


Sebuah perusahaan swasta menggaji karyawannya secara mingguan dengan hitungan
sebagai berikut :

golongan 1 dengan upah per jam 3.000 rupiah


golongan 2 dengan upah per jam 3.500 rupiah
golongan 3 dengan upah per jam 4.000 rupiah
golongan 4 dengan upah per jam 5.000 rupiah

Bila seorang karyawan bekerja kurang atau sama dengan 40 jam per minggu, akan dihitung
dengan upah per jam seperti di atas, tetapi apabila bekerja lebih dari 40 jam, maka lebihnya
akan dihitung sebagai lembur dengan upah per jam 1½ kali upah biasa.
Tulis algoritma untuk menghitung gaji mingguan karyawan, bila golongan dan jam kerja diinput
dari keyboard.
Algoritma:
Algoritma Menghitung_Gaji

KAMUS DATA
iGol, iJam, iUpah, iGaji : Integer

BEGIN

Input(iGol)
Input(iJam)

iUpah  0

Case(iGol)
1: iUpah  3000
2: iUpah  3500
3: iUpah  4000
4: iUpah  5000
End case
Program:
If (iJam > 40) Then
iGaji  40 * iUpah + ((iJam - 40) * 1.5 * iUpah)
Else
iGaji  iJam * iUpah
End if

Output(iGaji)

END

6. Soal: Menghitung selisih waktu dalam jam dan menit


Buat program menghitung selisih waktu (dalam jam dan menit) berdasarkan jam mulai
(jam,menit) dengan jam selesai (jam,menit). Data yang diinput adalah jam dan menit
mulai, jam dan menit selesai.
Contoh Masukan dan Keluaran:
Mulai Selesai Lama (menit) Lama
(jam,menit) (jam,menit) (jam,menit)
10:30 12:10 100 1 jam 40
menit
10:30 1:40 130 3 jam 10
menit
Algoritma:
ALGORITMA MENGHITUNG_JAM_MENIT

KAMUS DATA
iJamStart,iMenitStart,iMenitStop,iJamStop: integer
iTotMenit1,iTotMenit2,iSelangMenit,iJamDurasi,iMenitDurasi: integer

BEGIN
Input(iJamStart)
Input(iMenitStart)

Input(iJamStop)
Input(iMenitStop)

iTotMenit1  iJamStart * 60 + iMenitStart


iTotMenit2  iJamStop * 60 + iMenitStop
Program:
If (iTotMenit2 >= iTotMenit1) Then
iSelangMenit  iTotMenit2 - iTotMenit1
Else
iSelangMenit  ((12*60)-iTotMenit1) + iTotMenit2
End if

iJamDurasi  iSelangMenit div 60


iMenitDurasi  iSelangMenit mod 60;

Output(iJamDurasi)
Output(iMenitDurasi)

END

7. Soal: Kuadran dari koordinat titik


Buat program dengan masukan koordinat sebuah titik (x,y) dalam sebuah system
koordinat kartesian, kemudian ditentukan di kuadran mana titik tersebut.
Contoh Masukan :
Koordinat titik (x,y) : 10 -20

Contoh keluaran:
Titik 10,-20 berada pada kuadran 4
Algoritma:
ALGORITMA Menghitung_Kuadran

KAMUS DATA
ix, iy: Integer

BEGIN
Input(ix,iy)

If (ix >= 0)
If (iy >=0)
Program: Output(“Kuadran I”)
else
Output(“Kuadran IV”)
else
if (iy >=0)
Output(“Kuadran II”)
else
Output(“Kuadran III”)
END

8. Soal: Tunjangan Anak


Pemerintah hanya memberikan tunjangan anak dari PNS maksimal sampai 3 anak saja.
Setiap anak diberikan tunjangan sebesar 10% dari gaji pokok.
Tulis program untuk menghitung total tunjangan anak, bila gaji pokok dan jumlah anak
diinput oleh user.
Contoh Masukan dan Keluaran:
Jumlah Gaji Pokok Tunjangan Anak
anak
0 1.000.000 0
1 1.000.000 100.000
3 1.000.000 300.000
5 1.000.000 300.000
Algoritma:
ALGORITMA Menghitung_Tunjangan

KAMUS DATA
iGajiPokok, iTunjangan, iJmlAnak: Integer

BEGIN

Input(iGajiPokok)
Input(iJmlAnak)

If (iJmlAnak <= 3 && iJmlAnak > 0) Then


iTunjangan  iJmlAnak * 0.1 * iGajiPokok
Else If (iJmlAnak > 3)
iTunjangan  3 * 0.1 * iGajiPokok
Program:
Else
iTunjangan  0
End if

Output ( iTunjangan)

END

9. Soal: Minibus pariwisata


Sebuah acara wisata digunakan minibus kapasitas 7 penumpang per mobil. Apabila
terjadi kelebihan penumpang (walaupun cuma 1), maka minibus yang digunakan
ditambah 1. Tulis program untuk menghitung jumlah minibus yang diperlukan, bila
jumlah pesertanya diinput.
Contoh Masukan dan Keluaran:
Jumlah Peserta Jumlah Minibus
5 1
7 1
8 2
Algoritma:
ALGORITMA Menghitung_Tunjangan

KAMUS DATA
iPeserta,iMinibus : Integer

BEGIN
Output(iPeserta)

iMinibus0

If (iPeserta > 7) Then


iMinibus  iPeserta / 7
If (iPeserta % 7 != 0) Then
Program:
iMinibus  iMinibus + 1
End If
Else if (iPeserta > 0) Then
iMinibus  1
End if

Output(iMinibus)

END

10. Soal: Menentukan N hari yang lalu tanpa menginputkan Hari Ini
Diinput jumlah berapa hari yang lalu, kemudian ditentukan nama harinya. Tulis program
untuk menentukan nama hari dari sekian hari yang lalu yang diinput. (Catatan, gunakan
Hari ini = „Senin‟)
Contoh Masukan dan Keluaran:
N hari yang lalu Nama Hari
0 Senin
1 Minggu
10 Jumat
20 Selasa
Algoritma:
ALGORITMA Menentukan_Nama_Hari_1

KAMUS DATA
iNHari,iBelakang : Integer
cNamaHari[15]: String

BEGIN
Input(iNHari)

iBelakang  ( iNHari + 1)

Case (iBelakang)
1: cNamaHari "Senin"
2: cNamaHari "Selasa"
3: cNamaHari "Rabu"
4: cNamaHari "Kamis"
5: cNamaHari "Jumat"
Program:
6: cNamaHari "Sabtu"
7: cNamaHari "Minggu"
Otherwise: cNamaHari  "Inputan salah"
End Case

Output(cNamaHari)

END

Anda mungkin juga menyukai