fbpx

Algoritma dan Pemrogaman : Contoh Program Pengurutan Bahasa Pascal

๐Ÿ“‹ Daftar Isi

Program Bubble Sort Descending

Procedure BubbleSort(var data: Larik; n:integer);
var
	i,j,temp:integer;
Begin
	for i:=1 to n-1 do
	for j:=n downto i+1 do
	if (data[j]>data[j-1]) then begin
	temp := data[j];
	data[j] := data[j-1];
	data[j-1] := temp;
	end;
End;

Program Selection Sort Descending


Procedure SelectionSort(var Data:Larik; n:integer);
var 
	i, j, min, temp:integer;
begin
	For i:=1 to n-1 do
	begin
	Min:=i;
	For j:= i+1 to n do
	begin
            If Data[j] > Data[min] then
            Min:=j;
	End;
	    Temp:=Data[i];
        Data[i]:=Data[min];
        Data[min]:=temp;
    End;
End;


Program Insertion Sort Descending

Procedure InsertionSort(var data:larik; n:integer);
var
	i,j,key:integer;
begin
	for i:=2 to n do
	begin
	key:=data[i];
	j:=i-1;
	while (j>0)and(data[j]<key) do begin
	data[j+1]:=data[j];
	j:=j-1;
	end;
		data[j+1]:=key;
	end;
End;


Program Mahasiswa Dengan Pengurutan

Program penugasan142;
uses crt;
type Daftar=record
        nim:string[9];
        nama:string[20];
        tugas:integer;
        uts:integer;
        uas:integer;
        praktikum:integer;
        na:real;
        grade:char;
    end;
    mhs=array[1..40]of Daftar;

