Algoritma Pemrograman · Algoritma Pemrograman Pertemuan Ke-13 (Record) 1 . Sub Pokok Bahasan...
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