module algoritma

67
Diktat Kuliah: Algoritma dan Pemograman III Page 1 of 67 Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 1 : Definisi Agoritma dan Pemograman Materi Kuliah : Algoritma dan Pemograman III A. DEFINISI ALGORITMA Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama seorang ahli matematika dari Uzbekistan Abu Abdullah Muhammad Ibnu Musa Al‐Khuwarizmi (770‐840). Al‐Khuwarizmi dibaca orang barat me njadi Algorism. Al‐Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal‐Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm berangsurangsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma. Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya. Menilai Sebuah Algoritma ketika manusia berusaha memecahkan masalah, metode atau teknik yang digunakan untuk memecahkan masalah kemungkinan bisa lebih dari satu. Dan kita memilih mana yang terbaik diantara teknikteknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan. Lalu bagaimana mengukur mana algoritma yang terbaik ? Beberapa persyaratan untuk menjadi algoritma yang baik adalah: 1. Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar. 2. Pemrosesan yang efisien (low cost). Proses harus diselesaikan secepat mungkin dan jumlah kalkulasi yang sependek mungkin. 3. Bersifat general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general. 4. Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada. 5. Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda. Sulit dimengertinya suatu program akan membuat sulit pengelolaan.

Upload: rony-bolank

Post on 08-Jul-2015

297 views

Category:

Education


2 download

DESCRIPTION

sem3

TRANSCRIPT

Page 1: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 1 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 1 : Definisi Agoritma dan Pemograman

Materi Kuliah : Algoritma dan Pemograman III

A. DEFINISI ALGORITMA

Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan angka arab.

Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama seorang ahli matematika dari Uzbekistan Abu Abdullah Muhammad Ibnu Musa Al‐Khuwarizmi (770‐840). Al‐Khuwarizmi dibaca orang barat menjadi Algorism. Al‐Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal‐Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa. Maka lambat laun kata Algorithm berangsur‐angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa Indonesia, kata Algorithm diserap menjadi Algoritma.

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya.

Menilai Sebuah Algoritma ketika manusia berusaha memecahkan masalah, metode atau teknik yang digunakan untuk memecahkan masalah kemungkinan bisa lebih dari satu. Dan kita memilih mana yang terbaik diantara teknik‐teknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan.

Lalu bagaimana mengukur mana algoritma yang terbaik ? Beberapa persyaratan untuk menjadi algoritma yang baik adalah:

1. Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.

2. Pemrosesan yang efisien (low cost). Proses harus diselesaikan secepat mungkin dan jumlah kalkulasi yang sependek mungkin.

3. Bersifat general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.

4. Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.

5. Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda. Sulit dimengertinya suatu program akan membuat sulit pengelolaan.

Page 2: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 2 of 67

6. Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.

Berdasarkan hal diatas dapat diartikan Algoritma adalah sebuah strategi yang mengandalkan kemampuan berpikir secara logis untuk memecahkan suatu masalah. Dalam algoritma, kita mulai dengan berpikir apa yang kita miliki (kekuatan dan kelemahan), selanjutnya kita atur langkah (aksi) agar tujuan atau sasaran yang kita harapkan dapat terwujud.

Begitu juga dalam hal membuat program komputer. Ada keterbatasan statemen yang disediakan, namun dengan keterbatasan itu kita siasati langkah-langkah untuk mencapai hasil program yang sesuai dengan keinginan. Misalnya di dalam bahasa pemrograman tidak ada fungsi/prosedur bawaan yang mengkonversi nilai nominal mata uang menjadi bentuk terbilang. Dengan menggunakan strategi/algoritma kita dapat memecahkan persoalan tersebut dan dapat membuat programnya. Namun demikian, awal pembuatan algoritma tidak perlu memperhatikan statemen yang ada di suatu bahasa pemrograman karena algoritma bersifat umum.

Contoh algoritma dengan bahasa natural : Masukkan Nilai jari – jari lingkaran ke dalam R Ambil nilai Pi sebagai konstan 3.14 Masukkan L dalam rumus Pi * R * R Tampilkan L sebagai hasil Luas lingkaran

Contoh menggunakan pseudo code : Mencari luas lingkaran dengan rumus : L=∏ R2 Algoritmanya adalah sebagai berikut : R jari - jari Pi 3.14 L Pi * R * R Print L

B. PENGERTIAN PROGRAM DAN PEMROGRAMAN

Dalam kehidupan sehari – hari, untuk berkomunikasi dengan orang lain, kita harus menggunakan bahasa yang sama dengan orang tersebut. Jika kita tidak menggunakan bahasa yang bias saling dipahami maka kita tidak bias berkomunikasi dengan orang lain.

Dalam pemrograman computer berlaku juga hal seperti tersebut diatas, kita harus menggunakan bahasa yang dimengerti oleh computer untuk memberikan suatu instruksi. Yang dimaksud dengan pemrograman computer adalah lagkah-langkah yang dilakukan untuk memberikan instruksi kepada komputer untuk memecahkan masalah.

Secara umum terdapat 4 kelompok Bahasa Pemrograman, yaitu :

1. Low Level Language (seperti bahasa Assembly) Level terendah Isi: kode-kode mesin yg hanya dapat di interpretasikan langsung oleh mesin komputer

berupa kode numerik 0 dan 1 Microcode: Sekumpulan instruksi dalam bahasa mesin (+): Eksekusicepat

Page 3: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 3 of 67

(-): Sulitdipelajarimanusia 2. Middle Level Language (seperti bahasa C) Bahasasimboldaribahasamesin Contoh: ADD, MUL, SUB, dll Macro instruksi: sekumpulan kode dalam bahasa assembly (+): Eksekusicepat, masih dapat dipelajari daripada bahasa mesin, file kecil

(-): Tetap sulit dipelajari, program sangat panjang 3. High Level Language (seperti Pascal, FoxBase dan Basic) The 3rd Generation Programming Language Lebih dekat dengan bahasa manusia Memberi banyak fasilitas kemudahan dalam pembuatan program, mis.: variabel, tipe

data, konstanta, struktur kontrol, loop, fungsi, prosedur, dll. Contoh: Pascal, Basic, C++, Java (+): Mudah dipelajari, mendekati permasalahan yang akan dipecahkan, kode program

pendek (-): Eksekusi lambat

4. Object Oriented Language (Visual FoxPro, Visual Basic, Visual dBase, Delphi, Visual C) The 4th Generation Programming Language Digunakan langsung untuk memecahkan suatu masalah tertentu Contoh: SQL atau MySQL untuk database, Visual Foxpro, Visual Basic, Delphi, dll (+): Object Oriented

(-): Eksekusi Cepat

C. ALGORITMA PEMROGRAMAN

Orang yang telah terbiasa “bergaul” dengan komputer menggunakan satu bahasa

pemrograman tertentu (tingkat mahir), biasanya tidak lagi memerlukan kertas coret-coretan untuk membuat suatu program komputer. Namun bagi pemula, pembelajar, atau yang belum mahir, diperlukan kertas coret-coretan tersebut.

Kertas coret-coretan itu akan digunakan untuk menyusun algoritma (langkah-langkah penyelesaian masalah), flowcharting (alur logika perintah, yang merupakan aplikasi dari algoritma), maupun menuliskan perintah sesuai dengan kaidah dari bahasa pemrograman yang akan digunakannya.

Sewaktu menyusun algoritma, kita tidak perlu tahu (atau tidak perlu menyesuaikan dengan) bahasa pemrograman yang nanti akan kita gunakan. Hal utama yang kita pikirkan adalah kaidah (hirarki) dari komputer itu sendiri, yaitu input-proses-output.

Input adalah data yang harus ada (sudah ada/ sudah tersedia), yang dapat diproses dengan aturan-aturan tertentu untuk menghasilkan output seperti yang dikehendaki. Data yang ada harus logis (masuk akal) bahwa “ia” dapat diproses untuk menghasilkan output.

sewaktu menyusun algoritma walau kita tidak perlu tahu bahasa pemrograman apa yang akan digunakan kelak, namun, untuk penulisan algoritma yang lebih efisien dan efektif, maka penggunaan sebagian perintah yang ada di dalam bahasa pemrograman perlu dilakukan juga.

Page 4: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 4 of 67

D. DASAR PEMROGRAMAN

Sebagaimana telah dijelaskan diatas, bahwa Program komputer adalah kumpulan instruksi (statements) yang disusun secara logis untuk memecahkan suatu masalah. Instruksi-instruksi yang digunakan disesuaikan dengan jenis bahasa pemrograman yang digunakan.

Ada dua jenis utama dalam bahasa pemrograman, yaitu bahasa pemrograman berbasis bisnis dan berbasis matematis (science). Bahasa pemrograman yang berbasis bisnis biasanya merupakan program aplikasi siap pakai, seperti Visual dBase, Visual Foxpro, Visual Basic, FoxBase, Clipper, COBOL dan sejenisnya yang merupakan program aplikasi basis data. Ada juga Photoshop, Corel Draw, dan sejenisnya yang merupakan program aplikasi untuk pengolaman gambar (image processing) atau multimedia. Sedangkan yang berbasis science seperti Pascal, C, Fortran, Mathlab, dan sejenisnya.

Program yang baik memiliki kriteria, antara lain: 1. menghasilkan keluaran (output) yang sesuai dan benar. 2. memiliki kompleksitas algoritma yang minimal. 3. memiliki kecocokan dengan peruntukan bahasa programnya. 4. memiliki batas akhir penyelesaian.

Dalam membuat program seorang programmer menuliskan sebuah program dalam satu rangkaian penuh, tapi ada yang membagi-bagi programnya menjadi program utama (main program) dan sub-sub program (subroutine atau procedure). Contoh skema program utama dan sub-sub programnya dapat digambarkan sebagai berikut:

*--- Set Environtment Mis. : Set Talk Off Set Status Off ... *--- Cleaning Memory Clear All Close All ... *--- Set Variable Public PUBLIC oFormSort As Form PUBLIC nMaxRec ... *--- Define Class WITH _Screen

.AddObject("Judul","myJudul") && label Judul 1

.AddObject("TxtNama","myTxtNama") … .Show

ENDWITH Start() && aktifkan prosedur Start()

Page 5: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 5 of 67

SetField(.F.) && aktifkan prosedur SetField() TampilkanData(.T.) && aktifkan prosedur TampilkanData() READ EVENTS && proses semua event RETURN && selesai DEFINE CLASS myJudul AS Label && sebagai Title judul

Top = 12 && posisi atas Left = 11 && posisi kiri Visible = .T. && tampil dilayar monitor ...

ENDDEFINE ... *--- Define Procedure PROCEDURE SetButton PARAMETERS xPar && menerima variabel kiriman * mengatur button dalam form _SCREEN WITH _Screen

.cmdFirst.Enabled = xPar && button ON/OFF

.cmdPrev.Enabled = xPar && button ON/OFF ...

IF xPar = .T. .cmdAdd.Caption = "ADD" && isi button .cmdEdit.Caption = "EDIT" && isi button

... ENDIF

ENDWITH ENDPROC

Contoh skema program utama dan sub-sub programnya

Penulisan program yang terstruktur dan menggunakan sub-sub program tentunya dimaksudkan agar ketika terjadi kesalahan proses atau penulisan akan lebih mudah menelusurinya (terutama untuk program yang besar atau memiliki banyak fungsi).

Page 6: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 6 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 2 : Elemen Dasar Pemrograman

Materi Kuliah : Algoritma dan Pemograman III

Elemen dasar Pemograman The 4th Generation Programming Language (Object Oriented Language) terdiri dari Tipe Data (Type Data), Operator, Fungsi/Procedure dan perintah.

A. TIPE DATA

Dalam membuat program tidak terlepas dari rumus dan formula yanng berupa ekspresi. Dalam Visual Foxpro ekspresi atau rumus tidak boleh jenis data (type data) bercampur. Berikut Tipe-tipe data yang tersedia dalam Bahasa Pemrograman yang umum adalah karakter, karakter biner, numerik dan bilangan pecahan, bilangan bulat, bilangan pecahan ganda, bilangan uang, tanggal, tanggal plus jam, logika (L) dan memo (M).

1. Tipe Karakter Tipe karakter adalah tipe data string berupa deretan karakter alfabet, dari A sampai Z, dan angka 0 – 9 yang dingggap karakter. Tipe karakter dibuat menggunakan (diapit) tanda kutip tunggal, kutip ganda atau tanda siku. Contoh : ‘STT Ibnu Sina’ “Program Studi Teknik Informatika” [Materi Kuliah Algoritma dan Pemrograman III]

2. Tipe karakter Biner Tipe karakter biner seperti tipe data karakter biasa, tetapi bersifat permanen.

3. Tipe Numerik dan Bilangan Pecahan Tipe numerik (float) adalah tipe angka atau angka pecahan yang mempunyai jangkauan dari -0.999999999E+19 sampai dengan 0.999999999E+20.

