• Tidak ada hasil yang ditemukan

Document - IKK113105 - STMIK EL RAHMA 01.MODUL

N/A
N/A
Protected

Academic year: 2017

Membagikan "Document - IKK113105 - STMIK EL RAHMA 01.MODUL "

Copied!
38
0
0

Teks penuh

(1)

MODUL MATA KULIAH

ALGORITMA DAN PEMROGRAMAN 2

STIMIK EL RAHMA

JOGJAKARTA 2015

JURUSAN : SISTEM INFORMASI

SEMESTER GENAP 2015

MATA KULIAH : LOGIKA DAN ALGORITMA

REVIEW

DESKRIPSI SINGKAT MATA KULIAH

Mata Kuliah ini bermaksud untuk mempelajari dasar dari langkah-langkah dalam membuat design/rancangan pemecahan masalah secara terstruktur. Rancangan pemecahan masalah ini lebih dikenal dengan nama Algoritma. Yang selanjutnya selanjutnya algoritma ini bisa diimplementasikan pada program, tidak bergantung bahasa pemrograman yang akan akan digunakan.

MATERI MATA KULIAH

1. Pendahuluan ( Pengenalan Algoritma)

2. Struktur dasar Algoritma (Notasi, Kondisi, Aksi), nama dan harga 3. Tipe data dasar (Boolean, Integer, Real, Char, String)

4. Tipe Bentukan (Record, Procedure, Fungsi).

5. Pengkondisian (if_endif, if_else_endif, case_endcase)

6. Perintah Pengulangan (while_endwhile), (repeat_until) dan (for_endfor)

7. Procedure (variabel global dan lokal) dan parameter input, output dan input/output 8. Function (parameter input dan output)

9. Array (larik)

DAFTAR PUSTAKA

1. Inggriani Liem , ”Algoritma dan Pemrograman”, ITB,1992 2. Knuth, “Fundamental of Algorithm”, Addison Wisley, 1978 3. Mewati Ayub, Ir “Dasar-Dasar Pemrograman”, DCI, 1994

4.

Niklause Wirth, “Algorithms + Data Structures = Programs”, Prentice Hall, 1991

5.

Antony Pranata, “Algoritma dan Pemrograman”,Graha Ilmu, Yogyakarta, 2005

(2)

MATERI 4 NOTASI PENGKONDISIAN/PENCABANGAN

Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya masalah yang akan diselesaikan memiliki beberapa alternatif pelaksanaan aksi. Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi.

Pernyataan (statement) ataupun instruksi pada program, seringkali tidak hanya dilaksanakan sekali jalan saja, atau tanpa kondisi,akan tetapi :

 Pada bagian penting, perlu mempertimbangkan kondisi dan persyaratan agar dapat menempuh kelanjutan keputusan yang tepat.

 Tidak jarang menghadapi berbagai alternatif, dan harus menentukan pilihan yang memberikan penyelesaian dengan tepat.

Struktur Kontrol Pertimbangan Kondisi dan Keputusan (Pencabangan)

Adakalanya dalam kehidupan sehari-hari kita dihadapkan pada sebuah kondisi atau lebih, dimana kita harus memilih salah satunya. Begitu pula dengan program, pada suatu saat kita perlu membuat suatu aturan untuk melakukan pemilihan terhadap suatu kondisi, yang memungkinkan kita untuk membuat deretan instruksi yang sama, namun menghasilkan eksekusi yang berbeda-beda.

Notasi Pencabangan adalah notasi yang pada umumnya akan menyelesaikan suatu kasus dengan beberapa alternatif pelaksanaan aksi.

Mengapa dibutuhkan?

 Untuk membantu dalam menentukan alternatif solusi pelaksanaan aksi yang akan dilakukan berdasarkan kondisi yang telah ditentukan

Penentuan kondisi dan aksi yang dilakukan bergantung pada jumlah kasus yang terdapat pada suatu masalah tersebut : satu kasus, dua kasus, atau bahkan lebih.

Algoritma Notasi Pencabangan dibagi berdasarkan kasus: Satu Kasus (IF - THEN)

Dua Kasus (IF – THEN - ELSE)

Tiga Kasus atau lebih (IF – THEN – ELSE, CASE)

4.1 SATU KASUS (IF - THEN)

Notasi algoritma untuk analisis dengan satu kasus adalah dengan menggunakan konstruksi IF – THEN (jika-maka) dalam bentuk :

IF kondisi_dipenuhi (true) THEN Laksanakan_aksi

EndIf

Ket : Kondisi → berupa ekspresi yang menghasilkan true atau false

Aksi → instruksi/pernyataan yang akan dilaksanakan jika kondisi yang dipasangkan dengan aksi yang bersangkutan dipenuhi/bernilai benar (true). Bila kondisi bernilai salah (false), tidak ada pernyataan apapun yang dikerjakan. Kata endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur IF-THEN.

(3)

if kondisi_dipenuhi (true) then Laksanakan_aksi

Jika Aksi lebih dari satu buah, maka :

if kondisi_dipenuhi (true) then begin

Laksanakan_aksi end;

contoh-contoh:

(a)

if x > 100 then x :=x+1 endif

(b)

if kar = ‘*’ then stop:=true endif

(c)

if max >10 then max:=x endif

Contoh Satu Kasus:

Tulis algoritma yang membaca sebuah bilangan bulat dari suatu piranti masukan. Diminta mencetak pesan ”Bilangan genap” jika bilangan tersebut genap.Bilangan genap adalah bilangan yang habis dibagi 2.

Program Genap Deklarasi : Bil : integer Algoritma :

Write (’Masukan Bilangan :’) Read (Bil)

If Bil mod 2 =0 Then Write (’Bilangan Genap’) Endif

Pascal :

Program Genap; Var

Bil : integer; Begin

Write (’Masukan Bilangan :’); Read (Bil);

If Bil mod 2 =0 Then Write (’Bilangan Genap’); End.

(4)

Notasi algoritma untuk analisis dengan dua kasus adalah dengan menggunakan konstruksi IF – THEN -ELSE (jika-maka-kalau-tidak) dalam bentuk:

IF kondisi_dipenuhi (true) THEN Laksanakan_aksi1

Else {kondisi_tidak dipenuhi (false)} Laksanakan_aksi2

EndIf

Notasi Pascal :

if kondisi_dipenuhi (true) then Laksanakan_aksi1

else {kondisi_tidak dipenuhi (false)} Laksanakan_aksi2;

Keterangan :

Aksi1 dilaksanakan jika kondisi bernilai benar, sebaliknya jika kondisi bernilai salah maka

Aksi2 akan dilaksanakan, bisa diperhatikan bahwa else menyatakan ingkaran (negation) dari kondisi. Contoh-contoh:

(a)

if a>0 then

write(’bilangan positif’) else

write(’bukan bilangan positif’) endif

(b)

if (k mod 2 = 0) then write(’bilangan genap’) else

write(’bilangan ganjil’) endif

Contoh Dua Kasus:

Tulislah program yang membaca sebuah bilangan bulat dari suatu piranti masukan. Diminta mencetak pesan ”Bilangan genap” jika bilangan tersebut adalah genap, atau ”Bilangan ganjil” jika bilangan tersebut adalah ganjil.

Program Genap_Ganjil

Deklarasi :

Bil : integer

Algoritma :

Write (’Masukan Bilangan :’) Read (Bil)

If Bil mod 2 =0 Then Write (’Bilangan Genap’) Else

(5)

Pascal :

Program Genap_Ganjil;

Var

