11
Nama : Widyaningdyah H NIM : M0511050 LAPORAN PRAKTIKUM II STRUKTUR DATA DAN ALGORITMA 1. Source Code:

Laporan SDA 2

Embed Size (px)

DESCRIPTION

laporan

Citation preview

Page 1: Laporan SDA 2

Nama : Widyaningdyah H

NIM : M0511050

LAPORAN PRAKTIKUM II

STRUKTUR DATA DAN ALGORITMA

1. Source Code:

Page 2: Laporan SDA 2

2. Analisa Percobaan:

a. public class MaxSum1 menunjukkan pendeklarasian kelas dengan nama MaxSum1

yang dapat diakses oleh semua yang terdapat dalam kelas maupun oleh kelas lain

(public).

b. public static int MaxSubSum1 ( int [ ] a ) menunjukkan pendeklarasian method dengan

nama MaxSubSum1 dan di dalamnya terdapat array bernama a yang memiliki tipe data

integer (int). public merupakan tipe akses yang berarti dapat diakses oleh semua yang

terdapat dalam kelas maupun oleh kelas lain, sedangkan static void merupakan tipe

kembalian.

c. Di dalam public static int MaxSubSum1 ( int [ ] a ) terdapat int maxSum = 0; yaitu

mendeklarasikan nilai awal maxSum adalah 0.

d. for ( int i = 0; i < a.length; i++) menunjukkan looping (perulangan) paling luar yang

akan dijalankan setelah looping yang ada di dalamnya selesai dijalankan. Int i = 0;

mendeklarasikan nilai awal i adalah 0 (bertipe integer) dengan syarat kurang dari

panjang array, dengan length mengambil nilai maksimal dari array. i++ akan

menunjukkan penambahan nilai 1 dari setiap looping yang terjadi. Jika kondisi bernilai

benar maka proses akan berlanjut ke proses selanjutnya.

e. for ( int j = i; j < a.length; j++) menunjukkan looping (perulangan) yang kedua dan

akan dijalankan setelah looping yang ada di dalamnya selesai dijalankan. Int j = i;

mendeklarasikan nilai awal j adalah sama dengan i (bertipe integer) dengan syarat

kurang dari panjang array, dengan length mengambil nilai maksimal dari array. j++

akan menunjukkan penambahan nilai 1 dari setiap looping yang terjadi. Jika kondisi

bernilai benar maka proses akan berlanjut ke proses selanjutnya.

f. int thisSum = 0; Di dalam looping yang kedua terdapat pendeklarasian nilai awal

thisSum adalah 0.

g. Di dalam looping yang kedua terdapat looping yang akan dijalankan terlebih dahulu

sebelum looping yang berada di luarnya yaitu for (int k = i; k <= j; k++). Looping ini

mendeklarasikan nilai k adalah sama dengan i (int k = i) dengan syarat k lebih kecil

sama dengan j. k++ akan menunjukkan penambahan nilai 1 dari setiap looping yang

terjadi. thisSum += a[k]; menunjukkan a[k] akan dijumlahkan dengan nilai awal

thisSum yaitu 0. Lalu masuk ke pernyataan if ( thisSum > maxSum) then maxSum =

thisSum; yaitu jika nilai thisSum lebih besar dari nilai maxSum maka maxSum sama

dengan thisSum. Jika bernilai benar maka nilai maxSum sebelumnya akan diganti

dengan nilai yang baru. Setelah looping ini telah selesai maka akan masuk ke looping

yang selanjutnya dan begitu seterusnya sampai selesai looping yang terluar.

Page 3: Laporan SDA 2

h. return maxSum; berarti nilai kembali maxSum, akan dieksekusi apabila proses telah

selesai.

i. public static void main ( String [ ] args ) merupakan prosedur argument data String

untuk awal eksekusi. Modifier public merupakan akses yang mendeklarasikan fungsi

ini sebagai fungsi yang tidak diproteksi sehingga dapat diakses oleh semua kelas lain.

Sedangkan modifier static mendeklarasikan fungsi ini sebagai bagian dari semua kelas

dan bukan bagian dari objek kelas tertentu saja. String adalah kelas pada Java untuk

mengimplementasikan string yang tidak dapat berubah.

