• Tidak ada hasil yang ditemukan

Materi | Catatan Kuliah

N/A
N/A
Protected

Academic year: 2017

Membagikan "Materi | Catatan Kuliah"

Copied!
116
0
0

Teks penuh

(1)

Pengantar Algoritma & Pemrograman Komputer

Program Komputer

Program komputer adalah suatu himpunan dari instruksi yang memberitahukan kepada komputer apa yang harus dilakukan. Instruksi tersebut mungkin memberitahukan kepada komputer untuk menambah, membandingkan, dan membuat keputusan berdasarkan hasilnya.

Bahasa Komputer

Agar suatu komputer dapat mengenali instruksi yang anda berikan, instruksi tersebut perlu ditulis dalam bahasa yang dimengerti oleh komputer.

HIGH-LEVEL dan LOW-LEVEL

Pada dasarnya orang mengolongkan Bahasa komputer menjadi dua golongan besar yaitu High-Level dan Low-Level.

Bahasa pemrograman seperti BASIC, PASCAL, FORTRAN dan C, memungkinkan programmer untuk menulis program yang tidak begitu tergantung pada jenis komputer. Berdasarkan hal inilah bahasa-bahasa ini dapat dikategorikan sebagai high-level karena lebih dekat kepada manusia.

Sebaliknya, bahasa assembly dikategorikan sebagai low-level karena mereka sangat dekat kepada hardware.

Keuntungan utama dari bahwa high-level dibandingkan dengan low level adalah lebih mudah dibaca, ditulis, dan ditangani. Selanjutnya program yang ditulis dengan bahasa high-level harus diterjemahkan menjadi bahasa mesin melalui suatu compiler atau interpreter.

BAHASA MESIN

(2)

Semua bahasa mesin adalah suatu bahasa numerik, karena memori yang berada didalam komputer hanya dapat menyimpan data numerik. Walaupun anda bekerja dengan text [misalnya melihat halaman web] komputer bekerja dengan bilangan binary. Oleh karena itu menulis dalam bahasa mesin sangat sulit dan membosankan, serta sering terjadi kesalahan

Setiap keluarga CPU yang berbeda memiliki bahasa mesin yang berbeda pula. Bahasa mesin untuk Intel Pentium adalah berbeda sama sekali dengan bahasa mesin yang digunakan pada Power PC ataupun Sun SPARC.

ASSEMBLY LANGUAGE

Bahasa Assembly merupakan suatu lompatan yang besar dari bahasa mesin, tetapi

(3)

Berikut ini adalah contoh bahasa assembly dengan bahasa mesin yang berasosiasi disampingnya.

Beberapa hal yang perlu anda ingat tentang bahasa assembly.

1. Walaupun programmer menjadi lebih produktif, tetapi mereka tetap harus menulis bahasa assembly untuk setiap perintah bahasa mesin.

• Komputer tidak mengerti bahasa assembly sama sekali, hanya bahasa mesin. Setelah suatu program assembly dibuat, programmer harus mengkonversi program tersebut menjadi bahasa mesin dengan suatu program yang dikenal sebagai

(4)

BAHASA TINGKAT TINGGI

Orang segera menyadari bahwa komputer dapat menterjemahkan bahasa assembly mejadi kode mesin, dan mereka mudah memikirkan bagaimana jika komputer dapat diprogram dengan bahasa yang lebih "alamiah" [lebih alamiah untuk manusia], inilah awal dari bahasa generasi ketiga yaitu High Level Languages.

INTERPRETER dan COMPILER

Ketika anda menggunakan suatu interpreter, ia akan membaca perintah source code baris perbaris, kemudian menterjemahkannya menjadi perintah mesin yang bersesuaian (kode mesin) dan menjalankannya seketika. Kode mesin ini tidak disimpan; sehingga ketika anda mencoba menjalankan program yang sama pada kesempatan berikutnya, anda membutuhkan source code dan interpreter untuk menjalankannya.

(5)

KOMPUTER DAN ALGORITMA

Untuk membuat komputer melakukan sesuatu, anda perlu untuk menulis program komputer. Dalam menulis suatu program komputer, kita perlu memberitahukan kepada komputer, langkah-langkah persis apa yang harus ia lakukan. Ketika komputer menjalankan program tersebut, ia akan melakukan setiap langkah secara mesin untuk mencapai tujuan akhir.

Ketika anda memberitahu kepada komputer apa yang harus dilakukan, anda perlu memilih bagaimana hal tersebut dilakukan. Dari sinilah Algoritma Komputer muncul. Algoritma adalah teknik dasar untuk menyelesaikan suatu pekerjaan. Perhatikan contoh berikut untuk membantu pengertian anda tentang konsep dari algoritma.

Katakanlah misalnya anda mempunyai teman yang baru tiba di airport, dan teman anda ingin berangkat dari airport ke rumah anda. Berikut ini adalah empat algoritma yang berbeda yang mungkin dilakukan teman anda:

Algoritma taxi:

Pergi ke pemberhentian taxi. Masuk ke taxi.

Berikan alamat rumah anda.

Algoritma Telepon untuk dijemput:

Ketempat pemberhentian, telepon ke handphone anda. Menunggu saja ditempat pengambilan bagasi.

Algoritma Bus:

Keluar dari tempat pengambilan bagasi, naik bus nomor 70. Turun dan naik bus nomor 14 pada jalan utama.

Turun di jalan pada jalan AB.

Jalan kaki dua blok arah utara ke rumah anda.

Ketiga algoritma diatas memiliki tujuan yang sama, tetapi masing-masing melakukannya dengan cara yang berbeda. Masing-masing algoritma diatas juga menghabiskan waktu dan biaya yang berbeda. Naik taxi, adalah contoh yang paling cepat, tetapi paling mahal. Naik bus mungkin adalah paling hemat, tetapi lambat. Tentu saja anda perlu memilih algortima sesuai dengan situasi dan kondisi.

Dalam pemrograman komputer, juga terdapat banyak cara algoritma yang berbeda. Masing-masing algoritma memiliki keuntungan dan kerugian untuk situasi yang berbeda.

Kata algoritma (algorithm) berasal dari nama matematikawan Persia pada abad 9 Abu Abdullah Muhammad bin Musa al-Khwarizmi. Kata aslinya algorism mengacu pada aturan dari melakukan aritmetika menggunakan bilangan Arab dan berkembang menjadi algoritma pada abad 18. Kata ini sekarang berevolusi untuk mencantumkan semua prosedur-prosedur khusus untuk memecahkan masalah atau mengerjakan tugas

(6)

banyak orang sebagai programmer pertama didunia. Bagaimanapun, sejak Charles Babbage tidak pernah menyelesaikan analytical engine-nya, dan algoritma tersebut tidak pernah diimplementasi padanya.

Tahapan Pengembangan Program

Permasalahan dalam pembuatan program yang besar tentu saja berbeda dengan program yang kecil, pada program yang kecil umumnya dikembangkan untuk sekali pakai dan meliputi suatu detail yang kecil, sedangkan program yang besar umumnya dikembangkan atas permintaan dan dipakai oleh orang lain. Oleh karena itu program tersebut harus ditulis dengan lebih hati-hati untuk mencegah segala bentuk pemakaian yang menyimpang, serta harus disertai dengan dokumentasi dan petunjuk pemakaian.

Hal lain yang harus dinyakini adalah keterbatasan memori manusia, kebanyakan orang dengan mudah dapat memahami program dibawah 10 baris dalam beberapa detik, dan mereka tetap dapat mengingatnya pada saat perubahan dibutuhkan. Pada program yang besar, programmer harus memiliki semua informasi yang tertulis untuk memahami atau mengubah program.

Oleh karena itu, penulisan program yang besar adalah tidak mudah, bahkan untuk programmer yang profesional. Kita sering mendengar bahwa berbagai program besar memiliki banyak bug maupun menyebabkan crash ketika dioperasikan pada kondisi tertentu dan beberapa lama setelah dijalankan.

Adalah tidak mungkin untuk menghasilkan program yang bebas dari kesalahan, kita sering tidak mengetahui dengan persis. Tetapi banyak cara yang dapat kita lakukan untuk menghasilkan program dengan bug yang lebih sedikit. Salah satunya adalah memahami langkah-langkah pengembangan suatu program yang besar, langkah-langkah ini dikenal sebagai Software Development Life Cycle.

(7)

Gambar : Tahap pengembangan program

1. Batasan Masalah Merencanakan sistim dan spesifikasi program: Siapa yang akan menggunakan program dan untuk apa? dengan cara:

a. Menentukan tujuan dan hasil yang akan dicapai b. Menentukan hal-hal yang diperlukan oleh sistim c. 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).

(8)

How the customers explained it

How the Project Leader understood it

How the Analyst designed it