4. Tipe Bilangan Bulat Tipe bilangan bulat adalah tipe data angka yang mempunyai jangkauan antara angka dari -2147483647 sampai dengan 2147483646.

5. Tipe Bilangan Pecahan Ganda Tipe bilangan pecahan ganda (lebih besar dari tipe float) adalah tipe angka atau angka pecahan yang mempunyai jangkauan +/-4.94065645841247E-324 sampai +/-8.9884656743115E307.

6. Tipe Bilangan Uang Tipe bilangan uang adalah tipe data untuk bentuk data berupa uang yang mempunyai jangkauan -922337203685477.5808 sampai dengan 922337203685477.5807. Untuk menyatakan bilangan bentuk uang kita harus menggunakan simbol $ (bentuk default).

7. Tipe Tanggal Tipe tanggal adalah tipe data untuk bentuk data tanggal (date). Format defaultnya adalah bentuk tanggal US, dengan format mm/dd/yy (jika SET CENTURY OFF). Untuk memudahkan kita membentuk format tanggal tertentu, perhatikan tabel dibawah ini :

Page 7: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 7 of 67

Pengaturan Format saat SET CENTURY OFF

AMERICAN mm/dd/yy ANSI yy.mm.dd BRITISH/FRENCH dd/mm/yy GERMAN dd.mm.yy ITALIAN dd-mm-yy JAPAN / TAIWAN yy/mm/dd USA mm-dd-yy MDY mm/dd/yy DMY dd/mm/yy YMD yy/mm/dd

Tabel 2.1 Format Tanggal

8. Tipe Logika (L) Tipe logika (L) adalah tipe data untuk bentuk logika TRUE (benar), dapat digunakan simbol T,t,Y atau FALSE (salah) dapat digunakan simbol F,f,N,n.

9. Tipe Memo Tipe memo adalah tipe data untuk digunakan sebagai karakter panjang, dan hanya berlaku untuk field bukan variabel. Memo berukuran tidak tetap, seperti karakter dan disimpan dalam file .FPT.

10. Tipe Umum (G) Tipe data umum biasa dapat dipakai untuk menyimpan data OLE (Object Linking Embedded), seperti spreadsheet, grafik, suara yang dibuat dari aplikasi lain.

B. OPERATOR

Operator adalah simbol yang dipakai untuk operasi tertentu, biasanya dipakai dalam kpresi atau rumus tertentu. Contoh simbol – simbol operator seperti pada tabel berikut :

Operator Kegunaannya Untuk tipe data = Pengujian kesamaan Semua tipe + Penjumlahan Numeric, Character, Date,

DateTime ! atau <> atau # Negasi (kebalikan) Logical *, / Perkalian/Pembagian Numeric ^ Perpangkat Numerik

Catatan : Dalam suatu ekspresi variabel harus memiliki tipe data yang sama, jika tidak sama harus dikonversikan dahulu tipe datanya.

C. FUNGSI/ PROCEDURE

Fungsi atau procedure adalah kumpulan instruksi tertentu untuk tujuan tertentu yang diberi nama, sehingga jika ingin dipakai hanya menyebutkan nama fungsinya saja.

Procedure berguna untuk mengumpulkan statement‐statement yang dapat dijalankan menjadi satu dalam suatu blok dan untuk menjalankannya kembali hanya dengan menuliskan

Page 8: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 8 of 67

nama procedure yang menampungnya. Selain itu procedure juga banyak dipakai untuk menampung baris‐baris perintah yang sering dipakai dalam sebuah program.

Jika dalam bahasa pemrograman dibawah Object Oriented Language seperti didalam High Level Language kita memandang program sebagai serangkaian instruksi yang disusun daiam bentuk procedure/fungsi, maka dengan pembahasan kita yang menggunakan Object Oriented Language program kita harus memandang program sebagai serangkaian instruksi yang tersimpan dalam sekumpulan objek, dimana masing-masing objek memiliki data dan procedure (fungsi tersendiri).

Data daiam objek disebut dengan Propertis, sedangkan Procedure / Fungsi dalam objek disebut Method.

D. PERINTAH DASAR PEMOGRAMAN

SET DEFAULT TO <path-drive>

Digunakan untuk mengaktifkan/merubah drive kerja.

Contoh :

SET DEFAULT TO C:\STT\TF

CLOSE ALL

Digunakan untuk menutup semua jendela yang aktif.

QUIT

Perintah untuk keluar dari program

Page 9: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 9 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 3 : Logika Percabangan

Materi Kuliah : Algoritma dan Pemograman III

A. PROSES PERCABANGAN BERSYARAT

Dari pertemuan sebelumnya, program yang kita buat adalah program yang bersifat sequence/terurut Artinya proses dimulai dari baris instruksi pertama dan berlanjut terus sampai instruksi terakhir secara terurut. Seandainya sebuah instruksi perlu meloncat atau mengerjakan sebuah instruksi dengan suatu syarat tertentu, maka diperlukan suatu perintah pengulangan dan perintah percabangan.

B. STRUKTUR PERCABANGAN

Percabangan kondisional memungkinkan kita memeriksa suatu kondisi, kemudian berdasarkan hasil pemeriksaan tersebut membentuk operasi berbeda. Terdapat dua perintah di Visual Foxpro yang dipakai untuk membuat percabangan kondisional.

1. Perintah Logika IF

Perintah ini mengeksekusi secara kondisional sekumpulan perintah berdasarkan nilai ekspresi logika. Secara umum, perintah percabangan bersyarat yang biasa digunakan antara lain :

• IF … ENDIF • IF … ELSE … ENDIF

a. Perintah IF … ENDIF Sintak perintah ini adalah : IF <kondisi> ……………………… ……………………… Bagian program yang dijalankan bila ……………………… kodisi terpenuhi/benar ENDIF

b. Perintah IF … ELSE ….. ENDIF IF

<Bagian program yang akan dijalankan bila kondisi benar> ELSE

<Bagian program yang akan dijalankan bila kondisi salah> ENDIF

Page 10: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 10 of 67

2. Perintah DO CASE … ENDCASE

Perintah ini mengeksekusi sejumlah perintah pertama yang ekspresi kondisinya bernilai

True (.T). Sintak perintah ini adalah :

DO CASE

CASE <expresi-1>

<Bagian program yang akan dijalankan bila kondisi-1 benar>

CASE <expresi-2>

<Bagian program yang akan dijalankan bila kondisi-2 benar>

CASE <expresi-n>

<Bagian program yang akan dijalankan bila kondisi-n benar>

OTHERWISE

<Bagian program yang akan dijalankan bila semua kondisi salah>

ENDCASE

Page 11: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 11 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 4 : Logika Pengulangan / looping

Materi Kuliah : Algoritma dan Pemograman III

A. PROSES PENGULANGAN

Perulangan memungkinkan kita mengeksekusi satu atau lebih baris kode sebanyak yang

kita kehendaki. Terdapat tiga perintah di Visual Foxpro yang dipakai untuk perulangan, yaitu :

1. Perintah DO WHILE – ENDDO

Perintah ini mengeksekusi perintah-perintah yang ada didalam loop kondisional. Perulangan akan dilakukan terus menerus selama kondisi tersebut terpenuhi (.T. atau Benar).

Sintak dari perintah pengulangan tersebut adalah :

DO WHILE

…………………….

……………………. Bagian program yang akan diulang

…………………….

ENDDO

Pengulangan tersebut akan dilakukan bila kondisi benar. Pengulangan dengan kondisi ini dapat pula menggunakan kondisi .T., yaitu :

DO WHILE .T.

…………………….

……………………. Bagian program yang akan diulang

…………………….

[Loop] [Exit]

ENDDO

Contoh :

x=1

DO WHILE x <= 20

? x x=x+1

ENDDO

Page 12: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 12 of 67

2. Pengulangan EOF() dan BOF() Dalam Proses Berulang

Proses pengulangan dapat dilakukan dalam memproses record-record dalam suatu tabel satu persatu hingga habis. Untuk membatasi pengulangan biasa digunakan fungsi EOF() (End Of File) dan BOF() (Begin Of File). Fungsi tersebut akan memberikan fungsi nilai logika .T. bila pointer telah berada diakhir file.

Bentuk pengulangan untuk memproses file data sampai habis :

DO WHILE.NOT.EOF()

…………………….

……………………. Bagian program yang akan diulang

…………………….

ENDDO

3. Perintah FOR . . . ENDFOR

Perulangan ini akan mengeksekusi perintah-perintah sebanyak yang kita tentukan. Nilai yang kita tentukan merupakan nilai tetap/konstanta.

Sintak dari perintah pengulangan tersebut adalah :

FOR <var>=<nilai_awal> TO <nilai_akhir>

…………………….

……………………. Bagian program yang akan diulang

…………………….

ENDFOR

Contoh :

FOR v_angka = 1 TO 10

? v_angka

ENDFOR

4. Perintah SCAN . . . ENDSCAN

Perintah ini memindahkan pointer record melewati tabel yang sedang dipilih dan mengeksekusi blok perintah setiap kali record memenuhi syarat kondisi yang ditentukan.

Sintak dari perintah pengulangan tersebut adalah :

Page 13: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 13 of 67

SCAN [FOR <kondisi1>] [WHILE <kondisi2>]

…………………….

……………………. Bagian program yang akan diulang

…………………….

[loop]

[Exit] ENDSCAN

Contoh :

SCAN FOR kota = “Jakarta STI&K”

? nama, jurusan

ENDSCAN

Page 14: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 14 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 5 : Function, Message, Properties dan Event

Materi Kuliah : Algoritma dan Pemograman III

A. FUNCTION/ FUNGSI

Dalam Visual Foxpro menyediakan beberapa fungsi yang biasa dipakai dalam pemograman. Fungsi tersebut antara lain fungsi konversi, fungsi string, fungsi tanggal dan waktu dll.

1. Fungsi Konversi

Fungsi ini berguna untuk mengubah elemen data dari suatu jenis ke jenis yang lainnya. Fungsi tersebut antara lain :

o VAL (string alphanumerik) Untuk mengubah string bilangan ke nilai numerik

o DTOC (date) Untuk merubah isi field date(tanggal) menjadi karakter

o CTOD (string alphanumerik) Untuk merubah string alphanumerik menjadi bentuk tanggal.

o TIME() Menampilkan waktu yang ditunjukkan sistem komputer pada saat sekarang.

o DATE() Menampilkan tanggal sekarang

o CDOW(date) Menunjukkan nama hari yang ditunjukkan date.

o CMONTH(date) Menunjukkan nama bulan yang ditunjukkan date.

o DOW(date) Menunjukkan nama hari dalam seminggu. 1= Minggu, 2=Senin, 3=Selasa, 4=Rabu, 5=Kamis, 6=Jum’at, 7=Sabtu

2. Fungsi String

o UPPER<alphanumerik> : Merubah teks/huruf menjadi huruf kapital. o LOWER<alphanumerik> : Merubah teks/huruf menjadi huruf kecil. o TRIM<alphanumerik> : Untuk menghapus/memotong spasi. o LTRIM<aplanumerik> : Untuk menghapus spasi dari sebelah kiri. o RTRIM<alphanumerik> : untuk menghapus spasi dari sebelah kanan. o SUBSTR<alphanumerik> : untuk mengambil karakter/kata dari suatu kalimat/kata. o LEFT<alpanumerik> : untuk mengambil karakter dari kiri. o RIGHT<alphanumerik> : untuk mengambil karakter dari kanan. o LEN<alphanumerik>: untuk menghitung jumlah karakter. o ASC<alphanumerik>: untuk menghasilkan nilai numerik dari karakter ASCII

Page 15: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 15 of 67

B. KOTAK DIALOG / MESSAGEBOX

Kotak dialog digunakan untuk memberitahukan suatu informasi kepada user/pemakai, misalnya menampilkan suatu pesan kesalahan. Selain itu, kotak dialog messagebox juga digunakan untuk melakukan konfirmasi terhadap pemakai, misalnya konfirmasi YES dan NO. Sintak Mesagebox :

Messagebox(“pesan”,<tipe_kotak_dialog>,<judul>) Argument kedua dan ketiga dapat juga tidak diikut sertakan. Contoh penggunaannya :

Messagebox(“Yakin akan menutup program ini?”,4+32+”Konfirmasi”)

Atau Messagebox(“Data yang dimasukkan sudah ada !!!”)

Ini layout untuk pesan konfirmasi “Yes” dan “No”.

Tabel Nilai untuk jenis Kotak dialog :

Nilai Tipe Kotak Tombol yang tersedia/tampil 0 Ok

1 Ok, Cancel

2 Abort, Retry, Ignore

3 Yes, No, Cancel

4 Yes, No

5 Retry, Cancel

Tabel Icon yang akan ditampilkan pada Kotak Dialog :

Nilai Icon Icon Contoh

16

