Download - Laporan Job Ascending Descending
-
7/22/2019 Laporan Job Ascending Descending
1/20
LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
ASCENDING DAN DESCENDING DENGAN INSERTION SORT
Dosen Pengampu : Nuryake Fajaryati, M.Pd
DISUSUN OLEH :
NAMA : DEWI WULANDARI
NIM : 12502244004
PROGRAM STUDI PENDIDIKAN TEKNIK ELEKTRONIKA
JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
2014
-
7/22/2019 Laporan Job Ascending Descending
2/20
A. KompetensiMengenal dan memahami algoritma mengurutkan data descending dan ascending dengan
menggunakan insertion sort.
B. Sub KompetensiDapat menyelesaikan suatu masalah dengan mengaplikasikan algoritma algoritma
mengurutkan data descending dan ascending dengan menggunakan insertion sort.
C.
Dasar TeoriPengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang
lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan
elemen, maka elemen-elemen lain akan bergeser ke belakang.
D. Langkah Kerja1. Pahami permasalahan yang diberikan dengan sebaik-baiknya.2. Buatlah Algoritma baik dalam bentuk Narasi, Flow Chart, dan Pseudo Code untuk
menyelesaikan masalah yang diberikan.
3. Implementasikan algoritma yang anda buat ke dalam bentuk program sesuai denganbahasa pemrograman yang anda kuasai.
E. Pembahasan Bahan Diskusi1. Membuat program mengurutkan data secara ascending menggunakan insertion sort.
Jawab :
a. Bahasa alamiahAlgoritma program utama
1. Mulai2. Masukkan input jumlah data dan disimpan dalam variabel jml3. Masukkan data sebanyak jumlah data input4. Memanggil subrutin insertion sort5. Tulis hasil sorting6. Selesai
-
7/22/2019 Laporan Job Ascending Descending
3/20
Algoritma Subrutin insertionsort
1. Menampilkan data awal dengan cara memanggil subrutin tampilkan.2. Mengisi variabel i dengan indeks terkecil.3. Mengisi variabel k (indeks data terkecil sementara) dengan i.4. Membandingkan data dengan indeks k dengan data di atasnya. Saat data yang
dibandingkan lebih kecil dari data dengan indeks k maka k diganti dengan indeks
data yang lebih kecil tersebut. Langkah ini dilakukan sampai data terakhir.
5. Apakah posisi data terkecil berubah (ik).6. Jika ya maka sisipkan data dengan indeks k ke posisi indeks i.7.
Menambah nilai i dengan 1.
8. Apakah i > dari jml(jumlah seluruh data)-1.9. Jika tidak maka kembali ke langkah no 3.10.Return.
Algoritma subrutin tampilkan
1. Menuliskan semua isi dari data array2. Return
Algoritma subrutin geser (asal, tujuan)
1. Meyakinkan data dengan indeks asal menjadi variabel buff2. Memindahkan semua data yang berindeks asal dengan tujuan ke indeks di atasnya3. Mengisikan data indeks tujuan dengan data buff4. Return
b. Flowchart
-
7/22/2019 Laporan Job Ascending Descending
4/20
Gambar 1. Flowchart program utama
-
7/22/2019 Laporan Job Ascending Descending
5/20
Gambar 2. Flowchart subrutin tampilkan
Gambar 3. Flowchart subrutin geser
-
7/22/2019 Laporan Job Ascending Descending
6/20
Gambar 4. Flowchart subrutin insertionsort
c. PseudocodeAlgoritma : program ascending dengan insertion sort
Deklarasi :
input:real;
jml,i:byte;
data :array [1..100] of integer;
procedure geser (asal,tujuan : integer)
var buff,i: integer;
begin
buff:=data[asal];
-
7/22/2019 Laporan Job Ascending Descending
7/20
for i:=asal downto tujuan +1 do
begin
data[i] := data[i-1];
end
data[tujuan] := buff;
end;
procedure tampilkan;
var i:byte;
begin
for i:=1 to jml do
write(data[i],' ');writeln;
end;
procedure insertion_sort;
var i,j,k:byte;
begin
write('Data belum terurut : ');
tampilkan;
for i:= 1 to jml-1 dobegin
k:=i;
for j:=i+1 to jml do
if(data[k] > data[j]) then k:=j;
if (ik) then geser(k,i);
tampilkan;
end;
end;
begin
write(' Inputkan banyak data ');
read(jml);
for i:=1 to jml do
begin
Write(' Inputkan data ',i,' ');
readln(data[i]);
writeln;
writeln(Mengurutkan data secara ascending
)
-
7/22/2019 Laporan Job Ascending Descending
8/20
insertion_sort
write(Data sudah terurut : )
tampilkan;
end.
d. Program
-
7/22/2019 Laporan Job Ascending Descending
9/20
e. Tampilan program
2. Membuat program mengurutkan data secara descendingmenggunakan insertion sort.
Jawab :
a. Bahasa alamiah
-
7/22/2019 Laporan Job Ascending Descending
10/20
Algoritma program utama
1. Mulai2. Masukkan input jumlah data dan disimpan dalam variabel jml3. Masukkan data sebanyak jumlah data input4. Memanggil subrutin insertion sort5. Tulis hasil sorting6. Selesai
Algoritma Subrutin insertionsort
1.
Menampilkan data awal dengan cara memanggil subrutin tampilkan.2. Mengisi variabel i dengan indeks terkecil.3. Mengisi variabel k (indeks data terkecil sementara) dengan i.4. Membandingkan data dengan indeks k dengan data di atasnya. Saat data yang
dibandingkan lebih besar dari data dengan indeks k maka k diganti dengan indeks
data yang lebih besar tersebut. Langkah ini dilakukan sampai data terakhir.
5. Apakah posisi data terkecil berubah (ik).6. Jika ya maka sisipkan data dengan indeks k ke posisi indeks i.7. Menambah nilai i dengan 1.8. Apakah i > dari jml(jumlah seluruh data)-1.9. Jika tidak maka kembali ke langkah no 3.10.Return.
Algoritma subrutin tampilkan
1. Menuliskan semua isi dari data array2. Return
Algoritma subrutin geser (asal, tujuan)
1. Meyakinkan data dengan indeks asal menjadi variabel buff2. Memindahkan semua data yang berindeks asal dengan tujuan ke indeks di atasnya3. Mengisikan data indeks tujuan dengan data buff4. Return
-
7/22/2019 Laporan Job Ascending Descending
11/20
b. Flowchart
Gambar 5. Flowchart program utama
-
7/22/2019 Laporan Job Ascending Descending
12/20
Gambar 6. Flowchart subrutin tampilkan
-
7/22/2019 Laporan Job Ascending Descending
13/20
Gambar 7. Flowchart subrutin geser
Gambar 8. Flowchart subrutin insertionsort
c. PseudocodeAlgoritma : program descending dengan insertion sort
Deklarasi :
input:real;
jml,i:byte;
data :array [1..100] of integer;
procedure geser (asal,tujuan : integer)
var buff,i: integer;
begin
-
7/22/2019 Laporan Job Ascending Descending
14/20
buff:=data[asal];
for i:=asal downto tujuan +1 do
begin
data[i] := data[i-1];
end
data[tujuan] := buff;
end;
procedure tampilkan;
var i:byte;
begin
for i:=1 to jml dowrite(data[i],' ');
writeln;
end;
procedure insertion_sort;
var i,j,k:byte;
begin
write('Data belum terurut: ');
tampilkan;for i:= 1 to jml-1 do
begin
k:=i;
for j:=i+1 to jml do
if(data[k] < data[j]) then k:=j;
if (ik) then geser(k,i);
tampilkan;
end;
end;
begin
write(' Inputkan banyak data ');
read(jml);
for i:=1 to jml do
begin
Write(' Inputkan data ',i,' ');
readln(data[i]);
writeln;
-
7/22/2019 Laporan Job Ascending Descending
15/20
writeln(Mengurutkan data secara descending)
insertion_sort
write(Data sudah terurut: )
tampilkan;
end.
d. Program
-
7/22/2019 Laporan Job Ascending Descending
16/20
e. Tampilan runningprogram
3. Membuat program mengurutkan data secara ascending menggunakan Exchange sort.Jawab :
a. Bahasa alamiahAlgoritma program utama
1. Mulai
-
7/22/2019 Laporan Job Ascending Descending
17/20
2. Inisialisasikan i = 0 dan j = 0
3. Ambil data pembanding dari indek j (data[j]).
4. Bandingkan data[j] dengan data[j+1]
5. Apakah data[j] > data[j+1].
Jika ya ke step 6, jika tidak langsung ke step 7.
6. Memanggil prosedur tukar.
7. Lakukan penambahan indeks j = j+1
8. Apakah nilai j = jumlah data 1?
Jika ya ke step 9, jika tidak, kembali ke step 3.
9. Lakukan penambahan indeks i = i+110. Apakah nilai i = jumlah data.
Jika ya ke step 11 , jika tidak, kembali ke step 3.
11. Selesai
b. Flowchart
-
7/22/2019 Laporan Job Ascending Descending
18/20
c. PseudocodeAlgoritma : Mengurutkan data secara ascending dg exchange sort
Deklarasi :
a,b,c,d : integer;
q,r : integer;
i,j : integer;
data : array[1..4] of integer;
procedure tukar(var a,b:integer);
var c : integer;
begin
c:=a;a:=b;
b:=c;
end;
procedure tampil(var c:integer);
var r : integer;
begin
c:= c+1;
write('step ke ',c,' : ');
for r:= 1 to 4 do
begin
write(data[r],' ');
end;
end;
begin
d:= 0;
for q:= 1 to 4 do
begin
write('Data ke ',q,' = ');
read(data[q]);
end;
for i:= 4 downto 2 do
begin
for j:= 1 to i-1 do
begin
if data[j]>data[j+1] then
-
7/22/2019 Laporan Job Ascending Descending
19/20
begin
tukar(data[j],data[j+1]);
tampil(d);
end;
end;
end;
end.
d. Programuses crt;
var
a,b,c,d:integer;
q,r:integer;
i,j:integer;
data:array[1..4] of integer;
procedure tukar(var a,b:integer);
var c:integer;
begin
c:=a;
a:=b;
b:=c;
end;
procedure tampil(var c:integer);
var r : integer;
begin
c:= c+1;
write('step ke ',c,' ==> ');
for r:= 1 to 4 do
begin
write(data[r],' ');
end;
end;
begin
d:= 0;
for q:= 1 to 4 do
begin
write('Data ke ',q,' = ');
read(data[q]);
end;
-
7/22/2019 Laporan Job Ascending Descending
20/20
for i:= 4 downto 2 do
begin
for j:= 1 to i-1 do
begin
if data[j]>data[j+1] then
begin
tukar(data[j],data[j+1]);
writeln(' ');
tampil(d);
writeln(' ');
end;
end;end;
end.
e. Tampilan runningprogram