Senin, 21 September 2015

TUGAS PERTEMUAN 2 PROGRAM SEDERHANA

Program Sederhana dengan Menggunakan Type Data Sederhana dan Majemuk
Program sederhana dengan Tipe data Integer
program phytagoras;
uses wincrt;
var a,b,c,i,j,k:integer;
begin
     writeln ('program segitiga phytagoras');
     writeln('masukkan sisi pertama'); readln(i);
     writeln('masukkan sisi kedua'); readln(j);
     writeln('masukkan sisi ketiga'); readln(k);
     if (i>j) and (i>k) then begin c:=i; b:=j; a:=k end
     else if (j>i) and (j>k) then begin c:=i; b:=j; a:=k end
          else begin c:=k; b:=i; a:=j end;
     writeln;
     writeln ('a= ',a,'b= ',b,'c= ',c);
     if (c*c=a*a+b*b)
        then begin
        writeln ('karena ','c','2 > ','a','2 +','b','2 maka');
        writeln ('segitiga tersebut adalah segitiga siku-siku') end

    else if (c*c>a*a+b*b)
          then begin
          writeln ('karena ','c','2>','a','2+','b','2 maka');
          writeln('segitiga tersebut adalah segitiga tumpul')end
          else begin
          writeln('karena','c','2<','a','2+','b','2 maka');
          writeln('segitiga tersebut adalah segitiga lancip')end
     end.

 Program Sederhana dengan Tipe Data Real 
Program Hitung_Luas_Balok;
Uses wincrt;
Var panjang:real;
    lebar:real;
    tinggi:real;
    Luasbalok:real;
Begin
     write('masukkan nilai panjang:'); readln(panjang);
     write('masukkan nilai lebar:'); readln(lebar);
     write('masukkan nilai tinggi:'); readln(tinggi);
     writeln;
     Luasbalok:=2*(panjang*lebar+lebar*tinggi+panjang*tinggi);
     writeln('Nilai luasbalok adalah:',luasbalok:0:2);
End.
  Program Sederhana dengan Tipe Data Bolean
Program display_bool;
Uses wincrt;
Begin
write('!!! PROGRAM TIPE DATA BOLEAN !!!');
writeln;
write('================================');
writeln;
writeln('>> laki-laki ');
writeln;
Writeln('>> perempuan ');
writeln;
writeln('^_^ TERIMA KASIH SUDAH MENCOBA ^_^');
End.
CONTOH 2 :
program boolean;
{ekspresi boolean}
uses wincrt;
begin
clrScr;
writeln (' S > s =', 'S' <'s');
writeln ('s > S =', 's' > 'S');
writeln ('5 > 2 =', 5 > 2);
readln;
end.
 Program Sederhana dengan Tipe Data Char
Program menampilkan_huruf;
uses wincrt;
var Alfabet:char;
begin
     write('!!! PROGRAM MENAMPILKAN CHAR !!!');
     writeln;
     write('+++==========================+++');
     writeln;
     writeln;
     writeln ('== Huruf Alfabet " S " Ditampilkan ==');
    
end.

Tipe Data Majemuk
ØProgram dengan Tipe Data String
program warna_baju;                                           
uses wincrt;
var hari,pakai:string;
begin
     write('masukkan hari:'); readln(hari);
     writeln;
     if (hari='senin') then
        pakai:='pink'
     else if (hari='selasa') then
          pakai:='coklat susu'
     else if (hari='rabu') then
          pakai:='biru'
     else if (hari='kamis') then
          pakai:='merah'
     else if (hari='jumat') then
 pakai:='kuning'
     else if (hari='sabtu') then
          pakai:='coklat'
     else if (hari='minggu') then
         pakai:='hitam';
     writeln('jadi baju yang anda pakai hari ini adalah:',pakai);
     end.
