SlideShare a Scribd company logo
1 of 116
Download to read offline
Algoritma & Pemrograman                                                     Hendra, S.T.


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

Sesuatu hal yang harus dipahami bahwa setiap CPU hanya mengerti satu bahasa. Bahasa
ini dikenal sebagai machine language (bahasa mesin).


Indoprog                                                                              1
Algoritma & Pemrograman                                                 Hendra, S.T.




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
sebenarnya bukanlah suatu langkah yang besar. Bahasa Assembly adalah suatu mnemonic
sederhana untuk mengantikan bahasa mesin. Dari pada menulis angka 54 24 66 9C FE
C2 84 92 kedalam memori, programmer bahasa assembly dapat menulis LDX 24,
[669C].




Indoprog                                                                           2
Algoritma & Pemrograman                                                    Hendra, S.T.

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
        assembler, dan baru dapat dijalankan.


Indoprog                                                                             3
Algoritma & Pemrograman                                                  Hendra, S.T.

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.

Ketika anda menggunakan suatu compiler, ia akan membaca perintah source code dan
menulis kode mesin. Setelah selesai keseluruhan kode mesin akan disimpan untuk
pemakaian selanjutnya. Ketika anda ingin menjalankan program tersebut, system operasi
akan menjalankan kode mesin yang telah disimpan – dalam hal ini source code tidak
diperlukan lagi. Eksekusi menjadi lebih cepat, dan dapat dijalankan dikomputer lain
(dalam hal ini pada komputer dan system operasi yang sama)



Indoprog                                                                           4
Algoritma & Pemrograman                                                     Hendra, S.T.

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

       Kasus pertama dari algoritma yang ditulis untuk komputer adalah catatan Ada
Byron's notes pada analytical engine yang ditulis pada tahun 1842, yang mana diyakini


Indoprog                                                                              5
Algoritma & Pemrograman                                                       Hendra, S.T.

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.

Pemrograman dalam pengertian luas meliputi seluruh kegiatan yang tercakup dalam
pembuatan program, termasuk analisis kebutuhan (requirement's analysis) dan
keseluruhan tahapan dalam perencanaan (planning), perancangan (design) dan
pewujudannya (implementation). Dalam pengertian yang lebih sempit, pemrograman
merupakan pengkodean (coding atau program writing = penulisan program) dan
pengujiannya (testing) berdasarkan rancangan tertentu. Pemahaman yang lebih sempit ini
sering digunakan dalam pembuatan program-program terapan komersial yang
membedakan antara system analyst yang bertanggung jawab dalam menganalisa
kebutuhan, perencanaan dan perancangan program dengan pemrogram (programmer) yang
bertugas membuat kode program dan menguji kebenaran program.




Indoprog                                                                                6
Algoritma & Pemrograman                                                    Hendra, S.T.




                       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).

Dokumentasi Pembuatan catatan pada program terutama pada modul-modul yang rumit.

Suatu ilustrasi tentang rumitnya SDLC yang dapat menyebabkan kekacauan berikut ini :



Indoprog                                                                             7
Algoritma & Pemrograman                                        Hendra, S.T.




How the customers How the Project How the Analyst How          the
explained it      Leader understood designed it   Programmer wrote
                  it                              it




How the Business How the project What      operations How the customer
Consultant       was documented  installed            was billed
described it




        How it was supported           What the customer really needed




Indoprog                                                                 8
Algoritma & Pemrograman                                                      Hendra, S.T.

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 }
procedure TUKAR(input/output A:integer, input/output B:integer)



Indoprog                                                                               9
Algoritma & Pemrograman                                                     Hendra, S.T.

{ 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.

                            Sub program



Indoprog                                                                            10
Algoritma & Pemrograman                                              Hendra, S.T.



                           Komentar


Contoh pemakaian flowchart:

Sequential (berurutan)
perhitungan volume dan luas permukaan silinder




                Selection/Branching Structure (Struktur pemilihan)




Indoprog                                                                     11
Algoritma & Pemrograman                                           Hendra, S.T.




             Repetition/Looping Structure(Struktur pengulangan)




Indoprog                                                                  12
Algoritma & Pemrograman               Hendra, S.T.




                          Kombinasi




Indoprog                                      13
Algoritma & Pemrograman                                                    Hendra, S.T.




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
pemrograman yang sama. Karena bentuk pseudocode bervairasi dari pengarang yang satu
dengan pengarang yang lain, tetapi bentuk yang sering digunakan untuk pengenalan
adalah sebagai berikut :



Indoprog                                                                              14
Algoritma & Pemrograman           Hendra, S.T.

BEGIN { mulai } { input }
read(R);
{ proses } If R <= 0
then tulis("Data salah !")
else L_Lingkaran = PHI x R x R;
{ output } write(l_Lingkaran);
 END; { selesai }




Indoprog                                  15
Algoritma & Pemrograman                                                    Hendra, S.T.



        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.

      Pada 1957, bahasa khusus yang pertama muncul dalam bentuk FORTRAN yang
merupakan singkatan dari sistem FORmula TRANslating. Bahasa ini dirancang pada IBM
untuk perhitungan scientific. Komponen-komponennya sangat sederhana, dan


Indoprog                                                                           16
Algoritma & Pemrograman                                                      Hendra, S.T.

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.

      Pascal dimulai pada tahun 1968 oleh Niklaus Wirth. Tujuan utama


Indoprog                                                                             17
Algoritma & Pemrograman                                                     Hendra, S.T.

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.

      Pada akhir tahun 1970 dan awal 1980, suatu metode pemrograman yang baru telah


Indoprog                                                                            18
Algoritma & Pemrograman                                                     Hendra, S.T.

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
"widgets." Widget memiliki properti (seperti warna) dan events (seperti klik dan double
klik) dan menjadi pusat dari pengembangan antarmuka dengan pemakai diberbagai bahasa
program dewasa ini. VB merupakan program yang banyak digunakan untuk membuat
interface sederhana ke produk Microsoft lainnya seperti Excel dan Access tanpa membaca
banyak kode, dengannya dapat dimungkinkan untuk dibuat aplikasi yang lengkap.



Indoprog                                                                            19
Algoritma & Pemrograman                                                       Hendra, S.T.

        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 ?

7.   Draw the symbols use in flowchart, and mention each symbols function !




Indoprog                                                                              20
Algoritma & Pemrograman                                                                        Hendra, S.T.


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
  Free Pascal (aka FPK Pascal) is a 32 or 64 bit (from 1.9.6) pascal compiler. It is available for different
processors Intel x86, Amd64/x86 64 (from 1.9.6), PowerPC (from 1.9.2), Sparc (from 1.9.6) and Motorola
680x0 (1.0.x only). The following operating systems are supported Linux, FreeBSD, NetBSD,


Indoprog                                                                                                21
Algoritma & Pemrograman                                                                      Hendra, S.T.



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
  According to the Pascal Standard (ISO 7185), these goals were to a) make available a language suitable for
teaching programming as a systematic discipline based on fundamental concepts clearly and naturally
reflected by the language, and b) to define a language whose implementations could be both reliable and
efficient on then-available computers.


Indoprog                                                                                              22
Algoritma & Pemrograman                                                    Hendra, S.T.

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 :
Unit system merupakan unit yang secara otomatis akan disertakan dalam setiap program,
unit inilah mengatur semua perintah dasar input dan output pada Pascal. Sedangkan unit-
unit lain hanya akan disertakan bila kita pilih pada bagian uses.



Indoprog                                                                           23
Algoritma & Pemrograman                                                         Hendra, S.T.

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
Type variable yang beguna untuk pengolahan data yang bulat, type ini masih terbagi atas
berberapa menurut jangkauan data dan ukurannya :

       Type                        Jangkuan                              Ukuran
      Shortint                     -128..127                              8 bit
      Integer                    -32768..32767                            16 bit
      Longint               -2147483648..2147483647                       32 bit
       Byte                          0..255                               8 bit




Indoprog                                                                                  24
Algoritma & Pemrograman                                                        Hendra, S.T.

       Word                         0..65535                             16 bit


