Alur Program Input Proses Output Yang pa

ALGORITMA DAN PEMROGRAMAN TERSTURKTUR
Oleh : Aslam Fatkhudin, S.Kom
3 krtiteria program yang baik :
1. Correct benar.
2. Clear jelas.
3. Efficient efisien.

Alur Program

Input

Proses

Output
Yang paling komplek

Agar program memenuhi 3 kriteria di atas), maka kita harus mengetahui Langkah-langkah
Pemrograman:
1. Mendefiniskan masalah.
2. Garis besar (outline) pemecahan.
3. Menerjemahkan garis besar tersebut menjadi langkah-langkah yang lebih rinci / algoritma.

4. Menerjemahkan algoritma ke dalam bahasa pemrograman (pengkodean/coding).
Kode /
program = statement-statement yang dituliskan dalam bahasa pemrograman.
5. Pengujian (debugging) untuk menemukan bug/kesalahan, kemudian menghilangkannya.
Algoritma

: urutan langkah-langkah yang dinyatakan dengan jelas dan tidak rancu untuk
memecahkan suatu masalah dalam rentang waktu tertentu.
Contohnya : langkah-langkah menelpon.

Karakteristik / Syarat Algoritma :
1. Algoritma harus tidak ambigu (unambiguous)
deskripsi langkah-langkah dalam
algoritma harus dan hanya mempunyai tafsiran tunggal.
2. Algoritma langkah-langkahnya harus tepat (pricise).
3. Algoritma harus pasti (definite)
jika serangkaian langkah-langkah yang sama dilakukan 2
kali maka hasilnya harus sama.
4. Algoritma harus berhingga (finite) selesai dalam rentang waktu tertentu.
Cara Penulisan Algoritma :

1. Uraian deskriptif (bahasa alamiah).
2. Pseudocode.
3. Flowchart (bagan alir) = bagan yang menggambarkan urutan instruksi untuk proses dengan
komputer dan hubungan antara suatu proses dengan proses lainnya
dengan menggunakan simbol.

SIMBOL-SIMBOL FLOWCHART
A. FLOW DIRECTION SYMBOLS
SIMBOL

KEGUNAAN
Untuk menghubungkan antara simbol yang
satu dengan simbol yang lainnya.

Simbol Arus (Flow)
Simbol transmisi untuk informasi dari satu
lokasi ke lokasi lainnya.
Simbol Communication Link

Simbol untuk keluar/masuk prosedur atau

proses dalam lembar/halaman yang sama.
Simbol Connector
Simbol untuk keluar/masuk prosedur atau
proses dalam lembar/halaman yang lain.
Simbol Off-Line Connector

B. PROCESSING SYMBOLS
SIMBOL

KEGUNAAN
Simbol yang menunjukkan pengolahan yang
dilakukan oleh komputer.

Simbol Process
Simbol yang menunjukkkan pengolahan yang
tidak dilakukan oleh komputer.
Simbol Manual Operation
Simbol untuk kondisi yang akan menghasilkan
beberapa kemungkinan jawaban/aksi.
Simbol Decision

Simbol untuk mempersiapkan penyimpanan
yang akan digunakan sebagai tempat
pengolahan di dalam storage.
Simbol Predefined Process
Simbol untuk permulaan atau akhir dari suatu
program.
Simbol Terminal
Simbol operasi dengan menggunakan mesin
yang mempunyai keyboard.
Simbol Keying Operation
Simbol untuk menunjukkan bahwa data di
dalam simbol ini akan disimpan.
Simbol Off-Line Storage
Simbol untuk pemsukkan data secara manual
on-line keyboard.
Simbol Manual Input

C. INPUT-OUTPUT SYMBOLS
SIMBOL


KEGUNAAN
Simbol yang menyatakan proses input dan
output tanpa tergantung dengan jenis
peralatannya.

Simbol Input-Output
Simbol yang menyatakan input berasal dari
kartu atau output ditulis ke kartu.
Simbol Punched Card
Simbol yang menyatakan input berasal dari
pita magnetik atau output disimpan ke pita
magnetik.
Simbol Magnetic Tape Unit
Simbol untuk menyatakan input berasal dari
disk atau output disimpan ke disk.
Simbol Disk and On-Line Storage
Simbol-simbol yang menyatakan input berasal
dari dokumen dalam bentuk kertas atau output
dicetak ke kertas.
Simbol Document

Simbol untuk menyatakan input berasal dari
mesin jumlah/hitung.
Simbol Transmittal Tape
Simbol yang menyatakan peralatan output
yang digunakan yaitu layar, plotter, printer dan
sebagainya.
Simbol Display
PASCAL
Dalam mempelajari algoritma, dipakai bahasa pemrograman Pascal untuk membantu
pemahaman.
Bahasa Pascal dikembangkan pada awal tahun 1970-an oleh ilmuwan komputer Eropa, Niklaus
Wirth (dibaca : Veert). Nama Pascal diambil dari nama ahli matematika Blaise Pascal yang
menemukan mesin hitung mekanik pertama.
Bahasa pemrograman pada tahun 1960-an sangat rumit, kemudian Wirth ingin menciptakan
bahasa yang sederhana.

