Modul Algoritma Dan Pemrograman
Modul Algoritma Dan Pemrograman
1.1.
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;
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 Terbaik
Bahasa Terburuk
Data Terstruktur
Assembler, BASIC
Proyek cepat
BASIC
Eksekusi cepat
Assembler, C
Kalkulasi matematika
Fortran
Pascal
Pascal, C
Basic
Basic, Assembler, C
Fortran
Program real-time
ADA, Assembler, C
Basic, Fortran
Manipulasi string
Basic, Pascal
Pascal, ADA
C, Fortran
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.
1.3.
ALGORITMA
ALGORITMA ialah suatu metode khusus yang tepat dan terdiri dari
Mengikuti alur konsep, suatu algoritma disusun dalam tiga bagian, yaitu :
a.
b.
c.
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:
1.4.
a)
tinggi
yang
terstruktur)
yang
menyerupai
ALGOL.
Dia
memudahkan
programmer
menyusun
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
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}
e)
Menu file terdapat new yang berfungsi untuk membuat lembar kerja baru
dalam membuat program. Setelah penulisan kode program, seperti gambar
berikut:
untuk menjalankan program maka pilih menu RUN setelah itu pilih RUN
seperti pada gambar berikut:
Atau dengan cara cepat dengan menekan Ctrl + F9, maka akan muncul
program seperti pada gambar berikut:
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.
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.
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.
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)!
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.
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.
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.
START
A = 10,
B=5
C=A+B
Cetak C
END
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.
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;
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)
Operasi
Tipe Operand
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
: Kusuma Wijaya
TTL
: 17 tahun
Penghasilan
: 2000000
No HP
: 081234567890
Jabatan
: Tenaga Ahli
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};
Input Suhu
IF
Suhu >= 37
START
YA
end.
END
3. 2.
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
START
Input Nilai
4. Selesai
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.
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}
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
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
:
:
:
:
string [40];
string [20];
byte;
longint;
Program Penginapan');
: '); readln(nama);
: '); readln(alamat);
: '); readln(jenis_kamar);
: '); readln(lama_menginap);
3. 4.
: '); write(biaya_menginap);
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;
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
3. 6.
B
1
0
1
0
A and B
1
0
0
0
Dengan ketentuan :
0
: bernilai SALAH
: bernilai BENER
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
: 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.
Input jam_kerja,
jml_produksi
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.
2.
3.
4.
Buatlah program untuk menentukan nilai terbesar dari 3 (tiga) buah nilai!
5.
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.
7.
8.
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.
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
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}
End;
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}
Start
For I = 1 to 5
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.
Start
I=1
I=1
While I <= 5
Tidak
END
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.
Start
I=1
I=1
Repeat
I=I+1
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
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
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
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.
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
No
Nama Pasien
Biaya Berobat
Diskon
Total Bayar
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
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:
I=I+1
Proses Penginputan
Input lagi?
For j = 1 to i
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
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
berarti
Array
Dimensi,
terdapat
(dua)
index
yang
dapat
berarti
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
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
PEMBAHASAN VI
PROCEDURE (PROSEDUR) DAN FUNCTION (FUNGSI)
(2 x Pertemuan)
6.1.
Prosedur (Procedure)
Prosedur (procedure) atau Fungsi (function) adalah suatu program
Prosedur Garis
Pemanggilan prosedur
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
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.
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
Adapun bentuk flowchart dari kasus di atas untuk prosedur dan fungsi
adalah sebagai berikut:
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
Cetak hasil
Pencarian
Pengurutan
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!.
Input Data
Cetak hasil
Pencarian
Pengurutan
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
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
Field 2
Field 3
Field 4
:= 'Kusuma Wijaya';
:= 'Mataram';
:= 'IV D';
:= 5000000;
: ',biodata.nama);
: ',biodata.alamat);
: ',biodata.golongan);
: ',biodata.gaji_pokok);
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.
:=
:=
:=
:=
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