bahasa pemograman adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer.
Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil dalam berbagai situasi.
Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:
Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bahasa Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.
Sebagian besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat Rendah.
Untuk melaksanakan tugas maka komputer akan diperintah oleh sebuah sistem, perintah dasar komputer ini disimpan ke dalam sebuah sistem yang disebut sebagai sistem operasi seperti DOS, Unix, Windows, Linux, Solaris dsb. Perintah-perintah tersebut tentunya menggunakan bahasa mesin yang oleh komputer hanya mengenal angka 1 dan 0 (binary) dimana angka 1 dipresentasikan sebagai sebuah wadah yang mimiliki listrik dan angka 0 tidak memiliki listrik (Tegangan).
Untuk membuat sebuah sistem dikomputer maka diperlukan sebuah alat (tools) yang kita sebut sebagai bahasa pemrograman, jadi yang terlintas dibenak kita saat ini adalah “Alat yang dibuat untuk membuat program (sistem) disebut sebagai bahasa pemrograman”, sehingga Program-Program seperti Macro/Turbo Assembly, Turbo C, Microsft Visual C++, C++ Builder, Microsoft Visual Basic, Delphi dsb digunakan untuk membuat aplikasi bukan sebagai aplikasi untuk mengolah data seperti Microsoft Excel, SPPS dsb.
Atau dapat juga dikatakan bahwa bahasa pemrograman adalah bahasa yang digunakan pada komputer untuk melakukan tugas tertentu. Seperti juga bahasa yang digunakan manusia secara umum, bahasa pemrograman banyak sekali jenisnya.
Bahasa pemrograman dapat dikelompokkan berdasarkan tingkatan, seperti bahasa tingkat rendah (low Level), bahasa tingkat sedang (Mid Level Language), bahasa tingkat tinggi .
klik link berikut
Perkembangan Bahasa Pemrograman
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Ilustrasi Linked List
- Setiap node pada linked list mempunyai field yang berisi pointer ke node
berikutnya, dan juga memiliki field yang berisi data.
- Pada akhir linked list, node terakhir akan menunjuk ke NULL yang akan
digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list
berikut materi tentang single linked list non circular
Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambungmenyambung, dinamis dan terbatas.
- Linked List sering disebut juga Senarai Berantai
- Linked List saling terhubung dengan bantuan variabel pointer
- Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct
yang terdiri dari beberapa field.
Single Linked List adalah sebuah LINKED LIST yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data dengan metode LINKED LIST, suatu daftar isi yang saling berhubungan.
klik link berikut untuk mengunduh amteri yang lebih lengkap
single linked list circular
- Linked List sering disebut juga Senarai Berantai
- Linked List saling terhubung dengan bantuan variabel pointer
- Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct
yang terdiri dari beberapa field.
Single Linked List adalah sebuah LINKED LIST yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data dengan metode LINKED LIST, suatu daftar isi yang saling berhubungan.
klik link berikut untuk mengunduh amteri yang lebih lengkap
single linked list circular
Function recursive adalah sebuah function yang berisi definisi serta memanggil dirinya sendiri dan hanya dapat menyelesaikan base case saja dan apabila tidak ada base case, maka masalah akan dipecahkan ke masalah yang lebih kecil dan kemudian function akan bekerja pada masalah yang lebih kecil tersebut serta pelan-pelan masalah-masalah yang kecil tersebut akan menjadi base case sehingga dapat dipecahkan.
Keuntungan:
- dapat membuat function yang lebih singkat apabila dibandingkan dengan function biasa (iteration function)
Kelemahan:
- banyak memakan memory
- apabila nilai yang dikerjakan oleh function tersebut sangat besar, maka kinerjanya akan menjadi lambat dibandingkan dengan function biasa.
- program menjadi sulit dibaca
- seringkali tidak bisa berhenti sehingga memory akan terpakai habis dan program bisa menjadi hang.
untuk lebih jelasnya, silahkan klik link berikut
recursive function
Double Linked List Non Circular
Double Linked List Non Circular
DLLNC "Double linked list non circular" adalah Double Linked List yang memiliki 2 buah pointer yaitu pointer next dan prev.
Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya.
Pengertian:
Double : artinya field pointer-nya dua buah dan dua arah, ke node sebelum dan sesudahnya.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Non Circular : artinya pointer prev dan next-nya akan menunjuk pada NULL.
klik link berikut untuk mengunduh materi d atas
Double Linked List Circular
- Double: artinya field pointer-nya terdiri dari dua buah dan dua arah, yaitu prev dan next
- Linked List: artinya node-node tersebut saling terhubung satu sama lain.
- Circular: artinya pointer next dan prev-nya menunjuk ke dirinya sendiri
• Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya
• Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke dirinya sendiri.
• Jika sudah lebih dari satu node, maka pointer prev akan menunjuk ke node sebelumnya, dan pointer next akan menunjuk ke node sesudahnya.
berikut adalah materi tentang Double Linked List Circular
http://www.4shared.com/office/ZvYjDbYiba/double_linked_list_circular.html
Pointer
adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu.
Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau
null jika tidak berisi data.
Pointer
yangtidak
diinisialisasi disebut dangling pointer
Lokasi memori tersebut bisa diwakili sebuah variabel atau dapat juga berupa nilai alamat memori secara langsung.
Fungsi/function adalah bagian dari program yang memiliki nama tertentu yang unik, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan/memanggil fungsi tersebut.
http://www.4shared.com/office/0Fejk6buba/Pointer_dan_Function.html
ARRAY
Array adalah suatu tipe data terstruktur
yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan
diberi suatu nama tertentu.
Array
dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.
DEKLARASI
tipe_data nama_var_array
[ukuran];
tipe_data
: menyatakan jenis
tipe data elemen larik (int, char, float, dll)
nama_var_array
: menyatakan nama variabel yang
dipakai.
ukuran
: menunjukkan
jumlah maksimal elemen larik.
Contoh :
Int
nilai[6];
INISIALISASI
Menginisialisasi
array sama dengan memberikan nilai awal array pada saat didefinisikan.
int
nilai[6] = {8,7,5,6,4,3};
Contoh diatas berarti berarti anda
memesan tempat di memori komputer sebanyak 6 tempat
dengan indeks dari 0-5, dimana indeks
ke-0 bernilai 8, ke-1 bernilai 7, dst, dan dimana semua elemennya bertipe data
integer.
PENGAKSESAN
nama_var_array [indeks];
Pengisian
dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset
nilai atau menampilkan nilai pada indeks yang dimaksud. Pengaksesan elemen
array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara
langsung.
Contoh
:
#include
<stdio.h>
void
main ()
{
int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
printf("%d",result);
}
Contoh :
#include
<stdio.h>
#include
<conio.h>
void
main ()
{
int A [5]={20,9,1986,200,13},n,edit;
clrscr();
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\nData yang baru : \n");
A[0]=4;
A[1]=2;
A[2]=1;
A[3]=3;
A[4]=5;
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
}
Contoh :
#include
<stdio.h>
#include
<conio.h>
void
main ()
{
int A [5]={20,9,1986,200,13},n;
clrscr();
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("\nData yang baru : \n");
for (n=0;n<4;n++)
{
printf("%i ",A[n]);
}
}
Contoh :
#include
<stdio.h>
#include
<conio.h>
void
main ()
{
int A [5]={20,9,1986,200,13},n,hapus;
clrscr();
printf("Data yang lama\n");
for (n=0;n<5;n++)
{
printf("%i ",A[n]);
}
printf("data yang ingin dihapus :
");
scanf("%i",&hapus);
printf("\nData yang baru : \n");
for (n=hapus-1;n<5-1;n++)
{
A[n]=A[n+1];
}
for (n=0;n<4;n++)
{
printf("%i ",A[n]);
}
}
LATIHAN
- Buatlah fungsi untuk array 1 dimensi untuk ADD, EDIT, DELETE, dan VIEW.
STRUCT
- Bentuk struktur data yang dapat menyimpan variabel-variabel dalam 1 nama, namun memiliki tipe data yang berbeda ataupun sama. Variable-variabel tersebut memiliki kaitan satu sama yang lain.
Bentuk umum :
typedef struct nama_struct{
tipe_data <nama_var>;
tipe_data <nama_var>;
....
};
Ada 2
cara pendeklarasian struct, yaitu :
Deklarasi 1:
typedef struct Mahasiswa {
char NIM[8];
char nama[50];
float ipk;
};
Deklarasi 2 :
struct {
char NIM[8];
char nama[50];
float ipk;
} mhs;
contoh
#include
<stdio.h>
#include
<iostream.h>
void
main()
{
struct orang
{
char nama[40];
short umur;
}saya;
printf("nama : ");
cin.getline(saya.nama,40);
printf("umur :" );
scanf("%i",&saya.umur);
printf("%s berumur
%i",saya.nama,saya.umur);
}
ARRAY OF
STRUCT
Apabila hendak
menggunakan 1 struct untuk beberapa kali, ada 2 cara :
- Deklarasi manual
Contoh :
#include <stdio.h>
typedef struct Mahasiswa {
char NIM[8];
char nama[50];
float ipk;
};
void main()
{
Mahasiswa a,b,c;
……
……
……
}
artinya struct mahasiswa digunakan untuk 3 variabel, yaitu a,b,c
2. Array of struct
Contoh :
typedef struct Mahasiswa {
char NIM[8];
char nama[50];
float ipk;
};
void main()
{
Mahasiswa mhs[3];
……
……
……
}
artinya struct mahasiswa digunakan untuk
mhs[0], mhs[1], dan mhs[2]
Contoh :
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
typedef struct orang
{
char nama[30];
short umur;
};
void main()
{
orang saya[5];
int i,x;
for(i=0;i<=4;i++)
{
printf("nama ke-%i : ",i+1);
cin.getline(saya[i].nama,30);
printf("umur ke-%i : ",i+1);
scanf("%i",saya[i].umur);
printf("%s berumur
%i",saya[i].nama,saya[i].umur);
}
for(x=0;x<=4;x++)
{
printf("nama %s berumur
%d",saya[x].nama,saya[x].umur);
}
}
SEARCHING ARRAY
Sesuai dengan judulnya, dalam modul ini kita akan membahas proses pencarian / searching data pada suatu array / barisan data. Jika diketahui ada sebuah array / barisan data bernama A yang menampung 10 data yang bertipe integer sbb A={1,2,3,4,8,5,7,9,6,0} dan kita diberi tugas untuk mencari beberapa data misal:
· Jika data yang akan dicari dalam array A adalah 6, maka dengan cepat dapat kita ketahui bahwa data 6 ada dalam array A pada index ke-9 (index pada array dimulai dari 0)
· Sedangkan jika data yang akan dicari dalam array A adalah 12, maka dapat disimpulkan bahwa array A tidak memiliki data 12 tersebut.
Nah, kita sudah memahami proses pencarian data yang sederhana tersebut dalam pikiran kita, sekarang permasalahannya adalah bagaimana mengimplementasikannya kedalam program ?.
Pada umumnya dikenal dua metode searching antara lain : Sequensial search dan binary search, Untuk lebih memahami kedua metode ini lebih baik kita mulai dari metode yang paling sederhana terlebih dahulu yaitu sequensial search.
Sequensial search
Disebut juga sebagai metode pencarian urut adalah metode pencarian yang paling mudah. Bayangkan saja jika anda dihadapkan pada sebuah rak buku, dan anda diberi tugas untuk mencari sebuah buku dari rak tersebut. Sudah tentu anda akan mulai mencarinya satu – persatu entah itu dari atas atau dari bawah sampai buku yang dimaksud ketemu.
Singkatnya sequential search memiliki proses sebagai berikut:
· Tentukan banyaknya data yang akan di olah, missal banyak data adalah N.
· Tentukan data apa yang akan dicari, missal data yang akan dicari adalah C.
· Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal counternya adalah K.
· Inisialisasikan K =0
· Lakukanlah perulangan sebanyak N kali
· Dalam tiap proses perulangan tersebut periksalah apakah data yang sedang
·
· diolah sama dengan data yang dicari.
· Jika ternyata sama K=K+1
· Jika tidak, lanjutkan proses perulangan .
· Setelah proses perulangan berhenti, periksalah nilai K.
· Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan nilai K ke layer sebagai jumlah data yang ditemukan.
· Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan ke layar bahwa data tidak ditemukan
· Proses selesai.
Dapat disimpulkan bahwa sequential search, akan mencari data dengan cara membandingkannya satu-persatu dengan data yang ada. Prosesnya tentu saja akan singkat jika data yang diolah sedikit, dan akan lama jika data yang diolah banyak. Disarankan proses ini digunakan pada jumlah data yang sedikit saja.
GAMBARAN KERJA
Pada program diatas jumlah data yang akan diolah berjumlah 10 data dan disimpan kedalam array A[10] yang bejenis integer, array index[10] digunakan untuk mencatat index pada array A dimana data ditemukan daya tampung array sama dengan array A karena ada kemungkinan data yang akan dicari adalah semua data yang ada dalam array A. sedangkan variable I digunakan sebagai counter dalam proses perulangan, variable j digunakan sebagai counter untuk menghitung jumlah data yang ditemukan dan variable k digunakan untuk menyimpan data yang akan dicari.
Proses pertama adalah memasukkan data-data yang akan diolah ke dalam array A dan data yang akan dicari ke dalam variable K. setelah itu akan dilakukan perulangan sebanyak data yang ada dalam array A untuk mencari apakah ada data dalam variable K didalam array A, jika ada maka counter j akan mencatat jumlahnya dan array index akan mencatat pada index ke berapa data tersebut ditemukan. Setelah proses perulangan selesai, tampilkanlah hasil yang terdapat pada variable j dan array index ke layer.
Gambaran kerja program (Perhatikan koding diatas agar lebih jelas)
Misalkan pada perulangan yang pertama kita masukkan data sebagai berikut:
Array A (berisi data yang akan diolah)
ISI
|
1
|
3
|
5
|
8
|
6
|
5
|
7
|
11
|
9
|
0
|
INDEX
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Data yang akan dicari K=5
Proses pencarian / proses perulangan yang kedua
Array A (berisi data yang akan diolah)
ISI
|
1
|
3
|
5
|
8
|
6
|
5
|
7
|
11
|
9
|
0
|
INDEX
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Data ditemukan ketika i = 2
Maka K++ menjadi 1, artinya ada 1 data dalam array A
Array index akan menyimpan index tempat data tersebut ditemukan pada array A
Array index (berisi index data yang ditemukan pada array A)
ISI
|
2
| |||||||||
INDEX
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Data ditemukan ketika i = 5
Maka K++ menjadi 2, artinya ada 2 data dalam array A
Array index akan menyimpan index tempat data tersebut ditemukan pada array A
Array index (berisi index data yang ditemukan pada array A)
ISI
|
2
|
5
| ||||||||
INDEX
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Proses pencarian data selesai dan tampilkan hasil output
Data 5 yang dicari ada 2 buah ß ambil dari variable K
Data tersebut terdapat dalam index ke: 2 5 ß ambil dari array index.
Binary search
Proses pencarian binary search hanya dapat dilakukan pada kumpulan data yang sudah diurutkan terlebih dahulu. Jika terdapat N buah data yang akan dolah, data yang dicari akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data yang dicari maka akan dilakukan pembagian data menjadi dua bagian. Kemudian ujung data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.
Contoh kasus:
Ada 12 data 11 13 15 18 23 27 29 31 54 58 59 61
Data yang akan dicari : 13
· Proses 1
11 13 15 18 23 27 29 31 54 58 59 61 ß lebih besar dengan data yg akan dicari , lakukan pembagian data
· Proses 2
11 13 15 18 23 27ß lebih besar dari data yang dicari, bagi 2 29 31 54 58 59 61
· Proses 3
11 13 15ß lebih besar dari data yang dicari, bagi 2 18 23 27 29 31 54 58 59 61
· Proses 4
11 ßlebih kecil dari data yang dicari, abaikan saja 13 15ß lebih besar dari data yang dicari, bagi 2 18 23 27 29 31 54 58 59 61
· Proses 5
11 13 ß sesuai data yang dicari 15 ßlebih besar dari data yang dicari 18 23 27 29 31 54 58 59 61
Dari proses diatas dapat disimpulkan bahwa binary search akan membagi-bagi sekumpulan data menjadi 2 bagian sampai data yang dicari ditemukan.
Kesimpulan
Sequential search lebih efektif jika digunakan pada sekumpulan data yang sedikit, sedangkan binary search efektif jika digunakan pada sekumpulan data yang berjumlah banyak.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah urut.
Interpolation search
Proses pencarian data ini hampir sama dengan proses pencarian binary search, pencarian ini juga dilakukan pada kumpulan data yang sudah urut. Akan tetapi jika pada binary search kita membagi data menjadi 2 bagian tiap prosesnya, pada interpolation search kita akan membagi data menurut rumus sebagai berikut:
Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) + low
Singkatnya proses pencarian interpolation search hampir mirip dengan proses pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.
Misal terdapat data sebagai berikut:
Kode Judul Buku Pengarang
025 The C++ Programming James Wood
034 Mastering Delphi 6 Marcopolo
041 Professional C# Simon Webe
056 Pure JavaScript v2 Michael Bolton
063 Advanced JSP & Servlet David Dunn
072 Calculus Make it Easy Gunner Christian
088 Visual Basic 2005 Express Antonie
096 Artificial Life : Volume 1 Gloria Virginia
Kunci Pencarian ? 088
Low ? 0
High ? 7
Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
Kunci[6] = kunci pencarian, data ditemukan : Visual Basic 2005
Kunci Pencarian ? 060
Low ? 0
High ? 7
Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
Kunci[3] < kunci pencarian, maka teruskan
Low = 3 + 1 = 4
High = 7
Ternyata Kunci[4] adalah 063 yang lebih besar daripada 06
Berarti tidak ada kunci 060.
Secara harafiah, dapat diartikan sebagai metode untuk memecah-mecah array. Pemecahan array itu sendiri, tergantung berdasarkan apa array akan dipecah. Agar lebih jelas, lihat ilustrasi array splice pada gambar berikut :
Char
|
P
|
A
|
K
|
A
|
N
|
T
|
O
|
N
| |
Indeks
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
Char
|
P
|
A
|
K
|
A
|
N
|
T
|
O
|
N
| |
Indeks1
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
| |
Indeks2
|
0
|
1
|
2
|
0
|
1
|
2
|
3
|
4
|
Langganan:
Postingan (Atom)
