Pages

Stop Exploitasi Hutan Indonesia!

Rabu, 02 Januari 2013

Laporan Praktikum Struktur Data Modul 5


LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL 5 



NAMA: TRI WIJAYANTO
NIM: 115410126
JURUSAN: TI/S1

LABORATORIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM YOGYAKARATA
2012




PEMBAHASAN PRAKTIKUM MODUL 5



Program


import java.util.Scanner;
class simpul                                     {  
protected
String nama;             
int umur;                                     
    simpul kanan;                                            
public  void ngisiSimpul(String NAMA, int UMUR) {        
nama = NAMA;
        umur = UMUR;    }
void cetakSimpul()                      {
     System.out.print (nama + "-" + umur + " ");}}

PEMBAHASAN :
String nama merupakan data yang dimasukkan bertipe string dan variabel umur bertipe data integer. DalamProgram ini simpul yang digunakan merupakan simpul tunggal yaitu simpul kanan.Simpul kanan  merupakan simpul yang memiliki sebuah penunjuk yaitu kekanan.Perintah protected merupakan perintah untuk membatasi hak akses, sehingga variabel nama dan umur tidak dapat diakses oleh kelas yang lain.Perintah ngisiSimpul(String NAMA, int UMUR), berarti bahwa variabel nama diganti dengan NAMA dan variabel umur diganti dengan UMUR. Selanjutnya untuk mencetak simpul tersebut menggunakan void cetak simpul() { System.out.print(data)}.

class senarai {             à           kelas kedua dengan nama senarai
protected      à     perintah protected bearti bahwa kelas ini tidak dapat di akses oleh kelas lain
simpul awal;
    simpul akhir;
public                    à           konstruktor
    void inisialisasiSenaraiKosong()   {             à        void yang berfungsi memberitahukan bahwa senarai kosong
awal = null;
        akhir = null;   }

PEMBAHASAN :
Perintah di atas berarti bahwa kelas senarai terdiri dari Simpul Awal dan simpul akhir dimana simpul awal merupakan null(nol)=simpul kosong dan diakhiri dengan simpul akhir yang sam dengan null juga(kosong).Dan perintah protected merupakan perintah untuk membatasi hak akses, sehingga variabel nama dan umur tidak dapat diakses oleh kelas yang lain.

    int hitungJumlahSimpul() {
        int N = 0;
        simpul bantu;
        bantu = awal;
        while (bantu != null)     {
            bantu = bantu.kanan;
            N++;   }
        return (N);     }

PEMBAHASAN :
Perintah di atas merupakan perdeklarasian untuk menghitung jumlah simpul dengan tipe data integer yanag dimulai dari 0. Variabel bantu dideklarasikan dengan nama variabel yaitu awal. N++ berarti simpul tersebut akanbertambah satu.

