Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Record & Pointer Dalam Pascal


Hallo Sabahat Viyovi...
Kembali bersama kami dengan pembagi ilmu untuk kamu yang ingin belajar di dunia IT. Disini kami akan memberikan penjelasan tentang Program lagi nih, yaitu RECORD & POINTER. Mari baca penjelasan dari kami yaaa

a. Record
    Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. Suatu tipe Record dideklarasikan dengan bentuk sebagai berikut :

         Type Identifier = Record
                  Nama_field1 : tipe1;
                  Nama_field2 : tipe2;
                  Nama_field3 : tipe3;
                  ...
                  Nama_fieldn : tipe4;
         end;

  Masing-masing data field dapat berupa satu atau beberapa nama pengenal dan masing-masing dinamakan field.
Contoh Penggunaan Record dalam Pascal :

uses crt;
type recbio = record
     nama : string[25];
     alamat : string[35];
     nohp : string[12];
end;
var
   bio1,bio2 : recbio;
begin
     clrscr;
     with bio1 do
     begin
     nama :='Namaku';
     alamat :='Alamatku';
     nohp:='No Hpku';
     end;

     bio2:=bio1;

     with bio2 do
     begin
     writeln('Nama   :',nama);
     writeln('Alamat :',alamat);
     writeln('No Hp  :',nohp);
     end;
readkey;
end.
program recordn;
uses crt;
type biodata = record
     nama : string[25];
     nim : string[10];
     umur : integer;
end;
var
   data : array[1..10] of biodata;
   n,i : integer;
begin
     clrscr;
     write('Masukkan Banyak Data :');
     readln(n);
     clrscr;
     for i:= 1 to n do
     begin
          writeln('Masukkan Data ke ',i);
          with data[i] do
          begin
               write('Masukkan Nama Anda :');
               readln(nama);
               write('Masukkan NIM Anda :');
               readln(nim);
               write('Masukkan Umur Anda :');
               readln(umur);
          end;
     end;

     clrscr;
     for i:= 1 to n do
     begin
          writeln('Data ke ',i);
          with data[i] do
          begin
               writeln('Nama Anda :',nama);
               writeln('NIM Anda  :',NIM);
               writeln('Umur Anda :',umur);
          end;
          writeln;
     end;
readkey;
end.

b. Record Dalam Record (Nested Record) 
Record di dalam record adalah record yang mempunyai tipe record lain. 
Contoh Penulisan :

program recordinrecord;
uses crt;

type alamat = record
     jalan : string;
     no : integer;
     kota : string[25];
end;
    identitas = record
    nama : string[25];
    nim : string[10];
    alamatku : alamat;
end;

var
   data : identitas;

begin
     clrscr;
     with data do
     begin
          write('Masukkan Nama Anda    :');
          readln(nama);
          write('Masukkan NIM Anda     :');
          readln(nim);
          writeln('Masukkan Alamat Anda:');
          with alamatku do
          begin
               write('          Jalan :');
               readln(jalan);
               write('          Nomor :');
               readln(no);
               write('          Kota  :');
               readln(kota);
          end;
     end;
     clrscr;
     writeln('Data Yang Anda Masukkan');
     with data do
     begin
          writeln('Nama   :',nama);
          writeln('NIM    :',nim);
          writeln('Alamat :');
          with alamatku do
          begin
               writeln('        Jalan :',jalan);
               writeln('        No    :',no);
               writeln('        Kota  ;',kota);
          end;
     end;
readkey;
end.

c. Pointer

Tipe Data Pointer adalah tipe data yang berisi alamat memori dari sebuah variabel. Pointer merupakan jenis perintah yang disediakan oleh bahasa pemrograman untuk melakukan operasi terhadap suatu alamat memori seperti penunjukan alamat, pengaksesan alamat dan sebagainya. Tipe data pointer bersifat dinamis, variabel akan dialokasikan hanya pada saat dibutuhkan dan sesudah tidak dibutuhkan lagi dapat dialokasikan kembali.Pendeklarasian variabel pointer tidak berbeda jauh dengan pendeklarasian variabel biasa, hanya perlu menambahkan simbol "^" sebelum tipe datanya. 

Bentuk umum deklarasi pointer :
  Nama_var : ^tipe_data;

Contoh Penulisan Pointer :
program tipe_pointer;
uses crt;
var
   kata : string;
   ptr : ^string;
