Anda di halaman 1dari 35

Logika & Pemrograman TI – STMIK WD – © 2010

Pengenalan Komputer
Proses transformasi data berbantukan komputer

Tabel Diagram Transformasi Data

Bahasa / Language
Adalah suatu sistem untuk berkomunikasi. Bahasa tertulis menggunakan simbol (yaitu huruf)
untuk membentuk kata. Dalam ilmu komputer,bahasa manusia disebut bahasa alamiah (natural
languages), dimana komputer tidak bisa memahaminya, sehingga diperlukan suatu bahasa komputer.

Bahasa pemrograman (programming language)


Komputer mengerjakan transformasi data berdasarkan kumpulan perintah - program - yang
telah dibuat oleh pemrogram. Kumpulan perintah ini harus dimengerti oleh komputer,
berstruktur tertentu (syntax) dan bermakna. Bahasa pemrograman merupakan notasi untuk memberikan
secara tepat program komputer. Berbeda dengan bahasa alamiah, mis. Bahasa Indonesia, Inggris dsb. yang
merupakan bahasa alamiah(natural language), sintaks dan semantik bahasa pemrograman (komputer)
ditentukan secara kaku, sehingga bahasa pemrograman juga disebut sebagai bahasa formal (formal
language).
Jadi, dalam bahasa pemrograman yang digunakan sebagai alat komunikasi untuk memberikan
perintah kepada komputer tidak berlaku kebebasan berekspresi seperti laiknya dalam bahasa alamiah.
Pemrograman dalam pengertian luas meliputi seluruh kegiatan yang tercakup dalam pembuatan
program, termasuk analisis kebutuhan (requirement's analysis) dan keseluruhan tahapan dalam
perencanaan (planning) , perancangan (design) dan pewujudannya (implementation).
Dalam pengertian yang lebih sempit, pemrograman merupakan pengkodean (coding atau
program writing = penulisan program) dan pengujiannya (testing) berdasarkan rancangan tertentu.
Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan program-program terapan
komersial yang membedakan antara system analyst yang bertanggung jawab dalam menganalisa
kebutuhan, perencanaan dan perancangan program dengan pemrogram (programmer) yang bertugas
membuat kode program dan menguji kebenaran program.

Bahasa Pemrograman

Compiler dan Intepreter


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

Tahapan Kompilasi:

Hal : 1
Logika & Pemrograman TI – STMIK WD – © 2010

1. Pertama 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.
Compiler memerlukan waktu untuk membuat suatu program yang dapat dieksekusi oleh komputer. Tetapi,
program yang diproduksi oleh Compiler bisa berjalan lebih cepat dibandingkan dengan yang diproduksi
oleh Interpreter, dan bersifat independen.

Interpreter
berbeda dengan compiler, Interpreter menganalisis dan mengeksekusi setiap baris dari program tanpa
melihat program secara keseluruhan. Keuntungan dari Interpreter adalah dalam eksekusi yang bisa
dilakukan dengan segera. Tanpa melalui tahap kompilasi, untuk alasan ini interpreter digunakan pada
saat pembuatan program berskala besar.

Tipe Pemrograman
1. Pemrograman terstruktur
Pemrograman terstruktur adalah cara pemrosesan data yang terstuktur. Terstruktur dalam: analisa,
cara dan penulisan program.
Prinsip pemrograman terstruktur:
a. Gunakan rancangan pendekatan dari atas ke bawah (top down design),
b. Bagi program ke dalam modul-modul logika yang sejenis,
c. Gunakan sub-program untuk proses-proses sejenis yang sering digunakan,
d. Gunakan pengkodean terstruktur: IF ... THEN, DO ... WHILE dan lain-lainnya,
e. Hindarkan penggunaan perintah GO TO bila tidak diperlukan,
f. Gunakan nama-nama bermakna (mnemonic names), dan
g. Buat dokumentasi yang akurat dan berarti.
Dalam perencanaan dan perancangan dari atas ke bawah, kategori dan penyelesaian masalah dimulai
dari bagian yang utama kemudian dibagi menjadi bagian yang lebih kecil. Rancangan cara ini
memudahkan penulisan, pengujian, koreksi dan dokumentasi program.
Tahapan rancangan atas ke bawah dalam pemrograman:
1. Tentukan keluaran (output) yang diminta, masukan (input) yang diperlukan danprosesproses
utama yang diperlukan untuk transformasi data.
2. Membagi proses utama ke dalam modul-modul fungsional.
3. Buat algoritma msing-masing modul, dari modul utama ke sub-sub modul.
Setiap modul dalam proses rancangan atas ke bawah biasanya dibatasi dalam isi maupun batasan-
batasan berikut:
Setiap modul hanya mempunyai satu masukan dan keluaran
Setiap modul hanya mewakili satu fungsi program.
Rancangan (design) terstruktur:
1. Membagi program menjadi sub-program
2. Menekankan fungsionalitas.
3. Cocok untuk sistem yang banyak mempunyai fungsi independen. Gaya penulisan program

Hal : 2
Logika & Pemrograman TI – STMIK WD – © 2010

terstruktur:Menggunakan indentasi sehingga jelas struktur dan kontrol program.Memudahkan


pembacaan, pemahaman, penelusuran kesalahan dan pembuatan koreksi.

2. Bahasa pemrograman prosedural – terstruktur


Bahasa pemrograman prosedural adalah bahasa pemrograman yang mendukung pembuatan program
sebagai kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan dipanggil dari
manapun dalam program dan dapat menggunakan parameter yang berbedabeda untuk setiap
pemanggilan. Prosedur adalah bagian dari program untuk melakukan operasi-operasi yang sudah
ditentukan dengan menggunakan parameter tertentu. Bahasa pemrograman terstruktur adalah
pemrograman yang mendukung abstraksi data, pengkodean terstruktur dan kontrol program
terstruktur. Kontrol program terstruktur:
1. Runtun - urut (sequence)
2. Selection (Pilihan)
3. Pengulangan (iteration / looping)

1. Batasan Masalah Merencanakan sistim dan spesifikasi program: Siapa yang akan menggunakan
program dan untuk apa? dengan cara:
 Menentukan tujuan dan hasil yang akan dicapai
 Menentukan hal-hal yang diperlukan oleh sistim
 Pengumpulan data.
2. Pengembangan Model Pembuatan model dari sistim yang akan kita bangun, model adalah suatu
gambaran sederhana dari sistim yang kita buat. Dengan pembuatan model akan terlihat dengan jelas
hubungan antara objek-objek dalam sistim yang akan kita bangun. Untuk penyelesaian
aritmatik, biasanya model dibuat dalam bentuk rumus matematik. Contoh: untuk
membuat program luas_lingkaran kita membuat model matematis c = a x b
3. Rancangan algoritma Pembuatan urutan instruksi yang akan ditulis pada program ( dijelaskan lebih
lanjut)
4. Pemrograman Implementasi algoritma ke dalam program (algoritma sendiri dalam komputer adalah
merupakan program).
5. Uji dan Validasi Pengujian terhadap program : seperti kesalahan penulisan (syntax error) , kesalahan
saat eksekusi (runtime error) kesalahan logika program (program berjalan tapi menghasilkan output
yang salah- fatal error).
6. Dokumentasi Pembuatan catatan pada program terutama pada modul-modul yang rumit. Contoh:
Sistim Pengembangan Software Life Cycle

Hal : 3
Logika & Pemrograman TI – STMIK WD – © 2010

Gambar 5. Sistem Pengembangan Software Life Cycle

ALGORITMA

Logika
Logika secara umum dapat diartikan sebagai sesuatu yang dapat /tidak dapat diterima oleh akal
sehat. Sehingga logika merupakan suatu pernyataan singkat yang menunjukkan reaksi akal terhadap
sesuatu yang dilihat/ dirasa/ difikirkan.

Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi,
ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction)
sekitar tahun 825 M.
Perencanaan dan perancangan program komputer juga disebut pembuatan algoritma. Secara
umum, algoritma: "kumpulan urutan perintah yang menentukan operasi-operasi tertentu yang
diperlukan untuk menyelesaikan suatu masalah ataupun mengerjakansuatu tugas".
Bila data yang digunakan benar, maka algoritma akan selalu berhenti dengan memberikan hasil yang
benar pula. Pembuatan algoritma harus selalu dikaitkan dengan:
a. Kebenaran algoritma, yakni bila program selesai maka hasilnya juga benar
b. Kompleksitas - lama dan jumlah - waktu proses dan penggunaan memory.