    void tambahDepan(String NAMA, int UMUR)   {             //            Perintah di samping berfungsi untuk menambah diawal 'senarai'
System.out.println("tambah depan '" +NAMA+ "' dilakukan..");        //            Perintah untuk mencetak bahwa penambahan di bagian depan telah berhasil dilakukan
  simpul baru = new simpul() ;    à        Pembuatan objek baru dengan nama baru
baru.ngisiSimpul(NAMA, UMUR);
if (awal == null) { // list masih kosong
            awal = baru;
            akhir = baru;
            baru.kanan = null;    }
        else  {
            baru.kanan = awal;
            awal = baru;     }}

PEMBAHASAN :
Perintah di atas menyatakan pembuatan objek baru  dengan nama simpul. Pada pendeklarasian tersebut mengandung sebuah perulanagan. Dalam senarai ini juga didefinisikan bahwa awal adalah kosong (null)  dan akhir juga kosong ( null). Untuk menambahkan data baru kedalam program. Simpul baru = new Simpul merupakan pembuatan objek baru yang menandakan bahwa Simpul baru merupakan new simpul. if(awal==null)merupakan fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa akhir adalah baru dan data baru mengikat var disebelah kanannya(baru.kanan = awal;) dan var baru akan mengikat var dikirinya yang merupakan var kosong.(baru.kiri = null) sehingga awal sama dengan baru(awal = baru;).

void tambahBelakang(String NAMA, int UMUR) {             à           Void disamping digunakan untuk menambah data senarai pada bagian tengah
System.out.println("tambah belakang '" +NAMA+ "'dilakukan.."); à           Perintah untuk mencetak bahwa penambahan di bagian belakang  telah berhasil dilakukan
        simpul baru = new simpul();                   à        Pembuatan objek baru dengan nama baru
baru.ngisiSimpul(NAMA, UMUR);
        if (awal == null)    {             à           Sintaks disamping berate bahwa  list masih kosong
            awal = baru;
            akhir = baru;
            baru.kanan = null;    }
        else  {
            akhir.kanan = baru;
            akhir = baru;
            baru.kanan = null;    }}

PEMBAHASAN :if(awal==null)merupakan fungsi perulangan jika awal sama dengan kosong maka program akan menandai bahwa akhir adalah baru dan data baru mengikat var disebelah kanannya(baru.kanan = awal;) dan var baru akan mengikat var dikirinya yang merupakan var kosong.(baru.kiri = null) sehingga awal sama dengan baru(awal = baru;) Pada perulanagn tersebut ada perulangan lagi untuk menghitung jumlah simpul yang menyatakan bahwa jika posisi awal adalah 1 maka penambahan dilakukan di depan, jika tidak maka penambhan dilakukan di bagian belakang.

void tambahTengah(int POSISI, String NAMA, int UMUR) {    à           Void disamping digunakan untuk menambahkan data senarai pada bagian tengah
        System.out.println("tambah tengah '" +NAMA+ "'dilakukan..");   à                Perintah untuk mencetak bahwa penambahan di bagian tengah  telah berhasil dilakukan

        if (awal == null)  {
simpul baru = new simpul();      à        Pembuatan objek baru dengan nama baru
            baru.ngisiSimpul(NAMA, UMUR);
            awal = baru;
akhir = baru;
            baru.kanan = null;    }
        else  {
            int jumlahSimpul = hitungJumlahSimpul();
            if (POSISI == 1) //if (awal.nama > NAMA) {
                tambahDepan(NAMA, UMUR);        }
            else if (POSISI > jumlahSimpul) //if(NAMA > akhir.nama)     {
                tambahBelakang(NAMA, UMUR); }
            else   {

PEMBAHASAN : Perintah di atas merupakan perulangan jika kanan adalah nol maka hitung jumlah simpul jika posisi awal adalah 1 maka penambahan dilakukan dibagian depan jika tidak maka penambahan di lakukan di bagian belakang

simpul bantu = new simpul();                 à        Pembuatan objek baru dengan nama bantu
bantu = awal; à        Pendeklarasian objek bantu dengan variabel awal
                int N = 1;
                while ((N < POSISI-1) && bantu != akhir) //while (bantu.kanan.nama < NAMA)    {
                    bantu = bantu.kanan;
                    N++;          }
                simpul baru = new simpul(); à        Pembuatan objek baru dengan nama baru
                baru.ngisiSimpul(NAMA, UMUR);
                baru.kanan = bantu.kanan;
                bantu.kanan = baru;        }}}
void cetakSenarai() {             à           Void disamping digunakan untuk menvetak senarai
System.out.println("CETAK: ");            à        Sistem akan mencetak komentar dalam tanda petik dua tersebeut yaItu CETAK
     if (awal == null)   {
System.out.print(".... SENARAI KOSONG....");   }                à        Sistem akan mencetak komentar dalam tanda petik dua tersebeut yaitu SENARAI KOSONG , sehingga user akan mengetahui bahwa senarai tersebut kosong
else      {
        simpul bantu = new simpul();  à        Pembuatan objek baru dengan nama bantu
        bantu = awal;
        while (bantu != null)     {
            bantu.cetakSimpul();
            bantu = bantu.kanan;  }}

PEMBAHASAN :Program tersebut digunakan untuk menghapus data diakhir senarai.Disini  dijelaskan bahwa Simpul bantu merupakan variabel awal(Simpul bantu = awal;). Dalam program ini digunakan pengulangan while. Variabel bantu mengikat variabel dikanan yang sama dengan variabel akhir, fungsi cut digunakan supaya perulangan tidak melakukan backtracking setelah ditemukan variabel diakhir.( while(bantu.kanan !=akhir)). Variabel bantu adalah variabel yang hanya mengikat data dikanan(bantu=bantu.kanan;). Simpul yang dihapus merupakan berada diakhir simpul(simpul hapus= akhir;), sehingga variabel akhir adalah vaiabelr bantu(akhir=bantu;), Dan variabel akhir mengikat variabel disebelah kanan yang merupakan kosong(tidak ada data lagi) maka program akan melakukan penghapusan.

    System.out.println("");   }    à        perintah yang berfungsi untuk member jarak spasi pada output
 void tambahhapus(String NAMA)    {             à           Void disamping digunakan untuk menghapus data dari senarai
     if (awal == null)  {
  System.out.println("Senarai kosong, menghapus tidak dapat dilakukan");     }             à        Sistem akan mencetak komentar dalam tanda petik dua tersebeut yaitu meberitahukan kepada user bahwa senarai kosong dan penghapusan data tidak dapat dilakukan.     else  {
System.out.println("menghapus '" + NAMA + "' dilakukan..");   à           Perintah untuk mencetak bahwa penghapusan  telah berhasil dilakukan
        if (awal.nama.equals(NAMA))      {
            awal = awal.kanan;      }
        else  {
            simpul bantu;
            bantu = awal;
            while (bantu.kanan.nama.equals(NAMA)==false) //while(bantu.kanan.nama != NAMA) {
                bantu = bantu.kanan;
                if (bantu.kanan == null) break;      }
            if ((bantu == akhir) && (NAMA.equals(akhir.nama)==false))   {
                System.out.println("data '" + NAMA + "' yang anda maksud tidak ada dalam list"); }             à        Sistem akan mencetak pemberitahuan bahwa data yang telah dimasukkan tidak ada dalam daftar
            else {
                System.out.println("Menghapus "+NAMA+" dilakukan...");   à           Perintah untuk mencetak bahwa penghapusan  telah berhasil dilakukan
                bantu.kanan = bantu.kanan.kanan;    }   }  }    }}
