Bab 1 - eLisa UGM

advertisement
Bab 1
Algoritma dan Pemrograman Tersruktur
1.1 Definisi Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis.
Contoh algoritma Euclidean untuk menentukan FPB (Faktor Persekutan Terbesar). Misal
FPB untuk 80 dan 12 adalah 4.
Algoritma Euclidean
Diberikan dua buah bilangan bulat tak negatif m dan n (m>=n). Carilah FPB dari kedua
bilangan tersebut.
Deskripsi
1. Jika n = 0, maka m adalah jawabannya; stop. Tetapi jika n<>0, lanjutkan ke langkah 2.
2. Bagilah m dengan n, misalkan r adalah sisanya.
3. Ganti nilai m dengan n, dan nilai n dengan r. Ulang kembali ke langkah 1
Algoritma memiliki lima ciri penting :
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti – dua (ambigu).
3. Algoritma memiliki nol atau lebih masukan.
4. Algoritma memiliki nol atau lebih keluaran.
5. Algoritma harus efektif.
1
1.2 Pemrograman Terstruktur
Pada pemrograman terstruktur, program dibedakan antara bagian data dan
instruksi. Bagian instruksi terdiri atas sederetan instruksi yang dilaksanakan satu per satu
secara berurutan (terstruktur) oleh sebuah pemroses.
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran, dan C
mendukung kegiatan pemrograman terstruktur. Dalam modul ini, digunakan bahasa
Pascal.
1.3 Notasi Algoritma
Notasi algoritma bukan notasi bahasa pemrograman. Ada beberapa notasi yang
digunakan dalam penulisan algoritma.
1. Notasi I : menyatakan langkah-langkah algoritma dengan kalimat deskriptif.
Algoritma Euclidean
Diberikan dua buah bilangan bulat tak negatif m dan n (m>=n). Carilah FPB dari kedua
bilangan tersebut.
Deskripsi
1. Jika n = 0, maka m adalah jawabannya; stop.Tetapi jika n<>0, lanjutkan ke langkah 2.
2. Bagilah m dengan n, misalkan r adalah sisanya.
3. Ganti nilai m dengan n, dan nilai n dengan r. Ulang kembali ke langkah 1
2.Notasi II :menggunakan diagram alir (flowchart)
Flowchart adalah serangkaian bagan-bagan yang menggambarkan alir program.
Flowchart atau diagram alir memiliki bagan-bagan yang melambangkan fungsi tertentu.
Bagan, nama dan fungsinya seperti yang disajikan pada tabel berikut :
2
Tabel 1. Bagan Flowchart
BAGAN
NAMA
FUNGSI
TERMINATOR
Awal atau akhir program
FLOW
Arah aliran program
PREPARATION
inisialisasi/pemberian nilai awal
PROCES
Proses/pengolahan data
INPUT/OUTPUT
DATA
input/output data
SUB PROGRAM
sub program
DECISION
Seleksi atau kondisi
ON PAGE
CONNECTOR
Penghubung bagian-bagian
flowchart pada halaman yang sama
OFF PAGE
CONNECTOR
Penghubung bagian-bagian
flowchart pada halaman yang
berbeda
COMMENT
Tempat komentar tentang suatu
proses
Flowchart selalu diawali dan diakhiri oleh bagan terminator. Aliran selalu dari
atas ke bawah, satu demi satu langkah. Tidak ada proses yang dikerjakan bersamaan,
semua dikerjakan satu persatu.
3
Proses yang dilakukan komputer sebenarnya hanya ada 3 proses: input, proses
data dan output.
Misal Masalah 1: bagaimana menentukan bahwa suatu bilangan itu adalah
bilangan genap atau ganjil?
Input
: bilangan bulat.
Proses
: menentukan bilangan ganjil atau genap dengan melakukan
pembagian bilangan dengan bilangan 2. Jika sisa pembagian NOL
maka bilangan tersebut genap, sebaliknya ganjil.
Output : Bilangan Ganjil atau Bilangan Genap
Gambaran penyelesaian dengan Flowchart :
mulai
Masukkan Bilangan Bulat
Bilangan dibagi 2 dengan
operasi sisa bagi
YA
Sisa
bagi=0 ?
Tulis
“GENAP”
Tidak
Tulis
“GANJIL”
Selesai
4
3. Notasi III : menggunakan pseudo-code
Pseudo-code adalah notasi yang menyerupai notasi bahasa pemrograman tingkat tinggi,
khususnya Bahasa Pascal dan C.
Algoritma Euclidean
{Dibaca dua buah bilangan bulat tak negatif m dan n (m>=n). Carilah FPB dari
kedua bilangan tersebut.}
Deklarasi
m,n,r : integer
Deskripsi
read(m,n)
while n<> 0 do
r  m mod n
m n
n r
endwhile
write(m)
Latihan
1. Tulislah algoritma menentukan bilangan terbesar dari 3 bilangan bulat A, B, C
menggunakan notasi I.
2. Tulislah algoritma mengurutkan dari kecil ke besar 3 bilangan bulat A, B, C
menggunakan notasi II.
5
Bab 2
Tipe, Nama, dan Nilai
Tipe data ada dua macam, yaitu : tipe dasar dan tipe bentukan. Tipa dasar adalah
tipe data yang dapat langsung dipakai. Tipe bentukan dibentuk oleh tipe dasar atau tipe
bentukan lain yang sudah didefinisikan.
2.1 Tipe Dasar
Yang termasuk dalam tipe dasar adalah : bilangan bulat (integer), logika
(boolean), karakter, bilangan riil (real) dan string. Tiga tipe dasar yang pertama disebut
tipe ordinal karena setiap nilai konstantanya bisa diubah ke nilai integer.
2.1.1 Bilangan Bulat (Integer)
Jenis data ini terdiri atas integer positif, integer negatif dan nol. Pada TURBO
PASCAL jenis data ini di bagi atas beberapa bagian, yaitu :
Tipe
BYTE
SHORTINT
INTEGER
WORD
LONGINT
Ukuran memori
(dalam byte)
1
1
2
2
4
Jangkauan nilai
0..255
-128..127
-32768..32767
0..65535
-2147483648..2147483647
Operator Integer terdiri atas : + (penjumlahan),
- (pengurangan) ,
* (perkalian),
DIV (pembagian bilangan bulat),
MOD (sisa hasil bagi)
2.1.2 Logika (Boolean)
Tipe data ini mempunyai nilai TRUE atau FALSE.
Operator untuk jenis data ini adalah operator logika, yaitu : NOT, AND, OR dan XOR
6
2.1.3 Karakter (Char)
Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter
yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’,’a’,’!’,’5’ dsb.
Dasarnya adalah ASCII CHARACTER SET.
Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter.
Blank.
033
048
076
!
0
L
dst
Operasi yang dilakukan terhadap tipe karakter adalah operasi perbandingan : =,
<>, <, >, <=, >=.
2.1.4 Bilangan Riil (Real)
Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta
numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan
sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real
menempati memori sebesar 6 byte.
Contoh :
123.45
12345.  salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234  salah, titik desimal tidak boleh dimuka
Pada TURBO PASCAL, jenis data ini dibedakan atas :
Tipe
SINGLE
DOUBLE
EXTENDED
COMP
Ukuran memori
(dalam byte)
4
8
10
8
Jangkauan nilai
Digit signifikan
1.5x10E-45 .. 3.4x10E38
5.0x10E-324 .. 1.7x10E308
1.9x10E-4951 .. 1.1x10E4932
-2E+63+1 .. 2E+63-1
7-8
15-16
19-20
19-20
Operator untuk jenis data ini terdiri atas : + (penjumlahan) , - (pengurangan) , *
(perkalian) dan / (pembagian).
7
2.1.5 Tipe String
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda
petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter
stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi
variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter. Contoh :
’Belajar’, ’Pemrograman’, merupakan nilai konstanta string.
Operasi terhadap tipe string terdiri dari :
a. Operasi Penyambungan
Operatornya : +. Digunakan untuk menyambung 2 nilai string. Contoh :
’Belajar’ + ’Pemrograman’ menjadi ’BelajarPemrograman’
b. Operasi Perbandingan
2.2 Tipe Bentukan
Tipe bentukan adalah tipe yang didefinisikan sendiri oleh pemrogram. Ada dua
macam tipe bentukan, yaitu :
1. Tipe dasar yang diberi nama baru
Contoh :
type bilangan bulat : integer
2. Rekaman (record)
2.3 Nama
Nama diberikan kepada peubah (variabel), konstanta, tipe bentukan, nama fungsi,
dan nama prosedur.
Aturan penamaan :
1. Diawali dengan huruf alfabet.
2. Huruf besar atau kecil tidak dibedakan.
3. Nama tidak boleh mengandung operator aritmatika, operator relasional, tanda baca,
spasi.
2.3.1 Konstanta.
Konstanta adalah suatu identifier non-standar yang nilainya telah ditetapkan dalam suatu
program dan dideklarasikan pada bagian deklarasi.
Bagian umum deklarasinya adalah :
8
CONST identifier = nilai;
Contoh :
CONST
phi = 3.14;
x= 2;
y = ‘S’;
2.3.2 Variabel.
Variabel adalah suatu identifier non-standar yang nilainya tidak tetap atau nilainya
merupakan hasil dari suatu proses.
(variabel yang dimaksudkan disini sama seperti halnya arti variabel pada aljabar).
Bentuk umum deklarasinya adalah :
1. Jika hanya 1 (satu) variabel yang dideklarasikan :
VAR identifier : tipe data;
2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki tipe data yang sama :
VAR id-1, id-2, …., id-3 : tipe data;
3. Jika beberapa variabel yang berbeda tipe datanya :
VAR
identifier-1 : tipe data;
identifier-2 : tipe data;
.
.
.
identifier-n : tipe data;
Contoh :
1. VAR x
2. VAR p,q,r
3. VAR a,b
m,n
2.4 Nilai
: integer;
: real;
: char;
: boolean;
Nilai adalah besaran dari tipe data yang sudah didefinisikan. Nilai dapat berupa
nilai peubah atau konstanta.
9
2.4.1 Pengisian Nilai ke Nama Peubah
1. Pengisian nilai secara langsung
Pengisian nilai secara langsung adalah memasukkan nilai ke dalam nama peubah
langsung di teks program.
peubah := konstanta
Contoh : N := 10;
Atau peubah1:=peubah2
Contoh : N:=M;
2. Pembacaan Nilai dari Piranti Masukan
Dalam bahasa Pascal untuk keperluan input (membaca nilai) digunakan identifier
standar READ atau READLN.
Identifier standar ReadLn sedikit berbeda dengan Read. ReadLn digunakan untuk
memasukkan data perbaris, artinya setelah tombol Enter ditekan, maka akan ganti baris,
sedangkan Read tidak ganti baris, masih dalam baris yang sama.
Bentuk umum penulisannya :
READ (variabel input) ;
Atau
READLN (variabel output);
Contoh : read (A,B,C) atau readln (A,B,C)
2.4.2 Ekspresi
Sebuah ekspresi merupakan kumpulan dari operand-operand (seperti : bilangan,
konstanta, variabel dll) yang bersama-sama dengan operator membentuk suatu bentuk
aljabar dan menyatakan suatu nilai.
Ada 2 (dua) jenis ekspresi dalam bahasa Pascal, yaitu :
1. Ekspresi numerik / aritmatika, yaitu suatu ekspresi yang menghasilkan nilai
numerik / aritmatika.
2. Ekspresi Boolean atau ekspresi logika, yaitu suatu ekspresi yang menghasilkan
nilai boolean / logika (true/false).
Contoh :
1. (b * b – 4 * a * c) / (2*a) / (2 * a)  ekspresi numerik, jika a,b dan c adalah
bilangan (variabel bernilai numerik).
2. Upah < 1000.0  ekspresi boolean (“upah” adalah suatu variabel bernilai real).
10
2.4.3 Menuliskan Nilai ke Piranti Keluaran
Untuk keperluan keluaran (mencetak keluaran) digunakan identifier standar
WRITE atau WRITLN.
Perbedaan Write dengan WriteLn adalah bahwa Write menampilkan hasil tanpa ganti
baris dan tampilan berikutnya akan disambung dalam baris yang sama. Sedang WriteLn
digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk tampilan
berikutnya.
Bentuk umum penulisannya :
WRITE (variabel output) atau WRITELN (variabel output);
WRITE (variabel output, konstanta, ekspresi) atau WRITELN (variabel output,
konstanta, ekspresi);
WRITE (ekspresi) atau WRITELN (ekspresi);
LATIHAN
1. Tulislah rumus berikut dalam bahasa Pascal :
4
a. V  r 3
3
ab
b
(1  )
b. m 
3ac
cd
2. Tulislah pernyataan dalam Pascal untuk :
a. Menampilkan tulisan : ‘Belajar Pemrograman’.
b. Meminta pengguna memasukkan namanya.
11
BAB 3
STRUKTUR PROGRAM PASCAL
Struktur program Pascal dapat dikelompokkan menjadi tiga bagian,yaitu :
1. Kepala Program
2. Bagian Deklarasi
3. Bagian Pernyataan
Program LuasLingkaran;
VAR jari2, Luas : real;
Begin
write(’Masukkan jari-jari :’); readln(jari2);
Luas:= 314*jari2*jari2;
writeln(’Luas = ’, Luas);
END.
Pada program di atas Program LuasLingkaran merupakan kepala program.
VAR jari2, Luas : real merupakan deklarasi, dan selebihnya bagian pernyatan.
3.1 Kepala Program
Kepala program bersifat opsional. Digunakan untuk memberi keterangan atau
judul suatu program.
3.2 Bagian Deklarasi
Pada bagian ini dideklarasikan : tipe, variabel, konstanta, prosedur, dan fungsi.
1. Deklarasi tipe
Digunakan untuk membuat tipe bentukan atau tipe khusus yang nantinya
digunakan dalam deklarasi variabel.
Bentuk deklarasi :
Type pengenal = tipe data;
Contoh Type bilangan = integer;
2. Deklarasi variabel
Digunakan untuk mendeklarasikan semua variabel yang dipakai dalam program.
12
Bentuk umum deklarasi :
Bentuk umum deklarasinya adalah :
1. Jika hanya 1 (satu) variabel yang dideklarasikan :
VAR identifier : tipe data;
2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki tipe data yang sama :
VAR id-1, id-2, …., id-3 : tipe data;
3. Jika beberapa variabel yang berbeda tipe datanya :
VAR
identifier-1 : tipe data;
identifier-2 : tipe data;
.
.
.
identifier-n : tipe data;
Contoh :
1. VAR x
2. VAR p,q,r
3. VAR a,b
m,n
: integer;
: real;
: char;
: boolean;
3. Deklarasi konstanta
Deklarasi ini untuk mendefinisikan nama yang memiliki nilai tetap.
Bagian umum deklarasinya adalah :
CONST identifier = nilai;
Contoh :
CONST
phi = 3.14;
x= 2;
y = ‘S’;
3.3 Bagian Pernyataan
Bagian pernyataan dalam Pascal diawali oleh kata BEGIN dan diakhiri dengan
kata END. Untuk penutup pada program utama END diikuti tanda titik(.), sedangkan
untuk sub program diikuti tanda titik koma (;).
13
Latihan
1. Buatlah program dalam Bahasa Pascal untuk menghitung luas dan keliling persegi
panjang.
2. Buatlah program dalam Bahasa Pascal untuk menghitung jarak 2 titik A( x1, y1) dan
B ( x 2, y 2) dengan rumus jarak = d 
x1  x22   y1  y22
14
BAB 4
STRUKTUR RUNTUNAN
Sebuah runtunan (sequence) terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan
setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan
akhir program. Bila urutannya diubah, maka hasil akhirnya mungkin juga berubah.
Contoh berikut adalah program menukar dua buah nilai integer A dan B. Misal sebelum
penukaran nilai A = 5, nilai B=3. Setelah penukaran, nilai A=3, nilai B=5.
Program Tukar;
VAR A,B, temp : integer;
Begin
write(’Masukkan nilai A :’); readln(A);
write(’Masukkan nilai B :’); readln(B);
temp:=A; A:=B; B:= temp;
writeln(’Nilai A sekarang = ’, A);
writeln(’Nilai B sekarang = ’, B);
End.
Jika urutan instruksi di atas diubah, maka hasilnya juga berubah. Misal :
temp:=A;
A:=B;
B:= temp;
END.
diubah menjadi :
temp:=A;
B:= temp;
A:=B;
Silakan dicek sendiri.
15
Latihan
1. Buatlah program yang membaca waktu tempuh dalam jam-menit-detik, kemudian
mengubahnya dalam detik.
2. Buatlah program yang mebaca waktu dalam detik, kemudian mengubahnya dalam
jam-menit-detik.
3. Dibaca dua buah waktu J1 (jam1-menit1-detik1) dan J2 (jam2-menit2-detik2).
Buatlah program menghitung selisih waktu dari dari J1 ke J2 (selisih jam-selisih
menit-selisih detik).
4. Buatlah program menukar dua nilai A dan B tanpa menggunakan variabel bantu
temp.
16
BAB 5
STRUKTUR PEMILIHAN
Pada umumnya, masalah yang akan diselesaikan memiliki beberapa alternatif
pelaksanaan aksi. Suatu aksi akan dilaksanakan jika persyaratan atau kondisi dipenuhi.
Kondisi adalah sesuatu yang bernilai true atau false, disebut kondisi boolean. Contoh
kondisi :
x>y
m=n
k mod 4 = 0
not(ketemu)
Penentuan kondisi bolean dan aksi yang dilakukan bergantung pada jumlah kasus
yang terdapat pada masalah tersebut : satu kasus, dua kasus, atau lebih dari dua kasus.
5.1 Satu Kasus
Bentuk umum untuk kasus satu kasus :
if kondisi then aksi ;
Contoh program dengan satu kasus :
Program BilanganGenap;
Var Bil : integer;
Begin
write (‘Masukkan bilangan :’); readln(Bil);
if bil mod 2 = 0 then write (Bil,’ adalah bilangan genap’);
end.
5.2 Dua Kasus
Bentuk umum untuk kasus dua kasus :
if kondisi then aksi1
else aksi 2;
17
Contoh program dengan dua kasus :
Program BilanganGenapGanjil;
Var Bil : integer;
Begin
write (‘Masukkan bilangan :’); readln(Bil);
if bil mod 2 = 0 then write (Bil,’ adalah bilangan genap’)
else write (Bil,’ adalah bilangan ganjil’);
end.
5.3 Tiga Kasus atau Lebih
Bentuk umum untuk kasus dua kasus :
if kondisi1 then aksi1
else if kondisi2 then aksi2
if kondisi3 then aksi3
....
else aksiN;
Contoh program dengan tiga kasus atau lebih:
Program KonversiNilai;
{Program untuk merubah nilai angka menjadi nilai huruf}
Var Nilai : integer;
Begin
write (‘Masukkan bilangan :’); readln(Nilai);
if Nilai>= 80 then write (‘Nilai =A’)
else if Nilai>= 65 then write (‘Nilai = B’)
else if Nilai>= 50 then write (‘Nilai = C’)
else if Nilai>= 35 then write (‘Nilai = D’)
else write (‘Nilai = E’);
end.
5.4 Struktur Case..Of
Untuk masalah
dengan
tiga
kasus
atau
lebih,
struktur
Case
dapat
menyederhanakan penulisan If-Then-Else yang bertingkat-tingkat seperti contoh di atas.
18
Struktur Case sebagai berikut :
Case (nama_variabel) of
nilai1 : aksi1;
nilai2 : aksi2;
...
nilaiN : aksiN;
else aksiN1;
Contoh program KonversiNilai menggunakan struktur Case :
Program KonversiNilai;
{Program untuk merubah nilai angka menjadi nilai huruf}
Var NilaiAngka : integer;
Begin
write (‘Masukkan bilangan :’); readln(NilaiAngka);
Case NilaiAngka of
80..100 : write(‘Nilai = A’);
65..79 : write(‘Nilai = A’);
50..64 : write(‘Nilai = A’);
35..49 : write(‘Nilai = A’);
0..34 : write(‘Nilai = A’);
else write(‘ Masukkan nilai salah’);
end.
Nilai bisa berupa nilai tunggal atau beberapa nilai yang disebutkan satu per satu, atau bisa
juga berupa jangkauan nilai.
Latihan
1. Buatlah program menampilkan jumlah hari dalam satu bulan. Masukan program
ini adalah nomor bulan dan tahun. Misalkan bulan 3 tahun 2010, maka program
akan menampilkan 31.
2. Buatlah program untuk membaca tiga bilangan bulat A, B, C, lalu
mengurutkannya dari yang kecil ke besar.
19
3. Buatlah program untuk menghitung total pendapatan dengan ketentuan :
Total pendapatan = Gaji Pokok + Uang Lembur
Berikut tabel gaji pokok dan lembur per jam berdasarkan golongan :
Golongan
Gaji Pokok
Lembur per jam
I
1000000
10000
II
2000000
20000
III
3000000
30000
Uang lembur diberikan jika jam kerja melebihi 50 jam.
20
BAB 6
STRUKTUR PENGULANGAN
6.1 Struktur Pengulangan
Struktur pengulangan secara umum :
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
Awal dan akhir pengulangan tergantung pada struktur pengulangan yang digunakan.
Terdapat tiga macam struktur pengulangan, yaitu :
1. Struktur FOR
2. Struktur WHILE
3. Struktur REPEAT
6.2 Struktur FOR
Bentuk umum struktur FOR ada dua macam, yaitu : menaik atau menurun.
1. FOR menaik :
for pencacah := awal to akhir do
aksi;
Keterangan :
a. Pencacah haruslah dari tipe data yang memilik predecessor dan successor, yaitu
integer, karakter, subrange, dan enumerasi.
b. Aksi adalah satu atau lebih instruksi yang diulang. Jika ada lebih dari satu aksi, maka
dimulai dengan pernyataan BEGIN dan diakhiri dengan END; .
c. Nilai awal lebih kecil atau sama dengan nilai akhir.
d. Pada mulanya, pencacah diinisialisasi dengan nilai awal, kemudian secara otomatis
bertambah satu, sampai akhirnya nilai pencaca sama dengan nilai akhir.
e. Jumlah pengulangan adalah nilai akhir-nilai awal + 1.
21
Contoh program menghitung nilai faktorial.
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1;
For i:= 1 to n do
Faktorial :=Faktorial * i;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.
2. FOR menurun :
Bentuk umum :
for pencacah := akhir downto awal do
aksi;
Keterangan :
a. Pencacah haruslah dari tipe data yang memilik predecessor dan successor, yaitu
integer, karakter, subrange, dan enumerasi.
b. Aksi adalah satu atau lebih instruksi yang diulang. Jika ada lebih dari satu aksi, maka
dimulai dengan pernyataan BEGIN dan diakhiri dengan END; .
c. Nilai awal lebih kecil atau sama dengan nilai akhir.
d. Pada mulanya, pencacah diinisialisasi dengan nilai akhir, kemudian secara otomatis
berkurang satu, sampai akhirnya nilai pencaca sama dengan nilai awal..
e. Jumlah pengulangan adalah nilai akhir - nilai awal + 1.
6.3 Struktur WHILE
Bentuk umum struktur WHILE :
while kondisi do
aksi;
Aksi akan dilaksanakan berulangkali selama kondisi bernilai true.
22
Contoh program menghitung nilai faktorial :
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1; i:=1;
While i<=n do
begin
Faktorial :=Faktorial * i;
i:=i + 1;
end;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.
6.4 Struktur REPEAT
Bentuk umum struktur REPEAT :
Repeat
aksi;
Until kondisi;
Aksi akan dilaksanakan berulangkali sampai kondisi bernilai true.
23
Contoh program menghitung nilai faktorial :
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1; i:=1;
Repeat
Faktorial :=Faktorial * i;
i:=i + 1;
Until i > n;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.
Latihan
1. Terdapat sejumlah N mahasiswa. Setiap mahasiswa memiliki nilai UTS dan UAS
antara 0-100. Misalkan untuk merubah nilai angka menjadi nilai huruf mengikuti
aturan :
-
Jika Nilai rata-rata UTS dan UAS >= 80, maka nilainya A.
-
Jika 80 > Nilai rata-rata UTS dan UAS >= 65, maka nilainya B.
-
Jika 65 > Nilai rata-rata UTS dan UAS >= 50, maka nilainya C.
-
Jika 50 > Nilai rata-rata UTS dan UAS >= 35, maka nilainya D.
-
Jika 35 > Nilai rata-rata UTS dan UAS >= 0, maka nilainya E.
Buatlah program untuk membaca nilai UTS dan UAS dari N mahasiswa,
kemudian menghitung berapa mahasiswa yang mendapat nilai A, B, C, D, atau E.
2. Buatlah program untuk menampilkan semua solusi bilangan bulat tidak negatif
dari persamaan :
X + Y + Z = 25
3. Buatlah program mengisi password. Program akan terus meminta masukan
password selama kata kunci yang dimasukkan salah.
24
BAB 7
PROSEDUR
Dalam bahasa pemrograman prosedural, program bisa terdiri dari beberapa sub
program. Dengan membuat sub program, penulisan kode program yang sama
berulangkali bisa dihindarkan, juga memudahkan menulis dan menemukan kesalahan
program.
Dalam Bahasa Pascal terdapat dua subprogram, yaitu Prosedur dan Fungsi. Sub
program ini hanya perlu ditulis sekali, tetapi dapat dipanggil berkali-kali oleh program
utama atau sub program lain.
7.1 Pendeklarasian Prosedur
Bentuk deklarasi prosedur (tanpa parameter) adalah :
Procedure NamaProsedur;
Bagian deklarasi;
Begin
Bagian pernyataan;
End;
Contoh :
Procedure HitungLuasSegitiga;
Var alas, tinggi, Luas : real;
Begin
write(‘Masukkan panjang alas segi tiga :’); readln(alas);
write(‘Masukkan tinggi segi tiga :’); readln(tinggi);
Luas:=(1/2)*alas*tinggi;
write(‘Luas segi tiga = ‘,Luas);
End;
25
7.2 Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak bisa dieksekusi secara
langsung. Prosedur baru dilaksanakan dengan cara memanggil namanya dari program
utama atau sub program lain.
Ketika nama prosedur dipangil, kendali program secara otomatis akan berpindah
ke prosedur tersebut. Instruksi di dalam prosedur dilaksanakan. Setelah semua selesai,
kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan tersebut.
Contoh program utama untuk memanggil prosedur HitungLuasSegitiga di atas :
Begin
HitungLuasSegitiga;
End.
7.3 Variabel Global dan Lokal
Variabel yang dideklarasikan dalam prosedur hanya dikenal di badan prosedur
tersebut, sehingga disebut variabel Lokal.
Sedangkan variabel yang dideklarasikan di dalam program utama bersifat Global,
karena dikenali di semua bagian program.
Program TukarNilai;
Var A, B : integer; {A,B variabel global}
Procedure Tukar;
Var temp : integer;{temp variabel lokal}
begin
temp:= A;
A:= B;
B:=temp;
end;
Begin
write(‘Masukkan nilai A = ‘);readln(A);
write(‘Masukkan nilai B = ‘);readln(B);
Tukar;
writeln(‘Nilai A sesudah ditukar = ‘,A);
writeln(‘Nilai B sesudah ditukar = ‘,B);
End.
26
7.4 Parameter
Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau
fungsi) dengan pemanggilnya.Tiap item data ditransfer antara parameter aktual dan
parameter formal yang bersesuaian.
Parameter aktual adalah parameter yang disertakan waktu pemanggilan,
sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian
Nama Prosedur.
Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang
disertakan di dalam prosedur :
1. parameter masukan
2. parameter keluaran
3. parameter masukan/keluaran
Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan
untuk prosedur. Pada bahasa pemrograman seperti Pascal, parameter masukan dinamakan
parameter by value.
Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan
oleh prosedur. Pada bahasa pemrograman seperti Pascal, parameter keluaran dinamakan
parameter by reference.
Parameter masukan/keluaran adalah parameter yang berlaku sebagai masukan
sekaligus keluaran bagi prosedur tersebut. Pada bahasa pemrograman seperti Pascal,
parameter masukan/keluaran termask dalam parameter by reference.
Pada bahasa Pascal, parameter formal by value tidak menggunakan kata VAR
dalam deklarasinya, sedangkan parameter by reference menggunakan kata VAR.
27
1. Parameter Masukan (By value)
Contoh program menggunakan parameter masukan dalam deklarasi prosedurnya:
Program SegitigaKarakter;
var M : integer;
K : char;
Proedure CetakSegitiga(C : char; N : integer);
var i,j : integer;
Begin
for i:=1 to N do
Begin
for j :=1 to i do
write(C);
writeln;
End;
End;
Begin
write(‘Masukkan karakter yang akan dicetak :’); readln(K);
write(‘Masukkan tinggi segi tiga :’); readln(M);
CetakSegitiga(K,M);
End.
2. Parameter Keluaran (By reference)
Bila prosedur menghasilkan satu atau lebih nilai yang digunakan oleh program
pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur
yang mengandung parameter keluaran dipanggil, nama parameter aktual akan
menggantikan nama parameter formal yang bersesuaian (berlawanan dengan parameter
masukan, yang dalam hal ini, nilai parameter aktual yang di assign ke dalam parameter
formal).
Berikut contoh perbedaan parameter masukan dan keluran :
28
Program ABC;
Var A, B, C : integer;
Procedure XYZ(X,Y : integer; var Z : integer);
{X dan Y parameter masukan, Z parameter keluaran}
Begin
X:= X + 1;
Y:= Y + 1;
Z := X + Y;
End;
Begin
A:= 2;
B:= 5;
XYZ(A,B,C); {Pemanggilan prosedur XYZ}
writeln(A,’ ‘, B,’ ‘,C); {Menampilkan nilai A, B, dan C setelah pemanggilan prosedur}
End.
Pada Program ABC di atas, X dan Y adalah parameter masukan, sedangkan Z
adalah parameter keluaran. Ketika Prosedur XYZ dipanggil dengan parameter aktual A=2
dan B=5, maka nilai itu mengisi nilai parameter formal X dan Y. Sedangkan nama
parameter aktual C secara semu menggantikan nama parameter formal C (bukan nilainya
yang diisikan). Sehingga setelah pemanggilan, nilai variabel A dan B tetap, yaitu A=2
dan B =5. Sedangkan nilai variabel C berubah menjadi 9.
3. Parameter Masukan/Keluaran (By reference)
Parameter masukan/keluaran berfungsi sebagai masukan untuk prosedur sekaligus
menampung nilai keluaran prosedur. Sehingga bila keluarannya berbeda dengan
masukannya, maka hasilnya mengikuti nilai keluarannya.
Contoh Program TukarNilai berikut : 2 nilai integer A dan B merupakan
parameter formal Prosedur Tukar. Setelah instruksi di dalam prosedur dilaksanakan,
maka nilai keluaran A dan B berubah. Karena A dan B adalah parameter
29
masukan/keluaran, maka nilai parameter aktual pemanggilnya juga berubah sesuai nilai
keluaran yang dihasilkan prosedur.
Program TukarNilai;
Var X, Y : integer;
Procedure Tukar (var A,B : integer);
Var temp : integer;
Begin
temp := A;
A := B;
B:=temp;
End.
Begin
X:= 2; Y:= 5;
Tukar (X,Y);
writeln(‘Nilai X setelah ditukar = ‘,X);
writeln(‘Nilai Y setelah ditukar = ‘,Y);
End.
Latihan
1. Buatlah prosedur mencari bilangan terbesar dari 3 bilangan integer A, B, dan C.
2. Buatlah prosedur menghitung nilai rata-rata dari N buah bilangan.
30
BAB 8
FUNGSI
8.1 Definisi Fungsi
Fungsi adalah sub program yang memberikan/mengembalikan sebuah nilai dari
tipe tertentu. Sebagaimana halnya prosedur, fungsi diakses dengan memanggil namanya.
Selain itu, fungsi juga dapat mengandung daftar parameter formal. Parameter formal pada
fungsi selalu berupa parameter masukan, karena parameter pada fungsi merupakan
masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai.
8.2 Pendeklarasian Fungsi
Deklarasi fungsi adalah :
function NamaFungsi(daftar parameter masukan):tipe data;
bagian deklarasi
Begin
Bagian Pernyataan;
End;
8.3 Pemanggilan Fungsi
Fungsi diakses dengan cara memanggil namanya dari program utama atau sub
program lain, diikuti dengan daftar parameter aktual (jika ada). Karena fungsi
menghasilkan nilai, maka nilai tersebut dapat ditampung dalam suatu variabel (peubah)
yang bertipe sama dengan tipe fungsi.
(i). peubah := NamaFungsi(daftar parameter aktual);
atau dimanipulasi langsung seperti :
(ii) write(NamaFungsi(daftar parameter aktual));
(iii) if NamaFungsi(daftar parameter aktual) > 0 then....
(iv) y := 2* NamaFungsi(daftar parameter aktual) +3;
31
Contoh :
Program Terbesar
Var A,B,C,D,Z : integer;
Function Maks(X,Y : integer) : integer;
Begin
if X > Y then Maks:= X
else Maks := Y;
End;
Begin
A := 3; B := 6; C:= 10; D := 8;
writeln(‘Bilangan terbesar antara ‘,A, ‘ dan ‘, B,’ adalah ‘,Maks(A,B));
Z:= Maks(C,D); writeln(‘Bilangan terbesar antara ‘,C, ‘ dan ‘,D,’ adalah ‘, Z);
If Maks(A,B) > Maks(C,D) then writeln(‘Yang terbesar antara ‘, A,’ ‘,B,’ ‘,C,’
dan ‘,D,’ adalah = ‘, Maks(A,B))
else writeln(‘Yang terbesar antara ‘, A,’ ‘,B,’ ‘,C,’ dan
‘,D,’
adalah
=
‘,
Maks(C,D));
End.
Latihan
1. Buatlah fungsi yang menerima masukan 2 titik
A( x1, y1) dan
menghitung jarak kedua titik tersebut dengan rumus jarak = d 
B ( x 2, y 2) dan
x1  x22   y1  y22
2. Buatlah fungsi untuk mengembalikan nilai mutlak X.
32
BAB 9
REKURSI
Suatu subprogram tidak hanya bisa memanggil sub program lain, tetapi juga bisa
memanggil dirinya sendiri. Cara ini dikenal dengan sebutan rekursi.
Rekursi banyak dipakai pada persoalan yang dapat dipecahkan secara induktif.
Misalnya untuk menghitung faktorial.
1,

