MAKALAH PEMROGRAMAN DASAR
1. Sejarah Java dan Pengertian Java
PENGERTIAN DAN SEJARAH JAVA
Pengenalan Java
CONTOH CONTOH PROGRAM ALGORITMA CM++
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.
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.
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.
TIPE
DATA
Pengertian Tipe DataTipe
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.
OPERATOR-OPERATOR
Pengertian Operator
adalah simbol yang digunakan dalam program untuk merubah suatu nilai. Dalam
program, operator digunakan untuk :
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
CONTOH CONTOH PROGRAM ALGORITMA CM++
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); Pinter
Tidak ada komentar:
Posting Komentar