Rangkuman 5.7 - 5.16

3
Tugas Rangkuman 5.7 – 5.16 (Jumat, 13 Maret 2015) Bagus Muhammad Satriyo – 120 620 150 4 Diamond Ravi – 120 623 720 1 Yusuf Hafidzun Alim – 120 626 374 2 Rangkuman 5.7 Function Call Stack and Activation Records Pertama kita harus menganggap sutatu struktur data sebagai stack. Lalu ada istilah pushing yaitu memasukan data ke dalam stack, dan sebaliknya yaitu popping. Stack dikenal sebagai data struktur yang berkonsep last-in, first-out (LIFO), yaitu data terakhir yang di-push atau dimasukkan ke dalam stack, merupakan data pertama yang di-pop / diambil dari stack. Agar pemanggilan suatu fungsi berhasil, maka alamat pemanggilan dimasukkan ke program execution/function call stack. Stack ini juga memuat memori untuk lokal variabel, data ini disimpan dan disebut activation record/stack frame. Keterbatasan memori menyebabkan stack overflow bila pemanggilan melebihi dari jumlah activation record yang telah disimpan program execution stack. 5.8 Headers Setiap library standard memiliki header yang sesuai, yang berisi fungsi prototype untuk semua fungsi yang terdapat dalam library tersebut dan beragam tipe data serta konstanta yang dibutuhkan fungsi. Programmer-defined headers juga harus menggunakan ekstensi yaitu .h. Contohnya: #include ”square.h” . 5.9 Calling Functions by Value and by Reference Terdapat 2 cara untuk memanggil fungsi pada bahasa pemrograman yaitu call-by-value dan call-by-reference. Ketika argumen dipanggil berdasarkan value, salinan valu tersebut akan terbentuk dan memanggil fungsi tersebut dan perubahan pada salinan tidak mempengaruhi nilai variabel asli. Sedangkan apabila melalui reference, caller mengizinkan nilai asli variable fungsi ersebut untuk dimodifikasi. Pemanggilan dengan value dibuthkan apabila tidak diperlukan modifikasi nilai variabel dan hal ini mencegah efek samping yaitu modifikasi variabel. Pemanggilan berdasarkan reference digunakan hanya pada fungsi yang terpercaya yang memerlukan modifikasi variabel. 5.10 Random Number Generation Elemen peluang atau probabilitas digunakan melalui fungsi rand (random) pada C standard library dari header <stdlib.h>. Fungsi rand menghasilkan bilangan bulat antara 0 dan RAND- _MAX. Maksimal nilai RAND_MAX yaitu 32767 yang mana nilai max untuk 2 buah byte (16 bit) integer. Contoh untuk menghasilkan bilangan bulat dengan rentang antara 0 sampai 5

description

Terdapat 2 cara untuk memanggil fungsi pada bahasa pemrograman yaitu call-by-value dan call-by-reference. Ketika argumen dipanggil berdasarkan value, salinan valu tersebut akan terbentuk dan memanggil fungsi tersebut dan perubahan pada salinan tidak mempengaruhi nilai variabel asli. Sedangkan apabila melalui reference, caller mengizinkan nilai asli variable fungsi ersebut untuk dimodifikasi. Pemanggilan dengan value dibuthkan apabila tidak diperlukan modifikasi nilai variabel dan hal ini mencegah efek samping yaitu modifikasi variabel. Pemanggilan berdasarkan reference digunakan hanya pada fungsi yang terpercaya yang memerlukan modifikasi variabel.

Transcript of Rangkuman 5.7 - 5.16

Page 1: Rangkuman 5.7 - 5.16

Tugas Rangkuman 5.7 – 5.16 (Jumat, 13 Maret 2015)

Bagus Muhammad Satriyo – 120 620 150 4

Diamond Ravi – 120 623 720 1

Yusuf Hafidzun Alim – 120 626 374 2

Rangkuman

5.7 Function Call Stack and Activation Records

Pertama kita harus menganggap sutatu struktur data sebagai stack. Lalu ada istilah pushing

yaitu memasukan data ke dalam stack, dan sebaliknya yaitu popping. Stack dikenal sebagai