Program Penggunaan Jenis Operator Data Pada Tipe Data Sederhana Dalam Bahasa Pemograman Pascal
1.OPERATOR ARITMATIKA
program menghitung_usia;
uses wincrt;
var TgS, BlS, Ths, TgL, BlL, ThL : Integer;
   X1: Integer;
   X2: Integer;
   X3: Integer;
   X4: Integer;
   TTH: Integer;
   UsiaThn: Integer;
   UsiaBln: Integer;
   UsiaHr: Integer;
Begin
     writeln('            ^-^ PROGRAM MENGHITUNG USIA ^-^');
     WRITELN;
     WRITELN;
     Write('Masukkan Tgl Sekarang       : '); Readln(TgS);
     Write('Masukkan Bulan Sekarang     : '); Readln(BlS);
     Write('Masukkan Tahun Sekarang     : '); Readln(ThS);
     Writeln;
     Write('Masukkan Tgl Lahir          : '); Readln(TgL);
     Write('Masukkan Bulan Lahir        : '); Readln(BlL);
     Write('Masukkan Tahun Lahir        : '); Readln(ThL);
Writeln;
     X1 := 30-TgL;
     X2 := (12 - BlL) * 30;
     X3 := ((ThS - 1)-ThL) * 360;
     X4 := ((BlS-1)*30)+TgS;
     TTH:=(X1+X2+X3+X4);
     UsiaThn:=TTH Div 360;
     UsiaBln:=((TTH - (UsiaThn * 360)) Div 30);
     UsiaHr:=TTH Mod ((UsiaThn*360)+(UsiaBln*30));
     writeln('           ^-^ USIA ANDA SEKARANG ^-^');
     writeln;
     writeln;
     Writeln(UsiaThn , ' Tahun');
     Writeln(UsiaBln, ' Bulan');
     Writeln(UsiaHr, ' Hari')  ;
end.
2. Operator Relasional
program menghitung_nilai;
uses wincrt;
var nama : string;
    kehadiran:integer;
    nilaikehadiran:real;
    tugas : real;
    nilaitugas : real;
    Kuis  : real;
    nilaikuis : real;
    Mid   : real;
    nilaiMid   : real;
    Final : real;
    nilaifinal: real;
    total:real; 
begin
     writeln('=============================');
     writeln('     PROGRAM NILAI AKHIR');
     writeln('=============================');
     write('masukkan nama                     : ')           ; readln( nama);
     write('masukkan Jumlah kehadiran         : ')    ; readln(kehadiran);
     write('masukkan Nilai Tugas              : ')         ; readln( tugas);
     write('masukkan Nilai Kuis               : ')          ; readln( kuis);
     write('masukkan Nilai Midtest            : ')       ; readln( mid);
     write('masukkan Nilai Final              : ')         ; readln( final);
    
   
     nilaikehadiran := ((kehadiran * (100/14))*10 )/100;
     nilaitugas := (tugas *15)/100;
     nilaikuis := (kuis*10)/100;
     nilaimid := (mid*25)/100;
     nilaifinal := ( final*40)/100;
     total := nilaikehadiran + nilaitugas + nilaikuis + nilaimid + nilaifinal;
     writeln(total :2:0);
     if (total>= 85) then
     write('grade nilai anda A')
     else if ( total >= 75) then
     write('grade nilai anda B')
     else if total >= 65 then
     write('grade nilai anda C')
     else if total >= 55 then
     write('grade nilai anda D')
     else if total < 55 then
     write('grade nilai anda E')   
end.
    3. Operator Logic
program operator_logic;
uses wincrt;
var angka:integer;
      nilai :integer;
      i:integer;
begin
write('Masukan Nilai = '); readln(nilai);
{for i :=1 to 5 Do}
if(nilai < 5)then
write('Angka benar')
else
write('Angka Salah');
end.
4. Operator Not
Program operator_NOT;
{ekspresi menggunakan }
Uses wincrt;
begin
clrscr;
writeln ('A >a=','A'<'a');
writeln ('A<A =','A'>'A');
readln;
end.
5. Operator Or

