Upload
widyaningdyah-hidayati
View
213
Download
0
Embed Size (px)
DESCRIPTION
laporan
Citation preview
Nama : Widyaningdyah H
NIM : M0511050
LAPORAN PRAKTIKUM II
STRUKTUR DATA DAN ALGORITMA
1. Source Code:
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.
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.
3. Source Code Modifikasi:
4. Waktu yang dibutuhkan adalah dengan cara menambahkan pernyataan seperti ini:
5. Source Code:
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
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.
7. Source Code Modifikasi:
8. Waktu yang dibutuhkan adalah dengan cara menambahkan pernyataan seperti ini: