{"id":1870,"date":"2024-03-01T06:42:51","date_gmt":"2024-03-01T06:42:51","guid":{"rendered":"https:\/\/blog.uts.ac.id\/jul\/?p=1870"},"modified":"2024-03-01T06:42:51","modified_gmt":"2024-03-01T06:42:51","slug":"mengenal-fungsi-dan-prosedur-pada-c","status":"publish","type":"post","link":"https:\/\/blog.uts.ac.id\/jul\/2024\/03\/01\/mengenal-fungsi-dan-prosedur-pada-c\/","title":{"rendered":"Mengenal Fungsi dan Prosedur pada C++"},"content":{"rendered":"\n<h2 id=\"apa-itu-fungsi\">Apa itu Fungsi?<\/h2>\n\n\n\n<p>Fungsi adalah sub-program yang bisa digunakan kembali baik di dalam program itu sendiri, maupun di program yang lain.<\/p>\n\n\n\n<p>Fungsi dapat menerima input dan menghasilkan output.<\/p>\n\n\n\n<p>Contoh fungsi yang sering kita buat adalah fungsi&nbsp;<code>main()<\/code>.<\/p>\n\n\n\n<p>Fungsi ini memang wajib ada di setiap program C++, karena fungsi inilah yang akan dieksekusi pertama kali saat program berjalan.<\/p>\n\n\n\n<p>Seperti yang saya bilang tadi:<\/p>\n\n\n\n<p>\u201cKalau kita menumpuk semua kode program di dalam fungsi&nbsp;<code>main()<\/code>, maka program akan menjadi sulit terbaca.\u201d<\/p>\n\n\n\n<p>Karena itu, kita perlu membuat fungsi tersendiri agar program tidak berantakan.<\/p>\n\n\n\n<p>Bagaimana cara buatnya?<\/p>\n\n\n\n<p>Silahkan lanjutkan membaca:<\/p>\n\n\n\n<h2 id=\"cara-membuat-fungsi-pada-bahasa-c\">Cara Membuat Fungsi pada Bahasa C++<\/h2>\n\n\n\n<p>Fungsi pada C++ dapat kita buat dengan cara seperti ini:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/fungsi-c.webp\" alt=\"Cara Membuat Fungsi pada C++\" title=\"\" \/><\/figure>\n\n\n\n<p>Fungsi biasanya akan mengembalikan sebuah nilai dari hasil prosesnya. Karena itu, kita harus menentukan tipe data untuk nilai yang akan dikembalikan.<\/p>\n\n\n\n<p>Apabila fungsi tersebut tidak memiliki nilai kembalian, maka kita harus menggunakan tipe&nbsp;<code>void<\/code>&nbsp;untuk menyatakan kalau fungsi tersebut tidak akan mengembalikan nilai apa-apa.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void nama_fungsi(){\n    cout &lt;&lt; \"Ini adalah sebuah fungsi\\n\";\n}<\/code><\/pre>\n\n\n\n<p>Lalu untuk parameter bersifat opsional, boleh ada boleh tidak.<\/p>\n\n\n\n<p>Tergantung dari fungsi yang dibuat. Jika fungsi itu membutuhkan input, maka kita harus membuatkan paramter.<\/p>\n\n\n\n<p>Tapi kalau tidak menerima input apapun, ya tidak perlu dibuat.<\/p>\n\n\n\n<p>Fungsi yang tidak menerima input, kadang juga disebut dengan&nbsp;<strong>prosedur<\/strong>.<\/p>\n\n\n\n<p>Okee..<\/p>\n\n\n\n<p>Sekarang mari kita coba membuat fungsi pada program C++.<\/p>\n\n\n\n<p>Silahkan buat file baru bernama&nbsp;<code>contoh_fungsi.cpp<\/code>&nbsp;kemudian isi dengan kode berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ membuat fungsi say_hello()\nvoid say_hello(){\n    cout &lt;&lt; \"Hello Selamat Datang!\\n\";\n}\n\nint main(){\n    \/\/ memanggil fungsi say_hello()\n    say_hello();\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/say-hello.webp\" alt=\"Program fungsi say_hello\" title=\"\" \/><\/figure>\n\n\n\n<p>Fungsi&nbsp;<code>say_hello()<\/code>&nbsp;dapat kita panggil berulang kali pada fungsi&nbsp;<code>main()<\/code>.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ membuat fungsi say_hello()\nvoid say_hello(){\n    cout &lt;&lt; \"Hello Selamat Datang!\\n\";\n}\n\nint main(){\n    \/\/ memanggil fungsi say_hello()\n    say_hello();\n    say_hello();\n    say_hello();\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Maka hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/say-hello-2.webp\" alt=\"Program fungsi say_hello\" title=\"\" \/><\/figure>\n\n\n\n<p>Jadi, cukup buat fungsi satu kali. Kita bisa panggil berkali-kali.<\/p>\n\n\n\n<h2 id=\"deklarasi-dan-definisi-fungsi\">Deklarasi dan Definisi Fungsi<\/h2>\n\n\n\n<p>Pada contoh di atas, kita membuat fungsi dengan cara mendefinisikan langsung fungsinya.<\/p>\n\n\n\n<p>Kita juga bisa membuatnya dengan deklarasi.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ deklarasi fungsi\nvoid say_hello();\n\nint main(){\n    \/\/ memanggil fungsi say_hello()\n    say_hello();\n    say_hello();\n    say_hello();\n\n    return 0;\n}\n\n\/\/ Definisi fungsi\nvoid say_hello(){\n    cout &lt;&lt; \"Hello Selamat Datang!\\n\";\n}<\/code><\/pre>\n\n\n\n<p>Apa bedanya dengan yang tadi?<\/p>\n\n\n\n<p>Jika kita membuat fungsi secara&nbsp;<strong>definisi<\/strong>, kita harus membuat fungsinya di atas fungsi main.<\/p>\n\n\n\n<p>Jika dibuat di bawah fungsi main, maka program akan error.<\/p>\n\n\n\n<p>Soalnya program C++ dieksekusi dari atas ke bawah.<\/p>\n\n\n\n<p>Tapi berkat&nbsp;<strong>deklarasi<\/strong>, masalah ini bisa teratasi.<\/p>\n\n\n\n<p>Jadi kamu mau pilih cara yang mana?<\/p>\n\n\n\n<p>Deklarasi dulu atau langsung definisikan fungsinya?<\/p>\n\n\n\n<h2 id=\"fungsi-dengan-parameter\">Fungsi dengan Parameter<\/h2>\n\n\n\n<p>Parameter adalah variabel yang menyimpan nilai untuk diproses di dalam fungsi.<\/p>\n\n\n\n<p>Parameter berfungsi untuk menyimpan nilai yang akan diinputkan ke fungsi.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void say_hello(string name){\n    cout &lt;&lt; \"Hello \" &lt;&lt; name &lt;&lt; \"!\\n\";\n}<\/code><\/pre>\n\n\n\n<p>Perhatikan!<\/p>\n\n\n\n<p><code>name<\/code>&nbsp;adalah sebuah parameter dengan tipe string.<\/p>\n\n\n\n<p>Parameter ini akan menyimpan nilai yang diinputkan ke fungsi&nbsp;<code>say_hello()<\/code>.<\/p>\n\n\n\n<p>Lalu, bagaimana cara kita memberikan input ke fungsi?<\/p>\n\n\n\n<p>Berikut caranya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>say_hello(\"Petani Kode\");<\/code><\/pre>\n\n\n\n<p>Perhatikan!<\/p>\n\n\n\n<p><code>\"Petani Kode\"<\/code>&nbsp;adalah nilai yang akan kita berikan ke fungsi.<\/p>\n\n\n\n<p>Biar lebih paham\u2026 mari kita coba dalam program.<\/p>\n\n\n\n<p>Silahkan buat program baru dengan nama&nbsp;<code>fungsi_parameter.cpp<\/code>, kemudian isi dengan kode berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid say_hello(string name){\n    cout &lt;&lt; \"Hello \" &lt;&lt; name &lt;&lt; \"!\\n\";\n}\n\nint main(){\n    say_hello(\"Dian\");\n    say_hello(\"Petani\");\n    say_hello(\"Kode\");\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/parameter.webp\" alt=\"Program fungsi dengan parameter pada C\" title=\"\" \/><\/figure>\n\n\n\n<p>Hasil outputnya akan menyesuaikan dengan nilai parameter yang kita berikan ke fungsi.<\/p>\n\n\n\n<p>Lalu bagaimana kalau ada lebih dari satu parameter?<\/p>\n\n\n\n<p>Gampang\u2026<\/p>\n\n\n\n<p>Tinggal ditambahkan dan dipisah dengan tanda koma seperti ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void add(int a, int b){\n    printf(\"%d + %d = %d\\n\", a, b, a+b);\n}<\/code><\/pre>\n\n\n\n<p>Mari kita coba\u2026<\/p>\n\n\n\n<p>Buatlah program baru barnama&nbsp;<code>dua_param.c<\/code>, kemudian isi dengan kode berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid add(int a, int b){\n    printf(\"%d + %d = %d\\n\", a, b, a+b);\n}\n\nint main(){\n    add(1, 4);\n    add(8, 2);\n    add(3, 2);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/dua-param.webp\" alt=\"Program fungsi dengan parameter pada C\" title=\"\" \/><\/figure>\n\n\n\n<h2 id=\"fungsi-yang-mengembalikan-nilai\">Fungsi yang Mengembalikan Nilai<\/h2>\n\n\n\n<p>Pada contoh di atas, kita memberikan nilai input ke fungsi berupa integer\u2026<\/p>\n\n\n\n<p>\u2026lalu di dalamnya dilakukan operasi penjumlahan.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void add(int a, int b){\n    printf(\"%d + %d = %d\\n\", a, b, a+b);\n}<\/code><\/pre>\n\n\n\n<p>Fungsi ini tidak mengembalikan apa-apa, karena tipe data yang diberikan pada nilai kembalian adalah&nbsp;<code>void<\/code>.<\/p>\n\n\n\n<p>Fungsi juga kadang harus menghasilkan output.<\/p>\n\n\n\n<p>Mengapa?<\/p>\n\n\n\n<p>Karena kadang kita membutuhkan hasil dari fungsi tersebut untuk digunakan pada proses berikutnya.<\/p>\n\n\n\n<p>Kita bisa menggunakan kata kunci&nbsp;<code>return<\/code>&nbsp;untuk mengembalikan nilai dari fungsi.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int add(int a, int b){\n    return a+b;\n}<\/code><\/pre>\n\n\n\n<p>Maka fungsi&nbsp;<code>add()<\/code>&nbsp;akan mengembalikan nilai berupa integer dari hasil penjumlahan nilai&nbsp;<code>a<\/code>&nbsp;dan&nbsp;<code>b<\/code>.<\/p>\n\n\n\n<p>Mari kita coba contoh yang lain\u2026<\/p>\n\n\n\n<p>Silahkan buat program baru bernama&nbsp;<code>fungsi_bagi.cpp<\/code>, kemudian isi dengan kode berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nfloat bagi(int a, int b){\n    float hasil = (float)a \/ (float)b;\n    return hasil;\n}\n\nint main(){\n    printf(\"Hasil 5\/2: %.2f\\n\", bagi(5, 2));\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/fungsi-bagi.webp\" alt=\"Program fungsi pada C\" title=\"\" \/><\/figure>\n\n\n\n<h2 id=\"variabel-lokal-dan-variabel-global\">Variabel Lokal dan Variabel Global<\/h2>\n\n\n\n<p>Variabel lokal dan variabel global akan sering kita temukan dalam pembuatan fungsi.<\/p>\n\n\n\n<p>Variabel global adalah variabel yang bisa diakses dari semua fungsi. Sedangkan variabel lokal adalah variabel yang hanya bisa diakses dari dalam fungsi itu sendiri.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ membuat variabel global\nint nilai = 9;\n\nint main(){\n    \/\/ membuat variabel lokal\n    int nilai = 7;\n\n    \/\/ mencetak variabel\n    printf(\"Nilai: %d\\n\", nilai);\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Pada contoh di atas, kita membuat variabel global bernama&nbsp;<code>nilai<\/code>.<\/p>\n\n\n\n<p>Fungsi ini berada di luar fungsi main.<\/p>\n\n\n\n<p>Lalu di dalam fungsi&nbsp;<code>main()<\/code>, kita membuat variabel lagi bernama&nbsp;<code>nilai<\/code>&nbsp;dengan nilai yang berbeda.<\/p>\n\n\n\n<p>Variabel yang ada di dalam fungsi&nbsp;<code>main()<\/code>&nbsp;adalah variabel lokal.<\/p>\n\n\n\n<p>Lalu, pertanyaanya:<\/p>\n\n\n\n<p>Berapakah hasil outputnya?<\/p>\n\n\n\n<p>Jawabannya:&nbsp;<code>7<\/code><\/p>\n\n\n\n<p>Mengapa bisa&nbsp;<code>7<\/code>?<\/p>\n\n\n\n<p>Karena variabel&nbsp;<code>nilai<\/code>&nbsp;kita buat ulang di dalam fungsi main.<\/p>\n\n\n\n<p>Sekarang coba hapus variabel lokal yang ada di dalam main, sehingga akan menjadi seperti ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ membuat variabel global\nint nilai = 9;\n\nint main(){\n    \/\/ membuat variabel lokal\n    \/\/int nilai = 7;\n\n    \/\/ mencetak variabel\n    printf(\"Nilai: %d\\n\", nilai);\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Maka hasil outputnya akan&nbsp;<code>9<\/code>. Karena variabel yang dipakai adalah variabel global.<\/p>\n\n\n\n<p>Kalau tidak percaya, coba buktikan aja sendiri!<\/p>\n\n\n\n<h2 id=\"pass-by-value-dan-pass-by-reference\">Pass by Value dan Pass by Reference<\/h2>\n\n\n\n<p>Pass by value dan pass by reference adalah cara untuk memberikan nilai pada paramaeter.<\/p>\n\n\n\n<p>Biasanya kita langsung memberikan nilai kepada parameter dengan cara seperti ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kali_dua(4);<\/code><\/pre>\n\n\n\n<p>Ini disebut pass by value, karena di sana kita memberikan nilai&nbsp;<code>4<\/code>&nbsp;secara langsung.<\/p>\n\n\n\n<p>Nah kalau seperti ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kali_dua(&amp;nama_variabel);<\/code><\/pre>\n\n\n\n<p>Ini disebut pass by reference, karena kita memberikan alamat memori.<\/p>\n\n\n\n<p>Contoh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid kali_dua(int *num){\n    *num = *num * 2;\n}\n\nint main(){\n    int angka = 9;\n\n    \/\/ memanggil fungsi\n    kali_dua(&amp;angka);\n\n    \/\/ mencetak isi variabel\n    \/\/ setelah fungsi dipanggil\n    cout &lt;&lt; \"isi variabel angka = \" &lt;&lt; angka &lt;&lt; endl;\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/pass-by-ref.webp\" alt=\"Fungsi dengan pass by reference\" title=\"\" \/><\/figure>\n\n\n\n<p>Fungsi&nbsp;<code>kali_dua()<\/code>&nbsp;memiliki parameter berupa&nbsp;<a href=\"https:\/\/www.petanikode.com\/c-pointer\/\">pointer<\/a>, artinya kita harus memberikan alamat memori untuk pointer ini.<\/p>\n\n\n\n<p>Pada saat pemanggilan, fungsi&nbsp;<code>kali_dua()<\/code>&nbsp;kita isi parameternya dengan alamat memori dari variabel&nbsp;<code>angka<\/code>.<\/p>\n\n\n\n<p>Maka hasilnya nilai variabel angka akan dikalikan dengan&nbsp;<code>2<\/code>&nbsp;berdasarkan rumus pada fungsi yang kita berikan.<\/p>\n\n\n\n<h2 id=\"fungsi-rekursif-pada-c\">Fungsi Rekursif pada C++<\/h2>\n\n\n\n<p>Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.<\/p>\n\n\n\n<p>Maksudnya?<\/p>\n\n\n\n<p>Biasanya kita memanggil fungsi pada fungsi main atau fungsi yang lainnya. Namun, pada fungsi rekursif\u2026<\/p>\n\n\n\n<p>\u2026fungsi itu akan memanggil dirinya sendiri di dalam tubuh fungsi.<\/p>\n\n\n\n<p>Biar lebih jelas!<\/p>\n\n\n\n<p>Coba perhatikan contoh berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\n\/\/ deklarasi fungsi\nint sum(int n);\n\nint main(){\n    int number, result;\n\n    printf(\"Enter a positive integer: \");\n    scanf(\"%d\", &amp;number);\n\n    result = sum(number);\n\n    printf(\"sum = %d\", result);\n\n    return 0;\n}\n\n\/\/ definisi fungsi\nint sum(int num){\n    if (num!=0)\n        return num + sum(num-1); \/\/ fungsi sum() memanggil dirinya sendiri\n    else\n        return num;\n}<\/code><\/pre>\n\n\n\n<p>Hasilnya:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.petanikode.com\/img\/c\/fungsi\/fungsi-rekursif.webp\" alt=\"Program fungsi pada C++\" title=\"\" \/><\/figure>\n\n\n\n<p>Mengapa hasilnya bisa&nbsp;<code>21<\/code>?<\/p>\n\n\n\n<p>Karena kita menginputkan nilai&nbsp;<code>6<\/code>, maka akan sama dengan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1 + 2 + 3 + 4 + 5 + 6 = 21<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Apa itu Fungsi? Fungsi adalah sub-program yang bisa digunakan kembali baik di dalam program itu sendiri, maupun di program yang lain. Fungsi dapat menerima input dan menghasilkan output. Contoh fungsi yang sering kita buat adalah fungsi&nbsp;main(). Fungsi ini memang wajib ada di setiap program C++, karena fungsi inilah yang akan dieksekusi pertama kali saat program [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":1846,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/posts\/1870"}],"collection":[{"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/comments?post=1870"}],"version-history":[{"count":1,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/posts\/1870\/revisions"}],"predecessor-version":[{"id":1871,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/posts\/1870\/revisions\/1871"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/media\/1846"}],"wp:attachment":[{"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/media?parent=1870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/categories?post=1870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uts.ac.id\/jul\/wp-json\/wp\/v2\/tags?post=1870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}