MESSAGEBOX("Hello STT", 64)

32

MESSAGEBOX("Silahkan Dicoba Ulang", 48)

48

MESSAGEBOX("System Error”+Chr(13)+”System akan Dishutdown

Sekarang.",16) 64

IF MESSAGEBOX(" Apakah Program Akan Ditutup??",36)=6

QUIT ENDIF

Page 16: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 16 of 67

C. PENGATURAN PROPERTIES

Obyek Keterangan Name Memberikan nama sebuah obyek Caption Memberikan judul pada sebuah obyek Text Hampir sama dengan caption FontName Menetukan jenis huruf

o Backcolor Menentukan warna latar belakang o Forecolor Menentukan warna text atau huruf o Enabled Mengatur kontrol supaya tidak dapat diakses o Visible Menyembunyikan obyek o Height Menentukan tinggi dari sebuah obyek Width Menentukan lebar dari sebuah obyek

Top Menentukan posisi obyek dari atas Left Menentukan posisi obyek dari kiri Tabindex Menentuka urutan pemfocusan

o Dragmode Mengatur tingkah laku kontrol selama dragand drop o Mousepointer Memungkinkan perubahan bentuk mouse pada saat melewati obyek o Autosize Mengatur agar lebar suatu objek menyesuaikan dengan lebar objek o FontBold Mengatur agar objek di Bold/cetak tebal o BackStyle Mengatur agar objek transparan atau tidak.

D. EVENT OBJECT

Macam-macam Event

o Click Terjadi apabila menekan dan melepaskan tombol kiri mouse pada obyek o DblClick Menekan tombol kiri 2 x pada sebuah obyek o DragDrop Menahan tombok kiri dan menyeret obyek dari satu tempat ke tmpt lain o Activate Terjadi apabila sebuah obyek sedang aktif o DeActiave Kebalikan dari activate o GotFocus Terjadi apabila sebuah obyek satu-satunya menjadi focus o LostFocus Terjadi apabila sebuah obyek kehilangan Focus o Load Terjadi apabila sebuah form dibuka atau dipanggil o UnLoad Terjadi apabila sebuah form ditutup o Init Memberikan nilai awal pada sebuah form o Valid Memberikan validasi terhadap objek o KeyPress Terjadi apabila menerima input tombol dari keyboard o Interactive Change Terjadi apabila sebuah objek terjadi perubahan nilai

Page 17: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 17 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 6 : Komponen Utama Dalam Menyusun Sebuah Aplikasi

Materi Kuliah : Algoritma dan Pemograman III

A. KOMPONEN UTAMA

Dalam menyusun sebuah aplikasi dengan Bahasa pemrograman Visual FoxPro diperlukan komponen-komponen utama, yaitu :

1. Project 2. Database File 3. Startup File 2. Form 3. Report 4. Menu

B. PROJECT

File : nama_file.pjx, nama_file.pjt

Fungsi : Mengorganisasikan semua file yang dignakan untuk membuat aplikasi mnggunakan Bahasa Pemrograman Visual FoxPro sehingga semua file penyusun aplikasi terstruktur dalam hierarki yang jelas. Seperti cntoh dibawah ini nama projectnya adalah STT_Ibsi

Gambar 6.1. Project Manager

Page 18: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 18 of 67

C. DATABASE FILE

Dalam Bahasa Pemrograman Visual FoxPro database terdiri atas 2 jenis, yaitu :

1. Databases

File: nama_file.dbc, nama_file.dct, nama_file.dcx, nama_fil.dbf

Fungsi: Mengorganisasikan semua filr dbf (dbf) yang digunakan untuk aplikasi. Database seakan-akan merupakan root directory dari file-file data (dbf) yang terdapat dalam project.

2. Free Table

File: nama_file.dbf, nama_file.cdx

Fungsi: Menampung record-record yang berisi data dalam sebuah file (dbf). Bagian ini paling sering digunakan untuk memodifikasi database (menambahkan/mengurangi field-field sesuai dengan kebutuhan)

Gambar 6.2. Contoh Struktur Database

Seperti contoh diatas dalam Gambar 6.2, project diatas memiliki file Free Tables (Tek_Inf.dbf) dengan field-field yang dibutuhkan.

Page 19: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 19 of 67

D. STARTUP FILE

File: nama_file.prg, nama_file_file.fxp

Fungsi: file yang dijalankan pertama kali oleh aplikasi berfungsi untuk loading seluruh database file terlibt dalam aplikasi. Seperti contoh dibawah ini, nama file startup programmnya adalah startup_tf_ibsi

Gambar 6.3. Contoh Startup File

E. FORM

File: nama_file.scx, nama_file.sct

Fungsi: Mengelola record-record file dalam artian menambahkan record baru, menampilkan record yang sudah ada, mengedir record yang sudah ada, menghapus record yang sudah ada dan lain sebagainya. Seperti contoh di bawah ini, nama formnya adalah form_tf_ibsi.

Gambar 6.3. Contoh Form

Page 20: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 20 of 67

F. REPORT

File: nama_file.frx, nama_file.frt

Fungsi: Menghasilkan output dari pegolahan data kelayar ataupun untuk mencetak ke printer. Seperti contoh dibawah ini, nama reportnya adalah lap_tf_ibsi.

Gambar 6.4. Contoh Report

G. MENU

File: nama_file.mnx, nama_file.mpr

Fungsi: Mengorganisasikan semua form yang terdapat dalam aplikasi supaya terstruktur dengan baik dan memudahkan pengoperasian oleh user. Seperti contoh dibawah ini, nama menunya adalah menu_tf_ibsi.

Gambar 6.5. Contoh Menu

Page 21: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 21 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 7 : Membuat Project dan Database

Materi Kuliah : Algoritma dan Pemograman III

Dalam program Visual Foxpro sebaiknya kita membuat program diawali dengan membuat sebuah Project, karena seluruh program, form, database, report, view, query dan lain-lainnya terletak dalam project. Hal ini akan memudahkan kita mengorganisasikannya. Dalam project bisa terdapat beberapa database yang bisa saling berhubungan. Sementara itu, dalam database bisa terdapat beberapa tabel yang masing-masing tabel dapat dihubungkan oleh kunci.

A. Project

Project adalah suatu tempat untuk meletakkan data, dokumen, kelas, kode/program, dan lain-lainnya. Untuk membuat project ada 2 cara yaitu :

1. Lewat menu 2. Lewat perintah Visual Foxpro (pada command window)

Membuat Project Lewat Menu

Untuk membuat Project lewat menu, lakukan langkah-langkah berikut ini :

a. Pada menu, pilih File > New b. Kemudian pilih option Project c. Klik New

Gambar 7.1 Membuat Project Lewat Menu

Page 22: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 22 of 67

Membuat Project Perintah

Untuk membuat Project lewat perintah Visual Foxpro, kita dapat mengetikkam perintah pada jedela Command Window. Perintahnya adalah :

Create Project [namaproject]

B. Database

Pengertian database dalam Visual foxpro berbeda dengan pengertian database dalam Generasi ke 4 Bahasa Pemograman yang berarti tabel. Dalam Visual Foxpro, database adalah seuatu jenis file yang extensinya adalah .DBC. Database merupakan kumpulan tabel-tabel. Membuat tabel dalam database, mempunyai beberapa keuntungan, antara lain :

Menentukan jenis kunci primary atau candidate Membuat relasi permanen (Persitant Relation) antar tabel Membuat Caption (judul) field untuk judul Grid Mendefinisikan nama panjang untuk field Menentukan nilai default field Menentukan Input Mask (Format masukkan field) Membuat Tingger Membuat prosedur tersimpan (Stored Procedure) Membuat File View Membuat aturan Level Field dan Level Record Memberikan komentar untuk tabel, field dam database.

Membuat Database

Untuk membuat database dalam project, dapat dilakukan 2 cara yaitu :

a. Membuat Database Lewat Project Manager

Untuk membuat database lewat project manager, lakukan :

Di project manager, pilih halaman Data > Database > New

b. Membuat Database Lewat Perintah Visual Foxpro

Untuk membuat database lewat perintah visual foxpro, kita dapat mengetikkan perintah berikut pada jendela Command Window :

Create Database [namadatabase]

Page 23: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 23 of 67

C. TABEL

Tabel merupakan tempat kita meletakkan record atau data. Nama file perluasan (Extention) file tabel adalah .DBF.

1. Membuat Tabel

Cara membuat tabel ada dua cara, yaitu :

• Lewat Project Manager

Untuk membuat tabel lewat project, langkahnya adalah : Pada Project Manager, pilih Data | Free Table | New

2. Lewat Perintah Menu Visual Foxpro

Untuk membuat tabel lewat perintah visual foxpro, ketikkan perintah berikut pada Command Window :

Create [NamaTable]

Maka dilayar akan Visual Foxpro akan tampil :

Gambar 7.1 Membuat Table

masukkanlah struktur tabel tersebut. Kemudian klik OK.

Page 24: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 24 of 67

Keterangan Structure Designer Dialog :

Nama Kolom Keterangan

Name Menyatakan nama Field

Type Menyatakan type data yang ditampung

Width Menyatakan lebar/panjang untuk data field

Decimal Menyatakan jumlah digit bagian pecahan.

Null Bila muncul tanda checklist, dapat diberikan

3. Lewat Perintah Kode Program

Atau Create Table - SQL Command

CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE] [CODEPAGE = nCodePage] ( FieldName1 FieldType [( nFieldWidth [, nPrecision] )] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]] [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1] [PRIMARY KEY | UNIQUE [COLLATE cCollateSequence]] [REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS] [, FieldName2 ... ] [, PRIMARY KEY eExpression2 TAG TagName2 |, UNIQUE eExpression3 TAG TagName3 [COLLATE cCollateSequence]] [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP] [COLLATE cCollateSequence] REFERENCES TableName3 [TAG TagName5]] [, CHECK lExpression2 [ERROR cMessageText2]] ) | FROM ARRAY ArrayName

Contoh :

CREATE TABLE Customer (MyField i AUTOINC NEXTVALUE 1 STEP 1, name c(40))

Page 25: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 25 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 8 : Type Field dan Operasi Pada Tabel

Materi Kuliah : Algoritma dan Pemograman III

A. PENULISAN FIELD

Penulisan nama field, tidak boleh menggunakan spasi dan tidak menggunakan tanda koma (,), tanda pipe (|) dan tanda seru (!).

Type Field Keterangan

Character (C) Untuk menampung kumpulan karakter huruf, angka dan karakter ASCII yang dapat tercetak, lebar field tipe antara 1 sampai dengan 254 karakter.

Currency Untuk menyimpan nilai mata uang dan berisi hingga 20 digit, termasuk +, -, dan . (tanda decimal)

Float (F) Merupakan tipe data special dari field numeric yang didesain untuk data scientific

Date Untuk menyimpan data tanggal memasukkan dengan format mm/dd/yy.

DateTime Berisi nilai dari tanggal, waktu atau tanggal dan waktu nilai tersebut. Data nilai tersebut disimpan dengan format yy/mm/dd/hh/mm/ss

Double Digunakan untuk melakukan perhitungan dengan nilai yang berisi tanda desimal (float)

Integer Untuk menyimpan bilangan bulat 4-byte, value -2147483647 s/d 2147483647

Logical Untuk menyimpan masukan True (T) atau False (F) Memo Untuk menyimpan sejumlah besar data, field memo dapat berisi tipe

data apa saja.

General Digunakan untuk menyimpan OLE (object Lingking and Embedding).

Character (Binary)

Digunakan untuk menampung banyaknya data karakter . dengan ukuran 1 byte perkarakter s/d 254.

Memo (binary) Digunakan untuk menampung banyaknya data memo dengan perawatan tanpa mengunah kode dengan ukuran 4 byte dalam tabel.

Page 26: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 26 of 67

B. OPERASI PADA TABEL

1. Mengaktifkan/membuka Tabel

Untuk mengaktifkan tabel, maka perintahnya : USE <nama_tabel>

Misalnya kita akan mengaktifkan tabel barang, maka : Use Barang

2. Membuka/Memodifikasi Struktur Tabel

Pada saat tabel telah dibuat, jika terdapat kesalahan dalam pengetikan nama field, tipe data atau lebarnya dll, maka kita perlu memodifikasi struktur tabelnya tetapi harus diaktifkan dulu nama tabelnya. Sintaknya :

USE <nama_tabel> <enter>

MODIFY STRUCTURE <enter>

Menampilkan struktur tabel ke layar

3. Untuk menampilkan struktur tabel yang aktif, maka ketikkan perintah

LIST STRUCTURE

DISPLAY STRUCTURE

4. Mengisi Data Langsung kedalam Tabel

Untuk memasukkan data kedalam tabel, pertama pastikan tabel tersebut sudah aktif, kemudian ketikkan perintah : APPEND <enter>