- 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 :

       Type                 Jangkauan                   Ketelitian           Ukuran
       Real               2.9e-39..1.7e38               11-12 digit           6 bit
      Single           1.5e-45..3.4e38 ³ 7-8             7-8 digit            4 bit
      Double             5.0e-324..1.7e308              15-16 digit           8 bit
     Extended           3.4e-4932..1.1e4932             19-20 digit           10 bit
      Comp                -9.2e18..9.2e18               19-20 digit           8 bit


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

     Operator               Integer Type                   Real Type
        +                    Penjumlahan                  Penjumlahan
        -                    Pengurangan                  Pengurangan
        *                      Perkalian                    Perkalian
        /                     Pembagian                    Pembagian
       DIV                     Hasil bagi
       MOD                     Sisa Bagi

     Operator               Integer Type                 Boolean Type
       NOT                 Bitwise Negation             Logical Negation
       AND                   Bitwise AND                  Logical AND
        OR               Bitwise inclusive OR         Logical inclusive OR
       XOR               Bitwise exclusive OR         Logical exclusive OR
       SHL                 Bitwise shift-left
       SHR                Bitwise shift-right

Operator relasi yang mengembalikan hasil Boolean
     Operator       Fungsi
       :=           Menyatakan nilai
        =           Sama dengan
       <>           Tidak sama dengan
        <           Lebih kecil
        >           Lebih besar
<=                  Lebih kecil atau sama dengan
>=                  Lebih besar atau sama dengan


Apa pengertian Pascal adalah bahasa yang strong type ?


Indoprog                                                                               25
Algoritma & Pemrograman                                               Hendra, S.T.

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;
  Writeln('Bilangan Pi adalah ', Pi);
  Writeln('Bilangan Pi adalah ', Pi:2:3);
end.




Indoprog                                                                      26
Algoritma & Pemrograman                                                        Hendra, S.T.

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" ?

5. How can we write two blank lines on the screen ?


Indoprog                                                                               27
Algoritma & Pemrograman                                                       Hendra, S.T.



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.

4. Make a program to convert temperature from Celcius to Reamur, Kelvin, and
   Fahrenheit.



Indoprog                                                                              28
Algoritma & Pemrograman                                                    Hendra, S.T.


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;

Atau lebih baik ditulis sebagai


Indoprog                                                                           29
Algoritma & Pemrograman                                                        Hendra, S.T.


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'
   else    { 69 or below goes here }
      if mark>=60 then


Indoprog                                                                               30
Algoritma & Pemrograman                                                    Hendra, S.T.

          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;
   Writeln ('Anda berhak mendapat potongan 3%');
   End;




Indoprog                                                                           31
Algoritma & Pemrograman                                                             Hendra, S.T.

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 !');

5. Make a program to ask ages. Classify the ages into these categories :

   * age < 2            ==> "You are a baby !"



Indoprog                                                                                    32
Algoritma & Pemrograman                                           Hendra, S.T.

   *   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)

6. Using ABC formula, make a program to solve aX2 + bX + C problem.




Indoprog                                                                  33
Algoritma & Pemrograman                                                      Hendra, S.T.


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 ?
Kita menggunakan To kalau nilai awal < nilai akhir, dan sebaliknya pakai DownTo

Contoh :



Indoprog                                                                             34
Algoritma & Pemrograman                                                     Hendra, S.T.

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;

Contoh :

I := 1;
Repeat



Indoprog                                                                            35
Algoritma & Pemrograman                                              Hendra, S.T.

    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
      Writeln(' STMIK   IBBI');
      I := I + 1;


Indoprog                                                                     36
Algoritma & Pemrograman                                                   Hendra, S.T.

       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 !

3. Suppose the output is :
  1


Indoprog                                                                          37
Algoritma & Pemrograman                                                                                         Hendra, S.T.

 2
 3
 4
 5
 6
 Write an excerpt using all three syntaxes !

4. Explain how to nest one syntax to another !

Latihan di laboratorium

1. Input     :       5                                                          2. Input : 5
   Output    :       1 2 3 4 5 4 3 2 1                                             Output : 1   2   3   4   5
   Input     :       1                                                                      1   2   3   4   5
   Output    :       1                                                                      1   2   3   4   5
                                                                                            1   2   3   4   5
3. Input : 5                                                                                1   2   3   4   5
   Output : 1             2       3       4       5                             4. Input : 5
            2             3       4       5       1                                Output : 1
            3             4       5       1       2                                         1   2
            4             5       1       2       3                                         1   2 3
            5             1       2       3       4                                         1   2 3 4
                                                                                            1   2 3 4 5
5. Input : 5                                                                    6. Input : 5
   Output : 1                                                                      Output : 1   1   1   1   1
            2             2                                                                 2   2   2   2   2
            3             3 3                                                               3   3   3   3   3
            4             4 4 4                                                             4   4   4   4   4
            5             5 5 5 5                                                           5   5   5   5   5

7. Input : 5
   Output :                                   1
                                      1       2       1
                              1       2       3       2   1
                      1       2       3       4       3   2   1
                 1    2       3       4       5       4   3   2   1
         1       2    3       4       4       4       4   4   3   2   1
       1 2       3    3       3       3       3       3   3   3   3   2 1
     1 2 2       2    2       2       2       2       2   2   2   2   2 2 1
   1 1 1 1       1    1       1       1       1       1   1   1   1   1 1 1 1

program jawaban_soal_no_2;

var
  n,i,j : byte;
begin
  write('jumlah data :'); readln(n);
  for i := 1 to n do
      begin
      for j := 1 to n do
           write (j);
      writeln;
      end;
  readln;



Indoprog                                                                                                                38
Algoritma & Pemrograman                                                           Hendra, S.T.

end.

program jawaban_soal_no_5;

var
  n,i,j : byte;
begin
  write('jumlah data :'); readln(n);
  for i := 1 to n do
      begin
      for j := 1 to i do
           write (i);
      writeln;
      end;
  readln;
end.

program jawaban_soal_no_6;

var
  n,l,r,t,b : byte;
begin
  write('jumlah data :'); readln(n);
  r := n;
  for l := 1 to n do
      begin
      b := n;
      for t := 1 to n do
           begin
           if (l <= r) and (l <= t) and (l <= b) then
              write(l)
           else if (r <= l) and (r <= t) and (r <= b) then
              write(r)
           else if (t <= l) and (t <= r) and (t <= b) then
              write(t)
           else
              write(b);
           b := b - 1;
           end;
      writeln;
      r := r - 1;
      end;
  readln;
end.

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;

var


Indoprog                                                                                  39
Algoritma & Pemrograman                                                             Hendra, S.T.

  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
                                             5        5   Output : 5 is a prime !




Indoprog                                                                                    40
Algoritma & Pemrograman                                                     Hendra, S.T.


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.

Adakah bentuk array yang lain, selain yang anda sebutkan ?



Indoprog                                                                            41
Algoritma & Pemrograman                                                       Hendra, S.T.

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 !

5. How can we declare two or more dimension in array and explain the usage.

6. Suppose we have n : array[char] of byte; Is it valid ? Explain.



Indoprog                                                                               42
Algoritma & Pemrograman                                                   Hendra, S.T.



Latihan di Laboratorium
1. Make a Pascal triangle, example :

   Input : 7
   Output :          1
                    1 1
                   1 2 1
                  1 3 3 1
                 1 4 6 4 1
               1 5 10 10 5 1
              1 6 15 20 15 6 1

program segitiga_pascal;
var
  baris_kini,
  baris_lalu : array [0..99] of integer;
  n,i,j : byte;
begin
  write('jumlah baris :'); readln(n);
  baris_lalu[0] := 0;
  baris_lalu[1] := 1;
  baris_lalu[2] := 0;
  for i := 1 to n do
      begin
      for j := 1 to i do
           begin
           baris_kini[j] := baris_lalu[j-1]+baris_lalu[j];
           write(baris_kini[j]:3);
           end;
      baris_lalu := baris_kini;
      writeln;
      end;
  readln;
end.

2. Suppose you have an array 100 elements of random numbers. Find its average, maxi-
  mum and minimum value of the elements.

Program mencari_nilai_minimum_dari_100_nilai_random;
const
  jd = 100;
var
  arr : array [1..100] of integer;
  i   : byte;
  min : integer;
begin
  randomize;
  for i := 1 to jd do
      arr[i] := random(1000);
  min := arr[1];
  for i := 2 to jd do
      if arr[i] < min then min = arr[i];
  writeln('Nilai minimum :', min);
  readln;