begin
     clrscr;
     kata:='Mimi';
     writeln('Variabel Kata Berisi          :',kata);

     ptr:=@kata;
     writeln('Variabel ptr merujuk ke nilai :',ptr^);
readkey;
end.

program tipe_pointer;
uses crt;
var
   angka : integer;
   pointer_angka : ^integer;
begin
     clrscr;
     angka:=99;
     writeln('Variabel Angka Berisi :',angka);

     pointer_angka:=@angka;
     writeln('Variabel pointer merujuk ke nilai :',pointer_angka^);

     angka:=74;
     writeln('Variabel pointer merujuk ke nilai :',pointer_angka^);

readkey;
end.

Sekian artikel yang dapat kami sampaikan mengenai Record & Pointer. Semoga bermanfaat untuk kita semua. Sering baca-baca artikel dari kami yaaa...
See you....
  

Asah Kemampuanmu Dengan Pascal

Hasil gambar untuk program pascal 
Hallo Sahabat Viyovi , disini saya memberikan beberapa soal beserta jawaban dalam pascal. Agar kamu lebih mahir dalam pascal . Alangkah baiknya jika kamu mengerjakan soal tersebut tanpa melihat kunci jawabannya terlebih dahulu.Selamat mencoba..
      1.     Buatlah program untuk menyelesaikan masalah :

a.       Menentukan tahun kabisat !

b.      Mencari akar-akar sebuah persamaan kuadrat !

c.       Mencari nilai terbesar dari 3 buah bilangan yang diinputkan oleh user !

d.      Menentukan sebuah bilangan yang diinputkan adalah bilangan ganjil, genap, atau nol !

       2.     Buatlah sebuah program menerima inputan berupa biodata anda kemudian tampilkan hasilnya kelayar   monitor , dengan menggunakan record !

       3.     Buatlah program perkalian matriks, dengan jumlah kolom dan baris ditentukan oleh user untuk matriks- 1 dan matriks- 2. Dan program dapat menentukan apakah operasi perkalian dapat dilanjutkan atau tidak, dengan menggunakan array !

       4.     Buat program untuk menentukan matriks transpose, untuk jumlah baris dan kolom di tentukan oleh user, dengan menggunakan array !

      5.       Buatlah program penjumlahan matriks, dengan jumlah kolom dan baris ditentukan oleh user untuk matriks 1 dan matriks 2 . Dan program dapat menentukan apakah kedua matriks tersebut dapat dijalankan atau tidak.

      6.      Buatlah program menghitung luas segitiga dengan menggunakan fungsi!

      7.      Buat program dari n! Secara rekusi !

      8.      Buat program menghitung rata – rata dari sejumlah bilangan yang diinputkan user dengan fungsi !

      9.      Buatlah sebuah program untuk membuat tampilan seperti berikut :

 

      10.   Buatlah sebuah program untuk membuat tampilan sebagai berikut :

 


Kunci Jawaban :

      1.       A.

uses crt;

var

   tahun : longint;

begin

     clrscr;

     write('Masukkan Tahun :');

     readln(tahun);

     if (tahun mod 4=0) then

     begin

     write(tahun,' Merupakan Tahun Kabisat');

     end

        else

            begin

            write(tahun,' Bukan Merupakan Tahun Kabisat');

            end;

readkey;

end.



B.

uses crt;

function pk1 (a,b,c : integer) : real;

begin

     pk1 :=(-b+(sqrt(sqr(b)-4*a*c)))/2*a;

end;

function pk2 (a,b,c : integer) : real;

begin

     pk2 :=(-b-(sqrt(sqr(b)-4*a*c)))/2*a;

end;

var

   a,b,c : integer;

begin

     clrscr;

     write('Masukkan Nilai A :');

     readln(a);

     write('Masukkan Nilai B :');

     readln(b);

     write('Masukkan Nilai C :');

     readln(c);

     writeln('Hasil 1          :',pk1(a,b,c):0:2);

     writeln('Hasil 2          :',pk2(a,b,c):0:2);

readkey;

end.



C.

uses crt;

var

   a,b,c : longint;

