Tugas Pendahuluan 9 - Mirza Aryanshah - 4062110012 - Teknikinformatika
Tugas Pendahuluan 9 - Mirza Aryanshah - 4062110012 - Teknikinformatika
3. Buat algoritma dan Bahasa C untuk penghitungan gaji karyawan berikut, sehingga bisa
menangani lebih dari 1 karyawan tanpa perlu keluar dari program. Buat 2 versi
algoritma menggunakan looping WHILE-DO dan REPEAT-UNTIL!
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
Golonga Gaji
n Pokok
1 500
2 1000
3 1500
4 2000
• Bonus diberikan kepada pegawai berdasarkan masa kerja
Masa Bonus
Kerja
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
Bahasa Algoritmik(REPEAT) Bahasa C(REPEAT)
Judul : GajiKaryawan #include <stdio.h>
Kamus : float
Gaji,GajiPokok,Bonus,tunjangankelua Gaji,GajiPokok,Bonus,tunjanganke
rga,tunjangananak:real luarga,tunjangananak;
masakerja,Golongan,punyaanak : real int masakerja,Golongan,
menikah, ul : Character punyaanak;
Algoritma : char menikah, ul;
REPEAT main()
INPUT(Golongan) {
CASE(Golongan) do{
1: GajiPokok ← 500 printf("Golongan = Gaji
2: GajiPokok ← 1000 Pokok :\n");
3: GajiPokok ← 1500 printf("1.) 1 = 500\n");
4: GajiPokok ← 2000 printf("2.) 2 = 1000\n");
ENDCASE printf("3.) 3 = 1500\n");
INPUT(masakerja) printf("4.) 4 = 2000\n");
IF(masakerja = 3)THEN printf("Pilih No.
Bonus ← 50 ");scanf("%d",&Golongan);
ENDIF switch(Golongan)
IF(masakerja = 6)THEN {
Bonus ← 75 case 1:
ENDIF GajiPokok = 500;
IF(masakerja > 6)THEN break;
Bonus ← 100 case 2:
ENDIF GajiPokok = 1000;
INPUT(menikah) break;
IF(menikah = 'y' or menikah = 'Y') case 3:
THEN GajiPokok = 1500;
tunjangankeluarga ← break;
((10/100)*GajiPokok) case 4:
INPUT(punyaanak) GajiPokok = 2000;
IF(punyaanak <= 3)THEN break;
tunjangananak ← }
((12.5/100)*punyaanak)*GajiPokok printf("Masa kerja(tahun) :
ENDIF ");scanf("%d",&masakerja);
Gaji ← GajiPokok + Bonus + if( masakerja == 3 )Bonus =
tunjangankeluarga + tunjangananak 50;
ELSE if( masakerja == 6 )Bonus =
IF(menikah = 'n' or menikah = 75;
'N')THEN if( masakerja > 6 )Bonus =
Gaji ← GajiPokok + Bonus 100;
ENDIF printf("\nSudah menikah ?
OUTPUT(Gaji) (y/n) :");
INPUT(ul) fflush(stdin);
UNTIL ul = ‘y’ or ul = ‘Y’ scanf("%s", &menikah);
if( menikah == 'y' || menikah ==
'Y')
{
tunjangankeluarga =
((10/100)*GajiPokok);
printf("\nSudah Mempunyai
anak berapa(Maks. 3) :
");scanf("%d",&punyaanak);
if( punyaanak <= 3 )
{
tunjangananak =
((12.5/100)*punyaanak)*GajiPokok
;
}
Gaji = GajiPokok + Bonus +
tunjangankeluarga +
tunjangananak;
} else
if(menikah == 'n' || menikah ==
'N')
{
Gaji = GajiPokok + Bonus;
}
printf("\nGaji Karyawan :
%0.2f\n", Gaji);
printf("Menghitung Ulang ?
(y/n)");scanf("%s", &ul);
}while(ul =='y' || ul == 'Y');
}
Bahasa Algoritmik(WHILE-DO) Bahasa C(WHILE-DO)
Judul : GajiKaryawan #include <stdio.h>
Kamus : float
Gaji,GajiPokok,Bonus,tunjangankelua Gaji,GajiPokok,Bonus,tunjanganke
rga,tunjangananak : real luarga,tunjangananak;
masakerja,Golongan, punyaanak : int masakerja,Golongan,
real punyaanak;
menikah, ul: Character char menikah, ul;
Algoritma : main()
ul ← ‘y’ {
WHILE(ul = ‘y’ or ul = ‘Y’) ul = 'y';
INPUT(Golongan) while(ul == 'y' || ul == 'Y'){
CASE(Golongan) printf("Golongan = Gaji
1: GajiPokok ← 500 Pokok :\n");
2: GajiPokok ← 1000 printf("1.) 1 = 500\n");
3: GajiPokok ← 1500 printf("2.) 2 = 1000\n");
4: GajiPokok ← 2000 printf("3.) 3 = 1500\n");
ENDCASE printf("4.) 4 = 2000\n");
INPUT(masakerja) printf("Pilih No.
IF(masakerja = 3)THEN ");scanf("%d",&Golongan);
Bonus ← 50 switch(Golongan)
ENDIF {
IF(masakerja = 6)THEN case 1:
Bonus ← 75 GajiPokok = 500;
ENDIF break;
IF(masakerja > 6)THEN case 2:
Bonus ← 100 GajiPokok = 1000;
ENDIF break;
INPUT(menikah) case 3:
IF(menikah = 'y' or menikah = 'Y') GajiPokok = 1500;
THEN break;
tunjangankeluarga ← case 4:
((10/100)*GajiPokok) GajiPokok = 2000;
INPUT(punyaanak) break;
IF(punyaanak <= 3)THEN tunjangananak }
← ((12.5/100)*punyaanak)*GajiPokok printf("Masa
ENDIF kerja(tahun) :
Gaji ← GajiPokok + Bonus + ");scanf("%d",&mas
tunjangankeluarga + tunjangananak akerja);
ELSE if( masakerja == 3
IF(menikah = 'n' or menikah = )Bonus =
'N')THEN 50;
Gaji ← GajiPokok + Bonus ENDIF if( masakerja == 6
OUTPUT(Gaji) INPUT(ul) ENDWHILE )Bonus =
75;
if( masakerja >
6 )Bonus =
100;
printf("\nSudah
menikah ?
(y/n) :");
fflush(stdin);
scanf("%s",
&menikah);
if( menikah == 'y'
|| menikah == 'Y')
{
tunjangankeluarga
=
((10/100)*GajiPoko
k);
printf("\nSudah
Mempunyai anak
berapa(Maks. 3) :
");scanf("%d",&pun
yaanak);
if( punyaanak <= 3
)
{
tunjangananak =
((12.5/100)*punyaa
nak)*GajiPokok
;
}
Gaji = GajiPokok +
Bonus +
tunjangankeluarga
+ tunjangananak;
} else
if(menikah == 'n'
|| menikah == 'N')
{
Gaji = GajiPokok +
Bonus;
}
printf("\nGaji
Karyawan :
%0.2f\n", Gaji);
printf("Menghitung
Ulang ?
(y/n)");scanf("%s"
, &ul);
}
}