Maka Algoritma dapat disimpulkan sebagai :


 Urutan langkah-langkah untuk memecahkan masalah
 Urutan logis pengambilan putusan untuk memcahkan masalah
urutan langkah logis, berarti algoritma harus mengikuti suatu urutan tertentu, tidak boleh
melompat-lompat.
 Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Alur pikiran yang artinya algoritma seseorang dapat berbeda dari algoritma orang lain.
tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah
pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik maka proses
pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.

Algoritma - dan tentu program yang baik, bercirikan:


a. Tepat sasaran: memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan
b. Flexible dan portable: - Flexible untuk dikembangkan lebih lanjut - Portable untuk digunakan pada
berbagai sistem dan mesin
c. Bersih dari kesalahan sistem ataupun lojik

Hal : 4
Logika & Pemrograman TI – STMIK WD – © 2010

d. Murah:
 Efisien dalam penggunaan piranti memori dan penyimpanan lainnya.
 Cepat waktu pelaksanaannya.
e. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan pengembangan.
f. Algoritma merupakan pemberian (description) pelaksanaan suatu proses.Sebuah proses dikerjakan
oleh pemroses mengikuti algoritma yang sudah dibuat. Algoritma merupakan urutan langkah
instruksi yang logis. Setiap langkah instruksi mengerjakan suatu tindakan aksi.

Bila suatu aksi dilaksanakan, maka operasi atau sejumlah operasi yang bersesuaian dengan aksi itu
dikerjakan oleh pemroses.

Contoh Algoritma :
Contoh 1 :
Algoritma untuk membuka pintu yang terkunci :
Langkah 0 : Buka gagang pintu
Langkah 1 : Apakah pintu terbuka ?
Langkah 2 : Jika pintu terbuka, tarik pintu dan keluar. Selesai.
Langkah 3 : Jika tidak, putar kunci pintu dan kembali ke langkah 0.

Contoh 2 :
Anda mempunyai 2 gelas yang masing-masing gelas berisi susu dan gelas satunya lagi berisi kopi. Anda
bermaksud untuk menukar 2 gelas tersebut sehingga gelas yang sebelumnya berisi susu akan diisi
dengan kopi dan gelas yang diisi kopi akan diisi dengan susu. Nah, bagaimanakah langkah-langkah yang
dapat diambil sehingga tujuan anda tercapai?
Untuk hal tersebut, anda membutuhkan wadah tambahan yang dipakai sebagai tempat sementara
untuk menampung isi dari susu atau kopi.

Langkah-langkahnya sebagai berikut :


Langkah 0 : Tuangkan gelas berisi susu [A] ke dalam gelas baru [C].
Langkah 1 : Tuangkan gelas berisi kopi [B] ke dalam gelas [A]
Langkah 2 : Tuangkan gelas baru [C] ke dalam gelas [A]. Selesai

Contoh 3 :
Anda mempunyai 2 ember dengan kapasitas masing-masing 3 liter dan 2 liter. Anda ingin mengisikan
kedua ember tersebut masing-masing 2 liter air. Bagaimanakah caranya???
Langkah 0 : Tuangkan hingga penuh Ember 3 liter.
Langkah 1 : Tuangkan air dari ember 3 liter ke ember 2 liter.
Langkah 2 : Kosongkan ember 2 liter.
Langkah 3 : Tuangkan sisa ember 3 liter ke 2 liter
Langkah 4 : Isi penuh ember 3 liter.
Langkah 5 : Tuangkan hingga penuh air dari ember 3 liter ke 2 liter.

Penulisan Algoritma dapat dilakukan dengan beberapa cara berikut ini :


1. Menggunakan bahasa natural (Bahasa manusia: Indonesia, Inggris)
Kelemahannya masih sering membingungkan (ambigu) / sulit dipahami.
2. Menggunakan Flowchart
Baik karena alur algoritma dapat dilihat secara visual, tetapi repot pembuatannya jika algoritma
kompleks.
3. Menggunakan Pseudocode
Sudah dekat dengan bahasa pemrograman, tetapi sulit dimengerti oleh orang yang belum tahu
pemrograman.

Hal : 5
Logika & Pemrograman TI – STMIK WD – © 2010

Aspek Penting Algoritma :


1. Finite  algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas
2. Definite  setiap langkah didefinisikan secara tepat, tidak boleh membingungkan (ambigu)
3. Input  sebuah algoritma memiliki nol/lebh input sebelum dijalankan
4. Output  algoritma memiliki satu/lebih output, yanng biasanya bergantung kepada input
5. Effective  setiap algoritma diharapkan memiliki sifat efektif. (setiap langkah harus sederhana
dan sehingga dapat dikerjakan dalam waktu yang masuk akal)

Flowchart
Flowchart adalah bentuk gambar/diagram yang mempunyai aliran satu atau dua arah secara sekuensial
Flowchart digunakan untuk mendeskripsikan langkah-langkah algoritma ke dalam bentuk gambar.
Berikut ini adalah beberapa simbol yang digunakan untuk membuat flowchart.
Kegunaan:
 Untuk mendesain program
 Untuk merepresentasikan program

Simbol-simbol dalam flowchart :

Hal : 6
Logika & Pemrograman TI – STMIK WD – © 2010

Tipe Data
Tipe data menentukan nilai yang dapat disimpan pada variabel. Variabel adalah identifier yang
digunakan untuk menyimpan suatu nilai.
1. Bilangan Bulat
Nama tipe : bulat
Ranah nilai : 1, 10, 100, 5000, 3000000,-5
Cth : A = 5
2. Bilangan pecahan
Nama tipe : pecahan /real
Ranah nilai : 0.50, 1.00, -3.140
Cth : Pi = 3.14
3. Boolean
Nama tipe : boolean
Ranah nilai : true dan false
Cth : Kerja = true
4. Karakter
Nama tipe : karakter
Ranah Nilai : ‘a’, ‘b’, ‘*’, ‘9’, ‘z’
Cth : grade = ‘A’
5. String
Nama tipe : string
Ranah nilai : ‘Senin’, ‘Budi’, ‘Ganjil’
Cth : Nama = ‘Budi’
6. Array
Nama tipe : array
Ranah nilai : semua ranah nilai
Cth : nilai[1] = 70, nama[5] = ‘Andi’, hasil[1]=true

Operator
Ada tujuh macam operator yang terdapat pada pemrograman secara umum yaitu :
1. Operator pemberian nilai
2. Operator aritmatika
3. Operator pemanipulasi bit
4. Operator boolean
5. Operator pembanding
6. Operator himpunan
7. Operator string

Operator pemberian nilai


Operator yang digunakan untuk pemberian nilai pada bahasa pemrograman adalah menggunakan =.
Contoh :

Hal : 7
Logika & Pemrograman TI – STMIK WD – © 2010

A := 12; Pada algoritma ditulis A  12


Operator aritmatika
Operator yang dapat digunakan untuk operasi matematika adalah sebagai berikut :
Operator Operasi Operan Hasil
+ Penambahan Bulat atau pecahan Bulat atau pecahan
- Pengurangan Bulat atau pecahan Bulat atau pecahan
* Perkalian Bulat atau pecahan Bulat atau pecahan
/ Pembagian bilangan real Bulat atau pecahan pecahan
Div Pembagian bilangan bulat Bulat Bulat
Modulus (Sisa hasil
Mod Bulat Bulat
pembagian)

Operasi matematika akan menghasilkan nilai integer jika seluruh operand pada operasi tersebut
bertipe integer. Jika salah satu operand bertipe real maka hasil operasi tersebut akan bertipe real,
sebagai contoh :
3857 + 68348 * 38 div 56834, akan menghasilkan bilangan dengan tipe real, sedangkan bila operasinya
sebagai berikut :
38573 div 34739 mod 372 + 35730 - 38834 + 1.1, maka akan menghasilkan bilangan real.