begin

     clrscr;

     write('Masukkan Nilai Pertama :');

     readln(a);

     write('Masukkan Nilai Kedua   :');

     readln(b);

     write('Masukkan Nilai Ketiga  :');

     readln(c);

     if (a>b) and (a>c) and (b>c) then

     begin

     write('Nilai Terbesar - Terkecil = ',a,' ',b,' ',c);

     end

        else

            if (a>b) and (a>c) and (b<c) then

            begin

            write('Nilai Terbesar - Terkecil = ',a,' ',c,' ',b);

            end

               else

                  if (a>b) and (a<c) and (b<c) then

                  begin

                  write('Nilai Terbesar - Terkecil = ',c,' ',a,' ',b);

                  end

                     else

                         if (a<b) and (a>c) and (b>c) then

                         begin

                         write('Nilai Terbesar - Terkecil = ',b,' ',a,' ',c);

                         end

                            else

                                if (a<b) and (a<c) and (b<c) then

                                begin

                                write('Nilai Terbesar - Terkecil = ',c,' ',b,' ',a);

                                end

                                   else

                                       if (a<b) and (a<c) and (b>c) then

                                       begin

                                       write('Nilai Terbesar - Terkecil = ',b,' ',c,' ',a);

                                       end;

readkey;

end.



D.

uses crt;

var

   n : integer;

begin

     clrscr;

     write('Masukkan Nilai :');

     readln(n);

     if (n =0) then

     begin

     write('Nol');

     end

        else

            if (n mod 2=1) then

            begin

            write('Bilangan Ganjil');

            end

               else

                   if (n mod 2=0) then

                   begin

                   write('Bilangan Genap');

                   end;

readkey;

end.



      2.       uses crt;

type

   biodata = record

   nama         : string;

   nim             : string;

   kom            : char;

   fakultas      : string;

   universitas : string;

end;

var

   data : biodata ;

begin

     clrscr;

     with data do

     begin

          write('Masukkan Nama Anda         :');

          readln(nama);

          write('Masukkan NIM Anda            :');

          readln(nim);

          write('Masukkan Kom Anda            :');

          readln(kom);

          write('Masukkan Fakultas Anda      :');

          readln(fakultas);

          write('Masukkan Universitas Anda :');

          readln(universitas);

     end;

     clrscr;

     with data do

     begin

          writeln('Nama           :',nama);

          writeln('NIM              :',nim);

          writeln('Kom              :',kom);

          writeln('Fakultas       :',fakultas);

          writeln('Universitas  :',universitas);

     end;

readkey;

end.



      3.       uses crt;

type

    larik = array[1..25,1..25] of integer;

var

   matriks1,matriks2,hasil2 : larik;

   i,j,k                                          : integer;

   bar1,kol1,bar2,kol2          : integer;

begin

     clrscr;

     write('Baris Matriks 1 :');

     read(bar1);

     write('Kolom Matriks 1 :');

     read(kol1);

     writeln;

     write('Baris Matriks 2 :');

     read(bar2);

     write('Kolom Matriks 2 :');

     read(kol2);

     writeln;

     for i:= 1 to bar1 do

     begin

          for j:= 1 to kol1 do

          begin

               write('Matriks 1 ',i,',',j,':');

               read(matriks1[i,j]);

          end;

     end;

     writeln;

     for i:= 1 to bar2 do

     begin

          for j:= 1 to kol2 do

          begin

               write('Matriks 2 ',i,',',j,':');

               read(matriks2[i,j]);

          end;

     end;

     writeln;

     if (kol1=bar2) then

     begin

          writeln('Dapat Dikalikan');

          writeln;

          for i:= 1 to bar1 do

          begin

               for j:= 1 to kol2 do

               begin

                    for k:= 1 to kol1 do

                    begin

                         hasil2[i,j]:=hasil2[i,j]+ matriks1[i,k]*matriks2[k,j];

                    end;

               end;

          end;

          writeln('Hasil Perkalian');

          for i:= 1 to bar1 do

          begin

               for j:= 1 to kol2 do

               begin

                    write(hasil2[i,j],' ');

               end;

               writeln;

          end;

     end

     else

     begin

          writeln('Tidak Dapat Dikalikan');

     end;

readkey;

end.



      4.       uses crt;

type

    larik = array[1..10,1..10] of integer;

var

   matriks1,matrik2 : larik;

   i,j,bar,kol,a,b: integer;