data struktur yang berkonsep last-in, first-out (LIFO), yaitu data terakhir yang di-push atau

dimasukkan ke dalam stack, merupakan data pertama yang di-pop / diambil dari stack. Agar

pemanggilan suatu fungsi berhasil, maka alamat pemanggilan dimasukkan ke program

execution/function call stack. Stack ini juga memuat memori untuk lokal variabel, data ini

disimpan dan disebut activation record/stack frame. Keterbatasan memori menyebabkan

stack overflow bila pemanggilan melebihi dari jumlah activation record yang telah disimpan

program execution stack.

5.8 Headers

Setiap library standard memiliki header yang sesuai, yang berisi fungsi prototype untuk

semua fungsi yang terdapat dalam library tersebut dan beragam tipe data serta konstanta

yang dibutuhkan fungsi. Programmer-defined headers juga harus menggunakan ekstensi

yaitu .h.

Contohnya: #include ”square.h” .

5.9 Calling Functions by Value and by Reference

Terdapat 2 cara untuk memanggil fungsi pada bahasa pemrograman yaitu call-by-value dan

call-by-reference. Ketika argumen dipanggil berdasarkan value, salinan valu tersebut akan

terbentuk dan memanggil fungsi tersebut dan perubahan pada salinan tidak mempengaruhi

nilai variabel asli. Sedangkan apabila melalui reference, caller mengizinkan nilai asli variable

fungsi ersebut untuk dimodifikasi. Pemanggilan dengan value dibuthkan apabila tidak

diperlukan modifikasi nilai variabel dan hal ini mencegah efek samping yaitu modifikasi

variabel. Pemanggilan berdasarkan reference digunakan hanya pada fungsi yang terpercaya

yang memerlukan modifikasi variabel.

5.10 Random Number Generation

Elemen peluang atau probabilitas digunakan melalui fungsi rand (random) pada C standard

library dari header <stdlib.h>. Fungsi rand menghasilkan bilangan bulat antara 0 dan RAND-

_MAX. Maksimal nilai RAND_MAX yaitu 32767 yang mana nilai max untuk 2 buah byte (16

bit) integer. Contoh untuk menghasilkan bilangan bulat dengan rentang antara 0 sampai 5

Page 2: Rangkuman 5.7 - 5.16

maka ditulis rand() %6 didalam <stdlib.h>. hal ini disebut scaling dan 6 adalah scaling factor.

Tidak ada kondisi default yang disediakan oleh switch statement. Penggunaan %s penentu

konversi untuk mem-print/mencetak string. Fungsi rand sebenarnya menghasilkan

peudorandom number.

Ketika program benar-benar debugged , akan dikeluarkan urutan angka acak. Inilah yang

disebut dengan randomizing dan ini dapat diselesaikan dengan fungsi srand. Srand

mengambil bilangan bulat tak bertanda dan mengeumpankan ke rand unutk menghasilkan

suatu sequence of random number yang berbeda untuk setiap eksekusi program. Penentu

konversi %u digunakan untuk membaca unsigned value sebagai argument srand pada

<stdlib.h> dengan scanf. Untuk randomize tanpe memasukan umpan, digunakan statement:

srand( time (NULL)); sehingga komputer membaca clock dan mengumpan secara otomatis.

Fungsi time mengabil NULL sebagai argument. Fungsi prototype time ada pada <time.h>.

5.11 A Game of Chance

Seperti contoh game melempar 2 buah dadu. Saat mendifinikan fungsi rolldice, program

akan me-roll dan menghitung/menampilkan total nilai dadu. Fungsi ini didefinisikan sekali

namun dipanggil dari 2 tempat pada program (line 23 dan 51). Variable game status

didefinisikan sebgai enum status yang baru. Enum adalah suatu set konstanta bilangan bulat

yang diripresentasikan dengan identifiers atau disebut juga symbolic constants. Nilai enum

dimulai dengan 0 dan bertambah dengan angka 1. Kontstanta CONTINUE bernilai 0, menang

bernilai 1 dan LOST bernilai 2 (Line 8). While statement pada line 50 dilewatkan karena

gamestatus tidak lanjut dan ke line 65 yaitu mencetak player wins atau lose.

