TUGAS LANJUTAN DARI SHORTING
By : Meraih mimpi
TUGAS LANJUTAN DARI SHORTING
NAMA : Muhajir
NPM : 1405020042
UNIT : B/3
LANJUTAN DARI SHORTING
Jelaskan yang di maksud dengan shell sort!
Buatlah satu program tentang merge sort?
Sebutkan kelebihan dan kelemahan sort?
Sebutkan metode-metode penerapan sort?
Terdapat dua pendekatan dalam metode pengurutan dengan Selection Sort :
JAWABAN
1. Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan. Proses pengurutan dengan metode Shell dapat dijelaskan sebagai berikut :
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j + N / 2).
Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N /
2. Program Sorting;
uses wincrt;
var pilih:char;
a,i,j,n:integer;
data:array[1..50] of integer;
y:integer;
jwb:char;
Type
W=array[1..50]of integer;
var
Z:W;
{Sub Program Merge Sort}
procedure merge(var A,B:W;L,mid,R:integer);
var I,J,K,T:integer;
begin
I:=L;K:=L;J:=mid+1;
repeat
if A[I]
Begin
B[k]:=A[I];
inc(I)
end
else
begin
B[K]:=A[J];
inc(J);
end;
inc(k)
until (I>mid)or (J>R);
if I>mid then
for T:=J to R do B[K+T-J]:=A[T]
else
for T:=I to mid do B[K+T-I]:=A[T]
end;
Procedure order(var A,B:W;N,C:integer);
var I,T:integer;
begin
I:=1;
while I<=(N-2*C+1)do
begin
Merge(A,B,I,I+C-1,I+2*C-1);
I:=I+2*C;
end;
if(I+C-1)
Merge(A,B,I,I+C-1,N)
else
for T:=I to N do B[T]:=A[T]
end;
Procedure mergesort(Var A:W;N:integer);
var C:integer;
B:W;
begin
C:=1;
while C
begin
Order(A,B,N,C);
C:=2*C;
Order(B,A,N,C);
C:=2*C
end;
end;
{Sub Program Quick Sort}
procedure change(var a,b:integer);
var c:integer;
begin
c:=a;
a:=b;
b:=c;
end;
procedure quick_sort(L,R:integer);
var
mid,i,j:integer;
begin
i:=L; j:=R; mid:=data[(L+R)div 2];
repeat
while data[i]
while data[j]>mid do dec(j);
if i<=j then
begin
change(data[i],data[j]);
inc(i);dec(j);
end;
until i>j;
if L
if i
end;
label ulang;
begin
writeln('Selamat datang di program Sorting');
write('Ini adalah program yang akan ');
writeln('membantu anda mengurutkan data');
ulang:
writeln;
writeln('Silakan pilih salah satu menu di bawah ini :');
writeln(' 1. Selection Sort');
writeln(' 2. Buble Sort');
writeln(' 3. Insertion Sort');
writeln(' 4. Quick Sort');
writeln(' 5. Merge Sort');
write('Masukkan nomor menu pilihan anda: ');readln(pilih);
case pilih of
'1':
begin
clrscr;
writeln('Selamat Datang di Program Selection Sort');
writeln;
write('Banyaknya data: ');readln(n);
write('Masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data): ');
for i:=1 to n do readln(data[i]);
for j:=1 to (n-1) do
begin
for i:=j+1 to n do
begin
y:=data[j];
if data[i]
begin
data[j]:=data[i];
data[i]:=y;
end;
end;
end;
writeln;
writeln('Data setelah diurutkan: ');
for i:=1 to n do write(data[i]:5);
end;
'2':
begin
clrscr;
writeln('Selamat Datang di Program Bubble Sort');
writeln;
write('Banyaknya data: ');readln(n);
write('Silakan masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data): ');
for i:=1 to n do readln(data[i]);
for i:=2 to n do
for j:=n downto i do
begin
y:=data[j];
if data[j]
begin
data[j]:=data[j-1];
data[j-1]:=y;
end;
end;
writeln;
writeln('Data setelah diurutkan: ');
for i:=1 to n do write(data[i]:5);
end;
'3':
begin
clrscr;
writeln('Selamat Datang di Program Insertion Sort');
writeln;
write('Berapa banyaknya data? ');readln(n);
write('Masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data) :');
for i:=1 to n do readln(data[i]);
for i:=2 to n do
begin
y:=data[i];
j:=i-1;
while (y1) do
begin
data[j+1]:=data[j];
j:=j-1;
end;
if y>=data[j] then data[j+1]:=y
else
begin
data[j+1]:=data[j];
data[j]:=y;
end;
end;
writeln;
writeln('Data setelah diurutkan:');
for i:=1 to n do write(data[i]:5);
end;
'4':
begin
clrscr;
writeln('Selamat Datang di Program Quick Sort');
writeln;
write('Banyaknya data ');readln(n);
write('Silakan masukkan datanya ');
writeln('(tekan ENTER setiap memasukkan satu data):');
for a:=1 to n do
readln(data[a]);
for a:=1 to n do quick_sort(1,n);
writeln('Data terurutnya adalah : ');
for a:=1 to n do writeln(data[a]:10);
end;
'5':
begin
clrscr;
writeln('Selamat Datang di Program Merge Sort');
writeln;
write('Banyaknya data : ');readln(n);
writeln('Masukkan datanya ');
writeln('(tekan ENTER setiap memasukkan satu data): ');
for a:=1 to n do readln(Z[a]);
for a:=1 to n do mergesort(Z,n);
writeln('Data terurutnya adalah : ');
for a:=1 to n do writeln(Z[a]:10);
end;
end;
writeln;
write('TEKAN ENTER jika anda sudah selesai memahami data terurut');
readln;
clrscr;
write('Apakah anda mau mengulang lagi? (jawab y atau t): ');
readln(jwb);
if jwb='y' then goto ulang;
writeln;
write('Anda memilih untuk meninggalkan program sorting ini.');
writeln(' Terima kasih...');
writeln;
writeln('Tekan ENTER untuk menutup jendela ini');
readln;
donewincrt;
end.
3. Insertion Sort :
Kelebihan
1. Sederhana dalam penerapannya.
2. Mangkus dalam data yang kecil.
3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort.
4. Mangkus dalam data yang sebagian sudah terurut.
5. Lebih mangkus dibanding Bubble Sort dan Selection Sort.
6. Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
7. Stabil.
Kekurangan
1. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.
2. Untuk larik yang jumlahnya besar ini tidak praktis.
3. Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
4. Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar.
4. Bubble sort adalah proses pengurutan sederhana yang bekerja dengan cara berulang kali membandingkan dua elemen data pada suatu saat dan menukar elemen data yang urutannya salah. Ide dari Bubble sort adalah gelembung air yang akan “mengapung” untuk table yang terurut menaik (ascending). Elemen bernilai kecil akan “diapungkan” (ke indeks terkecil), artinya diangkat ke “atas”(indeks terkecil) melalui pertukaran
5. Pengurutan internal (internal sort), yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer yang dapat diakses setiap elemennya secara langsung. Dapat dikatakan sebagai pengurutan tabel
Pengurutan eksternal (external sort), yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu untuk dimuat semuanya dalam memori.
Diposkan oleh winda sari di 06.19 Tidak ada komentar:
Kirimkan Ini lewat Email
BlogThis!
Berbagi ke Twitter
Berbagi ke Facebook
Bagikan ke Pinterest
Sabtu, 19 Desember 2015
TUGAS TUGAS TREE
apa yang di maksud dengan tree dan binary treeapa yang di maksud dengan tree dan binary tree
Pengertian Tree dalam Struktur Data
Merupakan salat Satu bentuk Struktur Data tidak linier Yang menggambarkanhubungan Yang bersifat hirarkis (hubungan one to many) antara elemen-elemen.Tree Bisa didefinisikan sebagai kumpulan Simpul / node dengan Satu elemenKHUSUS Yang disebut root Dan Node lainnya terbagi menjadi Himpunan-Himpunan Yang tak saling berhubungan Satu sama lainnya (disebut subtree). Untukjelasnya, di Bawah Akan diuraikan istilah-istilah umum dalam tree
}Parent : predecssor satu level di atas suatu node.
}Child : successor satu level di bawah suatu node.
}Sibling : node-node yang memiliki parent yang sama dengan suatu node.
}Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
}Size : banyaknya node dalam suatu tree.
}Height : banyaknya tingkatan/level dalam suatu tree.
}Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
}Leaf : node-node dalam tree yang tak memiliki seccessor.
}Degree : banyaknya child yang dimiliki suatu node.
Pengertian Binaary Tree dalam Struktur Data
Pohon biner adalah pohon dengan syarat bahwa tiap node hanya memiliki boleh maksimal duasubtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap nodedalam binary tree hanya boleh memiliki paling banyak dua anak/child
Tree
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree).
istilah-istilah umum dalam tree
Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :
a) Prodecessor : node yang berada diatas node tertentu.
b) Successor : node yang berada di bawah node tertentu.
c) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
d) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
e) Parent : predecssor satu level di atas suatu node.
f) Child : successor satu level di bawah suatu node.
g) Sibling : node-node yang memiliki parent yang sama dengan suatu node.
h) Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
contoh program tree
uses crt;
Type
Tree = ^Simpul;
Simpul = Record
Info : char;
Kiri : Tree;
Kanan : Tree;
End;
Function BARU(Hrf : Char) : Tree;
Var Temp : Tree;
Begin
New(Temp);
Temp^.Info := Hrf;
Temp^.Kiri := NIL; Temp^.Kanan := NIL;
BARU := Temp;
End;
Procedure MASUK(Var Pohon : Tree; Hrf : Char);
Begin
If Pohon = NIL Then
Pohon := BARU(Hrf)
Else
Begin
If Pohon^.Info > Hrf then
MASUK(Pohon^.Kiri,Hrf)
Else If Pohon^.Info < Hrf then
MASUK(Pohon^.Kanan,Hrf)
Else
Writeln('Karakter', Hrf, 'Sudah ada di Tree');
End;
End;
Procedure PREORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
Write(Temp^.Info,' ');
PREORDER(Temp^.Kiri);
PREORDER(Temp^.Kanan);
End;
End;
Procedure INORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
INORDER(Temp^.Kiri);
Write(Temp^.Info,' ');
INORDER(Temp^.Kanan);
End;
End;
pengertian AVL tree
AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
Single Rotation
Single rotation dilakukan bila kondisi AVL tree waktu akan ditambahkan node baru dan posisi node baru seperti pada gambar 2. T1, T2, dan T3 adalah subtree yang urutannya harus seperti demikian serta height- nya harus sama (≥ 0). Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin (mirror image) gambar 2.
Sebutkan beberapa jenis tree yang memiliki sifat khusus
v Create : Membentuk binary tree baru yang masih kosong.
v Clear : Mengosongkan binary tree yang sudah ada.
v Empty : Function untuk memeriksa apakah binary tree masih kosong.
v Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai root, left child, atau right child. Khusus insert sebagai root, tree harus dalam keadaan kosong.
v Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree tak boleh kosong)
v Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak boleh kosong)
v Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh kosong)
v DeleteSub : Menghapus sebuah subtree (node beserta seluruh descendantnya) yang ditunjuk current. Tree tak boleh kosong. Setelah itu pointer current akan berpindah ke parent dari node yang dihapus.
v Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height, serta average lengthnya. Tree tidak boleh kosong. (Average Length = [jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
v Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali. Hasilnya adalah urutan informasi secara linier yang tersimpan dalam tree. Adatiga cara traverse : Pre Order, In Order, dan Post Order.
Diposkan oleh winda sari di 23.01 Tidak ada komentar:
Kirimkan Ini lewat Email
BlogThis!
Berbagi ke Twitter
Berbagi ke Facebook
Bagikan ke Pinterest
Jumat, 18 Desember 2015
TUGAS MODEL SORTING
Counting Sort
program counting_sort;
uses wincrt;
type
nilai = array[1..50] of integer;
var
nl : nilai;
mindata,maxdata: integer;
jumlah ,i:integer;
procedure isinilai(var nl:nilai; var n:integer);
var
j:integer;
begin
write('banyak data : ');
readln(n);
for j:=1 to n do
begin
write('data ke ',j,' : ');
readln(nl[j]);
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure countsort(var tabint:nilai;n:integer;mindata:integer;maxdata:integer);
const min=1;max=100;
var
i,j,k:integer;
tabcount:array [min..max] of integer;
begin
for i:=mindata to maxdata do
tabcount[i]:=0;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
pengertian sorting
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:
1. Urut naik (ascending)
Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar
2. Urut turun (descending)
Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.
Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi.
contoh program buble sort dalam bahasa pascal.
Program Bubble_Sort;
Uses WinCrt;
const
max = 100;
type
Larik = array [1..max] of integer;
varA: Larik;
I: integer;
N: integer;
pil:byte;
procedure Jumlah_Data;
begin
write(‘Masukkan banyaknya data = ‘); readln(N);
writeln;
end;
procedure Input;
var
I: integer;
begin
for I:=1 to N do
begin
write(‘Masukkan data ke-‘, I, ‘ = ‘); readln(A[I]);
end;
end;
procedure Change(var A, B: integer);
var
T: integer;
begin
T:=A;
A:=B;
B:=T;
end;
procedure asc_buble;
var
p,q :INTEGER;
flag:boolean;
begin
flag:=false;
p:=2;
while (p<N) and (not flag) do
begin
flag:=true;
for q:=N downto p do
if A[q]<A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
writeln;
write(‘Data Diurutkan Secara Ascending: ‘);
end;
procedure desc_buble;
var
p,q :byte;
flag:boolean;
Begin
flag:=false;
p:=2;
while (p<max) and (not flag) do
begin
flag:=true;
for q:=max downto p do
if A[q]>A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
algoritma quick rekursif.
Kode berikut memperlihatkan contoh fungsi rekursif, untuk menghitung hasil kali dari dua bilangan:
def kali(a, b): return a if b == 1 else a + kali(a, b - 1)
Bagaimana cara kerja fungsi rekursif ini? Sederhananya, selama nilai b bukan 1, fungsi akan terus memanggil perintaha + kali(a, b - 1), yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b. Mari kita coba panggil fungsi kali dan uraikan langkah pemanggilannya
kali(2, 4) -> 2 + kali(2, 3) -> 2 + (2 + kali(2, 2)) -> 2 + (2 + (2 + kali(2, 1))) -> 2 + (2 + (2 + 2)) -> 2 + (2 + 4) -> 2 + 6 -> 8
Perhatikan bahwa sebelum melakukan penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti (2). Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir.
Mari kita lihat contoh fungsi rekursif lainnya, yang digunakan untuk melakukan perhitungan faktorial:
def faktorial(n): return n if n == 1 else n * faktorial(n - 1)
Fungsi faktorial memiliki cara kerja yang sama dengan fungsi kali. Mari kita panggil dan lihat langkah pemanggilannya:
faktorial(5) -> 5 * faktorial(4) -> 5 * (4 * faktorial(3)) -> 5 * (4 * (3 * faktorial(2))) -> 5 * (4 * (3 * (2 * faktorial(1)))) -> 5 * (4 * (3 * (2 * 1))) -> 5 * (4 * (3 * 2)) -> 5 * (4 * 6) -> 5 * 24 -> 120
metode-metode
Buble Sort :
Merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar.
Selection Sort :
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Insertion Sort :
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.
sorting
NAMA : Muhajir
NPM : 1405020042
UNIT : B/3
LANJUTAN DARI SHORTING
Jelaskan yang di maksud dengan shell sort!
Buatlah satu program tentang merge sort?
Sebutkan kelebihan dan kelemahan sort?
Sebutkan metode-metode penerapan sort?
Terdapat dua pendekatan dalam metode pengurutan dengan Selection Sort :
JAWABAN
1. Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan. Proses pengurutan dengan metode Shell dapat dijelaskan sebagai berikut :
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j + N / 2).
Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N /
2. Program Sorting;
uses wincrt;
var pilih:char;
a,i,j,n:integer;
data:array[1..50] of integer;
y:integer;
jwb:char;
Type
W=array[1..50]of integer;
var
Z:W;
{Sub Program Merge Sort}
procedure merge(var A,B:W;L,mid,R:integer);
var I,J,K,T:integer;
begin
I:=L;K:=L;J:=mid+1;
repeat
if A[I]
Begin
B[k]:=A[I];
inc(I)
end
else
begin
B[K]:=A[J];
inc(J);
end;
inc(k)
until (I>mid)or (J>R);
if I>mid then
for T:=J to R do B[K+T-J]:=A[T]
else
for T:=I to mid do B[K+T-I]:=A[T]
end;
Procedure order(var A,B:W;N,C:integer);
var I,T:integer;
begin
I:=1;
while I<=(N-2*C+1)do
begin
Merge(A,B,I,I+C-1,I+2*C-1);
I:=I+2*C;
end;
if(I+C-1)
Merge(A,B,I,I+C-1,N)
else
for T:=I to N do B[T]:=A[T]
end;
Procedure mergesort(Var A:W;N:integer);
var C:integer;
B:W;
begin
C:=1;
while C
begin
Order(A,B,N,C);
C:=2*C;
Order(B,A,N,C);
C:=2*C
end;
end;
{Sub Program Quick Sort}
procedure change(var a,b:integer);
var c:integer;
begin
c:=a;
a:=b;
b:=c;
end;
procedure quick_sort(L,R:integer);
var
mid,i,j:integer;
begin
i:=L; j:=R; mid:=data[(L+R)div 2];
repeat
while data[i]
while data[j]>mid do dec(j);
if i<=j then
begin
change(data[i],data[j]);
inc(i);dec(j);
end;
until i>j;
if L
if i
end;
label ulang;
begin
writeln('Selamat datang di program Sorting');
write('Ini adalah program yang akan ');
writeln('membantu anda mengurutkan data');
ulang:
writeln;
writeln('Silakan pilih salah satu menu di bawah ini :');
writeln(' 1. Selection Sort');
writeln(' 2. Buble Sort');
writeln(' 3. Insertion Sort');
writeln(' 4. Quick Sort');
writeln(' 5. Merge Sort');
write('Masukkan nomor menu pilihan anda: ');readln(pilih);
case pilih of
'1':
begin
clrscr;
writeln('Selamat Datang di Program Selection Sort');
writeln;
write('Banyaknya data: ');readln(n);
write('Masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data): ');
for i:=1 to n do readln(data[i]);
for j:=1 to (n-1) do
begin
for i:=j+1 to n do
begin
y:=data[j];
if data[i]
begin
data[j]:=data[i];
data[i]:=y;
end;
end;
end;
writeln;
writeln('Data setelah diurutkan: ');
for i:=1 to n do write(data[i]:5);
end;
'2':
begin
clrscr;
writeln('Selamat Datang di Program Bubble Sort');
writeln;
write('Banyaknya data: ');readln(n);
write('Silakan masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data): ');
for i:=1 to n do readln(data[i]);
for i:=2 to n do
for j:=n downto i do
begin
y:=data[j];
if data[j]
begin
data[j]:=data[j-1];
data[j-1]:=y;
end;
end;
writeln;
writeln('Data setelah diurutkan: ');
for i:=1 to n do write(data[i]:5);
end;
'3':
begin
clrscr;
writeln('Selamat Datang di Program Insertion Sort');
writeln;
write('Berapa banyaknya data? ');readln(n);
write('Masukkan datanya ');
writeln('(tekan enter setiap memasukkan satu data) :');
for i:=1 to n do readln(data[i]);
for i:=2 to n do
begin
y:=data[i];
j:=i-1;
while (y1) do
begin
data[j+1]:=data[j];
j:=j-1;
end;
if y>=data[j] then data[j+1]:=y
else
begin
data[j+1]:=data[j];
data[j]:=y;
end;
end;
writeln;
writeln('Data setelah diurutkan:');
for i:=1 to n do write(data[i]:5);
end;
'4':
begin
clrscr;
writeln('Selamat Datang di Program Quick Sort');
writeln;
write('Banyaknya data ');readln(n);
write('Silakan masukkan datanya ');
writeln('(tekan ENTER setiap memasukkan satu data):');
for a:=1 to n do
readln(data[a]);
for a:=1 to n do quick_sort(1,n);
writeln('Data terurutnya adalah : ');
for a:=1 to n do writeln(data[a]:10);
end;
'5':
begin
clrscr;
writeln('Selamat Datang di Program Merge Sort');
writeln;
write('Banyaknya data : ');readln(n);
writeln('Masukkan datanya ');
writeln('(tekan ENTER setiap memasukkan satu data): ');
for a:=1 to n do readln(Z[a]);
for a:=1 to n do mergesort(Z,n);
writeln('Data terurutnya adalah : ');
for a:=1 to n do writeln(Z[a]:10);
end;
end;
writeln;
write('TEKAN ENTER jika anda sudah selesai memahami data terurut');
readln;
clrscr;
write('Apakah anda mau mengulang lagi? (jawab y atau t): ');
readln(jwb);
if jwb='y' then goto ulang;
writeln;
write('Anda memilih untuk meninggalkan program sorting ini.');
writeln(' Terima kasih...');
writeln;
writeln('Tekan ENTER untuk menutup jendela ini');
readln;
donewincrt;
end.
3. Insertion Sort :
Kelebihan
1. Sederhana dalam penerapannya.
2. Mangkus dalam data yang kecil.
3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort.
4. Mangkus dalam data yang sebagian sudah terurut.
5. Lebih mangkus dibanding Bubble Sort dan Selection Sort.
6. Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
7. Stabil.
Kekurangan
1. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.
2. Untuk larik yang jumlahnya besar ini tidak praktis.
3. Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
4. Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar.
4. Bubble sort adalah proses pengurutan sederhana yang bekerja dengan cara berulang kali membandingkan dua elemen data pada suatu saat dan menukar elemen data yang urutannya salah. Ide dari Bubble sort adalah gelembung air yang akan “mengapung” untuk table yang terurut menaik (ascending). Elemen bernilai kecil akan “diapungkan” (ke indeks terkecil), artinya diangkat ke “atas”(indeks terkecil) melalui pertukaran
5. Pengurutan internal (internal sort), yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer yang dapat diakses setiap elemennya secara langsung. Dapat dikatakan sebagai pengurutan tabel
Pengurutan eksternal (external sort), yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu untuk dimuat semuanya dalam memori.
Diposkan oleh winda sari di 06.19 Tidak ada komentar:
Kirimkan Ini lewat Email
BlogThis!
Berbagi ke Twitter
Berbagi ke Facebook
Bagikan ke Pinterest
Sabtu, 19 Desember 2015
TUGAS TUGAS TREE
apa yang di maksud dengan tree dan binary treeapa yang di maksud dengan tree dan binary tree
Pengertian Tree dalam Struktur Data
Merupakan salat Satu bentuk Struktur Data tidak linier Yang menggambarkanhubungan Yang bersifat hirarkis (hubungan one to many) antara elemen-elemen.Tree Bisa didefinisikan sebagai kumpulan Simpul / node dengan Satu elemenKHUSUS Yang disebut root Dan Node lainnya terbagi menjadi Himpunan-Himpunan Yang tak saling berhubungan Satu sama lainnya (disebut subtree). Untukjelasnya, di Bawah Akan diuraikan istilah-istilah umum dalam tree
}Parent : predecssor satu level di atas suatu node.
}Child : successor satu level di bawah suatu node.
}Sibling : node-node yang memiliki parent yang sama dengan suatu node.
}Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
}Size : banyaknya node dalam suatu tree.
}Height : banyaknya tingkatan/level dalam suatu tree.
}Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
}Leaf : node-node dalam tree yang tak memiliki seccessor.
}Degree : banyaknya child yang dimiliki suatu node.
Pengertian Binaary Tree dalam Struktur Data
Pohon biner adalah pohon dengan syarat bahwa tiap node hanya memiliki boleh maksimal duasubtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap nodedalam binary tree hanya boleh memiliki paling banyak dua anak/child
Tree
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree).
istilah-istilah umum dalam tree
Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :
a) Prodecessor : node yang berada diatas node tertentu.
b) Successor : node yang berada di bawah node tertentu.
c) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
d) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
e) Parent : predecssor satu level di atas suatu node.
f) Child : successor satu level di bawah suatu node.
g) Sibling : node-node yang memiliki parent yang sama dengan suatu node.
h) Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
contoh program tree
uses crt;
Type
Tree = ^Simpul;
Simpul = Record
Info : char;
Kiri : Tree;
Kanan : Tree;
End;
Function BARU(Hrf : Char) : Tree;
Var Temp : Tree;
Begin
New(Temp);
Temp^.Info := Hrf;
Temp^.Kiri := NIL; Temp^.Kanan := NIL;
BARU := Temp;
End;
Procedure MASUK(Var Pohon : Tree; Hrf : Char);
Begin
If Pohon = NIL Then
Pohon := BARU(Hrf)
Else
Begin
If Pohon^.Info > Hrf then
MASUK(Pohon^.Kiri,Hrf)
Else If Pohon^.Info < Hrf then
MASUK(Pohon^.Kanan,Hrf)
Else
Writeln('Karakter', Hrf, 'Sudah ada di Tree');
End;
End;
Procedure PREORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
Write(Temp^.Info,' ');
PREORDER(Temp^.Kiri);
PREORDER(Temp^.Kanan);
End;
End;
Procedure INORDER(Temp : Tree);
Begin
If Temp <> NIL Then
Begin
INORDER(Temp^.Kiri);
Write(Temp^.Info,' ');
INORDER(Temp^.Kanan);
End;
End;
pengertian AVL tree
AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
Single Rotation
Single rotation dilakukan bila kondisi AVL tree waktu akan ditambahkan node baru dan posisi node baru seperti pada gambar 2. T1, T2, dan T3 adalah subtree yang urutannya harus seperti demikian serta height- nya harus sama (≥ 0). Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin (mirror image) gambar 2.
Sebutkan beberapa jenis tree yang memiliki sifat khusus
v Create : Membentuk binary tree baru yang masih kosong.
v Clear : Mengosongkan binary tree yang sudah ada.
v Empty : Function untuk memeriksa apakah binary tree masih kosong.
v Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai root, left child, atau right child. Khusus insert sebagai root, tree harus dalam keadaan kosong.
v Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree tak boleh kosong)
v Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak boleh kosong)
v Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh kosong)
v DeleteSub : Menghapus sebuah subtree (node beserta seluruh descendantnya) yang ditunjuk current. Tree tak boleh kosong. Setelah itu pointer current akan berpindah ke parent dari node yang dihapus.
v Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height, serta average lengthnya. Tree tidak boleh kosong. (Average Length = [jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
v Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali. Hasilnya adalah urutan informasi secara linier yang tersimpan dalam tree. Adatiga cara traverse : Pre Order, In Order, dan Post Order.
Diposkan oleh winda sari di 23.01 Tidak ada komentar:
Kirimkan Ini lewat Email
BlogThis!
Berbagi ke Twitter
Berbagi ke Facebook
Bagikan ke Pinterest
Jumat, 18 Desember 2015
TUGAS MODEL SORTING
Counting Sort
program counting_sort;
uses wincrt;
type
nilai = array[1..50] of integer;
var
nl : nilai;
mindata,maxdata: integer;
jumlah ,i:integer;
procedure isinilai(var nl:nilai; var n:integer);
var
j:integer;
begin
write('banyak data : ');
readln(n);
for j:=1 to n do
begin
write('data ke ',j,' : ');
readln(nl[j]);
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure countsort(var tabint:nilai;n:integer;mindata:integer;maxdata:integer);
const min=1;max=100;
var
i,j,k:integer;
tabcount:array [min..max] of integer;
begin
for i:=mindata to maxdata do
tabcount[i]:=0;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
pengertian sorting
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:
1. Urut naik (ascending)
Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar
2. Urut turun (descending)
Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.
Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi.
contoh program buble sort dalam bahasa pascal.
Program Bubble_Sort;
Uses WinCrt;
const
max = 100;
type
Larik = array [1..max] of integer;
varA: Larik;
I: integer;
N: integer;
pil:byte;
procedure Jumlah_Data;
begin
write(‘Masukkan banyaknya data = ‘); readln(N);
writeln;
end;
procedure Input;
var
I: integer;
begin
for I:=1 to N do
begin
write(‘Masukkan data ke-‘, I, ‘ = ‘); readln(A[I]);
end;
end;
procedure Change(var A, B: integer);
var
T: integer;
begin
T:=A;
A:=B;
B:=T;
end;
procedure asc_buble;
var
p,q :INTEGER;
flag:boolean;
begin
flag:=false;
p:=2;
while (p<N) and (not flag) do
begin
flag:=true;
for q:=N downto p do
if A[q]<A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
writeln;
write(‘Data Diurutkan Secara Ascending: ‘);
end;
procedure desc_buble;
var
p,q :byte;
flag:boolean;
Begin
flag:=false;
p:=2;
while (p<max) and (not flag) do
begin
flag:=true;
for q:=max downto p do
if A[q]>A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
algoritma quick rekursif.
Kode berikut memperlihatkan contoh fungsi rekursif, untuk menghitung hasil kali dari dua bilangan:
def kali(a, b): return a if b == 1 else a + kali(a, b - 1)
Bagaimana cara kerja fungsi rekursif ini? Sederhananya, selama nilai b bukan 1, fungsi akan terus memanggil perintaha + kali(a, b - 1), yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b. Mari kita coba panggil fungsi kali dan uraikan langkah pemanggilannya
kali(2, 4) -> 2 + kali(2, 3) -> 2 + (2 + kali(2, 2)) -> 2 + (2 + (2 + kali(2, 1))) -> 2 + (2 + (2 + 2)) -> 2 + (2 + 4) -> 2 + 6 -> 8
Perhatikan bahwa sebelum melakukan penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti (2). Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir.
Mari kita lihat contoh fungsi rekursif lainnya, yang digunakan untuk melakukan perhitungan faktorial:
def faktorial(n): return n if n == 1 else n * faktorial(n - 1)
Fungsi faktorial memiliki cara kerja yang sama dengan fungsi kali. Mari kita panggil dan lihat langkah pemanggilannya:
faktorial(5) -> 5 * faktorial(4) -> 5 * (4 * faktorial(3)) -> 5 * (4 * (3 * faktorial(2))) -> 5 * (4 * (3 * (2 * faktorial(1)))) -> 5 * (4 * (3 * (2 * 1))) -> 5 * (4 * (3 * 2)) -> 5 * (4 * 6) -> 5 * 24 -> 120
metode-metode
Buble Sort :
Merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar.
Selection Sort :
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Insertion Sort :
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.
sorting
TUGAS QUEUE
By : Meraih mimpi1. perbedaan antara queue dengan stack
Stack memakai sistem LIFO atau last in first out (yang pertama masuk akan keluar terakhir, begitu pula yang terakhir masuk akan keluar pertama kali) yang apabila kita mengahapus/ keluar data, maka data yang terakhirlah yang akan terhapus/ keluar terlebih dahulu.
§ Sementara queue memakai siste FIFO atau first in first out (yang pertama masuk akan keluar pertama, begitu pula yang masuk terakhir akan keluar terakhir) yang apabila kita menghapus / mengeluarkan data, maka data yang pertamalah yang akan terhapus/ keluar terdahulu dan data yang terakhir akan terhapus/ keluar terakhir
§ Guna counter pada rangkaian stack dan queue adalah untuk menentukan apakah stack atau queue tersebut sudah full atau masih empty.
2. contoh program dari Queue.
uses crt;
var
queue:array[1..10] of integer;
i,pos,pil:integer;
procedure enqueue;
var
bil:integer;
begin
clrscr;
if (pos>=10) then
begin
writeln(‘Antrean penuh’); readln();
end
else
begin
write(‘Masukkan bilangan : ‘);readln(bil);
pos:=pos+1;
queue[pos]:=bil;
end;
end;
procedure deque;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
procedure empty;
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
writeln(‘Tidak ada Antrean’);readln();
end
else
begin
{restructuring queue}
pos:=pos-1;
for i:=1 to pos do
begin
queue[i]:=queue[i+1];
end;
end;
end;
procedure empty;
var
i:integer;
begin
clrscr;
if (pos=0) then
begin
writeln(‘Tidak ada Antrean’);readln();
end
else
begin
l:=1;
for k:=pos downto 1 do
begin
gotoxy(k*3,1);
write(queue[l]);
l:=l+1;
end;
readln();
end;
end;
begin
clrscr;
{inisialisasi queue}
for i:=1 to 10 do
begin
queue[i]:=-1;
end;
{posisi awal queue}
pos:=0;
{pilihan menu queue}
while (pil<>5) do
begin
textbackground(blue);
textcolor(white);
clrscr;
writeln(‘MENU PILIHAN QUEUE ‘);
writeln(‘================== ‘);
writeln(‘1. ENQUEUE ‘);
writeln(‘2. DEQUE ‘);
writeln(‘3. Kosongkan QUEUE ‘);
writeln(‘4. Lihat QUEUE ‘);
writeln(‘5. Selesai ‘);
write(‘Pilihan Anda :’); readln(pil);
case pil of
1: enqueue();
2: deque();
3: empty();
4: display();
end;
end;
end.
3. contoh Queue yang Anda terapkan dalam kehidupan sehari – hari.
Contohnya yaitu
antrian pada kasir pada sebuah bank. Ketika seorang pelanggan datang, akan menuju ke belakang dari antrian. Setiap pelanggan dilayani, antrian yang berada di depan akan maju. Jika kita ada di antrian kedua, maka kita akan menunggu antrian pertama melakukan prosesnya
Nah, ketika selesai proses dari antrian pertama dia akan pergi, dan giliran kita untuk maju untuk melakukan proses. Begitu juga arti dari antrian dalam bahasan kali ini, jika pengantri pertama datang maka dia juga yang akan keluar pertama kali atau bahasa kerennya tu FIFO ( First In First Out ).
Kondisi antrian yang menjadi perhatian :
Ã’ Penuh
Bila elemen pada antrian mencapai kapasitas maksimum antrian, maka tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan overflow
Ã’ Kosong
Bila tidak ada elemen pada antrian, maka tidak mungkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan overflow
4. konsep dari operasi – operasi Queue.
Fungsi IsEmpty
berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.
• IsFull
Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh.
• EnQueue
Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam queue.
• DeQueue
Fungsi DeQueue berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya.
• Clear
Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan memanfaatkan fungsi DEQueue.
5. kondisi yang harus diperhatikan dalam operasi – operasi Queue
6. Operasi-operasi dasar dari sebuah queue adalah :
1.Enqueue : proses penambahanelemen di posisibelakang
2.Dequeue : proses pengambilanelemen di posisidepan
Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu :
1.CREATE (Q) Operator yang menunjukkan suatu antrean hampa Q.
Berarti : Noel (Q) = 0
Front (Q) & Rear (Q) = tidak terdefinisi
2.ISEMPTY (Q) Operator yang menunjukkan apakah antrean Q hampa.
Operand : tipe data antrean
Hasil : tipe data boolean
ISEMPTY (CREATE (Q)) = True
3.INSERT (E, Q) Operator yang menginsert elemen E ke dalam antrean Q.
E ditempatkan di bagian belakang antrean.
Hasil : antrean yang lebih besar.
REAR (INSERT (E, Q)) = E
ISEMPTY (INSERT (E, Q)) = False
4.REMOVE (Q)Operator yang menghapus elemen bagian depan dari antrean Q.
Hasil : antrean yang lebih pendek.
Pada setiap operasi, Noel (Q) berkurang 1 dan elemen ke-2 menjadi elemen terdepan.
Jika Noel (Q) = 0 maka Q = hampa
Remove (Q) = kondisi error (underflow condition)
Remove (Create (Q)) = kondisi error (underflow condition)
Tugas Stack
By : Meraih mimpi
1.Jelaskan konsep dari Stack yang anda ketahui?
Dalam memecahkan suatu masalah, terkadang kita membutuhkan algoritma yang hanya memperbolehkan insertion dan deletion pada akhir data saja, contohnya adalah algoritma backtracking (runut balik) dsb. Nah, untuk memecahkan masalah semacam itu, kita dapat menerapkan konsep stack.
Apa itu stack ?
Stack adalah sebuah abstract data type (ADT) yang berisi koleksi data item yang hanya dapat diakses pada akhir bagian stack tersebut, biasa disebut top. Hal ini berarti bahwa didalam sebuah stack, kita dapat memasukkan (insert) dan menghapus (delete) item hanya dari posisi top tersebut. Item terakhir yang kita masukkan kedalam sebuah stack adalah item yang paling pertama harus kita keluarkan. Itulah mengapa stack disebut sebagai Last-In-First-Out (LIFO) data structure. Kalimat sederhana yang dapat menjelaskan konsep tersebut adalah kalimat “Masuk belakangan keluar duluan”.
Didalam kehidupan sehari-hari, terdapat beberapa contoh penerapan algoritma dari data structure ini, seperti dalam membuat suatu tumpukan piring, tumpukan buku, tumpukan koin, tusuk sate, atau bahkan cara memakai gelang. Salah satu contoh, dalam membuat suatu tumpukan piring kita pasti menempatkan piring pertama berada pada posisi paling bawah, dan piring terakhir berada pada posisi paling atas. Nah, ketika kita hendak mencuci atau mengambil piring tersebut, maka kita akan mengambil piring pada tumpukkan atas terlebih dahulu dan seterusnya hingga mencapai piring paling bawah. Hal tersebut juga serupa pada tumpukan buku, koin, tusuk sate dan cara memakai gelang. Saya rasa ilustrasi tersebut cukup menjelaskan konsep LIFO
STACK merupakan salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Stack dapat dibayangkan seperti tumpukan barang, dimana hanya data terakhir yang dapat diperoleh (diakses) dengan satu langkah. Data-data yang terletak di bawahnya hanya bisa diambil (pop) setelah data data yang berada di atasnya diambil (dikeluarkan).
2.Berikan masing-masing contoh konsep dari push dan pop?
Konsep push
PUSH
Dengan menjalankan operasi PUSH, berarti kita menyimpan data pada posisi top didalam stack. Langkah selanjutnya yang dapat kita tempuh adalah :
1. Melakukan increment terhadap top sebesar 1
2. Menyimpan nilai/value pada index top didalam array
(Sekarang top mengandung index dari elemen yang paling atas)
Perhatikan gambar dibawah ini :
http://www.purwadhikapress.com/wp-content/uploads/2012/09/array.jpg
Konsep pop
Operasi POP berarti memindahkan atau menghapus item pada posisi top didalam stack. Untuk mengimplementasikannya kita dapat menggunakan langkah berikut ini :
1. Memungut kembali nilai dari index top
2. Melakukan decrement terhadap top sebesar 1
Bagaimanapun juga, sebelum melakukan operasi pop, kita harus melakukan pengecekan apakah stack itu kosong atau tidak. Jika kosong, tentu tidak ada elemen yang harus kita pop. Masih ingat dengan pendeklarasian diatas? Ya, sebelumnya kita telah mendeklarasikan bahwa jika kondisi stack kosong, maka top = -1
Sehingga kita dapat menerapkan kondisi berikut ini :
if top = -1
a. Display “Stack empty”
b. Exit
3.Buatlah program dari Stack
program tumpukan_kata;
uses wincrt;
const elemen = 255;
type S255 = string [elemen];
tumpukan = record
isi : s255;
atas : 0..elemen;
end;
var
T : tumpukan;
U : char;
kata : s255;
m,n : integer;
ulang: string;
procedure awalan (var T : tumpukan);
begin
T.Atas := 0;
end;
procedure push (var T : tumpukan; Z: char);
begin
T.Atas := T.Atas+1;
T.Isi[T.Atas] := Z;
end;
function pop (var T : tumpukan): char;
begin
pop := T.Isi[T.Atas];
T.atas := T.atas-1;
end;
begin
clrscr;
repeat
writeln('Masukkan Kata yang anda inginkan :');
read(kata);
writeln;
for m:= 1 to length (kata) do
push (T, kata[m]);
write('Elemen yang di-push : ', kata);
writeln;
readln;
for m:= 1 to length (kata) do
push (t, kata[m]);
writeln;
writeln('Hasil akhir push dibaca dengan pop : ');
for n:= 1 to length (kata) do
begin
u:= pop (T);
write(u);
end;
writeln;
writeln;
writeln('==========================================');
writeln;
writeln('Coba lagi? Ketik [Y / T], Kemudian [ENTER]');readln (ulang);
writeln;
clrscr;
Until (ulang = 'T') OR (ulang = 't');
writeln;
readln;
end.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5hG9iN0fFHmk65ekbujSDKM2A9Z6wpeiiBQcgrjKCdt2BsuX1yElINCUUggy8aSWAlJmT46YPa6b8DrOaOFOESy859aAKiPTtZSv8Gqv84DyKCAAVJbY-dl3u6UtyEMjJLeCnZRRhqyVr/s400/program-push-and-pop-stack.jpg
4.Apa yang anda ketahui tentang ADT
Type (ADT) adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut. Definisi TYPE dari sebuah ADT dapat mengandung sebuah definisi ADT lain.
Misalnya
:
ADT Waktu terdiri dari ADT JAM dan ADT DATE
GARIS yang terdiri dari dua buah POINT
SEGI4 yang terdiri dari pasangan dua buah POINT (Top, Left) dan (Bottom, Right)
TYPE diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan, misalnya menjadi struct dalam bahasa C. Primitif, dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedural.
ADT biasanya diimplementasi menjadi dua buah modul, yaitu:
1.Definisi/Spesifikasi Type dan Primitif
Spesifikasi type sesuai dengan bahasa yang bersangkutan
Spsesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu:
Fungsi : nama, domain, range, dan prekondisi jika ada
Prosedur : Initial State, Final State, dan Proses yang dilakukan
2. Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan.
Realisasi ADT dalam beberapa bahasa:
Source Code ADT Abstract Data Type
klik gambar untuk memperbesar!
Dalam modul ADT tidak terkandung definisi variabel. Modul ADT biasanya dimanfaatkan oleh modul lain, yang akan mendeklarasikan variabel bertype ADT tersebut dalam modulnya. Jadi ADT bertindak sebagai Supplier (penyedia type dan primitif), sedangkan modul pengguna berperan sebagai Client (pengguna) dari ADT tersebut. Biasanya ada sebuah pengguna yang khusus yang disebut sebagai main program (program utama) yang memanfaatkan langsung type tsb
PENGERTIAN ADT (Abstrack Data Type)
- ADT adalah tipe data yang dibuat oleh programmer
sendiri yang memiliki suatu nama tertentu.
- ADT dapat berupa tipe data dasar namun diberi nama
baru atau berupa kumpulan tipe data berbeda yang
diberi nama baru.
- Untuk pembuatan ADT digunakan keyword typedef
ADT (Abstract Data Type)
Tipe data abstrak (ADT) dapat didefinisikan sebagai model matematika dari objek data yang menyempurnakan tipe data dengan cara mengaitkannya dengan fungsi-fungsi yang beroprasi pada data yang bersangkutan. Merupakan hal yang sangat penting untuk mengenali bahwa operasi-operasi yang akan dimanipulasi data pada objek yang bersangkutan termuat dalam spesifikasi ADT. Sebagai contoh, ADT HIMPUNAN didefinisikan sebagai koleksi data yang diakses oleh operasi-operasi himpunan seperti penggabungan (UNION), irisan (INTERSECTION), dan selisih antar-himpunan (SET DIFFERENCE).
Implementasi dari ADT harus menyediakan cara tertentu untuk merepresentasikan unsur tipe data (seperti matrix) dan cara untuk mengimplementasikan operasi -operasi matrix. Secara tipikal, kita akan mendeskripsikan operasi-operasi pada ADT dengan algoritma (logika berfikir) tertentu. Algoritma ini biasanya berupa urutan instruksi yang menspesifikasi secara tepat bagaimana operasi-operasi akan dilakukan/dieksekusi oleh computer
.
Kita sekarang akan membahas lebih konkret tentang apa itu ADT. Pada dasarnya, ADT adalah tipe data tertentu yang didefinisikan oleh pemrogram untuk kemudahan pemrograman serta untuk mengakomodasi tipe-tipe data yang tidak secara spesifik diakomodasi oleh bahasa pemrograman yang digunakan. Maka, secara informal dapat dinyatakan bahwa ADT adalah :
Tipe data abstrak ADT pertama kali ditemukan oleh para ilmuan komputer utuk memisahkan struktur penyimpanan dari perilaku tipe data yang abstrak seperti misalnya, Tumpukan(Stack) serta antrian(Queue). Seperti kita duga, pemrogram tidak perlu tahu bagaimana Tumpukan(Stack) perubahan inplementasi ADT tidak mengubah program yang menggunakannya secara keseluruhan, dengan catatan bahwa interface ADT tersebut dengan ‘dunia luar’ tetap dipertahankan.
Pemakaian dan pembuatan ADT dapat dilakukan secara terpisah. yang perlu dibicarakan antara pembuat dan pengguna ADT adalah interface ADT yang bersangkutan.
ADT merupakan sarana pengembangan sistem yang bersifat modular, memungkinkan suatu sistem dikembangkan oleh beberapa orang anggota tim kerja dimana masing-masing anggota tim bisa melakukan bagiannya sendiri-sendiri dengan tetap mempertahankan keterpaduannya dengan anggota tim yang lain.
Dalam hal ini perlu dibedakan antara pengertian struktur data dan ADT. Struktur data hanya memperlihatkan bagaimana data-data di organisir, sedangkan ADT bercakupan lebih luas, yaitu memuat/mengemas struktur data tertentu sekaligus dengan operasi-operasi yang dapat dilakukan pada struktur data tersebut. Dengan demikian, definisi umum tentang ADT di atas dapat diperluas sebagai berikut :
5.Jelaskan konsep Array dalam Stack
1. STACK DENGAN MENGGUNAKAN ARRAY
Pengertian Stack
• Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman
• Bersifat LIFO (Last In First Out)
• Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack
• Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.
Operasi-operasi/fungsi Stack
• Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
• Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
• Clear : digunakan untuk mengosongkan stack
• IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
• IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Stack with Array of Struct
• Definisikan Stack dengan menggunakan struct
• Definisikan MAX_STACK untuk maksimum isi stack
• Buatlah variabel array data sebagai implementasi stack secara nyata
• Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
Deklarasi MAX_STACK
#define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9
Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
char data[10][10]; //misalkan : data adalah array of string
//berjumlah 10 data, masing-masing string
//menampung maksimal 10 karakter
};
Deklarasi/buat variabel dari struct
STACK tumpuk;
Inisialisasi Stack
• Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG!
• Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!
• Ilustrasi stack pada saat inisialisasi:
Fungsi IsFull
• Untuk memeriksa apakah stack sudah penuh?
• Dengan cara memeriksa top of stack, jika sudah sama dengan
MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
• Ilustrasi:
Fungsi IsEmpty
• Untuk memeriksa apakah stack masih kosong?
• Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong!
• Program:
Fungsi Push
• Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack
• Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)
• Ilustrasinya:
Fungsi Pop
• Untuk mengambil elemen teratas dari stack.
• Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang
• Ilustrasinya:
Programnya:
Fungsi Print
• Untuk menampilkan semua elemen-elemen stack
Dalam memecahkan suatu masalah, terkadang kita membutuhkan algoritma yang hanya memperbolehkan insertion dan deletion pada akhir data saja, contohnya adalah algoritma backtracking (runut balik) dsb. Nah, untuk memecahkan masalah semacam itu, kita dapat menerapkan konsep stack.
Apa itu stack ?
Stack adalah sebuah abstract data type (ADT) yang berisi koleksi data item yang hanya dapat diakses pada akhir bagian stack tersebut, biasa disebut top. Hal ini berarti bahwa didalam sebuah stack, kita dapat memasukkan (insert) dan menghapus (delete) item hanya dari posisi top tersebut. Item terakhir yang kita masukkan kedalam sebuah stack adalah item yang paling pertama harus kita keluarkan. Itulah mengapa stack disebut sebagai Last-In-First-Out (LIFO) data structure. Kalimat sederhana yang dapat menjelaskan konsep tersebut adalah kalimat “Masuk belakangan keluar duluan”.
Didalam kehidupan sehari-hari, terdapat beberapa contoh penerapan algoritma dari data structure ini, seperti dalam membuat suatu tumpukan piring, tumpukan buku, tumpukan koin, tusuk sate, atau bahkan cara memakai gelang. Salah satu contoh, dalam membuat suatu tumpukan piring kita pasti menempatkan piring pertama berada pada posisi paling bawah, dan piring terakhir berada pada posisi paling atas. Nah, ketika kita hendak mencuci atau mengambil piring tersebut, maka kita akan mengambil piring pada tumpukkan atas terlebih dahulu dan seterusnya hingga mencapai piring paling bawah. Hal tersebut juga serupa pada tumpukan buku, koin, tusuk sate dan cara memakai gelang. Saya rasa ilustrasi tersebut cukup menjelaskan konsep LIFO
STACK merupakan salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Stack dapat dibayangkan seperti tumpukan barang, dimana hanya data terakhir yang dapat diperoleh (diakses) dengan satu langkah. Data-data yang terletak di bawahnya hanya bisa diambil (pop) setelah data data yang berada di atasnya diambil (dikeluarkan).
2.Berikan masing-masing contoh konsep dari push dan pop?
Konsep push
PUSH
Dengan menjalankan operasi PUSH, berarti kita menyimpan data pada posisi top didalam stack. Langkah selanjutnya yang dapat kita tempuh adalah :
1. Melakukan increment terhadap top sebesar 1
2. Menyimpan nilai/value pada index top didalam array
(Sekarang top mengandung index dari elemen yang paling atas)
Perhatikan gambar dibawah ini :
http://www.purwadhikapress.com/wp-content/uploads/2012/09/array.jpg
Konsep pop
Operasi POP berarti memindahkan atau menghapus item pada posisi top didalam stack. Untuk mengimplementasikannya kita dapat menggunakan langkah berikut ini :
1. Memungut kembali nilai dari index top
2. Melakukan decrement terhadap top sebesar 1
Bagaimanapun juga, sebelum melakukan operasi pop, kita harus melakukan pengecekan apakah stack itu kosong atau tidak. Jika kosong, tentu tidak ada elemen yang harus kita pop. Masih ingat dengan pendeklarasian diatas? Ya, sebelumnya kita telah mendeklarasikan bahwa jika kondisi stack kosong, maka top = -1
Sehingga kita dapat menerapkan kondisi berikut ini :
if top = -1
a. Display “Stack empty”
b. Exit
3.Buatlah program dari Stack
program tumpukan_kata;
uses wincrt;
const elemen = 255;
type S255 = string [elemen];
tumpukan = record
isi : s255;
atas : 0..elemen;
end;
var
T : tumpukan;
U : char;
kata : s255;
m,n : integer;
ulang: string;
procedure awalan (var T : tumpukan);
begin
T.Atas := 0;
end;
procedure push (var T : tumpukan; Z: char);
begin
T.Atas := T.Atas+1;
T.Isi[T.Atas] := Z;
end;
function pop (var T : tumpukan): char;
begin
pop := T.Isi[T.Atas];
T.atas := T.atas-1;
end;
begin
clrscr;
repeat
writeln('Masukkan Kata yang anda inginkan :');
read(kata);
writeln;
for m:= 1 to length (kata) do
push (T, kata[m]);
write('Elemen yang di-push : ', kata);
writeln;
readln;
for m:= 1 to length (kata) do
push (t, kata[m]);
writeln;
writeln('Hasil akhir push dibaca dengan pop : ');
for n:= 1 to length (kata) do
begin
u:= pop (T);
write(u);
end;
writeln;
writeln;
writeln('==========================================');
writeln;
writeln('Coba lagi? Ketik [Y / T], Kemudian [ENTER]');readln (ulang);
writeln;
clrscr;
Until (ulang = 'T') OR (ulang = 't');
writeln;
readln;
end.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5hG9iN0fFHmk65ekbujSDKM2A9Z6wpeiiBQcgrjKCdt2BsuX1yElINCUUggy8aSWAlJmT46YPa6b8DrOaOFOESy859aAKiPTtZSv8Gqv84DyKCAAVJbY-dl3u6UtyEMjJLeCnZRRhqyVr/s400/program-push-and-pop-stack.jpg
4.Apa yang anda ketahui tentang ADT
Type (ADT) adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut. Definisi TYPE dari sebuah ADT dapat mengandung sebuah definisi ADT lain.
Misalnya
:
ADT Waktu terdiri dari ADT JAM dan ADT DATE
GARIS yang terdiri dari dua buah POINT
SEGI4 yang terdiri dari pasangan dua buah POINT (Top, Left) dan (Bottom, Right)
TYPE diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan, misalnya menjadi struct dalam bahasa C. Primitif, dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedural.
ADT biasanya diimplementasi menjadi dua buah modul, yaitu:
1.Definisi/Spesifikasi Type dan Primitif
Spesifikasi type sesuai dengan bahasa yang bersangkutan
Spsesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu:
Fungsi : nama, domain, range, dan prekondisi jika ada
Prosedur : Initial State, Final State, dan Proses yang dilakukan
2. Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan.
Realisasi ADT dalam beberapa bahasa:
Source Code ADT Abstract Data Type
klik gambar untuk memperbesar!
Dalam modul ADT tidak terkandung definisi variabel. Modul ADT biasanya dimanfaatkan oleh modul lain, yang akan mendeklarasikan variabel bertype ADT tersebut dalam modulnya. Jadi ADT bertindak sebagai Supplier (penyedia type dan primitif), sedangkan modul pengguna berperan sebagai Client (pengguna) dari ADT tersebut. Biasanya ada sebuah pengguna yang khusus yang disebut sebagai main program (program utama) yang memanfaatkan langsung type tsb
PENGERTIAN ADT (Abstrack Data Type)
- ADT adalah tipe data yang dibuat oleh programmer
sendiri yang memiliki suatu nama tertentu.
- ADT dapat berupa tipe data dasar namun diberi nama
baru atau berupa kumpulan tipe data berbeda yang
diberi nama baru.
- Untuk pembuatan ADT digunakan keyword typedef
ADT (Abstract Data Type)
Tipe data abstrak (ADT) dapat didefinisikan sebagai model matematika dari objek data yang menyempurnakan tipe data dengan cara mengaitkannya dengan fungsi-fungsi yang beroprasi pada data yang bersangkutan. Merupakan hal yang sangat penting untuk mengenali bahwa operasi-operasi yang akan dimanipulasi data pada objek yang bersangkutan termuat dalam spesifikasi ADT. Sebagai contoh, ADT HIMPUNAN didefinisikan sebagai koleksi data yang diakses oleh operasi-operasi himpunan seperti penggabungan (UNION), irisan (INTERSECTION), dan selisih antar-himpunan (SET DIFFERENCE).
Implementasi dari ADT harus menyediakan cara tertentu untuk merepresentasikan unsur tipe data (seperti matrix) dan cara untuk mengimplementasikan operasi -operasi matrix. Secara tipikal, kita akan mendeskripsikan operasi-operasi pada ADT dengan algoritma (logika berfikir) tertentu. Algoritma ini biasanya berupa urutan instruksi yang menspesifikasi secara tepat bagaimana operasi-operasi akan dilakukan/dieksekusi oleh computer
.
Kita sekarang akan membahas lebih konkret tentang apa itu ADT. Pada dasarnya, ADT adalah tipe data tertentu yang didefinisikan oleh pemrogram untuk kemudahan pemrograman serta untuk mengakomodasi tipe-tipe data yang tidak secara spesifik diakomodasi oleh bahasa pemrograman yang digunakan. Maka, secara informal dapat dinyatakan bahwa ADT adalah :
Tipe data abstrak ADT pertama kali ditemukan oleh para ilmuan komputer utuk memisahkan struktur penyimpanan dari perilaku tipe data yang abstrak seperti misalnya, Tumpukan(Stack) serta antrian(Queue). Seperti kita duga, pemrogram tidak perlu tahu bagaimana Tumpukan(Stack) perubahan inplementasi ADT tidak mengubah program yang menggunakannya secara keseluruhan, dengan catatan bahwa interface ADT tersebut dengan ‘dunia luar’ tetap dipertahankan.
Pemakaian dan pembuatan ADT dapat dilakukan secara terpisah. yang perlu dibicarakan antara pembuat dan pengguna ADT adalah interface ADT yang bersangkutan.
ADT merupakan sarana pengembangan sistem yang bersifat modular, memungkinkan suatu sistem dikembangkan oleh beberapa orang anggota tim kerja dimana masing-masing anggota tim bisa melakukan bagiannya sendiri-sendiri dengan tetap mempertahankan keterpaduannya dengan anggota tim yang lain.
Dalam hal ini perlu dibedakan antara pengertian struktur data dan ADT. Struktur data hanya memperlihatkan bagaimana data-data di organisir, sedangkan ADT bercakupan lebih luas, yaitu memuat/mengemas struktur data tertentu sekaligus dengan operasi-operasi yang dapat dilakukan pada struktur data tersebut. Dengan demikian, definisi umum tentang ADT di atas dapat diperluas sebagai berikut :
5.Jelaskan konsep Array dalam Stack
1. STACK DENGAN MENGGUNAKAN ARRAY
Pengertian Stack
• Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman
• Bersifat LIFO (Last In First Out)
• Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack
• Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.
Operasi-operasi/fungsi Stack
• Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
• Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
• Clear : digunakan untuk mengosongkan stack
• IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
• IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Stack with Array of Struct
• Definisikan Stack dengan menggunakan struct
• Definisikan MAX_STACK untuk maksimum isi stack
• Buatlah variabel array data sebagai implementasi stack secara nyata
• Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
Deklarasi MAX_STACK
#define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9
Deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
char data[10][10]; //misalkan : data adalah array of string
//berjumlah 10 data, masing-masing string
//menampung maksimal 10 karakter
};
Deklarasi/buat variabel dari struct
STACK tumpuk;
Inisialisasi Stack
• Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG!
• Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!
• Ilustrasi stack pada saat inisialisasi:
Fungsi IsFull
• Untuk memeriksa apakah stack sudah penuh?
• Dengan cara memeriksa top of stack, jika sudah sama dengan
MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
• Ilustrasi:
Fungsi IsEmpty
• Untuk memeriksa apakah stack masih kosong?
• Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong!
• Program:
Fungsi Push
• Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack
• Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)
• Ilustrasinya:
Fungsi Pop
• Untuk mengambil elemen teratas dari stack.
• Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang
• Ilustrasinya:
Programnya:
Fungsi Print
• Untuk menampilkan semua elemen-elemen stack
Tugas
By : Meraih mimpi
NAMA : MUHAJIR
NPM : 1405020042
UNIT : B/3
1. Jelaskan konsep pemetaan array ke strorage
a) Dimensi satu ?
b) Dimensi banyak ?
Jawaban
· pemetaan array ke storage Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni :
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
a) Dimensi satu
Deklarasi : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :
= Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).
PEMETAAN (MAPPING) ARRAY DIMENSI SATU KESTORAGE
Rumus : @A[i] = B + (i – 1) * L
Dimana : @A[i] : Posisi array yang dicari
B : Posisi awal index di memori computer
i : Subkrip atau index array yang di cari
L : Ukuran atau besar memori suatu tipe data
b) Dimensi banyak
- Dimensi dua (matrix / tabel )
- Dimensi tiga (kubik)
Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.
Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.
Array dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid. Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.
2. Jelaskan contoh kasus array dalam matrik dan pembentukan matrik dengan array ?
Jawaban
Matrik merupakan Implentasi dan penggunaan Array / larik multidimensi, dan matrik yang terbentuk akan dapat di tambahkan, dikalikan dan lain-lain. Vektor merupakan ADT (abstrak data type), dimana struktur data Vektor sesungguhnya cukup serupa dengan lank I dimensi. keduanya baik lank maupun vektor dapat menyimpan beberapa nilai yang bertipe data yang sama serta dapat diakses secara acak, banyak kemudahan pada ADT Vektor java, method method yang diperlukan untuk melakukan manipulasi data vektro sudah tersedia di java Interface Vektor, sebelum dapat digunakan class program java hams memanggil java.util.Vector;,sehingga semua interface vektor (method) akan dapat dikenali Konstruktor new Vector() membuat vektor tanpa elemen.
1. Matrik yang semua elemennya bernilai satu : A =
ones (3,3) maka semua elemen matriks A (3×3) bernilai satu
2..Matrik yang semua elemennya bernilai nol : A =
zeros (3,3) maka semua elemen matriks A bernilai nol
3.Matriks acak : A = rand (3,3) atau A = randn (3,
NPM : 1405020042
UNIT : B/3
1. Jelaskan konsep pemetaan array ke strorage
a) Dimensi satu ?
b) Dimensi banyak ?
Jawaban
· pemetaan array ke storage Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni :
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
a) Dimensi satu
Deklarasi : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :
= Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).
PEMETAAN (MAPPING) ARRAY DIMENSI SATU KESTORAGE
Rumus : @A[i] = B + (i – 1) * L
Dimana : @A[i] : Posisi array yang dicari
B : Posisi awal index di memori computer
i : Subkrip atau index array yang di cari
L : Ukuran atau besar memori suatu tipe data
b) Dimensi banyak
- Dimensi dua (matrix / tabel )
- Dimensi tiga (kubik)
Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.
Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.
Array dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid. Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.
2. Jelaskan contoh kasus array dalam matrik dan pembentukan matrik dengan array ?
Jawaban
Matrik merupakan Implentasi dan penggunaan Array / larik multidimensi, dan matrik yang terbentuk akan dapat di tambahkan, dikalikan dan lain-lain. Vektor merupakan ADT (abstrak data type), dimana struktur data Vektor sesungguhnya cukup serupa dengan lank I dimensi. keduanya baik lank maupun vektor dapat menyimpan beberapa nilai yang bertipe data yang sama serta dapat diakses secara acak, banyak kemudahan pada ADT Vektor java, method method yang diperlukan untuk melakukan manipulasi data vektro sudah tersedia di java Interface Vektor, sebelum dapat digunakan class program java hams memanggil java.util.Vector;,sehingga semua interface vektor (method) akan dapat dikenali Konstruktor new Vector() membuat vektor tanpa elemen.
1. Matrik yang semua elemennya bernilai satu : A =
ones (3,3) maka semua elemen matriks A (3×3) bernilai satu
2..Matrik yang semua elemennya bernilai nol : A =
zeros (3,3) maka semua elemen matriks A bernilai nol
3.Matriks acak : A = rand (3,3) atau A = randn (3,
TUGAS ARRAY DAN RECORD ARRAY DAN RECORD
By : Meraih mimpi
Boolean Adalah tipe data yang hanya bernilai benar (true) atau salah (false).
Jangkauan (nilai yang mungkin) hanya 2 yaitu true atau false. Tipe data boolean terdiri dari dua nilai saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program. Tipe boolean merupakan salah satu tipe data penting di Java. Anda dapat menghasilkan tipe boolean dengan membandingkan nilai satu dengan nilai yang lain. Java mempunyai operator yang digunakan untuk membandingkan dua nilai yang disebut dengan operator pembanding (comparison operator) atau operator relasi (relational operator). Hasil perbandingan dua nilai adalah nilai dengan tipe boolean (true dan false). Boolean merupakam rumusan matematika untuk menjelaskan sebuah hubungan logika antara fungsi dan pensaklaran digital. Aljabar Boolean memiliki 2 macam nilai logika. Hanya bilangan biner yang terdiri atas angka 0 dan 1 maupun pernyataan rendah dan tinggi.
1.Boolean
Program display_bool;
Uses wincrt;
Begin
Writeln(ord(true));
Writeln(ord(false));
End.
Tabel Operator Pembanding Atau Operator Relasi Di Java
Operator
Arti
Contoh
Jawaban
<
Kurang dari
4 < 7
True
<=
Kurang dari atau sama dengan
4 <= 7
True
>
Lebih besar dari
4 > 7
False
>=
Lebih besar dari atau sama dengan/td>
4 >= 7
False
==
Sama dengan
4 == 7
False
&&
Tidak sama dengan
4 != 7
True
Data yang termasuk bilangan real adalah data angka yang mengandung pecahan. Data yang seperti ini akan memiliki keterangan jangkauan, jumlah digit penting (berarti) dan ukuran. Digit berarti ini penting diperhatikan karena ini berhubungan dengan tingkat ketelitian data yang disajikan.
Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar6 byte.
2.Real
Program hitung_nilai_e;
Uses wincrt;
Var A:real;
B:real;
C:real;
D:real;
E:real;
Begin
Write(‘masukkan nilai a: ‘);readln(a);
Write(‘masukkan nilai b: ‘);readln(b);
Write(‘masukkan nilai c: ‘);readln(c);
Write(‘masukkan nilai d: ‘);readln(d);
Writeln;
C:=a+b+c+d;
Write(‘nilai e adalah: ‘,e);
End.
Defenisi String
String sebenarnya merupakan penggunaan tipe data char secara berkelompok. Tipe data string merupakan
array dari tipe data char, karena string merupakan array dari char, maka pendeklarasian sama dengan
mendeklarasikan array dari char. Untuk menampilkan string yang dikandung oleh sebuah array, karakter format yang dipergunakan adalah “%s”. Ketika kita menginstruksikan computer untuk menampilkan
string, computer akan memeriksa satu persatu elemen array dan menampilkannya ke layar monitor.
Computer akan berhenti memeriksa elemen array yang selanjutnya jika
menemukan null character („
\0). Merupakan urutan-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menempati memori sebesar banyaknya karakter string ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
3.String
Program hal_string;
Uses wincrt;
Var s:string;
Begin s:=’hello, apa kabar?...’;
Writeln(s);
Writeln(‘panjang dari string adalah: ‘,ord(s[0]));
End.
program list; {untuk menampilkan list data karyawan}
uses wincrt;
type karyawan=record
nama: string;
kelamin: string;
alamat : string;
end;
var kry: karyawan;
begin
clrscr;
write('Masukkan Nama: '); readln(kry.nama);
write('Masukkan Jenis Kelamin: '); readln(kry.kelamin);
write('Masukkan Alamat: '); readln(kry.alamat);
{untuk memasukkan data karyawan}
writeln(kry.nama); writeln(kry.kelamin);
writeln(kry.alamat);
{untuk menampilkan data karyawan}
end.
4.Integer
Integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
- Byte : Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8 bits ) di memori
- Short : Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes ( 16 bits ) di memori
- Int : Memiliki nilai integer dari -2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori
-Long : Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori.
//Program Nilai
#include <iostream.h>
#include <conio.h>
void main()
{int nilai;
cout<< " Masukan Nilai Antara 1 sampai 20 = ";
cin>>nilai;
if (nilai==1)
cout<<" Nilai 1 yang dipilih "<<endl;
else if (nilai==8)
cout<<" Nilai 2 yang dipilih "<<endl;
else if (nilai==9)
cout<<" Nilai 3 yang dipilih "<<endl;
else
cout<<" Nilai 20 yang dipilih "<<endl;
}
5.Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ).
Program lat5;
Uses wincrt;
Var TB,bayar:real;
Begin
Write(‘masukkan total belanjaan: ‘);readln(TB);
Writeln;
If(Tb>=500000 then
bayar:=(TB)-(TB*10/100)
Else if (TB>=100000) then
bayar:=(TB)-(TB*5/100);
Else
bayar:=TB;
Writeln(‘total bayar setelah potongan harga adalah: ‘,bayar:2:2);
End.
1.Program biodata
Program biodata;
Uses wincrt;
Var nama,nim,alamat,tempat_lahir,tanggal_lahir,jeniskelamin,notelepon: string;
Begin
Writeln(‘===========================================’);
Writeln(‘BIODATA MAHASISWA TEKNIK INFORMATIKA’);
Writeln(‘===========================================’);
Writeln(‘Nama :’)readln(nama);
Writeln(‘Nim :’)readln(nim);
Writeln(‘Alamat :’)readln(alamat);
Writeln(‘Tempat lahir :’)readln(tepat_lahir);
Writeln(‘Tanggal lahir :’)readln(tanggal_lahir);
Writeln(‘Jeniskelamin :’)readln(jeniskelamin);
Writeln(‘Notelepon :’)readln(notelepon);
Writeln;
Writeln;
end.
Program biodata;
Uses wincrt;
Var nama,alamat,hoby:string;
Begin
Clrscr;
Writeln(‘program penampil data diri’);
Writeln(‘**********************’);
Write(‘masukkan nama :’);readln(nama);
Write(‘masukkan alamat :’);readln(alamat);
Write(‘masukkan hoby :’);readln(hoby);
Writeln;
Writeln(‘hello namaku’ ,nama, ‘aku tinggal di’ ,alamat, ‘dan hobyku’ ,hoby);
Readln;
End.
Array merupakan tipe data tersetruktur dimana di dalamnya terdiri dari komponen–komponen yang mempunyai tipe data yang sama. Di dalam suatu array jumlah komponen banyaknya adalah tetap. Di dalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya. Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sama didalam suatu komunitas, untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama.
Array juga bisa didefinisikan dengan sebuah struktur data yang terdiri atas banyak variable dengan tipe data yang sama, dimana masing-masing elemen variable mempunyai nilai index. Setiap elemen array mampu untuk menyimpan satu jenis data.
Dan juga array ialah struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan terebih dahulu dan tidak bisa diubah saat program berjalan.
Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut untuk mengakses nilai pada array.
Ada beberapa macam teknik dalam mendapatkan nilai dari suatu elemen pada array salh satunya dengan metode pencarian beruntun.
Array 2 dimensi adalah array yang memiliki 2 buah elemen bertipe array yang berbentuk kolom dan baris.
cara membuat program dengan menggunakan array of string. Dengan asumsi program user dapat melakukan input data ke dalam array, kemudian seluruh array akan ditampilkan.
Dalam memberikan nilai pada array, akan dilakukan pengacak-an serta pengecekan nilai yang dihasilkan.
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang semuanya bertipe int.
C[0] -45
C[1] 6
C[2] 0
C[3] 72
C[4] 1543
C[5] 43
C[6] 4
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].
Deklarasi Array
Variable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variablearray c di atas adalah :
int c[7];
Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variablearray dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;
Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}
Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:
Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};
Contoh Program Array
uses wincrt;
var f : array [0..25] of integer;
i,n : integer;
begin
write('Masukan Jumlah Deret');
readln(n);
f[0] := 1;
f[1] := 1;
write('Deret Fibanoci');
write(f[0]:5,f[1]:5);
for i:=2 to (n-1) do
f[i] := f[i-1] + f[i-2];
write(f[i]:5);
end;
end.
Record merupakan sebuah rekaman yang disusun oleh beberapa field. Tiap field berisi data dari tipe dasar atau
bentukan tertentu.Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya.
Dan record juga sebuah tipe data yang mengumpulkan beberapa item data di mana masing-masing tipe data dari item data ini berbeda-beda. Masing-masing item data ini bisa disebut dengan field.
Record adalah kumpulan field yang sangat lengkap, dan biasanya dihitung dalam satuan baris. Tabel adalah merupakan kumpulan dari beberapa record dan juga field. File adalah terdiri dari record-record yang menggambarkan dari satu kesatuan data yang sejenis. Misalnya seperti file nama barang berisikan data tentang semua nama barang yang ada. Data adalah kumpulan fakta atau kejadian yang digunakan sebagai penyelesaian masalah dalam bentuk informasi. Pengertian basis data (database) adalah basis data yang terdiri dari dua kata, yaitu kata basis dan data. Basis dapat di artikan markas ataupun gudang, maupun tempat berkumpul.
Contoh program record
Program mencari_record;
Uses wincrt;
Var tanggal:record
Hari,bulan,tahun:integer
End;
Begin
Write(‘tanggal: ‘);
readln(tanggal.lahir);
Write(‘bulan : ‘);
Readln(tanggal.bulan);
Write(‘tahun : ‘);
Readln(tanggal.tahun);
Readln;
End.
Contoh Program Record
uses wincrt;
type
tsiswa = record
noabsensi = integer
nama = string[25]
end;
var s:tsiswa;
begin
writeln('Isikan Data Anda');
write('No Absensi :');readln(s.noabsensi);
write('Nama :');readln(s.nama);
writeln('-------------------------------');
writeln('Data-Data Diatas Merupakan Benar');
writeln('No Absensi :',s.noabsensi);
write('Nama :',s.nama);
end.
Jangkauan (nilai yang mungkin) hanya 2 yaitu true atau false. Tipe data boolean terdiri dari dua nilai saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program. Tipe boolean merupakan salah satu tipe data penting di Java. Anda dapat menghasilkan tipe boolean dengan membandingkan nilai satu dengan nilai yang lain. Java mempunyai operator yang digunakan untuk membandingkan dua nilai yang disebut dengan operator pembanding (comparison operator) atau operator relasi (relational operator). Hasil perbandingan dua nilai adalah nilai dengan tipe boolean (true dan false). Boolean merupakam rumusan matematika untuk menjelaskan sebuah hubungan logika antara fungsi dan pensaklaran digital. Aljabar Boolean memiliki 2 macam nilai logika. Hanya bilangan biner yang terdiri atas angka 0 dan 1 maupun pernyataan rendah dan tinggi.
1.Boolean
Program display_bool;
Uses wincrt;
Begin
Writeln(ord(true));
Writeln(ord(false));
End.
Tabel Operator Pembanding Atau Operator Relasi Di Java
Operator
Arti
Contoh
Jawaban
<
Kurang dari
4 < 7
True
<=
Kurang dari atau sama dengan
4 <= 7
True
>
Lebih besar dari
4 > 7
False
>=
Lebih besar dari atau sama dengan/td>
4 >= 7
False
==
Sama dengan
4 == 7
False
&&
Tidak sama dengan
4 != 7
True
Data yang termasuk bilangan real adalah data angka yang mengandung pecahan. Data yang seperti ini akan memiliki keterangan jangkauan, jumlah digit penting (berarti) dan ukuran. Digit berarti ini penting diperhatikan karena ini berhubungan dengan tingkat ketelitian data yang disajikan.
Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar6 byte.
2.Real
Program hitung_nilai_e;
Uses wincrt;
Var A:real;
B:real;
C:real;
D:real;
E:real;
Begin
Write(‘masukkan nilai a: ‘);readln(a);
Write(‘masukkan nilai b: ‘);readln(b);
Write(‘masukkan nilai c: ‘);readln(c);
Write(‘masukkan nilai d: ‘);readln(d);
Writeln;
C:=a+b+c+d;
Write(‘nilai e adalah: ‘,e);
End.
Defenisi String
String sebenarnya merupakan penggunaan tipe data char secara berkelompok. Tipe data string merupakan
array dari tipe data char, karena string merupakan array dari char, maka pendeklarasian sama dengan
mendeklarasikan array dari char. Untuk menampilkan string yang dikandung oleh sebuah array, karakter format yang dipergunakan adalah “%s”. Ketika kita menginstruksikan computer untuk menampilkan
string, computer akan memeriksa satu persatu elemen array dan menampilkannya ke layar monitor.
Computer akan berhenti memeriksa elemen array yang selanjutnya jika
menemukan null character („
\0). Merupakan urutan-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menempati memori sebesar banyaknya karakter string ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
3.String
Program hal_string;
Uses wincrt;
Var s:string;
Begin s:=’hello, apa kabar?...’;
Writeln(s);
Writeln(‘panjang dari string adalah: ‘,ord(s[0]));
End.
program list; {untuk menampilkan list data karyawan}
uses wincrt;
type karyawan=record
nama: string;
kelamin: string;
alamat : string;
end;
var kry: karyawan;
begin
clrscr;
write('Masukkan Nama: '); readln(kry.nama);
write('Masukkan Jenis Kelamin: '); readln(kry.kelamin);
write('Masukkan Alamat: '); readln(kry.alamat);
{untuk memasukkan data karyawan}
writeln(kry.nama); writeln(kry.kelamin);
writeln(kry.alamat);
{untuk menampilkan data karyawan}
end.
4.Integer
Integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
- Byte : Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8 bits ) di memori
- Short : Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes ( 16 bits ) di memori
- Int : Memiliki nilai integer dari -2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori
-Long : Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori.
//Program Nilai
#include <iostream.h>
#include <conio.h>
void main()
{int nilai;
cout<< " Masukan Nilai Antara 1 sampai 20 = ";
cin>>nilai;
if (nilai==1)
cout<<" Nilai 1 yang dipilih "<<endl;
else if (nilai==8)
cout<<" Nilai 2 yang dipilih "<<endl;
else if (nilai==9)
cout<<" Nilai 3 yang dipilih "<<endl;
else
cout<<" Nilai 20 yang dipilih "<<endl;
}
5.Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ).
Program lat5;
Uses wincrt;
Var TB,bayar:real;
Begin
Write(‘masukkan total belanjaan: ‘);readln(TB);
Writeln;
If(Tb>=500000 then
bayar:=(TB)-(TB*10/100)
Else if (TB>=100000) then
bayar:=(TB)-(TB*5/100);
Else
bayar:=TB;
Writeln(‘total bayar setelah potongan harga adalah: ‘,bayar:2:2);
End.
1.Program biodata
Program biodata;
Uses wincrt;
Var nama,nim,alamat,tempat_lahir,tanggal_lahir,jeniskelamin,notelepon: string;
Begin
Writeln(‘===========================================’);
Writeln(‘BIODATA MAHASISWA TEKNIK INFORMATIKA’);
Writeln(‘===========================================’);
Writeln(‘Nama :’)readln(nama);
Writeln(‘Nim :’)readln(nim);
Writeln(‘Alamat :’)readln(alamat);
Writeln(‘Tempat lahir :’)readln(tepat_lahir);
Writeln(‘Tanggal lahir :’)readln(tanggal_lahir);
Writeln(‘Jeniskelamin :’)readln(jeniskelamin);
Writeln(‘Notelepon :’)readln(notelepon);
Writeln;
Writeln;
end.
Program biodata;
Uses wincrt;
Var nama,alamat,hoby:string;
Begin
Clrscr;
Writeln(‘program penampil data diri’);
Writeln(‘**********************’);
Write(‘masukkan nama :’);readln(nama);
Write(‘masukkan alamat :’);readln(alamat);
Write(‘masukkan hoby :’);readln(hoby);
Writeln;
Writeln(‘hello namaku’ ,nama, ‘aku tinggal di’ ,alamat, ‘dan hobyku’ ,hoby);
Readln;
End.
Array merupakan tipe data tersetruktur dimana di dalamnya terdiri dari komponen–komponen yang mempunyai tipe data yang sama. Di dalam suatu array jumlah komponen banyaknya adalah tetap. Di dalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya. Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sama didalam suatu komunitas, untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama.
Array juga bisa didefinisikan dengan sebuah struktur data yang terdiri atas banyak variable dengan tipe data yang sama, dimana masing-masing elemen variable mempunyai nilai index. Setiap elemen array mampu untuk menyimpan satu jenis data.
Dan juga array ialah struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan terebih dahulu dan tidak bisa diubah saat program berjalan.
Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut untuk mengakses nilai pada array.
Ada beberapa macam teknik dalam mendapatkan nilai dari suatu elemen pada array salh satunya dengan metode pencarian beruntun.
Array 2 dimensi adalah array yang memiliki 2 buah elemen bertipe array yang berbentuk kolom dan baris.
cara membuat program dengan menggunakan array of string. Dengan asumsi program user dapat melakukan input data ke dalam array, kemudian seluruh array akan ditampilkan.
Dalam memberikan nilai pada array, akan dilakukan pengacak-an serta pengecekan nilai yang dihasilkan.
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang semuanya bertipe int.
C[0] -45
C[1] 6
C[2] 0
C[3] 72
C[4] 1543
C[5] 43
C[6] 4
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].
Deklarasi Array
Variable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variablearray c di atas adalah :
int c[7];
Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variablearray dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;
Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}
Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:
Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};
Contoh Program Array
uses wincrt;
var f : array [0..25] of integer;
i,n : integer;
begin
write('Masukan Jumlah Deret');
readln(n);
f[0] := 1;
f[1] := 1;
write('Deret Fibanoci');
write(f[0]:5,f[1]:5);
for i:=2 to (n-1) do
f[i] := f[i-1] + f[i-2];
write(f[i]:5);
end;
end.
Record merupakan sebuah rekaman yang disusun oleh beberapa field. Tiap field berisi data dari tipe dasar atau
bentukan tertentu.Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya.
Dan record juga sebuah tipe data yang mengumpulkan beberapa item data di mana masing-masing tipe data dari item data ini berbeda-beda. Masing-masing item data ini bisa disebut dengan field.
Record adalah kumpulan field yang sangat lengkap, dan biasanya dihitung dalam satuan baris. Tabel adalah merupakan kumpulan dari beberapa record dan juga field. File adalah terdiri dari record-record yang menggambarkan dari satu kesatuan data yang sejenis. Misalnya seperti file nama barang berisikan data tentang semua nama barang yang ada. Data adalah kumpulan fakta atau kejadian yang digunakan sebagai penyelesaian masalah dalam bentuk informasi. Pengertian basis data (database) adalah basis data yang terdiri dari dua kata, yaitu kata basis dan data. Basis dapat di artikan markas ataupun gudang, maupun tempat berkumpul.
Contoh program record
Program mencari_record;
Uses wincrt;
Var tanggal:record
Hari,bulan,tahun:integer
End;
Begin
Write(‘tanggal: ‘);
readln(tanggal.lahir);
Write(‘bulan : ‘);
Readln(tanggal.bulan);
Write(‘tahun : ‘);
Readln(tanggal.tahun);
Readln;
End.
Contoh Program Record
uses wincrt;
type
tsiswa = record
noabsensi = integer
nama = string[25]
end;
var s:tsiswa;
begin
writeln('Isikan Data Anda');
write('No Absensi :');readln(s.noabsensi);
write('Nama :');readln(s.nama);
writeln('-------------------------------');
writeln('Data-Data Diatas Merupakan Benar');
writeln('No Absensi :',s.noabsensi);
write('Nama :',s.nama);
end.