• Tidak ada hasil yang ditemukan

Modul Logika_ Algoritma

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Logika_ Algoritma"

Copied!
90
0
0

Teks penuh

(1)DIKTAT KULIAH. LOGIKA ALGORITMA Disusun oleh: Candra Mecca Sufyana.

(2) LOGIKA ALGORITMA I.. Pendahuluan Algoritma adalah jantung ilmu komputer atau informatika, karena banyak cabang. ilmu komputer yang diacu dalam terminologi algoritma. Oleh karena itu, alangkah baiknya kita mengetahui karakteristik komputer dan hubunganya dengan algoritma secara umum. Karateristik komputer secara umum: •. Komputer terdiri dari rangkaian elektronik IC, Kawat Tembaga, mainboard, dll. •. Terdiri dari ribuan transistor (tergabung dalam IC) yang berisikan gerbang-gerbang logika (AND,OR, NAND, NOR, dll). •. Eksekusi dipicu dari adanya masukan (input) listrik berkisar 5 volt dan berupa TRUE / FLASE. •. Aliran data berupa digit biner 1 dan 0, yang tersusun sesuai instruksi. •. Instruksi dibuat secara sistematis dan hirarkis, serta masuk akal (sesuai logika) Agar instruksi dapat dimengerti dan bisa menghasilkan keluaran (output) sesuai. keinginan maka terdapat beberapa hal yang harus diperhatikan, yaitu: – Harus ada instruksi yang dimengerti oleh komputer – Komputer hanya terdiri dari rangkaian elektronik, karena itu hanya mengerti nilai 1 dan 0 – Nilai 1 dan 0, dapat berupa rangkaian instruksi jika disusun dengan susunan yang sistematis dan masuk akal untuk menyelesaikan masalah tertentu – Susunan masuk akal dikenal dengan istilah urutan instruksi bahasa yang dikenal oleh komputer. – Karena itu pasti komputer punya bahasa, dan kita harus membuat bahasa yang dimengerti oleh komputer. – Bahasa tersebut dikenal dengan istilah bahasa pemrograman. – Program komputer harus dibuat dengan urutan logika yang benar dan sesuai dengan masalah yang ingin diselesaikan..

(3) Istilah. Urutan logika untuk menyelesaikan masalah tertentu. Algoritma Diterjemahkan oleh bahasa pemrograman Contoh : PASCAL, C, DELPHI, dll. Instruksi yang dikenal oleh komputer. II. Definisi Logika & Algoritma Logika dan algoritma merupakan kedua kata yang saling berhubungan satu dengan yang lainya. Algoritma adalah sebuah istilah yang diadakan untuk menyelesaikan masalah yang logis artinya masalah yang diuntai dalam bentuk pernyataan-pernyataan logika. Sehingga, seyogyanya dengan hanya menyebutkan algoritma, secara implisit kita juga sudah berbicara mengenai logika. Walaupun algoritma adalah jantung ilmu komputer, namun, jangan beranggapan algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehariharipun banyak terdapat proses yang dinyatakan dalam suatu algoritma. Seperti contoh sederhana ialah membuat mie rebus dan menjalankan motor. Susunan : Cara Membuat mie rebus. Cara menjalankan sepeda motor. •. Ambil Mie. •. Masukkan kunci. •. Nyalakan kompor. •. Nyalakan starter motor. •. Ambil wadah dan isi air. •. Panaskan mesin terlebih dahulu. •. Panaskan air hingga mendidih. •. Masukkan gigi. •. Masukkan Mie kedalam wadah. •. Tancap gas perlahan-lahan. •. Aduk hingga matang. •. Motor berjalan. •. Angkat dan sajikan.

(4) Contoh tersebut memperlihatkan suatu masalah, masalah adalah pertanyaan atau tugas yang kita cari jawabanya, yakni dalam hal ini adalah bagaimana cara membuat mie dan menjalankan sepeda motor, kemudian kita mencari solusi berupa berbagai langkah pernyataan yang masing-masing pernyataan disebut dengan parameter, dan keseluruhan dari parameter tersebut disebut dengan instansi masalah. Sedangakan jawaban dari instansi masalah tersebut, kita sebut dengan solusi. Jadi, dari pengertian diatas, kita dapat menyimpulkan bahwa algoritma secara luas adalah prosedur yang berisi langkah-langkah penyelesaian masalah. Kita lihat contoh selanjutnya:. Bagaimana caranya agar mobil dan pengemudi sampai di tujuan  Dari gambar ilustrasi – Berapa kemungkinan penyelesaian jalan yang dilalui ? – Anggap satu kemungkinan yang dipilih, tuliskan tahapan yang harus dilalui – Dari tahapan yang dibuat apakah menyelesaikan masalah ?  Dari pertanyaan yang diajukan, ada suatu hipotesa : – Untuk menyelesaikan suatu permasalahan pasti harus memiliki alur yang jelas dan tepat. – Dari alur yang dibuat pasti susunan / tahapan tersusun secara sistematis dan hirarkis – Susunan sistematis dan hirarkis pasti dapat menyelesaikan masalah tertentu  Keyakinan yang didapat : – Setiap menyelesaikan masalah harus menggunakan cara-cara sistematis dan terstruktur. – Cara-cara tersebut harus bisa dituliskan secara benar dan masuk akal. (Metode Ilmiah).

(5) •. Simpulan :. – Algoritma : urutan-urutan logis dari suatu pernyataan untuk menyelesaikan kasus / masalah tertentu Beberapa contoh diatas diharapkan memberikan pengertian tentang definisi algoritma secara luas dalam kasus kehidupan sehari-hari, yang berhubungan dengan masalah, parameter, instansi masalah yang berupa prosedur berisi langkah-langkah logis untuk menghasilkan solusi sebagai jawaban atas permasalahan. Secara spesifik, algoritma yang akan dibahas dalam mata kuliah ini adalah algoritma yang berhubungan dengan komputer atau mesin yang sering disebut algoritma pemograman. Kalau kita berbicara tentang algoritma pemograman maka terdapat dua pembelajaran penting yang mesti dipahami yaitu memprogram dan bahasa pemograman. Belajar Memprogram  Belajar memprogram ≠ belajar bahasa pemrograman  Belajar memprogram: belajar tentang strategi pemecahan masalah, metodologi dan sistematikanya kemudian menuliskannya dalam notasi yang disepakati bersama  Belajar memprogram: bersifat pemahaman persoalan, analisis dan sintesis  Belajar memprogram, titik berat: designer program Belajar Bahasa Pemrograman  Belajar bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa  Belajar bahasa pemrograman , titik berat : coder  Jenjang bahasa pemrograman •. Bahasa mesin (bahasa yang dikenal oleh mesin). •. Bahasa assembler (bahasa yang disusun oleh bahasa mesin). •. Bahasa menengah (bahasa yang disusun oleh kumpulan bahasa assembler atau bahasa mesin). •. Bahasa tingkat tinggi (bahasa terstruktur yang disusun oleh bahasa menengah dan assembler). •. Bahasa berorientasi objek (bahasa yang disusun menurut objek-objek, setiap objek dibuat oleh suatu bahasa pemrograman tertentu). Bahasa bertujuan sebagai alat komunikasi dengan lawan bicara, sehingga dalam bahasa pemograman berarti bagaimana cara kita (manusia) berkomunikasi dengan mesin (komputer)..

(6) Nah, dalam menciptakan komunikasi yang baik diperlukan adanya pengertian dan pemahaman tentang bagaimana cara berpikir lawan bicara kita dalam hal ini adalah komputer. Bagaimana komputer berpikir ? . Komputer tidak dapat berfikir secara simultan terhadap sejumlah perintah. . Komputer membaca kumpulan perintah secara serial mulai dari baris pertama hingga baris terakhir yang prioritasnya tidak dapat dipertukarkan. . Variabel tidak dapat dipergunakan secara terbalik. Sebagai contoh, silakan simak dan jawab kasus-kasus aritmetik berikut ini: x = 10. x = 10. 10 = x. x = 10. x = 10. y=x+z. x = 20. z = 20. z = 20. z = 20. z = 20. y=x. y=x+z. x+z=y. y = x + z*2 - x*x. y=x*2 . Berapakah y menurut anda (berfikir simultan) ?. . Berapakah y menurut komputer (berfikir serial) ?. Dari berbagai contoh konsep diatas dapat disimpulkan bahwasanya algoritma pemograman adalah Aliran pemikiran manusia yang simultan dituangkan ke dalam aliran. pemikiran komputer yang serial dalam bentuk tahap-tahap pemikiran yang sistematis dan logis. Sstematis berarti teratur menurut sstem untuk menyelesaikan masalah. Logis berarti sesuai dengan logika atau masuk akal. Perhatikan contoh berikut:  Ada 2 buah teko masing-masing berkapasitas 4 galon (teko A) dan 3 galon (teko B).  Tidak ada tanda yang menunjukkan batas ukuran pada kedua teko tersebut.  Ada sebuah pompa air yang akan digunakan untuk mengisikan air pada kedua teko tersebut.  Permasalahannya: Bagaimanakah kita dapat mengisikan tepat 2 galon air ke dalam teko yang berkapasitas 4 galon?.

(7) 4 galon (teko A). Air tak terbatas 3 galon (teko B). Penyelesaian: masalah ini mempunyai banyak kemungkinan penyelesaian. Salah satu penyelesaian secara algoritmanya adalah: 1. Isi penuh teko A dengan air ( teko A berisi 4 galon air ) 2. Tuangkan air dari teko A ke dalam teko B ( teko A berisi 1 galon air dan teko B berisi 3 galon air ) 3. Buang seluruh air yang ada pada teko B ( teko B kosong ) 4. Tuangkan air sisa yang berisi 1 galon pada teko A ke teko B ( teko A kosong dan teko B berisi 1 galon air) 5. Isi penuh kembali galon A ( teko A terisi penuh 4 galon ) 6. Tuangkan ke teko B yang sedang berisi 1 galon air hingga penuh ( sehingga teko A dapat berisi 2 galon ) Contoh diatas adalah sebuah kasus logika yang dapat diselesaikan dengan algoritma yang sistematis artinya urutanya benar dan sesuai, selain itu juga logis, artinya berbagi parameternya mewujudkan instansi masalah yang memberikan solusi yang tepat. III. Sejarah Algoritma Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism menjadi.

