BAB I Pengantar Pemrograman Komputer untuk Bidang Teknik Sipil A. Pemrograman di Bidang Teknik Sipil Pada bidang Teknik Sipil, sejak awal dikenalkan pemanfaatan komputer untuk hitungan perancangan atau analisis, telah dikembangkan berbagai program komputer untuk membantu perhitungan analisis struktur baik untuk gedung bertingkat maupun jembatan, perhitungan aliran air untuk banjir di sungai maupun dinamika aliran pada jaringan irigasi serta hitungan-hitungan lainnya. Pada masa itu yang dibantu komputer khususnya adalah perhitungan yang memerlukan penyelesaian persamaan matriks yang besar maupun hitungan yang memerlukan iterasi (perulangan hitungan) yang banyak seperti permasalahan struktur dan dinamika aliran yang telah disebut di atas. Pada masa awal komputer, bahasa pemrograman yang digunakan di bidang Teknik Sipil adalah bahasa FORTRAN yang merupakan kependekan dari “FORmula TRANslation” Language. Bahasa Fortran disusun dalam rangka memfasilitasi pekerjaan-pekerjaan yang sarat dengan hitungan penyelesaian persamaan matematika. Ada bahasa pemrograman lain pada masa awal teknologi komputasi yang khusus untuk pengolahan data non penyelesaian persamaan matematika seperti COBOL (COmmon Business Oriented Language) yaitu mengolah data administrasi, keuangan dan bisnis. Bahasa Fortran pada masa awal teknologi komputasi secara luas juga digunakan bidang-bidang teknik lain dan sain. Perangkat lunak di bidang Teknik Sipil telah dikembangkan dalam bahasa Fortran telah menjadi warisan generasi sekarang cukup banyak seperti pada analisis struktur (NASTRAN, ), analisis hidrodinamika (FASTTABS, HEC, DAMBREAK), dll. Selain itu telah banyak pula modul-modul subroutine dalam bahasa FORTRAN yang berisi bagian hitungan-hitungan standar seperti perkalian vektor, perkalian matriks, tranasformasi koordinat dan lain-lain yang kemudian dibendel menjadi library (misalnya NAG Library). Belakangan, pada pengembangannya, Fortran 95 (FTN95) mengakomodasi sebagian modul-modul operasi matriks vektor menjadi operator dalam bahasa FTN95 itu sendiri. Perkembangan bahasa pemrograman telah menyediakan teknologi-teknologi informatika baru dengan berbagai inovasi yang memberi kemudahan dan perluasan fungsi atau fasilitas-fasilitas seperti pada sistem operasi berbasis gambar / image yang semakin userfriendly, bahasa pemrograman yang mengakomodasi paralelisme, pemrograman berorientasi obyek, komputasi berkinerja tinggi (High Performance Computing/ HPC), dll. Berbagai bahasa pemrograman menawarkan keunggulan-keunggulan, seperti Visual C++, Dephi, Java, Visual Basic .Net, dll. Namun tidak berarti yang paling unggul dapat menyelesaiakan semua jenis urusan komputasi karena setiap bahasa pemrograman mempunyai target komunitas pengguna utamanya masing-masing. Aktifitas target komunitas pengguna ini yang menjadi perhatian dalam proses pengembangan. Dengan demikian pemilihan bahasa pemrograman yang akan digunakan untuk mengembangkan 1 perangkat lunak perlu memperhatikan kesesuaian ini (antara urusan dan fasilitas yang disediakan oleh bahasa pemrograman). B. Pengenalan Komputer Unsur-unsur komputer dapat dibedakan menjadi perangkat keras (hardware) dan perangkat lunak (software). Perangkat keras adalah bagian-bagian mesin hitung yang dapat dipegang dan dilihat secara fisik seperti kotak (casing), motherboard, layar (screen), papan tompol (keyboard), mouse, dll. Perangkat lunak adalah bagian komputer yang merespon pengguna, menggerakkan dan mengendalikan mesin hitung tersebut bekerja dalam bentuk susunan perintah-perintah yang disimpan dalam perangkat keras penyimpan tetap (hard disk) atau sementara (Random Access Memory/ RAM). Gambar 1. Perangkat keras komputer. Perangkat keras komputer dapat digolongkan dalam kategori Central Processing Unit/ CPU, Peripheral / Input dan Output Devices dan Bagian Penghubung /Interface seperti terlihat dalam Gambar 1. Bagian CPU dapat diartikan kotak atau unit yang melakukan proses-proses hitungan termasuk tempat penyimpan namun ada kalanya dimaksud untuk menunjuk bagian dari motherboard yang melakukan pengolahan instruksi atau perintahperintah hitungan saja (processor dan memori registernya). Dalam unit CPU umumnya berisi motherboard atau mainboard yang berupa pelat dari bahan sintetis yang berlapis yang berisi komponen-komponen elektronik utama sebuah komputer yaitu processor, RAM, dan jaringan konduktor penghubung serta bagian interface tempat menghubungkan rangkaian elektronik pada motherboard ke board / card lain maupun soket-soket untuk piranti input dan output. Ada kalanya beberapa komponen peripheral dimasukkan dalam motherboard seperti graphic card (on board graphic card). Perangkat peripheral adalah hard disk (HD), Solid State Disk (SSD), papan tombol (key board), mouse, CD drivers, Wifi dan Bluetooth device, finger pad, camera, microphone, dll. Perintah-perintah yang dijalankan oleh processor perlu mengenali atau diberi tahu tentang kode-kode elektronik yang dikenali oleh perangkat peripher. Pada umumnya vendor sistem operasi dan pembuat perangkat keras bekerja sama untuk membuat “driver” setiap perangkat peripheral. Perangkat peripheral yang ada di dalam unit CPU umumnya diperiksa dan dikenali oleh sistem operasi sesaat setelah menghidupkan 2 komputer (Starting dan Booting). Perangkat peripheral yang dihubungkan belakangan di tengah waktu komputer bekerja pada umumnya langsung diperiksa setelah dihubungkan, Jika “driver” nya sudah diinstall, maka perangkat tersebut langsung dikenali dan dapat digunakan (plug and play). Namun jika belum ada “driver”nya atau belum diinstall, processor tidak mengenali bagaimana memerintah perangkat peripher tersebut. Oleh karena itu jika pengguna mempunyai peralatan baru seperti printer, scanner atau modem, maka perlu dilakukan penginstallan driver alat baru tersebut yang pada umumnya disertakan dalam CD dalam paket pembelian atau diunduh dari situs pabriknya sebelum alat tersebut dapat digunakan. Perangkat lunak komputer terdiri dari beberapa lapis. Secara ringkas dapat dikenali adanya lapis bahasa mesin, lapis sistem operasi dan lapis software aplikasi. Dalam kenyataannya lapis-lapis software tersebut bisa bervariasi. Lapis perangkat lunak yang paling rendah adalah susunan perintah-perintah yang langsung mengendalikan bagaimana isi dalam sel-sel memori komputer dibaca, diolah, disimpan lagi atau dikirim ke saluran peripheral tertentu oleh processor. Lapis perangkat lunak terendah sering disebut bahasa mesin. Modul-modul bahasa mesin untuk berbagai keperluan disimpan dalam library dan digunakan oleh lapis perangkat lunak di atasnya yaitu sistem operasi. Bagaimana bentuk instruksi yang paling rendah (langsung ke processor) dari sebuah komputer ? Processor komputer berkomunikasi dengan kode-kode yang tersusun dalam bentuk perbedaan tegangan. Tegangan melebihi voltase tertentu merepresentasikan nilai “1” dan tegangan kurang dari voltase tertentu merepresentasikan nilai “0”. Karena tersusun dari dua simbol, maka sistem kode ini disebut dengan “binary”. Kode-kode binary ini yang saling dikirim dan diterima oleh processor, memori dan peripheral devices. Kode binary dapat pula merepresentasikan nilai angka dengan sistem bilangan berbasis 2. Bilangan berbasis 2: “1101” nilainya adalah 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 13, bandingkan dengan, bilangan berbasis 10: “731” = 7 x 102 + 3 x 101 + 1 x 100 Komputer menyimpan kode dan angka dalam memori juga menggunakan kode binary. Sebuah sel lokasi memori hanya dapat menyimpan angka 0 atau 1. Ukuran sel ini sering disebut “bit”. Pada umumnya 8 bit dibundel dalam satu wadah yang disebut “byte”. Perhatikan bahwa 1 bit lokasi memori dapat merepresentasikan 2 keadaan atau nilai yaitu 0 x 20 dan 1 x 20 (atau 0 dan 1). Untuk 8 bit lokasi memori, terdapat 28 (256) kombinasi yang dapat direpresentasikan. Dalam bidang grafis digunakan istilah “resolusi”. Dengan demikian 1 byte hanya dapat digunakan untuk merepresentasikan (mewakili) 256 variasi atau 256 nilai anga bilangan bulat. Dalam bidang informatika 1 byte sering digunakan untuk merepresentasikan bilangan yang tersusun dalam 2 buah sub-bundel 4 bit, sehingga masing-masing sub-bundel dapat ditulis dengan bilangan berbasis 16 (hexadesimal atau disingkat hex) yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E dan F. Contoh: Memori 1 “byte” menyimpan angka “E7” = 14 x 161 + 7 x 160 = 224 + 7 = 231, Dalam binari “E7” adalah “1110 0111” Binari “0110 1010” = Hexadesimal “6A” = Desimal “106” Susunan kode binary tersebut, baik yang merepresentasikan perintah, angka atau data lain membentuk modul-modul fungsional yang digunakan oleh lapis perangka lunak di 3 atasnya atau sistem operasi. Sistem operasi adalah lapis perangkat lunak yang melayani pengguna sejak komputer mulai siap merespon apa-apa yang diperintahkannya. Pengguna tidak berhadapan dengan bahasa mesin maupun dengan perangkat lunak aplikasi setelah ia menghidupkan komputer, namun dengan sistem operasi dalam bentuk apapun (text base atau graphic base). Sistem operasi berbasis text (misalnya Unix, Linux, atau DOS) akan “menyambut” pengguna dengan jendela berlatarbelakang putih atau hitam dan akan menunggu pengguna mengetikkan kata, karakter dan bilangan untuk memerintahkan komputer melakukan sesuatu (misalnya untuk menayangkan isi folder root dalam hard disk, diketik “dir C:\”). Sistem operasi berbasis grafik (Windows, Ubuntu atau Mac) akan menyambut pengguna dengan gambar latar belakang gambar pemandangan atau gambar lain yang dapat oleh pengguna, latar depan menu bar dan icon-icon untuk fungsi-fungsi tertentu dan menunggu pengguna mengklik salah satu icon untuk direspon sesuai fungsinya. Icon-icon pada umumnya digunakan untuk mengaktifkan aplikasi komputer, yaitu perangkat lunak lapis ketiga. Software-software aplikasi melayani berbagai keperluan termasuk diantaranya adalah keperluan pengguna menuliskan program komputer untuk membuat software aplikasi baru. Klik pada icon-icon oleh sistem operasi dihubungkan dengan urutan perintah-perintah khusus dalam bahawa mesin sesuai fungsi tomboltombol tersebut. Pengguna tidak lagi dihadapkan pada perintah-perintah yang rumit dan pelik yang prosessor diminta mengerjakannya. C. Pemrograman Pengertian pemrograman komputer perlu dibedakan dengan pengertian penggunaan perangkat lunak aplikasi (application software) untuk keperluan atau hitungan tertentu seperti menggunakan software AutoCad untuk menggambar tampang saluran atau fondasi bangunan. Pemrograman komputer di sini dimaksudkan sebagai menyusun langkah-langkah atau perintah-perintah pekerjaan tertentu secara rinci untuk suatu pekerjaan yang dapat dilakukan oleh komputer. Pemrograman komputer menghasilkan perangkat lunak aplikasi. Sejauh mana kerincian langkah-langkah dalam program komputer ? Jawabannya adalah tergantung “kepandaian” bahasa komputer yang kita pakai. Sebagai contoh, jika kita akan meminta komputer untuk mem’print’ suatu teks yang kita inputkan, maka kita dihadapkan pada pertanyaan apakah komputer begitu saja tahu satu perintah tunggal untuk pekerjaan tersebut. Pada suatu keadaan mungkin bisa, karena bahasa komputer yang digunakan telah menyiapkan sebuah program (koleksi susunan perintah-perintah) yang disimpan dalam ‘library’ yang membantu kita dengan menjediakan pelayanan untuk mengarahkan perintah dan bahan yang akan diprint pada channel atau port mana untuk sebuah perintah “print” tersebut. Pada keadaan lain, dapat ditemui komputer (dalam hal ini sistem operasi atau software aplikasi) belum menyediakan susunan perintah-perintah tersebut sehingga diperlukan untuk dipersiapkan user / programer beberapa susunan langkah-langkah untuk diberikan kepada komputer supaya dapat melakukan pekerjaan tersebut. Misalnya jika belum ada programnya untuk keperluan menjalankan perintah print, maka untuk dapat menjalankannya diperlukan tahapan langkah perintah yang meliputi perintah membuka 4 atau menghubungkan printer yang diinginkan dengan channel/ saluran tertentu, dan kemudian memerintah komputer untuk mengirim data teks yang akan diprint dengan kode-kode tertentu. Hal lain yang semacam adalah pada kasus penggunaan jenis printer yang tidak populer pada komputer dengan sistem operasi yang tidak populer pula sehingga tidak tersedia printer drivernya (kode-kode khusus dari pabrik pembuat hardware printer untuk menjalankan bagian-bagian dari produknya). Perhatikan kata-kata baru yang saudara mungkin masih asing (library, default, yang lain jika ada). Carilah pengertian kata-kata tersebut, diskusikan dengan teman-teman jika ragu ! Urutan perintah-perintah tersebut untuk kasus yang sederhana dapat hanya berupa urutan perintah yang linier (maksud kata ‘linier’ adalah tidak ada pengulangan dan percabangan, bukan seperti pengertian ‘linier’ yang berteman dengan istilah ‘kuadratis’, ‘kubik’, dan seterusnya). Sebagai contoh, untuk sebuah pekerjaan sederhana dan pendek seperti komputer diminta untuk membantu “membaca sebuah angka dari keyboard kemudian menyimpan kedalam hard disk”, dari sisi pengguna komputer pekerjaan tersebut adalah “memasukkan/ menginputkan angka pada keyboard dengan meksud untuk disimpan dalam hard disk oleh komputer”. Cobalah cermati dan fahami beda dua pada judul pekerjaan tersebut. Bagi seseorang yang akan membuat program komputer ungkapan yang pertama yang harus digunakan sebagai dasar penyusunan langkah-langkah. Programer harus membayangkan bagaimana ia seolah-olah sebagai komputer yang akan mengerjakan langkah-langkah tersebut dengan kerincian sesuai ‘kosa kata’ yang dimiliki dalam bahasa pemrograman komputer yang digunakan. Mungkin kita akan terpikir bahwa langkah pemrograman untuk pekerjaan tersebut (yang akan dikerjakan komputer) adalah hanya: membaca angka dari keyboard, dan menyimpannya ke dalam hard disk Namun demikian sebelumnya pertanyaan apakah ada atau tersedia satu perintah untuk mengerjakan butir satu atau butir dua tersebut di atas harus terjawab. Jika jawabnya ‘ya’ maka dua butir perintah tersebut di atas cukup. Tinggal disesuaikan ‘tata bahasa’nya saja. Jika jawabnya ‘tidak’, maka harus dicari satu langkah yang tidak ada perintahnya (‘kosa kata’ nya) dalam bahasa pemrograman komputer yang digunakan tersebut terdiri dari urutan langkah-langkah yang lebih rinci apa saja, yang tersedia dalam ‘perbendaharaan kata’ dalam bahasa tersebut. Oleh karena itu untuk dapat menyusun program komputer diperlukan pengetahuan tentang bahasa pemrograman yang akan digunakan, ‘perbendaharaan kata’ nya dan ‘tata bahasa’ nya. Salah satu bahasa pemrograman yang mudah diakses adalah Visual Basic® for Application (VBA) yang merupakan bagian dari perangkar lunak Microsoft Excel (MS 5 Excel). Langkah-langkah pemrograman dengan VBA dalam MS Excel disebut ‘macro’. Untuk dapat menggunakan VBA ini, macro harus diaktifkan terlebih dahulu. Cara mengaktifkan macro sedikit bervariasi pada beberapa versi MS Excel. Pengguna dapat mencari prosedurnya yang sesuai melalui fasilitas Excel Help. Umumnya terletak pada menu ‘Option’ atau ‘Preference’ (yang berada di pulldown menu Excel pada MS Excel Office for Mac 2011). Dengan menggunakan VBA, data yang digunakan atau dibaca oleh program dapat diletakkan dalam worksheet. Demikian pula hasil hitungan program VBA dapat ditulis ke worksheet. Contoh berikut adalah menyimpan angka dari worksheet di sel B3 ke dalam variabel A. A = Range(“B3”).value atau A = Cell(3,2).value Dalam bahasa FORTRAN untuk membaca angka dari keyboard diperlukan: jenis variabel yang sesuai dan nama variabel yang akan menangkap atau menyimpan sementara dalam memory komputer, misalnya variabel dengan jenis bilangan bulat dan diberi nama “A”. Kalau tidak sesuai dengan “default” maka variabel tersebut harus didefinisikan terlebih dahulu dengan statement: INTEGER*2 A demikian juga nomor saluran untuk menangkap angka yang diinputkan melalui keyboard dapat menggunakan ‘default’nya yaitu saluran no 5. Sehingga dapat ditulis perintah: READ (5,*) A yang artinya “tunggu dan tangkap informasi yang dimasukkan melalui keyboard sampai diakhiri dengan menekan tombol <return> kemudian simpan sementara di lokasi memori komputer yang ditunjuk dengan simbol A” kolom baris Lengkapnya: baris kolom INTEGER*2 A READ (5,*) A OPEN (4, FILE=’tempat.txt’) WRITE (4,*) A CLOSE (4) Perhatikan ada 3 baris perintah kepada komputer untuk meminta menyimpan nilai yang sementara disimpan dalam variabel A ke dalam file pada hard disk yang diberi nama “tempat.txt”. Baris yang pertama dari 3 baris itu untuk membuka saluran, yaitu saluran nomor 4 yang dihubungkan dengan file yang diberi nama “tempat.txt”. Baris berikutnya 6 menuliskan isi variabel A ke dalam file tersebut (yaitu di hard disk). Baris terakhir menutup saluran nomor 4. Demikianlah salah satu contoh yang dilakukan dalam pemrograman komputer. Sudah dapatkah saudara membayangkan urutan-urutan perintah untuk urusan yang lain ? Kalau belum silakan membaca beberapa material terkait dengan bahasa FORTRAN dan beberapa contoh program-program sederhana. Kemudian cobalah membuatnya dan merasakan kegagalan dan keberhasilannya. Untuk mencoba menyusun dan menjalankan program dengan bahasa FORTRAN dapat digunakan SilverFrost Plato Integrated Development Environment / SFP IDE (FORTRAN 1995 / FTN95) dari Salford UK yang dapat didownload dari http://www.silverfrost.com/32/ftn95/ftn95_personal_edition.aspx , yang bekerja pada sistem operasi Windows 32 bit. Bagi yang menggunakan sistem operasi 64 bit dapat menginstall aplikasi virtual machine (misalnya VMware atau VirtualBox: www.oracle.com/technetwork/server-storage/virtualbox/downloads/) kemudian menginstall di dalamnya sistem operasi Windows 32 bit. Tugas Individual: Buka Plato IDE. Tuliskan pada lembar kerja perintah-perintah berikut ini. Program Coba Print*, ‘Berhasil’ atau Write(*,*) ‘Berhasil’ End Sudah berhasil ? Kalau belum periksa lagi program saudara dan coba lagi. Coba lagi menulis program baru sebagai berikut ini. Susun urutan langkah dengan bahasa awam langkah-langkah rinci yang dapat diserahkan kepada komputer untuk mengerjakannya pekerjaan menerima 3 angka berturut-turut kemudian menyimpan jumlahnya. Langkah-langkah rinci: menerima angka pertama dan disimpan ke dalam variabel 1, menerima angka kedua dan disimpan ke dalam variabel 2, menerima angka ketiga dan disimpan kedalam variabel 3, menjumlah nilai dalam variabel 1, variabel 2 dan variabel 3, kemudian menyimpan ke dalam variabel 4, tulis hasil terakhir yaitu nilai variabel 4 alternatifnya: menerima angka pertama dan disimpan ke dalam variabel 1, menerima angka kedua, dijumlahkan dengan nilai variabel 1 dan hasilnya disimpan ke dalam variabel 1 lagi (dioverwrite), menerima angka ketiga, dijumlahkan dengan nilai variabel 1 dan hasilnya 7 disimpan kedalam variabel 1 lagi (dioverwrite), tulis hasil terakhir yaitu nilai variabel 1 Sementara ‘menerima 3 angka’ langsung di dalam program Program Jumlah01 a=7 b=6 c = 11 d=a+b+c print*, d End alternatif Program Jumlah02 a=7 a=a+6 a = a +11 print*, a End Jika ‘menerima 3 angka’ dari keyboard, maka harus ada perintah baca dan tulis Program Jumlah03 print*,’masukkan angka pertama kemudian tekan Enter, ’ read(*,*) a print*,’masukkan angka kedua kemudian tekan Enter, ’ read(*,*) b print*,’masukkan angka ketiga kemudian tekan Enter, ’ read(*,*) c d=a+b+c print*, d End alternatif Program Jumlah04 print*,’masukkan angka pertama kemudian tekan Enter, ’ read(*,*) a print*,’masukkan angka kedua kemudian tekan Enter, ’ read(*,*) b a=a+b print*,’masukkan angka ketiga kemudian tekan Enter, ’ read(*,*) b a=a+b print*, a End Diskusikan dengan teman-teman saudara. Silahkan membaca buku apa saja tentang pemrograman komputer. Di Perpustakaan T Sipil atau Browsing di Internet terdapat beberapa buku tentang Fortran. Hasil dikumpulkan minggu depan sebelum kuliah. 8 9 BAB II Menyusun dan menjalankan Program Komputer Menggunakan Plato IDE dengan Bahasa Fortran 95 Menu pada SFP IDE Tampilan jendela SFP IDE seperti gambar berikut ini. 1 0 BAB III Pemrograman dan Algoritma 1 1 BAB IV Unsur-unsur Bahasa Fortran 95 1 2 BAB V Pemrograman Visual dan Dikendalikan Kejadian (Event Driven) 1 3 BAB VI Pemrograman Berorientasi Obyek (Object Oriented Programming / OOP) 1 4 BAB VII Visual Basic Applications dan Visual Basic 1 5 BAB VIII Contoh-contoh Pemrograman Sederhana dalam Teknik Sipil dan Lingkungan 1 6