Anda di halaman 1dari 80

MODUL

ALGORITMA DAN PEMOGRAMAN I

Oleh
Firman, S. Kom
Sekolah Tinggi Teknik
STT IBNU SINA
Batam
Diktat Kuliah: Algoritma dan Pemograman I

KATA PENGANTAR

Bismillahirrohmanirrohim

Puju syukur kehadirat ALLAH SWT yang telah melimpahkan rahmatnya, yang telah
memberikan nikmat kesehatan serta kesempatan yangdiberikan hingga dapat menyelesaikan
pembuatan modul Algoritma dan Pemograman III ini.

Modul ini disusun untuk membantu para mahasiswa dalam mencari referensi kuliah program
studi Teknik Informatika STT Ibnu Sina Batam serta menambah ilmu pengetahuan.

Didalam Referensi ini tentunya tidak terlepas dari kesalahan dan kekurangan, maka dari itu
diharapkan juga agar dapat menambah referensi lain dari berbagai sumber.

Atas perhatiannya diucapkan terima kasih.

Wassallamu’alaikum, wr, wb

Penyusun

Page 2 of 80
Diktat Kuliah: Algoritma dan Pemograman I

DAFTAR ISI

MODUL 1 : Definisi Agoritma dan Pemograman.……………………………… 6


A. Definisi Algoritma……………………………………………………………. 6
B. Pengertian Program Dan Pemrograman……………………………………… 7
C. Algoritma Pemrograman……………………………………………………... 8
D. Dasar Pemrograman………………………………………………………….. 9

MODUL 2 : Flow Chart .…………………………………………………………. 11


A. Pedoman dalam membuat Flow Chart ……………………………………….. 11
B. Simbol-Simbol Flow Chart ………………………………………………….. 11

MODUL 3 : Elemen Dasar Pemrograman.……………………………………… 14


A. Tipe Data……………………………………………………………………... 14
B. Operator……………………………………….……………………………… 15
C. Fungsi/ Procedure…………………………………………………………….. 15
D. Perintah Dasar Pemograman…………………………………………………. 16

MODUL 4 : Logika Percabangan.………………………………………………. 17


A. Proses Percabangan Bersyarat………………………………………………... 17
B. Struktur Percabangan…………………………………………………………. 18

MODUL 5 : Logika Pengulangan / looping.…………………………………….. 16


A. Perintah Do While – Enddo ………………………………………………….. 16
B. Pengulangan Eof() Dan Bof() Dalam Proses Berulang………………………. 17
C. Perintah For . . . Endfor ……………………………………………………… 17
D. Perintah Scan . . . Endscan…………………………………………………… 17

MODUL 6 : Function, Message, Properties dan Event.……………………….. 19


A. Function/ Fungsi……………………………………………………………… 19
B. Kotak Dialog / Messagebox………………………………………………….. 20

Page 3 of 80
Diktat Kuliah: Algoritma dan Pemograman I

C. Pengaturan Properties………………………………………………………… 21
D. Event Object………………………………………………………………….. 21

MODUL 7 : Komponen Utama Dalam Menyusun Sebuah Aplikasi…………... 22


A. Komponen Utama…………………………………………………………….. 22
B. Project………………………………………………………………………… 22
C. Database File…………………………………………………………………. 23
D. Startup File…………………………………………………………………… 24
E. Form………………………………………………………………………….. 24
F. Report………………………………………………………………………… 25
G. Menu………………………………………………………………………….. 25

MODUL 8 : Membuat Project dan Database.…………………………………... 26


A. Project………………………………………………………………………… 26
B. Database……………………………………………………………………... 27
C. Table……………………………………….…………………………………. 28

MODUL 9 : Type Field dan Operasi Pada Tabel.………………………………. 29


A. Penulisan Field……………………………………………………………….. 29
B. Operasi Pada Tabel…………………………………………………………… 30
C. Bekerja Dengan Multi Table…………………………………………………. 34

MODUL 10 : Mengolah Data dengan Form.…………………………………... 35


A. Penyimpanan Data …………………………………………………………… 35
B. Index………………………………………………………………………….. 36
C. Pencarian Data………………………………………………………………... 38

MODUL 11 : Object Grid. Listbox dan Pageframe.…………………………… 39


