Melayani Dengan Nurani

IA

Berubah tanpa ilmu adalah perubahan sia-sia

Yang abadi dalam kehidupan di dunia adalah perubahan, dengan ilmu perubahan menjadi terarah.

Orang cerdas itu adalah orang yang berencana untuk besok hari

Maka disiplin adalah bagian dari rencana.

28 Agustus 2020

Menerapkan Penggunaan Fungsi dan Prosedur

 PROCEDURE DAN FUNCTION

Pemahaman fungsi dan prosedur ini menjadi fondasi atau dasar pemahaman pemrograman berbasis objek. Tanpa pemahaman yang paripurna mengenai faham fungsi atau prosedur maka akan kesulitan untuk memahami pemrograman berorientasi objek.

 
TUJUAN

1. Siswa dapat mengetahui salah satu teknik pemrograman terstruktur yaitu pada pembuatan Sub Program atau penerapan konsep program modular.

2. Siswa dapat membuat Procedure serta Fungsi sendiri

 PROSEDUR DAN FUNGSI

Prosedur maupun fungsi adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Prosedur diawali  dengan kata cadangan “Procedure” sedangkan fungsi diawali dengan kata cadangan “Fungction” pada bagian deklarasinya.

 Perbedaan paling mendasar antara Procedure dan Fungsi bahwa Pada Procedure tidak dapat memulangkan(mengembalikan)   nilai kepada bagian program yang memanggilnya sedangkan pada fungsi dapat memulangkan nilai.

 Bentuk Umum Pendeklarasian Procedure :

 Procedure Nama_Prosedur;

 Begin

Statement;
. . .
Statement;

End;

 

Atau :

Procedure Nama_Prosedur(Daftar Parameter); Begin

Statement;
 . .
Statement;

End;

Bentuk Umum Pendeklarasian Fungsi :

Function Nama_Fungsi : Type_Data;

Begin

Statement;
. . .
Statement;

End;

 Atau :

Function Nama_Fungsi(Daftar Parameter): Type_Data; Begin

Statement;
. . .

Statement;

End;


Contoh Program :

{ Contoh Pemakaian Procedure dan Fungsi } Uses CRT;

Var

op1,op2 : integer;

Hasil : integer;

{ Prosedur cetak hasil }

Procedure Cetak_hasil(hasil :integer); Begin

Write(' Hasil Penjumlahan  = ',hasil);

End;

 { Fungsi Tambah }

 Function Tambah(a: integer; b:integer):integer; Begin

Tambah := a + b;

End;

 

{ Program Utama } Begin

Clrscr;

 

Write(' Masukkan Operand 1 = '); Readln(op1);
Write(' Masukkan Operand 2 = '); Readln(op2);

hasil := Tambah(op1,op2); Cetak_Hasil(hasil); Readln;

End.

 PARAMETER FORMAL DAN PARAMETER AKTUAL

Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi atau prosedur.
Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi atau prosedur

Dalam contoh program pertambahan di atas parameter formal terdapat pada pendefinisisan fungsi dan Procedure.

Procedure Cetak_hasil(hasil :integer);

Function Tambah(a: integer; b:integer):integer;

Sedangkan parameter aktual terdapat pada pemanggilan fungsi atau procedure hasil :=

Tambah(op1,op2);

Cetak_Hasil(hasil);

 CARA MELEWATKAN PARAMETER

 Cara melewatkan suatu parameter dalam Bahasa Pascal ada dua cara yaitu pemanggilan secara nilai (Call by Value) dan Pemanggilan Secara Referensi

 

(Call by Reference).

 Pemanggilan Secara Nilai (Call By Value)

 Call by value akan menyalin nilai dari parameter aktual ke parameter formal. Yang dikirimkan ke fungsi atau prosedur adalah nilai dari datanya, bukan alamat memori letak dari datanya.

Fungsi dan prosedur yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi atau prosedur.

Perubahan nilai di fungsi atau prosedur (parameter formal) tidak akan merubah nilai asli di bagian program yang memanggilnya.

Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi atau prosedur ke fungsi atau prosedur yang dipanggil.

Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstanta saja.

Contoh Program :

{ Program pemanggilan prosedur atau fungsi secara pengiriman nilai (call by value) }

Uses CRT;

 

Var

a,b : integer;

{ Deklarasi Procedure Tukar } Procedure tukar(x:integer;y:integer); Var

z : integer; { variabel sementara } Begin

{ tukar nilai x dan y }

z := x;

x := y;

y := z;

 

Writeln(' Nilai di akhir fungsi tukar() '); Writeln(' x = ',x,', y = ', y);

End;

 { Program Utama } Begin

Clrscr;

{ inisialisasi nilai a dan b } a := 15;

b := 10;

