Anda di halaman 1dari 26

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/331862346

Modul Algoritma dan Struktur Data 2

Book · March 2019

CITATIONS READS

0 4,836

1 author:

Jufriadif Naam
Universitas Putra Indonesia YPTK
57 PUBLICATIONS   170 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Edge Detection on Objects of Medical Image with Enhancement multiple Morphological Gradient Method View project

All content following this page was uploaded by Jufriadif Naam on 19 March 2019.

The user has requested enhancement of the downloaded file.


Modul Algoritma dan Struktur Data 2 Hal. 1
PERANCANGAN PROGRAM FILE BERTYPE

1. Memahami Masalah
Dalam langkah awal untuk merancang suatu program komputer, terlebih dahulu harus
diketahui masalah apa yang akan dibuatkan programnya. Masalah dapat berupa problematik
yang terjadi dalam suatu pengolahan data untuk menghasilkan suatu informasi. Selain itu,
masalah juga dapat diketahui dengan cara, bagaimana suatu gambaran bentuk layout dari suatu
laporan atau informasi yang akan dihasilkan.
Langkah kedua adalah memahami apa saja proses terhadap data yang terjadi untuk
menghasilkan informasi tersebut. Analisis dimulai dari pendefinisian data sampai dengan
menyajikan nilai yang ditampung oleh data-data tersebut. Pemrosesan ini dapat dikelompokan
menjadi 2 bagian pokok, yaitu :
- Bagaimana mendapatkan nilai untuk setiap data.
- Proses logika pengolahan data.
Untuk mendapatkan nilai dari setiap data yang ada, dapat dilakukan dengan
beberapa cara, seperti :
- Memasukan nilai dari media input komputer.
- Melakukan pemindahan nilai dari data yang sudah mempunyai nilai atau
memindahkan nilai tertentu kedalam suatu data (move).
- Melakukan pengisian data dengan melakukan proses aritmetik (assignment).
Memasukan data melalui media input komputer dapat dilakukan dengan
beberapa cara :
- Menginputkan nilai dari keyboard.
- Membaca data melalui media penyimpanan (Disk).
Pemrosesan ini terjadi pada tahap input dalam suatu program, dan data-data yang
mendapatkan nilai dengan cara ini disebut dengan data input.
Namun tidak semua data yang mendapatkan nilainya dengan menginputkan dari
keyboard atau membaca data dari disk di kategorikan kedalam kelompok data input, tetapi ada
data tertentu yang dimasukan kedalam kategori data output, yaitu data semu seperti yang telah
dijelaskan diatas pada bab I.
Cara kedua untuk mendapatkan nilai data adalah proses pemindahan nilai (move).
Pemrosesan ini terjadi pada tahap proses dalam sebuah program, dimana data yang
mendapatkan nilai dengan cara ini dikategorikan kedalam data-data output. Begitu juga dengan
cara pemberian nilai (assignment).
Selain dari pengisian nilai, proses logika juga merupakan analisa penting didalam
pengolahan data, dimana dengan proses logika dapat menghasilkan pembagian proses dan
pengolahan data. Pembagian proses dapat secara penyeleksian (selection),
pengelompokan proses (procedure), urut (sequential) dan perulangan (loop).
Dalam penyeleksian akan terjadi percabangan proses berdasarkan kondisi
(decision) tertentu. Pada pengolahan data yang mencakup batasan yang besar akan memiliki
persyaratan proses yang banyak pula, maka proses ini dibagi ke dalam sub-sub proses
tertentu berdasarkan syarat-syarat tertentu. Di dalam suatu program tidak semua sub tersebut
yang dikerjakan, tetapi hanya sub-sub yang memenuhi syarat saja yang dikerjakan.
Pengelompokan proses pengolahan data dibagi kedalam kelompok yang lebih
besar dibandingkan dengan selection, dimana setiap 1 kelompok mempunyai satu tujuan
tertentu untuk mendukung proses pengolahan data secara keseluruhan. Kelompok-kelompok ini
merupakan bagian atau pecahan dari pengolahan data yang besar.
Modul Algoritma dan Struktur Data 2 Hal. 2
Proses yang urut (sequential) adalah proses yang sistematis mulai dari mendapatkan nilai
data input sampai diolahnya data tersebut untuk mendapatkan hasil sebagai nilai data output.
Sedangkan perulangan (loop) adalah proses pengolahan data yang dikerjakan secara berulang-
ulang atau lebih dari 1 (satu) kali.
Untuk menerapkan analisis diatas dapat dilihat pada contoh pertama berikut, yaitu
membuat program Kartu Hasil Studi Mahasiswa pada semester tertentu .

Bentuk layout :

Universitas Putra Indonesia YPTK Padang


LAPORAN HASIL STUDI SISWA
=============================================================================
=
Nobp / Nama / Kelas : 9999999999999999 / x-------------------x / xxx
-----------------------------------------------------------------------------
-
| No| Kode | Mata Kuliah | H-Nil | SKS | Mutu | SKSxMutu | Keterangan |
-----------------------------------------------------------------------------
-
| 99| xxxxx | xxxxxxxxxxxxx | x | 9 | 9 | 99 | xxxxxx |
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
-----------------------------------------------------------------------------
-
| Jumlah | 99 | 999 |
-----------------------------------------------------------------------------
-
Indeks Perestasi = 9,99
SKS Yad = 99

Proses yang terjadi :


- No = No + 1
- Jika nilai >=80, maka H-Nil = ‘A’
Jika nilai >=65, maka H-Nil = ‘B’
Jika nilai >=55, maka H-Nil = ‘C’
Jika nilai >=40, maka H-Nil = ‘D’
Jika nilai >=0, maka H-Nil = ‘E’
- Jika Nilai = 'A' maka Mutu = 4,
Jika Nilai = 'B' maka Mutu = 3,
Jika Nilai = 'C' maka Mutu = 2,
Jika Nilai = 'D' maka Mutu = 1,
Jika Nilai = 'E' maka Mutu = 0
- Jika Nilai = 'A' maka Keterangan = 'Terpuji',
Jika Nilai = 'B' maka Keterangan = 'Baik',
Jika Nilai = 'C' maka Keterangan = 'Cukup',
Jika Nilai = 'D' maka Keterangan = 'Kurang',
Jika Nilai = 'E' maka Keterangan = 'Gagal'
- Jumlah SKS = Jumlah SKS + SKS
- SKSxMutu = Sks * Mutu
- Jumlah SKSxMutu = Jumlah SKSxMutu + SKSxMutu
- Indeks Prestasi = Jumlah SKSxMutu / Jumlah SKS
Jika Indeks Prestasi > 3,25 maka SKS Yad = 24,
Jika Indeks Prestasi > 2,74 maka SKS Yad = 21,
Jika Indeks Prestasi > 2,00 maka SKS Yad = 18,
Jika Indeks Prestasi > 1,50 maka SKS Yad = 15
Jika Indeks Prestasi > 0,00 maka SKS Yad = 12

