laporan praktikum algoritma dan struktur data · pdf file laporan praktikum algoritma dan...

Click here to load reader

Post on 23-Feb-2020

15 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA ARRAY 1 DIMENSI

    Disusun oleh :

    Nama : Gustian Ri’pi NIM : 135150201111060 Asisten 1 : Az Zahra Rahma Putri Afifa Asisten 2 : Fitri Bibi Suryani Dosen Pengampu : Lailil Muflikhah, S.Kom., M.Sc.

    LABORATORIUM KOMPUTER DASAR PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER

    UNIVERSITAS BRAWIJAYA 2014

    Pengesahan Tanggal:

    Asisten

  • A. Definisi Masalah

    1. Mencari posisi bilangan genap yang terletak diantara bilangan x1 dan bilangan x2 dengan header sebagai berikut :

    int findPosGenap(int x1, int x2)

    2. Melengkapi bagian dari program ADT_Larik sehingga jika diberikan program utama pada gambar 1 akan menghasilkan keluaran sebagaimana gambar 2.

    B. Pseudocode

    1. Pseudocode Soal 1

    Begin Var size : int; Var itemDt : int[];

    buatLarik(n : int) : void; Begin

    this.size

  • for i

  • if (dtCari

  • Var tengah : int this.itemDt[tengah]) then return PencarianBiner(dtCari, tengah + 1, akhir); else if (dtCari == this.itemDt[tengah]) then return tengah; else return pos;

    endif End

    copyLarik(k, n : int) : Larik; Begin

    Var lHasil : Larik

  • lsort.itemDt[posData]

  • Larik(A : double)[]; Begin

    this.size

  • l3.isiItem(j++, l2.itemDt[i]); end return l3;

    End isiItem(id : int, dt : double) : void; Begin

    this.itemDt[id]

  • i++; end return pos;

    End

    copyLarik(k, n : int, l : Larik) : Larik; Begin

    Var lHasil : Larik

  • Var posKecil : int

  • End

    LarikKaliLarik(l1, l4 : Larik) : double; Begin

    Var hasilKali :

  • C. Source Code

    Source code Soal 1

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

    public class Larik2 { private int size; private int[] itemDt; public void buatLarik(int n) {

    this.size = n; this.itemDt = new int[this.size];

    } public Larik2(int n) {

    buatLarik(n); } public int getSize() {

    return this.size; } public Larik2(int[] dt) {

    buatLarik(dt.length); for (int i = 0; i < dt.length; i++) {

    isiItem(i, dt[i]); }

    } public void isiItem(int id, int dt) {

    this.itemDt[id] = dt; } public void cetak(String komentar) {

    System.out.println(komentar); for (int i = 0; i < this.size; i++) {

    System.out.print(this.itemDt[i] + " ");

    } System.out.println();

    } public int findBesar() {

    int besar = this.itemDt[0]; for (int i = 1; i < this.size; i++) {

    if (besar < this.itemDt[i]) { besar = this.itemDt[i];

    } } return besar;

    } public int getPosisi(int dtCari) { int pos = -99; boolean ketemu = false;

  • 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

    int i = 0; while (!ketemu && i < this.size) {

    if (dtCari == this.itemDt[i]) { ketemu = true; pos = i;

    } i++;

    } return pos;

    } private int getPosMax(int id) {

    int max = this.itemDt[id]; int posMax = id; for (int i = id + 1; i < size; i++) {

    if (max = this.itemDt[i]) { min = this.itemDt[i]; posMin = i;

    } } return posMin;

    } public int PencarianBiner(int dtCari, int

    awal, int akhir) { int pos = -99; int tengah = (awal + akhir) / 2; if (dtCari < this.itemDt[tengah]) {

    return PencarianBiner(dtCari, awal, tengah);

    } else if (dtCari > this.itemDt[tengah]) {

    return PencarianBiner(dtCari, tengah + 1, akhir);

    } else if (dtCari == this.itemDt[tengah]) {

    return tengah;

  • 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

    } else { return pos;

    } } public Larik2 copyLarik(int k, int n) {

    Larik2 lHasil = null; if (n

  • 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    } return 0;

    } public static void main(String[] args) {

    int[] A = {2, 34, 5, 7, 10}; Larik2 lA = new Larik2(A);

    lA.cetak("Sebelum di sort"); lA.SelectionSort(0).cetak("Sesudah di

    sort"); //int k = lA.PencarianBiner(34,0,5); //System.out.println(k);

    //Larik lB = lA.SelectionSort(0); //int p = lB.PencarianBiner(10, 0, 5); //System.out.println(p);

    System.out.println("Bilangan genap yg berada diantara 0 dan 100 ");

    lA.SelectionSort(0).findPosGenap(0, 100); System.out.println();

    } }

    Source code Soal 2

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

    package ADT_Larik; public class Larik {

    public Larik(double[] A) { this.size = A.length; this.itemDt = new double[this.size]; for (int i = 0; i < this.size; i++) {

    this.itemDt[i] = A[i]; }

    } public Larik(int n) {

    buatLarik(n); } public void buatLarik(int n) {

    this.size = n; this.itemDt = new double[this.size];

    } public int getSize() {

    return this.size; }

  • 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

    public double getItem(int i) { return this.itemDt[i];

    } public static Larik sambung(Larik l1, Larik

    l2) { int j = 0; Larik l3 = new Larik(l1.size + l2.size); for (int i = 0; i < l1.size; i++) {

    l3.isiItem(j++, l1.itemDt[i]); } for (int i = 0; i < l2.size; i++) {

    l3.isiItem(j++, l2.itemDt[i]); } return l3;

    } public void isiItem(int id, double dt) {

    this.itemDt[id] = dt; }

    public void cetak(String komentar) { System.out.println(komentar); for (int i = 0; i < this.size; i++) {

    System.out.printf("%.2f ", this.itemDt[i]);

    } System.out.println();

    } public double findBesar() {

    double besar = this.itemDt[0]; for (int i = 1; i < this.size; i++) {

    if (besar < this.itemDt[i]) { besar = this.itemDt[i];

    } } return besar;

    } public int getPosisi(double dtCari) {

    int pos = -99; boolean ketemu = false; int i = 0; while (!ketemu && i < this.size) {

    if (dtCari == this.itemDt[i]) { ketemu = true; pos = i;

    } i++;

  • 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

    } return pos;

    } public static Larik copyLarik(int k, int n,

    Larik l) { Larik lHasil = null; if (n

  • 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    } }

    } return posKecil;

    } public static Larik SelectionSort(Larik lAsal, int status) {

    int n = lAsal.getSize(); Larik lhasil = Larik.copyLarik(0, n,

    lAsal); if (status == 0) {

    for (int i = 0; i < n; i++) { int posKecil =

    lhasil.getPosKecil(i, n); double itemKecil =

    lhasil.getItem(posKecil); double itemI = lhasil.getItem(i); lhasil.isiItem(i, itemKecil); lhasil.isiItem(posKecil, itemI);

    } } else {

    for (int i = 0; i < n; i++) { int posBesar =

    lhasil.getPosBesar(i, n); double itemBesar =

    lhasil.getItem(posBesar); double itemI = lhasil.getItem(i); lhasil.isiItem(i, itemBesar); lhasil.isiItem(posBesar, itemI);

    } } return lhasil;

    } static double LarikKaliLarik(Larik l1, Larik l4)

    { double hasilKali = 0; for (int i = 0; i < l1.size; i++) {

    for (int j = 0; j < l4.size; j++) { if (i == j) {

    hasilKali = hasilKali + l1.itemDt[i] * l4.itemDt[j];

    } }

    } return hasilKali;

    }

  • 158 }

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

    package ADT_Larik;

    public class AppPr1 {

    public static void main(String[] args) { // implementasi untuk ADT_Larik double[] A = {3, 4, 1, 10, 5, 2, 10, 20,

    16}; double[] B = {4, 3, 1, 11, 7}; Larik L1 = new Larik(A); Larik L2 = new Larik(B);

    L1.cetak("Isi Larik L1"); L2.cetak("Isi Larik L2"); Larik L3 = Larik.sambung(L1, L2); L3.cetak("L3 = gabungan dari L1 dan L2"); Larik L4 = Larik.copyLarik(0,

    L1.getSize(), L1); L1.cetak("Isi Larik L1"); L4.cetak("L4 Copy dari L1"); Larik L5 = Larik.SelectionSort(L1, 0); L5.cetak("L5 Hasil pengurutan dari L1

    Kecil -> Besar"); Larik L6 = Larik.SelectionSort(L1, 1); L6.cetak("L6 Hasil pengurutan dari L1

    Besar -> Kecil"); L1.cetak("Isi Larik L1"); double hasil = Larik.LarikKaliLarik(L1,

    L4); System.out.printf("HASIL KALI Larik L1*L4

    : %.3f\n", hasil); }

    }

  • D. Pembahasan

    Pembahasan Soal 1

    1 2-3 5-7 8-10 11-13 14-19 20-22

    23-30 31-39 40-52 53-63 64-74 75-92 93-104

    105-122

    123-137

    138 139 140 142 143-144 152-155

    Dekalarasi kelas dengan nama Larik2 Deklarasi variabel dan array data (struktur data) Deklarasi Method dengan nama buatLarik Constructor untuk membuat larik, inisialisasi n (jumlah larik) Getter untuk jumlah indeks larik Constructor untuk membuat larik, inisialisasi variabel array dt Prosedur untuk isiItem suatu larik dengan parmeter id : indeks larik, dan dt : item data yang akan disisipkan. Prosedur cetak suatu array, deklarasi variabel String komentar Method untuk mencari nilai indeks terbesar Program untuk mencari posisi suatu data tertentu di larik Method

View more