Program operator_OR;
{ekspresi menggunakan }
Uses wincrt;
begin
clrscr;
writeln ('A >a =','A'>'a');
writeln ('a <A =','a'>'A');
writeln ('A >a=','A'<'a');
writeln ('A <a=','A'<'a');
readln;
end. 
6. Operator And
Program operator_AND;
{ekspresi menggunakan }
Uses wincrt;
begin
clrscr;
writeln ('A >a =','A'>'a');
writeln ('a <A =','a'<'A');
writeln ('a <A =','a'<'A');
writeln ('a <A =','a'>'A');
readln;
end.
7. Program Operator XOR
Program operator_XOR;
{ekspresi menggunakan }
Uses wincrt;
begin
clrscr;
writeln ('A >a =','A'>'a');
writeln ('a <A =','a'>'A');
writeln ('a <A =','a'>'A');
writeln ('a <A =','a'<'A');
readln;
end.
8. Operator Assigment
program Assigment;
uses wincrt;
var x,y,z:integer; {variabel x,y dan z belum memiliki nilai}
begin
x:=11;{nilai variabel x}
y:=20; {nilai variabel y}
z:=y+x; {memproses x dan y ke dalam variabel z}
write('nilai hasil proses penugasan = ',z);
readln;
end.                           
end.

ARRAY
ØPengertian Array (Larik)
Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut.



Suatu array dapat dibedakan atas 2 (dua) bagian, yaitu :
a. Array Berdimensi Satu

Array berdimensi satu dapat dikatakan sebagai suatu daftar yang linier atau sebuah kolom. Bentuk deklarasi dari array jenis ini dalam bahasa Pascal adalah:
VAR nama_array : ARRAY [index] OF jenis_elemen;
 Contoh Program :
program percabangan;
uses wincrt;
var
Nmhari : array[1..7] of string;
a : integer;
Begin
for a:= 1 to 7 do
begin
write('Nama Hari Ke-',a,' :');
readln(nmhari[a]);
end;
CLRSCR;
writeln('================');
writeln('NAMA-NAMA HARI');
writeln('================');
for a:= 1 to 7 do
writeln(a,' ',nmhari[a]);
end.
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const).
Contoh
program kkk;
Uses winCrt;
Const
Tetap : Array[1..4] of Integer=(7,10,21,20);
Var i : Integer;
Begin
  For i:= 1 to 4 Do
  Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
  Readln;
End.



b. Array Dimensi Dua

Array dimensi dua ini dapat dianggap sebagai sebuah matriks yang jumlah kolomnya  lebih dari satu. Bentuk deklarasi :
VAR nama_array : ARRAY  [indeks_baris,indeks_kolom] OF jenis;
Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini.

Program_Deklarasi_Array_Dua_Dimensi; 
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin 
ClrScr; 
Tabel[1,1]:=1; 
Tabel[1,2]:=2; 
Tabel[2,1]:=3; 
Tabel[2,2]:=4; 
Tabel[3,1]:=5; 
Tabel[3,2]:=6; 
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); 
End; 
End; 
Readln; 
End.
Ø Keunggulan array adalah :
1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu
secara langsung tanpa melalui elemen-elemen lain.
2. Jika telah berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemenelemen
tetangga, baik elemen pendahulu atau elemen penerus.
Ø Kelemahan array adalah :
1. Array mempunyai fleksibilitas rendah, karena array mempunyai batasan harus bertipe
homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen
lain bilangan, dan elemen lain adalah tipe-tipe lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array dengan ukuran statik
yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan
terjadi terus-menerus, maka representasi statis ini bersifat tidak efisien dalam penggunaan
memori.
Record pada Bahasa Pemrograman Pascal
Ø Definisi Record 
Record merupakan sebuah rekaman yang disusun  oleh beberapa field. Tiap field berisi data dari tipe dasar atau bentukan tertentu. Record mempunyai kelebihan untuk menyimpan sekumpulan elemen data yang berbeda-beda tipenya.
program data_record;
uses wincrt;
type
tsiswa = record
noabsensi :integer;
nama :string[25] ;
end;
var s:tsiswa;
begin
     write('!!! DATA MAHASISWA !!!');
     writeln;
     writeln('======================');
     writeln;
     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