untuk mengisi data tabel, tetapi data nya diambil dari tabel lain, langkahnya :

Page 27: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 27 of 67

- Aktifkan tabel yang akan diisi :

USE <nama_tabel>

- Kemudian ketikkan perintah.

APPEND FROM <nama_tabel_data> [FOR <kondisi>]

5. Melihat isi Tabel

Untuk melihat hasilnya bahwa data telah ditambahkan/dimasukkan, ketikkan perintah : BROWSE <enter> Maka akan muncul :

6. Mengatur Letak Pointer

Ada beberapa perintah untuk mengatur letak pointer :

a. Menuju record paling atas/awal : GO TOP b. Menuju record paling akhir/bawah : GO BOTTOM c. Menuju record tertentu : GO <no_record>

7. Menghapus data dalam Tabel

Untuk menghapus data pada tabel, menggunakan perintah : DELETE

Dalam penghapusan, ada beberapa cara/teknik yaitu :

a. Menghapus data record ke 2, maka perintahnya :

GO 2

DELETE

b. Menghapus data yang kode barangnya = B0003, maka perintahnya :

DELETE FOR kode_brg=’B000003’

Untuk melihat hasilnya bahwa data telah dihapus, ketikkan perintah Browse Ternyata data belum dihapus, tapi diberi tanda hitam disebelah kirinya. Karena perintah DELETE ini hanya memberi tanda pada data yang akan dihapus. Untuk melakukan penghapusan, maka ketikkan perintah :

PACK <enter>

Page 28: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 28 of 67

Untuk melihat hasilnya bahwa data telah dihapus, ketikkan perintah Browse.

8. Mengedit data tabel

Untuk mengedit/merubah data dalam tabel, kita bisa melakukan pengeditan langsung melalui tabel, atau menggunakan perintah :

EDIT [FIELDS <field1>,<field2>,…] [FOR <kondisi>]

9. Mengganti data dalam Tabel

Untuk mengganti/update/ memasukkan data pada tabel, maka digunakan perintah :

REPLACE … WITH …

Misalnya mengganti nama barang untuk kode barang ‘B001’ menjadi ”Hardisk”, maka perintahnya :

REPLACE nama_brg WITH ‘Hardisk Seagete 80 GB’ FOR kode_brg=’B0000001’

10. Menutup Tabel yang sedang Aktif

Untuk menutup tabel yang sedang aktif, maka ketikkan perintah :

CLOSE DATABASE <enter>

Untuk menutup semua yang sedang aktif, maka ketikkan perintah :

CLOSE ALL <enter>

11. Mengcopy tabel dan mengcopy struktur tabel

Untuk mengcopy tabel, pertama pastikan seluruh tabel telah di tutup/nonaktif. Kemudian ketikkan perintah :

COPY FILE <nama_tabel> TO <nama_tabel_baru> <enter>

Dengan cara ini kita telah mengcopykan struktur dan isi data tabel tersebut. Untuk mengcopykan struktur tabelnya, maka langkahnya :

- Tutup semua tabel yang aktif

CLOSE DATABASE

- Aktifkan tabel yang akan di copy

USE <nama_tabel>

- Kemudian ketikkan perintah :

COPY STRUCTURE TO <nama_tabel_baru>

Page 29: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 29 of 67

C. Bekerja Dengan Multi Table

Dalam database yang kompleks dan besar, penggunaan file tabel data sering dipakai lebih dari satu tabel. Sementara secara standar file tabel hanya bisa digunakan satu buah pada saat yang sama. Untuk menggunakan lebih dari satu tabel pada waktu yang bersamaan digunakan perintah SELECT.

Bentuk dari perintah SELECT ini adalah :

SELECT <daerah-kerja>

Contoh : untuk membuat program yang menggunakan 2 file data GAJI.DBF dengan

PEGAWAI.DBF, kita dapat melakukan perintah dibawah ini :

Select 1

Use Pegawai

Select 2

Use Gaji

atau

Select A

Use Pegawai

Select B

Use Gaji

File-file yang telah dibuka di daerah kerja masing-masing/berbeda dapat dihubungkan satu sama lain dengan menggunakan perintah khusus, diantaranya perintah :

SET RELATION TO

Perintah SET RELATION TO

Perintah ini digunakan untuk menghubungkan / mengaitkan file tabel database aktif dengan file database yang berada di daerah kerja lain, berdasarkan suatu Field kunci tertentu.

Sintaknya :

SET RELATION TO <Field-kunci> INTO <Alias>

2. Catatan :

- Field kunci harus terdapat dalam kedua file tersebut.

- Field kunci yang dikaitkan harus telah di Index berdasarkan Field kunci.

Page 30: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 30 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam

Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 9 : Mengolah Data dengan Form

Materi Kuliah : Algoritma dan Pemograman III

A. PENYIMPANAN DATA

Memasukkan data ke dalam tabel dapat dilakukan dengan beberapa cara, diantarnya dengan langsung memasukkan kedalam tabel browse atau menggunakan Form. Form digunakan untuk mengolah data tabel. Kita dapat menambah, mengedit/merubah, menghapus atau mencari data melalui Form yang telah kita program/rancang dengan cepat dan mudah.

Pemasukkan data pada form kemudian akan disimpan ke dalam database / tabel yang telah ditentukan. Proses penyimpanan tersebut pada saat kita melakukan event pada objek pada form, misalnya pada umumnya pada objek Command button. Sintak perintah untuk penyimpanan yaitu sebagai berikut :

Replace <field_name> With <variable>

Misal Perintah dalam Pemasukkan Data Barang :

Append Blank

Replace kode_brg With Thisform.text1.value

Replace Nm_Brg With Thisform.text2.value

. . .

. . . Atau

Append Blank

Replace Kode_brg with Thisform.text1.value,Nm_Brg With Thisform.text2.value,

. . .

. . .

Catatan :

Perintah Append Blank digunakan apabila kita akan menambahkan data baru kedalam tabel. Append Blank berfungsi menambahkan record kosong pada tabel. Jika penyimpanan tersebut berfungsi untuk menggantikan/replace, maka perintah Append Blank tidak digunakan.

Page 31: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 31 of 67

B. INDEX

File Indeks merupakan file berisi data atau record yang terurut berdasarkan field tertentu. Kegunaan utama file indeks adalah untuk mencari data tertentu berdasarkan field yang diketahui, dan untuk pengurutan di laporan (report).

1. Jenis File Indeks

Dilihat dari jenis indeksnya, file indeks dalam Visual foxpro terdiri dari beberapa jenis :

a. File Indeks Primer (Primary Index)

File indeks primer atau file index utama merupakan file indeks yang tidak memperbolehkan duplikasi data kunci indeks, biasanya dipakai untuk relasi pada tabel primer (tabel satu).

b. File Indeks Kandidat (Candidate Index)

File indeks kandidat merupakan file indeks seperti file indeks primer, tetapi dalam satu tabel dapat memiliki lebih dari satu file indeks kandidat.

c. File Indeks Reguler (Reguler Index)

File indeks reguler merupakan file indeks yang memperbolehkan duplikasi data, biasanya dipakai pada tabel sekunder (tabel banyak).

d. File Indeks Unik (Unique Index)

File indeks unik merupakan file indeks yang tidak sesuai dengan nama. File indeks ini seperti file indeks reguler, tetapi hanya mencatat nilai kunci pertama dalam file indeks.

2. Membuat File Indeks

Untuk membuat file index ada beberapa cara yaitu :

a. Membuat File Indeks Lewat Table Designer

Untuk membuat file indeks lewat Table Designer, yaitu dengan cara berikut. Pada Table Designer, pilih halaman Indexes.

b. Membuat File Indeks Lewat Perintah Visual Foxpro

Membuat file indeks lewat perintah, untuk itu indeks jenis .IDX, sintaknya adalah :

Index On <field_kunci> To <FileIndeks> [Ascending|Descending]

Contoh :

Use Tbl_Mhsw

Index On Npm To MhswIdx

Page 32: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 32 of 67

3. Membuka File Indeks

Dalam Visual foxpro untuk membuka file indeks dapat dilakukan beberapa cara yaitu :

a. Membuka File Indeks Lewat Menu Pada menu, pilih File > Open Pilih File of type (IDX, *.CDX), akan tampil file-file indeks Klik nama file indeks, kemudian klik Ok

b. Membuka File Index Lewat Perintah

Untuk membuka file indeks lewat perintah, bentuk umum perintahnya adalah :

Set Index To <FileIndeksList>

Atau

Use <TableMaster> Index <FileIndeks>

Contoh :

Set Index To MhswIdx

[atau]

Use Tbl_Mhsw Index MhswIdx

4. Memilih File Indeks

Untuk menentukan file indeks yang aktif pada jenis file indeks, gunakan perintah :

Set Order To <indexNumber>

5. Mereindeks Data atau Record

Jika sebuah file indeks sudah tidak sesuai dengan kondisi terbaru, kita dapat mereindeks ulang (reindeks). Ada beberapa cara untuk mereindeks.

a. Mereindeks Data Lewat Table Designer : • Buka tabel, kemudian pilih menu View > Browse • Pilih Table > Rebuild Indexes

b. Mereindeks Data Lewat Perintah Visual Foxpro :

Untuk mereindeks data lewat perintah, gunakan perintah seperti contoh dibawah ini : Use Tbl_Mhsw

Reindex

Page 33: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 33 of 67

C. PENCARIAN DATA

Data yang kita inputan/masukkan terkadang ingin kita lihat kembali untuk mengetahui informasi data tersebut. Misalnya pada data pegawai, kita ingin mengetahui alamat dari pegawai yang mempunyai NIP = “98012”. Cara pertama kita bisa melihatnya langsung ke tabel browse. Tetapi hal tersebut bisa kita lakukan mungkin untuk data yang sedikit, untuk data yang banyak, kita memerlukan waktu yang agak lama untuk pencariannya.

Cara yang cepat yaitu kita membuat Form dan merancang program untuk pencarian data tersebut. Proses pencarian data kita dapat menggunakan perintah :

a. LOCATE <Expresi-Logika> b. SEEK <var>

Misal untuk dalam pencarian data barang : Menggunakan Perintah LOCATE

Locate for kd_brg = Thisform.text1.value

If Found()

*Jika diketemukan

. . .

Else

*Jika tidak diketemukan

. . .

Endif

Menggunakan Perintah SEEK Kode = Thisform.Text1.Value Seek Kode

If Found()

*Jika diketemukan

. . .

Else

*Jika tidak diketemukan

. . .

Endif

Page 34: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 34 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam

Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 10 : Object Grid. Listbox dan Pageframe

Materi Kuliah : Algoritma dan Pemograman III

A. OBJECT GRID

Object Grid merupakan salah satu object dalam pembuatan suatu program aplikasi yang dapat digunakan untuk menampilkan data dari tabel atau juga dapat digunakan dalam pemasukkan data kedalam tabel. Cara pembuatan Object Grid :

1. Aktifkan/klik object Grid pada tollbal Form Controls Æ 2. Kemudian Drag & Drop pada form designer, sehingga tampilannya seperti gambar dibawah

ini:

3. Kemudian aturlah beberapa properties Grid diantaranya:

Properties Function

AllowAddNew Untuk mengaktifkan grid supaya dapat menambah record. [.T. Or .F.]

ColumnCount Menentukan/membuat jumlah kolom yang diperlukan didalam grid.

DeleteMark Untuk menampilkan atau menghilangkan tanda pada saat penghapusan (DELETE) pada Grid. [.T. Or .F.]

GridLine Untuk mengatur line/garis pembatas baris/kolom.

ReadOnly Mengatur agar data didalam Grid hanya dapat dibaca.

RecordMark Untuk menampilkan atau menghilangkan tanda pointer didalam Grid.

RecordSource Menentukan sumber data/tabel yang akan ditampilkan didalam Grid.

RecordSourceType Menentukan jenis pemanggilan sumber data tabel.

Setelah pengaturan Object Grid, kemudian atur juga properties tiap-tiap kolom didalam grid diantaranya Caption Header tiap-tiap column yang ada didalam Grid.

Page 35: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 35 of 67

B. OBJECT LISTBOX

Object ListBox merupakan object yang fungsinya hampir sama dengan object Grid yaitu dapat menampilkan data dari tabel atau menampilkan data yang kita atur sendiri pada properties RowSource dan RowSourceType. Tetapi object ListBox ini tidak dapat berfungsi sebagai input data kedalam tabel seperti halnya object Grid.

Cara pembuatan Object ListBox :

1. Aktifkan/klik Toolbar ListBox pada Toolbar Form Controls Æ 2. Kemudian Drag & Drop Object tersebut pada Form Designer sehingga akan tampil object

ListBox pada Form seperti gambar :

3. Aturlah Propertiesnya.

Properties Function

RowSource Menetukan Sumber Data

RowSourceType Menentukan/mengatur jenis/tipe data tersebiut ditampilkan kedalam object ListBox.

