Professional Documents
Culture Documents
FAK./JURUSAN :
N.I.M :
MATA UJIAN : T0474- Bahasa Pemrograman
Berorientasi Obyek
HARI / TANGGAL :
NAMA :
DOSEN : TEAM
KELAS : PAGI
TANDA
WAKTU : 100 MENIT TANGAN :
SIFAT UJIAN : TUTUP / BUKA BUKU *)
KALKULATOR : YA / TIDAK *)
*) Coret yang tidak perlu
Naskah dimasukkan ke dalam buku ujian dan dikumpulkan kembali !!!
Soal-soal Pilihan Ganda (Beri tanda silang ( X ) pada jawaban yang benar pada lembar jawaban:
(Nilai 50%)
1. Apabila program C++ terdiri dari lebih dari satu fungsi (modul), maka pernyataan yang benar di bawah ini adalah :
(A). Fungsi yang pertama kali dijalankan adalah fungsi yang paling bawah dari program C++ tersebut.
(B). Fungsi yang pertama kali dijalankan adalah fungsi main() dari program C++ tersebut.
(C). Fungsi yang pertama kali dijalankan adalah fungsi yang paling atas dari program C++ tersebut.
(D). Semua jawaban di atas benar.
2. Alasan kenapa perlu membuat program berorientasi objek adalah:
(A). Mempercepat proses pembuatan program.
(B). Memudahkan pembuatan program dengan menggunakan program yang telah ada dan mengembangangkannya
(Reusability dan Extensibility).
(C). Memudahkan penulisan dan pemeliharaan program.
(D). Semua jawaban di atas benar.
3. Pernyataan yang benar di bawah ini adalah :
(A). Setiap program C++ terdiri dari satu atau lebih fungsi.
(B). Setiap program C++ hanya terdiri dari satu fungsi saja.
(C). Fungsi yang pertama kali dikerjakan tidak harus fungsi main().
(D). Tidak ada jawaban yang benar.
4. Pernyataan yang benar di bawah ini adalah :
(A). Dalam Built In Data Type ada 5 buah Modifier yaitu : int, float, double, char, void.
(B). Dalam Built In Data Type ada 4 buah Tipe Data Dasar yaitu : unsigned, signed, short, dan long.
(C). Ada 2 jenis tipe data pada C++ yaitu: Built In Data Type dan Abstract data Data Type.
(D). Abstract Data Type merupakan tipe data yang telah disediakan oleh kompiler C/C++.
5. Untuk menampilkan tiga buah data ( misal: int INT1, INT2, INT3; ) ke monitor, digunakan object class iostream dalam
bentuk stream yang benar adalah:
(A). cin >> INT1, INT2, INT3; (B). cout << INT1 << INT2 << INT3;
(C). cin << INT1 << INT2 << INT3; (D). cout >> INT1 >> INT2 >> INT3;
1
6. Untuk membaca tiga buah data ( misal: float FLOAT1, FLOAT2, FLOAT3) dari keyboard, digunakan object class
iostream dalam bentuk stream yang benar adalah:
(A). cin >> FLOAT1 >> FLOAT2 >> FLOAT3; (B). cin << FLOAT1, FLOAT2 , FLOAT3;
(C). cout << FLOAT1 << FLOAT2 << FLOAT3; (D). cout >> FLOAT1 >> FLOAT2 >> FLOAT3;
7. Deklarasi variabel yang benar di bawah ini adalah :
(A). float unsigned long Biaya_Sewa_Rumah 500000; (B). long float Biaya Sewa Rumah=500000;
(C). long float Biaya_Sewa_Rumah=500000; (D). Long Float Biaya-Sewa-Rumah=500000;
Ngga ada yang bener, yang bener, klo maw:
unsigned long int Biaya_Sewa_Rumah = 500000; //mendekati jawaban A
long Biaya_Sewa_Rumah = 500000; //mendekati jawaban B, C, D
float Biaya_Sewa_Rumah = 500000; //mendekati jawaban B, C, D
float long Biaya_Sewa_Rumah = 500000; //mendekati jawaban B, C, D
//catatan, coba deh yang "long float" di Borland C++, pasti ngga bisa, bisanya
//cuman "float long", aneh kan?
10. Bila diketahui tiga buah bilangan : int i = 79, j = 5; dan float k = i / j; maka pernyataan:
cout << “k = “; cout.width(5); cout.precision(2); cout << k << endl; akan manampilkan hasil di bawah ini:
(A). k = 15.8 (B). k = 4.00 (C). k = 15 (D). k = 16
11. Bila diketahui tiga buah bilangan : float i = 79.0; int j = 5; float k = i / j; maka pernyataan:
cout << “k = “; cout.width(5); cout.precision(2); cout << k << endl; akan manampilkan hasil di bawah ini:
(A). k = 15.8 (B). k = 4.00 (C). k = 15.00 (D). k = 16.00
12. Pernyataan yang benar mengenai Akses anggota klass (class) di bawah ini adalah:
(A). Protected adalah bagian class yang hanya dapat diakses oleh anggota dari class itu sendiri.
(B). Public adalah bagian class yang dapat diakses oleh anggota dari class itu sendiri maupun dari luar class.
(C). Private adalah bagian class yang hanya dapat diakses oleh anggota dari class itu sendiri dan anggota class turunannya.
(D). Semua jawaban di atas benar.
13. Untuk mendeklarasikan suatu kumpuln data yang terdiri dari 2 baris dan 3 kolom digunakan pernyataan yang benar di
bawah ini adalah:
(A). int Jumlah[2,3] = { 3, 5, 7, 4, 6, 8 }; (B). int Jumlah[2][3] = 3, 5, 7, 4, 6, 8;
(C). int Jumlah[2][3] = { 3, 5, 7, 4, 6, 8 }; (D). int Jumlah(2,3) = { { 3, 5, 7 }, { 4, 6, 8 } };
Ngga ada yang bener, yang bener, klo maw:
int Jumlah[2][3] = {{3, 5, 7}, {4, 6, 8}}; //mendekati jawaban D
2
15. Penggunaan struktur kondisi seleksi bertingkat: perintah: if , untuk menyatakan pilihan selain dari kondisi yang ada
digunakan :
(A). otherwise (B). else (C). default (D). else if
16. Penggunaan struktur kondisi seleksi: switch – case, untuk menyatakan pilihan selain dari nilai konstanta yang ada
digunakan :
(A). otherwise (B). else (C). default (D). else if
3
(C). class Karyawan { (D). Semua jawaban di atas benar.
private:
char Id_Karyawan[10];
char Nama[30];
float Gaji;
public:
Karyawan() {
strcpy(Id_Karyawan, “ “);
strcpy(Nama, “ “); Gaji = 0; }
Karyawan( char *id, char *nm, float gj)
{ strcpy(Id_Karyawan, id);
strcpy(Nama, nm); Gaji = gj; }
void Tampil() { cout << “Id = “ << “\n”
<< “Id = “ << Id_Karyawan << “\n”
<< “Nama = “ << Nama = “ << “\n”
<< “Gaji = “ << Gaji << endl; }
~Karyawan() {};
};
BTW, pilihan jawaban C itu dah hampir bener, cuman cukup buang/hapus yang aq kase highlight merah ajah.
No A B C D No A B C D
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 20
4
Essay (Nilai 50%):
1. Berikan keterangan (komentar) pada setiap baris pada program di bawah ini (Nilai 20%):
void Masuk ( float Jari2 ); // membuat function prototype untuk method masuk
float Hitung ( float Jari2 ); // membuat function prototype untuk method hitung
void Tampil ( float Luas ); // membuat function prototype untuk method tampil
void main() // merupakan bagian program yg akan dijalankan pada awal eksekusi
{ // …………………………………………………………………………
clrscr(); // membersihkan layar
float Jari_jari, Luas; // mendeklarasikan variabel yg dibuthkan
Masuk ( Jari_jari ); // memanggil fungsi masuk
Luas = Hitung ( Jari_jari ); // menghitung luas dengan memanggil fungsi hitung
Tampil ( Luas ); // memanggil fungsi untuk mencetak hasil (output program)
getch(); // menghentikan layar dengan meminta input sembarang dari pengguna
} // …………………………………………………………………………
void Masuk ( float Jari2 ) // fungsi yg dipake untuk meminta input jari-jari
{ // …………………………………………………………………………
cout << “Masukkan Jari-jari lingkaran=”; // mencetak pertanyaan
cin >> Jari2; // mengambil jari-jari
} // BTW!! Fungsi ini ERROR, harusnya dy passing by reference
// bukannya by value ckckck, jadinya yg bener adalah
// void Masuk ( float &Jari2 ) perhatikan ada tanda ampersand-nya (&)
float Hitung ( float Jari2 ) // fungsi yg dipake untuk hitung luas lingkaran
{ // …………………………………………………………………………
return PHI * Jari2 * Jari2; // langsung menhitung dan mengembalikan nilai yg telah diproses
} // …………………………………………………………………………
5
Dimana program mempunyai tugas memberikan nama awal pada objek-objek tersebut di atas, dan
user bisa memasukkan data pada objek-objek tersebut di atas, serta dapat menampilkan data-
datanya. Jangan lupa ada program utama yang dapat menciptakan 3 buah objek, dan mengakses
fungsi member dari class yang ada.
Jawab :
#include <iostream.h>
#include <string.h>
class Hewan {
private:
char Id[6];
char Nama[100];
int Jumlah_Kaki;
public:
Hewan(char Id[], char Nama[], int Jumlah_Kaki) {
strcpy(this->Id, Id);
strcpy(this->Nama, Nama);
this->Jumlah_Kaki = Jumlah_Kaki;
}
~Hewan() {}
};
6
cout << endl
<< "Ingin ganti data " << NamaHewan << "? [y/n]: ";
cin >> Pilihan; cin.clear(); cin.sync();
if (Pilihan == 'y') {
cout << "Id " << NamaHewan << ": ";
cin >> Id; cin.clear(); cin.sync();
objHewan.SetId(Id);
cout << "Jumlah Kaki " << NamaHewan << ": ";
cin >> Jumlah_Kaki; cin.clear(); cin.sync();
objHewan.SetJumlah_Kaki(Jumlah_Kaki);
}
}
void main() {
Hewan objAyam("B0001", "Ayam", 2);
Hewan objAnjing("B0002", "Anjing", 4);
Hewan objTikus("B0003", "Tikus", 4);
GantiData(objAyam, "objAyam");
GantiData(objAnjing, "objAnjing");
GantiData(objTikus, "objTikus");
CetakData(objAyam, "objAyam");
CetakData(objAnjing, "objAnjing");
7
CetakData(objTikus, "objTikus");
cin.get();
}
3. Buat program C++ untuk membuat perhitungan besarnya potongan harga pembelian dengan
ketentuan sebagai berikut:
• Memiliki fungsi untuk memasukkan data dari keyboard data sebagai berikut:
− No, Id_Barang, Nama Barang, Harga Barang, Jumlah Item Barang
• Memiliki fungsi untuk menghitung potongan harga dan Total Pembelian dengan aturan:
− Jika total harga pembelian barang di bawah 250,000 tidak mendapat potongan harga.
− Jika total harga pembelian barang antara 250,000 s/d 500,000 akan mendapatkan potongan
harga sebesar 5% dari total harga pembelian per item.
− Jika total harga pembelian di atas 500,000 s/d 1000,000 akan mendapatkan potongan harga
sebesar 10% dari total harga pembelian per item.
− Jika total harga pembelian di atas 1000,000 akan mendapatkan potongan harga sebesar 20%
dari total harga pembelian per item.
• Memiliki fungsi untuk menampilkan daftar barang yang dibeli beserta harga total dan potongan
harganya.
• Contoh tampilan seperti terlihat di bawah ini:
012345678901234567890123456789012345678901234567890123456789012345678901234
No Id_Barang Nama Barang Harga Barang Jumlah Item Total Harga Potongan
1 M0001 Meja Tamu 70,000 2
2 M0002 Meja Belajar 350,000 1
3 K0001 Kursi Tamu 60,000 8
4 K0002 Kursi Belajar 250,000 1
5 L0001 Lemari Buku 650,000 2
Jawaban:
#include <iostream.h>
#include <string.h>
class DataBarang {
private:
int No;
char Id_Barang[6];
char Nama_Barang[100];
int Harga_Barang;
int Jumlah_Item_Barang;
float Potongan_Harga;
int Total_Pembelian;
8
public:
void SetDataBarang(int No, char Id_Barang[], char Nama_Barang[],
int Harga_Barang, int Jumlah_Item_Barang,
float Potongan_Harga, int Total_Pembelian) {
this->No = No;
strcpy(this->Id_Barang, Id_Barang);
strcpy(this->Nama_Barang, Nama_Barang);
this->Harga_Barang = Harga_Barang;
this->Jumlah_Item_Barang = Jumlah_Item_Barang;
this->Potongan_Harga = Potongan_Harga;
this->Total_Pembelian = Total_Pembelian;
}
9
<< "No: "; cin >> No;
cin.clear(); cin.sync();
cout << "Id Barang: "; cin.getline(Id_Barang, 6);
cin.clear(); cin.sync();
cout << "Nama Barang: "; cin.getline(Nama_Barang, 100);
cin.clear(); cin.sync();
cout << "Harga Barang: "; cin >> Harga_Barang;
cin.clear(); cin.sync();
cout << "Jumlah Item Barang: "; cin >> Jumlah_Item_Barang;
cin.clear(); cin.sync();
void main() {
DataBarang Data[6];
int TotalBarang = 0;
cin.get();
}
4. Buat program C++ dengan menggunakan struktur bertingkat (Nested Structure). Program tersebut
akan digunakan untuk memasukkan dan menampilkan data Pegawai dalam bentuk daftar (Tabel)
sebagai berikut :
10
NIP Nama Alamat_Rumah Tanggal_Lahir
Jalan Kota Kodepos Tanggal-Bulan-Tahun
9001 Ayu Jl. Mawar 5 Bandung 10555 02-02-1955
9003 Bagus Jl. Melati 3 Bogor 10999 09-09-1969
9002 Elok Jl. Tulip 9 Tangerang 65001 03-05-1965
Dimana definisi struktur Pegawai tersebut memiliki anggota struktur sebagai berikut:
• NIP bertipe data karakter yang menampung 4 karakter.
• Nama bertipe data karakter yang menampung 30 karakter.
• Alamat_Rumah bertipe data structure Almt yang terdiri dari:
o Jalan bertipe data karakter yang menampung 30 karakter.
o Kota bertipe data karakter yang menampung 20 karakter.
o Kodepos bertipe data long integer.
• Tanggal_Lahir bertipe data structure Tgl yang terdiri dari:
o Tanggal bertipe data integer.
o Bulan bertipe data integer.
o Tahun bertipe data integer.
Jawaban:
#include <iostream.h>
struct Almt {
char Jalan[31];
char Kota[21];
long int Kodepos;
};
struct Tgl {
int Tanggal;
int Bulan;
int Tahun;
};
struct Pegawai {
char NIP[5];
char Nama[31];
Almt Alamat_Rumah;
Tgl Tanggal_Lahir;
};
11
void Memasukkan_Data(Pegawai &Data, int &TotalData) {
cout << endl
<< "Data Pegawai " << (TotalData + 1) << endl
<< "NIP: "; cin.getline(Data.NIP, 5);
cin.clear(); cin.sync();
cout << "Nama: "; cin.getline(Data.Nama, 31);
cin.clear(); cin.sync();
cout << "Jalan: "; cin.getline(Data.Alamat_Rumah.Jalan, 31);
cin.clear(); cin.sync();
cout << "Kota: "; cin.getline(Data.Alamat_Rumah.Kota, 21);
cin.clear(); cin.sync();
cout << "Kodepos: "; cin >> Data.Alamat_Rumah.Kodepos;
cin.clear(); cin.sync();
cout << "Tanggal: "; cin >> Data.Tanggal_Lahir.Tanggal;
cin.clear(); cin.sync();
cout << "Bulan: "; cin >> Data.Tanggal_Lahir.Bulan;
cin.clear(); cin.sync();
cout << "Tahun: "; cin >> Data.Tanggal_Lahir.Tahun;
cin.clear(); cin.sync();
TotalData = TotalData + 1;
}
12
}
}
void main() {
Pegawai Data[4];
int TotalData = 0;
cin.get();
}
13