(8) Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi–thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma. Algoritma pertama kali digunakan (1950) oleh Euclid seorang matematikawan Yunani, dalam bukunya yang berjudul Element yang didalamnya terdapat “algoritma Euclidean” (Euclid algorithm), yang menuliskan langkah-langkah untuk menemukan common great divisor (gcd), atau kita lebih mengenalnya dengan istilah faktor persekutuan terbesar (FPB), dari dua buah bilangan bulat positif, m dan n. Misalnya, m = 80 dan n =12. Semua faktor pembagi 80 adalah: 1, 2, 4, 5, 8, 10, 16, 20, 40, 80 Semua faktor pembagi 12 adalah 1, 2, 3, 4, 6, 12 Maka gcd (80,12) = 4. Langkah-langkah dengan menggunakan algoritma Euclidean adalah: 80 dibagi 12 hasilnya = 6, sisa 8 12 dibagi 8 hasilnya = 1, sisa 4 8 dibagi 4 hasilnya = 2, sisa 0 Pengertianya yaitu, karena pembagian terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi nilai gcd nya, yakni gcd(80,12). ALGORITMA Euclidean:. { Diberikan dua buah bilangan bulat positif, m dan n, (m ≥ n). algoritma Euclidean mencari gcd dari kedua bilangan tersebut } 1.. Jika n = 0 maka m adalah jawabanya; stop. tetapi jika n ≠ 0 lanjutkan ke langkah 2. 2.. Bagilah m dengan n dan misalkan r adalah sisanya.. 3.. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu kembali ke langkah 1.

(9) Menurut Donald E. Knuth dalam bukunya yang berjudul The Art of Computer Programming, sebauah algoritma harus mempunyai lima unsur penting, yakni: 1. Finiteness: algoritma harus memiliki titik berhenti (stopping role). 2. Definiteness: Setiap langkah harus didefinisikan secara tepat, tidak boleh membingungkan (ambiguous) 3. Input: Sebuah algoritma memiliki nol atau lebih input yang diberikan kepada algoritma sebelum dijalankan 4. Output: Sebuah algoritma memiliki satu atau lebih output, yang biasanya bergantung kepada input 5. Effectiveness: Setiap algoritma diharapkan miliki sifat efektif. STUDI TENTANG ALGORITMA Hal-hal yang akan dipelajari mengenai studi algoritma yaitu : . Bagaimana Merencanakannya: Merupakan suatu studi tentang teknik variasi design.. . Bagaimana Menyatakannya: Menyatakannya dengan singkat, dibuat dalam bahasa pemrograman yang terstruktur, misalnya Pascal, Bahasa C. . Bagaimana Validitasnya: Memenuhi kebutuhan yang diinginkan, dan perhitungannya / solusinya selalu benar untuk semua kemungkinan input yang legal.. . Bagaimana Menganalisisnya: Perbandingan dari waktu perhitungan dan banyaknya storage / memori yang digunakan (efisiensi). . Bagaimana Menguji suatu program : dilakukan pengujian terhadap kebenaran algoritma. Pemrograman Prosedural Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti Algoritma adalah proses yang prosedural. Definisi Prosedural menurut Kamus Besar Bahasa Indonesia : 1. Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas. 2. Metode langkah demi langkah secara eksak dalam memecahkan suatu masalah. Pada pemrograman prosedural, program dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri atas runtutan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional. Data yang disimpan di dalam memori dimanipulasi oleh.

(10) instrusi secara beruntun atau prosedural. Paradigma pemrograman seperti ini dinamakan pemrograman prosedural. Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C mendukung kegiatan pemrograman procedural, karena itu mereka dinamakan juga bahasa procedural. Selain paradigma pemrograman procedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi objek (Object Oriented Programming). Paradigma pemrograman ini merupakan trend baru dan sangat populr akhir-akhir ini. Paradigma pemrograman yang lain adalah pemrograman fungsional, pemrogramn deklaratif dan pemrograman konkuren. Pada kesempatan ini penulis hanya menyajikan paradigma pemrograman procedural saja.. IV. Struktur Dasar Algorima Seperti yang dijelaskan sebelumnya, algoritma berisi tahapan-tahapan pemikiran yang sistematis dan logis. tahapan-tahapan pemikiran tersebut dideskripsikan dalam bentuk langkah-langkah pelaksanaan suatu proses. Setiap langkah di dalam algoritma tersebut dinyatakan dalam sebuah bentuk pernyataan (statement) atau istilah lainya adalah instruksi. Dan program adalah kumpulan instruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk menyelesaikan suatu persoalan. (Menurut P. Insap Santosa). Sebuah pernyataan berisi aksi (action) yang dilakukan, artinya bila pernyataan dieksekusi (run) oleh pemroses, maka aksi yang bersesuaian dengan pernyataan akan dikerjakan. Sebagai contoh, misalkan dalam algoritma terdapat pernyataan: Tulis ”Piksi Ganesha is good” Maka pernyataan tesebut dalam bentuk instruksi ’ Tulis ’ yang menggambarkan aksi menulis pesan ”Piksi Ganesha is good”. Contoh lainya: Jika kamu = ‘menarik’ maka tulis “ saya tertarik” Terdiri dari dua aksi, yaitu membandingkan nilai variable kamu dengan ‘menarik’, dan aksi tulis pesan “ saya tertarik “, jika perbandingan itu benar. Di dalam algoritma pun dikenal banyak bentuk pernyataan, seperti pernyataan ekspresi, pernyataan pemilihan, pernyataan pengulangan, pernyataan prosedur, dll..

(11) Konstruksi Dasar Sebuah algoritma dapat dibangun dari tiga buah konstruksi dasar, yaitu runtunan, pemilihan, dan pengulangan.. Runtunan. 1.. Pemilihan. Pengulangan. Runtunan (Sequence). Sebuah runtunan terdiri dari satu atau lebih 'instruksi'. Tiap-tiap instruksi. dilaksanakan secara berurutan sesuai dengan urutan penulisannya. Sebuah instruksi baru bisa. dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan akhir algoritma. Kalau urutannya diubah, kemungkinan besar hasil akhirnya akan berubah.. Misal: . Seorang ibu berbelanja di mall. Dia melewati beberapa tokoyaitu toko perhiasan, took baju, toko sepatu, dan toko tas. Ketika itu dia iseng! belilah dia satu set perhiasan mas. Namun setelah berjalan beberapa meter dia berjumpa dengan toko tas. Karena dia sadar kalau dirinya membutuhkan tas baru, dia akan menyesal dengan mengatakan "seandainya toko perhiasan tadi ada setelah toko tas" Itulah runtunan/runtutan yang menentukan keadaan akhir dari suatu proses. algoritma (contoh diatas ibu itu akhirnya beli perhiasan mas), jika runtunan tersebut dirubah bias menyebabkan hasil tidak sama (ibu itu bisa tidak beli perhiasan mas). . Ada dua buah bejana, A dan B; bejana A berisi larutan kopi, bejana B berisi larutan susu. Pertukarkan kedua isi bejana itu, sehingga A berisi larutan susu, dan B berisi larutan kopi. Tidak boleh jadi kopi susu.. Bagaimana Algoritmanya? Jawabannya: ada tiga langkah, yaitu:.

(12) 1. Tuangkan larutan dari bejana A ke dalam bejana C. (cuci bersih dulu bejana A kalo bisa) 2. Tuangkan larutan dari bejana B ke dalam bejana A. (cuci juga bejana B) 3. Tuangkan larutan dari bejana C ke dalam bejana B. Selesai..... Maka tidak jadi kopi susu, kecuali di minum isi kedua bejana itu dan mencampurnya di perut.Dari langkah diatas diperlukan suatu bejana bantu yaitu bejana C, dalam Algoritma variabel bantu tersebut diperbolehkan dan sangat dianjurkan untuk mempermudah suatu penyelesaian proses.. 2.. Pemilihan ( Selection ) Dalam sebuah instruksi dikerjakan setelah 'kondisi' tertentu terpenuhi. Dalam. peristiwa sehari-hari sering disebut JIKA …. MAKA ….. , Misal : . JIKA mengantuk MAKA tidur. . JIKA lapar MAKA makan. . JIKA nilai jelek MAKA tidak lulus. Dalam bahasa pemrograman, ini dikenal dengan "if" dan "then". Kondisi adalah persyaratan yang dapat dinilai benar atau salah sehingga akan memunculkan 'aksi' yang berbeda dengan 'kondisi' yang berbeda. Misal : . 'if' Widi memperoleh juara kelas 'then' ayah akan memberi hadiah. . 'if' Jalan Dago macet 'then' ambil alternatif Jalan Dipati Ukur. Struktur pemilihan 'if-then' hanya memberikan satu pilihan aksi bila kondisi dipenuhi atau bernilai benar dan tidak memberikan aksi lain bila kondisi salah. Bentuk pemilihan yang lebih umum adalah memilih satu dari dua aksi bergantung pada nilai kondisinya, seperti: 'if' hari hujan 'then' pergilah dengan naik taxi 'else' pergilah dengan naik motor Bisa di jelaskan JIKA hari hujan MAKA pergilah dengan naik taksi JIKA TIDAK pergilah dengan naik motor. Di sini secara logika jika kondisi 'hari hujan' benar, maka aksi 'pergi naik taxi' dilakukan. Sebaliknya jika kondisi 'hari hujan' bernilai salah, maka aksi 'pergi naik motor' akan dilaksanakan. Secara garis besar struktur pemilihan ini adalah : IF kondisi THEN Proses1 ELSE Proses2 END IF.

