Perhatikan deklarasi variabel berikut :
Bentuk umum deklarasi suatu variabel berjenis record adalah sbb :
merupakan Struktur data yang menampung beberapa data yang tipenya dapat berlainan.
Tanda semicolon “ ; ” digunakan untuk mengakhiri sebuah pernyataan.
Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis komentar, yaitu:
Fungsi ini menjadi awal dan akhir eksekusi program C++. main adalah nama judul fungsi.
Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama berada didalam fungsi main().
Berarti dalam setiap pembuatan program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal sebuah fungsi.
Pembahasan lebih lanjut mengenai fungsi akan diterangkan kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama kita didalam sebuah fungsi main().
Adalah salah satu pengarah prepocessor directive yang tersedia pada C++.Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi.
Bahasa C merupakan pengembangan dari bahasa B yang ditulis oleh Ken Thompson pada tahun 1970. Bahasa C untuk pertama kali ditulis oleh Brian W. Kernighan dan Denies M.Ricthie pada tahun 1972. Bahasa C, pada awalnya dioperasikan diatas sistem operasi UNIX.
Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya. Pencipta C adalah Brian W.Kerninghan dan Dennis M.Ritchie pada sekitar tahun 1972, dan sekitar satu dekade setelahnya di ciptakanlah C++, oleh Bjarne Stroustrup dari Laboratorium Bell, AT&T,pada tahun 1983. C++ cukup kompatibel dengan bahasa pendahulunya C.
Pada mulanya C++ disebut “ a better C “. Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasal dari operator increment pada bahasa C. Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini mendukung pemrograman yang berorientasi objek ( OOP / Object Oriented Programming).
Suatu konsep dasar yag harus dipahami
dengan baik dalam teknik looping adalah berapa jumlah perulangan proses yang
terjadi harus diketahui dengan baik, karena kekurangan atau kelebihan langkah
akan mengakibatkan tidak validnya suatu perhitungan dalam sebuah loop.
Dalam sebuah perulangan yang harus ditentukan
pertama kali adalah kapan sebuah loop harus mulai atau start, dan kapan suatu
loop harus berakhir atau dengan kata lain loop sudah berhenti berproses. Untuk
pergerakan dari titik awal sampai pada titik akhir, maka diperlukan suatu step
untuk mengontrol nilai pergerakan dari suatu loop. Step yang diijinkan boleh
bernilai positif ataupun negative.
Persyaratan lain adalah jika menggunakan
step naik atau positif, maka nilai awal harus lebih kecil daripada nilai
akhirnya dan sebaliknya jika menggunakan step negative atau menurun harus
menggunakan nilai awal lebih besar daripada nilai akhirnya. Hal ini disebabkan
jika persyaratan tersebut tidak dipenuhi maka loop tidak akan pernah berakhir,
artinya algoritma tersebut tidak akan pernah berakhir dan ini menyalahi dari
definisi algoritma. Dengan kata lain jika dikodekan dalam bahasa pemrograman,
maka proses tidak akan pernah berhenti.
Jika sudah dapat menentukan nilai awal,
nilai akhir dan stepnya, maka langkah berikutnya harus dapat menghitung berapa
jumlah perulangan yang terjadi. Dalam banyak kasus nilai awal loop tidak selalu
bernilai satu dan tidak selalu berakhir dengan angka fixed yang kadang justru
berakhir dengan suatu variabel yang menunjukkan fleksibilitasnya.
Misalkan:
Untuk nilai awal 1, dan nilai akhir 5, dengan step +1, maka dapat diketahui jumlah perulangan sebanyak 5 kali.
Untuk nilai awal 1 dan untuk nilai akhir n, dengan step +1, dapat diketahui jumlah perulangan sebanyak n.
Jika nilai awal adalah 5 dan nilai akhir
adalah n, maka berapakah jumlah perulangan yang terjadi ?
Untuk menjawab permasalahan tersebut, maka
yang harus diasumsikan nilai awal harus selalu nol dengan melakukan manipulasi
penjumlahan dan atau pengurangan. Tentu saja tanpa mengubah batasan loop yang
sesungguhnya, ini hanya asumsi saja.
Jadi jika nilai awal berubah menjadi 1,
maka itu hasil dari 5-4, sehingga batas akhirnya n-4 juga. Oleh karena nilai
awal 1 dan nilai akhir n-4, maka jumlah perulangan yang terjadi adalah n-4
kali, demikian juga untuk kasus – kasus yang lainnya.
SOAL :
1. Jika
nilai awal adalah 4 dan nilai akhirnya adalah n-3, maka hitung jumlah
perulangannya jika stepnya +1?
2. Jika
nilai awal adalah m dan nilai akhir adalah n-2, maka tentukan jumlah
perulangannya jika stepnya +1 ?
Dalam bahasa pemrograman memiliki beberapa
teknik loop baik menggunakan decision ataupun menggunakan loop standar seperti
Loop for, loop while, loop repeat dan seterusnya tergantung dari jenis bahasa
pemrograman yang digunakan. Tetapi secara prinsip konsep logika loop untuk tiap
bahasa pemrograman berbeda adalah sama.
1. Loop dengan decision.
2. Loop for.
3. Loop while.
4. Loop repeat.
5. Nested loop for.
6. Nested loop compound.
Struktur seleksi dibagi menjadi 4 bagian yaitu :
1. Sruktur
seleksi sederhana (if-then)
2. Sruktur
seleksi umum (if – then – else)
3. Sruktur
seleksi tersarang (nested if )
4. Struktur
Case-of
Struktur seleksi sederhana
(if-then)
Bentuk ini merupakan bentuk yang paling
sederhana dari keseluruhan struktur seleksi yang ada. Pada bentuk ini, hanya
jika komparasi memiliki nilai true saja yang akan diikuti oleh suatu proses
khusus.
Syntax :
If (kondisi) then
Blok
statemen untuk kondisi bernilai true
Endif
Contoh:
If ( masa_kerja > 5 ) then
Bonus
:= 50000
Gapok
:= gapok+bonus
Cetak gapok
Endif
Cetak gapok
Dari contoh tersebut dapat dijelaskan, jika
masa kerja karyawan lebih besar 5 tahun, maka akan mendapatkan bonus sebesar
50000 dan gaji pokok yang didapatkan merupakan jumlahan dari gaji pokoknya
dengan bonus yang dia peroleh, tetapi jika komparasi menghasilkan false, maka
gaji pokok yang didapatkan karyawan hanya gaji pokok saja.
Untuk lebih detilnya diberikan contoh dalam
bahasa pascal berikut ini:
Struktur seleksi umum (
if-then-else)
Pada bentuk kedua ini, baik pada kondisi
bernilai true ataupun false diikuti oleh proses khusus tetapi yang harus
diperhatikan bahwa roses khusus pada keadaan true tidak mungkin akan diproses
pada keadaan false dan sebaliknya.
Syntax :
If (kondisi) then
Blok
statemen untuk kondisi bernilai true
Else
Blok
statetemn untuk kondisi bernilai false
endif
Contoh:
If ( masa_kerja > 5 ) then
Bonus
:= 150000
Else
Bonus
:= 0
ENDIF
Gapok
:= gapok+bonus
Cetak gapok
Dengan mengacu pada contoh sebelumnya
terlihat bahwa penggunaan bentuk yang kedua lebih terlihat luwes dalam struktur
algoritmanya dibandingkan dengan penggunaan pada struktur pertama.
Pada kasus ini jika masa kerja lebih besar
5 tahun bernilai true maka karyawan akan mendapatkan bonus sebesar 50000
sedangkan karyawan dengan masa kerja kurang dari atau sama dengan 5 tahun tidak
mendapatkan bonus, sehingga begitu keluar dari struktur decision maka akan
terlihat isi variabel bonus dapat 0 atau 50000 tergantung dari masa kerja
karyawan.
Algoritma tersebut dapat dimodifikasi
dengan bentuk alternatifnya seperti berikut ini :
If ( masa_kerja <= 5 ) then
Bonus
:= 0
Else
Bonus
:= 150000
ENDIF
Gapok
:= gapok+bonus
Cetak gapok
Maka terlihatlah bahwa kedua algoritma
tersebut memiliki kesamaan nilai logika. Sehingga setiap orang bebas memilih
menggunakan algoritma yang akan digunakan.
Lebih jelasnya akan dijabarkan dalam suatu
program dalam bahasa pascal berikut ini:
uses wincrt;
var
nama : string;
masa_kerja, gapok,tmk, bonus :
real;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('Masukkan gaji pokok : ');
readln(gapok);
masa_kerja := 2005 - tmk;
if
(masa_kerja > 5 ) then
bonus := 50000
else
bonus := 0;
gapok := gapok + bonus;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Eksekusi dari program tersebut di atas akan
menghasilkan keluaran seperti berikut ini :
Atau kalau dirubah dalam bentuk
alternatifnya program menjadi :
uses wincrt;
var
nama : string;
masa_kerja, gapok,tmk, bonus :
real;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('Masukkan gaji pokok : ');
readln(gapok);
masa_kerja := 2005 - tmk;
if
(masa_kerja <= 5) then
bonus := 0
else
bonus := 50000;
gapok := gapok + bonus;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Dan keluarannya adalah :
Dari program terlihat jelas bahwa kedua
algoritma tersebut memberikan hasil yang sama, artinya keduanya dapat dipilih
salah satu sebagai suatu solusi penyelesaian masalah.
Kasus :
Sebuah perusahaan akan menghitung gaji
karyawan dengan ketentuan sebagai berikut:
a. Gaji
pokok berdasarkan golongan.
|
GOLONGAN |
GAJI POKOK |
|
1 |
1000000 |
|
2 |
750000 |
|
3 |
500000 |
b. Bonus
diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000.
c. Gaji
= gaji pokok + bonus.
Solusi :
Read(nama,nip,tahun_masuk_kerja,golongan)
If golongan = 1 then
Gaji_pokok
:= 1000000
Else
If
golongan = 2 then
Gaji_pokok
:= 750000
Else
Gaji_pokok
:= 500000
Endif
Endif
Masa_kerja = 2005 – tahun_masuk_kerja
If masa_kerja >= 5 then
Bonus
:= 150000
Else
Bonus
:= 0
Endif
Gaji:=gaji_pokok + bonus
Write(nama,nip,gaji_pokok,bonus,gaji)
Dari Algoritma tersebut dapat dijabarkan
dalam pengkodean Bahasa Pascal sebagai berikut :
uses wincrt;
var
nama, nip : string;
masa_kerja, gapok,tmk, bonus :
real;
gol :
integer;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('MAsukkan NIP :
');
readln(nip);
write('Masukkan Golongan
readln(gol);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
if
( gol =1 ) then
gapok := 1000000
else
if (gol=2) then
gapok := 750000
else
gapok := 500000;
masa_kerja
:= 2005 - tmk;
if
(masa_kerja > 5 ) then
bonus := 150000
else
bonus := 0;
gapok := gapok + bonus;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Sedangkan untuk keluarannya adalah sebagai
berikut :
Pada kasus terakhir untuk bentuk decision
sebenarnya sudah menggunakan struktur seleksi tersarang untuk lebih detailnya
akan dibahas berikut ini.
Struktur seleksi tersarang (nested
if )
Bentuk ketiga merupakan bentuk yang tidak
memiliki struktur khusus, artinya keadaannya sangat bergantung dari kasus atau
permasalahan yang terjadi.
Yang dapat digunakan sebagai sandaran
adalah apabila salah satu pohon keputusan baik true ataupun false diikuti oleh
struktur seleksi lainnya maka bentuk itulah yang dikatakan struktur seleksi
tersarang. Artinya suatau struktur seleksi akan diproses apabila struktur
seleksi di atasnya ada.
Contoh 1 :
If
(kondisi 1) then
If
(kondisi 2) then
Statemen
1
Else
Statemen
2
Endif
Else
Statemen
3
Endif
Bentuk kondisi 2 tersarang pada kondisi 1 artinya
bahwa kondisi 2 akan dikerjakan sangat bergantung dari kondisi 1 khususnya jika
bernilai true.
Contoh 2 :
If (kondisi 1 ) then
Statemen
1
Else
If
(kondisi 2) then
Statemen
2
Else
Statemen
3
Endif
Endif
Kondisi 2 tersarang pada kondisi 1
khususnya jika kondisi 1 bernilai false, artinya kondisi 2 akan diroses atau
tidak bergantung pada hasil komparasi pada kondisi 1. Untuk lebih jelasnya statemen
3 akan diproses jika kondisi 1 false dan kondisi 2 false. Statemen 2 akan
diproses jika kondisi 1 false dan kondisi 2 true dan seterusnya.
Contoh 3:
If (kondisi 1 ) then
If
(kondisi 2) then
Statemen
1
Else
Statemen
2
Endif
Else
If
(kondisi 3) then
Statemen
3
Else
Statemen
4
Endif
Endif
Kondisi 2 tersarang dengan kondisi 1 untuk
keadaan bernilai true dan kondisi 3 tersarang dengan kondisi 1 untuk keadaan
bernilai false. Statemen 4 akan dikerjakan jika kondisi 1 false dan kondisi 3
false, statemen 1 akan dikerjakan jika kondisi 1 true dan kondisi 2 true dan
seterusnya.
Contoh 4:
If (kondisi 1 ) then
Statemen
1
Else
Statemen
2
Endif
If (kondisi 2) then
Statemen
3
Else
Statemen
4
Endif
Dari kedua decision tersebut keduanya
adalah saling bebas, artinya tidak tersarang meskipun kedua decision
berdekatan.
Decision tersarang jika suatu decision
berada dalam decision yang lainnya.
KASUS :
Sebuah perusahaan akan menghitung gaji
karyawan dengan ketentuan sebagai berikut:
1. Gaji
pokok berdasarkan golongan :
|
GOLONGAN |
GAJI POKOK |
|
1 |
1000000 |
|
2 |
750000 |
|
3 |
500000 |
2. Status
1 artinya menikah, 2 artinya janda atau duda dan 3 belum menikah.
3. Bonus
diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000.
4. Tunjangan
menikah diberikan pada karyawan yang menikah sebesar 10 % dari gaji Pokok bagi
karyawan yang statusnya menikah.
5. Tunjangan
anak diberikan pada karyawan yang statusnya menikah dan maksimal jumlah anak 3
sebesar 12.5 % dari gaji pokok per anak.
6. Gaji
= gaji pokok + bonus + tunjangan menikah + tunjangan anak.
Solusi :
Read(nama,nip,status,janak,tahun_masuk_kerja,golongan)
If golongan = 1 then
Gaji_pokok
:= 1000000
Else
If
golongan = 2 then
Gaji_pokok
:= 750000
Else
Gaji_pokok
:= 500000
Endif
Endif
Masa_kerja = 2005 – tahun_masuk_kerja
If masa_kerja >= 5 then
Bonus
:= 150000
Else
Bonus
:= 0
Endif
If status 3 then
T_menikah
:= 0
T_anak := 0
Else
If
janak > 3 then
T_anak
:= 0.125 * 3 * gaji_pokok
T_menikah
:= 0.1 * gaji_pokok
Else
T_anak
:= janak * 0.125 * gaji_pokok
T_menikah
:= 0.1 * gaji_pokok
ENDIF
ENDIF
Gaji:=gaji_pokok + bonus +T_menikah + T_anak
Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)
Algoritma tersebut dapat dikodekan dalam
bahasa pascal sebagai berikut ini :
uses wincrt;
var
nama,
nip : string;
masa_kerja, gapok,tmk, bonus :
real;
t_menikah,t_anak :
real;
gol,status,janak :
integer;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('MAsukkan NIP :
');
readln(nip);
write('Masukkan Golongan
readln(gol);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('MAsukkan status
readln(status);
write('Masukkan jumlah anak : ');
readln(janak);
if
( gol =1 ) then
gapok := 1000000
else
if (gol=2) then
gapok := 750000
else
gapok := 500000;
masa_kerja := 2005 - tmk;
if
(masa_kerja >= 5 ) then
bonus := 150000
else
bonus := 0;
if
(status = 3) then
begin
t_menikah := 0;
t_anak :=0;
end
else
if (janak > 3 ) then
begin
t_menikah := 0.1 * gapok;
t_anak := 3 * gapok * 0.125;
end
else
begin
t_menikah := 0.1 * gapok;
t_anak := janak * gapok * 0.125;
end;
gapok := gapok + bonus + t_menikah + t_anak;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Sedangkan hasil eksekusinya dapat dilihat seperti gambar berikut ini :
Pada kasus di atas, program dapat
disederhanakan, khususnya dalam inputan jumlah anak. Idealnya jika statusnya
belum menikah maka jumlah anak tidak perlu diinputkan dan secara otomatis
jumlah anak terisi 0.
Algoritmanya menjadi sebagai berikut ini:
Read(nama,nip,tahun_masuk_kerja,golongan)
Read(status)
If status = 3 then
Write(janak
=0)
Else
Read(janak)
endif
If golongan = 1 then
Gaji_pokok
:= 1000000
Else
If
golongan = 2 then
Gaji_pokok
:= 750000
Else
Gaji_pokok
:= 500000
Endif
Endif
Masa_kerja = 2005 – tahun_masuk_kerja
If masa_kerja >= 5 then
Bonus
:= 150000
Else
Bonus
:= 0
Endif
If status 3 then
T_menikah
:= 0
T_anak := 0
Else
If
janak > 3 then
T_anak
:= 0.125 * 3 * gaji_pokok
T_menikah
:= 0.1 * gaji_pokok
Else
T_anak
:= janak * 0.125 * gaji_pokok
T_menikah
:= 0.1 * gaji_pokok
ENDIF
ENDIF
Gaji:=gaji_pokok + bonus +T_menikah + T_anak
Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)
Sedangkan pengkodean dalam bahasa pascal
menjadi seperti berikut ini :
uses wincrt;
var
nama, nip :
string;
masa_kerja, gapok,tmk, bonus :
real;
t_menikah,t_anak :
real;
gol,status,janak :
integer;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('MAsukkan NIP :
');
readln(nip);
write('Masukkan
Golongan
readln(gol);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('MAsukkan status
readln(status);
if
(status=3) then
writeln('Jumlah anak = 0')
else
begin
write('Masukkan jumlah anak : ');
readln(janak);
end;
if
( gol =1 ) then
gapok := 1000000
else
if (gol=2) then
gapok := 750000
else
gapok := 500000;
masa_kerja := 2005 - tmk;
if
(masa_kerja >= 5 ) then
bonus := 150000
else
bonus := 0;
if
(status = 3) then
begin
t_menikah := 0;
t_anak :=0;
end
else
if (janak > 3 ) then
begin
t_menikah := 0.1 * gapok;
t_anak := 3 * gapok * 0.125;
end
else
begin
t_menikah := 0.1 * gapok;
t_anak := janak * gapok * 0.125;
end;
gapok := gapok + bonus + t_menikah + t_anak;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Hasil eksekusinya sebagai berikut ini :
Bentuk Case-of
Bentuk lain dari suatu model seleksi adalah
bentuk case-of, di mana pada bentuk ini tidak dilakukan pengujian true atau
false, tetapi suatu proses sudah dikelompokkan berdasarkan pilihan yang sudah
ditetapkan.
Syntax :
Case pilihan of
1: statemen 1
2 :
statemen 2
3 :
statemen 3
dan seterusnya.
ENDCASE
KASUS:
Sebuah perusahaan akan menghitung gaji
karyawan dengan ketentuan sebagai berikut:
a. Gaji
pokok berdasarkan golongan
|
GOLONGAN |
GAJI POKOK |
|
1 |
1000000 |
|
2 |
750000 |
|
3 |
500000 |
b. Status
1 artinya menikah, 2 artinya janda atau duda dan 3 belum menikah.
c. Bonus
diberikan pada karyawan yang masa kerjanya minimal 5 tahun sebesar 150000
d. Tunjangan
menikah diberikan pada karyawan yang menikah sebesar 10 % dari gaji Pokok bagi
karyawan yang statusnya menikah
e. Tunjangan
anak diberikan pada karyawan yang statusnya menikah dan maksimal jumlah anak 3
sebesar 12.5 % dari gaji pokok per anak
f. Gaji
= gaji pokok + bonus + tunjangan menikah + tunjangan anak
Solusi :
Read(nama,nip,status,janak,tahun_masuk_kerja,golongan)
CASE
golongan OF
1 :
gaji_pokok := 1000000
2 :
gaji_pokok := 750000
3 :
gaji_pokok := 500000
endcase
Masa_kerja = 2005 – tahun_masuk_kerja
If masa_kerja >= 5 then
Bonus
:= 150000
Else
Bonus
:= 0
Endif
If status 3 then
T_menikah
:= 0
T_anak := 0
Else
If
janak > 3 then
T_anak
:= 0.125 * 3 * gaji_pokok
Else
T_anak
:= janak * 0.125 * gaji_pokok
ENDIF
ENDIF
Gaji:=gaji_pokok + bonus +T_menikah + T_anak
Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)
Pengkodean algoritma tersebut dalam pascal
menjadi :
uses wincrt;
var
nama, nip :
string;
masa_kerja, gapok,tmk, bonus :
real;
t_menikah,t_anak :
real;
gol,status,janak :
integer;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('MAsukkan NIP :
');
readln(nip);
write('Masukkan Golongan
readln(gol);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('MAsukkan status
readln(status);
write('Masukkan jumlah anak : ');
readln(janak);
case gol of
1 : gapok := 1000000;
2 : gapok := 750000;
3 : gapok := 500000;
end;
masa_kerja := 2005 - tmk;
if
(masa_kerja >= 5 ) then
bonus := 150000
else
bonus := 0;
if
(status = 3) then
begin
t_menikah := 0;
t_anak :=0;
end
else
if (janak > 3 ) then
begin
t_menikah := 0.1 * gapok;
t_anak := 3 * gapok * 0.125;
end
else
begin
t_menikah := 0.1 * gapok;
t_anak := janak * gapok * 0.125;
end;
clrscr;
writeln('Nama Karyawan :
',nama);
writeln('N I P :
',nip);
writeln('Gaji Pokok :
',gapok:7:0);
writeln('Bonus :
',bonus:5:0);
writeln('Tunjangan Menikah : ',t_menikah:7:0);
writeln('Tunjangan Anak :
',t_anak:7:0);
gapok := gapok + bonus + t_menikah + t_anak;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Hasil eksekusi
terlihat seperti berikut ini:
Algoritma tersebut dimodifikasi menjadi
bentuk seperti berikut ini :
Read(nama,nip,tahun_masuk_kerja,golongan)
Read(status)
If status = 3 then
Janak
:= 0
Else
Read(janak)
endif
CASE
golongan OF
1 :
gaji_pokok := 1000000
2 :
gaji_pokok := 750000
3 :
gaji_pokok := 500000
endcase
Masa_kerja = 2005 – tahun_masuk_kerja
If masa_kerja >= 5 then
Bonus
:= 150000
Else
Bonus
:= 0
Endif
If status 3 then
T_menikah
:= 0
T_anak := 0
Else
If
janak > 3 then
T_anak
:= 0.125 * 3 * gaji_pokok
Else
T_anak
:= janak * 0.125 * gaji_pokok
ENDIF
ENDIF
Gaji:=gaji_pokok + bonus +T_menikah + T_anak
Write(nama,nip,gaji_pokok,bonus,t_menikah,t_anak,gaji)
Kemudian dikodekan dalam bahasa pascal
menjadi:
uses wincrt;
var
nama, nip :
string;
masa_kerja, gapok,tmk, bonus :
real;
t_menikah,t_anak :
real;
gol,status,janak :
integer;
begin
clrscr;
write('Masukkan nama Karyawan : ');
readln(nama);
write('MAsukkan NIP :
');
readln(nip);
write('Masukkan Golongan
readln(gol);
write('Masukkan tahun masuk kerja : ');
readln(tmk);
write('MAsukkan status
readln(status);
if
(status=3) then
writeln('Jumlah anak = 0')
else
begin
write('Masukkan jumlah anak : ');
readln(janak);
end;
case gol of
1 : gapok := 1000000;
2 : gapok := 750000;
3 : gapok := 500000;
end;
masa_kerja := 2005 - tmk;
if
(masa_kerja >= 5 ) then
bonus := 150000
else
bonus := 0;
if
(status = 3) then
begin
t_menikah := 0;
t_anak :=0;
end
else
if (janak > 3 ) then
begin
t_menikah := 0.1 * gapok;
t_anak := 3 * gapok * 0.125;
end
else
begin
t_menikah := 0.1 * gapok;
t_anak := janak * gapok * 0.125;
end;
clrscr;
writeln('Nama Karyawan :
',nama);
writeln('N I P :
',nip);
writeln('Gaji Pokok :
',gapok:7:0);
writeln('Bonus :
',bonus:5:0);
writeln('Tunjangan Menikah : ',t_menikah:7:0);
writeln('Tunjangan Anak : ',t_anak:7:0);
gapok := gapok + bonus + t_menikah + t_anak;
writeln('Gaji Total : ',gapok:8:0);
readln;
end.
Hasil eksekusi Program sebagai berikut ini:
Akhmad Dul Ikhsan
Mei 01, 2022