Bil : integer; Begin

Write (’Masukan Bilangan :’); Read (Bil);

If Bil mod 2 =0 Then

Write (’Bilangan Genap’) Else

Write (’Bilangan Ganjil’);

end.

4.3 TIGA KASUS Atau Lebih

Notasi algoritma untuk analisis dengan tiga kasus atau lebih adalah dengan menggunakan konstruksi IF – THEN - ELSE bertingkat-tingkat dalam bentuk :

IF kondisi1_dipenuhi (true) THEN

Laksanakan_aksi1

Else

IF kondisi2_dipenuhi THEN

Laksanakan_aksi2

Else

IF kondisiN_dipenuhi THEN

Laksanakan_aksiN

Else

Laksanakan_aksi_lain EndIf

EndIf EndIf

Contoh Tiga Kasus Atau Lebih:

Tulislah program yang membaca sebuah bilangan bulat, lalu menentukan apakah bilangan tersebut positif, negatif, atau nol.

Program Cek_Bilangan

Deklarasi :

Bil : integer

Algoritma :

Write (’Masukan Bilangan :’) Read (Bil)

If Bil > 0 Then

Write (’Bilangan Positif’) Else

If Bil < 0 Then

Write (’Bilangan Negatif’) Else

Write (’Bilangan Nol’) Endif

Endif

Pascal :

(6)

Var

Bil : integer; Begin

Write (’Masukan Bilangan :’); Readln (Bil);

If Bil > 0 Then

Write (’Bilangan Positif’) Else

If Bil < 0 Then

Write (’Bilangan Negatif’) Else

Write (’Bilangan Nol’);

end.

4.4 Struktur Kontrol Pemilihan Alternatif (Case )

Untuk masalah dengan dua kasus atau lebih, struktur CASE, dapat menyederhanakan penulisan if_then_else.

CASE... OF... merupakan struktur kontrol pemilihan alternatif, dimana dapat dipilih salah satu pelaksanaan aksi diantara sejumlah alternatif kondisi yang disajikan.

Notasi Algoritmik :

Ket :

Ekspresi adalah sembarang ekspresi (aritmetika atau Boolean) yang menghasilkan suatu

nilai (Konstanta). CASE memeriksa apakah nilai dari ekspresi tersebut sama dengan salah satu dari : Alternatif_Kondisi1, Alternatif_Kondisi2,….Alternatif_KondisiN

Jika nilai ekspresi sama dengan alternatif kondisik, maka laksanakan_aksik

Jika tidak ada satupun nilai ekspresi yang cocok, maka pernyataan sesudah Otherwise dikerjakan. Otherwise bersifat opsional, artinya boleh ditulis atau tidak didalam konstruksi CASE.

Notasi Pascal :

CASE <ekspresi> OF

Alternatif_Kondisi1 : laksanakan_aksi1 Alternatif_Kondisi2 : laksanakan_aksi2

Alternatif_KondisiN : laksanakan_aksiN Otherwise

Laksanakan_aksi_lain EndCase

case <ekspresi> of

Alternatif_Kondisi1 : laksanakan_aksi1

Alternatif_Kondisi2 : laksanakan_aksi2

Alternatif_KondisiN : laksanakan_aksiN

else

Laksanakan_aksi_lain

(7)

Keterangan : Alternatif_Kondisi1, Alternatif_Kondisi2,….Alternatif_KondisiN adalah nilai yang bertipe integer, char, atau boolean.

Contoh:

Tulislah Algoritma yang membaca seluruh bilangan bulat yang nilainya terletak antara 1 sampai 4, lalu menuliskannya ke piranti keluaran. Misalnya : input =1, maka output=’satu’

Solusi

STRUKTUR IF-THEN-ELSE

PROGRAM KonversiAngka Teks {mencetak kata untuk angka 1 sampai 4}

DEKLARASI:

angka:integer

ALGORITMA

read(angka) if angka=1 then

write (’satu’) else

if angka=2 then write(’dua’) else

if angka=3 then write(’tiga’) else

if angka=4 then write(’empat’) else

write(’angka yang dimasukan salah’) endif

endif endif

endif

Solusi

STRUKTUR CASE...OF…

Program Angka

Deklarasi :

A: integer

Algoritma :

Write (’Masukan Angka 1-4 :’) Read (A)

Case A Of 1 : Write (’Satu’) 2 : Write (’Dua’) 3 : Write (’Tiga’) 4 : Write (’Empat’) Otherwise

(8)

EndCase

Pascal :

Program Angka;

Var

A : integer; Begin

Write (’Masukan Angka 1-4 :’); Readln (A);

Case A Of

1 : Write (’Satu’); 2 : Write (’Dua’); 3 : Write (’Tiga’); 4 : Write (’Empat’); Else

Write (’Angka yang anda masukan salah!’);

end;

end.

LATIHAN

1. Buatlah algoritma untuk membaca sebuah karakter dan menentukan karakter yang dimasukan adalah karakter ’A’ atau bukan!

2. Buatlah algoritma untuk membaca sebuah bilangan bulat dari suatu papan ketik, lalu mencetak pesan bahwa ”Bilangan tersebut lebih besar dari 100” jika bilangan tersebut adalah lebih besar dari 100!

3. Buatlah algoritma yang membaca angka tahun masehi dari papan ketik, lalu menentukan apakah tahun tersebut merupakan tahun kabisat!

4. Buatlah algoritma untuk menentukan bilangan yang dimasukan adalah habis dibagi 5, jika bilangan tersebut habis dibagi 5 maka pesan tertulis ’bilangan habis dibagi 5’ jika tidak ’bilangan tidak habis dibagi 5’!

5.

Buat Algoritma untuk membaca temperature air T (dalam satuan derajat celcius) pada tekanan normal, lalu menentukan apakah wujud air tersebut dalam keadaan padat (T  0 C) , Cair (0

C < T <100 C) atau Gas ( T  100 C)

6. Buat algoritma untuk menghitung Nilai Akhir :

-

Input : Nilai UTS,UAS,Quiz,Tugas

- Nilai= Tugas* 0.1 + Quiz*0.2 + UTS*0.3+ UAS*0.4 - Dengan IF then Else tentukan Nilai akhir dimana : 80  Nilai  100 → Indeks A

70  Nilai < 80 → Indeks B 55  Nilai < 70 → Indeks C 40  Nilai < 55 → Indeks D 0  Nilai < 40 → Indeks E

(9)

7.

PT XYZ membutuhkan suatu program untuk perhitungan gaji pegawai dengan ketentuan sebagai berikut:

Go

l

GajiPokok

UpahLembur Tunjangan

Ppn

I 1000000 20000 50% * Gaji Pokok 5%

II 850000 15000 40% * Gaji Pokok 3%

III 750000 12000 30% * Gaji Pokok 2%

IV 500000 10000 20% * Gaji Pokok 1%

Potongan pajak adalah ppn * GajiPokok

Para pegawai bekerja selama 150 jam, bila melebihi jam tersebut maka dihitung lembur, kemudian pegawai yang sudah menikah mendapatkan Tunjangan sebesar 15% dari GajiPokok

Berdasarkan ketentuan tersebut, buatlah Algoritma untuk menyelesaikan permasalah tersebut!

Output yang diminta yaitu : NIK, Nama, Gol dan Gaji Bersih

Rumus :

1. GajiBersih := (GajiPokok+Tunjangan) – Potongan

(10)

MATERI 5 NOTASI PENGULANGAN

Salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk mengulang suatu instruksi, bahkan aksi, secara berulang-ulang dengan performansi yang sama. Berbeda dengan manusia yang cenderung melakukan kesalahan jika melakukan hal yang sama karena lelah atau bosan.

Struktur pengulangan secara umum terdiri dari dua bagian :

1.

Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara ekplisit oleh pemrogram atau dikelola sendiri oleh komputer (implisit).

2. Badan pengulangan, yaitu aksi/pernyataan yang harus diulang selama kondisi yang ditentukan untuk pengulangan masih dipenuhi.

Disamping itu, struktur pengulangan biasanya disertai dengan bagian :

1. Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali. 2. Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.

Insialisasi dan terminasi tidak selalu harus ada, namun pada berbagai kasus inisisalisasi umumnya diperlukan.

Struktur pengulangan secara umum :

<inisialisasi> awal pengulangan badan pengulangan akhir pengulangan <terminasi>

Pengulangan harus berhenti, ini yang harus dijamin oleh pemrogram. Karena algoritma yang tidak pernah berhenti/pengulangan yang terus menerus (looping) adalah algoritma yang salah.

Struktur Kontrol pengulangan terdiri dari : a. Pernyataan FOR

b. Pernyataan WHILE a. Pernyataan REPEAT

5.1 Pernyataan FOR

Adalah pengulangan yang paling sederhana. Pengulangan ini dipakai jika kita mengetahui berapa kali pengulangan akan dilakukan.

Bentuk umum pernyataan FOR ada dua macam, yaitu menaik (ascending) atau menurun (descending). FOR menaik

(11)

FOR (nama_pencacahnilai_awal) TO (nilai_akhir) DO

(aksi/pernyataan)

EndFor

Keterangan:

 Aksi/pernyataan adalah satu atau lebih instruksi yang diulang.

Keterangan:

Nilai_awal dan nilai_akhir pada umumnya bilangan integer atau karakter, asal nilai_akhirnilai_awal

Pengulangan dilaksanakan berulang-ulang tanpa kondisi atau syarat apapun dengan jumlah ulangan= nilai_akhir – nilai_awal + 1

Pada awalnya, pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencacah = nilai_akhir.

Notasi Pascal :

Contoh :

Misalkan kita ingin mencetak angka 1 sampai 10, maka algoritma dan programnya adalah :

Algoritmik :

Program Tulis_nomor

Deklarasi :

nomor: integer

Algoritma :

FOR nomor1 To 10 DO

write(nomor)

EndFor

Pascal :

Program Tulis_nomor;

Var

nomor : integer; Begin

for nomor:= 1 to 10 do

writeln(nomor);

end.

for (nama_pencacah:=nilai_awal) to (nilai_akhir) do begin

(aksi/pernyataan)

(12)

FOR menurun

Bentuk umum struktur kontrol FOR menurun ini, dapat dirumuskan dengan :

Notasi Algoritmik :

FOR (nama_pencacahnilai_awal) DOWNTO (nilai_akhir) DO

(aksi/pernyataan)

EndFor

Keterangan:

 Aksi/pernyataan adalah satu atau lebih instruksi yang diulang.

Nilai_awal dan nilai_akhir pada umumnya bilangan integer atau karakter, asal nilai_awalnilai_akhir

Pengulangan dilaksanakan berulang-ulang tanpa kondisi atau syarat apapun dengan jumlah ulangan= nilai_awal – nilai_akhir + 1.

Pada awalnya, pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis berkurang satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencacah = nilai_akhir.

Notasi Pascal :

Contoh :

Misalkan kita ingin meghitung mundur angka dari 10 sampai 1, maka algoritma dan programnya adalah : Algoritmik :

Program hitung_mundur

Deklarasi :

nomor: integer

Algoritma :

FOR nomor10 Downto 1 DO

write(nomor)

EndFor

Pascal :

Program Hitung_mundur;

Var

nomor : integer; Begin

for nomor:= 10 downto 1 do

for (nama_pencacah:=nilai_awal) downto (nilai_akhir) do begin

(aksi/pernyataan)

(13)

writeln(nomor);

end.

5.2 Pernyataan WHILE

Bentuk umum struktur kontrol WHILE dapat dirumuskan dengan :

Keterangan:

Pengulangan bisa tidak dilakukan , jika pada saat awal, kondisi_pengulangan tidak terpenuhi (false).

 Tidak mengetahui berapa kali pengulangan akan dikerjakan

 Kondisi pengulangan akan diperiksa sebelum masuk ke aksi / pernyataan.

Pengulangan akan dilaksanakan berulang-ulang jika kondisi_pengulangan dipenuhi (true).

 Di dalam pernyataan, harus ada instruksi yang mengubah nilai kondisi agar pengulangan berhenti. Notasi Pascal :

Contoh :

Buat algoritma/program untuk menampilkan angka sesuai dengan angka yang di-input dari keyboard. Program akan berhenti jika user meng-input angka 0 ;

Algoritmik :

Program CetakAngka

Deklarasi :

i,angka: integer

Algoritma :

write('Masukan angkanya: ') read(angka)

i1

While(angka ≠ 0)do

write(‘Angka yang anda input:’, angka) write('Masukan angkanya: ')

read(angka) ii+1

EndWhile

Pascal :

WHILE (kondisi_pengulangan) DO

(aksi/pernyataan)

EndWhile

while (kondisi_pengulangan) do begin

(aksi/pernyataan)

(14)

5.3 Pernyataan REPEAT

Bentuk umum struktur kontrol REPEAT dapat dirumuskan dengan :

REPEAT

(aksi/pernyataan)

UNTIL (kondisi_berhenti)

Keterangan:

 Aksi / pernyataan akan dikerjakan minimal satu kali , karena pernyataan dilaksanakan terlebih dahulu kemudian baru diperiksa kondisi berhenti.

 Aksi / pernyataan akan dikerjakan berulang-ulang dan akan berhenti jika kondisi berhenti terpenuhi

 Tidak mengetahui berapa kali pengulangan akan dikerjakan

 Di dalam pernyataan, harus ada instruksi yang mengubah nilai kondisi agar pengulangan berhenti..

Notasi Pascal :

Contoh :

Buat algoritma/program untuk menampilkan menu masakan sebagai berikut : Menu Masakan

1. Ayam Goreng 2. Ayam Tulang Lunak 3. Ayam Bakar 4. Keluar

Dan membaca nomor pilihan menu yang diinput oleh user. Kemudian tampilkan pesan sesuai dengan nomor menu yang di-input.

Misalnya : input : 1

Output : ”Anda memilih Ayam Goreng”

Algoritmik :

Program CetakAngka;

Var

i, angka : integer; Begin

write('Masukan angkanya: '); readln(angka);

i:=1;

While (angka <> 0) do Begin

writeln(‘Angka yang anda input:’, angka); write('Masukan angkanya: ');

readln(angka); ii+1;

end

end.

repeat begin

(aksi/pernyataan) end;

(15)

Program Memilih_Menu tetapi WHILE juga

dapat digunakan kita dapat menggunakan WHILE maupun REPEAT untuk masalah-masalah tertentu. Tetapi, pada beberapa masalah, pemilihan WHILE atau REPEAT bergantung kepada persoalannya. Ini artinya, ada masalah yang hanya benar bila menggunakan struktur WHILE, tetapi bisa fatal bila menggunakan REPEAT.

Untuk mengetahui struktur mana yang lebih tepat, kita harus mengetahui perbedaannya, yaitu :