Pada contoh diatas merupakan prosedur pengolahan data berbentuk output


atau tahap output. Dalam suatu pengolahan data tidak akan ada output apabila tidak ada tahap
input, sebab input dibutuhkan untuk proses menghasilkan informasi. Konsep dari pengolahan
ini harus disesuaikan dengan pengolahan data yang ada pada sistem komputer, yaitu :
Modul Algoritma dan Struktur Data 2 Hal. 3

TAHAP INPUT ===> TAHAP PROSES ====> TAHAP OUTPUT

Maka pada contoh ini memiliki tahap input, dimana di dalam logika pengolahan data berada dalam keadaan
tersembunyi.

Contoh kedua, yaitu Entri Nilai Pascal


Bentuk Layout
ENTRI NILAI ALGORITMA dan STRUKTUR DATA
=======================================

Nomor BP = xxxxxxxx
Nama Mahasiswa = x------------------------x
Kelas = xx
Nilai Tugas = 999
Nilai Quiz = 999
Nilai Mid Semster = 999
Nilai Ujian Akhir = 999
Nilai Akhir = 999,99
Nilai Bobot = x
Keterangan = xxxxxxxxxx

Masih ada data [Y/T] = x

Proses :
- Nilai Ujian Akhir = (10% * Nilai Tugas) + (15% * Nilai Quiz) + (35% * Nilai Mid
Semester) + (40% * Nilai Ujian Akhir).
- Jika Nilai Akhir > 79,99 maka Nilai Bobot = 'A'; Keterangan = ' Terpuji',
Jika Nilai Akhir > 64,99 maka Nilai Bobot= 'B'; Keterangan = 'Baik',
Jika Nilai Akhir > 54,99 maka Nilai Bobot = 'C'; Keterangan = 'Cukup',
Jika Nilai Akhir > 39,99 maka Nilai Bobot = 'D'; Keterangan = 'Kurang',
Jika Nilai Akhir > 0,00 maka Nilai Bobot = 'E'; Keterangan = 'Gagal'.
- Jika masih ada data maka program diulang dari awal.

Pada pengolahan data ini merupakan pengolahan data input yang diproses
menjadi data output, sehingga dalam permasalahan sudah jelas tahap-tahap pengolahan yang
terjadi. Ini dapat dilihat dari data yang tidak hasil proses (tahap proses) diberi tempat untuk
mengisikan nilai pada deskripsi item yang sudah disediakan didalam satu informasi laporan.
Kedua contoh diatas, pada bagian proses dapat dilihat bagaimana logika pembagian
proses pengolahan datanya, ada yang memakai selection (jika), urut (penjumlahan
suatu nilai), prosedur (tahap input, tahap proses, tahap output), dan perulangan (selagi masih
ada data dan satu data mahasiswa mempunyai banyak data matakuliah). Juga untuk
mendapatkan nilai-nilai dari data tersebut mempunyai proses yang jelas, apakah diinputkan dari
keyboard atau membaca dari disk untuk data yang tidak mendapatkan nilai dari tahap proses
tertentu, atau mengalami tahap proses tertentu, seperti input nama mahasiswa atau
SksxMutu = Sks * Mutu.

2. Identifikasi Field Data


Langkah kedua dalam menganalisa pendahuluan masalah adalah melakukan
pengindentifikasian dan pendaftaran data yang ada dalam laporan suatu informasi. Data yang
diidentifikasikan tersebut merupakan item-item yang akan diisi dengan nilai atau yang akan
menampilkan sesuatu nilai, baik itu nilai numerik atau nilai string. Dalam suatu laporan
biasanya item tersebut dikenal dengan huruf x (untuk string) atau 9 (untuk numerik).
Pendaftaraan harus dilakukan untuk seluruh item yang mempunyai deskripsi
(keterangan) yang mengenal suatu nilai item, yang biasanya terletak diawal atau diatas nilai
yang akan diisi atau ditampilkan. Identifikasi data dari contoh 1 diatas adalah sebagai berikut :
- Nama mahasiswa
- Nomor BP mahasiswa
- Kelas Mahasiswa
- Nomor Urut
Modul Algoritma dan Struktur Data 2 Hal. 4
- Kode mata kuliah
- Nama mata kuliah
- Nilai bobot per mata kuliah
- SKS per mata kuliah
- Nilai mutu per mata kuliah
- Nilai mutu kali sks per mata kuliah
- Keterangan per mata kuliah
- Jumlah sks yang diambil oleh 1 orang mahasiswa
- Jumlah sks kali mutu
- Indeks prestasi yang diperoleh
- Dan Jumlah sks yang dapat diambil pada semester berikutnya.
Identifikasi data dari contoh ke-2 diatas adalah sebagai berikut :
- Nomor BP mahasiswa
- Nama mahasiswa
- Kelas mahasiswa
- Nilai tugas
- Nilai quiz
- Nilai mid semester
- Nilai ujian akhir semester
- Nilai akhir yang diperoleh
- Nilai Bobot ('A', 'B', 'C', 'D', 'E')
- Dan Keterangangan
- Masih ada data.

3. Menentukan Variabel / Nama Field


Variabel adalah suatu data yang mempunyai nilai dan setiap variabel mempunyai
nilai yang berubah-ubah sesuai dengan yang diinputkan (pada tahap input) dan proses
yang terjadi (tahap proses). Seperti yang telah dijelaskan diatas, bahwa nilai dari data-data
tersebut hanya berupa numerik 3(angka) untuk yang melakukan operasi aritmetik dan
string untuk nilai yang tidak mengalami operasi aritmetik.
Didalam pengolahan data, identifikasi data tidak dapat dipakai di dalam program tetapi
yang dipakai adalah variabel yang mewakili dari identifikasi data tersebut. Identifikasi data
hanya merupakan pengenal untuk yang melakukan pengolahan data (programmer), maka untuk
sebuah program setiap identitas pengenal tersebut dibuatkan variabelnya.
Dalam melakukan pendefinisian variabel dari identifikasi data dibagi atas beberapa bagian
:
a. Pemberian nama variabel (name)
Memberi nama variabel haruslah mudah di ingat oleh si programmmer. Dan cara
pemberian nama variabel untuk semua bahasa pemrograman pada umumnya sama tapi panjang
huruf nama variabel tergantung dari bahasa yang dipakai. Untuk lebih mudah diingat,
pemberian nama variabel sebaiknya dibatasi sebanyak 8 (delapan) huruf. Adapun
ketentuan umum adalah sebagai berikut :
- tidak boleh didahului oleh angka
- tidak boleh ada spasi kosong diantara nama (blank)
- tidak boleh memakai tanda operator aritmetik ("-", "+", ",", ".", "*", "/", dan lain-
lain)
- tidak boleh memakai kata-kata yang didefinisikan oleh bahasa program
(software definite word).
b. Tipe data yang dipakai (Type).
Tipe data dasar terbagi atas 2 bagian, yaitu :
- String, yaitu tipe data yang digunakan untuk menampung nilai yang tidak akan
dioperasikan secara aritmetik.
- Numerik, yaitu tipe data yang digunakan untuk operasi aritmetik.
Modul Algoritma dan Struktur Data 2 Hal. 5