Setiap variabel harus diberi nilai yang sesuai dengan tipe variabelnya. Misalnya Anda tidak dapat
memberi nilai integer terhadap sebuah variabel yang bertipe real, akan tetapi untuk beberapa kasus
tipe data, pemberian nilai yang berbeda tipe dengan deklarasi tipe datanya dapat dilakukan. Sebagai
contoh sebuah nilai dengan tipe data yang berbeda namun memiliki kisaran nilai yang lebih kecil dari
kisaran tipe data variabelnya dapat dilakukan. Biasanya hal ini sering dilakukan pada saat memberikan
nilai integer ke sebuah variabel bertipe real.

Tingkatan Operator
Operators Level Category
@ not 1 Unary
/ div mod and shl shr 2 Multiplying
+ - or xor 3 Adding
= <> < > <= >= in 4 Relational

Operator Pemanipulasi Bit


Operasi ini berhubungan dengan pemanipulasian bit pada operan. Operasi ini hanya dapat dikenakan
pada operand berbilangan bulat.
Operator yang digunakan adalah not, and, or, xor, shl, shr

Operator Boolean
Operator ini hanya dikenakan pada operand yang bernilai boolean. Ada 4 macam operator yaitu and,
or, not dan xor.
Not adalah unary operator, hanya dapat digunakan terhadap sebuah nilai.
not true = false
not false = true
And akan bernilai benar jika kedua pernyataan bernilai benar, selainnya salah :
TRUE and FALSE = FALSE TRUE and TRUE = TRUE
OR akan bernilai benar jika salah satu atau kedua pernyataan bernilai benar. Pernyataan dibawah ini
akan bernilai benar
TRUE or TRUE
TRUE or FALSE
FALSE or TRUE

Hal : 8
Logika & Pemrograman TI – STMIK WD – © 2010

XOR akan bernilai benar jika salah satu pernyataan benar. Perhatikan pernyataan dibawah ini :
TRUE or TRUE = FALSE
TRUE or FALSE = TRUE
FALSE or TRUE = TRUE
FALSE or FALSE = FALSE

Dua ekspresi boolean dapat digabungkan dengan menggunakan tanda kurung. Hal ini perlu
diperhatikan karena operator boolean memiliki tingkatan prioritas yang berbeda.
Berikut contoh tersebut :
(3>5) or (650<1)

Tingkatan prioritas dari operator boolean adalah sebagai berikut :


 not
 /, div, mod, and
 +, -, or
 <, >, <=, >=, = ,<>

Dengan demikian jika terhadapat operasi seperti dibawah ini :


3 > 5 or 650 < 1

Maka akan dievaluasi sebagai :


3 > (5 or 650) < 1

operai tersebut akan menjadi salah, karena operator boolean hanya berlaku untuk nilai boolean, bukan
untuk integer.

Untuk operator boolean lainnya (AND, NOT, XOR) juga berlaku hal yang sama.

Operator Pembanding
Operator ini digunakan untuk membanding dua operand. Hasilnya adalah data bertipe boolean yang
menunjukkan hasil pembandingan bernilai benar atau salah.
< Kurang dari
> Lebih dari
= Sama dengan
<= Kurang dari sama dengan
>= Lebih dari sama dengan
<> Tidak sama dengan

Operator Himpunan
Operator himpunan terdiri dari (+) union, (-) selisih, (*) interseksi, (in) anggota dari.

Operator String
Operator yang digunakan untuk tipe data string adalah operator (+) penggabungan.

Latihan
Tuliskan pernyataan ini ke dalam bentuk yang benar.
1. A = 3X2 + BX – 32
x2  y2
2. d 
2x
3. E = mc2

Hal : 9
Logika & Pemrograman TI – STMIK WD – © 2010

4. s = vt + ½ at2
 b  b 2  4ac
5. x =
2a

Program Flow
Jenis Proses Algoritma :
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.

Aturan dalam pembuatan flowchart


Flowchart merupakan hasil analisa yang dibambarkan dalam bentuk bagan berurutan.
Setiap flowchart selalu terdiri dari tiga bagian utama, yaitu :
- Input (berupa bahan dasar)
- Proses (pengolahan bahan dasar)
- Output (hasil pengolahan)
Ketiga komponen ini dapat digambarkan sebagai berikut.

Input Proses Output

Pengolahan data dengan komputer dapat dirangkum dengan urutan :


START : Merupakan awal dari seluruh kegiatan dan juga merupakan tempat untuk
mempersiapkan peralatan yang diperlukan untuk kegiatan berikutnya.
READ : Merupakan perintah untuk membaca data dari suatu alat input.
PROCESS : Merupakan kegiatan pemecahan masalah sesuai dengan persoalan.
WRITE : Merupakan perintah untuk menampilkan hasil proses.
END : Mengakhiri kegiatan pengolahan.

START

READ

PROCESS

WRITE

END

Dari gambar flowchart di atas terlihat bahwa dalam suatu flowchart harus terdapat proses persiapan
dan proses akhir.
Beberapa anjuran yang perlu diketahui :
- Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga jalannya proses
menjadi singkat.
- Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas
- Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END.

Akumulator
Akumulator merupakan tempat manampung suatu nilai. Nilai yang masuk akan dijumlahkan
dengan nilai yang ada di dalamnya. Sehingga akumulator dapat dipakai untuk menentukan nilai total
dari penjumlahan suatu bilangan.

Hal : 10
Logika & Pemrograman TI – STMIK WD – © 2010

Dengan implementasi bentuk flowchart, akumulator digambarkan dengan menggunakan simbol proses
(persegi panjang). Misalnya, untuk menghitung nilai total seluruh gaji pegawai maka dapat
digambarkan sebagai berikut :

TotalGaji = TotalGaji + Gaji


Pada awalnya TotalGaji bernilai 0. Waktu proses di atas dilaksanakan, besarnya nilai Gaji ditambahkan
ke akumulator TotalGaji.

Sequence Process
Disebut juga proses berurutan, dimana instruksi dikerjakan dari awal sampai akhir secara berurutan.
Contoh :

Algoritma untuk menghitung luas persegi panjang : Input Panjang (P)


Langkah 0 [input] : Masukkan Panjang (P) Input Lebar (L)
Langkah 1 [input] : Masukkan Lebar (L) Luas  P x L
Print Luas
Langkah 2 [Hitung] : Luas  P x L Stop
Langkah 3 [Cetak] : Cetak Luas
Langkah 4 : Stop

Algoritma di atas jika digambarkan dengan flowchart adalah seperti berikut :

S ta r t

M asukkan P
dan L

Luas = P * L

C e ta k L u a s

S to p

Pencabangan
Pernyataan pencabangan memungkinkan suatu pernyataan dieksekusi hanya jika suatu kondisi
terpenuhi atau tidak terpenuhi.
Contoh :
Algoritma untuk mengubah nilai yang dimasukkan menjadi bernilai positif.
Langkah 0 [input] : masukkan bilangan (N)
Langkah 1 [cek] : jika N < 0 maka lakukan langkah 2, jika tidak lakukan langkah 3.
Langkah 2 [invers]: N  -N
Langkah 3 [cetak] : cetak N dan Stop.

Algoritma di atas, jika digambarkan dengan flowchart adalah seperti berikut :

Hal : 11
Logika & Pemrograman TI – STMIK WD – © 2010

Start

Masukkan X

T
X < 0

X = -X

Cetak Luas

Stop

Pengulangan
Pengulangan digunakan untuk menjalankan suatu atau beberapa pernyataan sebanyak berapa kali.
Pada notasi algoritma, kita gunakan kata untuk I  1, 50 lakukan ….
Contoh :
Algoritma untuk mencetak nama sebanyak 10 kali :
Langkah 0 [iterasi]: Untuk I  1, 10 lakukan L1 dan Stop
Langkah 1 [cetak] : Cetak nama.

Pengulangan bersarang (nested loop)


Yang dimaksud dengan pengulangan bersarang ialah adanya perulangan dalam perulangan. Artinya
ketika sebuah baris program dalam pernyataan perulangan, ternyata pada baris program yang
dieksekusi terdapat perulangan lagi.

Aturan Penulisan Teks Algoritma