Indoprog                                                                          43
Algoritma & Pemrograman                                                   Hendra, S.T.

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
      for j := 1 to jk do
          begin
          write('Data ke ',i,'-',j,':');
          readln(arr1[i,j]);
          end;
  writeln('Data Matrix 2');
  for i := 1 to jb do
      for j := 1 to jk do
          begin
          write('Data ke ',i,'-',j,':');
          readln(arr2[i,j]);
          end;
  {penjumlahan matrix}
  for i := 1 to jb do
      for j := 1 to jk do
          arr3[i,j] := arr1[i,j] + arr2[i,j];
  writeln('Hasil penjumlahan');
  for i := 1 to jb do
      for j := 1 to jk do
          begin
          writeln('Data ke ',i,'-',j,':',arr3[i,j]);
          end;
  readln;
end.



Modul 5
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 :

   •   Bubble Sort - O(n²)
   •   Selection Sort - O(n²)


Indoprog                                                                          44
Algoritma & Pemrograman                                                                 Hendra, S.T.

      •   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
 Pseudorandom numbers are a critical part of modern computing, from cryptography to the Monte Carlo
method for simulating physical systems.


Indoprog                                                                                         45
Algoritma & Pemrograman                                                                       Hendra, S.T.

 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
complexity theory, computer science, and mathematics to describe the asymptotic behavior of functions. It
indicates how fast a function grows or declines.


Indoprog                                                                                               46
Algoritma & Pemrograman                                                    Hendra, S.T.

              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;
           t := a[i];


Indoprog                                                                           47
Algoritma & Pemrograman                                                                            Hendra, S.T.

                  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
    Shell sort (or Shellsort) is one of the oldest sorting algorithms, named after its inventor D.L. Shell [Sh].


Indoprog                                                                                                     48
Algoritma & Pemrograman                  Hendra, S.T.

  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);

  readln;
end.




Indoprog                                         49
Algoritma & Pemrograman                                                          Hendra, S.T.


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

Binary Search mengasumsikan data adalah dalam keadaan berurut dan mengambil
manfaat dari karakteristik tersebut. Binary search adalah algoritma logaritmik dan


Indoprog                                                                                  50
Algoritma & Pemrograman                                                    Hendra, S.T.

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
                  low := j;


Indoprog                                                                           51
Algoritma & Pemrograman                                                      Hendra, S.T.

             end;
        if a[low] = findvalue then
           writeln('data found at :',low);
        else
           writeln('data not found')



Latihan 6
   1.    What is search algorithm ?
   2.    Explain how linear search work !
   3.    Explain how binary search work !
   4.    Explain how interpolation search work !
   5.    Can we use binary search in not ordered list ? How about linier search ? Why ?
   6.    Explain when interpolation search is better than binary search !
   7.    Suppose we have an array contain 10 data (1,3,6,7,8,9,10,11,12,13), please write
         down step by step data comparing data which find value is 12 using Binary Search
         and Interpolation Search !

Latihan di Laboratorium
   1. Write a program to generate 10000 random number, and then sort it Shell Sort,
      examine how many data comparing to find a value using linier search, binary
      search and interpolation search.

program analisa_binary_search;

const
  jd = 10000;
var
  arr : array [1..10000] of integer;
  j,t,gap,
  findvalue,
  first,last,
  mid,jb : integer;
  continue : boolean;
begin
  {generate 10000 bilangan random}

  randomize;
  for j := 1 to jd do
      arr[j] := random(jd);
  {urut data dengan algoritma shell sort}
  for gap := (jd div 2) downto 1 do
      for j := 1 to (jd-gap) do
          if arr[j] > arr[j+gap] then
             begin
             t := arr[j];
             arr[j] := arr[j+gap];
             arr[j+gap] := t;
             end;

  {tanya data yang dicari}




Indoprog                                                                             52
Algoritma & Pemrograman                                                   Hendra, S.T.

  write('Nilai yang dicari 0-10000 :');
  readln(findvalue);

  {pencarian data dengan binary search}

  first:=1;
  last :=jd;
  jb   := 0;
  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);
  writeln('jumlah perbandingan data :',jb);

  readln;
end.


Modul 7
Pada contoh maupun tugas modul-modul sebelumnya kita telah banyak
menggunakan string (pada saat writeln), apakah sebenarnya string pada Pascal ?

Sebenarnya string adalah suatu array dari char, maksudnya anda dapat mengambil masing-
masing character dari suatu string dengan memperlakukannya sebagai elemen dari array.

Contoh :

Var
Nama : String;
Begin
Nama := 'Computer';
Writeln(Nama[1]);
Writeln(Nama[8]);
Nama[1] := 'K';
Writeln(Nama);



Indoprog                                                                          53
Algoritma & Pemrograman                                                    Hendra, S.T.

End.

Maka Nama[1] adalah huruf 'C', dan Nama[8] adalah huruf 'r'.

Sedangkan Nama[1] := 'K'; akan menyebabkan string nama berubah menjadi 'Komputer'.

Oh, begitu saja, jadi kita sudah selesai hari ini ?
Tunggu dulu, sebenarnya kalau kita dapat juga mendeklarasikan string dengan :

Var
Nama : String;
Alamat : String[40];

Dalam hal ini variabel Nama dapat menampung maksimal 255 character, sedangkan untuk
variabel Alamat dapat menampung maksimal 40 character.

Jadi kita dapat mendeklarasikan variabel string dengan panjang tertentu, berapa
panjang maksimal yang diperbolehkan ?

Sebenarnya kalau kita tidak menentukan panjang string ketika deklarasi, maka otomatis
pascal menyediakan 255 character untuk string kita, dalam hal ini merupakan panjang
maksimal yang diperbolehkan untuk suatu type data string.

Bolehkan kita memesan variabel array string ?

Boleh, anda dapat melakukannya.
Contoh :

NamaSiwa : Array[1..10] Of String[30];
Pada program Hangman, saya melihat adanya pemakaian fungsi Length, Pos, apa
fungsinya, dan adakah yang lain ?
Ya, itu adalah fungsi bantu yang disediakan oleh Pascal untuk melakukan pengolahan data
string,

Adapun fungsi bantu untuk string adalah sebagai berikut :

Length, mendapatkan panjang string

 Syntax : length(s)
 Contoh : : n:=length(s);
 Misalnya s:='Apa kabar ?'; n akan berisi 11.

Copy, mendapatkan bagian dari suatu string.

 Syntax : copy(s,from,howmuch)
 Contoh : : st:=copy(s,5,5);



Indoprog                                                                           54
Algoritma & Pemrograman                                                        Hendra, S.T.

 Menggambil 5 character mulai posisi ke 5

 Misalnya s:='Apa kabar ?'; st akan berisi 'kabar'.

Pos, mengambil posisi substring dari suatu string.

 Syntax : Pos(substr,s)
 Contoh : : n:=pos('kabar','Apa kabar ?'); { n:=5; }
 Jika substring tidak ditemukan, maka akan mengembalikan 0.

Val, mengkonversi string menjadi numerik.

 Syntax : val(strvar,numvar,errorcode)

 strvar adalah suatu variabel string yang akan di konversi
 numvar adalah variabel integer atau real
 errorcode adalah variabel integer yang akan berisi nilai kesalahan, jika berisi 0 sukses.

 Contoh : :

Var
  s : string;
  e : integer;
  r : real;

Begin
  Write('Enter a number : '); readln(s);
  val(s,r,e);
  if e<>0 then
      writeln('Error at position : ',e);
  else
      writeln('That was : ',r:4:3);
end.

Str, mengkonversi numerik menjadi string.
  Syntax : (numvar,strvar)

 Contoh : :

var
  s : string;
  i : integer;
begin
  write('Input an integer : '); readln(i);
  str(i,s);
  writeln('That was : ',s);
end.

Jika anda bekerja dengan type real, anda perlu melakukan pemformatan sebelum konversi
ke string.


Indoprog                                                                               55
Algoritma & Pemrograman                                                     Hendra, S.T.



Contoh : :

var
  s : string;
  r : real;
begin
  write('Input a real : '); readln(r);
  str(r:4:3,s);
  writeln('That was : ',s);
end.

