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