Professional Documents
Culture Documents
BRP DDP 2012-v2
BRP DDP 2012-v2
Pengajar
L. Yohanes Stefanus
Denny
Samuel Louvan
Bayu Distiawan
Rakhmad Azhari
Zaki Rahman
Tujuan:
Matakuliah ini mengajarkan konsepkonsep dan teknikteknik dasar pemrograman
komputer, dalam konteks pengenalan Ilmu Komputer. Bahasa pemrograman yang
dipergunakan adalah bahasa Java.
Referensi tambahan:
Prasyarat:
Matematika SMA.
Kredit:
Status:
Jadwal kuliah:
Lihat di SIAK
Jadwal tutorial:
Kelas A,C,E setiap Senin mulai jam 16.00
Kelas B,D,F setiap Rabu mulai jam 16.00
Situs web:
Foundations of Program
Proses Belajar
Pembelajaran kuliah ini merupakan kombinasi dari beberapa metode:
Interaktif tatap muka
Interaktif tatap muka akan dilakukan melalui kombinasi kuliah interaktif dan
pemelajaran aktif melalui lembar kerja dan pemecahan problem.
Elearning self study (belajar mandiri)
Pada sesi eLearning, mahasiswa mempelajari bahan materi baik dari yang tersedia
maupun dari sumber lain. Mahasiswa perlu mencoba mengerjakan soal latihan untuk
menguji pemahamannya.
Tutorial
Sesi tutorial diberikan terkait dengan materi yang telah dibahas di kelas. Mahasiswa
akan diberikan latihan untuk memantapkan pemahaman yang sudah diperolehnya.
Diskusi online
Pada sesi diskusi, mahasiswa diharapkan menyampaikan pemahaman yang
dimilikinya untuk didiskusikan dan dikonfirmasikan dengan pemahaman mahasiswa
lainnya. Mahasiswa juga membagi pengalaman belajarnya khususnya pada bagian
materimateri pilihan yang sesuai dengan minat.
Tugas
Mahasiswa akan diberikan tugastugas yang memacu pola pikir untuk
menyelesaikan permasalahan. Tugastugas yang diberikan disesuaikan dengan
materi yang telah diperoleh dengan beban yang sesuai.
Mata kuliah ini bertujuan untuk mengajarkan konsepkonsep dasar serta teknik untuk
membuat program komputer menggunakan paradigma berorientasi obyek pada bahasa
pemrograman Java.
Tujuan Pembelajaran
Menjelaskan sejarah bahasabahasa pemrograman serta evolusi dari bahasa mesin ke
bahasa tingkat tinggi.
Memahami dasardasar konsep dan konstruksi pemrograman.
Menjelaskan istilah Class dan Object, serta memahami paradigma berorientasi obyek.
Memiliki pengetahuan tentang teori perintah kendali seperti pemilihan, percabangan
serta pengulangan.
Mengorganisasikan program besar dengan baik melalui pembuatan metodemetode
baru, serta memanfaatkan metodemetode yang sudah ada pada class library.
Mengolah data dalam list atau tabel.
Merancang class yang dapat dimanfaatkan kembali untuk keperluan lain, dan
memahami dasardasar inheritance.
Memahami hubungan antar class dalam sebuah hirarki serta sifat polymorphism
sebuah object.
Membuat program yang tidak salah (errorfree) dengan penanganan pengecualian
(exception).
Memindahkan data pada alat penyimpanan sekunder, dan memahami perbedaan
antara berkas teks dan biner.
Merancang dan membangun antarmuka grafis (GUI).
Dapat memahami dan membuat dokumentasi program yang baik.
Keterangan
Pokok bahasan berwarna kuning cerah menandakan pokok bahasan yang harus
dikuasai terlebih dahulu, dilanjutkan ke pokok bahasan berwarna oranye, kemudian
beberapa pokok bahasan berwarna hijau dan ungu
Tidak semua pokok bahasan berwarna hijau dan ungu dibahas dalam perkuliahan ini
Balon berwarna biru muda menandakan ketersediaan bahan tutorial terkait pokok
bahasan yang bersesuaian
Sep 3,5,7
Sep
10,12,14
Sep
17,19,21
Sep
24,26,28
Topic
Introduction to
computers and
programming
Notes
Subtopic
What is programming?; The Anatomy
of a Computer; Introduction to the
Java programming language;
Compiling and Running a Java
Program; Errors; Algorithms
Introduction to
Objects, Classes, and Methods;
Objects and Classes Instance Variables; Local Variables;
Object references; Implicit
Parameters; Drawing simple shapes
Number Types; Number Systems;
Twos Complement Representation; Tugas 1
Fundamental Data
diumumkan
Constants; Arithmetic Operations and
di awal
Types
Mathematical Functions; Calling
minggu
Static Methods; Strings; Reading Input
The if statement; Comparing Values;
Decisions
Multiple Alternatives; Boolean
Expressions; Code Coverage
Iteration
Arrays and Array
Lists
Designing Classes
Oct 1,3,5
Recursion
Oct 8,10,12
Interfaces and
Polymorphism
Oct
15,17,19
Inheritance
UTS
Nov 5,7,9
Graphical User
Interfaces
10
Nov
12,14,19
11
ObjectOriented
Design
Nov
21,23,26
12
Nov
28,30
Dec 3
13
Dec
5,7,10
Tugas 4
dikumpulkan
Sorting and
Sorting; Selection Sort; Quick Sort;
di
Searching
Merge Sort; Searching; Binary Search pertengahan
minggu
Tugas 5
Introduction to Data
Linked Lists; Abstract Data Types;
diumumkan
Structures and
Stack and Queues; Generic Classes; di awal
Generic
minggu
Generic Types; Generic Methods
Programming
Readers, Writers, and Streams; Binary
14
Dec
12,14,17
Multithreading
15
Dec
19,21
Tugas 5
dikumpulkan
di akhir
minggu
Orientasi belajar
Belajar yang dilaksanakan dalam perkuliahan ini akan dilakukan secara aktif dengan
menuntut peran serta mahasiswa dalam proses kegiatan belajar mengajar untuk penguasaan
dan pengembangan materi yang maksimal sesuai dengan minat bakat.
1. Tatap Muka
Perkuliahan interaktif atau tatap muka dilakukan di kelas secara langsung. Dalam
perkuliahan ini metode yang dilakukan antara lain:
a) Ceramah; dosen menjelaskan mengenai materi tertentu. Metode ini dapat
dikombinasikan dengan tanya jawab secara langsung. Perlu diingat, dosen tidak
menyampaikan keseluruhan materi kuliah. Mahasiswa harus juga membaca buku dan
materi terkait sebelum perkuliahan.
b) Diskusi kelompok; mahasiswa membahas topiktopik tertentu yang ada dalam materi.
Mahasiswa diharapkan dapat menyampaikan pemahamannya dan mendapat tanggapan
atau koreksi dari rekanrekan ataupun dosen.
c) Membahas lembar kerja; Mahasiswa diharapkan telah mempelajari materi yang telah
dipersiapkan sebelum pertemuan, dan mengerjakan lembar kerja untuk memberikan
pengalaman dan pemahaman terhadap materi.
2. Belajar Mandiri (BM)
Belajar mandiri atau selflearning dilakukan tidak secara langsung bertatap muka
melainkan dengan memanfaatkan SCeLE. Dengan SCeLE, pemelajaran akan melibatkan
kegiatankegiatan sebagai berikut:
a) Akses materi (A); mahasiswa dapat mengakses materi langsung yang telah disediakan
di SceLE maupun yang tersedia di buku.
b) Diskusi (D); mahasiswa dapat melakukan diskusi dalam bentuk aktifitas forum yang ada
di SCeLE.
c) Chat (C); mahasiswa dapat pula berkomunikasi dengan pengajar dan temanteman
sekelas dalam kurun waktu yang telah ditentukan.
Tugas
Seluruh bentuk tugas dikerjakan secara individu. Diskusi diperbolehkan dan sangat
disarankan dalam proses belajar, namun perlu diingat bahwa seluruh tugas adalah tugas
individu yang akan dinilai secara individu oleh karena itu hasil diskusi anda dengan teman
anda harus dapat anda tuliskan dengan kalimat anda sendiri. Bagianbagian yang sama
terkait diagram, rumus, potongan code, algoritma harus dinyatakan secara eksplisit
sumbernya atau teman diskusinya. Uraian kalimat (penjelasan) tidak boleh sama. Kesamaan
dalam jumlah kecil pun dapat dinyatakan sebagai plagiat. Harap lihat bagian Kejujuran
Akademis.
Media instruksional
1. Internet (I)
2. Presentasi Multimedia (M)
3. White board, infocus (Wbi)
Sumber pembelajaran
1. Buku teks
2. Lembar kerja
Minggu Soal
Ada berapa iterasi dalam tiaptiap loop berikut ini? i adalah sebuah integer yang nilainya tidak
diubah di dalam loop
1. for(i=1;i<=10;i++)...
2. for(i=0;i<10;i++)...
3. for(i=10;i>0;i)...
4. for(i=10;i<=10;i++)...
5. for(i=10;i>=0;i++)...
6. for(i=10;i<=10;i=i+2)...
7. for(i=10;i<=10;i=i+3)...
Temukan kesalahan pada loop berikut dan berikan dua cara penyelesaiannya.
double[]values=newdouble[10];
for(inti=1;i<=10;i++)values[i]=i*i;
Bila C adalah kelas yang mengimplementasi interface I dan J, dan i dideklarasi sbb:
Ii=newC();
Pernyataan manakah di bawah ini yang akan memberikan pesan kesalahan?
1. Cc=(C)i;
2. Jj=(J)i;
3. i=(I)null;
12
20% (Problem solving)
10% (Mengulang kuliah, ada jawaban diakhir)
10% (Quiz masingmasing kelas)
20%
40%
Soal Pilihan Ganda ( 5 soal). Bacalah soal dengan teliti, pilihlah jawaban yang anda anggap benar.
1. [Nilai 2] Perhatikan kode di bawah ini
q=(p%4)!=0?(p%4):4;
Apakah nilai akhir dari q ketika p adalah 9?
A. 0
B. 4
C. 2
D. 1
2. [Nilai 2] Perhatikan kode di bawah ini:
StringletterGrade=;
if(grade<90)
if(grade>=80)
letterGrade=B;
else
letterGrade=A;
System.out.println(letterGrade);
Apakah nilai dari letterGrade ketika grade adalah 95?
A. null
B. "A"
C. "B"
D. ""
3. [Nilai 2] Manakah dari pilihan di bawah ini yang menggambarkan urutan yang tepat dari
jangkauan tipe data dari yang paling besar sampai yang paling kecil?
A. long, int, short, byte
B. long, short, int, byte
C. int,short,long,byte
D. int,byte,short,long
4. [Nilai 2] Apakah nilai desimal dari representasi twos complement berikut ?
11111111111111111111111111111100
A. 4
B. 5
C. 6
D. 7
5. [Nilai 2] Ada berapa banyak pemanggilan rekursif fib (tidak termasuk pemanggilan pertama)
yang dilakukan ketika kita menghitung fib(7)?
publicstaticlongfib(intn){
if(n<=2)
return1;
else
returnfib(n1)+fib(n2);
}
A. 12
B. 24
C. 30
D. 32
Soal Isian/Essay
1. Rekursif [Nilai 8]
Perhatikan program di bawah ini:
publicstaticintmystery(inta,intb){
if(b==0)return1;
return1;
if(b%2==0)returnmystery(a*a,b/2);
returnmystery(a*a,b/2)*a;
}
A. Apakah output dari mystery(4,0)?
B. Apakah output dari mystery(4,4) ?
C. Apakah output dari mystery(5,4)?
D. Secara umum, operasi apa yang dilakukan method mystery tersebut?
2. String [Nilai 20]
Lengkapi method convertDate di bawah ini.
Anda bisa memakai bantuan method yang terdapat pada class String
indexOf(charcc)
Mengembalikan indeks pertama dimana karakter cc muncul pada suatu tring.
substring(intidx)
Mengembalikan substring dari string, mulai dari index keidx sampai akhir.
substring(intidx1,idx2)
Mengembalikan substring dari string, mulai dari index keidx1 sampai idx21.
charAt(i)
Mengembalikan karakter di indeks kei dari suatu string.
packageUTS;
publicclassDateConverter{
privateString[]bulan={"Januari","Februari","Maret","April",
"Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};
/*FormatmasukannumericDateadalahtanggal.bulan.tahun
*Contoh:1.12.2010
*MethodinimengembalikanStringhasilkonversinumericDate
*kebentukformatkeluaranyanglain.
*Contoh:
*1.12.2010akandiubahmenjadi1Desember2010
*24.1.2011akandiubahmenjadi24Januari2011
*Gunakanlaharraybulandiatasdalamproseskonversi
**/
publicStringconvertDate(StringnumericDate){
publicstaticvoidmain(String[]args){
DateConverterconverter=newDateConverter();
System.out.println(converter.convertDate("1.3.2010"));
}
}
3. Perhatikan program di bawah ini: [Nilai 12]
packageUTS;
publicclassTestLoop2{
publicstaticvoidprintStar(intN){
for(inti=N;i<=N;i++){
for(intj=N;j<=N;j++){
if(i*i+j*j<=N*N)
System.out.print("*");
else
System.out.print(".");
System.out.println();
}
}
A. Apakah output dari printStar(1)?
B. Apakah output dari printStar(3)?
C. Apakah output dari printStar(4)?
4. [Nilai 20] Anda diminta untuk membuat suatu class Matriks, yang nantinya akan digunakan oleh
programmer lain. Untuk itu anda harus mengimplementasikan class Matriks, konstruktor dan
methodmethod yang diperlukan. Ukuran matriks selalu sama antara baris dan kolomnya
(bujursangkar).
Konstruktor dan method yang harus diimplementasikan, spefisikasinya sebagai berikut:
Konstruktor Matriks(intsize)
Melakukan alokasi space untuk array 2 dimensi sebesar size x size.
Method cerminDiagonal()
Melakukan refleksi elemenelemen matriks terhadap sumbu diagonal.
Contoh:
1
2
3
1
4
4
5
6
2
5
7
8
9
3
6
7
8
9
10
14
18
22
11
15
19
23
12
16
20
24
13
17
21
25
10
11
12
13
14
15
16
17
18
19
20
21
Method jumlahTotalAngkaKiriDiagonal()
Mengembalikan jumlah akumulasi angka di sebelah kiri sumbu diagonal.
Contoh:
1
2
3
4
5
6
7
8
9
Jumlah: 19
10
11
14
15
18
19
22
23
Jumlah : 120
13
17
21
25
Method jumlahTotalAngkaKananDiagonal()
Mengembalikan jumlah akumulasi angka di sebelah kanan sumbu diagonal.
Contoh:
1
2
3
4
5
6
7
8
9
Jumlah: 11
10
11
14
15
18
19
22
23
Jumlah : 90.
12
16
20
24
12
16
20
24
13
17
21
25
Method printMatriks()
Mencetak elemenelemen matriks per baris.
Contoh:
1 2 3
4 5 6
22
23
24
25
7 8 9
Berdasarkan spesifikasi di atas, lengkapi kode program di bawah ini:
packageUTS;
publicclassMatriks{
/*Array2dimensiuntukmenyimpanbilangan*/
/*Perhatikanindeksdimulaidarinol*/
privateint[][]data;
/*Konstruktor,melakukanalokasispaceuntukarraydenganukuran
sizexsize
*/
publicMatriks(intsize){
//Lengkapidengankodeanda
publicvoidcerminDiagonal(){
//Lengkapidengankodeanda
publicintjumlahTotalAngkaKiriDiagonal(){
//Lengkapidengankodeanda
publicintjumlahTotalAngkaKananDiagonal(){
//Lengkapidengankodeanda
publicvoidprintMatriks(){
//Lengkapidengankodeanda
}
}
5. [Nilai 9] Perhatikan kode program di bawah ini. Untuk setiap statement System.out.println,
tuliskan output dari program.
publicclassUTS{
publicstaticvoidmain(String[]args){
charch='a';
System.out.println(ch+"ku"+(int)ch);
Stringstr="";
switch(ch){
case'a':str="nol";
case'b':str="satu";break;
case'c':str="dua";break;
System.out.println(str);
inthasil=1;
while(hasil<75){
hasil*=2;
System.out.println("Hasil="+hasil);
int[]ar={1,2,3};
ar[1]=7;
System.out.println(ar[1]+","+ar[2]);
UTSob=newUTS();
ob.xxx(ar);
System.out.println(ar[1]+","+ar[2]);
inta=111,b=333,x;
x=ob.abc(a,b);
System.out.println(x);
System.out.println("a:"+a);
System.out.println("b:"+b);
x=ob.abc(ar[1],ar[2]);
System.out.println(x);
System.out.println(ar[1]+","+ar[2]);
publicintabc(inta,intb){
a=5;b=8;
return(a<b)?(a+b):(a+b);
publicvoidxxx(int[]arr){
intk=arr.length1;
arr[k]=arr[k]+1;
}
}
6. [Nilai 10] Anda diminta untuk membuat program yang memproses suatu array. Berikut adalah
method yang harus anda implementasikan:
countBlock(int[]array)
Method ini mengembalikan banyaknya block dalam suatu array. Definisi block disini adalah
deretan angka yang secara berurutan nilainya sama.
Contoh:
Array {1,2,3,4,5,5,5,6,7,8,8,9,0}, countBlock akan mengembalikan nilai 2 karena ada dua
block yaitu block yang dibentuk oleh angka 5 dan 8.
Array {1,2,3,4,5,6,7,8} countBlock akan mengembalikan nilai 0 karena tidak ada block yang
terbentuk.
packageTugas3;
publicclassCountBlock{
/*Mengembalikanbanyaknyablockpadaarray*/
publicstaticintcountBlock(int[]arr){
}
}
7. Interface [Nilai 10]
Perhatikanlah program berikut:
packageUTS;
importjava.util.ArrayList;
interfaceSpeakable{
voidspeak();
}
classDogimplementsSpeakable{
privateStringname;
publicDog(Stringname){
this.name=name;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicvoidspeak(){
System.out.println("Gukguk");
}
}
classCatimplementsSpeakable{
privateStringname;
publicCat(Stringname){
this.name=name;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicvoidspeak(){
System.out.println("Meongmeong");
}
}
publicclassAnimalRunner{
publicstaticvoidmain(String[]args){
ArrayList<Speakable>arr=newArrayList<Speakable>();
arr.add(newDog("Doggie"));
arr.add(newCat("BlackMamba"));
arr.add(newDog("Lassie"));
arr.add(newCat("WhiteMamba"));
arr.set(2,newCat("RedMamba"));
arr.remove(1);
for(Speakables:arr){//LINEA
s.speak();
Catc=newCat("A");
Dogd=newDog("B");
Speakables;
c.speak();//LINEB
s=d;
s=c;
s.speak();//LINEC
s=d;
d.speak();//LINED
s.speak();//LINEE
Dogd2=(Dog)s;
d2.speak();//LINEF
}
}
A. Apa sajakah output dari loop di LINE A?
B. Ubahlah bagian kode pada LINE A, dengan sintaks for loop konvensional yang biasa kita pakai
(menggunakan indeks untuk mengakses elemen).
C. Apakah output pada:
LINE B
LINE C
LINE D
LINE E
LINE F
Pada perkuliahan ini mahasiswa perlu meluangkan waktu dari awal kuliah untuk mempelajari buku
acuan yang ditetapkan. Hal ini sangat diperlukan karena pengajaran oleh dosen diruang kelas tidak
akan menjabarkan seluruh uraian secara rinci. Dosen akan membantu menerangkan bagianbagian
tertentu pada materi dan mengarahkan membelajaran, serta membantu mahasiswa dalam
memahami ataupun mengevaluasi (memberikan feedback) materi yang dipelajarinya. Pada proses
pemelajaran tersebut disediakan beberapa contoh rincian objective dan gambaran keterkaitan
materi tersebut dengan materi lain dalam perkuliahan serta contoh pertanyaan untuk menguji
pemahaman diri.
//
//mainmethodprintthegreeting
//
publicstaticvoidmain(String[]args){
System.out.println(Hello,World!);
}
}
b) Simpan (save) kode sumber ini dengan nama Hello.java. Simpan di direktori C:\DDP, atau
direktori lain yang mudah diakses
c) Agar bisa dijalankan, kode sumber tersebut harus dicompile terlebih dahulu. Untuk
pengguna Windows atau DOS, buka aplikasi Command atau cmd. Misalkan file disimpan
pada direktori C:\DDP, maka dijalankan perintah berikut
C:
cdddp
Untuk pengguna sistem operasi Linux, bukalah terminal kemudian arahkan direktori
ketempat file disimpan (pada contoh ini, file disimpan di home directory dalam
subdirectory ddp) dengan menjalankan perintah berikut
cd~
cdddp
d) Compile file Hello.java dengan mengetikkan perintah berikut
javacHello.java
Jika berhasil, di direktori yang sama akan muncul file baru bernama Hello.class. File inilah
yang akan dijalankan
e) Jalankan program dengan mengetikkan perintah berikut
javaHello
Apakah yang terjadi? Jelaskan selengkap mungkin
2. Syntax error
Syntax error adalah kesalahan yang ada pada penulisan kode sumber. Saat terdapat syntax error,
compiler akan memberikan error message dan tidak menghasilkan file .class sehingga tidak bisa
dijalankan
Berikut beberapa contoh syntax error yang sangat sering terjadi:
a) Nama class berbeda dengan nama file. Ubah nama class menjadi Hola, sehingga baris
program berubah menjadi public class Hola. Save, kemudian compile ulang. Apa error
message yang muncul?
b) Tidak ada tanda kutipganda di akhir kalimat. Perbaiki kode sumber seperti semula, lalu
hapus tanda kutipganda di akhir kalimat Hello, World!. Save, kemudian compile ulang. Apa
error message yang muncul?
c) Tidak ada tanda kutipganda di awal kalimat. Perbaiki kode sumber seperti semula, lalu
hapus tanda kutipganda di awal kalimat Hello, World!. Save, kemudian compile ulang. Apa
error message yang muncul?
d) Tidak ada (;) di akhir perintah. Perbaiki kode sumber seperti semula. Kemudian hapus
tanda (;) di akhir baris baris perintah untuk mencetak kalimat. Save, kemudian compile
ulang. Apa error message yang muncul?
e) Jumlah ( { ) dan ( } ) yang tidak sesuai. Perbaiki kode sumber seperti semula. Kemudian
hapus tanda ( } ) di baris terakhir. Save, kemudian compile ulang. Apa error message yang
muncul?
3. Latihan Mengatasi Syntax Errors
File Problems.java adalah sebuah program Java sederhana yang memiliki beberapa syntax error.
Buat kode sumber Problems.java dan simpan seperti langkah untuk program Hello.java. Temukan
kesalahankesalahan yang ada kemudian perbaiki sehingga saat dicompile tidak ada lagi error
message yang muncul.
Beberapa hal yang perlu diingat:
Java bersifat case sensitive. Dengan demikian public, Public, dan PUBLIC dianggap sebagai
kode yang berbeda. Untuk melakukan perbaikan, coba cocokkan dengan program Hello.java.
Saat muncul banyak error message, perbaiki yang pertama terlebih dahulu, kemudian save
dan compile ulang. Seringkali error message berikutnya diakibatkan compiler yang tidak yakin
di mana letak error yang sebenarnya.
Baca error message dengan seksama, kemudian lihat nomor baris kode yang dituju. Pada
umumnya di baris itulah error terjadi.
//********************
//Problems.java
//Mencarikesalahandalammenuliskodeprogram
//********************
publicclassProblems{
publicstaticvoidMain(string[]args){
System.out.println(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!);
System.out.println(Kodeinimemilikibanyakkesalahan,);
System.out.println(***Hore!***);
Sistem.out.println(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!);
}
}
Hello,Nama!
WelcometoJavaProgramming!
Programmingisfun!!!
anda
dengan
dengan
menuliskan
perintah
menuliskan
perintah
2. Tutorial Tipe Data Dasar
Tujuan:
Mahasiswa memahami tipetipe data dasar dalam bahasa pemrograman Java
Format Masukan
Masukan dibaca dari masukan standar berupa bilangan A. Bilangan A ini adalah bilangan yang akan
dihitung hasil ceiling dan floornya.
Format Keluaran
Keluaran berupa keluaran standar yang berisi hasil dari fungsi ceiling atau floor
Contoh Masukan
3.56
Contoh Keluaran
NilaiCeilingdari3.56adalah4
NilaiFloordari3.56adalah3
Langkahlangkah untuk membuat program tersebut adalah sebagai berikut:
1. Buat sebuah class dengan nama DDP11102A
2. Buatlah method main dalam class tersebut
3. Buatlah sebuah variabel bernama masukan dengan tipe data double untuk menampung
masukan bilangan desimal
4. Buatlah sebuah variabel objek class Scanner dengan nama reader untuk membaca masukan
dari masukan standar
Anda dapat membaca penjelasan beserta contoh penggunaan class Scanner dari Java API berikut
Pahamilah terlebih dahulu fungsionalitas yang diberikan oleh class Scanner sehingga anda dapat
menggunakannya sesuai kebutuhan dalam program anda
5. Bacalah masukan dari user dengan memanggil method nextDouble() yang dimiliki variabel
reader dan simpan hasilnya ke dalam variabel masukan
6. Buatlah dua variabel hasilCeil dan hasilFloor dengan tipe data int.
7. Untuk menghitung operasi ceil lakukanlah konversi masukan ke dalam tipe data integer dan
simpan ke dalam variabel hasilCeil. Kemudian tambahkan nilai 1 kepada hasilCeil.
8. Untuk menghitung operasi floor lakukanlah konversi masukan ke dalam tipe data integer dan
simpan ke dalam variabel hasilFloor.
9. Cetaklah hasil perhitungan fungsi ceiling dan floor ke dalam layar sesuai dengan format pada
contoh keluaran di atas
Note: Untuk selanjutnya, bila anda ingin melakukan operasi ceil dan floor, anda dapat menggunakan
method static ceil dan floor dari class Math. Anda dapat melihat dokumentasi class Math pada
Java API berikut dan silakan anda memperbanyak latihan menggunakan methodmethod yang
sudah disediakan oleh class Math tersebut.
Format Masukan
Masukan dibaca dari masukan standar berupa bilangan A. Bilangan A ini adalah bilangan desimal
yang akan ditampilkan hanya sampai 3 angka di belakang koma.
Format Keluaran
Keluaran berupa keluaran standar yang berupa bilangan A dengan 3 angka di belakang koma.
Contoh Masukan
3.56326262
Contoh Keluaran
3.563
Langkahlangkah untuk membuat program tersebut adalah sebagai berikut:
1. Buatlah class dengan nama DDP11002B
2. Buatlah method main dalam class tersebut
3. Buatlah variabel bernama masukan dan keluaran dengan tipe data double untuk menyimpan
masukan bilangan desimal. Buatlah juga sebuah variabel bernama hasilFormat dengan tipe
data int untuk menyimpan bilangan bulat
4. Buatlah sebuah variabel objek class Scanner dengan nama reader untuk membaca masukan dari
masukan standar
Bila anda ingin melihat dokumentasi Java API class Scanner ikutilah link yang telah diberikan
pada tutorial sebelumnya
5. Baca masukan dari user dengan memanggil method nextDouble() yang dimiliki variabel
reader dan simpan hasilnya ke dalam variabel masukan
6. Selanjutnya, kalikan masukan dengan 1000 dan simpan ke dalam variabel hasilFormat.
Perhatian, untuk menyimpan tipe data double ke dalam variabel dengan tipe data int perlu
dilakukan casting. Casting yang dilakukan adalah sebagai berikut :
hasilFormat = (int) masukan;
7. Bagi hasilFormat dengan 1000.0 dan simpan ke dalam variabel keluaran
8. Tampilkan nilai keluaran ke layar
Tujuan:
Mahasiswa memahami komponen dasar graphical user interface seperti Rectangle
dan JFrame
Mahasiswa memahami proses pembuatan objek dari suatu kelas untuk digunakan di
kelas lain
dimana x dan y adalah koordinat x, y awal Rectangle tersebut akan digambar, dan width
dan height masingmasing menyatakan lebar dan tinggi dari Rectangle tersebut.
Sebagai contoh bila kita ingin membuat sebuah objek Rectangle yang bernama
benderaMerah dengan koordinat awal penggambaran pada (10, 30) dan lebar serta tinggi
masingmasing bernilai 200 dan 60 piksel, kita dapat menuliskan kode sbb:
Rectangle benderaMerah = new Rectangle(10, 30, 200, 60);
Selanjutnya, bila kita ingin menggambarkan bagian bendera putih maka kita dapat membuat
objek Rectangle dengan lebar dan tinggi yang sama namun berbeda lokasi awal dari
benderaMerah sbb:
Rectangle benderaPutih = new Rectangle(10, 90, 200, 60);
Objek benderaPutih akan menggambarkan komponen berbentuk persegi dengan
koordinat awal (10, 90) dan lebar serta tinggi bernilai 200 dan 60 piksel.
Sampai tahap ini, kita sudah membuat dua objek Rectangle yang bila digambarkan akan
membentuk kotak masingmasing dimulai pada koordinat (10,30) dan (10,90) dengan lebar
dan tinggi bernilai 200 dan 60 piksel.
Membuat Objek Color
Selanjutnya kita akan membuat objek Color untuk memberikan warna merah dan putih
dalam bendera kita. Setiap warna dapat dibuat dengan mengombinasikan nilai dari
komponen warna merah (R), hijau (G) dan biru (B) dengan masingmasing nilai berkisar
antara 0 255. Sebagai contoh, warna hitam memiliki nilai komponen R = 0, G = 0, dan B = 0.
Sedangkan warna putih dapat dinyatakan dengan nilai komponen R = 255, G = 255, dan B =
255.
Untuk membuat objek Color, kita dapat menggunakan constructor kelas Color sbb (diambil
dari Java API kelas Color) :
Color(int r, int g, int b)
Sehingga bila kita ingin membuat objek Color warna merah (255, 0, 0) dan putih (255, 255,
255) kita dapat menuliskannya dalam kode seperti ini:
Color merah = new Color(255, 0, 0);
Color putih = new Color(255, 255, 255);
dan fill() untuk mewarnai komponen dengan warna yang sedang aktif, dll (dapat dibaca
di Java API kelas Graphics2D).
Berikut ini adalah cara pembuatan sebuah objek Graphics2D dengan nama graph2:
Graphics2D graph2 = (Graphics2D) g;
dengan g adalah sebuah objek kelas Graphics. Pada umumnya, objek g ini diperoleh dari
argumen method paintComponent.
Kemudian kita dapat menggambarkan komponen bendera tadi dengan langkahlangkah
berurut sbb:
// menggambar kotak pertama
graph2.draw(benderaMerah);
// mengaktifkan warna merah
graph2.setColor(merah);
// mewarnai komponen dengan warna merah yang sedang aktif
graph2.fill(benderaMerah);
// menggambar kotak kedua
graph2.draw(benderaPutih);
// mengaktifkan warna putih
graph2.setColor(putih);
// mewarnai komponen dengan warna putih yang sedang aktif
graph2.fill(benderaPutih);
javax.swing.JComponent;
java.awt.Graphics;
java.awt.Graphics2D;
java.awt.Rectangle;
java.awt.Color;
}
}
Kelas KomponenBendera tersebut mampu melakukan penggambaran bendera berwarna
merah putih. Karena kelas KomponenBendera adalah sebuah komponen, maka kita
memerlukan objek dari kelas JFrame untuk meletakkan komponen tersebut agar hasil
proses penggambaran bendera tersebut dapat dilihat secara visual melalui frame.
Membuat Objek JFrame
Objek dari kelas JFrame dapat menampung berbagai macam komponen hasil extends dari
kelas JComponent. Sebuah objek dari kelas JFrame akan ditampilkan sebagai sebuah
window yang dapat kita atur karakteristiknya di antaranya adalah ukuran frame (lebar dan
tinggi) serta judul pada frame dengan melakukan pemanggilan method setSize() dan
setTitle(). Agar window dapat ditutup dengan sukses maka kita perlu juga memanggil
method setDefaultCloseOperation(). Berikut adalah contoh pembuatan objek kelas
JFrame dengan ukuran 300x400 dan berjudul Bendera Merah Putih.
JFrame frameBendera = new JFrame();
frameBendera.setSize(300, 400);
frameBendera.setTitle(Bendera Merah Putih);
frameBendera.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Membuat Objek Komponen Bendera dan Meletakkannya Pada Objek JFrame
Setelah objek JFrame bernama frameBendera dibuat maka kita dapat membuat objek dari
kelas KomponenBendera lalu menempatkannya pada objek frameBendera tersebut.
// membuat objek komponen
KomponenBendera bendera = new KomponenBendera();
// menambahkan objek komponen ke frame
frameBendera.add(bendera);
// membuat frame visible atau dapat dilihat
frameBendera.setVisible(true);
Method add() yang dijalankan oleh objek frameBendera akan menambahkan komponen
yang diberikan sebagai parameter ke dalam objek frame tersebut. Akhirnya, kita harus
memanggil method setVisible() yang dimiliki oleh objek frameBendera agar frame
dapat ditampilkan secara visual.
Menampilkan Frame dengan Komponen Bendera Merah Putih
Langkah terakhir untuk melihat sebuah frame yang menampilkan Bendera Merah Putih
adalah dengan menempatkan langkahlangkah pembuatan frame dan penambahan
komponen di atas dalam method main di suatu kelas baru yang harus kita buat. Kode berikut
menunjukkan pada bagian mana kita harus menuliskan kode pembuatan frame dan
penambahan komponen bendera tersebut. Nama kelas pada kode dapat diubah sesuai
dengan keinginan masingmasing selama masih memenuhi kaidah penamaan class.
Dengan merangkaikan seluruh langkahlangkah yang sudah dijelaskan sebelumnya dengan
baik dan benar, maka kita akan dapat melihat sebuah window yang menampilkan bentuk
bendera merah putih di dalamnya. Jangan lupa bahwa semua code harus dicompile terlebih
dahulu dan tidak boleh ada error! Selanjutnya jalankan perintah java pada class
BenderaMerahPutih. Selamat mencoba!
import javax.swing.JFrame;
public class BenderaMerahPutih {
public static void main(String[] args) {
// tuliskan kode pembuatan frame dan penambahan komponen di sini
...
}
}
Keluaran Program
Keluaran dari program kurang lebih sbb:
Rangkuman
Secara garis besar, proses pembuatan gambar Bendera Merah Putih dapat dituliskan dalam
pseudocode sbb:
1. buat sebuah kelas yang mengextends kelas JComponent
2. dalam method paintComponent di kelas tersebut, lakukan hal berikut
3.
4.
5.
6.
Sebagai gambaran, anda mungkin saja memerlukan 3 objek Rectangle, 3 objek Circle,
dan 4 objek Color (representasi warna merah, kuning, hijau, dan hitam).
Hasil akhir yang diharapkan dari program anda adalah sbb:
Selamat Mencoba!!!!
4. Tutorial Percabangan
Tujuan:
Mahasiswa memahami percabangan dan sifatsifat kondisi dalam program
Mahasiswa bisa menerapkan percabangan bersarang
Contoh Masukan
Iwan
80
Contoh Keluaran
NamaPeserta:Iwan
NilaiTes:80
Status:diterima
Berikut adalah langkahlangkah pembuatan program tersebut:
1. Buatlah sebuah class bernama Penerimaan dan simpan dalam berkas bernama
Penerimaan.java
2. Buatlah method main pada class tersebut.
3. Buatlah variabel nama dan status yang bertipe String, dan variabel nilai yang bertipe
double
4. Buatlah sebuah objek Scanner yang menerima masukan dari pengguna untuk variabel nama dan
nilai
5. Buatlah sebuah if statement yang membandingkan variabel nilai dengan 75. Jika nilai dibawah
75, maka isi variabel status dengan nilai gagal. Selain itu maka variabel status bernilai
diterima.
6. Cetak keluaran pertama program dengan perintah
System.out.println(NamaPeserta:+nama);
7. Diikuti dengan peritah untuk mencetak keluaran kedua
System.out.println(NilaiTes:+nilai);
8. Cetak keluaran ketiga dengan perintah
System.out.println(Status:+status);
9. Simpan program tersebut.
10. Compile dan perbaiki jika ada kesalahan.
11. Jalankan program tersebut untuk melihat hasilnya.
Huruf
A
B
C
D
E
Buatlah program yang menerima nilai UTS, UAS, dan tugas dari pengguna dan menghitung nilai akhir
serta huruf yang mewakilinya.
Format Masukan
Masukan dibaca dari masukan standar. Masukan terdiri dari 3 bilangan, A, B dan C. A
menyatakan nilai UTS, B menyatakan nilai UAS, dan C menyatakan nilai tugas.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa informasi nilai UTS, UAS, Tugas, nilai
akhir beserta huruf untuk mahasiswa tersebut
Contoh Masukan
908070
Contoh Keluaran
NilaiUTS:90
NilaiUAS:80
NiaiTugas:70
NilaiAkhir:81.5
Huruf:A
Berikut adalah langkahlangkah pembuatan program tersebut:
1. Buatlah sebuah class bernama NilaiMahasiswa dan simpan dalam berkas bernama
NilaiMahasiswa.java
2. Buatlah method main pada class tersebut.
3. Buatlah variabel uts, uas, tugas, dan nilaiAkhir yang bertipe double dan variabel huruf
yang bertipe char.
4. Buatlah sebuah objek Scanner yang menerima masukan dari pengguna untuk variabel uts, uas,
dan tugas.
5. Hitung nilai variabel nilaiAkhir dengan menggunakan perhitungan
nilaiAkhir=0.35*uts+0.4*uas+0.25*tugas;
Buatlah if, else if, dan else untuk menentukan nilai variabel huruf sesuai dengan petunjuk yang
ada di awal soal.
6. Cetak keluaran dengan menggunakan perintah
System.out.println(NilaiUTS:+uts);
System.out.println(NilaiUAS:+uas);
System.out.println(NilaiTugas:+tugas);
System.out.println(NilaiAkhir:+nilaiAkhir);
System.out.println(Huruf:+huruf);
7. Simpan program tersebut.
8. Compile dan perbaiki jika ada kesalahan.
9. Jalankan program tersebut untuk melihat hasilnya.
5. Tutorial Perulangan
Tujuan:
Mahasiswa memahami jenisjenis perulangan dan dapat menggunakannya dalam
program
Mahasiswa bisa menerapkan perulangan bersarang
Format Masukan
Masukan dibaca dari masukan standar berupa bilangan y yang akan dicari faktorfaktor primanya.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa penulisan semua faktor prima dari bilangan y
tersebut.
Contoh Masukan
20
Contoh Keluaran
225
Contoh Masukan
150
Contoh Keluaran
2355
Langkahlangkah membuat program adalah sbb:
1. Buat sebuah class dengan nama FaktorPrima
2. Buat method main dalam class tersebut
3. Buat sebuah variabel integer bernama input dan sebuah variabel integer bernama temp.
4. Buat sebuah variabel objek kelas Scanner bernama reader. Objek reader ini akan
membaca masukan dari keyboard (masukan standar)
5. Mintalah sebuah bilangan bulat dari user dan simpan nilai tersebut ke dalam variabel input.
Simpan juga nilai dari variabel input tersebut ke dalam variabel temp.
6. Buat sebuah forloop dengan inisialisasi variabel integer bernama i dengan nilai 2. Buat
kondisi forloop tersebut berjalan selama nilai i kurang dari atau sama dengan nilai input.
7. Lakukan langkah berikut di dalam forloop tersebut:
a. Cek apakah nilai temp habis dibagi dengan nilai i saat ini. Bila ya, maka jalankan
langkah i) dan ii). Bila tidak, jalankan langkah b.
i. Cetak nilai i ke dalam keluaran standar
ii. Bagi temp dengan i dan simpan hasilnya dalam variabel temp
b. Tambahkan nilai i dengan 1
8. Simpan file tersebut
9. Compile dan jalankan untuk melihat hasilnya
Tutorial Memeriksa Apakah Sebuah Bilangan Adalah Bilangan Prima
(Tambahan)
Setelah mengerjakan Tutorial A di atas, anda seharusnya sudah tahu cara menggunakan forloop
dalam program. Anda juga seharusnya sudah mengerti kapankah sebuah bilangan bulat disebut
sebagai bilangan prima.
Sebagai ulasan, sebuah bilangan prima adalah bilangan yang hanya habis dibagi dengan 1 dan
bilangan itu sendiri.
Contoh: 4 bukan bilangan prima karena 4 selain habis dibagi 1 juga habis dibagi 2. Contoh lain adalah
13 yang merupakan bilangan prima karena 13 hanya habis dibagi 1 dan 13 itu sendiri.
Ide untuk menentukan apakah sebuah bilangan y itu prima sbb:
Lakukan perulangan dari 2 sampai y 1
Bila y habis dibagi dengan bilangan perulangan sekarang maka catat sebagai bukan bilangan
prima
Bila tidak, lanjutkan perulangan
Format Masukan
Masukan dibaca dari masukan standar berupa bilangan y yang akan ditentukan apakah bilangan
tersebut berupa bilangan prima.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa informasi apakah bilangan y adalah sebuah
bilangan prima atau bukan.
Contoh Masukan
20
Contoh Keluaran
20bukanbilanganprima
Contoh Masukan
23
Contoh Keluaran
23bukanbilanganprima
Dalam tutorial ini anda tidak diberikan panduan untuk membuat programnya. Silakan anda membuat
program ini dengan cara anda sendiri.
6. Tutorial Array
Tujuan:
Mahasiswa mengenal tipe data array dan bisa menggunakannya dalam program
Mahasiswa memahami teknikteknik pengisian dan pencarian data pada suatu array
Mahasiswa mengerti penggunaan array dua dimensi
Format keluaran
Keluaran terdiri dari tiga baris yang berisi informasi umur teman tertua, umur teman termuda, serta
umur ratarata temanteman Nijar. Untuk umur ratarata berupa bilangan desimal dengan dua angka
di belakang koma.
Contoh Masukan
7
55
26
14
44
33
17
20
Contoh Keluaran
Umurtemantertua:55
Umurtemantermuda:14
Umurtemanratarata:29.85
Langkahlangkah membuat program adalah sbb
Nama class dan variabelvariabel yang digunakan dalam tutorial ini terserah kepada kalian. Namun
nama yang digunakan harus merepresentasikan kegunaan dari class dan variabelvariabel tersebut.
1. Buatlah sebuah class yang memiliki method main.
2. Buatlah sebuah objek Scanner untuk membaca masukan dari pengguna.
3. Buatlah perintah untuk membaca bilangan pertama yang dimasukkan oleh pengguna. Simpan
bilangan ini ke dalam sebuah variabel. Bilangan ini menyatakan jumlah teman yang akan
disimpan data umurnya.
4. Buatlah sebuah array 1 dimensi yang dapat menyimpan bilangan bulat. Ukuran array ini
tergantung dari jumlah teman (diperoleh pada langkah sebelumnya).
Syntax untuk membuat array bertipe integer adalah sebagai berikut:
int[]nama_array=newint[ukuran_array];
5. Buatlah perintah untuk membaca setiap bilangan yang menyatakan umur teman Nijar. Umur
pertama disimpan ke dalam array indeks ke0, umur kedua disimpan ke dalam array indeks
ke1, dan seterusnya hingga semua umur teman Nijar tersimpan.
Syntax untuk menyimpan suatu nilai ke dalam array indeks kei adalah sebagai berikut:
nama_array[i]=bilangan_tertentu;
Gunakan iterasi (whileloop atau forloop) pada proses penyimpanan data umur.
6. Untuk mencari teman tertua, lakukan langkahlangkah berikut:
a. Buatlah sebuah variabel temporal untuk menyimpan umur tertua sementara (misal
dengan nama tertua) dan berikan nilai 1 pada variabel tersebut
b. Bandingkan nilai variabel tertua dengan bilangan pada indeks ke0.
c. Jika nilai variabel tertua lebih kecil, maka ubah nilai variabel tersebut menjadi
bilangan pada indeks ke0.
d. Jika nilai variabel tertua sama dengan atau lebih besar dari bilangan pada indeks ke
0, maka lanjutkan perbandingan ke indeks berikutnya
e. Lakukan langkah yang sama hingga bilangan pada indeks terakhir.
f. Setelah perbandingan selesai dilakukan, maka variabel tertua akan menyimpan
umur tertua dari temanteman Nijar.
7. Perhatikan bahwa kesalahan yang sering terjadi adalah mengakses array dengan indeks yang
melebihi indeks maksimal.
8. Untuk mencari teman termuda, lakukan langkah yang serupa dengan langkah untuk mencari
teman tertua.
9. Untuk mencari umur ratarata teman, lakukan langkah berikut:
a. Buatlah sebuah variabel untuk menyimpan jumlah umur (misal bernama
totalUmur) dan berikan nilai 0 pada variabel tersebut
b. Jumlahkan nilai totalUmur dengan bilangan pada indeks ke0.
c. Lakukan penjumlahan untuk semua bilangan pada array.
d. Setelah umur semua teman dijumlahkan, bagi nilai totalUmur dengan jumlah teman.
Simpan hasil bagi ke sebuah variabel. Gunakan langkah yang telah kalian pelajari
agar bilangan yang tersimpan berupa desimal dua angka di belakang koma.
10. Cetak nilainilai yang diperoleh sesuai format pada bagian Contoh Keluaran.
21
99
32
55
44
17
31
55
8
54
30
55
Lagilagi Nijar meminta bantuan Anda untuk membuat program. Nijar menyimpan catatan data nama
orangorang yang telah disurvei di berkas lain. Oleh karena itu, Anda hanya perlu menampilkan
nomor urut orang tertua/termuda (untuk lebih jelasnya lihat pada bagian Contoh Keluaran).
Contoh Masukan
(Tulisan berwarna biru hanya untuk kejelasan. Input sebenarnya berwarna hitam.)
JumlahRT:4
JumlahsampleditiapRT:3
Umurmasingmasing:
21448
991754
323130
555555
Contoh Keluaran
Tetanggatertuaadalahorangke1diRT2.
Tetanggatermudaadalahorangke3diRT1.
LangkahLangkah Pengerjaan
Silakan gunakan langkahlangkah yang terpikirkan oleh Anda
7. Tutorial Designing Class
Tujuan:
Mahasiswa mengerti teknik pembuatan kelas dan methodmethod
Mahasiswa bisa mengelompokkan kelaskelas dalam suatu package
Pendahuluan
Pada tutorial kali ini kita akan belajar membuat beberapa kelas yang selanjutnya kita kelompokkan
dalam beberapa package. Kelaskelas dalam package tersebut akan digunakan dalam sebuah main
class. Anda diminta untuk mengimplementasikan beberapa method yang masih kosong dalam kelas
kelas tersebut. Untuk memudahkan pekerjaan, anda dianjurkan menggunakan Netbeans IDE.
Kelas pertama yang akan kita buat adalah kelas Persegi. Kelas ini termasuk ke dalam package bentuk
bersama kelas Segitiga (yang akan dijelaskan setelah kita selesai membahas kelas Persegi). Berikut
ini adalah bagan kelas Persegi. Silakan implementasikan dibagian yang masih kosong. Kalian
diminta menambahkan juga sebuah method untuk menghitung luas persegi.
package bentuk;
/**
* Kelas yang merepresentasikan sebuah persegi. Kelas ini dapat menghitung
luas sebuah persegi.
*
* @author Nobita - 110617081945
*
*/
public class Persegi {
// variabel yang menyimpan nilai sisi sebuah persegi
private double sisi;
/**
* Constructor kelas <code>Persegi</code>. Pada constructor ini diatur
nilai
* dari variabel <code>sisi</code>.
*
* @param sisi adalah sisi persegi yang akan disimpan nilainya
*/
public Persegi(double sisi) {
// implementasikan kode anda di sini
}
/**
* Method untuk mengambil nilai <code>sisi</code> objek
<code>Persegi</code>
*
* @return nilai sisi persegi
*/
public double getSisi() {
// implementasikan kode anda di sini
}
/**
* Method untuk mengatur nilai <code>sisi</code> objek
<code>Persegi</code>
*
* @param sisi adalah sisi persegi yang akan disimpan nilainya
*
*/
public void setSisi(double sisi) {
Kelas kedua adalah kelas Segitiga. Kelas ini juga akan kita masukkan dalam package bentuk bersama
kelas Persegi di atas karena kedua kelas ini samasama merepresentasikan sebuah bentuk geometri.
Silakan implementasikan di bagian yang masih kosong. Kalian diminta menambahkan juga
sebuah method untuk menghitung luas segitiga.
package bentuk;
/**
* Kelas yang merepresentasikan sebuah segitiga. Kelas ini dapat menghitung
luas sebuah segitiga.
*
* @author Nobita 110617081945
*
*/
public class Segitiga {
// variabel yang menyimpan nilai alas sebuah segitiga
private double alas;
// variabel yang menyimpan nilai tinggi sebuah segitiga
private double tinggi;
/**
* Constructor kelas <code>Segitiga</code>. Pada constructor ini diatur
* nilai dari variabel <code>alas</code> dan <code>tinggi</code>.
*
* @param alas adalah alas segitiga yang akan disimpan nilainya
* @param tinggi adalah tinggi segitiga yang akan disimpan nilainya
*/
public Segitiga(double alas, double tinggi) {
// implementasikan kode anda di sini
}
/**
* Method untuk mengambil nilai <code>alas</code> objek
<code>Segitiga</code>
*
* @return nilai alas segitiga
*/
public double getAlas() {
// implementasikan kode anda di sini
}
/**
* Method untuk mengatur nilai <code>alas</code> objek
<code>Segitiga</code>
*
* @param alas adalah alas segitiga yang akan disimpan nilainya
*/
public void setAlas(double alas) {
// implementasikan kode anda di sini
}
/**
* Method untuk mengambil nilai <code>tinggi</code> objek
<code>Segitiga</code>
*
* @return nilai tinggi segitiga
*/
public double getTinggi() {
// implementasikan kode anda di sini
}
/**
* Method untuk mengatur nilai <code>tinggi</code> objek
<code>Segitiga</code>
*
* @param tinggi adalah tinggi segitiga yang akan disimpan nilainya
*/
public void setTinggi(double tinggi) {
// implementasikan kode anda di sini
}
// buat sebuah method untuk menghitung luas segitiga di sini
}
Sekarang kita akan membuat sebuah kelas bernama Matematika yang disimpan dalam package
matematika. Kelas ini berisi methodmethod static yang melakukan perhitungan matematika.
Silakan implementasikan di bagian yang masih kosong.
package matematika;
/**
* Kelas yang berisi fungsi-fungsi matematika sederhana
*
* @author Nobita - 110617081945
*
*/
public class Matematika {
/**
* Method untuk menghitung nilai maksimum dari dua buah bilangan bulat
*
* @param a bilangan pertama
* @param b bilangan kedua
* @return bilangan maksimum dari a dan b
*/
public static int maks(int a, int b) {
// implementasikan kode anda disini
}
/**
* Method untuk menghitung nilai maksimum dari dua buah bilangan
desimal
* @param a bilangan pertama
* @param b bilangan kedua
* @return bilangan maksimum dari a dan b
Menjalankan KelasKelas
Setelah membuat kelaskelas tersebut tentu saja kita tidak dapat menjalankannya secara langsung.
Untuk menjalankannya kita perlu membuat objek dari kelaskelas tersebut di sebuah kelas yang
MemanggilmethoddarikelasPersegidanSegitiga
sisipersegi=15.0
luaspersegi=225.0
alassegitiga=15.0
tinggisegitiga=10.0
luassegitiga=75.0
8. Tutorial Recursion
Tujuan:
Mahasiswa mengerti teknik rekursi dan kaitannya dengan iterasi
Mahasiswa bisa menerapkan pola pikir rekursi dalam menyelesaikan permasalahan
langkah 1
r.a.d.a.r
langkah 2
r.a.d.a.r
langkah 3
r.a.d.a.r
dari contoh di atas, kita menyimpulkan bahwa kata radar adalah palindrom.
Perhatikan ilustrasi di bawah ini. Panah dengan garis putusputus baru akan muncul ketika sudah
mencapai base case yaitu ketika mencari nilai palindrom(d).
palindrom(radar)
return true
palindrom(ada)
return true
palindrom(d)
Perhatikan contoh selanjutnya:
antenna
langkah 1
a.n.t.e.n.n.a
langkah 2
a.n.t.e.n.n.a
langkah 3
a.n.t.e.n.n.a
pada contoh di atas, kita tidak melanjutkan pencarian ke langkah 4 karena kita sudah menemukan
pasangan karakter yang tidak sama pada langkah 3. Kita dapat menyimpulkan kata antenna
bukan sebuah palindrom.
palindrom(antenna)
return false
palindrom(ntenn)
return false
palindrom(ten)
Pada bahasa pemrograman Java, terdapat dua method dari kelas String yang bisa membantu kita
untuk mencari kepalindroman suatu kata. Method tersebut adalah:
1. chartAt(i) mengembalikan karakter pada posisi kei
2. substring(i, j) mengembalikan substring dimulai dari indeks kei sampai j1
Kita dapat menggunakan bantuan method charAt(i) ketika akan memeriksa kesamaan dua
karakter. Sedangkan method substring(i,j) dapat digunakan untuk memperoleh substring
(potongan kata) dari kata yang sedang diproses.
Pada kesempatan kali ini, kita akan berlatih membuat program yang memeriksa apakah suatu kata
bersifat palindrom.
Format Masukan
Masukan dibaca dari masukan standar. Masukan string kata yang akan diperiksa
kepalindromannya.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa pernyataan true bila kata tersebut
palindrom, atau false bila kata tersebut bukan palindrom.
Contoh Masukan
antenna
Contoh Keluaran
false
Contoh Masukan
level
Contoh Keluaran
true
Catatan:
Karena kalian sudah mempelajari tentang package pada tutorial minggu lalu, maka kalian diminta
untuk terus menggunakan konsep package dalam tutorialtutorial selanjutnya (termasuk tutorial
ini).
Langkahlangkah membuat program adalah sbb:
1. Buat sebuah kelas dengan nama Palindrompada package ddp2011.tutorial
2. Buat sebuah method static bernama isPalindrome yang menerima satu parameter String s
sebagai string yang ingin dicari kepalindromannya. Method ini mengembalikan sebuah nilai
boolean.
3. Tentukan base case method tersebut. Perhatikan, penentuan base case amat sangat penting
pada sebuah method rekursif, karena pemanggilan method rekursif bisa tidak akan pernah
berhenti bila anda salah menentukan base casenya.
Pada operasi palindrom, base casenya sbb:
a) Bila panjang String s sama dengan 0 atau 1 (sudah berada di tengahtengah kata),
maka hasil palindrom sama dengan true
b) Bila karakter pertama dan terakhir String s tidak sama, maka hasil palindrom sama
dengan false.
4. Tentukan recursion call method tersebut. Pada operasi palindrom, recursion call dilakukan
dengan memeriksa kepalindroman substring (potongan kata) dari indeks selanjutnya sampai
indeks kata sebelum karakter terakhir. Recursion call ini hanya dilakukan bila karakter pada
indeks pertama sama nilainya dengan karakter pada indeks terakhir. Dengan kata lain,
recursion call tersebut menjadi : isPalindrome(s.subString(1,s.length()1))
5. Simpan file tersebut
6. Buatlah sebuah kelas bernama DemoRekursif pada package ddp2011.demo
7. Buat method main dalam class tersebut
8. Buat sebuah variabel String bernama kata. Buat juga sebuah variabel objek class Scanner
bernama input yang membaca masukan dari keyboard
9. Bacalah dari masukan standar sebuah kata yang nilainya disimpan pada Stringkata
10. Selanjutnya, panggillah method static isPalindrome milik kelas Palindrom dengan
memberikan argumenkata
11. Cetak hasil yang dikembalikan pemanggilan method isPalindrome sebagai keluaran
12. Simpan file tersebut.
13. Compile dan jalankan untuk melihat hasilnya.
2 * pangkat(2, 3)
return 2 * 4
2 * pangkat(2, 2)
return 2 * 2
2 * pangkat(2, 1)
return 2 * 1
2 * pangkat(2, 0)
Perhatikan ilustrasi di atas. Panah dengan garis putusputus baru akan muncul ketika sudah
mencapai base case yaitu ketika memanggil pangkat(2,0). Hasil tersebut akan dikembalikan ke
proses yang memanggilnya begitu seterusnya.
Kali ini kita akan berlatih membuat operasi pemangkatan dua bilangan dengan cara rekursif.
Format Masukan
Masukan dibaca dari masukan standar. Masukan terdiri dari 2 bilangan, A dan B. A menyatakan
bilangan dasar, dan B menyatakan pangkat. Perhatikan, B harus berupa bilangan bulat positif.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa sebuah bilangan yang menyatakan hasil
perpangkatan A terhadap B.
Contoh Masukan
210
Contoh Keluaran
1024
Langkahlangkah membuat program adalah sbb:
1. Buat sebuah kelas dengan nama Pangkatpada package ddp2011.tutorial
2. Buat sebuah method static bernama hitungPangkat yang menerima dua parameter: bilangan
bulat a sebagai bilangan dasar, dan bilangan bulat b sebagai pangkat. Method ini
mengembalikan sebuah bilangan bulat.
3. Tentukan base case method tersebut. Perhatikan, penentuan base case amat sangat penting
pada sebuah method rekursif, karena pemanggilan method rekursif bisa tidak akan pernah
berhenti bila anda salah menentukan base casenya.
Pada operasi pemangkatan, base casenya sbb:
Bila pangkat b sama dengan 0, maka hasil pemangkatan sama dengan 1
4. Tentukan recursion call method tersebut. Pada operasi pemangkatan, recursion call dilakukan
dengan mengalikan bilangan dasar a dengan bilangan dasar yang dipangkatkan dengan selisih
pangkat b dengan 1. Atau dengan notasi matematika, recursion call tersebut menjadi : a * a b1
5. Simpan file tersebut
6. Buatlah sebuah kelas bernama DemoPangkat pada package ddp2011.demo
7. Buat method main dalam kelas tersebut
Hasil bagi
Sisa
30/4 =
7 / 4
1 / 4
Hasil konversi 30 ke basis 4 adalah bilangan 132, dengan kata lain 30 (basis 10) = 132 (basis 4).
Untuk memperjelas, di sini kita menggunakan dua operator yaitu / dan %. Operator /
digunakan untuk mencari hasil bagi x dengan b, sedangkan operator % digunakan untuk mencari
sisa pembagian x dengan b. Sebagai contoh, hasil 30/4 adalah 7, sedangkan 30%4 adalah 2.
Perhatikan secara umum proses pengkonversian bilangan x ke basis b secara rekursif sbb:
1. Bagi x dengan b. Sisa pembagian, atau x%b, menjadi digit paling kanan pada basis b
2. Dari hasil x/b pada langkah sebelumnya, lakukan pembagian lagi dengan b dan ambil sisa
pembagiannya sebagai digit selanjutnya pada basis b
3. Bila hasil x/b sudah mencapai 0 maka bilangan x%b menjadi digit terakhir (paling kiri) dalam
basis b
Pada kesempatan ini kita akan berlatih membuat program yang melakukan konversi bilangan basis
sepuluh ke basis lain
Format Masukan
Masukan dibaca dari masukan standar. Masukan terdiri dari 2 bilangan, A dan B. Bilangan A
menyatakan bilangan pada basis sepuluh, dan bilangan B menyatakan basis konversi yang
diinginkan. Bilangan B harus berada antara 2 dan 9.
Format Keluaran
Keluaran ditulis ke keluaran standar. Keluaran berupa sebuah bilangan yang menyatakan hasil
konversi bilangan A ke basis B.
Contoh Masukan
304
Contoh Keluaran
132
Langkahlangkah membuat program adalah sbb:
1. Buat sebuah kelas dengan nama Konversipada packageddp2011.tutorial
2. Buat sebuah method static bernama hitungKonversi yang menerima dua parameter: bilangan
bulat a sebagai bilangan dasar dalam basis 10, dan bilangan bulat b sebagai basis yang dituju.
Method ini mengembalikan sebuah String.
3. Buat dua variabel bilangan bulat hasilBagi dan sisa di dalam method konversi.
hasilBagi akan menyimpan nilai a/b, sedangkan sisa akan menyimpan nilai a%b.
4. Tentukan base case method tersebut. Perhatikan, penentuan base case amat sangat penting
pada sebuah method rekursif, karena pemanggilan method rekursif bisa tidak akan pernah
berhenti bila anda salah menentukan base casenya.
Pada operasi konversi, base casenya sbb:
Bila hasilBagi sama dengan 0, maka hasil konversi sama dengan bilangan sisa
5. Tentukan recursion call method tersebut. Pada operasi konversi, recursion call dilakukan
dengan menyambungkan String hasil konversi dari hasilBagi terhadap basis b dengan sisa
pembagian yang diperoleh saat ini. Dengan kata lain, recursion call tersebut menjadi :
hitungKonversi (hasilBagi,b)+sisa
6. Simpan file tersebut
7. Buat sebuah kelas bernama DemoKonversi pada package ddp2011.demo
8. Buat method main dalam kelas tersebut
9. Buat dua variabel bilangan bulat yaitu bilanganDasar dan basis. Buat juga sebuah variabel
String bernama hasilKonversi
10. Bacalah dari masukan standar dua bilangan yang masingmasing disimpan pada variabel
bilanganDasar danbasis.
11. Selanjutnya, panggillah method static hitungKonversi milik kelas Konversi dengan
memberikan argumen bilanganDasar dan basis, dan simpan hasilnya pada variabel
hasilKonversi
12. Cetak nilai variabel hasilKonversi sebagai keluaran
13. Simpan file tersebut.
14. Compile dan jalankan untuk melihat hasilnya.
Catatan: Anda bisa mengubah proses konversi di atas sehingga bisa memproses basis 16. Silakan
dicoba dengan cara yang terpikirkan oleh anda.
9. Tutorial Interface, Polimorfisme & Inheritance
Tujuan:
Mahasiswa dapat menggunakan interface
Mahasiswa memahami konsep polimorfisme
Diagram di atas menunjukkan hirarki dari interface dan kelaskelas yang akan kalian buat. Garis
putusputus menunjukkan bahwa kelas tersebut mengimplements interface yang ditunjuknya. Garis
solid (tidak putusputus) menunjukkan bahwa kelas tersebut mengextends kelas yang ditunjuknya.
Keluaran yang diharapkan dari program yang kalian buat dapat dilihat pada Contoh Keluaran.
Contoh Keluaran
Segitiga:SiKumbang
Alassegitiga:3.0
Tinggisegitiga:4.0
Luassegitiga:6.00
Kelilingsegitiga:12.00
Segitiga:SamaSisiBaru
Sisisegitiga:8.0
Luassegitiga:27.71
Kelilingsegitiga:24.00
Persegi:PapanTulis
Sisipersegi:10.0
Luaspersegi:100.00
Kelilingpersegi:40.00
Lingkaran:LingLing
Jarijarilingkaran:8.0
Luaslingkaran:201.06
Kelilinglingkaran:50.27
Berikut ini adalah kelas untuk menghasilkan keluaran di atas. Kelas DemoInterface ini berada dalam
package ddp2011.demo. Kelas ini bisa langsung kalian gunakan.
package ddp2011.demo;
import
import
import
import
bentuk.Lingkaran;
bentuk.Persegi;
bentuk.SegitigaSamaSisi;
bentuk.SegitigaSikuSiku;
Langkahlangkah membuat program adalah sbb:
1. Buatlah sebuah interface bernama Bentuk2D pada package ddp2011.tutorial.bentuk2D yang
akan diimplements oleh kelas lain. Kelas ini memiliki tiga method yang tidak terimplementasi:
a. Method bernama getNamaBentuk yang mengembalikan sebuah String
b. Method bernama getKeliling yang mereturn double. Method ini dipanggil untuk
menghitung luas dari sebuah turunan kelas Bentuk2D
c. Method bernama getLuas yang mereturn double. Method ini dipanggil untuk
menghitung luas dari sebuah turunan kelas Bentuk2D
2. Buatlah kelas bernama Persegi pada package ddp2011.tutorial.bentuk2D yang meng
implements kelas Bentuk2D. Pada kelas ini terdapat variabel namaBentuk bertipe String dan
variabel sisi dengan tipe double. Buatlah juga halhal sebagai berikut:
a. Constructor yang menerima dua parameter. Parameter pertama adalah sebuah String
untuk mengatur nilai namaBentuk. Parameter kedua adalah sebuah double untuk
mengatur nilai sisi.
b. Method setter & getter untuk variabel sisi
c. Method getNamaBentuk serta implementasinya sehingga dihasilkan informasi nama
bentuk seperti pada Contoh Keluaran
d. Method getKeliling beserta implementasinya
e. Method getLuas beserta implementasinya
3. Buatlah kelas bernama Lingkaran pada package ddp2011.tutorial.bentuk2D yang meng
implements kelas Bentuk2D. Pada kelas ini terdapat variabel namaBentuk bertipe String dan
variabel jariJari dengan tipe double. Buatlah juga halhal sebagai berikut:
a. Constructor yang menerima dua parameter. Parameter pertama adalah sebuah String
untuk mengatur nilai namaBentuk. Parameter kedua adalah sebuah double untuk
mengatur nilai jariJari.
b. Method setter & getter untuk variabel jariJari
c. Method getNamaBentuk serta implementasinya sehingga dihasilkan informasi nama
bentuk seperti pada Contoh Keluaran
d. Method getKeliling beserta implementasinya
e. Method getLuas beserta implementasinya
4. Buatlah kelas abstract bernama Segitiga pada package ddp2011.tutorial.bentuk2D yang
mengimplements kelas Bentuk2D. Pada kelas ini terdapat variabel namaBentuk bertipe
String. Buatlah juga halhal sebagai berikut:
a. Constructor yang menerima satu parameter yaitu sebuah String untuk mengatur nilai
namaBentuk.
b. Method getNamaBentuk serta implementasinya sehingga dihasilkan informasi nama
bentuk seperti pada Contoh Keluaran
5. Buatlah kelas bernama SegitigaSamaSisi pada package ddp2011.tutorial.bentuk2D yang
mengextends kelas Segitiga. Pada kelas ini terdapat variabel sisi dengan tipe double.
Buatlah juga halhal sebagai berikut:
a. Constructor yang menerima dua parameter. Parameter pertama adalah sebuah String
untuk mengatur nilai namaBentuk. Parameter kedua adalah sebuah double untuk
mengatur nilai sisi. Panggillah constructor kelas Segitiga dengan memberikan
argumen namaBentuk
b. Method setter & getter untuk variabel sisi
c. Method getKeliling beserta implementasinya
d. Method getLuas beserta implementasinya. Petunjuk: gunakan aturan sinus untuk
membantu menemukan tinggi segitiga.
6. Buatlah kelas bernama SegitigaSikuSiku pada package ddp2011.tutorial.bentuk2D yang
mengextends kelas Segitiga. Pada kelas ini terdapat variabel alas dan tinggi dengan tipe
double. Buatlah juga halhal sebagai berikut:
a. Constructor yang menerima tiga parameter. Parameter pertama adalah sebuah String
untuk mengatur nilai namaBentuk. Parameter kedua adalah sebuah double untuk
mengatur nilai alas dan parameter ketiga adalah sebuah double untuk mengatur nilai
Tujuan:
Mahasiswa dapat membaca dan menulis berkas teks
Mahasiswa memahami dan dapat menangkap eksepsi yang dapat muncul pada
program
Checked exception eksepsi yang mungkin terjadi dan Java mengharuskan kita mencegah
terjadinya eksepsi tersebut
Unchecked exception eksepsi yang mungkin terjadi, namun Java tidak mengharuskan kita
menangani eksepsi tersebut
Misalnya kita ingin membuka sebuah file, ada kemungkinan terjadi eksepsi terkait proses membuka
file tersebut. Oleh karena itu, Java meminta kita untuk menanganinya dengan menangkap eksepsi
yang mungkin terjadi. Bila kita tidak menanganinya, maka program kita akan gagal dicompile. Ini
Membaca file dan menulisk hasilnya ke file lain
Kali ini kalian akan berlatih membaca file, melakukan operasi terhadap isi file tersebut, dan
menuliskan hasil akhir ke sebuah file lain.
Terdapat sebuah file bernama NilaiMhs.txt yang berisi nama mahasiswa, jumlah SKS yang telah
diambilnya, dan total nilai yang sudah diperolehnya.
Contoh isi file tersebut:
Ani 27 83.7
Budi 21 28.35
Chandra 96 182.4
Program kalian harus menghitung IPK setiap mahasiswa dengan cara membagi total nilai dengan
jumlah SKS mahasiswa tersebut. Berdasarkan hasil IPK, program harus menulis ke sebuah file
Peringatan.txt untuk kasus sbb:
Bila IPK kurang dari 1.5 dan jumlah SKS kurang dari 30
Bila IPK kurang dari 1.75 dan jumlah SKS kurang dari 60
Bila IPK kurang dari 2.0 dan jumlah SKS lebih dari 60
Informasi yang ditulis program dalam file Peringatan.txt adalah nama mahasiswa, jumlah SKS, dan
IPK mahasiswa tersebut.
Format Masukan
Masukan dibaca dari file NilaiMhs.txt
Format Keluaran
Keluaran ditulis ke sebuah file Peringatan.txt bagi mahasiswa yang memenuhi syarat untuk diberi
peringatan.
Contoh Keluaran (pada file Peringatan.txt)
Budi211.35
Chandra961.90
Donal751.81
Fifi641.51
Gober601.50
Langkahlangkah membuat program adalah sbb:
1. Buat sebuah kelas dengan nama DemoBacaTulisFilepada package ddp2011.demo
2. Dalam method main pada kelas tersebut. Langkah 3 7 di bawah ini dilakukan dalam method
main.
3. Buat sebuah variabel bilangan bulat untuk menyimpan nilai SKS. Buat juga dua variabel bilangan
desimal untuk menyimpan total nilai mahasiswa dan IPK.
4. Bukalah file bernama NilaiMhs.txt menggunakan objek File
5. Buatlah sebuah objek Scanner yang menerima masukan dari objek File yang telah dibuat di
langkah 4
6. Buatlah sebuah objek kelas PrintWriter untuk menulis ke file Peringatan.txt
7. Operasi ini dilakukan selama isi file NilaiMhs.txt masih ada:
a. Baca satu baris isi file yang berisi nama mahasiswa, jumlah SKS, dan total nilainya dengan
menggunakan objek Scanner
b. Hitung IPK mahasiswa tersebut
c. Bila IPK mahasiswa termasuk ke dalam kasus yang harus diberi peringatan, tulis nama
mahasiswa tersebut, jumlah SKS, dan IPKnya ke file Peringatan.txt. Penulisan dilakukan
dengan menggunakan objek PrintWriter
8. Simpan program tersebut.
9. Compile dan jalankan untuk melihat hasilnya.
Pada langkah 5 dan 6 bisa terjadi eksepsi FileNotFoundException. Eksepsi ini terjadi bila
program mencoba membuka file yang tidak bisa ditemukan. Eksepsi ini adalah checked
exception, anda harus menanganinya supaya program anda bisa dicompile
Pada langkah 7.a bisa terjadi eksepsi NumberFormatException. Eksepsi ini terjadi bila
program mencoba membaca karakterkarakter bukan bilangan sebagai sebuah bilangan.
Eksepsi ini adalah unchecked exception. Program tetap bisa dicompile dan dijalankan, namun
bila eksepsi ini muncul dan tidak ditangani, program akan berhenti secara tidak diinginkan
Tanganilah eksepsieksepsi tersebut sehingga program anda dapat berjalan sebagaimana mestinya.
Tutorial Sorting dan Searching Data Dengan Insertion Sort & Binary Search
Pada tutorial ini anda diminta untuk melakukan implementasi algoritma sorting dan searching.
Terdapat masukan berupa katakata dengan keadaan acak. Anda diminta untuk mengurutkan data
tersebut dan dan menampilkan ke layar. Metode yang digunakan untuk mengurutan katakata ini
adalah metode Insertion Sort. Selain itu program juga dapat melakukan pencarian terhadap katakata
yang ada dengan menggunakan Binary Search.
Pada saat program dijalankan, maka program akan meminta user untuk memasukkan katakata acak.
Selanjutnya program akan melakuan pengurutan dengan menggunakan Insertion Sort dan
menampilkan ke layar. Kemudian program akan meminta masukan dari user kata yang akan dicari
dalam data yang telah terurut. Bila kata tersebut ada dalam data maka akan menampilkan pesan
Angka zzz ada dalam data pada indeks x
Contoh running program 1
Masukkanurutanangkaacakyangakandiurutkan:
115413289034
281113345490
Masukkanangkayangakandicari:
2
Angka1adadalamdatapadaindeks1
8. Selanjutnya, baca masukan user yang mencari data dalam array yang telah terurut dengan
Scanner
9. Panggil method binarySearch untuk mencari dimana letak/indeks dari data yang dicari
10. Bila data yang dicari ada, tampilkan indeks dari data tersebut. Apabila tidak ada, munculkan pesan
bahwa data yang dicari tidak ditemukan.
11. Simpan program tersebut
12. Compile dan jalankan untuk melihat hasilnya
Tutorial Sorting dan Searching Data Dengan Selection Sort & Binary Search
(Tambahan)
Kali ini anda diminta menggunakan metode Selection Sort untuk mengurutkan katakata seperti pada
tutorial di atas. Keseluruhan dari program kurang lebih sama seperti pada tutorial di atas. Bedanya
adalah method yang diimplementasikan sekarang bernama selectionSort.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Gunakan method compareTo dari objek String untuk membandingkan sebuah String
dengan String yang lain
Buatlah method main yang akan melakukan eksekusi terhadap masukan yang diberikan oleh
user
Baca masukan dari user yang berupa data acak dengan tipe data String menggunakan Scanner
Selanjutnya pecah masukan tersebut menjadi sebuah String array dengan menggunakan method
split()
Lakukan pengurutan array tersebut dengan memanggil method selectionSort
Tampilkan hasil pengurutan ke layar
Selanjutnya, baca masukan user yang mencari data dalam array yang telah terurut dengan
Scanner
Panggil method binarySearch untuk mencari dimana letak/indeks dari data yang dicari
Bila data yang dicari ada, tampilkan indeks dari data tersebut. Apabila tidak ada, munculkan pesan
bahwa data yang dicari tidak ditemukan.
Simpan program tersebut
Compile dan jalankan untuk melihat hasilnya
Tutorial Enkripsi
Pada tutorial kali ini kalian diminta untuk menerapkan konsep multithreading terhadap proses
pengenkripsian/pendekripsian file gambar. Pembacaan dan penulisan file gambar dilakukan
menggunakan konsep Binary IO. Pengenkripsian dan pendekripsian menggunakan aturan Caesar
cipher seperti yang dijelaskan pada buku/slide namun bedanya pada tutorial kali ini proses
enkripsi/dekripsi tersebut menggunakan kunci yang berupa file gambar juga.
Untuk melihat efek multithreading pada tutorial ini kalian diberikan template GUI yang sudah
terimplementasi fungsifungsinya. Bila project yang bernama IOStream dibuka pada Netbeans,
kalian akan menemukan sebuah package yang bernama stream yang memiliki tiga buah file:
IOStream.java, IOStreamAboutBox.java, dan IOStreamView.java. Ketika kalian jalankan
program sebagaimana adanya (dengan merun kelas IOStream.java) dan melakukan proses
enkripsi gambar, ada dua hal yang bisa kalian perhatikan.
1. Kalian tidak bisa menekan tomboltombol lain selama proses enkripsi/dekripsi belum selesai
2. Pergerakan progress bar yang menunjukkan persentasi progress tidak terupdate dengan baik.
Penjelasan untuk poin 1 disebabkan karena proses enkripsi/dekripsi menggunakan thread utama
sehingga tidak ada proses lain yang bisa dilakukan selama thread utama tersebut belum selesai.
Terkait penjelasan untuk poin 2, hal tersebut disebabkan proses update progress bar tidak thread
safe sehingga hanya bisa berjalan dengan baik dalam lingkungan multithreading saja (penjelasan
lebih jauh terhadap poin 2 bisa didapatkan di kuliah lanjut).
Agar permasalahan pada poin 1 dan 2 di atas bisa diatasi, ubahlah implementasi proses
pengenkripsian
yang
ada
di
dalam
method
enkrip1ActionPerformed,
enkrip2ActionPerformed, dekrip1ActionPerformed dan dekrip2ActionPerformed pada
kelas IOStreamView.java. Proses tersebut harus diletakkan dalam sebuah objek Runnable yang
selanjutnya akan dijalankan melalui objek Thread.
Bila kalian berhasil melakukannya, ketika proses enkripsi/dekripsi berjalan kalian masih bisa
memilih file lain untuk di enkripsi/dekripsi dan progress bar akan memberikan update progress
dengan lancar. Selamat mencoba
NB: Yang diikut sertakan pada tutorial ini (dalam file Project&Gambar.zip):
1. Project Netbeans bernama IOStream
2. Dua buah file gambar bernama PIA03149.tif dan PIA00342.tif sebagai file contoh untuk
enkripsi dan dekripsi. File PIA00342.tif digunakan sebagai kunci untuk enkripsi dan dekripsi
disebabkan ukurannya lebih besar dari file PIA03149.tif. (Asumsi pada proses
enkripsi/dekripsi adalah file kunci berukuran lebih besar dari file yang akan di
enkrip/dekrip).
Kehadiran
Dosen akan berusaha tepat waktu, oleh karena itu Anda juga diminta untuk tepat waktu.
Anda bertanggung jawab sendiri terhadap kehadirannya di dalam kelas. Perhatikan bahwa UI
menetapkan aturan minimal 75% kehadiran untuk dapat diijinkan mengikuti ujian akhir
semester (UAS).
Keterlambatan
Keterlambatan hadir saat kuliah mengikuti aturan yang berlaku. Dosen berhak melarang
mahasiswa yang terlambat untuk masuk ke dalam kelas. Seluruh kuis, latihan dan tugas wajib
dikerjakan dan dikumpulkan pada waktunya. Tugas yang terlambat dikumpulkan tidak akan
diterima. Tidak ada ujian susulan kecuali dengan alasan yang sangat kuat. Evaluasi latihan,
kuis atau tugas diharapkan dapat diberikan kepada mahasiswa dalam waktu 2 pekan.
Kejujuran Akademis
Kecurangan tidak akan ditoleransi. Kecurangan baik dalam pengerjaan ujian maupun tugas
akan dihukum yakni mendapatkan nilai E untuk matakuliah ini.
Anda boleh berdiskusi mengenai PR/Tugas dalam kelompok, tetapi wajib menuliskan solusi
sendiri dan menuliskan nama semua kolaborator (teman yang diajak berdiskusi untuk
menyelesaikan soal), serta dilarang menyontek, menyalin pekerjaan orang lain,
memperlihatkan pekerjaan kepada orang lain, baik untuk disalin maupun tidak. Anda boleh
menggunakan referensi dari luar kelas, misalnya Internet, tetapi wajib menuliskan solusi
dalam katakata sendiri serta mencantumkan sumbernya.
Biasanya, tidak ada seorangpun yang memulai semester dengan niat curang. Mahasiswa
berbuat curang karena dia tertinggal dalam pelajaran atau terlambat dalam memulai
pengerjaan PR/Tugas, kemudian menjadi panik. Sebagian berbuat demikian karena segan
dan malu (termasuk malu mengakui bahwa ia tidak tahu) untuk bertanya dan berdiskusi
dengan dosen atau asisten matakuliah. Ketidakpahaman lebih baik diselesaikan di awal
daripada Anda harus menanggung akibatnya. Bahkan, apabila Anda memang bersalah karena
tertinggal dalam pelajaran, tetap jangan malu untuk datang bertanya dan meminta
pertolongan. Ingat, sangat mungkin teman Anda juga mengalami hal yang sama dengan
Anda. Jadi jangan ragu untuk bertanya. Dosen dan asisten dibayar untuk membantu Anda
memahami materi pengajaran.