A. Object Grid …………………………………………………………………... 39
B. Object Listbox………………………………………………………………... 40
C. Object Pageframe…………………………………………………………….. 40

Page 4 of 80
Diktat Kuliah: Algoritma dan Pemograman I

MODUL 12 : Membuat Laporan serta Menu dan Kompilasi…………………. 41


A. Bentuk Laporan………………………………………………………………. 41
B. Objek-Objek Pembentuk Laporan……………………………………………. 42
C. Pembuatan Report Secara Wizard …………………………………………… 42
D. Memanggil Laporan………………………………………………………….. 44
E. Membuat Menu………………………………………………………………. 44

MODUL 13 : Pratikum : Kode Program.……………………………………….. 47

Page 5 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 1 : Materi Kuliah :
Definisi Agoritma dan Pemograman 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.

Tabel 1.1 Contoh Algoritma dalam kehidupan sehari-hari

Page 6 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Berdasarkan contoh algoritma diatas bisa diartikan suatu pemroses harus :


1. Mengerti setiap langkah dalam algoritma.
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
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.
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

Page 7 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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
(-): 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)
rd
 The 3 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

Page 8 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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.
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:

Page 9 of 80
Diktat Kuliah: Algoritma dan Pemograman I

*--- 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()
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

Page 10 of 80
Diktat Kuliah: Algoritma dan Pemograman I

...
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 11 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 2 : Materi Kuliah :
Flow Chart Algoritma dan Pemograman III

Flowchart adalah penyajian yang sistematis tentang proses dan logika dari kegiatan
penanganan informasi atau penggambaran secara grafik dari langkah-langkah dan urut-urutan
prosedur dari suatu program. Flowchart menolong analis dan programmer untuk memecahkan
masalah kedalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-
alternatif lain dalam pengoperasian. System flowchart adalah urutan proses dalam system
dengan menunjukkan alat media input, output serta jenis media penyimpanan dalam proses
pengolahan data. Program flowchart adalah suatu bagan dengan simbol-simbol tertentu yang
menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi)
dengan proses lainnya dalam suatu program.

A. PEDOMAN DALAM MEMBUAT FLOW CHART


Jika seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk
yang harus diperhatikan, seperti :
1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat
dimengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
5. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja,
misalkan Melakukan penggandaan diri.
6. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
7. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati.
Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu
digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan
percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila
percabangannya tidak berkaitan dengan sistem.
8. Gunakan simbol-simbol flowchart yang standar.

B. SIMBOL-SIMBOL FLOW CHART


Bagan alir program adalah suatu bagan yang menggambarkan arus logika dari data yang
akan diproses dalam suatu program dari awal sampai akhir. Bagan alir program merupakan alat
yang berguna bagi programmer untuk mempersiapkan program yang rumit. Bagan alir terdiri
dari simbol-simbol yang mewakili fungsi-fungsi langkah program dan garis alir (flow lines)
menunjukan urutan dari simbol yang akan dikerjakan.

Page 12 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Tabel 2.1 Simbol-simbol Flowchart

Penggunaan Flow Chart bisa dicontoh seperti tampilan dibawah ini :

Page 13 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Gambar 2.1 Contoh Penggunaan Flowchart Program

Page 14 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 3 : Materi Kuliah :
Logika Percabangan 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 15 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 16 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 4 : Materi Kuliah :
Logika Pengulangan / looping Algoritma dan Pemograman III

Perulangan memungkinkan kita mengeksekusi satu atau lebih baris kode sebanyak yang
kita kehendaki. Terdapat tiga perintah di Visual Foxpro yang dipakai untuk perulangan, yaitu :

A. 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 17 of 80
Diktat Kuliah: Algoritma dan Pemograman I

B. 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

C. 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

D. 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.

Page 18 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sintak dari perintah pengulangan tersebut adalah :


SCAN [FOR <kondisi1>] [WHILE <kondisi2>]
…………………….
……………………. Bagian program yang akan diulang
…………………….
[loop]
[Exit] ENDSCAN
Contoh :
SCAN FOR kota = “Jakarta STI&K”
? nama, jurusan
ENDSCAN

Page 19 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 5 : Materi Kuliah :
Bahasa Pemograman Algoritma dan Pemograman III

A. Pegertian Program dan Bahasa Pemograman

