Popular Post

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

TUGAS QUEUE

By : Meraih mimpi

1.      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

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,

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.

artiket tentang type data sederhana dan majemuk

By : Meraih mimpi

Artikel tentang type data sederhana dan majemuk

                   Tipe data adalah suatu nilai yang dapat dinyatakan dalam bentuk konstanta atau variabel dan operator. Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat berubah-ubah selama eksekusi berlangsung

                   Tipe data dapat didefinisikan dengan istilah tempat untuk menentukan pemberian nilai terhadap suatu variabel sesuai atau tidak dengan nilai yang diberikan oleh user. Saya sebagai penulis kurang tahu berapa pastinya jumlah tipe data, karena tiap sumber yang saya perolah selalu mnyatakan jumlah yang berbeda,

                    namun di pembahasan kali ini tipe data yang dibahasa terbagi 2, yaitu tipe data primitive, dan composite, namun pada Turbo Pascal terdapat satu tipe lainnya, yaitu tipe data terstruktur.

Type Data Sederhana

                   Adalah tipe data yang hanya mampu menyimpan satu nilai tiap satu variabelnya. Tipe data primitive merupakan tipe data dasar yang sering dipakai oleh program. Contoh tipe data primitive  adalah tipe numerik (integer dan real), tipe data karakter/char, tipe data boolean

v Tipe data numeric digunakan pada variabel atau konstanta untuk menyimpan nilai dalam bentuk bilangan atau angka. Semua bahasa pemrograman menyediakan tipe data numeric, hanya saja berbeda dalam jenis numeric yang diakomodasi. Tipe data ini terbagi atas integer, dan real.

v Merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel 1. tabel 1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.

v Konstanta bertipe real adalah bilangan yang berisi titik desimal atau jenis bilangan pecahan. Dalam Pascal paling sedikit harus ada satu digit sebelum dan sesudah titik desimal, tidak boleh ada koma dan nilainya bisa positif atau negatif. Dapat dituliskan secara biasa atau model scientific. Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E merupakan simbol perpangkatan 10. Jadi 452.13 mempunyai nilai sama dengan 4.5213e2.

v  Boolean merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar) atau FALSE (salah). Turbo Pascal for Windows memiliki tiga macam jenis ini yaitu: Boolean, WordBool, dan LongBool. Tipe boolean memakai memori paling kecil, sedangkan WordBool dan LongBool dipakai untuk menulis program yang sesuai dengan lingkungan Windows.

v                 Record atau struct

v                    Seperti halnya Array, Record atau Struct juga termasuk tipe data komposit. Record dikenal dalam bahasa Pascal/Delphi sedangkan Struct dikenal dalam bahasa C++. Berbeda dengan array, tipe data record mampu menampung banyak data dengan tipe data berbeda-beda (heterogen). Misalnya, satu bagian integer, satu bagian lagi character, dan bagian lainnya Boolean. Biasanya record digunakan untuk menampung data suatu obyek. Misalnya, siswa memiliki nama, alamat, usia, tempat lahir, dan tanggal lahir. Nama akan menggunakan tipe data string, alamat bertipe data string, usia bertipe data single (numeric), tempat lahir bertipe data string, dan tanggal lahir bertipe data date.

    Date Time

                   Nilai data untuk tanggal (date) dan waktu (time) secara internal disimpan dalam format yang spesifik. Variabel atau konstanta yang dideklarasikan dengan tipe data Date dapat digunakan untuk menyimpan, baik tanggal maupun jam. Tipe data ini masuk dalam kelompok tipe data composite, karena merupakan bentukan dari beberapa tipe data.

2. Struktur Data Sederhana

                   Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.

Ø      garis besar type data dapat dikategorikan menjadi:

Type data sederhana.

•      Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.

•      Type data sederhana majemuk, misalnyaString

Ø Struktur Data, meliputi:

•      Struktur data sederhana, misalnya array dan record.

•      Struktur data majemuk, yang terdiri dari:

•      Linier : Stack, Queue, sertaList dan Multilist

Non Linier : Pohon Biner dan Graph

               

                Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.

        Struktur data yang standar yang biasanya digunakan dibidang informatika adalah

* List linier (Linked List) dan variasinya

