Wednesday, December 5, 2012

Struktur Data Komplek Turbo Pascal


            Salah satu kelebihan dalam bahasa pascal adalah tersedianya berbagai struktur data yang bisa dikatakan hanya terbatas pada imajinasi programer dalam mengaplikasikannya, beberapa struktur data yang komplek dengan manupulasi yang berbeda dengan manupulasi data original dan data real. Struktur Data ini lebih efisien jika dideklarasikan dibawah keyword type sehingga dengan demikian kita mendapat data jenis baru yang sesuai dengan keinginan kita, dengan mendeklarasikan tipe data tertentu, maka akan didapat beberapa keuntungan antara lain :

Ø   Tidak memerlukan deklarasi yang berulang – ulang bila diperlukan banyak data yang bertipe komplek yang sama
Ø   Tipe data yang komplek yang dideklarasikan dapat dipergunakan sebagai parameter dalam sebuah fungsi
Ø   Memungkinkan membuat tipe data baru yang merupakan kumpulan dari tipe data – tipe data yang baru pula
Ø   Programer tidak terbatas dengan tipe data yang baku yang disediakan oleh bahasa pascal
Ø   Dengan tipe data ini program lebih dapat dimengerti sehingga seolah-olah programer menulis bahasa pascal dalam bahasa inggris
Ø   Untuk pelindung atau proteksi bagi keamanan program
Array
Adalah kumpulan dari beberapa nilai semuanya memiliki tipe data yang sama. Syntax penulisannya :
Var
                Nama Variabel : array[indeks Awal ... Indeks Akhir] of Tipedata;
Begin

Dengan nama variabel adalah nama yang kita berikan untuk mengidentifikasi data array tersebut, sedangkan indeks awal dan indeks akhir berturut – turut merupakan indeks array terkecil dan indeks array terbesar, yang menentukan beberapa banyak elemen array yang kita pesan.


Latihan – Latihan Program
Program Pengurutan
Uses Crt;
Var
                                Data                       : Array[1..100] of integer;
I,J,A,N    :Integer;
Begin
                Clrscr;
Write(‘Masukan Data        :’);Readln(n);
Writeln(‘Data sebelum Diurutkan’);
For I :=1 to n do
Begin
                                Write(‘Masukan Nilai ke : ‘,I:2);Readln(Data[I]);
End;
For I:=1 to n do
For J:=I + 1 to n do
Begin
                If Data[I] < Data[J] then
Begin
                A:=Data[I];
Data[I] := Data[J];
Data[J] := A
End;
                End;
End;
Writeln;
Writeln(Data setelah diurut’);
For I:=i to n do
Begin
                Write(‘ ‘,Data[I]);
Readln;
End.

Program Perkalian_Matrik;
Uses crt
Type
            Larik          : Array[1..25,1..25] of real;
Var
            I,J,K            : Byte;
            L,M,N        : Byte
            A,B,C         : Larik;
Begin
            Clrscr;
Write(‘Baris Matrik pertama                                             : ‘);readln(M);
Write(‘Kolom Matrik Pertama/ Baris Matrik Kedua    : ‘);readln(N);
Write(‘Kolom Matrik Kedua                                             : ‘);readln(L);
Writeln(‘Matrik yang pertama                                          : ‘);
For I :=1 to M do
Begin
            For J:=1 to N do
            Begin
            Write(‘Nilai [‘, I ,’ , ’,J,’ , ’] ? ‘);readln(A[I,J]);
            End;writeln;
End;
Writeln;
Writeln(‘Matrik yang kedua’);
For i:= 1 to n do
Begin
            For J:= 1 to L do
            Begin
            Write(‘Nilai [‘, I ,’ , ’,J,’ , ’] ? ‘);readln(B[I,J]);
            End;writeln;
End;
{proses Perkalian matrik }
For i:=1 to M do
Begin
            For j := 1 to N do
            Begin
                C[I,J] :=0;
                For k:=1 to L do
                                C[I,J]:= C[I,J] + (A[I,K] * B[I,K]);
            End;
End;
Clrscr;
Writeln(‘Hasil Dari Perkalian Matrik : ‘);
Writeln;
For I:=1 to M do
Begin
            For J:=1 to L do
            Write(C[I,J]:9:2);Writeln;
End;readln;
End.
Program Penjualan_Barang
Uses Crt;
Var
            I                                  : Integer;
            NB                              : Array[1..8] of String;
            No, SA,BT,Sisa        : Array[1..8] of Integer;
Begin
            Clrscr;
            Writeln(‘@@@@@@@@@@@@@@@@@@@@@@@’);
            Writeln(‘                    Data Stok Barang di Gudang                                            ‘);
            Writeln(‘No.              Nama Barang                      Stok Awal             Terjual   Sisa’);
For i:= i to 8 do
Begin 
            Gotoxy(2,4+1);Readln(No[I]);
            Gotoxy(5,4+1);Readln(NB[I]);
            Gotoxy(20,4+1);Readln(SA[I]);
            Gotoxy(25,4+1);Readln(BT[I]);
            Data[I] := (SA[I] – BT[I]);
            Gotoxy(35,4+I);Write(Data[I]);
End;
Readln;
End;
Record
                        Suatu jenis struktur data komplek yang memungkinkan untuk mencampur beberapa jenis data dalam satu struktur. Jika elemen dari struktur  data array  haruslah memiliki tipe data yang sama, maka pada struktur record batasan ini tidak ada. Record dapat memiliki tipe data apa saja, Syntak penulisannya :

                        Type
                                                Namarecord = Record
                                                                NamaVariabel     : Tipedata
                                                                NamaVariabel     : Tipedata
                                                                NamaVariabel     : Tipedata
                                                End;
                        Var
                                NamaVariabel                     : Tipe Data Record
                       
