Pemrograman dan Metode Numerik (Untuk Fisika) Fahrudin Nugroho April 11, 2013
Contents Pengantar
4
1 Pendahuluan 1.1 Motivasi dan Latar Belakang . . . . . . . . . . . . . . . . . . 1.2 Mengapa Bahasa Pemrograman C? . . . . . . . . . . . . . .
6 6 7
2 Pengenalan Komputer 2.1 Komputer . . . . . . . . . . . . . . . . . . . . 2.2 Sistem Operasi Linux . . . . . . . . . . . . . . 2.2.1 Struktur direktori Linux . . . . . . . . 2.2.2 Software aplikasi dalam Linux . . . . . 2.3 Compiler dan aplikasi Science dalam Linux . . . . . . . . . . . . . . . . . . . 2.3.1 Paket Program Sage . . . . . . . . . . 2.3.2 Paket program Matlab dan semisalnya
. . . .
9 9 10 11 12
. . . . . . . . . . . . . . . . . . . . . . . .
14 16 18
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
3 Prose Pemrograman 20 3.1 Program dan bahasa pemrograman . . . . . . . . . . . . . . 20 3.2 Penerjemah Bahasa . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Merancang sebuah program . . . . . . . . . . . . . . . . . . 23 3.3.1 Menganalisa, dan merancang urutan penyelesaian masalah (Algoritma) . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.2 Menuangkan Algoritma kedalam Kode Sumber . . . . 25
1
CONTENTS 3.3.3
2 Mengeksekusi program dan menguji program . . . . .
4 Struktur Dasar Algoritma dalam bahasa 4.1 Struktur Berurutan . . . . . . . . . . . . 4.2 Struktur Seleksi . . . . . . . . . . . . . . 4.2.1 Struktur seleksi If . . . . . . . . . 4.2.2 Struktur seleksi If else . . . . . . 4.3 Struktur Pengulangan . . . . . . . . . . 4.3.1 Struktur perulangan for . . . . . 4.3.2 Struktur perulangan while . . . . 4.3.3 Struktur perulangan do while . . 4.4 Struktur Kombinasi . . . . . . . . . . . . 4.5 Quiz . . . . . . . . . . . . . . . . . . . . 4.6 Tugas . . . . . . . . . . . . . . . . . . . 4.7 Jawaban Quiz . . . . . . . . . . . . . . .
C . . . . . . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . . .
28 28 29 30 30 32 33 34 34 35 35 35 35
5 Error dalam Metode Numerik 5.1 Error akibat pendekatan matematis . . . . . . . . . . . . . . 5.1.1 Pendekatan deret Taylor . . . . . . . . . . . . . . . . 5.2 Round-off Error . . . . . . . . . . . . . . . . . . . . . . . . .
37 37 37 38
6 Akar-Akar Fungsi 6.1 Metode Newton . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Metode Newton Orde Dua . . . . . . . . . . . . . . . . . . .
39 39 42
7 Masalah Intergrasi Numerik 7.1 Metode Trapesium . . . . . . . . . . . . . . . . . . . . . . . 7.2 Metode Simpson . . . . . . . . . . . . . . . . . . . . . . . .
43 43 43
8 Persamaan Diferensial 8.1 Syarat Awal . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Syarat Batas . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Metode Beda Hingga . . . . . . . . . . . . . . . . . . . . . .
45 45 46 46
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
CONTENTS 8.4
3
Pengenalan Metode Elemen Hingga . . . . . . . . . . . . . .
9 Masalah Stokastik 9.1 Bilangan Acak . . . . . . . . . . . . . . . . . . 9.2 Penyelesaian Persamaan Diferensial Stokastik 9.2.1 Metode Stratonovick . . . . . . . . . . 9.2.2 Persamaan Langevin . . . . . . . . . . 9.3 Integrasi Numerik Dengan Montecarlo . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
46 47 47 47 47 47 47
Pengantar Bismillahirohmaannirrahim. Puji syukur penulis panjatkan keharibaan Rabb semesta alam atas selesainya catatan kuliah ini. Tujuan kami dalam menulis catatan kuliah pemrograman dan metode numerik ini adalah sebagai bahan pendamping mata kuliah pemrograman dan metode numerik yang kami ampu. Sesungguhnya mata kuliah metode numerik ini berlaku umum untuk semua jurusan. Hanya saja karena matakuliah ini diberikan untuk mahasiswa dan mahasiswi program studi Fisika, Jurusan Fisika, maka contoh-contoh yang diberikan lebih banyak mengandung keilmuwan Fisika. Akan tetapi sifat Fisika yang menjadi dasar bagi semua bidang keilmuwan khususnya teknik, maka buku ini juga relevan bagi mahasiswa teknik yang tertarik pada topik-topik dimana metode numerik digunakan. Metode numerik biasanya diterapkan pada kasus-kasus khusus dimana penyelesaian analitik sudah sulit dicapai atau bahkan tidak mungkin lagi dilakukan. Secara praktis nampak bahwa metode numerik adalah alternatif bagi metode analitik, akan tetapi jika ditinjau secara lebih dalam akan tampak bahwa metode numerik sendiri didasarkan pada suatu ide yang fundamental yaitu matematika diskret. Dalam catatan kuliah ini akan akan diperkenalkan konsep dan teknik dasar pemrograman dan akan dibahas pula beberapa metode-metode numerik dasar yang akan sering ditemui oleh mahasiswa calon peneliti. Untuk menghindari kesulitan yang berganda, yaitu kesulitan memahami metode numerik sekaligus kesulitan memahami topik fisika, maka akan dipilih beberapa permasalahan Fisika yang sederhana sebagai contoh kasus. Hal ini dilakukan mengingat bahwa mahasiswa yang mengambil mata kuliah ini 4
CONTENTS
5
adalah mahasiswa calon sarjana yang dapat diasumsikan belum mengenal seluk beluk metode numerik dan terapan sesungguhnya, yaitu permasalahan Fisika yang kompleks. Selain itu perlu ditekankan bahwa ketika suatu permasalahan Fisika diselesaikan dengan cara numerik dan setelah suatu program dibangun dan dijalankan, maka hasil keluaran yang biasanya berupa angka harus diuji kebenarannya/kesesuaiaannya dengan keadaan ”Fisis” kasus yang ditinjau. Khusus untuk kasus yang dapat diselesaikan secara analitik, pengujian ini dapat dilakukan dengan membandingkan dengan hasil analitik. Penulis menyadari banyaknya kekurangan dalam catatan yang masih ”under construction” ini, kritik dan saran yang bersifat membangun penulis harapkan dan terima dengan senang hati. Akhirnya penulis berharap bahwa catatan kuliah ini dapat bermanfaat.
Chapter 1 Pendahuluan 1.1
Motivasi dan Latar Belakang
Metode numerik selalu dihubungkan dengan perkembangan komputer, karena perkembangan metode numerik itu sendiri berawal dari penemuan komputer yang canggih beberapa abad yang lalu. Saat ini simulasi numerik menggunakan komputer atau disebut sebagai simulasi komputer saat ini dipandang sebagai salah satu metode yang penting dalam penyelesaian permasalahan yang kompleks. Dalam Fisika, metode ini di gunakan untuk keperluan menterjemahkan fenomena fisis kedalam bentuk matematika diskret 1 , mengolahnya kembali dan menyelesaikannya di dalam komputer. Berbeda dengan pendekatan teoretik yang banyak melandaskan penyelesaiannya pada banyak asumsi dan pendekatan, penyelesaian numerik saat ini cenderung menyelesaikan masalah dengan cara memodelkan secara lebih detail keadaan fenomena yang sesungguhnya. Hal ini tentu saja dapat dilakukan dengan kemampuan komputer yang semakin canggih sekarang ini. Dengan kemajuan metode numerik pula, saat ini komputasi fisika yang dilandaskan pada metode numerik, telah mendapat posisi penting dan strategis. Secara tradisional fisikawan bekerja di laboratorium untuk memveri1
Berbeda dengan kalkulus dan matematika pada umumnya melandaskan prinsipprinsip kalkulasinya pada ”idea”-nya yang bersifat infinitesimal. Hal ini dapat dilakukan dengan cara memperkenalkan bilangan tak hingga (∞).
6
CHAPTER 1. PENDAHULUAN
7
fikasi sebuah teori yang diajukan oleh teoriwan. Seorang eksperimentalis membutuhkan pengetahuan tentang peralatan elektronika, mekanika, dan instrumentasi keduanya saat bekerja dengan serangkaian alat untuk memperoleh serangkaian data dilandaskan pada metode eksperimen yang baik. Sedangkan teoriwan membutuhkan matematika analitik, seringkali ”rigors mathematics”, untuk memformulasikan sebuah teori. Tidak berbeda jauh dari eksperimentalis dan teoriwan, seorang fisikawan komputasi membutuhkan pengetahuan terkait analisis numerik dan pemrograman komputer untuk dapat berhasil mencapai pemanahan fenomena Fisika. Untuk itulah diperlukan satu kuliah tersendiri bagi mahasiswa Fisika untuk mengenal metode numerik dan pemrograman komputer sebagai salah satu pilar metode yang terbukti valid dan diakui oleh khalayak Fisikawan.
1.2
Mengapa Bahasa Pemrograman C?
Saat in terdapat banyak sekali bahasa pemrograman. Di antara banyak bahasa pemrograman tersebut dalam catatan kuliah ini akan digunakan bahasa C. Pengguna bahasa pemrograman C dan C++ sangatlah banyak. Hal ini dikarenakan kemampuan bahasa C yang dianggap bisa dipakai dalam banyak bidang termasuk saintifik dan terapan termasuk diantaranya pembuatan aplikasi. Berikut ini adalah beberapa alasan mengapa bahasa C dipilih dalam catatan kuliah ini: 1. Untuk setiap sistem operasi dapat dipastikan terdapat setidaknya satu jenis compiler C. Hal ini menjamin bahwa setiap mahasiswa dapat mencoba program yang tersedia dalam catatan kuliah ini tanpa terkendala ketersediaan compiler C. 2. Bahasa C adalah bahasa pemrograman terstruktur. Karenanya mahasiswa yang mengikuti kuliah akan diajak untuk menggunakan jenis pemrograman yang terstruktur dan sederhana. Tujuannya adalah agar mahasiswa dapat dengan mudah mengikuti dan mencoba sendiri program-program yang digunakan dan dengan mudah mengerti makna dari setiap kode program. Jika diperlukan atau dikehendaki maka
CHAPTER 1. PENDAHULUAN
8
mahasiswa dapat ”naik tingkat” kedalam bahasa pemrograman yang bersifat objek oriented C++ yang merupakan ”varian” dari C. Keuntungannya sintak yang digunakan dalam C++ sangatlah mirip dengan C. Menguasai sintak C berarti menguasai sintak C++. Dengan landasan penguasaan sintaksis maka mahasiswa tinggal menambah wawasan dan konsep bahasa pemrograman polymorphism, classes, inheritance jika ingin beralih ke C++. 3. Performa terkait dengan kecepatan proses bahasa C dikenal sangat unggul. 4. Sistem operasi yang dikenal saat ini, driver bagi sebagian besar peripheral, dan software serta aplikasi yang tersedia saat kebanyakan dibuat dengan bahasa C. Karenanya pengalaman menggunakan bahasa C merupakan aset yang berharga bagi mahasiswa. 5. Terakhir tetapi penting, adalah bahasa C dapat digunakan pada sistem komputer parallel. Jika dibutuhkan maka mahasiswa dapat menggunakan bahasa C untuk menyelesaikan masalah yang kompleks dan membutuhkan pemrograman parallel, dengan satu syarat mereka menguasai algoritma parallel.
Chapter 2 Pengenalan Komputer 2.1
Komputer
Pada dasarnya setiap komputer terdiri dari central processing unit (CPU), bagian input data data output. Skema dari sebuah komputer ditunjukan dalam gambar berikut:
Bagian-bagian di atas sebetulnya belum mewakili komputer secara sepenuhnya. Hal ini dikarenakan selain bagian-bagian di atas, yang biasa kita sebut perangkat keras atau hardware, diperlukan perangkat lunak software. Tanpa adanya perangkat lunak maka hanya ada seonggok mesin dan rangkaian elektronik, dan tidak bisa dikatakan sebagai komputer.
9
CHAPTER 2. PENGENALAN KOMPUTER
2.2
10
Sistem Operasi Linux
Kata Linux sekarang ini sudah sangat familier bagi pengguna komputer. Sejalan dengan semakin majunya perkembangan perangkat keras maka sistem operasi dan aplikasi didalamnya juga berkembang. Nama Linux sendiri diturunkan dari pencipta awalnya, Linus Torvalds, yang sebetulnya mengacu pada suatu kumpulan software lengkap yang bersama-sama dengan kernel menyusun suatu sistem operasi yang lengkap. Lingkungan sistem operasi ini mencakup ratusan program, termasuk kompiler, interpreter, editor dan utilitas. Perangkat bantu yang mendukung konektifitas, ethernet, SLIP dan PPP dan interope rabilitas. Produk perangkat lunak yang handal, termasuk versi pengembangan terakhir. Kelompok pengembang yang tersebar di seluruh dunia yang telah bekerja dan menjadikan Linux portabel ke suatu platform baru, begitu juga mendukung komunitas pengguna yang memiliki beragam kebutuhan dan juga pengguna dapat turut serta bertindak sebagai tim pengembang sendiri. Linux merupakan sistem operasi khusus dan berbeda dengan sistem operasi lainya karena tersedia secara bebas di internet, berbagai vendor telah membuat suatu paket distribusi yang dapat dianggap sebagai versi kemasan Linux. Paket ini termasuk lingkungan Linux lengkap, penagkat lunak untuk instalasi dan mungkin termasuk perangkat lunak khusus dan dukungan khusus. Salah satu contoh sistem operasi Linux adalah CentOS, Mandriva, Ubuntu, dan SuSe beberapa aplikasi bawaan serta beberapa aplikasi tambahan. Saat ini Linux adalah sistem UNIX yang sangat lengkap, bisa digunakan untuk pengembangan software dan bahkan untuk pekerjaan seharihari. Linux merupakan alternatif sistem oprasi yang jauh lebih murah jika dibandingkan sistem operasi komersial (misalnya Windows 9.x/NT/2000/ ME/XP/VISTA/7/8). Berikut ini adalah beberapa fakta dari hal-hal yang menguntungkan dengan menggunakan program dan file-file Linux 1. Pada dasarnya semua data tersimpan di dalam harddisk walau ada beberapa kondisi dimana data tersimpan di disket. Linux/UNIX mem-
CHAPTER 2. PENGENALAN KOMPUTER
11
berikan beberapa proses spesial dimana terminal, printer dan device hardware lainnya dapat diakses seperti kita mengakses file yang tersimpan dalam harddisk atau disket. 2. Ketika program dijalankan, program tersebut dijalankan dari harddisk ke dalam RAM dan setelah dijalankan akan dinamakan sebagai proses. 3. Linux/UNIX menyediakan servis untuk membuat, memodiflkasi program, proses dan file. 4. Linux/UNIX mendukung struktur file yang bersifat hirarki. 5. Linux/UNIX adalah salah satu sistem operasi yang termasuk ke dalam kelas sistem operasi yang dapat melakukan multitasking. Multitasking sendiri adalah keadaan dimana suatu sistem operasi dapat melakukan banyak kerjaan pada saat yang bersamaan. 6. Selain multitasking, Linux/UNIX juga dapat mendukung multiuser. Yaitu sistem operasi yang pada saat bersamaan dapat digunakan oleh lebih dari satu user yang masuk ke dalam sistem. Bahkan untuk Linux juga mendukung untuk multiconsole dimana pada saat bersamaan di depan komputer langsung tanpa harus melalui jaringan dan memungkinkan lebih dari satu user masuk ke dakam sistem.
2.2.1
Struktur direktori Linux
Direktori root Linux memiliki beberapa direktori yang merupakan standar direktori pada banyak distro Linux. Direktori-direktori utama dalam Linux adalah:
CHAPTER 2. PENGENALAN KOMPUTER Direktori bin boot dev home lib mnt
proc root sbin
tmp usr var
2.2.2
12
Isi berisi file-file binary standar yang dapat digunakan oleh seluruh user baik user biasa maupun super user berisi file-file yang diaunakau unnik booting Linux termasuk kernel image berisi file system khusus yang merupakan refleksi device hardware yang dikenali dan digunakan sistem berisi direktori-direktori yang merupakan direktori home untuk user biasa dan aplikasi tertentu berisi file-file library yang digunakan untuk mendukung kerja kernel Linux direktori khusus yang disediakan untuk mounting (mengaitkan) device disk storage ke sistem dalam bentuk direktori berisi file system khusus yang menunjukkan data-data kernel setiap saat direktori home uutuk user root (user khusus dengan priviledges hampir tak terbatas) sama sepertrti direktori bin, tetapi hanya super user yang sebaiknya menggunakan binary-binary tersebut mengingat fungsifungsi binary yang terdapat di direktori ini untuk maintenance sistem berisi filc-file sementara yang dibutuhkan scbuah aplikasi yang sedang berjalan berisi library, binary, doktunentasi dan file lainnyahasil instalasi user berisi file-file log. mailbox dan data-data aplikasi
Software aplikasi dalam Linux
Sekarang ini, banyak aplikasi Linux yang dapat digunakan untuk keperluan kantor seperti untuk spreadsheet, word processor, database dan program editor grafis yang memiliki fungsi dan tampilan seperti Microsoft Office, yaitu OpenOffice. Selain itu, juga sudah tersedia versi Corel untuk Linux dan aplikasi seperti Matlab yang pada Linux dikenal sebagai Scilab. Berikut
CHAPTER 2. PENGENALAN KOMPUTER
13
adalah beberapa Fitur yang tersedia dalam Linux 1. Shell dan Shell command Merupakan tempat bekerja yang paling utama diantara para pemakai Linux, terutama Linux versi-versi awal. Pada Shell ini perintah-perintah text dapat dieksekusi. Tampilan Shell adalah dapat dilihat pada gambar berikut:
Dari gambar dapat dilihat siapa yang sedang bekerja pada shell. 2. Adapun perintah-perintah yang dapat dijalankan pada Shell diantaranya: MC (Midnight Commander) MC atau Midnight Commander merupakan aplikasi yang sangat berguna karena hemat memory saat digunakan. Dengan mengetikan mc pada shell maka akanmuncul tampilan sebagai berikut:
CHAPTER 2. PENGENALAN KOMPUTER
14
Perintah-perintah yang dapat digunakan sesuai dengan gambar diatas dapat dilihat pada Tabel di bawah ini : Tombol F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
2.3
Fungsi Mengeluarkan menu help (bantuan) Menyimpan File Untuk memblok bagian yang dipilih Untuk mengganti kata Menyalin satu blok Memindahkan satu blok Mencarai kata yang ingin di edit Menghapus suatu blok Memunculkan menu navigasi Mengakhiri editor
Compiler dan aplikasi Science dalam Linux
Ada banyak aplikasi Science yang terdapat dalam Linux. Hal yang paling utama dari aplikasi Science yang terdapat dalamLinux adalah Compiler. Ada banyak compiler yang tersedia dalam Linux, untuk SuSE 9.1 compiler
CHAPTER 2. PENGENALAN KOMPUTER
15
yang telah ada didalmnya adalah: gcc, g++, g77 dan masih banyak lagi compiler yang lain. Untuk keperluan aplikasi perkantoran/office maka Linux memiliki aplikasi openoffice. Di dalam openoffice telah tersedia fitur-fitur canggih yang bahkan tidak tersedia dalam sistem office yang lain (Ms Offiice) diantarannya adalah kita bisa mengetikan perintah Latex kedalam sistem persamaan sehingga bagi pengguna yang terbiasa menggunakan Latex maka fitur ini sangatlah menguntungkan. Dengan open office bentuk file yang disimpan dengan sistem office yang lain dapat dilihat, dibuka, dan diedit dan seringkali tidak berlaku sebaliknya. Selain office tersedia pula aplikasi Latex yang sangat terkenal dan familier di kalangan Matematikawan, Fisikawan dan ilmuwan lainya. Pada dasarnya Latex digunakan untuk mempersiapkan naskah seperti halnya text editor, dengan kelebihan utama yaitu kemamouan untuk menghasilkan persamaan dengan lebih baik. Salah satu contoh bentuk tampilan tex editor Latex dapat dilihat sebagai berikut
Salah satu kelebihan lain dari Kile adalah terdapat compiler Latex2html, sehingga file latex yang ingin diupload kehalaman web bisa dikompilasi secara apik dengannya.
CHAPTER 2. PENGENALAN KOMPUTER
2.3.1
16
Paket Program Sage
Sage adalah suatu free open source math software yang relatif baru yang berguna untuk keperluan komputasi numerik, alkabar, geometri, dan bidang lainya. Sage dapat menjalankan beberapa perintah dari berbagai aplikasi diantaranya gnuplot, maxima, ocatave, dan beberapa compiler lainnya. Karenanya Sage dikatakan sebagai alternatif pengganti danpenggabungan bagi Maple, Mathematica, Magma, dan MatLab. Selain itu juga sage menjalankan beberpa aplikasi pemrograman yaitu Dalam praktikum kali ini akan digunakan Sage versi 2.6. Sage dapat dijalankan dengan shell command maupun dengan dengan interface yang dijalankan pada web browser Firefox. cara menjalankan aplikasi Sage adalah dengan mengetikan perintah sage dan menekan enter pada shell. sehingga akan muncul direktori sage. Semua perintah sage dapat dijalankan dengan mengetikan perintah-perintah yang dikenal dalam sage. Sedangkan untuk memunculkan interface melalui web browser maka ketik perintah notebook() kemudian enter pada direktori sage, maka akan ditampilkan interface yang diload pada firefox dengan server local Sage, dan tampilannya adalah sebagai berikut :
CHAPTER 2. PENGENALAN KOMPUTER
17
Contoh program Sage Dalam direktori Sage ketikan perintah berikut maka akan anda peroleh kelurannya: sage: 2 + 2 4 sage: A = matrix(4,4, range(16)); A [ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] sage: integral(x*sin(x^2), x) -cos(x^2)/2 sage: integral(x/(x^2+1), x, 0, 1) log(2)/2 Selain itu bisa juga dengan membuat kode sumber sage yang berisikan: print Halo ini program pertama saya print 2*4^2 setalah disimpan dengan nama program1.sage setelah itu melalui direktori sage ketikan perintah sage: load program1.sage Halo ini program pertama saya 32 yang tidak lain adalah keluaran sesuai dengan isi program yang kita perintahkan dalam program1.sage. Adapun beberapa operator dalam Sage adalah sebagai berikut:
CHAPTER 2. PENGENALAN KOMPUTER
Operator or and not in, not in is, is not < , <=, >, >=,==,! =, <> +,*,/,% **, ˆ
2.3.2
18
deksripsi boolean or boolean and boolean not membership identity test perbandingan operasi penambahan dan pengurangan perkalian, pembagian, dan reminder operasi perpangkatan
Paket program Matlab dan semisalnya
Telah banyak diketahui khalayak umum bahwa Matlab adalah satu paket program yang handal. Kehandalan paket program Matlab terletak pada kelengkapan function yang telah tersedia padanya. Berikut adalah tampilan dari antar muka Matlab.
Yang dimaksud dengan function sesungguhnya adalah program yang telah dibangun dengan tujuan khusus dan kemudian digabungkan kedalam
CHAPTER 2. PENGENALAN KOMPUTER
19
sistem Matlab. Karenanya kemudian Matlab disebut sebagai Paket program. Selain paket program Matlab ada beberapa paket program lain yang semisal denganya. Misalnya Skylab, Mupad, Octave dan Mathematica. Paket program tersebut tidak akan dibahas secara lebih rinci pada catatan kuliah ini.
Chapter 3 Prose Pemrograman 3.1
Program dan bahasa pemrograman
Program dalam istilah komputer mempunyai arti sebagai kumpulan perintah yang digunakan untuk mengatur komputer untuk melaksanakan suatu pekerjaan. Melalui program inilah kemudian manusia dapat berinteraksi dengan ”mesin” komputer. Tanpa sebuah program maka komputer tidak akan dapat melakukan sesuatu sesuai dengan yang dikehendaki. Jadi ketika suatu program dibuat dan dijalankan, terjadi interaksi antara manusia dan komputer. Seperti halnya interaksi antar manusia diperlukan suatu bahasa agar setiap ungkapan dapat difahami dan setiap perintah ataupun informasi dapat ditindak lanjuti. Karenanya untuk bisa membuat program, seorang programer (orang yang biasa membuat program komputer) yang ingin berinteraksi dengan komputer memerlukan bahasa pemrograman (lihat ilustrasi yang diambil dari http : //f ooyoh.com/iamchiq living lif estyle/5062933 berikut).
20
CHAPTER 3. PROSE PEMROGRAMAN
21
Agar dapat difahami maka seorang programer harus mengikuti kaidah bahasa program tertentu yang kemudian disebut sebagai bahasa pemrograman. Bahasa pemrograman dapat dikategorikan kedalam 1. Bahasa beraras tinggi 2. Bahasa beraras rendah Bahasa beraras tinggi adalah bahasa pemrograman yang berorientasi pada manusia (programer). Artinya bahasa program jenis ini lebih mudah difahami karena mendekati bahasa manusia dan menggunakan kata-kata yang biasa digunakan oleh manusia khususnya bahasa Inggris. Contoh bahasa jenis adalah bahasa Basic, Pascal, C, C++, Java. Sedangkan bahasa beraras rendah adalah bahasa yang berorientasi pada mesin. Bahasa ini menggunakan kode biner yang hanya mengenal angka 0 dan 1. Yang tergolong dalam bahasa ini adalah bahasa Asembler (rakitan). Bahasa semacam ini sulit untuk dibaca dan difahami langsung oleh manusia dan programer yang biasa menggunakan bahasa beraras tinggi. Biasanya bahasa mesin hanya bekerja pada satu jenis mesin tertentu karenanya disebut machine dependent.
3.2
Penerjemah Bahasa
Sebagai mana dijelaskan sebelumnya bahwa sebenarnya ada perbedaan antara bahasa manusia dan bahasa mesin. Bahasa mesin sulit dimengerti
CHAPTER 3. PROSE PEMROGRAMAN
22
oleh manusia dan sebaliknya mesin tidak bisa memahami bahasa manusia. Singkatnya bahasa program yang di buat dengan bahasa program beraras tinggi tidak bisa difahami langsung oleh mesin. karenanya diperlukan penrjemah bahasa, yang menerjemahkan setiap perintah dari bahasa aras tinggi kedalam bahasa mesin, agar mesin dapat menjalankan perintah-perintah tersebut. Penerjemah bahasa ini kemudian dikelompokan menjadi: 1. Interpreter. Yaitu penerjemah bahasa yang mengerjakan satu baris intruksi bahasa kedalam bahasa mesin untuk kemudian dijalankan oleh mesin. Instruksi berikutnya akan diterjemahkan selanjutnya jika instruksi pertama telah selesai diinstruksikan. Dengan kata lain interpreter menterjemahkan dan menginstruksikan semua perintah satu persatu. 2. Compiler. Berbeda dengan interpreter, Compiler bekerja secara lebih kompak yaitu menerjemahkan semua instruksi kedalam bahasa mesin sekaligus menjadi kode objek. Dan tidak ada proses penerjemahan lagi ketika kode objek dijalankan oleh mesin. Hasil dari proses kompilasi ini biasanya adalah program yang dapat dijalankan tanpa ada translator, atau sering disebut sebagai executable. Sekarang ini program yang executable ini sering disebut sebagai aplikasi. Dengan menggunakan Interpreter seseorang dapat melakukan proses pencarian kesalahan pada kode sumber dengan lebih mudah. Namun kelemahanya adalah bahwa setiap kali menjalankan program dengan interpreter maka kode sumber harus selalu tersedia dan jika jumlah instruksi besar maka proses pengeksekusian menjadi lambat, dan proses ini selau berulang setiap kali program digunakan. Sedangkan dengan Compiler, pengerjaan instruksi bisa berjalan dengan cepat karena setiap kali hanya diperlukan satu program executable yang telah dihasilkan. Program executable ini juga bisa diduplikasi dan dijalankan pada komputer yang lain dengan platform yang sama. Namun secara kebahasaan program yang diproses dengan compiler harus betul secara keseluruhan sebelum benar-benar bisa dikompilasi dan distribusikan.
CHAPTER 3. PROSE PEMROGRAMAN
3.3
23
Merancang sebuah program
Sebuah program dirancang dan dibuat untuk menyelesaikan secara khusus sebuah permasalahan. Terdapat tiga langkah penting dalam menyelesaikan permasalahan: 1. Menganalisa masalah, dan merancang urutan penyelesaian (Algoritma) 2. Menuangkan Algoritma kedalam bentuk program 3. Mengeksekusi dan menguji program
3.3.1
Menganalisa, dan merancang urutan penyelesaian masalah (Algoritma)
Pada dasarnya permasalahan yang dapat dikerjakan melalui proses pemrograman sangatlah luas. Mulai dari suatu permasalahan yang sederhana sampai dengan permasalahan yang kompeks. Biasanya permasalahan yang kompleks lah yang perlu dikerjakan dengan program komputer. Akan tetapi dalam catatan kuliah kali ini akan dijelaskan beberapa permasalahan yang sederhana dengan tujuan siswa dapat memahami dengan lebih mudah proses mengalisa masalah dan proses merancang suatu urutan kerja (Algoritma)1 . Sebelum merancang suatu urutan kerja, maka biasanya dillakukan indentifikasi masalah dan penyaringan informasi. Berdasarkan hasil identifikasi masalah dan penjaringan informasi maka kemudian langkah kerja dapat dirancang dan untuk selanjutnya dapat dituangkan kedalam bentuk program. Sebagai contoh sederhana, kali ini akan diselesaikan suatu permasalahan menghitung luas lingkaran. Jelas permasalahan ini adalah permasalahan matematik biasa dan melibatkan rumus perhitungan biasa. Sedangkan informasi yang diperlukan untuk dapat menyelesaikan masalah ini adalah yaitu data besarnya nilai π dan panjang jejari lingkaran. Dengan logika sederhana maka rancangan penyelesaian permasalahan ini dapat dituliskan sebagai berikut 1 Istilah Algoritma diambil dari nama seorang ilmuwan Arab bernama Abu Ja’far Mohammed Ibn Musa al Khowarizmi
CHAPTER 3. PROSE PEMROGRAMAN
24
Luas = nilai pi x panjang jejari x panjang jejari Algoritma bagi penyelesaian masalah ini kemudian dapat dituliskan sebagai berikut: 1. Peroleh panjang jejari 2. Hitung luas lingkaran sesuai dengan rumus 3. Tampilkan nilai luas lingkaran Ada banyak cara untuk menuliskan Algoritma dan Algoritma tidak selalu di tuangkan seperti layaknya bahasa manusia. Diantaranya dengan menuangkan kedalam kode semu (pseudocode). Untuk permasalahan luas lingkaran maka pseudocode yang mungkin adalah sebagai berikut luas <-- pi x panjang jejari x panjang jejari Untuk suatu program yang lebih kompleks maka diperlukan ungkapan kode semu yang lebih panjang dan kompleks, untuk kasus seperti ini maka biasanya kode semu lebih berorientasi dan lebih mirip pada bahasa program dimana permasalahan tersebut akan diselesaikan. Selain kode semu kadangkala Algoritma di tuangkan kedalam bentuk diagram alir. Sebagai contoh diagram alir untuk menghitung luas lingkaran diberikan pada gambar berikut
CHAPTER 3. PROSE PEMROGRAMAN
25
Dari gambar di atas dapat kita lihat berbagai macam bentuk yang digunakan dalam diagram alir. Bentuk oval menandakan memulai dan akhir. Bentuk persegi empat yang digunakan untuk melambangkan proses perhitungan. Bentuk jajaran genjang menandakan masukan atau keluaran suatu proses. Bnetuk layang-layang menandakan pengambilan keputusan.
3.3.2
Menuangkan Algoritma kedalam Kode Sumber
Setelah proses analisa masalah dan pembuatan Algoritma selesai dibangun maka proses selanjutnya adalah pembuatan kode sumber. Untuk kasus permasalahan luas lingkaran maka kode sumber dalam bahasa C kurang lebih dapat dilihat sebagai berikut:
CHAPTER 3. PROSE PEMROGRAMAN
26
#include <stdio.h> #define PI 3.1415926535897932385E0 main() { double radius, area; /* mendefiniskan variabel-veriabel */ printf("Enter the radius of a circle \n"); /* perintah memasukan input radius */ scanf("%lf", &radius); /* membaca input radius */ area = radius * radius * PI; /* rumus area */ printf("radius=%f, area=%f\n", radius, area); /* mencetak hasil */ }
3.3.3
Mengeksekusi program dan menguji program
Setelah kode sbumer diatas di buat dalam editor, maka dapat disimpan dengan extension c. Dan selanjutnya dapat dikompilasi dengan kompiler c. Diantara kompiler c yang dapat digunakan adalah gcc yang telah tersedia di pada sistem operasi Linux. Dengan proses kompilasi akan dapat diketahui apakah program tersebut sudah betil secara sintaks atau belum. Jika terdapat peringatan eror maka dapat dicari bagian/baris mana yang mengakibatkan adanya eror tersebut. Setelah diketahui baris yang menyebabkan eror dan dilakukan perbaikan maka program dapat kembali dikompilasi. Demikian seterusnya sampai program benar-benar selesai dikompilasi tanpa ada peringatan eror. Stelah itu program executable yang diperoleh dapat dijalankan dan nilai keluaran dapat diuji kebenarannya. Khusus untuk kasus sederhana seperti luas lingkaran maka uji keluaran tersebut dapat diperoleh dengan membandingkan dengan hasil perhitungan analitik. Untuk program
CHAPTER 3. PROSE PEMROGRAMAN
27
yang dirancang menyelesaikan permasalahan yang kompleks seringkali pencarian kesalahan baik dalam program maupun keluaran tidaklah sederhana. Dalam konteks program kesalahan dalamkode sumber sering disebut dengan bug, dan proses pencarian kesalahan ini sering disebut sebagai debugging.
Chapter 4 Struktur Dasar Algoritma dalam bahasa C Setidaknya ada tiga macam struktur dasar dalam algoritma, seperti yang akan dijelaskan sebagai berikut.
4.1
Struktur Berurutan
Struktur dasar berurutan datau sekuensial merupakan struktur dasar algoritma yang memproses langkah-langkah dengan cara berurutan. Jika dalam sebuah program terdiri dari sepuluh baris maka setiap baris akan dikerjakan satu persatu secara berurutan. Salah satu contoh bentuk diagram alir bagi struktur sekuensial ditunjukan oleh gambar berikut
28
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C29
Dalam bagian terdahulu pada bagian contoh algoritma perhitungan luas lingkaran telah digunakan jenis algoritma ini.
4.2
Struktur Seleksi
Dalam struktur seleksi terjadi sebuah pemilihan langkah kerja (pengambilan keputusan) yang didasarkan pada suatu kondisi. Dalam proses ini jika suatu kondisi dipenuhi maka akan dilakukan langkah 1 sedangkan jika tidak dipenuhi maka akan dilakukan langkah 2. Struktur seperti ini diilustrasikan dalam gambar berikut
Setidaknya ada tiga jenis struktur seleksi yang dapat dikategorikan
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C30 sebagai berikut:
4.2.1
Struktur seleksi If
Struktur seleksi ini adalah struktur paling sederhana dimana tedapat satu kondisi dan seleksi didasarkan pada kondisi yang diberikan tersebut. Bentuk umum struktur seleksi dengan if adalah If (kondisi) pernyataan Salah satu diagram alir bagi operasi bersyarat ini ditunjukan oleh gambar berikut.
4.2.2
Struktur seleksi If else
Struktur seleksi bersyarat menyediakan pernyataan alternatif yang harus di eksekusi jika kondisi tidak dipenuhi. Artinya jika kondisi dipenuhi maka akan dilakukan perintah 1 dan jika kondisi salah maka akan dilakukan perintah 2. Bentuk umum pernyataan seleksi If else adalah sebagai berikut If (kondisi) pernyataan 1;
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C31 else pernyataan 2; Adapun struktur seleksi If else di tunjukan oleh diagram alir sebagai berikut
Contoh riil bagi struktur seleksi ini adalah proses pencarian nilai maksimal dari dua buah bilangan yang diberikan misalnya 10 dan 12. Anggap angka 10 sebagai A dan angka 12 sebagai B, maka kode semu bagi penyelesaian masalah ini sebagai berikut 1. Masukan nilai A dan B 2. Bilangan terbesar ← A 3. JIKA Bilangan terbesar < B MAKA Bilangan terbesar ← B Akhiri JIKA 4. Tampilkan Bilangan terbesar Diagram alir bagi penyelesaian permasalahan ini adalah.
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C32
4.3
Struktur Pengulangan
Struktur pengulangan atau yang biasa disebut loop pada dasarnya adalah kondisi khusus bagi struktur seleksi dimana dengan kondisi tertentu maka proses akan diulang sedangkan untuk kasus sebaliknya maka suatu proses dapat diberhentikan atau diganti dengan proses yang lain. Salah satu bentuk struktur pengulangan sederhana dapat ditunjukan dengan diagram alir sebagai berikut
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C33
Seperti struktur seleksi maka ada beberapa jenis struktur perulangan, diantaranya:
4.3.1
Struktur perulangan for
Perintah for adalah perintah untuk melakukan perulangan satu jenis perintah atau beberapa pernyataan ketika kondisi masih dipenuhi. Perintah ini dimulai dari suatu nilai awal pencacah tertentu dan diakahiri setelah kondisi yang diberikan terlampaui, dengan cara keluar dari loop. Adapun bentuk umm dari operasi perulangan menggunakan perintah for adalah for (inisialisasi, kondisi, pencacah) pernyataan Bentuk diagram alir untuk perulangan for adalah
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C34
4.3.2
Struktur perulangan while
Perintah while pada dasarnya serupa dengan perintah for. Dimana suatu perulangan akan terus dilakukan selama kondisi yang diberikan masih terpenuhi. Adapan bentuk umum perulangan menggunakan perintah while adalah sebagai berikut while (kondisi) pernyataan Bentuk diagram alir bagi perulangan menggunakan perintah while adalah sama dengan diagram alir perintah for.
4.3.3
Struktur perulangan do while
Pada dasarnya perintah do while adalah perintah perulangan yang serupa dengan perintah for dan while yang memberikan perintah untuk melakukan
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C35 perulangan selama kondisi masih terpenuhi. Bisa dikatakan perintah ini adalah alernatif sintaksis yang tersedia dalam bahasa pemrograman untuk melakukan perulangan.
4.4
Struktur Kombinasi
Selain ketiga struktur dasar di atas dalam program seringkali digunakan kombinasi tiga struktur tersebut secara bersamaan.
4.5
Quiz
Buatlah kode semu dan diagram alir yang digunakan untuk menampilkan angka 1 sampai dengan 10 disertai dengan nilai kwadratnya.
4.6
Tugas
Buatlah kode semu dan diagram alir yang digunakan untuk menampilkan bilangan Fibonacci.
4.7
Jawaban Quiz
Kode semu 1. Bilangan ← 1 2. Ulang selama Bilangan < 11 Tampilkan (Bilangan, Bilangan x Bilangan) Bilangan ← Bilangan + 1 3. Akhiri Ulangan Diagram Alir
CHAPTER 4. STRUKTUR DASAR ALGORITMA DALAM BAHASA C36