Senin, 14 September 2015

TUGAS PERTEMUAN PERTAMA TIPE DATA

TYPE Data Sederhana Dan Majemuk
1. Type data sederhana
  a. Type data sederhana tunggal terbagi dalam beberapa type data yaitu:
vInteger
  Integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
1.     Byte
2.     Short
3.     Int
4.     Long
vReal
  Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar6 byte.
vKarakter
  Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ).
vBoolean
  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.
       Sebagai bilangan ordinal boolean true mempunyai nilai 1(satu), sedangkan false nilainya adalah 0(nol).
 Contoh:
Program display_bool;
 uses wincrt;
 begin writeln(ord(true));
 writeln(ord(false));
 end.
 Hasilnya: 1 0 3.2.
b. Type data majemuk, misalnya
ØString
 Merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. String adalah data yang berisi sederet karakter yang terletak diantara tanda kutip satu. Jika karakter kutip merupakan bagian dari konstanta string, maka ditulis dengan menggunakan dua buah tanda kutip satu berurutan. Nilai data string akan menempati memori sebesar maksimla jumlah karakter yang dapa ditampung ditambah denga 1 byte (index ke-0) untuk menyimpan panjang string yang sebenarnya. Jika panjang string tidak ditulis, maka panjang string dianggap 255 karakter. Panjang string yang diijinkan antara 1 sampai 255.
Bentuk umum dari deklarasi tipe string adalah:
Var pengenal : string[panjang];
dimana
pengenal : nama variabel
panjang : bilangan bulat yang menunjukkan banyaknya karakter (1 – 255).
2. Struktur Data, meliputi
  a. Struktur data sederhana terbagi dalam beberapa type data yaitu
vArray
   Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu larik disebut dengan elemen-elemen larik. Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.
Menurut dimensinya, array dapat dibedakan menjadi :
Ø Array satu dimensi
     Setiap elemen array dapat diakses melalui index. Index array secara default dimulai dari 0
     Deklarasi array :
     Tipe_array nama_array[ukuran]
     Contoh : int bil [20]
 
ØArray dua dimensi
   Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom bentuknya dapat berupa          matriks atau tabel.
Ø Array multidimensi
Array multidimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan deklarasi array dimensi satu maupun dimensi dua.
Perbedaan array dengan tipe data lain :
Array dapat mempunyai sejumlah nilai, sedangkan tipe data lain hanya dihubungkan dengan sebuah nilai saja.

Array dapat digunakan untuk menyimpan beberapa nilai tipe data lain data (char, int, float, double, long, dll) yang sama dengan satu nama saja.

Selain itu, array dapat berupa satu dimensi atau lebih, sedangkan tipe data lain hanya berupa satu dimensi.
 
Array juga dapat digunakan sebagai parameter, jenisnya adalah :
 
Array dimensi satu sebagai parameter :
Pengiriman parameter berupa array dimensi satu merupakan pengiriman secara acuan/referensi, karena yang dikirimkan adalah alamat dari elemen pertama arraynya, bukan seluruh nilai-nilai elemenya. Alamat elemen pertama dari array dapat ditunjukkan oleh nama lariknya yang tidak ditulis dengan indeknya.
 
  Array dua dimensi sebagai parameter :
Pengiriman parameter berupa array dua dimensi hampir sama dengan pengiriman parameter array satu dimensi, hanya saja perbedaannya adalah dalam array dua dimensi harus menyebutkan baris dan kolom array dimensi dua tersebut, mendeklarasikan MAX_ROWS dan MAX_COLS yang digunakan untuk pengiriman parameter array dua dimensi dan pada saat pengiriman parameter formal array dua dimensi, kita harus menyebutkan banyaknya dimensi array untuk kolom, sehingga ukuran kolom dapat diketahui, hal ini berkaitan dengan pemesanan variabel array di memori.
vRecord
Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan sekumpulan elemen data yang berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat buah field.
ØField 1
ØField 2
ØField 3
ØField 4
Ø Cara pendeklarasian dari record adalah sebagai berikut :
•  
Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
•  
Mendefinisikan variabel untuk dilakukan operasi.
Record dapat diakses (diisi) dan dibaca per elemen record dengan menyebut nama elemennya.
Struktur data sederhana dan majemuk
Struktur Data Majemuk
    Terdiri dari :
    1) Linier, Misalnya :