Program adalah kata, ekspresi, pernyataan atau kombinasinya yang disusun dan dirangkai
menjadi satu kesatuan prosedur yang berupa urutan langkah untuk menyelesaikan masalah yang
diimplementasikan dengan menggunakan bahasa pemrograman sehingga dapat dieksekusi oleh
computer. Program Dibuat dengan tujuan untuk mempermudah user dalam memberikan instruksi
atau perintah ke computer.
Bahasa Pemograman merupakan prosedur/tata cara penulisan program. Pada bahasa
pemrograman terdapat dua faktor penting, yaitu sintaks dan semantik. Sintaks adalah aturan
gramatikal yang mengatur tata cara penulisan kata, ekspresi dan pernyataan. Semantik adalah
aturan-aturan untuk menyatakan arti. Fungsi Bahasa pemrograman adalah sebagai media untuk
menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

Gambar 4.1 Tahap Pengembangan Program

Page 20 of 80
Diktat Kuliah: Algoritma dan Pemograman I

B. Visual Foxpro 9
Visual FoxPro 9 adalah bahasa pemograman berbasiskan prosedur yang pertama kali
dikembangkan oleh Fox Techonologies pada awal tahun 1984. Program ini dikembangkan untuk
menyaingi dBase II. Dalam perkembangannya Foxpro tetap memperhatikan kemampuan
pemograman prosedural dan dilengkapi dengan pemograman berorientasi objek. FoxPro
pertama kali dikembangkan berbasis text dan dapat dijalankan pada MS-DOS, Windows, Mac
OS, dan UNIX. Versi terakhir dari FoxPro adalah versi 9.0 dan service pack untuk versi 9.0
dirilis pada tahun 2007
Microsoft Visual Fox Pro adalah salah satu bahasa pemrograman prosedural dan bahasa
pemrograman berorientasi objek yang dikembangkan oleh Microsoft. Visual Foxpro dikenal
sebagai Software Developer Tool menyediakan pula fasilitas prototyping dan RAD untuk
membangun aplikasi yang cepat.
Software ini dimulai dari FoxPro (FoxBASE) yang awalnya dikembangkan oleh Fox
Technology pada 1984.Fox Technology kemudian bergabung dengan Microsoft pada
1992.Awalnya Foxpro dapat berjalan pada sistem operasi Mac OS, DOS, Windows, dan UNIX
(2.6 Version) tapi pada perkembangannya (3.0 Version) hanya mampu berjalan pada Mac OS
dan Windows saja, bahkan pada versi-versi berikutnya hanya berjalan pada Windows saja.
Visual FoxPro 9.0 merupakan sarana pemrograman yang handal dan banyak digunakan
dalam pembuatan aplikasi karena dapat menggabungkan sisi efisiensi dan nilai estetika pada
sebuah aplikasi.

1. Kelebihan Visual Foxpro 9.0


a. Simpel
b. Fitur lengkap
c. Punya database sendiri yaitu DBF
d. Akses ke database internal mudah
e. OOP murni sejak versi 6.0
f. Dinamis
g. Akses ke library eksternal mudah
h. Sederhana
i. Tidak memerlukan spesifikasi hardware yang tinggi

2. Alasan Kelebihan Visual Foxpro 9.0:


a. Alasan pertama, Visual FoxPro is Data Centric Language… artinya VFP adalah suatu
bahasa pemrograman yang sudah dioptimalisasi penggunaannya untuk pengolahan
database. VFP juga mendukung transaction processing secara native, Data Dictionary
Support, dan SQL ANSI 92 Standard Syntax.
b. Alasan kedua, Visual FoxPro is Object Oriented Programming … mungkin bagi
sebagian orang, pemrograman berorientasi obyek bukanlah barang baru, tetapi ini adalah
salah satu nilai lebih yang dimiliki oleh Visual FoxPro dibandingkan dengan dengan

Page 21 of 80
Diktat Kuliah: Algoritma dan Pemograman I