C. OBJECT PAGEFRAME

Object PageFrame merupakan object yang berfungsi untuk membagi tampilan menjadi beberapa frame/bagian. Jadi dalam suatu form dapat dibuat menjadi beberapa page/halaman yang terpisah menggunakan object PageFrame.

Langkah pembuatan PageFrame :

1. Aktifkan/Klik object PageFrame pada Toolbar Form Controls Æ

2. Kemudian Drag & Drop object tersebut pada Form Designer sehingga tampilan object tersebut seperti gambar.

3. Aturlah beberapa propertiesnya.

Properties Function

PageCount Menentukan jumlah Page/halaman yang diperlukan

TabStyle Mengatur bentuk tampilan perataan Tab/frame

Page 36: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 36 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 11 : Membuat Laporan serta Menu dan Kompilasi

Materi Kuliah : Algoritma dan Pemograman III

Sebagian besar konsentrasi dari pengembang aplikasi (programmer) dalam membuat atau mengembangkan sistem atau program adalah pembuatan laporan (report). Tujuan akhir sistem atau program hampir dapat dipastikan adalah laporan (pencetakan) ke kertas. Dalam pembuatan report, pengembang harus membuat report mendekati bentuk laporan manual. Pengaturan printer yang dimilikinya juga membutuhkan waktu yang banyak, untuk itulah programmer harus berkonsentrasi pada laporan.

A. Bentuk Laporan

Untuk memahami cara membuat laporan (report) di Visual Foxpro, kita harus memahami bentuk laporan (layout), yaitu sebagi berikut :

1. Title, merupakan judul laporan, yang akan muncul pada awal laporan. 3. Page Header, Merupakan judul halaman, yang dipakai untuk judul field-field (atribut) pada

laporan.

4. Group Header, merupakan judul group, ditampilkan untuk mengklasifikasi record, berdasarkan group tertentu pada field.

5. Detail, merupakan bagian untuk menampilkan record data yang berulang.

Page 37: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 37 of 67

6. Group Footer, dipakai untuk meletakkan subtotal group record tertentu dan letaknya dibawah.

7. Page Footer, merupakan catatan di bawah halaman, ditampilkan sekali akhir halaman. 8. Summary, merupakan ringkasan yang akan ditampilkan diakhir report.

B. Objek-Objek Pembentuk Laporan

Dalam pembuatan report di Visual Foxpro, kita banyak menggunakan objek-objek pembentuk report. Kelompok objek pada Toolbar Control Report (Report Control Toolbar), seperti gambar dibawah ini :

Icon Name Function

Select Object Digunakan untuk memilih objek/mengaktifkan suatu objek didalam laporan (memindahkan atau menghapus objek).

Label Untuk membuat seperti Judul laporan, informasi/keterangan pada laporan.

Field Untuk menampilkan data dari tabel dan sering diletakkan pada bagian Detail pada laporan.

Line Untuk membuat garis pada desain laporan.

Picture Digunakan untuk menampilkan gambar (bisa berupa logo perusahaan) pada desain laporan.

C. Pembuatan Report Secara Wizard

Sama halnya dalam pembuatan Form, dalam pembuatan Report/laporan juga kita dapat menggunakan fasilitas Wizard. Dengan menggunakan wizard, kita dapat membuat laporan dengan mudah dan cepat dengan cara mengikuti langkah-langkahnya.

Langkah Pembuatan Laporan secara Wizard :

1. Pilih menu File – New – Report – Wizard

Pada kotak dialog Wizard Selection, Pilih :

o One-to-Many Report Wizard untuk membuat laporan yang datanya lebih dari satu tabel. o Report Wizard untuk membuat laporan dari satu tabel.

Page 38: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 38 of 67

2. Step 1, memilih Field yang akan ditampilkan pada laporan. Urutannya : o Pilih tabel yang akan dibuat laporan. o Pilih beberapa/seluruh field yang akan ditampilkan pada laporan.

Untuk memilih Beberapa Field satu Persatu

Untuk Memilih Seluruh Field Tabel

- Klik tombol Next>

3. Step 2, menentukan apakah kita akan melakukan Grouping Record. 4. Step 3, Tentukan Style laporan yang kita ingin inginkan. 5. Step 4, Tentukan bentuk laporan (Column atau Row), jumlah kolom dan posisi kertas. 6. Step 5, Tentukan apakah kita akan melakukan pengurutan data. 7. Step 6, Tentukan Judul untuk laporan tersebut. 9. Kemudian klik FINISH, simpan laporan tersebut.

Menampilkan Field Data pada laporan secara cepat :

1. Pilih Quick Report dari menu Report 2. Pilih nama tabel sumber data 3. Pilih bentuk laporan (Column atau Row)

Page 39: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 39 of 67

D. Memanggil Laporan

Setelah kita rancang/desain laporan sesuai dengan keinginan kita, kita tinggal menampilkan laporan tersebut dan melakukan pencetakan ke media kertas atau printer. Untuk menampilkan hasil desain laporan dari Report Desiger, kita tinggal pilih Print Preview pada menu File untuk melihat dilayar monitor atau pilih Print untuk mencetak ke printer.

Tetapi untuk memanggil laporan tersebut dari sebuah form yang telah kita buat sebelumnya, kita memerlukan perintah untuk menampilkan laporan tersebut.

Perintah Untuk memanggil/menampilkan Laporan : REPORT FORM <nama-file-lap.> PREVIEW Æ Untuk mencetak ke Layar REPORT FORM <nama-file-lap.> TO PRINTER Æ Untuk mencetak ke printer Perintah tersebut kita ketikkan pada Command Button yang sebelumnya kita buat pada

Procedure Click.

E. Membuat Menu

Agar program yang dibuat lebihmudah dipakai, pengembang perlu membuat menu. Menu merupakan salah satu objek Visual Foxpro. Dengan menu, pemakai akhir (end user) hanya memilih menu untuk menjalankan aplikasi tertentu. File menu di Visual Foxpro mempunyai extensi file .MNX dan file memonya .MPR.

Perencanaan menu yang tepat sangat penting untuk meyakinkan bahwa semua fungsi dalam aplikasi yang kita buat akan dimanfaatkan oleh pemakai secara maksimal dan tidah membingungkan. Pada saat merancang menu pertimbangkan pedoman berikut ini :

o Organisasikan sistem menurut tugas yang akan dilakukan user, bukan menurut hirarki program dalam aplikasi.

o Berikan judul yang memiki arti yang jelas dan mudah bagi setiap menu. o Organisasikan item-item menu menurut frekuensi penggunaannya. o Buat garis pemisah diantara kelompok ke kelompok item menu. o Batasi jumlah item dimenu pada saat satu layar komputer o Juka panjangnya melebih panjang layar komputer. o Jika jumlahnya melebihi panjang layar, buatlah submeu untuk menu item yang sesuai o Pilih tombol akses dan shortcut keyboard bagi menu dan item menu o Gunakan kata yang jelas makanya bagi2 item-item menu. o Gunakan kombinasi huruf besar dan huruf kecil pada item menu.

Untuk menyajikan semua fasilitas seperti diatas, misalnya dibuatlah rancangan menu sebagai berikut :

Menu Utama Submenu File Input Data Pegawai

Edit & Hapus Data Pegawai Pencarian Data Pegawai Keluar

Laporan Laporan Pegawai keseluruhan Laporan Pegawai Per Golongan

Info Tentang Program

Page 40: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 40 of 67

1. Membuat Menu

Untuk membuat menu di Visual Foxpro ada beberapa cara yang bisa kita lakukan, yaitu diantaranya :

a. Membuat Menu Lewat Menu Utama Untuk membuat menu lewat menu tama, caranya adalah : Dari menu utama, pilih File > New Pilih File Type nya > Menu Klik New File

b. Membuat Menu Lewat Quick Menu

Untuk membuat menu lewat Quick Menu, langkahnya adalah :

Di Project Manager, pilih tab Other > Menus Klik tombol New Pada kotak dialog New Menu, klik Menu sehingga tampil Menu Designer

Page 41: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 41 of 67

c. Men-generate Menu

Untuk menjalankan menu harus di generate dahulu, sehingga menjadi file berekstensi .MPR. cara men-generate menu sebagai berikut :

Di Project Manager, pilih tab Other > Menus Pilih Menu Pilih Menu > Generate ... > Generate Tentukan nama file menu tersebut.

2. Membuat Menu SDI ( Single-document Interface )

Menu SDI adalah menu yang tampil pada window in Single-Document Interface (SDI). Untuk membuat menu SDI, kita harus menandai bahwa menu tersebut akan digunakan pada form SDI saat kita merancang menu tersebut. Untuk membuat menu SDI, pada saat menu designer tampil :

a. Pilih menu View – General Options b. Aktifkan tanda cek Top-Level Form

Page 42: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 42 of 67

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam Program Studi : Teknik Informatika Lecturer : Firman, S. Kom MODUL 12 : Pratikum : Kode Program

Materi Kuliah : Algoritma dan Pemograman III

Berikut ini listing kode program MyKode:

****************************************************** * Nama Program : MyCode.prg * * Keterangan : menggunakan program aplikasi (CODE) * * menangani 1(satu) tabel MyCode.dbf * * menggunakan perintah reguler tabel * * (USE,APPEND,REPLACE,DELETE,PACK) * * - single user version (exclusive) - * ****************************************************** *--- Set Environtment ---* Set Talk Off Set Status Off Set Status Bar Off Set Sysmenu Off Set Escape On Set Century On Set Exclusive On Set Date Italian *--- bersihkan memori ---* Clear All Close All Close Tables All *--- persiapan variabel public ---* Public oFormSort As Form Public nMaxRec * jumlah record maksimum (disesuaikan kebutuhan) nMaxRec = 1000 *--- persiapan tampilan form _SCREEN ---* With _Screen && form _SCREEN (milik Visual FoxPro) .Top = 0 && posisi atas .Left = 0 && posisi kiri .Width = 700 && lebar form .Height = 600 && tinggi form .AutoCenter = .T. && form di tengah layar monitor .ControlBox = .F. && button controlbox dinon-aktifkan .Closable = .F. && button close dinon-aktifkan .MaxButton = .F. && button max dinon-aktifkan .MinButton = .F. && button min dinon-aktifkan .ShowTips = .T. && tampilkan semua tooltip text .BorderStyle = 2 && border diset fix dialog .Caption = "MyCode - menggunakan perintah native "+; "(USE,APPEND,REPLACE,PACK)" && judul form .BackColor = Rgb(128,128,255) && warna latar form **************************************************** * cara mengisi form _Screen, yaitu: * * 1. menambahkan objek (nama objek,nama definisi), * * kemudian * * 2. mendefinisikan objek bersama atributnya *

Page 43: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 43 of 67

* (DEFINE CLASS) * **************************************************** * tambahkan objek Label .AddObject("Judul1","myJudul1") && label Judul 1 .AddObject("Judul2","myJudul2") && label Judul 2 .AddObject("Waktu", "myWaktu") && timer Waktu Digital .AddObject("Tanggal","myTanggal") && label Tanggal .AddObject("Jam", "myJam") && label Jam Digital .AddObject("Versi", "myVersion") && label Version .AddObject("Npm", "myKode") && label Kode .AddObject("Nama", "myNama") && label Nama .AddObject("JenKel","myJenKel") && label Jenis Kelamin .AddObject("Alamat","myAlamat") && label Alamat .AddObject("Kota", "myKota") && label Kota .AddObject("KodePos","myKodePos") && label Kode Pos * tambahkan objek Label titik-dua .AddObject("Titik01","myTitik01") && label Titik Dua .AddObject("Titik02","myTitik02") && label Titik Dua .AddObject("Titik03","myTitik03") && label Titik Dua .AddObject("Titik04","myTitik04") && label Titik Dua .AddObject("Titik05","myTitik05") && label Titik Dua .AddObject("Titik06","myTitik06") && label Titik Dua * tambahkan objek No.Record - label dan text box .AddObject("NoRecord", "myNoRecord") && label No.Record .AddObject("txtNoRec", "myNoRec") && No.Record .AddObject("txtTotRec","myTotRec") && Total Record * tambahkan objek TextBox .AddObject("txtKode", "myTxtKode") && Kode .AddObject("txtNama", "myTxtNama") && Nama .AddObject("optJenKel", "myOptJenKel") && Jenis Kelamin .AddObject("txtAlamat", "myTxtAlamat") && Alamat .AddObject("txtKota", "myTxtKota") && Kota .AddObject("txtKodePos","myTxtKodePos") && Kode Pos * tambahkan objek Grid .AddObject("myGrid","myGrdGrid") && grid myGrid * tambahkan objek Command Button .AddObject("cmdFirst", "myFirst") && button First .AddObject("cmdPrev", "myPrev") && button Previous .AddObject("cmdNext", "myNext") && button Next .AddObject("cmdLast", "myLast") && button Last .AddObject("cmdAdd", "myAdd") && button Add .AddObject("cmdEdit", "myEdit") && button Edit .AddObject("cmdDelete","myDelete") && button Delete .AddObject("cmdSort", "mySort") && button Sort .AddObject("cmdAbout", "myAbout") && button About .AddObject("cmdClose", "myClose") && button Close * tampilkan form _SCREEN .Show Endwith Start() && aktifkan prosedur Start() SetField(.F.) && aktifkan prosedur SetField() SetButton(.T.) && aktifkan prosedur SetButton() GridRefresh() && aktifkan prosedur GridRefresh() TampilkanData(.T.) && aktifkan prosedur TampilkanData() Read Events && proses semua event Return && selesai *****************************************