j. int a[ ] = {4, -3, 5, -2, -1, 2, 6, -2}; mendeklarasikan array a yang mempunyai

komponen nilai yg mempunyai tipe int dan telah di deklarasikan nilainya.

k. int maxSum2; mendeklarasikan nilai maxSum2 dalam tipe integer.

l. maxSum2 = maxSubSum1 (a); berfungsi untuk memanggil nilai maxSubSum1.

m. System.out.println( “Max sum is ” +maxSum2 ); berfungsi untuk mencetak nilai

maxSum2.

n. Proses eksekusinya adalah sebagai berikut:

- Pertama, akan menjalankan perulangan for (int k = i; k <= j; k++) dengan nilai awal

i=0, maka nilai awal k=0, maka akan dijalankan thisSum = a [0]+thisSum dengan

nilai awal thisSum = 0,index ke-0 array a adalah 4 maka hasil thisSum = 4. Lalu

masuk ke pernyataan if ( thisSum > maxSum) then maxSum = thisSum; dengan nilai

awal maxSum adalah 0 dibandingkan dengan nilai thisSum yang diperoleh yaitu 4,

4 > 0 pernyataan benar maka akan dijalankan pernyataan maxSum = thisSum, nilai

maxSum akan disimpan sementara. Karena k++, maka nilai k akan bertambah 1

nilai, sehingga thisSum = a[1]+thisSum = -3+4 = 1. 1 > 4 adalah salah maka nilai

thisSum tetap 4. Lalu k=2, thisSum = a[2]+thisSum = 5+4 = 9. 9 > 5 adalah benar

maka nilai maxSum menjadi 9. Begitu seterusnya sampai k=7.

- Setelah looping di atas selesai, masuk ke looping selanjutnya. Nilai i akan bertambah

1 nilai yaitu menjadi i=1 karena i++. Itu akan terjadi sampai i=7, selama looping

tersebut akan selalu masuk ke looping yang ada di dalamnya.

- Setelah selesai, lalu masuk ke dalam public static void main ( String [ ] args ),

dengan maxSum2 = maxSubSum1 ( a ); dengan memanggil maxSubSum1 maka

System.out.println( “Max sum is ” +maxSum2 ); akan mencetak nilai maxSum2 yang

merupakan hasil akhir dari maxSubSum1.

Page 4: Laporan SDA 2

3. Source Code Modifikasi:

Page 5: Laporan SDA 2

4. Waktu yang dibutuhkan adalah dengan cara menambahkan pernyataan seperti ini:

5. Source Code:

Page 6: Laporan SDA 2

6. Analisa:a. public class MaxSum2 menunjukkan pendeklarasian kelas dengan nama MaxSum2

yang dapat diakses oleh semua yang terdapat dalam kelas maupun oleh kelas lain (public).

b. public static int MaxSubSum2 ( int [ ] a ) menunjukkan pendeklarasian method dengan nama MaxSubSum1 dan di dalamnya terdapat array bernama a yang memiliki tipe data integer (int). public merupakan tipe akses yang berarti dapat diakses oleh semua yang terdapat dalam kelas maupun oleh kelas lain, sedangkan static void merupakan tipe kembalian.

c. Di dalam public static int MaxSubSum2 ( int [ ] a ) terdapat int maxSum = 0; yaitu mendeklarasikan nilai awal maxSum adalah 0.

d. for ( int i = 0; i < a.length; i++) menunjukkan looping (perulangan) yang akan dijalankan setelah looping yang ada di dalamnya selesai dijalankan. Int i = 0; mendeklarasikan nilai awal i adalah 0 (bertipe integer) dengan syarat kurang dari panjang array, dengan length mengambil nilai maksimal dari array. i++ akan menunjukkan penambahan nilai 1 dari setiap looping yang terjadi. Jika kondisi bernilai benar maka proses akan berlanjut ke proses selanjutnya.

e. int thisSum = 0; Di dalam looping ini terdapat pendeklarasian nilai awal thisSum adalah 0.