Writeln('<< Nilai sebelum pemanggilan fungsi >>'); Writeln(' a = ',a,' b = ',b);

tukar(a,b); { pemanggilan prosedur tukar()} Writeln('<< Nilai setelah pemanggilan fungsi >>'); Writeln(' a = ',a,' b = ',b);

Readln;

End.

Pemanggilan Secara Referensi (Call by Reference)

Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi atau prosedur.

Yang dikirimkan ke fungsi atau prosedur adalah alamat letak dari nilai datanya, bukan nilai datanya.

Fungsi atau prosedur yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya.

Perubahan nilai di fungsi atau prosedur akan merubah nilai asli di bagian program yang memanggil fungsi atau prosedur.

Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi atau prosedur pemanggil ke fungsi atau prosedur yang dipanggil dan juga sebaliknya.

Pengiriman secara acuan tidak dapat dilakukan untuk suatu ungkapan.

Contoh Program :

{ Program pemanggilan prosedur atau fungsi secara pengiriman referensi (call by reference) }

Uses CRT;

Var

a,b : integer;

 { Deklarasi Procedure Tukar }

 Procedure tukar(var x:integer;var y:integer); Var

 z : integer; { variabel sementara } Begin

 { tukar nilai x dan y } z := x;

 x := y; y := z;

 Writeln(' Nilai di akhir fungsi tukar() '); Writeln(' x = ',x,', y = ', y);

End;

 { Program Utama } Begin

Clrscr;

 { inisialisasi nilai a dan b } a := 15;

 b := 10;

Writeln('<< Nilai sebelum pemanggilan fungsi >>'); Writeln(' a = ',a,' b = ',b);

tukar(a,b); { pemanggilan prosedur tukar()} Writeln('<< Nilai setelah pemanggilan fungsi >>');

Writeln(' a = ',a,' b = ',b);

Readln;

End.

 

PENGGOLONGAN VARIABEL

 Berdasarkan kelas penyimpanannya variable pada Pascal secara umum dapat dibedakan kedalam dua kelas yaitu :

Variabel lokal

 Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi.

 Sifat-sifat variabel lokal :

 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses eksekusi terhadap fungsi berakhir.

 Hanya dikenal oleh fungsi tempat variabel dideklarasikan

 Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya random).



Variabel global (eksternal)
Variabel global (eksternal) adalah variabel yang dideklarasikan di luar fungsi.
Sifat-sifat variabel global :
Dikenal (dapat diakses) oleh semua fungsi.

Jika tidak diberi nilai awal secara otomatis berisi nilai nol.






TUGAS :

Buatlah fungsi untuk menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap.

Buatlah prosedur yang akan meng-input 10 data numerik lalu akan melakukan pensortiran secara Ascending (dari terkecil ke terbesar).

Buatlah suatu fungsi yang akan memulangkan nilai faktorial dari suatu bilangan.



Menganalisis Penggunaan Array Untuk Penyimpanan Data di Memori

 TUJUAN

 Siswa dapat memahami struktur data Array, serta pemanfaatannya didalam perancangan program yang terstruktur.

STRUKTUR DATA ARRAY

Array adalah suatu tipe data terstruktur yang terdapat dalam memori yang terdiri dari sejumlah elemen (tempat) yang mempunyai tipe data yang sama dan merupakan gabungan dari beberapa variable sejenis serta memiliki jumlah komponen yang jumlahnya tetap.

Elemen – elemen dari array tersusun secara sequential dalam memori komputer. Array dapat berupa satu dimensi, dua dimensi, tiga dimensi ataupun banyak dimensi.

ARRAY SATU DIMENSI

 Array satu dimensi tidak lain adalah kumpulan elemen–elemen yang identik yang tersusun dalam satu baris. Elemen – elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.

Untuk lebih jelasnya perhatikan gambar berikut :




 








                  


Bentuk Umum

Type

<NamaArray> = array[IdexArray] of TipeData;

 Contoh :

 Type

Gaji         = array[1..10] of longint;

 Logika = array[boolean] of integer;

 Pendeklarasian array diawali dengan kata baku type dan diikuti dengan nama array dan tanda sama dengan (=), lalu kata baku array beserta range index dan diakhiri dengan kata baku of beserta tipe datanya.

 Kita dapat mendeklarasikan sebuah tipe data baru yang terdiri dari elemen yang kita sebutkan satu persatu untuk kemudian dipakai sebagai index array . Tipe data tersebut disebut sebagai tipe data enumerasi. Perhatikan contoh dibawah :

Type

Hari=(Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu); PendapatanHarian = array[Hari] of real

Selain itu kita juga dapat mendeklarasikan sebuah tipe data berupa subrange bilangan untuk kemudian dipakai sebagai index dari suatu array seperti berikut.

Type

Tinggi = 145..210;

TinggiManusia = array [tinggi] of byte;

Atau kita juga dapat menggunakan konstanta untuk kemudian dipakai dalam index array. Untuk menggunakan konstanta perlu diawali dengan kata baku const. Untuk lebih jelasnya perhatikan contoh berikut.

Const

Min = 1;

Max = 10;

Type

Arr = array[Min .. Max] of byte;

Var

Point : arr;


Contoh Program :

{               Program untuk menginput nilai mahasiswa ke dalam array satu dimensi }

Program Data_Mahasiswa(Input,Outpu);

Uses CRT;

Type

Nilai_Mhs = array[1..10] of integer;

Var

Index : integer;

Nilai : Nilai_Mhs;

Begin

Clrscr;

 

{ Proses input nilai mahasiswa }

Writeln('<< Menginput nilai 10 mahasiswa >>');

for index:=1 to 10 do

Begin

Write(' Mahasiswa -> ',index:2,' = '); Readln(nilai[index]);

End;

Writeln;

Write(' Tekan Enter untuk melihat nilai mahasiswa... '); Readln;

{ Proses menampilkan nilai mahasiswa }

 CLRSCR;

 Writeln('<< Nilai mahasiswa yang telah diinput >>'); for index:=1 to 10 do

 Writeln(' Nilai -> ',index:2,' = ',Nilai[index]:5); Readln;

 End.

 
ARRAY DUA DIMENSI

 Array dua dimensi, yang sering digambarkan sebagai sebuah matriks adalah merupakan perluasan dari sebuah array satu dimensi. Jika pada array satu dimensi hanya terdiri dari sebuah baris dengan beberapa kolom elemen maka pada array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen yang betipe sama sehingga dapat diilustrasikan seperti berikut.

 


                            






























Bentuk Umum :

Type

<NamaArray> = array[IndexArray1,IndexArray2] of TipeData;

 Contoh :

 Type

 Matriks = array[1..2,1..3] of byte; Logika = array[1..5,boolean] of integer;

 Type

Baris = 1..2;

Kolom = 1..3;

Ordo = array[Baris,Kolom] of byte;

 Var

Matrix : ordo;

 Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian arary satu dimensi, kecuali pada array dua dimensi terdapat dua index array yang terdapat didalam kurung siku dan masing- masing index boleh berbeda tipe. Untuk lebih jelasnya perhatikan contoh berikut ini.

 Type

Kegiatan = (Main, Belajar, Nonton, Berenang};

 Hari = (Senin, Selasa, Rabu, Kamis, Jumat, Sabtu); AktivitasAnak = array[Hari, Kegiatan] of byte;

Var

 A: AktivitasAnak;

 Pendeklarasian array AktivitasAnak diatas menggunakan dua buah tipe data yang masing-masing didefenisikan sendiri yaitu kegiatan dan hari. Jika digambarkan struktur array Aktivitas anak tersebut akan nampak seperti berikut.

 

[Main]

[Belajar]

[Nonton]

[Berenang]

 

 

 

 

 

[Senin]

10

12

23

35

21

5

11

44

[Selasa]

32

2

29

8

[Rabu]

20

13

16

6

[Kamis]

14

4

18

25

[Jum’at]

26

9

17

22

[Sabtu]



Untuk dapat mengakses masing – masing elemen dari array AktivitasAnak diatas kita harus mengetahui posisi baris dan kolom dari elemen – elemen yang ingin diakses tersebut. Sebagai contohnya jika kita ingin mengakses data yang di higlight pada tabel diatas (5) dapat kita deklarasikan seperti dibawah ini :

 

A [Selasa, Belajar]

 Note : Jika kita terbalik menuliskan baris dan kolom index array maka akan terjadi error.

 Contoh Program :

 

{ Program menginput nilai(bilangan) ke dalam array dimensi dua dan menampilkannya }

Program Matrix(Input,Output);

Uses CRT;

Type

Ordo = array[1..3,1..4] of integer;

Var

Baris, Kolom : Integer;

Matriks : Ordo;


Begin

Clrscr;

{ Menginput elemen array secara Row Major Order }

Writeln('<< Proses memasukkan elemen array >>');

for baris:=1 to 3 do

Begin

for kolom:=1 to 4 do Begin

Write(' Matriks[',baris,'][',kolom,'] = '); Readln(matriks[baris][kolom]);

End;

Writeln;

End;

 

{ Menampilkan elemen Array secara Row Major Order }

Writeln('<< Proses menampilkan isi array >>');

for baris:=1 to 3 do Begin

for kolom:=1 to 4 do Begin

Write(matriks[baris][kolom]:5);

End;

Writeln;

End;

Readln;

End.

 

Contoh Program

 

{ Program penjumlahan matriks dua dimensi } Program Penjumlahan_Matrix(Input,Output); Uses CRT;

Type Ordo = array[1..3,1..4] of integer;

 Var

A,B,X,Y,C : Ordo;

i,j : Integer;

Begin

Clrscr;

 {******* Masukkan matriks A *******}

 Writeln('<< Matriks A >>');

for i:=1 to 3 do

Begin

for j:= 1 to 4 do

Begin

 

Write(' Input data matrik A[',i,'][',j,']= '); Readln(A[i][j]);

 

End;

End;

 

{******** Masukkan matriks B ********}

Writeln('<< Matriks B >>');

for i:=1 to 3 do

Begin

for j:= 1 to 4 do

 Begin

 Write(' Input data matrik B[',i,'][',j,']= '); Readln(B[i][j]);

End;

End;

 

{******** Proses penjumlahan matriks A dan B ********}

 

for i:=1 to 3 do

Begin

for j:= 1 to 4 do

 

Begin

X[i][j]:=A[i][j]+B[i][j];

End;

End;

 

Clrscr;

{******** Cetak isi matriks A ********}

Writeln('<< matrik A >>');

 for i:=1 to 3 do

 Begin

for j:=1 to 4 do

Write(A[i][j]:6);

Writeln;

End;

Writeln;

 

{******** Cetak isi matriks B *******}

Writeln('<< matrik B >>');

for i:=1 to 3 do

Begin

for j:=1 to 4 do

 

Write(B[i][j]:6);

Writeln;

End;

Writeln;

 

{** Cetak hasil penjumlahan matriks A dan B **} Writeln('<< matrik penjumlahan A+B >>'); for i:=1 to 3 do

 

Begin

for j:=1 to 4 do

Write(X[i][j]:6);

Writeln;

End;

Writeln;

Readln;

 End.

  

ARRAY TIGA DIMENSI

 

Array tiga dimensi dapat dianalogikan sebagai suatu benda ruang 2 dimensi .


Bentuk Umum :


Type

<NamaArray> = array[IndexArray1,IndexArray2,IndexArray3]of TipeData;

Contoh :

Type

Kalender = array[Tanggal, Bulan, Tahun] of byte; Logika = array[1..10,boolean,2..15] of integer;

Deklarasi pada array tiga dimensi tidak berbeda dengan deklarasi pada array satu dimensi dan dua dimensi yang telah dijelaskan sebelumnya, kecuali pada index array.


SOAL :

1. Buatlah program untuk menginput, menghitung serta mencetak perkalian dua matriks dengan ordo bebas.

2. Buatlah program untuk menghasilkan invers dari suatu matriks dengan ordo bebas.

 

27 Agustus 2020

Menerapkan Struktur Kontrol Perulangan

 PERULANGAN (LOOPING)

Tujuan Pembelajaran

Siswa mampu menguasai statemen-statemen dalam struktur perulangan, serta membedakan pada kasus perulangan yang bagaimana tepatnya suatu statemen perulangan dipakai.

Salah satu kegunaan pemrograman adalah untuk memudahkan pekerjaan yang harus dilakukan secara berulang.

Bentuk umum perulangan adalah :

'repeat'

aksi

'until' kondisi

Terdapat beberapa struktur pengulangan lain seperti 'while-do', 'for' dan sebagainya.

Dalam bahasa Pascal tersedia beberapa statemen yang digunakan untuk melakukan proses yang berulang-ulang sebanyak keinginan kita.

Misalnya saja, bila kita ingin menginput dan mencetak bilangan dari 1 sampai 100 bahkan 1000, tentunya kita akan merasa kesulitan. Namun dengan struktur perulangan proses, kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali, cukup dengan beberapa perintah saja. Struktur perulangan dalam bahasa Pascal mempunyai bentuk yang bermacam-macam.

STRUKTUR PERULANGAN “FOR”



Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana.

Bentuk umum perulangan for adalah sebagai berikut :


for var := Nilai_Awal to Nilai_Akhir do
statement

atau :

for var := Nilai_Awal downto Nilai_Akhir do statement

Catatan :

Kontrol variable harus dalam bentuk ordinal (bilangan bulat). Untuk perulangan dengan struktur “to” maka kontrol variable akan ditambahi 1 setiap perulangan, sedangakan dengan struktur “downto” kontrol variable akan dikurangi 1 setiap perulangan

19 Agustus 2020

Menerapkan Struktur Kontrol Percabangan Dalam Bahasa Pemrograman dan Membuat Kode Programnya

IF dan Case

IF- Percabangan

1. Pengertian Algoritma Percabangan

Suatu pernyataan atau perintah yang dilakukan bila memenuhi suatu kondisi atau persyaratan tertentu. Algoritma ini kita sebut dengan algoritma seleksi kondisi atau juga percabangan.
Contoh. Misalnya kita ingin menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. Algoritmanya dapat kita jabarkan

  1. Mulai
  2. Masukkan satu bilangan (X)
  3. jika X habis dibagi dua maka lanjut ke 4. Jika tidak lanjut ke 5
  4. tulis ‘X bilangan genap’. Lanjut ke 6.
  5. tulis ‘X bilangan ganjil’
  6. Selesai

Perhatikan bahwa ada dua kemungkinan perintah yang akan dikerjakan setelah perintah ke-3 dikerjakan. Jika X habis dibagi dua maka selanjutnya perintah ke-4 yang dikerjakan, kemudian melompat ke 6 (perintah 5 tidak dikerjakan). Sebaliknya jika X tidak habis dibagi dua perintah selanjutnya melompat ke-5 (perintah 4 tidak dikerjakan) dan kemudian berakhir pada perintah ke-6.

 2.      Ekspresi Boolean

 Ada dua komponen utama dalam ekspresi percabangan yaitu kondisi dan pernyataan. Kondisi adalah syarat dilakukannya sebuah (atau sekelompok) pernyataan, sedangkan pernyataan dalam konteks ini adalah perintah yang berkaitan dengan suatu kondisi. Contoh umum pernyataan kondisi-pernyataan

            1.  Jika hari hujan, maka saya tidak jadi keluar rumah

                       kondisi                        pernyataan

          

            2.  Jika nilai ujian lebih besar atau sama dengan 60, maka ujian dinyatakan lulus

                                     kondisi 1                                                 pernyataan 1

                 Jika nilai ujian kurang dari 60, maka ujian dinyatakan gagal

                                     kondisi 2                         pernyataan 2

 

Sebagaimana contoh sebelumnya dapat dilihat bahwa adakalanya suatu perintah dilakukan jika kondisi yang mempersyaratkannya telah jelas nilai benar salahnya. Dalam hal pemrograman kondisi tersebut harus bisa dinyatakan dalam suatu ekspresi boolean.

Ekspresi boolean adalah ekspresi yang hasil ekspresinya bernilai boolean (true atau false).

Ekspresi boolean dapat diperoleh dengan menggunakan dua jenis operasi :


1.      Operasi Boolean.

 

Operasi boolean adalah operasi yang menggunakan operator boolean seperti and, or, not, xor.

 Contoh operasi relasional

 1. z1 ß x and y

2. z2 ß a=2 or b=10

3. z3 ß not(x)

4. z4 ß p+2=4 xor q=0

 

2.      Operasi Relasional (Operasi Perbandingan)

 

Operasi relasional adalah operasi yang membandingkan dua buah operan dengan menggunakan operator perbandingan (ingat, operator perbandingan : =, <>, <, ≤, >, ≥).

Contoh operasi relasional

             1. z1 ß x > y

2. z2 ß a <> 10

3. z3 ß x + y = 17

4. z4 ß p div q < r

5. z5 ß p mod 2 = 0

 

Hasil dari operasi perbandingan memiliki dua kemungkinan, yaitu true (benar) atau false (salah). Oleh karena itu tipe hasil (z1, z2, z3, z4, z5) dari setiap operasi di atas adalah boolean.

 

3.      Algoritma Teks dan Flowchart Percabangan

 

Ada dua tipe algoritma percabangan yang akan kita bahas berikut ini yaitu

 

-          Satu kondisi (if-then) : artinya hanya ada satu kondisi yang menjadi syarat untuk melakukan satu atau satu blok (sekelompok) pernyataan. Bentuk umum algoritma teks standar percabangan dengan satu kondisi :

 

if <kondisi> then

pernyataan

Jika <kondisi> bernilai benar maka pernyataan dikerjakan, sedangkan jika tidak, maka pernyataan tidak dikerjakan dan proses langsung keluar dari percabangan (begin).

Contoh.

if A>B then

write (A)

 Ekspresi di atas menunjukkan bahwa perintah menulis / menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar. Jika yang terjadi adalah sebaliknya, tidak ada pernyataan yang dilakukan atau proses langsung keluar dari percabangan (endif). Secara flowchart ekspresi itu dapat ditulis seperti berikut. 


Perhatikan bahwa pada kotak belah ketupat memiliki dua cabang arus data, yang satu untuk kondisi bernilai benar (y, artinya ya), sedang yang lain untuk kondisi bernilai salah (t, artinya tidak). Jika kondisi bernilai benar (y) maka perintah yang dikerjakan adalah write(A). Jika kondisi salah (t) maka arus data langsung menuju ke bawah tanpa mengerjakan pernyataan apapun. 

-          Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat untuk dikerjakannya dua jenis pernyataan. Bentuk umum percabangan dengan dua kondisi :

if <kondisi> then

pernyataan1

     else

pernyataan2

 Jika <kondisi> bernilai benar maka pernyataan1 dikerjakan. Sedangkan jika tidak (<kondisi> bernilai salah), maka pernyataan yang dikerjakan adalah pernyataan2. Berbeda dengan percabangan satu kondisi, pada percabangan dua kondisi ada dua pernyataan untuk dua keadaan kondisi, yaitu untuk <kondisi> yang bernilai benar dan <kondisi> yang bernilai salah. Contoh algoritma percabangan dua kondisi :

             if A>B then

                
                write (A)

         else

                 write (B)

Ekspresi di atas sedikit berbeda dengan sebelumnya. Perintah menulis/menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar, sedangkan jika yang terjadi adalah sebaliknya maka pernyataan yang dilakukan adalah menulis B. Secara flowchart pernyataan di atas dapat ditulis sebagai berikut.














Berikut ini adalah beberapa contoh lainnya.

 a. If x > 0 then

        ket ß ‘bilangan positif’   

b.   if m = n

        i ß m*n

write(i)

 c. if bil>=0 then

          ket ß (‘bilangan positif’)

        else

          ket ß (‘bilangan negatif’)

    

d.   if m = n then

          i ß m*n

          j ß m-n  

    else

          i ß m/n  

          j ß m+n

write(i,j)

 

Latihan : Cobalah anda buat flowchart dari algoritma pada poin a-d di atas!

4.      Contoh soal

 1.      Buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. Input algoritma adalah bilangan yang akan ditentukan jenisnya.

algoritma bilangan_genap

deklarasi

    bil : integer

    ket : string

deskripsi

    read (bil)

    ketß’ganjil’

if bil mod 2 = 0 then

            ketß‘genap’

       write (bil)

 

 Flow Chart Algoritma bilangan_genap


Penjelasan

Mula-mula inputkan variabel (bil), misalnya 3. Kemudian (ket) diberi nilai ‘ganjil’. Kemudian karena kondisi (bil mod 2 = 0) bernilai salah, maka (ket) tidak berubah dan tetap bernilai ‘ganjil’, sehingga ketika perintah write(ket), output yang muncul adalah ‘ganjil’. Untuk jelasnya perhatikan tabel penyimpanan data berikut.

  

Perintah

bil

ket

Output

read (bil)

3

 

 

ketß’ganjil’

 

‘ganjil’

 

if bil mod 2 = 0 then

            ketß‘genap’

 

 

 

write (bil)

 

 

‘ganjil’


Contoh lainnya
input variabel (bil), misalnya 6. Kemudian (ket) diberi nilai ‘ganjil’. Kemudian karena kondisi (bil mod 2 = 0) bernilai benar, maka (ket)  berubah menjadi bernilai ‘genap’, sehingga ketika perintah write(ket), output yang muncul adalah ‘genap’. Untuk jelasnya perhatikan tabel penyimpanan data berikut.

Perintah

bil

ket

Output

read (bil)

6

 

 

ketß’ganjil’

 

‘ganjil’

 

if bil mod 2 = 0 then

            ketß‘genap’

 

 
'genap'

 

write (bil)

 

 

‘genap’


2.      Buatlah algoritma menentukan gaji total pegawai. Diketahui pegawai dengan masa kerja lebih dari 3 tahun mendapat tunjangan sebesar 20% gaji pokok sedang yang kurang dari itu mendapat tunjangan 10%.
Input program adalah masa kerja dan gaji pokok.

 

algoritma gaji_pegawai 

deklarasi

    tjg, mk, gapok, gatot : real

deskripsi

    read (mk, gapok)

    if mk>3 then

          tjg ß 0.2*gapok

         else

          tjg ß 0.1*gapok

     gatot ß gapok+tjg

       write(‘Gaji total ’,gatot)

 Penjelasan

 Mula-mula dimasukkan data (mk) dan (gapok). Misalnya, masing-masing diberi nilai 2 dan 1000. Karena (mk>3) bernilai salah, maka perintah yang dikerjakan adalah (tjgß0.1*gapok). Kemudian gapok dan tjg dijumlahkan yang hasilnya disimpan sebagai gatot. Dengan demikian output yang keluar adalah 1100.

Perhatikan tabel penyimpanan data berikut


Perintah

mk

gapok

tjg

gatot

Output

read (mk, gapok)

2

1000

 

 

 

if mk>3 then

            tjg ß 0.2*gapok

  else

            tjg ß 0.1*gapok

endif

 

 

100

 

 

gatot ß gapok+tjg

2

1000

100

1100

 

write(gatot)

 

 

 

 

1100

 

Keluaran algoritma : 1100

  Flowchart Algoritma gaji_pegawai


5.      Percabangan Tersarang ( If di dalam If )

 Percabangan tersarang adalah percabangan di dalam percabangan. Banyak sekali bentuknya, namun salah satu contohnya adalah sebagai berikut.

