Pendahuluan. Komputasi Nuklir. 29 Oktober Komputasi Nuklir Pendahuluan 29 Oktober / 41

dokumen-dokumen yang mirip
ALGORITMA PEMROGRAMAN 1C PENDAHULUAN KONSEP BAHASA PEMROGRAMAN

BAB I PENGANTAR Pendahuluan Penyajian 1.1 Latar Belakang 1.2 Algoritma dan Struktur Data

Compiler & Interpreter

SUMBER BELAJAR PENUNJANG PLPG

Algoritma dan Struktur Data

LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI

Dasar Pemrograman. Nisa ul Hafidhoh

Pendahuluan Pemrograman Mikrokontroler

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Pengenalan Pemrograman

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

2 TIPE DATA DAN VARIABEL

Algoritma dan Struktur Data

1.1. Sejarah Bahasa C

C / C++ / JAVA / C# / Python?

AP2B-Dini Triasanti KONSEP DASAR PYTHON

P3 Pengantar Pemrograman C

Pemrograman dan Bahasa Pemrograman

Fungsi. Fungsi. Dasar Komputer & Pemrograman 1. dipecah Sub Program. Program. Dasar Komputer & Pemrograman TC22052 Kartika Firdausy - UAD

Tahap pengembangan program

METODE NUMERIK Modul I

BAB II VARIABEL DAN TIPE DATA

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

BAHASA PEMROGRAMAN C

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

P - 3 Bab 2 : Pengantar Pemrograman C

Bahasa Pemrograman Sejarah singkat C++ Struktur program C++ Yoannita

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Bahasa C-M6 By Jamilah, Skom 1

Pengenalan Bahasa C++, Algoritma Pemrograman, Integrated Development Equipment (IDE) Visual C++ dan Dasar Dasar Bahasa C++

Pemrograman dengan Java

BAB I KONSEP DASAR PEMROGRAMAN

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Kuliah Online : TEKKOM [2013/VI]

Algoritma Pemrograman 2C

METODE NUMERIK 3SKS-TEKNIK INFORMATIKA-S1. Mohamad Sidiq PERTEMUAN-1

Fungsi Bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

Badiyanto, S.Kom., M.Kom. PBO java

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

Praktikum Modul Praktikum ke Judul Materi Tujuan / Sasaran Waktu (lama) Aplikasi yang digunakan

MINGGU II : DASAR C# Tujuan Pembelajaran. Materi

BAB III PEMROGRAMAN PADA SOFTWARE MICROSOFT VISUAL BASIC dan data-data yang saling terelasi yang memerintahkan apa yang harus

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

MODUL I PENGENALAN MATLAB

Pengenalan JavaScript

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

BAB 1 KONSEP DASAR BAHASA C

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Kualitas bahasa pemrograman: Ekspresivitas : secara jelas menggambarkan algoritma yang dibuat oleh programmer

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Pendahuluan Metode Numerik

PENGENALAN C++ Bab 1

PHP (HYPERTEXT PREPROCESSOR)

PEMROGRAMAN BERORIENTASI OBJEK

ALGORITMA, FLOWCHART dan PSEUDO-CODE

Chapter 1 KONSEP DASAR C

VISUAL BASIC 6.0 PEMROGRAMAN KOMPUTER. Visual Basic

Pengantar Teknologi Informasi. Software Komputer

Komentar, Identifier, Konstanta dan Variabel

Dasar Pemrograman C++

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Dasar-Dasar Python Untuk Seismologi Materi # 01 Pengenalan Python

BAB 4 PENGENALAN BAHASA C

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

BAHASA PEMROGRAMAN JAVA

KONSEP DASAR PROGRAM BAHASA C

Konsep Pemrograman Prosedural

Modul 1 Dasar Dasar Bahasa Pemrograman C

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

PEMAHAMAN DASAR DASAR JAVA

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Pemrograman Dasar C. Minggu 1: Pengenalan C Programming

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