1
PROSES BERURUTAN
TUJUAN
• Cara membuat judul program.

• Menggunakan unit layer dengan uses crt.
• Mendeklarasikan tipe data byte dan real.
• Cara kerja instruksi write dan readln.
• Mengerti proses berurutan.
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Lama Menginap (nama variabelnya LM).
• Harga Kamar/hari (nama variabelnya HK).
Rumus :
Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK.
Keluaran :
JML
FLOWCHART

PROGRAM PRAKTEK1;
(* PROSES BERURUTAN*)

BEGIN

INPUT

LM,HK

JML=LM*HK

PRINT
JML

USES CRT;
VAR
LM
HK, JML

: BYTE;
: REAL;

BEGIN
CLRSCR;
WRITE
(‘LAMA MENGINAP
READLN

(LM);
WRITE
(‘HARGA KAMAR/HARI
READLN
(HK);
JML := LM * HK;
WRITELN
(‘JUMLAH BAYAR
READLN;
END.

: ‘);
: Rp. ‘);

: Rp. ‘,JML:8:0);

END
TUGAS 1
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :

• Banyak Barang yang dibeli (nama variabelnya BB).
• Harga Satuan barang (nama variabelnya HS).
Rumus :
Jumlah Bayar (nama variabelnya JB) dihitung dari BB dikali dengan HS.
Keluaran :
JB
TAMPILAN DI SCREEN
BANYAK BARANG =
HARGA SATUAN =
JUMLAH BAYAR =
Catatan : Data Banyak Barang, Harga Satuan diinput, sedangkan Jumlah Bayar otomatis.

2
PROSES PENCABANGAN IF_THEN_ELSE
(SATU PERNYATAAN)
TUJUAN
• Mengerti proses pencabangan satu pernyataan.
• Mengerti penggunaan IF_THEN_ELSE
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :

• Lama Menginap (nama variabelnya LM).
• Harga Kamar/hari (nama variabelnya HK).
Rumus :
Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Jika Jumlah
Bayar lebih besar sama dengan 100000, maka mendapat potongan 10%, jika kurang dari
100000 maka tidak mendapat potongan. Total Bayar Akhir (nama variabelnya
BYRAKH) dihitung dari JML dikurangi Potongan.
Keluaran :
BYRAKH
FLOWCHART
BEGIN

INPUT
LM,HK

JML=LM*HK

IF
JML>=
100000
N

BYRAKH := JML

PRINT
JML,
BYRAKH

END

Y

BYRAKH := JML-(JML*0.1)

PROGRAM PRAKTEK2;
(* PENCABANGAN IF_THEN_ELSE_SATU_PERNYATAAN*)
USES CRT;
VAR
LM
HK, JML,BYRAKH

: BYTE;
: REAL;

BEGIN
CLRSCR;
WRITE
(‘LAMA MENGINAP
= ‘);
READLN
(LM);
WRITE
(‘HARGA KAMAR/HARI = Rp. ‘);
READLN
(HK);
JML := LM * HK;
IF JML >= 100000 THEN
BYRAKH := JML – (JML * 0.1)
ELSE
BYRAKH := JML;
WRITELN
(‘JUMLAH BAYAR
: Rp. ‘,JML:8:0);
WRITELN;
WRITELN (‘TOTAL BAYAR AKHIR = Rp. ‘,BYRAKH:12:0);
READLN;
END.

TUGAS 2
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Nama Siswa (nama variabelnya NS).
• Nilai Pascal (nama variabelnya NP).
Rumus :
Keterangan Nilai (nama varaibelnya KN) ditentukan dari Nilai ujian Pascal, jika NP lebih
besar sama dengan 56, maka variabel KN berisi ‘LULUS’, jika NP kurang dari 56, maka
variabel KN berisi ‘GAGAL.
Keluaran :
KN
TAMPILAN DI SCREEN
NAMA SISWA
NILAI PASCAL

=
=

KETERANGAN NILAI

=

Catatan : Nama Siswa dan Nilai Pascal diinput, sedangkan Keterangan Nilai otomatis.