How the Programmer wrote it

How the Business Consultant

described it

How the project was documented

What operations installed

How the customer was billed

(9)

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:

1. Bagian kepala algoritma, 2. Bagian deklarasi, dan 3. 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 }

DEKLARASI { Semua nama yang digunakan, meliputi nama-nama: tipe, konstanta, variabel. Juga nama sub-program dinyatakan 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 }

(10)

{ Mempertukankan 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 ingkaran. Tampilkan luas lingkaran. }

baca(R);

jika R <= 0 then tulis("Data salah !") selain itu l_Lingkaran = PHI x R x R; tulis(l_Lingkaran);

Flowchart

Flowchart adalah alat untuk menganalisa proses. Hal tersebut memungkinkan anda untuk memecah proses menjadi kejadian-kejadian individual atau aktifitas untuk menunjukan secara singkat hubungan diantaranya. Konstruksi flowchart memungkinkan pengertian yang lebih baik kepada proses, dan pengertian yang lebih baik terhadap proses akan membawa kepada perbaikan dan pengembangan.

Berbagai jenis flowchart telah dikembangkan pada berbagai bidang seperti pada sistem produksi, maupun pada sistem design dan pemrograman.

Diagram Alir (Flowchart) Merupakan bentuk grafis/visual dari algoritma Bentuk umum dari simbol-simbol dalam diagram alir:

Simbol untuk mulai (start) atau akhir (end) program

Simbol untuk pembacaan (read) data atau penulisan hasil (write) pada layar

Simbol untuk suatu proses terhadap data pada program

Simbol untuk suatu pernyataan pilihan (optional) pada program.

Simbol untuk penghubung antar aktifitas.

Konektor, Simbol untuk memutus aktivitas karena keterbatasan media kertas.

(11)

Komentar

Contoh pemakaian flowchart:

Sequential (berurutan)

perhitungan volume dan luas permukaan silinder

(12)
(13)
(14)

Flowchart dahulu digunakan di computer science untuk mengambarkan algoritma, dimana mereka merupakan blok-blok instruksi untuk suatu rangkaian operasi. Dewasa ini trend kedepan adalah pemakaian pseudocode untuk mengambarkan algoritma. Tetapi

bagaimanapun flowchart lebih visual dan sering digunakan pada saat presentasi.

Pseudocode

Pseudocode adalah cara generik untuk menerangkan suatu algoritma tanpa menggunakan tata cara penulisan bahasa pemrograman tertentu. Sebagaimana namanya, pseudo code — tidak dapat dieksekusi langsung pada komputer, tetapi merupakan model dan harus diubah menjadi kode pemrograman yang sebenarnya, dan ditulis sama detailnya.

Pseudocode, secara alamiah dapat terdiri dari berbagai bentuk, walaupun banyak meminjam tata cara penulisan dari bahasa pemrograman popular (seperti C, Lisp, atau Fortran). Bahasa natural digunakan pada bagian detail yang kurang penting.

Textbook computer science sering menggunakan pseudocode pada contoh sehingga semua programmer dapat memahaminya, walaupun mereka tidak menggunakan bahasa

(15)

BEGIN { mulai } { input } read(R);

{ proses } If R <= 0 then tulis("Data salah !")

(16)

Sejarah dari bahasa pemrograman komputer

Sejak pertama komputer difference engine diciptakan oleh Charles Babbage pada tahun 1822, komputer membutuhkan sejumlah instruksi untuk melakukan suatu tugas tertentu. Instruksi-instruksi ini dikenal sebagai bahasa pemrograman. Bahasa komputer mulanya terdiri dari sejumlah langkah pengkabelan untuk membuat suatu program; hal ini dapat dipahami sebagai suatu rangkaian pengetikan kedalam komputer dan kemudian dijalankan.

Pada awalnya, difference engine-nya Charles Babbage hanya dibuat untuk

menjalankan tugas dengan menggunakan perpindahan gigi roda untuk menjalankan fungsi kalkukasi. Jadi, bentuk awal dari bahasa komputer adalah berupa gerakan secara mekanik, selanjutnya gerakan mekanik tersebut digantikan dengan sinyal listrik ketika pemerintah AS mengembangkan ENIAC pada tahun 1942, tetapi masih banyak mengadopsi prinsip-prinsip dasar dari Babbage's engine yang mana diprogram dengan mengeset switch dan perkabelan pada seluruh sistem pada setiap "program" maupun kalkulasi. Tentu saja ini merupakan pekerjaan yang membosankan.

Pada 1945, John Von Neumann yang bekerja pada Institute for Advanced Study mengemukakan dua konsep yang secara langsung mempengaruhi masa depan dari bahasa pemrograman komputer. Yang pertama dikenal sebagai "shared-program technique" (www.softlord.com). Pada teknik ini dinyatakan bahwa hardware komputer haruslah sederhana dan tidak perlu dilakukan pengkabelan dengan menggunakan tangan untuk setiap program. Sebagai gantinya, instruksi-instruksi yang lebih kompleks harus digunakan untuk mengendalikan perangkat keras yang lebih sederhana, hal ini memungkinkan komputer diprogram ulang dengan cepat.

Konsep yang kedua yang juga sangat penting untuk pengembangan bahasa pemrograman. Von Neumann menyebutnya sebagai "conditional control transfer" (www.softlord.com). Ide ini berkembang menjadi bentuk subrutin, atau blok kode yang kecil yang dapat panggil berdasarkan aturan tertentu, dari pada suatu himpunan tunggal urutan kronologis yang harus dijalankan oleh komputer. Bagian kedua dari ide tersebut menyatakan bahwa kode komputer harus dapat bercabang berdasarkan pernyataan logika seperti IF (ekspresi) THEN, dan perulangan seperti FOR statement. "Conditional control transfer" mengembangkan ide adanya "libraries," yang mana merupakan blok kode yang dapat digunakan berulang kali.

Pada 1949, setelah beberapa tahun Von Neumann bekerja, bahasa Short Code dilahirkan (www.byte.com), yang merupakan bahasa komputer yang pertama untuk peralatan elektronik yang membutuhkan programmer untuk mengubah perintah kedalam 0 dan 1 dengan tangan.

(17)

menyediakan bagi programmer akses tingkat rendah kedalam komputer. Sampai saat ini, bahasa ini terbatas pada hanya terdiri dari perintah IF, DO, dan GOTO, tetapi pada waktu itu, perintah-perintah ini merupakan lompatan besar kearah depan. Type data dasar yang digunakan sampai sekarang ini dimulai dari FORTRAN, hal ini meliputi variabel logika (TRUE atau FALSE), dan bilangan integer, real, serta double-precision.

FORTRAN sangat baik dalam menangani angka-angka, tetapi tidak terlalu baik untuk menangani proses input dan output, yang mana merupakan hal yang penting pada komputasi bisnis. Komputasi bisnis mulai tinggal landas pada 1959, dengan

dikembangkannya COBOL, yang dirancang dari awal sebagai bahasa untuk para pebisnis. Type data yang ada hanya berupa number dan text string. Hal tersebut juga

memungkinkan pengelompokan menjadi array dan record, sehingga data di telusuri dan diorganisasikan dengan lebih baik. Sesuatu hal yang menarik untuk dicatat bahwa suatu program COBOL dibuat menyerupai suatu essay, dengan empat atau lima bagian utama yang membentuk keseluruhan yang tertata dengan baik. Perintah-perintah COBOL sangat menyerupai tata bahasa English, sehingga membuatnya agak mudah dipelajari. Semua ciri-ciri ini dikembangkan agar mudah dipelajari dan mudah diterapkan pada dunia bisnis. Pada 1958, John McCarthy di MIT membuat bahasa LISt Processing (atau LISP)., yang dirancang untuk riset Artificial Intelligence (AI). Karena dirancang untuk fungsi spesialisasi yang tinggi, maka tata cara penulisannya jaring kelihatan sebelum ataupun sesudahnya. Sesuatu perbedaan yang paling nyata dari bahasa ini dengan bahasa lain adalah dasar dan type satu-satunya adalah list, yang ditandai dengan suatu urutan item yang dicakup dengan tanda kurung. Program LISP sendirinya dibuat sebagai suatu

himpunan dari list, sehingga LISP memiliki kemampuan yang khusus untuk memodifikasi dirinya, dan juga dapat berkembang sendiri. Tata cara penulisan LISP dikenal sebagai "Cambridge Polish," sebagaimana dia sangat berbeda dari logika Boolean (Wexelblat, 177) :

x V y - Cambridge Polish, what was used to describe the LISP program OR(x,y) - parenthesized prefix notation, what was used in the LISP program x OR y - standard Boolean logic

LISP masih digunakan sampai sekarang karena spesialiasi yang tinggi dari sifat abstraknya.