Pada Konstruksi REPEAT, kondisi pengulangan diperiksa pada akhir pengulangan. Jadi instruksi di dalam badan pengulangan dilaksanakan dulu, baru pemeriksaan kondisi dilakukan. Konsekuensinya badan pengulangan dilaksanakan paling sedikit satu kali.

(16)

kondisi pengulangan pertama kali bernilai false. Jadi :

→ Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulu pemeriksaan kondisi objek sebelum objek tersebut dimanipulasi

→ Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tersebut.

Latihan

1.

Tuliskanlah algoritma untuk menentukan nilai terkecil dari N buah data integer yang dibaca dari papan ketik. Nilai N dibaca terlebih dahulu (N>0)

2. Buat algoritma/program untuk menampilkan kata “Saya sedang belajar pemrograman” sebanyak 50 kali.

3. Buat algoritma/program untuk menulis angka deret tambah mulai dari angka 0 hingga 100 dengan pertambahan 10.

Sehingga tampilan output di layar :

0 10 20 30 40 50 60 70 80 90 100

(dengan selang 2 spasi diantara angka-angka itu).

4. Buat algoritma/program untuk menampilkan jumlah angka 20 bilangan asli pertama. Bilangan asli adalah bilangan bulat dimulai dari 1,2,3,….

5. Buat algoritma/program untuk membuat Daftar telepon. Daftar Telepon berisi Nama dan No.Telp. Pertama kali dibaca berapa jumlah data Nama dan No.Telp yang akan diinput, kemudian masukan data Nama dan No.Telp sesuai dengan jumlah data yang dibaca dari keyboard.

6. Buat algoritma/program untuk menghitung nilai rata-rata dari N buah data bilangan bulat yang dibaca dari keyboard. Nilai rata-rata adalah jumlah seluruh data dibagi dengan banyaknya data.

Misalnya, jika N=5 dan data bilangan yang dibaca berturut-turut adalah 2,5,3,4,2 maka nilai rata-ratanya adalah (2+5+3+4+2)/5=16/5=3.2.

7. Buat algoritma untuk memeriksa apakah password dari suatu kartu ATM diterima atau ditolak. Pakailah flag Ok bertipe Boolean. Buatlah password sebagai konstanta= ‘100107’. Pemasukan password boleh diulang sampai 3x.

Jika password benar, Output : ‘PIN benar, lanjutkan proses’ Jika password salah, Output : ‘PIN salah, ulangi lagi’ Jika password 3x salah, Output : ‘Kartu ditolak!’

5.4 MESIN ABSTRAK

Mesin abstrak menggambarkan dalam suatu mesin terdapat pita yang bertipe karakter dan tipe numerik.

Jika Pita bertipe karakter maka akhir dari pita tersebut ditandai dengan ’ . ’ atau ’ * ’ Jika Pita bertipe numerik maka diakhiri dari pita tersebut ditandai dengan 9999

Jika Pita hanya berisi akhiran ’ . ’ , ’ * ’ dan 9999 berarti pita kosong

Contoh : Pita Karakter

S A Y A *

Arah pembacaannya

Read (Baca)

(17)

Pita bertipe karakter

{inisialisasi} read(x)

while x ≠ ’ * ’ do aksi

read(x) {dibaca kembali isi mesin karakter} endwhile

{terminasi}

Pita bertipe numerik

{inisialisasi} read(x)

while x ≠ 9999 do aksi

read(x) {dibaca kembali isi mesin numerik} endwhile

{terminasi}

Contoh Kasus untuk Mesin Karakter Contoh 1:

Didalam pita karakter terdapat sederatan karakter yang diakhiri dengan tanda ’ * ’, tuliskan algoritma untuk menampilkan deretan karakter tersebut!

illustrasi

S A Y A *

PROGRAM MenampilkanKarakter

{Menghitung jumlah karakter yang dimasukan}

DEKLARASI

x : char {data character yang dibaca dari papan ketik}

ALGORITMA

read(x) {baca data character} while x ≠ ‘ * ’ do

write(x) read(x) endwhile

{x = ’*’} {kondisi setelah pengulangan berhenti}

Contoh 2:

Didalam pita karakter terdapat sederatan karakter yang diakhiri dengan tanda ’ * ’, tuliskan algoritma untuk menghitung jumlah karakter yang dimasukan!

illustrasi

S A Y A *

Jumlah karakter adalah : 4

PROGRAM HitungJumlahKarakter

{Menghitung jumlah karakter yang dimasukan}

DEKLARASI

x : char {data character yang dibaca dari papan ketik} jumlah : integer

ALGORITMA

(18)

jumlah  jumlah + 1 read(x)

endwhile

{x = ’*’} {kondisi setelah pengulangan berhenti} write(jumlah)

Contoh Kasus untuk Mesin Numerik

Contoh 1:

Diberikan mesin bertipe integer yang terdapat sederetan angka numerik yang dimasukan dan diakhiri dengan tanda 9999. tuliskan algoritma untuk menghitung jumlah seluruh angka tersebut!

illustrasi

1 3 4 2 9999

Jumlah seluruh angka tersebut adalah : 10

PROGRAM HitungJumlahAngka

{Menghitung jumlah seluruh bilangan yang dimasukan}

DEKLARASI

x : integer {data integer yang dibaca dari papan ketik} jumlah : integer

ALGORITMA

read(x) {baca data integer} jumlah  0 {inisialisasi} while x ≠ 9999 do

jumlah  jumlah + x read(x)

endwhile

{x = 9999} {kondisi setelah pengulangan berhenti} write(jumlah)

Contoh 2:

Diberikan mesin bertipe integer yang terdapat sederetan angka numerik yang dimasukan dan diakhiri dengan tanda 9999. tuliskan algoritma untuk menghitung banyaknya angka positif dari deretan angka tersebut!

illustrasi

1 -3 4 -2 -9 9999

Jumlah angka positif adalah : 2

PROGRAM BanyaknyaAngkaPositif

{Menghitung jumlah bilangan positif yang dimasukan}

DEKLARASI

x : integer {data integer yang dibaca dari papan ketik} jumlah : integer

ALGORITMA

(19)

jumlah  0 {inisialisasi} while x ≠ 9999 do

if x > 0 then

jumlah  jumlah + 1 endif

read(x) endwhile

{x = 9999} {kondisi setelah pengulangan berhenti} write(jumlah)

LATIHAN Mesin Karakter

1. Diberikan mesin bertipe karakter yang terdapat sederetan karakter yang dimasukan dan diakhiri tanda ’ * ’. Tuliskan algoritma untuk menghitung karakter ’A’ yang dimasukan!

Ilustrasi

M A K A N *

Jumlah karakter A : 2

2. Tuliskan algoritma untuk menghitung jumlah kemunculan pasangan huruf ’an’ di dalam mesin karakter. Misalkan pada contoh dibawah ini jumlah ’an’ ada 3 buah (ditandai dengan arsiran.)

Ilustrasi

Jumlah ’an’ adalah : 3

3. Tuliskan Algoritma untuk menghitung banyaknya kata di dalam pita karakter. Kata adalah deretan karakter bukan spasi yang diakhiri dengan spasi atau titik.

Ilustrasi

Jumlah Kata adalah : 3

Mesin Integer

1. Diberikan mesin bertipe integer yang terdapat sederetan angka numerik yang dimasukan dan diakhiri dengan tanda 9999. tuliskan algoritma untuk menghitung nilai rata-rata angka tersebut!

illustrasi

1 3 5 6 10 9999

2. Diberikan mesin bertipe integer yang terdapat sederetan angka numerik yang dimasukan dan diakhiri dengan tanda 9999. tuliskan algoritma untuk menghitung jumlah bilangan genap saja!

P A N D A N G A N *

(20)

illustrasi

3. Diberikan mesin bertipe integer yang terdapat sederetan angka numerik yang dimasukan dan diakhiri dengan tanda 9999. tuliskan algoritma untuk menghitung jumlah angka 10 saja!

illustrasi

1 3 5 6 10 9999

(21)

MATERI 6 PROCEDURE DAN FUNCTION

Program yang besar lebih sulit dimengerti dan lebih sulit lagi dalam melakukan pelacakan kesalahan (Jika ada). Oleh karena itu, program sebaiknya dipecah menjadi beberapa sub program yang lebih kecil. Setiap sub program melakukan komputasi yang spesifik. Sub program yang baik adalah sub program yang independent dari program utama, sehingga programnya dapat dirancang tanpa mempermasalahkan bagaimana sub program tersebut dilakukan, tetapi cukup memikirkan apa yang ia lakukan. Sub program yang bagus menyembunyikan detil operasi dari bagian program yang tidak perlu tahu tentang sub-program tersebut. Teknik pemecahan program menjadi sejumlah sub program dinamakan teknik pemrograman modular. Modular artinya penyelesaian seluruh masalah dapat dipecah-pecahkan dengan unsur-unsur langkah penyelesaian spesifik berbentuk modul yang berwujud prosedur (procedure) dan fungsi (function).

Keuntungan Pemrograman Modular

 Untuk aktivitas yang harus dilakukan lebih dari satu kali, modularisasi menghindari penulisan teks program yang sama secara berulangkali. Disini sub-program cukup ditulis sekali saja, lalu sub-program dapat dipanggil dari bagian lain di dalam program. Disini, penggunaan sub-program dapat mengurangi panjang program.

Kemudahan menulis dan menemukan kesalahan (debug) program. Kemudahan menulis akan sangat berguna pada masalah besar yang dikerjakan oleh satu tim pemrogram yang beranggotakan beberapa orang. Masalah yang akan diprogram dipecah menjadi beberapa masalah yang lebih kecil. Setiap masalah yang lebih kecil tesebut ditulis kedalam modul yang spesifik dan dikerjakan oleh orang yang berbeda. Satu modul bisa berisi dari satu atau lebih sub-program. Seluruh modul diintegrasikan menjadi satu buah program yang lengkap.Program yang modular menjadi lebih mudah untuk dibaca dan dimengerti. Program yang tidak modular sulit dipahami, khususnya kalau program tersebut panjang atau terdiri dari puluhan, ratusan, atau ribuan baris instruksi.

Karena setiap sub-program melakukan aktivitas spesifik, maka apabila terdapat kesalahan di dalam program, kesalahan tersebut cukup dilokalisir di dalam sub-program yang bersangkutan. Kebanyakan program komputer ditulis modular, meskipun program tersebut tidak melibatkan ekseskusi yang berulang dari aktivitas yang sama. Pemecahan program menjadi modul-modul yang lebih kecil umumnya dianggap sebagai praktik pemrograman yang baik dan terstruktur.

Terdapat 2 bentuk sub-program, yaitu prosedur (procedure) dan fungsi (function). Dimana struktur setiap sub-program tersebut pada hakikatnya sama dengan struktur program biasa, yaitu ada bagian judul (header) yang berisi nama modul, bagian deklarasi, dan badan (body) program yang berisi instruksi yang akan dilaksanakan.

Variabel Global dan Variabel Lokal

Variabel global adalah variabel yang dapat dipakai diseluruh program, di program utama atau di dalam procedure atau function.

Variabel lokal hanya dapat dipakai di tempat pendefinisiannya. Jika variabel lokal didefinisikan didalam procedure, maka hanya procedure tersebut yang mengenalnya.

Suatu variabel atau peubah akan dideklarasikan global atau local tergantung kepada penggunaan nama tersebut. Jika suatu variabel digunakan di seluruh bagian program (termasuk di dalam prosedur), maka variabel tersebut harus dideklarasikan global. Sebaliknya, jika variabel tersebut hanya digunakan di dalam prosedur/function saja, maka nama variabel “sebaiknya” dideklarasikan sebagai variabel lokal saja, meskipun bila dideklarasikan global pun masih tetap benar.

(22)

memberikan keuntungan, sebab variabel lokal membuat program lebih elegan, dan dapat meminimumkan usaha pencarian kesalahan yang disebabkan oleh nama tersebut, karena variabel lokal hanya dipakai di dalam lingkup procedure atau function saja.

Procedure/function yang baik adalah yang independen dari program pemanggilnya. Pernyataan ini menyiratkan bahwa procedure/function yang baik tidak menggunakan variabel-varibel global di dalam badan procedur / function-nya. Jika program utama perlu mengkomunikasikan nilai variabel global ke dalam procedure/fucntion, maka ada satu cara untuk melakukannya yaitu dengan menggunakan parameter. Karena parameter dapat mengurangi kebutuhan penggunaan variabel global.

6.1 Parameter

Kebanyakan program memerlukan informasi antara procedure ( atau fungsi) dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme pertukaran informasi tersebut. Tiap item data ditransfer antara parameter actual dan parameter formal yang bersesuaian. Parameter actual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan didalam bagian header procedure/function itu sendiri. Ketika procedure/function dipanggil, parameter actual menggantikan parameter formal. Tiap-tiap parameter actual berpasangan dengan parameter formal yang bersesuaian.

Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan didalam procedure/function, yaitu :

a.

Parameter masukan (input) → parameter yang nilainya berlaku sebagai masukan untuk procedure/function.

b.Parameter keluaran (output)→parameter yang menampung keluaran yang dihasilkan oleh procedure. c.Parameter masukan/keluaran (input/output parameter)→ parameter yang berfungsi sebagai masukan sekaligus keluaran bagi procedure tersebut.

Dalam function hanya ada parameter masukan saja.

Bila procedure menghasilkan keluaran yang digunakan oleh program pemanggil, gunakan parameter keluaran untuk menampung keluaran tersebut. Sebaliknya, bila procedure tidak menghasilkan keluaran, atau kalaupun menghasilkan keluaran dan ternyata keluaran tersebut hanya digunakan di dalam procedure itu saja, gunakan parameter masukan. Bila procedure menerima masukan sekaligus keluaran pada parameter yang sama, gunakan parameter masukan/keluaran.

Aturan penting yang harus diamati dalam korespondensi satu-satu antara parameter actual dan parameter formal adalah :

a. Jumlah parameter actual pada pemanggilan procedure/function harus sama dengan jumlah parameter formal pada deklarasi procedure/function-nya.

b. Tiap parameter actual harus bertipe sama dengan tipe parameter formal yang bersesuaian.

6.2 PROCEDURE (PROSEDUR)

Procedure adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek netto. Pada beberapa bahasa pemrograman, procedure dikenal dengan nama subroutine. Atau lebih jelasnya, procedure merupakan sekumpulan instruksi yang dibungkus yang akan dipakai / dipanggil dalam program utama. Ini berarti, instruksi-instruksi didalam procedure baru dapat dilaksanakan hanya bila procedure tersebut diakses.

Struktur Procedure :

(23)

Procedure NamaProcedure(deklarasi parameter,jika ada)

{Spesifikasi procedure, berisi penjelasan tentang apa yang dilakukan oleh prosedur ini, keadaan sebelum prosedur dijalankan dan setelah prosedur dijalankan}

Deklarasi :