pemrograman lain VFP sudah berorientasi obyek sejak pertama kali diperkenalkannya
Visual FoxPro 3 di Windows 3.1.
c. Alasan ketiga, Visual FoxPro is extremely fast database engine … seberapa cepat VFP
dapat berlari?
d. Alasan keempat, Visual FoxPro is remote access data … VFP mendukung untuk
mengakses data diluar dari database native yang dimilikinya, seperti Microsoft SQL
Server, Oracle, mySQL, PostGreSQL, Thunderbird, Access dan lain sebagainya dengan
menggunakan koneksi ODBC dan ADO.
e. Alasan kelima, Visual FoxPro is excellent RAD tools … dimana dengan kemampuan
OOP yang dimiliki oleh VFP, kita dapat membangun sebuah aplikasi yang cepat
berdasarkan class yang sudah kita bangun sebelumnya. Bahkan kalau seandainya ada
perubahan interface atau business rules, dengan mudah kita ubah berdasarkan classnya.
It’s really Rapid Application Development Tools.
f. Alasan keenam, Visual FoxPro is COM Based Complaint … merupakan standar
komponen yang dapat digunakan oleh bahasa pemrograman lain yang juga COM Based
Complaint, sehingga memungkinkan suatu proyek aplikasi yang besar dibuat lebih dari 1
bahasa pemrograman … sebagai contoh, modul inventory dibuat dengan VFP, modul
sales dibuat dengan Delphi, sedangkan menu utamanya dibuat dengan Visual Basic.
g. Alasan ketujuh, Visual FoxPro is web-enabled … membuat aplikasi berbasis web
bukanlah sesuatu yang sulit bagi VFP, dimana VFP menyediakan fasilitas FoxISAPI
sebagai penghubung VFP dengan Web-Server. Atau jika ingin menggunakan fasilitas
ASP atau ASP.NET.
h. Alasan kedelapan, Visual FoxPro is backwards compatibility… hal ini memudahkan
bagi rekan-rekan programmer yang masih menggunakan FoxPro for Dos/Windows untuk
beralih ke VFP, karena syntax yang biasa sudah dikenal di FoxPro for DOS/Windows
masih dikenal dengan baik oleh VFP sehingga memungkinkan aplikasi yang dibuat
dengan FoxPro for DOS/Windows dapat berjalan dengan baik di VFP (dengan sedikit
perbedaan di tampilan layar, mengingat VFP sudah menggunakan fasilitas Windows GUI
32Bit).
i. Alasan kesembilan, Visual FoxPro is flexible & easy to use … kalimat ini bukan sekedar
jargon, tetapi memang benar-benar mudah menggunakan VFP, bahkan bagi seseorang
yang tidak mengerti bahasa pemrograman sekalipun. Lebih dari selusin Wizard yang
disediakan oleh VFP untuk mempermudah pemakai menggunakan fasilitas didalamnya,
dari Wizard membuat tabel hingga Wizard membuat aplikasi berikut interface-nya.
j. Alasan kesepuluh, Visual Foxpro is supported by Microsoft … microsoft memiliki
komitmen untuk terus mengembangkan Visual Foxpro.
k. Visual Foxpro merupakan Software yang tangguh dalam merncang sistem Basis Data,
penggunaan prototyping dan RAD –nya pun memiliki fitur – fitur yang lengkap untuk
membangun basis data. Dimana tujuan dari prototyping adalah (menurut banyak para
software developer ) adalah:

Page 22 of 80
Diktat Kuliah: Algoritma dan Pemograman I

o Mengurangi waktu perancangan.


Aplikasi ini dipenuhi oleh visual foxpro sehingga design aplikasi dan arsitektur
sistem dapat dirancang dengan mudah dan cepat tanpa harus mengakses server secara
remote untuk me – rebuilt server basis data. Anda selaku programmer dapat
melakukan testing dan debugging dalam data store yang jauh lebih sederhana dan
kecil dibanding penggunaan remote server yang sesungguhnya. Ini semua
mempermudah kita dalam memperbaiki dan meningkatkan user interface sistem.
Beberapa hak yang akhirnya dihindari untuk menguji prototype yang dirancang :
- Wasting development time dalam rebuilding
- Reindexing
- Reconnecting remote data
o Mengurangi Biaya perancangan untuk meningkatkan kepuasan Konsumen.
Lokal prototype dibangun dan ada pada komputer, dengan demikian programmer
dapat dengan mudah men-demonstrasikan model yang berjalan ini pada end user
selaku pemakai akhir sewaktu masih dalam tapa awal pengembangan/ perancangan
sistem.
Konsumen akan mendapatkan kepuasan dan kejelasan karena konsumen sudah
mendapatkan gambaran akan program yang nantinya digunakan. Hal ini juga
memberikan peluang terhadap masukan konsumen bagi interface aplikasi dan report
yang dihasilkan sebelum perancang aplikasi menerpakannya pada sistem yang
sesungguhnya dengan fasilitas remote server.
o Memberikan konstribusi pada implementasi yang efektif.
Dengan prototyping, apliasi yang sudah ada dapat didemonstrasikan terlebih dahulu
dan memungkinkan end user untuk ber eksperimen dan beradaptasi dengan sistem
yang nantinya akan sepenuhnya digunakan Prototype dapat digunakan sebagai sarana
pembelajaran terlebih dahulu sehingga akan menambah pada keberhasilan
mengimplementasikan sistem yang sesunggungnya pada aplikasi client server.

