Bila pernyataan terakhir dalam fungsi telah selesai eksekusi yang terjadi pada fungsi adalah

Prosedur dan Subroutin Bahasa Pemrorgraman3.    public int sqr(int x) { 4.      x = x*x; 5.      return(x); 6.    } 7. } 8. class power { 9.    public static void main(String[ ] args) { 10.      kuadrat a = new kuadrat(); 11.      int t=10; 12.      System.out.println(a.sqr(t) + ", " + t); 13.    } 14. } Keluaran programnya adalah :100, 10  Untuk call by reference, tipe data Untuk bahasa Java tidakyang digunakan adalah tipe data menggunakan call by referencepointer karena yang disalin adalah karena tidak ada pointer dalamalamat dari memori dimana data bahasa Java. Contoh call bydisimpan (pembahasan mengenai reference (dengan menggunakanpointer ini ada di bab tersendiri). bahasa C++) adalah sebagai berikut:1. #include <iostream>  << endl; 2. using namespace std; 3. void tukar(int *x, int *y) {  2434.    int temp; 5.    temp = *x; 6.    *x = *y; 7.    *y = temp;  8. } 9. int main(void) { 10.    int i, j; 11.    i = 10; 12.    j = 20; 13.    cout << "Mula‐mula : " << endl; 14.    cout << "Nilai i : " << i << endl; 15.    cout << "Nilai j : " << j << endl; 16.    tukar(&i, &j); 17.    cout << endl << "Setelah ditukar : "  18.    cout << "Nilai i : " << i << endl; 19.    cout << "Nilai j : " << j << endl; 20.    return 0; 21. } 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Prosedur dan SubroutinTanda * pada variabel di function tukar() merupakan variabel pointer.Keluaran dari program di atas adalah :Mula‐mula : Nilai I  : 10 Nilai j  : 20  Setelah ditukar : Nilai I  : 20 Nilai j  : 10  Baris ke-14 dan 15, digunakan dan ke-19). Ternyata variabel i dan juntuk menampilkan nilai dari variabel telah tertukar. Hal ini terjadi karenai dan j yang nilainya masing-masing pada function tukar() menyalin alamat10 dan 20. Setelah dilakukan memori yang menyimpan variabel ipenukaran dengan memanggil dan j dan kemudian menukar isinyafunction tukar() pada baris ke-16, sehingga jika variabel i dan j jikaprogram kemudian memanggil dipanggil nilainya akan berubahkembali variabel i dan j (baris ke-18 karena isinya telah ditukar. Nilai awal  Alamat memori yang  i = 10, j=20  menyimpan nilai dari variabel x  dan y disalin ke parameter  Pemanggilan kembali  fungsi tukar()  variabel i dan j  x = 10, y=20 i = 20, j=10  Proses penukaran di  function tukar()  x = 20, y =10  Gambar 6.4. Call by reference6.10. Parameter dengan Nilai Default Nilai parameter dalam suatu diberikan secara default oleh functionfunction C++ dapat kita beri nilai jika parameter dari argumen yangdefault, yaitu suatu nilai yang memanggil function tersebut tidak 244 Direktorat Pembinaan SMK | 2008 Prosedur dan Subroutin Bahasa Pemrorgramankita berikan. Untuk lebih jelasnya perhatikan contoh berikut ini:1. #include <iostream> 2. using namespace std; 3. double luas_segi3(int alas, int tinggi=10){ 4.    return(0.5 * alas * tinggi); 5. } 6. void main() { 7.    int a=15,t=20; 8.    cout << "Luas segitiga = "; 9.    cout << luas_segi3(a,t) <<endl; 10.    cout << endl; 11.    cout << "Luas segitiga = "; 12.    cout << luas_segi3(a) <<endl; 13. } Keluaran programnya adalah : function luas_segi3() masing-masingLuas segitiga  = 150 Luas segitiga  = 75  adalah 15 dan 20. Dengan demikian  function luas_segi3() akan bernilai Program di atas mempunyai satubuah function yaitu function 150.luas_segi3() dimana function tersebutmempunyai dua buah parameter Akan tetapi untuk argumen barisformal yaitu alas dan tinggi.Parameter alas tidak mempunyai nilai ke-12 pada program utama terlihatdefault, tetapi untuk parameter tinggimempunyai nilai default, yaitu 10. bahwa argumen tersebut tidak Program utama dari program menyertakan variabel t, tetapi hanyatersebut telah menentukan bahwanilai dari variabel a yang nantinya menyertakan variabel a. Sehinggadigunakan sebagai variabel masukanuntuk parameter alas dari function ketika argumen tersebut dijalankanluas_segi3() adalah 15. Sedangkanvariabel t yang nantinya digunakan maka hanya parameter alas padasebagai variabel masukan untukparameter tinggi dari function function luas_segi3() saja yangluas_segi3() adalah 20. Sehinggaketika argumen program utama yang menerima masukan dari argumenmemanggil function luas_segi3()pada baris ke-9 dijalankan, maka nilai tersebut. Sedangkan untukdari parameter alas dan tinggi pada parameter tinggi tidak memperoleh    masukan. Akan tetapi karena  parameter tinggi mempunyai nilai2008 | Direktorat Pembinaan SMK default 10, maka nilai variabel tinggi  yang digunakan untuk menghitung luas segitiga adalah 10. Dengan demikian nilai dari function luas_segi3() adalah 75. 245Bahasa Pemrograman Prosedur dan Subroutin6.11. Overloading 2. Function tersebut mempunyai Overloading adalah function- jumlah parameter formal yangfunction yang ada dalam suatuprogram dimana function-function sama tetapi tipe data yangtersebut mempunyai nama yangsama tetapi parameter formal-nya berbeda.berbeda-beda antara yang satudengan yang lainnya. Ada tiga jenis 3. Function-function tersebutoverloading, yaitu:1. Function tersebut mempunyai mempunyai jumlah parameter jumlah parameter formal yang formal yang berbeda dan tipe berbeda tetapi tipe data-nya sama. data dari parameter formal tersebut juga berbeda. Berikut ini diberikan contoh untuk function-function yang mempunyai jumlah parameter formal yang berbeda tetapi tipe data-nya sama.Untuk bahasa C++1. #include <iostream> 2. using namespace std; 3. void luas_segi3(int alas){ 4.    int tinggi=10; 5.    cout << "Luas segitiga 1 = "  6.    cout << (0.5 * alas * tinggi) << endl; 7. } 8. void luas_segi3(int alas,int tinggi){ 9.    cout << "Luas segitiga 2 = "  10.    cout << (0.5 * alas * tinggi) << endl; 11. } 12. void luas_segi3(int alas, int tinggi,int bagi){ 13.    cout << "Luas segitiga 2 bagi "  14.    cout << bagi << " = "  15.    cout << (0.5 * alas * tinggi)/bagi  16.    cout << endl; 17. } 18. void main() { 19.    luas_segi3(10); 20.    luas_segi3(10,15); 21.    luas_segi3(10,15,3); 22. } Keluaran programnya adalah :Luas segitiga 1    = 150 Luas segitiga 2    = 75 Luas segitiga 2 bagi  3  = 25  246 Direktorat Pembinaan SMK | 2008 Prosedur dan Subroutin Bahasa Pemrorgraman Program di atas mempunyai tiga pertama (baris ke-19) hanyabuah function yang mempunyai nama mempunyai satu variabel masukansama yaitu luas_segi3(). Function untuk function, argumen kedua (barisyang pertama (baris ke-3) hanya ke-20) mempunyai dua buah variabelmempunyai satu buah parameter masukan, dan argumen terakhirformal yaitu alas dengan tipe data (baris ke-21) mempunyai tiga buahinteger. Sedangkan function yang variabel masukan.kedua (baris ke-8) mempunyai duabuah parameter formal alas dan C++ secara otomatis akantinggi dimana keduanya bertipe data mengarahkan argumen pertamainteger. Function yang terakhir (baris kepada function yang pertama,ke-12) mempunyai tiga buah argumen kedua kepada function yangparameter formal yaitu alas, tinggi, kedua, dan argumen ketiga kepadadan bagi yang semuanya bertipe data function yang ketiga, sesuai denganyang sama, yaitu integer. variabel masukan yang dipunyai oleh masing-masing argumen. Sedangkan Pada program utama, terdapat untuk bahasa Java:tiga buah argumen dimana argumen1. class hitung { 2.    public void luas_segi3(int alas){ 3.    int tinggi=10; 4.    double luas=0.5*alas*tinggi; 5.    System.out.println("Luas segitiga 1 = " + luas); 6.    } 7.    public void luas_segi3(int alas,int tinggi){ 8.    double luas=0.5*alas*tinggi; 9.    System.out.println("Luas segitiga 2 = " + luas); 10.    } 11.    public void luas_segi3(int alas,  int tinggi,int bagi){ 12.    double luas=(0.5*alas*tinggi)/bagi; 13.    System.out.println("Luas segitiga 2 dibagi " + bagi + " = " + luas); 14.    } 15. } 16. class overload1 { 17.    public static void main(String[ ] args) { 18.      hitung sekutu = new hitung(); 19.      sekutu.luas_segi3(10); 20.      sekutu.luas_segi3(10,15); 21.      sekutu.luas_segi3(10,15,3); 22.    } 23. } 2008 | Direktorat Pembinaan SMK 247 Bahasa Pemrograman Prosedur dan SubroutinKeluaran programnya adalah :Luas segitiga 1    = 150 Luas segitiga 2    = 75 Luas segitiga 2 bagi  3  = 25.0 Sedangkan contoh untuk function- tipe data-nya berbeda adalah sepertifunction yang mempunyai jumlah berikut. Untuk bahasa C++:parameter formal yang sama tetapi1. #include <iostream> 2. using namespace std; 3. void luas_segi3(int alas){ 4.    int tinggi=10; 5.    cout << "Luas segitiga 1 = " << (0.5 * alas * tinggi) << endl; 6. } 7. void luas_segi3(char* alas){ 8.    cout << alas << endl; 9. } 10. void main() { 11.    luas_segi3(10); 12.    luas_segi3("Belajar pemrograman"); 13. } Keluaran programnya adalah :Luas segitiga 1 = 150 Belajar pemrograman Program di atas mempunyai dua (baris ke-11) akan diarahkan kepada function pertama pula (baris ke-3)buah function yaitu luas_segi3() karena tipe data dari variabel masukan sama dengan parameterdimana setiap function mempunyai formal dari function yang pertama, yaitu integer.satu buah parameter formal tetapi Sedangkan untuk argumentipe datanya berbeda. Function yang kedua (baris ke-12) akan diarahkan kepada function kedua (baris ke-7)pertama parameter formalnya karena tipe data dari variabel masukan sama dengan parametermempunyai tipe data integer, dan formal dari function yang kedua, yaitu char. Untuk bahasa Java denganfunction kedua mempunyai permasalahan yang sama adalah sebagai berikut:parameter formal dengan tipe datapointer char.Sama seperti sebelumnya, C++juga secara otomatis akanmengarahkan argumen yangmemanggil function pada programtersebut kepada function yangberkesesuaian. Argumen pertama 248 Direktorat Pembinaan SMK | 2008 Prosedur dan Subroutin Bahasa Pemrorgraman1. class hitung { 2.    public void luas_segi3(int alas){ 3.    int tinggi=10; 4.    double luas=0.5*alas*tinggi; 5.    System.out.println("Luas segitiga 1 = " + luas); 6.    } 7.    public void luas_segi3(String alas){ 8.    System.out.println(alas); 9.    } 10. } 11. class overload2 { 12.    public static void main(String[ ] args) { 13.      hitung sekutu = new hitung(); 14.      sekutu.luas_segi3(10); 15.      sekutu.luas_segi3("Belajar pemrograman"); 16.    } 17. } Keluaran programnya adalah : yang berbeda dan tipe data yangLuas segitiga 1 = 50.0  berbeda pula adalah seperti berikut:Belajar pemrograman  Contoh untuk function-function yangmempunyai jumlah parameter formalUntuk bahasa C++ : 2491. #include <iostream> 2. using namespace std; 3. void luas_segi3(int alas){ 4.    int tinggi=10; 5.    cout << "Luas segitiga 1 = "  6.    cout << (0.5 * alas * tinggi) << endl; 7. } 8. void luas_segi3(char* alas){ 9.    cout << alas << endl; 10. } 11. void luas_segi3(char* alas,int data){ 12.    cout << alas << " : " << endl; 13.    cout << "Pangkat dua dari "  14.    cout << data << " adalah "  15.    cout << (data*data) << endl; 16. } 17. void main() { 18.    luas_segi3(10); 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Prosedur dan Subroutin19.    luas_segi3("Belajar pemrograman"); 20.    luas_segi3("Belajar pemrograman lagi",3); 21. } Keluaran programnya adalah : Sama dengan sebelumnya, C++Luas segitiga 1   = 150  secara otomatis juga akanBelajar pemrograman  mengarahkan argumen yangBelajar pemrograman lagi :  memanggil function-function tersebutPangkat dua dari 3 adalah 9  sesuai dengan jumlah variabel  masukan dan tipe datanya. Untuk bahasa Java dengan permasalahan Program di atas mempunyai tiga yang sama adalah sebagai berikut:buah function yang mempunyai namayang sama, yaitu luas_segi3().Masing-masing function mempunyaijumlah parameter formal yangberbeda dan tipe data dari parameterformal tersebut juga berbeda.1. class hitung { 2.    public void luas_segi3(int alas){ 3.      int tinggi=10; 4.      double luas=0.5*alas*tinggi; 5.      System.out.println("Luas segitiga 1 = " + luas); 6.    } 7.    public void luas_segi3(String alas){ 8.      System.out.println(alas); 9.    } 10.    public void luas_segi3(String alas,int data){ 11.      System.out.println(alas + " : "); 12.      System.out.println("Pangkat dua dari " + data + " adalah " +(data*data)); 13.    } 14. } 15. class overload3 { 16.    public static void main(String[ ] args) { 17.      hitung sekutu = new hitung(); 18.      sekutu.luas_segi3(10); 19.      sekutu.luas_segi3("Belajar  pemrograman"); 20.      sekutu.luas_segi3("Belajar   pemrograman",3); 21.    } 22. }  250 Direktorat Pembinaan SMK | 2008 Prosedur dan Subroutin Bahasa PemrorgramanKeluaran programnya adalah :Luas segitiga 1 = 50.0 Belajar pemrograman Belajar Pemrograman :  Pangkat dua dari 3 adalah 9 6.12. Soal Latihan 251Jawablah soal latihan dibawah ini dengan baik dan benar. 1. Apa yang dimaksud dengan prosedur dan2. Sebutkan perbedaan prosedur dengan fungsi3. Apa sajakah parameter-parameter yang dimiliki oleh prosedur4. Mengapa dalam program perlu ditulis dalam bentuk subrutin5. Apa yang dimaksud dengan funtion call function6. Apa yang dimaksud dengan call by value dan call by reference7. Apa yang dimaksud dengan overloading                            2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Prosedur dan Subroutin     252 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman BAB 7FUNGSI7.1. Pendahuluan7.2. Fungsi Void7.3. Pemanggilan Fungsi7.4. Prototipe Fungsi7.5. Pengiriman data pada Fungsi7.6. Passing Data by Value7.7. The return Statement7.8. Returning a Value from a Function7.9. Returning a Boolean Value7.10. Menggunakan Fungsi dalam program menu7.11. Variabel Lokal dan Global7.12. Soal Latihan7.1. Pendahuluan Misalnya pada sebuah buku yang memiliki seribu halaman, tetapi tidak Fungsi adalah kumpulan dibagi ke dalam bab atau bagian.pernyataan yang melakukan tugas Jika ingin mencoba untuktertentu. Sejauh ini Anda telah menemukan satu topik dalam bukumenggunakan fungsi dalam dua cara: ini akan sangat sulit. Real-world(1) Anda telah membuat sebuah program dapat dengan mudah adafungsi bernama utama dalam setiap ribuan baris kode, dan kecualiprogram yang telah ditulis, dan (2) mereka modularized, mereka bisaAnda memiliki fungsi library disebut jadi sangat sulit untuk mengubah danseperti sqrt dan pow. Dalam bab ini memelihara.akan mempelajari cara membuatfungsi yang dapat digunakan seperti Alasan lain untuk menggunakanfungsi library pada C++. fungsi adalah untuk bahwa fungsi menyederhanakan program. Jika Salah satu alasan mengapa tugas tertentu dilakukan di beberapamenggunakan fungsi adalah untuk tempat di sebuah program, sebuahmemecah program ke dalam sebuah fungsi dapat ditulis sekali saja untukprogram yang lebih kecil sehingga melakukan tugas itu, dan kemudianmudah dikelola. Setiap unit modul,diprogram sebagai fungsi terpisah.2008 | Direktorat Pembinaan SMK 253 Bahasa Pemrograman Fungsiakan dijalankan kapan saja Bodydibutuhkan. Badan fungsi adalah serangkaian pernyataan yang melaksanakan Ketika membuat sebuah fungsi, tugas melakukan fungsi. Pernyataanyang harus ditulis adalah definisi. ini akan ditutupi dalam satu setSemua definisi mempunyai bagian- braces.bagian dibawah ini:Name Return type:Setiap fungsi harus memiliki nama. fungsi dapat mengirim kembali keSecara umum, peraturan yang sama nilai program modul yangberlaku untuk nama variabel juga memanggilnya. Return typeberlaku untuk nama fungsi. merupakan tipe data dari nilai yang dikirim kembali.Parameter list Gambar dibawah menunjukkanProgram modul fungsi panggilan definisi dari fungsi yang sederhanayang dapat mengirim data ke. Daftar dengan berbagai bagian berlabel.parameter adalah daftar variabel Perhatikan bahwa fungsi dari jenisyang memegang nilai-nilai yang kembali sebenarnya tercantumdisampaikan ke fungsi. pertama.     nama    Parameter list    return      body    int main ()      {    Cout << “ Hello  Siswa SMK\n”;  return 0;    }         Gambar 7.1. function headerContoh program diatas merupakan baris pendefinisian int main () yang disebutdengan function header. 254 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman 7.2. Fungsi VoidYang sudah tahu pada fungsi tugasnya. Hal tersebut tidak semua fungsi diperlukan untuk kembali keadalah bahwa fungsi dapat nilai tersebut. Beberapa fungsi hanya melakukan satu atau lebihmengembalikan nilai. Fungsi utama pernyataan dan kemudian mengakhiri. Ini disebut void fungsi.dalam semua program yang telah Fungsi TampilPesan seperti ditampilkan di bawah ini adalahdilihat dalam buku ini dinyatakan sebagai contoh:untuk kembali ke nilai int sebuahsistem operasi. Return 0; merupakansebuah pernyataan yangmenyebabkan nilai 0 bila fungsiutama telah selesai melaksanakanvoid TampilPesan() {  cout << "Hello from the function TampilPesan.\n"; }  Nama fungsi tersebut diatas mengembalikan nilai ke bagianTampilPesan. Nama ini jelas, sebagai program yang dijalankan tersebut.nama fungsi harus. Ia memberi Pemberitahuan juga tidak memilikiindikasi tentang apa yang tidak fungsi pernyataan Kembali. Ini hanyaberfungsi: ini menampilkan pesan. menampilkan pesan pada layar danPerhatikan kembali fungsi dari jenis keluar.void. Ini berarti fungsi tidak7.3. Pemanggilan Fungsi untuk melakukan percabangan menuju dan melaksanakan semua fungsi dijalankan ketika pernyataan yang ada didalam tubuhdipanggil. Fungsi utama akan fungsi tersebut. Untuk lebih jelasnyadipanggil secara otomatis saat mari kita lihat Program dibawah, yangprogram dimulai, namun semua berisi dua fungsi yaitu: TampilPesanfungsi harus dijalankan oleh dan utama.pernyataan function call. Ketikasebuah fungsi dipanggil, programProgram 7.1.#include <conio.h> #include <iostream>  using namespace std;  void TampilPesan() { cout << " >> Salam Hello dari fungsi TampilPesan.\n"; 2008 | Direktorat Pembinaan SMK 255 Bahasa Pemrograman Fungsi}  int main() {          cout << "Hello dari program Utama.\n";     cout << "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\n";     TampilPesan();                               // memanggil TampilPesan     cout << "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\n";     cout << "kembli ke Fungsi Utama lagi.\n";     getch();     return 0; } Keluaran programnya adalah:Hello dari program Utama. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  >> Salam Hello dari fungsi TampilPesan. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ kembli ke Fungsi Utama lagi.  Fungsi TampilPesan disebut oleh nama fungsi yang diikuti oleh tandabaris utama adalah: TampilPesan(); kurung dan titik koma. Coba kitaBaris ini digunakan untuk fungsi bandingkan dengan fungsi headerpanggilan. Dimana hal ini merupakan seperti berikut:Function Header    void  TampilPesan() Function Call       TampilPesan(); Fungsi header adalah bagian dalam fungsi, tanda kurung yangdari definisi fungsi. Ia menyatakan akan dikosongkan.kembali sebuah fungsi dari jenis, Walaupun program mulainama, dan daftar parameter. Hal ini dijalankan pada program utamatidak diakhiri dengan titik koma (main), fungsi TampilPesankarena definisi dari tubuh fungsi yang didefinisikan terlebih dahulu. Hal inimengikutinya. Fungsi panggilan karena compiler harus mengetahuiadalah pernyataan yang fungsi dari jenis return, jumlahmelaksanakan fungsi tersebut, parameter, dan setiap jenissehingga diakhiri dengan titik koma parameter sebelumnya yangseperti pernyataan C++ lainnya. dipanggil. Salah satu cara agarFungsi panggilan tidak ada dalam compiler mengetahui informasi inidaftar, dan jika program ini tidak ke adalah dengan menempatkan fungsi 256 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman definisi sebelum semua panggilan ke pernyataan-nya. Setelah selesaifungsi. melaksanakan TampilPesan, Perhatikan bagaimana programdiatas mengalir. Dalam memulai, program cabang kembali ke fungsitentu saja, didalam fungsi utama. Bilapanggilan ke TampilPesan yang utama dan kembali dengan barisdihadapi, program untuk cabangyang berfungsi dan melakukan yang mengikuti fungsi panggilan. Hal ini diilustrasikan pada gambar dibawah ini.void TampilPesan() {  cout << " >> Salam Hello dari fungsi TampilPesan.\n"; } int main() {     cout << "Hello dari program Utama.\n";  TampilPesan();                                         cout << "kembli ke Funsgi Utama lagi.\n";  getch();  return 0; }  Gambar 7.2. Ilustrasi FungsiDalam menyatakan pemanggilan dibawah merupakan program yangFungsi dapat menggunakan struktur melakukan pemanggilan fungsikendali seperti loop, pernyataan IF, TampiPesan kedalam satu loopingdan pernyataan switch. Program  257Program 7.2.#include <conio.h> #include <iostream>  using namespace std;  void TampilPesan() { 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Fungsicout << " >> Salam Hello dari fungsi TampilPesan.\n"; }  int main() {      cout << "Hello dari program Utama.\n";      cout << "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\n";      for (int count = 0; count < 5; count++)      TampilPesan();                                   // memanggil Fungsi TampilPesan      cout << "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\n";      cout << "kembli ke Funsgi Utama lagi.\n";      getch();      return 0; }  Keluaran Programnya adalah:Hello dari program Utama. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  >> Salam Hello dari fungsi TampilPesan.  >> Salam Hello dari fungsi TampilPesan.  >> Salam Hello dari fungsi TampilPesan.  >> Salam Hello dari fungsi TampilPesan.  >> Salam Hello dari fungsi TampilPesan. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ kembli ke Funsgi Utama lagi. Setiap program dapat dimungkinkan dibawah ini memiliki tiga fungsi: yaituuntuk memiliki banyak fungsi atau utama, fungsi pertama dan fungsisebuah fungsi dalam sebuah kedua. Untuk lebih jelas perhatikanprogram. Program dibawah 7.3. program dibawah ini:Program 7.3#include <conio.h> #include <iostream>  using namespace std;  void pertama() {      cout << " >>Saya sekarang sedang di Fungsi Pertama.\n"; }  void kedua()  258 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman {      cout << " >> Saya sekarang sedang di Fungsi Kedua.\n"; }  int main() {     cout << "Saya sedang di program Utama.\n";     pertama();                                  // pemanggilan fungsi pertama     kedua();                                      // pemanggilan fungsi kedua     cout << "Saya kembali ke Program Utama.\n";     getch();     return 0; }   Keluaran programnya adalah sebagai berikut:Saya sedang di program Utama.  >> Saya sekarang sedang di Fungsi Pertama.  >> Saya sekarang sedang di Fungsi Kedua. Saya kembali ke Program Utama. Dalam program diatas fungsi utama pertama dan kedua dengan instruksiterdiri dari pemanggilan fungsi sebagai berikut:pertama();                                   kedua();                                     Setiap panggilan pernyataan kembali ke utama bila fungsi selesai.menyebabkan program untuk cabang Gambar dibawah menggambarkanke salah satu fungsi dan kemudian jalan yang diambil oleh program2008 | Direktorat Pembinaan SMK 259 Bahasa Pemrograman Fungsi void pertama()  {       cout << " >>Saya sekarang sedang di Fungsi Pertama.\n";  }  void kedua()  {       cout << " >> Saya sekarang sedang di Fungsi Kedua.\n";  }  int main()  {      cout << "Saya sedang di program Utama.\n";      pertama();                                        kedua();                                          cout << "Saya kembali ke Program Utama.\n";      getch();      return 0;  }    Gambar 7.3. Pemanggilan lebih dari satu fungsi Sebuah fungsi sering juga Kerja program tersebut adalah fungsidipanggil dalam dalam sebuah palingdalam dipanggil oleh fungsihirarki, atau berlapis. Program agakdalam dan kemudian fungsidibawah ini merupakan sebuah AgakDalam dipanggil oleh fungsiprogram yang memiliki tiga buah Utama. Untuk lebih jelasnyafungsi dimana fungsi tersebut adalah perhatikan program dibawah ini:utama, Agakdalam dan PalingDalam.Program 7.4.#include <conio.h> #include <iostream>  using namespace std;  void PalingDalam() { cout << "Saya sekarang sedang di dalam fungsi PalingDalam.\n"; }  void AgakDalam()  260 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman {      cout << "sekarang saya sedang di fungsi AgakDalam.\n";      PalingDalam();                              // panggil Fungsi      cout << "Sekarang saya Kembali ke fungsi AgakDalam.\n"; }  int main() {     cout << "saya sekarang sedang didalam fungsi Utama.\n";     AgakDalam();                                 // Panggil Fungsi     cout << "Saya kembali ke Fungsi Utama Lagi.\n";     getch();     return 0; } Keluaran Program adalah sebagai berikut:saya sekarang sedang didalam fungsi Utama. sekarang saya sedang di fungsi AgakDalam. Saya sekarang sedang di dalam fungsi PalingDalam. Sekarang saya Kembali ke fungsi AgakDalam. Saya kembali ke Fungsi Utama Lagi. Dalam Program 7.4 diatasfungsi memanggil fungsi dan kemudianutama hanya memanggil fungsi fungsi yang dipanggil tersebutagakDalam. Sedangkan fungsi memnggil fungsi yang lain. UntukAgakDalam memanggil Fungsi lebih jelasnya perhatikan gambarPalingDalam. Program diatas adalah dibawah ini:2008 | Direktorat Pembinaan SMK 261 Bahasa Pemrograman Fungsi void AgakDalam()  {       cout << "sekarang saya sedang di fungsi AgakDalam.\n";       PalingDalam();                              // panggil Fungsi       cout << "Sekarang saya Kembali ke fungsi AgakDalam.\n";  }  void PalingDalam()  {       cout << "Saya sekarang di dalam fungsi PalingDalam.\n";  }  int main()  {      cout << "saya sekarang sedang didalam fungsi Utama.\n";      AgakDalam();                                 // Panggil Fungsi      cout << "Saya kembali ke Fungsi Utama Lagi.\n";      getch();      return 0;  } Gambar 7.4. Pemanggilan fungsi didalam fungsi7.4. Prototipe Fungsi cara untuk memastikan bahwa Sebelum compiler menemukan compiler ini memiliki informasi yangpanggilan ke fungsi tertentu, kitaharus sudah mengetahui beberapa diperlukan adalah denganhal mengenai fungsi. Secara khusus,kita harus mengetahui jumlah menempatkan fungsi yang telahparameter yang digunakan olehfungsi, jenis parameter, dan cara didefinisikan sebelum melakukanatau jenis kembalinya fungsi. Sebuahparameter membolehkan informasi panggilan ke fungsi tersebut. Iniuntuk dikirim ke salah satu fungsi. merupakan pendekatan yang diambil Untuk saat ini, fungsi yang akandigunakan berupa fugsi yang tidak seperti halnya dalam program 7.1memiliki parameter dan, kecuali padafungsi utama, dan cara kembalinya sampai program 7.4 diatas. Caramenggunakan jenis void. Salah satu lainnya adalah adalah dengan menyatakan fungsi dengan fungsi prototipe (a function prototype). Berikut ini adalah prototipe untuk fungsi TampilPesan seperti dalam Program 7.1 adalah sebagai berikut:void TampilPesan();   Prototipe tersebut diatas tampak ada titik koma dibagian akhir. Sebuahmirip dengan fungsi header, kecuali pernyataan fungsi akan 262  Direktorat Pembinaan SMK | 2008Fungsi Bahasa Pemrorgraman memberitahukan ke compiler bahwa Program 7.5 dibawah ini adalahfungsi TampilPesan memiliki tipe modifikasi dari program 7.3 diatas.kembali (return) void, berarti fungsi Definisi fungsi pertama dan keduatersebut tidak mengembalikan nilai telah ditempatkan setelah programserta tidak menggunakan parameter. utama, dan fungsi prototip telah ditempatkan diatas program utama Prototipe fungsi biasanya secara langsung setelah pernyataanditempatkan pada bagian atas pada namespace std. Perhatikan programprogram sehingga compiler akan dibawah ini:melakukan eksekusi terlebih dahulusebelum fungsi tersebut dipanggil.Program 7.5.#include <conio.h> #include <iostream>  using namespace std;  //Prototipe Fungsi void pertama(); void kedua();  int main() {     cout << "Saya sedang di program utama.\n";     pertama();                  // memanggil fungsi pertama     kedua();                    // memanggil fungsi kedua     cout << "Kembali dalam program utama lagi.\n";     getch();     return 0; }  void pertama() {     cout << "saya sekarang didalam fungsi pertama.\n"; }  void kedua() {     cout << "saya sekarang didalam fungsi kedua.\n"; } Keluaran Program adalah sebagai berikut: 263Saya sedang di program utama. 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Fungsisaya sekarang didalam fungsi pertama. saya sekarang didalam fungsi kedua. Kembali dalam program utama lagi.  Ketika compiler sedang pada informasi fungsi pertama danmembaca program utama diatas, kedua. Sehingga harus ada prototipekemudian program utama tersebut pada setiap fungsinya dalam sebuahmelakukan panggilan ke fungsi program kecuali program utama.pertama dan kedua sebelum compiler Sebuah prototipe program ini tidakmembaca definisi dari fungsi pernah diperlukan oleh programtersebut. Karena hal tersebut sebagai utama karena telah dilakukan padafungsi prototip, compiler sudah awal program.mengetahui jenis parameter kembali7.5. Pengiriman data pada FungsiNilai-nilai yang akan dikirim pada dalam pemanggilan fungsi.sebuah fungsi disebut dengan Pernyataan berikut ini merupakanargument (arguments). Programmer fungsi pow dengan dua argumenyang ahli biasanya sudah akrab yang sedang melakukan panggilan 2dengan cara menggunakan argumen dan 4.result = pow(2, 4);  Sebuah parameter merupakan merancang sendiri fungsi yang dapatvariabel khusus yang menangani nilai menerima data. Program berikutyang dilewatkan sebagai argumen merupakan definisi sebuah fungsimenuju sebuah fungsi. Dengan yang menggunakan parameter:menggunakan parameter, kita dapatvoid TampilNilai(int num) {  cout << "Nilainya adalah " << num << endl; }  Perhatikan integer num yng supaya menerima nilai integerdigunakan untuk mendefinisikan sebagai argumen. Program 7.6variabel yang berada dalam kurung dibawah merupakan contoh yang(int num). Variabel num adalah menggunakan fungsi TampilNilai.parameter. Integer Ini digunakan Perhatikan program dibawah ini:untuk membuat fungsi TampilNilaiProgram 7.6. Direktorat Pembinaan SMK | 2008 264 Fungsi Bahasa Pemrorgraman #include <conio.h> #include <iostream>  using namespace std;  //Prototipe Fungsi void TampilNilai(int);  int main() {     cout << "Saya sedang memasukan 5 ke fungsi TampilNilai.\n";     TampilNilai(5);                  // Call TampilNilai dengan argument 5     cout << "Sekarang saya sudah kembali ke program utama.\n";     getch();     return 0; }  void TampilNilai(int num) {      cout << "Besar nilainya adalah: " << num << endl; } Keluaran programnya adalah sebagai berikut:Saya sedang memasukan 5 ke fungsi TampilNilai. Besar nilainya adalah: 5 Sekarang saya sudah kembali ke program utama. Dalam prototype fungsi tersebut diatas yang perlu diperhatikan adalah padaTampilNilai:void TampilNilai(int);   // function prototype  Dalam fungsi tersebut kita tidak memasukan type data yangperlu memasukan daftar parameter diperlukan saja. Fungsi ini dapatyang merupakan variabel dalam prototype ini juga dapat ditulistanda kurung, dan hanya dengan sebagai berikut:void TampilNilai(int num);  Fungsi tersebut diatas sangat tersebut. Dalam program utama,mudah digunakan walaupun, fungsi TampiNilai disebut dengancompiler mengabaikan nama variabel argumen 5, dimana hal tersebutpada parameter fungsi prototype berada dalam tanda kurung. Nomor 52008 | Direktorat Pembinaan SMK 265 Bahasa Pemrograman Fungsidimasukan kedalam variabel num, jelasnya mengenai hal tersebut,yang mana num merupakan perhatikan gambar dibawah ini:parameter TampilNilai. Untuk lebih TampilNilai(5);                           void TampilNilai(int num)  {       cout << "Besar nilainya adalah: " << num << endl;  }      Gambar 7.5. Fungsi prototipe    Dengan melihat gambar nilai sesuai argument yangtersebut, apapun argumen yang berhubungan. Program 7.7 dibawahtertulis dalam tanda kurung pada menunjukkan bahwa fungsipanggilan fungsi akan dicopy \tampilNilai dapat dipanggil beberapakedalam variable parameter fungsi. kali dengan alasan sesuai masing-Pada dasarnya, parameter adalah masing kegunaannya.variabel yang diinisialisasi menjadiProgram 7.7.#include <conio.h> #include <iostream>  using namespace std;  //Prototipe Fungsi void TampilNilai(int);  int main() {     cout << "Saya sedang mengisikan beberapa nilai pada TampilNilai.\n";     TampilNilai(5);      // Panggil TampilNilai dengan argument 5     TampilNilai(10);     // Panggil TampilNilai dengan argument 10     TampilNilai(2);      // Panggil TampilNilai dengan argument 2     TampilNilai(16);     // Panggil TampilNilai dengan argument 16     cout << "sekarang saya kembali.\n";  266 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman     getch(); return 0; }  void TampilNilai(int num) {      cout << "Nilainya adalah " << num << endl; } Keluaran programnya Adalah sebagai berikut;Saya sedang mengisikan beberapa nilai pada TampilNilai. Nilainya adalah 5 Nilainya adalah 10 Nilainya adalah 2 Nilainya adalah 16 sekarang saya kembali.  Setiap kali sebuah fungsi dalam yang digunakan sebagai argumen.program diatas tersebut dipanggil, Sebagai contoh, panggilan fungsivariabel num akan mengambil nilai berikut digunakan untuk memasukanyang berbeda. Setiap ekspresi fungsi, nilai 8 kedalam variabel num:nilai akan diberikan kedalam numTampilNilai(3 + 5); parameter adalah bertipe integer, argumen pada pemanggilan fungsi Jika kita memasukan jenis akan dipotong, sehingga nilai 4 akanargumen yang tidak sama dengan dimasukan ke varibel num:jenis parameter, argumen tersebutakan digunakan secara otomatis.Misalnya, jika TampilNilai dari sebuahTampilNilai (4.7);Seringkali hal tersebut berguna untuk dibawah ini menunjukkan sebuahdigunakan oleh beberapa argumen fungsi dari fungsi yang memiliki tigadalam sebuah fungsi. Program buah parameter.Program 7.8. 267#include <conio.h> #include <iostream>  using namespace std; 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Fungsi //Prototipe Fungsi void Tambahan(int, int, int);  int main() {     int value1, value2, value3;      cout << "Masukan Tiga bilangan Integers dan saya akan menampilkan ";     cout << "Penjumlahan: ";     cin >> value1 >> value2 >> value3;     Tambahan(nilai1, nilai2, nilai3);   // Call Tambahan dengan 3 arguments.     getch();     return 0; }  void Tambahan(int num1, int num2, int num3) {      cout << (num1 + num2 + num3) << endl; } Keluaran Programnya adalah sebagai berikut;Masukan Tiga bilangan Integers dan saya akan menampilkan Penjumlahan: 4 5 6 15 Dalam header fungsi Tambahan, variabel yang dipisahkan oleh komadaftar parameter berisi tiga definisi adalah sebagai berikut:void Tambahan(int num1, int num2, int num3)  Hal yang perlu diperhatikan int num1, num2, num3 ternyatapada setiap variabel yaitu harus bukan int num1, int num2, int num3.memiliki tipe data yang namanyasebelum telah tertulis. Error pada Dalam pemanggilan fungsi,compiler akan terjadi jika daftar sebuah variabel nilai1, nilai2 danparameter yang dinyatakan sebagai nilai 3 dapat digunakan sebagai argument:Tambahan(nilai1, nilai2, nilai3);  Potongan program diatas jika panggilan fungsi, kita tidak dapatdiperhatikan ada perbedaan antara menyertakan variabel jenis dataheader fungsi dan panggilan fungsi didalam tanda kurung. Perhatikansaat melewati variabel sebagai potongan program dibawah ini:argumen menjadi parameter. Dalam 268 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman Tambahan(int nilai1, int nilai2, int nilai3); Ketika sebuah fungsi dengan parameter yang di pesan. Halbeberapa parameter disebut, tersebut dapat digambarkan sepertiargumen akan dimasukan kedalam gambar dibawah ini. Tambahan(nilai1, nilai2, nilai3);         void Tambahan(int num1, int num2, int num3)  {       cout << (num1 + num2 + num3) << endl;  }      Gambar 7.6. Fungsi dengan beberapa Parameter Fungsi dibawah ini akan dimasukan kedalam num3. Untukmenyebabkan nilai 5 dimasukan lebih jelasnya perhatikan instruksikedalam parameter num1, nilai 10 dibawah ini:dimasukan ke dalam num2, dan 15showSum(5, 10, 15); meskipun pemanggilan fungsi berikut num1, 5 dimasukan ke dalam num2,ini akan menyebabkan 15 yang dan nilai 10 akan dimasukan kedalamdimasukan kedalam parameter num3:Tambahan(15, 5, 10); 7.6. Passing Data by Value informasi yng dilakukan oleh argumen dan tercantum dalam tanda Parameter khusus merupakan kurung pada panggilan fungsi.variabel tujuan yang ditentukan Secara umum, ketika informasididalam tanda kurung dari definisi disampaikan kedalam fungsi disebutfungsi. Tujuan parameter tersebutadalah untuk menyampaikan2008 | Direktorat Pembinaan SMK 269 Bahasa Pemrograman Fungsipassed by value. Hal ini berarti tersebut tidak mempengaruhi padaparameter menerima copy dari nilai argumen yang asli. Perhatikanyang disampaikan kepadanya. program dibawah ini yang menunjukkan konsep mengenai Jika sebuah parameter nilai passed by value.berubah didalam fungsi maka halProgram 7.9.include <iostream>  using namespace std;  void changeThem(int, double);  int main() {  int whole = 12;  double real = 3.5;  cout << "dalam nilai main adaIah" << whole << endl;  cout << "dan nilai real adalah" << real << endl << endl;    changeThem(whole, real);            // memanggil changeThem dengan 2 arguments    cout << "sekarang kembali dalam main lagi, nilainya adalah ";  cout << "semuanya masih " << whole << endl;  cout << "dan nilai real adalah masih" << real << endl;  return 0; }  void changeThem(int i, double d) {  i = 100;  d = 27.5;    cout << "dalam fungsi changeThem nilainya diubah menjadi ";  cout << i << endl;  cout << "dan nilainya diubah menjadi " << d << endl << endl; }   Pada program diatas walaupun salinan keseluruhan dan nyata.parameter i dan f berubah dalamfungsi changeThem, kenyataannya fungsi ChangeThem tidak memilikiseluruh argumen tidak diubah.Parameter i dan f hanya berisi akses ke argumen sebelumnya 270 (original). Gambar dibawah  menunjukan bahwa variabel Direktorat Pembinaan SMK | 2008Fungsi Bahasa Pemrorgraman parameter disimpan dalam lokasi yang asli. Perhatikan gambar berikutmemori yang terpisah dari argumen ini:Argumen Asli 12 Fungsi Parameter 12Gambar 7.7. Variabel parameter yang disimpan dalam memori7.7. Pernyataan Kembali dieksekusi. Ketika menemui Bila pernyataan terakhir dalam pernyataan kembali, fungsi denganfungsi telah selesai eksekusi, fungsiakan diakhiri. Program akan kembali segera diakhiri dan menuju programke modul yang dipanggil danmeneruskan eksekusi dari titik semula. Hal ini seperti ditunjukkandimana panggilan fungsi dilakukansebelumnya. Hal sangat dalam Program dibawah. fungsi bagidimungkinkan, meskipun salah satufungsi memaksa untuk kembali digunakan untuk menunjukkan hasilketempat dimana pernyataan terakhirdari program sebelumnya yang pembagian dari arg1 dibagi arg2. Jika arg2 diatur ke nol, fungsi akan kembali tanpa melakukan pembagian, karena operasi pembagian tidak mungkin dilakukan.Program 7.10. 271#include <iostream>  using namespace std;  void divide(double, double);  int main() {  double num1, num2;  cout << "masukan dua angka yang akan dibagi \n";  cout << "angka yang kedua: "; 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Fungsi cin >> num1 >> num2;  divide(num1, num2);  return 0; }  void divide(double arg1, double arg2) {  if (arg2 == 0.0)  {  cout << "maaf, tidak bisa dibagi dengan bilangan nol.\n";  return;  } cout << "jawabanya adalah: " << (arg1 / arg2) << endl; } 7.8. Mengembalikan Nilai dari FungsiDari program diatas kita telah nilai yang dapat dikembalikannya.melihat bahwa informasi dapat Sesuatu dari fungsi memilikidilewatkan menjadi salah satu fungsi beberapa saluran komunikasi untukoleh sebuah parameter. Informasi menerima data (parameter), tetapijuga dapat dikembalikan dari fungsi, hanya satu saluran untuk mengirimkembali menuju program yang data (return value).memanggilnya. Walaupun beberapa Hal tersebut dapat digambarkanargumen dapat dimasukan menjadi seperti dibawah ini:salah satu fungsi, hanya ada satu Argumen Fungsi Nilai Kembali Argumen Argumen Argumen Gambar 7.8. Fungsi dengan saluran beberapa data (parameter)Dalam rangka untuk data nilai kembali mengawali fungsi dengan nama header fungsi danmengembalikan nilai-nilai dari prototipe. Berikut ini menyatakan prototipe fungsi dengan namabeberapa fungsi, mereka harus persegi yang menerima sebuah"dibuat paket" sehingga mereka Direktorat Pembinaan SMK | 2008dianggap sebagai satu nilai. Tipe 272 Fungsi Bahasa Pemrorgraman argumen integer dan Fungsi tersebut hanya memiliki satu baris yang merupakanmengembalikannya menjadi integer: pernyataan kembali. Bila nilai fungsi kembali, maka hal tersebut harusint persegi(int);  memiliki pernyataan kembali. Ungkapan yang mengikuti kata kunciinstruksi diatas dapat didefinisikan akan dievaluasi, dikonversikan kedalam fungsi sebagai berikut: tipe data fungsi kembali, dan dikirim kembali program yang memanggilint persegi(int number)  fungsi tersebut. Untuk lebih jelasnya{  perhatikan Program dibawah ini:return number * number; } Program 7.11#include <iostream>  using namespace std;  int persegi(int);  int main() {  int number, result;    cout << "Masukan angka yang akan diakarkan: ";  cin >> number;  hasil = persegi (number);  cout << number << " Hasilnya adalah " << hasil << endl;  return 0; }  int persegi(int number) {  return number * number; } Dibawah ini merupakan sebuah baris memanggil fungsi persegi:hasil = persegi (number);  Sebuah ekspresi adalah sesuatu fungsi merupakan sebuah ekspresi.yang memiliki nilai. Jika suatu fungsi Pernyataan diatas memberikan nilaimengembalikan nilai, panggilan ke kembali dari persegi ke variabel hasil.2008 | Direktorat Pembinaan SMK 273 Bahasa Pemrograman FungsiJadi, ketika nilai 20 dinyatakan menggambarkan bagaimana sebuahsebagai argumen persegi, 20 kali 20, informasi disampaikan ke danatau 400, dan dikembalikan ke hasil kembali dari fungsi.yang ditugaskan. Gambar dibawah ini hasil = persegi (number);  20 400 int persegi(int number)  {  return number * number;  }  Gambar 7.9. Penyampaian informasi dari fungsiSebenarnya dalam program diatas, fungsi persegi telah ditampilkanvariable hasil adalah variabel yang menggunakan cout objek, sepertitidak penting. Adanya nilai pada ditunjukkan berikut dibawah ini:cout << number << " persegi adalah " << persegi(number) << endl;  Dari program diatas kita sudah nilai yang dikembalikan oleh fungsimengetahui bagaimana nilaidikembalikan oleh fungsi dan sebagai penghubung dalamditempatkan ke variabel atau dicetak.Program tersebut diatas Juga pengujian sebuah ekspresimemungkinkan untuk menggunakan aritmatika. Perhatikan contoh berikut yang menggunakan dua pernyataan yang sempurna:if (persegi(number) > 100)      cout << "persegi besar\n";         sum = 1000 + persegi (number);    Program dibawah menunjukkan versi lingkaran. Program dibawah jugadari fungsi persegi yang kembali menggunakan fungsi getRadiussenbagai duble. Fungsi tersebut untuk mendapatkan radius lingkarandigunakan dalam pernyataan dari pengguna dan kembali ke nilaimatematis untuk menghitung daerah utama.Program 7.12#include <iostream> #include <iomanip>  274 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman  using namespace std;  double getRadius(); double square(double);  int main() {  const double PI = 3.14159;  double rad;    cout << fixed << showpoint << setprecision(2);  cout << "Program ini untuk menghitung luas lingkaran.\n";  rad = getRadius();  cout << "Luasnya adalah: " << PI * square(rad) << endl;  return 0; }  double getRadius() { double radius;  cout << "masukan jari‐jari lingkaran: ";  cin >> radius;  return radius; }  double square(double number) {  return number * number; }  Fungsi Persegi dalam Program dua nilai dikembalikan oleh fungsi7.11 merupakan sebuah integer, persegi seperti pada program 7.12sedangkan pada program 7.12 maka akan ditugaskan ke salah satuadalah fungsi ganda. Cara kembali variabel integer, sehingga nilai akanjenis fungsi harus merupakan jenis dipotong. Hal ini diilustrasikan dalamdata yang diinginkan untuk kembali contoh program berikut:dari fungsi. Jika fungsi kembali kenilai ganda yang sedang ditugaskan int result; ke variabel, maka variabel tersebut result = square(2.7); harus juga menjadi dua kali lipat. Jika2008 | Direktorat Pembinaan SMK 275 Bahasa Pemrograman Fungsi7.9. Pengembalian Nilai Boolean Biasanya ada sesuatu yang mengetahui apakah nomor genapdibutuhkan fungsi untuk menguji atau ganjil, sebuah fungsi dapatargumen dan akan mengembalikan ditulis kembali dengan benar jikanilai benar atau salah serta argument genap dan false jikamengindikasikan kondisi yang ada. argumen yang ganjil. Untuk lebihMisalnya, dalam sebuah program jelasnya perhatikan program dibawahyang membutuhkan sesuatu untuk ini:Program 7.13#include <iostream>  using namespace std;  bool isEven(int); int main() {  int val;    cout << "masukan bilangan integer :";  cout << "jika ganjil atau genap : ";  cin >> val;    if (isEven(val))  cout << val << "adalah genap.\n";  else  cout << val << " adalah ganjil.\n";  return 0; }  bool isEven(int number) {  if (number % 2)  return false;   // Bilangan adalah ganjil  else  return true;   // bilangan adalah genap. } Keluaran Program adalah sebagai berikut:masukan bilangan integer : 5[Enter] 5 adalah ganjil.   276 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman Sebuah fungsi isEven disebut dalam ketika pernyatasan IF dieksekusi,pernyataan dibawah ini: isEven disebut dengan val sebagai argument. Jika val genap, isEvenif (isEven(val))  adalah benar dan sebaliknya akan salah.7.10. Menggunakan Fungsi dalam program menuDalam sebelumnya kita melihat versi program. Perhatikan bagaimanamenu-driven program yang setiap fungsi, atau modul, yangmenghitung biaya kesehatan untuk dirancang untuk melakukan tugasanggota klub. Program 7.14 dibawah tertentu.adalah untuk meningkatkan modularProgram 7.14 277#include <iostream> #include <iomanip> #include <string>  using namespace std;  // Function prototypes void displayMenu(); int getChoice(); void computeFees(string, double, int);  const double ADULT_RATE = 40.00, SENIOR_RATE = 30.00, CHILD_RATE = 20.00;  int main() {  int choice,        months;           cout << fixed << showpoint << setprecision(2);    do  { displayMenu();  choice = getChoice();       if (choice != 4)  { 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Fungsi cout << "berapa jumlah banyaknya bulan:? ";  cin >> months;    switch (choice)  {  case 1: computeFees("Dewasa", ADULT_RATE, months);  break;  case 2: computeFees("Anak", CHILD_RATE, months);  break;  case 3: computeFees("Senior", SENIOR_RATE, months);  }  }  } while (choice != 4);  return 0; }  void displayMenu() {  cout << "\nmenu keanggotaan klub kesehatan \n\n";  cout << "1. Keanggotaan dewasa \n";  cout << "2. Keangotaan anak\n";  cout << "3. senior\n";  cout << "4. Keluar\n\n"; }  int getChoice() {  int choice;  cin >> choice;  while (choice < 1 || choice > 4)  {   cout << "pilihan hanya no 1 – 4 tekan enter. ";  cin >> choice;  }  return choice; }  void computeFees(string memberType, double rate, int months) {  cout << endl  << "tipe keanggotaan: " << memberType << " "  << "bayaran perbulan Rp" << rate << endl  << "Jumlah bulan:" << months << endl  278 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman  << "Total:Rp."<< (rate * months)  << endl << endl; }   keseluruhan fungsi: satu untuk Yang perlu diperhatikan adalah menghitung biaya keanggotaan dewasa, anak yang lain untukfleksibilitas dari fungsi computeFees, menghitung biaya keanggotaan, danyang disebut pada tiga tempat yang ketiga untuk menghitung biayaberbeda-beda dengan pernyataan keanggotaan senior. Karena kitaswitch. Hal ini disampaikan tiga dapat informasi yang berbeda lulusargumen: string memegang jenis sebagai argumen ke fungsi tersebut,keanggotaan, double memegang namun, kami mampu membuat satubiaya bulanan untuk jenis tujuan umum-fungsi yang bekerjakeanggotaan, dan integer memegang untuk semua tiga kasus.jumlah tagihan per bulan. Tanpa argumen, kita akanmenetapkan sesuatu yang diperlukan7.11. Variabel Lokal dan Global Seperti yang telah ditetapkan fungsi lainnya, yang biasanya tidakbahwa variabel didalam fungsi bisa mengaksesnya. Program 7.15utama, Anda juga dapat menetapkan menunjukkan bahwa variabel yangfungsi di dalam fungsi-fungsi lainnya. ditetapkan dalam suatu fungsi yangVariabel yang ditetapkan dalam tersembunyi, dimana fungsi lainnyafungsi lokal ke fungsi. Mereka mungkin telah terpisah, berbedatersembunyi dari pernyataan dalam variabel dengan nama yang sama.Program 7.15#include <iostream>  using namespace std;  void anotherFunction();   int main() {  int num = 1;     cout << "Dalam program utatma,num adalah: " << num << endl;  anotherFunction();  cout << "Kembali dalam program utama, num masih" << num << endl;  return 0; } 2008 | Direktorat Pembinaan SMK 279 Bahasa Pemrograman Fungsi void anotherFunction() {  int num = 20;   // variabel Local  cout << "Dalam anotherFunction, num adalah: " << num << endl; }  Keluaran Program adalah sebagai berikut:Dalam program utatma,num adalah: 1 Dalam anotherFunction, num adalah: 20 Kembali dalam program utama, num masih 1  Meskipun terdapat dua variabel sebagai variabel yang ditetapkannum, program ini hanya bisa didalamnya akan terlihat, sehingga"melihat" salah satu dari mereka dalam variabel num program utamasetiap saat. Ketika program tersembunyi. Perhatikan programdijalankan dalam program utama, yang mengilustrasikan sifat tertutupyang didefinisikan pada variabel num dari dua fungsi, dimana bentuk kotakakan terlihat pada program utama. mewakili lingkup variabelKetika anotherFunction disebutFungsi main  Variabel num hanya terlihat pada   program utama    Int num = 1;   Variabel num hanya terlihat pada  anotherFunction Fungsi anotherFunction   int num = 20; Gambar 7.10. Dua Fungsi yang mempunyai sifat tertutup, Sebuah Lokal variabel dapat mudah. Sebuah variabel globaldikatakan sebagai variable yang merupakan variabel yang ditetapkanaman dan tersembunyi dari fungsi diluar oleh semua fungsi dalamlain, tetapi variable ini tidak sebuah program. Program 7.16menyediakan cara yang mudah untuk menunjukkan dua buah fungsi utamaberbagi data. Jika sejumlah besar dan anotherFunction, dimanadata harus dapat diakses oleh semua menggunakan akses yang samafungsi dalam program, variabel global yaitu variabel global num.dapat digunakan sebagai alternatif Direktorat Pembinaan SMK | 2008 280 Fungsi Bahasa Pemrorgraman Program 7.16#include <iostream>  using namespace std;  void anotherFunction();   // Fungsi  prototipe int num = 2;       // variabel Global   int main() {  cout << "dalam program utama, num adalah" << num << endl;  anotherFunction();  cout << "kembali dari program utama, num adalah" << num << endl;  return 0; }  void anotherFunction() {  cout << "dalam fungsi anotherFunction, num adalah " << num << endl;  num = 50;  cout << "tetapi, sekarang telah diubah menjadi " << num << endl; }   dan anotherFunction, maka Dalam Program 7.16 diatas, keduanya memiliki akses ke fungsi tersebut.variabel num didefinisikan diluarsemua fungsi. Karena munculsebelum definisi pada program utamaProgram 7.17#include <iostream>  using namespace std;  int globalNum;        // variabel Global. Otomatis diatur  ke null. int main() {  cout << "globalNum adalah " << globalNum << endl;  return 0; } 2008 | Direktorat Pembinaan SMK 281 Bahasa Pemrograman FungsiJika sebuah fungsi memiliki variabel hanya dapat dilihat oleh fungsi. Hallokal dengan nama yang sama ini ditunjukkan oleh Program dibawahsebagai variabel global, variabel lokal ini:Program 7.18#include <iostream>  using namespace std;  // Funsi prototipe void texas(); void arkansas();  int cows = 10;       //variabel  global  int main() {  cout << "Disana banyak " << cows << " cows di program utama.\n";  texas();  arkansas();  cout << "Kembali dalam program utama, disana banyak" << cows << " cows.\n";  return 0; }  void texas() { int cows = 100;     //variabel  Local   cout << "disana " << cows << " cows di texas.\n"; }  void arkansas() { int cows = 50;      // variabel Local    cout << "There are " << cows << " cows in arkansas.\n"; }   merupakan program untuk mendaftar Ketika program diatas sedang dan program ini menggunakan variabel global dan lokal. Fungsimenjalankan fungsi utama, variabel ringUpSale menghitung danglobal cows akan terlihat. Dalam menampilkan harga, pajak penjualan,fungsi texas dan Arkansas, meskipun dan subtotal untuk setiap item yangada variabel lokal dengan nama dibeli. Memiliki variabel lokal, pajak,cows. Variabel global tidak terlihat yang memiliki nama yang samaketika program sedang menjalankanfungsi mereka. program dibawah Direktorat Pembinaan SMK | 2008 282 Fungsi Bahasa Pemrorgraman seperti variabel global. Pajak pada program utama untuk menghitungringUpSale variabel yang digunakan total pajak penjualan padauntuk menghitung pajak penjualan pembelian. Supaya lebih jelas,pada item, sementara global pajak perhatikan program dibawah ini:variabel yang digunakan olehProgram 7.19#include <iostream> #include <iomanip>  using namespace std;   // Fungsi prototipe void ringUpSale();   // variabel Global  const double TAX_RATE = 0.06; double tax, sale, total;  int main() {  char again;  cout << fixed << showpoint << setprecision(2);  do  {   ringUpSale();  cout << "Apakah disana ada ada sesuatu yang dapat dijual? ";  cin >> again;  }   while (again == 'y' || again == 'Y');  tax = sale * TAX_RATE;  total = sale + tax;  cout << "\nPajak penjualannya adalah " << tax << endl;  cout << "Total Pembayaran adalah " << total << endl;  return 0; }  void ringUpSale() {         //Variabel Local   int qty;  double unitPrice, tax, thisSale, subTotal;    cout << "\nJumlah: "; 2008 | Direktorat Pembinaan SMK 283 Bahasa Pemrograman Fungsi cin >> qty;  cout << "Harga per satuan: ";  cin >> unitPrice;    thisSale = qty * unitPrice;   // total harga unit  sale += thisSale;     // Update variabel global penjualan  tax = thisSale * TAX_RATE;  // pembayaran pajak untuk item  subTotal = thisSale + tax;   // subtotal untuk tiap item  cout << "harga untuk tiap item:" << thisSale << endl;  cout << "pajak untuk tiap item: " << tax << endl;  cout << "SubTotal untuk tiap item: " << subTotal << endl; } 7.12. Variabel Static Local variabel yang hancur ketika fungsi diakhiri dan kemudian kembali dibuat Jika suatu fungsi dipanggil lebih bila fungsi sudah dimulai lagi. Hal inidari satu kali dalam sebuah program, ditunjukkan dalam Program 7.20maka nilai yang disimpan dalam dibawah ini:fungsi sebagai variabel lokal tidakakan kuat menahan panggilan fungsi.Hal ini disebabkan karena variabel- .Program 7.20#include <iostream>  using namespace std;  // Fungsi prototipe void showLocal();  int main() {  showLocal();  showLocal();  return 0; }  void showLocal() {  int localNum = 5; //variabel Local  cout << "localNum adalaj " << localNum << endl;  localNum = 99;  284 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman } Keluaran Program adalah sebagai berikut:localNum is 5 localNum is 5  Walaupun pernyataan terakhir panggilan. Hal ini dapat dicapaidalam fungsi showLocal took 99 padalocalNum, variabel yang hancur bila dengan membuat variabel statis.fungsi kembali. Pada saat fungsitersebut dipanggil, localNum akan variabel Static adalah variable lokalrecreated dan diinisialisasi ke 5 lagi. yang tidak hancur bila fungsi kembali. Kadang-kadang keinginan untuksebuah program untuk "mengingat" Mereka ada untuk seluruh masaadalah nilai yang disimpan dalamvariabel lokal antara fungsi program, walaupun mereka hanya lingkup fungsi mereka yang ditetapkan. Program 7.21 menunjukkan beberapa karakteristik statik lokal variabel.Program 7.21#include <iostream>  using namespace std;  // Fungsi prototipe void showStatic();  int main() {  for (int count = 0; count < 5; count++)  showStatic();  return 0; }  void showStatic() {  static int statNum; // Static local variable  cout << "statNum adalah" << statNum << endl;  statNum++; }  Program diatas terdapat variabel fungsi showStatic, dan tetap denganstatNum adalah di tambahkan nilai antara setiap panggilan fungsi.dengan satu (incremented) pada Perhatikan bahwa walaupun tidak2008 | Direktorat Pembinaan SMK 285 Bahasa Pemrograman Fungsisecara eksplisit statNum diinisialisasi, Hal ini biasanya terjadi karenadimulai pada nol. Seperti variabel variabel inisialisasi dibuat, danglobal adalah variabel lokal statik variabel lokal statik hanya dibuatdiinisialisasi ke nol secara default. sekali saat menjalankan sebuahJika Anda memberikan nilai program. program dibawah hanyainitialization statis variabel lokal, sedikit modifikasi.hanya dilakukan sekali initialization.Program 7.22#include <iostream>  using namespace std;  void showStatic();  int main() {  for (int count = 0; count < 5; count++)  showStatic();  return 0; }  void showStatic(void) {  static int statNum = 5;  cout << "statNum adalah " << statNum << endl;  statNum++; } Keluaran program diatas adalah sebagai berikut:statNum adalah 5 statNum adalah 6 statNum adalah 7 statNum adalah 8 statNum adalah 9 Walaupun pernyataan yang dipanggil. Jika tidak, variabel y tidakdigunakan utuk mendefinisikan dapat mempertahankan nilai-nyainisialisasi statNum ke 5, initialization antara fungsi panggilan.tidak terjadi pada setiap kali fungsi 286 Direktorat Pembinaan SMK | 2008 Fungsi Bahasa Pemrorgraman 7.12. Soal LatihanJawablah soal latihan dibawah ini dengan baik dan benar. 1. Apa yang dimaksud dengan fungsi pada pemrograman komputer2. Apakah alasanya menggunakan fungsi3. Jelaskan cara pemanggilan fungsi didalam sebuah fungsi4. Apakah yang dimaksud dengan argumen5. Apakah perbedaan antara fungsi dengan prosedur6. Buatlah program sederhana menggunakan fungsi untuk mencari bilangan genap antara 1 sampai dengan 102008 | Direktorat Pembinaan SMK 287 Bahasa Pemrograman Fungsi 288 Direktorat Pembinaan SMK | 2008 Operasi String Bahasa Pemrorgraman BAB 8OPERASI STRING8.1. String pada bahasa C8.2. Pointer pada Operasi String8.3. Library String Bahasa C++8.4. Membandingkan string8.5. Operator Logika NOT8.6. Pengurutan String8.7. Fungsi konversi String/Numeric8.8. Menguji sebuah Karakter8.9. Deskripsi Fungsi Karakter8.10. Konversi Karakter8.11. Menulis string8.12. Pointer untuk menguraikan String8.13. Class String pada C++8.14. Membuat Class String Sendiri8.15. Studi Kasus8.16. Soal Latihan8.1. String pada bahasa CString merupakan sebuah bentuk yang berurutan dalam bentuk array berdimensi satu.data yang sering dipakai dalam Dalam bahasa C++, stringbahasa pemrograman untuk merupakan suatu nilai karakter yang berurutan dan disimpan dalamkeperluan menampung dan sebuah lokasi memori yang salalu diakhiri dengan karakter null.memanipulasi data teks. Sebagai Sehingga untuk memanggil string akan selalu dalam bentuk karaktercontoh fungsi string misalnya ASCII. Dalam sebuah program operasi string, karakter null biasanyadigunakan untuk menampung atau ditulis ‘\0’, dimana hal tersebut biasanya secara umum berupamenyimpan sebuah kalimat dan lain bilangan integer 0 atau nilai karaktersebagainya.Pada bahasa C, string bukanlahmerupakan tipe data berdiritersendiri, melainkan hanyalahkumpulan dari nilai-nilai karakter2008 | Direktorat Pembinaan SMK 289 Bahasa Pemrograman Operasi String  null konstanta. Kemudian pernyataan menambah tanda ketik dua.tersebut disimpan dalam bentuk Perhatikan string dibawah ini:karakter variabel seperti dibawah ini: “siapakah nama anda?” char ch1, ch2, ch3;  “gatotkaca” ch1 = '\0'; ch2 = 0;  Kedua penulisan tersebut diatasch3 = NULL;  merupakan cara penulisan string. Perhatikan contoh program dibawahArray merupakan sebuah lokasi ini:memori yang berurutan untukmenyimpan nilai tipe data yang Program 8.1sama, tetapi pada string berupa array #include <iostream> yang selalu diakhiri dengan karakter  null. String dalam bahasa C++ akan using namespace std; muncul dalam program berupa salah  satu dari tiga bentuk dibawah ini: int main()  “Hard-coded’’ string literals {  Programmer mendefinisikan array   cout << "gatotkaca";  dari karakter   return 0;  }  Pointers ke karakter Tanpa memperhatikan dariketiga bentuk string yang muncul Pada program diatas dapatdalam program tersebut, string selalu diketahui bahwa compiler menanganimempunyai ciri array yang diakhiri string yang datang dalam bentukoleh karakter null dan string literal. Ketika compilerdirepresentasikan dalam program menemui sebuah string “gatotkaca”,dalam bentuk pointer pada karakter maka hal tersebut akan dialokasikanpertama dalam sebuah array. dala sebuah array dengan panjangDengan kata lain tipe string pada sepuluh karakter dalam bentuk databahasa C++ adalah: dalam program.char *  Compiler kemudian akan menyimpan sembilan karakter dalamdimana hal tersebut diatas adalah bentuk string “gatotkaca”. Dalamtipe char string menggunakan sebuah penyimpanan pertama dimasukanpointer karakter kesembilan kedalam array dan diakhiri dengan karakter null8.1.1. Konstanta String pada penyimpanan akhir. Langkah terakhir compiler melewatkan nilaiPenulisan String Secara harafiah tipe char * dan alamat array darisebenarnya dapat disebut juga karakter pertama menjadi obyek cout.dengan konstanta string yang dapatditulis secara langsung dalamprogram secara berurutan dengan 290 Direktorat Pembinaan SMK| 2008 Operasi String Bahasa Pemrorgraman  dapat dideteksi. Sebagai sebuah g a t o t k a c a \0 array karakter, karakter pertama dari nilai string mempunyai indeks ke-0, Gambar 8.1. Contoh sebuah string karakter kedua mempunyai indeks ke-1, dan seterusnya. Program Pada gambar diatas setiap dibawah ini mengilustrasikan sebuahkarakter akan menempati memori string yang diperlakukan olehsebesar 1 byte. Byte terakhir compiler sebagai sebuah nilaiotomatis akan berisi karakter NULL dengan type data char* . Hal tersebut(\0). Dengan mengetahui bahwa merupakan sebuah operasi pointersuatu string diakhiri nilai NULL, maka pada sebuah karakter.akhir dari nilai suatu string akanProgram 8.2#include <iostream>  using namespace std;  int main() {   string storedAt = " disimpan pada ";   char *p, *q;   // memasukan string ke pointer sebagai char   p = "Hello ";   q = "Bailey";   // pernyataan berikut sama dengan    cout << p << q << endl;   //cetak alamat dimana string C disimpan   cout << p << storedAt <<int(p)<< endl;   cout << q << storedAt <<int(q)<< endl <<int ("string lainnya");   return 0; } Keluaran program diatas adalah sebagai berikut:Hello Bailey Hello disimpan pada 4309447 Bailey disimpan pada 4309454 4309461  Dua tugas pada program diatas Pointer p dan q kemudian menahanadalah menampilkan string dalam sebagai alamat dari dua string.bentuk pointer menjadi char dengan Dengan memilih sebuah pointer intmenggunakan variabe type char*. maka akan mengetahui dimana2008 | Direktorat Pembinaan SMK 291 Bahasa Pemrograman Operasi String  konstanta string disimpan dalam array dapat diberi nilai dengansebuah memori. Dalam kasus ini menginisialisasi string tersebut.sebuah compiler telah menyimpan Selain memberi nilai dapat jugasemua konstanta string pada sebuah dilakukan dengan membaca karakterprogram dalam lokasi memori yang string melalui sebuah keyboard atauberurutan. file, atau dapat juga dengan melakukan copy karakter ke dalam8.1.2. Variabel String array satu karakter pada saat yang Sebuah variabel string dapat sama. Hal ini dapat juga dikatakanditahan oleh string pada bahasa C bahwa suatu variabel string dapatyang ditulis dalam bentuk kode diinisialisasi seperti halnya arrayprogram. Untuk memiliki suatu yang lain. Namun tentu saja elemenkarakter string dari sebuah keyboard, terakhirnya haruslah berupa karakteratau dari sebuah file, maka harus NULL.dapat mendefinisikan sebuah arrayuntuk menampung karakter string char corporation[] tersebut. Di dalam melakukan hal ini, ={’G’,’r’,’a’,’p’,’h’,’I’,’c’,’s’,’\0’}; yang perlu pastikan adalah pada saatmengalokasikan satu tambahan isi yang menyatakan bahwa namearray untuk mengakhiri karakter null. adalah variabel string dengan nilaiSebagai contoh, jika string akan lebih awal berupa string: “Graphics”dari 19 karakter panjangnya, maka Bentuk inisialisasi yang lebih singkat:perlu mengalokasikan sebuah arraydengan 20 karakter, seperti contoh char corporation[ ] = "Graphics"; penulisan dibawah ini:char company[20];  atau contoh lain bisa juga ditentukan jumlah karakternya:instruksi tersebut diatas merupakan char company[20] = "Robotic Systems, instruksi untuk mendeklarasikan inc."; variabel string dengan panjangmaksimal 20 karakter (termasuk Pada bentuk penulisan diatas,karakter NULL). Deklarasi tersebut karakter NULL tidak perlu ditulis.sebenarnya tidak lain merupakan Secara implisit akan disisipkan olehdeklarasi array bertipe char. kompiler. Dalam penulisan yang perlu diperhatikan, bila corporation Pada sebuah konstanta string, dideklarasikan sebagai string,compiler string akan menunjukkan penugasan (assignment) suatu stringstring melalui alamat pertama ke variabel string dan tidakkarakter string, dalam hal ini, array diperkenankan menulis sepertiidentifier. Pada satu array dentifier dibawah ini:dengan tanpa tanda kurungdiinterprestasikan oleh compiler corporation = “Graphics"; sebagai alamat pertama yang masukpada array. Suatu string dalambahasa c didefinisikan sebagai satu 292 Direktorat Pembinaan SMK| 2008


Page 2

Dasar-dasar Pemrograman Komputer Bahasa Pemrorgraman}  Pada Borland C++ dapat pada menu Options/Compiler/Sourcemenggunakan komentar bersarang dipilih.asalkan opsi cek Nested comments1.11.2. Bagian Pengarah Kompiler Supaya lebih jelas mengenai bahasa C++ perhatikan program dibawah ini:Program 1.6# include <iostream.h>  void main ( ) {  char pesan [ ] = "Hello, C++ programmers!" ;  cout << pesan ;  return 0 ; }  Merupakan statement pre- Beberapa pengarah compilerprosesor, disebut juga pengarah antara lain: # define, # include, # if,compiler karena berfungsi mengatur # else, # elif, # endif, # ifdef, # ifndefproses kompilasi. iostream.hmerupakan file program yang a. Pengarah kompiler # definemengandung deklarasi kelaskelasyang diperlukan oleh objek cout. File- Untuk mendefinisikan suatufile dengan ekstensi .h yang berisi pengenal / konstanta yang nantinyadeklarasi fungsi-fungsi standar C ini, akan digantikan oleh praprosesordisebut secara umum sebagai file saat program dikompilasi. Perhatikanheader. contoh Program dibawah ini:# define SIZE 30  int array [SIZE] ; for (register int i = 0 ; i < SIZE ; i++) {   cout << array [ i ] ; } b. Pengarah Kompiler # Include Nama file yang dimaksud harus diapit symbol ‘ < ‘ dan ‘ > ‘ atau tanda kutip Berfungsi membaca file program dua ( “ … “).tertentu dan mengikutsertakan filetersebut dalam proses kompilasi.2008 | Direktorat Pembinaan SMK 43 Bahasa Pemrograman Dasar-dasar Pemrograman Komputerc. Pengarah Kompiler # If, # Else, # Elif, # Endif Digunakan untuk memilih bagian bersyarat dan program yang baikprogram yang akan dikompilasi. biasanya memanfaatkan teknik ini.Kompilasi cari ini disebut kompilasid. Pengarah Kompiler # Ifdef, # Ifndef Digunakan juga dalam kompilasi Pengarah compiler ini seringbersyarat. # Ifdef dapat dibaca: ‘jika digunakan untuk menandai bahwadidefinisikan’ dan # ifndef dapat suatu file sudah diikutsertakan dalamdibaca: ‘jika tidak didefinisikan’. kompilasi.1.11.3. Deklarasi Dan Definisi objek dan biasanya digunakan untuk mengatur alur program), dan Semua program C pada statement yang dapat dieksekusi /dasarnya tersusun dari rangkaian executable (bila dikompilasi akanpemanggilan fungsi yang bekerja menghasilkan kode objek).atas sekelompok data. Selainpemanggilan fungsi, program C Setiap pemanggilan fungsimengandung komponen lain yang maupun statement executable dalamdisebut statement. C harus diakhiri dengan tanda titik koma (;). Perhatikan Contoh program Statement C ada dua, yaitu : C++:statement yang tidak dapatdieksekusi / non executable ( biladikompilasi tidak menghasilkan kodeProgram 1.7#include <conio.h> #include <iostream>  using namespace std;  int main() {   char pesan [ ] = "Hello, Programmer C++ !" ;   cout << pesan;       getch();   return 0 ; } Keluaran programnya adalah:Hello, Programmer C++ !  Dalam contoh program C++ statement executable yangdiatas, return merupakan contoh menginstruksikan agar suatu fungsi 44 Direktorat Pembinaan SMK | 2008 Dasar-dasar Pemrograman Komputer Bahasa Pemrorgramanmengembalikan nilai balik tertentu. yang harus disediakan untuk dataContoh statement non executableadalah: If, else, dan while. Main () yang bersangkutan, sedangkanmerupakan contoh fungsi, sedangkanpesan adalah contoh data. Baik data fungsi perlu dideklarasikan agarmaupun fungsi harus dideklarasikan.Data perlu dideklarasikan agar compiler dapat memeriksa ketepatancompiler tahu berapa byte memori pemanggilan fungsi yang bersangkutan. Deklarasi fungsi sering disebut pula prototype fungsi.1.12. Input Dan OutputDi ANSI C, operasi input dan seperti strstrea.h, fstream.h, danoutput dilakukan dengan constrea.h.menggunakan fungsi-fungsi yang ada Stream adalah suatu logikadi header file stdio.h. contohnya device (peralatan logika) yanguntuk input dan output ke layer menghasilkan dan menerimamonitor digunakan perintah seperti informasi atau sebagai tempat yangprintf, scanf, putch, dan sebagainya. digunakan untuk menampungInstruksi input dan output ke file keluaran dan menampung alirandigunakan perintah seperti fread, data. Stream adalah nama umumfwrite, fputc, dan sebagainya. untuk menampung aliran dataBahasa C++ mempunyai teknik (contoh: file, keyboard, mouse),input dan output yang baru, yaitu: maupun untuk keluaran (contoh:menggunakan stream. Header file layer, printer). Dalam bahasa C++,untuk input dan output stream adalah input berarti membaca dari streamiostream.h dan beberapa file lain, dan output berarti menulis ke stream.Bentuk umum operator output adalah Dalam C++, menggunakansebagai berikut: escape sequences untuk merepresentasikan suatu karaktercout << ekspresi ;  yang tidak terdapat dalam tradisional simbol. Beberapa diantaranya :Bentuk umum operator Input adalah \ n : linefeed / baris baru sebagai berikut: \ b : back space  \ “ : petik ganda cin >> variable ; Program 1.8. contoh program versi ANSI C : 45# include <stdio.h>  void main ( ) {   int x ;   printf ( "Masukkan sebuah bilangan : \n" ) ;   scanf ( " %d ", &x ) ;   printf ( "Bilangan yang dimasukkan adalah %d\n ", x ) ; 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Dasar-dasar Pemrograman Komputer} Program 1.9 contoh program versi C++ :# include <iostream.h>  void main ( ) {   int x ;   cout << "Masukkan sebuah bilangan : " << endl ;   cin >> x ;   cout << "Bilangan yang dimasukkan adalah " << x << endl ; } Program 1.10 contoh program input dan output pada C++:# include <iostream.h>  void main ( ) {   int a ;   cout << "masukkan suatu bilangan :" ;   cin >> a ;   cout << "nilai tersebut ditambah 1 = ' << a+1 ;   return 0 ; } 1.15. Soal LatihanJawablah soal latihan dibawah ini dengan baik dan benar.1. Sebutkan bagian-bagian perangkat keras komputer2. Sebutkan lapisan perangkat lunak komputer personal3. Sebutkan berbagai macam memori yang digunakan pada komputer4. Apa yang dimaksud dengan piranti Input dan output (I/O).5. Jelaskan sistem bilangan yang digunakan oleh komputer6. Jelaskan proses translasi dari file sumber menjadi file executable7. Jelaskan struktur bahasa C++8. Sebutkan perbedan bahasa C dan C++ 46 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa PemrorgramanBAB 2BAHASA DAN ALGORITMA PEMROGRAMAN 2.1. Bahasa Pemrograman 2.2. Compiler dan Intepreter 2.3. Tipe Pemrograman 2.4. Algoritma 2.5. Ciri Algoritma 2.6. Penerapan Algoritma 2.7. Notasi Algoritma 2.8. Kalimat deskriptif pada Algoritma 2.9. Flow chart 2.10. Pseudo code 2.11. Penerjemahan ke kode sumber 2.12. Soal Latihan  2.1. Bahasa pemrograman Berbeda dengan bahasa alamiah, Bahasa atau dalam bahasa mis. Bahasa Indonesia, Inggris dsb.inggris language adalah suatu sistim yang merupakan bahasauntuk berkomunikasi. Bahasa tertulis alamiah(natural language), sintaksmenggunakan simbol (yaitu huruf) dan semantik bahasa pemrogramanuntuk membentuk kata. Dalam ilmu (komputer) ditentukan secara kaku,komputer,bahasa manusia disebut sehingga bahasa pemrograman jugabahasa alamiah (natural languages), disebut sebagai bahasa formaldimana komputer tidak bisa (formal language). Jadi, dalammemahaminya, sehingga diperlukan bahasa pemrograman yangsuatu bahasa komputer. Komputer digunakan sebagai alat komunikasimengerjakan transformasi data untuk memberikan perintah kepadaberdasarkan kumpulan perintah - komputer tidak berlaku kebebasanprogram - yang telah dibuat oleh berekspresi seperti laiknya dalampemrogram. Kumpulan perintah ini bahasa alamiah.harus dimengerti oleh komputer, Pemrograman dalam pengertianberstruktur tertentu (syntax) dan luas meliputi seluruh kegiatan yangbermakna. tercakup dalam pembuatan program, Bahasa pemrograman termasuk analisis kebutuhanmerupakan notasi untuk memberikan (requirement's analysis) dansecara tepat program komputer. keseluruhan tahapan dalam perencanaan (planning) ,2008 | Direktorat Pembinaan SMK 47 Bahasa Pemrograman Bahasa dan Algoritma Pemrogramanperancangan (design) dan (kode mesin), yaitu kode operasi suatu mesin tertentu. Bahasa inipewujudannya (implementation). bersifat khusus untuk mesin tertentu dan "dimengerti" langsung olehDalam pengertian yang lebih sempit, mesin, sehingga pelaksanaan proses sangat cepat. Bahasa mesinpemrograman merupakan kelompok komputer tertentu berlainan dengan bahasa mesinpengkodean (coding atau program kelompok komputer yang lain.writing = penulisan program) dan Abstraksi bahasa ini adalah kumpulan kombinasi kode biner "0"pengujiannya (testing) berdasarkan dan "1" yang sangat tidak alamiah bagi kebanyakan orang - kecualirancangan tertentu. insinyur pembuat mesin komputer. Karena tidak alamiah bagi Pemahaman yang lebih sempit kebanyakan orang, bahasa mesin juga disebut bahasa tingkat rendah.ini sering digunakan dalampembuatan program-program terapankomersial yang membedakan antarasystem analyst yang bertanggungjawab dalam menganalisakebutuhan, perencanaan danperancangan program denganpemrogram (programmer) yangbertugas membuat kode program danmenguji kebenaran program.Generasi bahasa pemrograman: 2.1.3. Bahasa Assembly Generasi I: machine language Bahasa rakitan (assembly Generasi II: assembly language : language) merupakan notasi untukAsssembler menyajikan bahasa mesin yang lebih Generasi III: high-level mudah dibaca dan dipahami olehprogramming language: C, manusia. Bahasa ini sudahPASCAL, dan sebagainya. menggunakan simbol alpabet yang Generasi IV: 4 GL (fourth- bermakna (mnemonic). Contoh “MOVgeneration language): SQL AX 1111”, pindahkan ke register AX nilai 1111.Proses data oleh komputer berdasarkan perintah bahasa rakitan2.1.1. Bahasa Tingkat Rendah adalah cepat. Meski demikian masih Merupakan bahasa assembly merepotkan-bahkan bagi kebanyakanatau bahasa mesin. Bahasa ini lebihdekat ke mesin (hardware), dimana pemrogram, karena masih haruspada high-level programminglanguages, suatu bahasa yang sudah mengingat-ingat tempatdekat pada bahasa manusia. Padabahasa ini akan lebih cepat dipahami penyimpanan data. Bahasa rakitanoleh programmer karena sifatnyayang dekat dengan bahasa manusia juga bersifat khusus untuk mesin tertentu. Contoh: Assembler2.1.2. Bahasa Mesin 2.1.4. Bahasa Tingkat Tinggi Bahasa mesin merupakan Adalah bahasa pemrogramanrepresentasi tertulis machine code yang dekat dengan bahasa manusia, kelebihan utama dari bahasa ini adalah mudah untuk di baca, tulis, maupun diperbaharui, sebelum bisa 48 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgramandijalankan program harus terlebih dibuat menggunakan bahasa tingkat tinggi pada suatu mesin komputerdahulu di-compile. Contoh Ada, Algol, bersistem operasi tertentu, hampir 100% bisa digunakan pada berbagaiBASIC, COBOL, C, C++, FORTRAN, mesin dengan aneka sistem operasi. Kalaupun ada perbaikan sifatnyaLISP, dan Pascal, dsb. Pada kecil sekali.generasi bahasa pemrograman 2.1.5. Bahasa Generasi 3 & 4terakhir sekarang ini, kedua cara Lebih dekat ke bahasa manusia dibandingkan dengan high-levelinterpretasi dan kompilasi programming languages. Biasanya dipakai untuk mengakses database.digabungkan dalam satu lingkungan Contoh perintah pada bahasa SQL: FIND ALL RECORDS WHEREpengembangan terpadu NAME IS "JOHN".(IDE=integrated development 2.1.6. Bahasa Pemrograman untuk tujuan tertentuenviron-ment). Dibawah ini merupakan TabelCara interpretasi memudahkan Bahasa Pemrograman untuk tujuan tertentu. (Mc. Connell, h 46)dalam pembuatan program secarainteraktif dan cara kompilasimenjadikan eksekusi program lebihcepat. Pertama programdikembangkan interaktif, kemudiansetelah tidak ada kesalahankeseluruhan program dikompilasi.Contoh bahasa program seperti iniadalah Visual BASIC yang berbasisBASIC dan Delphi yang berbasisPASCAL. Bahasa tingkat tinggibersifat portable. Program yang Tabel 2.1. Bahasa Pemrograman JENIS PROGRAM  BAHASA TERBAIK  BAHASA TERBURUK Data terstruktur  ADA, C /C++, PASCAL  Assembler, BASIC Proyek cepat  BASIC  PASCAL, ADA, Assembler Eksekusi cepat  Assembler, C  BASIC,Intrepreter  Language Kalkulasi matematika  FORTRAN  PASCAL Menggunakan memori  PASCAL, C  BASIC  dinamis Lingkungan memori terbatas   BASIC, Assembler, C  FORTRAN Program real‐time  ADA, Assembler, C  BASIC, FORTRAN Manipulasi string  BASIC, PASCAL  C Program mudah dikelola  PASCAL, ADA  C, FORTRAN Tabel Rasio pernyataan bahasa tingkat tinggi dengan kode bahasa rakitanyang setara. (Mc. Connell, h 46)2008 | Direktorat Pembinaan SMK 49 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman Tabel 2.2. Rasio bahasa tingkat tinggi dengan kode bahasa rakitan BAHASA  RASIO  Assembler  1:  1  ADA  1 : 4.5   Quick / Turbo / Basic  1 : 5   C   1 : 2.5   FORTRAN  1 : 3   PASCAL  1 : 3.5    2.2.2.Interpreter2.2. Compiler dan Intepreter Berbeda dengan compiler, Interpreter menganalisis dan Compiler Adalah suatu program mengeksekusi setiap baris dariyang menterjemahkan bahasa program tanpa melihat programprogram (source code) ke dalam secara keseluruhan. Keuntungan daribahasa objek (object code). Compiler Interpreter adalah dalam eksekusimenggabungkan keseluruhan bahasa yang bisa dilakukan dengan segera.program dikumpulkan kemudian Tanpa melalui tahap kompilasi, untukdisusun kembali. alasan ini interpreter digunakan pada saat pembuatan program berskala2.2.1. Tahapan Kompilasi: besar. Dalam melakukan penulisanbahasa pemrograman komputer adabeberapa tahapan-tahapan yangharus dilakukan antara lain:Pertama source code ( program yang 2.3. Tipe Pemrogramanditulis) dibaca ke memory komputer. Dalam Bahasa pemrograman Source code tersebut diubah komputer terdapat tipe menjadi object code (bahasa pemrograman. Tipe pemrograman assembly) yang pertama adalah pemrograman Object code dihubungkan terstruktur dan prosedural. dengan library yang dibutuhkan untuk membentuk file yang bisa 2.3.1. Pemrograman Terstruktur di eksekusi. Pemrograman terstruktur adalahCompiler memerlukan waktu untuk cara pemrosesan data yangmembuat suatu program yang dapat terstuktur. Terstruktur dalam: analisa,dieksekusi oleh komputer. Tetapi, cara dan penulisan program. Prinsipprogram yang diproduksi oleh pemrograman terstruktur adalahCompiler bisa berjalan lebih cepat mempunyai ciri sebagai berikut:dibandingkan dengan yang  Menggunakan rancangandiproduksi oleh Interpreter, dan pendekatan dari atas ke bawahbersifat independen. (top down design), 50 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman Membagi program ke dalam  Menekankan fungsionalitas. modul-modul logika yang sejenis,  Cocok untuk sistem yang banyak Menggunakan sub-program untuk mempunyai fungsi independen. proses-proses sejenis yang sering Gaya penulisan program digunakan, terstruktur: Menggunakan Menggunakan pengkodean indentasi sehingga jelas struktur terstruktur: IF ........... THEN, dan kontrol program. DO ........ WHILE dan lain-lainnya, Memudahkan pembacaan, Menghindari penggunaan perintah pemahaman, penelusuran GO TO bila tidak diperlukan, kesalahan dan pembuatan Gunakan nama-nama bermakna koreksi. (mnemonic names), dan Membuat dokumentasi yang 2.3.2. Pemrograman procedural akurat dan berarti. Dalam perencanaan dan dan terstrukturperancangan dari atas ke bawah, Bahasa pemrogramankategori dan penyelesaian masalah prosedural adalah bahasadimulai dari bagian yang utama pemrograman yang mendukungkemudian dibagi menjadi bagian pembuatan program sebagaiyang lebih kecil. Rancangan cara ini kumpulan prosedur. Prosedur-memudahkan penulisan, pengujian, prosedur ini dapat saling memanggilkoreksi dan dokumentasi program. dan dipanggil dari manapun dalamTahapan rancangan atas ke bawah program dan dapat menggunakandalam pemrograman: parameter yang berbeda-beda untuk Tentukan keluaran (output) yang setiap pemanggilan. Prosedur adalah diminta, masukan (input) yang bagian dari program untuk diperlukan dan proses-proses melakukan operasi-operasi yang utama yang diperlukan untuk sudah ditentukan dengan transformasi data. menggunakan parameter tertentu. Membagi proses utama ke dalam Bahasa pemrograman terstruktur modul-modul fungsional. adalah pemrograman yang Buat algoritma msing-masing mendukung abstraksi data, modul, dari modul utama ke sub- pengkodean terstruktur dan kontrol sub modul. program terstruktur. Kontrol programSetiap modul dalam proses terstruktur adalah sebagai berikut:rancangan atas ke bawah biasanya 1. Runtun - urut (sequence)dibatasi dalam isi maupun batasan- 2. Pilihan (selection)batasan berikut: 3. Pengulangan (repetition - loop) Setiap modul hanya mempunyai 4. Batasan Masalah Merencanakan satu masukan dan keluaran sistim dan spesifikasi program: Setiap modul hanya mewakili satu Siapa yang akan menggunakan fungsi program. program dan untuk apa? denganRancangan (design) terstruktur: cara: Membagi program menjadi  Menentukan tujuan dan hasil subprogram yang akan dicapai2008 | Direktorat Pembinaan SMK 51 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman Menentukan hal-hal yang bagaimana algoritma penyelesaian masalahnya. Sebelum mengetahui diperlukan oleh sistim lebih lanjut apa yang dimaksud dengan algoritma pemrograman, kita Pengumpulan data bahas dahulu apa yang dimaksud dengan pemrograman komputer atau5. Pengembangan Model Pembuatan program komputer.model dari sistim yang akan kita Definisi program komputer adalah sederetan perintah-perintahbangun, model adalah suatu (instruksi) yang harus dikerjakan oleh komputer untuk menyelesaikangambaran sederhana dari sistim masalah. Deretan perintah-perintah tersebut tidak bisa kita tulis secarayang kita buat. Dengan sembarangan atau semau kita tetapi harus teratur agar komputer dapatpembuatan model akan terlihat memahami dan memprosesnya dengan baik sehingga permasalahandengan jelas hubungan antara yang ada dapat diselesaikan dengan baik pula.objek-objek dalam sistim yang Untuk itulah diperlukan algoritmaakan kita bangun. Untuk karena definisi dari algoritma itu sendiri menurut Microsoft Presspenyelesaian aritmatik, biasanya Computer and Internet Dictionary (1998) adalah urutan langkah logismodel dibuat dalam bentuk rumus tertentu untuk memecahkan suatu masalah. Yang ditekankan adalahmatematik. Contoh: untuk urutan langkah logis, yang berarti algoritma harus mengikuti suatumembuat program luas_lingkaran urutan tertentu, tidak boleh melompat-lompat dan disusun secarakita membuat model matematis sistematis. Sedangkan yang dimaksud dengan langkah-langkahc = axb logis adalah kita harus dapat mengetahui dengan pasti setiap6. Rancangan algoritma Pembuatan langkah yang kita buat.urutan instruksi yang akan ditulis Menurut Sjukani (2005), algoritma adalah alur pemikiranpada program ( dijelaskan lebih dalam menyelesaikan suatu pekerjaan yang dituangkan secaralanjut) tertulis. Yang ditekankan pertama adalah alur pikiran, sehingga7. Pemrograman Implementasi algoritma seseorang dapat berbeda dari algoritma orang lain. Sedangkanalgoritma ke dalam program penekanan kedua adalah tertulis, yang artinya dapat berupa kalimat,(algoritma sendiri dalam komputer gambar, atau tabel tertentu. Jadiadalah merupakan program). Direktorat Pembinaan SMK | 20088. Uji dan Validasi Pengujianterhadap program : sepertikesalahan penulisan (syntax error), kesalahan saat eksekusi (runtimeerror) kesalahan logika program(program berjalan tapimenghasilkan output yang salah-fatal error).Dokumentasi Pembuatan catatanpada program terutama pada modul-modul yang rumit.2.4. Algoritma Pemrograman komputer danalgoritma pemrograman adalah duahal yang tidak dapat dipisahkankarena pembuatan programkomputer akan lebih sulit dan lamatanpa mengetahui dengan pasti 52 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgramandapat disimpulkan bahwa algoritma Demikian juga dengan pemrogramanlebih merupakan alur pemikiran untuk komputer, kita juga tidak harusmenyelesaikan suatu pekerjaan atau mengikuti algoritma yang sudah ada,suatu masalah daripada pembuatan tetapi kita dapat menambah ataupunprogram komputer. Algoritma inilah mengurangi bahkan membuatyang kemudian dijadikan landasan algoritma yang baru asalkan(pedoman) untuk membuat program permasalahan yang ada dapatkomputer. terpecahkan dengan baik. Meskipun algoritma tidak dapat 2.5. Ciri Algoritmadipisahkan dengan pemrogramankomputer tetapi jika anda Oleh karena algoritma digunakanberanggapan bahwa algoritma identikdengan pemrograman komputer, untuk memecahkan suatuanda salah besar. Hal ini dikarenakandalam kehidupan sehari-haripun permasalahan maka algoritmaseringkali kita berhadapan denganmasalah-masalah yang kalau kita tersebut harus menghasilkan suatucermati mengikuti kaidah-kaidahpenyelesaian secara algoritma. jawaban atas permasalahan tersebut.Misalkan saja cara-cara memasakmie instan, membuat kopi atau teh, Dengan kata lain algoritma harusmemasak makanan yang dinyatakandalam bentuk resep, dan masih memiliki paling tidak satu keluaran.banyak lagi yang semuanya itu dapatkita sebut sebagai algoritma. Pada Sedangkan masukan dari algoritmamie instan misalnya, biasanya padabungkusnya terdapat urutan langkah- dapat nol (tidak ada) atau banyaklangkah bagaimana cara memasakatau menyajikannya. Bila langkah- masukan (data). Yang dimakdudlangkah tersebut tidak logis, makadapat dipastikan bahwa kita akan dengan nol masukan adalah jikamemperoleh hasil yang tidak sesuaidengan yang diharapkan. Kita harus algoritma itu hanya untukmembaca satu demi satu langkah-langkah pembuatannya kemudian menampilkan suatu informasi saja.mengikutinya agar memperoleh hasilyang baik. Misalnya output “Hello  World” yang Yang harus diingat disini adalah sering kita temukan pada tutorial-kita tidak harus mengikuti langkah-langkah yang sudah diberikan, tetapi tutorial saat kita baru belajarkita dapat memodifikasinya ataubahkan membuat resep atau cara membuat program dari suatu bahasabaru yang lebih baik tetapimenghasilkan hal yang sama pemrograman tertentu. Kedua hal(mempunyai tujuan yang sama), yaitudapat menikmati hasil masakan. diatas, memiliki paling sedikit satu2008 | Direktorat Pembinaan SMK keluaran dan dapat memiliki nol atau  banyak masukan, merupakan dua dari beberapa ciri algoritma. Tugas algoritma dikatakan selesai kalau algoritma tersebut sudah menghasilkan satu atau lebih jawaban atas permasalahan yang ada. Dengan demikian setelah mengerjakan langkah-langkah penyelesaian masalah, maka algoritma tersebut harus berhenti tidak melakukan proses apapun. Berhenti di sini artinya adalah jika diterjemahkan ke dalam bentuk program dan program dijalankan, 53Bahasa Pemrograman Bahasa dan Algoritma Pemrogramanmaka setelah menghasilkan suatu ember B ke ember A? Apakahoutput, program dapat langsung permasalahan dapat diselesaikanberhenti atau menunggu instruksi dengan cara (algoritma) tersebut?lebih lanjut dari pengguna program Jawabannya adalah tidak, karenaseperti mengulang perhitungan lagi, algoritma tersebut tidak logis dankeluar program (menghentikan hasilnyapun tidak sesuai denganprogram), dan lain sebagainya. yang diinginkan karena algoritmaDengan demikian ciri ketiga dari tersebut akan menghasilkan ember Aalgoritma adalah setelah selesai akan berisi campuran air dan minyakmengerjakan langkah-langkah tanah sedangkan ember B akanpenyelesaian masalah, algoritma kosong.harus berhenti. Bagaimanakah cara (algoritma) Ciri keempat dari algoritma yang benar dari permasalahanadalah setiap langkah yang dibuat tersebut? Algoritma yang benarharus dibuat sesederhana mungkin adalah pindahkan dahulu isi ember Atetapi efektif agar dapat dipahami ke ember lain (misal ember C),oleh pemroses (manusia maupun kemudian setelah ember A kosongkomputer) sehingga dapat pindah isi ember B ke ember A.diselesaikan dalam waktu yang Langkah terakhir adalah mengisisingkat serta masuk akal. Sedangkan ember B dengan minyak tanah yangciri yang terakhir adalah setiap ada di ember C. Inilah algoritma yanglangkah dalam algoritma harus paling logis dan menghasilkandidefinisikan dengan tepat dan jelas jawaban yang benar atassehingga tidak berarti-dua permasalahan tersebut.(ambiguitas) sehingga menimbulkan Seperti yang telah dikemukakankesalahan dalam penafsiran oleh sebelumnya, setiap orangpemroses mempunyai cara pemecahan sendiri- sendiri sehingga setiap orang dimungkinkan mempunyai algoritma2.6. Penerapan Algoritma yang berbeda-beda untuk Berikut adalah contoh memecahkan suatu permasalahanpemecahan masalah (algoritma) yang sama. Contohnya adalahyang diambil dari permasalahan yang permasalahan di atas. Langkahmungkin sering kita hadapi dalam pertama bisa saja yang dipindahkehidupan kita sehari-hari. Diketahui bukan isi ember A ke ember C dulu,dua buah ember A dan B dimana tetapi isi ember B yang dipindahkanember A berisi air dan ember B berisi ke dalam ember C terlebih dahulu.minyak tanah. Jika diinginkan isi Setelah itu baru memindahkan isikedua ember itu saling ditukar ember A ke dalam ember B dansehingga ember A berisi minyak terakhir memindah isi ember C ketanah dan ember B berisi air, ember A. Algoritma ini sedikitbagaimanakah caranya? Apakah berbeda tetapi tetap menghasilkancukup dengan cara (membuat jawaban yang sama atas persoalanalgoritma), tuangkan isi ember A ke yang ada.ember B dan kemudian tuangkan isi 54 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman2.7. Notasi Algoritma tiga buah bilangan yang dimasukkan. Bagaimanakah algoritmanya? Algoritma mempunyai aturan 2.8. Deskriptif Algoritmapenulisan sendiri yang disebut Algoritma dengan uraian kalimatdengan notasi algoritma. Notasi deskriptif adalah notasi algoritma yang paling sederhana karenaalgoritma ini tidak tergantung dari algoritma ini menggunakan bahasa sehari-hari. Untuk permasalahanspesifikasi bahasa pemrograman yang sederhana penggunaan notasi ini sangatlah mudah, akan tetapitertentu dan komputer yang untuk permasalahan yang lebih komplek dan rumit, penggunaanmengeksekusinya. Hal ini notasi ini akan lebih sulit dan sering kali terjadi ambigu dalam langlah-dikarenakan notasi algoritma langkah penyelesaian masalah. Oleh karena itulah untuk kasus-kasus yangbukanlah notasi bahasa lebih komplek, penggunaan notasi ini jarang sekali bahkan tidak digunakan.pemrograman. Notasi algoritma Permasalahan di atas, yaitumerupakan bahasa universal yang mencari bilangan terbesar dari tiga buah bilangan yang dimasukkan,dapat diterima oleh semua bahasa tergolong permasalahan yang sederhana, jadi algoritmanya masihpemrograman yang ada. Oleh sebab mudah dan dapat dijelaskan dengan uraian kalimat deskriptif sebagaiitu algoritma yang baik harus dapat berikut:diterjemahkan ke dalam bentuksource code dari semua bahasapemrograman yang ada. Untuk membuat algoritma darisuatu permasalahan, biasanyadigunakan salah satu dari tiga buahnotasi algoritma yang dikenal, yaituuraian kalimat deskriptif, flow chart,atau pseudo code. Sebagai contohpermasalahan, jika diinginkan sebuahprogram komputer yang dapatmengetahui bilangan terbesar dari1. Masukkan sembarang bilangan sebanyak tiga buah. 2. Ambil bilangan pertama dan set maksimum‐nya sama dengan bilangan pertama. 3. Ambil bilangan kedua dan bandingkan dengan maksimum. 4. Apabila  bilangan  kedua  lebih  besar  dari  maksimum  maka  ubah  maksimum‐nya  menjadi sama dengan bilangan kedua. 5. Ambil bilangan ketiga dan bandingan dengan maksimum. 6. Apabila  bilangan  ketiga  lebih  besar  dari  maksimum  maka  ubah  lagi  maksimum‐ nya menjadi sama dengan bilangan ketiga.7. Variabel maksimum akan berisi bilangan yang terbesar dan tampilkan hasilnya.  Algoritma dengan uraian kalimat kalimat deskriptif) yang ditulis secaradeskriptif seperti di atas sudah jarang lebih sistematis dan efisien sehinggasekali kita temukan karena kadang lebih mudah untuk memahaminya.kala agak sulit untuk memahaminya. Algoritma tersebut adalah sebagaiYang paling banyak kita temukan berikut:adalah algoritma (dengan uraian2008 | Direktorat Pembinaan SMK 55 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman 1. Masukkan a, b, dan c.  2. mak  a.  3. Jika b > mak, kerjakan langkah ke‐4. Jika tidak, kerjakan langkah ke‐5.  4. mak  b.  5. Jika c > mak, kerjakan langkah ke‐6. Jika tidak, kerjakan langkah ke‐7.  6. mak  c.  7. Tulis mak.   Dalam notasi algoritma, baik sehingga penerjemahannya adalahmenggunakan notasi algoritma mak = adengan uraian kalimat deskriptif, flowchart maupun pseudo code, kita tidakmenggunakan tanda = (sama 2.9. Flow Chartdengan) tetapi menggunakan simbol Notasi algoritma yang palinganak panah ke arah kiri () seperti banyak digunakan adalah flow chart karena bentuknya yang sederhanayang terlihat pada langkah ke-2, 4, dan mudah dipahami. Flow chart (diagram alir) adalah penggambarandan 6. Sebagai contoh pada langkah secara grafik dari langkah-langkah pemecahan masalah yang haruske-2, arti dari notasi tersebut adalah diikuti oleh pemroses. Flow chart terdiri atas sekumpulan simbol,nilai variabel a (yang ada di sebelah dimana masing-masing simbol menggambarkan suatu kegiatankanan anak panah) diberikan kepada tertentu. Flow chart diawali dengan penerimaan masukan (input),variabel mak (yang ada di sebelah pemrosesan masukan, dan diakhiri dengan menampilkan hasilnyakiri anak panah). Dengan demikian (output).jika nilai variabel a adalah 10, maka Adapun simbol-simbol yang sering digunakan untuk menyusunnilai mak juga 10 atau dalam flow chart (dalam microsoft visio) adalah sebagai berikut :penulisan secara matematis mak = a. Penggunaan anak panah inidikarenakan, seperti yang telahdikemukakan sebelumnya, algoritmatidak diperuntukkan untuk suatubahasa pemrograman tertentu, tetapidapat diaplikasikan atauditerjemahkan ke dalam bentuksource code dari semua bahasapemrograman yang ada. Dalampascal misalnya, notasi yang 1) Masukandigunakan untuk tanda = (samadengan) adalah := (titik dua Masukan merupakan kegiatandilanjutkan dengan tanda samadengan) sehingga langkah ke-2 akan penerimaan data yangditerjemahkan menjadi mak := a.Akan tetapi dalam bahasa C++ disimbolkan dengan jajaranmaupun Java, tanda = (samadengan) masih tetap digunakan genjang. Kita dapat menuliskan masukan yang diperlukan pada suatu waktu secara satu per satu maupun secara keseluruhan, akan tetapi untuk alasan efisiensi ruang gambar biasanya masukan 56 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman dituliskan bersamaan secara keseluruhan. Gambar 2.3. Simbol proses Gambar 2.1. Simbol masukan 4) Keluaran Keluaran adalah hasil dari2) Masukan manual pemrosesan data dan merupakan Untuk masukan secara manual jawaban atas permasalahan yang yang dimasukkan melalui ada. Keluaran ini harus keyboard, atau perangkat input ditampilkan pada layar monitor lainnya seperti barcode reader, agar dapat dibaca oleh pengguna kita dapat menggunakan simbol program. Sama seperti aturan masukan secara manual. Sama pada simbol-simbol sebelumnya, dengan simbol masukan, pada penulisan hasil pemrosesan data simbol masukan manual ini untuk dapat dilakukan secara satu per alasan efisiensi ruang gambar satu maupun secara keseluruhan. biasanya masukan juga dituliskan bersamaan secara keseluruhan. Gambar 2.4. Simbol keluaran 5) Percabangan Yang dimaksud dengan Gambar 2.2. Simbol masukan percabangan disini adalah suatu manual kegiatan untuk mengecek atau3) Proses Data yang dimasukan kemudian memeriksa suatu keadaan diproses untuk menghasilkan jawaban atas persoalan yang apakah memenuhi suatu kondisi ingin dipecahkan. Kegiatan memproses data ini disimbolkan tertentu atau tidak. Jadi dalam dengan persegi panjang. Sama seperti simbol pada masukan, percabangan ini, kita harus penulisan operasi-operasi pada data dapat dilakukan secara satu menuliskan kondisi apa yang per satu maupun secara keseluruhan. harus dipenuhi oleh suatu keadaan. Hasil dari pemeriksaan keadaan ini adalah YA atau TIDAK. Jika pemeriksaan keadaan menghasilkan kondisi yang benar, maka jalur yang dipilih adalah jalur yang berlabel YA, sedangkan jika pemeriksaan keadaan menghasilkan kondisi yang salah, maka jalur yang2008 | Direktorat Pembinaan SMK 57 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman dipilih adalah jalur yang berlabel suatu sub rutin pada program TIDAK. Berbeda dengan aturan utama (main program) yang akan pada simbol-simbol sebelumnya, anda pelajari pada bagian atau penulisan kondisi harus dilakukan bab lain pada buku ini. Aturan secara satu per satu (satu notasi penulisan simbol sub rutin sama percabangan untuk satu kondisi). dengan simbol percabangan, yaitu penulisan nama sub rutin dilakukan secara satu per satu.Gambar 2.5. Simbol percabangan6) Sub rutin Gambar 2.6. Simbol sub rutin Sub rutin adalah suatu bagian dalam program yang dapat 7) Arah aliran melakukan (atau diberi) tugas tertentu. Jadi sub rutin Arah aliran merupakan jalur yang merupakan “program kecil” yang menjadi bagian dari suatu harus diikuti dan merupakan garis program yang besar. Sub rutin ada dua macam, yaitu prosedur penghubung yang (procedure) dan fungsi (function). Perbedaan antara keduanya menghubungkan setiap langkah adalah setelah dipanggil prosedur tidak mengembalikan suatu nilai pemecahan masalah yang ada sedangkan fungsi selalu mengembalikan suatu nilai. dalam flow chart. Arah aliran ini Dalam bahasa C++ kedua sub rutin tersebut dijadikan satu yaitu disimbolkan dengan anak panah function, sedangkan untuk Java menggunakan class dimana Gambar 2.7. Simbol arah aliran keduanya bisa diatur untuk dapat mengembalikan nilai atau tidak 8) Terminator dapat mengembalikan nilai. Sub rutin ini akan didiskusikan pada Terminator berfungsi untuk bab tersendiri. Sub rutin memiliki suatu flow menandai titik awal dan titik akhir chart yang berdiri sendiri diluar flow chart utama. Jadi dalam dari suatu flow chart. Simbol simbol sub rutin, kita cukup menuliskan nama sub rutinnya terminator ini diberi label MULAI saja, sama seperti jika kita melakukan pemanggilan terhadap untuk menandai titik awal dari 58 flow chart dan label SELESAI  untuk menandai titik akhir dari flow chart. Jadi dalam sebuah flow chart harus ada dua simbol terminator, yaitu simbol terminator untuk MULAI dan SELESAI. Direktorat Pembinaan SMK | 2008Bahasa dan Algoritma Pemrograman Bahasa PemrorgramanGambar 2.8. Simbol terminator (a) (b)9) Konektor Gambar 2.9. Simbol konektor on page (a) dan off page (b)Konektor berfungsi untuk 10) Dokumenmenghubungkan suatu langkah Dokumen merupakan tampilan data secara fisik yang dapatdengan langkah lain dalam dibaca oleh manusia. Data ini biasanya merupakan hasilsebuah flow chart dengan pemecahan masalah (informasi) yang telah dicetak (print out).keadaan on page atau off page. Gambar 2.10. Simbol dokumenYang dimaksud dengan konektor Berikut adalah flow chart untukon page adalah konektor yang permasalahan yang diberikan (mencari bilangan terbesar dari tigadigunakan untuk menghubungkan bilangan acak yang dimasukkan)suatu langkah dengan langkahlain dalam satu halaman.Sedangkan konektor off pageadalah konektor untukmenghubungkan suatu langkahdengan langkah lain dalamhalaman yang berbeda. Konektorini digunakan apabila ruanggambar yang kita gunakan untukmenggambar flow chart tidakcukup luas untuk memuat flowchart secara utuh, jadi perludipisahkan atau digambar dihalaman yang berbeda.2008 | Direktorat Pembinaan SMK 59 Bahasa Pemrograman Bahasa dan Algoritma PemrogramanMulai  Yaa, b, c  Maksimum    bMaksimum     a  Maksimum < b Tidak Ya Maksimum < c Maksimum    c Tidak Maksimum Selesai Gambar 2.11. Flowchart  pemrograman sangatlah mudah meskipun penggunaannya tidak2.10. Pseudo code sepopuler flow chart. Pseudo code adalah algoritma Dalam penulisannya, pseudoyang bentuknya (strukturnya) sangat code harus terdiri dari tiga bagian,mirip dengan bahasa pemrograman yaitu :khususnya bahasa pemrogramanterstruktur seperti pascal. Kemiripan 1. Judul algoritmaini merupakan keuntungan dari Bagian yang terdiri atas namapseudo code karena implementasi algoritma dan penjelasanatau penerjemahan algoritma kedalam source code suatu bahasa Direktorat Pembinaan SMK | 2008 60 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman (spesifikasi) dari algoritma 3. Deskripsi tersebut. Nama sebaiknya singkat dan menggambarkan Bagian ini berisi uraian langkah- apa yang dapat dilakukan oleh algoritma tersebut. langkah penyelesaian masalah2. Deklarasi yang ditulis dengan Bagian untuk mendefinisikan semua nama yang digunakan di menggunakan aturan-aturan yang dalam program. Nama tersebut dapat berupa nama tetapan, akan dijelaskan selanjutnya. peubah atau variabel, tipe, prosedur, dan fungsi. Algoritma untuk permasalahan di atas yaitu mencari bilangan terbesar dari tiga bilangan acak yang dimasukkan dengan menggunakan pseudo code adalah:Algoritma bilangan_terbesar{algoritma ini mencari bilangan terbesar dari tiga bilangan yang dimasukkan} deklarasi   a,b,c,mak : integer deskripsi   read(a,b,c)   mak  a   if (mak<b)     mak  b   else if(mak<c)     mak  c   end if   write(mak)   Dalam pseudo code, garis C++ atau bahasa lainnya sepertibawah harus digunakan untuk kata Java maka sebaiknya kitaalgoritma (yang diikuti oleh judul dari mengetahui lebih dahulu langkah-algoritma), kata deklarasi, kata langkah yang biasa dilakukan untukdeskripsi, tipe data, read, write, if, membuat suatu program komputer.else, end if, for, end for, while, end Langkah-langkah tersebut adalah :while, do while, dan end do while 1. Mendefinisikan permasalahan2.11. Penerjemahan ke kode Ini merupakan langkah pertamasumber yang sering dilupakan orang. Menurut hukum Murphy (Henry Sebelum membahas mengenai Ledgard): “Semakin cepatpenerjemahan algoritma ke dalam menulis program, akan semakinbentuk source code bahasa lama kita dapatpemrograman (program komputer) menyelesaikannya”. Hal ini terutama dirasakan apabila kita2008 | Direktorat Pembinaan SMK membuat program untuk  61Bahasa Pemrograman Bahasa dan Algoritma Pemrograman permasalahan yang komplek. perangkat keras dan platform (sistem operasi) lainnya. Oleh karena itu sebelum kita 5. Menguji program Setelah selesai menulis source menulis source code suatu code (program sudah jadi), ujilah program tersebut dengan segala program sebaiknya kita macam kemungkinan yang ada, termasuk error-handling, sehing- menentukan atau ga program tersebut benar-benar handal dan layak untuk mengidentifikasi terlebih dahulu digunakan. 6. Menulis dokumentasi inti dari permasalahannya, Dokumentasi sangatlah penting agar pada suatu saat jika kita kemudian apa saja yang dapat ingin mengembangkan program, kita tidak mengalami kesulitan dan harus dipecahkan dengan dalam membaca source code yang sudah kita tulis. Cara paling bantuan komputer, dan yang mudah dan sederhana dalam membuat suatu dokumentasi terakhir adalah apa masukan adalah dengan menuliskan komentar-komentar kecil pada untuk programnya dan suatu baris (atau suatu bagian dari source code) tentang apa bagaimana nanti keluarannya. maksud dari kode-kode tersebut dan apa kegunaannya, kemudian2. Menemukan solusi variabel apa saja yang digunakan dan untuk apa, serta parameter- Setelah mendefinisikan masalah, parameter yang ada pada suatu prosedur dan fungsi. maka langkah berikutnya adalah 7. Merawat program Program yang sudah jadi menentukan solusinya. Jika sebaiknya juga dilakukan perawatan untuk mencegah permasalahan terlalu komplek, munculnya bug yang sebelumnya tidak terdeteksi. Selain itu juga maka ada baiknya masalah berguna untuk menambah fasilitas-fasilitas baru yang dahulu tersebut dipecah menjadi sewaktu dibuat belum ada. beberapa modul kecil dapat berupa prosedure, fungsi, atau class sehingga akan lebih mudah untuk diselesaikan. Penggunaan modul ini akan membuat program utamanya menjadi lebih singkat, mudah untuk dilihat dan dianalisis untuk tujuan debuging serta untuk pengembangan dari program.3. Memilih algoritma Pilihlah (atau buatlah) algoritma yang benar-benar sesuai dan efisien untuk permasalahan yang diberikan.4. Memilih bahasa pemrograman dan menulis source code program Bahasa pemrograman yang digunakan hendaknya bahasa yang memang sudah anda kuasai dengan baik. Atau jika masih Pada bab ini kita hanya fokus dalam tahap belajar, pilihlah pada langkah pertama sampai bahasa pemrograman yang dengan langkah keempat saja. mudah dipelajari dan digunakan Sedangkan untuk dapat serta memiliki tingkat menerjemahkan notasi algoritma kompatibilitas tinggi dengan yang telah dibuat ke dalam bentuk 62 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgramansource code suatu bahasa 1. Sequence Process, merupakanpemrograman, seharusnya kita instruksi yang dikerjakan secaramamahami terlebih dahulu bahasa sekuensial (berurutan).pemrograman yang akan kita 2. Selection Process, adalahgunakan, seperti aturan tata instruksi yang dikerjakan jikabahasanya, intruksi-instruksi yang memenuhi suatu kriteria ataudigunakan, tipe data, dan masih kondisi (keadaan) tertentu.banyak lagi. Semua itu akan kita 3. Iteration Process, yaitu instruksipelajari satu persatu dibagian lain yang dikerjakan selamapada buku ini. Oleh karena kita baru memenuhi suatu kriteria atauakan mempelajari bahasa kondisi (keadaan) tertentu.pemrograman yaitu C++ atau 4. Concurrent Process, beberapaprogram lainnya seperti java, maka instruksi dikerjakan secarauntuk mempermudah pemahaman bersama.tentang algoritma akan diberikancontoh-contoh permasalahan Berikut merupakan contoh- contoh permasalahan, algoritmasederhana yang sering dijumpai penyelesaian dalam tiga notasi algoritma serta penerjemahannyadalam pemrograman, bagaimana dalam bahasa pemrograman C++ atau program lainnya seperti java.algoritmanya dalam bentuk tiga 1. Masalah penukaran isi embernotasi algoritma yang telah diberikan, (contoh sequence process). Masalah penukaran isi emberdan kemudian bagaimana dapat kita aplikasikan untuk masalah berikut ini. Mula-mula Amengimplementasikan atau bernilai 19 dan B bernilai 33. Jika nilai kedua variabel A dan Bmenerjemakan algoritma tersebut ke tersebut ditukar, A menjadi 33 dan B menjadi 19, makadalam bentuk source code bahasa algoritmanya adalah :pemrograman C++ atau programlainnya seperti java.Untuk membantu penerjemahanalgoritma kita juga harusmemperhatikan jenis-jenis prosesyang biasanya kita temukan dalamalgoritma. Dalam algoritma adaempat jenis proses yang dikenal,yaitu :Menggunakan uraian kalimat deskriptif1) Set nilai variabel A  19 dan B  33 2) Set nilai dari variabel C menjadi sama dengan variabel A. 3) Set nilai variabel A menjadi sama dengan B. 4) Set nilai variabel B menjadi sama dengan C. 5) Tampilkan nilai variabel A dan B. Algoritma diatas dapat juga ditulis seperti dibawah ini: 631) A  19 dan B  33 2) C  A 3) A  B 2008 | Direktorat Pembinaan SMK Bahasa Pemrograman Bahasa dan Algoritma Pemrograman4) B  C 5) Tulis A dan B Jika algoritma tersebut diatas digambar menggunakan flow chart adalahsebagai berikut:      Mulai A  19 B  33     CA AB BC A, B Selesai     Gambar 2.12. Gambar flowchart 64 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman a) Menggunakan pseudo codeAlgoritma tukar_data{algoritma ini digunakan untuk menukarkan dua buah data } deklarasi   a,b,c : integer deskripsi   a  19   b  33   c  a   a  b   b  c   write(a,b)   Dari ketiga notasi algoritma di karena itu penerjemahan notasiatas dapat disimpulkan bahwa algoritma ke dalam bentuk sourcelangkah-langkah pemecahan code bahasa pemrograman jugamasalah yang telah dibuat dapat harus mengikuti langkah-langkahdibagi dalam tiga kelompok, yaitu yang diberikan dalam ketigamemberi nilai variabel A dan B, algoritma. Berikut adalahmenukarkan nilainya, dan terakhir penerjemahan algoritma ke dalamadalah menampilkannya. Oleh bahasa C++.1. #include <iostream> 2. using namespace std; 3. int main() { 4.    int a = 19, b = 33; 5.   int c = a; 6.    a = b; 7.    b = c; 8.   cout << “a = “ << a << endl; 9.    cout << “b = “ << b; 10.   return 0; 11.}  Langkah ke-4 merupakan menampilkan data yang telah ditukar,pemberian nilai variabel A dan B. ada dalam langkah ke-8 dan 9.Langkah selanjutnya, langkah ke-5 Langkah-langkah yang lainnyasampai dengan langkah ke-7, merupakan aturan tata bahasa dalammerupakan proses penukaran data. bahasa C++ yang akan dijelaskanDan langkah terakhir, yaitu dalam bab-bab selanjutnya.2008 | Direktorat Pembinaan SMK 65 Bahasa Pemrograman Bahasa dan Algoritma PemrogramanSedangkan penerjemahan algoritma- Java adalah sebagai berikut:algoritma tersebut dalam bahasa 1. class tukarData {  2. public static void main(String[ ] args) {  3.      int a=19, b=33;  4.      int c = a;  5.      a = b;  6.      b = c;  7.      System.out.println("a = " + a);  8.      System.out.println("b = " + b);  9.    }  10. }   Langkah ke-3 merupakan dari algoritma tersebut ke dalam pemberian nilai variabel A dan B, bentuk source code bahasa C++ langkah ke-4 sampai dengan atau program lainnya seperti java, langkah ke-6 merupakan proses kita harus menggunakan klausa penukaran data, dan langkah ke- if(). 7 dan 8 merupakan kode untuk Sedangkan pada algoritma menampilkan data yang telah dengan flow chart, proses ditukar. Sedangkan langkah yang pemeriksaan keadaan lainnya merupakan aturan tata disimbolkan dengan simbol bahasa Java yang akan percabangan dimana kalau dijelaskan dalam bab-bab jalurnya kita telusuri, baik jalur YA selanjutnya. maupun TIDAK, akan terhubung dengan langkah penyelesaian2. Masalah mencari bilangan masalah selanjutnya, tidak terbesar dari tiga bilangan yang kembali ke langkah sebelumnya dimasukkan (contoh selection ataupun kembali ke simbol process). percabangan semula karena jika Algoritma pada permasalahan ini terjadi kita tidak bisa ini sudah diberikan, silakan lihat menggunakan klausa if() dalam kembali sub bab notasi algoritma. penerjemahan ke bentuk source Dari ketiga notasi algoritma code bahasa C++ atau program tersebut dapat kita ketahui bahwa lainnya seperti java (lihat contoh ada dua proses pemeriksaan permasalahan berikutnya, yaitu keadaan (data). Pada algoritma contoh ke-3 dan ke-4). dengan uraian kalimat deskriptif, Untuk algoritma dengan proses pemeriksaan ini dapat kita pseudo code, penerjemahan identifikasi dengan adanya kata akan jauh lebih mudah karena kunci JIKA. Dengan demikian seperti yang telah dikemukakan pada saat menerjemahkan sebelumnya bahwa pseudo code langkah ke-3 dan langkah ke-5 ini strukturnya sangat mirip 66 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman dengan penulisan source code adalah (perhatikan source code baris bahasa pemrograman. ke-12 dan 13):Dengan demikian penerjemahanalgoritma ke dalam bahasa C++ 1. #include <iostream>  2. using namespace std;  3. int main() {  4.   int a,b,c,mak;  5.   cout << "Bilangan pertama = ";  6.   cin >> a;  7.   cout << "Bilangan kedua   = ";  8.   cin >> b;  9.   cout << "Bilangan ketiga  = ";  10.   cin >> c;  11.   mak = a;  12.   if (mak < b) mak = b;  13.   else if (mak < c) mak = c;  14.   cout << "Bilangan terbesarnya = " << mak;  15.   return 0;  16. }   Sedangkan penerjemahan dalam (perhatikan source code baris ke- bahasa lain misalnya bahasa 14 dan 15) Java adalah sebagai berikut 1. import java.util.Scanner;  2. import java.io.*;  3. class bilTerbesar {  4. public static void main(String[ ] args) {  5.      int a,b,c;  6. Scanner input = new Scanner(System.in);  7. System.out.print("Bilangan pertama = ");  8.      a = input.nextInt();  9. System.out.print("Bilangan kedua   = ");  10.      b = input.nextInt();  11. System.out.print("Bilangan ketiga  = ");  12.      c = input.nextInt();  13.      int mak = a;  14.      if (mak < b) mak = b;  15.      else if (mak < c) mak = c;  16. System.out.print("Bilangan terbesarnya  = " + mak); 2008 | Direktorat Pembinaan SMK 67 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman 17.    }  a) Menggunakan uraian kalimat 18. }  deskriptif Pada permasalahan ini, kita juga dapat menggunakan algoritma lain, yaitu : 1) Masukkan a, b, dan c.  2) Jika a > b, maka kerjakan langkah ke‐3. Jika tidak, kerjakan langka ke‐5.  3) Jika a > c, maka kerjakan langkah ke‐4. Jika tidak, kerjakan langka ke‐7.  4) mak  a.  5) Jika b > c, kerjakan langkah ke‐6. Jika tidak, kerjakan langkah ke‐7.  6) mak  b.  7) mak  c.  8) Tulis mak.  68 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman b) Menggunakan flow chart  Mulai a, b, c a>b Ya Ya a>c Maksimum  a Tidak Tidak b>c YaMaksimum  b Tidak Maksimum  c Maksimum Selesai Gambar 2.13. Flowcart   a) Menggunakan pseudo codeAlgoritma bilangan_terbesar{algoritma  ini  mencari  bilangan  terbesar  dari  tiga  bilangan  yang  dimasukkan secara acak} 2008 | Direktorat Pembinaan SMK 69 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman deklarasi     a,b,c,mak : integer  deskripsi     read(a,b,c)     if (a > b)    if (a > c)      mak  a    else mak  c    end if     else     if(b > c)    mak  b    else mak  c    end if     end if  write(mak   Pada algoritma dengan uraian pertama (langkah ke-2). kalimat deskriptif kita dapat Sedangkan penggunaan klausa mengidentifikasi bahwa terdapat if() yang ketiga (langkah ke-5) tiga buah pemeriksaan keadaan, juga ada dalam klausa if() yang yaitu langkah ke-2, 3, dan 5. pertama pada bagian else. Hal ini Pada langkah ke-2, jika kondisi dinamakan percabangan terpenuhi, langkah selanjutnya, bersarang, yaitu percabangan yaitu langkah ke-3, adalah yang ada dalam percabangan merupakan pemeriksaan lainnya. keadaan lagi. Demikian pula jika Keberadaan percabangan kondisi yang telah ditentukan bersarang ini juga dapat diidentifikasi tidak terpenuhi, langkah dari simbol percabangan yang berikutnya, yaitu langkah ke-5, terhubung dengan simbol adalah merupakan pemeriksaan percabangan lainnya. Identifikasi ini keadaan kembali. Dari sini dapat lebih jelas terlihat pada algoritma disimpulkan bahwa nantinya dengan pseudo code. Dengan penggunaan klausa if() yang demikian penerjemahan algoritma ke kedua (langkah ke-3) akan dalam bahasa C++ adalah: berada di dalam klausa if() yang 1. #include <iostream>  Direktorat Pembinaan SMK | 2008 2. using namespace std;  3. int main() {  4.    int a,b,c,mak;  5.    cout << "Bilangan pertama = ";  6.    cin >> a;  70 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman 7.    cout << "Bilangan kedua   = ";  8.    cin >> b;  9.    cout << "Bilangan ketiga  = ";  10.    cin >> c;  11.    if (a > b) {  12.      if (a > c)  13.        mak = a;  14.      else mak = c;  15.    }  16.    else {  17.      if (b > c)   18.        mak = b;  19.      else mak = c;  20.    }  21. cout << "Bilangan terbesarnya = " << mak;  22.    return 0;  23. }  Klausa if() pada source code di dalam klausa if() (baris ke-11)baris ke-12 sampai dengan baris ke- bagian else (baris ke-16). Sedangkan14 ada di dalam klausa if() baris ke- penerjemahan algoritma ke dalam11. Sedangkan klausa if() baris ke-17 bahasa Java adalah (perhatikan barissampai dengan baris ke-19 juga ada ke-13 sampai dengan baris ke-22) :  1. import java.util.Scanner;  2. import java.io.*;  3. class bilBesar {  4. public static void main(String[ ] args) {  5.      int a,b,c,mak;  6. Scanner input = new Scanner(System.in);  7. System.out.print("Bilangan pertama = ");  8.      a = input.nextInt();  9. System.out.print("Bilangan kedua   = ");  10.      b = input.nextInt();  11. System.out.print("Bilangan ketiga  = ");  12.      c = input.nextInt();  13.      if (a > b) {  14.        if (a > c)   15.          mak = a;  16.        else mak = c;  17.      } 2008 | Direktorat Pembinaan SMK 71 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman 18.      else {  19.        if (b > c)  20.          mak = b;  21.        else mak = c;  22.      }  23. System.out.print("Bilangan terbesarnya  = " + mak);  24.    }  25. }  3. Diminta suatu program dimana  Bilangan 4 untuk hari Rabu. jika dimasukkan suatu bilangan (1  Bilangan 5 untuk hari Kamis. sampai dengan 7) maka akan  Bilangan 6 untuk hari Jumat. menampilkan nama hari, yaitu :  Bilangan 7 untuk hari Sabtu.  Bilangan 1 untuk hari Minggu. Algoritmanya adalah :  Bilangan 2 untuk hari Senin.  Bilangan 3 untuk hari Selasa.Menggunakan uraian kalimat deskriptif 1) Masukan bilangan sebuah bilangan bulat (angka). 2) Jika angka  1, maka kerjakan langkah ke‐3. Jika tidak, kerjakan langkah ke‐4. 3) hari  “Minggu”. 4) Jika angka  2, maka kerjakan langkah ke‐5. Jika tidak, kerjakan langkah ke‐6. 5) hari  “Senin”. 6) Jika angka  3, maka kerjakan langkah ke‐7. Jika tidak, kerjakan langkah ke‐8. 7) hari  “Selasa”. 8) Jika angka  4, maka kerjakan langkah ke‐9. Jika tidak, kerjakan langkah ke‐10. 9) hari  “Rabu”. 10) Jika angka  5, maka kerjakan langkah ke‐11. Jika tidak, kerjakan langkah ke‐12. 11) hari  “Kamis”. 12) Jika angka  6, maka kerjakan langkah ke‐13. Jika tidak, kerjakan langkah ke‐14. 13) hari  “Jumat”. 14) Jika angka  7, maka kerjakan langkah ke‐15. Jika tidak, kerjakan langkah ke‐16. 15) hari  “Sabtu”. 16) hari  “Tidak ada nama hari untuk angka tersebut” 17) Tampilkan hari.          72 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman ABa) Menggunakan flow chart Mulaiangka angka  2 Ya hari  “Senin”angka  1 Ya hari  “Minggu” Tidak Ya hari  “Selasa” angka  3Tidak Tidak A B angka  4 Ya hari  “Rabu” Tidak angka  5 Ya hari  “Kamis” Tidak angka  6 Ya hari  “Jumat” Tidak Ya hari  “Sabtu” angka  7 Tidak hari  “Tidak ada nama hari” hari Selesai Gambar 2.14. Flowchart 732008 | Direktorat Pembinaan SMK Bahasa Pemrograman Bahasa dan Algoritma Pemrogramanb) Menggunakan pseudo code Algoritma nama_hari {algoritma  ini  digunakan  untuk  mengetahui  nama  hari  dari  bilangan  bulat  yang dimasukkan}  deklarasi    angka  : integer    hari  : char  deskripsi    read(angka)    if(angka  1)    hari  “Minggu”    else if(angka  2)     hari  “Senin”    else if(angka  3)     hari  “Selasa”    else if(angka  4)     hari  “Rabu”    else if(angka  5)     hari  “Kamis”    else if(angka  6)     hari  “Jumat”    else if(angka  7)     hari  “Sabtu”    else     hari  “Tidak ada nama hari”    end if    write(hari)  Algoritma diatas dapat juga ditulis seperti dibawah ini: Algoritma nama_hari {algoritma  ini  digunakan  untuk  mengetahui  nama  hari  dari  bilangan  bulat  yang dimasukkan}  deklarasi    angka  : integer    hari  : char  deskripsi    read(angka)    switch(angka)    case 1 : hari  “Minggu”    case 2 : hari  “Senin”  74 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman   case 3 : hari  “Selasa”    case 4 : hari  “Rabu”    case 5 : hari  “Kamis”    case 6 : hari  “Jumat”    case 7 : hari  “Sabtu”    default : hari  “Tidak ada nama hari”    end switch    write(hari)    Pada algoritma dengan uraian menggunakan klausa if(). Agarkalimat deskriptif kita dapat program kita lebih efisien, maka kitamengidentifikasi bahwa terdapat menggunakan switch() untuktujuh buah pemeriksaan keadaan, pemeriksaan keadaan sebanyak ini.yaitu langkah ke-2, 4, 6, 8, 10, 12, Dengan demikian penerjemahandan 14. Pemeriksaan yang sebanyak algoritma ke dalam bahasa C++ini sangat tidak efektif kalau kita adalah :1. #include <iostream> 2. #include <cstring> 3. using namespace std; 4. int main() { 5.    int angka; 6.    string hari; 7.    cout << "Bilangan = "; 8.    cin >> angka; 9.    if (angka==1) hari="Minggu"; 10.    else if (angka==2) hari="Senin"; 11.    else if (angka==3) hari="Selasa"; 12.    else if (angka==4) hari="Rabu"; 13.    else if (angka==5) hari="Kamis"; 14.    else if (angka==6) hari="Jumat"; 15.    else if (angka==7) hari="Sabtu"; 16.    else hari="tidak ada"; 17. cout << "Nama hari ke‐" << angka << " adalah " << hari; 18.    return 0; 19. } 2008 | Direktorat Pembinaan SMK 75 Bahasa Pemrograman Bahasa dan Algoritma PemrogramanProgram diatas dapat juga ditulis seperti dibawah ini:1. #include <iostream> 2. #include <cstring> 3. using namespace std; 4. int main() { 5.    int angka; 6.    string hari; 7.    cout << "Bilangan = "; 8.    cin >> angka; 9.    switch(angka) { 10.      case 1 : hari = "Minggu"; 11.        break; 12.      case 2 : hari = "Senin"; 13.        break; 14.      case 3 : hari = "Selasa"; 15.        break; 16.      case 4 : hari = "Rabu"; 17.        break; 18.      case 5 : hari = "Kamis"; 19.        break; 20.      case 6 : hari = "Jumat"; 21.        break; 22.      case 7 : hari = "Sabtu"; 23.        break; 24.      default : hari = "tidak ada"; 25.    } 26. cout << "Nama hari ke‐" << angka << " adalah = " << hari; 27.    return 0; 28. } Sedangkan dalam contoh dalam bahasa Java adalah : 1. import java.util.Scanner;  Direktorat Pembinaan SMK | 2008 2. import java.io.*;  3. class bab2_03 {  4. public static void main(String[ ] args) {  5.    int angka;  6.    String hari;  7. Scanner input = new Scanner(System.in);  8. System.out.print("Bilangan = ");  9.    angka = input.nextInt();  10. if (angka==1) hari="Minggu";  76 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman 11. else if (angka==2) hari="Senin";  12. else if (angka==3) hari="Selasa";  13. else if (angka==4) hari="Rabu";  14. else if (angka==5) hari="Kamis";  15. else if (angka==6) hari="Jumat";  16. else if (angka==7) hari="Sabtu";  17.    else hari="tidak ada";  18. System.out.print("Nama hari ke‐" + angka + " adalah = " + hari);  19.    }  20. }  Program diatas dapat juga ditulis seperti dibawah ini: 1. import java.util.Scanner;  2. import java.io.*;  3. class bab2_03_2 {  4. public static void main(String[ ] args) {  5.      int angka;  6.      String hari;  7. Scanner input = new Scanner(System.in);  8.      System.out.print("Bilangan = ");  9.      angka = input.nextInt();  10.      switch(angka) {  11.        case 1 : hari = "Minggu";  12.          break;  13.        case 2 : hari = "Senin";  14.          break;  15.        case 3 : hari = "Selasa";  16.          break;  17.        case 4 : hari = "Rabu";  18.          break;  19.        case 5 : hari = "Kamis";  20.          break;  21.        case 6 : hari = "Jumat";  22.          break;  23.        case 7 : hari = "Sabtu";  24.          break;  25.        default : hari = "tidak ada";  26.      }  27. System.out.print("Nama hari ke‐" + angka + " adalah = " + hari);  28.    }  29. }  2008 | Direktorat Pembinaan SMK 77 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman4. Masalah menghitung rata-rata melalui keyboard (contoh iteration dari sejumlah data yang process). Algoritmanya adalah: dimasukkan secara manual Menggunakan uraian kalimat deskriptif  1) Masukan jumlah (n) data yang diinginkan.  2) Selama jumlah data yang dimasukkan kurang dari n, kerjakan langkah ke‐ 3 dan ke‐4. Jika tidak kerjakan langkah ke‐5.  3) Masukan data.  4) Tambahkan data yang dimasukkan dengan data sebelumnya.  5) Hitung rata‐rata data.  6) Tampilkan besar rata‐ratanya.  Uraian diatas dapat juga ditulis seperti dibawah ini: 1) Masukkan n  2) i  0  3) Sum  0  4) Selama i < n, kerjakan langkah ke‐5, 6, dan 7.  5) Masukkan data[i]  6) Sum  Sum + data[i]  7) i++  8) Rata2  Sum / n  9) Tulis Rata2   Langkah ke-2 dan ke-3 (penghitung) untuk prosesmerupakan proses inisialisasi atau perulangan yang digunakan untukpemberian nilai awal yang diperlukan memasukkan data satu persatu dandalam penulisan source code. sekaligus menjumlahkan data yangSebaiknya variabel Rata2 juga dimasukkan dengan penjumlahandiinisialisasi agar keluaran dari data sebelumnya dimanaprogram lebih valid. Variabel i penjumalahan data sebelumnyadigunakan sebagai counter disimpan dalam variabel Sum 78 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman b) Menggunakan flow chart Mulai Jumlah data (n) i0 Sum  0Tidak Ya i<n Data[i] Sum  Sum + Data[i] i++ Rata2  Sum / n Rata2 SelesaiGambar 2.15. Flowchart Proses perulangan diperlukan meminta pengguna untukkarena banyak data yangdimasukkan belum diketahui dengan memasukkan banyak data). Langkahpasti (lihat langkah pertama yang ke-7 merupakan increment variabel i,2008 | Direktorat Pembinaan SMK yaitu menaikkan nilai variabel i  79Bahasa Pemrograman Bahasa dan Algoritma Pemrogramansebesar satu tingkat. Data pada array ini akan dibahas pada babpermasalahan ini disimpan dalam tersendiri. tipe data array (data[i]). Tipe data  c) Menggunakan pseudo code Algoritma hitung_rata2 {algoritma ini digunakan untuk menghitung rata‐rata dari sejumlah data yang  dimasukkan melalui keyboard}  deklarasi    i, n, sum, data[20]  : integer    rata2  : float  deskripsi    read(n)    i  0    sum  0    while(i < n)    read(data[i])    sum += data[i]    i++    end while    rata2  sum / n    write(rata2)  Algoritma diatas dapat juga ditulis seperti dibawah ini: Algoritma hitung_rata2 {algoritma ini digunakan untuk menghitung rata‐rata dari sejumlah data yang  dimasukkan melalui keyboard}  deklarasi    i, n, sum, data[20]  : integer    rata2  : float  deskripsi    read(n)    sum  0    for(i=0; i<n; i++)    read(data[i])    sum += data[i]    end for    rata2  sum / n    write(rata2)  80 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman Langkah ke-2 pada algoritma adalah langkah ke-3 dan 4 pada dengan uraian kalimat deskriptif yang pertama dan langkah ke-4 algoritma dengan uraian kalimat pada algoritma dengan uraian kalimat deskriptif yang kedua, deskriptif yang pertama dan terdapat kata kunci selama. Kata kunci ini mengidentifikasikan langkah ke-5, 6, dan 7 pada bahwa dalam penerjemahan ke dalam bentuk source code algoritma dengan uraian kalimat bahasa C++ atau program lainnya seperti java nanti kita deskriptif yang kedua. Pada bab akan menggunakan klausa untuk looping (perulangan) yaitu while() selanjutnya anda akan dan atau for() karena langkah- langkah tersebut memerintahkan mengetahui bahwa klausa kita untuk melakukan langkah berikutnya, bukan kembali ke perulangan ini, dalam bahasa langkah sebelumnya, jika kondisi yang telah ditentukan terpenuhi. C++ atau program lainnya seperti While() dan for() dapat digunakan secara bergantian jika perulangan java, ada tiga macam bentuk yang terjadi dapat diketahui banyaknya (jumlah perulangan yang dapat anda pilih, yaitu for(), yang terjdi), dalam hal ini banyak perulangannya adalah n, yaitu while(), atau do while(). banyak data yang akan dimasukkan. Tetapi jika banyak Untuk algoritma dengan flow perulangannya tidak dapat diketahui dengan pasti, maka kita chart, proses perulangan yang harus menggunakan while(), tidak bisa dengan for(). Pada contoh menggunakan klausa while() atau berikutnya akan diberikan perulangan yang tidak diketahui for() dapat diidentifikasi dari berapa banyak perulangan yang terjadi. simbol percabangan dimana Langkah-langkah yang masuk kalau jalurnya, dalam hal ini jalur dalam proses perulangan ini yang berlabel YA, kita telusuri akan terhubung ke simbol berikutnya dan kemudian kembali lagi simbol percabangan semula. Sedangkan untuk algoritma dengan pseudo code, penerjemahan tidak akan mengalami kesulitan karena, sekali lagi, struktur dari pseudo code sangat mirip dengan penulisan source code bahasa pemrograman. Dengan demikian penerjemahan algoritma ke dalam bahasa C++ adalah (perhatikan baris ke-8 sampai dengan baris ke-14 dimana baris ke- 9 dan 10 merupakan baris tambahan agar program lebih user friendly).  1. #include <iostream>  2. using namespace std;  3. int main() {  4.    int n, i=0, sum=0,  data[20];  5.    float rata2;  6. cout << "Jumlah data (maksimum 20 data) = "; 2008 | Direktorat Pembinaan SMK 81 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman7.    cin >> n; 8.    while(i < n) { 9.      int j = i + 1; 10. cout << "Masukkan data ke‐" << j << " : "; 11.      cin >> data[i]; 12.      sum += data[i]; 13.      i++; 14.    } 15.    rata2 = sum / n; 16. cout << "Rata‐ratanya = " << rata2; 17.    return 0; 18. } Program diatas dapat juga ditulis seperti dibawah ini:1. #include <iostream> 2. using namespace std; 3. int main() { 4.    int n, i, sum=0,  data[20]; 5.    float rata2; 6. cout << "Jumlah data (maksimum 20) = "; 7.    cin >> n; 8.    for(i=0; i < n; i++) { 9.      int j = i + 1; 10. cout << "Masukkan data ke‐" << j << " : "; 11.      cin >> data[i]; 12.      sum += data[i]; 13.    } 14.    rata2 = sum / n; 15. cout << "Rata‐ratanya = "          << rata2; 16.    return 0; 17. } Sedangkan jika ditulis dalam bahasa Java adalah sebagai berikut:1. import java.util.Scanner; 2. import java.io.*; 3. class bab2_03 { 4. public static void main(String[ ] args) { 5.      int n, i=0, sum=0; 6.      int[ ] data = new int[20]; 7.      float rata2; 8. Scanner input = new Scanner(System.in);  82 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman9. System.out.print("Jumlah data (mak. 20) = "); 10.      n = input.nextInt(); 11.      while(i < n) { 12.        int j = i + 1; 13. System.out.print("Masukkan data ke‐" + j + " : "); 14.      data[i] = input.nextInt(); 15.      sum += data[i]; 16.      i++; 17.      } 18.      rata2 = sum / n; 19. System.out.print("Rata‐ratanya = " + rata2); 20.    } 21. } Program diatas dapat juga ditulis seperti dibawah ini:1. import java.util.Scanner; 2. import java.io.*; 3. class bab2_03_2 { 4. public static void main(String[ ] args) { 5.      int n, i, sum=0; 6.      int[ ] data = new int[20]; 7.      float rata2; 8. Scanner input = new Scanner(System.in); 9. System.out.print("Jumlah data (mak. 20) = "); 10.      n = input.nextInt(); 11.      for(i=0;i < n;i++) { 12.        int j = i + 1; 13. System.out.print("Data ke‐" + j + " : "); 14.        data[i] = input.nextInt(); 15.        sum += data[i]; 16.      } 17.      rata2 = sum / n; 18. System.out.print("Rata‐ratanya = " + rata2); 19.    } 20. } 5. Masalah menentukan Faktor yang langkah-langkahnya adalah Persekutuan Besar (FPB). sebagai berikut : Untuk memecahkan persoalan 1) Diberikan dua buah bilangan FPB di atas, kita dapat menggunakan algoritma Euclid bulat positif, misalnya m dan n dimana syaratnya adalah m >2008 | Direktorat Pembinaan SMK n.  83Bahasa Pemrograman Bahasa dan Algoritma Pemrograman 2) Bagilah m dengan n, misalnya 1. m 36  mempunyai sisa hasilnya adalah r. = 3) Apabila r = 0, maka hasilnya n 20 adalah n itu sendiri (merupakan FPB dari m dan r = 16 n). 2. r = 16  r  0 4) Jika r  0 maka proses 3. m = 20 dan n = 16 pencarian dilanjutkan yaitu 4. m 20  mempunyai sisa ganti m dengan n dan n dengan r dan ulangi langkah = ke-2, demikian selanjutnya. n 16 Misalnya akan dicari FPB dari 36 dan 20, maka penyelesaiannya r=4 menurut algoritma Euclid adalah : 5. r = 4  r  0  6. m =16 dan n = 4  7. m  16  mempunyai sisa r b) Menggunakan flow chart n4 =0 Jadi FPB( 36, 20) = 4  Mulai A m, n fpb  n Ya r=0 Tidak m>n Tidak Tidak r != 0 mn Ya Ya n  r rm%n fpb  n rm%n A fpb Selesai 84 Gambar 2.16. Flowchart  Direktorat Pembinaan SMK | 2008Bahasa dan Algoritma Pemrograman Bahasa PemrorgramanAlgoritma Euclid di atas merupakan deskriptif. Algoritma tersebut dapatalgoritma dengan uraian kalimat ditulis kembali sebagai berikut:  a) Menggunakan uraian kalimat deskriptif 1) Masukkan m dan n.  2) Selama m < n ulangi kembali langkah pertama.  3) r  m % n  4) Jika r = 0 maka fpb n.Jika tidak kerjakan langkah ke‐5.  5) Selama r != 0 kerjakan langkah ke‐6 sampai ke‐8.  6) m  n dan n  r  7) r  m % n  8) fpb  n  9) Tulis fpb.  c) Menggunakan pseudo code {algoritma  ini  digunakan  untuk  mencari  faktor  persekutuan  besar  dari  dua  buah bilangan yang dimasukkan}  deklarasi    m, n, r, fpb  : integer  deskripsi    do read(m,n)    while(m<n)    end do while    r  m % n    if (r == 0) fpb  n    else      while(r != 0)        m  n        n  r        r  m % n        fpb  n      end while    end if    write(fpb)   Langkah ke-2 pada algoritma perulangan. Akan tetapi kita tidak dengan uraian kalimat deskriptif dapat menggunakan klausa mempunyai kata kunci SELAMA while() seperti pada contoh yang mengidentifikasikan bahwa sebelumnya karena pada kasus dalam penerjemahannya ke ini langkah tersebut dalam source code bahasa memerintahkan untuk kembali ke pemrograman nanti langkah sebelumnya jika kondisi menggunakan klausa untuk yang diberikan terpenuhi.2008 | Direktorat Pembinaan SMK 85 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman Oleh karena itu klausa yang langkah sebelumnya maka kita paling tepat digunakan adalah do menggunakan klausa do while(). while(). Sedangkan langkah ke-5 Untuk algoritma dengan flow kita gunakan klausa while() chart, proses perulangan yang karena langkah ke-5 menggunakan klausa do while() memerintahkan kita untuk dapat diidentifikasi dari simbol melakukan langkah-langkah percabangan dimana kalau berikutnya, bukan kembali ke jalurnya, dalam hal ini jalur yang langkah sebelumnya. Kita tidak berlabel TIDAK, kita telusuri akan bisa menggunakan klausa for() terhubung ke simbol sebelumnya karena, sesuai dengan dan kemudian kembali lagi simbol penjelasan pada contoh percabangan semula. sebelumnya, kita tidak bisa Sedangkan untuk algoritma mengetahui dengan pasti berapa dengan pseudo code, banyak perulangan yang terjadi. penerjemahan tidak akan Dengan demikian dapat kita mengalami kesulitan karena, simpulkan bahwa jika setelah sekali lagi, struktur dari pseudo proses pemeriksaan keadaan code sangat mirip dengan memerintahkan kita untuk penulisan source code bahasa melakukan langkah-langkah pemrograman. Dengan demikian berikutnya maka kita penerjemahan algoritma ke menggunakan klausa while(). dalam bahasa C++ adalah Sebaliknya jika setelah proses (perhatikan baris ke-5 sampai pemeriksaan keadaan dengan baris ke-10 dan baris ke- memerintahkan kita untuk 14 sampai dengan baris ke-19) kembali lagi melakukan langkah-  1. #include <iostream>  2. using namespace std;  3. int main() {  4.    int m,n,r,fpb;  5.    do {  6. cout << "Masukkan bilangan pertama = ";  7.      cin >> m;  8. cout << "Masukkan bilangan kedua   = ";  9.      cin >> n;  10.    } while (m < n);  11.    r = m % n;  12.    if (r==0) fpb = n;  13.    else {  14.      while(r!=0) {  15.        m = n;  16.        n = r;  17.        r = m % n;  86 Direktorat Pembinaan SMK | 2008 Bahasa dan Algoritma Pemrograman Bahasa Pemrorgraman 18.        fpb = n;  19.      }  20.    }  21.    cout << "FPB‐nya = " << fpb;  22.    return 0;  23. } Sedangkan jika ditulis dalam bahasa Java adalah sebagai berikut:1. import java.util.Scanner; 2. import java.io.*; 3. class bab2_04 { 4. public static void main(String[ ] args) { 5.      int m,n,r,fpb; 6. Scanner input = new Scanner(System.in); 7.      do { 8. System.out.print("Masukkan bilangan pertama = "); 9.        m = input.nextInt(); 10. System.out.print("Masukkan bilangan kedua   = "); 11.        n = input.nextInt(); 12.      } while(m < n); 13.      r = m % n; 14.      fpb = 0; 15.      if (r == 0) fpb = n; 16.      else { 17.        while(r != 0) { 18.        m = n; 19.        n = r; 20.        r = m % n; 21.        fpb = n; 22.        } 23.      } 24. System.out.print("Bilangan terbesarnya  = " + fpb); 25.    } 26. } 2.12. Soal LatihanJawablah soal latihan dibawah ini dengan baik dan benar.1. Apa yang dimaksud dengan bahasa pemrograman2. Apa yang dimaksud dengan compiler dan intepreter3. Apa yang dimaksud dengan bahasa pemrograman prosedural dan terstruktur4. Apa yang dimaksud dengan algoritma pemrograman2008 | Direktorat Pembinaan SMK 87 Bahasa Pemrograman Bahasa dan Algoritma Pemrograman5. Sebutkan ciri-ciri algoritma pemrograman6. Buatlah algoritma sederhana untuk mencari bilangan ganjil dan genap7. Dari soal no 6 diatas buatlah diagram alirnya8. Dari soal no 7 diatas tulislah kode semu (psudocode) diagram alir tersebut9. Dari soal no 8 diatas tulislah kode sumbernya                                      88 Direktorat Pembinaan SMK | 2008 Tipe data dan Operator Bahasa PemrorgramanBAB 3TIPE DATA DAN OPERATOR3.1. Pengertian Data3.2. Indentifier3.3. Konstanta3.4. Variabel3.5. Tipe Data3.6. Operator Bahasa C++3.7. Operator Unary3.8. Operator Binary3.9. Operator Ternary3.10. Ungkapan (Ekspresi)3.11. Soal Latihan3.1. Pengertian Data pengertian tertentu. Pada komputer data disimpan dalam memori Data merupakan bentuk jamak sebelum dan sesudah pemrosesandari bahasa Latin dengan kata oleh mikroprosesor.datum, yang berarti fakta atausesuatu yang diberikan. Data adalah Jenis data dalam setiap bahasakelompok simbol-simbol yang teratur pemrograman belum tentu sama,dan mewakili kuantitas, tindakan, namun sebagian besar biasanyabenda dan sebagainya. Dalam istilah terbagi menjadi tiga, yaitu :umum data mewakili angka, karakter 1. Data Numerik atau bilangan, yaitudan simbol-simbol lain yang berfungsisebagai masukan untuk proses jenis data yang digunakan dalamkomputer. Data bisa berujut suatu proses aritmatika atau proseskeadaan, gambar, suara, huruf, matematis lainnya.angka, matematika, bahasa ataupun 2. Data String, yaitu jenis data yangsimbol-simbol lainnya yang bisa kita dapat terdiri dari berbagai macamgunakan sebagai bahan untuk karakter. Digunakan untuk prosesmelihat lingkungan, obyek, kejadian yang non matematis.ataupun suatu konsep. 3. Data Logika, yaitu data yang hanya terdiri dari dua satuan, Data belum mempunyai arti yaitu benar (true) dan salahapabila tidak diolah. Data yang telah (false). Digunakan dalam suatudiolah menjadi sebuah bentuk yang proses logika yang terdiri dariberarti disebut informasi . Data yang persamaan boolean.mewakili simbol-simbol bukanmerupakan informasi kecuali dalam 892008 | Direktorat Pembinaan SMK Bahasa Pemrograman Tipe Data dan Operator3.2. Indentifier kunci (keyword) yang dimiliki oleh C++. Keywords atau kata kunci Identifier adalah nama yang merupakan “inti” pada bahasa dandidefinisikan oleh programmer dan memiliki tujuan tertentu. Tabeldigunakan untuk mewakili sebuah dibawah ini menunjukkan daftarelemen pada program. Nama lengkap kata kunci C++. Dan yangvariabel merupakan salah satu perlu diperhatikan pada bahasa Ccontoh dari identifier. Programmer adalah bahwa semua harus hurufdapat memilih sendiri nama sebuah kecil.variabel pada C++, selama tidakmenggunakan salah satu dari kataasm   auto   break   bool   case  const_cast catch   char   class   const   double  extern continue   default   delete   do   goto  mutable dynamic_cast   else   enum   explicit   protected  short false  float   for   friend   struct  true if   inline   int   long   union  volatile namespace   new   operator   private  public   register   reinterpret_cast   return  signed   sizeof   static   static_cast  switch   template   this  throw try   typedef   typeid   typename  unsigned   using   virtual   void  wchar_t   while  Indentifier atau pengenal adalah maka x tidak termasuk sesuatu jenis tertentu,sehingga hal tersebut tidaknama yang diberikan untuk nama memberikan petunjuk pada tujuan variabel. Perhatikan contoh berikutvariable, nama konstanta, nama dibawah yang lebih baik.fungsi, nama objek, nama method, int daftarUrutan; nama class, dan obyek yang lain Nama daftarUrutan memberikan sesbuat pada pembaca programyang didefinisikan oleh pemrogram. sehingga akan ide dari variabel yang digunakan. Cara coding ini akan Dalam menulis program harus membantu dalam menghasilkan dokumentasi program sendiri, yangselalu memilih nama variabel yang berarti anda akan mendapatkan pemahaman tentang apa yangmemberikan indikasi mengenai hal dilakukan program hanya dengan membaca kode yang digunakannya.yang berhubungan dengan yang Direktorat Pembinaan SMK | 2008digunakan variable tersebut. Jikadimungkinkan mendeklarasikansebuah variabel dengan nama sepertiberikut ini:int x;   90 Tipe data dan Operator Bahasa PemrorgramanKarena dunia program biasanya identifier. Ketentuan-ketentuan dalam penulisan identifier antara lain:ada ribuan baris, hal ini penting agar  Terdiri dari gabungan huruf danbisa diingat oleh programmer itu angka dengan karakter pertama harus berupa huruf atausendiri dan sebagai dokumentasi underscore atau tanda dollar ($).  Tidak boleh mengandung spasiyang baik. Selain itu yang perlu dan symbol-simbol khusus, kecuali garis bawah (underscore) ataudisadari adalah adanya campuran tanda dollar ($) khusus untuk java. Yang termasuk symbol khusushuruf besar dan huruf dalam variabel yang tidak diperbolehkan antara lain: $, ?, %, #, !, &, *, (, ), -, +, =,nama daftarUrutan. Walaupun semua dan sebagainya.  Panjangnya bebas, tetapi hanyaC++, kata kunci harus ditulis dalam 32 karakter pertama yang terpakai, tetapi sebaiknyahuruf kecil, tetapi dalam penulisan sependek mungkin minimal satu karakter.tersebut dapat menggunakan huruf  Tidak boleh sama dengan kata kunci (keyword) dan katabesar sebagai variabel nama. tercadang (reserved word) yang ada dalam bahasa pemrograman.Dalam bahasa pemrograman C Untuk lebih jelasnya mengenaimaupun pada bahasa java identifier identifier dapat dilihat pada contoh identifier yang benar dan yang salahsifatnya case sensitive, artinya hurufbesar dan huruf kecil dianggapberbeda artinya, walaupundipernolehkan. Identifier terdiri dari : Karakter alphabet, yaitu : huruf ‘A’sampai ‘Z’ dan huruf ‘a’ sampai ‘z’ Underscore ( _ ) dan tanda dollar($) Digit decimal, yaitu: bilanganantara ‘0’ sampai ‘9’ Dalam menulis program ada hal-hal yang harus diperhatikan sebagaiketentuan dalam pemberian nama Tabel 3.1. Penulisan Identifier PENULISAN  KETERANGAN IDENTIFIER  Nomor  Penulisan Benar  Nama  Nilai_siswadata1  Penulisan Salah  Rekam_1  _temp  $harga_jual  1data  Nomor‐siswa,nama siswa  if  2_jalan  2$  main 2008 | Direktorat Pembinaan SMK 91 Bahasa Pemrograman Tipe Data dan Operator3.3. Konstanta Dalam sistem octal, bilangan yang digunakan berkisar antara 0 Suatu data yang sifatnya tetap, sampai dengan 7. Penulisandan digunakan dalam pemrograman konstanta diawali dengan 0 misalnya:diistilahkan dengan konstanta. 010, 046, 055 dan sebagainya.Konstanta adalah sebuah nama Dalam sistem heksadesimal,tempat penyimpanan sementara di bilangan yang digunakan berkisardalam memori yang nilainya tetap antara 0 sampai dengan F. Bilanganatau tidak dapat diubah. Konstanta yang dapat dipakai berupa salah satuharus didefinisikan terlebih dahulu diantara 16 simbol adalah berikut:pada awal program. Konstanta dapatbernilai integer, pecahan, karakter 0 1 2 3 4 5 6 7 8 9 A B C D E F  atau string. Perhatikan contoh  sebuah konstanta berikut ini: Bisa juga ditulis sebagai berikut:50  0 1 2 3 4 5 6 7 8 9 a b c d e f.  3.14 ‘A’  Cara penulisan konstanta bilangan“Bahasa Pemrograman”  ini diawali dengan 0x (nol dan x), misalnya: 0xAF, 0x7F, danDalam melakukan pemrograman ada sebagainya.dua tipe konstanta yaitu konstantabilangan dan konstanta teks atau b. konstanta bilangan real ataustring. pecahan Konstanta dengan nilai tetapnya3.3.1. Konstanta Bilangan berupa bilangan pecahan. Konstanta Konstanta bilangan atau sering bilangan real atau pecahan dibagijuga disebut dengan konstanta dua jenis, yaitu: Konstanta datanumeric yaitu suatu konstanta yang bilangan desimal berpresisi tunggalnilai tetapnya berupa bilangan. (floating point), dimana bilangan iniKonstanta bilangan atau numerik memiliki derajat ketelitian sampai 7dibagi dalam dua kelompok, yaitu : digit dan dapat dinyatakan dalam dua bentuk tampilan, yaitu :a. Konstanta bilangan bulat (integer)  Bentuk desimal, contoh : 21.333 Konstanta bilangan bulat  Bentuk eksponensial, dituliskanmerupakan sebuah konstanta yang dengan notasi scientific. Dengannilai tetapnya berupa bilangan bulat. bentuk umum: bulat pecahan{E|D}Konstanta bilangan bulat dapat {[+] | [-]} pangkat misalnya:disajikan dalam bentuk decimal, oktal 0.21333E+2 dimana hal penulisanataupun heksadesimal. Dalam sistem ini mempunyai arti: 0.2133 x 102decimal, bilangan yang digunakanberkisar antara 0 sampai 9. Sedangkan konstanta dataPenulisan konstanta langsung bilangan desimal berpresisi gandaangkanya, misalnya: 10, 9, 5 dan (double precision) serupa dengansebagainya. floating point, hanya derajat ketelitian 92 Direktorat Pembinaan SMK | 2008


Video yang berhubungan

Postingan terbaru

LIHAT SEMUA