3
PROSES PENCABANGAN IF_THEN_ELSE
(BLOK PERNYATAAN)
TUJUAN
• Mengerti cara mendeklarasikan jenis data string.
• Mengerti cara kerja IF_THEN_ELSE blok pernyataan.
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Lama Menginap (nama variabelnya LM).
• Harga Kamar/hari (nama variabelnya HK).
Rumus :
Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Jika Jumlah
Bayar lebih besar sama dengan 200000, maka mendapat Discount 20% dan Keterangan
(nama variabelnya KET) ‘DPT DISC’, jika kurang dari 200000 maka tidak mendapat
Discount dan Keterangan ‘TAK DISC’. Total Bayar Akhir (nama variabelnya BYRAKH)
dihitung dari JML dikurangi Discount.
Keluaran :
BYRAKH
FLOWCHART

BEGIN

INPUT
LM,HK

JML=LM*HK

IF
JML>=
200000
N

BYRAKH := JML
KET := ‘TAK DISC’

PRINT
JML, KET
BYRAKH

END

Y

BYRAKH := JML-(JML*0.2)
KET := ‘DPT DISC’

PROGRAM PRAKTEK3;
(* PENCABANGAN IF_THEN_ELSE_BLOK_PERNYATAAN*)
USES CRT;
VAR
LM
KET
HK, JML,BYRAKH

: BYTE;
: STRING [8];
: REAL;

BEGIN
CLRSCR;
WRITE
(‘LAMA MENGINAP
= ‘);
READLN
(LM);
WRITE
(‘HARGA KAMAR/HARI = Rp. ‘);
READLN
(HK);
JML := LM * HK;
IF JML >= 200000 THEN
BEGIN
BYRAKH := JML – (JML * 0.2);
KET := ‘DPT DISC’;
END
ELSE
BEGIN
BYRAKH := JML;
KET := ‘TAK DISC’;
END;
WRITELN (‘JUMLAH BAYAR
= Rp. ‘,JML:8:0);
WRITELN (‘KETERANGAN
= ‘,KET);
WRITELN;
WRITELN (‘TOTAL BAYAR AKHIR = Rp. ‘,BYRAKH:12:0);
READLN;
END.
TUGAS 3
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Nama Karyawan (nama variabelnya NK).
• Gaji Pokok (nama variabelnya GP).
• Jumlah Jam Kerja (nama variabelnya JJK).
Rumus :
Gaji Kotor (nama variabelnya GK) dihitung dari GP dikali JJK. Jika GK lebih besar sama dengan 500000
dikenakan pajak (nama variabelnya TAX) 5% dan pada variabel Keterangan (nama varaibelnya KET) diisi
‘PAJAK’, sebaliknya jika GK dibawah 500000, tidak dikenakan pajak dan variabel Keterangan diisi ‘TAK
PAJAK’, Gaji Bersih yang diterima (nama variabelnya GB) dihitung dari GK dikurangi TAX.
Keluaran :
GB
TAMPILAN DI SCREEN
NAMA KARYAWAN
GAJI POKOK
JUMLAH JAM KERJA

=
=
=

GAJI KOTOR
PAJAK
GAJI BERSIH
KETERANGAN

=
=
=
=

Catatan : NK, GP dan JJK diinput, sedangkan GK, TAX, GB dan KET otomatis.

Soal 1: Kelulusan mahasiswa ditentukan berdasar nilai ujian yang didapatkan. Jika nilai ujian
lebih dari atau sama dengan 70, mahasiswa dinyatakan lulus dan jika tidak, dinyataan tidak lulus.
Buatlah program yang membaca nilai ujian dan menentukan status kelulusan dengan
menampilkan pesan yang sesuai di layar.
Analisis : berdasar soal diatas terdapat dua kondisi yang mungkin terjadi, yaitu nilai lebih dari
atau sama dengan 70. Karena kedua kondisi ini saling melengkapi, maka bagian else dalam
statement if digunakan. Langkah-langkah pemecahan masalahnya menjadi :
1. Membaca nilai ujian
2. Memeriksa nilai ujian dan menampilkan pesan.
Solusi :
Program kelulusan;
{menampilkan status kelulusan berdasar nilai yang dibaca}
Var
Nilai : integer;
Begin
{membaca nilai ujian}
Write
(‘Nilai ujian :’);
Readln
(nilai);
{memeriksa nilai dan menampilkan pesan}
If nilai >= 70 then
Writeln (‘Lulus’)
Else
Writeln (‘Tidak Lulus’);
End.
Tampilan di screen :
Nilai ujian : 65
Tidak lulus
Buatlah Flowchart untuk soal di atas
Soal 2: Sebuah perusahaan ingin menambah kesejahteraan karyawannya dengan memberlakukan
upah yang berbeda jika terdapat karyawan yang kerja lembur. Jam kerja karyawan selama satu
minggu diluar jam lembur adalah 40 jam. Jika seorang karyawan bekerja lebih dari 40 jam
seminggu, maka sisanya dihitung sebagai lembur. Upah lembur perjam adalah dua kali upah per
jam biasa. Buatlah program yang membaca jumlah jam kerja dalam satu minggu dan upah per
jam yang berlaku, menghitung upah per minggu yang diterima, serta menampilkannya di layar.
Analisis : berdasar soal diatas dapat ditarik sebuah simpulan, bahwa terdapat karyawan yang
bekerja kurang dari atau sama dengan 40 jam seminggu dan karyawan yang bekerja lebih dari 40
jam seminggu. Masalah ini dapat dipecahkan dengan dua cara :
1. Menggunakan statement if tanpa bagian else, dan
2. Statement if dengan bagian else.
Secara umum, langkah-langkah pemecahan masalahnya adalah :
1. Membaca jam kerja.
2. Membaca upah per jam.
3. Menghitung upah.
4. Menampilkan upah.
Solusi 1:
Program hitung_upah;
{menghitung upah per minggu berdasar jam kerja dan upah per jam }
uses wincrt;