üStack
üQueue
üLinear Linked List
    2) Non Linier, Misalnya :
üPohon (Tree)
üPohon Biner (Binary  Tree)
ü Pohon Cari Biner (Binary Search Tree),
üGeneral Tree
ü Graph.
STRUKTUR DATA LINIER
ØStack
Stack atau Tumpukan adalah suatu struktur data yang terbentuk dari barisan hingga yang terurut dari satuan data. Pada Stack, penambahan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir stack. Posisi ini disebut Puncak atau Top dari stack. Stack mempunyai sifat LIFO (Last In First Out), yang artinya Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.
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 
Ø Queue
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Queue atau antrian prinsip yang digunakan adalahMasuk Pertama Keluar Pertamaatau FIFO (First In First Out). Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 
Karakteristik Queue atau antrian
1. elemen antrian 
2. front (elemen terdepan antrian
3. tail (elemen terakhir
4. jumlah elemen pada antrian 
5. status antrian Operasi pada Queue atau antrian 
6. tambah(menambah item pada belakang antrian
7. hapus (menghapus elemen depan dari antrian
8. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak
Operasi-operasi Queue : 
 1). Create() Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail = -1 
 2). IsEmpty() Untuk memeriksa apakah Antrian sudah penuh atau belum Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail. 
 3). IsFull Untuk mengecek apakah Antrian sudah penuh atau belum Dengan cara mengecek nilai Tail, jika 
Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh 
 4). Enqueue Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu 
 5). Dequeue() Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 Penggeseran dilakukan dengan menggunakan looping.
 6). Clear() Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca.
7.
Tampil() Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail 
ØLinier Linked List
ialah suatu record data yang dihubungkan satu dengan lainnya menggunakan pointer.
Fungsi-fungsi yang dapat dipakai dalam operasi linked list adalah:
1.      Fungsi menambah simpul di belakang. Langkah-langkahnya:
a. membuat simpul baru kemudian diisi info baru.
b. simpul paling akhir dihubungkan ke simpul baru.
c.  penunjuk pointer akhir diarahkan ke simpul simpul baru.
2.      Fungsi menambah simpul di depan. Langkah-langkahnya:
a. embuat simpul baru, kemudian diisi info baru.
b.  simpul baru dihubungkan ke simpul awal.
c.  enunjuk pointer awal diarahkan ke simpul baru.
3.      Fungsi menyisipkan simpul di tengah. Langkah-langkahnya:
a.  membuat simpul bantu, kemudian diisi info baru.
b. enentukan di mana simpul baru akan ditambahkan, yaitu dengan menempatkan pointer    bantu pada suatu tempat.
c.pointer baru dihubungkan ke simpul setelah simpul yang ditunjuk oleh pointer bantu, kemudian penunjuk pointer bantu diarahkan ke simpul baru.
4.      Fungsi menghapus simpul di depan. Langkah-langkahnya:
a. simpul bantu diarahkan pada simpul awal.
b. simpul awal diarahkan ke simpul berikutnya.
c. menghapus simpul bantu.
5.      Fungsi menghapus simpul di tengah. Langkah-langkahnya:
a. meletakkan pointer bantu di sebelah kiri simpul yang akan dihapus.
b. simpul yang akan dihapus ditunjuk oleh pointer lain, misalnya pointer hapus.
c. pointer bantu diarahkan ke simpul yang ditunjuk oleh hapus, kemudian simpul hapus dihapus.
6.      Fungsi menghapus simpul di belakang. Langkah-langkahnya:
a.   meletakkan pointer bantu di sebelah kiri simpul yang akan dihapus.
b.      simpul yang akan dihapus ditunjuk oleh pointer lain, misalnya pointer hapus.
c.       pointer bantu, diarahkan ke simpul yang ditunjuk oleh hapus, kemudian simpul hapus dihapus.
7.      Fungsi mencetak list dengan membaca maju. Langkah-langkahnya:
a.       mengatur agar pointer bantu menunjuk simpul yang ditunjuk oleh pointer awal.
b.      setelah isi simpul dibaca dan dicetak, pointer bantu digerakkan ke kanan untuk membaca simpul berikutnya.
c.       proses ini diulang sampai pointer bantu sama dengan pointer akhir.
8.      Fungsi mencetak list dengan membaca mundur. Langkah-langkahnya:
a.       mengatur agar pointer bantu menunjuk simpul yang ditunjuk oleh pointer akhir.
b.      setelah pointer bantu menunjuk simpul akhir, baru dicetak.
c.       proses pencetakan dilanjutkan dengan mencetak isi simpul di sebelah kiri simpul akhir.
d.      proses selesai jika isi simpul paling awal telah selesai dicetak.
9.      Fungsi mencari data pada list. Langkah-langkahnya:
a.       data yang dicari disimpan dalam suatu variabel, misalkan elemen.
b.      membuat pointer bantu sama dengan pointer awal.
c.       isi simpul yang ditunjuk oleh pointer bantu dibandingkan dengan elemen. Jika sama, berarti data yang dicari ditemukan. Jika belum sama, maka pointer bantu dipindahkan ke simpul di sebelah kanannya dan proses perbandingan diulang. Proses ini diulang sampai data yang dicari ditemukan atau sampai pada simpul akhir
üTree
S alah satu bentuk struktur data tidak linier yang menggambarkan hubungan yang hirarki.