Visual Foxpro menyediakan fasilitas seperti : wizards, builders, toolbars, and designers
dan project manager yang mampu membangun aplikasi dengan cepat. Prototype yang dihasilkan
lebih berkuliatas dan bermutu yang bahkan dapat dengan mudah dikembangkan untuk digunakan
sebagai sistem informasi tanpa harus membuang prototype dan melakukan rancang bangun
kembali.

3. Kekurangan Visual Foxpro


a. Tidak tersedia tipe data pointer
b. Tidak bisa digunakan untuk membuat OCX
c. Pengembangan versi sekarang sudah terhenti di versi 9.0
d. Pembuatan report yang belum mengimplementasikan OOP

Page 23 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 6 : Materi Kuliah :
Elemen Dasar Pemrograman 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 24 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 25 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 26 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 7 : Materi Kuliah :
Function, Message, Properties dan Event 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 27 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 28 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 29 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 8 : Materi Kuliah :
Komponen Utama Dalam Menyusun Algoritma dan Pemograman III
Sebuah Aplikasi

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 30 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 31 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 32 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 33 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 9 : Materi Kuliah :
Membuat Project dan Database 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 34 of 80
Diktat Kuliah: Algoritma dan Pemograman I

• 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 35 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 36 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 37 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 10 : Materi Kuliah :
Type Field dan Operasi Pada Tabel 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 Digunakan untuk menampung banyaknya data karakter . dengan
(Binary) 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 38 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 39 of 80
Diktat Kuliah: Algoritma dan Pemograman I

- 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 40 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 41 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 42 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 11 : Materi Kuliah :
Mengolah Data dengan Form 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 43 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 44 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 45 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 46 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 12: Materi Kuliah :
Object Grid. Listbox dan Pageframe 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 47 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 48 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 13 : Materi Kuliah :
Membuat Laporan serta Menu dan Algoritma dan Pemograman III
Kompilasi

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.
9. Detail, merupakan bagian untuk menampilkan record data yang berulang.

Page 49 of 80
Diktat Kuliah: Algoritma dan Pemograman I

10. Group Footer, dipakai untuk meletakkan subtotal group record tertentu dan letaknya
dibawah.
11. Page Footer, merupakan catatan di bawah halaman, ditampilkan sekali akhir halaman.
12. 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 50 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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.
13. 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 51 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 52 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 53 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 54 of 80
Diktat Kuliah: Algoritma dan Pemograman I

Sekolah Tinggi Teknik (STT) Ibnu Sina Batam


Program Studi : Teknik Informatika Lecturer : Firman, S. Kom
MODUL 14 : Materi Kuliah :
Pratikum : Kode Program 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 55 of 80
Diktat Kuliah: Algoritma dan Pemograman I

* (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 56 of 80
Diktat Kuliah: Algoritma dan Pemograman I

* 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 57 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 58 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 59 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 60 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 61 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 62 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 63 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 64 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 65 of 80
Diktat Kuliah: Algoritma dan Pemograman I

* 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 66 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 67 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 68 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 69 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 70 of 80
Diktat Kuliah: Algoritma dan Pemograman I

.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 71 of 80
Diktat Kuliah: Algoritma dan Pemograman I

.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 72 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 73 of 80
Diktat Kuliah: Algoritma dan Pemograman I

.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 74 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 75 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 76 of 80
Diktat Kuliah: Algoritma dan Pemograman I

.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 77 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 78 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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 79 of 80
Diktat Kuliah: Algoritma dan Pemograman I

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

Page 80 of 80

Anda mungkin juga menyukai