Anda di halaman 1dari 11

Praktikum Algoritma dan Pemrograman I

MODUL VIII

TRANSLASI KE BAHASA C (BAGIAN 1)

Pertemuan :9
Waktu : 2 x 60 menit (di Laboratorium)

8.1 Tujuan Modul VIII


Setelah mahasiswa mempelajari materi ini, diharapkan dapat :
1. Memahami perbedaan Bahasa Pascal dan C dalam hal tipe data dan ekspresi,
runtunan, dan pemilihan.
2. Mampu mengubah program Pascal menjadi program C untuk konsep tipe data
dan ekspresi, runtunan dan pemilihan

8.2 Landasan Teori

8.2.1 Bahasa C
Beberapa yang harus diketahui dari bahasa C adalah :
1. Bahasa C bersifat case sensitive. Ini berarti bahasa C membedakan huruf
besar (kapital) dengan huruf kecil. Nama yang ditulis dengan huruf besar
dianggap berbeda kalau ia ditulis dengan huruf kecil. Misalnya, N tidak
sama dengan n, nama_orang tidak sama dengan NAMA_ORANG,
Nama_orang, Nama_Orang. Hal ini berbeda dengan bahasa Pascal.
Pascal tidak membedakan nama yang ditulis dalam huruf besar atau huruf
kecil.
2. Dalam bahasa C, deklarasi yang didefinisikan sebelum kata main() adalah
deklarasi global, artinya semua nama yang didefinisikan di dalam
deklarasi global dikenal di seluruh bagian program, termasuk di dalam
fungsi atau prosedur yang ada di dalam program itu. Apabila deklarasi
didefinisikan di dalam main(), maka nama di bagian deklarasi (disebut
deklarasi lokal) hanya dikenal oleh program utama saja, tetapi tidak
dikenal oleh fungsi atau prosedur.
3. Dalam bahasa C, komentar ditulis diantara /* dan */. Sedangkan
dalam bahasa Pascal komentar dapat ditulis diantara { dan } atau
antara (* dan *).
4. Penulisan dan pembacaan (INPUT/OUTPUT) pada bahasa C harus disertai
dengan format sesuai tipe data yang dipakai.

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-1


Praktikum Algoritma dan Pemrograman I

Berikut ini adalah tabel translasi Algoritma ke bahasa Pascal dan C :

Notasi Algoritmik Pascal C