>> Ketentuan Tree
q Root (akar) adalah node yang memiliki derajat keluar >=0 dan derajat masuk = 0.
q Subtree/child adalah bagian salah satu node dibawah root sampai ke bawah.
q Leaf (daun) adalah semua node yang derajat masuknya 1 dan derajat keluarnya 0.
q Height (ketinggian) adalah level tertinggi dari tree ditambah 1.
q Weight (bobot) adalah jumlah leaf(daun) pada tree.

>> Contoh Tree
Contoh tree dengan 2 level.
Root : node A
Subtree : 2 yaitu node B dan C
Leaf : 4
yaitu node D, E, F, G
Level :
ada 2
Height : level + 1 = 2 + 1 = 3
Size : 7 node
yaitu A, B, C, D, E, F, G
ü Binary tree
sebuah binary search tree (bst) adalah sebuah pohon biner yang boleh kosong, dan setiap nodenya harus memiliki identifier/value. value pada semua node subpohon sebelah kiri adalah selalu lebih kecil dari value dari root, sedangkan value subpohon di sebelah kanan adalah sama atau lebih besar dari value pada root, masingmasing subpohon tersebut (kiri&kanan) itu sendiri adalah juga bst.sebuah bst, pada dasarnya adalah sebuah pohon biner (binary tree), oleh karena itu, kita dapat melakukan traversal pada setiap node dengan metode inorder, preorder maupun postorder. dan jika kita melakukan traversal dengan metode inorder, pada dasarnya kita telah melakukan traversal valuenya secara terurut dari kecil ke besar, jadilah ini sebagai sorting algoritma.
contoh:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
node *left;
node *right;
};
node *tree=NULL;
node *insert(node *
tree,int ele);
void preorder(node *tree);
void
inorder(node *tree);
void
postorder(node *tree);
int count=1;
void main()
{
clrscr();
int ch,ele;
do
{
clrscr();
cout<<"\n\t\a\a1----INSERT A NODE IN A BINARY TREE.\a\a";
cout<<"\n\t\a\a2----PRE-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a3----IN-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a4----POST-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a5----EXIT.\a\a";
cout<<"\n\t\a\aENTER CHOICE::\a\a";
cin>>ch;
switch(
ch)
{
case 1:
cout<<"\n\t\a\aENTER THE ELEMENT::\a\a";
cin>>ele;
tree=insert(
tree,ele);
break;
case 2:
cout<<"\n\t\a\a****PRE-ORDER TRAVERSAL OF A TREE****\a\a";
preorder(tree);
break;
case 3:
cout<<"\n\t\a\a****IN-ORDER TRAVERSAL OF A TREE****\a\a";
inorder(tree);
break;
case 4:
cout<<"\n\t\a\a****POST-ORDER TRAVERSAL OF A TREE****\a\a";
postorder(tree);
break;
case 5:
exit(0);
}
}while(
ch!=5);
}
node *insert(node *
tree,int ele)
{
if(tree==NULL)
{
tree=new node;
tree->left=tree->right=NULL;
tree->data=
ele;
count++;
}
 if(count%2==0)
tree->left=insert(tree->
left,ele);
else
tree->right=insert(tree->
right,ele);
return(tree);
}
void preorder(node *tree)
{
if(tree!=NULL)
{
cout<<tree->data;
preorder(tree->left);
preorder(tree->right);
getch();
}
}
void
inorder(node *tree)
{
if(tree!=NULL)
{
else
inorder(tree->left);
cout<<tree->data;
inorder(tree->right);
getch();
}
}
void
postorder(node *tree)
{
if(tree!=NULL)
{
postorder(tree->left);
postorder(tree->right);
cout<<tree->data;
getch();
}
}
üGraf
adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan sekumpulan garis (sisi). Graph dapat digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Representasi visual dari graph adalah dengan menyatakan objek sebagai noktah, bulatan atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis (Edge).
G = (V, E)
Dimana
G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
E = Busur atau Edge, atau arc
Graf merupakan suatu cabang ilmu yang memiliki banyak terapan. Banyak sekali struktur yang bisa direpresentasikan dengan graf, dan banyak masalah yang bisa diselesaikan dengan bantuan graf. Seringkali graf digunakan untuk merepresentasikan suaru jaringan. Misalkan jaringan jalan raya dimodelkan graf dengan kota sebagai simpul (vertex/node) dan jalan yang menghubungkan setiap kotanya sebagai sisi (edge) yang bobotnya (weight) adalah panjang dari jalan tersebut.
Ada beberapa cara untuk menyimpan graph di dalam sitem komputer. Struktur data bergantung pada struktur graph dan algoritma yang digunakan untuk memmanipulasi graph. Secara teori salah satu dari keduanya dapat dibedakan antara struktur list dan matriks, tetapi dalam penggunaannya struktur terbaik yang sering digunakan adalah kombinasi keduanya.
• Graph tak berarah (undirected graph atau non-directed graph) :
Urutan simpul dalam sebuah busur tidak dipentingkan. Misal busur e1 dapat disebut busur AB atau BA
• Graph berarah (directed graph) :
Urutan simpul mempunyai arti. Misal busur AB adalah e1 sedangkan busur BA adalah e8.
• Graph Berbobot (Weighted Graph)
Jika setiap busur mempunyai nilai yang menyatakan hubungan antara 2 buah simpul, maka busur tersebut dinyatakan memiliki bobot.
Bobot sebuah busur dapat menyatakan panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan perhari yang melalui sebuah jalan, dll.
üPenelusuran Pohon Biner
Adalah suatu ide untuk melakukan penelusuran (traversing) atau kunjungan
(visiting) masing‐masing simpul sebanyak 1 kali.
Penelusuran ini akan menghasilkan urutan linier dari informasi
Ada 3 cara penelusuran, yaitu:
v inorder
vPreorder
vPostorder
Penelusuran inorder:
v Telusuri subtree kiri dalam inorder
v Proses simpul akar
vTelusuri subtree kanan dalam inorder
Penelusuran Preorder:
v Proses simpul akar
vTelusuri subtree kiri dalam Preorder
vTelusuri subtree kanan dalam
vPreorder
Penelusuran Postoeder:
vTelusuri subtree kiri dalam postorder
vTelusuri subtree kanan dalam postoeder
v Proses simpul akar
Contoh :
Misalkan sederetan angka sebagai berikut:
7, 2, 8, 5, 9, 6, 4, 3, 1
Untuk mendapatkan angka 1, secara linier kita akan memerlukan 9 kali perbandingan, yang dimulai dari 7, 2, 8, dan seterusnya hingga ketemu angka 1. Bagaimana pohon binar mempercepat pencarian tersebut ?.
Algoritmanya adalah, (a) angka pertama dijadikan simpul awal, (b) angka-angka berikutnya, bila lebih besar, diletakkan di simpul sebelah kanan, sedangkan yang lebih kecil diletakkan di sebelah kiri. Maka gambar pohon tersebut adalah:
Dengan demikian, jika yang akan dicari adalah angka 1, maka hanya dengan tiga kali proses perbandingan, sudah diperoleh.
ØGeneral Pohon
 Pohon umum (general tree), yaitu pohon yang di setiap simpulnya boleh tidak memiliki cabang atau memiliki cabang berapapun.