Latihan –latihan Program
Program_data_bertipe_komplek;
Uses crt;
Type
            Data_Pegawai = Record
                                Nip                                          : Integer;
                                Nama,Alamat,Jabatan      : String;
                                Gol                                          : Char;
                                Gapok,Pajak,Gaber            : Real;
            End;
Var
            Pegawai                     : Array[1..2] of Data_pegawai;
            I                                  : Integer;
Begin
            Clrscr;
            Writeln(‘************************************’);
            Writeln(‘                    Data Pegawai Swasta ‘);
            Writeln(‘************************************’);
            For i := 1 to 2 do
            Begin
                        Write(‘ Nip                                    :’);readln(pegawai[I].nip);
                        Write(‘ Nama Pegawai               :’);readln(pegawai[I].nama);
                        Write(‘ Alamat Pegawai             :’);readln(pegawai[I].alamat);
                        Write(‘ Jabatan Pegawai            :’);readln(pegawai[I].jabatan);
                        Write(‘ Golongan                         :’);readln(pegawai[I].gol);
                        Write(‘ Gaji Pokok                      :’);readln(pegawai[I].gapok);
                        Pegawai[I].Pajak := 0,05 * Pegawai[I].Gapok;
                        Write(‘ Pajak                                :’);Readln(Pegawai[I].pajak:10:0);
                        Pegawai[I].Gaber := Pegawai[I].Gapok - Pegawai[I].Pajak;
                        Write(‘ Gaji Bersih                       :’);readln(pegawai[I].gaber:10:0);
            End;
            Readln;
End.
Program Rata_rata_nilai_mahasiswa;
Uses crt;
Const
            Jumlahtes  =  4;
            SiswaMax = 40;
Type
            Data_Siswa = Record
                                Nim                                        : Integer;
                                Nama                                     : String[20];
                                Nilai                                        : array[1..Jumlahtes]of real;
                                Rata_rata                             : Real;
            End;
            ArraySiswa = array[1..SiswaMax] Of data_siswa;
Var
            Jumlah                       : 1..SiswaMak;
            I,J                                : Integer;
            Total_nilai                                : real;
            Siswa                          : ArraySiswa;
            Temporer                  : Data_Siswa;
Begin
            Clrscr;
            Write(‘Jumlah Data                                                :’);Readln(Jumlah);Writeln;
            For I:=1 to Jumlah do
            Begin
                                Write(‘Nomer Induk Mahasiswa      :’);readln(Siswa[I].Nim);
                                Write(‘Nomer Nama Mahasiswa     :’);readln(Siswa[I].Nama);
                                Write(‘Nilai Yang di  Dapat               :’);
                                For   I:=1 to J do
                                Begin
                                                Write(J:2,’ ‘);Readln(Siswa[I].Nilai[J]);
                                End;Writeln;
            End;
            For I:=1 to SiswaMak do
            Begin
                                Total_Nilai :=0;
                                For J:= 1 to JumlahTes do
                                begin
                                                Total_Nilai := Total_Nilai + Siswa[I].Nilai[J];
                                                Siswa[I].Rata-rata :=Total_Nilai / Jumlahtes;
                                End;
            End;
            For I:=1 to Jumlah – 1 do
                                For J:= I+1 to jumlah do
                                                If siswa[I].Rata_rata < Siswa[J].Rata-rata then
                                                Begin
                                                                Temporer := siswa[I];
                                                                Siswa[I] := Siswa[J];
                                                                Siswa[J]:= Temporer;
                                                End;
            Writeln;
            Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
            Writeln(‘ | Nim Siswa                              Nama Siswa         Nilai Rata – Rata |‘);
            Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
            For I := 1 Jumlah do
                Writeln(Siswa[I].Nim:5,                                      Siswa[I].Nama:15,
                                Siswa[I].Rata-rata:10:2);
            Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
            Readln;
End.
Kasus
Buatlah program untuk mengunakan record untuk menghitung dua data total gaji pegawai, dengan ketentuan  Nip,Nama,Pegawai alamat Pegawai, Jabatan, Golongan dan jumlah anak
Jika Gol = 1 gapok = 200000 dan tunjangan Jabatan = 100 % * Gapok
Gol = 2 gapok = 1500000 dan tunjangan Jabatan = 50 % * Gapok
Gol = 3 gapok = 1000000 dan tunjangan Jabatan = 30 % * Gapok
Gol = 4 gapok = 750000 dan tunjangan Jabatan = 20 % * Gapok
Tunjangan anak dihitung sampai anak ke 3 = 20 % dari gapok
Tunjangan Suami/Istri = 15 % dari Gapok. Untuk mencari Gator adalah gapok ditambah tunjangan Jabatan ditambah tunjangan anakditambah tunjangan suami / istri. Pajak didapat 2 % dari gaji pokok dan untuk gaber kalian cari sendiri.



Output : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                                Total Gaji Pegawai Swasta
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nim                                                            :              
Nama Pegawai                                         :
Alamat Pegawai                                      :
Jabatan Golongan                                   :
Jumlah Anak                                            :
Gaji Pokok                                                :
Tunjangan Jabatan                                                :
Tunjangan Anak                                     :
Tunjangan Suami / Istri                         :
Gaji Kotor                                                 :                              
Pajak                                                         :
Gaji Bersih                                                :

Nim                                                            :
Nama Pegawai                                         :
Alamat Pegawai                                      :
Jabatan Golongan                                   :
Jumlah Anak                                            :
Gaji Pokok                                                :
Tunjangan Jabatan                                                :
Tunjangan Anak                                     :
Tunjangan Suami / Istri                         :
Gaji Kotor                                                 :                              
Pajak                                                         :
Gaji Bersih                                                :

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

No comments:

Post a Comment