Bahasa Algol dibuat oleh suatu komite untuk pemakaian scientific pada tahun 1958. Kontribusi utamanya adalah merupakan akar dari tiga bahasa selanjutnya yaitu Pascal, C, C++, dan Java. Dia juga merupakan bahasa pertama dengan suatu tata bahasa formal, yang dikenal sebagai Backus-Naar Form atau BNF (McGraw-Hill Encyclopedia of Science and Technology, 454). Pada Algol telah diterapkan konsep-konsep baru, seperti rekursif pada function, bahasa berikutnya Algol 68, menjadi bahasa yang membosankan dan sulit digunakan (www.byte.com). Hal ini mengarah kepada adopsi terhadap bahasa yang lebih kecil dan kompak seperti Pascal.

(18)

pengembangannya adalah untuk kebutuhan pengajaran. Pada awalnya bahasa ini

dikembangkan bukan dengan harapan adopsi pemakaian secara luas. Prinsipnya mereka mengembangkannya untuk alat pengajaran pemrograman yang baik seperti kemampuan debug dan perbaikan sistem dan dukungan kepada mikroprosesor komputer yang digunakan pada institusi pendidikan.

Pascal dirancang dengan pendekatan yang sangat teratur (terstruktur), dia mengkombinasikan kemampuan yang terbaik dari bahasa-bahasa saat itu, COBOL, FORTRAN, dan ALGOL. Dalam pengerjaannya banyak perintah-perintah yang tidak teratur dan aneh dihilangkan, sehingga sangat menarik bagi pemakai (Bergin, 100-101). Kombinasi dari kemampuan input/output dan kemampuan matematika yang solid, membuatnya menjadi bahasa yang sukses besar. Pascal juga mengembangkan tipe data "pointer", suatu fasilitas yang sangat bermanfaat pada bahasa yang

mengimplementasikannya. Dia juga menambahkan perintah CASE, yang mana memperbolehkan perintah bercabang seperti suatu pohon pada suatu aturan:

CASE expression OF

possible-expression-value-1: statements to execute... possible-expression-value-2: statements to execute... END

Pascal juga mengembangkan variabel dinamis, dimana variabel dapat dibuat ketika suatu program sedang berjalan, melalui perintah NEW dan DISPOSE. Tetapi Pascal tidak mengimplementasikan suatu array dinamis, atau kelompok dari variabel-variabel, yang mana sangat dibutuhkan, dan merupakan salah satu penyebab kekalahannya (Bergin, 101-102). Wirth kemudian membuat lanjutan dari Pascal, Modula-2, tetapi pada saat itu muncul C yang dengan cepat menjadi mengeser posisi Pascal.

C dikembangkan pada tahun 1972 oleh Dennis Richie ketika sedang bekerja pada Bell Labs di New Jersey. Transisi pemakaian dari bahasa umum yang pertama ke bahasa umum sampai hari ini yaitu transisi antara Pascal dan C, C merupakan perkembangan dari B dan BCPL, tetapi agak menyerupai Pascal. Semua fasilitas di Pascal, termasuk perintah CASE tersedia di C. C menggunakan pointer secara luas dan dibangun untuk kecepatan dengan kelemahannya yaitu menjadi sulit untuk dibaca. Tetapi karena dia menghilangkan semua kelemahan yang terdapat di Pascal, sehingga dengan cepat mengambil alih posisi Pascal.

Ritchie mengembangan C untuk sistem Unix yang baru pada saat yang bersamaan. Oleh karena ini, C dan Unix saling berkaitan. Unix memberikan C beberapa fasilitas besar seperti variabel dinamis, multitasking, penanganan interrupt, forking, dan strong low-level, input-output. Oleh karena itu, C sangat sering digunakan untuk pemrograman sistem operasi seperti Unix, Windows, MacOS, dan Linux.

(19)

dikembangkan. Ha tersebut dikenal sebagai Object Oriented Programming, atau OOP. Object merupakan suatu potongan dari data yang dapat dipaket dan dimanipulasi oleh programmer. Bjarne Stroustroup menyukai metode ini dan mengembangkan lanjutan dari C yang dikenal sebagai "C With Classes." Kemampuan lanjutan ini dikembangkan menjadi bahasa C++ yang diluncurkan pada tahun 1983.

C++ dirancang untuk mengorganisasikan kemampuan dasar dari C dengan OOP, dengan tetap mempertahankan kecepatan dari C dan dapat dijalankan pada komputer yang tipe berlainan. C++ sering kali digunakan dalam simulasi, seperti game. C++ menyediakan cara yang baik untuk memanipulasi ratusan instance dari manusia didalan elevator, atau pasukan yang diisi dengan tipe prajurit yang berbeda. Bahasa ini menjadi pilihan pada mata kuliah AP Computer Science sampai hari ini.

Pada awal 1990's, interaktif TV adalah teknologi masa depan. Sun Microsystems memutuskan bahwa interaktif TV membutuhkan suatu hal yang khusus, yaitu bahasa portable (bahasa yang dapat berjalan pada banyak jenis mesin yang berbeda). Bahasa ini dikenal sebagai Java. Pada tahun 1994, team proyek Java mengubah fokus mereka ke web, yang mana berubah menjadi sesuatu yang menjanjikan setelah interactive TV gagal. Pada tahun berikutnya, Netscape menyetujui pemakaian Java pada internet browser mereka, Navigator. Sampai titik ini, Java menjadi bahasa masa depan dan beberapa perusahaan mengumumkan aplikasi harus ditulis dalam Java.

Java mempunyai tujuan yang besar dan merupakan bahasa yang baik menurut buku text, pada kenyataanya "bahasa tersebut tidak". Dia memiliki masalah yang serius dalam optimasi, dengan arti program yang ditulis dengannya berjalan dengan lambat. Dan Sun telah membuat cacat penerimaan terhadap Java dengan pertikaian politis dengan

Microsoft. Tetapi Java telah dinyatakan sebagai bahasa untuk instruksi masa depan dan benar-benar menerapkan object-oriented dan teknik tingkat tinggi seperti kode yang portable dan garbage collection.

Visual Basic sering diajari sebagai bahasa pemrograman dasar yang mengacu pada bahasa BASIC yang dikembangkan pada tahun 1964 oleh John Kemeny dan Thomas Kurtz. BASIC adalah bahasa yang sangat terbatas dan dirancang untuk orang yang bukan computer science. Perintah-perintah dijalankan secara berurutan, tetapi kendali program dapat berubah berdasarkan IF..THEN, dan GOSUB yang mana menjalankan suatu blok kode dan kembali ketitik semula didalam alur program.

Microsoft telah mengembangkan BASIC ke dalam produk Visual Basic (VB). Jantung dari VB adalah form, atau suatu window kosos dimana anda dapat drag dan drop komponen seperti menu, gambarm dan slider bars. Item-item ini dikenal sebagai

(20)

Perl telah sering digambarkan sebagai "duct tape of the Internet," karena sering digunakan sebagai engine untuk interface web atau pada script untuk memodifikasi file konfigurasi. Dia memiliki fungsi text matching yang sangat baik sehingga membuatnya menjadi hal yang ideal untuk pekerjaan tersebut. Perl dikembangkan oleh Larry Wall pada 1987 karena fasilitas pada sed dan awk pada Unix (digunakan untuk manipulasi text) tidak mencukupi kebutuhannya. Tergantung kepada siapa anda bertanya, Perl adalah singkatan dari Practical Extraction and Reporting Language atau Pathologically Eclectic Rubbish Lister.

Bahasa pemrograman telah berkembangan dari masa kemasa dan tetap

dikembangkan dimasa depan. Mereka dimulai dari suatu daftar langkap pengkabelan agar komputer menjalankan tugas tertentu. Langkah-langkah ini berkembang menjadi software dan memiliki kemampuan yang lebih baik. Bahasa umum yang pertama menekankan pada kesederhanaan dan untuk satu tujuan saja, sedangkan bahasa dewasa ini terbagi atas bagaimana mereka diprogram, sehingga mereka dapat digunakan untuk semua tujuan. Dan mungkin bahasa yang akan datang lebih natural dengan penemuan pada quantum dan komputer-komputer biologis.

Latihan 1

1. What is a computer program ?

2. Explain what is the different between High Level Language & Low Level Language ! 3. How about Machine Language & Assembly Language !

4. Explain how are interpreters and Compiler works ! 5. Is a computer program like an algorithm ?

6. What can we use to presenting an algorithm ?

(21)

Modul 1

Apa itu Bahasa Pemrograman Pascal ?