(13) 3.. Pengulangan (Repetition) Salah satu kegunaan pemrograman adalah untuk memudahkan pekerjaan yang harus. dilakukan berulang-ulang tanpa lelah. Ada cerita yang dialami oleh seorang anak SMA yang, pernah suatu hari dihukum guru karena tertidur dikelas pada jam pelajaran terakhir. Dimana hukumannya menulis kalimat "saya berjanji tidak akan tidur di kelas lagi" sebanyak 300 kali. Tapi untungnya guru tersebut ini tidak menjelaskan dimana harus menulisnya. Kesokan harinya terpaksa merengek ke kakanya untuk dibolehkan membawa laptop kesayangan saya ke sekolah. Sebelumnya pada malam harinya sudah membuat program kecil untuk mengulang tulisan "saya berjanji tidak akan tidur di kelas lagi" sebanyak apapun yang di inginkan. Akhirnya guru tersebut itu cuman bisa geleng kepala. Algoritma pengulangan tersebut dapat dianalogikan dengan kalimat ULANG proses…SAMPAI kondisi tertentu.. atau. SAMPAI kondisi tertentu Lakukan proses PENGULANGAN Dalam contoh cerita diatas bias di tuliskan algoritmanya sbb :. repeat 300 times Tulis: ”saya berjanji tidak akan tidur di kelas lagi” Atau : for i = 1:100 Tulis: ”saya berjanji tidak akan tidur di kelas lagi”. Paradigma pemograman.

(14) . Pemrograman Prosedural •. Berdasarkan urutan-urutan, sekuensial. •. Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan.. •. Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.. . . . . Pemrograman Fungsional •. Berdasarkan teori fungsi matematika. •. Fungsi merupakan dasar utama program.. Pemrograman Terstruktur •. Secara berurutan dan terstrukrtur.. •. Program dapat dibagai-bagi menjadi prosedur dan fungsi.. •. Contoh: PASCAL dan C. Pemrograman Modular •. Pemrograman ini membentuk banyak modul.. •. Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri. •. Sebuah program dapat merupakan kumpulan modul-modul.. •. Contoh: MODULA-2 atau ADA. Pemrograman Berorientasi Obyek •. Pemrograman. berdasarkan. prinsip. obyek,. dimana. obyek. memiliki. data/variabel/property dan method/event/prosedur yang dapat dimanipulasi • . Contoh: C++, Object Pascal, dan Java.. Pemrograman Berorientasi Fungsi •. Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.. • . Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.. Pemrograman Deklaratif •. Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.. •. Contoh: PROLOG.

(15) Klasifikasi Algoritma 1.. Ditinjau dari Implementasi : •. Recursion or iteration: merupakan algoritma yang dapat memanggil dirinya sendiri sampai kondisi yang ditentukan dipenuhi, dikenal dengan functional programming. •. Logical: suatu algoritma yang dapat dilihat sebagai deduksi lojik terkontrol.. •. Serial atau parallel atau distributed: algoritma yang biasanya dieksekusi dengan asumsi satu instruksi pada suatu waktu.. •. Deterministic or non-deterministic: algoritma deterministik menyelesaikan masalah dengan keputusan yang tepat pada setiap tahapannya, sedangkan algoritma non-deterministic menyelesaikan masalah dengan perkiraan.. •. Exact atau approximate: mencari suatu perkiraan yang bisa menghampiri solusi yang benar. Biasa digunakan pada deterministik atau strategi random.. 2.. Ditinjau dari Paradigma perancangan: Divide and conquer, Dynamic programming, The greedy method, Linear programming, Reduction, Search and enumeration, The probabilistic and heuristic paradigm (Probabilistic algorithms, Genetic algorithms, Heuristic algorithms). 3.. Ditinjau dari Kajian Studi : search algorithms, sorting algorithms, merge algorithms, numerical algorithms, graph algorithms, string algorithms, computational geometric. algorithms,. combinatorial algorithms, machine learning, cryptography, data compression algorithms parsing techniques 4.. Ditinjau dari Kompleksitas: Algoritma efesien. 5.. Ditinjau dari Computing Power : polynomial time , primitive recursive functions.

(16) V.. Notasi Algoritmik French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan. masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan. Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. Dalam merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart, sedangkan Knuth (1973) menyarankan algoritma fundamental. Sebenarnya, tidak ada notasi yang standar untuk menuliskan notasi algoritma sebagaimana pada notasi bahasa pemograman. Namun, terdapat beberapa notasi algorima berikut ini: 1. Bahasa Natural : digunakan untuk membuat algoritma yang komplek atau algoritma teknik. 2. Pseudocode Pseu : menyerupai, code : kode. Susunan yang padat dan merupakan algoritma informal untuk deskripsi high-level dengan menggunakan struktur konvensi bahasa pemrograman, tetapi dalam penulisan tidak memperhatikan pemakaian subrutin (prosedur) , deklarasi varabel dan kode sistem khusus. Artinya, sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang yang tidak mengerti pemrograman. Tidak ada aturan standar penulisan pseudocode. Contoh: menghitung luas segitiga yang diketahui alas dan tingginya o. input alas. o. input tinggi. o. luas ← ½ * (alas * tinggi). o. write ( ‘luas’). 3. flow chart (diagram alir) representasi algoritma dengan skema atau langkah proses yang ditunjukan dengan berbagai macam bentuk dan dikaitkan dengan arah panah. Dapat membantu programmer maupun orang lain dalam memahami alur program (apa saja input, proses dan output dari program). Bagus secara visual akan tetapi repot kalau algoritmanya panjang..

(17) Selalu dimulai dengan. Input / Output. BEGIN:. Begin. Begin. Jangan lupa garis Input/output Mungkin anda ingin berkomunikasi dengan pemakai. End.

(18) Proses. Begin. Begin. Input. Input Anda dpt melakukan perhitungan di dlm proses Proses. Anda dapat menampilkan hasil di output. Proses. Output. End. Contoh flowchart dalam menuliskan algoritma menghitung luas segitiga:. Start input alas input tinggi luas  ½ * (alas * tinggi). Algoritma luas segitiga Menghitung luas segitiga bila diketahui alas dan tingginya input alas input tinggi luas  ½ * (alas * tinggi) print luas. print luas End. Notasi Algoritma Independen Terhadap Bahasa Pemrograman Dan Mesin Komputer Notasi Algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya, kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti. Mengapa demikian ? Karena setiap juru masak (sebagai pemroses) dapat melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan lain sebagainya..

(19) Demikian juga halnya dengan komputer. Meskipun setiap komputer berbeda teknologinya, tetapi secara umum semua komputer dapat melakukan operasi-operasi dasar dalam pemrograman seperti operasi pembacaan data, operasi perbandingan, operasi aritmatika, dan sebagainya. Perkembangan teknologi komputer tidak mengubah operasioperasi dasar it, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian. Pada sisi lain setiap program dalam bahasa tingkat tinggi selalu diterjemahkan kedalam bahasa mesin sebelum akhirnya dikerjakan oleh CPU. Setiap instruksi dalam bahasa mesin menyajikan operasi dasar yang sesuai, dan menghasilkan efek netto yang sama pada setiap komputer.. Struktur Teks Algoritma . Judul algoritma Bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma. tersebut. Nama sebaiknya singkat dan menggambarkan apa yang dilakukan oleh algoritma tersebut. Sebagai contoh: PROGRAM menghitung_luas_segitiga { Program untuk menghitung luas sebuah segitiga dari masukkan berupa alas dan tinggi } . Deklarasi Bagian untuk mendefinisikan semua nama yang digunakan di dalam program. Nama. tersebut dapat berupa nama tetapan, peubah, tipe, prosedur dan fungsi. Contoh: DEKLARASI { nama konstanta } Const Npeg = 100 {jumlah pegawai} Const phi = 3.14. {nilai π}. { nama tipe } type Titik : record < x: int, y: int > { absis, ordinat } { nama peubah } c. : char. Q : titik. {karakter yang dibaca} {titik koordinat}.

(20) . Deskripsi (Algoritma) Bagian ini berisi uraian langkah-langkah penyelesaian masalah yang ditulis dengan. menggunakan notasi yang akan dijelaskan selanjutnya yaitu instruksi-instruksi algoritmik yang biasanya ditulis dalam notasi pseudecode. Sebagai contoh secara keseluruhan membuat luas dan keliling lingkaran: PROGRAM Luas_Kell_Lingkaran {<- ini judul algoritma}. {menghitung luas dan keliling lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luas dan kelilingnya, dan mencetak luas dan keliling lingkaran ke piranti keluaran} DEKLARASI : const phi = 3.14 R : real {jari-jari lingkaran} Luas : real {luas lingkaran} Keliling : real {keliling lingkaran} DESKRIPSI : read (R) Luas = phi * R *R Keliling = 2 * phi * R write(luas, keliling). VI. Tipe, Operator, dan Ekspresi Pada dasarnya, suatu program komputer ialah memanipulasi objek (data) di dalam memori. Objek tersebut terdiri dari Peubah (variable) dan konstanta (constant). Operator menspesifikasikan operasi apa yang dapat dilakukan terhadap Peubah dan konstanta. Ekspresi mengkombinasikan peubah dan konstanta untuk menghasilkan nilai baru. Tipe sebuah objek akan menentukan himpunan nilai yang dapat dimilikinya dan operasi yang dilakukan pada objek tersebut. Tipe dibedakan atas tipe dasar dan tipe bentukan..

(21) Tipe Dasar 1. Bilangan Lojik (Logic) Nama tipe: boolean Ranah nilai: hanya mengenal dua buah nilai: benar (true) da salah (false). Atau dinyakan bernilai ‘1’ jika pernyataan benar dan bernilai ‘0’ jika pernyataan salah. Konstanta: True dan False Operasi Operasi yang dilakukan adalah operasi boolean yang menghasilkan nilai true dan false. Operator yang digunakan adalah not, and, or, dan xor. • Hubungan DAN (AND) Merupakan hubungan antar kondisi yang mensyaratkan kedua kondisi terpenuhi. Bernilai benar jika kedua pernyataan bernilai benar Contoh : Untuk menentukan penerimaan calon pegawai ditentukan kriteria sebagai:  Umur dibawah 30 tahun  Nilai test lebih besar dari 60. Umur < 30 dan nilai > 60. T Capeg diterima. F Capeg tidak diterima. • Hubungan Atau (OR) Merupakan hubungan antar kondisi yang mensyaratkan hanya salah satu kondisi yang terpenuhi. Bernilai salah jika kedua pernyataan bernilai salah Contoh: Tunjangan pensiun diberikan kepada pegawai yang berusia lebih dari 60 tahun. Untuk pegawai yang mempunyai masa kerja lebih dari 25 tahun juga mendapat tunjangan tersebut..

