Anda di halaman 1dari 49

PEMBAHASAN I

PENGENALAN PEMROGRAMAN TERSTRUKTUR


DAN TURBO PASCAL
(1 x Pertemuan)

1.1.

Pengenalan Bahasa Pemrograman


Komputer adalah sebuah mesin yang hanya mengerti karakter 1 (satu)

dan 0 (null) atau bilangan biner. Oleh karena itu, untuk mengoperasikan
komputer diperlukan penerjemah bahasa dari bahasa manusia ke bahasa mesin
komputer. Penerjemah bahasa tersebut terdiri dari software (perangkat lunak),
yang menghubungakan manusia (brainware) dengan hardware (perangkat
keras). Software biasa disebut dengan nama program, yaitu merupakan
himpunan atau kumpulan instruksi yang dibuat oleh programmer atau bisa juga
dikatakan sebagai suatu executable dari suatu software.
Dalam pembuatan program terdapat tata cara atau prosedure yang harus
dilakukan dalam penulisan program, hal ini biasa disebut dengan bahasa
pemrograman. Pada bahasa pemrograman terdapat dua faktor penting, yaitu
yang dikenal dengan nama syntax dan semantik. Syntax (sintaks) itu sendiri
merupakan aturan gramatikal atau komposisi suatu program yang mengatur tata
cara penulisan huruf, angka, dan karakter lainnya. Contoh dalam program
pascal, terdapat titik koma ( ; ) diantara dua statement.
x := 1;
x := x +1;

Sedangkan semantik merupakan bagaimana cara mendefinisikan arti dari


program yang benar secara sintaks dari bahasa pemrograman tersebut. Contoh
dalam pascal, seperti berikut:
Nilai : Array [1..10] of Real;

Arti semantiknya adalah akan menyebabkan ruang sebanyak 10 dengan elemen


real di variabel nilai dari 1-10.
Secara umum bahasa pemrograman dibedakan menjadi 4 (empat) generasi,
antara lain:
Generai I, yaitu Machine Language (bahasa mesin)
Generasi II, yaitu Assembly Language (Assembler)
Generasi III, yaitu High-level Programming Language (C, Pascal, dsb)
1|Praktikum Algoritma dan Pemrograman

Generasi IV, yaitu 4 GL (Fourth-generation Language (SQL)


Menurut versi-nya ada dua jenis bahasa pemrograman yang berkembang
saat ini, permata yang menggunakan sistem console dan kedua menggunakan
sistem visual.
Sistem Console
Sistem console adalah pemrograman yang mengandalkan dalam
pengkode-an (coding), tanpa adanya kemudahan dalam click dan drag
disamping

itu

tampilan

yang

kurang

menarik.

Contoh

bahasa

pemrograman yang menggunakan sistem consule adalah Pascal, QBasic, Java, C++, C, Perl, Java Script, dll.
Sistem Visual atau Obyek
Sistem visual adalah perkembangan dari sistem consule dengan berbasis
object frame oriented dengan interface (tampilan grafis) yang lebih bagus
dan memfokuskan pada kemudahan dalam memprogram suatu aplikasi
dengan metode klik dan drag. Contoh bahasa pemrograman yang
menggunakan sistem ini adalah Borland Delphi, Visual Basic, Visual
C++, Visual Foxpro, dll.

Bahasa Pemrograman untuk Tujuan Tertentu


Jenis Program

Bahasa Terbaik

Bahasa Terburuk

Data Terstruktur

ADA, C/C++, Pascal

Assembler, BASIC

Proyek cepat

BASIC

Pascal, ADA, Assembler

Eksekusi cepat

Assembler, C

Basic, Interpeter Language

Kalkulasi matematika

Fortran

Pascal

Menggunakan Memori Dinamis

Pascal, C

Basic

Lingkungan bermemori terbatas

Basic, Assembler, C

Fortran

Program real-time

ADA, Assembler, C

Basic, Fortran

Manipulasi string

Basic, Pascal

Program mudah dikelola

Pascal, ADA

C, Fortran

Compiler dan Interpreter


Compiler adalah suatu program yang menterjemahkan bahasa program
(source code) ke dalam bahasa objek (object code). Compiler menggabukankan
keseluruhan bahasa program dikumpulkan kemudian disusun kembali.

2|Praktikum Algoritma dan Pemrograman

Gambar 1.1. Kompilasi Program Komputer

Tahap kompilasi :
1. Source Code (program yang ditulis) dibaca ke memory komputer.
2. Source Code tersebut diubah menjadi object code (bahasa assembly)
3. Object Code dihubungkan dengan library yang dibutuhkan untuk membentuk
file yang bisa di eksekusi.
Interpreter berbeda dengan compiler, Interpreter menganalisis dan dan
mengeksekusi setiap baris dari program tanpa melihat program secara
keseluruhan. Keuntungan interpreter adalah dalam eksekusi yang bisa dilakukan
dengan segera. Tanpa melalui tahap kompilasi, untuk alasan ini interpreter
digunakan pada saat pembuatan program berskala besar.

1.2.

Tipe Pemrograman
Pemrograman terstruktur adalah cara pemrosesan data yang terstuktur.

Terstruktur dalam: analisa, cara dan penulisan program.


Prinsip pemrograman terstruktur:
a. Gunakan rancangan pendekatan dari atas ke bawah (top down design),
b. Bagi program ke dalam modul-modul logika yang sejenis,
c. Gunakan sub-program untuk proses-proses sejenis yang sering digunakan,
d. Gunakan pengkodean terstruktur: IF ... THEN, DO ... WHILE dan lainlainnya,
e. Hindarkan penggunaan perintah GO TO bila tidak diperlukan,
f.

Gunakan nama-nama bermakna (mnemonic names), dan

g. Buat dokumentasi yang akurat dan berarti.

3|Praktikum Algoritma dan Pemrograman

Dalam perencanaan dan perancangan dari atas ke bawah, kategori dan


penyelesaian masalah dimulai dari bagian yang utama kemudian dibagi menjadi
bagian yang lebih kecil. Rancangan cara ini memudahkan penulisan, pengujian,
koreksi dan dokumentasi program.
Tahapan rancangan atas ke bawah dalam pemrograman:

Tentukan keluaran (output) yang diminta, masukan (input) yang diperlukan


dan proses-proses utama yang diperlukan untuk transformasi data.

Membagi proses utama ke dalam modul-modul fungsional.

Buat algoritma msing-masing modul, dari modul utama ke sub-sub modul.


Dalam proses pembuatan program, terlebih dahulu proggrammer

membuat rancangan program yang biasa disebut dengan nama ALGORITMA.


Untuk lebih jelaskan akan dibahas sebagai berikut:

1.3.

ALGORITMA
ALGORITMA ialah suatu metode khusus yang tepat dan terdiri dari

serangkaian langkah terstruktur dan dituliskan secara sistematis, yang akan


dikerjakan untuk menyelesaikan suatu masalah, atau Algoritma adalah urutan
langkah-langkah logis penyelesaian masalah, yang disusun secara sistematis
dan logis. Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah
dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau
benar.
CIRI-CIRI ALGORITHMA YANG BAIK

Algorithma harus tidak Ambigu (Unambiguous) atau harus pasti, artinya


Deskripsi langkah-langkah dalam algorithma harus dan hanya mempunyai
tafsiran tunggal.

Algorithma harus tepat (precise), artinya Algorithma harus menyatakan


urutan langkah-langkahnya, kapan sebuah langkah dijalankan.

Algorithma harus pasti (definite), artinya jika serangkaian langkah yang


sama dilakukan dua kali maka hasilnya harus selalu sama.

Algorithma harus berhingga (finite), artinya, serangkaian langkah dalam


algorithma harus dapat dilakukan pada rentang waktu tertentu.

Murah, yaitu efisien dalam penggunaan piranti memori dan penyimpanan


lainnya serta cepat waktu pelaksanaannya.

4|Praktikum Algoritma dan Pemrograman

Mengikuti alur konsep, suatu algoritma disusun dalam tiga bagian, yaitu :
a.

Bagian Kepala algoritma

b.

bagian deklarasi, dan

c.

Bagian deskripsi algoritma


Setiap bagian disertai dengan penjelasan atau dokumentasi tentang

maksud pembuatan teks.


Algoritma Nama_algoritma {penjelasan tentang algoritma yang menguraikan
secara

singkat

hal-hal

yang

dilakukan

oleh

algoritma}.
Deklarasi {semua nama yang digunakan, meliputi nama-nama : tipe, konstanta,
variabel, juga nama sub-program dinyatakan disini}
Deskripsi {semua langkah atau aksi algoritma dituliskan disini}
Algoritma tidak hanya dinotasikan dengan kata-kata saja, namun bisa
juga dituangkan kedalam bentuk bagan alir atau yang biasa disebut dengan
nama Flowchart. Adapun flowchart (diagram alir) merupakan urutan langkahlangkah logis untuk menyelesaikan masalah dengan menggunakan simbol.
Diagram alir terbagi menjadi 5 (lima) jenis, yang salah satunya adalah diagram
alir logika (logic flowchart). Adapun bentuk simbol-simbol yang digunakan adalah
sebagai berikut:

Gambar 1.2. Simbol-simbol Flowchart Logika

5|Praktikum Algoritma dan Pemrograman

1.4.
a)