{Semua nama yang dipakai dalam prosedur didefinisikan disini dan hanya berlaku lokal di dalam prosedur}

Algoritma :

{Badan prosedur, berisi kumpulan instruksi}

Notasi Pascal :

Keterangan :

Dalam bahasa Pascal, pendefinisian prosedur ditulis bersatu di dalam program utama, kecuali jika direalisasikan sebagai unit. Prosedur diletakkan dibawah kata var.

Bahasa Pascal memungkinkan prosedur mempunyai parameter masukan, parameter keluaran, dan parameter masukan/keluaran. Parameter formal yang bertipe keluaran atau masukan/keluaran harus diawali dengan kata kunci var, sedangkan untuk parameter formal yang bertipe masukan tidak diawali dengan kata kunci var.

Argumen parameter aktual dilewatkan ke parameter formal bertipe masukan sebagai “by value”, sedangkan bila parameter formalnya bertipe keluaran atau masukan/keluaran, maka argumen parameter aktual dilewatkan sebagai “By reference”

Contoh procedure : Algoritmik:

Procedure NamaProcedure(deklarasi parameter,jika ada);

{Spesifikasi procedure, berisi penjelasan tentang apa yang dilakukan oleh prosedur ini, keadaan sebelum prosedur dijalankan dan setelah prosedur dijalankan}

(* Deklarasi *)

var

{Semua nama yang dipakai dalam prosedur didefinisikan disini dan hanya berlaku lokal di dalam prosedur}

(*Algoritma*)

begin

{Badan prosedur, berisi kumpulan instruksi}

(24)

Procedure Luas_Segitiga {Procedure tanpa parameter)

Deklarasi : {Variabel Lokal} alas,tinggi,luas: real

Algoritma :

write('Masukan alas segitiga: ') read(alas)

write('Masukan tinggi segitiga: ') read(tinggi)

luas (alas*tinggi)/2 write('luas segitiga: ',luas)

Procedure Tukar1 ( input A,B :integer) {Procedure dengan 2 parameter input)

Deklarasi :

Temp:integer

Algoritma :

Temp  A A  B B  Temp

Procedure Maksimum ( input A,B:integer; output Maks:integer) {Procedure dengan 2 parameter input dan 1 parameter output)

Algoritma :

if A>B then maks  A else

maks  B endif

Procedure Tukar2 ( input /output A,B :integer) {Procedure dengan 2 parameter input/output)

Deklarasi : Temp:integer

Algoritma :

(25)

Program Contoh_Prosedur

Write('Angka ke-1 sekarang nilainya: ',X) Write('Angka ke-2 sekarang nilainya: ',Y) Tukar2(X,Y)

Write('Angka ke-1 sekarang nilainya: ',X) Write('Angka ke-2 sekarang nilainya: ',Y)

Pascal:

alas,tinggi,luas:real;

begin write('Luas segitiga:',luas);

end;

procedure tukar1 (a,b:integer);

var

procedure maksimum(a,b:integer;var maks:integer);

begin

if a>b then

(26)

maks:=b

end;

procedure tukar2 (var a,b:integer);

var

temp:integer;

begin

temp:=a; a:=b; b:=temp;

end;

{Program Utama}

begin

luas_segitiga;

write ('Masukan angka ke-1:'); readln(X);

write ('Masukan angka ke-2:'); readln(Y);

maksimum(X,Y,maksi);

writeln('Angka ke-1:',x,' ','Angka ke-2:',Y,' ','Nilai maksimum: ',maksi); tukar1(x,y);

writeln('Angka ke-1 sekarang nilainya:',X); writeln('Angka ke-2 sekarang nilainya:',Y); tukar2(x,y);

writeln('Angka ke-1 sekarang nilainya:',X); writeln('Angka ke-2 sekarang nilainya:',Y);

end.

6.3 Function (Fungsi)

Function adalah modul program yang memberikan/mengembalikan (return) sebuah nilai dan tipe tertentu. Sebagaimana halnya dengan procedure, function diakses dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal. Parameter pada fungsi sama seperti didalam prosedur, tetapi hanya ada parameter masukan saja jika ada. Function hanya dapat mengembalikan nilai bertipe sederhana. Karena itu, tipe hasil dari fungsi haruslah dari tipe sederhana.

Struktur Function :

Notasi Algoritmik :

Function NamaFunction(deklarasi parameter,jika ada):tipe

{Spesifikasi function, berisi penjelasan tentang apa yang dilakukan dan yang dikembalikan oleh function}

Deklarasi :

{Semua nama yang dipakai dalam function didefinisikan disini dan hanya berlaku lokal di dalam function }

Algoritma :

{Badan function, berisi kumpulan instruksi-instruksi untuk menghasilkan nilai yang akan dikembalikan oleh function}

(27)

Keterangan :

Dalam bahasa Pascal, function hanya dapat mengembalikan nilai bertipe sederhana (integer, real, boolean, char, dan string). Karena itu, tipe hasil dari fungsi haruslah dari tipe sederhana.

 Apabila function tidak memiliki daftar parameter formal, maka tanda ‘( )’ tidak ditulis.

 Function dideklarasikan sekaligus didefinisikan di dalam blok program utama pemanggil (sesudah kata kunci var).

Cara memanggil function:

Function diakses dengan cara memanggil namanya dari program pemanggil, diikuti dengan daftar parameter actual (bila ada). Karena fungsi menghasilkan nilai, maka nilai tersebut ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi.

peubah  namafunction(daftar parameter actual)

atau nilai yang dikembalikan oleh function dapat langsung dimanipulasi seperti contoh-contoh berikut:

write (Namafunction(daftar parameter actual))

if (Namafunction(daftar parameter actual)) < 0 then ……..

z2* (Namafunction(daftar parameter actual))-x+y

Contoh function :

Algoritmik :

Function NilaiRata(a,b,c:integer):real

Deklarasi :

NR:real

Algoritma :

NR (a+b+c)/3 NilaiRataNR

function NamaFunction(deklarasi parameter,jika ada):tipe

{Spesifikasi function , berisi penjelasan tentang apa yang dilakukan dan yang dikembalikan oleh function}

(* Deklarasi *)

var

{Semua nama yang dipakai dalam function didefinisikan disini dan hanya berlaku lokal di dalam function }

(*Algoritma*)

begin

{Badan function, berisi kumpulan instruksi-instruksi untuk menghasilkan nilai yang akan dikembalikan oleh function}

NamaFunction:= ekspresi; {pengembalian nilai yang dihasilkan fungsi}

(28)

Program Contoh_fungsi

Deklarasi :

Nilai1,Nilai2,Nilai3:integer RataRata:real

Function NilaiRata(a,b,c:integer):real

Algoritma :

write('Nilai 1 : ') read(Nilai1) write('Nilai 2 : ') read(Nilai2) write('Nilai 3 : ') read(Nilai3)

RataRataNilaiRata(Nilai1,Nilai2,Nilai3) write('Nilai rata-rata adalah ', RataRata)

Perhatikan bagian deklarasi function: function NilaiRata(a,b,c:integer):real

Function di atas mempunyai 3 parameter nilai,yaitu a,b,c. Ketiga parameter tersebut bertipe integer.Hasil dari function NilaiRata bertipe real. Di dalam function harus ada pernyataan yang memberi nilai pada function, pada contoh diatas adalah: NilaiRataNR.

Perhatikan cata pemanggilan function didalam program utama: NilaiAkhirNilaiRata(Nilai1,Nilai2,Nilai3)