(22) Usia>60 Atau MK>25. T. Mendapat tunjangan pensiun. F Tidak mendapat tunjangan pensiun. xor akan bernilai benar bila kedua pernyataan saling berlawanan.. 2. Bilangan Bulat Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal. Nama tipe: Integer Ranah nilai: Secara teoritis, rentang nilainya adalah dari minus tak hingga sampai plus tidak berhingga. Namun, di dalam komputer tipe integer ini mempunyai nilai yang terbatas bergantung pada mesin (komputer) dan kompilator yang digunakan. Kompilator menyediakan lima macam tipe untuk integer, yaitu byte, shortint, word, integer, dan longint. Tipe. Rentang Nilai. Format. Byte. 0 ... 255. Unsigned 8-bit. shortint. -128 ... 127. signed 8-bit. word. 0 … 65535. Unsigned 16-bit. integer. -32768 … 32767. signed 16-bit. longint. -2147483648 … 2147483647. signed 32-bit. Pemilihan implementasi bilangan bulat ke dalam tipe-tipe integer yang berbeda lebih disebabkan pada faktor penghematan memori. Sebagai contoh, tipe word hanya membutuhkan 2 byte memori, sedangkan integer membutuhkan 4 byte memori. Tipe bilangan bulat adalah tipe yang memiliki keterurutan, artinya nilai sebelumnya (predecessor) dan nilai sesudahnya (successor) dapat ditentukan. Contohnya predecessor 9 (a) adalah 8 (a-1), dan successornya adalah 10 (a+1)..

(23) Konstanta: konstanta bertipe bilangan bulat harus ditulis tanpa mengandung pecahan desimal. Misalnya. 77. -33. 1986. 10. 1. Operasi: Operasi yang dilakukan adalah operasi aritmetika dan operasi perbandingan. a. Operasi aritmetika Operasi aritmetika terhadap bilangan bulat dengan sembarang operator aritmetika menghasilkan nilai yang bertipe bilangan bulat pula. Operator aritmetika yang didefinisikan pada bilangan bulat adalah: Operator. Operation. +. Addition (tambah). -. Subtraction (kurang). *. Multiplication (kali). /. Division (bagi). div. Integer division. mod. Remainder (sisa hasil bagi). Objek yang dioperasikan disebut operand. Misalnya, pada x + y, masing-masing x dan y adalah operand. b. Operasi perbandingan Operasi perbandingan terhadap salah satu operator relasional menghasilkan nilai bolean (true atau false). Operador perbandingan untuk bilangan bulat adalah: Operator. Operation. =. Sama dengan. <. Lebih kecil. ≤. Lebih kecil atau sama dengan. >. Lebih besar. ≥. Lebih besar atau sama dengan. 1. Tidak sama dengan.

(24) 3. Bilangan Riil Bilangan bulat adalah bilangan yang mengandung pecahan desimal. Nama tipe: real ( beberapa literatur juga menyebutnya folating point ) Ranah nilai: Secara teoritis, rentang nilainya adalah dari minus tak hingga sampai plus tidak berhingga. Namun, di dalam komputer tipe integer ini mempunyai nilai yang terbatas bergantung pada mesin (komputer) dan kompilator yang digunakan. Kompilator menyediakan empat macam tipe yaitu real, single, double, dan extended. Tipe. Rentang Nilai. Format. real. 2.9 x 10-39 … 1.7 x 1038. 6 byte. single. 1.5 x 10-45 … 3.4 x 1038. 4 byte. double. 5.0 x 10-324 … 1.7 x 10308. 8 byte. extended. 3.4 x 10-4932 … 1.1 x 104932. 10 byte. Konstanta: konstanta bertipe bilangan riil harus ditulis dengan pecahan desimal. Misalnya. 0.77. -33.99. 1986.101. 8.12+E3. .2. Operasi: Operasi yang dilakukan adalah operasi aritmetika dan operasi perbandingan. a. Operasi aritmetika Operasi aritmetika terhadap bilangan riil dengan sembarang operator aritmetika menghasilkan nilai yang bertipe bilangan riil pula. Operator aritmetika yang didefinisikan pada bilangan riil adalah: Operator. Operation. +. Addition (tambah). -. Subtraction (kurang). *. Multiplication (kali). /. Division (bagi). b. Operasi perbandingan Operasi perbandingan terhadap salah satu operator relasional menghasilkan nilai bolean (true atau false). Operador perbandingan untuk bilangan bulat adalah:.