MODUL II VARIABEL DAN TIPE DATA

JAVA PADA NETBEANS IDE 7.4 ASRI WIDYADHARI KOM E 13

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Modul Praktikum 3 Pemograman Berorientasi Objek

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

Konsep Dasar Pemrograman Dan Pengenalan C++

Sekilas Tentang C. Dasar Pemrograman & Algoritma

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

BAB III ANALISIS DAN PERANCANGAN SISTEM. Analisis sistem bertujuan untuk mengidentifikasi permasalahan

TEKNIK KOMPILASI. Alamat untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Pertemuan 2 Bahasa Visual Basic Aplication

PEMROGRAMAN TERSTRUKTUR MENGGUNAKAN MATLAB

BEKERJA DENGAN JAVA CLASS LIBRARY

Konsep Dasar Pemrograman Berorientasi Obyek I JAVA. Anugrah Kusuma Seno Adi Putra

Bab IV Simulasi dan Pembahasan

SUB PROGRAM (FUNGSI)

Transkripsi:

Pendahuluan Komputasi Nuklir 29 Oktober 2015 Komputasi Nuklir Pendahuluan 29 Oktober 2015 1 / 41

Outline 1 Pendahuluan 2 Algoritma 3 Bahasa Pemrograman 4 Implementasi aturan trapesium menggunakan bahasa yang berbeda Komputasi Nuklir Pendahuluan 29 Oktober 2015 2 / 41

Pendahuluan Outline 1 Pendahuluan 2 Algoritma 3 Bahasa Pemrograman 4 Implementasi aturan trapesium menggunakan bahasa yang berbeda Komputasi Nuklir Pendahuluan 29 Oktober 2015 3 / 41

Pendahuluan Langkah penyelesaian permasalahan secara numerik Ketika permasalahan sains harus dipecahkan dengan bantuan komputasi numerik, prosedur penyelesaiannya meliputi beberapa langkah: 1 Memahami permasalahan dan memformulasikan model matematis 2 Menggunakan metode numerik untuk menyelesaikan problem matematis 3 Menerapkan metode numerik pada program komputer 4 Melakukan verifikasi bahwa hasil dari program adalah benar secara matematis 5 Menerapkan program pada permasalahan ilmiah dan menginterpretasikan hasil Komputasi Nuklir Pendahuluan 29 Oktober 2015 4 / 41

Pendahuluan Persyaratan software Software yang melakukan komputasi ilmiah harus: 1 Benar secara matematis 2 Efisien (kecepatan, penggunaan memori) 3 Mudah untuk dikelola dan dikembangkan Jika terdapat kesalahan pada program, perhitungan kemungkinan besar salah dan hasilnya menjadi tidak berguna. Banyak jenis komputasi yang memerlukan waktu komputasi berhari-hari atau berminggu-minggu serta membutuhkan memori gabungan dari sejumlah besar komputer. Oleh karena itu efisiensi terkait dengan kecepatan dan penggunaan meori mejadi hal yang sangat penting. Sayangnya, banyak usaha perbaikan efisiensi justru mudah untuk menimbulkan error pada program yang dibuat. Kompleksitas software ilmiah juga mencapai limit di mana pengelolaannya dan pengembangannya di masa depan menjadi sulit untuk dilakukan, dan memodifikasi program yang kompleks juga dapat menimbulkan error yang cukup signifikan. Komputasi Nuklir Pendahuluan 29 Oktober 2015 5 / 41

Pendahuluan Software development skills Seorang pengembang perangkat lunak ilmiah perlu memiliki keterampilan (skills) yang memenuhi persyaratan tersebut. 1 Mampu memahami problem matematis yang akan diselesaikan 2 Mampu memahami metode numerik yang akan digunakan 3 Mampu mendesain algoritma dan struktur data yang sesuai 4 Mampu memilih bahasa pemrograman dan tools yang paling sesuai 5 Mampu menggunakan libraries 6 Mampu memverifikasi tingkat kebenaran hasil yang diperoleh Komputasi Nuklir Pendahuluan 29 Oktober 2015 6 / 41