Jenis-jenis Operator Dalam Bahasa Pemograman Pascal
OPERATOR DALAM PASCAL
Dalam menulis program kita tidak mungkin terlepas dari penggunaan operator. Operator sendiri didefinisikan sebagai sesuatu yang digunakan untuk melakukan operasi-operasi tertentu, misalnya operasi aritmatika, penggabungan string dan banyak lagi yang lainnya.
Nilai yang dioperasikan oleh operator bersama operand membentuk suatu ekspresi.
Contoh :
1 + 2 – 3, yang disebut ekspresi. Tanda + dan – merupakan tanda operator sedangkan nilai 1,2 dan 3 disebut operand.
ØOperator Assignment
Operator assignment digunakan untuk melakukan pemberian nilai terhadap suatu variabel sehingga operator ini juga sering dikenal dengan operator penugasan. Dalam bahasa Pascal operator yang digunakan untuk melakukan hal ini adalah operator :=. Berikut ini bentuk umum untuk melakukan pemberian nilai terhadap suatu variabel.
NamaVariabel := nilai_yang_akan_dimasukkan;
Contoh:
Var
    x: integer;
    y: real;
    str: string;

Begin
      x := 123;
      y := 56.04;
      str := ‘Mencoba memasukkan nilai ke dalam variabel’;
      ....
