Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan Field Tipe Record (Record Terstruktur)
Algoritma Pemrograman Pertemuan Ke-12 (Record) :: ::
S1 Teknik Informatika-Unijoyo
1 ! " Pendahuluan Record adalah elemen larik yang bertipe terstruktur Dengan menggunakan tipe data record, beberapa item data yang masing-masing dapat mempunyai tipe data berbeda-beda dapat dikumpulkan. Masing-masing item data disebut dengan field. Jadi record terdiri dari kumpulan field yang dapat berbeda tipe Biasanya suatu record berisi beberapa field untuk sebuah subyek tertentu
S1 Teknik Informatika-Unijoyo
3 Pendefinisian Record DEKLARASI type type Hasil : record Hasil = record real;
<JariJari : real, JariJari : Keliling : real, Keliling : real; Luas : real Luas : real; > end;
Lingkaran : Hasil var Lingkaran : Hasil;
S1 Teknik Informatika-Unijoyo
4 S1 Teknik Informatika-Unijoyo
5 Contoh 1: Misal record
TabMhs adalah sebuah larik yang elemennya menyatakan nilai ujian mata kuliah (MK) yang diambil seorang mahasiswa Data (field) setiap mahasiswa adalah:
NIM (Nomor Induk Mahasiswa) nama mahasiswa mata kuliah yang diambil nilai mata kuliah
Menggunakan Tipe Data Record S1 Teknik Informatika-Unijoyo
6 DEKLARASI const Nmaks = 100 type Mahasiswa : record<NIM : integer, NamaMhs : string,
KodeMK : string, Nilai : char > TabMhs: array[1..Nmaks] of
Mahasiswa k : integer {pencatat indeks larik} N : integer DESKRIPSI: read(N) for k←1 to N do read(TabMhs[k].NIM) read(TabMhs[k].NamaMhs) read(TabMhs[k].KodeMK) read(TabMhs[k].Nilai) endfor
const Nmaks = 100; type Mahasiswa = record
NIM : integer; NamaMhs : string[20]; KodeMK : string[10]; Nilai : char; end; var TabMhs: array[1..Nmaks] of Mahasiswa; k, N : integer; begin write(‘Masukkan jumlah data ? ‘); readln(N); for k := 1 to N do writeln(‘Data ke-‘,k,’ : ‘); begin write(‘Masukkan NIM?: ‘); readln(TabMhs[k].NIM); write(‘Masukkan NAMA?: ‘); readln(TabMhs[k].NamaMhs); write(‘Masukkan KODE?: ‘); readln(TabMhs[k].KodeMK); write(‘Masukkan NILAI?: ‘); readln(TabMhs[k].Nilai); end; end. Contoh 2: Mengurutkan data berdasarkan nomor mahasiswa (NIM) dengan urutan dari yang terkecil ke yang terbesar dan kemudian menampilkannya pada tabel seperti di bawah ini:
S1 Teknik Informatika-Unijoyo
7 Contoh 2: Solusi Algoritma … [bagian 1/3]
Algoritma URUT_NIM DEKLARASI ( * Program Utama *) const Nmaks = 100 type Mahasiswa : record<NIM : integer,
Nama : string, Kode : string, Nilai: char
> TabMhs : array[1..Nmaks] of Mahasiswa Bantuan : Mahasiswa I, J, N : integer procedure BacaData { Membaca data record TabMhs } DEKLARASI (* Prosedur BacaData *) { Tidak ada } DESKRIPSI: (* Prosedur BacaData *) for I ← 1 to N do write(‘Nomor Mahasiwa ke-‘,I,’ ? ‘) read(TabMhs[I].NIM) write(‘Nama Mahasiwa ke-‘,I,’ ? ‘) read(TabMhs[I].Nama) write(‘Kode Mata Kuliah ke-‘,I,’ ? ‘) read(TabMhs[I].Kode) write(‘Nilai Mahasiwa ke-‘,I,’ ? ‘) read(TabMhs[I].Nilai) endfor
S1 Teknik Informatika-Unijoyo
8 Contoh 2: Solusi Algoritma … [bagian 2/3]:
procedure urut { Mengurutkan isi record TabMhs berdasarkan NIM } DEKLARASI (* Prosedur urut *) { Tidak ada } DESKRIPSI: (* Prosedur urut *) for I ← 1 to N-1 do for J ← 1 to N-1 do if TabMhs[J].NIM > TabMhs[J+1].NIM then
Bantuan := TabMhs[J]; TabMhs[J]:= TabMhs[J+1]; TabMhs[J+1]:= Bantuan; endif endfor endfor procedure tampil {Menampilkan isi record TabMhs yg telah diurutkan berdasarkan NIM dlm bentuk tabel } DEKLARASI (* Prosedur tampil *) { Tidak ada } DESKRIPSI: (* Prosedur tampil *) write('-----------------------------------------------') write(' Nomor Nama Kode Nilai ') write('-----------------------------------------------') for I ← 1 to N do with TabMhs[I] do write(NIM,Nama,Kode,Nilai); endfor write ('----------------------------------------------');
S1 Teknik Informatika-Unijoyo
9 Contoh 2: Solusi Algoritma … [bagian 3/3]: DESKRIPSI: (* Program Utama *) write(‘Jumlah Mahasiswa ? ‘) read(N) bacadata urut tampil
S1 Teknik Informatika-Unijoyo
10 S1 Teknik Informatika-Unijoyo
11 Program URUT_NIM;
const Nmaks = 100; type Mahasiswa = record
NIM : integer;
Nama : string[20]; Kode : string[10]; Nilai: char; end; var
TabMhs : array[1..Nmaks] of Mahasiswa; Bantuan : Mahasiswa; I, J, N : integer; procedure BacaData ; begin for I := 1 to N do begin writeln; write(‘Nomor Mahasiwa ke-‘,I,’ ? ‘) ;readln(TabMhs[I].NIM); write(‘Nama Mahasiwa ke-‘,I,’ ? ‘); readln(TabMhs[I].Nama); write(‘Kode Mata Kuliah ke-‘,I,’ ? ‘);readln(TabMhs[I].Kode); write(‘Nilai Mahasiwa ke-‘,I,’ ? ‘); readln(TabMhs[I].Nilai); end; end;
Contoh 2: Solusi Pascal … [bagian 1/3]: S1 Teknik Informatika-Unijoyo
12
procedure urut ; begin for I := 1 to N-1 do for J := 1 to N-1 do if TabMhs[J].NIM > TabMhs[J+1].NIM then begin Bantuan := TabMhs[J]; TabMhs[J]:= TabMhs[J+1]; TabMhs[J+1]:= Bantuan; end; end; procedure tampil ; begin writeln; writeln('------------------------------------------------'); writeln(' Nomor Nama Kode Nilai '); writeln('------------------------------------------------'); for I := 1 to N do begin writeln(TabMhs[I].NIM:10,TabMhs[I].Nama:20,TabMhs[I].Kode:10,TabMhs[I].Nilai:5); end; writeln('------------------------------------------------'); end;
Contoh 2: Solusi Pascal … [bagian 2/3]:
Contoh 2: Solusi Pascal… [bagian 3/3]: (* PROGRAM UTAMA *) begin write(‘Jumlah Mahasiswa ? ‘); readln(N); writeln; bacadata ; clrscr; urut ; tampil ; end.
S1 Teknik Informatika-Unijoyo
13 Contoh 2: Hasil Keluaran
- Jumlah Mahasiswa ? 3 Nomor Mahasiwa ke-1 ? 0604100044 Nama Mahasiwa ke-1 ? Adi Darmaji Kode Mata Kuliah ke-1 ? FTC104 Nilai Mahasiwa ke-1 ? B Nomor Mahasiwa ke-2 ? 0604100011 Nama Mahasiwa ke-2 ? Elisa Hadi
Kode Mata Kuliah ke-2 ? FTC111 Nilai Mahasiwa ke-2 ? A Nomor Mahasiwa ke-1 ? 0604100020 Nama Mahasiwa ke-1 ? Aditya Kode Mata Kuliah ke-1 ? FTC115 Nilai Mahasiwa ke-1 ? C ------------------------------------------------ Nomor Nama Kode Nilai ------------------------------------------------ 0604100011 Elisa Hadi FTC111 A 0604100020 Aditya FTC115 C 0604100044 Adi Darmaji FTC104 B ------------------------------------------------ S1 Teknik Informatika-Unijoyo
14 Data yang disimpan di dalam record adalah sbb:
1. NIM (Nomor Induk Mahasiswa)
Tipe Data Record dengan Field Tipe Record (Record Terstruktur) S1 Teknik Informatika-Unijoyo
2. NamaMhs (nama mahasiswa)
3. Mata Kuliah (MK) yang diambil mahasiswa, berupa record:
- Kode mata kuliah ke-1
Nama mata kuliah ke-1 Nilai mata kuliah ke-1
- Kode mata kuliah ke-2
Nama mata kuliah ke-2 Nilai mata kuliah ke-2 . .
- Kode mata kuliah ke-n
Nama mata kuliah ke-n Nilai mata kuliah ke-n
16 DEKLARASI const Nmaks = 100 const Mn = 10 type MataKuliah : record
15 Tipe data record juga dapat memiliki field berupa tipe data record yang lainnya. Misalnya item-item data pada data nilai-nilai mata kuliah yang diambil setiap mahasiswa pada suatu semester.
<NIM: integer, Nama: string, MK: array[1..Mn] of MataKuliah >
TabMhs : array[1..Nmaks] of Mahasiswa const
Nmaks = 100; Mn = 10; type
MataKuliah = record KodeMK: string[8]; NamaMK: string[20]; Nilai: char; end;
Mahasiswa = record NIM : integer; Nama : string[20]; MK : array[1..Mn] of
MataKuliah; end; var
TabMhs: array[1..Nmaks] of Mahasiswa;
TabMhs[N] {elemen ke-N dari TabMhs} TabMhs[N].NIM {mengacu field NIM dari elemen ke-N dari TabMhs} TabMhs[N].MK[M].KodeMK {mengacu field KodeMK ke-M dari elemen ke-N dari TabMhs}
S1 Teknik Informatika-Unijoyo
<KodeMK : string, NamaMK : string, Nilai : char > type Mahasiswa : record
- Cara mengakses elemen TabMhs :
Solusi Algoritma untuk mengisi TabMhs:
- Algoritma RECORD_DATA_MAHASISWA
{ Mengisi elemen record mahasiswa } DEKLARASI const Nmaks = 10 const Mn = 10 type MataKuliah : record<KodeMK : string, NamaMK : string, Nilai : char> type Mahasiswa : record<NIM : integer, Nama : string, MK : array[1..Mn] of MataKuliah> LarikMhs : array[1..Nmaks] of Mahasiswa I, J, M, N : integer DESKRIPSI: write(’Masukkan Jumlah Data Mahasiswa ? ’) read(N) for I ← 1 to N do write(’Nomor Mahasiswa ke-‘,I,’ ? ’) read(TabMhs[I].NIM) write(’Nama Mahasiswa ke-‘,I,’ ? ’) read(TabMhs[i].Nama) write(’Masukkan Jumlah Data Mata Kuliah? ’) read(M) for J ← 1 to M do write(’Kode Mata Kuliah ke-‘,J,’ ? ’) read(TabMhs[I].MK[J].KodeMK) write(’Nama Mata Kuliah ke-‘,J,’ ? ’) read(TabMhs[I].MK[J].NamaMK) write(’Nilai Mata Kuliah ke-‘,J,’ ? ’) read(TabMhs[I].MK[J].Nilai) endfor endfor
S1 Teknik Informatika-Unijoyo
17 Solusi PASCAL untuk mengisi TabMhs:
- Program RECORD_DATA_MAHASISWA; const Nmaks = 100;
Mn = 10; type
MataKuliah = record KodeMK : string[8]; NamaMK : string[20]; Nilai: char; end;
Mahasiswa = record NIM : integer; Nama : string[20]; MK : array[1..Mn] of MataKuliah; end; var
TabMhs : array[1..Nmaks] of Mahasiswa; I, J, M, N : integer; begin write(’Masukkan Jumlah Data Mahasiswa ? ’);readln(N); for I := 1 to N do begin write(’Nomor Mahasiswa ke-‘,I,’ ? ’); readln(TabMhs[I].NIM); write(’Nama Mahasiswa ke-‘,I,’ ? ’); readln(TabMhs[I].Nama); write(’Masukkan Jumlah Data Mata Kuliah? ’); readln(M); writeln; for J := 1 to M do begin write(’Kode Mata Kuliah ke-‘,J,’ ? ’); readln(TabMhs[I].MK[J].KodeMK); write(’Nama Mata Kuliah ke-‘,J,’ ? ’); readln(TabMhs[I].MK[J].NamaMK); write(’Nilai Mata Kuliah ke-‘,J,’ ? ’); readln(TabMhs[I].MK[J].Nilai); writeln; end; writeln; end; writeln; writeln; end.
S1 Teknik Informatika-Unijoyo
18
- Record adalah elemen larik yang bertipe terstruktur
- Tipe data record merupakan kumpulan beberapa item data dengan tipe data yang berbeda-beda atau biasa disebut sebagai field
- Tipe data record juga dapat memiliki field berupa tipe data record yang lainnya
S1 Teknik Informatika-Unijoyo
19
Summary S1 Teknik Informatika-Unijoyo
20 Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi Offset.
Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo.
Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika.
Daftar Pustaka