Pascal merupakan suatu bahasa komputer tingkat tinggi yang dibuat sekitar tahun 1970 oleh Niklaus Wirth1 dan digunakan untuk pendidikan komputer. Bahasa Pascal dikembangkan dari Bahasa Pemrograman ALGOL. Nama Pascal diambil dari seorang ahli matematika yang bernama Blaise Pascal2 yang menemukan mesin hitung pertama. Bahasa Pascal dirancang untuk menyelesaikan masalah dari berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan dengan pendekatan terstruktur.

Apa itu Turbo Pascal ?

Salah satu kompiler pascal yang terkenal dan tercepat adalah Turbo PASCAL yang dibuat oleh perusahaan Borland (http://www.borland.com). Turbo PASCAL telah membuat pascal sebagai salah satu bahasa pemrograman yang popular dikalangan IBM PC.

Adakah versi Turbo Pascal untuk pemrograman Visual ?

Pada trend pemrograman Visual, perusahaan Borland mengeluarkan Borland Delphi (Windows) dan Kylix (Linux) yang menggunakan dasar dialek Pascal (object Pascal) pada lingkungan pemrograman Visual.

Apa artinya Pascal adalah bahasa pemrogram terstruktur ?

Pascal adalah suatu bahasa pemrograman terstruktur. Hal tersebut berarti semua program yang anda buat harus terstruktur dan teratur, dalam hal ini harus menghindari pemakaian goto dan jump.

Apakah Turbo Pascal mendukung pemrograman berorientasi object ?

Mulai versi 5.5 Turbo Pascal telah dilengkapi dengan kemampuan pemrograman berorientasi object, dan program ini secara bebas dapat di download pada alamat

http://bdn.borland.com/article/0,1410,20803,00.html (Antique Software: Turbo Pascal version 5.5)

Adakah compiler Pascal lainnya selain Turbo Pascal ?

Compiler Pascal lainnya yang cukup terkenal adalah Free Pascal3 yang dapat didownload pada http://www.freepascal.org/ (Free Pascal). Free Pascal merupakan compiler yang dikembangkan oleh komunitas open source.

1

Dr. Niklaus Wirth of the Swiss Federal Institute of Technology (ETH-Zurich), a member of the original group that created ALGOL. In 1971, he published his specification for a highly-structured language which resembled ALGOL in many ways. He named it Pascal.

2

Blaise Pascal, a French mathematician who was a pioneer in computer development history. In 1641, at the age of eighteen, Pascal constructed the first arithmetical machine, arguably the first computer. He would improve upon the instrument eight years later. In 1650, Pascal left the world of geometry and physics, and shifted his focus towards religious studies, or, as Pascal wrote, to "contemplate the greatness and the misery of man." Pascal died in Paris on August 19, 1662.

3

(22)

Mengapa kita belajar bahasa pemrogram Pascal, padahal trend pemrograman dewasa ini adalah C/C++, C#, dan Java ?

Sebagaimana tujuan awal dari pembuatan bahasa Pascal adalah untuk pengajaran pemrograman komputer di perguruan tinggi4, sebagai bahasa pemrograman yang terstruktur Pascal akan menjadi dasar praktek pemrograman yang baik bagi mahasiswa. Jika dibandingkan dengan C/C++, Pascal relatif lebih mudah dipelajari, karena bahasa C/C++ merupakan bahasa yang cenderung simbolic dan adanya type casting serta pointer arithmetic (sering membuat program menjadi crash dan buffer overun bagi programmer yang kurang berpengalaman.

Sedangkan bahasa Java dan C# adalah bahasa pemrograman terkini yang menekanan kepada pendekatan berorientasi object, padahal pendekatan tersebut adalah tidak mudah untuk orang yang baru belajar pemrograman komputer.

Kemudian Borland merupakan salah satu perusahaan yang terus mengembangan produknya, terutama Delphi dan Kylix yang menggunakan Object Pascal.

Bagaimana Struktur program pascal yang paling sederhana ?

Struktur program pascal yang paling sederhana adalah : uses ...;

var ...;

begin

.... {Your program is here} end.

Dapatkah anda memberi contoh sebuah program pascal yang sederhana ?

begin

Writeln('Saya sedang belajar Pascal !'); Writeln('Di STMIK IBBI');

end.

Bagaimana kalau saya mau membersihkan layar terlebih dahulu sebelum mencetak tulisan ?

Untuk membersihkan layar, anda dapat menggunakan perintah Clrscr yang terdapat pada unit CRT.

MacOSX/Darwin, MacOS classic, DOS, Win32, OS/2, BeOS, SunOS (Solaris), Netware (libc and classic),

QNX and Classic Amiga. 4

(23)

Contoh : Uses CRT;

begin Clrscr;

Writeln('Saya sedang belajar Pascal !'); Writeln('Di STMIK IBBI');

end.

Bagaimana Struktur program pascal yang kompleks ?

Adapun struktur dasar suatu program pascal adalah sebagai berikut : program ... ; { Program heading }

uses ... ; { Uses clause } label ... ; { Labels } const ... ; { Constants } type ... ; { Types } var ... ; { Variables } procedure ... ; { Procedures } function ... ; { Functions } begin statement; { Statements } ...

end.

Program heading

Judul program dalam Turbo Pascal bersifat optional dan tidak ada pengaruhnya dalam program. Jika ditulis akan memberikan nama program dan suatu daftar parameter optional dimana program itu berkomunikasi. Daftar itu terdiri dari sederetan indentifier yang diakhiri dengan tanda kurung dan dipisahkan dengan tanda koma.

Contoh :

Program Perhitungan(Input,Output);

Uses Clause

Bagian uses clause digunakan untuk menentukan library yang dibutuhkan saat proses program. LIBRARY merupakan file penyimpan subroutine yang secara berulang digunakan saat proses program. Library ini diistilahkan sebagai unit dalam Turbo PASCAL yang terdiri dari SYSTEM, OVERLAY, GRAPH, DOS, CRT yang ditempatkan dalam file TURBO.TPL.

Contoh :

Uses Crt; (*menggunakan Unit Crt *)

Perhatian :

(24)

Declaration

Bagian ini meliputi deklarasi untuk label, const, type, var, procedure dan function.

Syarat terpenting dalam pembentukan suatu program adalah, bahwa setiap variabel, type non-standard, label, procedure non-standard, serta function non-standard yang dipakai didalamnya harus nyatakan (deklarasi) terlebih dahulu pada bagian deklarasi.

Setiap deklarasi tersebut harus bersifat unik (tidak boleh serupa satu sama yang lain). Penulisan nama dalam deklarasi tersebut harus memenuhi syarat-syarat sebagai berikut : - panjang nama maximum 63 character, diawali dengan alphabet

- tidak ada special character kecuali tanda garis bawah ("_") - tidak boleh serupa dengan reserved word (kata tercadang) - tidak boleh serupa dengan indentifier lainnya.

Variabel Declaration

Setiap variabel yang digunakan dalam program harus didefinisikan terlebih dahulu sebelum digunakan. Cara penulisan ini adalah :

Var

<nama var> : <type variable>;

Statement

Bagian ini merupakan inti dari program. Seluruh perintah dan urutannya serta proses Input/Output dalam program perlu disusun secara teratur oleh penyusun program. Segala yang ada pada bagian uses maupun deklarasi merupakan pendukung terhadap isi program.

Bagaimana membuat keterangan ?

Untuk membuat program anda menjadi mudah dibaca dan dimengerti, maka perlu diberi keterangan yang akan diabaikan oleh kompiler. Untuk membuat keterangan gunakan tanda kurawal { ini adalah keterangan }, atau (* ini adalah keterangan *).

Type data apa saja yang disediakan Turbo Pascal ?

Adapun type variable yang disediakan pada TURBO PASCAL :

1. Ordinal types

Type data yang mempunyai urutan pasti, dan masih terbagi menjadi

- Integer

(25)

- Char

Type variabel yang berguna untuk pengolahan character ASCII, type character ini penulisannya ditandai dengan dua buah petik tunggal seperti : 'A', '3','*',#7 untuk menyatakan ' harus ditulis ''''

- Boolean

Type varibale yang berguna untuk pengolahan hal yang hanya mempunyai dua ketentuan yaitu benar(TRUE) dan salah(FALSE) saja.

2. Real types

Type variable yang beguna untuk pengolahan data yang tidak bulat, untuk type real ini juga terbagi atas beberapa :

! " #

$% & '(

Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain :

) * +#' * +#'

* # * #

, * - *

-. * ' * '

" / 0 1

23" 1

435 6 1 4 7 4

84" 6 1 84" 7 84"

3 6 1 7 #1 9 3 7 7 #1 9 3

:3 6 1 %7 #1 9 3 7 %7 #1 9 3

0 6 1 1 ; ;

0 6 1 1 ;

Operator relasi yang mengembalikan hasil Boolean

<= 2

-= '

>? 5 - 1 '

> - 7

? 1

>= - 7 # 1 '

?= 1 # 1 '

(26)

Sebagaimana anda ketahui bahwa Pascal adalah bahasa yang dirancang untuk pembelajaran pemrograman komputer yang terstruktur. Pada saat kompilasi, compiler akan memeriksa pemakaian type data yang bersesuaian. Jadi setiap variabel yang dideklarasi harus disesuaikan dengan nilai yang akan disimpan kevariabel tersebut.

Bagaimana menampilkan tulisan ke layar ?

Pascal menyediakan perintah Write dan Writeln yang dapat anda gunakan untuk menampilkan tulisan ke layar.

Dapatkah anda memberi contoh program yang menggunakan variabel ?

{Deklarasi variabel} var

UmurKu : Byte; Keterangan : String; (*Program anda*)

begin

UmurKu:=19;

Keterangan:='Hi, saya sedang belajar Pascal di STMIK IBBI'; Writeln('Saya berumur ',UmurKu,' tahun');

Writeln(Keterangan); end.

Bagaimana kalau saya ingin membaca masukan dari pemakai ?

Perintah Readln dapat digunakan untuk membaca masukan dari pemakai dan menyimpannya ke suatu variabel.

var

UmurKu : Byte; Keterangan : String; begin

Write('Berapa umur anda ? '); Readln(UmurKu); Write('Komentar anda: '); Readln(Keterangan); Writeln;

Writeln('Saya berumur ',UmurKu,' tahun'); Writeln(Keterangan);

end.

Bagaimana membatasi pencetakan tempat desimal untuk data Real type ?

Untuk menentukan jumlah tempat sebelum desimal dan sesudah desimal anda dapat menggunakan :x:y setelah variabel yang akan dibatasi pencetakan nilainya, dimana x adalah jumlah tempat sebelum desimal dan y adalah jumlah tempat setelah desimal. Silahkan coba koding berikut :

var

Pi : Real; Begin

Pi := 22/7;

(27)

Proses pemrograman komputer

Ketika melakukan pemrograman dengan menggunakan bahasa tingkat tinggi, ada beberapa operasi yang harus dilakukan. Mekanisme ini dikenal sebagai siklus edit-compile-run. Mempelajari proses ini adalah berbeda dengan belajar bagaimana untuk membuat program; anda harus menguasai proses ini—dan hal tersebut adalah penting. Berikut ini adalah proses membuat sebuah program :

Edit

Ketika anda menulis sebuah program dalam bahasa tingkat tinggi, anda menulis perintah-perintahnya dalam bentuk perintah bahasa pemrograman dengan menggunakan text editor. Dokumen yang anda hasilkan pada tahap ini dikenal sebagai source code.

Compile

Setelah anda selesai menulis program anda, anda perlu meng-kompilasi-nya dengan menggunakan suatu software yang disebut sebagai compiler. Kompiler mengubah source code anda menjadi bahasa mesin. Jika program anda gagal di kompilasi (tejadi kesalahan "grammatical" atau sytnax errors pada kode anda), anda harus meng-edit kembali kode anda sampai dapat dikompilasi dengan benar.

Setelah suatu program berhasil dikompilasi artinya dia telah benar secara syntax, tetapi masih dapat mengandung runtime error, atau logical error.

Run

Setelah program anda dikompilasi, anda dapat menjalankannya. Ketika anda menjalankan program anda, hal yang pertama yang perlu anda lakukan adalah memeriksa apakah programt tersebut berjalan seperti yang diharapkan, proses ini dikenal sebagai testing. Pada tahapan ini dapat ditemui logical error ataupun runtime error.

Untuk menghilangkan runtime error atau logical error anda perlu kembali ke langkah pertama, jadi inilah yang dikenal sebagai siklus edit-compile-run cycle sampai program dapat berjalan dengan benar.

Latihan 1

1. What does structured programming mean ? 2. What is the line "uses" for ?

3. Pascal programs always begin with _______ and end with _______ 4. What is the difference between "Write" and "Writeln" ?

(28)

6. Mention at least 5 variable type names with their range and types ! 7. How can we get user's input ?

8. What is the difference between "Read" and "Readln" ? 9. Why can't we enter the value 0.75 to Word variables ?

10. How can we view and pause the screen after the program ran ? 11. How can we declare variables in Pascal ?

12. What key should we press to run a program in Borland Pascal 7.0 ?

13. How can we limit the fractional output to 3 places before and after the decimal point? 14. Explain how can the string be limited on display.

15. Can we enter the value "1/4" to Real variables ?

16. Explain what is edit-compile-run cycle in proses of programming ?

Latihan di Laboratorium

1. Make a program to write your name and your age on screen.

2. Make a program to input user's comment and print it.

3. Make a program to calculate the area of a circle. Limit the fractional part 3 places before decimal point and 4 places after decimal.

program menghitung_luas_lingkaran;

var

r : integer; luas : real;

begin

write('masukkan panjang jari-jari :'); readln(r);

luas := 3.14*r*r;

writeln('luas lingkaran adalah :',luas:8:4); readln;

end.

(29)

Modul 2

Pada pertemuan sebelumnya kita telah belajar membuat program dengan pascal, apakah program yang dapat dibuat hanya untuk perhitungan matematika sederhana?

Tentu saja tidak, salah satu tujuan kita menggunakan komputer adalah membantu dalam pengambilan keputusan, dan tentu saja keputusan yang terprogram.

Anda menyebutkan keputusan terprogram, apa artinya ?

Artinya komputer dapat mengambil keputusan untuk berdasarkan aliran logika yang telah ditentukan sebelumnya yang dikenal sebagai algoritma.

Bagaimana penulisan perintah pengambilan keputusan pada Pascal ?

Salah satu perintah struktur pengambilan keputusan adalah : If condition Then statement;

Dimana condition adalah sesuatu yang bernilai True atau False, dan statement adalah perintah yang akan dijalankan.

Dapatkah anda memberikan sebuah contoh pemakaian perintah If ?

Baiklah, misalnya kita akan membuat program menentukan pembayaran berdasarkan berdasarkan jumlah belanja, jika diatas 100000 (seratus ribu) mendapatkan potongan 3%, maka programnya adalah sebagai berikut :

Uses Crt; Var

Belanja : Real;

Begin Clrscr;

Write('Jumlah belanja ? '); Readln(Belanja);

If Belanja > 100000 Then Belanja := Belanja * 0.97;

Writeln('Jumlah yang harus anda bayar ',Belanja:10:2); Readln;

End.

Ok, saya mengerti bahwa pada prinsipnya Statement setelah Then akan dijalankan kalau condition setelah If menghasilkan nilai True. Bagaimana kalau condition True Statement1 dijalankan, dan sebaliknya Statement2 dijalankan ?

Untuk keputusan seperti ini, pascal menyediakan struktur pengambilan keputusan berikut: If condition Then Statement1 Else Statement2;

(30)

If conditon Then Statement1 Else

Statement2;

Langsung saya buatkan contoh : Uses Crt;

Var

Bilangan : Integer;

Begin Clrscr;

Write('Masukan Bilangan ? '); Readln(Bilangan);

If (Bilangan Mod 2) = 0 Then Writeln ('Genap')

Else

Writeln ('Ganjil');

Readln; End.

He-he-he, bagaimana kalau keputusannya lebih dari 2, misalnya 4 Statement yang harus dijalankan berdasarkan masing-masing condition ?

Oh, hal itu bisa dilakukan dengan merangkai beberapa struktur If, misalnya : If condition1 Then

Statement1 Else

If condition2 Then Statement2 Else

If condition3 Then Statement3 Else

Statement4;

Jadi pada prinsipnya adalah terdiri dari tiga struktur If.

Misalnya kita akan membuat nilai huruf dari angka dengan kriteria 80 keatas mendapat A, 70 s/d 79 mendapat B, 60 s/d 69 mendapat C, 50 s/d 59 mendapat D, dan dibawah 49 mendapat E, maka dapat ditulis menjadi :

if mark>=80 then grade:='A'

else { 79 or below goes here } if mark>=70 then

grade:='B'

(31)

grade:='C'

else { 59 or below goes here } if mark>=50 then

grade:='D'

else { 49 or below goes here } grade:='E';

Wah panjang banget, adakah cara lain untuk melakukan hal tersebut ?

Selain struktur kendali If, pascal juga menyediakan suatu struktur Case, yang akan menjalankan statement berdasarkan range tertentu, adapun syntaxnya adalah sebagai berikut :

Case variabel Of

Range1 : Statement1; Range2 : Statement2; Range3 : Statement3; …

Else StatementN; End;

Saya akan menggulangi contoh diatas dengan struktur Case : Case mark of

80..100: grade:='A'; 70..79 : grade:='B'; 60..69 : grade:='C'; 50..59 : grade:='D'; Else grade:='E'; End;

Lebih sederhana bukan.

Tetapi sesuatu hal yang perlu diperhatikan bahwa variabel yang akan dievaluasi dengan Case haruslah Ordinal type.

Opss, hampir lupa, bagaimana kalau statement yang harus dijalankan pada masing-masing condition lebih dari 1 ?

Ya, benar, sering kita perlu menjalankan beberapa Statement pada masing-masing condition, untuk keperluan tersebut kita dapat memblok perintah-perintah tersebut dengan Begin … End;

Contoh :

If Belanja > 100000 Then Begin

Belanja := Belanja * 0.97;

(32)

Pertanyaan yang terakhir, bagaimana penulisan condition yang terdiri dari beberapa logika ?

Pertanyaan yang tepat sekali, untuk condition yang terdiri dari beberapa logika dapat anda gabungkan dengan operasi AND, OR. Misalnya kita akan mencari tahun kabisat.

In the Gregorian calendar, which is the calendar used by most modern countries, the following rules decides which years are leap years:

1. Every year divisible by 4 is a leap year.

2. But every year divisible by 100 is NOT a leap year

3. Unless the the year is also divisible by 400, then it is still a leap year. Maka penulisan programnya menjadi :

If ((tahun Mod 4) = 0) And Not (tahun Mod 100 = 0)) Or ((tahun Mod 400) = 0) Then