End.
ØOperator Aritmatika
Bahasa Pascal menyediakan beberapa operator yang dapat digunakan dalam operasi aritmatika, seperti penjumlahan, pengurangan, perkalian, pembagian dan penentuan sisa bagi.

ØOperator Logika
Operator logika digunakan untuk melakukan operasi-operasi yang menghasilkan nilai logik (true dan false).
ØOPERATOR NOT
Operator ini digunakan untuk menentukan negasi atau pengingkaran dari nilai logik lain. Jika nilai yang dihasilkan adalah true maka negasi-nya adalah false. Begitu juga sebaliknya.
ØOPERATOR and
Untuk memudahkan penggunaan operator and, ingatlah bahwa operand and hanya akan bernilai true jika semua operandnya bernilai true. Selain itu operasi akan menghasilkan nilai false.
Contoh program menggunakan operator and:
Program Operator_And;
  Uses wincrt;
  Begin
  Clrscr;
  Writeln(‘TRUE and TRUE  =’, true and true);
  Writeln(‘TRUE and FALSE =’, true and false);
  Writeln(‘FALSE and TRUE =’, false and true);
  Writeln(‘FALSE and FALSE =’,false and false);
  Readln;
End.
ØOperator Relasional
Operator relasional adalah operator yang digunakan untuk menentukan relasi atau hubungan dari dua buah nilai atau operand. Operator ini terdapat dalam sebuah ekspresi yang selanjutnya akan menentukan benar atau tidaknya ekspresi tersebut. Operator relasional biasanya digunakan untuk melakukan pengecekan kondisi dalam blok pemilihan.