//----------------------bagian program utama-------------------------------------------------//
class senaraitunggal    {             //            Perintah di samping  merupakan kelas utama dari program yang telah dibuat diatas yaitu dengan nama senaraitunggal.
    public static void main(String[] args) {             //            Program utama
        senarai mahasiswa = new senarai();                  à           Pembuatan objek baru dengan nama mahasiswa
        mahasiswa.inisialisasiSenaraiKosong();     à           Menyatakan bahwa senarai kosong
                                                mahasiswa.tambahBelakang("Dedi", 15);
                                                mahasiswa.tambahBelakang("Cecep", 12); //             Penambahan di bagian belakang
                                                mahasiswa.tambahBelakang("Budi", 25);           mahasiswa.tambahBelakang("Abud", 32);
                                mahasiswa.cetakSenarai();}}                  à        Perintah untuk mencetak senarai

HASIL









Praktikum 2
menambahkan perintah di bagian belakang
mahasiswa.tambahBelakang("EKO", 25);
mahasiswa.tambahBelakang("DEDI", 25);       
mahasiswa.tambahBelakang("FERI", 25);
mahasiswa.tambahBelakang("GUNAWAN", 32);
mahasiswa.tambahBelakang("HASAN", 19);
mahasiswa.cetakSenarai();
PEMBAHASAN : Sintaks di atas dimasukkan pada sistem yang bertujuan untuk menambah kan data ke bagian belakang sistem, penambahan tersebut dilakaukan sebanyak 5 orang yang berbeda dengan umur yang berbeda pula. Sehingga hasil output dapat terlihat dioutput di bawah ini yang menyatakan bahwa penamabahan tersebut berhasil dilakukan maka komposisi dari senarai pun juga terpengaruh oleh penamabahan tersebut .
OUTPUT









Praktikum 3
menambahkan perintah di bagian tengah
mahasiswa.tambahTengah(4, "ZAENAL", 25);
      mahasiswa.cetakSenarai();

PEMBAHASAN :
Perintah di atas berfungsi untuk menambahkan data pada bagian tengah senarai, pada awalnya perintah tersebut tidak bias dijalankan karena pada pendeklaraian void di bagian tengah ada variabel yang tidak sesuai dengan intruksi yaitu baru.kiri = bantu;
      bantu.kanan = baru;

output










Praktikum 4
menghapus data
mahasiswa.hapus("DEDI");
mahasiswa.hapus("PARMIN");
     mahasiswa.cetakSenarai();
PEMBAHASAN :Sintaks di atas dimasukkan pada program yang berfungsi untuk menambahkan data orang yang bernama DEDi dan PARMIN , namun PARMIN hal tersebut tidak dapat dilakukan oleh sistem karena data dari Parmin tidak berhasil ditemukan oleh sistem.
output








TUGAS
Modifikasi program dengan menambahkan jenis kelamin dan jabatan :
import java.util.Scanner;
class simpul{
    protected
    String nama;
    int umur;
    char jkel;
    String jbtn;
    simpul kanan;
public
    void ngisiSimpul(String NAMA, int UMUR, char JK, String JABATAN) {
        nama = NAMA;
        umur = UMUR;
        jkel= JK;
        jbtn= JABATAN;}
 void cetakSimpul() {
     System.out.print (nama + "-" + umur + "-" +jkel+" "+jbtn+" ");}}