If  <kondisi1> then

     if <kondisi2> then

          Pernyataan1

         else

          Pernyataan2

  else

     If <kondisi3>

          Pernyataan3

    else

          Pernyataan4

Misalnya, buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan kelipatan 2 saja, atau kelipatan 5 saja, atau kelipatan 2 dan 5, atau bukan kelipatan 2 dan 5.
Misalkan Bilangan Integer sebarang yang menjadi  input algoritmanya.




                                                                                            Algoritma Kelipatan2Keliptan5

 Deklarasi

     Bil : integer

     Ket  : string

Deskripsi

     read (bil)

     if bil mod 2 = 0 then

if bil mod 5 = 0 then

                Ket ß ‘ Kelipatan 2 dan Kelipatan 5’

    else

                Ket ß ‘ Kelipatan 2 tapi Bukan Kelipatan 5’

    else       

          if bil mod 5 = 0 then

Ket ß ‘Bukan Kelipatan 2 tapi Kelipatan 5’

    else

          Ket ß ‘Bukan Kelipatan 2 atau 5’)

     Write(Ket) 

6.      Menggunakan Operator Boolean

Kita dapat menyederhanakan persoalan percabangan dengan menggunanakan operator boolean (and, or, not, dan xor) untuk ekspresi boolean yang lebih dari satu. Misalnya, sebuah univeritas memberlakukan yudisium cumlaude untuk mahasiswa yang lulus dengan IPK lebih besar sama dengan 3.5 dan masa kuliah tidak lebih dari 4 tahun. Bagaimana algoritma penentuan yudisiumnya? (Input : IPK dan masa kuliah)

 Algoritma yudisium1

 Deklarasi

     IPK, MK   : real

     Ket      : string

 Deskripsi

     Read (IPK,MK)

     If (IPK>=3.5) and (MK<=4) then

        Ket ß ‘cum laude’

  else

   Ket ß ‘tidak cumlaude’

write (Ket)



Penjelasan



Mula mula IPK dan MK, misalnya, kita beri nilai 3.6 dan 4. Karena kondisi (IPK>=3.5) and (MK<=4) bernilai benar maka perintah berikutnya adalah Ket ß ‘cum laude’. Sehingga ketika perintah Write (Ket) menghasilkan output ‘cum laude’. Cobalah menganalisa soal ini dengan memberikan input yang lain.

Penggunaan operator logika sangat membantu untuk menyederhanakan algoritma. Jika tidak menggunakan operator logika maka algoritmanya dapat ditulis sebagai berikut.


                                                                                                                                                                                                                                                                                                                                                                                                                                            

Algoritma yudisium2

Deklarasi

     IPK, MK   : real

     Ket      : string

 Deskripsi

     read (IPK,MK)

     if IPK>=3.5 then

          if MK<=4 then

              Ket ß ‘cum laude’

              else

               Ket ß ‘tidak cumlaude’

    else

          Ket ß ‘Tidak cumlaude’

     write (Ket)

Di sini terlihat algoritmanya menjadi sedikit ruwet. Kerumitan bertambah karena kita harus membuat percabangan dalam percabangan (percabangan tersarang). Selain itu penulisan Ket =  ’Tidak cumlaude’ harus ditulis dua kali agar tujuan algoritma dapat dicapai. Dengan demikian penggunaan operator logika dalam hal ini jelas menyederhanakan algoritma di atas.

 

7.      Percabangan Tiga Kondisi Atau Lebih

 Percabangan dengan tiga kondisi atau lebih adalah bentuk pengembangan dari dua bentuk percabangan, secara umum ekspresi percabangannya dapat kita tuliskan sebagai berikut.

            If <kondisi1> then

           Pernyataan1

    else if <kondisi2> then

           Pernyataan2

           ...

    else if <kondisi(n-1)> then

Pernyataan(n)

    else

           Pernyataan(n)

 

Mula-mula <kondisi1> dicek nilai kebenarannya. Jika benar, maka dikerjakan pernyataan1. Jika salah, maka dicek nilai kebenaran <kondisi2>. Jika <kondisi2> benar, maka dikerjakan pernyataan2. Jika tidak algoritma akan mengecek ke kondisi berikutnya dengan cara yang sama dengan yang sebelumnya. Terakhir, jika semua kondisi bernilai salah, maka pernyataan yang dikerjakan adalah Pernyataan(n+1). Bentuk flowchartnya dapat dilihat di bawah ini.


                     Pada algoritma di atas proses kondisi 1 akan dikerjakan jika <kondisi1> bernilai benar, jika tidak pemeriksan dilanjutkan ke <kondisi2>. Jika <kondisi2> bernilai benar maka pernyataan2 dikerjakan. Jika tidak, pemeriksaan dilanjutkan pada kondisi-kondisi berikutnya. Pemeriksaan ini terus terhadap semua kondisi yang ada. Jika tidak ada kondisi yang benar maka pernyataan yang dikerjakan adalah pernyataan(n+1).


 Contoh soal

 Sebuah toko buku memberikan diskon pembelian buku dengan jumlah tertentu. Pembeli yang membeli 100 atau lebih mendapat diskon 40%, sedangkan pembelian sebanyak 50 hingga 99 diberi diskon 25%. Buat algoritma menghitung total transaksi dengan input harga satuan buku dan jumlah pembelian.

 