Concat, mengabung dua string atau lebih

 Syntax : concat(s1,s2,...,sn)

 Contoh : st:=concat(s1,s2);

 Jika s1 adalah 'STMIK', dan s2 adalah 'IBBI', maka st menjadi 'STMIKIBBI'

Sebenarnya kita juga dapat menggunakan operator + untuk mengabung string.

 Contoh : st:=s1 + s2;           {adalah sama dengan st:=concat(s1,s2);}

Insert, menyisip suatu string kedalam string lain dari posisi tertentu
  Syntax : insert(source,target,index)

 Contoh : :

var
  s1, s2 : string;
begin
  s1:='not ';
  s2:='I do love you';
  insert(s1,s2,6);
  writeln(s2);      { I do not love you }
end.

Delete, menghapus sejumlah character dari string mulai posisi ke i
 Syntax : delete(s,i,n);

var
  s : string;
begin
  s:='I am not responsible for that !';
  delete(s,6,3);
  writeln(s);    { I am responsible for that }
end.




Indoprog                                                                            56
Algoritma & Pemrograman                                                          Hendra, S.T.


Latihan 7
1.       What is a string ?

2.       Explain what the relationsip between string and character in pascal !

2.       What is the maximum length of a string ?

3.       How is the declaration ?

4.       Explain how to merge two string, using function and operator !

5.       Explain how to convert string to value and vice versa !

6.       Explain how to know the length of a string !

Latihan di laboratorium

8. Make programs for serveral task like this:
    a. Make all letters in a string upcase.
    b. Make all letters in a string lowcase.
    c. Count the number of word in a sentence

program ubah_kalimat_menjadi_huruf_kecil;

var
  kalimat : string;
  i : byte;

begin
  write('Ketik sebuah kalimat :');
  readln(kalimat);

     for i := 1 to length(kalimat) do
         if kalimat[i] in ['A'..'Z'] then
            kalimat[i] := chr(ord(kalimat[i])+32);

     writeln(kalimat);

     readln;

end.

9. Make a text animation. Display a sentence in the center of the screen. And scroll it Left
To Right !

program putar_kiri_ke_kanan;

Uses CRT;




Indoprog                                                                                 57
Algoritma & Pemrograman                                                    Hendra, S.T.

var
  kalimat : string;
  i : byte;

begin
  write('Ketik sebuah kalimat :');
  readln(kalimat);

  repeat

      gotoxy(13, (80-len(kalimat)) div 2);
      write(kalimat);

      kalimat:=copy(kalimat,length(kalimat),1) +
               copy(kalimat,1,length(kalimat)-1);

  until keypressed;

  readln;
end.

10. Make a text animation. Display a sentence in the center of the screen. And scroll it
Right To Left !

Latihan di rumah

Make a simple calculator that can perform addition, substraction User input the equation
then press enter. You should give the answer. Example :
      Input : 5+10
      Output : 15


program kalkulator_ekspresi;

var

  ekspresi      : string;
  temp1,temp2   : string;
  val1,val2,
  result        : real;
  numcode       : integer;
begin

  write('masukkan ekspresi penjumlahan :');
  readln(ekspresi);
  temp1:=copy(ekspresi,1,pos('+',ekspresi)-1);
  temp2:=copy(ekspresi,pos('+',ekspresi)+1,length(ekspresi)-
pos('+',ekspresi));
  val(temp1,val1,numcode);
  val(temp2,val2,numcode);
  result := val1 + val2;
  writeln('Hasil perhitungan :',result:10:2);
  readln;




Indoprog                                                                           58
Algoritma & Pemrograman   Hendra, S.T.

end.




Indoprog                          59
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer
Pengantar algoritma & pemrograman komputer

More Related Content

What's hot (20)

Deadlock
DeadlockDeadlock
Deadlock
 
Pert.3 proses dan thread
Pert.3 proses dan threadPert.3 proses dan thread
Pert.3 proses dan thread
 
Array dan Contoh
Array dan ContohArray dan Contoh
Array dan Contoh
 
Transport layer
Transport layerTransport layer
Transport layer
 
Penjadwalan dan perhitungan kinerja cpu
Penjadwalan  dan perhitungan kinerja cpuPenjadwalan  dan perhitungan kinerja cpu
Penjadwalan dan perhitungan kinerja cpu
 
Pemrograman Mobile 1 - 3. Membuat Project Android.pptx
Pemrograman Mobile 1 - 3. Membuat Project Android.pptxPemrograman Mobile 1 - 3. Membuat Project Android.pptx
Pemrograman Mobile 1 - 3. Membuat Project Android.pptx
 
#1 PENGENALAN PYTHON
#1 PENGENALAN PYTHON#1 PENGENALAN PYTHON
#1 PENGENALAN PYTHON
 
CNF
CNFCNF
CNF
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomata
 
PERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAKPERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAK
 
Looping Algoritma
Looping AlgoritmaLooping Algoritma
Looping Algoritma
 
Organisasi komputer-4
Organisasi komputer-4Organisasi komputer-4
Organisasi komputer-4
 
Sistem File
Sistem FileSistem File
Sistem File
 
Deadlock pada sistem operasi
Deadlock pada sistem operasiDeadlock pada sistem operasi
Deadlock pada sistem operasi
 
Paralel prosesor
Paralel prosesorParalel prosesor
Paralel prosesor
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 
Sistem Operasi
Sistem OperasiSistem Operasi
Sistem Operasi
 
Tugas Presentasi Sistem operasi II linux vs windows
Tugas Presentasi Sistem operasi II linux vs windowsTugas Presentasi Sistem operasi II linux vs windows
Tugas Presentasi Sistem operasi II linux vs windows
 
Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma
 
Analisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi AsimptotikAnalisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi Asimptotik
 

Viewers also liked

Viewers also liked (9)

Remote control alarm sepeda motor
Remote control alarm sepeda motorRemote control alarm sepeda motor
Remote control alarm sepeda motor
 
Studi Mengenai Aspek Privasi pada Sistem RFID
Studi Mengenai Aspek Privasi pada Sistem RFIDStudi Mengenai Aspek Privasi pada Sistem RFID
Studi Mengenai Aspek Privasi pada Sistem RFID
 
Melangkah dengan Microsoft Windows Server 2003
Melangkah dengan Microsoft Windows Server 2003Melangkah dengan Microsoft Windows Server 2003
Melangkah dengan Microsoft Windows Server 2003
 
Bank Soal UNAS RPL
Bank Soal UNAS RPLBank Soal UNAS RPL
Bank Soal UNAS RPL
 
Pengenalan Rekayasa Perangkat Lunak
Pengenalan Rekayasa Perangkat LunakPengenalan Rekayasa Perangkat Lunak
Pengenalan Rekayasa Perangkat Lunak
 
Arsitektur Sistem Basis Data
Arsitektur Sistem Basis DataArsitektur Sistem Basis Data
Arsitektur Sistem Basis Data
 
Pemodelan Basis Data Lainnya
Pemodelan Basis Data LainnyaPemodelan Basis Data Lainnya
Pemodelan Basis Data Lainnya
 
Access control-systems
Access control-systemsAccess control-systems
Access control-systems
 
Sekilas tentang HaKI
Sekilas tentang HaKISekilas tentang HaKI
Sekilas tentang HaKI
 

Similar to Pengantar algoritma & pemrograman komputer

Bab 2 Definisi Algoritma
Bab 2 Definisi AlgoritmaBab 2 Definisi Algoritma
Bab 2 Definisi Algoritmapakdemamo
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)adi yusuf
 
1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritmaHardini_HD
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaAvenzz Venzz
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaChabil_Juniar
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaFisma Ananda
 
Bahasa pemrograman
Bahasa pemrogramanBahasa pemrograman
Bahasa pemrogramanery gunawan
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrogramanMuhammad Salihin
 
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Hairil Rahman
 
Bahasa pemograman
Bahasa pemogramanBahasa pemograman
Bahasa pemogramanYusup Palsu
 
Bahasa pemrograman sistem mikroprosesor
Bahasa pemrograman sistem mikroprosesorBahasa pemrograman sistem mikroprosesor
Bahasa pemrograman sistem mikroprosesorYuli Ermawati
 
Kegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartKegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartSyaiful Ahdan
 

Similar to Pengantar algoritma & pemrograman komputer (20)

Dasar pemrograman
Dasar pemrogramanDasar pemrograman
Dasar pemrograman
 
