Operasi File Chapter 13 1
Penyimpanan Data ke File • Data memungkinkan untuk disimpan di file. • Data akan tersimpan secara permanen, dan data bisa dibaca pada kesempatan yang lain.
Pemanggilan Prosedur Redirect_Output(Nama_File)
Operasi akan dikirim ke File
Panggil Prosedur Redirect_Output Operasi Keluaran akan dikirim ke MasterConsole
2
Menyimpan Data ke File Keterangan: • Redirect_Output digunakan untuk memanggil prosedur • Redirect_Output(false) digunakan untuk mengirimkan simbol output ke MasterConsole
3
Membaca Data dari File Keterangan: • Redirect_Input membaca file Mahasiswa.txt • Redirect_Input(no) digunakan untuk mengirimkan simbol output ke
MasterConsole
4
Membaca seluruh data file • Untuk membaca seluruh data, Jumlah data yang dibaca adalah 4 dan diatur melalui keputusan
• Coba gantikan bagian keputusan menjadi
• End_of_Input berfungsi untuk menghasilkan True kalau tidak ada data lagi yang bisa dibaca. 5
Data Random Untuk Pengurutan Data Data yang cukup banyak yang terdapat di dalam file, perlu diurutkan. Hal ini dilakukan untuk pengelolaan data yang sangat banyak. Contohnya:
6
Pengurutan Data Dengan Seleksi •
•
•
•
Pengurutan seleksi (selection sort) dimana suatu penunjuk (diberi nama posAwal) yang menunjukkan ke lokasi awal pengurutan data, diatur agar berisi indeks pertama dalam array. Cari bilangan terkecil yang terletak antara posisi sesudah yang ditunjukkan oleh penunjuk hingga elemen yang terakhir dalam array. Lokasi ini ditunjukkan oleh posMin. Lakukan penukaran antara nilai bilangan terkecil dengan nilai yang ditunjukkan oleh posAwal. Proses ini diulang dari posAwal bernilai 1 hingga N-1, dengan menyatakan jumlah elemen dalam array.
(b)
(a)
posAwal
posMin
67
25
35
35
25 27
posAwal posMin
26
67 27 26 Tukarkan
Nilai terkecil
(d)
(c)
posAwal
posMin
25
25
26
26
67
27
27
posAwal
35 Tukarkan
67 35
posMin
Tukarkan 7
Flowchart Select sort Flowchat selection sort.rap yang digunakan untuk melaksanakan pengurutan dengan teknik selection sort. Terdapat beberapa Prosedur yaitu: 1. Main; digunakan untuk membaca jumlah data dan memanggil sejumlah prosedur serta menampilkan Data semula dan Data setelah diurutkan. 2. Prosedur BacaData; digunakan untuk membaca data dari file Acak.txt sebanyak CacahData dan hasilnya diletakkan ke Data. 3. Prosedur TampilData; digunakan untuk menampilkan isi array data, yang memiliki sebanyak CacahData elemen. Setiap data ditampilkan tanpa ditambahi akhir baris. 4. Prosedur Sort; digunakan untuk melakukan pengurutan data di array data dengan menggunakan metode selection sort.
8
Prosedur BacaData Cara Create Prosedure adalah Klik kanan pada main pilih Add Prosedur, lalu atur seperti gambar dibawah ini. Lakukan dengan cara yang sama untuk prosedur lainnya kecuali pengaturannya.
9
Prosedur TampilData
10
Prosedur Sort
11
Main
12
Pengurutan Data Dengan Penyisipan • Pengurutan dengan penyisipan (insertion sort) adalah suatu metode yang melakukan pengurutan dengan cara menyisipkan data yang belum urut ke dalam bagian data yang telah di urutkan. Konsep seperti ini biasa dilakukan pada permainan kartu. • Ketika sebuah kartu baru didapatkan (hasil pembagian dari pengocokan kartu), kartu akan disisipkan oleh pemain pada posisi yang tepat sehingga penambahan kartu tersebut membuat semua kartu terurutkan. • Bila L adalah larik dengan n elemen, mula-mula L[1] (elemen pertama) dianggap sebagai kumpulan data yang telah diurutkan, yang terdiri atas satu data. Kemudian, dilakukan penyisipan data dari L[2] sampai dengan 2 ≤ k ≤ n. dalam hal ini, penyisipan dilakukan pada tempat yang tepat sehingga data L[0] sampai dengan L[k] menjadi urut. Penuangan dalam pseudokode adalah sebagai berikut: 13
Pseudokode PROSEDUR InsertionSort(L, n) UNTUK k 2 s/d n x L[k] //Sisipkan x ke dalam L[1..k] ik–1 ditemukan 0 ULANGAN SELAMA i ≥ 1 DAN ditemukan = 0 JIKA x < L[i] MAKA L[i+1] L[i] ii–1 SEBALIKNYA ditemukan 1 AKHIR-JIKA L[i+1] x AKHIR-ULANG AKHIR-UNTUK AKHIR-PROSEDUR
14
Pencarian Secara Biner •
Apabila kumpulan data sudah dalam keadaan terurut, pencarian data dengan menggunakan pencarian sekuensial sebelumnya akan memakan waktu yang lama jika jumlah data dalam kumpulan data tersebut sangat banyak.
•
Untuk mengatasi hal itu, terdapat algoritma yang dirancang agar pencarian data dapat dilakukan secara efisien.
•
Metode yang digunakan dikenal dengan sebutan pencarian biner (binary search).
•
Pencarian larik dilakukan dengan membagi larik menjadi dua bagian dengan jumlah yang sama atau berbeda 1 jika jumlah data semula ganjil. Data yang dicari kemudian dibandingkan dengan data terakhir pada bagian utama. Dalam hal ini, ada tiga kemungkinan yang terjadi. 1. Data yang dicari sama dengan elemen terakhir pada bagian pertama dalam larik. Jika kondisi ini terpenuhi, data yang dicari berarti ditemukan. 2. Data yang dicari bernilai kurang dari nilai elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencarian diteruskan pada bagian kedua. 3. Data yang dicari bernilai lebih dari elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencarian diteruskan pada bagian kedua. 15
Lebih jelas perhatikan gambar berikut ini: 0
1
1
3
2
6
3
7
4
9
5
10
6
11
7
12
8
15
9
17
10
20
Gambar. Pencarian pada data yang telah urut
Mula-mula, larik tersebut dipecahkan menjadi dua bagian seperti berikut: 1
3
6
7
9
10
11
12
15
17
20
Bagian 2 (kanan)
Bagian 1 (kiri)
Elemen terakhir pada bagian pertama Gambar. Pembagian larik menjadi dua bagian
16
Selanjutnya, bilangan yang dicari (yaitu 12) dibandingkan dengan elemen terakhir pada bagian pertama pada larik (yaitu angka 10). Mengingat yang dicari bernilai lebih besar daripada 10, maka pencarian diteruskan pada bagian kedua (bagian kanan). Setelah bagian kanan dibagi menjadi dua dan seterusnya sampai pada yang dicari ditemukan.
11
12
15
17
20
Bagian 2 (kanan)
Bagian 1 (kiri)
11
12
Bagian 1 (kiri)
Langkah terakhir, angka yang dicari dibandingkan dengan elemen terakhir pada bagian pertama. Mengingat nilai yang dicari dan nilai elemen terakhir pada bagian pertama sama, maka berarti pencarian telah ditemukan.
15 Bagian 2 (kanan)
Gambar. Pembagian yang kedua kali
17
Pengurutan Dengan Penyisipan Biner • Penyisipan pada insertion sort dapat dibuat lebih efisien mengingat penyisipan dilakukan pada data yang telah urut. Pencarian data dapat dilakukan dengan menggunakan metode pencarian biner. Setelah posisi untuk penyisipan ditemukan, semua elemen yang berada disebelah kanan posisi tempat data akan disisipkan perlu digeser ke kanan.
18
Operasi Tumpukan Dengan Array Tumpukkan (stack) adalah struktur data yang memungkinkan penyisipan dan pengambilan data dilakukan dari satu ujung yang disebut puncak. Struktur data ini digambarkan seperti keadaan tumpukan piring atau tumpukan buku. Cara yang gampang untuk meletakkan piring ke dalam tumpukan yakni dengan menaruhnya dibagian puncak. Begitu juga kalau ingin mengambil piring juga diambil dari puncak. Seperti gambar berikut:
Kosong
1
Berisi 3 piring
1
Diambil 1 dari puncak
Gambar. Struktur data tumpukan
Tumpukan memiliki sifat Last-in first-Out (LIFO). Operasi dasar pada tumpukan berupa push dan pop. • Push adalah operasi untuk memasukkan data ke dalam tumpukan. Push(T, D), T menyatakan tumpukan dan D item data yang disisipkan. • Pop adalah operasi untuk mengambil data dari tumpukan. Pop(T, D). Tumpukan T akan dikeluarkan dan nilainya diletakkan di D. 19
Source Code VB.NET Program pencarian berdasarkan NPM Module Module1 Sub Main() Dim a, x, jurusan, fakultas As String Dim tahun As Integer
Console.Write("NPM anda : ") a = Console.ReadLine If Left(a, 2) = "11" Then tahun = "2011" ElseIf Left(a, 2) = "12" Then tahun = "2012" ElseIf Left(a, 2) = "13" Then tahun = "2013" Else tahun = "tidak ada" End If If Mid(a, 3, 2) = "13" Then fakultas = "Fakultas Keguruan dan Ilmu Pendidikan" ElseIf Mid(a, 3, 2) = "14" Then fakultas = "Fakultas Teknik" ElseIf Mid(a, 3, 2) = "15" Then fakultas = "Fakultas Ekonomi" Else fakultas = "fakultas tidak ada" End If
If Mid(a, 5, 2) = "02" Then jurusan = "Pendidikan Bahasa dan Sastra Inggris" ElseIf Mid(a, 5, 2) = "03" Then jurusan = "Teknik Informatika" ElseIf Mid(a, 5, 2) = "04" Then jurusan = "Manajemen" Else jurusan = "jurusan tidak ada" End If If Right(a, 4) < 11 Then x = "0001" Else x = "0002" End If Console.WriteLine("Tahun Masuk : " & tahun) Console.WriteLine("Fakultas anda : " & fakultas) Console.WriteLine("Jurusan anda : " & jurusan) Console.WriteLine("No urut : " & x) Console.ReadKey() End Sub End Module
20
Source Code VB.NET Program yang nama menampilkan sebelum data diurut dan setelah diurut
Program pengurutan jurusan secara Ascending dan Descending
Module Module1
Module Module7 Sub Main() Dim Jurusan As List(Of String) = New List(Of String) Jurusan.Add("Teknik Informatika") Jurusan.Add("Pendidikan Sastra dan Bahasa Inggris") Jurusan.Add("Manajemen") Jurusan.Add("Kesehatan Masyarakat")
Sub Main() Dim x As Integer Dim nama(3) As String nama(0) = "Maman" nama(1) = "Aldi" nama(2) = "Alfa" nama(3) = "Ujang"
Console.WriteLine("====Sebelum di Urutkan====") For x = 0 To (nama.Length - 1) Console.WriteLine(CStr(x) + ". " + nama(x).ToString()) Next x
Jurusan.Sort() 'untuk mengurut secara Ascending Jurusan.Reverse() 'untuk mengurut secara Descending For Each element As String In Jurusan Console.WriteLine(element) Next Console.ReadKey() End Sub End Module
Console.WriteLine() Console.WriteLine() Array.Sort(nama) Console.WriteLine("====Sesudah di Urutkan====") For x = 0 To (nama.Length - 1) Console.WriteLine(CStr(x) + ". " + nama(x).ToString()) Next x Console.ReadKey() End Sub End Module
21
KISI-KISI UJIAN ALGO
• • • • • • • • •
Flowchart Pseudokode Operator Logika Percabangan Pengulangan Prosedure dan Function Array Pencarian dan Pengurutan Source Code VB.Net (Program) 22
Referensi
23