Writeln ('Tahun Kabisat !') Else

Writeln ('Bukan Tahun Kabisat !');

Catatan Instruktur

Berdasarkan hasil pengamatan, kesalahan yang sering dilakukan oleh mahasiswa dalam pemakaian struktur If…Then…Else, adalah didepan Else tidak ada pemakaian titik koma (;).

Latihan 2

1. What does Pascal provide in order to perform conditional branching ? 2. Explain briefly each syntax !

3. How could we do nested branching ? Is it legal ?

4. Determine the output if i=5 and j=3 for the following excerpt : if i<4 then writeln('Need more experience ...') else

begin

writeln('Yes, you have it !');

if j<=3 then writeln('But, I would prefer better ones.') else writeln('Superb !');

writeln('Congratulations !'); end;

writeln('Thank you for using this program !');

(33)

* 2 to age < 12 ==> "You are a kid !" * 12 to age < 18 ==> "You are a teenager !" * 18 to age < 24 ==> "You are a young adult !" * 24 to age < 40 ==> "You are an adult !" * 40 to age < 55 ==> "You are middle aged !" * 55 to age < 65 ==> (Give comments yourself) * age to 65 ==> (Give comments yourself)

(34)

Modul 3

Hallo, ketemu lagi, pada pertemuan ini kita akan membahas tentang Looping.