(25) Contoh: 0.0007 < 0.7. Operator. Operation. =. Sama dengan. <. Lebih kecil. ≤. Lebih kecil atau sama dengan. >. Lebih besar. ≥. Lebih besar atau sama dengan. ≠. Tidak sama dengan. (hasil : false). 812.03 > 11.01986 8.9 ≠ 89.0. (hasil: true). (hasil: true). 4. Karakter Nama tipe: char Ranah nilai: Ranah karakter adalah semua alfabet (‘a’ ... ‘z’, ‘A’ ... ‘Z’), angka (‘0’ ... ‘9’), karakter khusus (‘.^’, ‘@’, ‘#’, ‘$’, ‘%’, ‘&’ dll), tanda baca (‘!’, ‘?’, ‘.’, ‘:’ dll), operator aritmetika (‘*’, ‘/’, ‘+’, ‘-‘). Daftar yang lengkap terdapat pada tabel ASCII. Konstanta: konstanta karakter harus diapit oleh tanda petik tunggal. Contoh: ‘M’ ‘e’. ‘c’. ‘C’ ‘a’. ‘7’. ‘$’. Harus diperhatikan yaitu ‘7’ adalah karakter sedangkan 7 adalah integer! Operasi: Operasi yang dilakukan adalah operasi perbandingan. Yang berlaku yaitu: Operator. Operation. =. Sama dengan. <. Lebih kecil. ≤. Lebih kecil atau sama dengan. >. Lebih besar. ≥. Lebih besar atau sama dengan. ≠. Tidak sama dengan.

(26) Contoh: ‘c’ = ‘c’. (True) ;. ‘T’ = ‘t’ (false) ;. ‘m’ < z (true. Tipe karakter adalah tipe yang memiliki keterurutan, artinya nilai sebelumnya (predecessor) dan nilai sesudahnya (successor) dapat ditentukan.. 5. String String adalah untaian karakter dengan panjang tertentu. String sebenarnya bukan tipe dasar murni, namun karena sering digunakan dalam pemograman, maka string diperlakukan sebagai tipe dasar. Nama tipe: string Ranah nilai: Ranah nilai untuk tipe string adalah deretan karakter yang telah didefinisikan pada ranah karakter. Konstanta: Semua konstanta string harus diapit oleh tanda petik tunggal. Contoh: ‘ logika algoritma’, ‘BANDUNG’, ‘PIKSI GANESHA’, ‘D5709um’ String kosong adalah string yang panjangnya nol, antara lain, string kosong sama dengan karakter kosong. Operasi: Operasi terhadap data bertipe string didefinisikan dua macam: a. Operasi penyambungan Operator: +, yang dimaksudkan disini yaitu penyambungan. Contoh: ‘Manajemen’ + ‘informatika = ‘Manajemen informatika’ ‘1’ + ‘2’ = ‘12’ dan. ‘110’ + ‘1986’ = ‘1101986’. b. Operasi Perbandingan Contoh: ‘pqrs’ = ‘pqr’ ‘ simkuring’. (false) < ‘SIMKURING’. (true). String yang disusun atas gabungan numerik dan abjad disebut alfanumerik. Misalnya: ‘D5709UM’ .. Tipe Bentukan Tipe bentukan adalah tipe yang didefinisikan sendiri oleh pemogram. Tipe bentukan disusun oleh satu atau lebih tipe dasar. Ada dua macam tipe bentukan: 1.. Tipe dasar yang diberi nama dengan nama tipe baru.. 2.. Tipe terstruktur.

(27) 1.. Tipe dasar yang diberi nama dengan nama tipe baru. Pemberian nama baru biasanya digunakan oleh pemogram dengan alasan agar lebih familiar dan lebih mudah diintrepertasi oleh orang yang membaca teks algoritma. Kata kunci untuk pembuatan nama baru ini adalah type. Aspek ranah nilai, konstanta, dan operasi beserta operatornya terhadap tipe baru tersebut tidak berubah, tetap sama dengan tipe dasar aslinya. Contoh. :. type BilanganDesimal : real. BilanganDesimal adalah tipe bilangan riil yang sama saja dengan tipe real. Apabila kita mempunyai sebuah peubah yang bernama p dan bertipe BilanganDesimal, peubah p tersebut sama saja dengan bertipe real. 2.. Tipe terstruktur. Tipe terstruktur adalah tipe yang berbentuk rekaman (record). Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram. field 1. field 2. field 3. .................... field N. Contoh: 1. Bilangan kompleks adalah bilangan yang terdiri dari bilangan riil dan bilangan imaginer yang dinyatakan dengan a+bi, dengan a dan b riil sedangkan i = − 1 . Misalnya 7.0 + 2.6 i. Bilangan kompleks itu dapat dinyatakan sebagai tipe rekaman dengan a dan b sebagai nama fieldnya. a. b. Cara menuliskan tipe kompleks: type Kompleks : record <a : real, b: real> jika dideklarasikan m adalah peubah bertipe kompleks, maka cara mengacu tiap field pada m adalah: m.a ; m.b Secara keseluruhan dapat didefinisikan sebagai berikut: Nama tipe. : Kompleks. Ranah nilai. : (real, real). Contoh konstanta. : <7.0 , 2.6> yang menandakan 7.0 + 2.6 i.. Operasi. : operasi aritmetika bilangan riil terhadap a dan b Operasi perbandingan terhadap masing-masing field..

(28) 2. NilMhs adalah nama tipe terstruktur yang menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM (Nomor Induk Mahasiswa), nama mahasiswa, kode mata kuliah yang ia ambil, dan nilai mata kuliah. NIM. NamaMhs. KodeMK. Nilai. Cara menuliskan tipe NilaiMhs: Type NilaiMhs : record < NIM. : integer ,. { Nomor Induk Mahasiswa }. NamaMhs : string ,. { nama mahsiswa }. KodeMK. : string ,. { kode mata kuliah }. Nilai. : char ,. { indeks nilai }. >. Aturan Penamaan: 1. Nama harus dimulai dengan huruf alfabet, tidak boleh dimulai dengan angka, spasi, atau karakter khusus lainya. 2. Huruf besar atau kecil tidak dibedakan. 3. Karakter penyusun nama hanya boleh huruf alfabet, angka, dan “_”. 4. Nama tidak boleh mengandung operator aritmetika, operator relasional, tanda baca, dan karakter khusus lainya. 5. Karakter dalam nama tidak boleh dipisah dengan spasi.. 6. Panjang nama tidak dibatasi. Ekspresi 1. Ekspresi Aritmetik adalah ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe numerik. Contoh: f ← g * h atau l = ( u + v ) div 7. 2. Ekspresi Relasional adalah ekspresi dengan operator =, <, >, ≥, ≤, ≠ dan not, or, and, dan xor. Contoh: not ada (hasil : false) , x < 7 ( hasil: false), dll. 3. Ekspresi String adalah ekspresi dengan operator ‘+’ (operaor penyambungan)..

(29) VII. Runtunan Algoritma merupakan runtunan (sequence) satu ataulebih instruksi, yang berarti bahwa: 1. Tiap instruksi dikerjakan satu per satu 2. Tiap instruksi dilaksanakan tepat sekali, tidak ada yang diulang 3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis di dalam teks algoritma. 4. Akhir dari instruksi terakhir merupakan akhir algoritma. Contoh kasus runtunan: Tulislah algoritma yang membaca nama karyawan dan gaji pokok bulananya dan menghitung gaji bersih karyawan tersebut. Gaji bersihnya tersebut adalah: Gaji bersih = gaji pokok + tunjangan - pajak Tunjangan karyawan dihitung 20 % dari gaji pokok, sedangkan pajak adalah 15 % dari gaji pokok ditambah tunjangan. Nama karyawan dan gaji bersih sebagai outputnya. Penyelesaian PROGRAM Gaji_Bersih_Karyawan { Menghitung gaji bersih karyawan dengan masukkan nama karyawan dan gaji pokok bulananya. Gaji bersih = gaji pokok + tunjangan - pajak. Tunjangandihitung 20 % dari gaji pokok, sedangkan pajak adalah 15 % dari gaji pokok ditambah tunjangan } DEKLARASI const PersenTunjangan = 0.2 const PersenPajak = 0.15 NamaKaryawan = string GajiPokok,tunjangan,pajak,GajiBersih : real DESKRIPSI read (NamaKaryawan, GajiPokok) tunjangan ← PersenTunjangan * GajiPokok pajak ← PersenPajak * (GajiPokok + tunjangan) GajiBersih ← GajiPokok + tunjangan - pajak write(NamaKaryawan, GajiBersih).

(30) VIII. Pemilihan Seringkali suatu instruksi hanya bisa dikerjakan jika ia memenuhi suatu persyaratan tertentu. Oleh karena itu, komputer tidak lagi mengerjakan instruksi secara sekuensial seperti pada runtunan, namun berdasarkan syarat yang dipenuhi yang terdapat pada struktur pemilihan. Mari kita lihat contoh demi contoh pada setiap kasusnya. Satu kasus. then. Pernyataan atau aksi akan dikerjakan jika kondisi bernilai benar dan jika salah maka aksi atau pernyataan tidak dikerjakan. Contoh: Menentukan bilangan genap Program genap Deklarasi x : integer Deskripsi read (x) if x mod 2 = 0 then write (‘genap’) endif Atau contoh lainya: IF nilai = “A” OR nilai = “B” THEN write (Dapat mengikuti tes asisten) ENDIF.

(31) Dua Kasus. ” Aksi 1 akan dikerjakan jika kondisi dalam keadaan benar/true dan sebaliknya jika kondisi salah/false maka pernyataan-2 atau aksi 2 yang akan dikerjakan.”. Contoh: Menentukan tahun kabisat Program : TahunKabisat Deklarasi tahun = integer Deskripsi read (tahun) if tahun mod 4 = 0 then write (‘ tahun kabisat’ ) else write (‘ bukan tahun kabisat’ ) endif Tiga Kasus atau lebih. ” Aksi 1 akan dikerjakan jika kondisi1 dalam keadaan benar/terpenuhi, jika kondisi2 maka aksi 2 akan dikerjakan dan jika tidak ada kondisi yang memenuhi maka aksi3 yang dikerjakan”. Contoh: Untuk proses jual beli dengan diskon dan hadiah sebagai berikut:.

(32) IF beli>=100000 THEN Output(Diskon 10%) ELSE IF beli>=50000 THEN Output(Bonus piring) ELSE IF beli>=10000 THEN Output(Bonus gelas) ELSE Output(Tak ada bonus) ENDIF ENDIF ENDIF. Struktur case ◊ Struktur kondisi Case digunakan untuk penyeleksian kondisi dengan kemungkinan yang terjadi cukup banyak. Penyederhanaan bentuk if-then-else. ◊ Struktur ini akan melaksanakan salah satu dari beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada ◊ Struktur ini Alternatif penggunaan nested conditional.

(33) IX.. Pengulangan Perulangan (iterasi) adalah proses yang berulang. Iterasi selalu ada dalam bahasa. pemrograman apapun, karena disinilah letak kelebihan komputer dibanding manusia, yaitu mampu melakukan hal yang sama berulang kali tanpa kesalahan akibat bosan atau lelah. Dengan perulangan, program menjadi lebih pendek dan sederhana. Dalam Pascal dikenal tiga macam perintah (statement) perulangan, yaitu statement for…do, repeat…until dan while…do. Perulangan for…do adalah perulangan dengan penghitung (counter), perulangan repeat…until adalah perulangan dengan syarat akhir sedang perulangan while…do adalah perulangan dengan syarat awal. Didalam algoritma, pengulangan (repetition/loop) dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai. Struktur pengulangan terdiri atas dua bagian : •. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan.. •. Badan pengulangan, yaitu satu atau lebih aksi yang akan diulang.. Bagian lain yang menyertai pengulangan yaitu : •. Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.. •. Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.. . Struktur WHILE – DO. Bentuk umum struktur WHILE – DO adalah : While <kondisi> do AKSI Endwhile Penjelasan : Aksi (atau runtunan aksi) akan dilaksanakan berulangkali sepanjang <kondisi> boolean masih tetap bernilai true. Jika <kondisi> bernilai false, badan pengulangan tidak akan dilaksanakan. Pengulangan selesai. Contoh : Misalkan kita ingin mencetak tulisan “PIKSI” sebanyak 3 kali. Maka algoritmanya adalah : Algoritma Cetak_Banyak_Hallo {Mencetak kata “PIKSI” sebanyak 3 kali}.

(34) DEKLARASI k : integer {pencacah pengulangan} DESKRIPSI k ← 1 {inisialisasi} While k ≤ 3 do write(‘PIKSI’) k←k+1 endwhile {kondisi berhenti : k > 3} Keterangan : Pada mulanya, k diisi dengan nilai 1. Sebelum memasuki badan pengulangan, kondisi k ≤ 3 diperiksa apakah bernilai true. Karena 1 ≤ 3 bernilai true, maka pernyataan write(‘PIKSI’) dilaksanakan, sehingga keluaran yang tercetak PIKSI Demikian seterusnya sebanyak 3 kali. Setiap kali badan pengulangan dimasuki, nilai k bertambah 1 sampai nilai k = 4. karena 4 > 10 maka kondisi pengulangan k ≤ 3 bernilai false. Pengulangan dihentikan. Jadi keluaran algoritma tersebut adalah : PIKSI PIKSI PIKSI . Struktur REPEAT – UNTIL. Bentuk umum struktur REPEAT – UNTIL adalah : Repeat AKSI until <kondisi> Penjelasan : Notasi ini mendasarkan pengulangan pada kondisi berhenti. Aksi didalam badan pengulangan diulang sampai kondisi boolean bernilai true, dengan kata lain, jika kondisi berhenti masih salah, pengulangan masih terus dilakukan. Karena pengulangan harus berhenti, maka di dalam badan pengulangan harus ada aksi yang mengubah harga kondisi. Perbedaan mendasar dengan struktuw WHILE – DO adalah aksi dilaksanakan minimal 1 kali, karena kondisi pengulangan diperiksa pada akhir struktur..

(35) Contoh : Misalkan kita ingin mencetak tulisan “PIKSI” sebanyak 3 kali. Maka algoritmanya adalah : Algoritma Cetak_Banyak_Hallo {Mencetak kata “PIKSI” sebanyak 3 kali} DEKLARASI k : integer {pencacah pengulangan} DESKRIPSI k ← 1 {inisialisasi} Repeat write(‘PIKSI’) k←k+1 endwhile k > 3 {kondisi berhenti : k > 3} . Struktur FOR Struktur for digunakan untuk menghasilkan pengulangan sejumlah kali tanpa. penggunaan kondisi apapun. Struktur ini menyebabkan aksi diulangi sejumlah kali (tertentu) Bentuk umum struktur FOR ada 2 macam yaitu : a. FOR menaik (ascending) For peubah ← nilai_awal to nilai_akhir do AKSI Endfor Keterangan : •. Peubah haruslah bertipe sederhana kecuali tipe real. •. Nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki.. •. Pada awalnya peubah diinisialisasi dengan nilai_awal. Nilai peubah secara otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai peubah sama dengan nilai_akhir.. •. Jumlah pengulangan yang terjasi adalah nilai_akhir – nilai_akhir + 1..

(36) Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali} DEKLARASI k : integer {pencacah pengulangan} DESKRIPSI k ← 1 {inisialisasi} for k: 1 to 3 do write(‘PIKSI’) endfor {kondisi berhenti} b. FOR menurun (descending) For peubah ← nilai_akhir downto nilai_awal do AKSI Endfor Keterangan : •. Peubah haruslah bertipe sederhana kecuali tipe real. •. Nilai_akhir harus lebih besar atau sama dengan nilai_awal. Jika nilai_akhir lebih besar dari nilai_awal, maka badan pengulangan tidak dimasuki.. •. Pada awalnya peubah diinisialisasi dengan nilai_akhir. Nilai peubah secara otomatis berkurang satu setiap kali aksi diulangi, sampai akhirnya nilai peubah sama dengan nilai_awal.. •. Jumlah pengulangan yang terjadi adalah nilai_awal – nilai_akhir + 1.. Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali} DEKLARASI k : integer {pencacah pengulangan} DESKRIPSI k ← 1 {inisialisasi} for k : 3 downto 0 do write(‘HALLO’) endfor {kondisi berhenti}.

