pendahuluan : ide dan struktur program delphi pemrograman delphi

17 downloads 253 Views 1MB Size Report
Pada IDE akan ditampilkan Form baru yang merupakan aplikasi/program Window .... Tidak menggunakan kata kunci (reserve word) yang digunakan Delphi.
1

PENDAHULUAN : IDE DAN STRUKTUR PROGRAM DELPHI PEMROGRAMAN DELPHI

1.1 PENDAHULUAN Sebelum kita memulai Delphi, kita harus menginstalasi program Delphinya terlebih dahulu. Kita bisa menggunakan Delphi 5, 6, 7 atau 8. Sebenarnya Delphi versi berapapun tidak masalah, karena produk Borland ini selalu menjaga kompatibilitas antar versinya. Untuk menginstalasi Delphi cukup mudah, tinggal ikuti petunjuk yang diberikan pada tampilan di layar. Sesudah Delphi terinstalasi pada komputer, kita bisa memulai mengenal dahulu apa itu Delphi? Kelompok bahasa pemrograman apa? Delphi adalah kompiler / penterjemah bahasa Delphi (awalnya dari Pascal) yang merupakan bahasa tingkat tinggi sekelas dengan Basic, C. Bahasa Pemrograman di Delphi disebut bahasa prosedural artinya bahasa/sintaknya mengikuti urutan tertentu / prosedur. Ada jenis pemrograman non-prosedural seperti pemrograman untuk kecerdasan buatan seperti bahasa Prolog. Delphi termasuk Keluarga Visual sekelas Visual Basic, Visual C, artinya perintah-perintah untuk membuat objek dapat dilakukan secara visual. Pemrogram tinggal memilih objek apa yang ingin dimasukkan kedalam Form/Window, lalu tingkah laku objek tersebut saat menerima event/aksi tinggal dibuat programnya. Delphi merupakan bahasa berorentasi objek, artinya nama objek, properti dan methode/procedure dikemas menjadi satu kemasan (encapsulate). Sebelum mempelajari ketiga struktur pemrograman ada baiknya kenali dahulu tampilan IDE, yang merupakan editor dan tools untuk membuat program Delphi. Pada IDE akan ditampilkan Form baru yang merupakan aplikasi/program Window yang akan dibuat. Aplikasi / program berbasis windows sering disebut dengan jendela (window). Bagaimana membuat aplikasi berbasis windows (berbasis grafik dan bukan berbasis teks seperti pada DOS)? Caranya dengan membuat sebuah form. Pada pemrograman berbasis windows, kita akan diperhadapkan pada satu atau beberapa jendela yang nampak dihadapan kita. Jendela ini dalam Delphi disebut juga dengan form. Pada pemrograman berbasis windows, kita akan diperhadapkan pada satu atau beberapa jendela yang nampak dihadapan kita. Jendela ini dalam Delphi disebut juga dengan form. Delphi adalah sebuah perangkat lunak (bahasa pemrograman) untuk membuat program / aplikasi komputer berbasis windows. Delphi merupakan bahasa pemograman berbasis objek, artinya semua komponen yang ada merupakan objek-objek. Ciri sebuah objek adalah memiliki nama, properti dan method/procedure. Delphi disebut juga visual programming artinya komponen-komponen yang ada tidak hanya berupa teks (yang sebenarnya program kecil) tetapi muncul berupa gambar-gambar. 1.1.1

Membuat Sebuah Form Saat anda pertama kali masuk ke Delphi, anda akan diperhadapkan pada sebuah form kosong yang akan

dibuat secara otomatis. Form tersebut diberi nama Form1. Form ini merupakan tempat bekerja untuk membuat antarmuka pengguna.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

Minimize Nama form

Maximize Close

Tempat bekerja

Gambar1. Form kosong yang dibuat saat anda masuk Delphi 1.1.2

Mengganti Nama Form dan Menambahkan Judul Biasakan sebelum menjalankan program, sebaiknya ganti nama form dan beri judul sesuai program

yang kita buat. Delphi akan secara otomatis memberi nama form1, form2, form3, dst. Nama form tersebut kurang mengandung arti dan akan menyulitkan bila form yang dibuat cukup banyak. Saat membuka Delphi pertama kali, nampak sebuah jendela Object Inspector. Jika tidak muncul pilih menu View | Object Inspector atau tekan tombol F11. Pada Object Inspector ada dua buah halaman (tab) yaitu Properties dan Events. Properties digunakan untuk mengganti properti (kepemilikan) sebuah objek/komponen. Sedangkan Events digunakan untuk membuat procedure yang diaktifkan (trigered) lewat sebuah event.

Nama objek Tab events Tab properties

Properties Caption

Nilai / isi dari properties