Definisi Algoritma
Definisi AlgoritmaDefinisi Algoritma
Definisi Algoritma
 
Bab 2 Definisi Algoritma
Bab 2 Definisi AlgoritmaBab 2 Definisi Algoritma
Bab 2 Definisi Algoritma
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)
 
1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
Bahasa pemrograman
Bahasa pemrogramanBahasa pemrograman
Bahasa pemrograman
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrograman
 
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
 
1 ADP Algoritma
1   ADP Algoritma1   ADP Algoritma
1 ADP Algoritma
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
Bahasa pemograman
Bahasa pemogramanBahasa pemograman
Bahasa pemograman
 
Bahasa pemrograman sistem mikroprosesor
Bahasa pemrograman sistem mikroprosesorBahasa pemrograman sistem mikroprosesor
Bahasa pemrograman sistem mikroprosesor
 
Kegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartKegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchart
 
Modul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdfModul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdf
 
Modul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rplModul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rpl
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
Bab 1
Bab 1 Bab 1
Bab 1
 

More from Materi Kuliah Online

Internet dan Layanan Aplikasi Terdistribusi
Internet dan Layanan Aplikasi TerdistribusiInternet dan Layanan Aplikasi Terdistribusi
Internet dan Layanan Aplikasi TerdistribusiMateri Kuliah Online
 
Aspek Security pada Penerapan m-Commerce di Indonesia
Aspek Security pada Penerapan m-Commerce di IndonesiaAspek Security pada Penerapan m-Commerce di Indonesia
Aspek Security pada Penerapan m-Commerce di IndonesiaMateri Kuliah Online
 
A Comparison of Proximity Authentication Approaches
A Comparison of Proximity Authentication ApproachesA Comparison of Proximity Authentication Approaches
A Comparison of Proximity Authentication ApproachesMateri Kuliah Online
 
Kajian Perkembangan Teknologi Smart Card dari Segi Keamanan
Kajian Perkembangan Teknologi Smart Card dari Segi KeamananKajian Perkembangan Teknologi Smart Card dari Segi Keamanan
Kajian Perkembangan Teknologi Smart Card dari Segi KeamananMateri Kuliah Online
 
Catu Daya dan Rangkaian Penyearah Gelombang
Catu Daya dan Rangkaian Penyearah GelombangCatu Daya dan Rangkaian Penyearah Gelombang
Catu Daya dan Rangkaian Penyearah GelombangMateri Kuliah Online
 
Simulasi Anti Integral Windup dengan Clamp Integrator
Simulasi Anti Integral Windup dengan Clamp IntegratorSimulasi Anti Integral Windup dengan Clamp Integrator
Simulasi Anti Integral Windup dengan Clamp IntegratorMateri Kuliah Online
 
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware Technology
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware TechnologyPrinsip-prinsip Asas E-Construction, K-Constructions dan Groupware Technology
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware TechnologyMateri Kuliah Online
 
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan Telepon
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan TeleponPenggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan Telepon
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan TeleponMateri Kuliah Online
 
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara Wireless
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara WirelessPenggunaan DT-Basic Untuk Membaca Nomor Identitas Secara Wireless
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara WirelessMateri Kuliah Online
 
Proses dan Penjadualan : Prioritas dan Multiprosesor
Proses dan Penjadualan : Prioritas dan MultiprosesorProses dan Penjadualan : Prioritas dan Multiprosesor
Proses dan Penjadualan : Prioritas dan MultiprosesorMateri Kuliah Online
 
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12V
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12VPembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12V
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12VMateri Kuliah Online
 
Konsep Pendidikan Tinggi Berbasis E-Learning
Konsep Pendidikan Tinggi Berbasis E-LearningKonsep Pendidikan Tinggi Berbasis E-Learning
Konsep Pendidikan Tinggi Berbasis E-LearningMateri Kuliah Online
 
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...Materi Kuliah Online
 
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis Nirkabel
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis NirkabelPenataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis Nirkabel
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis NirkabelMateri Kuliah Online
 
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet Radio
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet RadioPerancangan dan Pengkajian UHF Spread Spectrum Ethernet Radio
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet RadioMateri Kuliah Online
 
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...Materi Kuliah Online
 
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh Materi Kuliah Online
 

More from Materi Kuliah Online (20)

Internet dan Layanan Aplikasi Terdistribusi
Internet dan Layanan Aplikasi TerdistribusiInternet dan Layanan Aplikasi Terdistribusi
Internet dan Layanan Aplikasi Terdistribusi
 
Aspek Security pada Penerapan m-Commerce di Indonesia
Aspek Security pada Penerapan m-Commerce di IndonesiaAspek Security pada Penerapan m-Commerce di Indonesia
Aspek Security pada Penerapan m-Commerce di Indonesia
 
A Comparison of Proximity Authentication Approaches
A Comparison of Proximity Authentication ApproachesA Comparison of Proximity Authentication Approaches
A Comparison of Proximity Authentication Approaches
 
Kajian Perkembangan Teknologi Smart Card dari Segi Keamanan
Kajian Perkembangan Teknologi Smart Card dari Segi KeamananKajian Perkembangan Teknologi Smart Card dari Segi Keamanan
Kajian Perkembangan Teknologi Smart Card dari Segi Keamanan
 
Catu Daya dan Rangkaian Penyearah Gelombang
Catu Daya dan Rangkaian Penyearah GelombangCatu Daya dan Rangkaian Penyearah Gelombang
Catu Daya dan Rangkaian Penyearah Gelombang
 
Dioda dan Catu Daya
Dioda dan Catu DayaDioda dan Catu Daya
Dioda dan Catu Daya
 
Simulasi Anti Integral Windup dengan Clamp Integrator
Simulasi Anti Integral Windup dengan Clamp IntegratorSimulasi Anti Integral Windup dengan Clamp Integrator
Simulasi Anti Integral Windup dengan Clamp Integrator
 
Radio Frequency Identification
Radio Frequency IdentificationRadio Frequency Identification
Radio Frequency Identification
 
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware Technology
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware TechnologyPrinsip-prinsip Asas E-Construction, K-Constructions dan Groupware Technology
Prinsip-prinsip Asas E-Construction, K-Constructions dan Groupware Technology
 
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan Telepon
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan TeleponPenggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan Telepon
Penggunaan DT-51 Untuk Komunikasi Mikrokontroler Melalui Jaringan Telepon
 
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara Wireless
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara WirelessPenggunaan DT-Basic Untuk Membaca Nomor Identitas Secara Wireless
Penggunaan DT-Basic Untuk Membaca Nomor Identitas Secara Wireless
 
Interfacing Number Display
Interfacing Number DisplayInterfacing Number Display
Interfacing Number Display
 
Proses dan Penjadualan : Prioritas dan Multiprosesor
Proses dan Penjadualan : Prioritas dan MultiprosesorProses dan Penjadualan : Prioritas dan Multiprosesor
Proses dan Penjadualan : Prioritas dan Multiprosesor
 
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12V
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12VPembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12V
Pembuatan Rangkaian Adaptor dengan Keluaran 5V dan 12V
 
Konsep Pendidikan Tinggi Berbasis E-Learning
Konsep Pendidikan Tinggi Berbasis E-LearningKonsep Pendidikan Tinggi Berbasis E-Learning
Konsep Pendidikan Tinggi Berbasis E-Learning
 
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...
Pengaturan Level Sistem SCPC-FM untuk Memperoleh Performansi yang Baik dalam ...
 
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis Nirkabel
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis NirkabelPenataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis Nirkabel
Penataan Spektrum Frekuensi Radio Layanan Akses Pita Lebar Berbasis Nirkabel
 
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet Radio
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet RadioPerancangan dan Pengkajian UHF Spread Spectrum Ethernet Radio
Perancangan dan Pengkajian UHF Spread Spectrum Ethernet Radio
 
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...
Akuisisi Runtun Pseudo Noise Tanpa Dan Dengan Modulasi Menggunakan Teknik Pen...
 
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
 

Recently uploaded

Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxDwiYuniarti14
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxIgitNuryana13
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Abdiera
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggeraksupriadi611
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdftsaniasalftn18
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 
Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdfvebronialite32
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxSyaimarChandra1
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfElaAditya
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...MarwanAnugrah
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CAbdiera
 

