• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Asyiknya Belajar Struktur Data di Planet C++
 

Asyiknya Belajar Struktur Data di Planet C++

on

  • 1,438 views

 

Statistics

Views

Total Views
1,438
Views on SlideShare
1,438
Embed Views
0

Actions

Likes
0
Downloads
25
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Asyiknya Belajar Struktur Data di Planet C++ Asyiknya Belajar Struktur Data di Planet C++ Document Transcript

    • Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp 32.800 Terbit pertama: Februari 2005 Sinopsis singkat:Struktur data merupakan salah satu ilmu fundamental untuk mempelajari pemrograman. Mahasiswa TIdan orang yang mempelajari TI pasti pernah mempelajarinya, terutama di masa-masa awal perkenalan dengan dunia pemrograman. Seperti buku struktur data lainnya, buku ini akan menjelaskan poin-poin utama dalam struktur dataseperti pointer, linked list, stack, queue, tree, sorting, dan lain-lain. Akan tetapi buku ini ditulis dengan lebih berani dan tampil beda dari buku struktur data lainnya.
    • 9 FUNGSI9.1 FungsiApabila program yang Anda buat sudah terlalu panjang, Anda akankesulitan membaca dan mengerti jalannya program tersebut. Untukitu ada baiknya Anda memecahnya menjadi beberapa bagian(modul) yang tentunya akan lebih memudahkan Anda untuk mencarikesalahan program dan memperbaikinya serta membuatdokumentasinya. Untuk membuat modul, C++ menyediakan fungsi.Fungsi berguna untuk mengumpulkan statement yang dapatdijalankan menjadi satu dalam suatu blok dan menjalankannyakembali hanya dengan menuliskan nama fungsi yangmenampungnya.Selain itu, fungsi juga banyak dipakai untuk menampung baris-barisperintah yang sering dipakai dalam sebuah program.Deklarasi fungsi dapat dilakukan dengan dua cara, yaitu: Header fungsi tanpa parameter. Header fungsi dengan parameter. 97
    • 9.1.1 Header Fungsi Tanpa ParameterBentuk umum: tipeData namaFungsi()Contoh: int JumlahIsi() double Random() char* Nama() void Clear()Penulisan header fungsi tanpa parameter diawali dengan tipe datadan diikuti dengan nama fungsi, kurung buka, dan kurung tutup(‘( )’). Jika fungsi tidak mengembalikan nilai, tipe data yangdigunakan adalah void.Berikut ini digambarkan struktur blok fungsi tanpa parameter. Gambar 9.1 Struktur blok fungsi tanpa parameterContoh Soal:prg0901.cpp Output: x = 1 1 #include <iostream> y = 2 2 using namespace std; x+y = 3 3 xy = 2 4 int x; 5 int y; 698
    • 7 int Tambah() 8 { 9 return x + y; 10 }; 11 12 int Kali() 13 { 14 return x * y; 15 }; 16 17 int main() 18 { 19 cout << "x = "; 20 cin >> x; 21 cout << "y = "; 22 cin >> y; 23 24 cout << "x+y = " << Tambah() << endl; 25 cout << "xy = " << Kali() << endl; 26 27 return 0; 28 };9.1.2 Header Fungsi dengan ParameterBentuk umum: tipeData namaFungsi ( <Daftar_parameter> )Contoh: int Jumlahkan(int a, int b) double ArcCos(double x) void List(int n, char* header)Penulisan header fungsi dengan parameter hampir sama denganfungsi tanpa parameter, yaitu diawali dengan tipe data, lalu namafungsi, dan diikuti dengan parameter-parameter (yang berada didalam kurung) yang masing-masing dipisahkan dengan komabeserta dengan tipenya.Berikut ini digambarkan struktur blok fungsi dengan parameter. 99
    • Gambar 9.2 Struktur blok fungsi dengan parameterContoh Soal:prg0902.cpp Output: x = 1 1 #include <iostream> y = 2 2 using namespace std; x+y = 3 3 xy = 2 4 int Tambah(int a, int b) 5 { 6 return a + b; 7 }; 8 9 int Kali(int a, int b) 10 { 11 return a * b; 12 }; 13 14 int main() 15 { 16 int x, y; 17 18 cout << "x = "; 19 cin >> x; 20 cout << "y = "; 21 cin >> y; 22 23 cout << "x+y = " << Tambah(x, y) << endl; 24 cout << "xy = " << Kali(x, y) << endl; 25 26 return 0; 27 };9.2 Parameter Formal dan AktualJika sebuah fungsi memiliki parameter yang berada di dalam kurung( ), parameter tersebut disebut sebagai parameter formal, sedangkan100
    • parameter yang terdapat pada baris perintah pemanggil fungsitersebut disebut sebagai parameter aktual.Untuk lebih jelasnya, perhatikan penjelasan di bawah ini. void Hitung(char a, char b, int &c) { a, b dan c adalah … Parameter Formal }; int hasil; 3, 7, dan hasil adalah Parameter Hitung(3, 7, hasil); Aktual …Pada contoh di atas, fungsi Hitung memiliki parameter a, b, dan cyang disebut sebagai parameter formal. Fungsi hitung tersebutdipanggil pada program utama dengan parameter 3, 7, dan hasil.Parameter 3, 7, dan hasil dikenal dengan sebutan parameter aktual.Kemudian, parameter aktual 3, 7, dan hasil tersebut masing-masingditransfer kepada parameter formal a, b, dan c sesuai denganurutannya sehingga procedure hitung a bernilai 3, b bernilai 7, dan cberisi variabel penampung hasil.Transfer parameter akan dijelaskan lebih lanjut pada bagianberikutnya.9.3 Transfer ParameterSaat kita memanggil suatu fungsi dengan parameter, sebenarnyatelah terjadi pengiriman parameter dari parameter aktual (yangterdapat pada pemanggil fungsi) ke parameter formal (yang terdapatpada fungsi tersebut). Pengiriman parameter tersebut dapat dilakukandengan dua cara, yaitu: Transfer paramater by value (secara nilai). Transfer parameter by location/reference (secara acuan).9.3.1 Transfer Parameter by ValueNilai yang tersimpan dalam parameter dikirim ke fungsi untuk diolah,tetapi hasil olahan tersebut tidak diminta untuk dikembalikan. Dalam 101
    • mode ini, terjadi aliran 1 arah, yaitu dari pemanggil procedure keprocedure itu.Contoh Soal:prg0903.cpp Output: x = 1 1 #include <iostream> y = 2 (1, 2) 2 using namespace std; 3 4 5 void Tampil(int a, int b) 6 { 7 cout << "(" << a << ", " << b << ")" << endl; 8 }; 9 10 int main() 11 { 12 int x, y; 13 14 cout << "x = "; 15 cin >> x; 16 cout << "y = "; 17 cin >> y; 18 19 Tampil(x, y); 20 21 22 return 0; 23 };9.3.2 Transfer Parameter by LocationTransfer paramenter by location sering dikenal juga dengan transferparameter by reference (secara acuan). Dalam kasus ini, yangditransfer hanya lokasinya saja (dapat berisi data atau kosong) untukdiolah, lalu hasil olahan tersebut dikembalikan dan disimpan padalokasi yang telah ditransfer tersebut. Dalam mode ini, dapat terjadialiran 2 arah dari pemanggil fungsi ke fungsi itu dan sebaliknya.Contoh Soal:prg0904.cpp 1 #include <iostream> 2 using namespace std;102
    • 3 4 void Tukar(int &a, int &b) Output: 5 { x = 1 6 int temp; y = 2 7 Sekarang x = 2 8 temp = a; Sekarang y = 1 9 a = b; 10 b = temp; 11 }; 12 13 int main() 14 { 15 int x, y; 16 17 cout << "x = "; 18 cin >> x; 19 cout << "y = "; 20 cin >> y; 21 22 Tukar(x, y); 23 24 25 cout << "Sekarang x = " << x << endl; 26 cout << "Sekarang y = " << y << endl; 27 28 return 0; 29 };9.4 Fungsi RekursifFungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsirekursif dipakai karena memiliki kelebihan, yaitu penulisan barisprogram dapat menjadi lebih singkat. Akan tetapi, fungsi ini jugamemiliki kekurangan, yaitu membutuhkan banyak memori karenasetiap kali program bagian dipanggil oleh dirinya sendiri, dibutuhkansejumlah ruang memori tambahan.Contoh Soal:prg0905.cpp Output: 1 #include <iostream> 15 bilangan Fibonacci pertama: 2 using namespace std; 0, 1, 1, 2, 3, 5, 8, 13, 21, 3 34, 55, 89, 144, 233, 377 103
    • 4 5 6 int Fibo(unsigned int n) 7 { 8 switch (n) 9 { 10 case 0: 11 return 0; 12 case 1: 13 return 1; 14 default: 15 return Fibo(n - 1) + Fibo(n - 2); 16 }; 17 }; 18 19 int main() 20 { 21 int i; 22 23 cout << "15 bilangan fibonacci pertama: " << endl; 24 25 for (i = 0; i < 15; i++) 26 { 27 if (i > 0) 28 cout << ", "; 29 cout << Fibo(i); 30 }; 31 32 cout << endl; 33 34 return 0; 35 };9.5 Latihan Soal1. Buatlah fungsi yang akan menghitung jumlah deretan bilangan (deret.cpp). Contoh input dan output fungsi tersebut dengan parameter pertama untuk menunjukkan banyaknya bilangan dan parameter kedua untuk menunjukkan array penampung bilangan: Bilangan[0] = 41 Bilangan[1] = 22 Bilangan[2] = 72 Bilangan[3] = 44 jumlah(4, Bilangan) = 1792. Buatlah program untuk menampilkan bilangan prima dari 2 sampai dengan jumlah yang diberikan melalui parameter program. Gunakan fungsi sesuai kebutuhan (tprima.cpp).104
    • E:> tprima 7 7 bilangan prima pertama: 2 3 5 7 11 13 17 Gambar 9.3 Contoh tampilan soal nomor 23. Buatlah fungsi yang mengembalikan bilangan Fibonacci ke-n (fibon.cpp). Contoh input dan output fungsi tersebut: fibo(0) = 0 fibo(1) = 1 fibo(5) = 5 fibo(9) = 34 fibo(11) = 894. Buatlah program yang menampilkan animasi karakter bergerak ke kanan, berhenti, kemudian kembali dengan menerapkan gerak lurus berubah beraturan. Setiap kali karakter menabrak batas kiri, karakter akan dipantulkan dengan kecepatan yang berkurang sesuai dengan deret geometrik. Program berhenti jika karakter tidak lagi bergerak (geom.cpp). E:> geom O Gambar 9.4 Contoh tampilan soal nomor 45. Buatlah program yang menampilkan gambar bintang dengan panjang sisi diberikan lewat parameter program (bintang.cpp). E:> bintang 4 * * * * * ***** ***** * * * * * * * * * * ***** ***** * * * * * Gambar 9.5 Contoh tampilan soal nomor 5 105
    • 6. Buatlah program untuk membuat piramida angka seperti pada contoh di bawah. Tinggi piramida diberikan lewat parameter program (batasi bilangan dari 0 hingga 9) (pirangka.cpp). E:> pirangka 7 1 121 12321 1234321 123454321 12345654321 1234567654321 Gambar 9.6 Contoh tampilan soal nomor 67. Buatlah fungsi untuk mencari FPB dari banyak bilangan (fpb.cpp)8. Buat program untuk menampilkan segitiga pascal menggunakan fungsi rekursif (pascal.cpp). E:> pascal 3 1 1 1 1 2 1 1 3 3 1 Gambar 9.7 Contoh tampilan soal nomor 89. Buat program untuk memberikan solusi masalah menara hanoi menggunakan fungsi rekursif (hanoi.cpp).10. Dari suatu himpunan, misalnya {a, b, c, d} dapat dibuat kombinasi dua-dua, sehingga menghasilkan {ab, ac, ad, bc, bd, cd}, kombinasi tiga-tiga {abc, abd, acd, bcd}, dan seterusnya. Buatlah fungsi untuk menghasilkan string kombinasi berdasarkan himpunan huruf tertentu (kombhrf.cpp). kombinasi(“abcd”, 2, 0) = “ab” kombinasi(“abcd”, 2, 1) = “ac” kombinasi(“abcd”, 2, 2) = “ad” kombinasi(“abcd”, 3, 3) = “bcd”106