(37) X.. Pengantar Pemograman Modular Dalam suatu pengembangan perangkat lunak, pemrograman adalah salah satu tahap. untuk mengimplementasikan penyelesaian masalah tertentu dengan suatu bahasa pemrograman. Penyusunan program yang terstruktur merupakan salah satu syarat program yang baik. Terstruktur berarti memiliki rancangan yang sistematis, mudah dibaca, dan mudah dibetulkan jika ada kesalahan serta mempunyai alur yang jelas. Salah satu metode penyusunan program terstruktur adalah pemrograman modular Jadi, Pemrograman Modular adalah suatu teknik pemrograman di mana program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang lebih kecil. dan sederhana. Keuntungannya yaitu, program lebih pendek, mudah dibaca dan dimengerti, mudah, didokumentasi, mengurangi kesalahan dan mudah mencari kesalahan, kesalahan yang terjadi bersifat “lokal”. Terdapat dua bentuk teknik pemograman modular (sub-program / upa-program) yaitu prosedur dan fungsi. 1.. PROSEDUR Prosedur adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik. dan menghasilkan efek netto dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. Mendefinisikan Prosedur Pada dasarnya, struktur prosedur sama dengan struktur algoritma. Setiap prosedur mempunyai nama unik dan sebaiknya nama prosedur diawali dengan keta kerja. Notasi algoritmik yang digunakan untuk mendefinisikan struktur prosedur (tanpa parameter) adalah: Procedure Nama_Prosedur {Spesifikasi prosedur, berisi penjelasan tentang yang dilakukan prosedur} {K.awal : keadaan sebelum prosedur dilaksanakan} {K.akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan} DESKRIPSI {badan prosedur berisi kumpulan instruksi}.

(38) Contoh: Buat prosedur untuk mencetak string “GANESHA” ke piranti keluaran : Procedure Cetak_ GANESHA {mencetak string “GANESHA” ke piranti keluaran} {K.awal : sembarang} {K.akhir : string “GANESHA” tercetak} DEKLARASI {tidak ada} DESKRIPSI Write(‘GANESHA’) Pemanggilan Prosedur Prosedur bukan program yang berdiri sendiri, ia tidak dapat dieksekusi secara langsung tetapi harus diakses dengan cara memanggil namanya dari program pemanggil (program utama atau modul program lain). Didalam program pemanggil, kita harus mendeklarasikan purwarupa (prototype) prosedur di dalam bagian DEKLARASI. Purwarupa prosedur hanya berisi bagian header prosedur. Tujuan pendeklarasian purwarupa prosedur adalah supaya program pemanggil mengenal nama prosedur tersebut serta cara mengaksesnya. Contoh : Program utama untuk memanggil prosedur Cetak_ GANESHA Algoritma Hallo {Program utama untuk mencetak string “GANESHA”} DEKLARASI Procedure Cetak_ GANESHA {mencetak string “GANESHA” ke piranti keluaran} DESKRIPSI Cetak_ GANESHA {panggil prosedur Cetak_ GANESHA } Nama Global dan Nama Lokal Nama-nama (tetapan, peubah, tipe, dll) yang dideklarasikan di dalam bagian DEKLARASI prosedur hanya dikenal di dalam nama prosedur yang bersangkutan yang disebut bersifat lokal. Sedangkan nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat global. Nama yang dideklarasikan di dalam prosedur dan di dalam program utama mungkin.

(39) saja sama, namun sifat lokal dan globalnya tetap tidak berubah. Nama peubah yang dideklarasikan di dalam program utama dan juga dideklarasikan di dalam prosedur, maka di dalam prosedur nama tersebut adalah peubah lokal, dan di luar prosedur ia berlaku sebagai peubah global. Parameter Penggunaan parameter menawarkan mekanisme pertukaran informasi, tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri. Notasi algoritmik yang digunakan untuk mendefinisikan struktur prosedur dengan parameter adalah: Procedure Nama_Prosedur(daftar parameter format) {spesifikasi prosedur, berisi penjelasan tentang yang dilakukan oleh prosedur ini} {K.awal : keadaan sebelum prosedur dilaksanakan} {K.akhir : keadaan setelah prosedur dilaksanakan } DEKLARASI {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan} DESKRIPSI {badan prosedur berisi kumpulan instruksi} Aturan penting yang harus diamati adalah : •. Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi prosedurnya.. •. Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang bersesuaian.. •. Tiap parameter aktual harus diekspresikan dalam cara yang taat asas dengan parameter formal yang bersesuaian, bergantung pada jenis parameter formal. Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan dalam prosedur yaitu :.

(40) . Parameter Masukan Pada parameter masukan, nilai (value) parameter aktual akan diisikan (assign) ke. dalam parameter formal yang bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual, Karena yang dipentingkan adalah nilainya, maka nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian. . Parameter Keluaran Bila prosedur menghasilkan satu atau lebih nilai yang digunakan oleh program. pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur yang mengandung parameter keluaran dipanggil, maka nama parameter aktual didalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur. Parameter keluaran dideklarasikan di dalam header prosedur, sebagaimana paramater masukan, tetapi parameter keluaran harus dideklarasikan dengan kata kunci output seperti contoh berikut : Procedure Satu(input x : integer, output y : real) {contoh prosedur dengan parameter formal berjenis parameter masukan} {K.awal : nilai x sudah terdefinisi} {K.akhir : di dalam prosedur, nilai x ditambah satu, lalu hasilnya dikalikan 10, disimpan ke dalam y} DEKLARASI {tidak ada} DESKRIPSI x←x+1 y ←x * 10 . Parameter Masukan/Keluaran Pada kebanyakan aplikasi, informasi harus dikirim dalam dua arah, sehingga prosedur. juga harus dapat mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil.. Untuk. menghadapi. hal. itulah. kita. bisa. menggunakan. parameter. masukan/keluaran. Dengan menggunakan parameter masukan/keluaran, bila parameter aktual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilannya juga berubah..

(41) Deklarasi parameter masukan/keluaran di dalam header prosedur, tetapi harus dideklarasikan dengan kata kunci input/output. Perhatikan contoh dibawah ini: Procedure Dua(input/output x,y : integer) {menambahkan nilai x dengan 2 dan mengurangi nilai y dengan 2} {K.awal : x dan y sudah berisi nilai} {K.akhir : nilai x bertambah2, nilai y berkurang 2, lalu dicetak ke piranti keluaran} DEKLARASI {tidak ada} DESKRIPSI x←x+3 y←y–2 write(‘nilai x dan y diakhir prosedur dua : ‘) write(‘ x = ‘, x) write(‘ y = ‘, y). Algoritma ABC {program yang memperlihatkan efek penggunaan parameter masukan} DEKLARASI a, b : integer Procedure Dua(input/output x,y : integer) {menambahkan nilai x dengan 2 dan mengurangi nilai y dg 2} DESKRIPSI a ← 15 b ←10 write(‘nilai a dan b sebelum pemanggilan : ‘) write(‘ a = ‘, a) write(‘ b = ‘, b) Dua write(‘nilai a dan b sesudah pemanggilan : ‘) write(‘ a = ‘, a).

(42) write(‘ b = ‘, b) Hasil dari algoritma tersebut adalah : nilai a dan b sebelum pemanggilan : a = 15 b = 10 nilai x dan y diakhir prosedur tiga: a = 17 b=8 nilai a dan b sesudah pemanggilan : a = 17 b=8 2.. FUNGSI Fungsi adalah modul program yang memberikan/mengambalikan sebuah nilai yang. bertipe sederhana (integer, real, boolean, dan string). Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal. Jenis parameter pada fungsi adalah paramater masukan. Jenis parameter masukan pada fungsi disebabkan oleh kenyataan bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai. Mendefinisikan Fungsi Struktur fungsi sama saja dengan struktur algoritma biasanya berikut ini : Function Nama_Fungsi(input daftar parameter format) ← tipe hasil {spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi ini} DEKLARASI {semua nama yang dipakai dalam algoritma fungsi dideklarasikan disini. Nama yang dideklarasikan di dalam DEKLARASI lokal hanya dikenal dan dipakai di dalam fungsi ini saja} DESKRIPSI {badan fungsi berisi kumpulan instruksi-instruksi untuk menghasilkan nilai yang akan dikembalikan oleh fungsi}, Return hasil {pengembalian nilai yang dihasilkan fungsi}.

(43) Pemanggilan Fungsi Fungsi diakses dengan cara memanggil namanya dari program pemanggil diikuti dengan daftar parameter aktual, karena fungsi menghasilkan nilai maka nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi, atau nilai yang diberikan oleh fungsi langsung dimanipulasi. Parameter aktual dapat berupa tetapan, nama tetapan, atau nama peubah asalkan sudah terdefinisi tipe dan harganya. Contoh : Buatkan fungsi untuk menentukan apakah sebuah bilangan bulat merupakan bilangan genap atau ganjil ? Function Genap(input n : integer) ← boolean {mengembalikan niai true jika n adalah bilangan genap dan false jika sebaliknya} DEKLARASI DESKRIPSI return (n mod 2 = 0) Program Pemanggil : Algoritma Genap_Ganjil {program utama menentukan apakah sebulah bilangan genap atau ganjil ?} DEKLARASI bil : integer Function Genap(input n : integer) � boolean {mengembalikan niai true jika n adalah bilangan genap dan false jika sebaliknya} DESKRIPSI read(bil) if Genap (bil) then write(n, ‘ adalah bilangan genap’) else write(n, ‘ adalah bilangan ganjil’) endif.