Gambar 2. Jendela Object Inspector untuk mengganti properti caption

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3 `

Semua properti diurutkan berdasarkan alpabetik, dan dapat juga diurutkan berdasarkan kategori.

Gantilah judul form dengan Hello melalui properti Caption, sedangkan nama form dengan nama frmHello melalui properti Name. Caption digunakan untuk menyimpan keterangan yang dimunculkan pada form, sedangkan Name digunakan sebagai Nama dari objek tersebut.

Catatan : Isi dari properti Name harus diawali alpabet dan tidak menggunakan spasi atau tanda baca. Anda sekarang sudah membuat aplikasi form kosong dengan tombol standar window : Minimize, Maximize, dan Close. Anda dapat mengubah ukuran form dengan menarik pada bingkai form menggunakan mouse (drag = klik tombol kiri mouse, tahan tombol tersebut lalu geser ke kiri/kanan atau atas/bawah). Anda dapat memindahkan form dengan meletakkan kursor pada form kemudian menggesernya (drag). 1.1.3

Menyimpan Form Pada Delphi ada 3 buah file utama (*.dpr, *.pas dan *.dfm).

a) *.dpr adalah file proyek yang dibuat berisi program kecil untuk : 

mendefinisikan Unit yang ada dalam file proyek



menginisialisasi data



membangun form



menjalankan aplikasi

uses Forms, Unit1 in ‘Unit1.pas’ {Form1}; begin Application.Initialize; Application.CreateForm(Tform1, Form1); Application.Run; end. b) *.pas adalah unit-unit (pascal code file), bisa terdiri satu atau banyak file c) *.dfm adalah file definisi Form (special pseudo code file), bisa terdiri satu atau banyak file

object Form1: Tform1 Left = 200 Top = 108 Width = 696 Height = 480 Caption = ‘Form1’ : Font.Name = ‘MS Sans Serif’ Font.Style = [] PixelsPerInch = 96 TextHeight = 13 object Button1: Tbutton Left = 176 Top = 116 : end Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

Catatan: Setiap Form (.dfm) harus memiliki sebuah Unit (.pas), tetapi anda dapat memiliki Unit tanpa sebuah Form (hanya kode saja). Jika ingin melihat kode tersebut anda dapat mengklik kanan mouse, lalu pilih VIEW AS TEXT atau tekan tombol AltF12. Sebaiknya anda tidak mengubah isi code tersebut, karena akan menyebabkan masalah serius. Tunggu saat anda sudah memahami maksud kode tersebut. Untuk kembali ke bentuk form, pilih VIEW AS FORM atau tekan tombol Alt- F12 kembali. Pilih submenu Save Project atau Save Project As pada menu File, dan Delphi akan menanyakan nama file source code untuk unit (*.pas) dan nama file proyeknya (*.dpr). Beri nama file form dengan HELLO.PAS dan project HELLO.DPR. Sesudah disimpan, jalankan program dengan menekan tombol F9 atau pilih menu Run | Run. 1.1.4

Menempatkan Komponen pada Form Karena Delphi merupakan bahasa pemrograman visual, maka komponen-komponen akan nampak pada

layar. Anda tinggal menempatkan komponen yang diinginkan pada form. Ada empat cara menempatkan komponen pada form. Misal anda memilih komponen Button pada Components Palette bagian Standard Page. Anda dapat memilih salah satu langkah berikut: 

Klik pada kompenen tersebut, pindahkan kursor ke form, sambil menekan tombol kiri mouse (drag komponen dan geser pada form) atau



Pilih komponen (klik komponen yang diinginkan) pada Components Palette kemudian klik pada form dimana komponen itu akan diletakkan.



Klik ganda pada komponen yang diinginkan, maka komponen tersebut akan ditambahkan pada form



Anda dapat menggunakan Copy dan Paste bila ingin membuat komponen yang sama yang sudah ada pada form. Caranya Shift-Klik kiri pada komponen yang ada di form, lalu pilih menu Copy (Ctrl-C) kemudian pilih menu Paste (Ctrl-V).

Speedbar Menu utama : File, Edit, Seaarch, View, dll.

Component palette bagian Tab Standard

komponen Label

Gambar 3. Kumpulan komponen

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5 1.1.5

Mengatur Tataletak Komponen Pada form ini hanya ada satu button, mungkin ada di bagian tengah form. Anda dapat mengatur letak

komponen tersebut dengan menggesernya. Bila anda ingin merapihkan pilih menu View |Alignment Palette, maka muncul sebuah Toolbox Align dengan ikon perapihan (alignment icons).

Gambar 4. Form dan Toolbox Alignment Dengan toolbox ini anda dapat merapikan beberapa komponen sekaligus, caranya buat fokus beberapa komponen, lalu klik icon pada toolbox yang diinginkan. Untuk mengetahui arti icon tersebut gerakan mouse pada tombol tersebut, lalu akan muncul penjelasan singkat kegunaan icon tersebut atau lihat Help (tekan F1). Anda bisa mempelajarinya sendiri. Cukup mudah!. Langkah yang penting adalah mengubah nama dan keterangan kompenen button tersebut. Ikuti bagian ini 1.1.6

Mengubah Nilai Properti Ubah nilai properti Caption menjadi Katakan Hello dan nilai properti Name menjadi btnHello.

Langkah ini mirip dengan mengubah nama dan keterangan sebuah form.

Setiap komponen sebaiknya diberinama yang memiliki arti dan diawali oleh jenis komponennya. Misal nama dari form Hello adalah “frmHello” atau nama dari button Hello adalah “btnHello”. Tujuannya adalah mengelompokkan komponen-komponen sejenis, karena pada Object Inspector nama komponen diurutkan berdasarkan alpabet. Properti name adalah properti internal dan digunakan untuk memberi nama pada sebuah komponen/objek. Nama ini adalah sebuah variabel yang mengacu pada komponen tersebut. Beberapa aturan penamaan komponen atau variabel atau identifer sebagai berikut 

Diawali alpabet, berikutnya boleh angka, garis bawah.



Tidak memakai spasi atau tanda-tanda baca atau operator



Boleh huruf kapital atau kecil, tidak ada perbedaan



Tidak menggunakan kata kunci (reserve word) yang digunakan Delphi



Biasakan nama komponen diawali kelompok komponennya, misal btnHello, frmHello, rgrKelas.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

6

Berikut contoh penamaan yang keliru menggunakan spasi

Gambar 5. Pesan kesalahan saat mengubah properti Name. Sesudah anda mengubah properti anda dapat melihat kode programnya (tekan Alt-F12) sebagai berikut : object Form1: Tform1 : Caption = ‘Hello’ : object btnHello: Tbutton Caption = ‘Katakan Hello’ End end 1.1.7

Membuat Method/Procedure lewat Event Saat anda menekan tombol pada sebuah form atau komponen, Windows memberitahukan bahwa

aplikasi mengirim pesan yang dibangkitkan oleh event tertentu . Delphi akan menanggapi dengan menerima event atau panggilan tersebut. Hal ini yang dinamakan penanganan event (event-handler method). Delphi mendefinisikan sejumlah event pada setiap komponennya. Daftar event ini berbeda untuk setiap komponen. Event yang paling umum pada komponen Button adalah OnClick. Artinya jika komponen Button tersebut di Klik maka akan melakukan procedure apa. Ada beberapa teknik yang dapat dilakukan untuk menangani event misal OnClick pada komponen button : 

Klik ganda pada button tersebut, maka sebuah method/procedure btnHelloClick



Pilih button, kemudian pilih Object Inspector’s combo box (called the Object Selector), pilih Tab Events, dan klik ganda pada area putih disebelah kanan event OnClick



Pilih button, pilih Tab Events, dan masukkan nama method yang dikehendaki, misal btnHelloClick pada area putih di sebelah kanan event OnClick

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

Gambar 6.

Tab Events pada Object Inspector, dan procedure yang dibangkitkan lewat event OnClick.

Bila anda ingin menghapus procedure atau penanganan event tersebut, anda dapat menghapus pada editor Unit tersebut. Hapus blok procedure tersebut dan hapus pada bagian definisi procedure yang ada diatasnya. Sekarang anda mengisi procedure tersebut dengan perintah untuk menampilkan pesan sebagai berikut :

procedure Tform1.BtnHelloClick(Sender: Tobject); begin MessageDlg (‘Hello, guys’, mtInformation, [mbOK], 0); end; Perintah ini sangat sederhana, yaitu untuk menampilkan pesan. Fungsi ini mempunyai empat parameter. Untuk rincinya anda dapat melihat bantuan (F1). 

Parameter pertama

: kalimat yang akan dimunculkan (pesannya)



Parameter kedua

: tipe message box seperti mtWarning, mtError, mtInformation, atau mtConfirmation. Coba lihat perbedaannya.



Parameter ketiga

: kumpulan tombol yang akan digunakan seperti mbYes, mbNo, mbOK, mbCancel, atau mbHelp.



Parameter keempat

: untuk help context atau nomor halaman pada Help, beri angka nol jika anda tidak mempunyai file help.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

Gambar 7. Message box 1.1.8

Kompilasi dan Jalankan Program Tekan tombol Run atau pilih menu Run | Run, Delphi does the following:

1.

Kompilasi Pascal source code file yang mendefinisikan form-form yang ada (.pas,.dfm)

2.

Kompilasi project file (.dpr)

3.

Buat executable (.EXE) file

4.

Jalankan executable file, biasanya pada mode pencarian kesalahan (debug mode).

1.2 PERINTAH SEQUENCE / DIPROSES SECARA BERUNTUN Perintah-perintah ini akan diproses oleh kompiler secara berurutan. Contoh kita memiliki 3 baris perintah. Kompiler akan memroses mulai dari baris-1, baris-2 kemudian baris-3. Contoh program untuk menampilkan pesan sebanyak 3 kali seperti berikut :

MessageDlg (‘Hello, guys’, mtInformation, [mbOK], 0); MessageDlg (‘Hello, lady’, mtInformation, [mbOK], 0); MessageDlg (‘Hello, everybody’, mtInformation, [mbOK], 0); Berikut latihan ke-1 untuk tiga buah aplikasi yaitu membuat tombol Hello, saat diklik tombolnya, tombol akan beraksi dengan memunculkan pesan. Ikuti langkahnya sebagai berikut : 1.

Buat form frmHello1 seperti yang sudah dijelaskan. 

Komponen yang dibutuhkan form dengan nama frmHello1 dan button dengan nama btnHello1. Ubah properti name-nya



Ubah properti caption masing-masing komponen menjadi Membuat program Hello1 dan Katakan Hello



Buat method dari komponen btnHello1 lewat event OnClick, seperti berikut

procedure TfrmHello1.btnHello1Click(Sender: Tobject); begin MessageDlg (‘Hello, guys’, mtInformation, [mbOK], 0); end;

2.



Jalankan program lihat hasilnya



Coba ganti parameter ke-1, ke-2 dan ke-3



Simpan dengan nama unit uHello1.pas dan project pHello1.dpr pada direktori Latih1

Buat aplikasi baru (File-New-Application) dengan form baru frmHello2 mirip form frmHello1 dengan tambahan sebagai berikut. Apa yang terjadi? (properti caption dari komponen tombol diganti saat program berjalan)

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9 

Komponen yang dibutuhkan form dengan nama frmHello2 dan button dengan nama btnHello2. Ubah properti name-nya

procedure TfrmHello2.btnHello2Click (Sender: Tobject); begin MessageDlg (‘Hello, guys’, mtInformation, [mbOK], 0); BtnHello2.Caption := ‘Say Hello Again’; end; 

Buat method untuk mengubah ukuran formHello2 lewat event OnResize, perhatikan apa yang terjadi bila ukuran form diubah saat program berjalan

procedure TfrmHello2.FormResize(Sender: Tobject); begin BtnHello2.Top := frmHello2.ClientHeight div 2 – BtnHello2.Height div 2; BtnHello2.Left := frmHello2.ClientWidth div 2 – BtnHello2.Width div 2; end;  3.

Simpan dengan nama unit uHello2.pas dan project pHello2.dpr pada direktori Latih1

Buat aplikasi baru (File-New-Application) dengan form baru frmHello3 seperti yang sudah dijelaskan. Objek Form1 Button1 Label1



Properties Name Name Caption Name Font

Value of properties FrmHello3 BtnHello3 &Show Me LblHello3 Size 24

Method lewat event (lihat dibawah)

Buat method dari komponen btnHello3 lewat event OnClick, seperti berikut

procedure Tform1.btnHello3Click(Sender: Tobject); begin if btnHello3.caption =’&Show Me’ then begin lblHello3.caption := ‘Selamat Datang di Delphi 5.0’; btnHello3.caption :=’&Hide Me’; end else begin lblHello3.caption := ‘’; btnHello3.caption :=’&Show Me’; end; end; 

Jalankan program lihat hasilnya



Simpan dengan nama unit uHello3.pas dan project pHello3.dpr pada direktori Latih1

2.1. Menu dan Perintah pada Delphi Ada empat cara untuk memberi perintah pada lingkungan Delphi (Delphi environment): 

Gunakan menu

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1 

Gunakan Short Cut (misal F9, F12 dsb)



Gunakan SpeedBar (atau toolbar).



Gunakan SpeedMenu ( lokal menu yang diaktifkan dengan tombol mouse kanan).

Berikut menu utama yang ada pada Delphi (untuk mempelajarinya gunakan Help Delphi): Menu File. Menu ini berhubungan dengan file seperti membuat, menyimpan dan mengakhiri sebuah pekerjaan. Menu Edit .Menu ini berhubungan dengan penyuntingan apa yang dikerjakan seperti Undo , Redo, Cut, Copy, Paste atau dapat dengan tombol Ctrl+Z, Ctrl+X, Ctrl+C, Ctrl+V. Menu Search. Menu ini berhubungan dengan pencarian dan penggantian data.

Gambar 8. Jendela Find Text Menu View. Menu ini berhubungan dengan penampilan atau apa yang akan ditampilkan. Menu Project. Menu ini berhubungan dengan proyek yang sedang dibuat, misal unit yang akan ditambahkan ke proyek ini, unit apa yang akan dihapus, dsb. Menu Run. Menu ini berhubungan dengan menjalankan program, mencari kesalahan (debug), dsb. Menu Component. Menu ini berhubungan dengan komponen, misal menambah komponen baru, menghapus komponen yang ada. Menu Database. Menu ini berhubungan dengan Database, Database Form Wizard dan Database Explorer. Menu Tools. Menu ini berhubungan dengan pengaturan/konfigurasi, tool-tool pembantu Delphi. Menu Help. Menu ini berhubungan dengan informasi mengenai Delphi, Help / bantuan 2.2. Component, Property, Method, Event Kode yang akan dilihat, serupa dengan struktur Bahasa Pascal. Delphi adalah bahasa pemrograman berbasis objek, artinya pendekatan pembuatan program melalui objek-objek yang ada. Misalnya objek form, text dsb. Setiap objek akan memiliki properti (atribut) dan method yang diaktifkan / dipicu oleh event. Mari kita lihat penjelasan berikut. Apakah Objek (COMPONENT) itu? Ingat sebuah komponen adalah sebuah objek pada Palette, : 

sebuah Objek, adalah sebuah komponen dalam Component Palette,



atau sesuatu yang dibuat melalui kode-kode / bahasa pemrograman

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1 Jadi sebuah objek adalah secara umum kelas dari kumpulan sesuatu. Komponen pasti objek namun tidak selalu merupakan komponen, misal TstringList adalah sebuah objek (kumpulan karakter), dan bukan sebuah komponen. Penjelasan mengenai komponen di Lampiran A. Apakah sebuah PROPERTY itu? Sebuah Property tidak lain adalah sebuah nama/variabel milik sebuah objek/komponen misal Caption, Text yang dapat diubah nilai baik melalui object Inspector atau melalui program. Beberapa istilah/ nama berikut yang mirip, dan sering digunakan: 

Procedure adalah kumpulan perintah yang melakukan suatu proses tertentu



Function adalah sama dengan procedure, tetapi proses tersebut dapat mengembalikan suatu hasil / nilai misal hasilnya = 1



Method adalah procedure atau function yang tergabung pada sebuah komponen



Subroutine adalah istilah umum dari semuanya (procedure/function/method) misal pada bahasa Basic.

Apakah sebuah METHOD itu? Sebuah method adalah sebuah function/fungsi yang tergabung dalam sebuah objek. Contoh ListBox (dapat berarti sebuah array of strings) yang memiliki Method (Clear) yang membuat Listbox tersebut menjadi kosong. CLEAR adalah sebuah Method pada ListBox tersebut.

Begin ListBox1.Clear; // Mengosongkan isi ListBox ListBox1.Items.LoadFromFile(‘c:\Data1.txt’); //properti Items (bertipe string) memiliki method untuk LoadFromFile end; Apakah sebuah EVENT itu? Sebuah Event adalah sebuah aksi pengguna (User Action) misal Mouse Click, KeyPressed. Setiap Events diawali dengan kata ‘On’. Contoh : Nama event

Nama method

OnClick ..

Button1Click(Sender : Tobject)

OnKeyDown ..

Button1KeyDown(Sender : Tobject)

OnMouseMove ..

Button1MouseMove(Sender : Tobject)

2.3. Cara Delphi Bekerja Saat anda menambahkan Components pada Form1 dan merubah nilai properti, Delphi akan membuat (pseudo) code (dalam Unit1.dfm) untuk mendefinikan apa yang anda lakukan. Secara normal, ANDA TIDAK DIHARAPKAN MENGUBAHNYA Unit1.dfm File; Anda hanya bekerja pada Form1 secara Visual. Ini yang dinamakan bahasa pemrograman Visual (Visual Programming) Apakah Delphi itu? 

Delphi (IDE) adalah sebuah Visual Interface antara anda (the User) dan Komputer anda (yang berjalan diatas Windows ).

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1 

Delphi menterjemahkan Visual Components (Buttons, Panels,..) yang ada pada Form kedalam sebuah kode-kode komputer (pseudo in Unit1.dfm) yang mendefinisikan bagaimana dibentuknya form dan komponennya termasuk juga propertinya.

Saat anda mengkompilasi program, apa yang terjadi? 

Delphi akan memanggil file .dpr file (file proyek anda)



Delphi meminta program yang ada dalam proyek tersebut dan file dpr memberikan sebagai berikut :



Delphi meminta, Apa yang dilakukan pertama kali ? .dpr file memberikan sebagai berikut:

uses beginForms, Unit1 inApplication.Initialize; ‘Unit1.pas’ {Form1};itializes stuff Application.CreateForm(Tform1, Form1); Application.Run; end.

2.4. Forms, Dialog Boxes, Messages , ... Menampilkan Form atau Window Anda dapat bekerja dengan beberapa form pada sebuah project. Saat anda berada di Form1 untuk menampilkan form yang lain misal Form2 sebagai berikut : Form2.Show; Membuka (Shows) Form2 (tetapi user diijinkan untuk dapat mengklik Form1) Form2.ShowModal; Membuka (Shows) Form2 (tetapi user TIDAK DIIJINKAN mengklik Form1) Menampilkan Pesan (Message) ShowMessage('Ini kotak pesan); Tampilan sederhana sebuah baris/teks; User dapat menekan tombol OK untuk keluar dari kotak pesan (message window). MessageDlg('Msg',mtConfirmation,[mbYes],0); Mirip ShowMessage tapi dapat lebih dari satu tombol pilihan. if MessageDlg ('Please say YES or ',mtConfirmation,[mbYes,mbNo],0) = mrYES then begin Label1.Text:='Tekan tombol YES'; end;

TMsgDlgType = mtWarning,mtError,mtInformation, mtConfirmation, mtCustom TMsgDlgBtn = mbYes,mbNo,mbOK,mbCancel,mbAbort,mbRetry,mbIgnore,mbAll,mbHelp Return values = mrNone, mrYes, mrNo, mrOk, mrCancel, mrAbort, mrRetry, mrIgnore, mrAll Meminta Masukan (Input Box)

InputBox(...); var InputString: string; begin InputString:= InputBox('Masukkan Nama', 'Please Enter your Name',''); end; Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1

3. PERINTAH PENCABANGAN / STRUKTUR PEMILIHAN Pada beberapa kasus terkadang kita menginginkan komputer melakukan suatu aksi tertentu bila suatu kondisi terpenuhi. Keberadaan perintah bersyarat pada suatu program memberikan pencabangan proses seperti ditunjukkan oleh Error! Not a valid link.. Bahasa Pascal menyediakan dua cara penyajian perintah bersyarat, yaitu If…Then…Else dan Case…of.

Kondisi 1

Kondisi 2

Aksi 1

Aksi 2

Gambar 3.1 Pencabangan pada program Pada prinsipnya pemilihan aksi dapat dikelompokkan menjadi 3 bagian :

Pemilihan 1 pilihan/kasus. Gunakan perintah IF – THEN Pemilihan 2 pilihan/kasus. Gunakan perintah IF – THEN – ELSE Pemilihan N pilihan/kasus. Gunakan Case – of (Catatan sebenarnya dapat menggunakan if—then – else bersarang) 3.1. IF … THEN : Pemilihan 1 kasus Perintah bersyarat If – then digunakan hanya melakukan 1 aksi bila kondisi dipenuhi. Bentuk sintaks dari perintah bersyarat ini adalah:

If then Begin ... {aksi-1} end; 3.2. IF … THEN … ELSE : Pemilihan 2 kasus Perintah bersyarat If umumnya digunakan untuk melakukan pencabangan sederhana (antara 2 atau 3 cabang). Atau untuk pencabangan yang banyak, dimana kondisi yang menjadi prasyaratnya melibatkan lebih dari satu parameter. Bentuk sintaks dari perintah bersyarat ini adalah:

If then Begin ... {aksi-1} end else Begin ... {aksi-2} end;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1

3.3. IF … THEN … ELSE : Pemilihan N kasus

If then Begin ... {aksi-1} end else If then Begin ... {aksi-2} end else Begin ... {aksi-3} End; 3.4. CASE … OF … : Pemilihan N kasus Perintah bersyarat Case umumnya digunakan untuk kondisi dengan banyak pencabangan. Syarat pencabangan pada bentuk ini hanya boleh melibatkan satu buah parameter dengan tipe data bukan Real. Pemeriksaan kondisi di sini lebih tepat disebutkan dalam hubungan relasi samadengan (=). Dengan demikian bila parameter bernilai tertentu maka dilakukan suatu aksi terkait, bila bernilai lain maka dilakukan aksi yang lain juga, demikian seterusnya.

Case Of : ; : ; ... : ; Else ; End;

Latihan ke-2 Buat aplikasi baru dengan nama form frmWelcome, kemudian ubah nama komponen/objek sebagai berikut: Objek Form1 Button1 Label1

Label2 Label3

Properti Name Caption Name

Nilai properti FrmWelcome Welcome BtnQuit

Metode lewat event OnActive

Caption Name Caption Font Name Caption Name

&Quit Lblunsur Lambang Unsur Kimia Times New Roman, Bold, Size : 18 Lblchoose Pilih Lambang Unsur Lbllambang

OnClick, isi application.terminate;

dengan:

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1 Caption Font Label4

Name Caption Font

listBox1

Name



(kosong) Times New Roman, Bold, Size =12, Color = clTeal Lblcomment (kosong) Times New Roman, Bold-Italic,Size = 24, Color = clTeal Lbxunsur

OnClick

Buat method dari komponen frmWelcome lewat event OnActivate, seperti berikut

procedure TForm1.FormActivate(Sender: TObject); begin lbxCountry.Hint := 'Please choose...'; lbxCountry.Items[0]:='Ca'; lbxCountry.Items[1]:= 'C'; lbxCountry.Items[2]:= 'Cu'; lbxCountry.Items[3]:= 'Cd'; end; 

Buat method dari komponen lbxCountry lewat event OnClick, seperti berikut

procedure TForm1.lbxCountryClick(Sender: TObject); begin lblCountry.caption := lbxCountry.Items[lbxCountry.ItemIndex]; case lbxCountry.ItemIndex of 0 : lblComment.caption := 'lambang unsur dari Calsium' ; 1 : lblComment.caption := 'lambang unsur dari Carbon' ; 2 : lblComment.caption := 'lambang unsur dari Cuprum' ; 3 : lblComment.caption := 'lambang unsur dari Cadmium' ; end; end;



Simpan dengan nama unit uWelcome1.pas dan project pWelcome1.dpr pada direktori Latih3

4. STRUKTUR PENGULANGAN Dalam menyelesaikan masalah, terkadang kita harus melaku suatu proses yang sama lebih dari satu kali. Untuk itu perlu dibuat suatu algoritma pengulangan. Pascal memberikan tiga alternatif pengulangan, yaitu dengan For, While, atau Repeat. Masing-masing memiliki karakteristik, yang akan dipelajari pada modul ini. Ada dua hal yang penting dalam melakukan merancang perintah pengulangan, yaitu: 

Inisialisasi awal.



Nilai akhir pengulangan atau kondisi berhenti.

4.1. FOR – TO - DO Pada pengulangan dengan For, inisialisasi awal dan kondisi akhir ditentukan dengan menggunakan suatu variable kendali yang nilainya dibatasi dalam suatu range tertentu. Sintaks untuk perintah ini adalah:

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1

atau

For := to do Begin … {aksi} End ; For := downto do Begin … {aksi} End ;

Perbedaan antara to dan downto adalah pada kondisi nilai awal dan akhir. Pada to: nilai awal lebih kecil dari nilai akhir, sedangkan pada downto nilai awal lebih besar dari nilai akhir. Perlu diingat, bahwa variable kendali harus dideklarasikan dengan tipe data integer. Contoh program pengulangan menggunakan For-to-do

procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject); var I : integer; begin lbxHasil.Items.Clear; For I := 1 to 5 do Begin lbxHasil.Items.Add(inttoStr(i)); End; End; Hasilnya adalah : 1, 2, 3, 4, 5 Contoh program yang sama jika tapa perintah tanpa pengulangan

procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject); begin lbxHasil.Items.Clear; lbxHasil.Items.Add(inttoStr(1)); lbxHasil.Items.Add(inttoStr(2)); lbxHasil.Items.Add(inttoStr(3)); lbxHasil.Items.Add(inttoStr(4)); lbxHasil.Items.Add(inttoStr(5)); End; Hasilnya adalah : 1, 2, 3, 4, 5 4.2. WHILE - DO Pada metoda pengulangan ini aksi hanya akan diproses bila kondisi pengulangan terpenuhi, bentuk sintaks dari pengulangan ini adalah:

While do Begin … {aksi} End ; Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1

Selama kondisi_pengulangan bernilai true maka aksi akan dilakukan, dan baru akan berhenti setelah kondisi pengulangan bernilai false. Karena kondisi pengulangan diperiksa pada bagian awal, maka ada kemungkinan aksi tidak pernah dilakukan, yaitu bila kondisi pengulangan tidak pernah bernilai true. Contoh program pengulangan menggunakan While-do

procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject); var I : integer; begin lbxHasil.Items.Clear; I := 1; While I 5; End;

Contoh program pengulangan menggunakan Repeat- Until

Latihan ke-3 Buat aplikasi bari dengan nama form frmPengulangan, kemudian ubah nama komponen/objek sebagai berikut:

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1 Objek Form1 Button1 Label1

ListBox1



Properti Name Caption Name Caption Name Caption Font Name Font

Nilai properti FrmPengulangan Pengulangan BtnPengulangan &Pengulangan LblComment (kosong) Times New Roman, Bold-Italic, Size = 12 LbxHasil Times New Roman, Bold-Italic, Size = 20, Color = clTeal

Method lewat event

Onclick

OnClick

Buat method dari komponen btnPengulangan lewat event OnClick, seperti berikut

procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject); var I : integer; begin lbxHasil.Items.Clear; For I := 0 to 20 do Begin lbxHasil.Items.Add(inttoStr(i)); end; end; 

Buat method dari komponen lbxHasil lewat event OnClick, seperti berikut

procedure TfrmPengulangan.lbxHasilClick(Sender: TObject); begin lblComment.caption := 'Dicetak saat I bernilai ' + IntToStr(lbxHasil.ItemIndex); end; 

Simpan dengan nama unit uPengulangan1.pas dan project pPengulangan1.dpr pada direktori Latih4

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

1

TIPE DATA DALAM DELPHI

2.1 BERLATIH TIPE DATA DI DELPHI Setiap data yang disimpan di memori komputer harus memiliki tipe data. Tipe data yang sederhana sekali adalah dikelompokkan menjadi 2 bagian : 1.Teks : a.Char (terdiri dari 1 huruf /1 angka) b.String (terdiri dari beberapa huruf/angka) 2.Bilangan : a.Integer (bilangan bulat ) b.Real (bilangan pecahan) Di Delphi ada beberapa tipe data varian dari kedua tipe data tersebut, yang membedakan adalah range (rentang nilainya). Lihat lampiran tipe data lebih lengkap. 1.1.Berlatih Tipe Data Float dan String Dengan memahami seperti ini kita akan coba membuat sebuah program (projek)untuk menghitung tekanan gas ideal, rumusnya sebagai berikut : P := (n*R*T)/V ; Tempatkan komponen-komponen berikut pada form kemudian ubah nilai propertiesnya :

Objek Label1

Properti Caption Font

Label2

Caption Font

Label3

Caption Font

Label4

Caption Font

Label5

Caption Font

Button1

Caption Font Caption Font Color Name Text Text

Button2 Form1 Edit1 Edit2

Nilai properti Tulis : MENGHITUNG TEKANAN GAS IDEAL Tahoma, style : bold, size : 14, effects : underline, color : green Tulis : mol (n) Tahoma, style : bold, size : 12, color : green Tulis : suhu (T) Tahoma, style : bold, size : 12, color : green Tulis : volume (V) Tahoma, style : bold, size : 12, color : green Tulis : tekanan (P) Tahoma, style : bold, size : 12, color : green Tulis : HITUNG Tahoma, style : bold, size : 12 Tulis : KELUAR Tahoma, style : bold, size : 12 clMoneyGreen Formtekanan (kosong) (kosong)

Method lewat event

OnClick OnClick

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2 Edit3 Edit4

Text Text

(kosong) (kosong)

Berikut desain form di Delphi :

Gambar12. Desain form tekanan  Membuat even OnClick pada Button1 procedure TForm1.Button1Click(Sender:TObject); begin //Konversi dari String ke Float n :=StrTofloat(Edit1.Text); T :=StrTofloat(Edit2.Text); V :=StrTofloat(Edit3.Text); P := (n*R*T)/V ; //Konversi dari Float ke String Edit4.Text :=floatToStr(P); end;

Catatan :  Pada bagian Var, tambahkan : n,T,V,P : real ;  Pada bagian Const, tambahkan : R = 0.082 ;  Membuat even OnClick pada Button2 procedure TForm1.Button2Click(Sender:TObject); begin application.terminate; end; Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

 Hasil running program aplikasi

Gambar14. Hasil Running Di bawah ini adalah sebagian dari tipe data pada Delphi : 1. Integer Merupakan tipe data bilangan bulat, dengan : Type Integer Cardinal

Range –2147483648..2147483647 0..4294967295

Format signed 32-bit unsigned 32-bit

Secara fundamental, tipe integer terdiri dari : Type Shor int Smallin Longin Int64 Byte Word Longword

Range –128..127 –32768..32767 –2147483648..2147483647 –263..263 –1 0..255 0..65535 0..4294967295

Format signed 8-bit signed 16-bit signed 32-bit signed 64-bit unsigned 8-bit unsigned 16-bit unsigned 32-bit

2. Real Merupakan bilangan pecahan, dengan : Type Significant digits Real48 Single

Size in bytes 11 –12 7 –8

Range 2.9 x 10–39 ..1.7 x 10386 1.5 x 10–45 ..3.4 x 10384

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

Double 15 –16 5.0 x 10–324 ..1.7 x 103088 Extended 19 –20 3.6 x 10–4951 ..1.1 x 10493210 Comp 19 –20 –263+1 ..263 –18 Currency 19 –20 –922337203685477.5808..922337203685477.58078 Secara Generik, tipe real adalah : Type Significant digits Real

Size in bytes 15 –16

Range 5.0 x 10–324 ..1.7 x 103088

3. String Merupakan huruf, dengan : Type Char ShortString AnsiString WideString

Maximum lenght 1 characters 255 characters ~231 characters ~230 characters

Memory required 1 bytes 2 to 256 bytes 4 bytes to 2GB 4 bytes to 2GB

4. Boolean Merupakan tipe variabel logika. Nilai dari variabel dari bertipe Boolean adalah True atau False.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

FUNGSI STANDART & PENULISAN EKSPRESI ARITMATIKA DELPHI

FUNGSI STANDAR ARITMATIKA Dalam aplikasi problem-problem sains sejumlah fungsi matematika sering diperlukan. Beberapa fungsi telah tersedia (integrated) dalam Turbo Pascal dan sebagian lagi diperlukan pemrograman. Beberapa fungsi dalam Delphi dapat adalah sebagai berikut : 1.

FUNGSI FUNGSI ARITMATIKA 1.1. ABS (X)

1.2. CEIL (X)

1.3. EXP (X)

1.4. FLOOR (X)

DESKRIPSI Digunakan untuk menentukan harga mutlak (absolut) dari argumen X Contoh : Var r : single ; i : integer ; begin r := Abs(-2.3) ; {hasil 2.3} i := Abs(-157) ; {hasil 157} end; Digunakan untuk menghasilkan nilai integer terendah yang lebih besar atau sama dengan argumen X. Contoh : Var i, j : real ; begin i := Abs(-2.8) ; {hasil -2} j := Abs(2.8) ; {hasil 3} end; Digunakan untuk menghasilkan nilai eksponen, atau nilai e yang dipangkatkan dengan argumen X, dimana e adalah bilangan dasar logaritma 2.718281828 Contoh : Var e : real ; S : string ; begin e := exp(1.0) ; Str(ln(e):3:2, S) ; end; Digunakan untuk menghasilkan pembulatan (integer) ke bawah dari suatu bilangan ke kelipatan terdekat yang diberikan. Contoh : Var i, j : integer ; begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

1.5. FRAC(X)

1.6. INT(X)

1.7. LN(X)

1.8. MAX(X,Y)

1.9. MIN(X,Y)

1.10. PI 1.11. POWER(X,Y)

i := Floor(-2.8) ; {hasil -3} j := Floor(2.8) ; {hasil 2} end; Digunakan untuk menghasilkan bagian pecahan dari argumen X. Contoh : Var R : real ; begin R := Frac(123.456) ; {hasil 0.456} R := Frac(-123.456) ; {hasil -0.456} end; Digunakan untuk membulatkan bilangan pecahan dengan pembulatan ke bawah menghasilkan bilangan bulat terdekat. Contoh : Var R : real ; begin R := Int(123.456) ; {hasil 123.0} R := Int(-123.456) ; {hasil -123.0} end; Digunakan untuk menampilkan logaritma suatu bilangan dengan basis e. Contoh : Var e : real ; S : string ; begin e := Exp(1.0) ; Str(ln(e):3:2,S); S := ’e=’+FloatToStr(e) ; Edit1.Text := S ; end; Menentukan nilai tertinggi atau terbesar dari dua bilangan. Contoh : Var S : string ; i : integer ; begin i := Max(10,15); {menghasilkan nilai 15} S := ’Max’ = ’+IntToStr(i); Edit1.Text := S ; end; Menentukan nilai terendah atau terkecil dari dua bilangan. Var S : string ; i : integer ; begin i := Min(10,15); {menghasilkan nilai 10} S := ’Min’ = ’+IntToStr(i); Edit1.Text := S ; end; Digunakan untuk menghasilkan nilai pi (3.1415926535897932385) dalam perhitungan matematika. Digunakan untuk menghasilkan nilai hasil pemangkatan suatu bilangan X dengan nilai pemangkat Y. Contoh : Var S : string ; i : extended ; begin i := power(2,3); {hasil 8} S := ’Power’ = ’+FloatToStr(i);

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

1.12. ROUND(X)

1.13. SQR(X)

1.14. SQRT(X)

1.15. TRUNC(X)

2.

FUNGSI TRIGONOMETRI 2.1. ARCCOS(X)

2.2. ARCSIN(X)

Edit1.Text := S ; end; Digunakan untuk menghitung pembulatan data numerik X yang bertipe real dan menghasilkan suatu nilai yang bertipe integer. Contoh : Var S, T : String ; Begin Str(1.4:2:1,T) ; {hasil 1} S := T +’menjadi’+IntToStr(Round(1.4)) ; Str(1.5:2:1,T) ; {hasil 2} S := T +’menjadi’+IntToStr(Round(1.5)) ; Str(-1.4:2:1,T) ; {hasil -1} S := T +’menjadi’+IntToStr(Round(-1.4)) ; Str(-1.5:2:1,T) ; {hasil -2} S := T +’menjadi’+IntToStr(Round(-1.5)) ; MessageDlg(S, mtInformation,[mbOk],0) ; end; Memberikan nilai kuadrat suatu bilangan X. Contoh : var S, Y : string; begin Str(Sqr(5.0):3:1,Y) ; {hasil 25} S := ’5 bernilai kuadrat’ + Y ; Edit1.Text := S; end; Memberikan nilai akar kuadrat suatu bilangan X. Contoh : var S, Y : string; begin Str(Sqrt(2.0):5:4,Y) ; {hasil 1.4142} S := akar kuadrat dari 2 adalah’ + Y ; MessageDlg(S, mtInformation,[mbOk],0) ; end; Menghilangkan bagian nilai pecahan tanpa memperhatikan pembulatan dari suatu data numerik. Contoh : Var S, T : string ; begin Str(1.4:2:1, T); S := T +’hasil’+IntToStr(Trunc(1.4)) ; Edit1.Text := S ; Str(-1.4:2:1, T); S := T +’hasil’+IntToStr(Trunc(-1.4)) ; Edit1.Text :=Edit1.Text + S ; end; Menghitung nilai kebalikan cosinus dari nilai argumen X. Contoh : var S : string ; begin S := FloatToStr(ArcCos(0.5)) ; Edit1.Text := S ; {hasil 1.0471975511966} end; Menghitung nilai kebalikan sinus dari nilai argumen X. Contoh : var

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

2.3. ARCTAN(X)

2.4. COS(X)

2.5. SIN(X)

2.6. TAN(X)

3.

FUNGSI STATISTIK 3.1. MAXINTVALUE(X)

3.2. MAXVALUE(X)

3.3. MEAN(X)

S : string ; begin S := FloatToStr(ArcSin(0.5)) ; Edit1.Text := S ; {hasil 0.523598775598299} end; Menghitung nilai kebalikan tangen dari nilai argumen X. Contoh : var S : string ; begin S := FloatToStr(ArcTan(1)) ; Edit1.Text := S ; {hasil 0.785398163397448} end; Menghasilkan niai cosinus dari suatu sudut. var S : string ; begin S := FloatToStr(Cos(Pi)) ; Edit1.Text := S ; {hasil -1} end; Menghasilkan niai sinus dari suatu sudut. var S : string ; begin S := FloatToStr(Sin(90)) ; Edit1.Text := S ; {hasil 0.893996663600558} end; Menghasilkan niai tangen dari suatu sudut. var S : string ; begin S := FloatToStr(Tan(45*Pi/180)) ; Edit1.Text := S ; {hasil 1} end; Menghasilkan nilai tertinggi yang terdapat di dalam array dengan tipe data integer. Contoh : var S : string ; begin S := FloatToStr(MaxIntValue([10,20,40,30])); Edit1.Text := S ; {hasil 40} end; Menghasilkan nilai tertinggi yang terdapat di dalam array dengan tipe data integer, dan fungsi MaxValue akan menghasilkan data bertipe Double. Contoh : var S : string ; begin S := FloatToStr(MaxValue([10.5,20,40.25,30])); Edit1.Text := S ; {hasil 40.25} end; Menghasilkan nilai rata-rata dari semua nilai dalam suatu array Contoh : var S : string ; begin S := FloatToStr(Mean([10.5,20,40.25,30])); Edit1.Text := S ; {hasil 25.1875} end;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2 3.4. MININTVALUE(X)

3.5. NORM(X)

3.6. POPNSTDDEV(X)

3.7. POPNVARIANCE

3.8. STDDEV(X)

3.9. SUM(X)

3.10 VARIANCE(X)

Menghasilkan nilai terendah yang terdapat di dalam array dengan tipe data integer. Contoh : var S : string ; begin S := FloatToStr(MinIntValue([10,20,40,30])); Edit1.Text := S ; {hasil 10} end; Menghasilkan norma Euclidean ’L-2’. Contoh : var S : string ; begin S := FloatToStr(Norm([10,20,40,30])); Edit1.Text := S ; {hasil 54.7722557505166} end; Menghitung populasi standar deviasi (akar kuadrat varian populasi) dari semua nilai dalam parameter array data. Contoh : var S : string ; begin S := FloatToStr(POPNSTDDEV([10,20,40,30])); Edit1.Text := S ; {hasil 11.1803398874989} end; Menghitung varian populasi dari semua nilai dalam parameter array data. Contoh : var S : string ; begin S := FloatToStr(POPNVARIANCE([10,20,40,30])); Edit1.Text := S ; {hasil 125} end; Menghasilkan sampel standart deviasi (akar kuadrat dari varian sampel) dari semua nilai dalam parameter array data. Contoh : var S : string ; begin S := FloatToStr(StdDev([10,20,40,30])); Edit1.Text := S ; {hasil 12.9099444873581} end; Meghasilkan jummlah semua nilai-nilai dari parameter array data. Contoh : var S : string ; begin S := FloatToStr(Sum([10,20,40.25,30])); Edit1.Text := S ; {hasil 100.25} end; Menghitung varian sampel dari semua nilai dalam parameter array data, gunakan metode n-1 (tidak bias). Contoh : var S : string ; begin S := FloatToStr(Variance([10,20,40,30]));

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2 Edit1.Text := S ; end;

{hasil 166.6666667}

Harga x dalam fungsi sinus, cosinus dan arctangen dalam radian karena itu agar dapat memasukkan x dalam satuan derajat harus dilakukan konversi dari derajat ke radian yaitu x=

x 180 / π

Misalnya untuk penulisan sin (x) y = sin(

x ) 180 / π

Untuk perpangkatan ab diturunkan dengan cara berikut x = ab Ln (x) = b*Ln (a), maka

b*Ln ( a )

x=e

PENULISAN EKSPRESI ARITMATIKA PASCAL UNTUK DELPHI • • • •

Beberapa hal yang harus diperhatikan dalam penulisan ekspresi aritmatika adalah Penggunaan operasi aritmatika, memiliki urutan yang sama sebagaimana dalam aljabar yaitu pertama perpangkatan, kedua perkalian atau pembagian, dan ketiga penjumlahan atau pengurangan. Penggunaan kurung untuk menjamin urutan hitungan dengan benar Simbol perkalian harus dituliskan Untuk rumus yang kompleks maka dilakukan dengan pemecahan rumus menjadi beberapa rumus sederhana Beberapa contoh penulisan ekspresi aritmatika adalah EKSPRESI ARITMATIKA A−b ab 2b 2c + 3b2 7.

a −b c −d

a −b (c − d ).7 X2 X5 x

x

3 2

EKSPRESI PASCAL a − b a * b 2 * b 2 * c + 3 * Sqr(b) atau 2 * c + 3 * b * b (a − b)/(c − d) * 7 atau 7 * (a − b)/(c − d) atau 7/(c − d) * (a − b) (a − b)/(c − d) / 7 atau (a − b)/((c − d) * 7) atau 1/7/(c − d) * (a − b) Sqr(x) atau x * x Sqr(x) * Sqr(x) * x atau x * x * x * x * x Sqrt(x) x * Sqrt(x) atau Sqrt(x * x * x) atau Sqrt(x * Sqr( x))

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

2

( )

Sqrt((8*R*T)/(Pi*M))

E RT

E/(R * T) atau E/R/T atau E/T/R atau 1/(T * R) * E

1

8 RT 2 πM

e

Mgz RT

Exp ((M*g*z)/(R*T))

Sin( x ) Cos ( x )

Sin (x)/Cos (x)

Log(x)

Ln (x)/Ln (10) atau Ln (x)/2.303 Abs (x)

Abs(x)

Untuk rumus yang kompleks misalnya

 V − nb   V −V   + an 2  1 2  W = nRTLn 2  V1 − nb   V1V2  Penulisannya adalah W := n*R*T*Ln((V2-n*b)/(V1-n*b)) + a*Sqr(n)*((V1-V2)/(V1*V2)); Penulisan seperti ini memungkinkan banyak kesalahan, karena itu lebih baik jika ditulis secara bertahap sebagai berikut Rumus1 := (V2-n*b)/(V1-n*b); Rumus2 := Ln(Rumus1); Rumus3 := n*R*T*Rumus2; Rumus4 := (V1-V2)/(V1*V2); Rumus5 := a*Sqr(n)*Rumus4; W := Rumus3 + Rumus5; Cara lain Rumus1 := (V2-n*b)/(V1-n*b); Rumus2 := (V1-V2)/(V1*V2); W := n*R*T*Ln(Rumus1) + a*Sqr(n)*Rumus2; Contoh lain rumus untuk menghitung fraksi molekul pada range kecepatan tertentu per satuan luas interval

 M  Fv = 4π    2πRT 

3 2

− Mc 2 c 2e 2 RT

Penulisan ekspresi Pascal untuk rumus di atas dengan cara langsung akan sulit dan lebih banyak kemungkinan salahnya, karena itu sebaiknya ditulis secara bertahap, sebagai contoh R1 R2 R3 R4 Fv

:= := := := :=

M/(2*Pi*R*T); Sqrt(R1*R1*R1); (-M*c*c)/(2*R*T); Exp(R3); 4*Pi*R2*Sqr(c)*R4;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

Cara lain R1 R1 R2 R2 Fv

:= := := := :=

M/(2*Pi*R*T); R1*Sqrt(R1); (-M*c*c)/(2*R*T); Exp(R2); 4*Pi*R1*Sqr(c)*R2;

Banyak cara lain untuk menulis rumus di atas, yang penting penulisan rumus dengan ekpresi Pascal tidak boleh menyalahi ekpresi matematikanya.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

APLIKASI SEDERHANA KIMIA KOMPUTASI MENGGUNAKAN DELPHI

6.1. RUMUS GAS IDEAL Menghitung harga tekanan berdasarkan hukum gas ideal jika jumlah mol, temperatur dan volume sistem diketahui. Rumus : p =

nRT V

R adalah konstanta gas dengan harga 0,082054 L.atm/mol.K. Design Form:

Tabel Properties Object Inspector: Objek Form Label1

Properti Caption Color Caption Font

Label2

Caption Font

Label3

Caption Font Caption Font

Label4

Nilai Properti Hitung Tekanan gas Ideal clMoneyGreen MENGHITUNG TEKANAN GAS IDEAL Color: clNavy, Name: Times New Roman, Size: 15, Style: fsBold (True) INPUT Color: clRed, Name: Tahoma, Size: 12, Style: fsBold Mol Style: fsBold (True) R Style: fsBold (True)

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

Label5 Label6 Label7

Caption Font Caption Font Caption Font

Label8

Caption Font

Edit1

Color Text Color Text Color Text Color Text Color

Edit2 Edit3 Edit4 Edit5

Temperatur Style: fsBold (True) Volume Style: fsBold (True) OUTPUT Color: clRed, Name: Tahoma, Size: 12, Style: fsBold RUMUS Color: clRed, Name: Tahoma, Size: 12, Style: fsBold clInactiveCaptionText (kosong) clInactiveCaptionText 0.082 clInactiveCaptionText (kosong) clInactiveCaptionText (kosong) clAqua

Listing Unit Program: unit hitP; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Label3: TLabel; Label4: TLabel; Edit2: TEdit; Label5: TLabel; Edit3: TEdit; Label6: TLabel; Edit4: TEdit; Label7: TLabel; Edit5: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Image1: TImage; Label8: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

{ Private declarations } public { Public declarations } end; var Form1: TForm1; n,R,T,V,p : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin n := strtofloat(edit1.Text); R := strtofloat(edit2.Text); T := strtofloat(edit3.Text); V := strtofloat(edit4.Text); p := (n*R*T)/V; Edit5.Text:= floattostr(p); Edit1.SetFocus; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear; Edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin Application.Terminate; end; end. Keterangan : Layout form program ini sangat sederhana, tetapi memuat bagian input dan output. Bagian input berisi data yang harus diberikan untuk dapat menghitung harga tekanan dengan satuan sesuai permintaan program. Output program menampilkan data input yang diketahui dan harga tekanan hasil hitungan rumus menggunakan format penulisan numerik digit di belakang koma. Misal WriteLn('Jumlah mol

= ',n:10:4,' mol');

Akan tampil di monitor Jumlah mol = 12345.6789 mol 10 angka Angka terakhir terletak pada 10 angka setelah tanda (=) dengan 4 angka di belakang koma.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

6.2 MOLARITAS DAN NORMALITAS Menghitung harga molaritas dan normalitas larutan dengan rumus : Molaritas

BJ =

x PB x 1000 Mr

Normalitas

x 100

= Valensi x Molaritas

BJ adalah berat jenis zat, PB adalah persen berat zat dan Mr adalah massa molekul zat yang akan dihitung molaritas dan normalitas larutannya. Design Form

Tabel Properties Object Inspector: Objek Label1 Label2 Label3 Label4 Label5 Label6 Label7 Label8 Label9 Label10 Edit1 Edit2

Properti Caption Caption Caption Caption Caption Caption Caption Caption Caption Caption Text Text

Nilai Properti MOLARITAS DAN NORMALITAS INPUT OUTPUT Densitas % Berat Massa Molekul Valensi Molaritas Normalitas RUMUS (kosong) (kosong)

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

Edit3 Edit4 Edit5 Edit6 Button1 Button2 Button3 Image1

Text Text Text Text Caption Caption Caption Picture Strecht

(kosong) (kosong) (kosong) (kosong) HITUNG ULANG KELUAR Load : molaritas.jpg false

Listing Unit Program unit molnor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Edit6: TEdit; Label9: TLabel; Label10: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; BJ,Pb,Mr,M,N : real;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

val

: byte;

implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin BJ := strtofloat(Edit1.Text); PB := strtofloat(Edit2.Text); Mr := strtofloat(Edit3.Text); val := strtoint(Edit4.Text); M := (BJ*1000*PB)/(Mr*100); N := val*M; Edit5.Text := floattostr(M); Edit6.Text := floattostr(N); end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text := ' '; edit2.Text := ' '; edit3.Text := ' '; edit4.Text := ' '; edit5.Text := ' '; edit6.Text := ' '; edit1.SetFocus; end; end.

Hasil Running

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

Keterangan : Program ini memuat dua rumus untuk menghitung molaritas dan normalitas. Layout program sama dengan praktikum_1. Perhatikan penulisan rumus bagian atas dan bagian bawah. Untuk lebih mantapnya maka bagian atas dan bagian bawah masing-masing diberi kurung.

6.3 ROOT MEAN SQUARE Untuk menghitung 3 rumus sekaligus dengan input yang diminta. Rumusnya adalah

Crms Cmp Cavg R T M

C rms =

3 RT M

C mp =

2 RT M

C avg =

8 RT πM

= root-mean-square speed (akar rata-rata kuadrat kecepatan) = most probable speed (kecepatan paling boleh jadi) = average speed (kecepaatan rata-rata) = konstanta gas = temperatur dalam Kelvin = massa molekul

Design program

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

Tabel Properties Object Inspector: Objek Label1 Label2 Label3 Label4 Label6 Label7 Label8 Label9 Label10 Edit1 Edit2 Edit4 Edit5 Edit6 Button1 Button2 Button3 Image1

Properti Caption Caption Caption Caption Caption Caption Caption Caption Caption Text Text Text Text Text Caption Caption Caption Picture Strecht Listing Unit Editor

Nilai Properti ROOT MEAN SQUARE INPUT OUTPUT Temperatur Massa Molekul Crms Cmp Cavg RUMUS (kosong) (kosong) (kosong) (kosong) (kosong) HITUNG ULANG KELUAR Load : rootmeansquare.jpg false

unit rootmeansquare;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

3

interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Edit1: TEdit; Edit2: TEdit; Edit4: TEdit; Edit5: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Edit6: TEdit; Label9: TLabel; Label10: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const R = 8.314E+7; var Form1: TForm1; Crms,Cmp,Cavg,T,Mr : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin T := strtofloat(Edit1.Text); Mr := strtofloat(Edit2.Text); Crms := sqrt((3*R*T)/Mr);

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

Cmp := sqrt((2*R*T)/Mr); Cavg := sqrt((8*R*T)/(pi*Mr)); Edit4.Text := floattostr(Crms); Edit5.Text := floattostr(Cmp); Edit6.Text := floattostr(Cavg); end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text := ' '; edit2.Text := ' '; edit4.Text := ' '; edit5.Text := ' '; edit6.Text := ' '; edit1.SetFocus; end; end. Hasil Running

Keterangan : Program ini memuat tiga rumus sekaligus dengan satu input. Layout program sama dengan praktikum_1. Perhatikan satuan yang diminta input sehingga harga R harus mengikuti satuan yang diminta. Dalam Pascal untuk memasukkan harga π cukup dengan menuliskan pi sehingga tidak perlu dimasukkan sebagai konstanta. Perhatikan penulisan harga konstanta dengan bentuk eksponensial : R = 8.314E+7; Penulisan akar kuadrat menggunakan prosedur sqrt( ).

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

6.4 FUNGSI ENERGI BEBAS Fungsi energi bebas Fo berhubungan dengan fungsi partisi q dengan rumus Fo = −R Ln (q/No). R adalah konstanta gas dan No adalah bilangan Avogadro dan q dihasilkan dari perkalian qt, qr, Qv (fungsi partisi translasi, rotasi dan vibrasi) suatu molekul. Tulislah program untuk menghitung harga Fo air menggunakan data dan rumus berikut qt = (0,02562) x (M)3/2 (T)5/2 qr = ½ x (1042,95)3/2 x 1/(A x B x C)1/2 Qv = qv1 qv2 qv3 dimanaqv1 = 1/(1−exp(−hcw1/kT)); qv2 = 1/(1−exp(hcw2/kT)); qv3 = 1/(1−exp(−hcw3/kT)); diketahui M = 18,015;

T = 1500;

A = 27,8778; B = 14,5092; C = 9,2869;

w1 = 3656,7; w2 = 1594,8 w3 = 3755,8 c = kecepatan cahaya h = tetapan Planck

k = tetapan Boltzmann

Design Form

Tabel Properties Object Inspector: Objek StaticText1 GroupBox1 GroupBox2 Label1 Label2 Label3

Properti Caption Caption Caption Caption Caption Caption

Nilai Properti FUNGSI ENERGI BEBAS INPUT OUTPUT Temperatur (T) Molaritas (M) q

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

Label4 Label5 Label6 Label7 Label8 Label9 Label10 Button1 Butoon2 Button3 Edit1 Edit2 Edit3 Edit4 Edit5 Edit6 Edit7 Edit8 Edit9 Edit10

Caption Caption Caption Caption Caption Caption Caption Caption Caption Caption Text Text Text Text Text Text Text Text Text Text

qr qt Qv qv3 qv2 qv1 F HITUNG ULANG KELUAR (kosong) (kosong) (kosong) (kosong) (kosong) (kosong) (kosong) (kosong) (kosong) (kosong)

Listing Unit Editor unit energibebas; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) StaticText1: TStaticText; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Const

A = 27.8778; B = 14.5092; C = 9.2869; w1= 3656.7; w2= 1594.8; w3= 3755.8; k = 1.38e-23; h = 6.626e-34; No= 6.022e23; cc= 2.99e8; R = 8.314;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

var Form1: TForm1; M,T,F,q,qt,qr,Qv,qv1,qv2,qv3 : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin M:= StrtoFloat(edit1.Text); T:= StrtoFloat(edit1.Text); qv1 := 1/(1-exp(-(h*cc*w1)/(k*T))); qv2 := 1/(1-exp( (h*cc*w2)/(k*T))); qv3 := 1/(1-exp(-(h*cc*w3)/(k*T))); Qv := qv1*qv2*qv3; qt := 0.02562*sqrt(M*M*M)*sqrt(T*T*T*T*T); qr := 0.5*sqrt(1042.95*1042.95*1042.95)*(1/(sqrt(A*B*C))); q := qt+qr+Qv; F := -R*ln(q/No); edit9.Text:=FloatToStr(qv1); edit8.Text:=FloatToStr(qv2); edit7.Text:=FloatToStr(qv3); edit6.Text:=FloatToStr(Qv); edit5.Text:=FloatToStr(qt); edit4.Text:=FloatToStr(qr); edit3.Text:=FloatToStr(q); edit10.Text:=FloatToStr(F); end; procedure TForm1.Button3Click(Sender: TObject); begin application.Terminate; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:= ' ' ; edit2.Text:= ' ' ;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

edit3.Text:= ' ' ; edit4.Text:= ' ' ; edit5.Text:= ' ' ; edit6.Text:= ' ' ; edit7.Text:= ' ' ; edit8.Text:= ' ' ; edit9.Text:= ' ' ; edit10.Text:= ' ' ; end; end. Hasil Running

Keterangan : Program dibagi dalam 3 prosedur : data, rumus dan hasil. Masing-masing dibuat dulu, lalu disusun urutannya dalam program utama. Dengan memanggil nama prosedurnya saja maka komputer akan menjalankan program sesuai urutan dalam program utama. Perhatikan pula cara penulisan konstanta di bagian deklarasi.

6.5 DISTRIBUSI PROBABILITAS Menghitung fraksi molekul dalam range kecepatan c sampai c + dc per satuan luas interval dengan rumus 3 2

1 dnc  M = 4π  N dc  2πRT 

 Mc 2 −  2 RT c 2e 

   

dimana M adalah massa molar molekul, R adalah konstanta gas, c adalah kecepatan cahaya, T adalah temperatur.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

Design Form

Tabel Properties Object Inspector: Objek StaticText1 StaticText2 StaticText3 StaticText4 Label1 Label2 Label3 Button1 Button2 Button3 Image1 Bevel1 Bevel2 Bevel3 Bevel4 Bevel5 Bevel6

Properti Caption Caption Caption Caption Caption Caption Caption Caption Caption Caption Picture Shape Style Shape Style Shape Style Shape Style Shape Style Shape Style

Nilai Properti DISTRIBUSI PROBABILITAS INPUT OUTPUT RUMUS Temperatur (T) Massa molekuler (M) Distribusi Probabilitas (Dprob) HITUNG ULANG KELUAR Load : Dprob.jpg bsFrame bsRaised bsFrame bsRaised bsTopLine bsLowered bsTopLine bsLowered bsLeftLine bsRaised bsFrame bsRaised

Listing Unit Editor unit distprob;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg; type TForm1 = class(TForm) Label1: TLabel; StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; StaticText4: TStaticText; Bevel1: TBevel; Bevel2: TBevel; Bevel3: TBevel; Bevel4: TBevel; Bevel5: TBevel; Image1: TImage; Bevel6: TBevel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Const c = 2.99792458E+8; R = 8.31441; var Form1: TForm1; M,T : real; rumus1,rumus2,rumus3,rumus4,Dprob : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

M:= StrtoFloat(edit1.Text); T:= StrtoFloat(edit2.Text); rumus1 := M/(2*pi*R*T); rumus2 := sqr(rumus1)*rumus1; rumus3 := sqrt(rumus2); rumus4 := (M*sqr(c))/(2*R*T); Dprob := 4*pi*rumus3*sqr(c)*exp(-rumus4); edit3.Text := floattostr(Dprob); end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text := ' ' ; edit2.Text := ' ' ; edit3.Text := ' ' ; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; end.

Hasil Running

Keterangan : Karena kemungkinan harga fraksi molekul yang dihitung memiliki range di luar range real maka dalam program ini digunakan tipe data double yang memiliki range 5.0e-324...1.7e308 dengan digit 15-16 dan ukuran byte 8, dapat juga menggunakan tipe data

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

4

extended yang memiliki range 3.4e-4932...1.1e4932 dengan digit 19-20 dan ukuran byte 10. Untuk dapat menggunakan tipe data itu maka di atas program harus diletakkan pengarah kompiler {$N+} sebagai kode pemakaian 80x87 Floating Point. Penulisan rumus dalam Procedure rumus; juga dibuat bagian-bagian untuk menghindari kesalahan. Prinsipnya adalah untuk memudahkan penulisan rumus dengan betul.

6.6 JUMLAH BILANGAN Menjumlah bilangan berurutan dari 1 sampai angka tertentu dengan rumus n

Jumlah = ∑ i i =1

Design Form Program Praktikum_6; Uses CRT; Var sumi,n,i : word; Begin ClrScr; Write('Bilangan maksimal = '); readln(n); sumi := 0; for i := 1 to n do Begin sumi := sumi + i; WriteLn('i ',i,' = ',sumi:3); End; End. Keterangan : Program ini menggunakan looping (pengulangan) for .. to .. do untuk menjumlahkan bilangan berurutan dari 1 sampai n. Penjumlahan tertulis pada persamaan sumi := sumi + i; urutan angka yang dijumlah diatur oleh looping for i := 1 to n do.

6.7 KOEFISIEN AKTIVITAS Menghitung kekuatan ionik dengan rumus I = (1 / 2)∑ ci z i 2 dimana I adalah kekuatan ionik, ci adalah konsentrasi ion ke-i, dan zi adalah muatan ion ke-i. Kemudian rumus ini digunakan untuk menghitung koefisien aktivitas menggunakan teori Debye-Huckel dengan rumus log γ ± = −0,509 z1 z 2 ( I )1 / 2 ln γ ± = −2,303 * 0,509 z1 z 2 ( I )1 / 2

γ ± = e ln γ ±

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

dimana γ± adalah koefisien aktivitas ionik rata-rata. Program Praktikum_7; Uses crt; Var i,n,z,sumz : integer; c,absz,sumi,f1,f2,ion,koef : real; Procedure input; Begin ClrScr; Write('Banyaknya ion = '); ReadLn(n); end; Procedure zkali; Begin sumz := 1; for i := 1 to n do begin write('Muatan ion ',i,' = '); readln(z); sumz := sumz*z; end; absz := abs(sumz); end; Procedure ionic_strength; Begin sumi := 0; for i := 1 to n do Begin Write('Konsentrasi ion ',i,' = '); ReadLn(c); Write('Muatan ion ',i,' = '); ReadLn(z); WriteLn; sumi := sumi+c*z*z; end; ion := sumi/2; end; Procedure koef_aktivitas; Begin f1 := -0.509*absz*sqrt(ion); f2 := f1*2.303; koef := exp(f2); writeln; writeln('Kekuatan ionik = ',ion:10:6); writeln('Koefisien aktivitas = ',koef:10:6); end; {Program utama} Begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

ClrScr; input; zkali; WriteLn; ionic_strength; koef_aktivitas; ReadLn; End. Keterangan : Procedure zkali; menghitung perkalian muatan ion ke-i dan harga absolutnya yaitu z1z2. Looping perkalian ditulis dengan persamaan sumz := sumz*z; Procedure ionic_strength; menghitung harga ∑ cizi2 pada looping sumi := sumi+c*z*z; dan menghitung harga kekuatan ionik pada rumus ion := sumi/2; Procedure koef_aktivitas; menghitung harga koefisien aktivitas pada rumus f1 := -0.509*absz*sqrt(ion); f2 := f1*2.303; koef := exp(f2); dimana f1 = log γ± dan f2 = ln γ±, koef adalah koefisien aktivitas. Harga koefisien aktivitas dapat juga dihitung menggunakan rumus koef = 10f1. 6.8 ENERGI ROTASI DAN FUNGSI PARTISI Menghitung energi rotasi molekul diatomik dengan rumus erot ( J ) = J .( J +1).

h2 8π 2 I

J adalah bilangan kuantum rotasi (J = 0, 1, 2, 3, ….) I adalah momen inersia, I = µ r2 untuk molekul diatomik h adalah konstanta Planck degenerasi keadaan energi J adalah 2J + 1. Rumus fungsi partisi rotasi adalah ∞

q rot = ∑( 2 J +1).e



J ( J +1) h 2 8π 2 I .kT

J =0

k adalah konstanta Boltzmann r adalah jarak diantara atom-atom  m1.m2    m1 + m2 

µ adalah massa tereduksi, 

mi adalah massa atom i (berat atom / konstanta Avogadro)

{$N+}

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

Program Praktikum_8; Uses CRT; Const maksimal = 100; planck = 6.626076e-34; {Joule-detik} Boltzmann = 1.38066e-23; {Joule/Kelvin} Avogadro = 6.02214e+23; {1/mol} Type urut = array[0..maksimal] of double; Var J,Jmax : integer; h2,ri,ri2,m1km2,m1tm2,faktor,Inersia,RIkatan,pi2,rumus1,masa1,masa2 : double; a,k,T : real; Expon1,Expon2,FPar,Energi : urut; Procedure input; Begin Write('Masa atom 1 dalam gram/mol = '); ReadLn(m1); Write('Masa atom 2 dalam gram/mol = '); ReadLn(m2); Write('Panjang ikatan dalam Angstrom = '); ReadLn(R); Write('Temperatur dalam Kelvin = '); ReadLn(T); Write('Maximal J = '); ReadLn(Jmax); end; Procedure rumus; Begin k := Boltzmann; a := avogadro; h2 := sqr(planck); ri := R * 1e-10; ri2 := sqr(ri); m1km2 := m1 * m2; m1tm2 := m1 + m2; faktor := 1 / (a * 1000); Inersia := (m1km2/m1tm2) * faktor * ri2; pi2 := sqr(pi); rumus1 := h2 / (8 * pi2 * Inersia); j := 0; Fpar[j] := 0; Repeat Energi[J] := rumus1 * J * (J + 1); Expon1[j] := exp(-energi[j]/(k*T)); Expon2[j] := ((2*j)+1)*Expon1[j]; Fpar[j] := Fpar[j] + Expon2[j]; j := j + 1; Until j > Jmax; end; Procedure output; Begin for J := 0 To Jmax do

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

Begin WriteLn('Energi ',J,' = ',Energi[J], 'F partisi ',j,' = ',Fpar[j]); end; end; {program utama} Begin ClrScr; input; rumus; WriteLn; output; ReadLn; End. Keterangan : Dalam program ini diberikan tipe data baru untuk mengurutkan atau menderetkan data yaitu menggunakan Type urut = array[0..maksimal] of double; Variabel yang menggunakan tipe data array ditulis dengan kotak […] seperti contoh berikut Energi[J] := rumus1 * J * (J + 1); Expon1[j] := exp(-energi[j]/(k*T)); Looping untuk menghitung fungsi partisi rotasi adalah j := 0; Fpar[j] := 0; Repeat Energi[J] := rumus1 * J * (J + 1); Expon1[j] := exp(-energi[j]/(k*T)); Expon2[j] := ((2*j)+1)*Expon1[j]; Fpar[j] := Fpar[j] + Expon2[j]; j := j + 1; Until j > Jmax; Looping Repeat……Until menghitung energi rotasi dari bilangan kuantum J = 0 sampai batas looping yaitu Until J > Jmax; Batas looping ini menunjukkan jika J > Jmax maka tidak lagi menghitung besarnya energi rotasi, maksimal J adalah Jmax. Batas looping dapat juga diungkapkan dengan cara lain misalnya Until J := Jmax + 1; Maksudnya looping akan berhenti jika ditemui harga J = Jmax + 1. Penambahan harga J menggunakan rumus J := J + 1; atau dapat juga menggunakan inc(J,1);

6.9 ENERGI AKTIVASI Menghitung energi aktivasi berdasarkan data beberapa temperatur dan konstanta laju reaksi menggunakan rumus

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

k = A.e



E RT

k adalah konstanta laju raksi, A adalah faktor Arrhenius, E adalah energi aktivasi dan T adalah temperatur. Persamaan Arrhenius dapat diubah dalam bentuk logaritma sebagai berikut ln k = ln A −

E RT

atau log k = log A −

E 2,303RT

Energi aktivasi reaksi dapat ditentukan jika konstanta laju reaksi diukur pada berbagai temperatur berbeda. Plotting log k terhadap 1/T akan menghasilkan slope sebesar −E / 2,303R, sehingga harga E = −2,303 x slope. Program Praktikum_9; Uses CRT; Const R = 8.314; Var T,K,LK,A,sT : array[1..50] of real; Ea,slope,sumA,rA : real; jd,i : byte; Procedure Input; Begin Write('Jumlah data = '); ReadLn(jd); WriteLn; for i := 1 to jd do begin Write('Temperatur ',i:2,' = '); ReadLn(T[i]); Write('Konstanta ',i:2,' = '); ReadLn(K[i]); WriteLn; end; end; Procedure Hitung_Ea; Begin WriteLn; WriteLn('T':3,'1/T':13,'Ln K':22); for i := 1 to jd do begin LK[i] := ln(K[i]); sT[i] := 1/T[i]; WriteLn(T[i]:6:3,sT[i]:13:6,LK[i]:20:4); end; slope := (LK[jd]-LK[1])/(sT[1]-sT[jd]); slope := abs(slope); Ea := slope*R; end;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

Procedure Hitung_A; Begin sumA := 0; for i := 1 to jd do begin A[i] := K[i]/exp(-Ea/(R*T[i])); sumA := sumA + A[i]; end; rA := sumA/jd; end; Procedure Hasil; Begin WriteLn; WriteLn('Slope = ',slope:6:3,' WriteLn; WriteLn('Fak Frek = ',rA:15); end;

Energi Aktivasi = ':15,Ea:10:3);

{Program Utama} Begin Repeat ClrScr; Input; Hitung_Ea; Hitung_A; Hasil; Until ReadKey = #27; End. Keterangan : Harga slope dalam program ini dicari dari selisih data pertama dengan data terakhir. Mungkin kurang tepat tetapi sebagai contoh hitungan dapat dipakai untuk perkiraan harga. Dapat juga dicoba menggunakan cara rata-rata seperti yang diterapkan untuk menghitung harga faktor Arrhenius. Looping for … to … do dapat dipakai untuk menghitung harga 1/T dan ln k, dan harga faktor Arrhenius. Dalam program ini dikenalkan cara pengulangan program menggunakan looping Repeat … Until. Pengu-langan akan dilakukan jika tombol yang ditekan (ReadKey) adalah selain tombol . Jadi jika ditekan tombol dengan kode ASCII # 27 maka program akan selesai.

6.10 KELARUTAN Satu liter larutan yang mengandung 0,001 mol NaCl dicampur dengan 1 liter larutan yang mengandung 0,001 mol AgNO3. Bila Ksp AgCl = 1,8 x 10−10 apakah terjadi endapan ? Program Praktikum_10;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

Uses CRT; Const KspAgCl = 1.8e-10; Var a,b,c,d,e,f,g,h : real; kd,opsi : char; simpulan : string[20]; Label 01; Begin 01 : ClrScr; WriteLn('Larutan a liter yang mengandung b mol NaCl dicampur dengan '); WriteLn('c liter larutan yang mengandung d mol AgNO3.'); WriteLn('Apakah terjadi Endapan ?'); WriteLn; WriteLn('Ksp AgCl = ',KspAgCl:10); Write('Diketahui a = '); ReadLn(a); Write(' b = '); ReadLn(b); Write(' c = '); ReadLn(c); Write(' d = '); ReadLn(d); WriteLn('--------------------------------------'); WriteLn; WriteLn('Jawaban :'); WriteLn(a:6:4,' liter larutan mengandung ',b:8:6,' mol Cl-'); delay(1000); WriteLn(c:6:4,' liter larutan mengandung ',d:8:6,' mol Ag+'); delay(1000); e := a + c; WriteLn('Volume campuran = ',e:6:4,' liter'); WriteLn; f := b/e; g := d/e; WriteLn('[Cl-] = ',b:8:6,' / ',e:6:4,' mol/liter = ',f:8:6,' mol/liter'); delay(1000); WriteLn('[Ag+] = ',d:8:6,' / ',e:6:4,' mol/liter = ',g:8:6,' mol/liter'); delay(1000); WriteLn; h := f*g; WriteLn('[Ag+][Cl-] = ',f:8:6,' x ',g:8:6,' = ',h:10); delay(2000); WriteLn; if h < KspAgCl then Begin kd := ''; simpulan := 'mengEndap'; End; WriteLn('Karena [Ag+][Cl-] ',kd,' Ksp AgCl maka AgCl ',simpulan); WriteLn(' Keluar Ulang'); opsi := ReadKey; if opsi = #13 then GoTo 01 else halt;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

ClrScr; End. Keterangan : Dalam program ini dikenalkan teknik menampilkan soal dan jawaban secara bertahap. Untuk mengatur waktu munculnya jawaban digunakan prosedur delay(x) dimana x adalah variabel waktu yang bernilai 1/1000 detik. Jadi jika akan menahan tampilan selama 2 detik maka x diberi harga 2000. Untuk memilih jawaban mengendap atau tidak mengendap digunakan seleksi dengan statemen if … then … else …. Variabel kd bertipe char yaitu tipe data yang berisi 1 karakter baik berupa angka atau huruf atau simbol, sedangkan variabel simpulan bertipe string. Untuk penghematan memori maka panjangnya string dapat dibatasi, misal sebanyal 20 karakter dengan penulisan string[20]. Teknik pengulangan program dilakukan dengan prosedur label yang dideklarasikan dengan harga tertentu misalnya 01. Jika ditekan tombol dengan kode ASCII #13 maka program akan mengulang mulai dari nomor label ditempatkan yaitu mulai dari letak harga label 01 pada badan program. Jika yang ditekan bukan tombol maka program akan berhenti. Prosedur halt digunakan untuk keluar dari program. 6.11 RUMUS EMPIRIS MOLEKUL Persen massa C, H dan O dalam vitamin C ditentukan secara eksperimen dengan membakar 2,00 mg cuplikan. Massa CO2 dan H2O yang terbentuk berturut-turut 3,00 mg dan 0,816 mg. Tentukan persen massa C, H dan O, rumus empiris vitamin C, dan rumus molekulnya jika massa molekul relatifnya 180. Program Praktikum_11; Uses CRT; Const ArC = 12; ArH = 1.01; ArO = 16; MrCO2 = 44; MrH2O = 18; pres = 0.1; Var mCup,mCO2,mH2O,mC,mH,mO,pC,pH,pO,molC,molH,molO : real; pmolC,pmolH,pmolO,pmolCi,pmolHi,pmolOi, dpmolC,dpmolH,dpmolO : real; koefCm,koefHm,koefOm,koefCe,koefHe,koefOe,i : byte; rpmolC,rpmolH,rpmolO : byte; Mr,pembagi,faktor,MasRumEm : real; Y,lagi : char; Begin Repeat ClrScr; Write('Berat cuplikan dalam mg = '); ReadLn(mCup); Write('Berat CO2 yang terbentuk dalam mg = '); ReadLn(mCO2); Write('Berat H2O yang terbentuk dalam mg = '); ReadLn(mH2O); Write('Massa Molekul Relatif = '); ReadLn(Mr); {rumus } mC := ((1*ArC)/MrCO2)*mCO2; mH := ((2*ArH)/MrH2O)*mH2O; pC := (mC/mCup)*100; pH := (mH/mCup)*100;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

5

pO := 100 - pC - pH; molC := pC/ArC; molH := pH/ArH; molO := pO/ArO; if (molC < molH) and (molC < molO) then pembagi := molC; if (molH < molC) and (molH < molO) then pembagi := molH; if (molO < molC) and (molO < molH) then pembagi := molO; pmolC pmolH pmolO

:= molC/pembagi; := molH/pembagi; := molO/pembagi;

i := 1; Repeat i := i + 1; pmolCi := pmolC*i; pmolHi := pmolH*i; pmolOi := pmolO*i; rpmolC := round(pmolCi); rpmolH := round(pmolHi); rpmolO := round(pmolOi); dpmolC := abs(pmolCi - rpmolC); dpmolH := abs(pmolHi - rpmolH); dpmolO := abs(pmolOi - rpmolO); Until (dpmolC 60 then a := 60; b := Random(19); if b < 7 then b := 7; if b > 19 then b := 19; ran := Random(112); zat := lambang[ran]; zat2:= nama[ran]; GoToXY(a+3,b); Write(zat,' (',zat2,')'); for i := 1 to 112 do Begin if zat = lambang[i] then Begin GoToXY(a-1,b-1); Write(berat[i]); skor := 0; Repeat GoToXY(a,b+1); Write('error'); delay(100); GoToXY(a,b+1); ClrEol; GoToXY(a,b+1); Write('-'); GoToXY(a,b+1); ReadLn(jawab); if jawab nomer[i] then Begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

6

GoToXY(a,b+1); Write(#7); GoToXY(a,b+1); Write('error'); end; skor := skor + 1; if jawab = '' then Begin Write(#7); GoToXY(a,b+1); Write(nomer[i],' '); GoToXY(1,24); ClrEol; GoToXY(12,24); Write(' Menu'); GoToXY(50,24); Write(' Ulang'); Exit; end; until (jawab = nomer[i]); skor := 11 - skor; if jawab = nomer[i] then Begin Write(#7); GoToXY(1,24); ClrEol; GoToXY(30,22); Write('Benar skor anda ',skor); GoToXY(12,24); Write(' Menu'); GoToXY(50,24); Write(' Ulang'); end; end; end; end; Begin Repeat ClrScr; TextColor(yellow); TextBackGround(red); GoToXY(20,5); Write(' MENU TEBAKAN SISTEM PERIODIK '); GoToXY(20,7); Write(' 1. MENEBAK NOMOR ATOM '); GoToXY(20,8); Write(' 2. MENEBAK LAMBANG ATOM '); GoToXY(20,9); Write(' 3. KELUAR '); GoToXY(20,11); Write(' OPSI : '); GoToXY(28,11); ReadLn(opsi); TextBackGround(blue); Case opsi of '1' : Repeat nomor_atom; opsi2 := ReadKey; Until opsi2 = #27; '2' : Repeat Lambang_atom;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

6

opsi2 := ReadKey; Until opsi2 = #27; '3' : Halt; End; Until opsi3 = #27; End. Keterangan : Teknik penempatan string pada posisi (X,Y) dilakukan secara acak menggunakan fungsi random. Untuk mengawali pembangkit bilangan acak maka sebelumnya dipanggil dulu prosedur Randomize. Jika pada fungsi random tidak dituliskan range-nya maka akan dihasilkan bilangan acak dengan range 0 ≤ X < 1, sebaliknya jika dituliskan range-nya maka harus bertipe Word hasilnya adalah 0 ≤ X < range. Jika range = 0 maka hasilnya adalah 0. Teknik penempatan acak hanya sekedar untuk daya tarik program. Untuk menghapus text dikenalkan prosedur ClrEol (Clear End Of Line) yang akan menghapus mulai posisi X yang ditentukan sampai akhir baris. Untuk menandai salah atau benarnya jawaban diberi tanda bel menggunakan prosedur Write(#7); yang akan berfungsi pada mode DOS saja. Dalam program juga dikenalkan penampilan contoh menu program dengan 3 pilihan. Seleksi pilihan menggunakan prosedur ReadLn(opsi) dimana opsi bertipe char. Dapat juga prosedur ReadLn(opsi)diganti dengan opsi := ReadKey; yang pada pengoperasiannya jika pilihan telah ditekan maka program langsung running tanpa terlebih dahulu menekan tombol . Untuk menambah daya tarik tampilan dilakukan teknik pewarnaan teks dan latar belakang. Pewarnaan teks menggunakan prosedur TextColor(X); dimana X bertipe Byte dengan range 0 … 15 sesuai dengan harga konstanta warna yang didefinisikan pada CRT. Untuk pengaturan latar belakang digunakan prosedur TextBackGround(X); dimana X bertipe Byte dengan range 0 … 7 sesuai dengan harga konstanta warna yang didefinisikan pada CRT. Nama warna dapat juga langsung dituliskan menggunakan istilah Inggris seperti yang telah didefinisikan pada CRT. Untuk menjalankan pilihan opsi digunakan aturan seleksi Case … of. Setiap pilihan opsi juga dapat dilakukan pengulangan program menggunakan looping Repeat … Until. Untuk scanning penekanan tombol digunakan penjebak opsi2 := ReadKey. Pilihan opsi akan berhenti kalau tombol yang ditekan adalah tombol dengan kode ASCII #27, jika tombol lain, misalnya maka pilihan opsi tersebut akan diulang. Pengulangan program keseluruhan menggunakan teknik yang sama, jika ditekan maka program akan berhenti. 6.14 kONSTANTA LAJU REAKSI Menghitung harga konstanta laju reaksi (k) berbagai orde reaksi apabila data konsentrasi awal , waktu dan konsentrasi setiap waktu diketahui. Rumusnya

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

6

Orde 1 : 1 C k r = ln o t  Ct Orde 2 :

   

1  C − Ct k r =  o t  Co .Ct Orde 3 : kr =

   

1  1 1 − 2  2.t  Ct Co 2

   

Harga kr diperhitungkan dari harga k setiap waktu dan dicari rata-ratanya. Program Praktikum_14; Uses CRT; Const menit = 100; Var Kt,Ct,T : array[0..menit] of real; Cawal,Kr : real; Jdata,i,pilih : byte; opsi : char; Label 01; Procedure input; Begin Repeat ClrScr; Write('Orde berapa Until pilih < 4;

? '); Read(pilih);

Write('Konsentrasi awal ? '); ReadLn(Cawal); WriteLn; Write('Berapa data masukkan ? '); ReadLn(Jdata); WriteLn; i := 1; While i 1; TextColor(white); GoToXY(5,4); Write('Macam data input : '); TextColor(yellow); GoToXY(5,5); Write('1. Konsentrasi reaktan + initial rate '); GoToXY(5,6); Write('2. Konsentrasi reaktan + waktu + konsentrasi produk '); GoToXY(5,7); Write(' Pilihan : '); ReadLn(data); pilih := 1; ordetot := 0; Repeat ClrScr; TextColor(white); GoToXY(5,3); Write('Jumlah reaktan = ',jr); GoToXY(5,4); Write('Mencari orde reaktan ',pilih,' : '); js[pilih] := 2; GoToXY(5,5); Write('Jumlah sampel = ',js[pilih]); if data = 1 then Begin TextColor(yellow); GoToXY(5,7); Write('Untuk menentukan orde reaktan ',pilih,' maka konsentrasi reaktan lain'); GoToXY(5,8); Write('harus konstan, sehingga yang diperhatikan hanya konsentrasi '); GoToXY(5,9); Write('reaktan ',pilih, ' dan initial rate-nya'); GoToXY(5,11); Write('No.':1,'[reaktan ':10,pilih,']','Initial rate':15); end; if data = 2 then Begin TextColor(yellow); GoToXY(5,7); Write('Untuk menentukan orde reaktan ',pilih,' maka konsentrasi reaktan lain'); GoToXY(5,8); Write('harus konstan, sehingga yang diperhatikan hanya konsentrasi '); GoToXY(5,9); Write('reaktan ',pilih,', waktu setimbang dan konsentrasi produknya.'); GoToXY(5,11); Write('No.':1,'[reaktan ':10,pilih,']','waktu':15,'[akhir]':15); end; TextColor(white); for j := 1 to js[pilih] do Begin GoToXY(5,11+j); Write(j:2); end;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

for j := 1 to js[pilih] do Begin GoToXY(15,11+j); Write('-'); GoToXY(15,11+j); read(C[pilih,j]); if data = 1 then Begin GoToXY(30,11+j); Write('-'); GoToXY(30, 11+j); read(Ir[pilih,j]); end; if data = 2 then Begin GoToXY(30,11+j); Write('-'); GoToXY(30,11+j); read(t[pilih,j]); GoToXY(44,11+j); Write('-'); GoToXY(44,11+j); read(final[pilih,j]); Ir[pilih,j] := abs(final[pilih,j]/t[pilih,j]); end; end; sum1 := 0; sum2 := 0; for i := 1 to (js[pilih]-1) do Begin for j := (i+1) to js[pilih] do Begin rc[j,i] := c[pilih,j]/c[pilih,i]; rir[j,i] := Ir[pilih,j]/Ir[pilih,i]; orde[j,i] := (Ln(rir[j,i]))/Ln(rc[j,i]); sum1 := sum1 + orde[j,i]; end; sum2 := sum2 + i; end; ordepar[pilih] := sum1/sum2; ordeke := pilih; order[ordeke] := ordepar[pilih]; ordetot := ordetot + ordepar[pilih]; GoToXY(5,22); Write('Orde reaktan ',pilih,' = ',ordepar[pilih]:4:3); Delay(1000); pilih := pilih + 1; Until pilih > jr; end; Procedure out; Begin GoToXY(5,19); Write('Hasil total : '); for pilih := 1 to jr do Begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

GoToXY(5,20+pilih); Write('Orde reaktan ',pilih,' = ',order[pilih]:4:3); end; GoToXY(5,24); Write('Orde total = ',ordetot:4:3); end; Begin ClrScr; Repeat ClrScr; cariOrde; out; Until ReadKey = #27 End. Keterangan : Program mengenalkan tipe data array 2 dimensi yaitu dc = array[1..10,1..10] of real; Penentuan orde terdapat pada bagian sum1 := 0; sum2 := 0; for i := 1 to (js[pilih]-1) do Begin for j := (i+1) to js[pilih] do Begin rc[j,i] := c[pilih,j]/c[pilih,i]; rir[j,i] := Ir[pilih,j]/Ir[pilih,i]; orde[j,i] := (Ln(rir[j,i]))/Ln(rc[j,i]); sum1 := sum1 + orde[j,i]; end; sum2 := sum2 + i; end; ordepar[pilih] := sum1/sum2; ordeke := pilih; order[ordeke] := ordepar[pilih]; ordetot := ordetot + ordepar[pilih]; ordepar adalah variabel orde masing-masing reaktan, sedangkan ordetot adalah orde total reaksi. Penentuan laju pada macam data input kedua adalah Ir[pilih,j] := abs(final[pilih,j]/t[pilih,j]); Didukung dengan penempatan string menggunakan procedur GoToXY(X,Y)maka tampilan tampak lebih interaktif.

6.16 LAJU EFUSI GAS

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

Menghitug harga laju efusi suatu gas dengan rumus u =

2 RT κ  po . .1 − M κ−1  pi 

κ−1  κ   

dimana u adalah laju efusi gas, M adalah massa molar, κ adalah Cp/Cv, po dan pi adalah tekanan luar dan dalam Program Praktikum_16; Uses CRT; Const R = 8.31441; Var T,M,K,pex,pin,R1,R2,R3,R4,R5,R6,R7 : real; opsi : char; Function pangkat(a,b : real) : real; begin pangkat := exp(b*ln(a)); end; Procedure input; begin Write('Temperatur dalam K = '); ReadLn(T); Write('Berat molekular = '); ReadLn(M); Write('Cp/Cv = '); ReadLn(K); Write('Tekanan luar = '); ReadLn(pex); Write('Tekanan dalam = '); ReadLn(pin); end; Procedure hitung; begin R1 := K/(K-1); R2 := 1/R1; R3 := pex/pin; R4 := 1-R3; M := M/1000; R5 := (2*R*T)/M; R6 := pangkat(R4,R2); R7 := Sqrt(R5*R1*R6); end; Procedure Hasil; begin WriteLn; WriteLn('Laju efusi = ',R7:10:5); end; Begin Repeat ClrScr; Input; Hitung; Hasil; opsi := ReadKey;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

Until opsi = #27; End. Keterangan : Dalam program ini dikenalkan pembuatan suatu Function dalam menghitung hasil perpangkatan suatu variabel. Turbo Pascal memang tidak menyediakan suatu fungsi atau prosedur terintegrasi khusus untuk perpangkatan, karena itu harus dibuat sendiri fungsi perpangkatannya. Penggunaannya tampak pada persamaan R6 := pangkat(R4,R2);

6.17 OPERASI MATRIK DAN VEKTOR Menyelesaikan operasi matrik dan vektor berupa penjumlahan matrik, selisih, perkalian skalar matrik, perkalian antar matrik, penentuan matrik transpose, harga determinan, matrik inversi, dan menyelesaikan persamaan linier. Program Praktikum_17; Uses CRT; Const max = 16; Type matrik = array[1..max,1..max] of real; vektor = array[1..max] of real; Var a,b,c,m : matrik; i,j,n,k,r,baris,kolom : integer; opsi : char; Function det(n:integer; a:matrik): real; var ii,jj,kk,ll,ff,nxt : integer; piv,cn,big,temp,term : real; Begin ff := 1; for ii := 1 to n-1 do Begin big := 0; for kk := ii to n do Begin term := abs(a[kk,ii]); if term - big > 0 then Begin big := term; ll := kk; end; end; if ii - ll 0 then ff := -ff; for jj := 1 to n+1 do Begin temp := a[ii,jj]; a[ii,jj] := a[ll,jj]; a[ll,jj] := temp;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

end; piv := a[ii,ii]; nxt := ii + 1; for jj := nxt to n do Begin cn := a[jj,ii]/piv; for kk := ii to n+1 do a[jj,kk] := a[jj,kk] - cn*a[ii,kk]; end; end; temp := 1; for ii := 1 to n do temp := temp*a[ii,ii]; det := temp*ff; end; Procedure changecol(baris,kolom,target:integer; var m:matrik; newcol:vektor); var i : integer; Begin for i := 1 to baris do m[i,target] := newcol[i]; end; Procedure solve(n:integer; a:matrik; c:vektor; var x: vektor); var k : integer; d : real; Procedure swap(n,k:integer; var a:matrik; var c : vektor); var e : real; j : integer; Begin for j := 1 to n do Begin e := c[j]; c[j] := a[j,k]; a[j,k] := e; end; end; Begin d := det(n,a); for k := 1 to n do Begin swap(n,k,a,c); x[k] := det(n,a)/d; swap(n,k,a,c); end; end; Procedure invert(n : integer; a : matrik; var b : matrik); var i,tmp : vektor; j : integer; Begin

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

if det(n,a) = 0 then Begin WriteLn('invert : singular matrik'); ReadLn; end else Begin for j := 1 to n do Begin i[j] := 1; solve(n,a,i,tmp); changecol(n,n,j,b,tmp); i[j] := 0; end; end; end; Procedure jumlah(baris,kolom:integer; x,y :matrik; var z : matrik); var i,j : integer; Begin for i := 1 to baris do for j := 1 to kolom do z[i,j] := x[i,j]+y[i,j]; end; Procedure selisih(baris,kolom:integer; x,y :matrik; var z : matrik); var i,j : integer; Begin for i := 1 to baris do for j := 1 to kolom do z[i,j] := x[i,j]-y[i,j]; end; Procedure transpose(baris,kolom:integer; mat : matrik; var matt : matrik); var i,j : integer; Begin for i := 1 to baris do for j := 1 to kolom do matt[j,i] := mat[i,j]; end; Procedure kali_skalar(baris,kolom:integer; konst : real; x:matrik; var z : matrik); var i,j : integer; Begin for i := 1 to baris do for j := 1 to kolom do z[i,j] := konst*x[i,j]; end; Procedure kali_matrik(n,m,k: integer; x,y: matrik; var z: matrik); var i,j,h : integer; Begin for i := 1 to n do for j := 1 to k do Begin z[i,j] := 0;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

for h := 1 to m do z[i,j] := z[i,j] + x[i,h]*y[h,j]; end; end; Procedure readmat(baris,kolom : integer; var m : matrik); var i,j : integer; Begin for i := 1 to baris do Begin for j := 1 to kolom do Begin GoToXY((j*10),i+2); ReadLn(m[i,j]); end; end; end; Procedure Writemat(baris,kolom:integer; var m:matrik); var i,j : integer; Begin for i := 1 to baris do Begin for j := 1 to kolom do Begin GoToXY((j*10),i+2); WriteLn(m[i,j]:10:4); end; WriteLn; end; end; Procedure readvec(n : integer; var v : vektor); var i : integer; Begin GoToXY(70,2); Write('Vektor'); for i := 1 to n do Begin GoToXY(70,i+2); Read(v[i]); end; end; Procedure inversi; Begin ClrScr; GoToXY(1,1); Write('Orde matrik : '); Read(n); baris := n; kolom := n; readmat(n,n,a); ClrScr; invert(n,a,b); GoToXY(1,1); Write('Matrik inversi :'); writemat(n,n,b);

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

7

end; Procedure determinan; var dtm : real; Begin ClrScr; Write('Orde matrik : '); ReadLn(n); baris := n; kolom := n; readmat(n,n,a); ClrScr; WriteLn('matrik asal :'); writemat(n,n,a); dtm := det(n,a); WriteLn('Determinan matrik = ',dtm:10:4); end; Procedure dua_matrik(var X,Y : matrik); Begin ClrScr; Write('Orde matrik : '); ReadLn(n); baris := n; kolom := n; GoToXY(10,2); Write('Matrik Pertama : '); for i := 1 to baris do Begin for j := 1 to kolom do Begin GoToXY((j*10),i+2); ReadLn(X[i,j]); end; end; GoToXY(10,baris+5); Write('Matrik Kedua : '); for i := 1 to baris do Begin for j := 1 to kolom do Begin GoToXY((j*10),i+(baris+5)); ReadLn(Y[i,j]); end; end; end; Procedure penjumlahan; var X,Y,Z : matrik; Begin dua_matrik(x,y); jumlah(n,n,x,y,z);

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

ClrScr; Writeln('Hasil Penjumlahan :'); writemat(n,n,z); end; Procedure pengurangan; var X,Y,Z : matrik; Begin dua_matrik(x,y); selisih(n,n,x,y,z); ClrScr; Writeln('Hasil Selisih :'); writemat(n,n,z); end; Procedure perkalian; var X,Y,Z : matrik; Begin dua_matrik(x,y); kali_matrik(n,n,n,x,y,z); ClrScr; Writeln('Hasil Perkalian :'); writemat(n,n,z); end; Procedure transpose_matrik; Begin ClrScr; Write('Orde matrik : '); ReadLn(n); baris := n; kolom := n; readmat(n,n,a); ClrScr; WriteLn('Matrik Transpose :'); transpose(n,n,a,b); writemat(n,n,b); end; Procedure perkalian_skalar; var konst : real; Begin ClrScr; Write('Orde matrik : '); ReadLn(n); baris := n; kolom := n; readmat(n,n,a); GoToXY(1,baris+5); Write('Konstanta : '); Read(konst);

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

kali_skalar(n,n,konst,a,b); ClrScr; WriteLn('Hasil perkalian skalar :'); writemat(n,n,b); end; Procedure linier; var den : real; v : vektor; m,z : matrik; Begin ClrScr; Write('Orde matrik : '); ReadLn(n); baris := n; kolom := n; readmat(n,n,m); readvec(n,v); den := det(n,m); WriteLn; WriteLn('Penyelesaian persamaan linier :'); WriteLn; for i := 1 to n do Begin z := m; changecol(n,n,i,z,v); WriteLn('x',i:1,' = ',det(n,z)/den:10:4); end end; Procedure Pilihan; Begin ClrScr; TextColor(yellow); WriteLn(' MENU MATRIK '); WriteLn; WriteLn(' 1. Penjumlahan Matrik '); WriteLn(' 2. Selisih Matrik '); WriteLn(' 3. Perkalian Matrik '); WriteLn(' 4. Perkalian Skalar Matrik '); WriteLn(' 5. Inversi Matrik '); WriteLn(' 6. Determinan '); WriteLn(' 7. Transpose '); WriteLn(' 8. Persamaan Linier '); WriteLn(' 9. Keluar '); WriteLn; Write (' Pilihan : '); opsi := ReadKey; Case opsi of '1' : Penjumlahan; '2' : Pengurangan;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

'3' : Perkalian; '4' : Perkalian_skalar; '5' : Inversi; '6' : Determinan; '7' : Transpose_matrik; '8' : Linier; '9' : Halt; end; end; Begin Repeat Pilihan; GoToXY(10,25); Write(' Keluar Menu'); Until ReadKey = #27; End. Keterangan : Program ini memberikan contoh penggunaan deret 2 dimensi untuk data matrik. Salah satu penggunaan operasi matrik dan vektor adalah penyelesaian permasalahan kesetaraan persamaan reaksi pada pembakaran metana yang menghasilkan CO2 dan H2O. CH4

+

O2



CO2

+

H2O

Penyelesaiannya menggunakan menu Persamaan Linier. Matrik yang dapat dibentuk dari persamaan ini adalah 1 0   4

0

1

2 0

2 0

0 1  2 

Dalam persamaan reaksi ada 4 suku yang menunjukkan 4 zat berbeda (2 reaktan dan 2 produk). Baris pertama untuk banyaknya atom C : suku pertama sebanyak 1 buah , suku kedua sebanyak 0 buah, suku ketiga sebanyak 1 buah dan suku keempat sebanyak 0 buah. Baris kedua untuk menunjukkan banyaknya atom O, dan baris ketiga untuk banyaknya atom H. Matrik hanya memiliki 3 baris karena dalam persamaan reaksi hanya terdapat 3 jenis atom yaitu C, O dan H. Tiga kolom pertama adalah bentuk matrik 3 x 3, sedangkan kolom keempat adalah vektornya. Hasil penyelesaiannya diperoleh vektor : 0,5; 1,0; 0,5. Tiga komponen vektor ini adalah koefisien dari 3 suku pertama dalam persamaan reaksi, sedangkan koefisien suku terakhir dapat langsung dihitung dengan lebih mudah, diberikan harga 1,0. Sehingga diperoleh persamaan reaksi ½ CH4 + 1 O2 → ½ CO2 + 1 H2O atau dibulatkan menjadi 1 CH4 +

2 O2



1 CO2 +

2 H2O

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

6.18 MEMBUAT FILE UNIT Suatu fungsi atau prosedur dalam suatu program hanya dapat digunakan oleh program tersebut, tidak dapat digunakan oleh program lain dalam file lain. Problem ini tidak efisien jika diterapkan untuk program besar atau panjang karena harus mengetik ulang dan cara ini boros memori. Untuk mengantisipasiny Pascal menyediakan bentuk pemrograman modular berupa file unit yang dapat digunakan untuk membuat librari (pustaka) dan membagi program besar menjadi modul-modul yang secara logika berkaitan. Perhatikan kembali pembahasan sub-bab 2.26 dan bab 3 untuk membuat file unit berikut ini. {$N+} Unit Math; Interface Uses CRT; Var hasil : extended; i : integer;

{Praktikum 18}

Function pangkat(a : real; b : real) : extended; Function sina(a : real) : real; Function cosa(a : real) : real; Function tana(a : real) : real; Function loga(a : real) : real; Procedure garis_datar (x1,x2,y,jgar : integer); Procedure garis_tegak (y1,y2,x,jgar : integer); implementation Function pangkat; Begin Hasil := exp(b*ln(a)); pangkat := hasil; End; Function sina; Begin Hasil := sin(a/(180/pi)); sina := hasil; End; Function cosa; Begin Hasil := cos(a/(180/pi)); cosa := hasil; End; Function tana; Begin Hasil := sina(a)/cosa(a); tana := hasil; End; Function loga;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

Begin Hasil := Ln(a)/Ln(10); loga := hasil; End; Procedure garis_datar; Begin for i := x1 to x2 do Begin GoToXY(i,y); Write(char(jgar)); End; End; Procedure garis_tegak; Begin for i := y1 to y2 do Begin GoToXY(x,i); Write(char(jgar)); End; End; End. Keterangan : Nama unit harus sama dengan nama filenya. Jika nama unit Math maka nama file programnya harus Math. Unit ini dapat dipakai oleh file lain dengan menyebutkan nama unit dalam klausul Uses. Source Code unit ini adalah math.pas maka agar dapat menjadi math.tpu (Turbo Pascal Unit) harus dikompilasi dulu dengan alamat ke disket/hardisk dengan perintah sebagai berikut : •

Untuk Turbo Pascal 5 : Tekan Arahkan Destination ke Disk (bukan Memori) dengan menekan Tekan



Untuk Turbo Pascal 7 :

Langsung tekan

Contoh jenis garis pada Char(jgar) sebagai berikut : kode ASCII 205 untuk garis tunggal datar dan kode ASCII 186 untuk garis tunggal tegak/vertikal

6.19 JARAK ANTAR BIDANG INDEKS MILLER GaCl3 memiliki sistem triklinik. Konstanta kristalnya sebagai berikut α = 119,50 β = 90,80 γ = 118,60; a = 6,94 angstrom, b = 6,84 angstrom, c = 6,82 angstrom. Tulis program untuk menghitung jarak antar bidang indeks Miller (dhkl) menggunakan rumus berikut

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8  h2  2  2  2 2 hk   sin α +  k  sin 2 β +  l  sin 2 γ +   ab ( cos α. cos β. cos γ ) +  a2   b2   c2           2kl ( cos β. cos γ − cos α) +  2lh ( cos α. cos γ − cos β ) + 1 − cos 2 α − cos 2 β − cos 2 γ + 2 cos α. cos β. cos γ  bc   ca      P =

(

1/ 2

1 dhkl =  P   

Hitunglah harga jarak antar bidang indeks Miller untuk bidang 100 dan 110 ! {$N+} Program Praktikum_19; Uses CRT, math; Var a,b,c,alpha,betha,gamma : real; h,k,l : byte; sr1,sr2,r1,r2,r3,r4,r5,r6,r7,r8,dhkl : real; opsi : char; Label 10; Procedure input; Begin GoToXY(1,1); Write('MENGHITUNG JARAK ANTAR BIDANG INDEKS MILLER'); garis_datar(1,79,2,205); GoToXY(1,3); Write('Alpha = Betha = Gamma = '); garis_datar(1,79,4,205); GoToXY(1,5); Write('a = b = c = '); garis_datar(1,79,6,205); GoToXY(1,7); Write('h = k = l = '); garis_datar(1,79,8,205); GoToXY(1,9); Write('dhkl = '); GoToXY(9,3); Read(alpha); GoToXY(27,3); Read(betha); GoToXY(44,3); Read(gamma); GoToXY(9,5); Read(a); GoToXY(27,5); Read(b); GoToXY(44,5); Read(c); GoToXY(9,7); Read(h); GoToXY(27,7); Read(k); GoToXY(44,7); Read(l); end; Procedure Rumus; Begin if h = 1 then sr1 := pangkat(h,2) else sr1 := 0; r1 := (sr1/pangkat(a,2))*Sqr(sina(alpha));

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

)

8

if k = 1 then sr1 := pangkat(k,2) else sr1 := 0; r2 := (sr1/pangkat(b,2))*Sqr(sina(betha)); if l = 1 then sr1 := pangkat(l,2) else sr1 := 0; r3 := (sr1/pangkat(c,2))*Sqr(sina(gamma)); r4 := ((2*h*k)/(a*b))*(cosa(alpha)*cosa(betha)*cosa(gamma)); r5 := ((2*k*l)/(b*c))*(cosa(betha)*cosa(gamma)-cosa(alpha)); r6 := ((2*l*h)/(c*a))*(cosa(gamma)*cosa(alpha)-cosa(betha)); r7 := (1-Sqr(cosa(alpha))-Sqr(cosa(betha))-Sqr(cosa(gamma))+ (2*cosa(alpha)*cosa(betha)*cosa(gamma))); r8 := r1 + r2 + r3 + r4 + r5 + r6 + r7; dhkl := Sqrt(1/r8); end; Procedure hasil; Begin GoToXY(1,9); Write('dhkl = ',dhkl:6:4); garis_datar(1,79,10,205); end; Begin ClrScr; 10: input; rumus; hasil; opsi := readkey; if opsi = #13 then goTo 10 else halt; End. Keterangan : Program ini menggunakan unit math dalam operasinya, yaitu fungsi pangkat, sinus, cosinus dan membuat garis dengan jenis garis tunggal datar. Perhatikan teknik mengulang program tanpa menghilangkan variabel yang akan diisi, sehingga tampak bentuk tampilan interaktif.

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

Membuat Program Pelatihan Multimedia

Membuat Program Pelatihan Multimedia Buatlah proyek baru dengan cara : 1.

tempatkan sebuah label pada form dengan memilih icon

pada component

palette standart. 2.

tempatkan button 1,2,3 dengan memilih icon

pada component palette

standart. 3.

tempatkan status bar dengan mengklik icon

4.

tempatkan image dengan mengklik icon

dari conponent paletteWin32. dari component palette additional

kemudian atur ukurannya. 5.

tempatkan RichEdit

dari component palette Win32. kemudian drag pada

foam dan atur besarnya. 6.

pada component palette standart pilih icon

kemudian drag pada form.

Gabungkan image dengan panel

kemudian lakukan langkah berikut : 1 1 Mengubah Properti pada form

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

Form memiliki sejumlah karakteristik atau sifat sperti tinggi,lebar, nama,warna yang disebut properti. Property suatu foam atau komponen lain dapat diubah melalui Objek Inspektor pada halaman yang berjudul properties, contoh: properties Caption

Isi Digunakan untuk amemberi nama

Color

foam,missal Latihan Multimedia Digunakan untuk memberi warna foam, missal clBtnFace

1 1 Memempatkan komponen-komponen pada form komponen Label 1

Properties Caption

isi Digunakan untuk memberi nama label misal Ikatan Kimia

Color

Memberi warna label

Font

Digunakan untuk mengatur jenis ,ukuran dan

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

8

Button 1

Caption

warna huruf Ketik : TEXT

Cursor

Pilih HandPoint

Visible

Digunakan untuk menampilkan Button ,pilih True

Enable

Digunakan untuk mengaktifkan Button,pilih True

Button 2

Button 3

Button 4

Image

Hint

Digunakan untuk memunculkan pesan pada

Caption

status bar ,ketik mau baca text Ketik : GAMBAR

Cursor

Pilih HandPoint

Hint

Ketik : mau lihat gambar

Visible

Pilih : True

Enable Caption

Pilih : True Ketik :VIDEO

Cursor

Pilih HandPoint

Hint

Ketik : mau lihat video

Visible

Pilih : True

Enable Caption

Pilih : True Ketik : KELUAR

Cursor

Pilih HandPoint

Hint

Ketik : keluar ah…..

Visible

Pilih : True

Enable Picture

Pilih : True Digunakan untuk memilih gambar yang akan

dimunculkan klik load untuk mencari kemudian klik ok

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

Stretch Pilih : true agar gambar sesuai dengan ukuran Statusbar

RichEdit 1

AutoHint

image Pilih : True

Visible

Pilih : True

Enable Color

Pilih : True Pilih : clAqua

Lines

Klik tanda sebelah kanannya lalu hapus tulisan RichEdit1 kemudian klik OK

Scroollbars Pilih : ssBoth Panel1 Caption Hapus tulisan Panel1 Setelah menempatkan dan mengatur property masing-masing komponen maka tampilan akan menjadi seperti berikut :

Menampilkan text melalui Button text Klik dua kali dengan cepat button text pada form Delphi, maka akan muncul tampilan unit sebagai berikut:

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

Diantara tulisan begin dan end; tuliskan kode kejadian sebagai berikut : Panel1.visible:=false; Image1.visible:=false; RichEdit1.visible:=true; RichEdit1.line.LoadFromFile(‘nama file text yang akan dtampilkanr.rtf’); Save All kemudian jalankan form. Catatan : - sebelumnya buatlah file text dengan format rtf menggunakan Microsof World kemudian simpan pada directory yang sama tempa anda menyimpan form

Menampilkan gambar melalui button gambar klik dua kali dengan cepat button gambar sehingga muncul unit kerja anda seperti gambar diatas, lalu ketikkan kode kejadian Sebagai berikut : RichEdit1.Visible:=False; Panel1.Visible:=True; Image1.Visible:=true: Image1.Picture.LoadFromFile(‘nama file gambar .jpg’); Save All kemudian jalankan form. Catatan : temptkan file gambar yang akan dibuka pada directory penyimpanan form saudara.beberapa file gambar yang dapat diterjemahka Delphi antara lain jpg,bmp,dll

Menampilkan Video melalui button video Sebelumnya tambahkan pada Uses Shell API,Mplayer kemudianTempatkan komponen MediaPlayer1 dari Component Palette System dengan memilih icon pada form akan muncul tampilan seperti berikut:

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

sehingga

9

atur propertinya sebagai berikut : Auto Open Pilih False Colored Button Pilih False VIsible Pili False Visible Button Pilih False untuk semua Button Klik dua kali pada Button video kemudian ketikkan kode kejadian sebagai berikut : Image1.Visibl:=false; RichEdit1.Visible :=False; Panel1.Visible:=false; MediaPlayer1.FilenName:=’nama file yang akan dibuka.mpg’; MediaaPlayer1.Open ; Panel1.Show; MediaPlayr1.Display:=panel1; With Panel1 do Media Player1.DisplayRect:=Rect(2,2,Width,Height); If MediaPlayer1,DeviceID=0 then Begin MessageDlg(‘belum ada file yang dibuka’,mtInformation,[mbOK],0); Exit; End; MediaPlayer1.Play; End; Save All kemudian jalankan form. File film selain mpg, yang dapat dibaca oleh Delphi adalah AVI,

Mengahiri program Klik dua kali dengan cepat button keluar ,kmudian tuliskan kode kejadian sebagai berikut: If MesageDlg(‘yakinkah anda akan keluar?’,mt Confirmation,mbOKCancel,0) = mrOk than Application.Trminate; End;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

Membuat Program Soal Interaktif Buatlah proyek baru dengan membuka Form Delphi baru, kemudian tepatkan Komponen-komponen sebagai berikut:

Setelah menempatkan komponen tersebut kemudian aturlah Properti melalui objek Inspector sebagai berikut : Button 1

Button 2

Button 3

Caption

Kalkulator

Name

Btnkalkulator

Enable Caption

true A

Name

BtnA

Enable Caption

False B

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

Name

BtnB

Enable Caption

False C

Name

BtnC

Enable Caption

False mulai

Name

Btnmulai

Enable Caption

False Maju>

Name

Btnmaju

Enable Caption

False keluar

Name

Btnkeluar

Label 1

Enable Caption

False Keterangan 1

Label2

name Caption

Labelketerangan1 Keterangan 2

Label 3

name Caption

Labelketerangan2 60

RichEdit

name Lines

Labelwaktu Hilangkan tulisan RichEdit

Button 4

Button 5

Button 6

Button 7

Pilih ssBoth Timer

Scroolbar Enable

Pilih False

Interval

1000 (Menyatakan 1 Detik)

Name

Timer1

Dapat juga ditambahkan bevel untuk memberi bingkai komonen-komponen form.

Menampilkan soal melalui RichEdit dengan bantuan button mulai Sebelumnya kita harus menempatkan file soal yang hendak ditampilkan seperti ulasan sebelumnya tentang menampilkan text menggunakan button text. Beri nama file-file tersebut dengan nama 11.rtf,12.rtf,13.rtf dan seterusnya sampai 20.rtf. Dengan mangklik dua kali dengan cepat pada button mulai kemudian ketikkan kode kejadian sebagai berikut : BtnA.Enable:=true; BtnB.Enable:=true;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

BtnC.Enable:=true; Btnmaju.Enable:=true; Btnmulai.Enable:=true; RichEdit1.Visibl:= true; FileName:=’11.rtf’; RichEdit1.Lines.LoadFromFile(Filename); Js:= 1; Jss:=InToStr (js); Labelketerangan1.Caption:=’jumlah Soal;’+jss; Jb:=0; Jbs:=IntToStr(jb); Labelketerangan2.Caption:=jumlah benar:’+jbs; Timer1.Enable:=true; Form!.Visible:=false; X:=0; End;

Diktat Mata Kuliah Kimia Komputasi Jurusan Kimia FMIPA Unnes

9

Menampilkan Soal Berikutnya Menggunakan Button Maju Klik dua kali button maju dengan cepat kemudian tuliskan kode kejadian sebagai berikut : BtnA.Enable:=true; BtnB.Enable:=true; BtnC.Enable:=true; RichEdit1.Visible:=true; Js:=js+1; filename:=copy(filename,1,); Fni:=StrToInt(filename); Fni:=fni+1; If fni '+floattostr(yt[zat])) else Memo2.Lines.Add(' '+inttostr(j)+'-->'+floattostr(yt[zat])) end; t:= t0 + j*h; end; Procedure RungeKutta4; var i: integer; Begin for i:= 1 to dim do m1[i]:= fx(i,t,y); for i:= 1 to dim do yEuler[i]:= y[i]+ (h*m1[i]/2); for i:= 1 to dim do m2[i]:= fx(i,t+h/2,yEuler); for i:= 1 to dim do yEuler[i]:= y[i]+ (h*m2[i]/2); for i:= 1 to dim do m3[i]:= fx(i,t+h/2,yEuler); for i:= 1 to dim do yEuler[i]:= y[i]+ (h*m3[i]); for i:= 1 to dim do m4[i]:= fx(i,t+h,yEuler); for i:= 1 to dim do y[i]:= y[i]+ (h/6)*(m1[i]+2*m2[i]+2*m3[i]+m4[i]); for i:= 1 to dim do yt[i]:= y[i]+ j*plot; if radiobutton1.Checked = true then begin Panel2.Visible := false; Panel1.Visible := true; Memo1.Visible := false; Memo2.Visible := false; Chart1.Visible := true; series1.Add(yt[zat]); end; if radiobutton2.Checked = true then begin Panel1.Visible := false; Panel2.Visible := true; Series1.Clear; Chart1.Visible := false; Memo1.Visible := true; Memo2.Visible := true; if j