Karena hasil dari function NilaiRata bertipe real,maka NilaiAkhir juga harus bertipe real.

Pascal:

Program Contoh_fungsi;

var

Nilai1,Nilai2,Nilai3:integer; RataRata : real;

function NilaiRata(a,b,c : integer):real;

var

NR:real;

begin

NR:= (a+b+c)/3; NilaiRata:=NR;

end;

{Program Utama}

begin

write('Nilai 1 : '); readln(Nilai1); write('Nilai 2 : '); readln(Nilai2); write('Nilai 3 : '); readln(Nilai3);

RataRata:=NilaiRata(Nilai1,Nilai2,Nilai3); write('Nilai rata-rata adalah ', RataRata);

(29)

KESIMPULAN

 Fungsi digunakan apabila modul program mengembalikan sebuah nilai.

 Prosedur digunakan bila modul menghasilkan effek netto dari (satu atau) sekumpulan aksi.

Fungsi dapat dikonversi sebagai prosedur dengan cara menyatakan nilai yang dikembalikan (return value) oleh fungsi tersebut sebagai parameter keluaran pada prosedur.

 Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis sebagai fungsi dengan cara menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi.

Latihan

- Buatlah program untuk menghitung berbagai luas dengan menggunakan procedure dan - function.

-

Buat procedure yang menghasilkan nilai rata-rata sekumpulan data bilangan bulat yang dibaca secara berulang-ulang dari keyboard (akhir pembacaan adalah 9999). Prosedur ini memiliki parameter keluaran, yaitu nilai rata-rata yang dihasilkan.

(30)

MATERI 7 ARRAY (LARIK)

Array adalah struktur data statis yang menyimpan sekumpulan elemen yang bertipe sama, dimana setiap elemen memiliki nilai indeks.

Konsep umum dari array :

1. Indeks array harus suatu type yang mempunyai keterurutan (ada suksesor dan predesesor). Misalnya integer atau karakter. Kecuali dalam bahasa C indeks array selalu bertipe integer.

2. Banyaknya elemen array harus sudah diketahui sebelum program dieksekusi.

3.

Tipe data elemen array dapat berupa tipe sederhana atau tipe bentukan (record.), atau bahkan bertipe array yang lain.

4. Setiap elemen data dapat diakses secara acak (random), jika indeksnya diketahui

5. Merupakan struktur data yang statis, artinya jumlah elemen yang sudah ditentukan, tidak bisa diubah selama eksekusi program.

Keuntungan data array / larik : a. Paling mudah pengoperasiannya

b. Ekonomis dalam pemakaian memori, bila semua elemen terisi c. Akses ke setiap elemen memerlukan waktu yang sama

Kerugian data array / larik :

Memboroskan tempat jika banyak elemen yang tidak digunakan.

Penggunaan struktur data array/larik:

Array digunakan bila kita mempunyai sejumlah data yang bertipe sama, dan kita perlu menyimpan sementara data tersebut, untuk selanjutnya data tersebut dimanipulasi.

Selama pelaksanaan program, array tetap menyimpan nilai. Hal ini bermanfaat bila kita ingin menggunakan nilai-nilai di dalam array tersebut untuk diproses lebih lanjut di bagian lain di dalam algoritma.

Dengan menggunakan array, kita dapat menghindari penggunaan nama-nama variabel yang banyak. Misalnya : kita membutuhkan 10 buah variabel untuk menyimpan nilai-nilai yang sama, misalnya integer. Otomatis ini akan ada 10 buah pernyataan membaca dan menulis ke layar, dan beberapa ekspresi untuk memanipulasi nilai-nilai tersebut. Dengan menggunakan array, menyimpan 10 buah variabel nilai hanya dibutuhkan satu variabel array yang terdiri atas 10 buah elemen. Selain itu, dengan array, instruksi pembacaan/penulisan seluruh elemen array cukup ditulis satu kali saja di dalam sebuah konstruksi pengulangan.

Representasi array yang umum dibagi menjadi dua, yaitu : 1. Representasi array 1 dimensi.

A[1] A[2] ……… A[Nmax]

2. Representasi array 2 dimensi

A[1,1] A[1,2] A[1,Nmax]

A[1,1] A[1, Nmax]

(31)

A[Nmax,1] A[Nmax, Nmax]

Keterangan :

Sebenarnya array dapat direpresentasikan dengan dimensi yang tak hingga, tetapi ini tidak umum digunakan, jadi jumlah dimensi disesuaikan dengan kebutuhan setiap penanganan kasus yang berbeda -beda.

PEMROSESAN LARIK

 Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik.

 Yaitu elemen dengan indeks terkecil, berturut-turut pada elemen berikutnya, sampai elemen terakhir dicapai, yaitu elemen dengan indeks terbesar.

7.1 ARRAY 1 DIMENSI

char namabrg[30] [20];

/* Artinya namabrg bertipe string dengan panjang 30 dan merupakan array yang berisi 21 elemen, karena di C indeks elemen dimulai dari 0 */

(32)

3. Mendefinisikan ukuran maksimum elemen array sebagai konstanta Contoh:

Algoritmik :

Const Nmaks = 20

Type Huruf = array [1..Nmaks] of char

A : Huruf

Pascal :

Const Nmaks = 20;

Type Huruf = array [1..Nmaks] of char;

Var

A : Huruf;

Contoh Kasus :

Terdapat sebuah data yang berisi deretan angka, sebagai berikut :

5 6 8 1 ... ...

1 2 3 4 ... 200

Operasi-operasi dasar :

1. Menginisialisasi elemen array 2. Mengisi elemen array

3. Mencetak elemen array

4. Pencarian nilai maksimum pada array

5.

Pencarian sebuah bilangan pada array dengan metode sekuensial artinya pemrosesan dilakukan terurut berdasarkan indeks array.

Maka deklarasinya adalah :

Algoritmik:

Versi 1 :

Const Nmax=200

A:array [1..Nmax] of integer

ATAU

A:array [1..200] of Integer

Versi 2 :

Type

DeretAngka : array [1.. 200] of

integer

A:DeretAngka

Versi 3 :

Const Nmax=200

Type

DeretAngka : array [1..Nmax] of

integer

A:DeretAngka

(33)

Versi 1 :

1. Menginisialisasi elemen array Algoritmik :

Procedure InisialisasiArray (input/output A:deretAngka , input n:integer)

{Procedure ini berfungsi untuk memberikan harga awal untuk n elemen array,dengan nilai 0}

Deklarasi:

Procedure InisialisasiArray (var A:deretAngka ; n:integer);

{Procedure ini berfungsi untuk memberikan harga awal untuk n elemen array, dengan nilai 0}

VAR

Procedure IsiArray ( input/output A:deretAngka, input n:integer) { Procedure ini berfungsi untuk mengisi elemen array, dengan: input n =jumlah elemen array yang akan diisi

output A = array yang n elemennya sudah terisi }

(34)

Pascal:

Procedure IsiArray ( var A:deretAngka; n:integer);

{ Procedure ini berfungsi untuk mengisi elemen array, dengan: input n =jumlah elemen array yang akan diisi

output A = array yang n elemennya sudah terisi }

Var

Bil,i:integer;

Begin

for i:=1 to n do

begin

write('Masukan bilangan:');readln(bil); A[i]:=bil;

end; end;

3. Mencetak elemen array Algoritmik:

Procedure CetakArray (input A:deretAngka, input n:integer)

{ Procedure ini berfungsi untuk mencetak isi dari sebuah array, dengan: input A= array yang sudah berisi angka , n=jumlah elemen array yang akan dicetak isinya }