Algoritma Outline 1 Pendahuluan 2 Algoritma 3 Bahasa Pemrograman 4 Implementasi aturan trapesium menggunakan bahasa yang berbeda Komputasi Nuklir Pendahuluan 29 Oktober 2015 7 / 41

Algoritma Pseudo Code Pemetaan dari problem fisis menjadi program komputer mempunyai beberapa karakteristik yang tidak tergantung kepada permasalahan yang sedang diselesaikan. Problem fisis harus dinyatakan sebagai model matematis. Untuk setiap problem matematis, kita perlu memilih metode solusi numerik. Setiap metode dinyatakan sebagai algoritma dan diimplementasikan sebagai bagian dari program, biasanya berupa fungsi. Program atau code merupakan sekumpulan fungsi yang mengimplementasikan berbagai algoritma (atau langkah-langkah solusi) dari problem secara keseluruhan. Komunikasi di antara fungsi tergantung pada jenis struktur data yang digunakan. Oleh karena itu, software numerik merupakan algoritma dan struktur data yang saling mempengaruhi. Komputasi Nuklir Pendahuluan 29 Oktober 2015 8 / 41

Algoritma Algoritma yang lengkap biasanya dinyatakan dalam pseudo code, yaitu campuran antara formula matematis dengan instruksi dari bahasa komputer. Tujuannya adalah agar algoritma dapat diterjemahkan dengan mudah ke bahasa pemrograman. Beberapa instruksi penting yang digunakan dalam pseudo code (dan program komputer) adalah 1 Assignment: notasi s s + 2 berarti kita memberikan nilai dari ekspresi s + 2 ke s, yaitu s diganti dengan nilai yang baru, 2 Kalang for: kalang yang diatur dengan pembilang yang berjalan di antara dua nilai dengan panjang langkah tertentu, 3 Kalang while: kalang yang diatur dengan kondisi boolean, 4 Fungsi: subprogram yang mengambil sekumpulan variabel sebagai input (argumen) dan mengembalikan sekumpulan variabel, 5 Larik (array): urutan bilangan, misalnya u 1, u 2,..., u 10. Komputasi Nuklir Pendahuluan 29 Oktober 2015 9 / 41

Algoritma Contoh: n 1 f (a + ih) i=1 dengan f adalah fungsi dengan variabel skalar, a dan h adalah konstanta. Kalang for: 1: s = 0 2: for i = 1,..., n 1 do 3: s s + f (a + ih) 4: end for Kalang while: 1: s = 0 2: i = 1 3: while i n 1 do 4: s s + f (a + ih) 5: i i + 1 6: end while Komputasi Nuklir Pendahuluan 29 Oktober 2015 10 / 41

Algoritma Contoh: Misal kita ingin mengintegralkan fungsi f (x) dari x = a sampai x = b menggunaan metode trapesium. b a f (x)dx h 2 f (a) + h n 1 2 f (b) + h f (a + ih), 1: function trapesium(a,b,f,n) 2: h = b a n 3: s = 0 4: for i = 1,..., n 1 do 5: s s + hf (a + ih) 6: end for 7: s s + h 2 f (a) + h 2 f (b) 8: return s 9: end function i=1 h = b a n (1) 2n perkalian, 2n penjumlahan, 3 pembagian dan n + 1 pemanggilan fungsi Komputasi Nuklir Pendahuluan 29 Oktober 2015 11 / 41

Algoritma Optimasi perhitungan Rumusan yang lebih efisien: { } b n 1 f (x)dx h 0, 5(f (a) + f (b)) + f (a + ih), h = b a n a 1: function trapesium(a,b,f,n) 2: h = b a n 3: s = 0 4: x = a 5: for i = 1,..., n 1 do 6: x x + h 7: s s + f (x) 8: end for 9: s s + 0, 5(f (a) + f (b)) 10: s hs 11: return s 12: end function i=1 (2) 1 perkalian, 2n penjumlahan, 1 pembagian dan n + 1 pemanggilan fungsi Komputasi Nuklir Pendahuluan 29 Oktober 2015 12 / 41