* Multilist

* Stack (Tumpukan)

* Queue (Antrian)

* Tree ( Pohon)

* Graph ( Graf )

•     Jenis Struktur Data

  1. Struktur Data Sederhana 

a. Array(Larik)

        Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur, atau tipe larik lain. Nama lain array adalah Larik, tabel, atau vektor

         

b. Record(Catatan)

          ADT adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa pemrograman yang bersangkutan.

                   PENGERTIAN STRUKTUR DATA Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol

                    Secara garis besar type data dapat dikategorikanmenjadi :1. Type data sederhana a.

           Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter b. Type data sederhana majemuk, misalnya String2.

           Struktur Data, meliputi

           a. Struktur data sederhana, misalnya array dan record b. Struktur data majemuk, yang terdiri dari: Linier : Stack, Queue, serta List dan Multilist Non Linier : Pohon Biner dan Graph

           Pemakaian struktur data yang tepatdi dalam proses pemrograman akanmenghasilkan algoritma yang lebihjelas dan tepat, sehinggamenjadikan program secarakeseluruhan lebih efisien dansederhana.

                   Struktur data yang ″standar″ yangbiasanya digunakan di bidanginformatika adalah : List linier (Linked List) dan variasinya Multilist Stack (Tumpukan) Queue (Antrian) Tree ( Pohon ) Graph ( Graf )

                    REVIEW RECORD (REKAMAN) Disusun oleh satu atau lebih field.

           Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram. Rekaman disebut juga tipe terstruktur.

          Contoh :

          1. type Titik : record <x : real, y : real> jika P dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x dan P.y.

                    Didefinisikan tipe terstruktur yang mewakili Jam yang dinyatakan sebagai jam (hh), menit (mm) dan detik (ss), maka cara menulis type Jam adalah :

           type Jam : record <hh : integer, {0…23} mm : integer, {0…59} ss : integer {0…59} > Jika J adalah peubah (variabel) bertipe Jam maka cara mengacu tiap field adalah J.hh, J.mm dan J.ss

           Terjemahan dalam bahasa C :1. type Titik : record <x : real, y : real> diterjemahkan menjadi : typedef struct { float x; float y; } Titik;

           type Jam : record <hh : integer, {0…23} mm : integer, {0…59} ss : integer {0…59} > Diterjemahkan menjadi : typedef struct { int hh; /*0…23*/ int mm; /*0…59*/ int ss; /*0…59*/ } Jam;


Struktur Data Majemuk

       Stack(Tumpukan)

          Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan “di atas” (top), penghapusan selalu dilakukan pada top).

                   Karena aturan penyisipan dan penghapusan semacam itu,

           top adalah satu-satunya alamat tempat terjadi operasi.

                    Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen stack akan tersusun secara LIFO (Last In First Out).

          Queue(Antrian)

          Queue (antrian) adalah list linier yang dikenali elemen pertama (head) dan elemen terakhirnya (tail);

                    Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama;

                   Satu elemen dengan elemen lain dapat diakses melalui informasi next.

•      List dan Multi-List (Daftar)

                   List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

           sebuah list linier dikenali dengan

           (1) elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first);

           (2) Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next;

           (3) Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat diakses; (4) Elemen terakhirnya.


Ciri-Ciri Operator Dalam Bahasa Pemograman Pascal

                Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai dan sebagainya.

                   Jenjang menunjukkan operator mana yang akan dikerjakan terlebih dahulu jika dalam suatu ungkapan melibatkan lebih dari satu macam operator. Jenjang dengan nomor 1 adalah jenjang yang tertinggi.

           Misalnya

          ungkapan X=B+A, melibatkan dua operator; operator aritmatika ‘+’ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator pengerjaan ‘=’, sehingga ungkapan B+A akan dikerjakan terlebih dahulu dan kemudian hasilnya akan diberikan ke variabel X.


JENIS-JENIS OPERATOR

                   Bahasa C menyediakan jenis-jenis operator

           misalnya :

operator aritmatika

 operator pengerjaan

operator hubungan

 operator logika

 operator bitwise

dan operator koma.

- Copyright © ANAK ACEH PINTAR - Date A Live - Powered by Blogger - Designed by Johanes Djogan -