Pengertian Program dan Bahasa Pemrograman Program adalah kumpulan instruksi yang digunakan untuk mengatur komputer agar melakukan suatu tindakan tertentu. Tanpa program, komputer tidak dapat melakukan apa-apa. Dengan kata lain, program merupakan salah satu bagian penting pada komputer agar melakukan aksi yang sesuai dengan yang dikehendaki oleh pembuatnya. Orang yang membuat program biasa disebut pemrogram (programmer) . Adapun aktivitas yang berhubungan dengan pembuatan program dinamakan pemrograman (programming). 3
Menyelesaikan Masalah dengan Program Orang yang membuat program biasanya bertujuan untuk menyelesaikan masalah. Terdapat tiga langkah penting yang harus dilakukan : Analisis Pseudo-code flowchart 4
Analisis Didalam analisis masalah diperlukan tindakan untuk mengidentifikasi informasi yang menjadi keluaran pemecahan masalah dan data-data yang menjadi masukan. Algoritma adalah langkah-langkah yang dilakukan untuk menyelesaikan suatu masalah. 5
2. Pseudo-code Sebuah kode yang digunakan untuk menulis sebuah algoritma dengan cara yang bebas yang tidak terikat dengan bahasa pemrograman tertentu. Pseudo-code berisikan langkah-langkah untuk menyelesaikan suatu permasalahan hampir sama dengan algoritma, hanya saja bentuknya sedikit berbeda dari algoritma. Pseudo-code menggunakan bahasa yang hampir menyerupai bahasa pemrograman. Selain itu biasanya pseudo code menggunakan bahasa yang mudah dipahami secara universal dan juga lebih ringkas dari pada algoritma. 6
Notasi - notasi Pseudo Bentuk ( Pernyataan) X <---- Y keterangan : X : diberi nilai Y : Memberi Nilai Ex : Hasil <---- Bilangan Mod 2 7
Notasi - notasi Pseudo Bentuk Percabangan if kondisi then pernyataan ======================== if kondisi 1 then pernyataan 1 else pernyataan 2 ======================== if kondisi 1 then pernyataan 1 else if kodisi 2 then pernyataan 2 else if kondisi n then pernyataan n else pernyataan else 8
Notasi - notasi Pseudo Bentuk Perulangan for (persyaratan) do pernyataan for ========================== while (persyaratan) pernyataan while ========================== Repeat pernyataan repeat Until (persyratan) 9
Flow Chart Suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program. 10
Langkah 1 (identifikasi) Masukkan jari-jari lingkaran Hitung luas lingkaran dengan menggunakan rumus 3.14 x jari-jari x jari-jari Tampilkan nilai luas lingkaran 12
Langkah 2 ( pseudo-code ) jari-jari ← r luas ← 3.14 x jari-jari x jari-jari Tampil (luas ) 13
Langkah 3 ( flowchart ) Simbol-simbol dalam flowchart 14
Flow chart dari menghitung luas lingkaran 15
Macam-macam Struktur Dasar Algoritma Terdapat tiga buah struktur dasar, antara lain : Struktur Sekuensial (Runtunan) Struktur Seleksi Struktur Pengulangan 16
Struktur Sekuensial (Runtunan) Langkah-langkah yang dilakukan dalam algoritma diproses secara berurutan. Contoh : Buatlah algoritma untuk menampilkan isi dua buah variabel. Variabel a = 12, b = 55 menjadi a = 55, b = 12 Solusi : Untuk menukarkan isi dua buah variabel diperlukan sebuah variabel yang digunakan untuk membantu penukaran data. Pseudo Code Masukan (a , b) a=b b=a tampilkan (a , b) 17
Struktur Seleksi Struktur seleksi menyatakan pemilihan langkah yang didasarkan oleh suatu kondisi (pengambilan keputusan) yang dinyatakan dengan belah ketupat . 18
2. Struktur Seleksi (pseudo code) Pada struktur di atas, langkah 1 hanya akan dijalankan kalau kondisi bernilai BENAR, sedangkan langkah 2 hanya dijalankan kalau kondisi bernilai SALAH . Contoh 1 : Buatlah algoritma untuk menentukan bilangan terbesar dari dua buah bilangan x dan y ?? Solusi : Penyelesaian dalam bentuk Pseudocode masukan (x , y) terbesar ← x // asumsi bahwa x adalah yang terbesar JIKA terbesar < y MAKA terbesar ← y AKHIR JIKA tampilkan (terbesar) 19
2. Struktur Seleksi (flow chart) 20
Struktur Pengulangan Pengulangan menyatakan suatu tindakan atau langkah yang dijalankan beberapa kali. Sebagai contoh, jika Anda ingin menampilkan tulisan ”Hello” sebanyak 10 kali, Anda dapat menuliskannya menggunakan Struktur Sekuensial akan tetapi jika ingin menampilkan dalam jumlah yang besar maka Struktur Sekuensial dianggap tidak praktis lagi. Oleh karena itu dapat menggunakan Struktur Pengulangan. 21
3. Struktur Pengulangan (Pseudo code) Contoh 1 : Buatlah algoritma untuk menampilkan 6 buah tulisan ”Hello” dengan menggunakan pengulangan. Solusi : Penyelesaian dalam bentuk Pseudocode pencacah ← 1 ULANG SELAMA pencacah < 7 tampilkan (”Hello”) pencacah ← pencacah + 1 AKHIR-ULANG 22
3. Struktur Pengulangan (flow chart) 23
Tingkat Bahasa Pemrograman Bahasa Pemrograman Tingkat Rendah (Assembler) Bahasa Pemrograman Tingkat Sedang (C, Pascal, Fortran) Bahasa Pemrograman Tingkat Tinggi (Java, C++, C#) 24
Paradigma Pemrograman Sudut pandang dan style pemrograman berhubungan dengan bagaimana sebuah masalah diformulasikan dalam bahasa pemrograman Functional Programming : Urutan fungsi secara sekuensial (Scheme, Lisp) Procedural Programming : Pemecahan masalah berdasarkan prosedural kerja yg terkumpul dalam unit pemrograman bernama fungsi (C, Pascal) Object-Oriented Programming : Koleksi object yang saling berinteraksi . Class adalah unit pemrograman (Java, C#, C ++) 25
26
Sejarah Java Pada Tahun 1996, Sun Microsystem secara resmi merilis versi awal Java yang kemudian terus berkembang hingga muncul JDK 1.1 (Java Development Kit versi 1.1). Perkembangan terus dilakukan hingga muncul versi baru yang disebut Java 2. Perubahan utama antara versi sebelumnya adalah adanya Swing yang merupakan teknologi Graphical User Interface (GUI) yang mampu menghasilkan aplikasi desktop yang benar-benar baik . Untuk mengembangkan aplikasi berbasis java, kita memerlukan Java Development Kit(JDK), saat ini java telah mencapai versi 2 yang kenal dengan java 2 platform. Java 2 platform, dibagi menjadi tiga kategori yaitu : Java Standart Edition ( Java SE ) pengembangan aplikasi desktop dan applet ( aplikasi java di browser). Java Enterprice Edition(Java EE ) pengembangan aplikasi server-side dengan mempergunakan EJBs (Enterprise Java Beans), aplikasi web dengan servlet dan JSP dan teknologi CORBA (Common Object Request Broker Architecture) dan XML (Extensible Markup Language). Java Micro Edition(Java ME ) pengembangan aplikasi perangkat bergerak (mobile). 27
Editor Java Ada banyak editor yang bisa kita gunakan untuk menuliskan soce code bahasa pemrograman java, bahkan semua editor dimungkinkan selama editor tersebut mampu menyimpan file dengan ekstensi .java yang merupakan ekstensi dari file untuk menyimpan source code bahasa pemrograman java. Berikut contoh beberapa editor yang bisa dipakai untuk menuliskan aplikasi java: 1. Notepad 2. Gel 3. JCreator 4. Eclipse 5 . Netbeans 28
Instalasi J ava SE dan Netbeans IDE Instal asi J ava SE dengan mengklik: jdk-8u141-nb-8_2-windows-i586.exe (download dari: http://java.sun.com/javase/downloads) Instalasi Netbeans dengan mengklik: netbeans-8.2-windows .exe (download dari: http://netbeans.org) Ikuti seluruh proses instalasi sampai selesai 29
Buat file dengan ekstensi . java 30 public class helloworld { public static void main ( String[] args) { System.out . println (“hallo dunia”) ; } } metode ini bisa dipanggil dan digunakan didalam Class atau diluar Class . memiliki sifat yang sama disemua instant Class. bahwa metode ini tidak mengirimkan nilai balik. metode yang digunakan untuk mengawali segala bentuk eksekusi pada program java. tipe data objek yang menangani serangkaian karakter-karakter yang berjenis array stream yang digunakan untuk menangani keluaran standar java merupakan metode yang digunakan untuk menampilkan teks dilayar . digunakan untuk mengakhiri pernyataan variabel objek.
Contoh lain String nama = “ “; nama + = “ halo namaku lisa ”; system.out.println( nama ); system.out.println(“ jumlah karakter ” + nama .length); 31 Nama bebas Yang di munculkan Yang di munculkan Menghitung jumlah karakter
Mengenal Fungsi Pada Java String Int Double Char 32
Fungsi String String adalah tipe data untuk teks yang merupakan gabungan huruf, angka, whitespace (spasi), dan berbagai karakter. Fungsi ini digunakan untuk membuat identifier String/teks. String juga sering disebut sebagai “array of char” (Identifier : tanda pengenal) format: String identifier_name ; 33
JoptionPane memunculkan Dialog box Ketikan script di luar class import javax.swing.JoptionPane; 34
Keterangan : Nama = JoptionPane.showInputDialog(“Hello, Siapa namamu?”); Berfungsi untuk membuat input dialog box JOptionPane yang nantinya memberikan pesan berupa sebuah textfield dan button OK string msg = “ selamat dating “ + nama + “ !” ; Hasil dari input dialog box JoptionPane adalah String, kemudian akan disimpan variable nama. JoptionPane.ShowMessageDialog(Null, msg); Berfungsi untuk menampilkan sebuah dialog yang berisi pesan yang telah diinputkan pada input dialog box JOptionPane 35
Fungsi int int (Integer) adalah tipe data untuk angka numerik yang tidak menggunakan koma, untuk tipe data 32 bit. berikut contohnya: (dikombinasikan dengan String yang tadi) format : int identifier_name; 36
Fungsi doubel Double adalah tipe data untuk angka, sama seperti int, tapi Double dapat menggunakan koma dan tipe data merupakan 64 bit. format : Double identifier_name; 37
Fungsi char char adalah tipe data untuk karakter tunggal, bisa berupa alpabet ataupun angka format: char identifier_name; 38
Latihan Buat class HaloIndonesia di dalam package halo Isi HaloIndonesia.java dengan main method dan tiga tampilan di bawah: Halo Indonesia Selamat Pagi Indonesia Jaya Indonesia Buatlah program double karakter char? Membuat program penggabungan kata dengan dengan mode inputan jOptionPane? 39
OPERATOR DAN TIPE DATA DALAM BAHASA JAVA Tipe data Sederhana Operator dalam bahasa java: Operator aritmatika Operator pembandingan Operator penambahan dan pengurangan Operator pemberian nilai Latihan 40
TIPE DATA SEDERHANA Tipe data diperlukan agar compiler mengetahui operasi apa yang valid dan seberapa banyak memori yang diperlukan oleh sebuah nilai yang akan disimpan atau dioperasikan. Sebagai contoh pada sebuah program, data yang dimasukan ditampung dalam sebuah variable, dimana variable tersebut pasti memiliki tipe data dan harus dideklarasikan terlebih dahulu sebelum dapat digunakan. Untuk bahasa java tipe data dapat dibagi ke dalam dua kategori, yaitu: Tipe Data Sederhana Tipe Data Komposit 41
TIPE DATA SEDERHANA Tipe data sederhana merupakan tipe data dasar yang dikenal java, di mana tipe data dasar ini tidak dapat diturunkan dari tipe lain. Tipe data sederhana terdiri dari delapan jenis yaitu : Empat tipe data angka pertama untuk bilangan bulat: byte, short, int, long; Dua tipe data angka selanjutnya adalah floating point: float dan double (tipe ini digunakan untuk bilangan real yang dapat kita pakai untuk mendeklarasikan bilangan pecahan). Satu tipe Boolean yang digunakan untuk menentukan nilai logika: true dan false; Tipe yang terakhir adalah char (tipe ini digunakan untuk menyimpan karakter Unicode tunggal, yaitu data berupa karakter tunggal [ huruf] ) 42
Selanjutnya adalah tipe data untuk floating point. Tipe data float dipakai pada variable yang berdata bilangan pecahan dengan panjang 32bit, sedangkan tipe data double digunakan untuk mendeklarasikan bilangan-bilangan pecahan dengan panjang 64 bit. Dengan kata lain tipe data float dan double dirancang untuk variable bernilai pecahan dengan panjang bit yang lebih besar. 43 Tipe data Panjang Nilai minimum Nilai maksimum Byte 8 bit 128 127 Short 16 bit 32768 32767 Int 32 bit 2147483648 2147483647 long 64 bit - 9.22337E+18 9.22337E+18 Tipe data Panjang Nilai minimum Nilai maksimum Float 4 byte -3.40E+38 3.40E+38 double 8 byte -1.7e308 1.7e308
Source Code TipeData Bilangan Bulat dan Float 44
Boolean & Char Tipe data Boolean hanya dapat menyimpan nilai true dan false, yang secara internal dalam java direpresentasikan sebagai bilangan biner 1 bit. Tipe data ini biasanya digunakan untuk perintah kondisional. Tipe data sederhana yang terakhir adalah character (char). Tipe data char digunakan untuk menyimpan karakter Unicode tunggal. Berbeda dengan string, tipe data char hanya digunakan untuk satu karakter seperti A atau D. 45 Tipe data panjang Nilai Char 16 bit Unicode ‘a’,’b’…etc boolean 1 bit True dan false
Source Code Tipe Data Boolean dan Char 46
OPERATOR DALAM BAHASA JAVA Operator merupakan symbol yang digunakan untuk operasi-operasi aritmatika dan logika. Ada beberapa macam operator yang harus diketahui dalam pengaplikasian algoritma pada sebuah program, khususnya pada bahasa java, yaitu: Operator aritmatika Operator pembandingan Operator penambahan (increment) dan pengurangan (decrement) Operator pemberian nilai (assignment). 47
OPERATOR ARITMATIKA operator aritmatika merupakan symbol-symbol yang biasa digunakan dalam operasi matematika seperti penambahan dan penguran. Simbol-symbol ini sudah sangat umum dalam kehidupan sehari-hari sehingga pengaplikasiannya pada bahasa pemrograman tidak terlalu rumit. 48 Operator Operasi Contoh + Penambahan A+B - Pengurangan A-B * Perkalian A*B / Pembagian A/B % Sisa hasil bagi (modulus) A%B
SOURCE-CODE ARITMATIKA 49
OPERATOR PEMBANDINGAN Operator pembandingan dalam algoritma biasanya digunakan ketika membuat perintah kondisional dalam sebuah program. Misalnya, ketika membuat sebuah perintah kondisional A>B, operator “>” berfungsi sebagai pembanding antara nilai A dan B, di mana jika nilai A lebih besar, perintah kondisional tersebut bernilai true. Namun jika salah, nilainya false. 50 Operator Operasi Contoh Arti = = Sama X = = Y X sama dengan Y ! = Tidak sama X ! = Y X tidak sama dengan Y < Lebih kecil X < Y X lebih kecil dari Y > Lebih besar X > Y X lebih besar dari Y < = Lebih kecil atau sama dengan X < = Y X lebih kecil atau sama dengan Y > = Lebih besar atau sama dengan X > = Y X lebih besar atau sama dengan Y
SOURCE-CODE PEMBANDING 51
OPERATOR PENAMBAHAN DAN PENGURANGAN Operator penambahan (increment) dan pengurangan (decrement) sebenarnya hamper sama dengan operator aritmatika. Hanya saja, pengurangannya dalam pemrograman sedikit berbeda. Operator penambahan dan pengurangan biasanya dipakai pada perintah perulangan seperti for, while, dan do-while. 52 Operator Operasi Contoh Arti ++ Penambahan dengan 1 X++ atau ++X X=X+1 -- Pengurangan dengan 1 X-- atau --X X=X-1
SOURCE-CODE PENAMBAHAN DAN PENGURANGAN 53
Keterangan Mungkin hasil program diatas sedikit membingungkan karena nilainya berbeda dengan teori yang sudah dijabarkan sebelumnya. Kuncinya terletak pada perbedaan dalam teori dalam operator j++ dan ++j . ketika perintah j++ dibuat, nilai j ditampilkan terlebih dahulu sebelum ditambahkan, sedangkan pada perintah ++j dan nilai j ditambahkan terlebih dahulu, kemudian ditampilkan dalam hasil program. Pada hasil running program, nilai p=6 didapat dari perintah ++j sehingga j=5+1 ditambahkan terlebih dahulu, kemudian ditampilkan. Berbeda dengan nilai q=6 , nilai q didapat dari perintah j++ sehingga nilai j=6+1 nilai j=6 didapat dari perintah sebelumnya, ditampilkan terlebih dahulu kemudian ditambahkan. Dengan demikian nilai q yang ditampilkan berasal dari hasil penambahan sebelumnya. 54
OPERATOR ASSIGNMENT Operator pemberian nilai (assignment) merupakan operasi yang bertujuan untuk mempersingkat pengkodean pada operasi aritmatika. Penggunaannya hampir sama dengan operator pada penambahan dan pengurangan, namun proses pemberian nilainya menggunakan dua variable yang berbeda. 55 Operator Operasi Contoh Arti = Pemberian nilai X=20 X=20 += Penambahan pada peubah awal X+=Y X=X+Y -= Pengurangan pada peubah awal X-=Y X=X-Y *= Perkalian pada peubah awal X*=Y X=X*Y /= Pembagian pada peubah awal X/=Y X=X/Y %= Sisa hasil bagi pada peubah awal X%=Y X=X%Y
SOURCE-CODE ASSIGNMENT 56
Latihan: Meningkatkan Pemahaman Buatlah sebuah program untuk menghitung luas bangun ruang balok dan kubus? Dengan ketentuan sisi=5, panjang=4, lebar=2, tinggi=9. Tentukan luas dan keliling lingkaran yang berjari-jari 12 cm? 57
CONSOLE I/O PADA PEMROGRAMAN JAVA Scanner Class BufferedReader Class Data InputStream Class 58
Scanner Input 59 Statement Di Luar Class
B ufferedReader Class 60 Statement Di Luar Class
DataInputStream 61 Statement Di Luar Class
Latihan Buat program yang dengan memakai metode input pada java dan outputnya seperti dibawah ini? Nama Anda : NAILA Alamat anda : pasuruan NIM Anda : 2017.016.094 Masukkan Nilai absen : 78 Masukan Nilai UTS : 85.0 Masukan Nilai UAS : 90.0 Masukan Nilai Tugas : 95.0 Nilai Akhirnya Adalah : Grade : Ketentuan bobot nilai: Absen : 30% Tugas : 20% UTS : 25% UAS : 25% 62
PERNYATAAN KONDISIONAL, PERULANG DAN JUMP Pernyataan kondisional Perintah if Perintah if-else Perintah nested if Perintah switch-case Looping/Perulangan Teknik perulangan dengan for Teknik perulangan dengan while Teknik perulangan dengan do-while Teknik perulangan dengan rekursi Jump Pernyataan break Pernyataan continue Pernyataan return Latihan
PERNYATAAN KONDISIONAL, PERULANGAN, DAN JUMP Seperti bahasa pemrograman lainnya, bahasa java memiliki cara untuk mengontrol alur eksekusi program yang bergantung pada kondisi yang telah ditentukan. Secara garis besar, kontrol alur eksekusi pada java dapat dikelompokkan ke dalam tiga bagian, yaitu kondisional, perulangan ( looping ), dan lompatan ( jump ). 64
1. Pernyataan Kondisional Pernyataan kondisional atau pernyataan kontrol merupakan pernyataan yang terdiri atas kondisi-kondisi, di mana jika kondisi tersebut terpenuhi, program akan melakukan instruksi tertentu. Dengan kata lain, pernyataan kondisional merupakan penunjuk arah untuk urutan suatu program. Ada dua kunci ( keyword ) yang dapat digunakan untuk melakukan seleksi dalam Java , yaitu if-else dan switch , di mana kedua kunci tersebut menentukan alur eksekusi program yang akan dijalankan pada suatu percabangan. 65
Perintah If Konstruksi if hanya memiliki satu kondisi. Artinya, satu atau beberapa instruksi akan dijalankan apabila kondisinya dipenuhi. Contoh : Perhatikan potongan kode di atas, jika nilai IPK kurang dari 2.0, tidak ada pernyataan yang akan dieksekusi. Sebaliknya, jika nilai IPK lebih besar atau sama dengan 2.0, pernyataan “Anda lulus” akan dieksekusi. 66
Perintah If-Else Konstruksi if -else sedikit berbeda dengan konstruksi if . Dalam konstruksi if-else , jika sebuah kondisi tidak terpenuhi, program akan mencari kondisi lain yang ada atau menjalankan instruksi yang berada di luar bagian dari kondisi yang tidak terpenuhi. 67
Program di atas merupakan contoh pernyataan kondisional ( if-else ). Apabila parameter yang dimasukkan bernilai true (IPK >3.75), pernyataan di dalam if -lah yang akan dieksekusi. Sebaliknya, apabila parameter yang dimasukkan bernilai false, pernyataan di dalam else -lah yang akan dieksekusi. 68
Perintah Nested If Pernyataan nested-if atau if bersarang merupakan pernyataan kondisional yang memiliki pilihan (opsi) lebih dari satu, di mana jika sebuah parameter yang dimasukkan bernilai false , opsi selanjutnyalah yang akan dicek. Pada akhirnya, jika semua opsi tidak memenuhi syarat, opsi paling akhir ( else ) akan dieksekusi. 69
Dengan menggunakan konsep pernyataan kondisional nested if-else , kita dapat membuat sejumlah pilihan pada setiap proses untuk program yang dibuat. 70
Switch-Case Hampir sama dengan if-else, switch-case juga dipakai untuk mengeksekusi pernyataan kondisional. Bedanya, switch-case dingunakan untuk mengeksekusi sebuah kondisi dalam bentuk perbandingan. Biasanya perintah ini digunakan dalam game seperti mobil balap. Jika keypad A ditekan, mobil akan bergerak ke kiri. Sementara jika keypad B ditekan, mobil akan bergerak ke kanan. 71
72
2. Looping (for, while , do-while) 73 for while Do-while Pernyataan for loop memiliki kondisi hampir mirip seperti struktur pengulangan sebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode yang sama sebanyak jumlah yang telah ditentukan. Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok. Do-while loop mirip dengan while-loop. Pernyataan di dalam do-while loop akan dieksekusi beberapa kali selama kondisi bernilai benar(true). Perbedaan antara while dan do-while loop adalah dimana pernyataan di dalam do-while loop akan dieksekusi sedikitnya satu kali.
Flow Chart Looping For While Do-while 74
75 For While Do-While for (InitializationExpression; LoopCondition; StepExpression){ statement; while( boolean_expression ) { statement; } do{ statement; }while( boolean_expression ); public static void main(String[] args){ // mencetak angka 0 sampai 7 for(int i = 0; i <= 7; i++){ System.out.println("Angka : "+i); } } } public static void main(String[] args){ int i = 0; //Mencetak angka 0 s/d 7 while (i <= 7){ System.out.println("Angka : " + i); i++; } } } public static void main(String[] args){ int i = 0; // Mencetak angka 0 s/d 7 do{ System.out.println("Angka "+i); i++; }while(i <= 7); } } Keterangan : int i = 0 ---> adalah penetapan nilai awal . i <=7 ---> adalah batas perulangan. i++ ---> adalah jenis perulangannya. Jenis perulangan ini bisa kita ganti sesuai keinginan seperti ++i, i-- dan --i. Keterangan : int i = 0; adalah penetapan nilai awal pada perulangan. while( i <=7) adalah syarat atau batas dari perulangan. sedangkan i++ adalah pembatasan nilai pada i. Keterangan : int i = 0; adalah penetapan nilai awal pada perulangan. do adalah perintah untuk melakukan perulangan. sedangkan i++ adalah pembatasan nilai pada i. while( i <=7) adalah syarat atau batas dari perulangan.
Teknik Perulangan dengan Rekursi Teknik perulangan denga rekursi ini cukup unik. Teknik ini memanggil dirinya sendiri untuk melakukan perulangan. Perulangan akan berhenti jika variabel yang diulang pada saat proses rekursif sudah tidak terpenuhi. Teknik rekursi sangat bermanfaat terutama pada kasus-kasus seperti pengurutan data, tree, dan graph. Pembahasan teknik rekursi dimulai dari aturan dan bagaimana proses rekursif berjalan. Seperti halnya perulangan dengan teknik yang lain, pada teknik rekursi terdapat pengontrol yang bertugas untuk menentukan kapan sebuah proses rekursif berakhir. Perhatikan kode Program rekursif berikut. 76
Teknik Perulangan dengan Rekursi Terdapat sebuah pernyataan kondisional if(n==0), yang berfungsi untuk menghentikan proses rekursif. Jik nilai n==0, rekursi akan dihentikan . 77
Teknik Perulangan dengan Rekursi Selanjutnya , perhatikan seluruh aliran kode proses rekursif. Jika method factorial dengan nilai 4 dipanggil, proses rekursif akan dilakukan. Karena 4 tidak sama dengan 0, kondisional else diambil dan 4*factorial(4-1) tereksekusi. Dengan demikian, nilai variabelnya menjadi 3. Setelah itu method factorial dengan nilai 3 dipanggil. Karena 3 tidak sama dengan 0, kondisional else akan dieksekusi. Begitu seterusnya sampai nilai n==0 . Pada nilai n==0 proses rekursif akan berhenti dan mengembalikan nilai n=1 . Kemudian, nilai n=1 akan memanggil kembali nilai dari tiap method sebelumnya untuk dikalikan sehingga nilai total yang sudah dikalikan menjadi 1*1*2*3*4=24. Mungkin timbul pertanyaan di benak kita, mengapa nilai 1 dikembalikan pada saat n==0 (return 1)? Jika nilai 0 dikembalikan pada saat n==0 (return 0), tentu hasil dari program tersebut 0*1*2*3*4=0. Berikut gambar yang menjelaskan alur rekursi. 78
Dari gambar diatas dapat dilihat bagaimana proses rekursif berjalan. Pengontrol dari perulangan rekursif di atas adalah perintah opsional if(n==0). Jika perintah opsional tersebut bernilai true, rekursi akan berhenti. Fak(2)=2*fak(2-1) Fak(3)=3*fak(3-1) Fak(4)=4*fak(4-1) Fak(1)=1*fak(1-1) Return 1*1=1 Return 2*1=2 Return 3*2=6 Return 4*6=24 Teknik Perulangan dengan Rekursi
3. Jump Jump atau lompatan merupakan suatu bentuk pengendalian (controlled jump) yang digunakan untuk mentransfer kendali alur ke bagian program yang lain. Bahasa Java mendukung tiga jenis bentuk pengendalian, yaitu break; continue; return; 80
Pernyataan Break Pernyataan break digunakan untuk keluar dari switch atau loop. Dengan memakai break, kita bisa mengakhiri suatu looping tanpa harus menunggu proses tersebut selesai. Bentuk lain penggunaan break adalah perintah switch case, (kondisional switch-case). Berikut contoh program yang menggunakan break untuk menghentikan loop yang berjalan. 81
Pernyataan Break Perhatikan program diatas. Pernyataan break berada di dalam perintah kondisional (if(i==3)). Jika dilakukan tiga kali (i==3), perulangannya akan berhenti. 82
Pernyataan Continue Jika pernyataan break berfungsi untuk menghentikan / keluar dari looping, pernyataan continue digunakan untuk segera melanjutkan proses ke perulangan berikutnya tanpa mengeksekusi proses yang sedang berlangsung. Berikut contoh program yang memperlihatkan kegunaan dari pernyataan continue. 83
Pernyataan Return Kegunaan pernyataan return sedikit berbeda dari kedua jenis controlled jump sebelumnya. Pernyataan return dipakai untuk segera keluar dari sebuah fungsi / method. Pernyataan return biasanya digunakan pasa sebuah method yang memiliki nilai pengembalian. 84
Pernyataan Return Perhatikan potongan kode di atas. Method kubus dibuat dengan memberikan pengembalian nilai bertipe integer. Pernyataan return berfungsi untuk mengembalikan volume kubus dengan panjang sisi = 5 . Dari hasil running program dapat diliat bahwa volume kubus tersebut adalah 125. 85
Latihan Buatlah sebuah program yang berfungsi untuk menghitung nilai pangkat. Anda bisa menggunakan metode perulangan for, while, atau rekursi. (Petunjuk: method yang dibuat harus memiliki 2 parameter input.) 86
UTS Buatlah program penjualan dengan menggunakan switch-case, if-else dan looping. (dalam proses perhitungan selesai, jika pernyataan “iya” =kembali menghitung ke menu pilihan, jika “tidak” =selesai) Menjual rokok dengan harga per unit Rp.15000, apabila membeli dengan jumlah >=10 unit, maka mendapatkan discount 15% dari harga per unit rokok, jika <=10 maka tidak mendapatkan discount. Menjual kopi dengan harga per cangkir Rp.5000, apabila membeli dengan jumlah >=2 unit maka mendapatkan free wifi, jika membeli dengan jumlah >=5 maka akan mendapatkan free wifi dan discount 10% dari harga percangkir. Catatan: Gunakan console i/o dari inputan harga dan jumlah unit, kecuali discount. Selamat Mengerjakan 87
STRING & ARRAY 88 String Length () Chart at (i) Index of Equals Array Array dimensi satu Array dimensi dua Latihan
1. Definisi String String merupakan struktur data abstrak yang paling sering dijumpai. String juga merupakan suatu tipe data bentukan seperti halnya array, bahkan string sering direpresentasikan sebagai array karakter atau array of char, yaitu array dari tipe data char (karakter), sehingga membentuk suatu tipe data baru yang bisa menyimpan susunan huruf atau karakter lainnya. Di dalam Java, string bukanlah sebuah tipe data. String merupakan objek dari sebuah class. Dalam konteks pemrograman, string sangat sering dipakai. Pencarian, pencocokan, serta pengenalan pola dilakukan dengan memandang ruang persoalannya sebagai string. 89
Length() Length() merupakan sebuah method dalam class String yang digunakan untuk mengembalikan nilai jumlah karakter dari string. Dengan kata lain, length berfungsi untuk menentukan jumlah karakter dari variabel String. Berikut contoh cara pendeklarasian length untuk menentukan jumlah karakter pada sebuah string. String kata=“banana”; Int ukuran=kata.length(); Method length() tidak membutuhkan argumen tambahan apa pun, di mana pada kasus di atas nilai variabel ukuran adalah 6 karena jumlah karakter dari String kata = “banana” adalah 6. Hal yang perlu diperhatikan ketika melihat jumlah karakter dalam string adalah adanya space. Karena dalam method length() space dibaca sebagai 1 karakter, apabila kata String kata = “banana” ditulis, nilai variabel ukuran menjadi 7. 90
CharAt(i) Method charAt(i) digunakan untuk mengambil huruf-huruf yang berada dalam sebuah string. Untuk menyimpan hasil pengambilan huruf tersebut, kita memerlukan variabel baru yang bertipe char. Contoh : String kata=“nilaimu”; Char huruf=kata.charAt(0); Kode program kata.charAt(0) menunjukkan bahwa kita menginginkan sebuah huruf dalam String nilaimu pada indeks 0, yaitu huruf n. perlu dipahami disini bahwa konteks indeks dalam charAt hampir mirip dengan indeks dalam array, di mana ia akan membaca karakter dari objek String dari indeks 0 untuk huruf pertama. Jadi, apabila menulis kode katacharAt(6), kita akan mendapatkan huruf u. Berikut contoh program yang menjelaskan method charAt(). 91
IndexOf Method indexOf bisa dikatakan sebagai method yang berlawanan dengan method charAt. Mengapa ? Karena method ini digunakan untuk mengambil indeks dari sebuah karakter yang diinginkan, sedangkan method charAt digunakan untuk mengambil karakter dari indeks tertentu. Contoh : String nama=“nadila”; Int letak=nama.indexOf(‘d’); Kode program di atas menjelaskan bahwa nama.indexOf(‘d’) akan mengembalikan nilai indeks dari posisi karakter huruf d, yaitu angka 2. Mengapa angka 2 ? Bukankah letaknya pada posisi ketiga ? Jawabannya hampir sama dengan method charAt(). Pada method indexOf dimulai dari 0. Hal penting yang harus diperhatikan pada method indexOf adalah apabila jumlah karakter yang digunakan lebih dari satu (seperti huruf ɑ pada Nɑdilɑ). Cara untuk mengatasinya, tambahan angka untuk menandai karakter mana yang diinginkan. Contoh : Int letak=nama.indexOf(‘a’,2); Penambahan angka 2 menandakan bahwa kita ingin mengambil nilai indeks yang kedua dari huruf ɑ dala sebuah string sehingga nilai yang diambil adalah indeks ke-5. 92
Equals Method equals merupakan method yang bersifat comparable, yaitu method yang digunakan untuk membandingkan sebuah string dengan string yang lain. Method ini akan memberikan nilai boolean true jika kedua string sama. Hal ini dibutuhkan karena terkadang dalam suatu kondisi kita perlu membandingkan dua buah string, biasanya untuk menentukan jumlah karakter atau isi string. Contoh : String nama=“nadila”; String nama=“nadilax”; Boolean hasil=nama.equals(kata); nama.equals(kata ) membandingkan String nama denga String kata baik dari segi panjang karakter, huruf besar, maupun huruf kecil. Dalam kasus di atas, nilai boolean hasil=false karena panjang kedua karakter berbeda. Berikut contoh program yang menjelaskan equals. 93
2. Array Array adalah kumpulan data untuk menyimpan item bertipe sama. Setiap data disimpan dalam alamat memori yang berbeda yang disebut elemen array. Nilai variabel array bisa bertipe int, double, ataupun yang lainnya. Hal yang membedakan antara nilai yang satu dengan nilai yang lain adalah indeks array. Kata indeks bisa dianalogikan sebagai nomor kamar di sebuah hotel. Tentunya tiap kamar ditempati oleh orang yang berbeda. Jadi, indeks Merupakan lokasi data yang akan disimpan. DI dalam tiap indeks, array dapat menyimpan nilai bertipe sama. Contoh berikut menunjukkan cara untuk mendeklarasikan variabel bertipe int dan double. 94 Int [] angka; Double [] nilai; Angka = new int [5]; Nilai = new int [3]
Array satu dimensi Array dimensi satu merupakan rangkaian variabel bertipe serupa. Setiap elemen dalam array dapat diakses melalui indeks, yang secara default dimulai dari 0. Seperti dijelaskan sebelumnya, untuk membuat array (termasuk array dimensi satu) perlu dideklarasikan sebuah variabel array dengan tipe yang diinginkan. Int [] hitung= new int [10]; Dengan mendeklarasikan array secara penuh seperti di atas, kita sudah bisa mengisi tiap indeks dengan data bertipe integer. 95
Array dua dimensi Array dimensi dua sering kali dianalogikan sebagai sebuah matriks. Jika array dimensi satu hanya terdiri atas satu baris dan banyak kolom, array dimensi dua terdiri atas banyak baris dan banyak kolom yang bertipe sama. Dengan menganalogikan array-nya sebagai sebuah matriks, angka yang ada akan diatur berdasarkan baris dan kolom / lajur. Angka dalam susunan tersebut dinamakan entri dalam matriks atau disebut juga elemen atau unsur. Int [] [] arr= new int [2][3]; Variabel int[][] arr yang dideklarasikan memiliki ukuran matriks 2 x 3. Artinya, array yang dibuat akan mengalokasikan memori sebanyak enam dengan bentuk matriks dua baris dan tiga kolom. Berikut contoh program penuh untuk array dimensi dua. 96
Latihan Untuk menentukan pemahaman tentang array dan string, berikut beberapa soal beserta jawaban sebagai bahan latihan. Sebuah kata disebut palindrom apabila kata tersebut terbaca sama, baik dari depan maupun belakang, misalnya idi dan kasurrusak . Buatlah sebuah program untuk memeriksa apakah suatu kata termasuk palindrom atau tidak. Program anda bisa menggunakan metode rekursi atau perulangan biasa. Buatlah sebuah program untuk mencari nilai terbesar dari sebuah array dimensi satu. Sebuah kata disebut abecedarian jika huruf-huruf dalam kata itu tersusun menurut abjad. Kata Adi, acknow, dan abik, misalnya, adalah abecedarian. Buatlah sebuah program yang berfungsi untuk mengecek apakah sebuah kata termasuk abecedarian atau tidak. 97
Latihan Psikomotorik Apa hasil source code berikut: Int bin; Bil = 1; While (bil <=10){ System.out.println(bil + “ ”); Bil=bil+2; Apa definisi Pseudo Code? Tulislah Notasi Pseudo Code Luas dan Keliling Persegi Panjang! Apa definisi flowchart? Tulislah Flowchart Luas dan Keliling Persegi Panjang! Tulislah Source Code dengan perintah Nested if atau if bersarang yang meminta sebuah inputan Nama dan Nilai dari keyboard, dan kemudian menampilkan informasi Nama, Nilai dan Grade . Dengan ketentuan : jika nilai >=90-100 maka huruf =A, nilai >=79-89 maka huruf B, nilai >=70-88 maka huruf =C, dan jika <=70 maka huruf=D Tulislah source code dengan masing-masing perintah for , while dan do-while dengan menampilkan informasi: Selamat mengerjakan UAS Selamat mengerjakan UAS 98