Professional Documents
Culture Documents
1.1 Tujuan
Tujuan modul I ini, adalah:
• Praktikan bisa membuat program sederhana berdasarkan algoritma.
• Praktikan dapat membiasakan diri untuk membuat program secara terstruktur.
• Praktikan memahami penggunaan tipe data dan operator dalam algoritma dan
bahasa C.
• Praktikan dapat memahami algoritma kondisi dan pengulangan serta
mengimplementasikannya dalam bahasa pemrograman C.
1.2 Teori
1.2.1 Tipe Data
Dalam bahasa C terdapat lima tipe data dasar, yaitu: char, int, float,
double, dan void.
I-1
I-2
Deklarasi
A : integer
B : real
C : char
X : double
Deskripsi
A = 10 /* variabel A diisi dengan 10 */
B = 5.45 /* variabel B diisi dengan 5.45 */
C = 'C' /* variabel C diisi dengan karakter "C" */
X = 2.35E+10 /* variabel X diisi dengan 2.35E+20 */
Write("Nilai A adalah : ", A) /* Menampilkan isi variabel A */
Write("Nilai B adalah : ", B) /* Menampilkan isi variabel B */
Write("Nilai C adalah : ", C) /* Menampilkan isi variabel C */
Write("Nilai X adalah : ", X) /* Menampilkan isi variabel X */
Program Algoritma 1:
//Program perbedaan output variable
#include <stdio.h>
main()
{ int A;
float B;
char C;
double X;
3) Tipe Logika
Tipe ini adalah tipe yang merepresentasikan data-data yang mengandung dua
buah nilai, yaitu nilai logika (boolean) – true dan false.
4) Tipe Karakter/String
Tipe character merupakan kumpulan bermacam-macam character (set of
character) yang terdiri dari alfabet.
• Alfabet bilangan desimal (decimal digits):0,1,2…9
• Alfabet huruf latin (Capital letter):A,B,…Z
• Alfabet huruf latin kecil (common letter)a..z
Tipe ini hanya terdiri dari 1 karakter. Dalam program konstanta bertipe char
ditulis diantara tanda petik misalnya ‘A’ ‘,’ ‘4’
2) Enumerasi
Tipe Enumerasi adalah tipe data yang nilainya terbatas pada nilao-nilai yang
telah didefinisikan saja. Tipe ini digunakan untuk membentuk tipe data yang
nilainya bersifat pasti. Misalnya nama hari, jenis kelamin dan seterusnya.
Bentuk Umum : enum nama_tipe (nilai1, nilai2, nilai3, ...)
Contoh: enum jenis_kelami(pria, wanita)
enum hari (minggu, senin, selasa, rabu, kamis, jumat, sabtu)
//Membuat tipe enum dengan namahari
#include <stdio.h>
main() {
enum Namahari{Minggu, Senin, Selasa, Rabu, Kamis, Jumat,Sabtu};
Contoh Algoritma 2:
Algoritma Menampilkan nama siswa
{Membuat tipe struktur dengan nama siswa}
Deklarasi
Type Siswa <NIS[8], Nama[25], Alamat[20], Kota[15] : string> :
A : Siswa
Deskripsi
Read(A.NIS)
Read(A.Nama)
Read(A.Alamat)
Read(A.Kota)
Write(A.NIS, ’ – ’, A.Nama, ’ –’, A.Alamat, ’ –’,A.Kota)
I-5
Program Algoritma 2:
//Membuat tipe struktur dengan nama siswa
#include <stdio.h>
main() {
typedef struct {
char NIS[8],Nama[25],Alamat[20],Kota[15];}
Siswa ;
Siswa A;
printf("NIS : ");scanf("%s",A.NIS);
printf("Nama : ");scanf("%s",A.Nama);
printf("Alamat : ");scanf("%s",A.Alamat);
printf("Kota : ");scanf("%s",A.Kota);
printf("%s - %s - %s - %s",A.NIS,A.Nama,A.Alamat,A.Kota);
}
1.2.3 Operator
Operator digunakan untuk menyatakan suatu perhitungan/operasi.
Operator dapat terbagi atas: Operator penugasan, Operator aritmatika, Operator
hubungan (perbandingan), Operator logika, Operator bitwise dan operator unary.
• Operator Penugasan
Operator Penugasan (Assignment operator) dalam bahasa C berupa tanda
sama dengan (“=”). Contoh operator penugasan: nilai = 50; z = x * y;. Artinya:
variabel “nilai” diisi oleh 50 dan variabel “z” diisi oleh hasil perkalian x dan y
• Operator Aritmatika
Dalam bahasa C disediakan lima operator aritmatika, yaitu:
• * : untuk perkalian
• / : untuk pembagian
• % : untuk sisa pembagian (modulus)
• + : untuk pertambahan
• - : untuk pengurangan
I-6
• Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah
operand, maka operator logika digunakan untuk membandingkan logika
hasil dari operator-operator hubungan. Operator logika ada tiga macam,
yaitu :
a) && : Logika AND (dan)
b) || : Logika OR (atau)
c) ! : Logika NOT (ingkaran)
• Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang
ada di memori.
Operator bitwise dalam bahasa C :
<< : Pergeseran bit ke kiri
>> : Pergeseran bit ke kanan
& : Bitwise AND
^ : Bitwise XOR (exclusive OR)
| : Bitwise OR
~ : Bitwise NOT
• Operator Unary
Operator Unary merupakan operator yang hanya membutuhkan satu operand
saja. Dalam bahasa C terdapat beberapa operator unary yang sering
digunakan, yaitu :
Pada operator peningkatan ‘++’ dan penurunan ‘--' jika diletakkan sebelum
atau sesudah operand akan terdapat perbedaan. Perhatikan contoh berikut:
2. gets()
Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan
tidak dapat digunakan untuk memasukkan data numerik.
3. getchar()
Fungsi getchar() digunakan untuk membaca data yang bertipe karakter
4. getch() dan getche()
Fungsi getch() dan getche() digunakan untuk membaca data karakter.
Contoh Program :
#include “stdio.h”
#include “conio.h”
void main()
{ char Huruf1, Huruf2;
printf(“Masukkan sebuah karakter : “);
Huruf1 = getche(); // karakter yang dimasukkan akan terlihat di layar
printf(“\nKarakter yang Anda masukkan adalah %c\n”, Huruf1);
printf(“\nMasukkan sebuah karakter lagi : “);
Huruf2 = getch(); // karakter yang dimasukkan tidak terlihat di layar
printf(“\nKarakter yang Anda masukkan adalah : %c, Huruf2);
getch();
}
b. Menampilkan Data
• Menampilkan Data ke Layar Monitor
Menggunakan fungsi printf() digunakan untuk menampilkan semua
jenis data (numerik dan karakter). Fungsi puts() digunakan untuk
menampilkan data string dan secara otomatis akan diakhiri dengan
perpindahan baris. Fungsi putchar() digunakan untuk menampilkan
sebuah karakter. Mengatur tampilan bilangan pecahan (float).
I-10
1.2.5 Kondisi
a. IF...THEN..., IF...THEN...ELSE... dan IF Bersarang (Nested IF)
Struktur IF, kita dapat membuat algoritma-algoritma yang melakukan perintah
berdasarkan kondisi tertentu. Perintah akan dilakukan jika hanya jika ekspresi
boolean bernilai true (jika ekspresi boolean bernilai false maka perintah tidak
akan dikerjakan).
IF...THEN..
IF <ekspresi boolean> then
Perintah
Endif
.
IF...THEN...ELSE...
IF <ekspresi boolean> then
Perintah_1
Else
Perintah_2
Endif
Contoh Algoritma 3:
Algoritma Bilangan_Genap_Ganjil
{Mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca
dari piranti masukan merupakan bilangan genap dan sebaliknya}
Deklarasi
Bil : integer
Deskripsi
Read(Bil)
If Bil mod 2 = 0 then
Write(‘bilangan genap’)
Else
Write(‘bilangan ganjil’)
Endif
Program Algoritma 3:
//Algoritma Bilangan_Genap_Ganjil
#include <stdio.h>
main() {
int Bil;
Contoh Algoritma 4:
Algoritma Maksimum
{Menentukan bilangan terbesar dari tiga buah bilangan bulat}
Deklarasi
A,B,C,Maks : integer
Dekripsi
Read(A, B, C)
If (A>B) and (A>C) then
Maks ← A
Else if (B>A) and (B>C) then
I-13
Maks ← B
Else
Maks ← C
Endif
Write(’bilangan terbesar adalah, Maks)
Program Algoritma 4:
//Algoritma Maksimum
#include <stdio.h>
main() {
int A, B, C,Maks;
printf("A : ");scanf("%d",&A);
printf("B : ");scanf("%d",&B);
printf("C : ");scanf("%d",&C);
if ((A>B) && (A>C))
maks = A;
else if ((B>A) && (B>C))
maks = B;
else
maks = C;
printf("bilangan terbesar adalah %d", Maks);
}
Contoh Algoritma 5:
Algoritma Jumlah_Hari
{Menentukan jumlah hari dalam satu bulan}
Deklarasi
AngkaBulan : integer {1..12}
Tahun : integer {>0}
JumlahHari : integer
Deskripsi
Read(AngkaBulan,Tahun)
Case (AngkaBulan)
AngkaBulan = [1,3,5,7,8,10,12] : JumlahHari ← 31
AngkaBulan = [4,6,9,11] : JumlahHari ← 30
AngkaBulan = 2: if Tahun mod 4 = 0 then
JumlahHari ← 29
Else
JumlahHari ← 28
I-14
Endif
Endcase
Write(JumlahHari)
Program Algoritma 5:
//Algoritma Jumlah_Hari
#include <stdio.h>
main() {
int AngkaBulan,Tahun, JumlahHari;
Contoh Algoritma 6:
Algoritma Kalkulator
{Mensimulasikan kalkulator sederhana. Menghitung hasil operasi aritmetika
bila dibaca operand1, operator dan operand2.}
Deklarasi
Op1, Op2, Pilih : integer {operand}
Hasil : float {hasil ’+’,’-’,’*’,’/’}
Deskripsi
Read(Op1,Op2, Pilih)
Case (Pilih)
I-15
Program Algoritma 6:
//Algoritma Bilangan_Genap_Ganjil
#include <stdio.h>
main() {
int Op1, Op2, Pilih;
float Hasil;
printf("Operand 1: ");scanf("%d",&Op1);
printf("Operand 2: ");scanf("%d",&Op2);
printf("1. Operator +\n");
printf("2. Operator -\n");
printf("3. Operator *\n");
printf("4. Operator /\n");
printf("Pilih Operator : ");scanf("%d",&Pilih);
switch (Pilih) {
case 1 : {Hasil = Op1 + Op2; break;}
case 2 : {Hasil = Op1 - Op2; break;}
case 3 : {Hasil = Op1 * Op2; break;}
case 4 : {if (Op2 != 0) printf("%d",Op1/Op2);
else
printf("error");break;}
}
printf("Hasil dari perhitungan tersebut adalah %f",Hasil);
}
1.2.6 Pengulangan
Struktur pengulangan secara umum terdiri dari dua bagian:
1. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk
melaksanakan pengulangan.
2. badan (body) pengulangan, yaitu bagian algoritma yang diulang.
I-16
a. Struktur FOR
Struktur ini digunakan untuk menghasilkan pengulangan sejumlah kali yang
dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum
eksekusi.
For Menaik For Menurun
For pencacah ← awal to akhir do For pencacah←akhir downto awal do
Aksi Aksi
Endfor endfor
Contoh Algoritma 7:
Algoritma Penjumlahan_Deret
{Menjumlahan deret: 1+2+3+..+N dengan N adalah bilangan bulat positif
yang dibaca dari piranti masukan jumlah deret dicetak ke piranti keluaran}
Deklarasi
N : integer {banyaknya suku deret}
K : integer {suku deret}
Jumlah : integer {Jumlah deret}
Deskripsi
Read(N) {banyaknya suku deret}
Jumlah ← 0 {Inisialisasi jumlah deret}
For k ← 1 to N {ulangi sebanyak N kali}
Jumlah ← Jumlah + k
Endfor
Write(Jumlah)
Program Algoritma 7:
//Algoritma Penjumlahan_Deret
#include <stdio.h>
main() {
int N, K, Jumlah;
Contoh Algoritma 8:
Algoritma Hitung_Mundur
{hitung mundur peluncuran roket}
Deklarasi
K : integer
Deskripsi
For K ← 10 downto 0 do
Write(K)
Endfor
Write(’Go’)
Program Algoritma 8:
//Algoritma Hitung_Mundur
#include <stdio.h>
main() {
int K;
for (K=10;K>=0;K--) {
printf("%d ",K); }
printf("Go");
}
b. Struktur While
Bentuk umum:
While kondisi do
Aksi
Endwhile
Aksi akan dilaksanakan berulangkali selama kondisi bernilai true. Jika kondisi
bernilai false badan pengulangan tidak akan dilaksanakan, yang berarti
pengulangan selesai. Yang harus diperhatikan adalah pengulangan harus
berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika
algoritma tersebut salah.
I-18
Contoh Algoritma 9:
Algoritma Menghitung_Rata_Rata
{Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti
masukan. N >0}
Deklarasi
N ,X , K, Jumlah : integer
Rerata : real
Deskripsi
Read(N)
Jumlah ← 0
K ←1
While K ≤ N do
Read(X)
Jumlah ← Jumlah + X
K ← K+1
Endwhile
{K>N}
Rerata ← Jumlah/N
write(Rerata)
Program Algoritma 9:
//Algoritma Menghitung_Rata_Rata
#include <stdio.h>
main() {
int N , X, K, Jumlah;
float Rerata;
c. Struktur do.....while
Pada dasarnya struktur perulangan do....while sama saja dengan struktur
while, hanya saja pada proses perulangan dengan while, seleksi berada di
while yang letaknya di atas kemudian proses baru akan dijalankan, sementara
pada perulangan do....while, proses akan dilakukan terlebih dahulu baru
kemudian, seleksi while dilakukan. Jadi dengan menggunakan struktur
do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Bentuk Umum:
Do
Aksi
While
Deklarasi
Const Password = ’abc123’
Sandilewat : string
Sah : boolean
Deskripsi
Sah ← false
do
Read(Sandilewat)
If Sandilewat = Password then
Sah ← true
Endif
while Sah=false
Write(’OK’)
main() {
#define Password "abc123";
I-20
char Sandilewat;
bool Sah;
Sah = false;
do
{
printf("Masukan kata sandi : ");scanf("%c",Sandilewat);
If (Sandilewat = Password)
Sah = true;
}
while (Sah == false);
printf("OK");
}
1.3 Kasus
1.3.1 Kasus 1
Jika kita berbelanja di pasar swalayan/supemarket, nilai total belanja kita
seringkali bukan kelipatan pecahan rupiah yang berlaku. Misalnya nilai total
belanja sebesar Rp. 19.212. andaikan saat ini pecahan rupiah yang berlaku paling
kecil Rp. 25. selain i
tu, juga ada pecahan Rp. 50 dan Rp. 100. umumnya kasir pasar swalayan
membulatkan nilai belanja ke pecahan yan g terbesar jadi Rp. 19.212 dibulatkan
menjadi Rp. 19.225. hal ini jels merugikan konsumen. Misalkan anda memiliki
pasar swalayan yang jujur dan tidak merugikan pembeli, sehingga jika ada nilai
belanja yang bukan kelipatan pecahan yang ada, maka nilai belanja itu dibulatkan
ke pecahan terendah. Jadi Rp. 19.212 dibulatkan menjadi Rp. 19.200. tuliskan
algoritma dan program serta cantumkan output/hasilnya yang membaca nilai
belanja (integer) lalu membulatkannya ke nilai uang dengan pecahan terendah.
1.3.2 Kasus 2
Seseorang mempunyai tabungan di sebuah bank. Ia dapat menyetor dan
mengambil uangnya sendiri di bank tersebut, namun jumlah saldo minimum yang
harus disisakan di dalam adalah Rp. 10.000. ini artinya, jika saldonya Rp. 10.000,
ia tidak dapat mengambil uang lagi. Kode transaksi untuk menyetor adalah 0 dan
I-21
Deklarasi
Const Biaya_perdetik : 100
Type Waktu <Jam, Menit, Detik : integer>
Var Awal, Akhir : Waktu
Detik_awal, Detik_akhir, Lama_bicara, Tdetik1, Tdetik2 : integer
Biaya : real
Deskripsi
Read(Awal.Jam, Awal.Menit, Awal.Detik)
Read(Akhir.Jam, Akhir.Menit, Akhir.Detik)
Tdetik1 ← Akhir.Jam * 3600 + Akhir.Menit * 60 + Akhir.Detik
Tdetik2 ← Awal.Jam * 3600 + Awal.Menit * 60 + Awal.Detik
Lama_bicara ← Tdetik2 – Tdetik1
If Lama_bicara > = 0 then
Biaya ← Lama_bicara * Biaya_perdetik
I-22
Algoritma 2:
Algoritma Pecahan_Uang
{Membaca nilai uang (rupiah) dalam kelipatan 25-an, lalu menentukan berapa
nilai tukar pecahan. Pecahan yang tersedia adalah Rp. 1000, Rp. 500, Rp. 100,
dan Rp. 50. Jika terakhir masih ada sisa, beri saja Permen (Plus Senyum
manis)}
Deklarasi
Uang : integer
Satuan, Puluhan, Ratusan, Limaratusan, Ribuan, Sisa : integer
Deskripsi
Read(Uang)
Ribuan ← Uang div 1000
Sisa ← Ribuan mod 1000
If Sisa <> 0 then
Limaratusan ← Sisa div 500
Sisa ← Limaratusan mod 500
Endif
If Sisa <> 0 then
Ratusan ← Sisa div 100
Sisa ← Ratusan mod 100
Endif
If Sisa <> 0 then
Puluhan ← Sisa div 50
Sisa ← Puluhan mod 50
Endif
If Sisa <> 0 then
Satuan ← ’beri permen plus senyum’
Endif
Write(Ribuan, ’buah ribuan ’, Limaratusan, ’ buah lima ratusan ’, Ratusan, ’ buah
seratusan ’, Puluhan, ’ buah puluhan ’, Sisa , Satuan)
Algoritma 3:
Algoritma Angka_mutu_mahasiswa
{Nilai_akhir ditentukan dari nilai_tugas, UTS dan UAS dengan formula
nilai_akhir ← 20% Nilai_Tugas + 30% UTS + 50% UAS. Angka mutu (A, B, C,
D, E) ditentukan oleh nilai_akhir mahasiswa. Setelah itu menentukan angka
mutu dengan formula: nilai_akhir >= 80 → ’A’, 60 <= nilai_akhir < 80 → ’B’,
40 <= nilai_akhir < 60 → ’C’, 20 <= nilai_akhir < 40 → ’D’, nilai_akhir < 20
→ ’E’}
I-23
Deklarasi
Nama : string
Nilai_tugas, UTS, UAS : integer
Nilai_akhir : real
Angka_mutu : char
Deskripsi
Read(Nama, Nilai_tugas, UTS, UAS)
Nilai_akhir ← 0.2 * Nilai_tugas + 0.3 * UTS + 0.5 * UAS
If Nilai_akhir >= 80 then
Angka_mutu ← ’A’
Else if Nilai_akhir >= 60 then
Angka_mutu → ’B’
Else if Nilai_akhir >= 40 then
Angka_mutu → ’C’
Else if Nilai_akhir >= 20 then
Angka_mutu → ’D’
Else
Angka_mutu → ’E’
Endif
Write(Nama, ’nilai akhir: ’, Nilai_akhir, ’ angka mutu: ’, Angka_mutu)
Algoritma 4:
Algoritma Empat_Persegi_Panjang
{Algoritma untuk menampilkan menu perhitungan empat persegi panjang,
memilih menu dan melakukan proses perhitungan}
Deklarasi
NoMenu : integer
Panjang, Lebar : real
Luas, Keliling, Diagonal : real
Deskripsi
{cetak menu}
write(’ Menu Empat Persegi Panjang ’)
write(’ 1. Hitung Luas ’)
write(’ 2. Hitung Keliling ’)
write(’ 3. Hitung Panjang Diagonal ’)
write(’ 4. Keluar Program ’)
write(’ Masukan pilihan anda(1/2/3/4)? ’)
read(NoMenu)
case (NoMenu)
NoMenu = 1 : read(Panjang, Lebar)
Luas ← Panjang * Lebar
Write(Luas)
I-24
Algoritma 5:
Algoritma Upah_Karyawan
{Menghitung upah mingguan karyawan. Masukan yang dibaca dari piranti
masukan adalah nama karyawan, golongan dan jumlah jam kerja. Nama
karyawan dan upahnya dicetak ke piranti keluaran}
Deklarasi
Const JamNormal = 48 {jumlah jam kerja normal per minggu}
Const UpahLembur = 3000 {upah per jam lembur Rp. 3000}
Nama : string
Gol : char {’A’,’B’,’C’,’D’}
JJK : integer {jumlah jam kerja}
JamLembur : integer
UpahPerJam : real {upah per jam}
UpahTotal : real
Deskripsi
Read(Nama, Gol, JJK)
Case (Gol)
Gol = ’A’ : UpahPerJam ← 4000.0
Gol = ’B’ : UpahPerJam ← 5000.0
Gol = ’C’ : UpahPerJam ← 6000.0
Gol = ’D’ : UpahPerJam ← 7000.0
Endcase
If JJK ≤ JamNormal then
UpahTotal ← JJK * UpahPerJam
Else
JamLembur ← JJK – JamNormal
UpahTotal ← JamNormal * UpahPerJam + JamLembur * UpahLembur
Endif
Write(Nama,UpahTotal)
I-25
Deklarasi
A : real {bilangan yang dipangkatkan}
N, M : integer {pemangkat}
Hasil : real {hasil perpangkatan}
K : integer {pencatatan pengulangan}
Deskripsi
Read(A, N)
If N<0 then
M ← -N {positifkan pangkatnya}
else {N ≥ 0}
M←N
endif
{hitung perpangkatan}
Hasil ← 1
for K ← 1 to M do
Hasil ← Hasil * A
endfor
Algoritma 2:
Algoritma Konversi_Desimal_Ke_Biner
{Mengkonversi bilangan bulat tidak negatif dalam sistem desimal menjadi
bilangan dalam sistem biner}
Deklarasi
X, Biner : integer
I-26
Deskripsi
Read(X)
Biner ←’’
do
Sisa ← X mod 2
X ← X div 2
Case (Sisa)
0 : Biner ← ’0’ + Biner
1 : Biner ← ’1’ + Biner
endcase
while X ≠ 0
write(Biner)
Algoritma 3:
Algoritma Hitung_Rata_Rata
{Menghitung nilai rata-rata data integer (≠9999). Data dibaca dari piranti
masukan. Pembacaan data diakhiri dengan 999. nilai rata-rata dicetak ke
piranti masukan}
Deklarasi
Ndata : integer {pencatat jumlah pembacaan data}
X : integer {data yang dibaca}
Jumlah : real {jumlah nilai data yang dibaca}
U : real {rata-rata data integer}
Deskripsi
Jumlah ← 0
Ndata ← 0 {inisialisasi pencatat pembacaan}
Read(X)
While X ≠ 9999 do
Ndata ← Ndata +1 {naikan pencatat jumlah pembacaan data}
Jumlah ← Jumlah + X
Read(X) {baca data integer selanjutnya}
Endwhile {X = 9999}
If Ndata ≠ 0 then
U ←Jumlah/Ndata {rata-rata data bilangan bulat}
Else
Write(’data tidak ada’)
Endif
I-27
Algoritma 4:
Algoritma Data_Minimum
{Menentukan bilangan terkecil dari N data integer yang dibaca dari piranti
masukan. Nilai N ditentukan terlebih dahulu (N>0)}
Deklarasi
N : integer {banyaknya data masukan, > 0}
X : integer {data yang dibaca}
Min : integer {data terkecil/minimum}
K : integer {pencacah pengulangan}
Deskripsi
Read(N)
Read(X) {baca data pertama}
Min ← X {asumsikan min adalah data pertama}
For k ← 2 to N do
Read(X)
If X < Min then
Min ← X
Endif
Endfor
Write(Min)
Algoritma 5:
Algoritma Upah_Karyawan
{Menentukan upah mingguang sejumlah karyawan. Data yang diperlukan
adalah nama karyawan dan jumlah jam kerja. Perhitungan upah karyawan
diulangi untuk karyawan lain sampai tidak ada lagi karyawan yang dihitung
upahnya}
Deklarasi
Const JamKerjaNormal = 48
Const UpahPerJam = 2000
Const UpahLembur = 3000
Namakar : string
JumlahJamKerja : integer
JumlahJamLembur : integer
UpahTotal : real
Jawab : char
Stop : boolean
Deskripsi
I-28
Stop ← false
While not Stop do
Read(Namakar, JumlahJamKerja)
If JumlahJamKerja ≤ JamKerjaNormal then
Upah ← JumlahJamKerja * UpahPerjam
Else {jumlah jam kerja > 48}
JumlahJamLembur ← JumlahJamKerja – 48
Upahtotal ← JamKerjaNormal * 2000 + JumlahJamLembur * 3000
Endif
Write(UpahTotal)
Write(’ulangi untuk karyawan lainnya ? (y/t) : ’)
Read(Jawab)
If Jawab=’t’ or Jawab=’T’ then
Stop ← true
Endif
Endwhile
{Jawab = ’t’ or T}