f. for ( int j = i; j < a.length; j++) menunjukkan looping (perulangan) yang akan dieksekusi terlebih dahulu. Perbedaan dengan percobaan pertama yaitu percobaan kedua ini hanya menggunakan 2 kali looping sedangkan percobaan pertama menggunakan 3 kali looping. Int j = i; mendeklarasikan nilai awal j adalah sama dengan i (bertipe integer) dengan syarat kurang dari panjang array, dengan length mengambil nilai maksimal dari array. j++ akan menunjukkan penambahan nilai 1 dari setiap looping yang terjadi. Jika kondisi bernilai benar maka proses akan berlanjut ke proses selanjutnya.

g. thisSum += a[j]; menunjukkan a[ j] akan dijumlahkan dengan nilai awal thisSum yaitu 0. Lalu masuk ke pernyataan if ( thisSum > maxSum) then maxSum = thisSum; yaitu jika nilai thisSum lebih besar dari nilai maxSum maka maxSum sama dengan thisSum. Jika bernilai benar maka nilai maxSum sebelumnya akan diganti dengan nilai yang

Page 7: Laporan SDA 2

baru. Setelah looping ini telah selesai maka akan masuk ke looping yang selanjutnya dan begitu seterusnya sampai selesai looping yang terluar.

h. return maxSum; berarti nilai kembali maxSum, akan dieksekusi apabila proses telah selesai.

i. public static void main ( String [ ] args ) merupakan prosedur argument data String untuk awal eksekusi. Modifier public merupakan akses yang mendeklarasikan fungsi ini sebagai fungsi yang tidak diproteksi sehingga dapat diakses oleh semua kelas lain. Sedangkan modifier static mendeklarasikan fungsi ini sebagai bagian dari semua kelas dan bukan bagian dari objek kelas tertentu saja. String adalah kelas pada Java untuk mengimplementasikan string yang tidak dapat berubah.

j. int a[ ] = {4, -3, 5, -2, -1, 2, 6, -2}; mendeklarasikan array a yang mempunyai komponen nilai yg mempunyai tipe int dan telah di deklarasikan nilainya.

k. int maxSum2; mendeklarasikan nilai maxSum2 dalam tipe integer.l. maxSum2 = maxSubSum2 (a); berfungsi untuk memanggil nilai maxSubSum1.m. System.out.println( “Max sum is ” +maxSum2 ); berfungsi untuk mencetak nilai

maxSum2.n. Proses eksekusinya adalah sebagai berikut:

- Pertama, akan menjalankan perulangan for ( int j = i; j < a.length; j++) dengan nilai

awal i=0, maka akan dijalankan thisSum = a [0]+thisSum dengan nilai awal thisSum

= 0,index ke-0 array a adalah 4 maka hasil thisSum = 4. Lalu masuk ke pernyataan if

( thisSum > maxSum) then maxSum = thisSum; dengan nilai awal maxSum adalah 0

dibandingkan dengan nilai thisSum yang diperoleh yaitu 4, 4 > 0 pernyataan benar

maka akan dijalankan pernyataan maxSum = thisSum, nilai maxSum akan disimpan

sementara. Karena j++, maka nilai k akan bertambah 1 nilai, sehingga thisSum =

a[1]+thisSum = -3+4 = 1. 1 > 4 adalah salah maka nilai thisSum tetap 4. Lalu j=2,

thisSum = a[2]+thisSum = 5+4 = 9. 9 > 5 adalah benar maka nilai maxSum menjadi

9. Begitu seterusnya sampai j=7.

- Setelah looping di atas selesai, masuk ke looping selanjutnya. Nilai i akan bertambah

1 nilai yaitu menjadi i=1 karena i++. Itu akan terjadi sampai i=7, selama looping

tersebut akan selalu masuk ke looping yang ada di dalamnya.

- Setelah selesai, lalu masuk ke dalam public static void main ( String [ ] args ),

dengan maxSum2 = maxSubSum2 ( a ); dengan memanggil maxSubSum2 maka

System.out.println( “Max sum is ” +maxSum2 ); akan mencetak nilai maxSum2 yang

merupakan hasil akhir dari maxSubSum2.

Page 8: Laporan SDA 2

7. Source Code Modifikasi:

Page 9: Laporan SDA 2

8. Waktu yang dibutuhkan adalah dengan cara menambahkan pernyataan seperti ini: