algoritma pemrograman · algoritma pemrograman pertemuan ke-13 (record) 1 . sub pokok bahasan...

18
Algoritma Pemrograman Pertemuan Ke-13 (Record) 1

Upload: others

Post on 25-Aug-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

Algoritma Pemrograman

Pertemuan Ke-13 (Record)

1

Page 2: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

Sub Pokok Bahasan

Pendahuluan

Pendefinisian Record

Menggunakan Tipe Data Record

Tipe Data Record dengan Field Tipe Record (Record Terstruktur)

2

Page 3: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 4: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 5: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 6: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 7: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 8: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 9: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 10: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

DESKRIPSI: (* Program Utama *)

write(‘Jumlah Mahasiswa ? ‘)

read(N)

bacadata

urut

tampil

10

Page 11: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 12: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 13: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

(* PROGRAM UTAMA *)

begin

write(‘Jumlah Mahasiswa ? ‘);

readln(N);

writeln;

bacadata;

clrscr;

urut;

tampil;

end.

13

Page 14: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

• 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

Page 15: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 16: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

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

Page 17: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

• 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

Page 18: Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan Pendahuluan Pendefinisian Record Menggunakan Tipe Data Record Tipe Data Record dengan

• 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