Algoritma Pedoman untuk mengimplementasikan metode numerik 1 Gunakan algoritma yang mudah untuk dipahami dan dapat dicari dengan mudah di literatur. 2 Buat program komputer sedekat mungkin dengan algoritmanya, sehingga korespondensi satu-satu dapat diperiksa dengan membandingkan kode dan algoritmanya. 3 Uji implementasi dengan problem yang sederhana di mana hasil yang eksak telah diketahui. 4 Hati-hati dengan optimisasi manual sebelum program diverifikasi. 5 Setelah optimisasi manual diimplementasikan, kompilasi program dengan mengaktifkan opsi optimisasi kompiler, jalankan program aslinya dan program yang telah dioptimasi, periksa apakah hasilnya ekivalen dan bandingkan waktu yang diperlukan untuk menjalankan kedua program tersebut. Komputasi Nuklir Pendahuluan 29 Oktober 2015 13 / 41

Algoritma Rekomendasi: Hindari optimasi di tahapan awal pengembangan sofware karena program yang tidak dioptimasi biasanya lebih mudah dipahami dan lebih mudah untuk di-debug. Donald Knuth Premature optimization is the roof of all evil. Komputasi Nuklir Pendahuluan 29 Oktober 2015 14 / 41

Bahasa Pemrograman Outline 1 Pendahuluan 2 Algoritma 3 Bahasa Pemrograman 4 Implementasi aturan trapesium menggunakan bahasa yang berbeda Komputasi Nuklir Pendahuluan 29 Oktober 2015 15 / 41

Bahasa Pemrograman Ada ratusan bahasa pemrograman, sebagian cocok untuk perhitungan ilmiah, sebagian yang lain tidak. Menentukan bahasa pemrograman yang digunakan tentunya tergantung pada selera dan pengalaman pribadi. Tapi penguasaan terhadap beberapa bahasa pemrograman serta kemampuan untuk berpindah dengan cepat ke bahasa yang baru sangatlah diperlukan. Alasannya karena tools yang berbeda mempunyai kekuatan dan kelemahan yang berbeda sehingga cocok untuk jenis-jenis permasalahan yang berbeda. Komputasi Nuklir Pendahuluan 29 Oktober 2015 16 / 41

Bahasa Pemrograman Statis vs Dinamis Fortran, C, C++ dan Java disebut dengan strongly typed atau statically typed, karena setiap jenis variabel harus dituliskan secara eksplisit. Matlab, Python, Octave adalah contoh bahasa pemrograman yang tidak perlu dituliskan jenis variabel secara eksplisit dan jenis variabel dapat berubah selama program dijalankan dynamically typed. Dynamic typing memberikan fleksibilitas yang besar dan sintaksisnya lebih dekat dengan notasi matematis pada bahasa pseudo code. Static typing sangat berguna bagi pemrogram pemula karena dapat menghindari kesalahan input jenis variabel. Komputasi Nuklir Pendahuluan 29 Oktober 2015 17 / 41