Recently uploaded (20)

Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggerak
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdf
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 
Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdf
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase CModul Ajar Pendidikan Pancasila Kelas 5 Fase C
Modul Ajar Pendidikan Pancasila Kelas 5 Fase C
 

Pengantar algoritma & pemrograman komputer

  • 1. Algoritma & Pemrograman Hendra, S.T. 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 Sesuatu hal yang harus dipahami bahwa setiap CPU hanya mengerti satu bahasa. Bahasa ini dikenal sebagai machine language (bahasa mesin). Indoprog 1
  • 2. Algoritma & Pemrograman Hendra, S.T. 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 sebenarnya bukanlah suatu langkah yang besar. Bahasa Assembly adalah suatu mnemonic sederhana untuk mengantikan bahasa mesin. Dari pada menulis angka 54 24 66 9C FE C2 84 92 kedalam memori, programmer bahasa assembly dapat menulis LDX 24, [669C]. Indoprog 2
  • 3. Algoritma & Pemrograman Hendra, S.T. 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 assembler, dan baru dapat dijalankan. Indoprog 3
  • 4. Algoritma & Pemrograman Hendra, S.T. 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. Ketika anda menggunakan suatu compiler, ia akan membaca perintah source code dan menulis kode mesin. Setelah selesai keseluruhan kode mesin akan disimpan untuk pemakaian selanjutnya. Ketika anda ingin menjalankan program tersebut, system operasi akan menjalankan kode mesin yang telah disimpan – dalam hal ini source code tidak diperlukan lagi. Eksekusi menjadi lebih cepat, dan dapat dijalankan dikomputer lain (dalam hal ini pada komputer dan system operasi yang sama) Indoprog 4
  • 5. Algoritma & Pemrograman Hendra, S.T. 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 Kasus pertama dari algoritma yang ditulis untuk komputer adalah catatan Ada Byron's notes pada analytical engine yang ditulis pada tahun 1842, yang mana diyakini Indoprog 5
  • 6. Algoritma & Pemrograman Hendra, S.T. 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. Pemrograman dalam pengertian luas meliputi seluruh kegiatan yang tercakup dalam pembuatan program, termasuk analisis kebutuhan (requirement's analysis) dan keseluruhan tahapan dalam perencanaan (planning), perancangan (design) dan pewujudannya (implementation). Dalam pengertian yang lebih sempit, pemrograman merupakan pengkodean (coding atau program writing = penulisan program) dan pengujiannya (testing) berdasarkan rancangan tertentu. Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan program-program terapan komersial yang membedakan antara system analyst yang bertanggung jawab dalam menganalisa kebutuhan, perencanaan dan perancangan program dengan pemrogram (programmer) yang bertugas membuat kode program dan menguji kebenaran program. Indoprog 6
  • 7. Algoritma & Pemrograman Hendra, S.T. 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). Dokumentasi Pembuatan catatan pada program terutama pada modul-modul yang rumit. Suatu ilustrasi tentang rumitnya SDLC yang dapat menyebabkan kekacauan berikut ini : Indoprog 7
  • 8. Algoritma & Pemrograman Hendra, S.T. How the customers How the Project How the Analyst How the explained it Leader understood designed it Programmer wrote it it How the Business How the project What operations How the customer Consultant was documented installed was billed described it How it was supported What the customer really needed Indoprog 8
  • 9. Algoritma & Pemrograman Hendra, S.T. 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 } procedure TUKAR(input/output A:integer, input/output B:integer) Indoprog 9
  • 10. Algoritma & Pemrograman Hendra, S.T. { 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. Sub program Indoprog 10
  • 11. Algoritma & Pemrograman Hendra, S.T. Komentar Contoh pemakaian flowchart: Sequential (berurutan) perhitungan volume dan luas permukaan silinder Selection/Branching Structure (Struktur pemilihan) Indoprog 11
  • 12. Algoritma & Pemrograman Hendra, S.T. Repetition/Looping Structure(Struktur pengulangan) Indoprog 12
  • 13. Algoritma & Pemrograman Hendra, S.T. Kombinasi Indoprog 13
  • 14. Algoritma & Pemrograman Hendra, S.T. 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 pemrograman yang sama. Karena bentuk pseudocode bervairasi dari pengarang yang satu dengan pengarang yang lain, tetapi bentuk yang sering digunakan untuk pengenalan adalah sebagai berikut : Indoprog 14
  • 15. Algoritma & Pemrograman Hendra, S.T. BEGIN { mulai } { input } read(R); { proses } If R <= 0 then tulis("Data salah !") else L_Lingkaran = PHI x R x R; { output } write(l_Lingkaran); END; { selesai } Indoprog 15
  • 16. Algoritma & Pemrograman Hendra, S.T. 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. Pada 1957, bahasa khusus yang pertama muncul dalam bentuk FORTRAN yang merupakan singkatan dari sistem FORmula TRANslating. Bahasa ini dirancang pada IBM untuk perhitungan scientific. Komponen-komponennya sangat sederhana, dan Indoprog 16
  • 17. Algoritma & Pemrograman Hendra, S.T. 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. Pascal dimulai pada tahun 1968 oleh Niklaus Wirth. Tujuan utama Indoprog 17
  • 18. Algoritma & Pemrograman Hendra, S.T. 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. Pada akhir tahun 1970 dan awal 1980, suatu metode pemrograman yang baru telah Indoprog 18
  • 19. Algoritma & Pemrograman Hendra, S.T. 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 "widgets." Widget memiliki properti (seperti warna) dan events (seperti klik dan double klik) dan menjadi pusat dari pengembangan antarmuka dengan pemakai diberbagai bahasa program dewasa ini. VB merupakan program yang banyak digunakan untuk membuat interface sederhana ke produk Microsoft lainnya seperti Excel dan Access tanpa membaca banyak kode, dengannya dapat dimungkinkan untuk dibuat aplikasi yang lengkap. Indoprog 19
  • 20. Algoritma & Pemrograman Hendra, S.T. 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 ? 7. Draw the symbols use in flowchart, and mention each symbols function ! Indoprog 20
  • 21. Algoritma & Pemrograman Hendra, S.T. 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 Free Pascal (aka FPK Pascal) is a 32 or 64 bit (from 1.9.6) pascal compiler. It is available for different processors Intel x86, Amd64/x86 64 (from 1.9.6), PowerPC (from 1.9.2), Sparc (from 1.9.6) and Motorola 680x0 (1.0.x only). The following operating systems are supported Linux, FreeBSD, NetBSD, Indoprog 21
  • 22. Algoritma & Pemrograman Hendra, S.T. 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 According to the Pascal Standard (ISO 7185), these goals were to a) make available a language suitable for teaching programming as a systematic discipline based on fundamental concepts clearly and naturally reflected by the language, and b) to define a language whose implementations could be both reliable and efficient on then-available computers. Indoprog 22
  • 23. Algoritma & Pemrograman Hendra, S.T. 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 : Unit system merupakan unit yang secara otomatis akan disertakan dalam setiap program, unit inilah mengatur semua perintah dasar input dan output pada Pascal. Sedangkan unit- unit lain hanya akan disertakan bila kita pilih pada bagian uses. Indoprog 23
  • 24. Algoritma & Pemrograman Hendra, S.T. 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 Type variable yang beguna untuk pengolahan data yang bulat, type ini masih terbagi atas berberapa menurut jangkauan data dan ukurannya : Type Jangkuan Ukuran Shortint -128..127 8 bit Integer -32768..32767 16 bit Longint -2147483648..2147483647 32 bit Byte 0..255 8 bit Indoprog 24
  • 25. Algoritma & Pemrograman Hendra, S.T. Word 0..65535 16 bit - 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 : Type Jangkauan Ketelitian Ukuran Real 2.9e-39..1.7e38 11-12 digit 6 bit Single 1.5e-45..3.4e38 ³ 7-8 7-8 digit 4 bit Double 5.0e-324..1.7e308 15-16 digit 8 bit Extended 3.4e-4932..1.1e4932 19-20 digit 10 bit Comp -9.2e18..9.2e18 19-20 digit 8 bit Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain : Operator Integer Type Real Type + Penjumlahan Penjumlahan - Pengurangan Pengurangan * Perkalian Perkalian / Pembagian Pembagian DIV Hasil bagi MOD Sisa Bagi Operator Integer Type Boolean Type NOT Bitwise Negation Logical Negation AND Bitwise AND Logical AND OR Bitwise inclusive OR Logical inclusive OR XOR Bitwise exclusive OR Logical exclusive OR SHL Bitwise shift-left SHR Bitwise shift-right Operator relasi yang mengembalikan hasil Boolean Operator Fungsi := Menyatakan nilai = Sama dengan <> Tidak sama dengan < Lebih kecil > Lebih besar <= Lebih kecil atau sama dengan >= Lebih besar atau sama dengan Apa pengertian Pascal adalah bahasa yang strong type ? Indoprog 25
  • 26. Algoritma & Pemrograman Hendra, S.T. 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; Writeln('Bilangan Pi adalah ', Pi); Writeln('Bilangan Pi adalah ', Pi:2:3); end. Indoprog 26
  • 27. Algoritma & Pemrograman Hendra, S.T. 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" ? 5. How can we write two blank lines on the screen ? Indoprog 27
  • 28. Algoritma & Pemrograman Hendra, S.T. 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. 4. Make a program to convert temperature from Celcius to Reamur, Kelvin, and Fahrenheit. Indoprog 28
  • 29. Algoritma & Pemrograman Hendra, S.T. 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; Atau lebih baik ditulis sebagai Indoprog 29
  • 30. Algoritma & Pemrograman Hendra, S.T. 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' else { 69 or below goes here } if mark>=60 then Indoprog 30
  • 31. Algoritma & Pemrograman Hendra, S.T. 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; Writeln ('Anda berhak mendapat potongan 3%'); End; Indoprog 31
  • 32. Algoritma & Pemrograman Hendra, S.T. 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 !'); 5. Make a program to ask ages. Classify the ages into these categories : * age < 2 ==> "You are a baby !" Indoprog 32
  • 33. Algoritma & Pemrograman Hendra, S.T. * 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) 6. Using ABC formula, make a program to solve aX2 + bX + C problem. Indoprog 33
  • 34. Algoritma & Pemrograman Hendra, S.T. 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 ? Kita menggunakan To kalau nilai awal < nilai akhir, dan sebaliknya pakai DownTo Contoh : Indoprog 34
  • 35. Algoritma & Pemrograman Hendra, S.T. 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; Contoh : I := 1; Repeat Indoprog 35
  • 36. Algoritma & Pemrograman Hendra, S.T. 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 Writeln(' STMIK IBBI'); I := I + 1; Indoprog 36
  • 37. Algoritma & Pemrograman Hendra, S.T. 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 ! 3. Suppose the output is : 1 Indoprog 37
  • 38. Algoritma & Pemrograman Hendra, S.T. 2 3 4 5 6 Write an excerpt using all three syntaxes ! 4. Explain how to nest one syntax to another ! Latihan di laboratorium 1. Input : 5 2. Input : 5 Output : 1 2 3 4 5 4 3 2 1 Output : 1 2 3 4 5 Input : 1 1 2 3 4 5 Output : 1 1 2 3 4 5 1 2 3 4 5 3. Input : 5 1 2 3 4 5 Output : 1 2 3 4 5 4. Input : 5 2 3 4 5 1 Output : 1 3 4 5 1 2 1 2 4 5 1 2 3 1 2 3 5 1 2 3 4 1 2 3 4 1 2 3 4 5 5. Input : 5 6. Input : 5 Output : 1 Output : 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 7. Input : 5 Output : 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 4 4 4 4 3 2 1 1 2 3 3 3 3 3 3 3 3 3 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 program jawaban_soal_no_2; var n,i,j : byte; begin write('jumlah data :'); readln(n); for i := 1 to n do begin for j := 1 to n do write (j); writeln; end; readln; Indoprog 38
  • 39. Algoritma & Pemrograman Hendra, S.T. end. program jawaban_soal_no_5; var n,i,j : byte; begin write('jumlah data :'); readln(n); for i := 1 to n do begin for j := 1 to i do write (i); writeln; end; readln; end. program jawaban_soal_no_6; var n,l,r,t,b : byte; begin write('jumlah data :'); readln(n); r := n; for l := 1 to n do begin b := n; for t := 1 to n do begin if (l <= r) and (l <= t) and (l <= b) then write(l) else if (r <= l) and (r <= t) and (r <= b) then write(r) else if (t <= l) and (t <= r) and (t <= b) then write(t) else write(b); b := b - 1; end; writeln; r := r - 1; end; readln; end. 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; var Indoprog 39
  • 40. Algoritma & Pemrograman Hendra, S.T. 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 5 5 Output : 5 is a prime ! Indoprog 40
  • 41. Algoritma & Pemrograman Hendra, S.T. 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. Adakah bentuk array yang lain, selain yang anda sebutkan ? Indoprog 41
  • 42. Algoritma & Pemrograman Hendra, S.T. 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 ! 5. How can we declare two or more dimension in array and explain the usage. 6. Suppose we have n : array[char] of byte; Is it valid ? Explain. Indoprog 42
  • 43. Algoritma & Pemrograman Hendra, S.T. Latihan di Laboratorium 1. Make a Pascal triangle, example : Input : 7 Output : 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 program segitiga_pascal; var baris_kini, baris_lalu : array [0..99] of integer; n,i,j : byte; begin write('jumlah baris :'); readln(n); baris_lalu[0] := 0; baris_lalu[1] := 1; baris_lalu[2] := 0; for i := 1 to n do begin for j := 1 to i do begin baris_kini[j] := baris_lalu[j-1]+baris_lalu[j]; write(baris_kini[j]:3); end; baris_lalu := baris_kini; writeln; end; readln; end. 2. Suppose you have an array 100 elements of random numbers. Find its average, maxi- mum and minimum value of the elements. Program mencari_nilai_minimum_dari_100_nilai_random; const jd = 100; var arr : array [1..100] of integer; i : byte; min : integer; begin randomize; for i := 1 to jd do arr[i] := random(1000); min := arr[1]; for i := 2 to jd do if arr[i] < min then min = arr[i]; writeln('Nilai minimum :', min); readln; Indoprog 43
  • 44. Algoritma & Pemrograman Hendra, S.T. 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 for j := 1 to jk do begin write('Data ke ',i,'-',j,':'); readln(arr1[i,j]); end; writeln('Data Matrix 2'); for i := 1 to jb do for j := 1 to jk do begin write('Data ke ',i,'-',j,':'); readln(arr2[i,j]); end; {penjumlahan matrix} for i := 1 to jb do for j := 1 to jk do arr3[i,j] := arr1[i,j] + arr2[i,j]; writeln('Hasil penjumlahan'); for i := 1 to jb do for j := 1 to jk do begin writeln('Data ke ',i,'-',j,':',arr3[i,j]); end; readln; end. Modul 5 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 : • Bubble Sort - O(n²) • Selection Sort - O(n²) Indoprog 44
  • 45. Algoritma & Pemrograman Hendra, S.T. • 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 Pseudorandom numbers are a critical part of modern computing, from cryptography to the Monte Carlo method for simulating physical systems. Indoprog 45
  • 46. Algoritma & Pemrograman Hendra, S.T. 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 complexity theory, computer science, and mathematics to describe the asymptotic behavior of functions. It indicates how fast a function grows or declines. Indoprog 46
  • 47. Algoritma & Pemrograman Hendra, S.T. 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; t := a[i]; Indoprog 47
  • 48. Algoritma & Pemrograman Hendra, S.T. 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 Shell sort (or Shellsort) is one of the oldest sorting algorithms, named after its inventor D.L. Shell [Sh]. Indoprog 48
  • 49. Algoritma & Pemrograman Hendra, S.T. 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); readln; end. Indoprog 49
  • 50. Algoritma & Pemrograman Hendra, S.T. 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 Binary Search mengasumsikan data adalah dalam keadaan berurut dan mengambil manfaat dari karakteristik tersebut. Binary search adalah algoritma logaritmik dan Indoprog 50
  • 51. Algoritma & Pemrograman Hendra, S.T. 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 low := j; Indoprog 51
  • 52. Algoritma & Pemrograman Hendra, S.T. end; if a[low] = findvalue then writeln('data found at :',low); else writeln('data not found') Latihan 6 1. What is search algorithm ? 2. Explain how linear search work ! 3. Explain how binary search work ! 4. Explain how interpolation search work ! 5. Can we use binary search in not ordered list ? How about linier search ? Why ? 6. Explain when interpolation search is better than binary search ! 7. Suppose we have an array contain 10 data (1,3,6,7,8,9,10,11,12,13), please write down step by step data comparing data which find value is 12 using Binary Search and Interpolation Search ! Latihan di Laboratorium 1. Write a program to generate 10000 random number, and then sort it Shell Sort, examine how many data comparing to find a value using linier search, binary search and interpolation search. program analisa_binary_search; const jd = 10000; var arr : array [1..10000] of integer; j,t,gap, findvalue, first,last, mid,jb : integer; continue : boolean; begin {generate 10000 bilangan random} randomize; for j := 1 to jd do arr[j] := random(jd); {urut data dengan algoritma shell sort} for gap := (jd div 2) downto 1 do for j := 1 to (jd-gap) do if arr[j] > arr[j+gap] then begin t := arr[j]; arr[j] := arr[j+gap]; arr[j+gap] := t; end; {tanya data yang dicari} Indoprog 52
  • 53. Algoritma & Pemrograman Hendra, S.T. write('Nilai yang dicari 0-10000 :'); readln(findvalue); {pencarian data dengan binary search} first:=1; last :=jd; jb := 0; 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); writeln('jumlah perbandingan data :',jb); readln; end. Modul 7 Pada contoh maupun tugas modul-modul sebelumnya kita telah banyak menggunakan string (pada saat writeln), apakah sebenarnya string pada Pascal ? Sebenarnya string adalah suatu array dari char, maksudnya anda dapat mengambil masing- masing character dari suatu string dengan memperlakukannya sebagai elemen dari array. Contoh : Var Nama : String; Begin Nama := 'Computer'; Writeln(Nama[1]); Writeln(Nama[8]); Nama[1] := 'K'; Writeln(Nama); Indoprog 53
  • 54. Algoritma & Pemrograman Hendra, S.T. End. Maka Nama[1] adalah huruf 'C', dan Nama[8] adalah huruf 'r'. Sedangkan Nama[1] := 'K'; akan menyebabkan string nama berubah menjadi 'Komputer'. Oh, begitu saja, jadi kita sudah selesai hari ini ? Tunggu dulu, sebenarnya kalau kita dapat juga mendeklarasikan string dengan : Var Nama : String; Alamat : String[40]; Dalam hal ini variabel Nama dapat menampung maksimal 255 character, sedangkan untuk variabel Alamat dapat menampung maksimal 40 character. Jadi kita dapat mendeklarasikan variabel string dengan panjang tertentu, berapa panjang maksimal yang diperbolehkan ? Sebenarnya kalau kita tidak menentukan panjang string ketika deklarasi, maka otomatis pascal menyediakan 255 character untuk string kita, dalam hal ini merupakan panjang maksimal yang diperbolehkan untuk suatu type data string. Bolehkan kita memesan variabel array string ? Boleh, anda dapat melakukannya. Contoh : NamaSiwa : Array[1..10] Of String[30]; Pada program Hangman, saya melihat adanya pemakaian fungsi Length, Pos, apa fungsinya, dan adakah yang lain ? Ya, itu adalah fungsi bantu yang disediakan oleh Pascal untuk melakukan pengolahan data string, Adapun fungsi bantu untuk string adalah sebagai berikut : Length, mendapatkan panjang string Syntax : length(s) Contoh : : n:=length(s); Misalnya s:='Apa kabar ?'; n akan berisi 11. Copy, mendapatkan bagian dari suatu string. Syntax : copy(s,from,howmuch) Contoh : : st:=copy(s,5,5); Indoprog 54
  • 55. Algoritma & Pemrograman Hendra, S.T. Menggambil 5 character mulai posisi ke 5 Misalnya s:='Apa kabar ?'; st akan berisi 'kabar'. Pos, mengambil posisi substring dari suatu string. Syntax : Pos(substr,s) Contoh : : n:=pos('kabar','Apa kabar ?'); { n:=5; } Jika substring tidak ditemukan, maka akan mengembalikan 0. Val, mengkonversi string menjadi numerik. Syntax : val(strvar,numvar,errorcode) strvar adalah suatu variabel string yang akan di konversi numvar adalah variabel integer atau real errorcode adalah variabel integer yang akan berisi nilai kesalahan, jika berisi 0 sukses. Contoh : : Var s : string; e : integer; r : real; Begin Write('Enter a number : '); readln(s); val(s,r,e); if e<>0 then writeln('Error at position : ',e); else writeln('That was : ',r:4:3); end. Str, mengkonversi numerik menjadi string. Syntax : (numvar,strvar) Contoh : : var s : string; i : integer; begin write('Input an integer : '); readln(i); str(i,s); writeln('That was : ',s); end. Jika anda bekerja dengan type real, anda perlu melakukan pemformatan sebelum konversi ke string. Indoprog 55
  • 56. Algoritma & Pemrograman Hendra, S.T. Contoh : : var s : string; r : real; begin write('Input a real : '); readln(r); str(r:4:3,s); writeln('That was : ',s); end. Concat, mengabung dua string atau lebih Syntax : concat(s1,s2,...,sn) Contoh : st:=concat(s1,s2); Jika s1 adalah 'STMIK', dan s2 adalah 'IBBI', maka st menjadi 'STMIKIBBI' Sebenarnya kita juga dapat menggunakan operator + untuk mengabung string. Contoh : st:=s1 + s2; {adalah sama dengan st:=concat(s1,s2);} Insert, menyisip suatu string kedalam string lain dari posisi tertentu Syntax : insert(source,target,index) Contoh : : var s1, s2 : string; begin s1:='not '; s2:='I do love you'; insert(s1,s2,6); writeln(s2); { I do not love you } end. Delete, menghapus sejumlah character dari string mulai posisi ke i Syntax : delete(s,i,n); var s : string; begin s:='I am not responsible for that !'; delete(s,6,3); writeln(s); { I am responsible for that } end. Indoprog 56
  • 57. Algoritma & Pemrograman Hendra, S.T. Latihan 7 1. What is a string ? 2. Explain what the relationsip between string and character in pascal ! 2. What is the maximum length of a string ? 3. How is the declaration ? 4. Explain how to merge two string, using function and operator ! 5. Explain how to convert string to value and vice versa ! 6. Explain how to know the length of a string ! Latihan di laboratorium 8. Make programs for serveral task like this: a. Make all letters in a string upcase. b. Make all letters in a string lowcase. c. Count the number of word in a sentence program ubah_kalimat_menjadi_huruf_kecil; var kalimat : string; i : byte; begin write('Ketik sebuah kalimat :'); readln(kalimat); for i := 1 to length(kalimat) do if kalimat[i] in ['A'..'Z'] then kalimat[i] := chr(ord(kalimat[i])+32); writeln(kalimat); readln; end. 9. Make a text animation. Display a sentence in the center of the screen. And scroll it Left To Right ! program putar_kiri_ke_kanan; Uses CRT; Indoprog 57
  • 58. Algoritma & Pemrograman Hendra, S.T. var kalimat : string; i : byte; begin write('Ketik sebuah kalimat :'); readln(kalimat); repeat gotoxy(13, (80-len(kalimat)) div 2); write(kalimat); kalimat:=copy(kalimat,length(kalimat),1) + copy(kalimat,1,length(kalimat)-1); until keypressed; readln; end. 10. Make a text animation. Display a sentence in the center of the screen. And scroll it Right To Left ! Latihan di rumah Make a simple calculator that can perform addition, substraction User input the equation then press enter. You should give the answer. Example : Input : 5+10 Output : 15 program kalkulator_ekspresi; var ekspresi : string; temp1,temp2 : string; val1,val2, result : real; numcode : integer; begin write('masukkan ekspresi penjumlahan :'); readln(ekspresi); temp1:=copy(ekspresi,1,pos('+',ekspresi)-1); temp2:=copy(ekspresi,pos('+',ekspresi)+1,length(ekspresi)- pos('+',ekspresi)); val(temp1,val1,numcode); val(temp2,val2,numcode); result := val1 + val2; writeln('Hasil perhitungan :',result:10:2); readln; Indoprog 58
  • 59. Algoritma & Pemrograman Hendra, S.T. end. Indoprog 59