Var
Jamkerja : integer;
upahperjam, upah : real;
Begin
clrscr;
{membaca jam kerja}
Write ('Jam kerja :');
Readln
(jamkerja);
{membaca upah per jam}
Write ('Upah per jam :');
Readln
(upahperjam);
{menghitung upah}
Upah := 40 * upahperjam;
If jamkerja > 40 then
Upah := upah + ((jamkerja - 40) * (2 * upahperjam));
{menampilkan upah}
Write ('Upah yang diterima sebesar Rp. ' , upah:12:0);
End.
Tampilan di screen :
Jam kerja : 35
Upah per jam : 1000
Upah yang diterima sebesar Rp. 35000
Solusi 2:
Program hitung_upah;
{menghitung upah per minggu berdasar jam kerja dan upah per jam }
uses wincrt;
Var
Jamkerja
: integer;
upahperjam, upah
: real;
Begin
clrscr;
{membaca jam kerja}
Write
('Jam kerja :');
Readln
(jamkerja);
{membaca upah per jam}
Write ('Upah per jam :');
Readln (upahperjam);
{menghitung upah}
If jamkerja 40}
Upah := (40 * upahperjam) + ((jamkerja - 40) * (2 * upahperjam));
{menampilkan upah}
Write ('Upah yang diterima sebesar Rp. ' , upah:12:0);
End.
Tampilan di screen :
Jam kerja : 50
Upah per jam : 1000
Upah yang diterima sebesar Rp. 60000
Buatlah Flowchart untuk soal di atas

4
BEBERAPA IF
TUJUAN
• Mengerti menyusun beberapa IF secara terstruktur.
• Mengerti format tampiilan jenis data real.
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Lama Menginap (nama variabelnya LM).
• Harga Kamar/hari (nama variabelnya HK).
Rumus :
Jumlah Bayar (nama variabelnya JML) dihitung dari LM dikali dengan HK. Ketentuan
discount dapat dilihat pada tabel di bawah ini.
JUMLAH BAYAR
JML > 300000
200000 < JML
100000

Y
BYRAKH := JML-(JML*0.1)

N
BYRAKH=JML

IF
JML >
100000

N
KET = ‘TAK DISC’

JML,
KET
BYRAKH

END

Y
KET = ‘DAPAT DISC’

PROGRAM PRAKTEK4;
(* PENCABANGAN_BEBERAPA_IF *)
USES CRT;
VAR
LM
: BYTE;
KET
: STRING [10];
HK, JML,BYRAKH
: REAL;
BEGIN
CLRSCR;
WRITE
(‘LAMA MENGINAP
= ‘);
READLN
(LM);
WRITE
(‘HARGA KAMAR/HARI
= Rp. ‘);
READLN
(HK);
JML := LM * HK;
IF JML > 300000 THEN
BYRAKH := JML – (JML * 0.3)
ELSE
IF JML > 200000 THEN
BYRAKH := JML – (JML * 0.2)
ELSE
IF JML > 100000 THEN
BYRAKH := JML – (JML * 0.1)
ELSE
BYRAKH := JML;
IF JML > 100000 THEN
KET := ‘DAPAT DISC’
ELSE
KET := TAK DISC’;
WRITELN (‘JUMLAH BAYAR
= Rp. ‘,JML:14:0);
WRITELN (‘KETERANGAN
= ‘,KET);
WRITELN (‘TOTAL BAYAR AKHIR = Rp. ‘,BYRAKH:14:0);
READLN;
END.
TUGAS 4
PROSES PROGRAM YANG DIKEHENDAKI
Masukan :
• Nama Induk Mahasiswa (nama variabelnya NIM).
• Nama Mahasiswa (nama variabelnya NAMA).
• Nilai Pascal (nama variabelnya NILPAS).
Rumus :
Nilai Mutu Huruf (nama variabelnya INDEK) ditemtukan dari tabel di bawah ini :
NILAI
NILPAS >= 85
70