Laporan Job Ascending Descending

  • Upload
    sfkryti

  • View
    309

  • Download
    2

Embed Size (px)

Citation preview

  • 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