Struktur Penulisan
Program Nama Program program Nama Program; /* Program Nama Program
*/
Kamus data : (*Deklarasi*)
{diisi semua nama yang [const] /*Deklarasi*/
dipakai} {diisi tetapan /* semua nama yang
konstanta} penggunaannya global
Algoritma : [type] diisi di sini */
{diisi langkah-langkah {diisi nama tipe /* fungsi dan prosedur
penyelesaian masalah} bentukan} diisi di sini */

[var] /*Algoritma*/
{diisi deklarasi main()
variable global, fungsi {
dan prosedur} /*diisi dengan
deklarasi variable
(*Algoritma*) local dan semua
begin langkah-langkah
{diisi langkah-langkah penyelesaian*/
penyelesaian masalah} }
end.
Tipe dasar
boolean boolean Bool
Atau menggunakan
tipe integer, true=1
dan false=0
integer byte unsigned char
shortint signed char
word unsigned int
integer int, short int
longint long int
real real float
double double
extended long double
char char char
string string char nama_peubah[max
string[n] karakter]
Operator
+ + +
- - -
* * *
/ / /
div div /
mod mod %
< < <
< <= <=
> > >
> >= >=
= = ==
<> !=
not not !
and and &&
or or ||

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-2


Praktikum Algoritma dan Pemrograman I

xor xor Tidak ada


Lain-lain
const const const
type type typedef
true true diganti 1
false false diganti 0
Penugasan
:= =
Pembacaan
INPUT read scanf
readln
Penulisan
OUTPUT write printf
writeln
Pemilihan dengan IF-THEN-ELSE
if kondisi then if kondisi then if (kondisi)
aksi Aksi; aksi
endif
Bila aksi lebih dari Bila aksi lebih dari
1 buah : 1 buah :
if kondisi then if (kondisi)
begin {
aksi1; aksi1;
aksi2; aksi2;
... ...
aksiN; aksiN;
end; }
Pemilihan dengan IF-THEN-ELSE
if kondisi then if kondisi then if (kondisi)
aksi1 aksi1 aksi1;
else else else
aksi2 aksi2; aksi2;
endif
Pemilihan dengan CASE
case ekspresi case ekspresi of switch (ekspresi)
nilai1 : aksi1; nilai1 : aksi1; {
nilai2 : aksi2; nilai2 : aksi2; case nilai1 :
... ... aksi1;break;
nilaiN : aksiN; nilaiN : aksiN; case nilai2 :
otherwise : aksi; else aksi; aksi2;break;
endcase end; ...
case nilaiN :
aksiN; break;
default : aksi;
}

Perintah scanf dan printf dalam bahasa C harus disertai dengan format sesuai
dengan tipe data yang digunakan.Penentu format tersebut adalah :
Tipe data Format
int %d

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-3


Praktikum Algoritma dan Pemrograman I

unsigned int %u
long int %ld
long unsigned int %lu
float %f
double %lf
char %c
char[n] /* string */ %s

8.2.2 Contoh Translasi Algoritma ke bahasa


Pascal dan C
1. Konversi Mata Uang
Tulislah algoritma yang menerima input nilai mata uang Rupiah, kemudian
menghitung dan menampilkan nilai konversinya dalam mata uang US Dollar.
Nilai kurs Dollar diinputkan oleh user.

Bahasa Algoritmik Bahasa Pascal Bahasa C


Program program KonversiMataUang; #include <stdio.h>
KonversiMataUang
var float nilaiRp;
Kamus Data: nilaiRp : real; float nilaiUSD;
nilaiRp : real nilaiUSD : real; float kursUSD;
nilaiUSD : real kursUSD : real;
kursUSD : real main()
begin {
Algoritma: write('Nilai Rupiah : '); printf(Nilai Rupiah : );
INPUT(nilaiRp) readln(nilaiRp); scanf(%f, &nilaiRp);
write('Kurs US Dollar : '); printf(Kurs US Dollar );
INPUT(kursUSD) readln(kursUSD); scanf(%f, &kursUSD);
nilaiUSD := nilaiUSD = nilaiRp*kursUSD;
nilaiUSD nilaiRp/ nilaiRp*kursUSD; printf(Konversi ke US Dollar =
kursUSD write('Konversi ke US Dollar %f, nilaiUSD);
= ' ,nilaiUSD); }
OUTPUT(nilaiUSD)
readln;
end.

2. Bilangan ganjil
Buatlah algoritma dan program yang membaca sebuah bilangan bulat, lalu
mencetak tulisan ganjil jika bilangan tersebut ganjil.

Bahasa Algoritmik Bahasa Pascal Bahasa C


Program Ganjil program Ganjil; #include <stdio.h>

Kamus Data: var int bilangan;


bilangan : integer bilangan : integer;

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-4


Praktikum Algoritma dan Pemrograman I

Algoritma: main()
INPUT(bilangan) begin {
write('bilangan : '); printf(bilangan : );
IF bilangan mod 2 = 1 readln(bilangan); scanf(%d, &bilangan);
THEN if bilangan mod 2 = 1 then if (bilangan % 2 == 1)
OUTPUT(ganjil) writeln('Ganjil '); printf(Ganjil);
ENDIF readln(); }
end.

3. Bilangan Terkecil
Tulislah algoritma dan program yang membaca dua buah bilangan bulat,
kemudian menentukan bilangan terkecil.

Bahasa Algoritmik Bahasa Pascal Bahasa C


Program program Bilangan_Terkecil; #include <stdio.h>
Bilangan_Terkecil
var int bil1, bil2;
Kamus Data: bil1, bil2 : integer;
bil1, bil2 : main()
integer begin {
write('bilangan 1 : '); printf(bilangan 1 : );
Algoritma: readln(bil1); scanf(%d, &bil1);
INPUT(bil1, bil2) write('bilangan 2 : '); printf(bilangan 2 : );
readln(bil2); scanf(%d, &bil2);
IF bil1 < bil2 THEN if bil1 < bil2 then if (bil1 < bil2)
OUTPUT(bil1) writeln('bilangan terkecil: {
ELSE ',bil1) printf(bilangan terkecil : %d,
OUTPUT(bil2)
else bil1);
ENDIF
writeln('bilangan terkecil: }
',bil2); else
readln; {
end. Printf(bilangan terkecil : %d,
bil2);
}

4. Menentukan nama bulan berdasarkan nomor bulannya


Tulislah algoritma dan program yang membaca sebuah bilangan bulat
antara 1-12 kemudian tampilkan nama bulan berdasarkan inputan terhadap
program.

Bahasa Algoritmik Bahasa Pascal Bahasa C


Program Nama_Bulan program Nama_Bulan; #include <stdio.h>

Kamus Data: var int nomor_bulan;


Nomor_bulan : nomor_bulan : integer;
integer main()
begin {

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-5


Praktikum Algoritma dan Pemrograman I

Algoritma: write(Ketikkan nomor printf(Masukkan angka


INPUT(nomor_bulan) bulan (1-12) :'); bulan (1-12) : );
case nomor_bulan readln(nomor_bulan); scanf(%d,
1 : case nomor_bulan of &nomor_bulan);
OUTPUT(Januari) 1 : switch(nomor_bulan)
2 : writeln(Januari); {
OUTPUT(Februari) 2 : writeln case 1 :
3 : OUTPUT(Maret) (Februari); printf(Januari
4 : OUTPUT(April) 3 : writeln (Maret); \n);break;
5 : OUTPUT(Mei) 4 : writeln (April); case 2 : printf(Februari
6 : OUTPUT(Juni) 5 : writeln (Mei); \n);break;
7 : OUTPUT(Juli) 6 : writeln (Juni); case 3 : printf(Maret
8 : 7 : writeln (Juli); \n);break;
OUTPUT(Agustus) 8 : writeln case 4 : printf(April
9 : (Agustus); \n);break;
OUTPUT(September) 9 : writeln
case 5 : printf(Mei
10 : (September);
\n);break;
OUTPUT(Oktober) 10 : writeln
11 : (Oktober); case 6 : printf(Juni
OUTPUT(November) 11 : writeln \n);break;
12 : (November); case 7 : printf(Juli
OUTPUT(Desember) 12 : writeln \n);break;
Otherwise : (Desember); case 8 :
OUTPUT(Bukan bulan else writeln (Bukan printf(Agustus
yang benar) bulan yang benar); \n);break;
endcase end; case 9 :
end. printf(September
\n);break;
case 10 : printf(Oktober
\n);break;
case 11 :
printf(November
\n);break;
case 12 :
printf(Desember
\n);break;
default :
printf(Bukan bulan yang
benar);
}
}

5. Menghitung Gaji Mingguan


Misalkan karyawan PT. XYZ dikelompokkan berdasarkan golongannya.
Upah per jam tiap karyawan bergantung pada golongannya. Jumlah jam
kerja normal selama seminggu adalah 40 jam. Kelebihan jam kerja
dianggap lembur dengan upah lembur adalah Rp 5000/jam untuk semua
golongan karyawan. Buatlah algoritma yang membaca nama karyawan dan
jumlah jam kerjanya selama seminggu, lalu menghitung gaji
mingguannya.

Golongan Upah per jam


A 10.000

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-6


Praktikum Algoritma dan Pemrograman I

B 15.000
C 20.000

Bahasa Algoritmik Bahasa Pascal Bahasa C


Program Upah_Karyawan program Upah_Karyawan; #include <stdio.h>

Kamus Data: var char nama[25];


nama : string nama : string; char gol;
gol : char gol : char; int JJK;
JJK : integer {Jml Jam JJK : integer; int JamLembur;
Kerja JamLembur : integer; float UpahPerJam, UpahTotal;
} UpahPerJam, UpahTotal :
JamLembur : integer real; const JamKerjaNormal = 40;
UpahPerJam, UpahTotal : const JamKerjaNormal = 40; const UpahLembur = 500;
real const UpahLembur = 500;
const JamKerjaNormal = 40 main()
const UpahLembur = 5000
begin {
Algoritma:
write('Nama : '); printf(Nama :);
readln(nama); scanf(%s, &nama);
INPUT(nama, gol, JJK)
write('Golongan : '); printf(Golongan :);
readln(gol); scanf(%c, &gol);
CASE (gol) write('Jumlah Jam Kerja : printf(Jumlah Jam Kerja :);
A : UpahPerJam '); scanf(%d, &JJK);
10000 readln(JJK); switch(gol)
B : UpahPerJam case gol of {
15000 'A' : UpahPerJam := case A : UpahPerJam =
C : UpahPerJam 1000; 1000; break;
20000 'B' : UpahPerJam := case B : UpahPerJam =
ENDCASE 1500; 1500; break;
'C' : UpahPerJam := case C : UpahPerJam =
IF JJK JamNormal THEN 2000; 2000; break;
UpahTotal JJK * end; }
UpahPerJam
ELSE if JJK <= JamKerjaNormal If (JJK <= JamKerjaNormal)
JamLembur JJK then {
JamKerjaNorm UpahTotal := UpahTotal =
al JJK*UpahPerJam JJK*UpahPerJam;
UpahTotal else }
JamKerjaNormal*UpahPerJ begin else
am + JamLembur := JJK - {
JamLembur*UpahLembur JamKerjaNormal; JamLembur = JJK
ENDIF UpahTotal := JamKerjaNormal;
OUTPUT(Nama,UpahTotal) JamKerjaNormal*Upa UpahTotal =
hPerJam + JamKerjaNormal*UpahPerJam
JamLembur*UpahLem + JamLembur*UpahLembur;
bur; }
end;
writeln('Upah ',Nama,' printf(Upah %s adalah
adalah ', UpahTotal); %f,nama,UpahTotal);
readln; }
end.

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-7


Praktikum Algoritma dan Pemrograman I

8.3Praktikum VIII
8.3.1 Tugas Pendahuluan VIII

1. Tuliskan rumus berikut dalam notasi algoritma kemudian buat programnya


dalam bahasa C :

a.

b.

c.
2. Buat algoritma dan program dalam bahasa C untuk menghitung nilai akhir
dari seorang mahasiswa dengan rumus:
Nilai Akhir = 30%UAS + 25%UTS + 15% Quiz + 15% Tugas +
15%Kehadiran
3. Buatlah algoritma dan program dalam bahasa C untuk menukar tiga buah
bilangan bulat x, y, z. Aturan penukaran tiga bilangan tersebut, yaitu: x diisi
dengan nilai y, y diisi dengan nilai z, dan z diisi dengan nilai x.
INPUT: nilai x, nilai y, nilai z
Contoh: x=2, y=3, z=4
OUTPUT: nilai x, nilai y, nilai z setelah ditukar
Contoh: x=3, y=4, z=2
4. Buatlah algoritma dan program dalam bahasa C untuk menukar nilai uang
kelipatan 100 menjadi pecahan 100, 1000, dan 5000. Contoh, uang bernilai
6600 apabila dipecah akan menghasilkan 1 buah pecahan 5000, 1 buah
pecahan 1000, dan 6 buah pecahan 100. Contoh:
INPUT: nilai uang = 7500
OUTPUT: pecahan 5000 = 1, pecahan 1000 = 2, pecahan 100 = 5
5. Buatlah algoritma dan program dalam bahasa C untuk menampilkan mata
kuliah yang harus di remedial berdasarkan nilai uts nya. Ada 5 nilai mata
kuliah sebagai masukan, yaitu: Alpro, SBO, RTI, Bahasa Indonesia, dan
Pancasila. Jika ada nilai yang kurang dari 50, maka sebutkan mata kuliah yang
harus di remedial.
INPUT Masukkan nilai Alpro : 70
Masukkan nilai SBO : 70
Masukkan nilai RTI : 70
Masukkan nilai Bahasa Indonesia : 70
Masukkan nilai Pancasila : 70
OUTPUT Anda tidak mendapat remedial
INPUT Masukkan nilai Alpro : 70
Masukkan nilai SBO : 45
Masukkan nilai RTI : 70
Masukkan nilai Bahasa Indonesia : 70
Masukkan nilai Pancasila : 70

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-8


Praktikum Algoritma dan Pemrograman I

OUTPUT Anda mendapat remedial : SBO


INPUT Masukkan nilai Alpro : 30
Masukkan nilai SBO : 45
Masukkan nilai RTI : 70
Masukkan nilai Bahasa Indonesia : 70
Masukkan nilai Pancasila : 50
OUTPUT Anda mendapat remedial : Alpro SBO -
Pancasila

6. Buatlah algoritma dan program dalam bahasa C untuk membuat kalkulator


terhadap dua bilangan menggunakan menu sebagai berikut :
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
INPUT / OUTPUT Kalkulator
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
Masukkan nomor menu : 1
Menu Tambah
Masukkan angka 1 : 5
Masukkan angka 2 : 6
Hasil : 11
7.

8.3.2 Latihan-latihan Praktikum VIII

1. Kasus 01

A. Buat program bahasa C untuk mengkonversi nilai derajat Celcius


menjadi nilai derajat Kelvin.
B. Buat program bahasa C untuk mengkonversi nilai derajat Celcius
menjadi nilai derajat Fahrenheit.
C. Buat program bahasa C untuk mengkonversi nilai derajat Fahrenheit
menjadi nilai derajat Celcius.

2. Kasus 02
A. Sebuah proyek dikerjakan selama x hari. Tulislah dalam program bahasa
C untuk mengkonversi berapa tahun, berapa bulan dan berapa hari

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-9


Praktikum Algoritma dan Pemrograman I

proyek tersebut dikerjakan. Asumsikan 1 tahun = 365 hari, 1 bulan = 30


hari.
INPUT: hari
OUTPUT: tahun, bulan, hari

B. Buatlah program berbahasa C untuk menentukan tahun kabisat. Tahun


kabisat adalah tahun dimana jumlah hari di bulan februari adalah 29.
Penentuannya dilakukan dengan membagi tahun dengan angka 4. Jika
tahun habis dibagi 4 maka tahun tersebut adalah tahun kabisat.
INPUT: tahun
OUTPUT: Keterangan Tahun Kabisat atau Bukan Tahun Kabisat
C. Buatlah program bahasa C untuk menentukan seorang warga sudah
berhak untuk membuat KTP atau belum berdasarkan usia. Syarat usia
minimal untuk membuat KTP adalah 17 tahun.
INPUT: usia
OUTPUT: Keterangan Berhak membuat KTP atau Belum berhak
membuat KTP

3. Kasus 03

A. Sebuah perusahaan meminta anda sebagai programmer yang sudah


sangat terkenal untuk membuatkan program penghitungan gaji karyawan
di perusahaan tersebut, dengan ketentuan :
Gaji Pokok berdasarkan golongan
Golongan Gaji Pokok
1 500
2 1000
3 1500
4 2000
Bonus diberikan kepada pegawai berdasarkan masa kerja
Masa Kerja Bonus
3 50
6 75
>7 100
Jika sudah menikah maka tunjangan keluarganya sebesar 10% dari gaji
pokok
Jika sudah menikah dan mempunyai anak (maksimal 3 orang) akan
mendapat tunjangan anak sebesar 12.5% per anak
Rumus perhitungan gajinya menjadi: Gaji = Gaji Pokok + Bonus +
tunjangan keluarga + tunjangan anak
B. Sebuah rumah sakit meminta anda untuk membuat program perhitungan
tagihan kamar pasien untuk rawat inap. Tagihan tersebut dihitung
berdasarkan ruangan tempat menginap dan kategori pasien tersebut
umum, anak-anak, atau bayi yang dibedakan berdasarkan usia. Berikut
tarif kamar per hari berdasarkan jenis kamarnya :

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-10


Praktikum Algoritma dan Pemrograman I

Golongan Kamar Tarif/hari


Kelas 1 600.000
Kelas 2 400.000
Kelas 3 200.000
Sedangkan penentuan kategori pasien berdasarkan usia adalah sebagai
berikut:
Kategori pasien Usia Charge
Umum >=17 tahun 500.000
Anak-anak 6-16 tahun 700.000
Bayi 0-5 tahun 1.000.000
Jika pasien tersebut merupakan pasien BPJS, maka total tagihan akan
didiskon sebesar 30%.
Maka Rumus untuk total tagihan adalah:
Total tagihan = (tarif kamar jumlah hari) + charge - diskon

8.3.3 Tugas Rumah VIII


Tugas Rumah VII ini hanya untuk praktikan yang belum menyelesaikan seluruh
soal Latihan Praktikum VIII.
1. Kerjakan sisa soal Latihan Praktikum yang belum selesai di luar jam
praktikum.
2. Buat laporan praktikum berdasarkan hasil pada praktikum pertemuan pertama
ini. Laporan tersebut berisi:
a. Soal latihan praktikum
b. Solusi dengan menggunakan algoritma
c. Solusi program dengan menggunakan bahasa C
d. Screenshot hasil eksekusi program
Keempat poin tersebut disusun per nomor soal latihan.

Jangan lupa mengumpulkannya ke asisten/instruktur maksimal 1x24 jam


setelah praktikum VIII berakhir.

Perhatikan bahwa laporan ini harus merupakan hasil karya sendiri. Kesamaan
seluruh/sebagian isi laporan dengan mahasiswa lain akan mengakibatkan nilai
laporan menjadi Nol.

Laboratorium Software Engineering Versi/Revisi : 2/1 Halaman : 8-11

Anda mungkin juga menyukai