var alpr:mhs;
    i,j,n,k,pilihprogram,pilihmax,pilihmin,pilihurut,pilihuts,pilihuas,pilihna,tkt,rombel:integer;
    lagiprogram,lagimenu,lagimax,lagimin,lagiurut,lagiuts,lagiuas,lagina:char;
    prod:string[2];
    x:string;

    function hitungnilai(tgs,uts,uas,prak:integer):real;
    begin
        hitungNilai:=(tgs*2+uts*3+uas*3+prak*2)/10;
    end;

    function konversigrade(nilai:real):char;
    var grade:char;
    begin
        case trunc(nilai) of
             0..19:grade:='E';
            20..39:grade:='D';
            40..59:grade:='C';
            60..79:grade:='B';
            80..100:grade:='A';
        end;
        konversigrade:=grade;
    end;

    procedure inputnilai(var list:mhs;var a:integer;var n:integer);
    begin
        write('Masukkan jumlah mahasiswa = ');readln(n);
        writeln;
        for i:=a+1 to a+n do
            with list[i] do
            begin
                writeln('Data Mahasiswa ke-',i);
                write('NIM       = ');readln(nim);
                write('Nama      = ');readln(nama);
                write('Tugas     = ');readln(tugas);
                write('UTS       = ');readln(uts);
                write('UAS       = ');readln(uas);
                write('Praktikum = ');readln(praktikum);
                na:=hitungnilai(tugas,uts,uas,praktikum);
                grade:=konversigrade(NA);
            end;
        a:=a+n;
    end;

    procedure tampildata(list:mhs;n:integer);
    var i,y:integer;
    begin
        clrscr;
        gotoxy(2,1);   write('Daftar Nilai Mahasiswa Kelas ',tkt,prod,rombel,' Politeknik Statistika STIS 2020/2021');
        gotoxy(1,3);  write('------------------------------------------------------------------------');
        gotoxy(2,4);  write('NO');
        gotoxy(8,4);  write('NIM');
        gotoxy(22,4); write('NAMA');
        gotoxy(40,4); write('TUGAS');
        gotoxy(48,4); write('UTS');
        gotoxy(55,4); write('UAS');
        gotoxy(61,4); write('NA');
        gotoxy(68,4); writeln('GRADE');
        gotoxy(1,5);Write('------------------------------------------------------------------------');
        y:=6;
        for i := 1 to n do
        begin
            with list[i] do
            begin
                gotoxy(2,y);write(i);
                gotoxy(8,y);write(nim);
                gotoxy(22,y);write(nama);
                gotoxy(40,y);write(tugas);
                gotoxy(48,y);write(uts);
                gotoxy(55,y);write(uas);
                gotoxy(61,y);write(na:0:2);
                gotoxy(68,y);writeln(grade);

            end;
            y:=y+1;
        end;
    end;

    function utsmax(var list:mhs;n:integer):integer;
    var i:integer;
    begin
        utsmax:=list[1].uts;
        for i:=2 to n do
            with list[i] do
                if uts > utsmax then utsmax:=uts;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (utsmax=uts) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai UTS tertinggi : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function uasmax(var list:mhs;n:integer):integer;
    var i:integer;
    begin
        uasmax:=list[1].uas;
        for i:=1 to n do
            with list[i] do
                if uas > uasmax then uasmax:=uas;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (uasmax=uas) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai UAS tertinggi : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function namax(var list:mhs;n:integer):real;
    var i:integer;
    begin
        namax:=list[1].na;
        for i:=1 to n do
            with list[i] do
                if na > namax then namax:=na;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (namax=na) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai Akhir tertinggi : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function utsmin(var list:mhs;n:integer):integer;
    var i:integer;
    begin
        utsmin:=list[1].uts;
        for i:=1 to n do
            with list[i] do
                if uts < utsmin then utsmin:=uts;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (utsmin=uts) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai UTS terendah : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function uasmin(var list:mhs;n:integer):integer;
    var i:integer;
    begin
        uasmin:=list[1].uas;
        for i:=1 to n do
            with list[i] do
                if uas < uasmin then uasmin:=uas;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (uasmin=uas) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai UAS terendah : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function namin(var list:mhs;n:integer):real;
    var i:integer;
    begin
        namin:=list[1].na;
        for i:=1 to n do
            with list[i] do
                if na < namin then namin:=na;

        j:=1;
        while (j<=n) do
        begin
            with list[j] do
                begin
                    if (namin=na) then break;
                end;
            j:=j+1;
        end;
        with list[j] do
        begin
            writeln('Mahasiswa dengan Nilai Akhir terendah : ',nama);
            writeln('NIM             = ',nim);
            writeln('Nilai Akhir     = ',NA:0:2);
            writeln('Nilai UTS       = ',uts);
            writeln('Nilai UAS       = ',uas);
            writeln('Nilai Praktikum = ',praktikum);
        end;
    end;

    function utsrata(var list:mhs;n:integer):real;
    var i,utstot:integer;
    begin
        utstot:=0;
        for i:=1 to n do
        with list[i] do
            utstot:=utstot+uts;
            utsrata:=utstot/n;
    end;

    function uasrata(var list:mhs;n:integer):real;
    var i,uastot:integer;
    begin
        uastot:=0;
        for i:=1 to n do
        with list[i] do
            uastot:=uastot+uas;
            uasrata:=uastot/n;
    end;

    function narata(var list:mhs;n:integer):real;
    var i:integer;
        natot:real;
    begin
        natot:=0;
        for i:=1 to n do
        with list[i] do
            natot:=natot+na;
            narata:=natot/n;
    end;

    procedure lagi;
    begin
        write('Ingin memeriksa menu yang lain (Y/T) ? = ');readln(lagimenu);
    end;

    function carinilai(var list:mhs; n:integer; var siapa:string):integer;
    var i: integer;
    begin
        begin
            i:=1;
            while (i<n) and (list[i].nama <> siapa) do i:=i+1;
            if (list[i].nama <> siapa) then carinilai:=0
            else carinilai:=i;
        end;

        if carinilai=i then
            begin
                writeln('Data ditemukan!');
                with list[i] do
                begin
                    writeln('Nama mahasiswa yang dicari : ',nama);
                    writeln('Dengan rincian data :');
                    writeln('NIM             = ',nim);
                    writeln('Nilai Akhir     = ',NA:0:2);
                    writeln('Nilai UTS       = ',uts);
                    writeln('Nilai UAS       = ',uas);
                    writeln('Nilai Praktikum = ',praktikum);
                end;
            end
        else writeln('Data tidak ditemukan!');
    end;

    //mengurutkan nama dengan bubblesort secara menaik (ascending) 12345
    procedure sortnama(var list:mhs; n:integer);
    var i,j:integer;
        tmp:daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if (list[j+1].nama<list[j].nama) then {penggunaan "<" untuk menaik}
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nim dengan bubble sort secara menaik (ascending) 54321
    procedure sortnim(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].nim<list[j].nim) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai akhir dengan bubble sort secara menurun (descending) 54321
    procedure dessortna(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].na>list[j].na) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai akhir dengan bubble sort secara menaik (ascending) 12345
    procedure assortna(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].na<list[j].na) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai uts dengan bubble sort secara menurun (descending) 54321
    procedure dessortuts(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].uts>list[j].uts) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai uts dengan bubble sort secara menaik (ascending) 12345
    procedure assortuts(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].uts<list[j].uts) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai uas dengan bubble sort secara menurun (descending) 54321
    procedure dessortuas(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].uas>list[j].uas) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    //mengurutkan nilai uas dengan bubble sort secara menaik (ascending) 12345
    procedure assortuas(var list:mhs; n:integer);
    var i,j:integer;
        tmp:Daftar;
    begin
        for i:=1 to n-1 do
        begin
            for j:=1 to n-1 do
                if(list[j+1].uas<list[j].uas) then
                begin
                    tmp:=list[j+1];
                    list[j+1]:=list[j];
                    list[j]:=tmp;
                end;
        end;
    end;

    procedure menu;
    begin
        repeat
        clrscr;
        writeln('Pilihlah menu berikut');
        writeln('1. Input Data');
        writeln('2. Tampilkan Data');
        writeln('3. Nilai Alpro Terbesar');
        writeln('4. Nilai Alpro Terkecil');
        Writeln('5. Rata-rata Nilai Alpro');
        writeln('6. Cari Nilai Mahasiswa');
        writeln('7. Urutkan Data');
        writeln('8. Keluar');
        write('Pilihan Anda ? (1/2/3/4/5/6/7/8) = ');readln(pilihprogram);

            case pilihprogram of
            1 : begin inputnilai(alpr,n,k); lagi; end;
            2 : begin tampildata(alpr,n); lagi; end;
            3 : begin
                    repeat
                    clrscr;
                    writeln('3. Nilai Alpro Terbesar');
                    writeln('   Silahkan pilih nilai yang ingin diperiksa');
                    writeln('   1. Nilai UTS Terbesar');
                    writeln('   2. Nilai UAS Terbesar');
                    writeln('   3. Nilai Akhir Terbesar');
                    write('Pilihan Anda (1/2/3) ? = ');readln(pilihmax);
                        case pilihmax of
                        1 : utsmax(alpr,n);
                        2 : uasmax(alpr,n);
                        3 : namax(alpr,n);
                        end;
                    write('Ingin memeriksan nilai Alpro Terbesar Lagi ? (Y/T) = ');readln(lagimax);
                    until (lagimax='T') or (lagimax='t');
                    lagi;
                end;
            4 : begin
                    repeat
                    clrscr;
                    writeln('4. Nilai Alpro Terkecil');
                    writeln('   Silahkan pilih nilai yang ingin diperiksa');
                    writeln('   1. Nilai UTS Alpro Terkecil');
                    writeln('   2. Nilai UAS Alpro Terkecil');
                    writeln('   3. Nilai Akhir Alpro Terkecil');
                    write('Pilihan Anda (1/2/3) ? = ');readln(pilihmin);
                        case pilihmin of
                        1 : utsmin(alpr,n);
                        2 : uasmin(alpr,n);
                        3 : namin(alpr,n);
                        end;
                    write('Ingin memeriksan nilai Alpro Terkecil Lagi ? (Y/T) = ');readln(lagimin);
                    until (lagimin='T') or (lagimin='t');
                    lagi;
                end;
            5 : begin
                    clrscr;
                    writeln('Rata-rata Nilai UTS Alpro adalah   ',utsrata(alpr,n):0:2);
                    writeln('Rata-rata Nilai UAS Alpro adalah   ',uasrata(alpr,n):0:2);
                    writeln('Rata-rata Nilai Akhir Alpro adalah ',narata(alpr,n):0:2);
                    lagi;
                end;
            6 : begin
                    clrscr;
                    writeln('6. Cari Nilai Mahasiswa');
                    write('Masukkan nama mahasiswa = ');readln(x);
                    carinilai(alpr,n,x);
                    lagi;
                end;
            7 : begin
                    repeat
                    clrscr;
                    writeln('7. Urutkan Data');
                    writeln('   Urutkan data berdasarkan : ');
                    writeln('   1. Nama (Terurut Abjad)');
                    writeln('   2. NIM');
                    writeln('   3. Nilai UTS');
                    writeln('   4. Nilai UAS');
                    writeln('   5. Nilai Akhir');
                    write('   Pilihan Anda (1/2/3/4/5) ? = ');readln(pilihurut);
                        case pilihurut of
                        1 : begin
                                sortnama(alpr,n);
                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nama (Terurut Abjad)!');
                            end;
                        2 : begin
                                sortnim(alpr,n);
                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan NIM');
                            end;
                        3 : begin
                                repeat
                                clrscr;
                                writeln('7. Urutkan Data');
                                writeln('   3. Nilai UTS');
                                writeln('      Urutkan data berdasarkan : ');
                                writeln('      1. Nilai UTS terbesar ke terkecil');
                                writeln('      2. Nilai UTS terkecil ke terbesar');
                                write('   Pilihan Anda (1/2) ? = ');readln(pilihuts);
                                        case pilihuts of
                                        1 : begin
                                                dessortuts(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai UTS terbesar');
                                            end;
                                        2 : begin
                                                assortuts(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai UTS terkecil ');
                                            end;
                                        end;
                                write('Ingin mengurutkan data UTS lagi ? (Y/T) = ');readln(lagiuts);
                                until (lagiuts='T') or (lagiuts='t');
                            end;
                        4 : begin
                                repeat
                                clrscr;
                                writeln('7. Urutkan Data');
                                writeln('   4. Nilai UAS');
                                writeln('      Urutkan data berdasarkan : ');
                                writeln('      1. Nilai UAS terbesar ke terkecil');
                                writeln('      2. Nilai UAS terkecil ke terbesar');
                                write('   Pilihan Anda (1/2) ? = ');readln(pilihuas);
                                        case pilihuas of
                                        1 : begin
                                                dessortuas(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai UAS terbesar');
                                            end;
                                        2 : begin
                                                assortuas(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai UAS terkecil');
                                            end;
                                        end;
                                write('Ingin mengurutkan data UAS lagi ? (Y/T) = ');readln(lagiuas);
                                until (lagiuas='T') or (lagiuas='t');
                            end;
                        5 : begin
                                repeat
                                clrscr;
                                writeln('7. Urutkan Data');
                                writeln('   5. Nilai Akhir');
                                writeln('      Urutkan data berdasarkan : ');
                                writeln('      1. Nilai Akhir terbesar ke terkecil');
                                writeln('      2. Nilai Akhir terkecil ke terbesar');
                                write('    Pilihan Anda (1/2) ? = ');readln(pilihna);
                                        case pilihna of
                                        1 : begin
                                                dessortna(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai Akhir terbesar');
                                            end;
                                        2 : begin
                                                assortna(alpr,n);
                                                writeln('Data yang dimasukkan sudah diurutkan berdasarkan Nilai Akhir terkecil');
                                            end;
                                        end;
                                write('Ingin mengurutkan data nilai akhir lagi ? (Y/T) = ');readln(lagina);
                                until (lagina='T') or (lagina='t');
                            end;
                        end;
                        write('Ingin mengurutkan data berdasarkan kasus yang lain ? (Y/T) = ');readln(lagiurut);
                    until (lagiurut='T') or (lagiurut='t');
                    lagi;
                end;
            8 : begin
                    clrscr;
                    writeln('Anda berhasil keluar dari program entri data Mahasiswa');
                    writeln('Terimakasih :)');
                    exit;
                end;
            end;

        until (lagimenu='t') or (lagimenu='T');
        writeln('Anda berhasil keluar dari program entri data Mahasiswa');
        writeln('Terima kasih :)');
    end;

begin
    clrscr;
    writeln('Selamat Datang Di Program Entri Mahasiswa');
    writeln('Inputkan Identitas Kelas Terlebih Dahulu');
    write('Tingkat           (1/2/3/4)                       = ');readln(tkt);
    write('Prodi             (KS/ST/D3/SD/SI/SE/SK)          = ');readln(prod);
    write('Rombongan Belajar (ST =1-10, KS=1-5, D3=1-2, dst) = ');readln(rombel);
    menu;
end.


Materi Lengkap

Silakan baca juga beberapa artikel menarik kami tentang Pengurutan, daftar lengkapnya adalah sebagai berikut.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!