(44) Contoh lain: Diketahui bahwa s = ln r, sehingga r = eS , Tulislah ekspresi aritmetika tersebut dalam bentuk function, yang didefinisikan sebagai berikut :. es =. s 0 s1 s 2 s 3 sk + + + + ....... + 0! 1! 2! 3! k!. Hampiri nilai e-w dengan deret sampai 15 buah suku ( k = 15 ). Penghampiran nilai exp (x) membutuhkan perhitungan pangkat pada bagian pembilang dan faktorial pada bagian penyebut. Tiap suku dapat dinyatakan dalam bentuk Jadi, jumlah deret adalah N ← N +. sr , r = 0, 1, 2, …., n r!. sr , yang dalam hal ini: r!. N diinisialisasi dengan 0 sr dihitung dengan fungsi Pangkat r! dihitung dengan fungsi Faktorial function Pangkat(input a : real, input n: integer) ← real { Mengembalikan nilai perpangkatan sr } DEKLARASI P : real i : integer ALGORITMA P←1 for i ← 1 to n do p←p*a endfor return p function Fak(input a : real, input n: integer) ← integer { Mengembalikan nilai r! } DEKLARASI i,f : integer ALGORITMA f←1 for i ← 1 to n do f←f*i endfor return f.

(45) function Exp(input x : real) ← real { Mengembalikan nilai exp(x) } DEKLARASI const n : integer = 10 s : real r : integer function Pangkat(input a : real, input n: integer) ← real { Mengembalikan nilai perpangkatan sr } function Exp(input x : real) ← real { Mengembalikan nilai exp(x) } ALGORITMA N←0 for r ← 0 to n do N ← N + Pangkat (s,r)/Fak (r) endfor return N Buatlah algoritma yang meniru mekanisme pembacaan sandi-lewat (password) untuk masuk ke sebuah sistem (ATM, server, reaktor nuklir, dsb). Apabila sandi-lewat yang dibaca salah, maka pembacaan sandi-lewat hanya boleh diulang maksimum 3 kali. Sandi lewat yang benar disimpan di dalam algoritma sebagai konstanta. PROGRAM PemeriksaanKebenaranSandiLewat { Memeriksa kebenaran sandi-lewat. sandi-lewat dibaca di piranti keluar. Pemasukan sandilewat dapat diulang lagi sampai maksimal 3 kali } DEKLARASI SandiLewat : string Sah : Boolean i : integer function Valid(input p : string) ← Boolean { true jika password p benar, atau false jika tidak } ALGORITMA i←1 sah ← Boolean repeat read(SandiLewat) if Valid(SandiLewat) then sah ← true else i←i+1 endif until (sah) or ( i>3 ) if not sah then write ( ‘sandi lewat salah’) endif.

(46) PEMROSESAN TEKS Tiap-tiap data dalam runtunan diakses satu per satu dari awal sampai akhir. Diakses artinya data tersebut dicapai lalu diproses bergantung pada proses yang diinginkan. Model pengaksesan data yang tersusun secara beruntun dinamakan model pengaksesan beruntun. SUSUNAN TEKS Arsip teks untuk selanjutnya kita sebut saja teks adalah arsip yang terdiri dari deretan karakter. Untaian karakter itu dapat membentuk sebuah kata. Yang dimaksud dengan kata adalah kelompok karakter yang dipidahkan dengan kelompok lain dengan satu atau lebih spasi. Dalam meninjau model pengaksesan beruntun pada teks, kita tidak memandang sebuah teks disusun oleh baris-baris teks tetapi lebih condong menyerupai sebuah pita yang birisi runtunan karakter-karakter. Suatu teks P didefinisikan di dalam bagian deklarasi yaitu: DEKLARASI P : text {P adalah peubah teks} TANDA AKHIR TEKS Pemrosesan teks yang sama adalah proses pembacaan. Karena teks berisi runtunan karakter, maka pembacaan teks adalah membaca karakter demi karakter secara beruntun, mulai dari awal teks sampai akhir teks. Akhir teks ditandai dengan sebuah karakter khusus (kita definisikan karakter “.”), bila pembacaan teks bertemu dengan titik maka proses pembacaan teks dihentikan. DEFINISI TEKS KOSONG Pemrosesan teks selalu mempertimbangkan keadaan awal teks, yaitu kosong atau tidak kosong. Sebuah teks mungkin saja kosong. Sebuah arsip yang hanya berisi spasi tidak dapat disebut kosong, karena kita telah membuat perjanjian bahwa sembarang tekas harus diakhiri dengan karakter titik, maka teks kosong adalah teks yang hanya berisi karakter titik. PEMBACAAN TEKS Pembacaan teks dimulai dari awal teks, dengan mengaikan ada sebuah pointer yang menunjuk ke karakter yang akan dibaca. Setiap kali karakter yang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pinter dinyatakan di dalam peubah C. Nama peubah C didefinisikan di dalam bagian DEKLARASI program utama, sehingga ia dikenal di seluruh bagian algoritma termasuk prosedur dan fungsi yang dipakai oleh algoritma..

(47) DEKLARASI C : char {karakter yang sedang ditunjuk oleh pointer baca} Didefinisikan Reset_Teks adalah prosedur universal untuk teks. Reset_Teks menyebabkan pointer akan menunjuk pada karakter pertama di teks. Jika teks kosong, pointer menunjuk karakter titik. Procedure Reset_Teks {Menyiapkan teks pada posisi awal} {K.awal : sembarang} {K.akhir : pointer menunjuk pada karakter pertama di dalam teks. Akibat pemanggilan prosedur ini, pointer menunjuk ke karakter pertama teks. Karakter yang ditunjuk mungkin ‘.’}. Notasi yang digunakan untuk membaca karakter dari teks P adalah : Read(P;C) {membaca karakter yang ditunjuk oleh pointer baca dari teks P. Karakter yang dibaca disimpan di dalam pubah C} Contoh : Menghitung banyaknya karakter di dalam pita (tidak termasuk karakter ‘.’). Buatkan prosedur untuk persoalan diatas ! Solusi : Procedure Hitung_Banyak_Karakter(output n : integer) {Menghitung banyaknya karakter di dalam teks} {K.awal : sembarang} {K.akhir : n berisi banyaknya karakter di dalam teks } DEKLARASI {tidak ada} DESKRIPSI n←0 Reset_Teks Read(P;C) While C ≠ ‘.’ do n←n+1 Read(P,C) {baca karakter berikutnya} Endwhile {C = ‘.’}.

(48) L A R I K (ARRAY) Sebuah peubah atau tetapan hanya menyimpan sebuah nilai dari tipe tertentu. Ia tidak dapat menyimpan beberapa buah nilai yang bertipe sejenis. Dalam kegiatan pemrograman, sekumpulan data yang bertipe sama perlu disimpan sementara di dalam memori komputer untuk sewaktu-waktu dimanipulasi. Bila kumpulan data disimpan secara beruntun di dalam memori, maka tiap elemen data dapat diacu dengan menggunakan indeks. Indeks menyatakan posisi data relative di dalam kumpulannya struktur penyimpanan data seperti itu dinamakan dengan larik (array), atau sering disebut juga tabel, vektor atau peubah majemuk. DEFINISI LARIK Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui endeksnya. Indeks larik haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter. Misalnya larik yang bernama A dengan delapan buah elemen dapat dibayangkan secara lojik sebagai sekumpulan kota yang terurut (vertika atau horizontal). Tiap kotak pada larik tersebut diberi indeks integer 1, 2, 3, .... 8. Tiap elemen larik ditulis dengan notasi : A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8] Angka didalam kurung siku menyatakan indeks larik. Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik bertipe sama, maka nilai yang disimpan oleh setiap elemen juga harus bertipe sama. Bentuk umum : Nama _larik:array[tipe indeks] of tipe larik Ciri-ciri Array : -. setiap elemen data array diacu melalui indeksnya. -. karena elemen disimpan secara berurutan , indek array harus lah suatu tipe yang mempunyai keterurutan (ada suksesor dan predecessor). Contoh bertipe data : integer, karakter atau tipe data enumerasi. Jika indeks integer maka keterturutan indeks sesuai dengan urutan integer (0,1,2,3,4,5,6,..) Jika indeks Karakter maka keterturutan indeks sesuai dengan urutan karakter (a,b,c,d,e ….)..

(49) contoh :. x:array[1..11] of integer; var gaji:array[5..10] of char;. 20 1. 11 2. 12 3. 11 4. 1 5. 1 6. m 5. a 6. u 7. $ 8. * 9. 1 10. 0 7. 3 8. 2 9. 6 10. 9 11. Elemen array Indeks array. MENDEFINISIKAN LARIK DALAM DEKLARASI Larik adalah struktur data yang statik, artinya jumlah elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah, ditambah, atau dikurangi selama pelaksanaan program. Mendefinisikan larik di dalam bagian DEKLARASI berarti : •. Mendefinisikan banyaknya elemen larik. •. Mendefinisikan tipe elemen larik. Mendefinisikan banyaknya elemen larik berarti memesan sejumlah tempat di memori. Memori mengalokasikan sejumlah lokasi memori sebanyak elemen larik yang bersangkutan. Tipe elemen larik dapat bertipe sederhana (integer, real, char, boolean, string), tipe terstruktur (tipe bentukan seperti record) atau bahkan bertipe larik. Contoh mendefinisikan larik di dalam bagian deklarasi : . Sebagai Peubah. DEKLARASI L : array[1..50] of integer Nama_mhs : array[‘a’..’j’] of string Nilai_ujian : array[0..74] of real . Sebagai Tipe Baru. DEKLARASI Type TabInt : array[1..100] of integer P : TabInt . Mendefinisikan Ukuran Maksimum Elemen Larik Sebagai Sebuah Tetapan.

(50) DEKLARASI Const Nmaks = 1000 Type TabInt : array[1..Nmaks] of integer P : TabInt DEKLARASI Harga_barang : array[1..N] of real DEKLARASI Const N = 15 Harga_barang : array[1..N] of real CARA MENGACU ELEMEN LARIK Cara mengacu elemen larik diacu melalui indeksnya. Nilai indeks harus terdefinisi. Dengan mengacu pada larik yang sudah didefinisikan sebelum ini, maka contoh-contoh cara mengacu elemen larik adalah : L[4] {mengacu elemen keempat dari larik L} Nama_mhs[‘b’] {mengacu elemen kedua dari larik nama_mhs} P[k] {mengacu elemen ke k dari larik P, asalkan nilai k sudah terdefinisi} Harga_barang[i+1] {mengacu elemen ke i dari larik harga_kompuetr, asalkan nilai I sudah terdefinisi} Contoh memanipulasi atau menggunakan elemen larik : L[4] ←10 {mengisi elemen ke 4 dari larik L dengan nilai 10} Read(P[k]) {membaca elemen ke k dari larik P} If harga_barang[t] < 10000 then Write(‘harga’ murah’) Else PEMROSESAN LARIK Elemen larik tersusun secara beruntun, karena itu elemennya diproses secara beruntun melalui indeks yang terurut, asalkan indeks tersebut sudah terdefinisi. Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik. Skema umum algoritma memproses larik disebut juga skema mengunjungi (transversal) larik, berikut : Procedure Skema_Umum_Pemrosesan_Larik.

