Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2_stat.pdf · 1.1...
-
Upload
doannguyet -
Category
Documents
-
view
227 -
download
0
Transcript of Nanda Arista Rizki, M.Si. - math.fmipa.unmul.ac.idmath.fmipa.unmul.ac.id/nanda/pk2_stat.pdf · 1.1...
Catatan Kuliah
Pemprograman Komputer II
disusun oleh
Nanda Arista Rizki, M.Si.
PROGRAM STUDI STATISTIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS MULAWARMAN
2018
Daftar Isi
Daftar Isi ii
1 Pengenalan Bahasa C++ 1
1.1 Menampilkan Hasil Pada Layar . . . . . . . . . . . . . . . . . . . . . 1
1.2 Jenis-Jenis Tipe Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Menggunakan Header cmath . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Pengkondisian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Perulangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Instruksi goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.8 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.9 Membuat Header File . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Aplikasi Matematik 25
2.1 Bilangan Biner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Faktor Persekutuan Terbesar (FPB) . . . . . . . . . . . . . . . . . . . 26
2.3 Mencari FPB Menggunakan Metode Euclid . . . . . . . . . . . . . . . 28
2.4 Faktor Bilangan Prima . . . . . . . . . . . . . . . . . . . . . . . . . . 30
i
DAFTAR ISI ii
2.5 Bilangan Acak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6 Distribusi Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7 Membangkitkan Peubah Acak . . . . . . . . . . . . . . . . . . . . . . 37
BAB 1
Pengenalan Bahasa C++
1.1 Menampilkan Hasil Pada Layar
Bahasa C++ adalah bahasa pemprograman komputer yang diciptakan oleh Bjarne
Stroustrup, yang merupakan perkembangan dari bahasa C. Bjarne Stroustrup per-
tama kali mengembangkan C++ pada awal 1980-an. Bahasa C++ adalah bahasa
pemprograman dengan tingkat lebih tinggi dari bahasa C, karena bahasa C++ ber-
sifat Object Oriented Programming (OOP) dan memberikan tambahan fungsi baru
dari bahasa C. Perbedaannya dengan bahasa C, pada bahasa C++ lebih menguta-
makan data dibandingkan prosesnya (langkah-langkah prosedural).
Perintah-perintah bahasa C++ yang diberikan kepada compiler untuk me-
lakukan definisi, memasukkan file library, dan lain-lain; menggunakan tanda ”#”.
Header iostream dibutuhkan untuk memanggil perintah membaca input dari ke-
yboard dan menampilkannya pada layar. Selain iostream , beberapa header yang
dapat digunakan pada bahasa C++, antara lain cstdio (untuk perintah dalam
bahasa C seperti printf dan scanf ), cmath (untuk operasi-operasi matematika
seperti trigonometri), cstring (untuk memanipulasi string), dan lain sebagainya.
Perintah main() adalah fungsi utama pada program C++. Pernyataan di-
akhiri dengan titik-koma ”;”. Blok berada dalam kurung kurawal ”{ }”. Kalimat
(komentar) yang ditulis setelah tanda ”//” tidak akan dieksekusi. Komentar yang
lebih dari 1 baris, dapat menggunakan tanda ”/* */”. Untuk lebih jelasnya, ikuti
1
latihan berikut:
Latihan 1:
1 #include <iostream>
2 using namespace std;
3 /*
4 Program dalam bahasa C++ untuk menampilkan kalimat pada layar.
5 Gunakan perintah cout <<
6 */
7
8 int main() {9 cout << "Hallo, saat ini sedang belajar bahasa C++";
10 cout << endl;
11 cout << "Semoga bisa mahir dalam \"Bahasa Pemprograman\", baik C ...
maupun C++.";
12 return 0;
13 }
Perintah cout mengirimkan informasi yang ingin ditulis pada layar komputer. Per-
hatikan juga tanda ”<<” yang selalu berada di kanan perintah cout. Cara lain
untuk menampilkan hasil yang sama yaitu mengubah perintah-perintah pada fungsi
utama seperti berikut.
Latihan 2:
1 #include <iostream>
2 using namespace std;
3
4 int main() {5 cout << "Hallo, saat ini sedang belajar bahasa C++" << endl
6 << "Semoga bisa mahir dalam \"Bahasa Pemprograman\", baik C ...
maupun C++.";
7 return 0;
8 }
Perintah untuk membaca input dari keyboard yaitu menggunakan ”cin >>”. Per-
hatikan bahwa tanda yang digunakan untuk perintah cin berbeda dengan yang
Pemprograman Komputer II 2 Nanda Arista Rizki, M.Si.
digunakan untuk perintah cout . Tanda ”<<” dalam perintah cout dapat diarti-
kan sebagai penyalur data dari sintaks dalam jendela command ke jendela output.
Sebaliknya, penggunaan ”>>” dalam perintah cin diperlukan ketika ingin menghu-
bungkan suatu ketikan keyboard dari jendela output ke sistem command yang ingin
diolah.
Latihan 3:
1 #include <iostream>
2 using namespace std;
3
4 int main() {5 string nama;
6 int nim;
7 cout << "Nama = "; cin >> nama;
8 cout << "NIM = "; cin >> nim;
9 system("cls"); //menghapus tampilan
10 cout << "Nama Saya " << nama << " dan NIM Saya " << nim << endl;
11 system("pause"); //menahan hasil
12 return 0;
13 }
Perintah system(”cls”) dan system(”pause”) masing-masing adalah perintah
untuk menghapus tampilan layar dan menahan hasil layar (seperti perintah getch
dalam bahasa C).
1.2 Jenis-Jenis Tipe Data
Bahasa C++ mengenal 4 tipe data, yaitu integer, float, karakter/teks, dan boolean.
Tipe int (integer) digunakan untuk bilangan bulat. Berikut adalah latihan untuk
menggunakan tipe int untuk melakukan perhitungan sederhana.
Latihan 4:
1 #include <iostream>
Pemprograman Komputer II 3 Nanda Arista Rizki, M.Si.
2 using namespace std;
3
4 int main() {5 system("cls");
6 int x;
7 int y;
8
9 x = 3;
10 y = 4;
11
12 cout << "x=" << x << endl;
13 cout << "y=" << y << endl;
14 cout << "x+y=" << x+y << endl;
15 return 0;
16 }
Pada Latihan 4, variabel-variabel yang didefinisikan menggunakan tipe data int
adalah x dan y. Selanjutnya adalah mengenal batas nilai tipe int .
Latihan 5:
1 #include <iostream>
2 using namespace std;
3
4 int main() {5 int juta = 1000000;
6 int triliun = juta * juta;
7
8 cout << "Jika menggunakan tipe variabel \"int\", maka " << juta ...
<< " kuadrat adalah "
9 << triliun << "." << endl;
10 return 0;
11 }
Selanjutnya, ubahlah tipe int (pada Latihan 5) menjadi long , long long , float ,
atau long double . Perhatikan perbedaan hasilnya pada layar komputer.
Selain bilangan, tipe data pada bahasa C++ yaitu karakter dan teks. Perintah
untuk mendefinisikan tipe data karakter adalah char yang diikuti dengan variabel-
Pemprograman Komputer II 4 Nanda Arista Rizki, M.Si.
nya, sedangkan untuk tipe teks menggunakan string .
Latihan 6:
1 #include <iostream>
2 using namespace std;
3
4 int main() {5 char x;
6 x = 'A';
7 cout << x << endl;
8 }
Tipe data selanjutnya adalah boolean, yang merepresentasikan logika yang ber-
nilai benar (1) atau salah (0). Bahasa C++ menyediakan operator logika untuk
menyatakan dan, atau, tidak; dimana masing-masing dinyatakan dalam bentuk
”&&”, ”||”, dan ”!”. Operator perbandingan pada dua variabel yang menghasilkan
nilai dengan tipe boolean yaitu ”==”, ”! =”, ”<”, ”<=”, ”>”, dan ”>=”.
Latihan 7:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {6 int a=1;
7 int b=2;
8
9 cout << (a>b) << endl;
10 cout << (a≤b) << endl;
11 cout << (a!=b) << endl;
12 cout << (a>0 && b≥0) << endl;
13 }
Suatu program dikatakan efisien jika memiliki ukuran file yang kecil. Selan-
jutnya adalah program untuk mengetahui ukuran berbagai tipe data (dalam satuan
Pemprograman Komputer II 5 Nanda Arista Rizki, M.Si.
byte).
Latihan 8:
1 #include <iostream>
2 using namespace std;
3 /*
4 Menampilkan ukuran berbagai tipe data dalam satuan byte.
5 */
6 int main() {7 // Tipe−tipe integer:
8 cout << "Ukuran tipe \"short\" adalah " << sizeof(short)
9 << " byte" << endl;
10 cout << "Ukuran tipe \"int\" adalah " << sizeof(int)
11 << " byte" << endl;
12 cout << "Ukuran tipe \"long\" adalah " << sizeof(long)
13 << " byte" << endl;
14 // Nilai long long mungkin tidak tersedia di beberapa komputer
15 cout << "Ukuran tipe \"long long\" adalah " << sizeof(long long)
16 << " byte" << endl;
17
18 // Tipe karakter dan boolean:
19 cout << "Ukuran tipe \"char\" adalah " << sizeof(char) << " ...
byte" << endl;
20 cout << "Ukuran tipe \"bool\" adalah " << sizeof(bool) << " ...
byte" << endl;
21
22 // Tipe−tipe bilangan real:
23 cout << "Ukuran tipe \"float\" adalah " << sizeof(float)
24 << " byte" << endl;
25 cout << "Ukuran tipe \"double\" adalah " << sizeof(double)
26 << " byte" << endl;
27 // Nilai long double mungkin tidak tersedia di beberapa komputer
28 cout << "Ukuran tipe \"long double\" adalah " << sizeof(long double)
29 << " byte" << endl;
30
31 return 0;
32 }33 //Hasilnya bisa berbeda, tergantung komputer yang digunakan
Pemprograman Komputer II 6 Nanda Arista Rizki, M.Si.
Setelah mengetahui ukuran masing-masing tipe, kemudian adalah mengetahui batas-
batas (nilai ekstrim) dari tipe data integer dan real.
Latihan 9:
1 #include <iostream>
2 #include <climits> // minimum & maksimum ukuran tipe integer
3 #include <cfloat> // minimum & maksimum ukuran tipe real
4 using namespace std;
5
6 int main() {7 cout << "Nilai maksimum tipe \"short\" adalah " << SHRT MAX << endl;
8 cout << "Nilai minimum tipe \"short\" adalah " << SHRT MIN << endl;
9
10 cout << "Nilai maksimum tipe \"int\" adalah " << INT MAX << endl;
11 cout << "Nilai minimum tipe \"int\" adalah " << INT MIN << endl;
12
13 cout << "Nilai maksimum tipe \"long\" adalah " << LONG MAX << endl;
14 cout << "Nilai minimum tipe \"long\" adalah " << LONG MIN << endl;
15
16 // Nilai long long mungkin tidak tersedia di beberapa komputer
17 cout << "Nilai maksimum tipe \"long long\" adalah " << LLONG MAX ...
<< endl;
18 cout << "Nilai minimum tipe \"long long\" adalah " << LLONG MIN ...
<< endl;
19
20 cout << "Nilai positif terkecil tipe \"float\" adalah "
21 << FLT MIN << endl;
22 cout << "Nilai epsilon terkecil tipe \"float\" adalah "
23 << FLT EPSILON << endl;
24 cout << "Nilai maksimum tipe \"float\" adalah "
25 << FLT MAX << endl;
26
27 cout << "Nilai positif terkecil tipe \"double\" adalah "
28 << DBL MIN<< endl;
29 cout << "Nilai epsilon terkecil tipe \"double\" adalah "
30 << DBL EPSILON << endl;
31 cout << "Nilai maksimum tipe \"double\" adalah "
32 << DBL MAX << endl;
33
Pemprograman Komputer II 7 Nanda Arista Rizki, M.Si.
34 // Tipe long double mungkin tidak terdefinisi pada beberapa sistem
35 cout << "Nilai positif terkecil tipe \"long double\" adalah "
36 << LDBL MIN<< endl;
37 cout << "Nilai epsilon terkecil tipe \"long double\" adalah "
38 << LDBL EPSILON << endl;
39 cout << "Nilai maksimum tipe \"long double\" adalah "
40 << LDBL MAX << endl;
41
42 return 0;
43 }44 // Untuk beberapa komputer, menghasilkan output yang berbeda
1.3 Menggunakan Header cmath
Header cmath berguna dalam membuat program bahasa C++ yang menggunakan
fungsi-fungsi matematik. Fungsi-fungsi tersebut antara lain: abs , acos , acosh ,
asin , asinh , atan , atanh , cbrt , ceil , cos , cosh , erf , exp, floor , hypot , log ,
log10 , pow , sin , sinh , sqrt , tan , dan tanh . Selain itu, juga ada beberapa
konstanta-konstanta yang dapat digunakan (perhatikan Tabel 1.1). Namun, jika
ingin menggunakan konstanta-konstanta ini, maka ” USE MATH DEFINES”
harus didefinisikan terlebih dahulu sebelum menuliskan header cmath.
Tabel 1.1: Konstanta-Konstanta Pada Header cmath.h
Sintak NilaiM E eM LOG2E log2eM LOG10E log10eM LN2 ln 2M LN10 ln 10M PI πM PI 2 π/2M PI 4 π/4M 1 PI 1/πM 2 PI 2/πM 2 SQRTPI 2/
√π
M SQRT2√
2
M SQRT1 2 1/√
2
Pemprograman Komputer II 8 Nanda Arista Rizki, M.Si.
Berikut adalah contoh penggunaan header cmath.
Latihan 10:
1 #include <iostream>
2 #define USE MATH DEFINES
3 #include <cmath>
4 using namespace std;
5
6 int main() {7 cout << "sin(30) = " << sin(30*M PI/180) << endl;
8 cout << "cos(30) = " << cos(30*M PI/180) << endl;
9 cout << "tan(30) = " << tan(30*M PI/180) << endl;
10 cout << "asin(1/2) = " << asin(0.5)*180/M PI << endl;
11 cout << "acos(1/2) = " << acos(0.5)*180/M PI << endl;
12 cout << "atan(1/2) = " << atan(0.5)*180/M PI << endl;
13
14 cout << "erf(0,5) = " << erf(0.5) << endl;
15 cout << "exp(2) = " << exp(2) << endl;
16 cout << "ln(e) = " << log(M E) << endl;
17 cout << "log(100) = " << log10(100) << endl;
18 cout << "3ˆ2 = " << pow(3,2) << endl;
19 cout << "sqrt(9) = " << sqrt(9) << endl;
20 cout << "(27)ˆ(1/3) = " << cbrt(27) << endl;
21 cout << "|−8| = " << abs(−8) << endl;
22 cout << "ceil(1,5) = " << ceil(1.5) << endl;
23 cout << "floor(1,5) = " << floor(1.5) << endl;
24 cout << "sqrt(3ˆ2+4ˆ2) = " << hypot(3,4) << endl;
25 return 0;
26 }
1.4 Pengkondisian
Sepertihalnya bahasa C, pengkondisian dalam bahasa C++ juga menggunakan per-
intah if-else dan switch-case . Secara umum, struktur untuk perintah if-else-if
adalah sebagai berikut:
Pemprograman Komputer II 9 Nanda Arista Rizki, M.Si.
1 if (ekspresi){2 pernyataan−pernyataan;3 }4 else if (ekspresi){5 pernyataan−pernyataan;6 }7 else {8 pernyataan−pernyataan;9 }
Perintah if-else-if digunakan untuk menyeleksi sebuah kondisi yang bernilai
benar atau salah. Pernyataan pada masing-masing if akan dijalankan hanya jika
kondisi di dalam logika if masing-masing bernilai benar. Lebih jelasnya, ikuti la-
tihan berikut.
Latihan 11:
1 #include <iostream>
2 using namespace std;
3 int main()
4 {5 long bil=0;
6 cout << "Masukan bilangan : ";
7 cin >> bil;
8 if(bil <0)
9 cout << bil << " adalah bilangan negatif " << endl;
10 else
11 cout << bil << " adalah bilangan non negatif" << endl;
12 return 0;
13 }
Perintah kondisi selanjutnya adalah switch-case . Berbeda dengan perintah
pengkondisian if-else-if , yang memanfaatkan logika true dan false (dua kemungki-
nan); perintah switch-case dapat digunakan untuk memilih dengan kemungkinan
yang lebih dari dua. Secara umum, struktur untuk perintah switch-case adalah
sebagai berikut:
Pemprograman Komputer II 10 Nanda Arista Rizki, M.Si.
1 switch (ekspresi)
2 {3 case nilai konstanta1 :
4 statemen;
5 break;
6
7 case nilai konstanta2 :
8 statemen;
9 break;
10
11 default :
12 statemen alternatif;
13 }
Contoh penggunaan kondisi switch-case adalah sebagai berikut.
Latihan 12:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {6 char huruf;
7 cout << "ketikkan sebuah huruf, lalu tekan [ENTER]" << endl;
8 cin >> huruf;
9
10 switch(huruf)
11 {12 case 'a':
13 {14 cout << "yang Anda ketik adalah a"; break;
15 }16 case 'i':
17 {18 cout << "yang Anda ketik adalah i"; break;
19 }20 case 'u':
21 {
Pemprograman Komputer II 11 Nanda Arista Rizki, M.Si.
22 cout << "yang Anda ketik adalah u"; break;
23 }24 case 'e':
25 {26 cout << "yang Anda ketik adalah e"; break;
27 }28 case 'o':
29 {30 cout << "yang Anda ketik adalah o"; break;
31 }32 default:
33 cout << "yang Anda ketik adalah huruf konsonan"; endl;
34 }35 return 0;
36 }
Contoh lain untuk penggunaan kondisi switch-case adalah sebagai berikut.
Latihan 13:
1 #include <iostream>
2 #include <cmath>
3 using namespace std;
4
5 int main()
6 {7 int bil1,bil2;
8 cout << "ketikkan sebuah bilangan, lalu tekan [ENTER]" << endl;
9 cin >> bil1;
10 bil2=floor(log10(bil1));
11
12 switch(bil2)
13 {14 case 1:
15 {16 cout << "yang Anda ketik adalah puluhan"; break;
17 }18 case 2:
19 {20 cout << "yang Anda ketik adalah ratusan"; break;
Pemprograman Komputer II 12 Nanda Arista Rizki, M.Si.
21 }22 case 3:
23 {24 cout << "yang Anda ketik adalah ribuan"; break;
25 }26 }27 return 0;
28 }
1.5 Perulangan
Perintah perulangan proses dalam sebuah program bahasa C++ adalah for , while ,
dan do. Struktur untuk perintah for adalah sebagai berikut:
1 for(inisialisasi; syarat; penambahan)
2 {3 statement;
4 }
Perulangan for digunakan jika telah diketahui jumlah perulangan yang diinginkan.
Lebih jelasnya, ikuti latihan berikut.
Latihan 14:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {6 int i;
7 for (i=1; i≤100; i++) //pengulangan data dari 1 sampai 100
8 {9 if(i%10==0)
10 cout<<i<<endl; //tampilkan bilangan yang habis dibagi 10
11 }12 }
Pemprograman Komputer II 13 Nanda Arista Rizki, M.Si.
Struktur untuk perintah while adalah
1 while (syarat) {2 instruksi;
3 }
Instruksi atau perintah pada perulangan while dilakukan jika syaratnya terpenuhi.
Berikut contoh penggunaan untuk perulangan while .
Latihan 15:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {6 int i=1;
7 while (i≤100)
8 {9 if(i%10==0)
10 cout<<i<<endl;
11 i++;
12 }13 }
Selanjutnya adalah perulangan do. Adapun strukturnya adalah sebagai berikut
1 do {2 instruksi;
3 }4 while (syarat);
Perulangan ini sama dengan perulangan while , namun hanya peletakannya saja
yang berbeda. Pada perulangan do, tanda ”;” juga melekat setelah perintah while .
Berikut adalah contoh penggunaannya:
Pemprograman Komputer II 14 Nanda Arista Rizki, M.Si.
Latihan 16:
1 #include <iostream>
2 using namespace std;
3
4 main()
5 {6 int i=1;
7 do
8 {9 if(i%10==0)
10 cout<<i<<endl;
11 i++;
12 }13 while (i≤100);
14 }
1.6 Instruksi goto
Bahasa C++ memiliki perintah goto yang digunakan untuk membuat lompatan
dalam program. Perintah ini mengarahkan eksekusi program ke pernyataan yang
diawali oleh sebuah label yang diakhiri dengan tanda titik dua ”:”. Secara umum,
penggunaan goto tidak dianjurkan karena dapat menyebabkan alur program susah
dipahami. Namun pada beberapa kasus sangat berguna. Misalnya pada pengkon-
disian switch-case , perintah goto digunakan untuk kembali ke menu utama.
Latihan 17:
1 #include <iostream>
2 using namespace std;
3 int main()
4 {5 int nilai=10;
6
7 tembus:
8 cout << nilai << ", ";
Pemprograman Komputer II 15 Nanda Arista Rizki, M.Si.
9 nilai−−;10
11 if (nilai>0)
12 goto tembus;
13
14 cout << "selesai";
15 return 0;
16 }
Latihan 18:
1 #include <iostream>
2 using namespace std;
3 int main()
4 {5 int nilai=10;
6 int a;
7 int b;
8
9 for (a=1;a<10;a++)
10 for (b=1;b<10;b++)
11 if (a+b==10) goto kesini;
12
13 kesini:
14 cout << "a = " << a << ", b= " << b;
15 return 0;
16 }
Latihan 19:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {6 int a;
7 int b;
8 int kali;
9 int tanda;
Pemprograman Komputer II 16 Nanda Arista Rizki, M.Si.
10 char tanya;
11
12 cobalagi:
13 system("cls");
14 cout << "Masukkan bilangan pertama : "; cin >> a;
15 cout << "Masukkan bilangan kedua : "; cin >> b;
16
17 kali=a*b;
18 if(kali>0)
19 tanda=1;
20 else if(kali==0)
21 tanda=2;
22 else if(kali<0)
23 tanda=3;
24
25 switch(tanda)
26 {27 case 1:
28 {29 cout << "Hasil perkaliannya positif" << endl; break;
30 }31 case 2:
32 {33 cout << "Hasil perkaliannya 0" << endl; break;
34 }35 case 3:
36 {37 cout << "Hasil perkaliannya negatif" << endl; break;
38 }39 default:
40 cout << "Bilangan−bilangan yang Anda masukkan salah :(" ...
<< endl;
41 }42
43 tanyalagi:
44 cout << "Coba lagi (Y/N) ?";
45 cin >> tanya;
46 if (tanya=='Y' | | tanya=='y')
47 goto cobalagi;
48 else if (tanya=='N' | | tanya=='n')
49 cout << "Terimakasih :)" << endl;
50 else
Pemprograman Komputer II 17 Nanda Arista Rizki, M.Si.
51 goto tanyalagi;
52 return 0;
53 }
1.7 Array
Untuk mendefinisikan variabel array harus diikuti banyaknya elemen pada variabel
tersebut. Misalnya ”int A[2];” digunakan untuk mendefinisikan variabel A dengan
2 elemen yang masing-masing bertipe integer. Berikut adalah latihan menggunakan
array.
Latihan 20:
1 #include <iostream>
2 #include <cmath>
3 using namespace std;
4
5 int main()
6 {7 int k;
8 float A[2];
9 float B[2];
10 float sum B;
11 double panjang A;
12
13 cout << "Program menghitung panjang vektor A di ruang Rˆ2" ...
<< endl;
14 for (k=0; k<2; k++)
15 {16 cout << "A[" << k+1 << "] = "; cin >> A[k];
17 }18
19 sum B=0;
20 for (k=0; k<2; k++)
21 {22 B[k]=A[k]*A[k];
23 sum B=sum B+B[k];
Pemprograman Komputer II 18 Nanda Arista Rizki, M.Si.
24 }25
26 panjang A = sqrt(sum B);
27 cout << "Maka |A | = " << panjang A;
28 }
1.8 Fungsi
Pemanggilan kembali suatu instruksi dapat memanfaatkan suatu fungsi. Semua
variabel dan parameter dalam suatu fungsi bersifat lokal. Berikut adalah contoh
penggunaan fungsi:
Latihan 21:
1 #include <iostream>
2 using namespace std;
3
4 int fungsikuadrat(int a1, int a2, int a3, int a4);
5
6 int main(){7 int a;
8 int b;
9 int c;
10 int x;
11
12 cout << "Program membuat fungsi kuadrat" << endl;
13 cout << "a = "; cin >> a;
14 cout << "b = "; cin >> b;
15 cout << "c = "; cin >> c;
16 cout << "f(x) = " << a << "xˆ2+" << b << "x+" << c << endl;
17 cout << "masukkan nilai x : "; cin >> x;
18 cout << "f(" << x << ")= " << fungsikuadrat(a,b,c,x);
19 }20
21 int fungsikuadrat(int a1, int a2, int a3, int a4){22 return a1*a4*a4+a2*a4+a3;
23 }
Pemprograman Komputer II 19 Nanda Arista Rizki, M.Si.
Posisi suatu fungsi dapat diletakkan berada sebelum main().
Latihan 22:
1 #include <iostream>
2 using namespace std;
3
4 int bintang()
5 {6 char a='*';
7 cout << a;
8 }9
10 int main()
11 {12 int n;
13 int i;
14 int j;
15
16 cout << "n = "; cin >> n;
17 for (i=1; i≤n; i++)
18 {19 for (j=1; j≤i; j++)
20 {21 bintang();
22 }23 cout << endl;
24 }25 }
Fungsi rekursif adalah fungsi yang memanggil diri sendiri secara berulang-
ulang. Fungsi faktorial dan Fibonacci adalah contoh fungsi rekursif.
Latihan 23:
1 #include <iostream>
2 using namespace std;
3
4 int faktorial(int x);
Pemprograman Komputer II 20 Nanda Arista Rizki, M.Si.
5
6 int main()
7 {8 int n;
9
10 cout << "Program membuat fungsi faktorial" << endl;
11 cout << "n = "; cin >> n;
12 cout << n <<"! = " << faktorial(n);
13 }14
15 int faktorial(int x)
16 {17 if (x<0)
18 cout << "Masukkan bilangan positif!";
19 else if(x==0)
20 return 1;
21 else
22 return x*faktorial(x−1);23 }
Latihan 24:
1 #include <iostream>
2 using namespace std;
3
4 int fibo(int x)
5 {6 if (x==0)
7 return 0;
8 else if (x==1)
9 return 1;
10 else
11 return fibo(x−1)+fibo(x−2);12 }13
14 int main()
15 {16 int n;
17
18 cout << "Program membuat fungsi Fibonacci" << endl;
19 cout << "n = "; cin >> n;
Pemprograman Komputer II 21 Nanda Arista Rizki, M.Si.
20 cout << "Bilangan Fibonacci ke " << n << " adalah " << fibo(n);
21 }
1.9 Membuat Header File
Penggunaan suatu fungsi sangat berguna ketika ingin menduplikasi perintah yang
sama dalam suatu program. Namun dengan semakin banyaknya fungsi yang dibuat,
justru akan membuat program menjadi tidak efisien dan kesalahan dalam penulisan
sintaks menjadi sulit untuk dideteksi. Hal ini dapat diselesaikan dengan memisahnya
pada file lain yang disebut header file.
Header file adalah file utama yang digunakan untuk melengkapi sebuah pro-
gram dalam bahasa pemprograman C++. Header file ini berfungsi sebagai penghu-
bung antara program utama dengan perintah-perintah tertentu yang terdapat dalam
file tersebut. Beberapa contoh header file yang biasa digunakan dalam program-
program bahasa C++ yaitu conio.h , math.h , stdio.h , dan lain sebagainya. Da-
lam hal ini, walaupun header file hanya ditulis sekali, namun dapat dimasukkan
dalam banyak file yang diperlukan. Secara umum, header ada tiga yaitu header
yang memuat fungsi-fungsi, header yang hanya mendefinisi deklarasi-deklarasi, dan
header yang menggunakan keduanya.
Berikut ini adalah cara membuat file header yang memuat fungsi-fungsi. Ketik
sintak-sintak berikut ini, lalu save sebagai kalkul.h .
1 #ifndef KALKUL H
2 #define KALKUL H
3
4 double bagi(double a, double b)
5 {6 return a/b;
7 }8
9 int kali(int a, int b)
10 {11 return a*b;
12 }
Pemprograman Komputer II 22 Nanda Arista Rizki, M.Si.
13
14 int tambah(int a, int b)
15 {16 return a+b;
17 }18
19 int kurang(int a, int b)
20 {21 return a−b;22 }23
24 #endif
Jika ingin memastikan bahwa header file yang dipakai tidak terulang berkali-kali,
maka gunakan #ifndef yang berarti ”if not define” dan diikuti oleh nama header -
nya. Hal ini berguna ketika ingin memerika apakah ada header file dengan nama
yang sama yang telah didefinisikan sebelumnya. Kemudian buatlah program untuk
memanggil file header seperti berikut:
Latihan 25:
1 #include <iostream>
2 #include "kalkul.h"
3 using namespace std;
4
5 int main() {6 int x;
7 int y;
8
9 cout << "x = "; cin >> x;
10 cout << "y = "; cin >> y;
11
12 cout << "x+y=" << tambah(x,y) << endl;
13 cout << "x−y=" << kurang(x,y) << endl;
14 cout << "x*y=" << kali(x,y) << endl;
15 cout << "x/y=" << bagi(x,y) << endl;
16 return 0;
17 }
Pemprograman Komputer II 23 Nanda Arista Rizki, M.Si.
Jenis header selanjutnya adalah header yang mendefinisi deklarasi-deklarasi.
Simpan file berikut dengan nama kalkul1.h .
1 #include <iostream>
2 #define tambah +
3 #define kurang −4 #define kali *
5 #define bagi /
6 #define modulo %
7 #define PI 3.14
8 #define setengah 0.5
9 using namespace std;
Selanjutnya panggil header kalkul1.h dengan program berikut:
Latihan 26:
1 // Program menghitung keliling dan luas setengah lingkaran
2 #include "kalkul1.h"
3
4 int main()
5 {6 float r;
7 float K;
8 float L;
9
10 cout << "r = "; cin >> r;
11 K=2 kali PI kali r;
12 L=PI kali r kali r;
13 cout << "Keliling = " << K << endl;
14 cout << "Luas setengah lingkaran = " << setengah kali L << endl;
15 }
Pemprograman Komputer II 24 Nanda Arista Rizki, M.Si.
BAB 2
Aplikasi Matematik
2.1 Bilangan Biner
Sistem bilangan biner adalah sebuah sistem penulisan angka dengan menggunakan
dua simbol yaitu 0 dan 1. Misalnya penulisan 3, 21 dan 31 dalam sistem bilangan
biner masing-masing adalah 11, 10101, dan 11111. Nilai maksimal untuk bilangan
biner n angka adalah 2n−1. Sehingga pada sistem bilangan biner dengan 16 angka,
nilai maksimal yang dapat dikonversi adalah 65535. Berikut adalah latihan untuk
mengubah suatu bilangan bulat ke bilangan biner.
Latihan 27:
1 #include <iostream>
2 using namespace std;
3
4 void ke biner(unsigned short bil){5 for (int i = 15; i ≥ 0; i−−)6 if (bil & (1 << i))
7 cout << "1";
8 else
9 cout << "0";
10 }11
12 int main()
25
13 {14 unsigned short nilai;
15 cout << "Masukan nilai antara 0 sampai 65535 : ";
16 cin >> nilai;
17 cout << "Bilangan biner dari " << nilai <<" adalah ";
18 ke biner(nilai);
19 cout << endl;
20 return 0;
21 }
Tipe data unsigned short adalah tipe short dengan nilai nonnegatif.
2.2 Faktor Persekutuan Terbesar (FPB)
Misalkan a, b ∈ Z. Ingin dicari nilai FPB dari a dan b. Hal pertama yang harus
diperhatikan bahwa jika a = b = 0, maka nilai FPB(0, 0) tidak terdefinisi. Sehingga
harus ada peringatan error jika nilai yang dimasukkan keduanya adalah nol. Untuk
mengantisipasi beberapa hal tersebut, maka sintak awal pada file fpb.h adalah
sebagai berikut:
1 #ifndef FPB H
2 #define FPB H
3
4 /*
5 Menghitung fpb dari dua bilangan bulat
6 a = bilangan pertama
7 b = bilangan kedua
8 return = fpb dari a dan b
9 */
10
11 long fpb(long a, long b) {12 // Jika a dan b adalah nol tampilkan peringatan error dan return 0
13 if ( (a==0) && (b==0) ) {14 cerr << "PERINGATAN: kedua bilangan tidak boleh NOL."
15 << endl;
16 return 0;
17 }18
Pemprograman Komputer II 26 Nanda Arista Rizki, M.Si.
19 #endif
Perintah cerr dan cout menyampaikan kalimat pada layar. Perbedaannya adalah
cout biasa digunakan untuk output standar, sedangkan cerr untuk pesan-pesan
error. Selanjutnya berlaku
FPB(a, b) = FPB(−a, b) = FPB(a,−b) = FPB(−a,−b).
Sehingga sintak file fpb.h perlu ditambah beberapa baris berikut
1 // Memastikan bahwa masing−masing a dan b adalah nonnegatif.
2 if (a<0) {3 a = −a;4 }5 if (b<0) {6 b = −b;7 }
Misalnya b = 0, maka FPB(a, 0) = |a| untuk a 6= 0. Selanjutnya variabel t meng-
ecek semua kemungkinan dari 1 sampai a. Jika a mod t = 0 dan b mod t = 0 maka
FPB(a, b) = t. Sehingga file fpb.h perlu diperbaharui dengan sintaks berikut:
1 // Jika a=0 maka fpb=b
2 if (a==0) {3 return b;
4 }5
6 // Jika tidak, akan dicek semua kemungkinan dari 1 sampai a
7 long hasil;
8
9 for (long t=1; t≤a; t++) {10 if ( (a%t==0) && (b%t==0) ) {11 hasil = t;
12 }13 }14
15 return hasil;
16 }
Pemprograman Komputer II 27 Nanda Arista Rizki, M.Si.
Untuk menguji prosedur FPB, ketik latihan berikut.
Latihan 28:
1 #include "fpb.h"
2 #include <iostream>
3 using namespace std;
4
5 // Program untuk menguji prosedur fpb.
6 int main() {7 long a,b;
8
9 cout << "Masukkan bilangan pertama −−> ";
10 cin >> a;
11 cout << "Masukkan bilangan kedua −−> ";
12 cin >> b;
13
14 cout << "FPB dari " << a << " dan " << b << " adalah "
15 << fpb(a,b) << endl;
16 return 0;
17 }
2.3 Mencari FPB Menggunakan Metode Euclid
Seandainya ingin dicari nilai FPB dari bilangan yang sangat besar. Maka tidak
cukup besar untuk sebuah variabel bertipe long, namun dengan metode ’coba-
coba’ akan menghasilkan banyak sekali iterasi. Selanjutnya diperkenalkanlah metode
Euclid.
Preposisi: Misalkan a dan b adalah dua bilangan bulat positif dan misalkan
c = a mod b. Maka FPB(a, b) = FPB(b, c).
Bukti:
Misalkan a dan b adalah dua bilangan bulat positif dan c = a mod b. Artinya
a = qb + c dengan q, c ∈ Z dan 0 ≤ c < b. Perhatikan bahwa jika q adalah faktor
persekutuan dari a dan b, maka q juga faktor c karena c = a− qb. Sebaliknya jika q
adalah faktor persekutuan dari b dan c, maka q juga faktor dari a karena a = qb+ c.
Pemprograman Komputer II 28 Nanda Arista Rizki, M.Si.
Sehingga FPB(a, b) = FPB(b, c).
Sebagai contoh misalkan ingin dicari nilai FPB(80, 25). Berdasarkan prepo-
sisi, maka FPB(80, 25) = FPB(25, 5) karena 80 mod 25 = 5. Selanjutnya un-
tuk menemukan nilai FPB(25, 5), lakukan lagi preposisi. Sehingga FPB(25, 5) =
FPB(5, 0) karena 25 mod 5 = 0. Sampai pada langkah ini, preposisi sudah tidak
dapat lagi dilakukan karena 0 bukan bilangan positif. Sehingga diperoleh
FPB(80, 25) = FPB(25, 5) = FPB(5, 0) = 5.
Berikut adalah sintak lain untuk file fpb.h.
Latihan 29:
1 #ifndef FPB H
2 #define FPB H
3 #include <iostream>
4 using namespace std;
5
6 long fpb(long a, long b) {7 // Memastikan bahwa masing−masing a dan b adalah nonnegatif.
8 if (a<0) a = −a;9 if (b<0) b = −b;
10
11 // Jika a dan b adalah nol tampilkan peringatan error dan return 0
12 if ( (a==0) && (b==0) ) {13 cerr << "WARNING: kedua bilangan tidak boleh NOL."
14 << endl;
15 return 0;
16 }17
18 if (b==0) return a; // Jika b=0, maka FPB=a
19 if (a==0) return b; // Jika a=0, maka FPB=b
20
21 long c = a%b;
22 return fpb(b,c);
23 }24
25 #endif
Pemprograman Komputer II 29 Nanda Arista Rizki, M.Si.
2.4 Faktor Bilangan Prima
Sebagai contoh faktor bilangan prima dari 60 yaitu 2, 3, dan 5 karena 60 = 22 · 3 · 5.
Dalam membuat program untuk membuat hasil faktor bilangan prima, memanfa-
atkan variabel array. Simpan sintak berikut sebagai faktor.h
1 //faktor.h
2 #ifndef FAKTOR H
3 #define FAKTOR H
4
5 long faktor(long n, long* daftar) {6 // tanda (*) mengindikasikan bahwa variabel daftar adalah array.
7
8 if (n==0) return −1;9 if (n<0) n = −n;
10 if (n==1) return 0;
11
12 // untuk n>1
13 int indeks = 0;
14 int d = 2; // pembagi bilangan
15
16 while (n>1) {17 while (n%d == 0) {18 daftar[indeks] = d;
19 ++indeks;
20 n /= d;
21 }22 ++d;
23 }24
25 return indeks;
26 }27
28 #endif
Latihan 30:
1 #include "faktor.h"
2 #include <iostream>
Pemprograman Komputer II 30 Nanda Arista Rizki, M.Si.
3 using namespace std;
4
5 //Program untuk mengetes prosedur faktor bilangan prima.
6
7 int main() {8 long daftar[100];
9
10 for (long n=1; n≤100; n++) {11 int nfaktor = faktor(n,daftar);
12 cout << n << "\t";13
14 for (int k=0; k<nfaktor; k++) cout << daftar[k] << " ";
15 cout << endl;
16 }17 }
2.5 Bilangan Acak
Cara sederhana dalam membangkitkan bilangan acak adalah menggunakan Linear
Congruential Generator (LCG). Prosedur LCG menghasilkan barisan x0, x1, x2, . . .
yang dihitung dengan rumus
xn+1 = (axn + b) mod c,
dimana a, b, c adalah bilangan-bilangan positif yang telah ditentukan. Nilai awal x0
dinamakan seed. Nilai-nilai yang dihasilkan LCG adalah {0, 1, . . . , c − 1}. Berikut
adalah contoh program menggunakan LCG dengan seed x0 = 0, a = 17, b = 3, dan
c = 64.
Latihan 31:
1 #include <iostream>
2 using namespace std;
3
4 int acak(){5 static int state = 0;
Pemprograman Komputer II 31 Nanda Arista Rizki, M.Si.
6 const long a = 17;
7 const long b = 3;
8 const long c = 64;
9
10 state = (a*state+b) % c;
11 return state;
12 }13
14 int main() {15 cout << "Membangkitkan Bilangan−Bilangan Acak" << endl;
16 cout << "Nilai−nilai modulo 2: ";
17 for (int k=0; k<20; k++) {18 cout << acak()%2 << " ";
19 }20 cout << endl;
21
22 cout << "Nilai−nilai modulo 4: ";
23 for (int k=0; k<20; k++) {24 cout << acak()%4 << " ";
25 }26 cout << endl;
27
28 return 0;
29 }
Alternatif lain untuk membuat bilangan-bilangan acak modulo 2 adalah mengganti
fungsi main() menjadi
1 int main() {2 cout << "Nilai−nilai modulo 2: ";
3 for (int k=0; k<20; k++) {4 double x = acak() / 64.;
5 cout << int(2*x) << " ";
6 }7 cout << endl;
8 return 0;
9 }
Cara lain untuk menghasilkan bilangan acak adalah dengan menggunakan per-
intah rand() yang termuat dalam library cstdlib. Perintah rand() menghasilkan
Pemprograman Komputer II 32 Nanda Arista Rizki, M.Si.
nilai dari 0 sampai RAND MAX .
Latihan 32:
1 #include <iostream>
2 #include <cstdlib>
3 using namespace std;
4
5 int main(){6 int i;
7 for (i=1;i≤10;i++)
8 cout << rand() << endl;
9 }
Berikut adalah contoh header untuk membangkitkan bilangan acak uniform.
1 // uniform.h
2 #ifndef UNIFORM H
3 #define UNIFORM H
4
5 #include <cstdlib>
6 #include <ctime>
7 #include <cmath>
8 using namespace std;
9
10 // Menghasilkan bilangan acak [0,1]
11 double unif() {12 return rand() / double(RAND MAX);
13 }14
15 // Menghasilkan bilangan acak [a,b]
16 double unif(double a, double b) {17 return (b−a)*unif() + a;
18 }19
20 // Menghasilkan bilangan acak integer {1,2,...,n}.21 long unif(long a) {22 if (a < 0) a = −a;23 if (a==0) return 0;
Pemprograman Komputer II 33 Nanda Arista Rizki, M.Si.
24 return long(unif()*a) + 1;
25 }26
27 // Mengembalikan pembangkit bilangan acak berdasarkan sistem
28 void seed() {29 srand(time(0));
30 }31
32 #endif
Selanjutnya adalah membuat suatu program untuk menguji header yang telah di-
buat.
Latihan 33:
1 #include <iostream>
2 #include "uniform.h"
3 using namespace std;
4
5 int main(){6 int i;
7 cout << "Contoh fungsi unif()" << endl;
8 for (i=1;i≤5;i++)
9 cout << unif() << endl;
10 cout << endl;
11
12 cout << "Contoh fungsi unif(1,3)" << endl;
13 for (i=1;i≤5;i++)
14 cout << unif(1,3) << endl;
15 cout << endl;
16
17 cout << "Contoh fungsi unif(8)" << endl;
18 for (i=1;i≤5;i++)
19 cout << unif(8) << endl;
20 }
Berikut adalah program yang menampilkan nilai peluang (empirik) dari dua bila-
ngan acak relatif prima.
Latihan 34:
Pemprograman Komputer II 34 Nanda Arista Rizki, M.Si.
1 #include "uniform.h"
2 #include "fpb1.h"
3 #include <iostream>
4 using namespace std;
5
6 /* Membangkitkan bangaknya pasangan nilai (a dan b) dari himpunan
7 {1,2,...,n} dan menampilkan peluang kedua bilangan tersebut relatif
8 prima.
9 */
10
11 int main() {12 long n;
13 long replika; // Banyaknya percobaan
14 long a,b; // Nilai−nilai yang dipilih dari {1,2,...,n}15 long jumlah; // Banyaknya pasangan yang relatif prima
16
17 jumlah = 0;
18
19 cout << "Masukkan nilai n −−> ";
20 cin >> n;
21
22 cout << "Masukkan banyakya pasangan sampel −−> ";
23 cin >> replika;
24
25 for (long k=1; k≤replika; k++) {26 a = unif(n);
27 b = unif(n);
28 if (fpb(a,b) == 1) ++jumlah;
29 }30
31 cout << jumlah / (double(replika));
32
33 return 0;
34 }
Pemprograman Komputer II 35 Nanda Arista Rizki, M.Si.
2.6 Distribusi Normal
Misalkan X adalah peubah acak berdistribusi Normal dengan parameter µ = 0 dan
σ = 1. Maka fungsi kepadatan peluang untuk X adalah sebagai berikut:
f(x) =1√2π
exp(−x2/2
).
Salah satu metode untuk memperoleh bilangan acak berdistribusi Normal adalah
metode Box-Muller. Didefinisikan
r = x2 + y2, µ =
√−2 log r
r, Z1 = µx, dan Z2 = µy.
Maka Z1 dan Z2 saling bebas dengan masing-masing berdistribusi N(0, 1). Berikut
adalah program membangkitkan bilangan acak berdistribusi Normal dengan metode
Box-Muller.
Latihan 35:
1 #include <iostream>
2 #include <cmath>
3 #include "uniform.h"
4 using namespace std;
5
6 double randn() {7 double x,y,r;
8 do {9 x = unif(−1.,1.);
10 y = unif(−1.,1.);11 r = x*x + y*y;
12 } while (r ≥ 1.);
13 double mu = sqrt(−2.0 * log(r) / r);
14 return mu*x;
15 }16
17 int main(){18 int i;
19 int n;
20
Pemprograman Komputer II 36 Nanda Arista Rizki, M.Si.
21 cout << "Masukkan banyaknya bilangan acak −−> "; cin >> n;
22 for (i=1;i≤n;i++)
23 cout << randn() <<endl;
24 }
2.7 Membangkitkan Peubah Acak
Salah satu cara untuk membangkitkan suatu data yang mengikuti distribusi ter-
tentu antara lain adalah dengan menggunakan metode transformasi invers (inverse
transform method). Metode ini memanfaatkan fungsi distribusi dari peubah acak
yang diinginkan.
Misalkan F adalah fungsi distribusi dari distribusi tertentu. Maka invers dari
F didefinisikan sebagai berikut:
F−1(u) = inf{x ∈ R|F (x) ≥ u} ∀u ∈ (0, 1).
Gambar 2.1: Ilustrasi invers fungsi distribusi
Adapun algoritma metode transformasi invers adalah sebagai berikut:
1. Pilih distribusi yang diinginkan dan tentukan fungsi distribusinya.
Pemprograman Komputer II 37 Nanda Arista Rizki, M.Si.
2. Bangkitkan data u yang berdistribusi uniform [0, 1].
3. Masukkan hasil bangkitan dari langkah ke (2) ke invers fungsi distribusi.
Misalkan X adalah peubah acak dengan fungsi kepadatan peluang sebagai
berikut:
f(x) =
{225x; untuk 0 < x < 5
0; untuk x lainnya.(2.1)
Maka
F (x) =x2
25untuk 0 < x < 5.
Selanjutnya hitung fungsi invers dari F , yaitu
F−1(u) = 5√u.
Adapun sintak untuk membangkitkan peubah acak dengan fungsi kepadatan pelu-
ang pada persamaan (2.1) adalah sebagai berikut:
Latihan 36:
1 #include <iostream>
2 #include "uniform.h"
3 #include <cmath>
4 using namespace std;
5
6 int main()
7 {8 float u;
9 int i;
10 int n;
11 double x;
12
13 cout << "Membangkitkan data dengan fungsi kepadatan ...
peluang:" << endl;
14 cout << "f(x)=2x/25; untuk 0<x<5" << endl;
15 cout << "f(x)=0; untuk x lainnya" << endl;
Pemprograman Komputer II 38 Nanda Arista Rizki, M.Si.
16 cout << endl;
17 cout << "Masukkan ukuran data : "; cin >> n;
18 cout << "=============" << endl;
19 cout << "i u i x i" << endl;
20 cout << "−−−−−−−−−−−−−" << endl;
21 for (i=1;i≤n;i++)
22 {23 u=unif();
24 x=5*sqrt(u);
25 cout << i << " " << floor(u*1000)/1000 << " " << ...
floor(x*1000)/1000 << endl;
26 }27 cout << "=============" << endl;
28 }
Sehingga hasil simulasinya dapat dilihat pada Tabel (2.1).
Tabel 2.1: Simulasi Membangkitkan Peubah Acak
i ui xi1 0,167 2,0432 0,462 3,3983 0,501 3,5394 0,814 4,5115 0,683 4,1326 0,101 1,5897 0,613 3,9158 0,507 3,560
Berikut adalah beberapa distribusi yang dapat dijadikan latihan untuk membang-
kitkannya.
Tabel 2.2: Beberapa Distribusi Kontinu
No. Distribusi Domain f F1 Uniform(α, β) x ∈ [α, β] 1
b−ax−ab−a
2 Beta (α,1) α > 0, x ∈ [0, 1] αxα−1 · · ·3 Beta (1,β) β > 0, x ∈ [0, 1] β(1− x)β−1 · · ·4 Eksponensial(λ) λ > 0, x ≥ 0 λe−λx · · ·
5 Pareto(α, β) x ≥ β > 0, α > 0αβα
xα+1· · ·
Pemprograman Komputer II 39 Nanda Arista Rizki, M.Si.
Misalkan ingin membangkitkan data yang berdistribusi Beta (1,8), yaitu X.
fungsi kepadatan peluang untuk X adalah f(x) = 8(1 − x)7, sehingga diperoleh
F−1(u) = 1− (1− u)1/8. Selanjutnya bangkitkan data U ∼ U(0, 1). Lebih jelasnya
ikuti latihan berikut.
Latihan 37:
1 #include <iostream>
2 #include "uniform.h"
3 #include <cmath>
4 using namespace std;
5
6 int main()
7 {8 float u;
9 int i;
10 int n;
11 double x;
12
13 cout << "Membangkitkan data berdistribusi Beta (1,8)" << endl;
14 cout << "Masukkan ukuran data : "; cin >> n;
15 cout << "=============" << endl;
16 cout << "i u i x i" << endl;
17 cout << "−−−−−−−−−−−−−" << endl;
18 for (i=1;i≤n;i++)
19 {20 u=unif();
21 x=1−pow(1−u,0.125);22 cout << i << " " << floor(u*1000)/1000 << " " << ...
floor(x*1000)/1000 << endl;
23 }24 cout << "=============" << endl;
25 }
Pemprograman Komputer II 40 Nanda Arista Rizki, M.Si.
Daftar Pustaka
[1] Eubank, R.L., dan Kupresanin, A. (2011). Statistical Computing in C++ and
R. CRC Press.
[2] Scheinerman, E. (2006). C++ for Mathematicians: An Introduction for Stu-
dents and Professionals. Chapman & Hall/CRC.
[3] Voss, J. (2013). An Introduction to Statistical Computing: A Simulation-based
Approach. John Wiley & Sons: London.
41