5.12 Storage Classes

Pada bagian 2-4, kita menggunakan identifier untuk nama variabel. Atribut variabel termasuk

nama, jenis, ukuran, dan nilai. Pada bagian ini juga menggunakan identifier sebagai nama

untuk fungsi terdefinisi pengguna(user-defined). Tiap identifier memiliki atribut lain termasuk

storage class, storage duration, scope, dan linkage. C memberikan empat kelas penyimpanan

diantaranya : auto, register, extern, dan statis.

Kelas penyimpanan identifier menentukan durasi penyimpanan, scope dan linkage.

Sedangkan durasi penyimpanan identifier adalah periode sepanjang identifier ada di

memori.Scope identifer adalah dimana identifier dapat direferensikan dalam program.

5.13 Scope Rules

Scope pada identifier merupakan porsi program dimana identifier dapat direferensikan.

Sebagai contoh ketika kita mendefinisikan sebuah variabel lokal dalam sebuah blok. Ia dapat

direferensikan hanya mengikuti definisinya sendiri pada blok tersebut atau dalam blok

tersarang diantara blok tersebut.

Ada empat identifier scope, yakni function scope , file scope, block scope, dan function-

prototype scope. Label dapat digunakan dimana saja di dalam fungsi dimana mereka tampil,

tetapi tidak dapat direferensikan diluar kerangka fungsi.

Page 3: Rangkuman 5.7 - 5.16

Label digunakan dalam statement switch dan goto. Label merupakan detail implementasi

yang berfungsi sembunyi satu sama lain. Penyembunyian ini lebih formalnya disebut dengan

penyembunyian informasi atau information hiding.

5.14 Recursion

Fungsi rekursif adalah fungsi yang memanggil sendirinya baik langsung maupun tidak

langsung melalui fungsi lain. Rekursi merupakan topik kompleks yang dibahas secara lengkap

di mata ajar ilmu komputer tingkat atas. Pada bagian ini dan selanjutnya, contoh sederhana

pada rekusi dipersembahkan. Sebuah fungsi rekursif digunakan untuk menyelesaikan sebuah

masalah. Fungsi ini sebenarnya mengetahui bagaimana menyelesaikan hanya kasus yang kecil

atau juga disebut so-called base case.

Jika fungsi dipanggil dengan base case, maka fungsi tersebut mengembalikan sebauh hasil.

Apabila fungsi dipanggil dengan masalah yang lebih kompleks, fungsi memisahkan masalah

menjadi dua bagian konseptual; sebuah bagian dimana fungsi mengethaui apa yang harus

dilakukan dan bagian yang tidak mengetahui hal tersebut. Agar layak, bagian terbawah harus

mencerminkan masalah aslinya, tetapi dengan versi yang lebih sederhana ataupun kecil.

5.15 Fibonacci Series

Deret Fibonacci dimulai dengan 0 dan satu dan memiliki properti dimana setiap angka

fibonacci merupakan penjumlahan dari duang angka fibonacci sebelumnya. Deret terjadi

secara sendirinya/alami, dan sebagian menggambarkan bentuk spiral. Rasio keberhasilan

angka Fibonacci adalah 1.618...

5.16 Rekursi vs Iterasi

Di bagian ini akan dibandingkan antara rekursi dengan iterasi yang merupakan dua

pendekatan yang berbeda. Keduanya berasal dari struktur kendali, hanya saja iterasi

menggunakan struktur repetisi sedangkan rekursi menggunakan dtruktur seleksi. Keduanya

melibatkan struktur repetisi, rekursi mendapatkan repetisi melalui panggilan dungsi yang

berulang.

Keduanya melibatkan tes terminasi. Iterasi berhenti ketika keadaan kelanjutan lingkar gagal,

sedangkan rekursi berakhir ketika base case dikenali. Iterasi dengan repetisi counter-

controlled dan rekursi masing-masing mencapai akhir secara bertahap. Iterasi tetap

memodifikasi penghitung hingga penghitung mengasumsikan nilai yang membuat kelanjutan

lingkar gagal. Rekursi teap menghasilkan versi yang lebih sederhana pada masalah aslinya

hingga kasus dasar tercapai.