Ditujukan untuk memenuhi salah satu syarat kelulusan Mata Kuliah Pemrograman
Berorientasi Objek
ii
DAFTAR ISI
iii
iv
BAB I
PENDAHULUAN
1
2) Bagaimana cara menciptakan sebuah aplikasi mempermudah pencarian
pengelolaan data statistika ?
2
BAB II
TEORI DASAR
b. Encapsulation
Istilah enkapsulasi sebenarnya adalah kombinasi data dan
fungsionalitas dalam sebuah unit tunggal sebagai bentuk untuk
menyembunyikan detail informasi. Proses enkapsulasi memudahkan kita untuk
menggunakan sebuah objek dari suatu kelas karena kita tidak perlu mengetahui
segala hal secara rinci.
c. Inheritance
Penurunan sifat ini bisa dilakukan secara bertingkattingkat, sehingga
semakin ke bawah kelas tersebut menjadi semakin spesifik.
d. Polymorphism
Polimorfisme merupakan kemampuan objekobjek yang berbeda kelas
namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu
pesan yang sama.
3
BAB 3
PERANCANGAN
Mulai
Input Menu
Menu == 1 Menu == 2
Menu
Input
Data Mode == ‘e’
Konfirmasi != ‘y’
Data Processing
0 ≤ Mode ≤ 4 5 ≤ Mode ≤ 9
Central Variation
Tendency
Input Output
Konfirmasi Data
Selesai
4
3.2 Deskripsi Rancangan
Saat program mulai user akan disajikan menu pilihan yang terdiri dari
pemasukan data dan pengeluaran data, user menginputkan berdasarkan kode
menu antara satu dan dua dimana satu adalah kode dari input data dan untuk
kode dua untuk keluar. Saat user menginput kode satu maka akan muncul output
“masukan jumlah data”. Setelah itu, user menginputkan data-data yang ingin
diolah. Setelah user menginputkan semua data yang ada maka akan muncul
tampilan mode dimana terdapat sepuluh mode statistika antara (0~9) yakni
mean, median, modus, midringe, midhinge, range, IQR, variance, simpangan
baku, dan CV. Disamping itu, user juga dapat keluar ataupun mengganti data
dengan memasukkan kode “q” untuk keluar dan “e”untuk ganti data. Setelah
user memilih kode yang diinginkan maka akan muncul output nilai hasil proses
perhitungan algoritma yang ada dan disamping itu akan muncul output “apakah
anda ingin mengubah mode (y/t) ?” ketika user memilih “y” maka akan masuk
kedalam mode kembali tetapi bila user memilih “t” maka user akan kembali ke
menu utama.
Central_Tendency CT;
Variation V;
int x = 0;
void exit(char jawab_2) {
exit_switch:
5
cout << "Apak anda ingin Merubah Mode (y/t) :"; cin >> jawab_2;
if (jawab_2 == 'y') {
x = 2;
}
else if (jawab_2 == 't') {
x = 1;
}
else goto exit_switch;
void Menu(int n) {
char jawab_1;
char jawab_2;
int index;
double nilai;
Menu:
system("cls");
cout << "Masukan kode Mode yang ingin dipilih :" << endl;
cout << "(0).Mean\n(1).Median\n(2).Modus\n(3).Midrange\n(4).MidHinge\n";
cout << "(5).Range\n(6).IQR\n(7).Variance\n(8).Simpangan Baku\n";
cout << "(9).CV\n(q).Keluar\n(e).Ganti Data" << endl;
cout << "Masukan pilihan :"; cin >> jawab_1;
int extra = 0;
2
switch (jawab_1) {
case '0': cout << "Nilai Mean : " << CT.Mean(n) << endl;
cout << "Apakah anda ingin Merubah Mode (y/t) : "; cin >> jawab_2;
if ((jawab_2 == 'y')||(jawab_2 == 'Y')) {
goto Menu;
break;
}
else if ((jawab_2 == 't') || (jawab_2 == 'T')) {
x = 1; break;
}
else cout << "Maaf Inputan anda salah !" << endl; exit(jawab_2); break;
case '1': cout << "Nilai Median : " << CT.Median(n) << endl;
cout << "Apakah anda ingin Merubah Mode (y/t) : "; cin >> jawab_2;
if ((jawab_2 == 'y') || (jawab_2 == 'Y')) {
goto Menu;
break;
}
else if ((jawab_2 == 't') || (jawab_2 == 'T')) {
x = 1; break;
}
else cout << "Maaf Inputan anda salah !" << endl; exit(jawab_2); break;
3
BAB IV
PENGUJIAN
4
5
4.2 Pengujian Alpha
6
B. Penginputan Program Kalkulator Statistika
N Jum Data Masukan Pengamatan Kesi
o lah mpul
Dat an
a
Ma
suk
an
1 5 4,5,6,8,3 3,4,5,6,8 Diter
ima
2 7 0.02,1.23,4,70,3.2,50, 0.02,1.23,3.2,4,20,50, Diter
20 70 ima
3 5 1,5,2,4,2 1,2,2,4,5 Diter
ima
4 12 121,332,111,332,43,1 10,43,111,111,121,12 Diter
11,121,332,10,121,22 1,121,223,332,332,33 ima
3,332 2,332
7
D.Menu Mode Program Bagian Fungsi Variation
8
BAB V
KESIMPULAN
5.1 Kesimpulan
Aplikasi kalkulator statistika berbasi PBO ini dapat berjalan dengan
baik. Tetapi pada aplikasi ini masih mempunyai kelemahan yaitu tidak dapat
menampilkan grafik karena masih berbasis konsole. Sehingga untuk
mencari data pencilan masih belum dapat dilakukan karena membutuhkan
visualisasi gambar diagram. Selain itu program juga tidak dapat menambah
jumlah data yang telah dimasukkan dan hanya dapat mengganti data yang
ada. Dan data maksimal yang dapat ditampung hanya sampai 100 data.
5.3 Saran
Dapat menambah data baru setelah pemasukan data.
9
DAFTAR PUSTAKA
10
LAMPIRAN
goto Menu; }
if ((jawab_2 == }
'y') || (jawab_2 == 'Y')) { else cout <<
goto Menu; "Maaf Inputan anda salah !" <<
endl; exit(jawab_2); break;
break;
}
case '7': cout << "Nilai Variance : "
else if ((jawab_2 == 't') || << V.Variance(n) << endl;
(jawab_2 == 'T')) {
cout << "Apakah anda
x = 1; break; ingin Merubah Mode (y/t) : "; cin
>> jawab_2;
}
if ((jawab_2 ==
else cout << "Maaf 'y') || (jawab_2 == 'Y')) {
Inputan anda salah !" << endl;
exit(jawab_2); break; goto Menu;
break;
case '6': extra = 1; }
cout << "Nilai IQR else if ((jawab_2 == 't') ||
(InterQuartil Range) : " << (jawab_2 == 'T')) {
V.Midhinge(n, extra) << endl;
x = 1; break;
cout << "Apakah
anda ingin Merubah Mode (y/t) : "; }
cin >> jawab_2; else cout << "Maaf
if ((jawab_2 == Inputan anda salah !" << endl;
'y') || (jawab_2 == 'Y')) { exit(jawab_2); break;
2
}
case '8': cout << "Nilai Simpangan else if ((jawab_2
Baku : " << V.Simpangan_Baku(n) == 't') || (jawab_2 == 'T')) {
<< endl;
x = 1;
cout << "Apakah anda break;
ingin Merubah Mode (y/t) : "; cin
>> jawab_2; }
3
break; case '1': goto
pemasukan_data; break;
case '2': goto keluar;
} break;
} default: goto back;
break;
int main() }
{
double data[100]; pemasukan_data:
int i = 0, j = 0, n; system("cls");
double Temp = 0; cout << "Masukan jumlah
char pilihan; Data :"; cin >> n;
for (i = 0; i < n; i++) {
4
} goto back;
} }
} if (x == 2) {
Menu(n);
for (i = 0; i < n; i++) { };
CT.SetData(n,
data[i]);
keluar:
V.SetData(n,
data[i]); system("cls");
5
Keterangan: Source code class Central_Tendency.cpp
#include "Central_Tendency.h" Median_hasil =
(data[Temp - 1] + data[Temp]) / 2;
#include <iostream>
}
else {
Median_hasil =
double data[((n + 1) / 2) - 1];
Central_Tendency::Mean(int n) {
}
double Mean_hasil, Temp
= 0; return Median_hasil;
for (i = 0; i < n; i++) { };
Temp = Temp + double
data[i]; Central_Tendency::Midhinge(int n,
int pilihan) {
}
double Temp = 0,
return Mean_hasil = Temp Midhinge, Q1, Q3;
/ n;;
int Q1_x, Q3_x;
};
if (n % 2 == 0) {
double
Central_Tendency::Median(int n) { Q1 = 0.25 *(n +
1);
double Median_hasil;
Q1_x = int(Q1);
int Temp = 0;
Temp =
for (i = 0; i < n; i++) { data[Q1_x - 1] + ((Q1 - Q1_x) *
std::cout << (data[Q1_x] - data[Q1_x - 1]));
data[i] << " "; Q1 = Temp;
}
if (n % 2 == 0) { Q3 = 0.75 * (n +
Temp = (n + 1) / 1);
2; Q3_x = int(Q3);
2
Temp = return Midrange_hasil =
data[Q3_x - 1] + ((Q3 - Q3_x) * (data[0] + data[n - 1]) / 2;
(data[Q3_x] - data[Q3_x - 1]));
};
Q3 = Temp;
void Central_Tendency::Modus(int
} n) {
else { double Temp = 0;
Q1 = 0.25 *(n + int jum = 1,k = 0;
1);
double modus[100];
Q1 =
data[int(Q1) - 1]; double MODUS[100];
for (i = 0; i < n - 1; i++) {
Q3 = if
data[int(Q3) - 1]; (data[j] > data[j + 1]) {
}
Temp = data[j];
Temp = Q1 + Q3;
Midhinge = 0.5*Temp; data[j] = data[j + 1];
if (pilihan == 1) {
data[j + 1] = Temp;
Midhinge = Q3 -
Q1; }
} }
}
return Midhinge; for (i = 0; i < n; i++) {
}; if (data[i] ==
data[i + 1]) {
double
Central_Tendency::Midrange(int jum =
n) { jum + 1;
double Midrange_hasil; }
2
else { }
modus[k] = jum;
for (i = 0; i < k; i++) {
if }
(modus[j] < modus[j + 1]) {
if (modus[0] ==
Temp = modus[j]; modus[1]) {
if (modus[1] !=
modus[j] = modus[j + 1]; modus[2]) {
4
double Temp = 0, }
Midhinge;
Temp = Q1 + Q3;
double Q1, Q3;
Midhinge = 0.5*Temp;
int Q1_x, Q3_x;
if (pilihan == 1) {
if (n % 2 == 0) {
Midhinge = Q3 -
Q1 = 0.25 *(n + Q1;
1);
}
Q1_x = int(Q1);
Temp =
data[Q1_x - 1] + ((Q1 - Q1_x) * return Midhinge;
(data[Q1_x] - data[Q1_x - 1])); };
Q1 = Temp; double Variation::Variance(int n) {
double Temp1 = 0;
Q3 = 0.75 * (n + double Temp2 = 0;
1);
double hasil_var;
Q3_x = int(Q3);
for (i = 0; i < n; i++) {
Temp =
data[Q3_x - 1] + ((Q3 - Q3_x) * Temp1 = data[i]
(data[Q3_x] - data[Q3_x - 1])); * data[i];
Q3 = Temp; Temp2 = Temp2
+ Temp1;
}
}
else {
Temp1 = 0;
Q1 = 0.25 *(n +
1); for (i = 0; i < n; i++) {
Q1 = Temp1 = Temp1
data[int(Q1) - 1]; + data[i];
Q3 = 0.75 * (n + }
1);
Temp1 = Temp1 *
Q3 = Temp1;
data[int(Q3) - 1];
2
hasil_var = ((n*Temp2) - for (i = 0; i < n; i++) {
Temp1) / (n*(n - 1));
Temp1 = Temp1
return hasil_var; + data[i];
}; }
double Temp1 = Temp1 *
Variation::Simpangan_Baku(int n) Temp1;
{
hasil_var = ((n*Temp2) -
double Temp1 = 0; Temp1) / (n*(n - 1));
double Temp2 = 0; return sqrt(hasil_var);
double hasil_var; };
for (i = 0; i < n; i++) { double Variation::CV(int n) {
Temp1 = data[i] double A = Mean(n);
* data[i];
double B =
Temp2 = Temp2 Simpangan_Baku(n);
+ Temp1;
return (B / A * 100);
}
};
Temp1 = 0;