Page 44: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 44 of 67

* definisi objek timer, label, textbox, * * optiongroup dan command button * ***************************************** *--- definisi timer myWaktu ---* Define Class myWaktu As Timer Top = 0 && posisi atas Left = 0 && posisi kiri Interval = 1000 && interval 1 detik Procedure Timer * label Jam diisi jam 00:00:00 _Screen.Jam.Caption = Time() Endproc Enddefine *--- definisi label myTanggal ---* Define Class myTanggal As Label Top = 10 && posisi atas Left = 250 && posisi kiri Width = 200 && lebar label Height = 20 && tinggi label Caption = "" && isi label Alignment = 1 && rata kanan FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil Enddefine *--- definisi label myJam ---* Define Class myJam As Label Top = 10 && posisi atas Left = 465 && posisi kiri Width = 50 && lebar textbox Height = 20 && tinggi label Caption = Time() && label diisi jam 00:00:00 Alignment = 1 && rata kanan FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil Enddefine *--- definisi label myNoRecord ---* Define Class myNoRecord As Label Top = 35 && posisi atas Left = 350 && posisi kiri Width = 50 && lebar label Height = 20 && tinggi label Caption = "No.Rec.:" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil Enddefine *--- definisi textbox myNoRec ---* Define Class myNoRec As TextBox Top = 35 && posisi atas Left = 410 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox

Page 45: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 45 of 67

Value = 0 && isi textbox FontName = "Arial" && jenis huruf FontSize = 9 && besar huruf BackColor = _Screen.BackColor && warna dasar DisabledForeColor = Rgb(255,0,0) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif InputMask = "99999" && bentuk masukan Format = "99999" && bentuk tampilan Enabled = .F. && textbox tidak aktif Visible = .T. && textbox tampil Enddefine *--- definisi textbox myTotRec ---* Define Class myTotRec As TextBox Top = 35 && posisi atas Left = 465 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox Value = 0 && isi textbox FontName = "Arial" && jenis huruf FontSize = 9 && besar huruf BackColor = _Screen.BackColor && warna dasar DisabledForeColor = Rgb(255,0,0) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif InputMask = "99999" && bentuk masukan Format = "99999" && bentuk tampilan Enabled = .F. && textbox tidak aktif Visible = .T. && textbox tampil Enddefine *--- 2 judul memberi efek bayangan ---* *--- definisi label myJudul1 ---* Define Class myJudul1 As Label && sebagai bayangan judul Top = 12 && posisi atas Left = 11 && posisi kiri Width = 250 && lebar label Height = 22 && tinggi label Caption = "Data Akademik STT Ibnu Sina" && isi label FontName = "Arial" && jenis huruf FontBold = .T. && huruf tebal FontSize = 12 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf hitam BackStyle = 0 && transparan BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myJudul2 ---* Define Class myJudul2 As Label && sebagai judul (merah) Top = 10 && posisi atas Left = 10 && posisi kiri Width = 250 && lebar label Height = 22 && tinggi label Caption = "Data Akademik STT Ibnu Sina" && isi label FontName = "Arial" && jenis huruf FontBold = .T. && huruf tebal FontSize = 12 && ukuran huruf ForeColor = Rgb(255,0,0) && warna huruf merah BackStyle = 0 && transparan BackColor = _Screen.BackColor && warna dasar

Page 46: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 46 of 67

Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myVersion ---* Define Class myVersion As Label Top = 35 && posisi atas Left = 10 && posisi kiri Width = 300 && lebar label Height = 20 && tinggi label Caption = "Program Studi Teknik Informatika Semester III" && isi label Alignment = 2 && di tengah FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf FontBold = .T. && huruf tebal ForeColor = Rgb(0,0,255) && warna huruf biru BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil Enddefine *--- definisi label myKode ---* Define Class myKode As Label Top = 55 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 1. No NPM" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myNama ---* Define Class myNama As Label Top = 80 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 2. Nama Mhs" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myJenKel ---* Define Class myJenKel As Label Top = 105 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 3. Jenis Kelamin" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myAlamat ---*

Page 47: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 47 of 67

Define Class myAlamat As Label Top = 130 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 4. Alamat" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myKota ---* Define Class myKota As Label Top = 155 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 5. Kota" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label myKodePos ---* Define Class myKodePos As Label Top = 180 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 6. Kode Pos" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik01 ---* Define Class myTitik01 As Label Top = 55 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik02 ---* Define Class myTitik02 As Label Top = 80 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label

Page 48: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 48 of 67

Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik03 ---* Define Class myTitik03 As Label Top = 105 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik04 ---* Define Class myTitik04 As Label Top = 130 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik05 ---* Define Class myTitik05 As Label Top = 155 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor Enddefine *--- definisi label Titik05 ---* Define Class myTitik06 As Label Top = 180 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar

Page 49: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 49 of 67

Visible = .T. && tampil dilayar monitor Enddefine *--- definisi textbox myTxtKode ---* Define Class myTxtKode As TextBox Top = 55 && posisi atas Left = 135 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif MaxLength = 5 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi textbox myTxtNama ---* Define Class myTxtNama As TextBox Top = 80 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi optiongroup myOptJenKel ---* Define Class myOptJenKel As OptionGroup Top = 105 && posisi atas Left = 135 && posisi kiri Width = 200 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif ButtonCount = 2 && 2 pilihan Laki-laki atau Perempuan Enabled = .T. && optiongroup di-aktifkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi textbox myTxtAlamat ---* Define Class myTxtAlamat As TextBox Top = 130 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf

Page 50: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 50 of 67

FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi textbox myTxtKota ---* Define Class myTxtKota As TextBox Top = 155 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi textbox myTxtKodePos ---* Define Class myTxtKodePos As TextBox Top = 180 && posisi atas Left = 135 && posisi kiri Width = 60 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf BackColor = Rgb(255,255,255) && warna dasar DisabledForeColor = Rgb(0,0,255) && warna non-aktif DisabledBackColor = Rgb(224,224,224) && warna non-aktif MaxLength = 5 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor Enddefine *--- definisi grid myGrdGrid ---* Define Class myGrdGrid As Grid Top = 210 && posisi atas Left = 10 && posisi kiri Width = 520 && lebar grid Height = 265 && tinggi grid ColumnCount = 6 && jumlah kolom FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,255) && warna huruf SplitBar = .F. && splitbar di-non-aktifkan * tambahkan prosedur AfterRowColChange Procedure AfterRowColChange * parameter harus ada, tapi tidak digunakan Lparameters nColIndex * aktifkan prosedur TampilkanData()

Page 51: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 51 of 67

TampilkanData(.T.) Endproc Enddefine *--- definisi command button myFirst ---* Define Class myFIRST As CommandButton Top = 500 && posisi atas Left = 10 && posisi kiri Width = 40 && lebar button Height = 25 && tinggi button Caption = "|<" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Record Awal" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button FIRST diklik Select MyCode && aktifkan tabel MyCode.dbf If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("Sorry.....File Kosong!") Else && jika file isi, maka: If Recno()=1 && jika posisi di record awal, maka: * tampilkan pesan TampilkanSorry("Sorry.....Top Of File!") Else && jika posisi tidak di record awal, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("Permulaan...") Endif Endif Endproc Enddefine *--- definisi command button myPrev ---* Define Class myPREV As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdFirst.Left + ; _Screen.cmdFirst.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "<" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Record Sebelumnya" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button NEXT diklik Select MyCode && aktifkan tabel MyCode.dbf If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("Sorry..... File kosong!") Else && jika file isi, maka: If Recno()=1 && jika posisi di record awal, maka: * tampilkan pesan TampilkanSorry("Sorry.....Top of File!") Else * aktifkan prosedur TampilkanRecord() TampilkanRecord("PREV") Endif

Page 52: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 52 of 67

Endif Endproc Enddefine *--- definisi command button myNext ---* Define Class myNEXT As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdPrev.Left + ; _Screen.cmdPrev.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = ">" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Record Berikutnya" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button NEXT diklik Select MyCode && aktifkan tabel MyCode.dbf If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Else && jika file isi, maka: * jika posisi di record akhir, maka: If Recno() = Reccount() * tampilkan pesan TampilkanSorry("SORRY.....end of file!") Else && jika posisi tidak di record akhir, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("NEXT") Endif Endif Endproc Enddefine *--- definisi command button myLast ---* Define Class myLAST As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdNext.Left + ; _Screen.cmdNext.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = ">|" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Record Akhir" && keterangan singkat Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button LAST diklik Select MyCode && aktifkan tabel MyCode.dbf If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Else && jika file isi, maka: * jika posisi di record akhir, maka: If Recno() = Reccount() * tampilkan pesan TampilkanSorry("SORRY.....end of file!") Else && jika posisi tidak di record akhir, maka:

Page 53: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 53 of 67

* aktifkan prosedur TampilkanRecord() TampilkanRecord("LAST") Endif Endif Endproc Enddefine *--- definisi command button myAdd ---* Define Class myADD As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdLast.Left + ; _Screen.cmdLast.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "ADD" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Tambah Data" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button ADD diklik Local nRecPos && variabel lokal Select MyCode && aktifkan tabel MyCode.dbf * periksa isi button If Thisform.cmdAdd.Caption = "ADD" && tambah data * jika jumlah record maksimum, maka: If Reccount() >= nMaxRec * tampilkan pesan TampilkanSorry("SORRY.....maksimum record 1.000!") * posisi kursor di field Kode Thisform.txtKode.SetFocus Else && jika jumlah record belum maksimum, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("ADD") Endif Else && simpan data (SAVE) * jika Kode kosong, maka: If Empty(Thisform.txtKode.Value) * tampilkan pesan TampilkanSorry("SORRY.....No NPM kosong!") * posisi kursor di field Kode Thisform.txtKode.SetFocus Else && jika Kode isi, maka: nRecPos = Recno() && posisi record sekarang * cari Kode yang sama Locate For MyCode.Kode=Thisform.txtKode.Value If Found() && jika Kode sama, maka: * tampilkan pesan TampilkanSorry("SORRY.....No NPM sudah ada!") * posisi kursor di field Kode Thisform.txtKode.SetFocus Go nRecPos && menuju record xRecPos Else && jika Kode tidak sama, maka: Append Blank && tambahkan record kosong * isi dengan data berikut ini: Replace MyCode.Kode With ; ThisForm.txtKode.Value Replace MyCode.Nama With ;

Page 54: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 54 of 67

ThisForm.txtNama.Value If Thisform.optJenKel.Value = 1 Replace MyCode.JenKel With "Laki-laki" Else Replace MyCode.JenKel With "Perempuan" Endif Replace MyCode.Alamat With ; ThisForm.txtAlamat.Value Replace MyCode.Kota With ; ThisForm.txtKota.Value Replace MyCode.KodePos With ; ThisForm.txtKodePos.Value Flush && pastikan data disimpan Go Bottom && menuju record akhir * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") Endif Endif Endif Endproc Enddefine *--- definisi command button myEdit ---* Define Class myEDIT As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdAdd.Left + ; _Screen.cmdAdd.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "EDIT" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Ubah Data" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button EDIT diklik Select MyCode && aktifkan tabel MyCode.dbf If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Else && jika file isi, maka: Do Case && periksa isi (caption) button Case Thisform.cmdEdit.Caption="EDIT" && ubah data * aktifkan prosedur TampilkanRecord() TampilkanRecord("EDIT") Case Thisform.cmdEdit.Caption="SAVE" && simpan data * simpan data berikut ini: Replace MyCode.Nama With ; ThisForm.txtNama.Value If Thisform.optJenKel.Value = 1 Replace MyCode.JenKel With "Laki-laki" Else Replace MyCode.JenKel With "Perempuan" Endif Replace MyCode.Alamat With ; ThisForm.txtAlamat.Value Replace MyCode.Kota With ; ThisForm.txtKota.Value

Page 55: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 55 of 67

Replace MyCode.KodePos With ; ThisForm.txtKodePos.Value Flush && pastikan data disimpan dalam tabel * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") Otherwise && batal (CANCEL) * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") Endcase Endif Endproc Enddefine *--- definisi command button myDelete ---* Define Class myDELETE As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdEdit.Left + ; _Screen.cmdEdit.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "DELETE" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Hapus Data" && keterangan singkat Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button DELETE diklik Local xYesNo, xRecSek && variabel lokal Select MyCode && aktifkan tabel MyCode.dbf xRecSek = Recno() && variabel posisi record sekarang If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Else && jika file isi, maka: * periksa isi button (Caption) If Thisform.cmdDelete.Caption="DELETE" && hapus data * tampilkan pesan untuk memilih YES atau NO If Messagebox("Anda ingin menghapus data ini?",; 4+32+256,"Konfirmasi") = 6 && pilih YES Delete && hapus data Pack && pastikan data terhapus dalam tabel * aktifkan prosedur GridRefresh() GridRefresh() * aktifkan prosedur SetButton() SetButton(.T.) * aktifkan prosedur SetField() SetField(.F.) If Reccount()=0 && jika tabel kosong, maka: * aktifkan prosedur TampilkanData() TampilkanData(.F.) * tampilkan pesan Messagebox("Data Anda sudah dihapus.....!"+; CHR(13)+Chr(13)+"SORRY.....file kosong!",; 0,"Delete") Else * jika posisi record > jumlah record If xRecSek > Reccount()

Page 56: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 56 of 67

Go Bottom && menuju record akhir Else Go xRecSek && menuju record sekarang Endif * aktifkan prosedur TampilkanData() TampilkanData(.T.) * tampilkan pesan Messagebox("Data Anda sudah dihapus.....!",; 0,"Delete") Endif Else * aktif prosedur TampilkanRecord() TampilkanRecord("SAVE") Endif Else * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") Endif Endif Endproc Enddefine *--- definisi command button mySort ---* Define Class mySORT As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdDelete.Left + ; _Screen.cmdDelete.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "SORT" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Urut Data" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button SORT diklik Local nRecPos && variabel lokal Select MyCode && aktifkan tabel MyCode.dbf nRecPos = Recno() && variabel posisi record sekarang If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Else && jika file isi, maka: SortData() && aktifkan prosedur SortData() Go nRecPos && menuju posisi record sekarang * aktifkan prosedur TampilkanRecord() TampilkanRecord("SORT") Endif Endproc Enddefine *--- definisi command button myAbout ---* Define Class myABOUT As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdSort.Left + ; _Screen.cmdSort.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "ABOUT" && isi button

Page 57: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 57 of 67

FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = Rgb(0,0,0) && warna huruf ToolTipText = "Tentang Program" && tips kecil Visible = .T. && tampil di layar monitor Procedure Click && aktif, jika button ABOUT diklik * tampilkan pesan Messagebox("Program ini dimamfaatkan untuk kebutuhan Mahasiswa"+; CHR(13)+"Teknik Informatika Semester III STT Ibnu Sina Batam"+; CHR(13)+"Contoh Coding Pemograman Materi Algoritma dan Pemograman III"+; CHR(13)+Chr(13)+"Semoga bermanfaat.....",0,"About") Endproc Enddefine *--- definisi command button myClose ---* Define Class myCLOSE As CommandButton Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdAbout.Left + ; _Screen.cmdAbout.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "CLOSE" && isi button Cancel = .T. && aktif jika tombol ESC ditekan FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor =Rgb(0,0,0) && warna huruf ToolTipText="Selesai, kembali ke Windows" && tips kecil Visible =.T. && tampil di layar monitor Procedure Click && aktif, jika button CLOSE diklik * tampilkan pesan, pilih YES atau NO If Messagebox("Anda ingin selesai?",4+32,; "Konfirmasi") = 6 && pilihan YES Stop() && aktifkan prosedur Stop() Endif Endproc Enddefine ****************************** * definisi prosedur-prosedur * ****************************** *--- prosedur SetButton ---* Procedure SetButton Parameters xPar && menerima variabel kiriman * mengatur button dalam form _SCREEN With _Screen .cmdFirst.Enabled = xPar && button ON/OFF .cmdPrev.Enabled = xPar && button ON/OFF .cmdNext.Enabled = xPar && button ON/OFF .cmdLast.Enabled = xPar && button ON/OFF .cmdAdd.Enabled = xPar && button ON/OFF .cmdEdit.Enabled = xPar && button ON/OFF .cmdDelete.Enabled = xPar && button ON/OFF .cmdSort.Enabled = xPar && button ON/OFF .cmdAbout.Enabled = xPar && button ON/OFF .cmdClose.Enabled = xPar && button ON/OFF If xPar = .T. .cmdAdd.Caption = "ADD" && isi button .cmdEdit.Caption = "EDIT" && isi button

Page 58: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 58 of 67

.cmdDelete.Caption = "DELETE" && isi button .cmdAdd.ToolTipText = "Tambah Data" && tips .cmdEdit.ToolTipText = "Ubah Data" && tips .cmdDelete.ToolTipText = "Hapus Data" && tips Endif Endwith Endproc *--- prosedur SetField ---* Procedure SetField Parameters xPar && menerima variabel kiriman * mengatur field dalam form _SCREEN With _Screen .txtKode.Enabled = xPar && textbox ON/OFF .txtNama.Enabled = xPar && textbox ON/OFF .optJenKel.Enabled = xPar && textbox ON/OFF .txtAlamat.Enabled = xPar && textbox ON/OFF .txtKota.Enabled = xPar && textbox ON/OFF .txtKodePos.Enabled = xPar && textbox ON/OFF If xPar && jika bernilai TRUE, maka: * warna dasar putih .optJenKel.BackColor = Rgb(255,255,255) .optJenKel.Option1.BackColor = Rgb(255,255,255) .optJenKel.Option2.BackColor = Rgb(255,255,255) Else && jika bernilai FALSE, maka: * warna dasar abu-abu .optJenKel.BackColor = Rgb(224,224,224) .optJenKel.Option1.BackColor = Rgb(224,224,224) .optJenKel.Option2.BackColor = Rgb(224,224,224) Endif .myGrid.Enabled = Not xPar && grid ON/OFF Endwith Endproc *--- prosedur TampilkanData ---* Procedure TampilkanData Parameters xPar && menerima variabel kiriman If xPar && jika bernilai TRUE, maka: * tampilkan data berikut With _Screen .txtNoRec.Value = Recno() && NoRec .txtTotRec.Value = Reccount() && TotRec .txtKode.Value = MyCode.Kode && Kode .txtNama.Value = MyCode.Nama && Nama If MyCode.JenKel = "Laki-laki" .optJenKel.Value = 1 && JenKel Else .optJenKel.Value = 2 && JenKel Endif .txtAlamat.Value = MyCode.Alamat && Alamat .txtKota.Value = MyCode.Kota && Kota .txtKodePos.Value = MyCode.KodePos && KodePos .myGrid.Refresh Endwith Else && jika bernilai FALSE, maka * tampilkan data berikut With _Screen .txtNoRec.Value = Reccount()+1 && NoRec .txtTotRec.Value = Reccount() && TotRec

Page 59: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 59 of 67

.txtKode.Value = "" && isi textbox Kode .txtNama.Value = "" && isi textbox Nama .optJenKel.Value = 1 && isi textbox JenKel .txtAlamat.Value = "" && isi textbox Alamat .txtKota.Value = "" && isi textbox Kota .txtKodePos.Value = "" && isi textbox KodePos Endwith Endif Endproc *--- prosedur TampilkanRecord ---* Procedure TampilkanRecord Parameters cPar && menerima variabel kiriman Do Case Case cPar = "FIRST" Go Top && menuju record awal Case cPar = "PREV" Skip -1 && menuju record sebelumnya Case cPar = "NEXT" Skip && menuju record berikutnya Case cPar = "LAST" Go Bottom && menuju record akhir Case cPar = "ADD" SetButton(.F.) && aktifkan prosedur SetButton() SetField(.T.) && aktifkan prosedur SetField() With _Screen .cmdAdd.Enabled = .T. && aktifkan button cmdADD .cmdEdit.Enabled = .T. && aktifkan button cmdEDIT .cmdAdd.Caption = "SAVE" && isi button cmdADD .cmdEdit.Caption = "CANCEL" && isi button cmdEDIT .cmdAdd.ToolTipText = "Simpan Data" && tip kecil .cmdEdit.ToolTipText = "Batal" && tip kecil .txtKode.SetFocus && kursor di field txtKode Endwith Case cPar = "EDIT" SetButton(.F.) && aktifkan prosedur SetButton() SetField(.T.) && aktifkan prosedur SetField() With _Screen .txtKode.Enabled = .F. && textbox Kode nonaktif .cmdEdit.Enabled = .T. && button cmdEDIT aktif .cmdDelete.Enabled = .T. && button cmdDELETEaktif .cmdEdit.Caption = "SAVE" && button cmdEDIT .cmdDelete.Caption = "CANCEL" && button cmdDELETE .cmdEdit.ToolTipText ="Simpan Data" && tip kecil .cmdDelete.ToolTipText="Batal" && tip kecil .txtNama.SetFocus && kursor di field txtNama Endwith Case cPar = "SAVE" SetButton(.T.) && aktifkan prosedur SetButton() SetField(.F.) && aktifkan prosedur SetField() Otherwise SetButton(.T.) && aktifkan prosedur SetButton() SetField(.F.) && aktifkan prosedur SetField() Endcase If cPar = "ADD" TampilkanData(.F.) && aktif prosedur TampilkanData() Else TampilkanData(.T.) && aktif prosedur TampilkanData()

Page 60: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 60 of 67

Endif Endproc *--- prosedur TampilkanSorry ---* Procedure TampilkanSorry Parameters cPar && menerima variabel kiriman Messagebox(cPar,0,"SORRY") && tampilkan pesan SORRY Endproc *--- prosedur GridRefresh ---* Procedure GridRefresh * me-refresh grid myGrid With _Screen.myGrid .HighlightStyle = 2 && warna dasar dipilih .HighlightForeColor = Rgb(0,0,255) && huruf .HighlightBackColor = Rgb(224,224,224) && dasar .SelectedItemForeColor = Rgb(0,0,0) && huruf .SelectedItemBackColor = Rgb(128,255,128) && dasar .RecordSource = "MyCode" && tabel MyCode .RecordSourceType = 1 && tipe alias .AllowAutoColumnFit = 2 && kolom tetap .AllowHeaderSizing = .F. && header tidak bisa diubah .DeleteMark = .F. && tidak bisa dihapus .ReadOnly = .T. && tidak bisa diubah .Visible = .T. && tampilkan di layar monitor * lebar masing-masing kolom .Column1.Width = 50 && lebar kolom1 .Column2.Width = 200 && lebar kolom2 .Column3.Width = 100 && lebar kolom3 .Column4.Width = 200 && lebar kolom4 .Column5.Width = 200 && lebar kolom5 .Column6.Width = 60 && lebar kolom6 * judul masing-masing kolom .Column1.Header1.Caption = "No NPM" && judul kolom1 .Column2.Header1.Caption = "Nama Mahasiswa" && judul kolom2 .Column3.Header1.Caption = "Jen.Kel." && judul kolom3 .Column4.Header1.Caption = "Alamat" && judul kolom4 .Column5.Header1.Caption = "Kota" && judul kolom5 .Column6.Header1.Caption = "Kode POS" && judul kolom6 Endwith * me-refresh optiongroup optJenKel With _Screen.optJenKel .ForeColor = Rgb(0,0,255) && warna huruf .BackColor = Rgb(224,224,224) && warna dasar * mengatur optiongroup.Option1 .Option1.Top = 2 && posisi atas .Option1.Left = 10 && posisi kiri .Option1.Width = 80 && lebar option1 .Option1.Height = 22 && tinggi option1 .Option1.ForeColor = Rgb(0,0,0) && warna non-aktif .Option1.BackColor = Rgb(224,224,224) && non-aktif .Option1.Caption = "Laki-laki" && isi option1 * mengatur optiongroup.Option2 .Option2.Top = 2 && posisi atas .Option2.Left = 100 && posisi kiri .Option2.Width = 80 && lebar option1 .Option2.Height = 22 && tinggi option1 .Option2.ForeColor = Rgb(0,0,0) && warna non-aktif .Option2.BackColor = Rgb(224,224,224) && non-aktif

Page 61: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 61 of 67