Deklarasi :

i :integer

Algoritma :

for i←1 to n do

write('Indeks ke-',i,'berisi angka:',A[i]) endfor

end;

Pascal :

Procedure CetakArray (A:deretAngka; n:integer);

{ Procedure ini berfungsi untuk mencetak isi dari sebuah array, dengan: input A= array yang sudah berisi angka , n=jumlah elemen array yang akan dicetak isinya }

Var

i :integer;

Begin

for i:=1 to n do begin

writeln('Indeks ke-',i,'berisi angka:',A[i]) end;

end;

4. Pencarian nilai maksimum pada array Algoritmik :

Procedure CariMax (input A:deretAngka, output Maks:integer, input N :integer) {Procedure ini berfungsi untuk mencari nilai maksimum pada sebuah

array,dengan: input A= array yang sudah berisi angka, output Maks=nilai maksimun yang dicari pada array}

(35)

i:integer

Procedure CariMax (A:deretAngka;var Maks:integer; N:integer);

{Procedure ini berfungsi untuk mencari nilai maksimum pada sebuah array,dengan: input A= array yang sudah berisi angka, output Maks=nilai maksimun yang dicari pada array}

var

5.

Pencarian sebuah bilangan pada array dengan metode sekuensial Algoritmik :

Procedure CariNilai(input A:DeretAngka;input x:integer)

{Procedure ini berfungsi untuk mencari sebuah nilai pada array, dengan input A= array berisi angka dan x = nilai yang akan dicari}

Procedure CariNilai(A:DeretAngka;x:integer);

{Procedure ini berfungsi untuk mencari sebuah nilai pada array, dengan input A= array berisi angka dan x = nilai yang akan dicari}

(36)

if A[i]=x then

writeln('Ketemu di indeks ke-',i) else

writeln('Tidak ketemu');

end;

Program utama untuk memanggil prosedur-prosedur diatas :

Algoritmik :

Program Contoh_Array

Deklarasi : Const Nmax=200

Type DeretAngka : array [1.. Nmax] of integer

Procedure InisialisasiArray (input/output A:deretAngka , input n:integer)

Procedure IsiArray (input/output A:deretAngka, input n:integer)

Procedure CetakArray (input A:deretAngka, input n:integer)

Procedure CariMax (input A:deretAngka,output Maks:integer,N:integer)

Procedure CariNilai(input A:DeretAngka,input x:integer)

B : deretAngka;

jumlah,maksimum,angka : integer;

Algoritma Utama :

write(‘Masukan banyaknya array:’)

read(jumlah)

InisialisasiArray(B,jumlah) IsiArray(B,jumlah) CetakArray(B,jumlah) CariMax(B,maksimum,jumlah)

write(‘Nilai maksimum:’,maksimum)

write(‘Masukan angka yang akan dicari:’)

read(angka) CariNilai(B,angka)

Pascal :

Program Contoh_Array; Const Nmax=200;

Type

DeretAngka : array [1.. Nmax] of integer;

Procedure InisialisasiArray (var A:deretAngka ; n:integer);

Procedure IsiArray ( var A:deretAngka; n:integer);

Procedure CetakArray (A:deretAngka; n:integer);

Procedure CariMax (A:deretAngka;var Maks:integer; N:integer);

Procedure CariNilai(A:DeretAngka;x:integer);

Var

B : deretAngka;

jumlah,maksimum,angka : integer;

Begin

write(‘Masukan banyaknya array:’);

readln(jumlah);

(37)

CetakArray(B,jumlah); CariMax(B,maksimum,jumlah);

writeln(‘Nilai maksimum:’,maksimum);

write(‘Masukan angka yang akan dicari:’);

read(angka); CariNilai(B,angka);

end.

7.2 ARRAY BERTIPE TERSTRUKTUR

Algortma Array sebelumnya menggunakan tipe data sederhana, Elemen Array juga bisa menggunakan Tipe data bentukan yaitu Record atau lebih dikenal dengan Tipe Terstruktur.

Misalkan akan melakukan proses pengolahan data 100 orang mahasiswa, Data setiap mahasiswa terdiri dri NPM (Nomor Pokok Mahasiswa), Nama mahasiswa, dan IPK (Indeks prestasi Kumulatif Siswa).

Struktur Lojiknya sebagai berikut:

NPM NamaMhs IPK

1 28001 Dina Rahmayanti 3.57

2 28002 Catur Wulan 3.30

3 28003 Bayu Nisa 3.53

. .

N 280020 Risma wulandari 3.60

Struktur Array yang dideklarasikan sebagai berikut: DEKLARASI

const Nmaks = 100

type Mahasiswa : record <NPM: integer, NamaMhs:String, IPK : real>

type TabMhs : Array [1…NMaks] of Mahasiswa

Mhs : TabMhs

Algoritma untuk mengisi dan membaca larik Mhs adalah sebagai berikut:

Procedure BacaDataMahasiswa(input N :integer, output Mhs:TabMhs)

Deklarasi

I : integer;

Algoritma :

For i:=1 To N Do

Read(Mhs[i].NIM) Read(Mhs[i].NamaMhs) Read(Mhs[i].IPK)

EndFor

Procedure TulisDataMahasiswa(input N:integer, output:Mhs:TabMhs)

Deklarasi

I,j : integer;

Algoritma :

For i:=1 To N Do

Write (Mhs[i].NPM, Mhs[i].NamaMhs, Mhs[i].IPK)

(38)

LATIHAN

1.

Diketahui sebuah integer array TabInt [1…8], yang telah terisi dengan nilai-nilai ujian mahasiswa seperti berikut ini:

Tuliskan Algoritma untuk:

a. Mencari Nilai Maksimum dari Nilai Ujian Tersebut.

b. Menghitung Nilai Rata-rata Nilai Tersebut.

2.

Diketahui sebuah integer array TabInt [1…8], yang telah terisi dengan nilai-nilai berikut ini:

Tuliskan Algoritma untuk:

a. Menghitung banyaknya bilangan Genap dan Ganjil.

b. Menghitung banyaknya bilangan positif dan negatif.

50 90 80 70 60 100 90 100

Referensi

Dokumen terkait

Demikian pengumuman pemenang lelang ini disampaikan, apabila ada peserta yang keberatan atas penetapan pemenang ini, dapat menyampaikan sanggahan secara tertulis kepada Kelompok

Data D2 yang tidak masuk pada D3 Serdos Gelombang 201602 ini akan dicek kembali pada database di PDPT untuk penyusunan data D3 Serdos selanjutnya.. PT dapat mengusulkan dosen yang

[r]

[r]

Data D2 yang tidak masuk pada D3 Serdos Gelombang 201602 ini akan dicek kembali pada database di PDPT untuk penyusunan data D3 Serdos selanjutnya.. PT dapat mengusulkan dosen yang

jasa catering ULP Non Organik Polres Ma kan (pelelangan sederhana) pascakualif ronik (SPSE) versi 4.1.1 untuk paket penga. rjaan : Pengadaan

DETIL DATA D2 BELUM MASUK D3 TAHUN 2016 GELOMBANG 201602 PT Pengusul (PTU): SEKOLAH TINGGI ILMU EKONOMI AHMAD DAHLAN JAKARTA3. Halaman: 1 Tampilkan

Pokja ULP/ Panitia Pengadaan pada Badan Pusat Statistik Kabupaten Nagekeo Program Peningkatan Sarana dan Prasarana Aparatur Badan Pusat Statistik, Kegiatan Revitalisasi Gedung