class senarai{
protected
    simpul awal;
    simpul akhir;
public
    void inisialisasiSenaraiKosong(){
        awal = null;
        akhir = null;}
    int hitungJumlahSimpul(){
        int N = 0;
        simpul bantu;
        bantu = awal;
        while (bantu != null)
        {
            bantu = bantu.kanan;
            N++;
        }
        return (N);
    }
    void tambahDepan(String NAMA, int UMUR, char JK, String JABATAN)
    {
        System.out.println("tambah depan '" +NAMA+ "' dilakukan..");
        simpul baru = new simpul();
        baru.ngisiSimpul(NAMA, UMUR, JK, JABATAN);
        if (awal == null) // list masih kosong
        {
            awal = baru;
            akhir = baru;
            baru.kanan = null;        }
        else     {
            baru.kanan = awal;
            awal = baru;
        }    }
    void tambahBelakang(String NAMA, int UMUR, char JK, String JABATAN)    {
        System.out.println("tambah belakang '" +NAMA+ "'dilakukan..");
        simpul baru = new simpul();
        baru.ngisiSimpul(NAMA, UMUR, JK, JABATAN);
        if (awal == null)
        {
            awal = baru;
            akhir = baru;
            baru.kanan = null;
        }
        else
        {
            akhir.kanan = baru;
            akhir = baru;
            baru.kanan = null;
        }}
    void tambahTengah(int POSISI, String NAMA, int UMUR, char JK, String JABATAN){
        System.out.println("tambah tengah '" +NAMA+ "'dilakukan..");
        if (awal == null) {
            simpul baru = new simpul();
            baru.ngisiSimpul(NAMA, UMUR,JK , JABATAN);
            awal = baru;
            akhir = baru;
            baru.kanan = null;  }
        els       {
            int jumlahSimpul = hitungJumlahSimpul();
            if (POSISI == 1) //if (awal.nama > NAMA)     {
                tambahDepan(NAMA, UMUR, JK, JABATAN)          }
            else if (POSISI > jumlahSimpul) //if(NAMA > akhir.nama)     {
                tambahBelakang(NAMA, UMUR, JK, JABATAN);            }
            else{
                            simpul bantu = new simpul();
                bantu = awal;
                int N = 1;
                while ((N < POSISI-1) && bantu != akhir) //while (bantu.kanan.nama < NAMA){
                    bantu = bantu.kanan;
                    N++;}
                simpul baru = new simpul();
                baru.ngisiSimpul(NAMA, UMUR,JK, JABATAN);
                baru.kanan = bantu.kanan;
                bantu.kanan = baru;
            }}}
 void cetakSenarai() {
     System.out.println("CETAK: ");
     if (awal == null){
         System.out.print(".... SENARAI KOSONG....");}
     else{
        simpul bantu = new simpul();
        bantu = awal;
        while (bantu != null){
            bantu.cetakSimpul();
            bantu = bantu.kanan;}}
    System.out.println(""); }
 void tambahHapus(String NAMA){
     if (awal == null){
         System.out.println("Senarai kosong, menghapus tidak dapat dilakukan");}
     else{
        System.out.println("menghapus '" + NAMA + "' dilakukan..");
        if (awal.nama.equals(NAMA)){
            awal = awal.kanan;}
        else {
            simpul bantu;
            bantu = awal;
            while (bantu.kanan.nama.equals(NAMA)==false) //while(bantu.kanan.nama != NAMA{
                bantu = bantu.kanan;
                if (bantu.kanan == null) break;}
            if ((bantu == akhir) && (NAMA.equals(akhir.nama)==false)) {
                System.out.println("data '" + NAMA + "' yang anda maksud tidak ada dalam list");}
            else{
                System.out.println("Menghapus "+NAMA+" dilakukan...");
                bantu.kanan = bantu.kanan.kanan;} }}}}
//----------------------bagian program utama-------------------------------------------------
class tugassenaraitunggal{
    public static void main(String[] args) {
        senarai mahasiswa = new senarai();
        mahasiswa.inisialisasiSenaraiKosong();
        mahasiswa.tambahDepan("Dedi",15,'L', "OB");
        mahasiswa.tambahDepan("Cecep",12, 'L', "OWNER");
        mahasiswa.tambahDepan("Ani",11,'P', "DIREKTUR");
        mahasiswa.tambahDepan("Abud",10,'L', "KEUANGAN");
        mahasiswa.cetakSenarai();
        mahasiswa.tambahBelakang("Eko",25,'L', "SEKERTARIS");
        mahasiswa.tambahBelakang("Feri",25,'L', "KARYAWAN");
        mahasiswa.tambahBelakang("Gunawan",32,'L', "SECURITY");
mahasiswa.tambahBelakang("Hasan",19,'L', "KARYAWAN");
            mahasiswa.cetakSenarai();
            mahasiswa.tambahTengah(4,"Zaenal",25,'L', "MANEGER");
            mahasiswa.cetakSenarai();
            mahasiswa.tambahHapus ("Dedi");
                        mahasiswa.cetakSenarai(); }}
Hasil
LISTING TERLAMPIR



0 komentar:

Posting Komentar