Bahasa Pemrograman Efisiensi komputasi Beberapa bahasa komputer lebih cepat dibandingkan dengan yang lain. Bahasa pemrograman dapat dikelompokkan menjadi interpreter atau kompiler. Pembedaan ini merefleksikan potensi kecepatan bahasa dan oleh karenanya berpengaruh terhadap penggunaannya di bidang komputasi ilmiah. Umumnya kompiler mempunyai static typing, dan interpreter menggunakan dynamic typing. Java terletak di tengah-tengah: memiliki static typing, awalnya diinterpretasikan, tapi kemudian dilengkapi dengan teknik kompiler. Fortran, C dan C++ adalah kompiler yang menerjemahkan bahasa program kompute ke kode mesin, yaitu instruksi primitif tingkat rendah yang terkait dengan perangkat keras. Kompiler berjalan lebih cepat daripada interpreter karena beroperasi menggunakan kode mesin. Matlab, Python, Octave adalah interpreter. Sebuah program dibaca baris per baris oleh interpreter yang menerjemahkannya menjadi panggilan fungsi di library. Proses penerjemahan berlangsung ketika program berjalan. Keuntungan dari interpreter adalah tingkat fleksibilitasnya yang lebih tinggi, pernyataan dan struktur data dapat diubah secara dinamis ketika program berjalan. Komputasi Nuklir Pendahuluan 29 Oktober 2015 18 / 41

Bahasa Pemrograman Dukungan terhadap objek Fortran 77 hanya mempunyai beberapa jenis variabel: integer, real, array, complex dan character string. C memperbolehkan pemrogram untuk mendefinisikan jenis variabel baru. struct, merupakan kumpulan dari variabel-variabel dasar C dan variabel struct lain yang telah didefinisikan sebelumnya. C++ merupakan ekstensi dari C yang menawarkan jenis variabel yang didefinisikan oleh pengguna yang terdiri dari fungsi dan data. Jenis ini disebut dengan class. Fortran 90 dan Fortran 95 merupakan ekstensi dari Fortran 77 (dan versi yang lebih awal: Fortran IV dan Fortran 66) di mana programmer dapat mengumpulkan data dan fungsi pada module. Module dapat melakukan banyak hal seperti halnya class, tetapi class di C++ lebih unggul daripada modul di Fortran 90/95. Fortran 2000 mempunyai module dengan fungsionalitas class yang lebih baik. Komputasi Nuklir Pendahuluan 29 Oktober 2015 19 / 41

Bahasa Pemrograman Java mendukung class, tetapi fleksibilitasnya kurang daripada di C++. Sebaliknya, Java mempunyai fungsionalitas yang membuat bahasa tersebut lebih user-friendly dan lebih mudah untuk diprogram dibandingkan dengan C++. Python memiliki class yang lebih maju atau advanced dibandingkan dengan C++. Matlab awalnya hanya memiliki matriks dan string, tetapi pengembangan Matlab saat ini telah menyertakan pula definisi class. Komputasi Nuklir Pendahuluan 29 Oktober 2015 20 / 41

Outline 1 Pendahuluan 2 Algoritma 3 Bahasa Pemrograman 4 Implementasi aturan trapesium menggunakan bahasa yang berbeda Komputasi Nuklir Pendahuluan 29 Oktober 2015 21 / 41

Struktur program Struktur utama program untuk melakukan integrasi numerik dengan bantuan aturan trapesium tidak tergantung pada tool pemrograman yang digunaan. Model matematis yang digunakan adalah I = b a f (x)dx (3) dan tujuannya adalah menghitung pendekatan terhadap nilai I. Pada program kita perlu untuk: 1 menginisialisasi data masukan: a, b, dan n 2 menentukan fungsi f (x) 3 memanggil modul program yang mengimplementasikan algoritma trapesium yang dioptimasi 4 menuliskan nilai dari I Untuk perhitungan ini, ditentukan a = 0, b = 2 dan n = 1000. Fungsi f (x) = e x 2 log(1 + x sin x) diimplementasikan dengan nama f1. Komputasi Nuklir Pendahuluan 29 Oktober 2015 22 / 41

Fortran 77 Didesain pada tahun 1950an sebagai bahasa tingkat tinggi alternatif terhadap assembly. Perkembangan: Fortran IV, Fortran 66, Fortran 77, Fortran 90, Fortran 95 dan Fortran 2000. Bahasa yang cukup primitif: hanya ada beberapa jenis variabel (integer, real, complex, array dan string), beberapa keyword, beberapa struktur kontrol dan tata letak yang ketat. Banyak digunakan di aplikasi komputasi ilmiah, karena sifatnya yang sederhana dan kinerja yang tinggi. Cocok untuk mengimplementasikan algoritma yang menggunakan kalang yang sangat intensif perhitungannya. Komputasi Nuklir Pendahuluan 29 Oktober 2015 23 / 41