Tidak ada notasi yang baku dalam penulisan teks algoritma. Algoritma bukanlah program
yang harus mengikuti aturan-aturan tertentu. Meski demikian, algoritma dituliskan mendekati gaya
bahasa pemrograman umumnya. Misal, tulis nilai X dan Y, dituliskan dalam algoritma sebagai write(X,Y).
Perhatikan dalam notasi write(X,Y) ini hanya memerintahkan penyajian nilai X ke piranti keluaran
(output). Dalam notasi itu juga tidak memasalahkan format ataupun bentuk-bentuk tampilan lainnya,
seperti dicetak dalam satu baris X dan Y, pemakaian pemisah antara X dan Y menggunakan koma atau
spasi. Hal-hal yang bersifat teknis ini baru dipikirkan waktu penulisan program. Algoritma adalah bebas
bahasa pemrograman.

Teks Algoritma
Mengikuti alur konsep pemrograman prosedural, suatu teks algoritma disusun dalam tiga bagian, yaitu:
a. Bagian kepala algoritma,
b. Bagian deklarasi, dan
c. Bagian deskripsi algoritma.

Setiap bagian disertai dengan penjelasan atau dokumentasi tentang maksud pembuatan teks. Bagian
penjelasan diawali dan diakhiri dengan simbol { dan }.
Algoritma NAMA_ALGORITMA { Penjelasan tentang algoritma yang menguraikan secara singkat hal-hal
yang dilakukan oleh algoritma }

Hal : 12
Logika & Pemrograman TI – STMIK WD – © 2010

DEKLARASI { Semua nama yang digunakan, meliputi nama-nama: tipe, konstanta, variabel. Juga nama
sub-program dinyatkan di sini }

DESKRIPSI { Semua langkah atau aksi algoritma dituliskan di sini } Contoh:


1. Kepala algoritma:
Algoritma Luas_Lingkaran { Menghitung luas lingkaran dengan ukuran jejari tertentu.
Algoritma menerima masukan jejari lingkaran, menghitung luasnya, dan menyajikan hasilnya ke
piranti keluaran }

Perhatian, dalam menulis nama-nama dalam algoritma harus mempunyai makna yang mencerminkan
proses, sifat atau identitas lainnya yang melekat dengan suatu proses, tipe, konstanta, variabel, sub-
program dan lain-lainnya. Nama-nama yang bermakna disebut mnemonic.

2. Deklarasi algoritma:
DEKLARASI { nama konstanta }
const PHI = 3.14; { Nilai phi = 22/7 }
{ nama peubah } var R : real; { input jejari lingkaran bilangan riil }
l_Lingkaran : real; { luas lingkaran bilangan riil }
{ nama sub program }
procedure TUKAR(input/output A: integer, input/output B: integer)
{ Mempertukarkan nilai A dan B.Parameter A dan B sudah terdefinisi nilainya.Setelah pertukaran, A
berisi nilai B dan B berisi nilai A }

3. Deskripsi algoritma: Bagian ini merupakan bagian inti algoritma yang berisikan uraian langkah-
langkah penyelesaian suatu masalah. Setiap langkah algoritma dibaca dari atas ke bawah.
Urutan penulisan menentukan urutan pelaksanaan perintah.
{ Baca data jejari lingkaran R.Jika R <= 0 tulis pesan data salah, selain itu hitung luas lingkaran.
Tampilkan luas lingkaran. }
baca(R);
jika R <= 0 then tulis("Data salah !")
selain itu l_Lingkaran = PHI x R x R;
tulis(l_Lingkaran);

Pseudocode adalah penulisan algoritma menggunakan gaya bahasa pemrograman pemrograman


tertentu. Contoh deskripsi algoritma di atas bila ditulis menggunakan salah satu bahasa
pemrograman (PASCAL) akan berbentuk:
BEGIN { mulai }
{ input }
read(R);
{ proses } jika R <= 0
then tulis("Data salah !")
selain itu l_Lingkaran = PHI x R x R; { output } tulis(l_Lingkaran);
END; { selesai }

Struktur Penulisan Teks Algoritma (Notasi Algoritmik)


Dalam penyusunan materi ini, paradigma yang digunakan adalah prosedural, maka bagian data
dan bagian instruksi tempatnya dipisahkan. Sehingga struktur algoritma menjadi :

Hal : 13
Logika & Pemrograman TI – STMIK WD – © 2010

Algoritma NAMA_ALGORITMA
{uraian singkat mengenai yang akan dilakukan algoritma ini}

DEKLARASI
{semua nama yang dipakai, meliputi nama tipe, nama tetapan,
nama peubah, nama prosedur, dan nama fungsi didefinisikan di
sini}

DESKRIPSI
{semua langkah / aksi algoritma dituliskan di sini}

Tipe
Yang dimaksud dengan tipe dalam algoritma adalah tipe data yang akan diolah atau dimanipulasi,
misalnya angka dan karakter. Sedangkan yang termasuk tipe dasar adalah bilangan logic, bilangan
bulat, bilangan riil, dan karakter.

Bilangan Logika
Bilangan logic hanya mengenal dua buah nilai yaitu benar (true) dan salah (false). Disebut sebagai
bilangan "benar" mengandung angka 1 dan "salah" mengandung angka 0. bentuk operasi untuk tipe
data ini adalah : not, and, or, dan xor. Nama untuk tipe adalah Boolean.

Bilangan Bulat
Bilangan bulat adalah bilangan yang tidak mengandung pecahan decimal. Nama untuk tipe ini
adalah integer.

Bilangan Real
Bilangan bulat adalah bilangan yang mengandung pecahan decimal. Nama untuk tipe riil adalah
real.

Karakter
Termasuk ke dalam golongan karakter adalah alphabet, tanda baca, angka, karakter khusus, dan
sebaginya. Nama untuk tipe ini adalah char.

Nama
Setiap obyek dalam algoritma harus diberi nama, dan setiap nama harus berbeda dengan nama
lainnya (unik). Obyek dalam algoritma dapat berupa :
1. Peubah (variable)
Adalah tempat menyimpan data/informasi di dalam memori yang isinya dapat diubah.
Contoh :
DEKLARASI
Nilai_Angka, Rata_rata : real
K : integer
R : char

Nilai_Angka, Rata_rata, K, R, adalah nama peubah (variable)


2. Tetapan (constanta)
Adalah tempat penyimpanan data di dalam memori yang isinya tetap selama pelaksanaan program
dan tidak dapat diubah. Contoh :
DEKLARASI
Const pi = 3.14
Const max = 250
Const min = 1

Pi, max, min adalah nama tetapan, nama tetapan yang sudah diisikan ke dalam nama tetapan tidak
dapat diubah di dalam algoritma.

Hal : 14
Logika & Pemrograman TI – STMIK WD – © 2010

3. Tipe bentukan
Nama dari tipe bentukan ditentukan oleh pemrogram.
DEKLARASI
Type koordinat : record
<
X : real ,
Y : real ,
>
Type tanggal : record
<
tg : integer ,
bl : integer ,
th : integer ,
>

Titik_A : Koordinat
Kelahiran : tanggal
h, m : integer

Koordinat dan tanggal adalah nama tipe, sedangkan titik_A adalah nama peubah (variable) yang
bertipe koordinat, kelahiran adalah variable yang bertipe tanggal.
Nama fungsi
Nama prosedur
Nilai
Nilai adalah besaran dari tipe data yang sudah dikenal. Nilai ditampung oleh peubah (variable),
nilai dapat bersumber dari hasil perhitungan, masukan dari pemakai, kiriman dari suatu fungsi, tetapan
(const). berikut ini adalah macam-macam cara suatu nilai dimanupulasi.

Pengisian nilai ke dalam nama peubah (variabel)


Pengisian nilai ini bertujuan untuk manipulasi / memproses nilai tersebut atas tujuan tertentu.
Pengisian nilai ke dalam variable dapat dilakukan dengan dua cara, yaitu :
1. Pengisian nilai secara langsung
2. Dibaca dari piranti masukan
1. Pengisian nilai secara langsung
Adalah memasukkan sebuah nilai ke dalam peubah (variable) langsung di dalam teks algoritma.
Simbol pengisian secara langsung adalah 
Notasi algoritmik untuk pengisian nilai secara langsung :

Variabel  tetapan {nilai tetapan diisikan ke dalam variable}