Apa itu Looping

Secara sederhana looping diartikan sebagai proses berulang terhadap statement maupun serangkaian statement lebih dari satu kali.

Aduh, kurang jelas, dapatkah anda memberikan contoh pemakaian looping?

Tentu saja anda telah menjalankan program pada pertemuan-pertemuan sebelumnya, dan program tersebut berjalan hanya sekali, seterusnya selesai. Pernahkan anda bayangkan kalau anda ingin membuat program yang dapat menanyakan kepada pemakai apakah dia ingin ulang program tersebut sekali lagi ? Kalau ya maka program akan diulang kembali, dalam hal ini looping akan berperan.

Ok, sekarang saya sudah punya gambaran. Apakah hal tersebut tidak dapat dilakukan tanpa looping ?

Tentu saja bisa, tetapi akibatnya program kita menjadi panjang dan tidak efisien, coba bayangkan misalnya anda ingin mencetak tulisan STMIK IBBI sebanyak 10 baris di layar, bisa saja anda menggunakan perintah Writeln(' STMIK IBBI '); sebanyak 10 kali. Bukankah lebih baik kita memerintahkan komputer untuk secara berulang menjalankan perintah Writeln(' STMIK IBBI '); sebanyak 10 kali.

Benar juga ya, tetapi bagaimana struktur perintah perulangan pada pascal ?

Salah satu struktur perintah perulangan pada pascal adalah yang menggunakan counter. For variabel := nilai awal To nilai akhir Do Statement;

Atau

For variabel := nilai awal DownTo nilai akhir Do Statement;

Dimana variabel harus ordinal type Contoh :

Var I : Integer; Begin

For I := 1 To 10 Do Writeln(' STMIK IBBI '); End.

Tapi tadi saya lihat yang satu pakai To dan yang satu lagi pakai DownTo, apa sih bedanya ?

(35)

Var I : Integer; Begin

For I := 10 DownTo 1 Do Writeln(' STMIK IBBI'); End.

Apa maksudnya variabel counter harus ordinal type ?

Maksudnya variabel counter harus berupa salah satu type seperti Byte, Shortint, Integer, Longint, Char, Boolean.

Misalnya Ch adalah Char, maka dapat dilakukan For Ch := 'a' to 'z' Do Write(Ch,' ');

Dan bahkan misalnya Bo adalah boolean, dapat juga For Bo :=false to true do writeln(Bo);

Adakah struktur perulangan lainnya pada bahasa pascal ?

Ya, ada lagi, yaitu yang melakukan perulangan yang menggunakan condition. While condition Do Statement;

Contoh : I := 1;

While I <= 10 Do Begin

Writeln(' STMIK IBBI'); I := I + 1;

End;

Apakah maksudnya I := I + 1; saya belum pernah melihat persamaan seperti ini secara matematika !

Ya, memang hal ini tidak mungkin ada secara matematika, tetapi pada dunia pemrograman artinya menaikan nilai variabel I sebesar 1. Supaya tidak membingungkan pascal menyediakan suatu function Inc(variabel); sebagai penganti I:= I + 1;

Ok, sekarang saya sudah jelas dengan struktur looping pada bahasa pascal.

Tunggu dulu, masih ada satu struktur perulangan dengan condition, yaitu : Repeat

Statement; …

Until condition;

(36)

Writeln(' STMIK IBBI'); Inc(I);

Until I <= 10;

Kalau begitu ya sama saja dengan yang While, bukankah begitu ?

Tentu saja ada perbedaannya, coba perhatikan contoh berikut I := 11;

While I <= 10 Do Begin

Writeln(' STMIK IBBI'); Inc(I);

End;

Dan

I := 11; Repeat

Writeln(' STMIK IBBI'); Inc(I);

Until I <= 10;

Pada contoh 1, tidak akan mencetak apa-apa, sedangkan pada contoh 2 akan mencetak tulisan STMIK IBBI minimal 1 kali.

Pada prinsipnya struktur While melakukan pemeriksaan awal, dan struktur Repeat melakukan pemeriksaan di akhir.

Bagaimana kalau kita ingin keluar dari pertengahan looping walaupun conditionnya masih terpenuhi ?

Mudah saja, gunakan perintah Break, dan anda juga dapat menggunakan perintah Continue untuk kembali ke While ataupun Repeat.

Contoh : I := 1;

While I <= 10 Do Begin

Writeln(' STMIK IBBI'); I := I + 1;

Break; End;

Akan mencetak STMIK IBBI sekali saja, karena begitu ketemu perintah Break, maka proses keluar dari looping. Bagaimana dengan yang berikut ini :

I := 1;

While I <= 10 Do Begin

(37)

Continue; End;

Catatan Instruktur

Berdasarkan hasil pengamatan, kesalahan yang sering dilakukan oleh mahasiswa dalam pemakaian struktur For…Do, dan While…Do adalah adanya pemakaian titik koma dibelakang Do, sehingga menyebabkan looping tidak menjalankan statement sebagaimana yang diharapkan.

Contoh :

For I := 1 To 10 Do; Writeln(' STMIK IBBI ');

Akan menyebabkan tulisan STMIK IBBI hanya dicetak satu kali, hal ini terjadi karena looping menjalankan apa-apa.

Indentasi pada penulisan program Pascal yang menggunakan perintah-perintah terstruktur adalah sangat penting, terutama dalam program yang besar, pemakaian indentasi akan membantu pemeriksaan kelengkapan block begin…end, serta memudahkan pembacaan program.

Latihan 3

1. Explain the characteristics of all three loop syntaxes in Pascal ! 2. Explain the differences between them !

(38)

2 4. Explain how to nest one syntax to another !

Latihan di laboratorium

(39)

end.

program jawaban_soal_no_5;

var

n,i,j : byte; begin

write('jumlah data :'); readln(n); for i := 1 to n do

write('jumlah data :'); readln(n); r := n;

9. Make fibonacci series. If input is n, write all the series up to n numbers : Input : 10

Output : 1 1 2 3 5 8 13 21 34 55

The first and the second numbers of fibonacci series are 1. The third is the sum of the first and the second. The fourth is the sum of the second and the third. The fifth is the sum of the third and the fourth, so on. program cetak_suku_fibonacci;