Algoritma pembelian

 Deklarasi

     Hrg,Disk,Ttr : real

     Jum : integer

 Deskripsi

     Read(hrg,jum)

     if jum >= 100 then

          Diskß0.4

         else if jum>=50 then

          Diskß0.25

         else

          Diskß0

     Ttrßhrg*(1-disk)

     Write(Ttr)

 

Latihan : Buatlah tabel penyimpanan data kemudian tentukan keluaran algoritma jika diberi input tertentu.

 

8.      Soal

 

Tuliskan algoritma penyelesaian dari soal-soal berikut

 

  1. Seseorang dinyatakan lulus dalam kuliah Algoritma jika nilai akhirnya lebih besar atau sama dengan 60. Buat algoritma menentukan kelulusan seseorang dalam kuliah algoritma. Input : nilai akhir. Output : keterangan.

 

  1. Sama dengan no 1, tetapi nilai akhirnya diperoleh dari nilai UTS (30%), UAS (40%) dan Tugas (30%). Input : nilai UTS, UAS dan Tugas. Output : nilai akhir dan keterangan.

 

  1. Buatlah algoritma untuk menentukan apakah suatu tahun merupakan tahun kabisat atau bukan. Input : tahun. Output : keterangan (‘kabisat ‘ atau ‘bukan kabisat’)

 

  1. Buatlah algoritma menentukan bilangan terbesar dari tiga buah bilangan. Input : tiga bilangan (A, B dan C). Ouput : bilangan terbesar dari ketiga input tersebut.

 

  1. Indeks nilai kuliah algoritma ditentukan oleh nilai akhir :

 

NA>=75          : A

60<=NA<75   : B

45<=NA<60   : C

30<=NA<45   : D

NA<30            : E

           

Nilai akhir diperoleh dari rumus : NA = 0.2*TU+0.3*UTS+0.5*UAS

Buat algoritma menentukan indeks nilai algoritma. Input : TU (tugas), UTS, UAS. Output : indeks.         

 

  1. Toko A mempunyai kebijakan dalam penjualan buku tulis. Jika pelanggan membeli lebih dari 100 eksemplar mendapat diskon 20%, sedangkan yang membeli antara 20 hingga 100 mendapat dikon 10%. Lainnya tidak mendapat diskon. Input : harga satuan buku, jumlah buku yang dibeli. Output : total harga

 

  1. Buat algoritma untuk menentukan apakah seseorang boleh ikut pemilu. Syarat ikut pemilu adalah telah menikah atau sudah berusia 17 tahun atau lebih. Input : usia dan status. Output : keterangan (‘ikut pemilu’ atau ‘tidak ikut pemilu’.)

 

  1. Buat algoritma menentukan apakah suatu akar suatu persamaan kuadrat bersifat real atau imaginer. Input : komponen persamaan kuadrat a, b, c. Output : keterangan (‘real’ atau ‘imaginer’).

 

  1. Buat algoritma menentukan akar-akar real suatu persamaan kuadrat yang akarnya bersifat real. Jika akarnya bersifat imaginer tampilkan pesan ‘akar imaginer’. Input : komponen a, b, c dari persamaan kuadrat yang dimaksud. Output : akar-akar persamaan kuadrat tersebut.

 

  1. Buatlah algoritma untuk menentukan apakah tiga buah titik dapat membentuk segitiga sama sisi, atau sama kaki, atau bukan keduanya. Input : koordinat dari ketiga titik yang dimaksud. Output : keterangan (‘segitiga sama sisi’, segitiga sama kaki’, ‘segitiga biasa’).

 

  1. Sebuah penyewaan kendaraan memberlakukan tarif sebagai berikut. Lama penyewaan minimal untuk dua jam dengan tarif 1000. Untuk jam berikutnya sampai dengan 12 jam tarif perjamnya adalah 400. Sedangkan untuk jam berikutnya sampai dengan 24 jam maka tarif perjamnya menjadi 300. Buatlah algoritma yang menentukan berapa yang harus dibayar konsumen untuk lama peminjaman tertentu. Input : lama peminjaman. Output : total pembayaran.