1 2 3 4 Aturan trapesium r e a l 8 f u n c t i o n t r a p e s i u m ( a, b, f, n ) r e a l 8 a, b, f e x t e r n a l f i n t e g e r n r e a l 8 s, h, x i n t e g e r i h = ( b a )/ f l o a t ( n ) s = 0 x = a do i = 1, n 1 x = x + h s = s + f ( x ) end do s = 0. 5 ( f ( a ) + f ( b ) ) + s t r a p e s i u m = h s r e t u r n end 5 6 7 8 9 1 1 1 1 1 1 1 1 1 Komputasi Nuklir Pendahuluan 29 Oktober 2015 24 / 41

Implementasi program C f u n g s i yang akan d i i n t e g r a l k a n : r e a l 8 f u n c t i o n f 1 ( x ) r e a l 8 x f 1 = exp( x x ) log (1+x s i n ( x ) ) r e t u r n end C program utama : program i n t e g r a t i o n i n t e g e r n r e a l 8 a, b, r e s u l t e x t e r n a l f 1 a=0 b=2 n = 1000 r e s u l t = t r a p e s i u m ( a, b, f1, n ) w r i t e (, ) r e s u l t end Komputasi Nuklir Pendahuluan 29 Oktober 2015 25 / 41

Compiling, linking dan running Anggap program di atas disimpan dalam file int.f unix> g77 -O3 -c int.f # kompilasi unix> g77 -o int int.o # linking unix>./int Komputasi Nuklir Pendahuluan 29 Oktober 2015 26 / 41

C dan C++ C dikembangkan di awal tahun 1970an untuk UNIX OS dan menjadi dominan digunakan di akhir 1980an. Lebih advanced daripada F77, dengan memberikan fleksibilitas melalui tipe struct, namun seringkali diimbangi dengan berkurangnya kinerja komputasi. C++ didesain untuk menyediakan class dan OOP seperti bahasa SIMULA 67, namun dengan sintaksis C dan C sebagai subset. Aplikasi yang dapat mengambil manfaat dari struktur data yang rumit dan pemrograman OOP akan lebih sederhana implementasinya dibandingkan dengan F77 atau C. Akan tetapi C++ tidak dapat bersaing dengan F77 dalam hal kecepatan komputasi, meskipun perbedaannya kecil. Dengan sedikit otak-atik, C dan C++ bisa secepat atau bahkan lebih cepat daripada F77, tetapi hal ini tergantung dari jenis algoritma dan struktur data yang terlibat. Komputasi Nuklir Pendahuluan 29 Oktober 2015 27 / 41

Aturan trapesium typedef double ( f p t r ) ( double x ) ; double Trapesium ( double a, double b, f p t r f, i n t n ) { double h = ( b a )/ double ( n ) ; double s = 0 ; double x = a ; f o r ( i n t i = 1 ; i <= n 1; i ++) { x = x + h ; s = s + f ( x ) ; } s = 0. 5 ( f ( a ) + f ( b ) ) + s ; r e t u r n h s ; } Komputasi Nuklir Pendahuluan 29 Oktober 2015 28 / 41

Implementasi program #i n c l u d e <i o s t r e a m > #i n c l u d e <cmath> / f u n g s i t r a p e s i u m : /... / f u n g s i yang akan d i i n t e g r a l k a n / double f 1 ( double x ) { r e t u r n exp( x x ) l o g (1+x s i n ( x ) ) ; } i n t main ( ) // program utama { double a = 0, b = 2 ; i n t n = 1000; double r e s u l t = Trapesium ( a, b, f1, n ) ; s t d : : cout << r e s u l t << s t d : : e n d l ; } Komputasi Nuklir Pendahuluan 29 Oktober 2015 29 / 41