BAHASA PEMROGRAMAN PASCAL


Sejarah PASCAL
Merupakan pengembangan dari bahasa ALGOL 60, bahasa
pemrograman untuk sains komputasi. Tahun 1960, beberapa ahli
komputer bekerja untuk mengembangkan bahasa ALGOL, salah satunya
adalah Dr. Niklaus Wirth dari Swiss Federal Institute of Technology (ETHZurich), yang merupakan anggota grup yang membuat ALGOL. Tahun
1971, dia menerbitkan suatu spesifikasi untuk highly-structured language
(bahasa

tinggi

yang

terstruktur)

yang

menyerupai

ALGOL.

Dia

menamainya dengan PASCAL (seorang filsuf dan ahli matematika dari


Perancis) Pascal bersifat data oriented, yaitu programmer diberi
keleluasaan untuk mendefinisikan data sendiri. Pascal juga merupakan
teaching language (banyak dipakai untuk pengajaran tentang konsep
pemrograman). Kelebihan yang lain adalah penulisan kode Pascal yang
luwes, tidak seperti misalnya FORTRAN, yang memerlukan programmer
untuk menulis kode dengan format tertentu. Bentuk dasar program Pascal
adalah seperti berikut:
program TITLE ;
begin
pernyataan;
pernyataan
end.

b) PASCAL sebagai bahasa terstruktur


Sebagai bahasa terstruktur, PASCAL mempunyai ciri-ciri sebagai
berikut:
1. Berurutan Susunan dari kode-kode dalam teks Pascal harus ditulis
secara urut dari atas, pernyataan-pernyataan yang ditulis lebih awal
akan dieksekusi lebih dahulu. Oleh karena itu, suatu pernyataan yang
menyangkut suatu variabel di dalam program, maka variable itu harus
terdefinisi dahulu sebelumnya. Hal ini terutama menyangkut pada
pemanggilan sub-program oleh sub-program yang lain. Bisa dibaca
lebih lanjut pada bagian sub-program.
2. Blok dengan batas-batas yang jelas. Pascal memberikan pembatas
yang jelas pada tiap-tiap blok, seperti pada blok program utama, subprogram, struktur kontrol (pengulangan/ pemilihan), dll. Pemakaian
kata kunci begin untuk mengawali operasi pada blok dan end untuk
menutupnya

memudahkan

programmer

menyusun

dengan mudah. Seperti contoh:


6|Praktikum Algoritma dan Pemrograman

programnya

If X>0 then
begin
Write ( bilangan positif);
Writeln ( program selesai);
end;

Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan
pengulangan. Contoh di atas juga mengilustrasikan pintu masuk
tunggal pada suatu blok pemilihan yaitu suatu test logika X>0, dengan
pintu keluaran yang satu pula (satu disini maksudnya bukan dua baris
perintah output tapi suatu paket perintah yang dirangkai dengan begin
.. end.

c)

Bakuan PASCAL
Dibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam
beberapa versi, diantaranya: USCD PASCAL, MS PASCAL, TURBO
PASCAL

dll.

Dengan

semakin

berkembangnya

teknologi

dalam

komputasi, Pascal dimanfaatkan untuk pengembangan DELPHI (berasal


dari nama suatu kota di masa Yunani kuno), suatu bahasa pemrograman
visual yang menonjolkan pada efek grafis dan orientasi pada objek-objek
yang siap dipakai, karena memiliki Visual Component Library (VCL).

d) Struktur Bahasa PASCAL secara umum


Pascal mempunyai struktur sebagai berikut:
1. Bagian Judul Program
2. Bagian Deklarasi
a. Deklarasi tipe data (TYPE)
b. Deklarasi variabel (VAR)
c. Deklarasi konstanta (CONST)
d. Deklarasi label (LABEL)
e. Deklarasi sub-program (PROCEDURE dan FUNCTION)
3. Bagian Program Utama Perintah-perintah.
Teks Pascal setidaknya memiliki bagian Judul Program,
bagian Deklarasi, dan Bagian Program Utama yang berupa perintahperintah. Sedangkan untuk bagian deklarasi menyesuaikan dengan
isi dari program itu sendiri. Contoh program PASCAL:

7|Praktikum Algoritma dan Pemrograman

program TAMBAH_00; {Menjumlahkan dua bilangan yang nilainya diberikan


dalam perintah}

var
X, Y, Z: integer;{Deklarasi variabel X,Y dan Z sebagai bilangan bulat}
BEGIN {Program Utama Mulai}
X := 50; {Perintah memberikan nilai 50 pada var. X}
Y := 25; {Perintah memberikan nilai 25 pada var. Y}
Z := X + Y;{Perintah menjumlahkan X dan Y serta menyimpan hasilnya ke Z}
END. {Akhir Program Utama}

Pada contoh ini nilai X dan Y tidak bisa sembarang, karena


didefiniskan tertentu. Agar nilai X dan Y bisa bebas ditentukan, nilai X
dan Y dibaca dari default input.

program TAMBAH_01; {Menjumlahkan 2 bil yg dibaca dari default input}


var
X,Y,Z: integer; {Deklarasi variabel X,Y dan Z sebagai bilangan bulat}
BEGIN
{ Program Utama Mulai }
read(X);
{ Membaca nilai X lewat key-board }
read(Y);
{ Membaca nilai Y lewat key-board }
Z := X + Y; { Menjumlahkan X dan Y serta menyimpan hasilnya ke Z}
write(Z);
{ Menyajikan Z ke layar monitor }
END.
{ Akhir Program Utama }

e)

Bentuk Tampilan Turbo Pascal 1.5

Gambar 1.3. Tampilan Turbo Pascal 1.5

8|Praktikum Algoritma dan Pemrograman

Terdapat beberapa menu didalam turbo pascal tersebut, antara lain:

Gambar 1.4. Tampilan Menu File

Menu file terdapat new yang berfungsi untuk membuat lembar kerja baru
dalam membuat program. Setelah penulisan kode program, seperti gambar
berikut:

Gambar 1.5. Tampilan Listing Program

9|Praktikum Algoritma dan Pemrograman

untuk menjalankan program maka pilih menu RUN setelah itu pilih RUN
seperti pada gambar berikut:

Gambar 1.6. Tampilan Menu RUN

Atau dengan cara cepat dengan menekan Ctrl + F9, maka akan muncul
program seperti pada gambar berikut:

Gambar 1.7. Tampilan Hasil Program Setelah Dijalankan

10 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN II
MENGENAL PROSEDUR CETAK (WRITE), MASUKAN (READ),
VARIABEL, DAN TIPE DATA
(1 x Pertemuan)

2.1.

Prosedure Cetak (Write/writeln)


Di dalam membuat program, terdapat perintah untuk menampilkan kata

atau kalimat yang ingin ditampilkan dalam program yang akan dibuat. Adapun
dalam pascal menggunakan perintah write atau writeln untuk menampilkan
kata atau kalimat yang ingin ditampilkan. Seperti contoh penggunaan write
berikut :
Program tampil;
uses wincrt;
begin
write('Belajar Pascal');
end.

Akan muncul tampilan setelah dijalankan sebagai berikut:

Gambar 2.1. Tampilan Hasil Program Cetak (write)

Untuk prosedure write SEMUA kalimat akan tercetak selama berada