c. Panjang nilai digit yang ditampung (Width)

Untuk penentuan panjang digit menampung nilai tergantung dari bahasa yang
digunakan, dan untuk digit desimal tidak boleh sama atau melebihi dari banyak digit
menampung nilai data keseluruhan. Untuk penampungan panjang digit nilai yang ditampung
dibagi berdasarkan tipe data yang dipakai. Untuk Tipe data string terdiri dari panjang nilai digit
yang ditampung saja, sedangkan untuk tipe data numerik terdiri dari panjang digit nilai
yang ditampung keseluruhnya , 1 digit untuk tanda desimal dan panjang digit nilai
desimalnya (decimal).
d. Pengenal dari variabel (Description).
Pengenal variabel digunakan untuk lebih menjelaskan setiap identitas variabel
yang digunakan, sesuai dengan identifikasi data yang sudah ditentukan sebelumnya.

Penentuan variabel dari contoh 1 diatas adalah sebagai berikut :


---------------------------------------------------------------------------------
¦ N a m e ¦ T y p e ¦ Width ¦ Decimal ¦ Description ¦
---------------------------------------------------------------------------------
¦ Nama ¦ String ¦ 25 ¦ - ¦ Nama Mahasiswa ¦
¦ Nobp ¦ String ¦ 8 ¦ - ¦ Nomor BP ¦
¦ Kelas ¦ String ¦ 2 ¦ - ¦ Kelas ¦
¦ Nomor ¦ Numerik ¦ 2 ¦ 0 ¦ Nomor urut ¦
¦ Kode ¦ String ¦ 4 ¦ - ¦ Kode matakuliah ¦
¦ Bobot ¦ String ¦ 1 ¦ - ¦ Nilai bobot ¦
¦ Mtk ¦ String ¦ 15 ¦ - ¦ Nama mata kuliah ¦
¦ SKS ¦ Numerik ¦ 1 ¦ 0 ¦ S K A ¦
¦ Mutu ¦ Numerik ¦ 1 ¦ 0 ¦ Nilai Mutu ¦
¦ H-Nil ¦ String ¦ 1 ¦ 0 ¦ Nilai Huruf ¦
¦ MS ¦ Numerik ¦ 2 ¦ 0 ¦ Nilai Mutu * SKS ¦
¦ Ket ¦ String ¦ 10 ¦ - ¦ Keterangan ¦
¦ J_sks ¦ Numerik ¦ 2 ¦ 0 ¦ Jumlah SKS ¦
¦ J_SM ¦ Numerik ¦ 2 ¦ 0 ¦ Jumlah SKS * Mutu ¦
¦ IP ¦ Numerik ¦ 5 ¦ 2 ¦ Indeks Prestasi ¦
¦ S_Yad ¦ Numerik ¦ 2 ¦ 0 ¦ SKS Yad ¦
---------------------------------------------------------------------------------
Variabel untuk contoh 2.
---------------------------------------------------------------------------------
¦ N a m e ¦ T y p e ¦ Width ¦ Decimal ¦ Description ¦
---------------------------------------------------------------------------------
¦ Nama ¦ String ¦ 25 ¦ - ¦ Nama Mahasiswa ¦
¦ Nobp ¦ String ¦ 8 ¦ - ¦ Nomor BP ¦
¦ Kelas ¦ String ¦ 2 ¦ - ¦ Kelas ¦
¦ Tugas ¦ Numerik ¦ 3 ¦ 0 ¦ Nilai Tugas ¦
¦ Quiz ¦ Numerik ¦ 3 ¦ 0 ¦ Nilai Quiz ¦
¦ Mid ¦ Numerik ¦ 3 ¦ 0 ¦ Nilai Mid ¦
¦ UA ¦ Numerik ¦ 3 ¦ 0 ¦ Nilai Ujian Akhir ¦
¦ NA ¦ Numerik ¦ 6 ¦ 2 ¦ Nilai Akhir ¦
¦ Bobot ¦ String ¦ 1 ¦ - ¦ Nilai Bobot ¦
¦ Ket ¦ String ¦ 10 ¦ - ¦ Keterangan ¦
¦ Mad ¦ String ¦ 1 ¦ - ¦ Masih ada data ¦
---------------------------------------------------------------------------------