(40)

n,i, n_1, n_2, n_i : byte; begin

write('jumlah suku :'); readln(n); n_1 := 1;

n_2 := 1;

for i := 1 to n do

if i = 1 then write(n_1:4) else if i = 2 then write(n_2:4) else

begin

n_i := n_1 + n_2; write(n_i:4); n_1 := n_2; n_2 := n_i; end;

readln; end.

10. Make a factor tree.

Input : 100 Input : 1001

Output : 100 Output : 1001 / \ /\ 2 50 7 143 /\ /\ 2 25 11 13 /\ Input : 5

(41)

Modul 4

Hallo, ketemu lagi, pada pertemuan ini kita akan belajar tentang array.

Apa sih Array itu ?

Baiklah, array adalah variabel yang dapat menampung sejumlah data yang ditandai dengan suatu index pada masing-masing elemennya.

Contoh : Var

Nilai : Array [1..10] of Integer;

Dalam hal ini variabel Nilai adalah suatu array yang memiliki 10 element, yaitu Nilai[1], Nilai[2], Nilai[3], …, Nilai[10]. Pada masing-masing elemennya dapat menampung satu nilai Integer.

Contoh :

Nilai[1] := 60; Nilai[2] := 75; …

Nilai[10] := 90; Writeln(Nilai[1]); Writeln(Nilai[2]); …

Writeln(Nilai[10]);

Kalau begitu kita juga dapat melakukan hal yang sama dengan memesan 10 variabel, misalnya Nilai1, Nilai2, Nilai3, dst, dapatkah kira-kira anda memberikan contoh keunggulan dari pemakaian Array ?

Ya, memang hal tersebut dapat dilakukan, tetapi sesuatu yang perlu kita perhatikan adalah kemudahan pengolahan data Variabel tersebut, misalnya kita akan menjumlahkan total nilai dari variabel tersebut tanpa array maka dapat ditulis :

Total :=

Nilai1+Nilai2+Nilai3+Nilai4+Nilai5+Nilai6+Nilai7+Nilai8+Nilai9+Nilai10;

Dan kalau pakai array : Total := 0;

For I:= 1 To 10 Do Total := Total + Nilai[I];

Dan bagaimana kalau ada elemennya ada 100. Bisa anda bayangkan.

(42)

Ada, array yang telah kita sebutkan tersebut adalah array 1 dimensi, kita dapat juga membuat multi dimensi sesuai dengan kebutuhan, contoh :

Var

Matrix : Array [1..3,1..3] Of Integer;

Adalah contoh array 2 dimensi, yang terdiri dari elemen Matrix[1,1], Matrix [1,2], Matrix[1,3], Matrix[2,1], Matrix[2,2], Matrix[2,3], Matrix[3,1], Matrix[3,2], dan Matrix[3,3].

Jadi jumlah elemennya adalah 3 x 3 = 9 elemen.

Dapatkah kita buat 3 Dimensi, 4 Dimensi, dst ?

Oh, bisa, hal ini tergantung bagaimana kita mendeklarasikan variabel array tersebut.

Adakah hal-hal yang khusus dalam mendeklarasikan array pada Pascal ?

Ada, anda bisa mendeklarasikan array seperti :

x : Array[3..10] of Integer; {elemennya x[3], x[4], x[5], …, x[10]} idx : Array['A'..'Z'] of Integer;

a : Array['a'..'z'] of Byte;

n : Array[byte] of Integer; { The same as array[0..255] of integer; }

Saya bingung dengan yang Array ['A'..'Z'] of Integer, bagaimana kira-kira cara pemakaiannya ?

Cara pemakaiannya seperti array bisanya, Cuma indexnya ditulis sebgai character, contoh: Idx['A'] = 100;

Dan kalau pakai looping : For c:='A' to 'Z' do idx[c]:= 0;

Latihan 4

1. What is an array ? 2. What is it for ?

3. How is the declaration ? 4. Explain how to use it !

(43)

Latihan di Laboratorium

1. Make a Pascal triangle, example : Input : 7

baris_lalu : array [0..99] of integer; n,i,j : byte;

begin

write('jumlah baris :'); readln(n); baris_lalu[0] := 0;

2. Suppose you have an array 100 elements of random numbers. Find its average, maxi- mum and minimum value of the elements. writeln('Nilai minimum :', min);

(44)

end.

4. Make matrix operations : addition, subtraction, multiplication.You may limit the maximum dimension of the matrix.

program Penjumlahan_dua_matrix; var

jb,jk,i,j : byte;

arr1,arr2,arr3 : array[1..10,1..10] of integer; begin

write('Jumlah baris :'); readln(jb); write('Jumlah kolom :'); readln(jk); writeln('Data Matrix 1');

for i := 1 to jb do

writeln('Data Matrix 2'); for i := 1 to jb do

Pada pertemuan-pertemuan sebelumnya kita telah belajar dasar-dasar pembuat program dengan Pascal, pada pertemuan ini kita akan membahas tentang Algortima pengurutan data (Sort).

Salah satu masalah pengolahan data dengan menggunakan komputer adalah bagaimana menyajikan data dalam keadaan berurut, dan tentu saja untuk pengurutan data tersebut dibutuhkan algoritma. Dewasa ini para ahli matematika dan komputer telah mengembangkan berbagai algoritma pengurutan data seperti :

(45)

• Insertion Sort - O(n²) • Shell Sort - O(n1.25) • Quick Sort - O(n log n)

Tetapi sebelum kita mulai dengan pengurutan data, kita akan membahas tentang pseudo random generator (PRNG).

Apa itu PRNG ?

Pseudorandom number5 generator (PRNG) adalah algoritma yang ketika dijalankan akan menghasilkan suatu urutan dari bilangan, dimana elemen-elemennya diperkirakan tidak berkaitan satu sama yang lain.

Sesuatu hal yang perlu anda ketahui bahwa PRNG bukankan bilangan random, tetapi diperkirakan mendekati bilangan random.

Berdasarkan observasi John von Neumann 1951 bahwa "Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin".

Mersenne Twister adalah salah satu PRNG yang dibuat pada tahun 1997 oleh Makoto Matsumoto dan Takuji Nishimura, yang mana bilangan random dapat dihasilkan dengan sangat cepat dan berkualitas.

Vj+1 = A · Vj + B (mod M)

Bilangan Random pada Pascal

Pada Pascal telah tersedia procedure dan function untuk mengenerate bilangan random yaitu fungsi Random, dan procedure Randomize.

Random dan randomize

Kedua berfungsi menghasilkan bilangan random, bilangan random sering digunakan untuk mensimulasikan dunia nyata yang penuh dengan ketidakpastian.

Randomize digunakan untuk menginisialisasi suatu bibit random secara acak yang cukup dipanggil sekali saja.

Random digunakan untuk mendapatkan bilangan random(bilangan), yang akan menghasilkan bilangan 0 s/d bilangan-1. Misalnya num:=random(50); berarti variabel num mungkin berisi salah satu bilangan 0 s/d 49.

Cobalah contoh berikut : var

5

(46)

i : byte; begin

randomize; for i:=1 to 10 do write(random(30),' '); end.

Coba hilangkan "randomize", dan jalankan beberapa kali, bagaimana dengan bilangan yang dihasilkan apakah sama pada setiap percobaan ?

Jadi, selalu gunakan "randomize" untuk menjamin kerandoman bilangan yang dihasilkan pada setiap run.

Algoritma SORT

Pada computer science dan matematika, algoritma sort adalah algoritma yang membuat elemen dalam suatu daftar menjadi berurutan.

Algoritma Sort yang dipergunakan dalam computer science diklasifikasikan sebagai berikut :

• Kerumitan dalam komputasi (prilaku buruk, sedang dan terbaik) dalam arti ukuran dari elemen (n). Jelasnya, prilaku baik adalah O(n log n) dan prilaku buruk adalah O(n2)6

• Memori yang digunakan (dan pemakain sumber daya komputer lainnya)

• Stabilitas: pengurutan yang stabil akan mempertahankan urutan relatif antar elemen-elemen yang memiliki kunci (key) yang sama. Algoritma sort stabil jika dua record R dan S dengan kunci yang sama dan R berada pada posisi sebelum S , dan R harus tetap berada sebelum S setelah di sort. (Algoritma sort yang tidak stabil dapat dibuat stabil dengan menambah angka tambahan pada key untuk mempertahankan posisi)

Bubble Sort

Mungkin merupakan cara yang paling sederhana untuk mengurut data dalam suatu array, tetapi merupakan cara yang lambat ! Ide dasarnya adalah membandingkan dua objek yang bersebelahan (neighboring), menganti posisi keduanya juga berada pada urutan yang tidak sesuai.