diantara tanda petik () walaupun terdapat space atau simbol (@,#,$,%,^,&, dll)
atau huruf (a-z) atau angka (0-10). Huruf apapun yang berada diantara tanda
petik, akan ditampilkan setelah program dijalankan. Dan setiap prosedure akan
selalu diakhiri dengan tanda titik koma (;) yang berfungsi untuk mengakhiri
prosedure yang digunakan.
Write('Belajar Pascal');
Untuk mencetak

untuk mengakhiri prosedure

Kata atau kalimat yang akan tercetak di dalam program


Sedangkan WRITELN itu berarti write endline yang difungsikan untuk
mencetak program dengan mengakhiri baris penulisan. Sehingga perintah
berikutnya akan berada dibawah perintah sebelumnya. Untuk lebih jelasnya
dapat dilihat pada contoh listing program berikut:
11 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Menggunakan 2 (dua) prosedure write!


Program tampil;
uses wincrt;
begin
write('Belajar');
write('Pascal');
end.

Akan menghasilkan tampilan berikut:

Gambar 2.2. Tampilan Belajar Pascal (2 perintah Write)

Kedua kata tersebut tercetak dalam satu baris. Berbeda halnya dengan
menggunkan prosedure Writeln sebagai berikut:
Program tampil;
uses wincrt;
begin
writeln('Belajar');
write('Pascal');
end.

Akan menghasilkan tampilan berikut:

Gambar 2.3. Tampilan Program (kombinasi writeln dan write)

Kata pascal akan tercetak dibawah kata belajar karena untuk


mencetak kata belajar menggunakan prosedure writeln yang berarti cetakan
selanjutnya akan berada dibawah dan tidak sejajar dengan prosedure yang
menggunakan writeln.
Adapun bentuk flowchart dari program diatas adalah sebagai berikut:
START

Cetak Belajar Pascal

END

12 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Latihan I:
1. Buat program untuk mencetak seperti pada gambar berikut, dengan
menggunakan 5 (lima) prosedure cetak (write atau writeln)!

2. Buat program untuk mencetak seperti gambar berikut, sesuai dengan


nama, nim, dan jurusan masing-masing!

13 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

2.2.
a.

Prosedure Baca/Input/Masukkan (read/readln)


Prosedure masukan tanpa variabel
Untuk membaca atau memasukkan nilai dari keyboard dalam program

pascal menggunakan prosedure Read atau Readln. Jika ada prosedure ini,
pengguna harus menginputkan nilai atau menekan tombol ENTER sehingga
dapat meneruskan programnya. Untuk lebih jelasnya dapat dilihat pada listing
program berikut:
uses wincrt;
begin
write('Press ENTER to Continued...');
readln;
write('TERIMA KASIH');
end.

Terdapat 2 (dua) prosedure cetak yaitu untuk mencetak kalimat press


ENTER to Continued dan TERIMA KASIH dan terdapat 1 (satu) prosedure
readln diataranya, yang akan mengakibatkan program tersebut akan meminta
masukan dari keyboard hingga user menekan tombol ENTER, dapat dilihat dari
gambar berikut:

Gambar 2.4. Tampilan Program dengan Readln

Dapat dilihat dari gambar tersebut, bahwa program tersebut masih


berjalan, setelah di ENTER akan muncul tampilan sebagai berikut:

Gambar 2.5. Tampilan Program Setelah di ENTER

Program berakhir ditandai dengan keterangan inactive. Dari contoh di


atas merupakan contoh penginputan data, tetapi belum ada variabel yang
berfungsi sebagai tempat menyimpan data yang akan diinputkan. Selanjutnya
akan dijelaskan tentang memasukkan nilai dengan penyimpanan menggunakan
variabel.

14 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

b.

Prosedure Masukkan dengan Menggunakan Variabel


Untuk melakukan operasi penjumlahan, pengurangan, penambahan,

perkalian dan operasi-operasi lainnya dibutuhkan suatu nilai yang akan di


proses. Nilai tersebut dapat berupa huruf maupun angka. Namun untuk
menyimpan nilainya perlu diberikan variabel sebagai tempat menampung nilai
yang dimasukkan, seperti contoh berikut:
A = 10
B=5
C=A+B
Dari contoh diatas, angka 10 disimpan di Huruf A dimana A tersebut
dikatakan sebagai variabel. Sehingga Variabel A memiliki nilai 10. Begitu juga
untuk Variabel B memiliki nilai 5. Untuk melakukan operasi penambahan, A +
B, dibutuhkan 1 (satu) variabel lagi untuk menyimpan hasil penjumlahan
tersebut. Sehingga dibutuhkan Variabel C sebagai penampung hasil
penjumlahan antara Variabel A dan Variabel B. Dari proses tersebut Variabel
C memiliki nilai 15.
Oleh karena itu, suatu program yang ada operasi aritmatika atau operasi
lainnya membutuhkan variabel sebagai penampung data. Untuk lebih jelasnya
dapat dilihat pada program menghitung nilai C seperti pada contoh ulasan
sebelumnya:
program menghitung_nilai_C;
uses wincrt;
var
A : integer;
B : integer;
C : integer;
begin
A := 10;
B := 5;
C := A + B;
write(C);
end.

START

A = 10,
B=5

C=A+B

Cetak C

END

Untuk kasus di atas, nilai A = 10, B = 5, bukan merupakan


inputan/masukkan nilai, akan tetapi merupakan pemberian nilai awal.
Sehingga dalam kasus tersebut, nilai A sudah bernilai 10 dan nilai B sudah
bernilai 5 dan tidak memerlukan prosedure read/readln.
Untuk penggunaan perintah readln/read akan dilihatkan pada contoh
berikut ini:
15 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

program menghitung_nilai_C;
uses wincrt;
var
A,B,C : integer;
begin
write('A : ');readln(A);
write('B : ');readln(B);
C := A + B;
write(C);
end.

START

Input A, B

C=A+B

Cetak C

END

c.

Variabel dan Tipe Data


Variabel adalah nama atau simbol yang digunakan untuk MEWAKILI

suatu nilai. Nilai suatu variabel dapat berubah ubah dalam suatu proses
program. Di dalam pendeklarasian sebuah variabel harus ditentukan tipe data
yang digunakan oleh variabel tersebut. Seperti pada contoh program diatas
terdapat pendeklarasian variabel
Var
A,B,C

: integer;

Merupakan Nama Variabel

Tipe Data yang digunakan Integer

Untuk lebih jelasnya tentang jenis tipe data yang ada pada program
turbo pascal sebagai berikut:
Integer
Tipe
Sederhana

Tipe Ordinal
Boolean

Tipe Real

Tipe Data

Subjangkauan
(subrange)

Tipe String
Larik (Array)
Tipe
Terstruktur

Char

Rekaman
(Record)
Himpunan
(set)

Tipe Pointer
Berkas (file)
Gambar 2.6. Tipe Data Dalam Pascal
16 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Terbilang
(enumerated)

Berikut ini adalah operator aritmatika yang digunakan di dalam pascal


serta tipe data dan hasil operasi yang digunakan!
Operator

Operasi

Tipe Operand

Tipe Hasil Operasi

Penjumlahan

Integer, real

Integer, real

Pengurangan

Integer, real

Integer, real

Perkalian

Integer, real

Integer, real

Pembagian

Integer, real

real

Div

Pembagian

Integer, integer

Integer

Mod

Sisa pembagian

Integer, integer

integer

LATIHAN II:
1. Buatlah masing-masing program untuk menghitung Luas Segitiga, Luas
Lingkaran, dan Luas Persegi Panjang!
2. Buatlah program untuk menghitung total biaya dengan ketentuan sebagai
berikut:
Diskon = 10 %

merupakan konstanta

Harga = 100.000

Harga diinputkan oleh user/pengguna

3. Buatlah program untuk menginputkan biodata berikut, tentukan tipe data


dari setiap variabel yang digunakan, dengan tampilan program sebagai
berikut:
BIODATA MAHASISWA
Nama

: Kusuma Wijaya

TTL

: Mataram, 31 Desember 1995

Jenis Kelamin : Laki-laki


Umur

: 17 tahun

Penghasilan

: 2000000

No HP

: 081234567890

Jabatan

: Tenaga Ahli

4. Buatlah program untuk menghitung nilai Z dengan rumus sebagai berikut:


Z=A+B
A = F * 0.5
B = M/J
F = 25 - C
J=2*F

17 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN III
STRUKTUR KONDISI/PERCABANGAN/PILIHAN
(3 x Pertemuan)

3. 1.

Struktur Kondisi IF
Struktur pernyataan IF adalah sebagai berikut:
IF {kondisi} then
{pernyataan};

Jika pernyataan lebih dari 1, maka bentuk struktur if adalah sebagai


berikut:
If {kondisi} then
Begin
{pernyataan 1};
{pernyataan 2};
...
{pernyataan n};
End;

Contoh flowchart dengan menggunakan struktur IF dan bentuk listing


programnya adalah sebagai berikut:
Program tentukan_suhu;
uses wincrt;
var
suhu
: real;
begin
write('Suhu
: ');
readln(suhu);

Input Suhu

if suhu > 37 then


write('Suhu Panas');

IF
Suhu >= 37

START

YA

Cetak Suhu Panas

end.

END

3. 2.

Struktur Kondisi IF Then Else


Struktur kondisi merupakan struktur di dalam pemrograman yang akan

melakukan penyeleksian/pemilahan sebuah pernyataan yang memiliki 2 (dua)


aksi atau akibat yaitu bernilai BENAR (TRUE) dan bernilai SALAH (FALSE).
Struktur pernyataan if then else.. adalah sebagai berikut:
IF {kondisi} THEN
{pernyataan}
ELSE
{pernyataan};

18 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Jika pernyataanya lebih dari satu, akan menjadi:


IF {kondisi} THEN
begin
{pernyataan 1};
{pernyataan 2};
...
{pernyataan n};
End
ELSE
begin
{pernyataan A};
{pernyataan B};
...
{pernyataan N};
End;

Untuk lebih jelasnya dapat dilihat pada flowchart berikut:


Algoritma dari flowchar di samping adalah:
1. Mulai
2. Input Nilai
3. Jika Nilai >= 80

START

Jika Ya, Cetak LULUS


Jika Tidak, Cetak GAGAL

Input Nilai

4. Selesai

Adapun bentuk programnya:


program kondisi1;
uses wincrt;
var
nilai
: real;
begin
write('Input Nilai : ');
readln(nilai);
if nilai >= 80 then
write('LULUS')
else
write('GAGAL');
end.

IF
Nilai >= 80

YA

Cetak
LULUS

TIDAK
Cetak
GAGAL

END

Kondisi dari kasus di atas adalah nilai >= 80, yang berarti jika nilai >=
80, (TRUE/BENAR) maka cetak keterangan LULUS, dan sebaliknya jika BUKAN
Nilai >= 80 atau bisa ditulis nilai <80, (FALSE/SALAH) maka cetak keterangan
GAGAL.

19 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

3. 3.

Struktur IF then else if then else.


Seperti pada pembahasan sebelumnya, terdapat IF Then Else

yang merupakan struktur kondisi untuk satu kondisi. Jika terdapat kondisi lebih
dari 1, maka menggunakan struktur sebagai berikut:
IF {Kondisi 1} then
{Pernyataan 1}
ELSE IF {kondisi 2} then
{Pernyataan 2}
ELSE
{Pernyataan 3}

Seperti pada IF sebelumnya, jika terdapat lebih dari 1 (satu) statement


atau pernyataan, maka gunakan begin dan end;.
Untuk lebih jelasnya dapat dilihat dalam flowchart berikut:
START

Algoritma dari dari flowchart:


1. Mulai
2. Masukkan nama, alamat

Input Nama, Alamat,


Jenis_Kamar,
Lama_menginap

Jenis_kamar,
lama_menginap
3. Jika jenis_kamar = anggrek
Ya, tarif = 100.000
Jika jenis_kamar = Mawar
Ya, tarif = 300.000

IF
Jenis_Kamar =
Anggrek

YA
Tarif = 100.000

TIDAK

Jika jenis_kamar = Melati


Ya, tarif = 200.000
4. Biaya_menginap = tarif *
Lama_menginap
5. Cetak biaya_menginap

IF
Jenis_Kamar =
Mawar

YA

TIDAK
Tarif = 200.000

6. Selesai
Biaya_menginap = tarif * Lama_menginap

Cetak
Biaya_menginap

END

20 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Tarif = 300000

Listing program dari flowchart di atas adalah sebagai berikut:


program penginapan;
uses wincrt;
var
nama, alamat
jenis_kamar
lama_menginap
tarif, biaya_menginap
begin
writeln('
write('Nama
write('Alamat
write('Jenis Kamar
write('Lama Menginap

:
:
:
:

string [40];
string [20];
byte;
longint;

Program Penginapan');
: '); readln(nama);
: '); readln(alamat);
: '); readln(jenis_kamar);
: '); readln(lama_menginap);

if jenis_kamar = 'Anggrek' then


tarif := 100000
else if jenis_kamar = 'Mawar' then
tarif := 300000
else
tarif := 200000;
biaya_menginap := tarif * lama_menginap;
write('Biaya Menginap
end.

3. 4.

: '); write(biaya_menginap);

Struktur IF Bersarang (Nested IF)


IF bersarang merupakan struktur kondisi yang mana di dalam sebuah

kondisi terdapat kondisi lagi yang menjadi pemilihan berikutnya. Untuk lebih
jelasnya perhatikan bentuk struktur berikut:
If {kondisi 1} then
Begin
If {kondisi 1.1} then
{pernyataan}
Else
{pernyataan}
End
Else
Begin
If {kondisi 2.1} then
{pernyataan}
Else
{pernyataan}
End;

Penggunaan if bersarang harus menggunakan begin dan diakhiri oleh


end;. Untuk lebih jelasnya tentang IF bersarang, dapat dilihat pada contoh
kasus berikut ini:
Total gaji diperoleh dari gaji pokok ditambah dengan tunjangan istri dan ditambah
dengan tunjangan anak. Untuk tunjangan istri diperoleh dengan syarat telah
menikah, akan mendapat tunjangan 10% dari gaji pokok. Tunjangan anak
21 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

diperoleh dengan syarat jika jumlah anak lebih dari 2 maka, mendapat tunjangan
anak sebesar 6% dari gaji pokok. Jika jumlah anak kurang atau sama dengan 2,
akan mendapat tunjangan anak sebesar jumlah anak dikali dengan 3% dari gaji
pokok. Untuk lebih jelasnya dapat dilihat seperti diagram alir berikut:
Analisa Kasus:
START

Input nama,
status, Gaji_Pokok

IF
Status =
menikah

YA
Tunj_istri =
10%*Gaji_Pokok

Input Jumlah_anak

TIDAK
Tunj_istri = 0
Tunj_anak = 0

Tunj_anak =
jumlah_anak*3%*Gaji_pokok

Tidak

IF
Jumlah_anak >
2

Ya

Total_gaji = Gaji_Pokok +
Tunj_istri + Tunj_anak

Cetak Total_gaji

END

Bentuk Programnya:
program hitung_gaji;
uses wincrt;
var
nama, status
jumlah_anak
gaji_pokok, tunj_istri, tunj_anak
total_gaji
: real;

: string;
: byte;
: real;

begin
write('Nama
= '); readln(nama);
write('Status
= '); readln(status);
write('Gaji Pokok = '); readln(gaji_pokok);
if status = 'menikah' then
begin
write('Jumlah Anak = '); readln(jumlah_anak);
tunj_istri := 0.1 * gaji_pokok;
if jumlah_anak > 2 then
tunj_anak:= 0.06 * gaji_pokok
else
tunj_anak:= jumlah_anak * 0.03 * Gaji_pokok;
end
else
begin
tunj_istri := 0;
tunj_anak := 0;
22 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Tunj_anak =
6%*Gaji_Pokok

end;
Total_gaji := gaji_pokok
writeln('Tunjangan istri
writeln('Tunjangan Anak
writeln('Total Gaji
end.

3. 5.

+
=
=
=

tunj_anak + tunj_istri;
',tunj_istri:8:2);
',tunj_anak:8:2);
',total_gaji:4:2);

Struktur CASE
Struktur CASE pada dasarnya sama dengan struktur IF yaitu merupakan

proses pemilihan/kondisi. Untuk lebih jelasnya dapat dilihat pada kasus berikut
ini:
Pada sebuah perlombaan terdapat pemilihan hadiah dengan ketentuan sebagai
berikut:
Jika memilih nomor 1, akan mendapat Televisi LCD 64 Inch
Jika memilih nomor 2, akan mendapat Motor 150 Cc
Jika memilih nomor 3, akan mendapat Rumah Mewah berserta Isinya

Adapun bentuk sintax dengan menggunakan IF adalah sebagai berikut:


program hadiah;
uses wincrt;
var
pilih
: byte;
begin
writeln('Pilih HADIAH antara no 1-10 !!!!');
write('Pilih Nomor : '); readln(pilih);
if pilih = 1 then
write('Televisi LCD 64 Inch')
else if pilih = 5 then
write('Motor 150 cc')
else if pilih = 6 then
write('Rumah Mewah Berserta Isinya')
else
write('Maaf Anda Belum Beruntung');
end.

Adapun bentuk sintax dengan menggunakan case adalah sebagai berikut:


program hadiah;
uses wincrt;
var
pilih
: byte;
begin
writeln('Pilih HADIAH antara no 1-10 !!!!');
write('Pilih Nomor : '); readln(pilih);
case pilih of
1: write('Televisi LCD 64 Inch');
5: write('Motor 150 cc');
6: write('Rumah Mewah Berserta Isinya');
else
write('Maaf Anda Belum Beruntung');
end;
end.
23 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

3. 6.

Kondisi AND dan Kondisi OR


Kondisi AND
Kondisi AND merupakan kondisi pilihan dimana semua kondisi tersebut
harus bernilai benar maka aksi yang akan dipilih adalah benar. Untuk
lebih jelasnya dapat dilihat dalam tabel kebenaran berikut:
A
1
1
0
0

B
1
0
1
0

A and B
1
0
0
0

Dengan ketentuan :
0

: bernilai SALAH

: bernilai BENER

Contoh dalam kasus!


Razia motor akan memeriksa kelengkapan SIM dan STNK. Sanksi akan
diberikan jika salah satu tidak terpenuhi. Maka program dapat dibuat
sebagai berikut:
program razia;
uses wincrt;
var
sim, stnk
: string [3];
begin
writeln('#### PROGRAM RAZIA MOTOR ####');
write('Ada SIM
: '); readln(sim);
write('Ada STNIK
: '); readln(stnk);
if (sim = 'ada') and (stnk = 'ada') then
write('Anda adalah orang yang taat peraturan')
else
write('Anda terkena Sanksi');
end.

Adapun bentuk flowchartnya adalah sebagai berikut:

24 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Kondisi OR
Kondisi OR merupakan kondisi dimana aksinya akan SALAH jika semua
kondisi yang diajukan bernilai SALAH. Adapun tabel kebenaran untuk
kondisi OR adalah sebagai berikut:
A
1
1
0
0

B
1
0
1
0

A OR B
1
1
1
0

Contoh dalam kasus!


Bonus akan diperoleh jika jam kerja > 160 atau hasil produksi > 1000
unit. Adapun bentuk listing programnya adalah sebagai berikut:
program bonus;
uses wincrt;
var
jam_kerja, hsl_produksi

: integer;

begin
writeln('##### BONUS #####');
write('Jumlah Jam Kerja
: '); readln(jam_kerja);
write('Hasil Produksi
: '); readln(hsl_produksi);
if ((jam_kerja > 160) or (hsl_produksi > 1000))
write('Anda Mendapat Bonus')
else
write('Anda Tidak Mendapat Bonus');
end.

Adapun bentuk flowchartnya adalah sebagai berikut:


Start

Input jam_kerja,
jml_produksi

IF jam_kerja > 160


OR
jml_produksi > 1000

Ya

Cetak Anda
mendapat bonus

Tidak
Cetak Anda ttidak
mendapat bonus

END

25 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

then

Latihan III:
1.

Buatlah program untuk menentukan kelulusan. Syarat dinyatakan lulus jika


nilai >= 80!

2.

Buatlah program untuk menentukan grade nilai dengan ketentuan sebagai


berikut:
Jika nilai akhir >= 90 sampai 100 akan mendapat Grade A
Jika nilai akhir >= 80 sampai < 90 akan mendapat Grade B+
Jika nilai akhir >= 70 sampai < 80 akan mendapat Grade B
Jika nilai akhir >= 60 sampai < 70 akan mendapat Grade C+
Jika nilai akhir >= 50 sampai < 60 akan mendapat Grade C
Jika nilai akhir >= 40 sampai < 50 akan mendapat Grade D
Jika nilai akhir kurang dari 40 akan mendapat Grade E
Nilai akhir = (20 % * Nilai harian) + (30 % * Nilai MID) + (50 % * Nilai UAS)
Diinputkan nama, nim, semester, jurusan, dll (lengkapi data)!

3.

Buat program untuk menentukan bilangan ganjil dan bilangan genap!

4.

Buatlah program untuk menentukan nilai terbesar dari 3 (tiga) buah nilai!

5.

Buat program untuk kasus berikut, adapun tampilan programnya adalah


sebagai berikut:

Dengan ketentuan!
Jenis kamar dan tarif diperoleh dari table berikut:
No
1
2
3

Jenis Kamar
Mawar
Anggrek
Melati

Tarif/Malam
100.000
200.000
400.000

26 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Untuk diskon diperoleh jika biaya menginap >= 1.000.000 sebesar 10% dari
biaya menginap.
6.

Buatlah program untuk menghitung Luas Persegi panjang, Luas Segitiga,


dan Luas Lingkaran dengan menggunakan menu pilihan. Adapun contoh
programnya adalah sebagai berikut:

7.

Buatlah program untuk menentukan Total Gaji dari penggajian pegawai,


dengan ketentuan sebagai berikut:
Total gaji diperoleh dari gaji pokok ditambah dengan gaji lembur. Dimana
untuk golongan A mendapat gaji pokok sebesar 2.000.000, untuk golongan
B mendapat gaji pokok sebesar 1.500.000 dan untuk golongan C mendapat
gaji pokok sebesar 1.000.000.
Untuk gaji lembur, diperoleh dari jika jumlah jam kerja > 160 perbulan, maka
selebihnya dianggap lembur. Gaji lembur diperoleh dari Jam lembur dikali
dengan 10.000.

8.

Buatlah program untuk menentukan Total Gaji dari penggajian pegawai,


dengan ketentuan sebagai berikut:
Total gaji diperoleh dari gaji pokok ditambah dengan tunjangan istri dan
ditambah dengan tunjangan anak. Untuk tunjangan istri diperoleh dengan
syarat telah menikah, akan mendapat tunjangan 10% dari gaji pokok.
Tunjangan anak diperoleh dengan syarat jika jumlah anak lebih dari 2 maka,
mendapat tunjangan anak sebesar 6% dari gaji pokok. Jika jumlah anak
kurang atau sama dengan 2, akan mendapat tunjangan anak sebesar jumlah
anak dikali dengan 3% dari gaji pokok.

27 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

9.

Buatlah program seperti flowchart di bawah ini!


START

Input A, B, C

Ya

Ya

IF
(A and B) >10

Tidak

IF
(A or B) > 10

IF
A>C

Tidak

Tidak
Z = A*B

Z = A*C

Ya

Z=A-B
Tidak

Ya

IF
A>B

Z=B-A

Z=B-C

Output
Z

END

10. Buatlah program untuk kasus berikut jika diketahui data sebagai berikut:
No

Kelas

Daya

Tarif/kwh

Ekonomi

900 watt

500/kwh

Menengah

1200 watt

1000/kwh

Bisnis

2200 watt

2000/kwh

Tentukan total bayar untuk biaya listrik, dengan ketentuan sebagai beriku:
Biaya pemakaian

= tarif * jumlah pemakaian

Denda diperoleh jika jumlah pemakaian >= 200 atau


tanggal pembayaran > 20, dengan denda sebesar 10 % dari biaya
pemakaian.
Bonus diperoleh jika jumlah pemakaian < 200 atau
tanggal pembayaran <= 20, dengan bonus sebesar 10 % dari biaya
pemakaian.
28 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN IV
STRUKTUR PENGULANGAN
(For, Whiledo, dan RepeatUntil)
(3 x Pertemuan)
4.1.

Strukur For
Fortodo
Struktur forto..do merupakan pengulangan yang sudah pasti jumlah
pengulangannya, dimana jumlah pengulangannya ditentukan oleh nilai
awal dan nilai akhir. Struktur ini perhitungan nilainya secara ascending
atau menaik dari nilai awal ke nilai akhir. Adapun bentuk prosedure dalam
penggunaan fortodo adalah sebagai berikut:
For nama_variabel := nilai_awal to nilai_akhir do
{statement/pernyataan}

Jika lebih dari 1 (satu) pernyataan yang mengalami perulangan, harus


ditambah dengan begin dan diakhiri dengan end;, untuk lebih jelasnya
sebagai berikut:
For nama_variabel := nilai_awal to nilai_akhir do
Begin
{statement/pernyataan}
{statement/pernyataan}

End;

Adapun contoh program dengan menggukan Fordo adalah sebagai


berikut:
program pengulangan;
uses wincrt;
var
i
: byte;
begin
for i := 1 to 5 do
writeln('Belajar Pascal');
end.

Bentuk flowchart dari program di atas dapat digambarkan sebagai berikut:

29 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Fordowntodo
Sama halnya dengan Fortodo.. hanya berbeda perhitungan nilainya
secara descending atau dari besar ke kecil atau nilai akhir ke nilai awal.
Adapun bentuk perintah dari Fordowntodo adalah sebagai berikut:
For nama_variabel := nilai_akhir downto nilai_awal do
{statement/pernyataan}

Adapun bentuk listing program dengan menggunakan Fordowntodo


adalah sebagai berikut:
program pengulangan;
uses wincrt;
var
i
: byte;
begin
for i := 5 downto 1 do
writeln('Belajar Pascal');
end.

Dalam program di atas, akan menghasilkan program sebagai berikut:

Setelah program dijalankan, maka akan tampil 5 (lima) kalimat belajar


pascal. Berikut ini contoh program dengan dua (2) pernyataan/statement
adalah sebagai berikut:
program pengulangan;
uses wincrt;
var
i
: byte;
begin
for i := 1 to 5 do
begin
writeln('Belajar Pascal');
writeln('Gampang woi...');
end;
end.

Start

For I = 1 to 5

Cetak Belajar Pascal


Cetak Gampang Woi

Next I

END

30 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

4.2.

Struktur Whiledo
Struktur Whiledo merupakan pengulangan dengan menggunakan

kondisi, dimana pengulangan akan terjadi jika kondisi bernilai benar. Adapun
bentuk perintah pengulangan dengan menggunakan while..do dalam pascal
adalah sebagai berikut:
While {kondisi} do
Begin
{pernyataan}

End;

Dengan kasus yang sama pada struktur fordo, dapat diliat listing
program dengan menggunakan perintah whiledo sebagai berikut:
program pengulangan;
uses wincrt;
var
i
: byte;
begin
i:= 1;
while(i <= 5) do
begin
writeln('Belajar Pascal');
writeln('Gampang woi...');
i:= i+1;
end;
end.

Adapun bentuk flowchart dari kasus di atas dapat digambarkan sebagai


beirkut:
Start

Start

I=1

I=1

While I <= 5

Tidak

END

Cetak Belajar Pascal


Cetak Gampang Woi

I=I+1

Ya
Cetak Belajar Pascal
Cetak Gampang Woi

YA
While I <= 5
I=I+1

TIDAK
END

31 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

4.3.

Struktur RepeatUntil
Struktur RepeatUntil merupakan pengulangan dengan menggunakan

kondisi, dimana pengulangan akan terjadi jika kondisi bernilai salah. Adapun
bentuk printah menggunakan repeatuntil dalam pascal adalah sebagai berikut:
Repeat
{pernyataan}

Until

Dengan kasus yang sama pada struktur fordo, dapat diliat listing
program dengan menggunakan perintah RepeatUntil sebagai berikut:
program pengulangan;
uses wincrt;
var
i
: byte;
begin
i:= 1;
repeat
writeln('Belajar Pascal');
writeln('Gampang woi...');
i:= i+1;
until (i>5);
end.

Adapun bentuk flowchart dengan menggunakan RepeatUntil adalah


sebagai berikut:
Start

Start

I=1

I=1

Cetak Belajar Pascal


Cetak Gampang Woi

Repeat

I=I+1

Cetak Belajar Pascal


Cetak Gampang Woi

I=I+1

Tidak
Repeat > 5

Tidak
Ya

Until I > 5

END

Ya
END

32 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Counter dan Logika Penjumlahan


Counter
Counter merupakan logika untuk menentukan jumlah dari suatu perulangan.
Bentuk logika counter ini adalah sebagai berikut:
I = I + 1

Logika Penjumlahan
Logika penjumlahan merupakan cara untuk menjumlahkan niilai dari suatu
perulangan. Berikut bentuk atau rumus dari logika penjumlahan tersebut:
Jumlah = jumlah + nilai

Berikut ini adalah contoh kasus untuk counter dan logika penjumlahan
tersebut:
No
: 0001
Tanggal
: 14 Agustus 2012
Nama
: Kusuma
--------------------------------------------------------No Nama Barang
Harga
Jumlah
Total Harga
--------------------------------------------------------1
Pepsodent
2000
2
4000
2
Lifeboy
2500
1
2500
3
Sampoo Clear
500
4
2000
--------------------------------------------------------Total Bayar
8500

Analisa dari kasus di atas adalah sebagai berikut:


1.
2.
3.
4.
5.
6.

Mulai
Masukkan no, tanggal, nama, nama_barang, harga, jumlah
I = I + 1
Total_harga = harga * jumlah
Jumlah = jumlah + total harga
Input Barang Lagi?
Ya, Kembali ke-2
Tidak, ke-7
7. Cetak Total Bayar
8. Selesai

Bentuk listing program dari kasus di atas adalah sebagai berikut:


program pengulangan;
uses wincrt;
var
i,no,jumlah
: byte;
no_trans,tanggal,nama
: string[30];
nm_brg
: string[20];
harga, total_harga,total_jumlah
: longint;
jawab
: char;
begin
i:=0;
writeln('##### PROGRAM PENJUALAN ######');
33 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

write('No Transaksi
: '); readln(no_trans);
write('Tanggal
: '); readln(tanggal);
write('Nama
: '); readln(nama);
jawab:= 'y';
writeln('-------------------------------------------------');
while (upcase(jawab) = 'Y') do
begin
i:=i+1;
write('No
: ');writeln(i);
write('Nama Barang
: ');readln(nm_brg);
write('Harga
: ');readln(harga);
write('Jumlah
: ');readln(jumlah);
total_harga:=harga*jumlah;
total_jumlah:=total_jumlah+total_harga;
write('Total Harga
: ');writeln(total_harga);
writeln;writeln;
write('Input Lagi [y/t] ? '); readln(jawab);
end;
writeln('---------------------------------------------------');
write('Total Harga --> ',total_jumlah);
end.

Bentuk flowchartnya adalah sebagai berikut:

counter

Logika Penjumlahan

34 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

LATIHAN IV:
1. Buatlah program untuk mencetak deret berikut dengan menggunakan
struktur pengulangan:
a. 0 3 8 15 24 35N
b. 1 1 2 3 5 8 13N
c. 4 7 10 13 N
d. 2 5 10 17N
e. Input deret = 5
1 2 3 4 5 = 15
2. Buat program untuk menghitung nilai faktorial!
Contoh:
1!

=1

2! 1 * 2

=2

4! 1 * 2 * 3 * 4

= 24

Dst..
3. Buat program untuk menghitung pangkat!
Contoh:
-

4 pangkat 3 = 64

2 pangkat 3 = 8

3 pangkat 3 = 9
Dst

4. Buatlah program untuk kasus berikut:

No

Nama Pasien

Biaya Berobat

Diskon

Total Bayar

Total Pendapatan Rumah Sakit


Keterangan:
Diskon diperoleh jika biaya berobat > 300.000 sebesar 10%
-

Gunakan Uncounted Loop

5. Buatlah program untuk kasus berikut:

Diketahui data pelanggan PDAM dibedakan menjadi 3 (tiga) jenis


langganan yang dibedakan berdasarkan biaya beban dan tarif. Adapun
ketentuan dari PDAM ini adalah sebagai berikut:
Jenis langganan = Umum,

tarif = Rp.5.000/m3, biaya beban = 50.000

35 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Jenis langganan = Rumah Tangga, tarif = Rp.3.000/m3, biaya beban = 40.000


Jenis langganan = Bisnis, tarif = Rp.7.000/m3, biaya beban = 75.000

Biaya_pakai = jml_pemakaian * tarif


Total Bayar = Biaya_beban + biaya pakai
Buat program dengan input sebagai berikut: nama, jenis langganan,
jumlah pemakaian. Cetak total bayar dan total pendapatan untuk PDAM
tersebut!
6. Buatlah program untuk menentukan pemenang dalam pemilihan ketua
bem dimana terdapat 3 (tiga) calon kandidat dengan simbol. Kandidat
pertama dengan simbol apel, kandidat kedua dengan simbol anggur,
dan kandidiat ketiga dengan simbol melon. Tentukan pemenang dari
pertama, kedua, dan ketiga serta tentukan jumlah pemilih!

36 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN V
ARRAY/LARIK/VARIABEL BERINDEX
(2 x Pertemuan)
5.1.

Array 1 Dimensi
Array merupakan suatu variabel yang mempunyai nama yang sama, tipe

data yang sama, tetapi memiliki nilai yang berbeda yang dibedakan oleh index.
Dapat juga diartikan sebagai struktur data yang menyimpan sekumpulan elemen
yang bertipe sama. Tipe data index yang digunakan harus merupakan tipe data
Ordinal/keterurutan seperti Integer atau char. Adapun bentuk Array dapat
digambarkan dengan gambar berikut:
Data[5] = {sepatu, kaos, celana, sandal, kemeja}
Data[5]

1
Sepatu

2
Kaos

3
Celana

4
Sandal

5
kemeja

Data pada index pertama (data[1]) mempunyai nilai Sepatu, data pada
index kedua (data[2]) mempunyai nilai Kaos, dan seterusnya.
Contoh program dalam penginputan grade mahasiswa adalah sebagai
Start

berikut:

Deklarasi Variabel Array

DIM nama[100], grade[100], I = 0,


jawab = y

I=I+1

Proses Penginputan

Input nama[i], grade[i]

Input lagi?

For j = 1 to i

Proses Mencetak Array

Cetak nama[j], grade[j]

Next J

37 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

END

program array1D;
uses wincrt;
var
jawab
:
i,j
:
nama
:
grade
:

char;
byte;
Array [1..100] of string[30];
Array [1..100] of string[2];

begin
jawab := 'y';
i:=0;
writeln('###################################');
writeln('##
##');
writeln('##
PROGRAM GRADE MAHASISWA
##');
writeln('##
##');
writeln('###################################');
writeln;
while(upcase(jawab) = 'Y') do
begin
i:= i + 1;
write('No
: '); writeln(i);
write('Nama
: '); readln(nama[i]);
write('Grade
: '); readln(grade[i]);
writeln;writeln;
write('Input Data Lagi [y/t] ?'); readln(jawab);
end;
writeln('Data Setelah Diinputkan');
writeln('Tekan ENTER untuk melihat...');
readln;
writeln('----------------------------');
writeln('No Nama Mahasiswa
Grade ');
writeln('----------------------------');
for j := 1 to i do
begin
write(j, nama[j]:16, grade[j]:7);
writeln;
end;
writeln('----------------------------');
end.

38 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

5.2.

Pencarian (Searching)
Pencarian (searching) merupakan suatu proses mencari data pada

sekumpulan data. Pencarian ini dapat dilakukan dengan dua cara yaitu Linear
Searching dan Binery Searching.
Adapun algoritma dengan menggunakan Linear Searching adalah
sebagai berikut:
1.
2.
3.
4.

Mulai
Masukkan Nilai variabel yang dicari
I = I + 1
If cari = Data[i]
Ya, k = k + 1
Hasil[k] = i
5. Apakah data sudah ditelusuri semua?
Ya, lanjutkan ke proses 6
Tidak, kembali ke proses 3
6. If k = 0?
Ya, Data tidak ditemukan
Tidak, cetak semua data yang ditemukan.
7. Selesai

Algoritma dengan menggunakan Binery Searching adalah sebagai


berikut:
1.
2.
3.
4.
5.

6.
7.

8.
9.

Mulai
Urutkan data secara ascending
Input nilai variabel yang dicari
Tentukan BB (index batas bawah) dan BA (index batas atas)
If (BB = BA) or (data telah ditemukan)?
Ya, ke proses 9
Tidak, ke proses 6
MID = (BB + BA) div 2
If cari = data [mid]?
Ya, Data ditemukan pada index ke-mid
Ke proses 9
Tidak, if (cari > data[mid]) ?
Ya,
BB = mid + 1
Tidak,
BA = mid - 1
Kembali ke proses 5
Selesai

39 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

5.3.

Pengurutan (Sorting)
Pengurutan (sortiing) merupakan proses mengurutkan nilai, baik dari nilai

terkecil ke nilai terbesar (ascending) atau sebaliknya dari terbesar ke nilai terkecil
(descending).
Algoritma untuk melakukan pengurutan secara Ascending
Deklarasi
L
: array [1..100] of integer;
I, k, temp : integer;
Algorithma :
For I 1 to n-1 do
For k n downto i+1 do
If L[k] < L [k-1] then
Temp L[k]
L[k] L [k-1]
L[k-1] temp
Endif
Endfor
Endfor

5.4.

Array 2 Dimensi
Array 2 dimensi merupakan pengembangan dari Array 1 Dimensi, dimana

pada Array 1 dimensi, index yang digunakan 1 (satu) yang

berarti

penyimpanannya dalam bentuk kolom ataupun dalam bentuk baris. Sedangkan


pada

Array

Dimensi,

terdapat

(dua)

index

yang

dapat

berarti

penyimpanannya dalam bentuk baris dan kolom.


Untuk lebih jelasnya dapat dilihat dalam contoh program berikut:
A [5,5] = itu berarti terdapat penyimpanan data dengan 5 kolom dan 5
baris seperti tabel berikut:
1
2
3
4
5
1 10
A [5,5] =
2
87
3
33
4 34
5
44
Di liat dari tabel di atas, penempatan nilai tersebut dapat diwakilkan
dengan cara berikut:
A [1,1] = 10
A [1,4] = 34
A [2,2] = 87
A [3,3] = 33
A [5,5] = 55

40 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

LATIHAN V:
1. Buatlah program dengan menu berikut:
PROGRAM PENJUALAN
<< Pilih Menu >>
1. Input Data
2. Lihat Hasil
3. Cari Data
4. Urutkan Data
5. Exit

Dalam program tersebut gunakan Array 1 dimensi dan bagi setiap


menu dengan melakukan pemilihan!

2. Buatlah program untuk perhitungan Matrix (penjumlahan matrix,


pengurangan matrix, dan perkalian matrix)

3. Buatlah program kwitansi berikut! Dengan ketentuan, setiap orang


dapat membeli lebih dari 1 barang, dan setiap setiap orang membeli
barang yang berbeda-beda. (Gunakan Array 2 Dimensi)
Contoh tampilan setelah data diinputkan!
Pembeli Pertama
Nomor
: 001
Tgl
: 23 April 2012
Nama Pembeli
: Kusuma
---------------------------------------------------------No Nama barang
Harga
jumlah
Total Harga
---------------------------------------------------------1. Sabun
3000
4
12000
2. Pepsodent
2500
4
10000
3. Sampo Clear
500
5
2500
---------------------------------------------------------Total pembayaran
24500

Pembeli Kedua
Nomor
: 002
Tgl
: 23 April 2012
Nama Pembeli
: Alfian
---------------------------------------------------------No Nama barang
Harga
jumlah
Total Harga
---------------------------------------------------------1. Silverqueen
13000
2
26000
---------------------------------------------------------Total pembayaran
26000

Tentukan juga total pendapatan pedagang yang diperoleh dari


penjumlahan semua total pembayaran pembeli!!!
41 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN VI
PROCEDURE (PROSEDUR) DAN FUNCTION (FUNGSI)
(2 x Pertemuan)
6.1.

Prosedur (Procedure)
Prosedur (procedure) atau Fungsi (function) adalah suatu program

terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul


program) yang merupakan sebuah program kecil untuk memproses sebagian
dari pekerjaan program utama, khusus untuk fungsi dapat menghasilkan nilai
sendiri. Prosedur dibagi menjadi 2 (dua) yaitu (1) Prosedur Sederhana yaitu
merupakan prosedure yang tidak menerima argumen (nilai atau data) ketika
dieksekusi; (2) Prosedure Kompleks menerima nilai yang diproses ketika
dieksekusi.
Berikut contoh prosedure sederhana!
program prosedure_garis;
uses wincrt;
{prosedure garis}
procedure garis;
begin
writeln('-----------------------');
end;
{program utama}
begin
garis;
writeln('PROGRAM PENJUALAN');
garis;
end.

Prosedur Garis

Pemanggilan prosedur

Berikut contoh prosedure kompleks!


program prosedur;
uses wincrt;
var
r,luas
: real;

Variabel GLOBAL

{prosedure lingkaran}
procedure lingkaran (jari2 : real);
var
phi : real;
begin
phi:=22/7;
luas:=phi*sqr(jari2);
end;
{program utama}
begin
writeln('Program Hitung
write('Input Jari-jari
lingkaran(r);
write('Luas Lingkaran
end.
42 | P r a k t i k u m A l g o r i t m

Prosedure Lingkaran
Variabel LOKAL

Luas Lingkaran');
: '); readln(r);
pemanggilan Prosedur
: ',luas:0:2);
a dan Pemrograman

Prosedur dengan PARAMETER


Perhatikan bentuk program berikut:
A

program prosedur;
uses wincrt;
var
x : integer;

program prosedur;
uses wincrt;
var
x : integer;

{prosedur nilai}
procedure nilai(a:integer);
begin
writeln('Nilai a pertama : ',a);
a:= 5;
writeln('Nilai a kedua
: ',a);
end;

{prosedur nilai}
procedure nilai(var a:integer);
begin
writeln('Nilai a pertama : ',a);
a:= 5;
writeln('Nilai a kedua
: ',a);
end;

{program utama}
begin
x:=10;
writeln('x sebelum prosedure = ',x);
nilai(x);
writeln('x Setelah prosedure = ',x);
end.

{program utama}
begin
x:=10;
writeln('x sebelum prosedure = ',x);
nilai(x);
writeln('x Setelah prosedure = ',x);
end.

Hasil setelah program dijalankan!


A

Pada Point A nilai x setelah prosedure tidak berubah, hal ini yang dikatakan
sebagai Parameter Nilai (Pass by Value), sedangkan untuk Point B, nilai x
setelah prosedur mengalami perubahan sesuai dengan perubahan dari nilai
parameter dari prosedure nilai tersebut, hal ini yang dikatakan sebagai
Parameter Variabel (Pass by Variabel).

43 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

6.2.

Fungsi (Function)
Sama seperti prosedure hanya fungsi memiliki nilai. Untuk lebih jelasnya

perhatikan contoh listing program berikut:


program fungsi;
uses wincrt;
var
nilai
: integer;
{fungsi kubik}
function kubik(x:integer) : longint;
begin
kubik:=x*x*x;
end;
{program utama}
begin
write('Input Nilai : '); readln(nilai);
write(nilai, ' pangkat 3 = ', kubik(nilai));
end.

Adapun bentuk flowchart dari kasus di atas untuk prosedur dan fungsi
adalah sebagai berikut:

Flowchar Program Utama

Prosedure Kubik(x)

44 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Latihan VI!
1. Buatlah program untuk menghitung Grade dengan tampilan menu utama
terdiri dari:
-

Input Data

{buat dalam 1 (satu) prosedure}

Cetak hasil

{buat dalam 1 (satu) prosedure}

Pencarian

{buat dalam 1 (satu) prosedure}

Pengurutan

{buat dalam 1 (satu) prosedure}

Diinputkan nama, nim, semester, jurusan, nilai harian, nilai mid, nilai uas
dengan menggunakan prosedur input.
Untuk menentukan grade yang diperoleh, gunakan Fungsi (Function).
Ketentuan proses nilai akhir dan penentuan grade dapat dilihat pada
Latihan III soal nomor 2!.

2. Buat program untuk menghitung konversi suhu, dari Celcius ke Reamur,


dari Celcius ke Fahreinheit, dari celcius ke Kelvin dengan menggunakan
prosedure atau fungsi!

3. Perhatikan Latihan V soal nomor 3 (tiga), buatlah program untuk kasus


tersebut dengan ketentuan sebagai berikut:
-

Input Data

{buat dalam 1 (satu) prosedure}

Cetak hasil

{buat dalam 1 (satu) prosedure}

Pencarian

{buat dalam 1 (satu) prosedure}

Pengurutan

{buat dalam 1 (satu) prosedure}

45 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

PEMBAHASAN VII
REKURSI DAN RECORD (REKAMAN)
(2 x Pertemuan)

7.1.

Rekursi
Rekursi merupakan suatu prosedur atau fungsi yang mana dapat

memanggil dirinya sendiri. Dalam pembuatan rekursi tersebut harus ada


penghentian operasi (iterasi). Untuk lebih jelasnya, dapat diliat pada contoh
program dibawah ini!
Program faktorial;
Uses wincrt;
Var
x : integer;
{fungsi Faktorial}
function factorial (n:integer):integer;
begin
if n<2 then {ini adalah syarat penghentian operasi}
factorial:=1
else
factorial:=n*factorial(n-1); {ini bagian rekursi}
end;
{Program Utama}
begin
writeln('PROGRAM HITUNG NILAI FAKTORIAL');
writeln('------------------------------');
write('Masukkan nilai : '); readln(x);
writeln(x,'! adalah ',factorial(x));
end.

Dari program tersebut dapat dijelaskan sebagai berikut:


Jika x= 5,
Ke-1, n=5. Factorial:=5*factorial(4); Perlu Pemanggilan Ke-2
Ke-2, n=4. Factorial:=4*factorial(3); Perlu Pemanggilan Ke-3
Ke-3, n=3. Factorial:=3*factorial(2); Perlu Pemanggilan Ke-4
Ke-4, n=2. Factorial:=2*factorial(1); Perlu Pemanggilan Ke-5
Ke-5, n=1. Factorial:=1;
Ke-4 menjadi = Factorial 2*1

Ke-3 menjadi = Factorial 3*2

Ke-2 menjadi = Factorial 4*6

24

Ke-1 menjadi = Factorial 5*24

120

46 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

7.2.

Record (Rekaman)
Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data

dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk


menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di
banding array). Contoh , sebuah record dengan empat buah field.
Field 1

Field 2

Field 3

Field 4

Cara pendeklarasian dari record adalah sbb:


Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
Mendefinisikan variabel untuk dilakukan operasi.
Adapun cara mendeklarasikan perintah record adalah sebagai berikut:
type nama_record = record
identifier_1 : tipe_data_1;
. . .
. . .
identifier_n : tipe_data_n;
end;
var
variabel : nama_record;

Contoh program dengan menggunakan record:


program contoh_record;
uses wincrt;
type identitas = record
nama
: string[30];
alamat
: string[40];
Golongan
: string[5];
Gaji_Pokok
: longint;
end;
var
biodata : identitas;
begin
biodata.nama
biodata.alamat
biodata.golongan
biodata.gaji_pokok
writeln('Nama
writeln('Alamat
writeln('Golongan
writeln('Gaji Pokok
end.

:= 'Kusuma Wijaya';
:= 'Mataram';
:= 'IV D';
:= 5000000;
: ',biodata.nama);
: ',biodata.alamat);
: ',biodata.golongan);
: ',biodata.gaji_pokok);

Untuk memudahkan dalam pengulangan penulisan nama variabel


sehingga dalam penulisan tidak menjadi panjang seperti contoh di atas
(biodata.gaji_pokok), dapat digunakan dengan statement with {nama pemanggil
record} do. Dapat dilihat pada contoh program berikut:

47 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

program contoh_record;
uses wincrt;
type identitas = record
nama
: string[30];
alamat
: string[40];
Golongan
: string[5];
Gaji_Pokok
: longint;
end;
var
biodata : identitas;
begin
with biodata do
begin
nama
alamat
golongan
gaji_pokok

:=
:=
:=
:=

'Kusuma Wijaya';
'Mataram';
'IV D';
5000000;

writeln('Nama
writeln('Alamat
writeln('Golongan
writeln('Gaji Pokok

:
:
:
:

',nama);
',alamat);
',golongan);
',gaji_pokok);

end;
end.

Penggunaan record juga dapat dikombinasikan dengan menggunakan


array, dapat dilihat pada contoh program di atas yang diubah dalam bentuk array
sebagai berikut:
program contoh_record_array;
uses wincrt;
type identitas = record
nama
: string[30];
alamat
: string[40];
Golongan
: string[5];
Gaji_Pokok
: longint;
end;
var
biodata : Array [1..10] of identitas;
begin
with biodata[1] do
begin
nama
alamat
golongan
gaji_pokok

:=
:=
:=
:=

writeln('Nama
writeln('Alamat
writeln('Golongan
writeln('Gaji Pokok

'Kusuma Wijaya';
'Mataram';
'IV D';
5000000;
:
:
:
:

',nama);
',alamat);
',golongan);
',gaji_pokok);

end;
end.
48 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Latihan VII!
1. Buat program lain yang menggunakan cara rekursi!
2. Kembangkan program pada Latihan VI soal nomor 3 (tiga) dengan
penambahan Record!

49 | P r a k t i k u m A l g o r i t m a d a n P e m r o g r a m a n

Anda mungkin juga menyukai