Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan...

Post on 25-Aug-2020

13 views 0 download

Transcript of Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan...

Algoritma Pemrograman

Pertemuan Ke-13 (Record)

1

Sub Pokok Bahasan

Pendahuluan

Pendefinisian Record

Menggunakan Tipe Data Record

Tipe Data Record dengan Field Tipe Record (Record Terstruktur)

2

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

3

Pendefinisian Record

DEKLARASI type

type Hasil : record Hasil = record

<JariJari : real, JariJari : real;

Keliling : real, Keliling : real;

Luas : real Luas : real;

> end;

Lingkaran : Hasil var

Lingkaran : Hasil;

4

Menggunakan Tipe Data Record

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

5

const Nmaks = 100; DEKLARASI type const Nmaks = 100

Mahasiswa = record type Mahasiswa : NIM : integer; record<NIM : integer, NamaMhs : string[20]; NamaMhs : string, KodeMK : string[10]; KodeMK : string, Nilai : char; Nilai : char

end; >

var TabMhs: array[1..Nmaks] of

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

k, N : integer; k : integer {pencatat indeks larik} begin N : integer write(‘Masukkan jumlah data ? ‘); DESKRIPSI: readln(N); read(N) for k := 1 to N do for k←1 to N do writeln(‘Data ke-‘,k,’ : ‘);

begin read(TabMhs[k].NIM) write(‘Masukkan NIM?: ‘); read(TabMhs[k].NamaMhs) readln(TabMhs[k].NIM); read(TabMhs[k].KodeMK) write(‘Masukkan NAMA?: ‘); read(TabMhs[k].Nilai) readln(TabMhs[k].NamaMhs); endfor write(‘Masukkan KODE?: ‘);

readln(TabMhs[k].KodeMK);

write(‘Masukkan NILAI?: ‘);

readln(TabMhs[k].Nilai);

end;

end.

6

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:

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

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

9

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

DESKRIPSI: (* Program Utama *)

write(‘Jumlah Mahasiswa ? ‘)

read(N)

bacadata

urut

tampil

10

Contoh 2: Solusi Pascal … [bagian 1/3]: 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;

11

Contoh 2: Solusi Pascal … [bagian 2/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

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;

12

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

(* PROGRAM UTAMA *)

begin

write(‘Jumlah Mahasiswa ? ‘);

readln(N);

writeln;

bacadata;

clrscr;

urut;

tampil;

end.

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

------------------------------------------------

14

Tipe Data Record dengan Field

Tipe Record (Record Terstruktur)

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

15

DEKLARASI const

const Nmaks = 100 Nmaks = 100;

const Mn = 10 Mn = 10;

type MataKuliah : type

record MataKuliah = record

<KodeMK : string, KodeMK: string[8];

NamaMK : string, NamaMK: string[20];

Nilai : char Nilai: char;

> end;

type Mahasiswa : Mahasiswa = record

record NIM :integer;

<NIM: integer, Nama :string[20];

Nama: string, MK :array[1..Mn] of

MK: array[1..Mn] of MataKuliah MataKuliah;

> end;

TabMhs : array[1..Nmaks] of Mahasiswa var

TabMhs: array[1..Nmaks] of

Mahasiswa;

• Cara mengakses elemen TabMhs :

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}

16

• 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

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.

18