MAKALAH PEMROGRAMAN DASAR
1.
Sejarah Java dan Pengertian Java
PENGERTIAN DAN SEJARAH JAVA
Pengenalan Java
Java adalah salah satu bahasa
pemrograman berorientasi objek (OOP-Object Oriented Programming). Paradigma OOP
menyelesaikan masalah dengan merepresentasikan masalah ke model objek.
Pemrograman Berorientasi Obyek (OOP)
Pemisalan Objek dalam OOP
Objek-objek dalam dunia nyata, mempunyai 2 karakteristik
khusus : Status dan Perilaku. Contohnya, sepeda punya status(jumlah gir, jumlah
pedal, dua buah ban) dan perilaku(mengerem, mempercepat,
ubah gir).
Bahasa yang berorientasi pada objek pun mempunyai
karakteristik yang sama dengan objek-objek di dunia nyata. Yaitu status yang
dalam bahasa pemrograman biasanya disimpan sebagai Variabel dan perilaku yang
diimplementasikan sebagai Method.
Sejarah Java
Dimulai pada tahun 1991 dibentuknya suatu tim yang diberi
nama green
Tim ini dipimpin oleh Patrick Naughton dan James Gosling
(Sekelompok insinyur Sun ).
Awalnya mereka ingin membuat suatu bahasa komputer yang
dapat digunakan oleh TV kabel ( Cable TV Box) yang memiliki memori kecil dan
setiap perusahaan memiliki tipe yang berbeda.
Untuk mengaplikasikan hal tersebut mereka menggunakan hal
yang pernah dicoba oleh bahasa pascal.
Sebelumnya Niclaus Wirth telah membuat sebuah bahasa yang
portable yang akan digunakan dalam mesin bayangan selanjutnya ini disebut
sebagai Virtual Mesin namun saat itu belum diumumkan.
Akhirnya tim green mengunakan ide ini akhirnya mereka
menciptakan Java Virtual Mesin.
Vitual mesin inilah yang menbuat java dapat dijalankan
diberbagai platform.
Pada tahun 1992 tim green membuat produknya yang diberi nama
*7 (Star Seven )
Namun produk ini gagal dipasaran.
Setelah itu dibuat produk yang baru. Inilah java, pada
awalnya bahasa pemrograman yang dibuat tersebut diberi nama “oak “ (Kemungkinan
nama ini diambil dari nama pohon yang ada didepan jendela James Gosling)
Namun setelah diperiksa ternyata nama oak sudah pernah
digunakan. Maka lahirlah nama “ Java “
Pada tahun 1993 sampai pertengahan 1994 tim green yang
mempunyai nama baru First person. Inc hanya menghabiskan waktu dengan
memperhatikan penjualan dari produknya. Ternyata tidak satupun orang ditemukan.
Akhirnya pada tahun 1994 First Person dibubarkan.
Pada tahun itu Web berkembang sangat pesat saat itu browser
yang banyak digunakan adalah Mosaic suatu broser yang gratis.
Dalam suatu wawancara pada pertengahan tahun 94 James
Gosling mengatakan “We could build a real cool browser. It was one of the few
things in the client/serve mainstream that needed some of the weird things we’d
done: architecture neutral, real-time,reliable, secure—issues that weren’t
terribly important in the workstation world. So we built a browser.”
Akhirnya dibuatlah suatu browser oleh Patrick Naughton dan
Jonathan Payne.
Browser itu diberi nama Hot Java. Browser ini dibuat dengan
menggunakan bahasa java untuk menunjukkan kemampuan dari java.
Yang tidak kalah hebatnya mereka juga membuat teknologi yang
disebut Aplet sehingga browser dapat menjalankan kode program didalam browser.
Inilah bukti dari teknologi itu yang ditunjukkan java pada
tanggal 25 mei 1995
Sejak saat itu browser java memberikan lisensinya kepada
browser lain untuk bisa menjalankan Applet dan pada tahun 1996 diberikan pada
Internet Explorer.
Akhirnya pada tahun 1996 dikeluarkan versi pertama dari java
dengan mengeluarkan java 1.02
Pada tahun 1998 dikeluarkan java 1.2 dan java mulai
mengeluarkan slogannya “Write once, Run anywhre “
Edisi Java
Java adalah bahasa yang dapat dijalankan dimanapun dan di
sembarang platform apapun, di beragam lingkngan : internet, intranets,consumer
electronic products, dan computer applications.The java 2 platform tersedia
dalam 3 edisi untuk keperluan berbeda. Untuk beragam aplikasi yang dibuat
dengan bahasa Java, java dipaketkan dalam edis – edisi berikut :
1.Java 2 Standard Edition ( J2SE )
2.Java 2 Enterprise dition ( J2EE )
3.Java 2 Micro Edition ( J2ME )
Masing – masing edisi berisi Java 2 Software Development Kit
( J2SDK ) untuk mengembangkan aplikasi dan Java 2 Runtime Environent ( J2RE )
untuk menjalankan aplikasi.
Kelebihan Java di bandingkan dengan C++
Pembuat program java telah merancang java untuk
menghilangkan pengalokasian dan dealokasi memori secara manual, karena java
memiliki Garbage Collection
Diperkenalkannya deklarasi array yang sebenarnya dan
menghilangkan aritmatika pointer. Hal ini yang sering menyebabkan memori
overwrite.
Dihilangkannya multiple inheritance, mereka menggantinya
dengan interface.
Kelebihan dan Kekurangan
Pengertian Java
Java adalah bahasa pemrograman yang multi platform dan multi
device. Sekali anda menuliskan sebuah program dengan menggunakan Java, anda
dapat menjalankannya hampir di semua komputer dan perangkat lain yang support
Java, dengan sedikit perubahan atau tanpa perubahan sama sekali dalam kodenya.
Aplikasi dengan berbasis Java ini dikompulasikan ke dalam p-code dan bisa
dijalankan dengan Java Virtual Machine. Fungsionalitas dari Java ini dapat
berjalan dengan platform sistem operasi yang berbeda karena sifatnya yang umum
dan non-spesifik.
Slogan Java adalah “Tulis sekali, jalankan di manapun”.
Sekarang ini Java menjadi sebuah bahasa pemrograman yang populer dan
dimanfaatkan secara luas untuk pengembangan perangkat lunak. Kebanyakan
perangkat lunak yang menggunakan Java adalah ponsel feature dan ponsel pintar
atau smartphone.
Kelebihan dan kekurangan Java
Setelah membahas mengenai pengertian java, selanjutnya kita
membahas mengenai kelebihan dan kekurangan java. Kelebihan Java yang pertama
tentu saja multiplatform. Java dapat dijalankan dalam beberapa platform
komputer dan sistem operasi yang berbeda. Hal ini sesuai dengan slogannya yangs
udah dibahas sebelumnya. Yang kedua adalah OOP atau Object Oriented
Programming. Java memiliki library yang lengkap. Library disini adalah sebuah
kumpulan dari program yang disertakan dalam Java. Hal ini akan memudahkan
pemrograman menjadi lebih mudah. Kelengkapan library semakin beragam jika
ditambah dengan karya komunitas Java.
Setiap hal pasti memiliki kelebihan dan kekurangan.
Kekurangan yang dimiliki oleh Java adalah pada satu slogannya, takni “Tulis
sekali dan jalankan dimana saja” ternyata tidak sepenuhnya benar. Beberapa hal
harus disesuaikan jika dijalankan pada platform yang berbeda. Misalnya untuk
J2SE dengan platform SWT-AWT bridge tidak dapat berfungsi di Mac OS X.
Kekurangan lainnya adalah kemudahan aplikasi Java didekompilasi. Dekompilasi
adalah suatu proses membalikkan sebuah aplikasi menjadi kode sumbernya. Hal ini
memungkinkan terjadi pada Java karena berupa bytecode yang menyimpan bahasa
tingkat tinggi. Hal ini terjadi pula pada platform .NET dari Microsoft sehingga
program yang dihasilkan mudah dibajak kodenya karena sulit untuk disembunyikan.
Kekurangan Java yang lain adalah penggunaan memori yang
cukup banyak, lebih besar daripada bahasa tingkat tinggi sebelum generasi Java.
Namun hal ini memang sesuai dengan fitur beragam yang dimiliki oleh Java.
Masalah memori ini juga tidak dialami oleh semua pengguna aplikasi Java. Mereka
yang sudah menggunakan perangkat keras dengan teknologi terbaru tidak merasakan
kelambatan dan konsumsi memori Java yang tinggi. Lain halnya dengan mereka yang
menggunakan teknologi lama atau komputer yang sudah berumur tua lebih dari
empat tahun akan merasakan adanya kelambatan. Namun apapun kelemahan yang
dimiliki Java, faktanya adalah Java merupakan bahasa pemrograman yang populer
dan digunakan di seluruh dunia saat ini.
2.
VARIABEL
Menurut Freddy Rankuti, pengertian variabel adalah sebuah
konsep yang memiliki nilai yang bervariasi, maka nilai variabel dapat dibedakan
menjadi empat tingkatan skala, yaitu rasio, ordinal, nominal dan internal.
Menurut Sutrisno Hadi, definisi variabel adalah variasi dari
objek penelitian, seperti ukuran tinggi manusia yang divariasikan menjadi
tingkatan umur, kelamin bahkan lokasi tinggal manusia tersebut.
Pengertian variabel menurut Bagja Waluya: Variabel adalah
konsep yang tidak pernah ketinggalan dalam setiap eksperimen/penelitian
(research). Variabel diartikan sebagai gejala yang memiliki variasi.
Menurut Tia Mutiara, Variabel adalah sesuatu yang menjadi
fokus perhatian (center of attention) atau pusat yang memberikan pengaruh
(effect) dan mempunyai nilai (value). Hal ini membuat variabel dapat
berubah.Variabel dapat disebut juga sebagai peubah. Objek penelitian yang dapat
menentukan hasil penelitian juga merupakan variabel.
Pengertian Variabel menurut Robbin Pearson, bahwa variabel
adalah semua karakteristik umum yang dapat diukur (measurable) dan dapat
berubah dalam intensitas, keluasan atau keduanya.
Menurut Sugiarto, Definisi variabel adalah karakter yang
akan diobservasi dari unit amatan yang merupakan suatu pengenal atau atribut
dari sekelompok objek. Ciri dari variabel yang dimaksud adalah terjadinya
variasi antara objek yang satu dengan objek lainnya dalam kelompok tertentu.
Definisi Variabel menurut Eddy Soeryanto Soegoto, variabel
adalah objek penting (main object) dalam riset pemasaran. Hal ini penting
karena riset tidak dapat terlaksana tanpa adanya variabel.
Variabel juga dapat berarti
sarana untuk memperoleh pemahaman terhadap masalah (problem) yang sedang
diteliti secara benar. Dengan menggunakan variabel-variabel tertentu, peneliti
menguji benar atau tidaknya asumsi dan rumusan masalah yang sebelumnya sudah
dibuat
Variabel dapat dibagi menjadi variabel kuantitatif dan
variabel kualitatif. Variabel kuantitatif diklasifikasikan menjadi 2 kelompok,
yaitu variabel diskrit (discrete) dan variabel kontinu (continous).
Variabel adalah suatu besaran yang dapat diubah atau berubah
sehingga mempengaruhi peristiwa atau hasil penelitian. Dengan menggunakan
variabel, kita akan mmeperoleh lebih mudah memahami permasalahan. Hal ini
dikarenakan kita seolah-olah seudah mendapatkan jawabannya. Biasanya bentuk
soal yang menggunakan teknik ini adalah soal counting (menghitung) atau
menentuakan suatu bilangan. Dalam penelitian sains, variable adalah bagian
penting yang tidak bisa dihilangkan.
Macam Macam Variabel
Variabel Independen.
Variable ini sering disebut sebagai variabel predictor, variabel pengaruh, kausa,
variabel perlakuan, treatment, variabel risiko, stimulus, dan juga dikenal
sebagai variabel bebas dan variabel predictor.
Variabel ini merupakan variabel yang menjadi sebab
terjadinya perubahan atau mempengaruhi timbulnya variabel terikat (dependen). Oleh
karena itu, variabel ini disebut variabel bebas (independent). Variabel bebas
juga sering tuliskan dalam Structural Equation Modelling sebagai variabel eksogen.
Variabel Dependen sering disebut sebagai variabel konsekuen,
variabel kriteria, variabel pengaruh, terikat, tergantung, dan variabel output.
Berbeda dengan variabel independet, variabel dependen dalam
SEM atau permodelan persamaan struktural, variabel independen juga dikenal
sebagai variabel indogen.
Alasan variabel dependen disebut variabel terikat adalah
karena setiap variabel independen akan
mempengaruhi variabel terikat / independen
Variable Moderator: Pengertian Variabel Moderator adalah
variabel yang berpengaruh baik itu memperkuat maupun memperlemah hubungan (relation) antara variabel bebas dan
variabel terikat.
Variabel independen kedua merupakan nama lain untuk variabel
moderator.
Variabel Intervening
Pengertian variabel intervening adalah variabel yang secara
teoritis mempengaruhi hubungan (relation) antara variabel bebas dengan variabel
terikat, tetapi tidak dapat diamati dan diukur.
Variabel ini merupakan variabel penyela/Antara yang terletak
diantara variabel bebas dan bariabel terikat, sehingga Variabel Bebas tidak
secara langsung mempengaruhi berubahnya atau timbulnya Variabel Terikat.
Contoh :
Tinggi rendahnya pendapatan akan mempengaruhi secara tidak
langsung terhadap umur harapan hidup. Di sini ada variabel antaranya yaitu yang
berupa gaya hidup seseorang. Antara variabel penghasilan dan gaya hidup
terdapat variabel moderator yaitu Budaya Lingkungan Tempat Tinggal.
3.TIPE DATA
Pengertian Tipe Data
Tipe Data menunjukkan suatu nilai yang dapat digunakan oleh
suatu variable yang bersangkutan.
Tipe Data dalam Pascal :
Tipe Data Sederhana
Tipe data sederhana merupakan tipe data dasar yang sering
dipakai oleh program.
Tipe Data Standar
Meliputi :
Integer : merupakan tipe data untuk menyimpan bilangan
bulat.
Real : merupakan tipe data untuk menyimpan bilangan real
atau pecahan.
Char : merupakan sebuah karakter yang ditulis diantara tanda
petik tunggal. Ex : ‘A’, ‘a’, ’5′ dll.
String : merupakan urut-urutan dari beberapa karakter yang
terletak di antara tanda petik tunggal.
Boolean : merupakan tipe data logika, yang berisi dua
kemungkinan nilai : TRUE atau FALSE.
Tipe data didefinisikan pemakai
Tipe Data Terstruktur
Meliputi :
Array : merupakan tipe data berindeks yang terdiri dari satu
atau lebih elemen atau komponen yang memiliki tipe data yang sama.
(mendeklarasikan kumpulan variabel yang bertipe sama).
Record : merupakan tipe data yang digunakan untuk
merepresentasikan kumpulan elemen atau komponen yang memiliki satu jenis atau
lebih tipe data. Tiap element disebut juga field atau property atau attribute.
File : merupakan tipe data yang digunakan untuk mengakses
file.
Set : merupakan tipe data yangdigunakan untuk menyimpan
kumpulan nilai ( disebut juga anggota himpunan) yang bertipe sama.
Tipe Data Pointer
Tipe data pointer merupakan variabel khusus yang berisi suatu
address (alamat) di lokasi lain didalam memory. Suatu variabel yang
points(menunjuk) ke sesuatu sehingga disebut pointer. Ada dua macam pointer:
Typed(tertentu) : merupakan pointer yang menunjuk pada tipe
data tertentu pada variable.
Generic (umum) : merupakan pointer yang tidak menunjuk pada
tipe data tertentu pada variable.
4.OPERATOR-OPERATOR
3.
Pengertian Operator
Operator adalah simbol yang digunakan dalam program untuk
merubah suatu nilai. Dalam program, operator digunakan untuk :
4. Mengalikan nilai dua variabel
Menginisialisasi nilai pada variabel
Membandingkan nilai dalam dua variabel, dsb.
Macam-macam Operator :
Operator Aritmatika : Operator yang digunakan untuk
melakukan perhitungan perhitungan Matematika.
5. Operator Kegunaan
6. +
Penjumlahan
7. –
Pengurangan
8. *
Perkalian
9. /
Pembagian bilangan real
10. mod Sisa
bagi
11. div
Pembagian bilangan bulat
12. Operator
Logika : Operator yang digunakan untuk menghubungkan dua atau lebih ungkapan
menjadi sebuah ungkapan berkondisi. Hasilnya adalah benar (TRUE) atau salah
(FALSE).
13. Operator
Kegunaan
14. AND Dan
15. OR Atau
16. XOR Salah
Satu Benar
17. NOT Tidak/Negasi
18. Operator
Relasional : Operator yang digunakan untuk membandingkan hubungan antara dua
buah operand (sebuah nilai atau variable).
19. Operator
Kegunaan
20. = Sama
Dengan
21. <>
Tidak Sama Dengan
22. <
Lebih Kecil
23. <=
Lebih Kecil Sama Dengan
24. >
Lebih Besar
25. >=
Lebih Besar Sama Dengan
5.CONTOH-CONTOH PROGRAM
CONTOH CONTOH PROGRAM ALGORITMA C++
pointer secara sederhana bisa diartikan sebagai tipe data
yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat
memori).
Penjelasan tentang pointer
pointer adalah built-in type di C dan C++, dimana C++
mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan
“Abstract C Machine”, yaitu model mesin abstrak dimana program C bekerja.
Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki prosesor
untuk menginterpretasikan stream of instruction, dan addressable memory yang
terbagi kedalam 3 bagian : automatic memory, static memory dan free memory.
Addressable memory adalah memory yang konten-nya dapat diambil jika diketahui
alamatnya. Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil
dengan waktu konstan, tidak peduli berapa nilaialamat.Hal ini disebut dengan
Random Access Memory.
Penggunaan Awal Pointer
Jika variabel merupakan isi memori, dan untuk mengakses isi
memori tersebut diperlukan address, lalu bagaimana cara kita mengetahui alamat
dari suatu variabel ? Jawabannya adalah : untuk kebanyakan kasus kita sama
sekali tidak perlu tahu alamat dari sebuah variabel. Untuk mengakses sebuah
variabel kita hanya perlu nama dari variabel tersebut. Tugas kompiler lah yang
mentranslasikan nama ke alamat mesin yang diperlukan oleh komputer.
Akan tetapi terdapat beberapa kasus dimana kita tidak
mungkin memberi nama pada sebuah entitas di program kita. Hal ini terjadi
terutama saat kita menggunakan data struktur dinamis seperti linked list,
resizeable array, tree dan lain sebagainya. Hal ini karena kita tidak mungkin
memberi nama terhadap entitas yang mungkin ada atau tidak ada. Struktur seperti
linked list hampir mustahil dibuat tanpa pointer tanpa harus mendefinisikan
LISP-like list.
Inilah awal mula penggunaan pointer sebagai moniker. Istilah
moniker di sini berarti sesuatu yang menunjuk atau mengacu kepada entitas lain.
Istilah moniker ini bukanlah istilah standard dan lazim , tetapi sesuatu yang
saya pilih impromptu untuk membedakan dengan pointer atau reference yang sudah
memiliki arti tersendiri.
Penggunaan lain pointer sebagai moniker adalah untuk
mengatasi kelemahan bahasa C awal : Dahulu fungsi – fungsi di C hanya mengerti
pass by value. Pointer digunakan untuk mengemulasi pass by reference karena
pointer berisi alamat ke objek lain, sehingga fungsi tersebut dapat mengubah
objek tersebut dengan memanipulasi pointer.
Pertanyaanya : siapa yang bertugas menentukan alamat objek
yang di tunjuk oleh pointer dalam kasus ini ? jelas bukan kompiler karena objek
tersebut tidak bernama. Apakah kita sebagai programmer menentukannya sendiri ?
ternyata tidak. Hal tersebut ditentukan oleh fungsi malloc dan sejenisnya (dan
juga new di C++), atau untuk kasus passing pointer ke dalam fungsi, operator
&. Jadi dalam hal ini kita tidak juga menentukan alamat sebuah objek.
/**
* pointer.c – contoh penggunaan pointer
* coded by void ;)
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
if (argc < 2) { /* periksa
parameter yang diberikan */
printf(“aturan pakai: %s <nama>\n”, argv[0]); /* jika
parameter tidak ada tampilkan help */
exit(1); /* keluar
*/
}
printf(“hello %s :)\n”, argv[1]); /* tampilkan pesan dan
parameter */
return 0; /*
keluar */
}
Linked list
Linked list adalah suatu cara untuk menyimpan data dengan
struktur sehingga programmer dapat secara otomatis menciptakan suatu tempat
baru untuk menyimpan data kapan saja diperlukan. Linked list (list bertaut)
merupakan salah satu struktur data dasar yang sangat fundamental dalam bidang
ilmu komputer.Secara rinci, programmer dapat menulis suatu struct atau definsi
kelas yang berisi variabel yang memegang informasi yang ada di dalamnya, dan
mempunyai suatu pointer yang menunjuk ke suatu struct sesuai dengan tipe
datanya. Linked list mirip dangan array, kecuali pada linked list data yang
ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian
program (run-time).
Pada array, apabila programmer ingin menyimpan data,
programmer diharuskan untuk mendefinisikan besar array terlebih dahulu,
seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal
ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila
programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak
dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah
salah satu struktur data yang mampu menutupi kelemahan tersebut. Struktur
dinamis ini mempunyai beberapa keuntungan disbanding struktur array yang
bersifat statis. Struktur ini lebih dinamis, karena banyaknya elemen dengan
mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat
tetap. Disamping itu, manipulasi terhadap setiap elemen seperti menyisipkan,
menghapus, maupun menambah dapat dilakukan dengan lebih mudah.
Secara umum linked list tersusun atas sejumlah bagian-bagian
data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list
dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin
kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah
pointer.
——– ——– ——–
Mesin Data Data
——– ——– ——–
(kepala) —> Pointer —> Pointer —
——– ——– ——–
Programmer membaca data menyerupai kondektur yang ingin
memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya,
dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai
gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong
(NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data
bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan
terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n
(index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked
list programmer harus menyusuri data sebanyak n terlebih dahulu.
Bentuk umum:
Typedef struct telmlist
{
infotype info;
address next;
} elmtlist;
infotype: sebuah tipe terdefinisi yang menyimpan informasi
sebuah elemen list
next: address dari elemen berikutnya(suksesor)
Jika L adalah list, dan P adalah address, maka alamat elemen
pertama list L dapat diacu dengan notasi:
First(L)
Sebalum digunakan harus dideklarasikan terlebih dahulu:
#define first(L)
Elemen yang diacu oleh P dapat dikonsultasi informasinya
dengan notasi:
Info (P) deklarasi #define info(P) (P)->info
Info(P) deklarasi #define next(P) (P)->next
Beberapa definisi:
1. List l adalah list kosong, jika First(L)=Nil
2. Elemen terakhir dikenali, dengan salah satu cara adalah
karenaNext(Last)=Nil
Nil adalah pengganti Null, perubahan ini dituliskan dengan
#define Nil Null
Untuk lebih memahami konsep linked list, perhatikan
permasalahan berikut ini:
Misalkan kita diminta untuk membuat suatu algoritma dan
program untuk memasukkan 2 buah daftar ke dalam suatu daftar atau senarai
(linked list), dimana senarai tersebut masih kosong, sehingga setelah anda
memasukkan 2 buah data tersebu, senarai tersebut berisi 2 buah data.
Algoritma dari permasalahan diatas adalah sebagai berikut:
1. Tentukan struktur untuk menampung data yang dimasukkan
2. Senarai masih dalam keadaan kosong
3. Tentukan fungsi untuk memasukkan data ke dalam senarai
4. Fungsi untuk memasukkan data ke dalam senarai adalah:
if(p==NULL){
t-> next=*s;
*s=t;
5. Masukkan data tersebut ke dalam senarai
6. Tampilkan data
7. Selesai
Implementasi dari algoritma diatas pada program adalah
sebagai berikut:
//Program:link1.cpp
#include
#include
#include
typedef struct nod
{ int data; struct nod *next; } NOD, *NODPTR; void
CiptaSenarai(NODPTR *s)
{ *s=NULL;}
NODPTR NodBaru(int m)
{
NODPTR n;
n=(NODPTR) malloc(sizeof(NOD));
if(n!=NULL)
{ n-> data=m; n->next=NULL; } return n; } void
SisipSenarai(NODPTR *s, NODPTR t, NODPTR p)
{ if(p==NULL)
{t->next=*s;*s=t;}else
{bnt->next=p->next; p->next=t; }
void CetakSenarai (NODPTR s)
{ NODPTR ps; for (ps=s;ps!=NULL; ps=ps->next) printf(“%d–>”,ps->data);printf(“NULL\n”);}int
main()
{ NODPTR pel; NODPTR n; CiptaSenarai(&pel);n=NodBaru(55);
SisipSenarai(&pel, n, NULL); n=NodBaru(75); SisipSenarai(&pel, n,
NULL); CetakSenarai(pel);return 0;}
Bila program di atas dijalankan, maka hasilnya adalah
sebagai berikut:
75->55->NULL
Penjelasan:
Untuk menciptakan dan menyisipkan linked list atau senarai
ini, prosesnya adalah sebagai berikut:
void CiptaSenarai(NODPTR *s)
{*s=NULL;}
NODPTR NodBaru(int m)
{
NODPTR n;
n=(NODPTR) malloc(sizeof(NOD));
if(n!=NULL)
{
n-> data=m;
n->next=NULL;
}
Proses menyisipkan:
void SisipSenarai(NODPTR *s, NODPTR t, NODPTR p)
{
if(p==NULL)
{
t->next=*s;
*s=t;
}
else
{
t->next=p->next;
p->next=t;
}
}
Berikut contoh program sorting paling komplit.
contoh program c++ :
#include <iostream.h>
#include <conio.h>
int data[100],data2[100];
int n;
void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}
void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}
void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<”selection sort selesai!”<<endl;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”<<endl;
}
void QuickSort(int L, int R) //the best sort i’ve ever had
{
int i, j;
int mid;
i = L;
j = R;
mid = data[(L+R) / 2];
do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;
if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);
if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}
void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “;
cin>>data[i];
data2[i] = data[i];
}
}
void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}
void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}
void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<”
Pilihan Anda = “; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}getch();}while(pil!=9);}
Komentar
Posting Komentar