Modul Junior Programming PDF
Modul Junior Programming PDF
Dari asal usul kata, Etika berasal dari bahasa Yunani “ethos” yang berarti
adat istiadat atau kebiasaan yang baik. Perkembangan etika studi tentang kebiasaan
manusia berdasarkan kesepakatan, menurut ruang dan waktu yang berbeda, yang
menggambarkan perangai manusia dalam kehidupan pada umumnya.
Etika merupakan suatu cabang filosofi yang berkaitan dengan apa saja yang
dipertimbangkan baik dan salah. Ada beberapa definisi mengenai etika antara lain :
- Kode moral dari suatu profesi tertentu
- Standar penyelenggaraan suatu profesi tertentu
- Persetujuan diantara manusia untuk melakukan yang benar dan
menghindari yang salah.
Salah satu yang harus dipahami adalah bahwa apa yang tidak etis tidak
berarti illegal. Dalam lingkungan yang kompleks, definisi benar dan salah tidak selalu
jelas. Juga perbedaan antara illegal dan tidak beretika tidak selalu jelas.
Dengan semakin berkembangnya teknologi informasi telah menciptakan
berbagai situasi etika yang baru. Misal isu sebuah perusahaan yang secara legal
memonitor email pegawai merupakan hal yang kontroversial. Selain itu ada
perbedaan antara etika di perusahaan dengan individu.
Secara umum, privasi adalah hak untuk sendiri dan hak untuk bebas terhadap
gangguan orang yang tidak bertanggung jawab. Privasi informasi adalah hak untuk
menentukan kapan, dan untuk apa diperluas terhadap informasi diri sendiri yang
dapat dikomunikasikan dengan orang lain. Hak ini berlaku untuk individu, kelompok
dan institusi.
Isu accuracy Siapa yang bertanggung jawab untuk authenticity, fidelity dan akurasi
informasi yang berhasil dikumpulkan?
Bagaimana kita dapat meyakinkan bahwa informasi akan diproses secara
benar dan ditampilkan secara akurat kepada pengguna?
Bagaimana kita dapat meyakinkan bahwa kesalahan dalam database,
transmisi data, dan pengolahan data adalah kecelakaan dan tidak disengaja.
Siapa yang bisa dipercaya untuk menentukan kesalahan informasi dan
dengan cara apa kesalahan tersebut dapat dikompensasi.
Definisi privasi dapat diintepretasikan sangat luas. Akan tetapi ada dua aturan
yang harus diikuti yaitu:
1. Hak privasi adalah tidak absolut. Privasi harus diseimbangkan dengan
keinginan masyarakat.
2. Hak publik untuk mengetahui lebih utama dibandingkan dengan hak privasi
individu.
Tabel 1.4 Representasi Privasi Legislasi Federal terhadap Privasi dan Teknologi Informasi
Legislasi Pernyataan
Freedom of Information Act, Mengijinkan individu untuk mengakses sebarang informasi
1970 mengenai diri sendiri yang disimpan oleh pemerintah
federal.
Privacy Act of 1974 Melarang pemerintah untuk mengumpulkan informasi
secara rahasia. Informasi yang dikumpulkan harus
dipergunakan hanya untuk keperluan tertentu. Informasi
dapat digunakan untuk keperluan lainnya dengan ijin dari
individu. Individu dapat mengakses dan memperbaiki
informasi tersebut.
Right to Financial Privacy Act of Jaminan keamanan data pada lembaga
1978 keuangan. Masyarakat harus diberi pengertian jika
pemerintah akan mengakses data tersebut.
Privacy protection Act of 1980 Memberikan proteksi privasi dalam bentuk komputerisasi
dan dokumen lainnya.
Cable Communication Act of Proteksi privasi di TV dan transmisi kabel.
1984
Electronics Communications Melarang private citizens untuk mengakses komunikasi data
Privacy Act of 1986 tanpa otorisasi.
Computer Security Act of 1987 Memerlukan keamanan informasi termasuk informasi
individu.
Computer Matching and Privacy Regulasi untuk mencocokkan file komputer oleh
Act of 1988 pemerintah dan agen federal
Video Privacy Protection Act of Proteksi privasi pada transmisi gambar
1988
Telephone Consumer Protection Membatasi praktek telemarketer
Act of 1992
Consumer Internet Privacy Memerlukan prioritas yang tertulis sebelum suatu layanan
Protection Act of 1997 komputer dapat memberikan informasi dari anggotanya
Social Security Online Privacy Membatasi disclosure jumlah Social Security dan informasi
Protection of 1997 yang berkaitan.
Federal Internet Privacy Melarang agen federal terhadap disclosing data personil
Protection Act of 1997 melalui internet.
Communication Privacy and Proteksi hak privasi dalam perdagangan online.
Consumer Empowernment Act
of 1997
Data Privacy Act of 1997 Membatasi penggunaan secara personil informasi yang bisa
diidentifikasi dan regulasi “spamming”
Social Security Information Menghasilkan mekanisme keamanan secara online untuk
Safeguards Act of 1997 data Social Security.
Tempat lain yang menyimpan informasi personal antara lain : bank dan
lembaga keuangan; TV Kabel, Telpon, perusahaan utilitas lainnya; kepegawaian;
apartemen dan perusahaan sewa peralatan; rumah sakit; sekolah dan universitas;
supermarket; penyelenggara retail dan mail-order house; instansi pemerintah (Biro
Sensus, Layanan Pendapatan Daerah); perpustakaan dan perusahaan asuransi. Juga
beberapa kuesioner yang diisi di internet (misal pada saat anda mencoba untuk
memenangkan hadiah) biasanya akan tersimpan dalam database.
Ada beberapa hal yang terkait dengan informasi yang tersimpan dalam
lembaga penyimpan informasi tersebut.
Salah satu kota di New England gagal mendapatkan finansial. Sebuah investigasi yang
dilakukan telah menemukan bahwa semua wajib pajak diberi label yang salah yaitu sebagai
orang yang gagal membayar pajak property mereka.
Orang yang berpengalaman kesulitan dalam hal finansial atau refinancing home disebabkan
keterlambatan atau ketidakakuratan informasi dalam database.
Informasi pribadi seperti status kesehatan atau kondisi seksual dari seseorang dapat
berkibat negatif pada saat kontrak, promosi maupun kebijakan personal lainnya.
Database dipergunakan untuk mengkombinasikan mailing list yang berbeda. List semacam
itu dapat dijual kepada vendor lainnya, yang kemudian akan menghubungi orang tersebut
sebagai pelanggan potensial.
Data collection Data sebaiknya dikumpulkan pada individu hanya untuk keperluan
menghasilkan obyektif bisnis yang legitimasi
Data sebaiknya cukup, relevan dan tidak berlebihan sesuai dengan obyektif
bisnis
Individu harus memberikan persetujuannya sebelum data mereka
dikumpulkan bersamaan. Persetujuan semacam itu diterapkan pada
beberapa tindakan individu (misal permohonan kredit, asuransi atau
Data accuracy Data yang sensitif yang dikumpulkan dari individu sebaiknya diverifikasi
sebelum dimasukkan ke database
Data sebaiknya akurat dan dimanapun, kapanpun tetap akurat.
File tersebut sebaiknya dapat dimanfaatkan supaya individu dapat
menjamin bahwa data tersebut adalah benar.
Jika terdapat ketidaksetujuan terhadap keakuratan data, versi individu
sebaiknya diperhatikan dan dimasukkan dengan beberapa perubahan pada
file tersebut.
Collection Limitation Data sebaiknya diperoleh sesuai dengan hukum dan fair;
beberapa data yang sangat sensitif sebaiknya tidak dikoleksi
secara bersamaan.
Data Quality Data sebaiknya relevan dengan tujuan, akurat, lengkap, dan
terkini.
Purpose Specification Tujuan penggunaan data sebaiknya diidentifikasi dan data
sebaiknya dihapus jika data tersebut tidak mampu lagi memenuhi
tujuan tersebut.
Use Limitation Penggunaan data selain yang diperlukan dilarang, kecuali dengan
persetujuan subyek data atau otoritas hukum.
Security Safeguards Agensi sebaiknya membuat prosedur untuk membuat
perlindungan terhadap kehilangan data, kerusakan data atau data
yang sudah tidak berguna lagi.
Openness Harus mampu untuk memberikan informasi mengenai koleksi,
penyimpanan, dan penggunaan data personal.
Individual Subyek data mempunyai hak untuk mengakses dan mengubah
Participation data personal.
Prinsip-prinsip umum yang dirumuskan dalam suatu profesi akan berbeda satu
dengan yang lainnya. Hal ini disebabkan perbedaan adat, kebiasaan, kebudayaan, dan
peranan tenaga ahli profesi yang didefinisikan dalam suatu negara tidak sama. Adapun
yang menjadi tujuan pokok dari rumusan etika yang dituangkan dalam kode etik (Code
of conduct) profesi adalah:
1. Standar-standar etika menjelaskan dan menetapkan tanggung jawab terhadap
klien, institusi, dan masyarakat pada umumnya.
2. Standar-standar etika membantu tenaga ahli profesi dalam menentukan apa
yang harus mereka perbuat kalau mereka menghadapi dilema-dilema etika
dalam pekerjaan.
3. Standar-standar etika membiarkan profesi menjaga reputasi atau nama dan
fungsi-fungsi profesi dalam masyarakat melawan kelakuan-kelakuan yang jahat
dari anggota-anggota tertentu.
4. Standar-standar etika mencerminkan / membayangkan pengharapan moral-
moral dari komunitas, dengan demikian standar-standar etika menjamin bahwa
para anggota profesi akan menaati kitab UU etika (kode etik) profesi dalam
pelayanannya.
5. Standar-standar etika merupakan dasar untuk menjaga kelakuan dan integritas
atau kejujuran dari tenaga ahli profesi.
6. Perlu diketahui bahwa kode etik profesi adalah tidak sama dengan hukum (atau
undang-undang). Seorang ahli profesi yang melanggar kode etik profesi akan
menerima sangsi atau denda dari induk organisasi profesinya.
4. Standar Prosedur
Tahap-tahap Pemrograman :
I. Fase Problem Solving
II. Fase Implementation
Perancangan
Algoritma Test
Dokumentasi
Test
Dipakai
Fase I Fase II
Gambar 2.2 Tahapan Pemrograman
c. Operator
Dalam melaksanakan proses pengolahan data, Delphi menyediakan berbagai operator,
yaitu :
- Operator assignment ( :=) berfungsi untuk memasukkan suatu nilai data ke dalam
sebuah variabel, dengan bentuk penulisan :
Nama variabel := ekspresi;
Contoh :
Harga := 500;
Jumlah:=20;
Total:= harga * jumlah;
1. Operator Aritmatika
Tabel 2.1 Operator Aritmatika
Operator Fungsi Tipe yang Tipe hasil proses
diproses
* Perkalian Integer,real Integer,real
/ Pembagian real Integer,real Integer,real
+ Penjumlahan Integer,real Integer,real
- Pengurangan Integer,real Integer,real
Div Pembagian integer Integer Integer
Mod Sisa hasil bagi Integer Integer
2. Operator Relasi
3. Operator Logika
Operator logika, dibagi dua:
*Operator boolean selalu memberikan hasil true atau false, sedangkan operator bit berhubungan dengan
pergeseran atau pembandingan pada level bit (pada nilai integer).
d. Tipe data
Tipe data adalah pengelompokan data berdasarkan isi dan sifatnya. Dalam
logika kita tipe data adalah jenis dari sesuatu yang dapat dimasukkan ke dalam kotak
kosong yang hanya khusus dibuat untuk jenis benda dengan jenis tertentu.
Tipe data yang biasa digunakan dalam sebuah algoritma dan pemrograman
adalah:
1. String
Biasa digunakan untuk masukan data string ( String merupakan gabungan beberapa
character ).
2. Integer
Merupakan bilangan asli ( 1, 2, 3, 4, ...).
3. Real
Bilangan bulat (berupa pecahan dan integer).
4. Boolean
Digunakan untuk data logika yang berisi true atau false.
5. Character
Digunakan untuk menyatakan karakter satu huruf.
6. Byte
Besar dari type ini hanya 8 bit.
2.5 Pengulangan
Salah satu kemampuan komputer yang dapat dimanfaatkan adalah mengulang
suatu instruksi, bahkan aksi, secara berulang-ulang dengan peformansi yang sama.
Berbeda dengan manusia yang cenderung melakukan kesalahan jika melakukan hal
yang sama (karena lelah atau bosan), komputer akan melakukan pengulangan dengan
setia sesuai dengan perintah yang diberikan.
Pengulangan terdiri dari dua bagian yaitu:
a. kondisi yang mengakibatkan pengulangan suatu saat berhenti, yang
dinyatakan oleh sebuah ekspresi logik baik secara eksplisit maupun implisit,
b. badan pengulangan, yaitu aksi yang harus diulang selama kondisi yang
ditentukan untuk pengulangan masih dipenuhi.
2.5.1 For
2.5.2 While
2.5.3 Repeat
begin
{inisialisasi} { inisialisasi } // inisialisasi
i <- 1 i := 1; i = 1;
repeat do{
repeat begin
{proses} { proses } // proses
.......... ............. .............
{iterasi} { iterasi } // iterasi
i <- i + 1 i := i + 1; i = i + 1;
until (i = 2) end;
until(i = 2); }while(i < 2);
end.
2.6 Percabangan
Percabangan if merupakan sebuah blok program yang menyatakan bahwa
sebuah aksi akan dijalankan jika kondisi percabangan dipenuhi jika tidak dipenuhi maka
Percabangan merupakan salah satu inti dari analisis kasus pada pembuatan
algoritma, sebuah kasus harus dipikirkan penyelesaiannya dengan pemikiran ada
sebuah syarat dan proses atau aksi yang harus dikerjakan jika syarat tidak terpenuhi
dan jika syarat terpenuhi, misalkan membuat sebuah penyelesaian kasus menyatakan
apakah sebuah bilangan ganjil atau genap, maka dapat dibuat sebuah penyelesaian
sebagai berikut:
Tabel 2.9 Deklarasi If dalam bahasa algoritmik
Bahasa Manusia Bahasa Algoritmik
jika sebuah bilangan dibagi dengan 2 if (bilangan mod 2) = 1 then
(dua) masih sisa 1 (satu) maka output("bilangan ganjil")
merupakan bilangan ganjil
{end if}
output("bilangan genap")
{end else}
Blok program if untuk satu kondisi berarti hanya ada sebuah blok aksi yang
akan dikerjakan jika syarat kondisi terpenuhi. Deklarasi percabangan if satu kondisi
adalah sebagai berikut:
Tabel 2.10 Deklarasi If untuk kondisi
Bahasa Algoritmik Bahasa Pascal Bahasa C
if kondisi_percabangan if kondisi_percabangan if(kondisi_percabangan){
then then
{proses} begin // proses
............ { proses } .............
{end if} ............. }
end;
begin
berarti ketika eksekusi program sampai pada blok percabangan akan dilakukan
pengecekan nilai variabel ketemu, jika variabel ketemu bernilai true maka aksi
menuliskan nilai variabel ketemu ke layar akan dikerjakan, tapi jika nilai ketemu
adalah false maka aksi menuliskan nilai variabel ketemu ke layar tidak dikerjakan.
{proses} { proses }
output("(else) nilai write('(else) nilai // proses
variabel ketemu : ", variabel ketemu : printf("(else) nilai
ketemu) false'); variabel ketemu :
false\n");
if kondisi_percabangan_1 then
if kondisi_percabangan_1_1 then
if kondisi_percabangan_1_2 then
{end if}
{end if}
else
{ proses jika kondisi percabangan 1 tidak terpenuhi }
{end else}
KAMUS
TabNamaHari: array [1..7] of string
TabJumlahHari : array [1..12] of integer
Domain :
Domain array sesuai dengan pendefinisian indeks
Domain isi array sesuai dengan jenis array
Konstanta :
Konstanta untuk seluruh array tidak terdefinisi,
Konstanta hanya terdefinisi jika indeks dari array terdefinisi
Contoh:
Input : 1 Output “Senin”
Input : 6 Output “Sabtu”
Program NamaHari
{ Mengisi TabelNamaHari yang akan memungkinkan untuk menuliskan nama
hari : tabulasi eksplisit nama hari berdasarkan indeks HariKe... }
Kamus :
TabelNamaHari : array [1..7] of string
procedure IsiTabHari { mengisi tabel nama hari }
HariKe : integer [1..7] {nomor dari hari}
Algoritma :
IsiTabHari { Contoh pemanfaatan setelah Tabel TabNamaHari terdefinisi
isinya }
Input (HariKe) Output ( TabelNamaHariHariKe)
procedure IsiTabHari
{ mengisi tabel nama hari }
{ I.S : TabNamaHari tak terdefinisi }
{ F.S. : TabNamaHari siap dipakai, semua elemennya [1..7] sudah diisi }
Kamus lokal :
Algoritma :
TabelNamaHari 1 ← “Senin”
TabelNamaHari 2 ← “Selasa”
TabelNamaHari 3 ← “Rabu”
TabelNamaHari 4 ← “Kamis”
TabelNamaHari 5 ← “Jumat”
TabelNamaHari 6 ← “Sabtu”
TabelNamaHari 7 ← “Minggu”
KAMUS
constant MaxKata : integer = 50
type Kata : <TabKata: array [1..MaxKata] of character {definisi kata}
Length : integer > {panjang kata }
Procedure BacaTulisKata
Kamus lokal :
K : Kata
cc : character
i : integer
Algoritma :
{ Baca kata huruf demi huruf, pembacaan diakhiri dengan huruf „@‟}
{ skema pemrosesan sekuensial dengan mark, dengan kasus kosong }
input (cc ) {First-Elmt}
K.Length ← 0 {Inisialisasi, harus di sini spy kata “kosong”
terdefinisi}
if (cc ≠ „@‟)then
output (“tidak ada kata yang dibaca”) {Proses-Kasus-Kosong}
else
repeat
K.Length ← K.Length + 1
K.TabKatai ← cc {Proses-Current-Elmt }
input (cc ) {Next-Elmt }
until (cc = „@‟ or K.Length = Maxkata)
{Terminasi }
depend on TabKatai :
cc ≠ „@‟ : output (“Pembacaan kata dihentikan”)
cc = „@‟ : output (“Kata yang dibaca adalah : “)
{ Penulisan kata }
i traversal [1..K.Length]
output (K.TabKatai)
output (“Panjang kata : “, K.Length)
Catatan:
Pada beberapa pemroses bahasa, primitif ASSIGN diberikan dalam teks
algoritma, dan dalam beberapa pemroses bahasa pemrograman yang lain diberikan di
luar program (pada Job Control Language). Pada teks algoritma di buku ini, perintah
ASSIGN tidak diberikan di dalam teks algoritma.
Contoh:
Sebuah arsip sekuensial berisi data mahasiswa, yang setiap rekamannya memuat data NIM,
Nama dan Nilai akhir mahasiswa.. Maka dapat dituliskan:
type rekaman : < NIM:integer, Nama : string, Nilai :integer [0..100]>
ArsipMhs : SEQFILE of
(*) RekMhs : rekaman
(1) <9999999, '',0>
Domain setiap rekaman : sesuai dengan domain masing-masing rekaman Konstanta : sebuah
rekaman, misalnya :
<7473001,'Juliette',95> <8690022,'Laura',80>
Model tanpa MARK, jika i adalah deret yang diproses, i bernilai 1,2,3..N
EOP adalah NIM=9999999
First_Elmt : OPEN(ArsipMhs, RekMhs )
Next_Elmt : READ(ArsipMhs, RekMhs)
Algoritma :
OPEN(ArsipMhs, RekMhs) {First_Elmt}
if (RekMhs.NIM =9999999) then
output ('Arsip kosong')
else
SumNil ← 0 ; JumMhs ← 0 { Inisialisasi }
repeat
SumNil ← Sumnil + RekMhs.nilai; JumMhs ← JumMhs+1
{Proses}
READ(ArsipMhs,RekMhs) {Next_Elmt}
until (RekMhs.NIM=9999999) {EOP}
Output (Sum/JumMhs) {Terminasi}
CLOSE (ArsipMhs)
int main ()
{
int x(3) (3) = ((1,2,3), (4,5,6), (7,8,9)), b,k;
printf(“BENTUK BIASA\n”);
for (b=0; b<3; k++)
for (k=0; k<3; k++)
printf(“x(%d) - %d\n”,b,k,x(b) (k));
int main()
{
int Arr() (3) = ((1,2,3), (4,5,6));
cetak_arry (1,2,Arr);
getch();
}
Contoh:
int a[5];
float x[100];
char nama[25];
...
Misal : Array a
a[0] = 27
a[1] = 23
.
.
a[4] = 87
Contoh 1:
#include <iostream.h>
#include <conio.h>
Contoh 2:
#include <iostream.h>
#include <conio.h>
main() {
int a[5];
int jumlah=0;
for(int i=0;i<5;i++)
{ cout<<"Data ke "<<i<<" = ";cin>>a[i];
jumlah+=a[i];
}
cout<<"\n\nJumlahnya = "<<jumlah;
getch();
}
Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan
perubahan pada contoh 3 menjadi sebagai berikut:
Contoh 3:
#include <iostream.h>
#include <conio.h>
main() {
int *a=new int[5];
int jumlah=0;
for(int i=0;i<5;i++)
{ cout<<"Data ke "<<i<<" = ";cin>>a[i];
jumlah+=a[i];
}
cout<<"\n\nJumlahnya = "<<jumlah;
getch();
}
atau instuksi :
cout<<"\nData = "<<a[0];
akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0).
Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk
fungsi seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter
fungsi, jumlah data yang tersimpan dalam array boleh ditulis boleh tidak (optional).
Sehingga bisa ditulis dengan : b[] saja
Contoh 4 :
#include <iostream.h>
#include <conio.h>
main() {
int a[100];
int bd;
cout<<"Masukkan banyaknya data = ";cin>>bd;
input_array(a,bd);
cout<<"\n\nJumlahnya = "<<jumlah(a,bd);
getch();
}
Contoh 5:
#include <iostream.h>
#include <conio.h>
main() {
int a[100];
int jml;
cout<<"Banyak data = ";cin>>jml;
masukan(a,jml);
urutkan(a,jml);
cout<<"\n\nSetelah diurutkan ";
tampil(a,jml);
getch();
Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk
menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan
fungsi ketiga untuk menampilkan data yang tersimpan di array ke layar.
Array 2 Dimensi
Contoh deklarasi :
int a[4][5];
0 1 2 3
0 25 40 26 12
1 6 8 12 5
2 1 3 8 9
3 15 22 13 19
4 0 5 7 15
Mengakses data :
a[0][0] = 25
a[0][1] = 40
.
.
…
Contoh 6:
#include <iostream.h>
#include <conio.h>
main() {
int dt1[10][10],dt2[10][10],dt3[10][10];
int b1,k1;
cout<<"Jumlah baris matrik = ";cin>>b1;
cout<<"Jumlah kolom matrik = ";cin>>k1;
cout<<"\nMatrik pertama\n";
masukan(dt1,b1,k1);
cout<<"\nMatrik kedua\n";
masukan(dt2,b1,k1);
jumlah(dt1,dt2,dt3,b1,k1);
clrscr();
cout<<"\nMatrik pertama\n";
tampilkan(dt1,b1,k1);
cout<<"\nMatrik kedua\n";
tampilkan(dt2,b1,k1);
cout<<"\nMatrik hasil penjumlahan\n";
tampilkan(dt3,b1,k1);
getch();
}
Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh
ditulis boleh tidak, tetapi jumlah kolom harus ditulis. Tipe array dapat dikembangkan
menjadi array multidimensi. Misal 3D, 4D, dan sebagainya.
Kode Program
Prosedur
Prosedur
Program
Utama
Orang yang pertama kali belajar memprogram sering kali berpikir kenapa
diperlukan prosedur, kenapa tidak hanya satu program utama saja. Prosedur memiliki
beberapa keuntungan sebagai berikut :
1. Memecah-mecah program menjadi lebih sederhana, misalnya jika diperlukan
proses pencarian berkali-kali jika hanya terdiri dari satu program utama tanpa
prosedur, maka kode program pencarian akan beberapa kali ditulis ulang dan
hasilnya dapat memperbesar ukuran file. Untuk lebih jelasnya dapat dilihat pada
gambar 3.2.
Program Utama
Prosedur Pencarian
Panggil Prosedur
Pencarian Tulis Kode Pencarian
Panggil Prosedur
Pencarian
2. Blok program yang digunakan jelas jika akan digunakan pada program lain, cukup
dengan mengkopi satu prosedur dan meletakkannya pada program lain yang
membutuhkannya dan program lain tersebut tinggal memanggil prosedur tersebut.
{proses} begin
.................. { proses }
{end procedure} ...................... // proses
end; ....................
}
procedure procedure cariNama(nama void cariNama(char
cariNama(input: nama : string); var nama[]){
: string) {variabel}
// proses
......................
{end procedure} end; }
procedure tampil(input : a :
Integer)
write("nilai a adalah : ", a)
{end procedure}
procedure hasil(output : a :
integer)
a <- 2 + 3 {end procedure}
procedure hasil(input : a :
integer, output : b : integer)
b <- a + 3 {end procedure}
procedure hasil(input/output : a
: integer)
a <- a + 3 {end procedure}
3.7 Fungsi
Fungsi adalah sebuah blok program tersendiri yang merupakan bagian dari
program lain yang lebih besar sama halnya dengan prosedur hanya saja fungsi memiliki
hasil keluaran sedangkan prosedur hanya berisi proses. Fungsi dapat dipanggil oleh
program utamanya ataupun oleh prosedur atau fungsi lain yang juga merupakan
bagian dari program utamanya (masih dalam satu kode program).
Sebuah program bisa terdiri dari satu atau lebih prosedur, satu atau lebih
fungsi, dan satu program utama. Fungsi juga memiliki keuntungan- keuntungan seperti
halnya prosedur, hal paling mendasar yang membedakan prosedur dan fungsi adalah
fungsi menghasilkan sebuah keluaran sedangkan prosedur tidak. Pada gambar xxx,
prosedur melakukan proses dan melakukan perubahan nilai di dalam proses yang
dilakukan di dalam prosedur, keluaran atau output yang ada pada deklarasi prosedur
berarti nilai variabel itu akan berubah bergitu prosedur dijalankan sedangkan fungsi
melakukan proses dan perubahan nilai dengan proses di dalam fungsi namun fungsi
menghasilkan nilai keluaran yang dapat ditangkap oleh sebuah variabel.
Berikut adalah sebuah fungsi yang menghasilkan hasil perkalian dari tiga buah
parameter masukan:
Tabel 3.6 Deklarasi memanggil Fungsi
Bahasa Manusia Bahasa Algoritmik
Mendeklarasikan fungsi hasilKali yang function hasilKali(a : integer; b
: integer; c : integer)-> integer
menghasilkan nilai hasil perkalian dari
tiga buah variabel masukan
hasil : integer
hasil <- a * b * c
Mendeklarasikan variabel hasil yang -> hasil
nilainya merupakan nilai keluaran
fungsi
Mendeklarasikan program utama, {algoritma utama}
a : integer
mendeklarasikan tiga variabel masukan b : integer
dan variabel hasil, memanggil fungsi hasil : integer
hasilKali serta menampilkannya ke layar
a <- 1
b <- 2
c <- 3
int main()
{
// Mulai menggunakan mode grafik
int a;
mulaimodegrafik (“..\\BGI\\”);
// Mulai menggambar disini.
// lingkaran
buatLingkaran(250,260,5,15);
buatLingkaran(300,250,25,20);
buatLingkaran(393,186,50,2);
for(a=1;a<=200;a++)
{
// garis vertikal
putpixel(200,200+a/2,1);
putpixel(220,120+a/3.3,1);
putpixel(260,120+a/9,1);
putpixel(220,220+a/2.5,20);
putpixel(260,220+a/2.5,20);
putpixel(330,200+a/2,1);
putpixel(300,225+a/4,15);
putpixel(380,235+a/3,20);
putpixel(405,235+a/3,20);
// garis horizontal
putpixel(200+a/1.55,200,53);
putpixel(220+a/5,220,20);
putpixel(220+a/5,120,1);
putpixel(275+a/4,250,15);
putpixel(200+a/1.55,300,1);
putpixel(380+a/8,300,20);
// garis diagonal
putpixel(265-a/3,135+a/3,53);
putpixel(265+a/3,135+a/3,53);
delay(10);
}
getch();
tutupmodegrafik();
return 0;
}
Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-
masing dapat berlainan tipe.
a. Mendeklarasikan Record
Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :
RECORD
Daftar_field_1 : tipe_1;
Daftar_field_2 : tipe_2;
. . .
daftar_field_n : tipe_n;
END
Var
Barang : RecBarang;
Dengan mendeklarasikan seperti di atas, Barang akan mengandung tiga buah field,
yaitu :
- Nama,
- Kualitas,
- Harga.
Variabel.field
Sebagai contoh :
Barang.Nama
Dengan cara seperti di atas, field Nama dari record Barang berisi string ’Ubin TISKA
20x20’. Isi dari suatu field ditampilkan dengan menggunakan Write atau Writeln.
Contoh :
Writeln (Barang.Nama);
Merupakan perintah untuk menampilkan isi field Nama dari record Barang.
Contoh program yang memberikan gambaran pendeklarasian record, pengisian
terhadap field-field serta menampilkan isi masing-masing field dapat dilihat di bawah
ini.
Program Rec1;
Uses crt;
Type
RecBarang = Record
Nama : String[25];
Kualitas : Char;
Harga : LongInt
End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := ’Kabel Console’;
Barang.Kualitas := ’1’;
Barang.Harga := 150000;
Hasil program :
{menyalin record}
Barang2 := Barang1;
Tampak bahwa tipe record bernama RecPegawai berisi record yang lain
(RecTanggal). Hal yang menarik yang perlu diperhatikan adalah cara mengakses
field seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai berikut.
Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun
Praktekkan program berikut, untuk mencoba pembuatan record dengan bentuk seperti
di atas.
Program Rec3;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
e. Pernyataan With
Untuk menyederhanakan notasi seperti :
DataPeg.TglLahir.Tanggal
Turbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini adalah sebagai
berikut :
With nama_record do
pernyataan
Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat
disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik. Untuk lebih
jelasnya, perhatikan program berikut yang merupakan alternatif lain dari program di
atas.
Bila suatu record memiliki record lain, pernyataan With dapat diikuti dengan with yang
lain. Sebagai contoh, program di atas ditulis menjadi :
Program Rec5;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do
With TglLahir do
Begin
Nomor := 891011;
Nama := ’Noorhadi’;
Tanggal := 11;
Bulan := 11;
Tahun := 1971;
Gaji := 1200000;
End;
{menampilkan isi field}
With DataPeg do
With TglLahir do
Pernyataan seperti :
With DataPeg do
With TglLahir do
Program Rec6;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg, TglLahir do
Begin
Nomor := 891011;
Nama := ’Noorhadi’;
Tanggal := 11;
Bulan := 11;
Tahun := 1971;
Gaji := 1200000;
End;
{menampilkan isi field}
With DataPeg, TglLahir do
Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun)
End;
f. Array Record
Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di
bawah ini.
Const
Jum_Maks = 20;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang; {array record}
Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen
bertipe record.
Untuk mengakses suatu field, kita perlu menggunakan notasi :
DafBarang [indeks].NamaField
Program Rec7;
Uses Crt;
Const
Jum_Maks = 20; {jumlah maksimal jenis baramg}
Type
RecBarang = Record
Nama : string [25];
Kualitas : char;
Harga : longInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang; {array record}
JumBarang : Integer;
4.2 Pointer
Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat
memori komputer tertentu. Pointer merupakan variabel level rendah yang dapat
digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan
bahkan tipe-tipe data lain yang didukung oleh bahasa C. Variabel biasa, sifatnya statis
dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih fleksibel.
Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL,
dan disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat
diprediksi.
//variabel biasa
int nilai1 = 4;
float nilai2 = 3.5;
char nama[10] = “anton”; //array of char (string)
//variabel pointer
int *nilai_p1; //dangling pointer
int *nilai_p2 = &nilai1; //menunjuk ke tipe data int
char *nilai_p3 = nama; //menunjuk ke tipe data array of char
char *nilai_p4 = &nama[0];
Ilustrasi Pointer:
Contoh program untuk dicoba:
#include
#include
int main(){
int nilai1 = 4;
int nilai2 = 5;
float nilai3 = 3.5;
char nama[11] = "abcdefghij";
Operasi pointer:
1. Operasi Pemberian nilai
Contoh 1:
#include
#include
int main(){
float nilai,*p1,*p2;
nilai = 14.54;
printf("nilai = %2.2f, alamatnya %p\n",nilai,&nilai);
p1 = &nilai;
Contoh 2:
#include
#include
int main(){
int *p,a=25,b;
//p masih dangling
printf("nilai a = %d di alamat a = %p,\n",a,&a);
printf("nilai p di alamat = %p\n",p);
p = &a;
printf("nilai p = %d di alamat %p\n",*p,p);
//b diisi dengan nilai yang berasal dari nilai
//variabel a yang ditunjuk oleh pointer p
b = *p;
printf("nilai b = %d di alamat %p\n",b,&b);
getch();
}
Contoh 3:
#include
#include
int main(){
int a=25,b=12,t;
int *p,*q;
p = &a;
q = &b;
printf("nilai yang ditunjuk p = %d di alamat %p\n",*p,p);
printf("nilai yang ditunjuk q = %d di alamat %p\n",*q,q);
//Contoh kasus, penukaran nilai 2 variabel dengan pointer
t = *p;
*p = *q;
*q = t;
printf("nilai yang ditunjuk p sekarang = %d di alamat %p\n",*p,p);
printf("nilai yang ditunjuk q sekarang = %d di alamat %p\n",*q,q);
getch();
}
Contoh 4:
#include
#include
int main(){
int a,*p;
p=&a;
*p=25;
printf("nilai a = %d",a);
}
#include
#include
int main(){
int a,b=10,*p,*q;
p=&a;
*p=25;
printf("nilai a = %d\n",a);
printf("alamat p = %p\n",p);
q=&b;
printf("alamat q = %p\n",q);
printf("nilai a + b = %d\n",(*p+*q));
//posisi alamat p menjadi bergeser, nilai berubah
p=p+1;
printf("nilai p = %d, alamat = %p\n",*p,&p);
q=q-1;
printf("nilai q = %d, alamat = %p\n",*q,&q);
getch();
}
int main(){
char S[] = "anton";
char *p;
//cara 1
//langsung menunjuk nama array.
p=S;
for(int i=0;i<5;i++){ printf("%c",*p); p++; } printf("\n"); //cara 2
p=&S[0]; for(int i=0;i<5;i++){ printf("%c",*p); p++; } printf("\n");
//Membalik kalimat p--; for(int i=0;i<5;i++){ printf("%c",*p); p--; }
printf("\n"); getch(); } Pointer pada Struct: #include
#include
typedef struct{
int nim;
int umur;
float ipk;
} Mahasiswa;
Mahasiswa m;
Mahasiswa *p = &m;
int main(){
//struct biasa
m.nim=123;
m.ipk=3.2;
m.umur=23;
printf("nim = %d\n",m.nim);
printf("ipk = %f\n",m.ipk);
printf("umur = %d\n",m.umur);
//struct pointer
p->ipk = 3.5;
p->nim = 321;
p->umur = 32;
printf("nim = %d\n",p->nim);
printf("ipk = %f\n",p->ipk);
Pengembangan:
Buatlah sebuah program untuk mengecek apakah suatu kata palindrom atau bukan,
tanpa memperhatikan spasi dan huruf besar/kecilnya. Program dibuat dengan
menggunakan template struct sebagai berikut:
typedef struct{
char elemen[30];
int jml_kata;
} Kata;
Kata kata;
Kata *p_kata=&kata;
typedef struct{
char elemen[30];
int jml_kata;
} Kata;
Kata kata;
Kata *p_kata=&kata;
int main(){
char kalimat[30];
p_kata->jml_kata=0;
char *p = p_kata->elemen;
printf("Masukkan kata : ");gets(kalimat);
fflush(stdin);
printf("Kalimat : %s\n",kalimat);
for(int i=0;ijml_kata++;
p++;
}
p=p_kata->elemen;
//tampilkan kembali kalimat tersebut
for(int i=0;i<=p_kata->jml_kata;i++){
printf("%c ",*p);
p++;
}
//kembangkan….
getch();
}
1. Bubble Sort
2. Maximum/Minimum Sort
3. Selection Sort
4. Insertion Sort
5. Heap Sort
6. Quick Sort
7. Merge Sort
8. Shell Sort
Pada pembahasan ini, hanya 3 (tiga) metode yang akan dibahas yaitu metode
pengurutan gelembung (bubble sort), pengurutan maksimum/minimum
(maximum/minium sort) dan pengurutan seleksi (selestion sort).
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar 4.1 Array A sebelum diurutkan dengan metode gelembung
Tahap 1
Mulai dari A[5] sampai A[2], lakukan perbandingan nilai antara A[k] dan A[k-1] dimana
variabel k mewakili indeks array yang sedang aktif. Apabila nilai A[k] lebih kecil, maka
tukarkan nilai A[k] dengan A[k-1]. Sampai di sini, array tersebut akan menjadi seperti
berikut.
15 25 22 18 20
A[1] A[2] A[3] A[4] A[5]
Gambar 4.2 Hasil Pengurutan Array A tahap 1
Tahap 2
Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1 sehingga array akan
menjadi seperti berikut.
15 18 25 22 20
A[1] A[2] A[3] A[4] A[5]
Gambar 4.3 Hasil Pengurutan Array A tahap 2
Tahap 3
Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1 dan 2 sehingga array
akan menjadi seperti berikut.
15 18 20 25 22
A[1] A[2] A[3] A[4] A[5]
Gambar 4.4 Hasil Pengurutan Array A tahap 3
Tahap 4
Tahap ini merupakan tahap terakhir dimana kita akan melakukan perbandingan
terhadap nilai dari elemen terakhir (A5]) dengan elemen terakhir-1 (A[4]). Apabila nilai
A[5] lebih kecil maka tukarkan nilainya dengan A[4] sehingga array A di atas akan
terurut secara menaik seperti yang tampak di bawah ini.
Pada proses yang terjadi di atas tampak jelas bahwa untuk melakukan
pengurutan data dengan lima buah elemen, kita harus melakukan empat tahapan.
Sekarang, apabila proses di atas kita translasikan ke dalam bahasa pascal, maka
hasilnya adalah sebagai berikut.
Var
n, {banyaknya elemen array}
j, k {variabel bantu untuk indeks pengulangan}
temp : integer; {variabel bantu untuk melakukan pertukarannilai}
begin
for j:= 1 to N-1 do begin
for k:= N downto j+1 do begin
if A[k] < A[k-1] then begin
temp := A[k];
A[k] := A[k-1];
A[k-1] := temp;
End;
End;
End;
End;
Hasil yang akan diberikan oleh program di atas adalah sebagaii beriku.
2) Pengurutan Maksimum/Minimum
Dengan metode ini, elemen array dengan nilai maksimum/minimum akan disimpan ke
bagian ujung array (elemen pertama maupun terakshir). Selanjutnya nilai tersebut
akan diisolasi atau diikat dan tidak diikutkan lagi dalam proses selanjutnya. Di sini, kita
hanya akan menggunakan metode maksimum saja dan tidak akan membahas
mengenai metode minimum. Hal ini disebabkan karena konsep yang terdapat pada
metode minimum sama persis dengan metode maksimum. Untuk mempermudah
pembahasan, coba perhatikan kembali array A yang terdapat pada bahasan
sebelumnya.
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar 4.6 Array A sebelum diurutkan dengan metode Maksimum/Minimum
Tahap 1
Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan nilainya dengan elemen
terakhir (A[5]) sehingga array akan akan berubah menjadi seperti di bawah ini.
15 22 18 20 25
A[1] A[2] A[3] A[4] A[5]
Gambar 4.7 Hasil Pengurutan Array A tahap 1
Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke dalam proses atau
tahap selanjutnya.
Tahap 2
Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan nilainya dengan elemen
terakhir saat ini (A[4]) sehingga array akan akan berubah menjadi seperti di bawah ini.
15 20 18 2 25
A[1] A[2] A[3] A[4] A[5]
Gambar 4.8 Hasil Pengurutan Array A tahap 2
Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi ke dalam proses atau
tahap selanjutnya.
Tahap 3
Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan nilainya dengan elemen
terakhir saat ini (A[3]) sehingga array akan tampak seperti di bawah ini.
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar 4.9 Hasil Pengurutan Array A tahap 3
Tahap 4
Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dan tukarkan nilainya
dengan elemen A[2]. Untuk kasus ini nilai maksimum terdapat pada A[2] sehingga di
sini benarnya terjadi proses yang seharusnya tidak perlu dilakukan, yaitu menukarkan
nilai A[2] dengan A[2]. Berikut ini bentuk translasi metode di atas ke dalam bahasa
Pascal.
Var
n, {banyaknya elemen array keseluruhan}
x, {banyaknya elemen array yang belum terurut}
j, k, {untuk indeks pengulangan}
maks, {untuk menyimpan nilai maksimal}
imaks, {untuk menyimpan indeks dari elemen yang
menyimpan nilai maksimal}
temp : integer; {variabel bantu untuk proses pertukaran}
begin
x:= n; {mula-mula semua belum terurut}
for j:= 1 to n-1 do begin
maks := A[1];
imaks := 1;
3) Pengurutan Seleksi
Pengurutan dengan metode seleksi ini bekerja dengan cara memilih salah satu elemen
serta menganggapnya sebagai nilai terkecil. Kemudian nilai tersebut aan dibandingkan
dengan elemen-elemen pada posisi berikutnya. Apabila nilai yang dipilih pertama kali
lebih besar dari nilai elemen pembanding maka tukarkan kedua buah nilai tersebut.
Untuk memperjels pembahasan ini, marilah kita perhatikan kembali array A seperti
pembahasan sebelumnya. Berikut gambarannya.
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Tahap 1
Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan
nilai 1 ke dalam variabel, misalnya dengan nama min. Mulai dari j = min + 1 sampai n
(jumlah elemen array), lakukan perbandingan antara A[j] dengan nilai A[min]. Apabila
nilai dari A[min] > A[j], isikan min = j. Setelah pengulangan selesai, tukarkan nilai
A[min] dan A[1]. Untuk kasus ini, nilai min adalah 5 karena nilai terkecil tersimpan pada
indeks ke-5. hal tersebut akan menyebabkan array A tampak menjadi seperti berikut.
15 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar 4.11 Hasil Pengurutan Array A tahap 1
Tahap 2
Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan
nilai 2 ke dalam variabel, misalnya dengan nama min. Kemudian sama seperti di atas,
lakukan pengulangan mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya.
Setelah didapatkan nilai min, maka tukarkan A[min] dengan A[2]. Untuk kasus ini, nilai
minimum ditemukan pada indeks ke-3 sehingga min = 3. Tukarkan A[min] dengan A[2]
sehingga array A akan tampak seperti berikut.
15 18 22 20 25
A[1] A[2] A[3] A[4] A[5]
Gambar 4.12 Hasil Pengurutan Array A tahap 2
Tahap 3
Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan
nilai 3 ke dalam variabel min. Kemudian sama seperti di atas, lakukan pengulangan
mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan
nilai min, maka tukarkan A[min] dengan A[3]. Untuk kasus ini, nilai minimum
ditemukan pada indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehingga
array A akan tampak seperti berikut.
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar 5.13 Hasil Pengurutan Array A tahap 3
NULL
Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada
gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti
berikut ini:
Info next
Info next
null
Info next
Info next
CATATAN :
Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan
linked list ini,
yaitu:
1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.
2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked
list.
Sedangkan keuntungannya adalah :
1. Jenis data yang berbeda dapat di-link
2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya
saja .
OPERASI DASAR PADA LINKED LIST
B
star Info next B info next
A B ke-2
node
C
node ke-1
node ke-3
P
Info next
D null
A
Node ke-4
P Q
Info next
…….
Langkah ke-2 :
Next (P) := Next (Q)
Info next
Langkah ke-3 :
Freenode (Q)
Procedure Freenode (Q)
(a) Next (Q) := Avail
(b) Info (Q) := Null
(c) Avail := Q
Kemudian membuat fungsi init(), yaitu membuat kepala linked list. Di sini
terjadi pengalokasian memory secara dinamis untuk start. Kepala linked list ini tidak
masuk dalam hitungan rangkaian.
Contoh Deklarasi init:
void init(void) {
start = malloc(sizeof(node)); // alokasi memori dinamis
if(!start) { // bila alokasi gagal
printf("alokasi gagal..\n");
return; }
start->next = NULL;
count = 0; }
curr = malloc(sizeof(node));
if(!curr) {
printf("alokasi gagal..\n");
return; }
curr->elm = e;
if(!start->next) {
start->next = curr;
curr->next = NULL;
} else {
tmp = malloc(sizeof(node));
if(!tmp) {
printf("alokasi gagal..\n");
return;}
tmp = start;
while(tmp->next && tmp->next->elm <= e) {
tmp = tmp->next; }
curr->next = tmp->next;
tmp->next = curr;}
count++; }
if(!start->next) {
printf("List kosong..\n");
return; }
if(!tmp->next) {
printf("tidak ada node berisi elemen '%d'..\n", e);
return; }
curr = tmp->next;
tmp->next = curr->next;
free(curr);
count--; }
Kemudian membuat fungsi show() yang digunakan untuk membaca isi linked
list. Pembacaan berdasarkan arah rangkaian.
Contoh Fungsi Show
void show(void) {
node *tmp;
if(!start->next) {
printf("List kosong..\n");
return; }
tmp = malloc(sizeof(node));
if(!tmp) {
printf("alokasi gagal..\n");
return; }
tmp = start;
while(tmp = tmp->next) {
printf("%d ", tmp->elm);
}
printf("\n");}
if(strcmp(s, "") == 0)
break;
switch(*s) {
case '1' :
printf(" Insert: ");
gets(e);
insert(atoi(e));
break;
case '2' :
show();
system("pause");
break;
case '3' :
printf(" Delete: ");
gets(s);
delete(atoi(s));
break;
case '4' :
exit(0);
break;
} }
return 0; }
4.5 Queue
Queue (antrian) dibuat menggunakan array dan dua buah variabel bertipe
integer yang menunjukkan posisi awal dan akhir antrian. Dalam queue terdapat
beberapa fungsi untuk operasi dasar, yaitu store() dan retrieve(). Percobaan kali
ini menerangkan queue dalam potongan – potongan kode program. Langkah
pertama adalah membuat array untuk queue. Dalam kode ini menggunakan asumsi
bahwa queue digunakan untuk tipe data integer saja.
Index posisi ambil biasanya terletak di awal, dan index posisi simpan terletak di
akhir. Kemudian membuat fungsi store() untuk operasi memasukkan elemen baru ke
void store(int e) {
if(spos == MAX) {
printf("antrian penuh\n");
return; }
queue[spos++] = e; }
Fungsi yang kedua adalah retrieve() yang digunakan untuk operasi mengambil isi
queue. Fungsi akan mengembalikan nilai elemen antrian pada posisi rpos. Dalam
fungsi ini juga terdapat pemeriksaan bila nilai spos sama dengan rpos berarti queue
kosong.
int qretrieve(void) {
if(rpos == spos) {
printf("antrian kosong\n");
return 0; }
return queue[rpos++]; }
Selain dua fungsi di atas bisa pula ditambahkan dengan fungsi show() untuk
menampilkan isi queue dan fungsi menu() untuk menampilkan daftar menu pilihan.
#include <conio.h>
#include <iostream.h>
#include <string.h>
#define max 20
int isFull()
{ if (antri.tail==max-1)
return 1;
else
return 0; }
int isEmpty(){
if (antri.tail==-1)
void dequeue()
{ cout<<"data terambil"<<" "<<antri.data[antri.head]<<endl;
for (int i=antri.head;i<=antri.tail;i++)
strcpy (antri.data[i],antri.data[i+1]);
antri.tail--; }
void clear()
{ antri.head=antri.tail=-1;
cout<<"semua data terhapus.\n";}
void print()
{ for (int i=0;i<=antri.tail;i++)
cout<<"\ntampil data "<<antri.data[i]<<endl<<endl;}
int main()
{ int pil;
inisialisasi();
char dt[20];
do{
cout<<"1. input\n";
cout<<"2. delete\n";
cout<<"3. print\n";
cout<<"4. clear\n";
cout<<"5. exit\n";
cout<<"Pilihan : ";cin>>pil;
switch(pil){
case 1: if(isFull() != 1){
cout<<"Data = ";cin>>dt;
enqueue(dt);}
else
cout<<"\nSudah penuh!\n";
break;
case 2: if(isEmpty() != 1)
dequeue();
else
cout<<"\nMasih kosong!\n";
break;
case 3: if(isEmpty() != 1)
print();
else
cout<<"\nMasih kosong!\n";
break;
case 4: clear();
cout<<"\nSudah kosong!\n";
break; }
getch();}
while(pil != 5);
getch();}
Kemudian membuat fungsi push() untuk operasi memasukkan elemen baru ke dalam
stack. Dalam fungsi ini terdapat pemeriksaan, bila nilai top sama dengan atau
lebih dari MAX berarti stack sudah penuh.
void push(int e) {
if(top >= MAX) {
printf("Stack penuh\n");
} else {
stack[top] = e;
top++;
}}
Fungsi yang kedua adalah pop() yang digunakan untuk operasi mengeluarkan isi stack.
Fungsi akan mengembalikan nilai stack paling atas. Dalam fungsi ini juga terdapat
pemeriksaan bila nilai top sama dengan atau kurang dari 0 berarti stack kosong.
void push(int e) {
if(top >= MAX) {
printf("Stack penuh\n");
} else {
stack[top] = e;
top++;
}}
#include <conio.h>
#include <string.h>
#include <iostream.h>
#define MAX_STACK 10
stack tumpuk;
void inisialisasi(){
tumpuk.top = -1;
}
int IsFull(){
if(tumpuk.top == MAX_STACK-1)
return 1;
else
return 0;
}}
int IsEmpty(){
if(tumpuk.top == -1)
return 1;
else
return 0;}
void Pop(){
cout<<"\nData yang terambil = "<<tumpuk.data[tumpuk.top]<<endl;
tumpuk.top--;}
void Clear(){
tumpuk.top=-1;}
void TampilStack(){
for(int i=tumpuk.top;i>=0;i--)
{cout<<"Data : "<<tumpuk.data[i]<<endl;}}
int main(){
int pil;
inisialisasi();
char dt[10];
do{
cout<<"1. push\n";
cout<<"2. pop\n";
cout<<"3. print\n";
cout<<"4. clear\n";
4.7 File
Dalam kasus-kasus pemrograman tertentu kita sering disudutkan untuk
menggunakan file sebagai media yang digunakan untuk menyimpan data-data, baik
berupa data input (untuk masukan) maupun sebagai data output (untuk keluaran).
Sebagai contoh, apabila kita menggunakan sistem operasi Microsoft Windows maka
kita akan menemukan file sistem seperti autoexec.bat, config.sys, system.ini dan
lainnya. File tersebut sebenarnya digunakan untuk menyimpan data-data secara
terpisah sehingga nilainya dapat diubah dengan mudah sesuai dengan kebutuhan.
Sebagai seorang programmer, kita tentu dituntut untuk dapat menggunakan
(mengakses) file dari dalam prograam yang kita buat. Berdasarkan prosedur yang ada,
proses pengaksesan file di dalam bahasa Pascal terdiri dari emapt tahap, yaitu :
(a) Menghubungkan file fisik yang akan dibuka atau dibuat dengan variabel file
(b) Membuka file
(c) Melakukan operasi file (membaca atau menulis)
(d) Menutup file
Sebelum file dapat dibuka atau dibuat oleh program, kita harus
menghubungkannya dengan variabel file terlebih dahulu. Variabel file merupakan
peralatan logik yang digunakan sebagai perantara dalm mentransfer atau membaca
Seteleh file tersebut dihubungkan dengan variabel file, maka langkah selanjutnya
yang perlu dilakukan adalah membuka file. Dalam bahasa Pascal, terdapat tiga buah
- Prosedur Rewrite
Prosedur ini digunakan untuk membuka file yang sama sekali belum terdapat di
dalam disk. Artinya, di sini kompiler akan melakukan proses pembuatan file baru
sekaligus membuka file tersebut. Bentuk umum dari prosedur Rewrite adalah sebagai
berikut.
Procedure Rewrite(NamaVariabelFile[:File;
UkuranRecord : Word]);
Bila file yang dibuka berupa file teks, maka file tersebut akan bersifat writeonly
atau tidak dapat dibaca, artinya operasi yang diizinkan untuk file tersebut hanyalah
operasi tulis. UkuranRecord merupakan ekspresi yang bersifat opsional yang hanya
disertakan apabila file yang dibuka merupakan file tanpa tipe. Nilai tersebut akan
digunakan sebagai ukuran record dalam transfer data. Nilai tersebut akan digunakan
sebagai ukuran record dalam transfer data. Apabila dihilangkan, maka UkuranRecord
ini alan dianggap bernilai 128 byte. Untuk lebih memahami penggunaan prosedur ini,
perhatikan contoh program sederhana ini.
Program ContohRewrite;
Var
F : TextFile;
Begin
Assign (F, ’D:\CONTOH.TXT’);
Rewrite (F);
End.
Jalankan program tersebut dan lihatlah drive D pada komputer anda, maka di situ
pasti akan tercipta file baru dengan nama CONTOH.TXT dimana isinya kosong. Apabila
anda bereksperimen untuk membuka filee yang sudah ada sebelumnya dengan
menggunakan prosedur Rewrite maka isi dari file tersebut akan ditimpa dengan isi file
baru. Satu hal lagi yang perlu diperhatikan adalah bahwa etelah pemanggilan prosedur
Rewrite, fungsi EOF (end-of-file) akan selalu menghasilkan nilai true.
- Prosedur Reset
Prosedur ini digunakan untuk membuka file yang sebelumnya sudah ada di dalam
disk. Hal ini bertujuan untuk membaca isi dari file tersebut untuk kemudian
Selanjutnya kita ingin membaca isi file tersebut dan ditampilkan di layar monitor,
maka kita dapat menggunakan prosedur Reset seperti yang tampak pada kode berikut.
Program ContohReset;
Uses crt;
Var
F : TextFile;
Teks : string;
Begin
Assign (F, ’D :\SAMPLE.TXT’);
Reset (F);
While not eof (F ) do begin
Readln (F, teks) ; {membaca data dari file dan mengisikannya ke
variabel teks}
Writeln (teks); menampilkan variabel teks ke layar}
Close (F);
Readln;
End.
Sekarang coba jalankan program tersebut dan akan melihat bahwa seluruh isi dari
file SAMPLE.TXT akan ditampilkan di layar monitor. Apabila kita menggunakan
prosedur Reset pada file yang belum terdapat di dalam disk maka kompiler akan
menampilkan pesan kesalahan pada saat program dijalankan.
- Prosedur Append
Prosedur ini digunakan untuk menambahkan isi file yang sebelumnya sudah
terdapat di dalam disk. Isi yang ditambahkan selalu berada pada bagian akhir dari isi
file yang sudah ada sebelumnya. Dalam menggunakan prosedur ini kita tidak perlu
Apabila anda membuka file teks yang belum ada didalam diks dengan
menggunakan prosedur Append, maka akan terjadi kesalahan pada saat program
sedang berjalan (run-time). Setiap pemanggila prosedur Append, file bersifat write-only
(hanya dapat ditulis) dan posisi file akan diset pada bagian akhir baris file. Untuk dapat
lebih memahaminya, buatlah file teks (*.TXT) dengan program teks editor yang
tersedia, misalnya Notepad, kemudian isikan teks berikut ke dalamnya.
Ini adalah data yang dituliskan pada baris pertama.
Ini adalah data yang dituliskan pada baris pertama.
Sebagai contoh, file tersebut disimpan dengan nama TEST.TXT pada drive D di
dalan direktori COBA. Selanjutnya kita ingin menamnbahkan dua buah baris data ke
dalam file di atas, maka kita dapat melakukannya melalui kode program dibawah ini.
Program ContohAppend;
Uses
Crt;
Var
F: TextFile;
Begin
Assign (F,’D:\COBA\TEST.TXT’) ;
Append (F) ; {Membuka file untuk di tambah isinya}
close(F) ;
end.
Dimana V1..VN adalah nama variabel yang akan digunakan untuk menyimpan data
yang akan dituliskan. Walaupun demikian, Andajuga dapat menuliskannya secara
langsung tanpa harus menyimpannya terlebih dahulu ke dalam variabel seperti yang
tampak pada kode berikut.
write (F,‟Mencoba menuliskan data ke dalam file‟);
Berdasarkan kode di atas, maka teks tersebut akan dimasukkan atau ditulis ke
dalam file yang telah dihubungkan dengan variabel file F. Untuk lebih memahaminya,
perhatikan contoh program di bawah ini dimana kita akan melakukan penulisan
terhadap file DATA.TXT yang terdapat pada direktori COBA di dalam drive D. Sebagai
catatan bahwa file DATA.TXT ini sebelumnya sudah ada di dalam disk dimana isi dari
file tersebut masih kosong.
Program ContohWrite;
Uses crt;
Var
F : TextFile;
Begin
Assign (F,’D:\COBA\DATA.TXT’);
Reset (F);
Write (F, ’Teknik Pemrograman ’);
Write (F, ’Pascal’);
Close (F);
End.
Jalankan program tersebut dan buka kembali isi dari file DATA.TXT, maka kita akan
melihat bahwa file tersebut sekarang telah berisi teks berikut.
Teknik Pemrograman Pascal
Apabila dijalankan, program di atas akan menyebabkan isi file DATA.TXT berubah
menjadi seperti di bawah ini.
Teknik Pemrograman
Pascal
dimana V1 . . VN adalah nama variabel yang akan digunakan untuk menyimpan data
hasil proses pembacaan.
5) Menutup File
Setelah selesai mengakses file maka sebaiknya kita menutupnya. Untuk keperluan
ini, bahasa Pascal menyediakan prosedur Close. Berikut bentuk umumnya.
procedure close (var F);
dimana F adalah sebuah variabel file yang sebelumnya telah dibuka dengan
menggunakan fungsi Reset, Rewrite maupun Append.
6) Jenis File
Dalam bahasa Pascal, file dibedakan menjadi tiga jenis, yaitu :
(a) File Teks
(b) File Bertipe
(c) File Tanpa Tipe
Sebagai contoh, apabila kita akan mendeklarasikan variable file yang mengakses
file yang berisi data integer amak kode yang harus dituliskan adalah sebagai berikut.
var
F : file of integer;
Begitu juga apabila file berisi data real, maka kodenya adalah seperti berikut.
var
F : file of real;
Contoh penggunaan file bertipe untuk tipe record adalah sebagai berikut.
Type
Tsiswa = Record
NIM : string [8];
Nama : string [25];
Umur : integer;
Alamat : string [30];
Kota : string [15];
End;
Var
F : file of Tsiswa;
Sebagai contoh apabila kita ingin mendeklarasikan variabel F yang akan digunakan
sebagai variabel file tanpa tipe, maka kita harus mendeklarasikannya sebagai berikut.
var
F : FILE
b. Analisa Permasalahan
Contoh masalah :
Menampilkan jumlah kemunculan sebuah nama pada daftar
Setelah kita mengetahui dengan baik dan jelas mengenai permasalahan yang ingin
diselesaikan, langkah selanjutnya yaitu membuat rumusan algoritma untuk
menyelesaikan permasalahan. Dalam pemrograman komputer penyelesaian masalah
didefinisikan dalam langkah demi langkah. Algoritma adalah urutan langkah – langkah
logis penyelesaian masalah yang disusun secara sistematis dan logis. Logis merupakan
kunci dari sebuah algoritma. Langkah-langkah dalam algoritma harus logis dan bernilai
benar atau salah.
Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan James
Gosling ingin merancang bahasa komputer untuk perangkat konsumer seperti cable TV
Box. Dikarenakan perangkat tersebut tidak memiliki banyak memori, bahasa harus
berukuran kecil dan mengandung kode yang liat. Juga karena manufaktur- manufaktur
berbeda memilih processor yang berbeda pula, maka bahasa harus bebas dari
manufaktur manapun. Proyek diberi nama kode ”Green”.
Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap platform
mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth,
pencipta bahasa Pascal telah merancang bahasa portabel yang menghasilkan
intermediate code untuk mesin hipotesis. Mesin ini sering disebut dengan mesin maya
(virtual machine). Kode ini kemudian dapat digunakan di sembarang mesin yang
memiliki interpreter. Proyek Green menggunakan mesin maya untuk mengatasi isu
utama tentang netral terhadap arsitektur mesin.
Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi.
Java juga menyediakan beragam teknik pengamanan lain :
Sekarang, dalam textbox Selection, ketiklah nama file dari program Anda, yaitu
''Hello.java'', kemudian klik pada tombol SAVE. Sekarang Anda telah menyimpan file
Anda, ingatlah cara bagaimana nama frame dapat berubah dari ''Untitled Document 1
(modified) – gedit'' menjadi "Hello.java (~/MYJAVAPROGRAMS) – gedit". Jika Anda
ingin melakukan perubahan pada file Anda, Anda hanya perlu mengeditnya, kemudian
menyimpannya kembali dengan mengklik pada File->Save.
5.4 Errors
Apa yang telah ditunjukan sejauh ini adalah program Java dimana kita tidak
menemukan berbagai masalah dalam proses kompilasi maupun pada saat
menjalankannya. Bagaimanapun juga, hal ini tidak selalu terjadi. Seperti yang telah kita
diskusikan pada bagian pertama dari latihan ini, biasanya kita juga akan menemukan
permasalahan selama proses berlangsung.
Seperti yang telah didiskusikan sebelumnya, ada 2 macam error. Pertama adalah
compile-time error atau yang disebut juga sebagai syntax error. Kedua adalah runtime
errors.
Run-time error merupakan error yang tidak akan ditampilkan sampai Anda
menjalankan program Anda. Bahkan program yang dikompilasi dengan sukses dapat
menampilkan jawaban yang salah jika programmer belum berpikir sampai struktur dan
proses logis dari program tersebut.
Salah satu hal yang paling penting ketika seorang programmer melakukan
pengembangan aplikasi program adalah dokumentasi. Pendokumentasian kode
mungkin membosankan, tetapi akan menghidari pemborosan waktu di masa datang.
Dalam sebuah istilah dikatakan bahwa “Jika anda tidak dapat membaca kode anda
sekarang maka anda pasti tidak akan dapat memahaminya setahun mendatang”.
Karena program yang telah selesai dibuat belum tentu dapat langsung sempurna,
sesuai dengan yang diperlukan oleh penggunanya. Perlu adanya :
Akan tetapi, sering terjadi, dokumentasi spesifikasi program tidak dibuatkan oleh
perancang aplikasinya. Perancang aplikasi hanya menjelaskan tentang program,
spesifikasi program yang ada adalah spesifikasi secara lisan. Akibatnya adalah
seringkali program tidak sesuai dengan yang diinginkan, karena pemrogram bekerja
dengan mengandalkan ingatannya, bukan berdasarkan panduan dokumen spesifikasi.
Dokumentasi kode program, merupakan dokumentasi yang harus ada dalam program,
untuk memberikan penjelasan kepada setiap baris atau pun blok perintah dalam
program. Dokumentasi program diperlukan bagi programmer itu sendiri, untuk dapat
menelusuri logika program. Karena biasanya, pemrogram akan lupa akan alur
programnya sendiri. Apalagi jika sudah lama sudah ditinggalkan, karena mengerjakan
pekerjaan lain. Pada saat harus memperbaiki atau menyempurnakan, programmer
Cara menuliskan komentar harus mengikut kepada cara penulisan yang baku. Jika
menggunakan bahasa pemrograman Java, maka dapat menggunakan format yang
telah ditetapkan oleh javadoc.
Jika kita hanya memiliki dokumentasi kode program, maka kita dapat
mengambil dokumentasi dari kode program tersebut untuk menjadi seolah-olah
dokumentasi spesifikasi program. Kita harus menggunakan tools untuk melakukan
pengambilan dokumentasi kode program dengan menggunakan tools.
Agar dokumentasi dalam kode program dapat diambil oleh tools yang akan
digunakan, maka cara penulisan dokumentasi harus mengikuti standar tertentu. Jika
kita menggunakan Java, maka kita dapat menggunakan javadoc untuk mengambil
dokumentasinya. Untuk bahasa pemrograman lain ada juga toolsnya. Masing-masing
memiliki tools yang membantu untuk membuatkan dokumentasi dari dokumentasi
kode program. Beberapa tools yang umum digunakan adalah JavaDoc, DelphiDoc,
DoxyGen.
FOUND-SW
ITR-RECORD
VALID-TRAN-SW
1. DO 280-SEARCH-PART-NUMBER-
TABEL
2. IF not FOUND ITL-LINE
VALID-TRAN
Move ‘N’ to VALID-TRAN-SW
Move ‘*’ to mark error field in ITL-
LINE
Valid is:
ITR-UPDATE-CODE Must be ‘C’ 3
ITR-CUST-ORDER-NO Any data 3
ITR-ORDER-DATE Numeric with
ITR-ORDER-DAY day less than 32 3
ITR-ORDER-MONTH month less then 13
ITR-ORDER-YEAR year=current year or
Current year -1
Memuat driver
Class.forName(“com.mysql.jdbc.Driver”);
Mendefinisikan URL koneksi
String url = “jdbc:mysql:3306//localhost:/nama_db”;
Menetapkan koneksi
koneksi = DriverManager.getConnection(url,”user”, “password”);
Menciptakan Statement
Statement statement = connection.createStatement();
Mengeksekusi Query
String query = "SELECT * FROM tabel";
ResultSet resultSet = statement.executeQuery(query);
Menutup Koneksi
connection.close();
<h4>Driver Manager</h4>
<a href="ServletDMConnection">Test Koneksi Driver Manager (Servlet)
</a> <br/>
<a href="jspDMConnection.jsp">Test Koneksi Driver Manager (JSP)</a>
<br/>
package dm;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
out.println("</table></p>");
out.println("</body></html>");
}
@Override
public void destroy(){
}
11. Jalankan aplikasi. Klik link: Test Koneksi Driver Manager (Servlet)
12. Pada node Web Pages, buat file JSP dengan nama JspDMConnection.jsp
dengan kode seperti berikut.
<%
String url = "jdbc:mysql://localhost/tokobuku";
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-
8">
<title>Daftar Buku</title>
</head>
<body style="text-align:center;" bgColor=#ffff00 text=#0000ff>
<%
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url,"root","root");
st = con.createStatement();
rs =st.executeQuery("select * from buku");
%>
<p style="font-size:20pt;">Daftar Buku</p>
<table border="1" cellPadding="10" width="75%">
<tr>
<td>ID</td>
<td>Judul</td>
<td>Pengarang</td>
<td>Harga</td>
</tr>
<%
while(rs.next()){
id = rs.getString("id");
judul = rs.getString("judul");
pengarang = rs.getString("pengarang");
harga = rs.getString("harga");
%>
<tr style="text-align:left;">
<td><%=id%></td>
<td><%=judul%></td>
<td><%=pengarang%></td>
<td><%=harga%></td>
</tr>
<%
}
rs.close();//Close the result set
st.close();//Close statement
con.close(); //Close database Connection
}catch(Exception e){
out.println(e.getMessage());//Print trapped error.
}
%>
</table>
</body>
</html>
13. Jalankan aplikasi. Klik link: Test Koneksi Driver Manager (JSP)
14. Pada node Web Pages, buat file JSP dengan nama hapus.jsp dengan kode
seperti berikut.
<%
String url = "jdbc:mysql://localhost/tokobuku";
Connection con = null;
Statement st = null;
int hasil = 0;
String sql = new String();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-
8">
<title>Hapus buku</title>
</head>
<body style="text-align:center;" bgColor=#ffff00 text=#0000ff>
<%try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url,"root","root");
st = con.createStatement();
sql = "delete from buku where id = '" +
request.getParameter("id") + "'";
out.print(sql);
hasil = st.executeUpdate(sql);
if(hasil != 0) {
out.print("<br/>Berhasil menghapus");
} else {
out.print("<br/>Gagal menghapus");
}
st.close();//Close statement
con.close(); //Close database Connection
}catch(Exception e){
out.println(e.getMessage());//Print trapped error.
}
%>
</body>
</html>
http://localhost:8080/Jdbc/hapus.jsp?id=101
Sebelum membuat program sederhana ini, hal yang pertama perlu kita buat adalah
database yang akan kita gunakan. Misal kita akan membuat database UNIVERSITAS,
maka kita bisa menggunakan perintah :
Setelah membuat database, kita terlebih dahulu perlu membuat tabel MAHASISWA.
Kita dapat menggunakan perintah sebagai berikut untuk membuat tabel MAHASISWA.
Sekarang kita sudah punya sebuah tabel dengan nama MAHASISWA. Saatnya kita
lanjutkan membuat project Java-nya menggunakan NetBeans IDE.
Sama seperti sebelumnya, untuk membuat sebuah project dalam NetBeans IDE kita
dapat membuatnya menggunakan menu File -> New Project. Setelah itu pilih kategori
Java dan pilih tipe project -nya Java Application.
Setelah membuat project, saatnya membuat koneksi ke database UNIVERSITAS yang telah kita
buat sebelumnya. Jadi hal yang pertama kitalakukan adalah menambah driver MySQ ke dalam
project yang telah kita buat. Caranya klik kanan bagian Libraries project yang telah kita buat
lalu pilih Add Library.
Setelah keluar dialog Ne File, pilih kategori Java dan jenis file Java Package. Klik Next untuk
melanjutkan membuat package.
Setelah itu beri nama packagenya, misal program .universitas, setelah itu klik Finish
untuk membuat package-nya. Setelah membuat package program .universitas,
sekarang kita buat sebuah kelas untuk melakukan koneksi ke MySQL. Caranya klik
kanan package program .universitas lalu pilih Next -> Other.
Sekarang, saatnya melakukan proses pengkodean. Pertama buat sebuah variabel static
yang bertipe java.sql.Connection, kita menggunakan static agar nanti aplikasi dapat
mengakses koneksi secara langsung tanpa harus membuat object KoneksiDatabase.
package program.universitas;
import java.sql.Connection;
public class KoneksiDatabase {
private static Connection koneksi;
}
Setelah itu buat sebuah metode static getKoneksi(), metode ini digunakan untuk
mendapatkan koneksi itu sendiri.
package program.universitas;
import java.sql.Connection;
public class KoneksiDatabase {
private static Connection koneksi;
public static Connection getKoneksi() { return koneksi;
}
}
Pada program, kita tidak akan membuat program berbasis terminal (command line)
lagi, tapi kita akan membuat aplikasi berbasis GUI. Dalam java teknologi untuk
membuat program berbasis GUI disebut Java Swing. Sekarang untuk membuat sebuah
Form, kita harus membuat JFrame, caranya dengan klik kanan package program
universitas, lalu pilih New -> Other.
Dan untuk Alamat, gunakan komponen Text Area. Text Area hampir mirip dengan Text
Field, namun mendukung lebih dari satu baris. Untuk mengosongkan isi tulisan pada
NIM, Nama, Tanggal Lahir dan Jurusan, kosongkan atribut text pada setiap komponen
pada Properties-nya.