m!  
1x 2 x3 x 4....xm
jika m  0
jika m  0
Pemecahan secara rekursif :
0!=1
(penghentian rekursi)
jika m > 0, m ! = m x (m-1) ! (langkah induksi)
9.1 Fungsi Rekursif
Fungsi yang memanggil dirinya sendiri disebut fungsi rekursif. Contoh fungsi
rekursif untuk menghitung faktorial.
Function FaktorialR(m:byte) : longint;
Begin
If m = 0 then FaktrialR:= 1
else FaktorialR:= m * FaktorialR(m-1);
End;
9.2 Prosedur Rekursif
Rekursi juga bisa diterapkan pada prosedur. Berikut contoh prosedur Balik :
33
Procedure Balik (X : integer);
Var Sisa : integer;
Begin;
write (X mod 10);
Sisa := X div 10;
If Sisa <> 0 Then Balik(Sisa);
End;
Jika prosedur di atas dipanggil dengan Balik(1024) apa hasilnya ?
Latihan
1. Lihat kembali Algoritma Euclidean untuk menghitung nilai FPB. Buatlah prosedur
untuk menghitung nilai FPB berdasarlan Algoritma Euclidean, secara rekursif.
2. Buatlah fungsi rekursif dan non rekursif untuk menghitung nilai XN, dngan X bilangan
riil dan N bilangan bulat.
34
DAFTAR PUSTAKA
Kadir A, 1993, Pemrograman Dasar Turbo Pascal, Andi Offset, Yogyakarta
Munir, R., 2004, Algoritma dan Pemrograman, Informatika, Bandung
35
Download