.Option2.Caption = "Perempuan" && isi option1 Endwith Endproc *--- prosedur Start ---* Procedure Start * isi label Tanggal _Screen.Tanggal.Caption = TampilkanTanggal() Close Tables All && tutup semua tabel * periksa, apakah file MyCode.dbf sudah ada * jika file MyCode.dbf tidak ada, maka: If Not File("MyCode.dbf") * buat file baru MyCode.dbf Create Table MyCode.Dbf ( ; Kode C(5), ; Nama C(50), ; JenKel C(9), ; Alamat C(50), ; Kota C(50), ; KodePos C(5)) Endif Close Tables All && tutup semua tabel * aktifkan tabel MyCode Use MyCode Alias MyCode Exclusive In 0 GridRefresh() && aktifkan prosedur GridRefresh() If Reccount() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") Endif Endproc *--- prosedur Stop ---* Procedure Stop Select MyCode && aktifkan tabel MyCode.dbf * jika jumlah record melebihi maksimum, maka: If Reccount() > nMaxRec Go (nMaxRec+1) && menuju mrecord maksimum + 1 * hapus beberapa record berikutnya Delete Next Reccount() * pastikan record benar-benar dihapus dari tabel Pack Endif Quit && selesai, kembali ke Windows Endproc *--- prosedur SortData ---* Procedure SortData * membuat form myFormSort oFormSort = Createobject("myFormSort") oFormSort.Show && tampilkan Read Events && aktifkan semua event Return && selesai Endproc **************************** * definisi form myFormSort * **************************** Define Class myFormSort As Form Top = 10 && posisi atas Left = 10 && posisi kiri Width = 300 && lebar form

Page 62: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 62 of 67

Height = 160 && tinggi form Caption = "Urut Data" && judul form BorderStyle = 2 && fix dialog BackColor = _Screen.BackColor && warna dasar AutoCenter = .T. && posisi di tengah layar monitor ControlBox = .F. && control box di-non-aktifkan Movable = .T. && bisa dipindahkan MinButton = .F. && button minimum di-non-aktifkan MaxButton = .F. && button maksimum di-non-aktifkan Closable = .F. && button close di-non-aktifkan ShowTips = .T. && tip tool text di-aktifkan WindowType = 1 && window modal, lainnya non-aktif **************************************************** * berikut ini cara mengisi form myFormSort, yaitu: * * langsung menambahkan objek bersama atributnya * * ke dalam form * **************************************************** *--- tambahkan label lblMyJudul ---* Add Object lblMyJudul As Label With ; Name = "lblJudul", ; Caption = "Urut berdasarkan:", ; BackColor = _Screen.BackColor, ; FontBold = .T., ; Top = 10, ; Left = 10, ; Width = 120, ; Height = 22, ; Visible = .T. *--- tambahkan optiongroup optMyOption ---* Add Object optMyOption As OptionGroup With ; Name = "optOption", ; FontName = "Arial", ; FontSize = 9, ; BackColor = _Screen.BackColor, ; ButtonCount = 4, ; Left = 10, ; Top = 35, ; Width = 130, ; Height = 110, ; Enabled = .T., ; Visible = .T. *--- tambahkan optiongroup optMySort ---* Add Object optMySort As OptionGroup With ; Name = "optSort", ; FontName = "Arial", ; FontSize = 9, ; BackColor = _Screen.BackColor, ; ButtonCount = 2, ; Left = 150, ; Top = 35, ; Width = 120, ; Height = 60, ; Enabled = .T., ; Visible = .T. *--- tambahkan button mySort ---* Add Object mySORT As CommandButton With ; Name = "cmdSortOK", ;

Page 63: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 63 of 67

Caption = "OK", ; Top = 120, ; Left = 150, ; Width = 60, ; Height = 25, ; ToolTipText = "Proses dilanjutkan", ; Visible = .T. *--- tambahkan button myClose ---* Add Object myCLOSE As CommandButton With ; Name = "cmdSortClose", ; Caption = "Close", ; Cancel = .T., ; Top = 120, ; Left = 210, ; Width = 60, ; Height = 25, ; ToolTipText = "Proses dibatalkan", ; Visible = .T. *--- prosedur Init ---* Procedure Init * mengatur optiongroup optOption With Thisform.optOption .Option1.Name = "optKODE" && nama option1 .Option2.Name = "optNAMA" && nama option1 .Option3.Name = "optJKEL" && nama option2 .Option4.Name = "optKOTA" && nama option3 * mengatur optKODE .optKODE.Caption = "No NPM" && isi optKODE .optKODE.ForeColor = Rgb(0,0,255) && warna biru .optKODE.FontBold = .T. && huruf tebal .optKODE.BackColor = _Screen.BackColor && dasar .optKODE.Top = 5 && posisi atas .optKODE.Left = 5 && posisi kiri .optKODE.Width = 100 && lebar optKODE .optKODE.Height = 20 && tinggi optKODE .optKODE.Visible = .T. && tampilkan di monitor * mengatur optNAMA .optNAMA.Caption = "Nama Mhs" && isi optNAMA .optNAMA.ForeColor = Rgb(0,0,255) && warna biru .optNAMA.FontBold = .T. && huruf tebal .optNAMA.BackColor = _Screen.BackColor && dasar .optNAMA.Top = 30 && posisi atas .optNAMA.Left = 5 && posisi kiri .optNAMA.Width = 100 && lebar optNAMA .optNAMA.Height = 20 && tinggi optNAMA .optNAMA.Visible = .T. && tampilkan di monitor * mengatur optJKEL .optJKEL.Caption = "Jenis Kelamin" && optJKEL .optJKEL.ForeColor = Rgb(0,0,255) && warna biru .optJKEL.FontBold = .T. && huruf tebal .optJKEL.BackColor = _Screen.BackColor && dasar .optJKEL.Top = 55 && posisi atas .optJKEL.Left = 5 && posisi kiri .optJKEL.Width = 110 && lebar optJKEL .optJKEL.Height = 20 && tinggi optJKEL .optJKEL.Visible = .T. && tampilkan di monitor * mengatur optKOTA

Page 64: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 64 of 67

.optKOTA.Caption = "KOTA" && isi optKOTA .optKOTA.ForeColor = Rgb(0,0,255) && warna biru .optKOTA.FontBold = .T. && huruf tebal .optKOTA.BackColor = _Screen.BackColor && dasar .optKOTA.Top = 80 && posisi atas .optKOTA.Left = 5 && posisi kiri .optKOTA.Width = 100 && lebar optKOTA .optKOTA.Height = 20 && tinggi optKOTA .optKOTA.Visible = .T. && tampilkan di monitor Endwith * mengatur optiongroup optSort With Thisform.optSort .Option1.Name = "optASC" && nama option1 .Option2.Name = "optDESC" && nama option2 * mengatur optASC .optASC.Caption = "Ascending" && isi optASC .optASC.ForeColor = Rgb(0,0,255) && warna biru .optASC.FontBold = .T. && huruf tebal .optASC.BackColor = _Screen.BackColor && dasar .optASC.Top = 5 && posisi atas .optASC.Left = 5 && posisi kiri .optASC.Width = 100 && lebar optASC .optASC.Height = 20 && tinggi optASC .optASC.Visible = .T. && tampilkan di monitor * mengatur optDESC .optDESC.Caption = "Descending" && isi optDESC .optDESC.ForeColor = Rgb(0,0,255) && warna bitu .optDESC.FontBold = .T. && huruf tebal .optDESC.BackColor = _Screen.BackColor && dasar .optDESC.Top = 30 && posisi atas .optDESC.Left = 5 && posisi kiri .optDESC.Width = 100 && lebar optDESC .optDESC.Height = 20 && tinggi optDESC .optDESC.Visible = .T. && tampilkan di monitor Endwith Endproc *--- prosedur cmdSortOK.Click ---* Procedure cmdSortOK.Click Local I, N, xUrut && variabel lokal ********************************************* * pengurutan BUBBLE SORT (external sorting) * * untuk jumlah data 1.000 - waktu 00:01:30 * ********************************************* Select MyCode && aktifkan tabel MyCode N = Reccount() && variabel jumlah record xUrut = .F. && variabel tanda (flag/switch) Do While xUrut = .F. && selama False (belum urut) xUrut = .T. && tanda True (sudah urut) * pembacaan data sequential (awal s/d akhir) For I = 1 To (N-1) Go I && menuju record ke I, ambil data xKODE = MyCode.Kode && ambil NPM xNAMA = MyCode.Nama && ambil NAMA xJKEL = MyCode.JenKel && ambil JENKEL xALMT = MyCode.Alamat && ambil ALAMAT xKOTA = MyCode.Kota && ambil KOTA xKPOS = MyCode.KodePos && ambil KODEPOS

Page 65: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 65 of 67

Go (I+1) && menuju record ke (I+1), ambil data yKODE = MyCode.Kode && ambil KODE yNAMA = MyCode.Nama && ambil NAMA yJKEL = MyCode.JenKel && ambil JENKEL yALMT = MyCode.Alamat && ambil ALAMAT yKOTA = MyCode.Kota && ambil KOTA yKPOS = MyCode.KodePos && ambil KODEPOS * periksa kondisi pengurutan dalam form ini With Thisform * lakukan pembandingan Do Case * urut KODE - ASCENDING Case .optOption.Value=1 And .optSort.Value=1 * jika memenuhi syarat, pemindahan data If xKODE > yKODE xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut KODE - DESCENDING Case .optOption.Value=1 And .optSort.Value=2 * jika memenuhi syarat, pemindahan data If xKODE < yKODE xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut NAMA - ASCENDING Case .optOption.Value=2 And .optSort.Value=1 * jika memenuhi syarat, pemindahan data If xNAMA > yNAMA xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut NAMA - DESCENDING Case .optOption.Value=2 And .optSort.Value=2 * jika memenuhi syarat, pemindahan data If xNAMA < yNAMA xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut JENKEL - ASCENDING Case .optOption.Value=3 And .optSort.Value=1 * jika memenuhi syarat, pemindahan data If xJKEL > yJKEL xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,;

Page 66: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 66 of 67

xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut JENKEL - DESCENDING Case .optOption.Value=3 And .optSort.Value=2 * jika memenuhi syarat, pemindahan data If xJKEL < yJKEL xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut KOTA - ASCENDING Case .optOption.Value=4 And .optSort.Value=1 * jika memenuhi syarat, pemindahan data If xKOTA > yKOTA xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif * urut KOTA - DESCENDING Case .optOption.Value=4 And .optSort.Value=2 * jika memenuhi syarat, pemindahan data If xKOTA < yKOTA xUrut = .F. && False (belum urut) Thisform.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data Endif Endcase Endwith Next Enddo Thisform.Release && form dihapus Endproc *--- prosedur cmdSortClose.Click ---* Procedure cmdSortClose.Click Thisform.Release && form dihapus Endproc *--- prosedur SimpanData ---* Procedure SimpanData * menerima 13 variabel kiriman Parameters nRecPos, ; xKODE,xNAMA,xJKEL,xALMT,xKOTA,xKPOS, ; yKODE,yNAMA,yJKEL,yALMT,yKOTA,yKPOS * menuju record xRecPos Go nRecPos * menyimpan data di record xRecPos Replace MyCode.Kode With yKODE && simpan Kode Replace MyCode.Nama With yNAMA && simpan Nama Replace MyCode.JenKel With yJKEL && simpan JenKel Replace MyCode.Alamat With yALMT && simpan Alamat

Page 67: Module algoritma

Diktat Kuliah: Algoritma dan Pemograman III

Page 67 of 67

Replace MyCode.Kota With yKOTA && simpan Kota Replace MyCode.KodePos With yKPOS && simpan Kode Pos * menuju record ( xRecPos + 1 ) Go (nRecPos+1) * menyimpan data di record xRecPos+1 Replace MyCode.Kode With xKODE && simpan Kode Replace MyCode.Nama With xNAMA && simpan Nama Replace MyCode.JenKel With xJKEL && simpan JenKel Replace MyCode.Alamat With xALMT && simpan Alamat Replace MyCode.Kota With xKOTA && simpan Kota Replace MyCode.KodePos With xKPOS && simpan Kode Pos Endproc Enddefine *--- prosedur TampilkanTanggal ---* Function TampilkanTanggal Local cRet,NamaHari(7),NamaBulan(12) * Nama-nama hari NamaHari(1) = "Minggu" NamaHari(2) = "Senin" NamaHari(3) = "Selasa" NamaHari(4) = "Rabu" NamaHari(5) = "Kamis" NamaHari(6) = "Jum'at" NamaHari(7) = "Sabtu" * Nama-nama bulan NamaBulan(1) = "Januari" NamaBulan(2) = "Februari" NamaBulan(3) = "Maret" NamaBulan(4) = "April" NamaBulan(5) = "Mei" NamaBulan(6) = "Juni" NamaBulan(7) = "Juli" NamaBulan(8) = "Agustus" NamaBulan(9) = "September" NamaBulan(10)= "Oktober" NamaBulan(11)= "Nopember" NamaBulan(12)= "Desember" * nama hari, tanggal, bulan dan tahun cRet = NamaHari(Dow(Date()))+" - "+ ; ", "+Alltrim(Str(Day(Date())))+" "+; NamaBulan(Month(Date()))+" "+Str(Year(Date()),4) * mengembalikan nama hari , tanggal, bulan dan tahun Return (cRet) Endfunc * End of procedure