4. Klasifikasi Variabel
Setelah dilakukan pemberian name, type, width, decimal, dan description variabel
terhadap data-data yang dibutuhkan dalam sebuah program, langkah selanjutnya adalah
mengkalasifikasikan variabel yang dipakai tersebut atas 2 (dua) bagian, yaitu :
- Variabel Input
- Variabel Output.
Klasifikasi ini mengelompokkan variabel data yang ada sesuai dengan tahap program, apakah
pada tahap input, tahap proses, atau tahap output.
Yang lebih penting dari pengklasifikasian ini adalah untuk mencari variabel input atau
variabel yang dipakai dalam tahap input saja. Dalam suatu pengolahan data untuk membuat
program yang pertama sekali dilakukankan adalah input data, karena jika suatu program
tidak memiliki data input maka program itu monoton (setiap kali di jalankan akan
menghasilkan bentuk informasi yang sama. Juga dari data input ini nantinya untuk
menetapkan struktur data apa yang dipakai dan apa saja data-data yang disimpan.
Modul Algoritma dan Struktur Data 2 Hal. 6
Dalam penentuan klasifikasi data, apakah data input atau data output, dapat
dilakukan dengan; jika suatu data mendapatkan nilainya dari proses, seperti pemindahan nilai
(move) atau pengisian nilai (assignment), dan data semu maka data ini diklasifikasikan menjadi
kelompok data output dan selain dari itu adalah data input.
Jadi jika data tersebut data ouput maka harus ada proses terhadap data tersebut, kalau tidak
maka menjadi data input.
Suatu program yang mempunyai nilai tinggi atau terbaik adalah program yang
menimalkan sekali pemakaian data input, karena :
- Sedikit data input akan meminimalkan terjadinya pemasukan data dari media input seperti
pemakaian keyboard sehingga operator tidak terlalu banyak mengetikan data, yang
mengakibatkan memakai waktu relatif lama dan tenaga lebih besar, atau
- Sedikitnya data input akan mempercepat pemindahan nilai (move) dan
meminimalkan pemakaian memory sehingga dapat memperbanyak data disimpan
dalam media input.
Dari analisa diatas dapat dibedakan apakah data tersebut data input atau data ouput,
dimana setiap data dikenal dengan nama variabel yang didefinisikan. Maka klasifikasi
data dari contoh diatas adalah sebagai berikut.

Contoh 1
Data Input
- Nama
- Nobp
- Kelas
- Kode
- Mtk
- Bobot
- SKS.

Karena untuk mendapatkan nilai dari data tersebut diatas tidak ada proses pemindahan nilai
(move) dan pemberian nilai (assignment) dan data untuk kondisi logika (semu).
Data Output
--------------------------------------------------------------------------
¦ Data ¦ Proses Yang Terjadi ¦ Jenis Proses ¦
--------------------------------------------------------------------------
¦ Nomor ¦ Nomor = Nomor + 1 ¦ Assignment ¦
¦ Mutu ¦ Bobot='A' -> Mutu= 4, 'B'->3, ¦ ¦
¦ ¦ 'C'->2, 'D'->1, 'E'->0 ¦ Move ¦
¦ MS ¦ MS = Sks * Mutu ¦ Assignment ¦
¦ Ket ¦ Bobot = 'A' -> Ket='Terpuji' ¦ ¦
¦ ¦ 'B'->'Baik', 'C'->'Cukup' ¦ ¦
¦ ¦ 'D'->'Kurang', 'E'->'Gagal’ ¦ Move ¦
¦ J_sks ¦ J_sks = J_sks + Sks ¦ Assignment ¦
¦ J_SM ¦ J_SM = J_SM + MS ¦ Assignment ¦
¦ IP ¦ IP = J_SM / J_sks ¦ Assignment ¦
¦ S_Yad ¦ Ip > 3,25->S_Yad=24, 2,74->21, ¦ ¦
¦ ¦ 2,00->18, 1,50->15, 0,00-> 12 ¦ Move ¦
--------------------------------------------------------------------------
Keterangan :
- Assignment => Pemberian Nilai
- Move => Perpindahan Nilai

Contoh 2
Data Input
- Nama
- Nobp
- Kelas
- Tugas
- Quiz
- Mid
Modul Algoritma dan Struktur Data 2 Hal. 7
- UA.
Karena untuk mendapatkan nilai dari data tersebut diatas tidak ada proses pemindahan nilai
(move) dan pemberian nilai (assignment) dan data untuk kondisi logika (semu).

Data Output
--------------------------------------------------------------------------
¦ Data ¦ Proses Yang Terjadi ¦ Jenis Proses ¦
--------------------------------------------------------------------------
¦ NA ¦ NA=(15%*Tugas)+(20%*Quiz)+(35%* ¦ ¦
¦ ¦ Mid)+(45%*UA) ¦ Assignment ¦
¦ Bobot ¦ NA>79,99->Bobot='A', 64,99->'B' ¦ ¦
¦ ¦ ,54,99->'C',39,99->'D',0,0->'E' ¦ Move ¦
¦ Ket ¦ Bobot = 'A' -> Ket='Terpuji' | ¦
¦ ¦ 'B'->'Baik', 'C'->'Cukup' ¦ ¦
¦ ¦ 'D'->'Kurang', 'E'->'Gagal' ¦ Move ¦
¦ Mad ¦ Mad='Y' ¦ Semu ¦
--------------------------------------------------------------------------

Catatan : Data Mad adalah variabel input, dimana variabel ini hanya merupakan variabel semu
yang mengontrol suatu kondisi logika untuk perulangan (loop) dalam pengolahan data.

5. Struktur Data
Setelah didapatkan data-data apa saja yang akan diinputkan dari media input komputer,
langkah selanjutnya adalah menentukan bagaimana bentuk struktur data yang dipakai dalam
penampungan dari data input tersebut untuk disimpan (save). Jenis-jenis dari penampung data
terbagi atas 2 (dua) kelompok besar yang ditinjau dari media yamg dipakai, yaitu :
- Memory Volatile.
- Memory Non Volatile.
Memory volatile adalah memori internal komputer tempat menampung data, dimana
data yang ditampung tersebut akan selalu ada jika arus listrik ke komputer jalan terus-
menerus atau tidak pernah terputus (on). Data yang telah dimasukan kedalam memory ini
bila terjadi putusnya arus listrik maka data tersebut akan hilang secara sendirinya, sehingga
data yang disimpan di dalam memory ini tidak bisa bertahan lama.
Struktur data yang dipakai untuk media volatile salah satunya adalah berjenis array
(larik). Struktur data array digunakan untuk menampung sekumpulan data yang bertipe sama
dan nama pengenal (variabel) yang sama, hanya nilai data dibedakan oleh indeks dari
setiap data tersebut.
Memory non volatile adalah memory eksternal komputer yang berfungsi tempat
menampung data. Pada memory non volatile data yang disimpan akan selalu ada walaupun arus
listrik ke komputer tersebut putus (off). Media penampung data ini lebih cocok untuk waktu
yang lama dan dapat menampung data lebih banyak. Media yang digunakan disebut
dengan Disk, seperti Floppy Disk, Hard Disk, Comapaq Disk, Tape Disk, dan lain-lain.
Salah satu struktur data yang dipakai untuk memory non volatile ini adalah berjenis
File dan jajarannya, seperti Data Base, Record, dan Field. Data yang ditampung dapat
memiliki berjenis-jenis tipe data, dan nama data (variabel) yang berbeda pula.
Ini hanya merupakan struktur data standar yang dimiliki oleh semua bahasa pemrograman.
Dan masih banyak lagi struktur data lain yang cara kerjanya sama dengan kedua struktur data
diatas. Pada analisa terakhir ini hanya untuk menentukan tingkatan (level) dari data input
yang ditampung tersebut, sedangan jenis struktur apa yang dipakai itu tergantung oleh
pembuat program dan bahasa apa yang akan dipakai.
Tingkatan data (level) dari data input pada struktur data pemakaian memory volatile
(array) hanya untuk menentukan banyaknya dimensi indek yang digunakan, sedangkan pada
pada memory non volatile (file) untuk menentukan banyak file yang digunkan. Selain dari pada
itu, cara ini juga untuk minimalkan terjadinya redundant data (nilai data yang sama disimpan
berulang-ulang), sehingga lebih hemat dalam pemakaian memory komputer.
Cara untuk menentukan tingkat atau level data dapat dilakukan sebagai berikut :
- Ambil salah satu variabel dari data input sebagai kunci cuan.
- Bandingkan data tersebut, apakah nilai yang ditampung oleh data acuan juga
Modul Algoritma dan Struktur Data 2 Hal. 8
variabel berikutnya menampung satu nilai yang berbeda tapi objek yang sama ?. Jika
ya maka variabel tersebut setingkat atau selevel, jika tidak berarti data
tersebut tidak setingkat atau selevel. Begitu seterusnya.
- Jika lebih dari 1 tingkat (level), bandingkan setiap tingkat tersebut, mana tingkat
yang menampung data lebih banyak semakin rendah tingkat atau levelnya. Pada
file tingkat (level) yang paling tinggi maka tingkat tersebut yang menjadi file
master (induk).
Dari contoh analisa diatas dapat dibuat tingkat data inputnya sebagai berikut :
Contoh 1
Level 1 Level 2
- Nama - Kode
- Nobp - Nilai
- Kelas - Sks
- Mtk

Pada level 1 mempunyai nilai data nama, nobp, dan kelas pada objek yang sama yaitu
mahasiswa, sedangkan kode, nilai, sks, dan mtk mempunyai objek yang sama pula yaitu
matakuliah. Antara nilai-nilai objek mahasiswa berbeda dengan nilai-nilai objek matakuliah,
dimana setiap 1 data mahasiswa memiliki banyak nilai mata kuliah.
Struktur data dari tingkatan diatas dapat dijadikan sebagai file master adalah file data
mahasiswa dan matakuliah sebagai anak filenya. Dalam memakai struktur data array maka setiap
data mahasiswa memiliki 1 dimensi data matakuliah dengan banyak jajarannya.
Contoh 2
Level 1
- Nama
- Nobp
- Kelas
- Tugas
- Quiz
- Mid
- UA

Nilai-nilai pada data input ini mempunyai objek yang sama semuanya atau setingkat, dimana
setiap 1 nilai nama memiliki 1 nilai nobp, 1 nilai kelas, 1 nilai tugas, 1 nilai quiz, 1 nilai mid,
dan 1 nilai ua.
Modul Algoritma dan Struktur Data 2 Hal. 9

Algoritma 1
Program Entri;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Entri Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then ketemu:='Y';
end;
if (ketemu='T') then
Begin
rmhs.nobp:=bpkey;
Gotoxy(20,9); Write('Nama Mahasiswa = '); Readln(rmhs.nama);
Gotoxy(20,10);Write('Kelas = '); Readln(rmhs.kelas);
Gotoxy(25,14);Write('Data sudah benar [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Seek(fmhs,filesize(fmhs));
write(fmhs,rmhs);
end;
end
else
Begin
Gotoxy(25,20);Write('DATA SUDAH ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 10
Program Edit;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Edit Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Matakuliah = ',rmhs.kelas);
Gotoxy(25,14);Write('Data jadi diperbaiki [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Gotoxy(55,9); Readln(rmhs.nama);
Gotoxy(55,10);Readln(rmhs.kelas);
Gotoxy(25,14);Write('Data sudah BENAR [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
Begin
Seek(fmhs,posisi-1);
write(fmhs,rmhs);
end;
end;
posisi:=filesize(fmhs);
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 11
Program Cari;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Mencari Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
posisi:=filesize(fmhs);
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data yang di-CARI [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 12
Program Hapus;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
Var Emhs,Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi,posbaru: integer;
Begin
Assign (Fmhs, 'kmhs.dat');
Assign (Emhs, 'kEmhs.dat');
rewrite(Emhs);
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Hapus Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
Begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
Gotoxy(25,14);Write('Data jadi di-HAPUS [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
rmhs.nobp:=' ';
Seek(fmhs,posisi-1);
write(fmhs,rmhs);
end;
posisi:=filesize(fmhs);
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
posbaru:=0;
for posisi:=1 to filesize(Fmhs) do
begin
seek(Fmhs,posisi-1);
read(fmhs,rmhs);
if (rmhs.nobp = ' ') then
else
begin
posbaru:=posbaru+1;
seek(emhs,posbaru-1);
write(Emhs,rmhs);
end;
end;
Close (fmhs);
close (emhs);
erase (fmhs);
rename(emhs,'kmhs.dat');
end.
Modul Algoritma dan Struktur Data 2 Hal. 13
Program Informasi;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
nom : Integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
clrscr;
Gotoxy(25,1);Writeln('Informasi Data Mahasiswa');
Gotoxy(25,2);Writeln('========================');
Gotoxy(1, 3);Writeln('------------------------------------------------------');
Gotoxy(1, 4);Writeln('| No | Nomor BP | Nama | Kelas |');

{1234567890123456789012345678901234567890123456789012345678901234567890123456789}
{ 1 2 3 4 5
6 7 }

Gotoxy(1, 5);Writeln('------------------------------------------------------');
Nom:=0;
for posisi:=1 to filesize(fmhs) do
begin
nom:=nom+1;
seek(fmhs,posisi-1);
read(fmhs,rmhs);
Gotoxy(1, 5+nom);Write('|');
Gotoxy(3, 5+nom);Write(nom:2);
Gotoxy(6, 5+nom);Write('|');
Gotoxy(8, 5+nom);Write(rmhs.nobp);
Gotoxy(23,5+nom);Write('|');
Gotoxy(25,5+nom);Write(rmhs.nama);
Gotoxy(41,5+nom);Write('|');
Gotoxy(43,5+nom);Write(rmhs.kelas);
Gotoxy(54,5+nom);Write('|');
End;
Gotoxy(1, 6+nom);Writeln('------------------------------------------------------
');
Repeat Until Keypressed;
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 14
Program Entri;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
nl=Record
bp : String[14];
kd : string[5];
sks : byte;
mtk : string[10];
nilai : byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
Fnl : File of nl;
Rnl : nl;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi1,posisi2 : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Assign (Fnl, 'knl.dat');
{$I-} Reset (Fnl); {$I+}
If IOResult<>0 then Rewrite(Fnl);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Entri Data Nilai Mahasiswa');
Gotoxy(25,6);Writeln('==========================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi1 := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi1-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
rnl.bp:=bpkey;
Gotoxy(20,12); Write('ENTRI DATA NILAI');
Gotoxy(20,13); Write('---------------');
Gotoxy(20,14); Write('Kode Matakuliah = '); Readln(rnl.kd);
Gotoxy(20,15); Write('Matakuliah = '); Readln(rnl.mtk);
Gotoxy(20,16); Write('SKS [2-3] = '); Readln(rnl.sks);
Gotoxy(20,17); Write('Nilai [0-100] = '); Readln(rnl.nilai);
Gotoxy(25,19);Write('Data sudah benar [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Seek(fnl,filesize(fnl));
write(fnl,rnl);
end;
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,23);Write('DATA MAHASISWA TIDAK ADA....!');
End;
Gotoxy(25,20);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
Close(fnl);
end.
Modul Algoritma dan Struktur Data 2 Hal. 15
Program Entri;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
nl=Record
bp : String[14];
kd : string[5];
sks : byte;
mtk : string[10];
nilai : byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
Fnl : File of nl;
Rnl : nl;
bpkey : String[14];
kdkey : string[5];
ketemu1,ketemu2 : char;
lagi,benar : char;
posisi1,posisi2 : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Assign (Fnl, 'knl.dat');
{$I-} Reset (Fnl); {$I+}
If IOResult<>0 then Rewrite(Fnl);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Entri Data Nilai Mahasiswa');
Gotoxy(25,6);Writeln('==========================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu1:='T';
For posisi1 := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi1-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu1:='Y';
ketemu2:='T';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
rnl.bp:=bpkey;
Gotoxy(20,12); Write('EDIT DATA NILAI');
Gotoxy(20,13); Write('---------------');
Gotoxy(20,14); Write('Kode Matakuliah = '); Readln(kdkey);
for posisi2:=1 to filesize(fnl) do
begin
seek(fnl, posisi2-1);
read(fnl, rnl);
if ((rnl.bp=bpkey) and (rnl.kd=kdkey)) then
begin
ketemu2:='Y';
Gotoxy(20,15); Write('Matakuliah = ',rnl.mtk);
Gotoxy(20,16); Write('SKS [2-3] = ',rnl.sks);
Gotoxy(20,17); Write('Nilai [0-100] = ',rnl.nilai);
Gotoxy(25,19);Write('Apakah data mau diperbaiki [Y/T] = ');
Readln(benar);
if (benar in ['Y','y']) then
begin
Gotoxy(60,14); write('DATA PERBAIKAN');
Gotoxy(60,15); readln(rnl.mtk);
Gotoxy(60,16); readln(rnl.sks);
Gotoxy(60,17); readln(rnl.nilai);
Gotoxy(25,19);Write('Apakah data sudah benar [Y/T]
= '); Readln(benar);
if (benar in ['Y','y']) then
begin
Seek(fnl,posisi2-1);
write(fnl,rnl);
end;
end;
end;
end;
if(ketemu2='T') then
Begin
Gotoxy(25,23);Write('DATA NIALI TIDAK ADA....!');
end;
end;
end;
if (ketemu1='T') then
Begin
Gotoxy(25,23);Write('DATA MAHASISWA TIDAK ADA....!');
End;
Gotoxy(25,20);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
Close(fnl);
end.
Modul Algoritma dan Struktur Data 2 Hal. 16
Program Delete_2;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
nl=Record
bp : String[14];
kd : string[5];
sks : byte;
mtk : string[10];
nilai : byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
Fnl,enl : File of nl;
Rnl : nl;
bpkey : String[14];
kdkey : string[5];
ketemu1,ketemu2 : char;
lagi,benar : char;
posisi1,posisi2,posbaru : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Assign (Fnl, 'knl.dat');
{$I-} Reset (Fnl); {$I+}
If IOResult<>0 then Rewrite(Fnl);
Assign (enl, 'eknl.dat');
Rewrite (enl);
Repeat
clrscr;
Gotoxy(25,5);Writeln('HAPUS Data Nilai Mahasiswa');
Gotoxy(25,6);Writeln('==========================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu1:='T';
For posisi1 := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi1-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu1:='Y';
ketemu2:='T';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
rnl.bp:=bpkey;
Gotoxy(20,12); Write('HAPUS DATA NILAI');
Gotoxy(20,13); Write('----------------');
Gotoxy(20,14); Write('Kode Matakuliah = '); Readln(kdkey);
for posisi2:=1 to filesize(fnl) do
begin
seek(fnl, posisi2-1);
read(fnl, rnl);
if ((rnl.bp=bpkey) and (rnl.kd=kdkey)) then
begin
ketemu2:='Y';
Gotoxy(20,15); Write('Matakuliah = ',rnl.mtk);
Gotoxy(20,16); Write('SKS [2-3] = ',rnl.sks);
Gotoxy(20,17); Write('Nilai [0-100] = ',rnl.nilai);
Gotoxy(25,19);Write('Apakah data yakin dihapus [Y/T] = ');
Readln(benar);
if (benar in ['Y','y']) then
begin
rnl.bp:=' ';
Seek(fnl,posisi2-1);
write(fnl,rnl);
end;
end;
end;
if(ketemu2='T') then
Begin
Gotoxy(25,23);Write('DATA NIALI TIDAK ADA....!');
end;
end;
end;
if (ketemu1='T') then
Begin
Gotoxy(25,23);Write('DATA MAHASISWA TIDAK ADA....!');
End;
Gotoxy(25,20);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
posbaru:=0;
for posisi2:=1 to filesize(fnl) do
begin
seek(fnl,posisi2-1);
read(fnl,rnl);
if (rnl.bp<>' ') then
begin
posbaru:=posbaru+1;
Modul Algoritma dan Struktur Data 2 Hal. 17
seek(enl,posbaru-1);
write(enl,rnl);
end;
end;
Close(Fmhs);
Close(fnl);
Close(enl);
erase(fnl);
rename(enl,'knl.dat');
end.

Program Entri;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
nl=Record
bp : String[14];
kd : string[5];
sks : byte;
mtk : string[10];
nilai : byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
Fnl : File of nl;
Rnl : nl;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi1,posisi2 : integer;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Assign (Fnl, 'knl.dat');
{$I-} Reset (Fnl); {$I+}
If IOResult<>0 then Rewrite(Fnl);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Entri Data Nilai Mahasiswa');
Gotoxy(25,6);Writeln('==========================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi1 := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi1-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Kelas = ',rmhs.kelas);
rnl.bp:=bpkey;
Gotoxy(20,12); Write('ENTRI DATA NILAI');
Gotoxy(20,13); Write('---------------');
Gotoxy(20,14); Write('Kode Matakuliah = '); Readln(rnl.kd);
Gotoxy(20,15); Write('Matakuliah = '); Readln(rnl.mtk);
Gotoxy(20,16); Write('SKS [2-3] = '); Readln(rnl.sks);
Gotoxy(20,17); Write('Nilai [0-100] = '); Readln(rnl.nilai);
Gotoxy(25,19);Write('Data sudah benar [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Seek(fnl,filesize(fnl));
write(fnl,rnl);
end;
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,23);Write('DATA MAHASISWA TIDAK ADA....!');
End;
Gotoxy(25,20);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
Close(fnl);
end.
Modul Algoritma dan Struktur Data 2 Hal. 18
Program LAPORAN;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
kelas :String[10];
end;
nl=Record
bp : String[14];
kd : string[5];
sks : byte;
mtk : string[10];
nilai : byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
Fnl : File of nl;
Rnl : nl;
bpkey : String[14];
kdkey : string[5];
ketemu1,ketemu2 : char;
hnil : char;
lagi,benar : char;
posisi1,posisi2 : integer;
nom : integer;
mutu : byte;
sm : byte;
ket : String [7];
jsks, jsm : integer;
ip : real;
sksyad : byte;
Begin
Assign (Fmhs, 'kmhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Assign (Fnl, 'knl.dat');
{$I-} Reset (Fnl); {$I+}
If IOResult<>0 then Rewrite(Fnl);
clrscr;
Gotoxy(1,1);Writeln('Universitas Putra Indonesia YPTK Padang');
Gotoxy(1,2);Writeln('LAPORAN HASIL STUDI SISWA');

Gotoxy(1,3);Writeln('=================================================================
=================');
Gotoxy(1,4);Write('Nobp / Nama / Kelas :');
Gotoxy(26,4); Readln(bpkey);
ketemu1:='T';
For posisi1 := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi1-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
nom:=0;
jsks:=0;
jsm:=0;
ketemu1:='Y';
ketemu2:='T';
Gotoxy(43,4);Write(rmhs.nama,' / ',rmhs.kelas);
Gotoxy(1, 5);Writeln('---------------------------------------------------
-------------------------------');
Gotoxy(1, 6);Writeln('| No | Kode | Matakuliah | Nilai | SKS | Mutu |
SKSxMutu | Keterangan |');
{
1234567890123456789012345678901234567890123456789012345678901234567890123456789}
{ 1 2 3 4 5
6 7}
Gotoxy(1, 7);Writeln('---------------------------------------------------
-------------------------------');
for posisi2:=1 to filesize(fnl) do
begin
seek(fnl, posisi2-1);
read(fnl, rnl);
if (rnl.bp=bpkey) then
begin
ketemu2:='Y';
nom:=nom+1;
jsks:=jsks+rnl.sks;
if(rnl.nilai>=80) then
Begin
hnil:='A';
mutu:=4;
ket:='Terpuji';
end
else
if(rnl.nilai>=65) then
Begin
hnil:='B';
mutu:=3;
ket:='Baik';
end
else
if(rnl.nilai>=55) then
Modul Algoritma dan Struktur Data 2 Hal. 19
Begin
hnil:='C';
mutu:=2;
ket:='Cukup';
end
else
if(rnl.nilai>=40) then
Begin
hnil:='D';
mutu:=1;
ket:='Kurang';
end
else
if(rnl.nilai>=0) then
Begin
hnil:='E';
mutu:=0;
ket:='Gagal';
end;
sm:=rnl.sks * mutu;
jsm:=jsm+sm;
jsm:=jsm+jsks;
Gotoxy(1,7+nom); Write('|');
Gotoxy(3,7+nom); Write(nom:3);
Gotoxy(6,7+nom); Write('|');
Gotoxy(8,7+nom); Write(rnl.kd);
Gotoxy(14,7+nom); Write('|');
Gotoxy(16,7+nom); Write(rnl.mtk);
Gotoxy(27,7+nom); Write('|');
Gotoxy(29,7+nom); Write(rnl.nilai:3);
Gotoxy(35,7+nom); Write('|');
Gotoxy(37,7+nom); Write(rnl.sks:1);
Gotoxy(41,7+nom); Write('|');
Gotoxy(44,7+nom); Write(mutu:1);
Gotoxy(48,7+nom); Write('|');
Gotoxy(52,7+nom); Write(sm:2);
Gotoxy(59,7+nom); Write('|');
Gotoxy(61,7+nom); Write(ket);
Gotoxy(72,7+nom); Write('|');
end;
end;
Gotoxy(1, 8+nom);Writeln('-----------------------------------------------
-----------------------------------');
Gotoxy(1, 9+nom);Writeln(': Jumlah
');
Gotoxy(35,9+nom); Write('|');
Gotoxy(37,9+nom); Write(jsks:3);
Gotoxy(41,9+nom); Write('|');
Gotoxy(52,9+nom); Write(jsm:3);
Gotoxy(59,9+nom); Write('|');
Gotoxy(72,9+nom); Write('|');
Gotoxy(1,10+nom);Writeln('-----------------------------------------------
-----------------------------------');
ip:=jsm/jsks;
if (ip>=3.25) then sksyad:=24
else if (ip>=2.74) then sksyad:=21
else if (ip>=2.00) then sksyad:=18
else if (ip>=1.50) then sksyad:=15
else if (ip>=0.0) then sksyad:=12;
Gotoxy(1,11+nom); Write('Indek Prestasi = ', ip:6:2,' / SKS Yad = ',
sksyad:2);
repeat until keypressed;
end;
if (ketemu1='T') then
Begin
Gotoxy(25,23);Write('DATA MAHASISWA TIDAK ADA....!');
End;
end;
Close(Fmhs);
Close(fnl);
end.
Modul Algoritma dan Struktur Data 2 Hal. 20

Algoritma 2
Program Entri;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'mhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Entri Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then ketemu:='Y';
end;
if (ketemu='T') then
Begin
rmhs.nobp:=bpkey;
Gotoxy(20,9); Write('Nama Mahasiswa = '); Readln(rmhs.nama);
Gotoxy(20,10);Write('Matakuliah = '); Readln(rmhs.mtk);
Gotoxy(20,11);Write('Nilai [0-100] = '); Readln(rmhs.nilai);
Gotoxy(25,14);Write('Data sudah benar [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Seek(fmhs,filesize(fmhs));
write(fmhs,rmhs);
end;
end
else
Begin
Gotoxy(25,20);Write('DATA SUDAH ADA....!');
End;
Gotoxy(25,15);Write('MAsih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 21
Program Informasi;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
nom : Integer;
Begin
Assign (Fmhs, 'mhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
clrscr;
Gotoxy(25,1);Writeln('Informasi Data Mahasiswa');
Gotoxy(25,2);Writeln('========================');
Gotoxy(1, 3);Writeln('--------------------------------------------------------------');
Gotoxy(1, 4);Writeln('| No | Nomor BP | Nama | Matakuliah | Nilai |');
{1234567890123456789012345678901234567890123456789012345678901234567890123456789}
{ 1 2 3 4 5 6
7 }
Gotoxy(1, 5);Writeln('--------------------------------------------------------------');
Nom:=0;
for posisi:=1 to filesize(fmhs) do
begin
nom:=nom+1;
seek(fmhs,posisi-1);
read(fmhs,rmhs);
Gotoxy(1, 5+nom);Write('|');
Gotoxy(3, 5+nom);Write(nom:2);
Gotoxy(6, 5+nom);Write('|');
Gotoxy(8, 5+nom);Write(rmhs.nobp);
Gotoxy(23,5+nom);Write('|');
Gotoxy(25,5+nom);Write(rmhs.nama);
Gotoxy(41,5+nom);Write('|');
Gotoxy(43,5+nom);Write(rmhs.mtk);
Gotoxy(54,5+nom);Write('|');
Gotoxy(56,5+nom);Write(rmhs.nilai);
Gotoxy(62,5+nom);Write('|');
End;
Gotoxy(1, 6+nom);Writeln('--------------------------------------------------------------
');
Repeat Until Keypressed;
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 22
Program Cari;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'mhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Mencari Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Matakuliah = ',rmhs.mtk);
Gotoxy(20,11);Write('Nilai [0-100] = ',rmhs.nilai);
posisi:=filesize(fmhs);
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data yang di-CARI [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 23
Program Edit;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
Begin
Assign (Fmhs, 'mhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('EDIT Data Mahasiswa');
Gotoxy(25,6);Writeln('===================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Matakuliah = ',rmhs.mtk);
Gotoxy(20,11);Write('Nilai [0-100] = ',rmhs.nilai);
Gotoxy(25,14);Write('Data jadi diperbaiki [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
Gotoxy(55,9); Readln(rmhs.nama);
Gotoxy(55,10);Readln(rmhs.mtk);
Gotoxy(55,11);Readln(rmhs.nilai);
Gotoxy(25,14);Write('Data sudah BENAR [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
Begin
Seek(fmhs,posisi-1);
write(fmhs,rmhs);
end;
end;
posisi:=filesize(fmhs);
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
Close(Fmhs);
end.
Modul Algoritma dan Struktur Data 2 Hal. 24
Program Hapus;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Emhs,Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi,posbaru: integer;
Begin
Assign (Fmhs, 'mhs.dat');
Assign (Emhs, 'Emhs.dat');
rewrite(Emhs);
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
Repeat
clrscr;
Gotoxy(25,5);Writeln('Hapus Data Mahasiswa');
Gotoxy(25,6);Writeln('====================');
Gotoxy(20,8);Write('Input Nomor BP = '); Readln(bpkey);
ketemu:='T';
For posisi := 1 to filesize(Fmhs) do
begin
Seek (Fmhs, posisi-1);
Read(Fmhs,rmhs);
if (rmhs.nobp = bpkey) then
Begin
ketemu:='Y';
Gotoxy(20,9); Write('Nama Mahasiswa = ',rmhs.nama);
Gotoxy(20,10);Write('Matakuliah = ',rmhs.mtk);
Gotoxy(20,11);Write('Nilai [0-100] = ',rmhs.nilai);
Gotoxy(25,14);Write('Data jadi di-HAPUS [Y/T] = '); Readln(benar);
if (benar in ['Y','y']) then
begin
rmhs.nobp:=' ';
Seek(fmhs,posisi-1);
write(fmhs,rmhs);
end;
posisi:=filesize(fmhs);
end;
end;
if (ketemu='T') then
Begin
Gotoxy(25,20);Write('DATA TIDAK ADA ADA....!');
End;
Gotoxy(25,15);Write('Masih ada data [Y/T] = '); Readln(lagi);
Until lagi in ['T','t'];
posbaru:=0;
for posisi:=1 to filesize(Fmhs) do
begin
seek(Fmhs,posisi-1);
read(fmhs,rmhs);
if (rmhs.nobp <> ' ') then
begin
posbaru:=posbaru+1;
seek(emhs,posbaru-1);
write(Emhs,rmhs);
end;
end;
Close (fmhs);
close (emhs);
erase (fmhs);
rename(emhs,'mhs.dat');
end.
Modul Algoritma dan Struktur Data 2 Hal. 25
Program Laporan;
uses crt;
Type mhs=Record
nobp :String[14];
nama :String[15];
mtk :String[10];
nilai :Byte;
end;
Var Fmhs : File of mhs;
Rmhs : mhs;
bpkey : String[14];
ketemu : char;
lagi,benar : char;
posisi : integer;
nom : Integer;
ket : String[5];
Begin
Assign (Fmhs, 'mhs.dat');
{$I-} Reset (Fmhs); {$I+}
If IOResult<>0 then Rewrite(Fmhs);
clrscr;
Gotoxy(25,1);Writeln('Laporan Data Nilai Mahasiswa');
Gotoxy(25,2);Writeln('============================');
Gotoxy(1, 3);Writeln('--------------------------------------------------------------------
--');
Gotoxy(1, 4);Writeln('| No | Nomor BP | Nama | Matakuliah | Nilai | Ket.
|');
{1234567890123456789012345678901234567890123456789012345678901234567890123456789}
{ 1 2 3 4 5 6
7 }
Gotoxy(1, 5);Writeln('--------------------------------------------------------------------
--');
Nom:=0;
for posisi:=1 to filesize(fmhs) do
begin
nom:=nom+1;
seek(fmhs,posisi-1);
read(fmhs,rmhs);
if (rmhs.nilai>=55) then ket:='LULUS' else ket:='GAGAL';
Gotoxy(1, 5+nom);Write('|');
Gotoxy(3, 5+nom);Write(nom:2);
Gotoxy(6, 5+nom);Write('|');
Gotoxy(8, 5+nom);Write(rmhs.nobp);
Gotoxy(23,5+nom);Write('|');
Gotoxy(25,5+nom);Write(rmhs.nama);
Gotoxy(41,5+nom);Write('|');
Gotoxy(43,5+nom);Write(rmhs.mtk);
Gotoxy(54,5+nom);Write('|');
Gotoxy(56,5+nom);Write(rmhs.nilai);
Gotoxy(62,5+nom);Write('|');
Gotoxy(64,5+nom);Write(ket);
Gotoxy(70,5+nom);Write('|');
End;
Gotoxy(1, 6+nom);Writeln('----------------------------------------------------------------
------');
Repeat Until Keypressed;
Close(Fmhs);
end.

View publication stats

Anda mungkin juga menyukai