S-1 Teknik Informatika
RECORD & ARRAY OF RECORD
Tujuan
• Mahasiswa mampu memahami tentang tipe data record / structure
• Mampu membuat program yang terstruktur dan modular
menggunakan fungsi dengan melewatkan data berupa record /
structure.
Pokok Bahasan
• Record
• Array of Record
Record / Structure
• Record adalah suatu tipe data bentukan yang merupakan kumpulan dari atribut-atribut suatu objek.
• Pada record tipe elemen bisa berbeda-beda tidak seperti array yang mengharuskan mempunyai tipe elemen yang sama.
• Deklarasi record / structure
struct namaRecord {
<tipe Atribut 1> Atribut1;
<tipe Atribut 2> Atribut2;
. . .
<tipe Atribut n> Atributn;
};
• Cara mengakses variabel di dalam record/struct adalah dengan operator dot (.).
Atribut 1 Atribut 2 Atribut 3 . . . Atribut N
Contoh:
• Akan dibuat sebuah program untuk mengelola koordinat kartesius yang memiliki koordinat (absis, ordinat).
• Program akan dipecah menjadi input, proses dan output.
• Struktur data yang digunakan adalah tipe record.
• A, B, C, D, T adalah titik-titik yang ada dalam koordinat kartesian
• T merupakan titik tengah dari 2 titik A dan B,
• C merupakan titik hasil dari pencerminan titik A terhadap sumbu X
• D merupakan titik hasil dari pencerminan titik A terhadap sumbu Y
1 2 3 4 5 6
- 1 - 3 - 2
1 2 3 4 5
- 1 - 2 - 3
A ( 2 , 1 )
T ( 4 , 2 )
B ( 6 , 3 )
C ( 2 , - 1 ) D ( - 2 , 1 )
X ( A b s is ) Y ( O r d in a t )
struct koordinat { float absis;
float ordinat;
};
void getPoint( koordinat& ttk){
cout<<"Masukkan absis = ";cin >> ttk.absis;
cout<<"Masukkan ordinat = ";cin >> ttk.ordinat;
}
void printPoint( koordinat ttk){
cout<< "("<<ttk.absis<<","<< ttk.ordinat<<")"<<endl;
}
main(){
koordinat a,b;
cout << "Input Titik a "<<endl; getPoint(a);
cout << "Input Titik b "<<endl; getPoint(b);
cout << "Titik a = "; printPoint(a);
cout << "Titik b = "; printPoint(b);
}
Waktu : konversi waktu
struct waktu { int jam;
int menit;
int detik;
};
void getWaktu(waktu& wkt) {
cout<<"Masukkan jam = ";cin >> wkt.jam;
cout<<"Masukkan menit = ";cin >> wkt.menit;
cout<<"Masukkan detik = ";cin >> wkt.detik;
}
void printWaktu( waktu wkt) {
cout << wkt.jam << ":"<< wkt.menit << ":" << wkt.detik ; }
int cariJumlahDetik(waktu wkt){ // Jadikan void ??
return (wkt.jam * 3600 + wkt.menit*60 + wkt.detik);
}
void konversiWaktu(int jDetik, waktu& wkt){ // Jadikan fungsi??
int sisa;
wkt.jam = jDetik / 3600;
sisa = jDetik % 3600;
wkt.menit = sisa / 60;
wkt.detik = sisa % 60;
}
Array of Record
• Elemen array dapat juga digunakan untuk data yang bertipe terstruktur (record).
Caranya :
1. membuat tipe nama record / structure 2. membuat nama alias tipe array yang elemennya record/struct
3. deklarasikan variable-variabel yang
mengacu pada nama tipe alias array.
Contoh deklarasi array of record
• Misalkan akan dibuat 3 buah fungsi untuk menentukan ukuran dari array, input data dan pencetakan data dengan header sbb :
void banyakData(int& n);
void inputMahasiswa (LarikMhs& Mhs, int n);
void cetakMahasiswa (LarikMhs Mhs, int n);
struct mahasiswa { char NPM[8] ; char nama[20];
int nilai;
};
typedef mahasiswa LarikMhs[10];
LarikMhs mhs;
#include <iostream>
using namespace std;
struct mahasiswa { char NPM[8] ; char nama[20];
int nilai;
};
typedef mahasiswa LarikMhs[10];
LarikMhs mhs;
void banyakData(int& n);
void inputMahasiswa (LarikMhs& Mhs, int n);
void cetakMahasiswa(LarikMhs Mhs, int n);
main(){
LarikMhs mhs;
int n;
banyakData(n);
inputMahasiswa(mhs,n);
cetakMahasiswa(mhs,n);
}
void banyakData(int& n){ // Input banyak data cout<<"Banyak data : "; cin>>n;
}
void inputMahasiswa (LarikMhs& Mhs, int n) { for (int i=0;i<n;i++) {
cout<<"masukan data mahasiswa ke- "<<(i+1)<<endl;
cout<<"NPM : "; cin>>Mhs[i].NPM;
cout<<"Nama : "; cin>>Mhs[i].nama;
cout<<"Nilai : "; cin>>Mhs[i].nilai;
} }
void cetakMahasiswa(LarikMhs Mhs, int n){
cout<<"PENCETAKAN DATA MAHASISWA "<<endl;
for (int i=0;i<n;i++) {
cout<<Mhs[i].NPM<<"|"<<Mhs[i].nama<<"|"<<Mhs[i].nilai<<endl;
} }
1. Buatlah program modular untuk menghitung rata-rata gaji, gaji tertinggi, gaji terendah dan mengurutkan daftar pegawai berdasarkan NIP secara ascending dari suatu kumpulan data record pegawai yang memiliki atribut (NIP : string, nama : string dan gol : int). Aturan gaji adalah :
Golongan Gaji
1 2.000.000
2 3.000.000
3 5.000.000
4 8.000.000
Fungsi yang diperlukan antara lain : main, inputPegawai, cetakDaftar, cariGaji, rataRataGaji, gajiTerendah, gajiTertinggi, sorting , dll Bentuk tampilan daftar pegawai adalah sebagai berikut :
DAFTAR GAJI PEGAWAI PT. INGIN SUKSES
- - - - - - - - - - - - - - - --- --- No NIP NAMA Gol Gaji
- - - - - - - - - - - - - - - ---
1 120001 Ali Sukiman 2 3.000.000
2. 120005 Iman Wardiman 3 5.000.000
N ... ………... …….. ………
- - - - - - - - - - - - - - - --- Gaji Tertinggi : 5.000.000
Gaji Terendah : 3.000.000 Rata-rata Gaji : 4.000.000
• Kerjakan tugas-tugas dibawah ini sesuai dengan petunjuk dan ketentuan pengerjaan yang telah diberikan :
2.. Buatlah program untuk menghitung nilai Hasil dari nilai UTS, UAS dan menampilkan nilai huruf yang akan didapat.
• Ketentuan : _ Masukan banyak data yang diinginkan untuk menentukan banyak data yang akan diproses. _
• Buatlah program secara modular untuk menghitung nilai Hasil
• Nilai Hasil = (Nilai UAS * 40%) + (Nilai UTS * 60%)
• Jika Nilai Huruf = A, maka Nilai Hasil >= 80
• Jika Nilai Huruf = B, maka Nilai Hasil >= 70
• Jika Nilai Huruf = C, maka Nilai Hasil >= 56
• Jika Nilai Huruf = D, maka Nilai Hasil >= 47
• Jika Nilai Huruf = E, maka Nilai Hasil < 47
• Tampilan akhir adalah sebuah tabel, seperti dibawah ini :
• Daftar Nilai Mata Kuliah C++
• No Nama Nilai Mahasiswa UTS UAS Nilai akhir Huruf mutu
• ... ... ... ... ... ... ...
• …. ... ... ... …... ... ...
• Output Diurutkan berdasarkan nilai terakhir secara ascending
3. Buatlah fungsi untuk :
a. Mencari titik tengah (T) dari 2 buah koordinat A dan B.
Diketahui rumus untuk titik tengah adalah:
T.absis = (A.absis + B.ordinat) / 2 T.ordina t= (A.ordinat + B.ordinat) / 2 Berbentuk function dan void
b. Mencari koordinat hasil pencerminan terhadap sumbu X dan terhadap sumbu Y Berbentuk function dan void
4.. Buatlah program untuk mencari jumlah biaya parkir mobil dari selisih 2 waktu (datang dan pulang) dengan aturan 1 jam pertama = Rp.
3000 dan per jam berikutnya = Rp. 3000.
Contoh tampilan yang diinginkan:
Jam Datang = 10 : 10 : 10
Jam Pulang = 11 : 13 : 25
Lama Parkir = 1 : 3 : 15
Bayar = Rp. 6000
• Sesi Berakhir
• TERIMA KASIH