Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan Field Tipe Record (Record Terstruktur)

Teks penuh

(1)

S1 Teknik Informatika-Unijoyo 1

Algoritma Pemrograman

Pertemuan Ke-12

(

Record

)

::

::

(2)

S1 Teknik Informatika-Unijoyo 3

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

Pendahuluan

DEKLARASI

type Hasil : record

<JariJari : real,

Keliling

: real,

Luas

: real

>

Lingkaran : Hasil

type

Hasil =

record

JariJari :

real

;

Keliling :

real

;

Luas

:

real

;

end

;

var

Lingkaran : Hasil;

(3)

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

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

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?: ‘);

(4)

S1 Teknik Informatika-Unijoyo 7

Mengurutkan data berdasarkan nomor mahasiswa (NIM)

dengan urutan dari yang terkecil ke yang terbesar dan

kemudian menampilkannya pada tabel seperti di bawah ini:

Contoh 2:

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

(5)

S1 Teknik Informatika-Unijoyo 9

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('---');

Contoh 2: Solusi Algoritma … [bagian 2/3]:

DESKRIPSI: (* Program Utama *)

write(‘Jumlah Mahasiswa ? ‘)

read(N)

bacadata

urut

tampil

(6)

S1 Teknik Informatika-Unijoyo 11 Program URUT_NIM;

const Nmaks = 100;

type

Mahasiswa = record

NIM : integer;

TabMhs : array[1..Nmaks] of Mahasiswa; Bantuan : Mahasiswa;

I, J, N : integer;

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]:

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

(7)

S1 Teknik Informatika-Unijoyo 13

(* PROGRAM UTAMA *)

begin

write

(‘Jumlah Mahasiswa ? ‘);

readln

(N);

writeln

;

bacadata

;

clrscr;

urut

;

tampil

;

end.

Contoh 2: Solusi Pascal… [bagian 3/3]:

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

(8)

S1 Teknik Informatika-Unijoyo 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.

Data yang disimpan di dalam

record

adalah sbb:

1.

NIM (Nomor Induk Mahasiswa)

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

Tipe Data

Record

dengan

Field

Tipe

Record

(

Record

Terstruktur)

DEKLARASI

const Nmaks = 100

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

>

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

Cara mengakses elemen TabMhs :

TabMhs[N] {elemen ke-N dari TabMhs}

TabMhs[N].NIM {mengacu field NIM dari elemen ke-N dari TabMhs}

(9)

S1 Teknik Informatika-Unijoyo 17

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

Solusi Algoritma 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

(10)

S1 Teknik Informatika-Unijoyo 19

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

Summary

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.

Figur

Memperbarui...

Referensi

Memperbarui...