Variabel1  variable2 {nilai variable2 disalin ke dalam variable1}
Variabel  ekspresi {hasil perhitungan diisikan ke dalam variable {peubah}

Nilai yang dikandung penerima adalah nilai terakhir yang diterima.


h5 { 5 diisikan ke dalam h }
m  12 { 12 diisikan ke dalam m }
hh+m { hasil perhitungan h + m diisikan ke dalam h }

Mula-mula variable h diisi 5, dan variable m diisi 12, kemudian h dan m dijumlahkan dan hasilnya
diisikan ke dalam h. sehingga variable h tidak lagi bernilai 5 tetapi bernilai 17.

2. Dibaca dari piranti masukan


Nilai untuk variable (peubah) dapat diisi dari piranti masukan, misalnya papan kunci (keyboard).
Mengisi nilai dari piranti masukan dinamakan operasi pembacaan data. Dalam algoritma, instruksi
ini dinotasikan dengan read.
Notasi algoritmik untuk pembacaan nilai dari piranti masukan :

Hal : 15
Logika & Pemrograman TI – STMIK WD – © 2010

Read (nama1, nama2, …, namaN)

Dengan syarat nama1, nama2, …, namaN adalah nama peubah (variable) yang sudah didefinisikan
tipenya pada bagian DEKLARASI.

Nilai untuk Ekspresi (Operasi)


Ekspresi terdiri dari operand dan operator. Operand adalah nilai yang akan dioperasikan
(diproses), Operator adalah symbol yang mengoperasikan operand.
Operand dapat berupa variable (peubah), tetapan (const);
Operator dapat berupa tambah (+), kurang ( - ), kali ( * ), bagi ( / ), div, mod.
Tiga macam ekspresi, yaitu : ekspresi aritmatik, ekspresi relasional, ekspresi string.
1. Ekspresi aritmatik
Ekspresi aritmatik adalah ekspresi yang memiliki operand dan hasil operasinya berupa numeric.
Jika dibuat suatu DEKLARASI sebagai berikut :
DEKLARASI
p, q, r : integer
total : integer

Untuk deklarasi di atas, variable-variable tersebut dapat dioperasikan dengan operasi aritmatik.
Contoh :
p+r
dari ekspresi di atas, yang merupakan operand adalah p dan r, dan operatornya adalah "+". hasil
dari ekspresi tersebut akan bertipe integer.
Jika hasil dari operasi tersebut akan disimpan dalam sebuah variable (q), maka ekspresinya
menjadi :
qp+r
2. Ekspresi relasional
3. Ekspresi string
Menulis ke Piranti Keluaran
Nilai yang terdapat dalam peubah (variable) dapat kita tampilkan ke piranti keluaran, misalnya
layar peraga (monitor). Notasi algoritmik untuk tugas ini adalah write
write (' STMIK MDP ')
write (' jl. Rajawali 14 ')
write (nama, npm)
write (nilai1, nilai2, nilai3, rata_rata)

Tabel Notasi Algoritmik


Kelompok Algoritmik
Assignment 
Pembacaan read

Penulisan write

Boolean
Tipe Dasar

Integer

Hal : 16
Logika & Pemrograman TI – STMIK WD – © 2010

Real

Char

String

Record
<field1 : type,
field2 : type,

fieldN : type
>
Operator
a. Aritmatik +
-
*
/
div
mod
<
b. Perbandingan ≤
>

=

Not
c. Logika and
or
xor
Komentar { komentar }
const
Lain-lain type
true
false

Pemilihan (kondisi) dengan IF – THEN , IF – THEN – ELSE dan CASE

1.1 Pendahuluan
Sering kali dalam kehidupan sehari-hari kita berhadapan dengan beberapa pilihan, dimana setiap
pilihan pasti memiliki kriteria tertentu untuk dapat diambil. Setiap kondisi memiliki nilai Boolean,
sehingga jika nilai Boolean itu memenuhi algoritma, maka ekspresi untuk kondisi tersebut akan
dilaksanakan.
Sebagai contoh :
Jika ada satu kasus yang memiliki sebuah kondisi, dimana kasus ini
menyatakan apakah seseorang boleh masuk atau tidak ke dalam satu
ruangan. Kasus ini memiliki kondisi usia. Jika usia orang tersebut lebih besar
atau sama dengan 17 tahun maka orang tersebut boleh masuk ke ruangan
tersebut, jika tidak maka orang tersebut dilarang masuk.

Jika kasus tersebut dianalisa, saat usia orang tersebut diketahui, maka akan muncul nilai Boolean
pada kondisi. Jika usia orang tersebut 18 tahun, maka orang tersebut boleh masuk ruangan.

Hal : 17
Logika & Pemrograman TI – STMIK WD – © 2010

Kondisi " apakah usia lebih besar atau sama dengan 17 tahun ? ", maka kondisi bernilai true.

1.2 IF – THEN
Kondisi dengan satu keputusan
Struktur pemilihan dengan satu kondisi dapat kita gunakan IF-THEN.

Flowchart Algoritmik

if <kondisi> then
kondisi
aksi
benar

aksi endif

"Aksi" hanya akan dilaksanakan jika "<kondisi>" bernilai true


Jika kasus di atas kita tulis dalam bentuk algoritmik, maka akan tampak sebagai berikut :
Usia  18
if usia >= 17 then
write(‘silahkan masuk’)
endif
Usia = 18
Keterangan algoritmik :

Mula-mula variable (peubah) usia diberi harga


>= 17 18, kemudian algoritmik mengerjakan kondisi
benar untuk variable usia. Jika usia >= 17 maka aksi
Write “silahkan
akan dilaksanakan.
masuk” Kondisi 18 >= 17 bernilai true, dan kalimat
"silahkan masuk " ditampilkan.

Contoh :
Buatlah bagan alir dan algoritma untuk menentukan apakah suatu bilangan yang di input merupakan
bilangan positif.

Start

Read nilai

nilai > 0

Write “positif”

End

Hal : 18
Logika & Pemrograman TI – STMIK WD – © 2010

Algoritmik
Algoritma Contoh
{contoh algoritma menggunakan
peubah, masukan dan keluaran}
DEKLARASI
nilai : integer
DESKRIPSI
readln (nilai)
if nilai > 0 then
write (‘positif‘)
endif

1.3 IF – THEN … ELSE


Kondisi dengan dua keputusan
Struktur pemilihan dengan dua kondisi dapat kita gunakan IF-THEN-ELSE.

Flowchart Algoritmik

if <kondisi> then
kondisi aksi1
benar tidak else
Aksi1 Aksi2 aksi2
endif
"aksi1" hanya akan dilaksanakan jika "<kondisi>" bernilai true. Tetapi jika tidak maka “aksi2”
yang akan dilaksanakan. Jika kasus di atas kita tulis dalam bentuk algoritmik, maka akan tampak
sebagai berikut :

Usia  16
if usia >= 17 then
write (‘silahkan masuk’)
Usia = 16 else
write (‘dilarang masuk … !!’)
endif
T
usia >= 17

Y
write “silahkan Keterangan algoritmik :
masuk”
Mula-mula variable (peubah) usia diberi
harga 16, kemudian algoritmik
Write “dilarang mengerjakan kondisi untuk variable usia.
masuk” Jika usia >= 17 maka aksi1 akan
dilaksanakan. Tetapi jika tidak maka
aksi2 yang akan dilaksanakan.
Kondisi 16 >= 17 bernilai false, dan
kalimat “dilarang masuk … !! ”
ditampilkan.

Contoh kasus dua kondisi :

Hal : 19
Logika & Pemrograman TI – STMIK WD – © 2010

1. Buatlah bagan alir dan algoritma untuk menampilkan GENAP atau GANJIL dari sebuah
bilangan integer yang di input.
Algoritma Menentukan_Bilangan
{mencari apakah bilangan yang dimasukkan
Start genap atau ganjil, kemudian ditampilkan}

DEKLARASI
Read nilai nilai : integer
h : integer

DESKRIPSI :
read (nilai)
h = nilai MOD 2 h  nilai mod 2
if h = 0 then
write (‘GENAP’)
else
T write (‘GANJIL’)
h=0 endif

Write “GENAP” Write “GANJIL”


Program genap_ganjil;
Var
nilai : integer;
End h : integer;
begin
readln(nilai);
h := nilai MOD 2 ;
if (h = 0) then
write(‘GENAP’)
else
write(“GANJIL’);
end.

2. Buatlah bagan alir dan algoritma untuk menampilkan LEBIH DARI 10 atau KURANG DARI 10 dari
sebuah bilangan integer yang di input
Start

Read nilai

Y T
nilai > 10

Write Write
“LEBIH DARI 10” “KURANG DARI 10”

End

Hal : 20
Logika & Pemrograman TI – STMIK WD – © 2010

Algoritma sepuluh Program sepuluh;


{mencari apakah bilangan yang dimasukkan {mencari apakah bilangan yang
LEBIH DARI 10 atau KURANG DARI 10 , dimasukkan LEBIH DARI 10 atau
kemudian ditampilkan} KURANG DARI 10 , kemudian
ditampilkan}
DEKLARASI
nilai : integer Var
nilai : integer;
DESKRIPSI :
read (nilai) begin
if nilai > 10 then readln(nilai);
write (‘LEBIH DARI 10’) if (nilai > 10) then
else write(‘LEBIH DARI 10’)
write (‘KURANG DARI 10’) else
endif write(‘KURANG DARI 10’);
end.

1.4 Kondisi lebih dari satu


Struktur pemilihan dengan tiga kondisi atau lebih, tetap kita gunakan IF-THEN-ELSE.

Flowchart Algoritmik
if <kondisi1> then
aksi1
kondisi1
tidak
else
benar
Kondisi2 if <kondisi2> then
Aksi1
aksi2
tidak
benar

Aksi2
Kondisi3 else
tidak
benar if <kondisi3> then
Aksi3 Aksi4 aksi3
else
aksi4
endif
endif
endif

Contoh :
1. Buatlah bagan alir dan algoritma untuk menampilkan MEMUASKAN jika nilai yang di input adalah A,
BAIK jika nilai yang di input adalah B, CUKUP jika nilai yang di input adalah C, KURANG nilai yang di
input adalah D, GAGAL jika nilai yang di input adalah E.
Sta
rt

Read nilai

Y T
nilai = A

Write Y T
nilai = B
“MEMUASKAN”
Write Y T
nilai = C
“BAIK”
Write Y T
nilai = D
“CUKUP”
Write Y T
nilai = E
“KURANG”
Write Write
“GAGAL” “SALAH INPUT”

End

Hal : 21
Logika & Pemrograman TI – STMIK WD – © 2010

2. Buatlah bagan alir dan algoritma untuk menampilkan POSITIF GENAP / POSITIF GANJIL / NEGATIF
GENAP / NEGATIF GANJIL dari sebuah bilangan integer yang di input

Start

Read nilai

h = nilai MOD 2

T Y
nilai > 0

T h=0 Y T h=0 Y

Write Write Write Write


“NEGATIF GANJIL” “NEGATIF GENAP” “POSITIF GANJIL” “POSITIF GENAP”

End

Algoritma sepuluh Program sepuluh;


{menampilkan positif genap / positif {menampilkan positif genap / positif
ganjil / negatif genap / negatif ganjil / negatif genap / negatif ganjil
ganjil dari sebuah nilai integer yang dari sebuah nilai integer yang di input}
di input}
Var
DEKLARASI h, nilai : integer;
nilai : integer
h : integer begin
DESKRIPSI : readln(nilai);
read (nilai) h := nilai MOD 2;
h  nilai mod 2 if (nilai > 0) then
if nilai > 0 then if (h = 0) then
if h = 0 then write(‘POSITIF GENAP’)
write (‘POSITIF GENAP’) else
else write(‘POSITIF GANJIL’)
write (‘POSITIF GANJIL’) else
endif if (h = 0) then
else write(‘NEGATIF GENAP’)
if h = 0 then else
write (‘NEGATIF GENAP’) write(‘NEGATIF GANJIL’);
else end.
write (‘NEGATIF GANJIL’)
endif
endif

Pengulangan (loop)
Sesuai dengan judul, pengulangan (loop) adalah suatu pekerjaan yang dilakukan secara berulang-ulang
sampai kondisi tertentu. Dalam materi ini akan diberikan tiga macam pengulangan, yaitu :
1. FOR
2. WHILE – DO
3. REPEAT – UNTIL

Hal : 22
Logika & Pemrograman TI – STMIK WD – © 2010

3.1 FOR
Pengulangan dengan FOR digunakan jika sudah diketahui berapa kali sebuah statemen atau satu blok
statemen akan diulang. Struktur FOR ada dua macam, yaitu pengulangan hitung naik dan pengulangan
hitungan turun.

3.1.1 FOR Menaik


Pengulangan ini menggunakan sifat perhitungan dari kecil membesar (naik), dengan kata lain nilai awal
lebih kecil dari nilai akhir. Struktur pengulangan FOR Menaik adalah :

Contoh :
1. Buatlah bagan alir dan algoritma untuk menampilkan kata “Algoritmik” sebanyak lima kali.
Jawab :

 Buatlah bagan alir dan algoritma untuk menampilkan deret 4 ,5 ,6 ,7 , 8, dengan menggunakan
akumulator (konter).
Jawab :

Hal : 23
Logika & Pemrograman TI – STMIK WD – © 2010

 Buatlah bagan alir dan algoritma untuk menampilkan deret 4 ,5 ,6 ,7 , 8, dengan menggunakan
akumulator (konter). Jawab :

 Buatlah bagan alir dan algoritma untuk menampilkan kata “Algoritmik” sebanyak lima kali.
Jawab :

Buatlah bagan alir dan algoritma untuk menampilkan deret

Hal : 24
Logika & Pemrograman TI – STMIK WD – © 2010

1 , 5 , 2 , 4 , 3 , 3 , 4 , 2 , 5 , 1 dengan menggunakan akumulator (konter).


Jawab :
Telihat disini terdapat dua deret, yaitu 1,2,3,4,5 dan 5,4,3,2,1 sehingga kita butuh dua peubah (variabel)
akumulator.

WHILE
Pengulangan dengan WHILE berhubungan dengan nilai Boolean, yaitu pengulangan yang dilakukan
secara terus menerus selama kondisi logika memiliki nilai true. While – Do memiliki struktur sebagai
berikut :
Contoh :

Buatlah bagan alir untuk input bilangan integer secara terus menerus selama yang di input bukan 0.
Jawab :
Input secara terus menerus artinya input yang tidak akan berhenti selama suatu kondisi belum
terpenuhi.

Hal : 25
Logika & Pemrograman TI – STMIK WD – © 2010

Buatlah bagan alir untuk input password, tampil BENAR jika password benar, SALAH jika password
salah.
Jawab :
Password nya kita definisikan sendiri, misalnya AMPERA. Pilihan perulangan : selama password tidak
sama dengan AMPERA maka password akan terus diminta.

Latihan Soal :
1. Buatlah algoritma untuk mencetak deret berikut ini :
a. 1 5 9 13 .. N
b. 2 4 6 8 .. N
c. 1 3 5 7 .. N
2. Buatlah algoritma untuk menghitung dan mencetak deret berikut ini :
a. 2 + 4 + 6 + .. + N
b. 1 + 6 + 11 + .. + N
c. 4 + 7 - 10 + 13 + .. + N
d. -3 -8 +13 +18 - .. + N
e. 4 * 6 * 8 * .. * N
(Sebagai perbandingan gunakan struktur FOR, WHILE dan DO).

Hal : 26
Logika & Pemrograman TI – STMIK WD – © 2010

ARRAY
Array adalah suatu tipe data terstruktur yang terdapat dalam memory yang terdiri dari sejumlah
elemen yang mempunyai tipe data yang sama dan merupakan gabungan dari beberapa variabel sejenis
yang memiliki jumlah komponen yang jumlahnya tetap. Elemen-elemen dari array dapat berupa satu
dimensi, dua dimensi ataupun multi dimensi.

Mendefinisikan Larik
Ada dua hal yang harus diperhatikan dalam mendefinisikan sebuah larik, :
1. Menentukan jumlah elemen yang akan digunakan
2. Menentukan tipe dari elemen larik tersebut

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-elemen
tersebut berbeda.

17 21 33 1 48 0 2 16 72 9
Dimisalkan merupakan barisan array A(1) sampai dengan A(10).

Bentuk pendefinisian larik dalam DEKLARASI :


Peubah : array[jangkauan indeks] of tipe_data
Contoh :

Namun dalam bagan alir tidak demikian, yaitu langsung gunakan indek untuk perubah array.
Bentuk umum :
Type
Nama_Array : array[indexarrayawal..indexarrayakhir] of tipedata;
Contoh
Uses crt;
Type
Kalimat = Array[1..3] of string;
Var
I : byte;
Kal : Kalimat;
Begin
Clrscr;
For I:=1 to 3 do
Begin
Write(‘Masukkan kata ke :-‘,I,’:’);
Readln(Kal[I]);
End;
End.

Contoh 1 :
Buatlah flowchart untuk memasukkan 5 buah data integer yang tersimpan dalam array. Kemudian
tampilkan kembali data array tersebut !

Hal : 27
Logika & Pemrograman TI – STMIK WD – © 2010

Jika data yang diinputkan adalah : 5 9 8 3 7

Contoh 2
Buatlah flowchart untuk input 10 data bilangan integer yang tersimpan dalam variable array. Kemudian
tampilkan bilangan terbesar dari kumpulan bilangan tersebut !

Hal : 28
Logika & Pemrograman TI – STMIK WD – © 2010

Array Dua Dimensi


Array dua dimensi yang sering digambarkan dalam bentuk matriks adalah merupakan perluasan
dari sebuah array satu dimensi. Jika pada array satu dimensi terdiri dari sebuah baris dengan beberapa
kolom elemen maka pada array dua dimensi terdiri dari beberapa baris dan kolom elemen yang bertipe
data sama.

1 2 3 4 Bentuk umum :
1 10 2 5 15 Type
2 30 7 22 7 Nama_Array : array[indexarray1,indexarray2] of tipedata;
3 5 10 12 8 Contoh :
4 3 35 18 32 Type
Matriks = array[1..2,1..3] of byte;
Baris = 1..2;
Kolom = 1..3;
Ordo = array[Baris, Kolom] of byte;
Var
Matrix : Ordo;

Soal Latihan :
1. Buatlah algoritma untuk menentukan bilangan terbesar dan terkecil dari sekumpulan bilangan
bulat yang tersimpan dalam array. Tentukan pula selisih dari bilangan tersebut dan di posisi mana
bilangan terbesar dan terkecil tersebut terletak !
2. Buatlah algoritma untuk mencetak segitiga Pascal berikut ini :
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3. Buatlah algoritma untuk melakukan operasi penjumlahan dan pengurangan matriks !
4. Buatlah algoritma untuk melakukan operasi perkalian matriks !
5. Buatlah algoritma untuk melakukan operasi transpose matriks !

SORTING

Sortir adalah prosedur mengurutkan bilangan mulai dari nilai terendah sampai nilai terbesar
(ascending) atau sebaliknya (descending). Metode sorting sangat bervariasi. Salah satu metode sorting
adalah seperti berikut ini :
Data awal : 4 7 6 3 8 5
Mula-mula bandingkan bilangan pertama dengan bilangan kedua. Untuk “ascending” jika bilangan
pertama lebih besar dari bilangan kedua maka pertukarkan kedua bilangan tersebut. Selanjutnya

Hal : 29
Logika & Pemrograman TI – STMIK WD – © 2010

bandingkan bilangan pertam dengan bilangan ketiga, bilangan pertama dengan bilangan keempat,
bilangan pertama dengan bilangan terakhir. Kemudian bandingkan bilangan kedua dengan bilangan
ketiga, keempat , dan seterusnya. Proses selengkapnya diperlihatkan berikut ini :
4 7 6 3 8 5 Algoritma :
4 7 6 3 8 5 Langkah 1 : Untuk I = 1 sampai N-1 lakukan langkah 2
4 7 6 3 8 5 Langkah 2 : Untuk J = I + 1 sampai N lakukan langkah 3
3 7 6 4 8 5 Langkah 3 : Jika A(I) > A(J) maka pertukarkan A(I) dan A(J)
3 7 6 4 8 5
3 7 6 4 8 5
3 6 7 4 8 5
3 4 7 6 8 5
3 4 7 6 8 5
3 4 7 6 8 5
3 4 6 7 8 5
3 4 6 7 8 5
3 4 5 7 8 6
3 4 5 7 8 6
3 4 5 6 8 7
3 4 5 6 7 8

BUBBLE SORT
Data awal : 4 7 6 3 8 5
Proses sorting :

4 7 6 3 8 5 4 3 6 5 7 8
4 7 6 3 8 5 3 4 6 5 7 8
4 6 7 3 8 5 3 4 6 5 7 8
4 6 3 7 8 5 3 4 5 6 7 8
4 6 3 7 8 5 3 4 5 6 7 8
4 6 3 7 5 8 3 4 5 6 7 8
4 6 3 7 5 8 3 4 5 6 7 8
4 6 3 7 5 8 3 4 5 6 7 8
4 3 6 7 5 8 3 4 5 6 7 8
4 3 6 7 5 8 3 4 5 6 7 8
4 3 6 5 7 8 3 4 5 6 7 8
4 3 6 5 7 8 3 4 5 6 7 8

Algoritma :
Langkah 0 : Ind = 0
Langkah 1 : Untuk I = 1 sampai dengan N-1 lakukan langkah 2
Langkah 2 : Jika A(I) > A(I+1) maka pertukarkan A(I) dengan A(I+1) dan Ind = 1
Langkah 3 : Jika Ind = 1 maka kembali ke langkah 0, Jika tidak STOP.

STRAIGHT INSERTION SORT


Data awal : 4 7 6 3 8 5
Proses sortir :
4 7
4 6 7
3 4 6 7
3 4 6 7 8
3 4 5 6 7 8

Algoritma :

Hal : 30
Logika & Pemrograman TI – STMIK WD – © 2010

Langkah 0 : Untuk I = 2 sampai dengan N lakukan langkah 1,2,4 dan STOP.


Langkah 1 : K = A(I)
L=I–1
Langkah 2 : Selama K < A(L) dan L>=1 lakukan langkah 3
Langkah 3 : A(L+1) = A(L)
L = L -1
Langkah 4 : A(L+1) = K

PARALEL SORT
Data awal : 4 7 6 3 8 5
4 7 6 3 8 5 Time = 0
4 7 3 6 5 8 Time = 1
4 3 7 5 6 8 Time = 2
3 4 5 7 6 8 Time = 3
3 4 5 6 7 8 Time = 4
3 4 5 6 7 8 Time = 5
3 4 5 6 7 8

Algoritma :
Langkah 0 : Time = 0 dan M = 0
Langkah 1 : Jika Time genap maka bandingkan A(2I) dengan A(2I-1) secara serentak untuk I = 1
sampai dengan N/2

Jika tidak maka bandingkan A(2I) dengan A(2I+1) secara serentak untuk I = 1 sampai
dengan (N-1)/2

Jika elemen di depan lebih besar maka pertukarkan kedua elemen tersebut.
Langkah 2 : Jika pada langkah 1 terjadi pertukaran elemen maka M = 0
Jika tidak maka M = M + 1
Time = Time + 1
Langkah 3 : Jika M < 2 maka kembali ke langkah 1
Jika tidak STOP.

SELECTION SORT
Data awal : 4 7 6 3 8 5
 Cari bilangan terkecil di antara elemen pertama sampai dengan elemen terakhir. Pertukarkan
bilangan terkecil tersebut dengan elemen pertama.
Data menjadi : 3 7 6 4 8 5
 Cari bilangan terkecil di antara elemen kedua sampai dengan elemen terakhir. Pertukarkan
bilangan terkecil tersebut dengan elemen kedua.
Data menjadi : 3 4 6 7 8 5
Dengan cara yang sama data secara berturut – turut akan berubah sebagai berikut :
3 4 5 7 8 6
3 4 5 6 8 7
3 4 5 6 7 8

Algoritma :
Langkah 1 : Untuk I = 1 sampai dengan N-1 maka lakukan langkah 2 ,3
Langkah 2 : Min = A(I) dan K = I
Langkah 3 : Untuk J = I+1 sampai dengan N maka lakukan langkah 4
Langkah 4 : Jika Min > A(J) maka pertukarkan A(I) dengan A(K)

Hal : 31
Logika & Pemrograman TI – STMIK WD – © 2010

MERGING SORT
Merging Sort adalah sorting yang dilakukan pada dua buah deret bilangan atau data yang
masing-masing sudah dalam keadaan terurut.
Contoh :
Deret 1 : 2 4 7 8 10
Deret 2 : 1 3 5 9
Deret gabungan : 1 2 3 4 5 7 8 9 10

Algoritma :
Langkah 0 : I = 1; J = 1; K = 1
Langkah 1 : Selama I <= M dan J <= N lakukan langkah 2 dan 3
Langkah 2 : Jika A(I) < B(J) maka C(K) = A(I) dan I = I + 1
Jika tidak C(K) = B(J) dan J = J + 1
Langkah 3 : K = K + 1
Langkah 4 : Jika I > M maka lakukan langkah 5
Jika J > N maka lakukan langkah 7
Langkah 5 : Untuk L = J sampai dengan N maka lakukan langkah 6, dan STOP.
Langkah 6 : C(K) = B(L) dan K = K + 1
Langkah 7 : Untuk L = I sampai dengan M lakukan langkah 8 dan STOP
Langkah 8 : C(K) = A(L) dan K = K + 1

SEARCHING

Sequential Searching
Algoritma Sequential Searching :
Langkah 0 : Ak = N
Langkah 1 : Input K
Langkah 2 : Untuk I = 1 sampai dengan Ak lakukan langkah 3
Langkah 3 : Jika K = A(I) maka
Ada = True
Posisi = I
I = Ak
Langkah 4 : Jika Ada = true maka Cetak “Nilai K ditemukan di posisi”, Posisi
Jika tidak maka cetak Nilai K tidak ditemukan

Binary Searching
Algoritma Binary Searching
Langkah 0 : Awal =1 ; Akhir = N
Langkah 1 : Selama Awal <= Akhir lakukan langkah 2, 3, dan 4
Langkah 2 : Mid = (Awal + Akhir) / 2
Langkah 3 : Jika K = R(Mid) maka Cetak “Nilai K ditemukan” dan STOP
Langkah 4 : Jika K < R(Mid) maka Akhir = Mid – 1
Jika tidak Awal = Mid + 1
Langkah 5 : Cetak “Nilai K Tidak ditemukan”

Berikut ini deskripsi binary search dalam bentuk sample :


Data : 1 3 5 6 8 10 11 12 15 17
K = 16
Langkah 0 : Awal = 1; Akhir = 10
Langkah 1 : Mid = ( 1 + 10 ) / 2 = 5
Awal = 5 + 1 = 6; Akhir = 10
Langkah 2 : Mid = ( 6 + 10 ) / 2 = 8

Hal : 32
Logika & Pemrograman TI – STMIK WD – © 2010

Awal = 8 + 1 = 9; Akhir = 10
Langkah 3 : Mid = ( 9 + 10 ) / 2 = 9
Awal = 9 + 1 = 6; Akhir = 10
Langkah 4 : Mid = ( 10 + 10 ) / 2 = 10
Akhir = 10 - 1 = 9; Awal = 10
Awal > Akhir ?
Jadi K tidak ditemukan

BAGIAN XIII : REKURSIF

Rekursif berarti suatu proses yang dapat memanggil dirinya sendiri. Dalam rekursif sebenarnya
terkandung pengertian dari prosedur atau fungsi. Perbedaannya adalah bahwa rekursif dapat
memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil dari pemanggil prosedur atau
fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman
modern mendukung keberadaan proses rekursif ini.
Contoh paling sederhana dari proses rekursif adalah proses menghitung nilai factorial dan
mencari deret bilangan Fibonacci dari suatu bilangan bulat. Nilai factorial secara rekursif dapat ditulis
sebagai :
0! = 1
N! = N * (N-1)! Untuk N > 0
Yang secara notasi pemrograman dapat ditulis sebagai :
Faktorial (0) = 1 (a)
Faktorial (N) = N * Faktorial(N-1) (b)
Persamaan b di atas merupakan contoh hubungan rekurens yang berarti bahwa nilai suatu fungsi
dengan argument tertentu dapat dihitung dari fungsi yang sama dengan argument yang lebih kecil.
Persamaan a tidak bersifat rekursif disebut nilai awal. Setiap fungsi rekursif paling sedikit memiliki satu
nilai awal, jika tidak maka fungsi tersebut tidak dapat dihitung secara eksplisit.
Bilangan Fibonacci didefinisikan berdasarkan deret integer tak berhingga sebagai berikut:
1 1 2 3 5 8 13 21 34 … N
Dari deret di atas terlihat bahwa bilangan kw N (N > 2) dalam deret dapat dicari dari dua
bilangan sebelumnya yang terdekat dengan bilangan ke N yaitu bilangan ke (N-1) dan bilangan ke (N-2).
Sehingga jika Fibo(N) menunjukkan bilangan Fibonacci ke N maka Fibo(N) dapat dihitung dengan
hubungan rekurens :
Fibo(N) = Fibo(N-1) + Fibo(N-2)
Karena Fibo(N) ditentukan oleh dua nilai yang berbeda dengan argumen yang nilainya lebih
kecil maka untuk mencari bilangan Fibonacci diperlukan dua nilai awal yaitu : Fibo(1) = 1 dan Fibo(2) =
2.

Tower Of Hanoi
Contoh klasik dari proses rekursif adalah permainan Tower of Hanoi yang berdasar legenda
pertama kali dimainkan oleh seorang pendeta Budha di Hanoi, sehingga disebut Menara Hanoi. Dalam
permainan ini akan dipindahkan sejumlah piringan yang tidak sama besarnya dari satu tonggak ke
tonggak lain dan diperbolehkan melewati tonggak bantuan. Berikut ini ilustrasinya :

Diketahui tiga buah tonggak tunggal A, B, dan C dan tiga buah cakram 1,2, dan 3 dengan ukuran yang
berbeda (lihat gambar).

A B C

Susunlah algoritma untuk memindahkan semua cakram dari tonggak A ke tonggak C dengan ketentuan
sebagai berikut :

Hal : 33
Logika & Pemrograman TI – STMIK WD – © 2010

 Setiap kali hanya boleh satu cakram yang dipindahkan dari satu tonggak ke tonggak lain.
 Tonggak B digunakan sebagai tonggak bantuan.
 Cakram yang lebih besar tidak boleh diletakkan pada cakram yang lebih kecil.

Uraian langkah-langkahnya adalah sebagai berikut :

A B C

A B C

A B C

A B C

A B C

A B C

A B C

A B C

Dengan formula : 2N-1


Algoritma :
1. Pindahkan cakram 1 dari A ke C.
2. Pindahkan cakram 2 dari A ke B.
3. Pindahkan cakram 1 dari C ke B.
4. Pindahkan cakram 3 dari A ke C.
5. Pindahkan cakram 1 dari B ke A.
6. Pindahkan cakram 2 dari B ke C.
7. Pindahkan cakram 1 dari A ke C dan STOP.

Untuk Tower of Hanoi ini digunakan fungsi sebagai berikut : H(n,P,Q,R) dimana :
N = banyaknya cakram
P = tonggak asal ; Q = tonggak bantuan ; dan R adalah tonggak tujuan.

Algoritma Tower Of Hanoi :


Langkah 1 : Lakukan H(n-1,A,C,B)

Hal : 34
Logika & Pemrograman TI – STMIK WD – © 2010

Langkah 2 : Lakukan H(1,A,B,C)


Langkah 3 : Lakukan H(n-1,B,A,C)
Untuk n= 3 maka : H(1,A,B,C) A C

H(2,A,C,B) H(1,A,C,B) AB

H(1,C,A,B) CB

H(3,A,B,C) H(1,A,B,C) AC

H(1,B,C,A) BA

H(2,B,A,C) H(1,B,A,C) BC

H(1,A,B,C) AC

Hal : 35

Anda mungkin juga menyukai