SlideShare a Scribd company logo
BAB VII
RECORD
Record (rekaman) tersusun atas beberapa medan (field). Setiap field mempunyai
tipe sendiri, baik tipe dasar yang sudah ada atau tipe bentukan. Setiap record merupakan
satu kesatuan yang mempunyai pengertian yang utuh.
A. Mendefinisikan Record
Selain merupakan satu pengertian yang utuh, record dapat pula merepresentasikan
sebuah table.
Algoritmik
Pascal C
Type
titik=record<
x,y:integer
>
type titik=record
x,y:integer,
end;
Typedef struct
int x,y;
} titik;
Untuk table, nama field record di ambil dari kepala kabel. Misalnya diberikan table
seperti berikut ini:
No. NIM Nama Alamat Tanggal lahir
Defenisi record yang sesuai adalah:
Algoritmik Pascal C
type tanggal=record <
dd : integer
mm : integer
yy : integer
>
type tanggal=record
dd : integer;
mm : integer;
yy : integer:
end;
typedef struct {
int dd, mm, yy;
} tanggal;
type data=record<
no : byte
NIM : string[8]
Nama :
string[30]
Alamat :
string[30]
Tgl_Lahir :
tanggal
>
type data=record
no : byte;
NIM : string[8];
Nama :
string[30];
Alamat :
string[30];
Tgl_Lahir :
tanggal;
end;
typedef struct {
int no;
char NIM[8];
char Nama[30];
char Alamat[30];
tanggal
Tgl_Lahir,
} data;
B. Cara Mengakses Elemen Record
Cara mengakses elemen record adalah dengan menggunakan operator titik (.).
aturannya nama variabel bertipe record di ikuti tanda titik kemudian baru field yang
dikehendaki. Misalnya akan diinisialisasikan titik A sebagai titik asal (0,0) :
Algoritma Pascal C
Deklarasi
A :
titik
var
A : titik;
Struct titik
A;
Deskripsi
A.x ←
0
A.x ←
0
A.x:=0;
A.y:=0;
A.x=0;
A.y=0;
Contoh 7.1.
Buatlah algoritma untuk menentukan jarak dari 2 titik, a(x1, y2) dan (x2, y2).
Analisis:
Posisi titik A(x1, y1) dan B(x2, y2) secara umum dapat digambarkan sebagai berikut :
r B(x2, y2)
A((𝑥1 − 𝑦1) (y2-y1)
(𝑥2 − 𝑥1)
Dengan rumus Phytagoras, maka diperoleh rumus jarak dua titik adalah :
𝑟 = √ (𝑥2 − 𝑥1)2 + (𝑦2 – 𝑦1)2
Algoritma 7.1.
Algoritma menentukan jarak 2 titik
{diketahui koordinat A(x1, y1) dan B(x2, y2), dicari jarak r dari A
ke B }
Deklarasi
type titik = record<
x,y : integer;
>
A,B : titik
jarak : real
Deskripsi
read(A.x, A.y)
read(B.x, B.y)
jarak ← sqrt((sqr(A.x-B.x)+(sqr(A.y-B.y))))
write(jarak)
Translasi 7.1.
Bahasa Pascal Bahasa C
program Panjang_Garis;
uses wincrt;
type titik=record
x, y : integer;
end;
var A,B : titik;
jarak: real;
begin
writeln (‘Masukkan koordinat titik A’);
write (Nilai absis x1 :’); readln(A.x);
write (Nilai ordinat y1 : ‘); readln(A.y);
writeln (‘Masukan koordinat titik B’);
write (Nilai absis x2 : ‘); readln(B.x);
write (Nilai ordinat y2 : ‘) readln(B.y);
jarak := sqrt((sqr(A.x-B.x)+(sqr(A.y-
B.y))));
write (Panjang Garis AB = ‘jarak:4:2);
end.
#include <stdio.h>
#include <math.h>
typedef struct {
int x, y;
} titik;
main() {
titik A,B;
float jarak;
printf(“Masukkan koordinat titik An”);
printf(“Nilai absis x1 :”);
scanf(“%d”,&A.x);
printf(“Nilai ordinat y1 :”);
scanf(“%d”,&A.y);
printf(“Masukkan koordinat titik Bn);
printf(Nilai absis x2 :”);
scanf(“%d”,&B.x);
printf(Nilai ordinat y2 :”);
scanf(“%d”,&B.y);
jarak = sqrt((pow((A.x – B.x),2) +
(pow((A.y – B.y),2))));
printf(“Panjang Garis AB = %4.2f”
jarak);
return 0;
}
Contoh 7.2.
Buatlah algoritma untuk menjumlah 2 bilangan kompleks.
Analisis :
Bilangan kompleks tersusun atas bagian realmdan bagian imajiner berbentuk a + b
bi, di mana i = √−1 . Misalnya bilangan pertama adalah bil1 = a1 + b1.i Dan bil2 = a2 +
b2.i maka hasil jumlah bil1 dan bilangan 2 adalah :
bil1 + bil2=(a1+a2) + (b1+b2)i
Algoritma 7.2.
procedure jumlah_bilangan_kompleks(input x, y : kompleks ; output jumlah : kompleks)
Deklarasi
type kompleks =record < ,a, b : real >
Deskripsi
jumlah.a ← x.a + y.a
jumlah.b ← x.b + y.b
Translasi 7.2.
Bahasa pascal Bahasa C
program
Penjumlahan_Bilangan_Kompleks;
user wincrt;
type kompleks = record
a, b : real;
end,
var bil1, bil2 : kompleks;
total : kompleks;
proceure jumlah_bilangan_kompleks
(x,y: kompleks ;var jumlah :
kompleks);
begin
jumlah.a := x.a + y.a;
jumlah.b := x.b + y.b;
end;
begin
writeln (‘Bilangan kompleks bil1‘);
write (‘Nilai bagian real bil1 : ‘_;
readln(bil1.a);
write (‘Nilai bagian imajiner bil1 : ‘);
readln(bil1.b);
writeln (‘Bilangan kompleks bil2’);
write (‘Nilai bagian real bil2 : ‘);
readln(bil2.a);
write (‘Nilai bagian imajiner bil2 : ‘);
readln(bil2.b);
jumlah_bilangan_kompleks(bil1, bil2,
total);
if (total.b < 0) then
write (‘Hasil =’,total.a:4:2,’ i’)
else
write
(‘Hasil=’,total.a:4:2,’+’,total.b:4:2,’I’);
end.
#include <stdio.h>
typedef struct {
float a, b;
} kompleks;
void jumlah_bilangan_kompleks
(kompleks x,kompleks y,kompleks
*jumlah)
{ jumlah- >a = x.a + y.a;
Jumlah- > = x.b + y.b;
}
main() {
kompleks bil1, bil2;
kompleks total;
printf(“Bilangan kompleks bil1n”);
printf(“Nilai bagian real bil1 :”);
scanf(“%f”,&bil1.a);
printf(“Nilai bagian imajiner bil1 : “);
scanf(“%f”,&bil1.a);
printf(“Bilangan kompleks bil2n”);
printf(“Nilai bagian real bil2 : “);
scanf(“f”,&bil2.a);
printf(“Nilai bagian imajiner bil2 : “);
scanf(“%f”,&bil2.b);
jumlah_bilangan_kompleks(bil1,bil2,&total);
if ((total.b < 0))
printf(“Hasil = %4.2f%4.2f
i”,total.a,total.b);
else
printf(“Hasil= %4.2 + %4.2f
i”,total.a,total.b);
return 0;
}
Catatan :
Untuk passing parameter dalam bahasa C yang menggunakan call by refference
(yaitu menggunakan pointer *), cara mengakses fieldnya tidak menggunakan operator titik
(.) tetapi menggunakan operator panah (->).
Contoh 7.3.
Buatlah daftar nilai mahasiswa didasarkan pada table berikut ini.
No. NIM Nama
Ujian Nilai
Mid Akhir Akhir Huruf
1. 990510001 Khoirul anam 80 95 90 A
2. 990510002 Siti julaiha 45 30 35 D
3. 990510003 Nur rohmah 50 50 50 C
4. 990510004 Agus
Muhammad
90 60 70 B
5. 990510005 Nur Iskandar 40 10 20 E
Dengan ketentuan :
1. Nilai akhir diperoleh dari rumus (Ujian Mid + 2xUjian Akhir)3.
2. Nilai huruf di peroleh dengan :
Range
Nilai
Nilai Huruf
0..20 E
21..40 D
41..60 C
61..80 B
81..100 A
Analisis :
Masalah di atas perlu dipecah menjadi beberapa subprogram untuk mempermudah
penyelesaian. Tahapannya adalah sebagai berikut :
1. Dibuat struktur data yang sesuai dengan tabel tersebut.
2. Dibuat procedure masuk_data, di mana di dalamnya terdapat rumus
untuk mengisi field nilai akhir dan pemanggilan fungsi konversi ke nilai
huruf.
3. Dibuat frocedure cetak_data.
4. Dibuat fungsi untuk memperoleh nilai huruf.
Algoritma 7.3.a
function konversi_ke_huruf(input angka : real) : char
Deskripsi
if (angka<=20) then konversi_ke_huruf ← ‘E’
else if ((angka>20)and (angka <= 40)) then konversi_ke_huruf ← ‘D’
else if ((angka>40) and (angka <=60)) then konversi_ke_huruf ← ‘C’
else if ((angka>60) and (angka <=80)) then konversi_ke_huruf ← ‘B’
else konversi_ke_huruf ← ‘A’
endif
Algoritma 7.3.b.
procedure masuk_data(output mhs : mhs : array [1..20] of data; input n : integer)
Deklarasi
type data = record <
no : byte
NIM : string[8]
Nama : string[30]
Alamat : string[30]
Tgl_Lahir : tanggal >
i : integer
Deskripsi
for ← 1 to n do
with mhs[i] do
read(no)
read(nim)
read(nama)
read(ujian_mid)
read(ujian_akhir)
nilai_akhir ← (ujian_mid + ujian_akhir*2)3
nilai_huruf ← konversi_ke_huruf(nilai-akhir)
endwith
endfor
Translasi 7.3.
Bahasa Pascal
program data_mahasiswa;
uses wincrt;
type data = record
no : byte;
NIM : string[8]
Nama: string[20]
ujian_mid, ujian_akhir : integer
nilai_akhir : real;
nilai_huruf : char;
end;
mahasiswa = array [1..20] of data;
var data_mhs : mahasiswa;
n : integer,
function konversi_ke_huruf(angka : real) : char ;
begin
if(angka<=20) then konversi_ke_huruf : = ‘E’
else if ((angka>20) and (angka <= 40)) then konversi_ke_huruf := ‘D’
else if ((angka>40) and (angka <= 60)) then konversi_ke_huruf :=’C’
else if ((angka>60) and (angka <=80)) then konversi_ke_huruf :=’B’
else konversi_ke_huruf := ‘A’;
end;
procedure masuk_data(var mhs : mahasiswa; n ; integer);
var i : integer;
begin
for i: to n do
with mhs[i] do begin
write(‘No : ‘); readln(no);
wrire(‘Nim : ‘); readln(nim);
write(‘Nama : ‘); readln(nama);
write(‘Nama ujian mid : ‘); readln(ujian_mid);
write(‘Nilai ujian akhir : ‘); readln(ujian_akhir);
nilai_akhir := (ujian_mid + ujian_akhir*2)3;
nilai_huruf := konversi_ke_huruf(nilai_akhir);
end;
end;
procedure cetak_data(mhs ; mahasisiwa; n : integer);
var i : integer;
begin
for i:=1 to ndo
withmhs[i] do begin
writeln(‘No :’, no);
writeln(‘Nim :’, nim);
writeln(‘Nama :’, nama);
writeln(‘Nilai ujian mid :’, ujian_mid);
writeln(‘Nilai ujian akhir :’, ujian_akhir);
writeln(Nilai Akhir :’, nilai_akhir:4:2);
writeln(‘Nilai Huruf :’, nilai_huruf);
writeln(‘Tekan sepasi untuk melanjutkan … ‘);
writeln;
repeat until keypressed;
end;
end;
begin
write(‘Banyak data mahasisiwa : ‘); readln(n);
masuk_data(data-mhs, n);
cetak_data(data_mhs, n);
end.
Bahasa C
#include <stdio.h>
typedef struct {
int no;
char nim[8];
char nama[20];
int ujian_mid, ujian_akhir;
float nilai_akhir;
char nilai_huruf;
} data;
typedef data mahasiswa[20];
char konversi_ke_huruf(float angka)
{ if ((angka <= 20)) return ‘E’;
else if (((angka > 20) && (angka <= 40))) return ‘D’;
else if (((angka > 40) && (angka <= 60))) return ‘C’;
else if (((angka > 60) && (angka <= 80))) return ‘B’;
else return ‘A’;
}
void masuk_data(mahasiswa *mhs, int n)
{ int i;
for (i =0; i < n; i + +)
{ printf(“No : “); scanf(“%d”,&mhs[i]->no);
printf(“Nim : “);scanf(“%s”,mhs[i]->nim);
printf(“Nama : “);scanf(“%s”,mhs[i]->nama);
printf(“Nilai ujian mid : “);scan(“%d”,mhs[i]->ujian_mid);
printf(“Nilai ujian akhir : “);scan(“%d”,mhs[i]->ujian_akhir);
mhs[i]->nilai_akhir = (mhs[i]->ujian_mi + mhs[i]->ujian_akhir *2) 3.0;
mhs[i]->nilai_huruf = konversi_ke_huruf(mhs[i]->nilai_akhir);
void cetak_data(mahasiswa mhs, int n)
{ int i;
for (i = 0; < n; i + +)
{ printf(“No : %dn”,mhs[i].no);
printf(“Nim : %sn”,mhs[i].nim);
printf(“Nama : %sn”,mhs[i].nama);
printf(“Nilai ujian mid : %dn”,mhs[i].ujian_mid);
printf(“Nilai ujian akhir : %dn”,mhs[i].ujian_akhir);
Printf(“Nilai Akhir : %4.2fn”,mhs[i].nilai_akhir);
Printf(“Nilai Huruf :%cn”,mhs[i].nilai_huruf);
Printf(“n’);
}
}
main() {
mahasiswa data_mhs;
Int n;
printf(“Banyak data mahasiswa : “); scanf(“%d”,&n);
masuk_data(&data_mhs, n);
cetak_data(data_mhs, n);
return 0;
}
Contoh 7.4.
Buatlah algoritma untuk menghitung selisih dua waktu yang masing-masing
berformat jam:menit:detik.
Analisis :
Diasumsikan bahwa waktu yang terakhir lebih besar dari waktu awal.
Langkah :
1. Dibaca waktu awal dan waktu akhir
2. Konverensikan masing-masing waktu tersebut ke detik
3. Hitung selisih dari langkah 2
4. Konverensikan langkah 3 ke format jam:menit:detik
Algoritma 7.4.a
procedure konversi_ke_waktu(input det : integer,output d : waktu)
Deklarasi
type waktu = record
jam,menit,detik : integer;
end;
jam2 : integer;
Deskripsi
with d do
jam <- det div (60*60) { mendapatkan jam }
jam2 det mod (60*60)
menit <- jam2 div 60 { mendapatkan menit }
detik <- jam2 mod 60 { mendapatkan detik }
endwith
Algoritma 7.4.b.
function konversi_ke_detik(input d : waktu) : integer
Dekripsi
with d do
konversi_ke_detik ← jam*60*60 + menit*60 + detik
endwith
Algoritma 7.4.c
procedure selisih_waktu(input a, b : waktu; output selisih : waktu)
Deklarasi
temp1, temp2, beda : integer;
Deskripsi
temp1 ← konversi_ke_detik(a)
temp2 ← konversi_ke-detik(b)
beda ← temp2 - temp1
Konversi_ke_waktu(beda,selisih)
Translasi 7.4.
Bahasa Pascal Bahasa C
program selisih_dua_waktu;
uses wincrt;
type waktu = record
jam, menit, detik :
integer;
end;
var waktu1, waktu2 : waktu;
Beda_waktu : waktu;
#include <stdio.h>
typedef struct {
int jam, menit, detik;
} waktu;
void konversi_ke-waktu(int det, waktu
*d)
{ int jam2;
Contoh 7.5.
Buatlah algoritma untuk mengkonversikan koordinat polar menjadi koordinat
cartesius.
Analisis :
Konversi dari koordinat polar menjadi koordinat cartesius menggunakan rumus :
X = r*cos ( 𝜃)
Y = r*sin( 𝜃 )
Algoritma 7.5.
procedure konversi_ke_kartesius(input a : polar; output b : kartesius)
Deklarasi
type kartesius = record , x, y : real >
polar = record < r, teta : real >
Deskripsi
with a do
b.x <- r*cos(teta)
b.y <_ r*sin(teta)
endwith
Translasi 7.5.
Bahasa Pascal Bahasa C
program konversi_koordinat;
uses wincr;
type kartesius = recor
x, y : real;
end;
polar = record
r, teta : real;
end;
var asal : polar;
tujuan : kartesius;
derajat: real;
procedure konversi_ke_kartesius(a : polar;
var b : kartesius);
begin
#include <stdio.h>
#include <math.h>
typedef struct {
float x, y;
} kartesius;
typedef struct {
float r, teta;
} polar;
#define pi 3.14
void konversi_ke_kartesius(polar a, kartesius
*b)
{
b- >x = a.r *cos(a.teta);
with a do begin
b.x := r*cos(teta);
b.y := r*sin(teta);
end;
end;
b- >y = a.r*sin(a.teta);
}
main() {
polar asal;
kartesius tujuan;
float derajat;
begin
with asal do begin
write(‘nilai r : ‘); readln(r);
write(‘sudut : ‘); readln9derajat);
teta : = derajat*180pi;
end;
konversi_ke_kartesius(asal, tujuan);
with tujuan do begin
writeln(‘absis = ‘, x:4:2);
write(‘ordinat = ‘, y:4:2);
end;
end.
printf(“nilai r : “); scanf(“%f”,&asal.r);
printf(“sudut : “); scanf(“%f”,&derajat);
asal.teta = derajat * 180  pi ;
konversi_ke_kartesius(asal,&tujuan);
printf(“absis = %4.2fn”,tujuan.x);
printf(‘ordinat = %4.2f”,tujuan.y);
return 0;
}

More Related Content

PDF
01 02-pseudocode
PDF
Logika dan Pembuktian
PPT
DESKRIPSI DATA
PDF
PPTX
proposisi majemuk & Tautologi
PPTX
Kisi kisi uas struktur data
PDF
Persamaan diferensial
PPTX
Bab 4 aljabar boolean
01 02-pseudocode
Logika dan Pembuktian
DESKRIPSI DATA
proposisi majemuk & Tautologi
Kisi kisi uas struktur data
Persamaan diferensial
Bab 4 aljabar boolean

What's hot (20)

DOCX
Himpunan, Relasi & Fungsi, dan Logika Matematika
PDF
Met num 2
PPT
Pengenalan c++ bagian 3
DOCX
Tugas normalisasi imaika penjualan komputer
PPTX
Kalkulus sistem bilangan
PDF
Matematika Diskrit matriks relasi-dan_fungsi
PPTX
Materi 3 Finite State Automata
PDF
Program dan Flowchart Perkalian Matriks
PPTX
Kuasa lingkaran, titik kuasa, garis kuasa ppt
PDF
18. soal soal notasi sigma barisan- deret dan induksi matematika
PPTX
Metode numerik pertemuan 7 (interpolasi lagrange)
PPTX
Matematika Diskrit Relasi Rekursif
PDF
Kalkulus diferensial integral
PDF
Operasi biner
PPTX
Integral tak tentu dan integral tentu
PDF
Soal irisan kerucut dan pembahasannya
PPS
Bab 8. Fungsi Transenden ( Kalkulus 1 )
PDF
Pertemuan 9 Tree dan BinaryTree
PPTX
PPTX
Metode dan Strategi Pembuktian
Himpunan, Relasi & Fungsi, dan Logika Matematika
Met num 2
Pengenalan c++ bagian 3
Tugas normalisasi imaika penjualan komputer
Kalkulus sistem bilangan
Matematika Diskrit matriks relasi-dan_fungsi
Materi 3 Finite State Automata
Program dan Flowchart Perkalian Matriks
Kuasa lingkaran, titik kuasa, garis kuasa ppt
18. soal soal notasi sigma barisan- deret dan induksi matematika
Metode numerik pertemuan 7 (interpolasi lagrange)
Matematika Diskrit Relasi Rekursif
Kalkulus diferensial integral
Operasi biner
Integral tak tentu dan integral tentu
Soal irisan kerucut dan pembahasannya
Bab 8. Fungsi Transenden ( Kalkulus 1 )
Pertemuan 9 Tree dan BinaryTree
Metode dan Strategi Pembuktian
Ad

Viewers also liked (19)

DOC
modul algoritma Bab 3
PPTX
Konsep algoritma pemograman
PDF
4 fungsi if
PDF
Algoritma dan pemrograman; teori dan praktik dalam pascal edisi kedua normal ...
PDF
Bahan ajar algo
DOCX
Penyelesaian Akar-akar Persamaan Kuadrat Menggunakan Program QBasic
DOCX
makalah tentang algoritma lengkap
PDF
Buku tutorial pemprograman c
PPTX
Materi halogen kimia unsur
DOCX
Productos
PDF
Nagesh_G
PDF
PPTX
Ulticon builders donates bunkhouse to yolanda victims
PDF
Cue 15 transformative leadership preso
PDF
Sim ci Simulating Critical Infrastructures
PDF
NGỌC TRINH VỪA SỞ HỮU 2 CĂN SUNVIEW TOWN. BẠN CÓ MUỐN LÀM HÀNG XÓM VỚI CÔ ẤY ...
PPT
Origin of Life: by Chance or by Design?
PDF
Firenze liceoscientifico gramsci
PDF
Islam Banjar Islam Nusantara
modul algoritma Bab 3
Konsep algoritma pemograman
4 fungsi if
Algoritma dan pemrograman; teori dan praktik dalam pascal edisi kedua normal ...
Bahan ajar algo
Penyelesaian Akar-akar Persamaan Kuadrat Menggunakan Program QBasic
makalah tentang algoritma lengkap
Buku tutorial pemprograman c
Materi halogen kimia unsur
Productos
Nagesh_G
Ulticon builders donates bunkhouse to yolanda victims
Cue 15 transformative leadership preso
Sim ci Simulating Critical Infrastructures
NGỌC TRINH VỪA SỞ HỮU 2 CĂN SUNVIEW TOWN. BẠN CÓ MUỐN LÀM HÀNG XÓM VỚI CÔ ẤY ...
Origin of Life: by Chance or by Design?
Firenze liceoscientifico gramsci
Islam Banjar Islam Nusantara
Ad

Similar to modul algoritma Bab 7 record (20)

DOCX
modul algoritma Bab 2
PDF
Program Pascal
DOCX
modul algoritma Bab 5
DOC
modul algoritma Bab 6
PPTX
listiati univ bung hata (1110013211051) Bahasa pemrograman pascal
PDF
Modul pascal lengkap
PDF
Manipulasi string
PDF
Pascal - Pendahuluan2.txt - Notepad.pdf
PDF
Struktur data chapter_04
PDF
Penyelesaian persamaan non linier
PDF
Uts alpro ii
DOCX
Tipe data
PDF
Alpro referensi
DOCX
Laporan hasil praktikum modul ii tipe data
PDF
Materi Pelajaran Program Pascal
PPTX
PDF
Pascal - Array.txt - Notepad.pdf
PDF
latkisikisi_uas_dasar_pemrograman_untuk_pemula.pdf
PPTX
0.3 Algoritma dan Pemrogramman Seleksi.pptx
modul algoritma Bab 2
Program Pascal
modul algoritma Bab 5
modul algoritma Bab 6
listiati univ bung hata (1110013211051) Bahasa pemrograman pascal
Modul pascal lengkap
Manipulasi string
Pascal - Pendahuluan2.txt - Notepad.pdf
Struktur data chapter_04
Penyelesaian persamaan non linier
Uts alpro ii
Tipe data
Alpro referensi
Laporan hasil praktikum modul ii tipe data
Materi Pelajaran Program Pascal
Pascal - Array.txt - Notepad.pdf
latkisikisi_uas_dasar_pemrograman_untuk_pemula.pdf
0.3 Algoritma dan Pemrogramman Seleksi.pptx

More from Eko Widyanto Napitupulu (11)

PDF
klasifikasi-komputer
PDF
Soal un paket b 2009
PDF
Indonesian edition
DOC
modul algoritma Bab 4
DOCX
modul algoritma Bab 1
PPTX
Presentasi pkn "HAM"
PPTX
Resistor paralel
PPTX
pengertian ihsan dan masalah ihsan
PDF
perangkat-keras
PDF
perangkat-lunak
DOCX
Fungsi otak manusia
klasifikasi-komputer
Soal un paket b 2009
Indonesian edition
modul algoritma Bab 4
modul algoritma Bab 1
Presentasi pkn "HAM"
Resistor paralel
pengertian ihsan dan masalah ihsan
perangkat-keras
perangkat-lunak
Fungsi otak manusia

Recently uploaded (17)

PPTX
PRESNTASI pembangunan perumahan komersil dua lantai
PDF
811848831-PPT-TES-DESKRIPShhhhhhhhhI.pdf
PPTX
Flowchart Pengaplikasian Sistem Arduino.pptx
DOCX
PROPOSAL PENGARUH PEMBERIAN MIKRONUTRIEN TERHADAP PENINGKATAN INDEKS MASA TUB...
PPTX
Materi Kesiapan Tahapan Pemungutan dan Penghitungan Suara Pemilihan Ulang Tah...
PDF
GERUDUK MJKN aplikasi mobile JKN persentation
PPTX
Introduction FastAPI for Professional and Student
PDF
c3oYi7NNpW3omVenymVtXLtqfSi2hzugUlVYbGlQ.pdf
PPTX
ANALISIS DATA FUNGSI INFORMATIKA SMP.pptx
DOCX
proposal nurul 2.docx Fix dokumen yang penting
PDF
6754aa176b39b (1).pdf data analisis acara
PPTX
EFEKTIVITAS EKSTRAK DAUN INDIGOFERA.pptx
PDF
LK - SIMULASI SIKLUS INKUIRI KOLABORATIF.pdf
PPTX
Pelatihan_Model_Pembinaan_Gen_Z_Dasar_Menengah.pptx
PPTX
Gagal Ginjal Akut GHINA SELVIRA .pptx
PPT
Modul-Projek-JAJANAN-PASAR-YANG-MENGHASILKAN-RUPIAH-Fase-C.ppt
PPTX
PERENCANAAN MEP PERUM.MULTI CIPTA PERMAI_Type 36.pptx
PRESNTASI pembangunan perumahan komersil dua lantai
811848831-PPT-TES-DESKRIPShhhhhhhhhI.pdf
Flowchart Pengaplikasian Sistem Arduino.pptx
PROPOSAL PENGARUH PEMBERIAN MIKRONUTRIEN TERHADAP PENINGKATAN INDEKS MASA TUB...
Materi Kesiapan Tahapan Pemungutan dan Penghitungan Suara Pemilihan Ulang Tah...
GERUDUK MJKN aplikasi mobile JKN persentation
Introduction FastAPI for Professional and Student
c3oYi7NNpW3omVenymVtXLtqfSi2hzugUlVYbGlQ.pdf
ANALISIS DATA FUNGSI INFORMATIKA SMP.pptx
proposal nurul 2.docx Fix dokumen yang penting
6754aa176b39b (1).pdf data analisis acara
EFEKTIVITAS EKSTRAK DAUN INDIGOFERA.pptx
LK - SIMULASI SIKLUS INKUIRI KOLABORATIF.pdf
Pelatihan_Model_Pembinaan_Gen_Z_Dasar_Menengah.pptx
Gagal Ginjal Akut GHINA SELVIRA .pptx
Modul-Projek-JAJANAN-PASAR-YANG-MENGHASILKAN-RUPIAH-Fase-C.ppt
PERENCANAAN MEP PERUM.MULTI CIPTA PERMAI_Type 36.pptx

modul algoritma Bab 7 record

  • 1. BAB VII RECORD Record (rekaman) tersusun atas beberapa medan (field). Setiap field mempunyai tipe sendiri, baik tipe dasar yang sudah ada atau tipe bentukan. Setiap record merupakan satu kesatuan yang mempunyai pengertian yang utuh. A. Mendefinisikan Record Selain merupakan satu pengertian yang utuh, record dapat pula merepresentasikan sebuah table. Algoritmik Pascal C Type titik=record< x,y:integer > type titik=record x,y:integer, end; Typedef struct int x,y; } titik; Untuk table, nama field record di ambil dari kepala kabel. Misalnya diberikan table seperti berikut ini: No. NIM Nama Alamat Tanggal lahir Defenisi record yang sesuai adalah: Algoritmik Pascal C type tanggal=record < dd : integer mm : integer yy : integer > type tanggal=record dd : integer; mm : integer; yy : integer: end; typedef struct { int dd, mm, yy; } tanggal; type data=record< no : byte NIM : string[8] Nama : string[30] Alamat : string[30] Tgl_Lahir : tanggal > type data=record no : byte; NIM : string[8]; Nama : string[30]; Alamat : string[30]; Tgl_Lahir : tanggal; end; typedef struct { int no; char NIM[8]; char Nama[30]; char Alamat[30]; tanggal Tgl_Lahir, } data;
  • 2. B. Cara Mengakses Elemen Record Cara mengakses elemen record adalah dengan menggunakan operator titik (.). aturannya nama variabel bertipe record di ikuti tanda titik kemudian baru field yang dikehendaki. Misalnya akan diinisialisasikan titik A sebagai titik asal (0,0) : Algoritma Pascal C Deklarasi A : titik var A : titik; Struct titik A; Deskripsi A.x ← 0 A.x ← 0 A.x:=0; A.y:=0; A.x=0; A.y=0; Contoh 7.1. Buatlah algoritma untuk menentukan jarak dari 2 titik, a(x1, y2) dan (x2, y2). Analisis: Posisi titik A(x1, y1) dan B(x2, y2) secara umum dapat digambarkan sebagai berikut : r B(x2, y2) A((𝑥1 − 𝑦1) (y2-y1) (𝑥2 − 𝑥1) Dengan rumus Phytagoras, maka diperoleh rumus jarak dua titik adalah : 𝑟 = √ (𝑥2 − 𝑥1)2 + (𝑦2 – 𝑦1)2 Algoritma 7.1. Algoritma menentukan jarak 2 titik {diketahui koordinat A(x1, y1) dan B(x2, y2), dicari jarak r dari A ke B } Deklarasi type titik = record< x,y : integer; > A,B : titik jarak : real Deskripsi read(A.x, A.y) read(B.x, B.y) jarak ← sqrt((sqr(A.x-B.x)+(sqr(A.y-B.y)))) write(jarak)
  • 3. Translasi 7.1. Bahasa Pascal Bahasa C program Panjang_Garis; uses wincrt; type titik=record x, y : integer; end; var A,B : titik; jarak: real; begin writeln (‘Masukkan koordinat titik A’); write (Nilai absis x1 :’); readln(A.x); write (Nilai ordinat y1 : ‘); readln(A.y); writeln (‘Masukan koordinat titik B’); write (Nilai absis x2 : ‘); readln(B.x); write (Nilai ordinat y2 : ‘) readln(B.y); jarak := sqrt((sqr(A.x-B.x)+(sqr(A.y- B.y)))); write (Panjang Garis AB = ‘jarak:4:2); end. #include <stdio.h> #include <math.h> typedef struct { int x, y; } titik; main() { titik A,B; float jarak; printf(“Masukkan koordinat titik An”); printf(“Nilai absis x1 :”); scanf(“%d”,&A.x); printf(“Nilai ordinat y1 :”); scanf(“%d”,&A.y); printf(“Masukkan koordinat titik Bn); printf(Nilai absis x2 :”); scanf(“%d”,&B.x); printf(Nilai ordinat y2 :”); scanf(“%d”,&B.y); jarak = sqrt((pow((A.x – B.x),2) + (pow((A.y – B.y),2)))); printf(“Panjang Garis AB = %4.2f” jarak); return 0; } Contoh 7.2. Buatlah algoritma untuk menjumlah 2 bilangan kompleks. Analisis : Bilangan kompleks tersusun atas bagian realmdan bagian imajiner berbentuk a + b bi, di mana i = √−1 . Misalnya bilangan pertama adalah bil1 = a1 + b1.i Dan bil2 = a2 + b2.i maka hasil jumlah bil1 dan bilangan 2 adalah : bil1 + bil2=(a1+a2) + (b1+b2)i Algoritma 7.2. procedure jumlah_bilangan_kompleks(input x, y : kompleks ; output jumlah : kompleks) Deklarasi type kompleks =record < ,a, b : real > Deskripsi jumlah.a ← x.a + y.a jumlah.b ← x.b + y.b
  • 4. Translasi 7.2. Bahasa pascal Bahasa C program Penjumlahan_Bilangan_Kompleks; user wincrt; type kompleks = record a, b : real; end, var bil1, bil2 : kompleks; total : kompleks; proceure jumlah_bilangan_kompleks (x,y: kompleks ;var jumlah : kompleks); begin jumlah.a := x.a + y.a; jumlah.b := x.b + y.b; end; begin writeln (‘Bilangan kompleks bil1‘); write (‘Nilai bagian real bil1 : ‘_; readln(bil1.a); write (‘Nilai bagian imajiner bil1 : ‘); readln(bil1.b); writeln (‘Bilangan kompleks bil2’); write (‘Nilai bagian real bil2 : ‘); readln(bil2.a); write (‘Nilai bagian imajiner bil2 : ‘); readln(bil2.b); jumlah_bilangan_kompleks(bil1, bil2, total); if (total.b < 0) then write (‘Hasil =’,total.a:4:2,’ i’) else write (‘Hasil=’,total.a:4:2,’+’,total.b:4:2,’I’); end. #include <stdio.h> typedef struct { float a, b; } kompleks; void jumlah_bilangan_kompleks (kompleks x,kompleks y,kompleks *jumlah) { jumlah- >a = x.a + y.a; Jumlah- > = x.b + y.b; } main() { kompleks bil1, bil2; kompleks total; printf(“Bilangan kompleks bil1n”); printf(“Nilai bagian real bil1 :”); scanf(“%f”,&bil1.a); printf(“Nilai bagian imajiner bil1 : “); scanf(“%f”,&bil1.a); printf(“Bilangan kompleks bil2n”); printf(“Nilai bagian real bil2 : “); scanf(“f”,&bil2.a); printf(“Nilai bagian imajiner bil2 : “); scanf(“%f”,&bil2.b); jumlah_bilangan_kompleks(bil1,bil2,&total); if ((total.b < 0)) printf(“Hasil = %4.2f%4.2f i”,total.a,total.b); else printf(“Hasil= %4.2 + %4.2f i”,total.a,total.b); return 0; } Catatan : Untuk passing parameter dalam bahasa C yang menggunakan call by refference (yaitu menggunakan pointer *), cara mengakses fieldnya tidak menggunakan operator titik (.) tetapi menggunakan operator panah (->).
  • 5. Contoh 7.3. Buatlah daftar nilai mahasiswa didasarkan pada table berikut ini. No. NIM Nama Ujian Nilai Mid Akhir Akhir Huruf 1. 990510001 Khoirul anam 80 95 90 A 2. 990510002 Siti julaiha 45 30 35 D 3. 990510003 Nur rohmah 50 50 50 C 4. 990510004 Agus Muhammad 90 60 70 B 5. 990510005 Nur Iskandar 40 10 20 E Dengan ketentuan : 1. Nilai akhir diperoleh dari rumus (Ujian Mid + 2xUjian Akhir)3. 2. Nilai huruf di peroleh dengan : Range Nilai Nilai Huruf 0..20 E 21..40 D 41..60 C 61..80 B 81..100 A Analisis : Masalah di atas perlu dipecah menjadi beberapa subprogram untuk mempermudah penyelesaian. Tahapannya adalah sebagai berikut : 1. Dibuat struktur data yang sesuai dengan tabel tersebut. 2. Dibuat procedure masuk_data, di mana di dalamnya terdapat rumus untuk mengisi field nilai akhir dan pemanggilan fungsi konversi ke nilai huruf. 3. Dibuat frocedure cetak_data. 4. Dibuat fungsi untuk memperoleh nilai huruf. Algoritma 7.3.a function konversi_ke_huruf(input angka : real) : char Deskripsi if (angka<=20) then konversi_ke_huruf ← ‘E’ else if ((angka>20)and (angka <= 40)) then konversi_ke_huruf ← ‘D’ else if ((angka>40) and (angka <=60)) then konversi_ke_huruf ← ‘C’ else if ((angka>60) and (angka <=80)) then konversi_ke_huruf ← ‘B’ else konversi_ke_huruf ← ‘A’ endif
  • 6. Algoritma 7.3.b. procedure masuk_data(output mhs : mhs : array [1..20] of data; input n : integer) Deklarasi type data = record < no : byte NIM : string[8] Nama : string[30] Alamat : string[30] Tgl_Lahir : tanggal > i : integer Deskripsi for ← 1 to n do with mhs[i] do read(no) read(nim) read(nama) read(ujian_mid) read(ujian_akhir) nilai_akhir ← (ujian_mid + ujian_akhir*2)3 nilai_huruf ← konversi_ke_huruf(nilai-akhir) endwith endfor Translasi 7.3. Bahasa Pascal program data_mahasiswa; uses wincrt; type data = record no : byte; NIM : string[8] Nama: string[20] ujian_mid, ujian_akhir : integer nilai_akhir : real; nilai_huruf : char; end; mahasiswa = array [1..20] of data; var data_mhs : mahasiswa; n : integer, function konversi_ke_huruf(angka : real) : char ; begin if(angka<=20) then konversi_ke_huruf : = ‘E’ else if ((angka>20) and (angka <= 40)) then konversi_ke_huruf := ‘D’ else if ((angka>40) and (angka <= 60)) then konversi_ke_huruf :=’C’ else if ((angka>60) and (angka <=80)) then konversi_ke_huruf :=’B’ else konversi_ke_huruf := ‘A’; end; procedure masuk_data(var mhs : mahasiswa; n ; integer); var i : integer;
  • 7. begin for i: to n do with mhs[i] do begin write(‘No : ‘); readln(no); wrire(‘Nim : ‘); readln(nim); write(‘Nama : ‘); readln(nama); write(‘Nama ujian mid : ‘); readln(ujian_mid); write(‘Nilai ujian akhir : ‘); readln(ujian_akhir); nilai_akhir := (ujian_mid + ujian_akhir*2)3; nilai_huruf := konversi_ke_huruf(nilai_akhir); end; end; procedure cetak_data(mhs ; mahasisiwa; n : integer); var i : integer; begin for i:=1 to ndo withmhs[i] do begin writeln(‘No :’, no); writeln(‘Nim :’, nim); writeln(‘Nama :’, nama); writeln(‘Nilai ujian mid :’, ujian_mid); writeln(‘Nilai ujian akhir :’, ujian_akhir); writeln(Nilai Akhir :’, nilai_akhir:4:2); writeln(‘Nilai Huruf :’, nilai_huruf); writeln(‘Tekan sepasi untuk melanjutkan … ‘); writeln; repeat until keypressed; end; end; begin write(‘Banyak data mahasisiwa : ‘); readln(n); masuk_data(data-mhs, n); cetak_data(data_mhs, n); end. Bahasa C #include <stdio.h> typedef struct { int no; char nim[8]; char nama[20]; int ujian_mid, ujian_akhir; float nilai_akhir; char nilai_huruf; } data; typedef data mahasiswa[20];
  • 8. char konversi_ke_huruf(float angka) { if ((angka <= 20)) return ‘E’; else if (((angka > 20) && (angka <= 40))) return ‘D’; else if (((angka > 40) && (angka <= 60))) return ‘C’; else if (((angka > 60) && (angka <= 80))) return ‘B’; else return ‘A’; } void masuk_data(mahasiswa *mhs, int n) { int i; for (i =0; i < n; i + +) { printf(“No : “); scanf(“%d”,&mhs[i]->no); printf(“Nim : “);scanf(“%s”,mhs[i]->nim); printf(“Nama : “);scanf(“%s”,mhs[i]->nama); printf(“Nilai ujian mid : “);scan(“%d”,mhs[i]->ujian_mid); printf(“Nilai ujian akhir : “);scan(“%d”,mhs[i]->ujian_akhir); mhs[i]->nilai_akhir = (mhs[i]->ujian_mi + mhs[i]->ujian_akhir *2) 3.0; mhs[i]->nilai_huruf = konversi_ke_huruf(mhs[i]->nilai_akhir); void cetak_data(mahasiswa mhs, int n) { int i; for (i = 0; < n; i + +) { printf(“No : %dn”,mhs[i].no); printf(“Nim : %sn”,mhs[i].nim); printf(“Nama : %sn”,mhs[i].nama); printf(“Nilai ujian mid : %dn”,mhs[i].ujian_mid); printf(“Nilai ujian akhir : %dn”,mhs[i].ujian_akhir); Printf(“Nilai Akhir : %4.2fn”,mhs[i].nilai_akhir); Printf(“Nilai Huruf :%cn”,mhs[i].nilai_huruf); Printf(“n’); } } main() { mahasiswa data_mhs; Int n; printf(“Banyak data mahasiswa : “); scanf(“%d”,&n); masuk_data(&data_mhs, n); cetak_data(data_mhs, n); return 0; }
  • 9. Contoh 7.4. Buatlah algoritma untuk menghitung selisih dua waktu yang masing-masing berformat jam:menit:detik. Analisis : Diasumsikan bahwa waktu yang terakhir lebih besar dari waktu awal. Langkah : 1. Dibaca waktu awal dan waktu akhir 2. Konverensikan masing-masing waktu tersebut ke detik 3. Hitung selisih dari langkah 2 4. Konverensikan langkah 3 ke format jam:menit:detik Algoritma 7.4.a procedure konversi_ke_waktu(input det : integer,output d : waktu) Deklarasi type waktu = record jam,menit,detik : integer; end; jam2 : integer; Deskripsi with d do jam <- det div (60*60) { mendapatkan jam } jam2 det mod (60*60) menit <- jam2 div 60 { mendapatkan menit } detik <- jam2 mod 60 { mendapatkan detik } endwith Algoritma 7.4.b. function konversi_ke_detik(input d : waktu) : integer Dekripsi with d do konversi_ke_detik ← jam*60*60 + menit*60 + detik endwith Algoritma 7.4.c procedure selisih_waktu(input a, b : waktu; output selisih : waktu) Deklarasi temp1, temp2, beda : integer; Deskripsi temp1 ← konversi_ke_detik(a) temp2 ← konversi_ke-detik(b) beda ← temp2 - temp1 Konversi_ke_waktu(beda,selisih)
  • 10. Translasi 7.4. Bahasa Pascal Bahasa C program selisih_dua_waktu; uses wincrt; type waktu = record jam, menit, detik : integer; end; var waktu1, waktu2 : waktu; Beda_waktu : waktu; #include <stdio.h> typedef struct { int jam, menit, detik; } waktu; void konversi_ke-waktu(int det, waktu *d) { int jam2; Contoh 7.5. Buatlah algoritma untuk mengkonversikan koordinat polar menjadi koordinat cartesius. Analisis : Konversi dari koordinat polar menjadi koordinat cartesius menggunakan rumus : X = r*cos ( 𝜃) Y = r*sin( 𝜃 ) Algoritma 7.5. procedure konversi_ke_kartesius(input a : polar; output b : kartesius) Deklarasi type kartesius = record , x, y : real > polar = record < r, teta : real > Deskripsi with a do b.x <- r*cos(teta) b.y <_ r*sin(teta) endwith Translasi 7.5. Bahasa Pascal Bahasa C program konversi_koordinat; uses wincr; type kartesius = recor x, y : real; end; polar = record r, teta : real; end; var asal : polar; tujuan : kartesius; derajat: real; procedure konversi_ke_kartesius(a : polar; var b : kartesius); begin #include <stdio.h> #include <math.h> typedef struct { float x, y; } kartesius; typedef struct { float r, teta; } polar; #define pi 3.14 void konversi_ke_kartesius(polar a, kartesius *b) { b- >x = a.r *cos(a.teta);
  • 11. with a do begin b.x := r*cos(teta); b.y := r*sin(teta); end; end; b- >y = a.r*sin(a.teta); } main() { polar asal; kartesius tujuan; float derajat; begin with asal do begin write(‘nilai r : ‘); readln(r); write(‘sudut : ‘); readln9derajat); teta : = derajat*180pi; end; konversi_ke_kartesius(asal, tujuan); with tujuan do begin writeln(‘absis = ‘, x:4:2); write(‘ordinat = ‘, y:4:2); end; end. printf(“nilai r : “); scanf(“%f”,&asal.r); printf(“sudut : “); scanf(“%f”,&derajat); asal.teta = derajat * 180 pi ; konversi_ke_kartesius(asal,&tujuan); printf(“absis = %4.2fn”,tujuan.x); printf(‘ordinat = %4.2f”,tujuan.y); return 0; }