(51) {Memproses setiap elemen larik secara beruntun, mulai dari indeks terkecil sampai indeks terbesar} DEKLARASI Const Nmaks = 100 {banyak elemen larik} Type larik : array[1..Nmaks] of integer A : larik K : integer {indeks larik} DESKRIPSI for i ← 1 to N do proses a[i] Endfor Proses adalah aksi yang dilakukan terhadap elemen larik. Proses dapat berupa aksi pengisian nilai, pembacaan, penulisan atau manipulasi lainnya. Menginisialisasi Larik Menginisialisasi larik adalah memberikan harga awal untuk seluruh elemen larik. Inisialisasi kadang-kadang diperlukan misalnya mengosongkan elemen larik sebelum dipakai untuk proses tertentu. Mengosongkan larik bertipe numerik dapat berupa pengisian elemen larik dengan nol, sedangkan pada larik karakter, mengosongkan larik berarti mengisi elemen larik dengan spasi atau karakter kosong. Nol atau spasi bukanlah satu-satunya nilai yang dipakai untuk inisialisasi. Contoh : a. menginisialisasi elemen larik A[1], A[2], ...A[N] dengan nilai nol Procedure InisialisasiA(output A : larik) {menginisialisasi setiap elemen larik A dengan nol} {K.awal : larik A belum terdefinisi nilai elemen-elemennya} {K.akhir : seluruh elemen larik A bernilai nol} DEKLARASI K : integer {pencatat indeks larik} DESKRIPSI for K ← 1 to Nmaks do A[K] ← 0 Endfor.

(52) b. menginisialisasi elemen larik A[1], A[2], ...A[N] masing-masing dengan nilai 1, 2, ..N Procedure inisialisasiB(output A : larik) {menginisialisasi setiap elemen larik A[K] dengan nilai k = 1 , 2 ...N} {K.awal : larik A belum terdefinisi nilai elemen-elemennya} {K.akhir : setelah inisialisasi A[1]=1, A[2]=2,..., A[N]=N } DEKLARASI K : integer {pencatat indeks larik} DESKRIPSI for K ← 1 to Nmaks do A[K] ← K Endfor Mengisi Elemen Larik dari Piranti Masukan Selain dengan pengisian nilai, elemen larik dapat diisi nilai yang dibaca dari piranti masukan dengan perintah read seperti contoh berikut : Procedure Baca_Larik(output A : larik) {mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan} {K.awal : larik A belum terdefinisi nilai elemen-elemennya, N sudah berisi jumlah elemen efektif} {K.akhir : setelah pembacaan, sebanyak N buah elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan} DEKLARASI K : integer {pencatat indeks larik} DESKRIPSI for K ← 1 to N do read(A[K]) Endfor Menulis Elemen Larik ke Piranti Keluaran Menulis elemen larik dapat dicetak ke piranti keluaran dengan perintah print, seperti pada contoh prosedur berikut : Procedure Tulis_larik(input A : larik, input N : integer).

(53) {mencetak elelemen larik A[1..N] ke piranti keluaran} {K.awal : N sudah terdefinisi ukuran larik yang terpakai. Elemen larik A[1..N] sudah terdefinisi nilai elemen-elemennya} {K.akhir : diakhir prosedur, sebanyak N buah elemen larik A tersetak nilainya ke piranti keluaran} DEKLARASI K : integer {pencatat indeks larik} DESKRIPSI for K ← 1 to N do write(A[K]) Endfor LARIK BERTIPE TERSTRUKTUR Contoh : TabMhs adalah sebuah larik yang elemennya menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang diambil dan nilai mata kuliah. Maka algoritmanya sebagai berikut : Algoritma Baca_Larik_Mahasiswa {mengisi elemen larik mahasiswa dengan data yang dibaca dari piranti masukan} DEKLARASI Const Nmaks = 100 Type mahasiswa : record <NIM : integer NamaMhs : string KodeMK : string Nilai : char > TabMhs : array[1..Nmaks] of mahasiswa K : integer N : integer DESKRIPSI Read(N) for K ← 1 to N do.

(54) read(TabMhs[K].NIM) read(TabMhs[K].NamaMhs) read(TabMhs[K].KodeMK) read(TabMhs[K].Nilai) Endfor. MATRIKS Definisi dan Notasi Matriks Untuk deklarasi Array 2 dimensi: nama array=array[tipeindeks1,tipeindeks2] of tipe array contoh : A : array[1..3,1..2] of byte; Salah satu implemantasi array 2 dimensi ini digunakan untuk membuat program MATRIK. Beberapa pengertian tentang matriks : 1. Matriks adalah himpunan skalar (bilangan riil atau kompleks) yang disusun atau dijajarkan secara empat persegi panjang menurut baris-baris dan kolom-kolom. 2. Matriks adalah jajaran elemen (berupa bilangan) berbentuk empat persegi panjang. 3. Matriks adalah suatu himpunan kuantitas-kuantitas (yang disebut elemen), disusun dalam bentuk persegi panjang yang memuat baris-baris dan kolom-kolom. Notasi yang digunakan: Matrix A berukuran (ordo) m x n.  a11  a A =  21 :  a  m1. ..... a1n   .... a 2 n  : :   .... a mn . a12 a 22 : am2. Contoh Matrik dengan ordo 2 x 2. A=. 1. 5. 2. 4. Matrik A diatas adalah matrik dengan ordo 2x2 sehingga matrik tersebut memiliki elemen : A[1,1] = 1, A[1,2] = 5, A[2,1]= 2 dan A[2,2]=4. Untuk membuat deklarasi tipe array dari kasus diatas (dalam Bahasa Pascal) : Var A : array [1..2,1..2] of integer;.

(55) Untuk mengisi elemen matrik A diatas : A[1,1] := 1; A[1,2] := 5; A[2,1] := 2; A[2,2] := 4; Jenis-jenis Matriks: (i) MATRIKS NOL, adalah matriks yang semua elemennya nol. Sifat-sifat :  A+0=A, jika ukuran matriks A = ukuran matriks 0  A*0=0, begitu juga 0*A=0. (ii) MATRIKS BUJURSANGKAR, adalah matriks yang jumlah baris dan jumlah kolomnya sama. Barisan elemen a11, a22, a33, ….ann disebut diagonal utama dari matriks bujursangkar A tersebut. (iii) MATRIKS DIAGONAL, adalah matriks bujursangkar yang semua elemen diluar diagonal utamanya nol..  2 0 0    0 5 0  0 0 3  . iv) MATRIKS SATUAN/IDENTITY, adalah matriks diagonal yang semua elemen diagonalnya adalah 1.. 1 0 0    0 1 0 0 0 1  . Menulis Matriks Menulis matriks artinya mencetak elemen-elemen matriks ke piranti keluaran (misalnya ke layar peraga/printer) dengan asumsi bahwa elemen matriks sudah terdefinisi nilainya. Procedure TulisMatriks (input M : MatriksInt, input Nbar, Nkol : integer) { Mencetak elemen matriks M[ 1…Nbar, 1…Nkol ] ke piranti keluaran. } { K. Awal : elemen-elemen matriks sudah terdefinisi harganya } { K. Akhir : seluruh elemen matriks tertulis di piranti keluaran } DEKLARASI i : integer (indeks baris) j : integer (indeks kolom) ALGORITMA for i ← 1 to Nbar do for j ← 1 to Nkol do write (M[i,j]) endfor endfor.

(56) Penjumlahan dua Matriks Syarat : Dua matriks berordo sama dapat dijumlahkan. Contoh: a b   e   +  c d  g. f  a+e b+ f  =  h   c + g d + h .  1 6   3 1  4 7    +   =    3 5   4 1  7 6  Contoh algoritmanya: Buatlah procedure pengurangan dua buah matriks M dan N yang menghasilkan matriks L, hanya dapat dilakukan bila ukuran matriks M dan N sama dan kedua matriks tersebut telah terdefinisi nilai-nilainya. Matriks L akan berukuran sama dengan matriks M dan N Pengurangan tersebut didefinisikan sebagai berikut : L[i,j] = M[i,j] + N[i,j] , untuk semua i dan j Procedure JumlahDuaMatriks (input A, B : MatriksInt, input Nbar, Nkol : integer) output: C : Matriks { Menjumlahkan matriks A dan B, yaitu A + B = C } { K. Awal : elemen-elemen matriks sudah terdefinisi elemen-elemenya } { K. Akhir : seluruh elemen matriks C tertulis di piranti keluaran } DEKLARASI i : integer (indeks baris) j : integer (indeks kolom) ALGORITMA for i ← 1 to Nbar do for j ← 1 to Nkol do C [ i , j ] ← A[ i , j ] + B[ i , j ] endfor endfor.

Gambar

Ilustrasi Pencarian Bagi Dua.
Ilustrasi Algoritma Selection Sort

Referensi

Dokumen terkait

Algoritma Bubble_Sort memanggil dua prosedur yaitu prosedur InputData(dengan parameter jml_data sebagai input untuk parameter input n dan TabInt sebagai output

Modul Algoritma dan Pemrograman Page 64 Algoritma Sequential_Seach2 memanggil dua prosedur yaitu prosedur InputData(dengan parameter jml_data sebagai input untuk

dapat ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi atau nilai yang dikembalikan oleh fungsi dapat langsung dimanipulasi. Parameter aktual dapat

Dalam penerapannya, fungsi hanya menggunakan parameter masukan, sementara untuk fungsi yang tidak menghasilkan nilai (prosedur) dapat menggunakan kedua tipe

Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur dengan

Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur dengan

Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam

 Seperti halnya pada parameter keluaran, bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan (substitute) nama