Suatu array a, dengan n elemen, breikut ini adalah kode dalam Pascal untuk bubble sort: for i:= jd-1 downto 1 do

6

Big O notation (with a capital letter O, not a zero), also called Landau's symbol, is a symbolism used in

(47)

for j:= 1 to i do

if a[j] > a[j+1] then begin

t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; end;

Sebagaimana yang kita lihat, algoritma tersebut terdiri dari dua loop bersarang (nested loops). Index j pada looping sebelah dalam menelusuri elemen pada array, membandingkan isi pada array (at j and j+1), sedangkan loop sebelah luar menyebabkan loop sebelah dalam berulangan menelusuri array.

Setelah loop pertama, elemen terbesar pasti berada pada posisi akhir dari array.

Setelah loop kedua, elemen nomor dua terbesar akan berada pada posisinya, dan seterusnya.

Hal inilah yang menyebabkan loop sebelah dalam berkurang (i) pada setiap langkah, karena kita tidak perlu lagi memeriksa elemen yang terbesar itu berulang.

Insertion Sort

Algoritma ini bekerja dengan menyisipkan data ke posisinya pada suatu daftar yang sudah berurut. Algoritma ini akan berprilaku terbaik pada daftar yang sudah berurut O(n). Insertion Sort merupakan algoritma tercepat untuk jumlah elemen yang sedikit, terutama dibawah 10 elemen.

for i:= 2 to jd do begin

idx = I;

idxvalue = a[idx];

while idxvalue < a[idx-1] do begin

a[idx] := a[idx-1]; idx := idx – 1;

if idx = 1 then Exit; end;

a[idx] := idxvalue; end;

Selection sort

Selection sort bekerja dengan mencari data yang lebih kecil dan memindahkan data tersebut ke posisinya. Algoritma sort ini membutuhkan O(n2).

for i := 1 to n do begin

minidx := i;

for j := (i+1) to n do

if a[j] < a[minidx] then minidx := j;

(48)

a[i] = a[minidx]; a[minidx] = t; end;

Shell Sort7

Algoritma ini ditemukan oleh Donald Shell. Algoritma berprilaku baik kalau data pada array dalam keadaan hampir berurut. Konsepnya adalah membandingkan data dengan jarak tertentu dalam array

for gap:=(jd div 2) downto 1 do for i:=1 to (jd - gap) do if a[i]> a[i+gap] then begin

t:= a[i];

a[i] := a[i+gap]; a[i+gap]:=t; End;

Misalnya kita ada 8 data, maka gap akan mulai dari 4 s/d 1. Pada gap = 4, maka :

Bandingkan data 1 dengan 5, 2 dengan 6, 3 dengan 7, 4 dengan 8. Pada gap =3, maka :

Bandingkan data 1 : 4, 2 : 5, 3 : 6, 4 : 7, 5 : 8 Pada gap = 2, maka :

Bandingkan data 1 : 3, 2 : 4, 3 : 5, 4 : 6, 5 : 7, 6 : 8 Pada gap = 1, maka :

Bandingkan data 1 : 2, 2 : 3, 3 : 4, 4 : 5, 5 : 6, 6 : 7, 7 : 8

Latihan 5

1. What is sort algorithm ?

2. Suppose we have an array contain 8 data (7,8.5,4,2,1,3,6), please write down step by step data changing when sorting using Bubble Sort, Insertion Sort, Shell Sort ! 3. Explain how to generate random number in Pascal !

Latihan di Laboratorium

1. Write a program to generate 10000 random number, and then sort it using Bubble Sort, Insertion Sort, Shell Sort, and Selection Sort examine how many data comparing and data exchange.

program analisa_jumlah_perbandingan_dan_pergantian_data_bubble_sort;

var

arr : array[1..1000] of integer; i,j,

jb,jg,temp: integer; begin

7

(49)

randomize;

for i := 1 to jd do

arr[i] := random(1000);

jb := 0; jg := 0;

for i := (jd-1) downto 1 do for j := 1 to i do begin

jb := jb + 1;

if arr[j] > arr[j+1] then begin

jg := jg + 1; temp := arr[j]; arr[j]:=arr[j+1]; arr[j+1]:=temp; end;

end;

writeln('Jumlah perbandingan :',jb); writeln('Jumlah pergantian :',jg);

(50)

Modul 6

Saya yakin anda sudah mengerti beberapa algoritma sort, sebagai seorang sarjana komputer, anda harus mengerti dan mengetahui kelemahan dan kelebihan dari masing-masing algoritma tersebut.

Selanjutnya kita akan melihat algoritma pencarian (Search Algorithms).

Apa itu Search Algorithms ?

Search algorithms adalah algoritma untuk mencari suatu elemen dalam suatu himpunan elemen berdasarkan key tertentu.

Algoritma search yang paling sederhana adalah linier search, dimana memiliki O(n), tetapi dapat digunakan pada daftar yang tidak berurut.

Algoritma yang lebih baik adalah binary search yang berjalan pada O(log(n)). Tentu saja secara nyata lebih baik dari linier search untuk jumlah data yang besar, tetapi membutuhkan kondisi data dalam keadaan berurut.

Linier Search

Pada bidang computer science, algoritma search dikenal juga sebagai sequential search. Cara kerjanya adalah memeriksa setiap elemen dalam daftar sampai menemukan yang dicari. Linier search berjalan secara O(n), kalau data terdistribusi secara acak, dan rata-rata n/2 perbandingan diperlukan. Kasus terbaik adalah kalau nilai yang dicari berada diposisi pertama, kasus yang terburuk adalah kalau nilai yang dicari tidak ada dalam daftar, sehingga dibutuhkan n perbandingan.

Keunggulan dari linier search adalah dapat digunakan pada daftar yang tidak berurut. i := 1;

continue := true;

while (i <= jd) and continue do begin

if a[i] = findvalue then continue := false;

i := i + 1; end;

if i <= jd Then

writeln('data found at : ',i) else

writeln('data not found');

Binary Search

(51)

berjalan secara O(log n). Khususnya diperlukan 1 + log2 N iterasi untuk mendapatkan jawaban, dan lebih cepat dari linier search.

continue := true;

while (first <= last) and continue do begin

mid := (first + last) Div 2; if (findvalue > arr[mid]) then begin

jb := jb + 1; first := mid + 1; end

else

if (findvalue < arr[mid]) then begin

jb := jb + 1; last := mid - 1 end

else

continue := false; end;

if first > last then

writeln('data not found') else

writeln('data found at :',mid);

Interpolation search

Menyerupai bagaimana orang mencari sesuatu pada buku telepon. Dari pada membandingkan data satu persatu seperti pada linier search, tentu saja pencarian didasarkan kepada perkiraan letak data dari posisi data sekarang.

Berbeda dengan binary search yang selalu membagi sisa data separuh. Interpolation search membuat perbandingan yang lebih sedikit dari O(log(log(N)), tidak selamanya interpolation search lebih cepat dari binary search.

Seperti binary search, interpolation search membutuhkan data dalam keadaan berurut, dan interpolation search bekerja dengan asumsi data terdistribusi merata.

low := 1; high := jd;

while (a[high] >= findvalue) and (findvalue > a[low]) do begin

j:= trunc((findvalue-a[low])/(a[high]-a[low])*(high-low))+low; if findvalue > a[j] then

low := j+1 else

if findvalue < a[j] then high := j-1

else

Gambar

Gambar : Tahap pengembangan program

Referensi

Dokumen terkait

Hasil analisis data menunjukkan bahwa keterampilan berpikir kritis pada indikator kemampuan membuat argumen, membangun keterampilan dasar dan membuat inferensi pada kelas

[r]

Berdasarkan Undang-Undang Nomor 17 Tahun 2000 tentang Pajak Penghasilan, yang menjadi objek Pajak Penghasilan adalah penghasilan yaitu setiap tambahan kemampuan ekonomis yang

In section 2 we extend these results to categories with a coherent ring structure which we call lax G -ring categories.The main coherence result here, Theorem 2.5, implies that

Pengunjung yang ingin membeli produk dapat melakukan register data pembeli untuk melakukan proses transaksi pembelian.. Pengunjung dapat langsung login data pembeli

dengan sanggar lain yang jika ada kegiatan pertunjukan banyak menggunakan anggota atau seniman luar untuk dijadikan penari atau pemusiknya”. Selanjutnya yaitu

Alhamdulillah, puji syukur kepada Tuhan Yang Maha Esa yang telah melimpahkan rahmat dan hidayah-Nya, sehingga penulis dapat menyelesaikan Laporan Tugas Akhir (LTA) yang berjudul

Simpulan : Berdasarkan penelitian ini, dapat disimpulkan bahwa tidak terdapat pengaruh rokok terhadap peningkatan frekuensi pembentukan mikronukleus pada mukosa