Compiling, linking dan running Anggap program di atas disimpan dalam file int.cpp unix> g++ -O3 -c int.cpp unix> g++ -o int int.o unix>./int # kompilasi int.cpp ke int.o # linking; menghasilkan int executable Komputasi Nuklir Pendahuluan 29 Oktober 2015 30 / 41

Java Java dibuat oleh Sun Microsystem di awal tahun 1990an dan dapat dianggap sebagai versi C++ yang lebih sederhana dan lebih user-friendly. Program Java tidak dikompilasi secara klasik seperti Fortran, C dan C++ sehingga kinerjanya sedikit negatif untuk komputasi ilmiah. Minat awal untuk menggunakan Java di dunia komputasi ilmiah telah turun, namun masih dominan untuk pembelajaran pemrograman komputer. Komputasi Nuklir Pendahuluan 29 Oktober 2015 31 / 41

Aturan trapesium import j a v a. l a n g. ; i n t e r f a c e Func { // c l a s s d a s a r untuk f u n g s i f ( x ) p u b l i c double f ( double x ) ; } c l a s s Trapesium { p u b l i c s t a t i c double i n t e g r a t e ( double a, double b, Func f, i n t n ) { double h = ( b a ) / ( ( double ) n ) ; double s = 0 ; double x = a ; i n t i ; f o r ( i = 1 ; i <= n 1; i ++) { x = x + h ; s = s + f. f ( x ) ; } s = 0. 5 ( f. f ( a ) + f. f ( b ) ) + s ; r e t u r n h s ; } } Komputasi Nuklir Pendahuluan 29 Oktober 2015 32 / 41

Implementasi program c l a s s f 1 implements Func { p u b l i c double f ( double x ) { r e t u r n Math. exp( x x ) Math. l o g (1+x Math. s i n ( x ) ) ; } } c l a s s Demo { p u b l i c s t a t i c void main ( S t r i n g a r g v [ ] ) { double a = 0 ; double b = 2 ; i n t n = 1000; double r e s u l t = 0 ; i n t i ; f 1 f = new f 1 ( ) ; // f 2 f = new f 2 ( ) ; f o r ( i = 1 ; i <= 10000; i ++) { r e s u l t = Trapesium. i n t e g r a t e ( a, b, f, n ) ; } System. out. p r i n t l n ( r e s u l t ) ; } } Komputasi Nuklir Pendahuluan 29 Oktober 2015 33 / 41

Compiling, linking dan running Anggap program di atas disimpan dalam file Trapesium.java unix> javac Trapesium.java unix> java Demo # kompilasi # running Komputasi Nuklir Pendahuluan 29 Oktober 2015 34 / 41

MATLAB Matlab awalnya merupakan front end yang user-friendly terhadap library F77 yang efisien untuk keperluan komputasi aljabar linear numerik. Selama tahun 80an dan terutama 90an, pengembangan Matlab menjadi lebih baik dan lebih user-friendly dan menjadikannya platform pengembangan untuk aplikasi komputasi ilmiah. Bekerja dengan Matlab tidak terlalu jauh berbeda dengan pemrograman F77, tetapi terdapat perbedaan mendasar: Pernyataan dapat diberikan secara interaktif, yaitu kita tuliskan perintah dan hasilnya langsung dapat dilihat. Tidak perlu mendeklarasikan variabel (dynamic typing). Matlab mempunyai banyak perintah tingkat tinggi yang menggantikan keperluan penulisan kalang secara rinci. Jika terdapat kesalahan pada pernyataan, Matlab akan memberikan pesan kesalahan yang mudah dipahami. Matlab menyediakan fitur visualisasi yang maju dan terintegrasi. Komputasi Nuklir Pendahuluan 29 Oktober 2015 35 / 41

Fungsi yang akan dipanggil secara interaktif pada lingkungan Matlab atau dari script Matlab harus berupa source code yang ditulis pada file dengan ekstensi.m. Isi file Trapesium.m f u n c t i o n r = Trapesium ( a, b, f, n ) % METODE TRAPESIUM I n t e g r a s i s e c a r a numerik d a r i a ke b % menggunakan metode t r a p e s i u m f = f c n c h k ( f ) ; h = ( b a )/ n ; s = 0 ; x = a ; f o r i = 1 : n 1 x = x + h ; s = s + f e v a l ( f, x ) ; end s = 0. 5 ( f e v a l ( f, a ) + f e v a l ( f, b ) ) + s ; r = h s ; Komputasi Nuklir Pendahuluan 29 Oktober 2015 36 / 41

Fungsi yang akan diintegralkan disimpan di file.m lain, misalnya f1.m f u n c t i o n y = f 1 ( x ) y = exp( x x ) log (1+x s i n ( x ) ) ; Untuk mengintegralkan f1, kita memanggil fungsi Trapesium di lingkungan Matlab interaktif. a = 0 ; b = 2 ; n = 1 0 ; r e s u l t = Trapesium ( a, b, @f1, n ) ; d i s p ( r e s u l t ) ; % p r i n t r e s u l t Komputasi Nuklir Pendahuluan 29 Oktober 2015 37 / 41

Python Python adlaah bahasa pemrograman yang sangat fleksibel yang mendukung banyak konsep maju dibandingkan C atau Fortran, dan juga konstruksi datanya lebih powerful dibandingkan C++ atau Java. Programnya cenderung lebih kecil, lebih ringkas dan lebih mudah dibaca dibandingkan dengan Fortran, C, C++ dan Java. Karena Python adalah interpreter, maka untuk beberapa konstruksinya (terutama kalang) berjalan lebih lambat dibandingkan Fortran, C, C++ atau Java. Akan tetapi untuk banyak aplikasi terkait komputasi ilmiah, Python cukup cepat. Adanya dukungan library yang cukup handal untuk komputasi ilmiah, misalnya NumPy, SciPy dan Matplotlib. Matlab dan Python banyak kesamaannya: mudah dipelajari, punya sintaksis yang sangat bersih, dan mempunyai tool tingkat tinggi untuk melakukan operasi kompleks dengan hanya beberapa pernyataan saja. Komputasi Nuklir Pendahuluan 29 Oktober 2015 38 / 41

Variabel di Python dapat langsung digunakan, tanpa harus disebutkan jenisnya secara eksplisit. Karena sintaksis Python sangat dekat dengan notasi matematika, maka perbedaan antara algoritma dengan program Python menjadi kecil. #! / u s r / b i n / env python from math import def Trapesium ( a, b, f, n ) : h = ( b a )/ f l o a t ( n ) s = 0 x = a f o r i i n range ( 1, n, 1 ) : x = x + h s = s + f ( x ) s = 0. 5 ( f ( a ) + f ( b ) ) + s r e t u r n h s def f 1 ( x ) : f = exp( x x ) l o g (1+x s i n ( x ) ) r e t u r n f a = 0 ; b = 2 ; n = 1000 r e s u l t = Trapesium ( a, b, f1, n ) p r i n t r e s u l t Komputasi Nuklir Pendahuluan 29 Oktober 2015 39 / 41

Tidak diperlukan proses kompilasi program, karena Python adalah interpreter. Untuk menjalankan program, cukup dengan mengetikkan nama file, misal int.py di Unix/Linux/Mac, atau menuliskan unix> python int.py Komputasi Nuklir Pendahuluan 29 Oktober 2015 40 / 41

Perbandingan running time Tabel: default Bahasa Waktu relatif Fortran 1 C++ 1 Java 2,1 Matlab 85 2 (dengan vektorisasi) Python 14 2 (dengan vektorisasi) Komputasi Nuklir Pendahuluan 29 Oktober 2015 41 / 41