begin

     clrscr;

     write('Masukkan Jumlah Baris:');

     read(bar);

     write('Masukkan Jumlah Kolom:');

     read(kol);

     for i:= 1 to bar do

     begin

          for j:= 1 to kol do

          begin

               write('Matriks 1 ',i,',',j,':');

               read(matriks1[i,j]);

          end;

          writeln;

     end;

     for i:= 1 to kol do

     begin

          for j:= 1 to bar do

          begin

               write(matriks1[j,i],' ');

          end;

          writeln;

     end;

readkey;

end.



      5.       uses crt;

type

    larik = array[1..25,1..25] of integer;

var

   matriks1,matriks2,hasil : larik;

   i,j : integer;

   bar1,kol1,bar2,kol2 : integer;

begin

     clrscr;

     write('Baris Matriks 1 :');

     read(bar1);

     write('Kolom Matriks 1 :');

     read(kol1);

     writeln;

     write('Baris Matriks 2 :');

     read(bar2);

     write('Kolom Matriks 2 :');

     read(kol2);

     writeln;

     for i:= 1 to bar1 do

     begin

          for j:= 1 to kol1 do

          begin

               write('Matriks 1 ',i,',',j,':');

               read(matriks1[i,j]);

          end;

     end;

     writeln;

     for i:= 1 to bar1 do

     begin

          for j:= 1 to kol2 do

          begin

               write('Matriks 2 ',i,',',j,':');

               read(matriks2[i,j]);

          end;

     end;

     writeln;

     if (bar1=bar2) and (kol1=kol2) then

     begin

          writeln('Dapat Dijumlahkan');

          writeln;

          for i:= 1 to bar1 do

          begin

               for j:= 1 to kol1 do

               begin

                    hasil[i,j]:= matriks1[i,j]+matriks2[i,j];

                    write(hasil[i,j],' ');

               end;

          writeln;

          end;

     end

     else

     begin

          writeln('Tidak Dapat Dijumlahkan');

     end;

readkey;

end.



      6.       uses crt;

function luas(a,t :real):real;

begin

     luas :=a*t/2;

end;

var

   a,t : real;

begin

     clrscr;

     write('Masukkan Nilai Alas   :');

     readln(a);

     write('Masukkan Nilai Tinggi :');

     readln(t);

     writeln('Hasil Luas Segitiga   :',luas(a,t):0:2);

readkey;

end.



      7.       uses crt;

var

   n, m, hasil : integer;



procedure faktorial(n : integer; var hasil : integer);

   begin

      if n=1 then

         hasil := 1

      else

         begin

           faktorial(n-1, hasil);

           hasil := n*hasil;

         end;

   end;

begin

   clrscr;

   write('Berapa faktorial ? ');readln(n);

   faktorial(n, m);

   writeln(n ,' Faktorial = ', m);

readkey;

end.



      8.       uses crt;

function Rata(jumlah,x: real;i,n:integer):real;

begin

     jumlah:=0;

     for i:= 1 to n do

     begin

          write('Nilai x  :');

          readln(x);

          jumlah:=jumlah+x;

     end;

     Rata:=jumlah/n;

end;



var

   jumlah,x,hasil : real;

   i,n            : integer;

begin

     clrscr;

     writeln('Menghitung Rata - Rata');

     write('Banyak Data :');

     readln(n);

     hasil:=Rata(jumlah,x,i,n);

     write('Rata-Rata:',hasil:0:2);

readkey;

end.



      9.       uses crt;

var

i,j,n : integer;

begin

clrscr;

write('Masukkan Bilangan :');

readln(n);

for i:= 1 to n do

begin

     for j:= 1 to i do

     begin

          if (i mod 2 = 0 ) then

          write('*')

                    else

                        write(i)

     end;

     writeln;

end;

readkey;

end.



      10.   uses crt;

var

   i,j,x,n : integer;

begin

     clrscr;

     write('Masukkan Nilai :');

     read(n);

     for i:= 1 to n do

     begin

     x:=0;

          for j:= 1 to i do

          begin

          x:=x+j;

          write(j);

                   if i=j then

                   write('=',x)

          end;

     writeln;

     end;

readkey;

end.

Inilah soal beserta kunci jawaban yang telah saya buat. Semoga sahabat viyovi semakin mahir dalam belajar bahasa pascal . Sekian artikel dari saya . Semoga bermanfaat untuk kita semua . Dan jangan lupa untuk membaca artikel dari saya selanjutnya. Thank you ....