Kamis, 29 Desember 2011

STATION (Statistics Competition)

STATION 2012 (Statistic Competition 2012) merupakan ajang yang diselenggarakan oleh Himpunan Mahasiswa Statistika ITS, merupakan sebuah kompetisi tingkat nasional di bidang matematika dan statistika.
STATION 2012, akan diadakan pada tanggal 29 Januari 2012, dalam lomba ini lain daripada yang lain. Karena STATION 2012 juga memiliki 3 kegiatan yang terdiri dari kompetisi, workshop untuk guru, dan lomba poster bagi para semifinalis. Untuk acara kompetisi sendiri terdiri dari tiga tahap, yaitu tahap pertama atau penyisihan, tahap semifinal, dan tahap final. Tidak perlu takut akan soal di STATION 2012  karena ini merupakan kompetisi secara tim, di mana tiap-tiap tim terdiri dari 2 orang. Masing-masing peserta yang mengikuti kompetisi STATION 2012 akan memperebutkan hadiah utama berupa uang tunai total sebesar Rp 6.000.000,00

Pesertanya tidak hanya untuk siswa/siswi SMA/SMK dan sederajat yang ada di Surabaya saja, SMA-SMA/SMK-SMK dari seluruh wilayah di Indonesia juga bisa mengikuti kompetisinya buat memenangkan hadiah utama tersebut.
Kompetisinya tidak hanya di kampus ITS aja, karena STATION 2012 juga akan bertempat di beberapa regional yang sudah dibagi-bagi. Buat yang regionalnya tidak kebagian tempat berlangsungnya acara, tidak usah bingung, karena STATION 2012 juga akan mengadakan kompetisi secara online. Cukup log-in lewat web station.statistics.its.ac.id dengan id yang akan diberikan setelah melakukan proses pendaftaran, kamu bisa ngerjain soal-soal kompetisi di mana aja. Untuk lebih lengkapnya silahkan berkunjung ke STATION 2012

Selasa, 27 Desember 2011

Program invers (Array 3 Dimensi)

uses wincrt;
label  hitung;

var
    mat,adj : array [1..5,1..5] of integer;
    det,i,j : integer;
    c:char;

begin

  clrscr;
         { tampilan awal keterangan matrik }
  gotoxy(20,4);
  writeln('Matriks Ordo 2 x 2');

  gotoxy(15,5);
  writeln('-------------------------');

  gotoxy(15,7);
  writeln('1. Input data matrik ');

  gotoxy(15,8);
  writeln('2. Menentukan Adjoin Matrik');

  gotoxy(15,9);
  writeln('3. Mencari determinan matriks');

  gotoxy(15,10);
  writeln('4. Mencari Invers matriks');
  readln;

   if c = #13 then goto hitung;

           {end tampilan awal keterangan matrik}

           {mulai proses input}
hitung:
      begin
        clrscr;
        writeln('Input Matrik Ordo 2x2');
        writeln('-------------------------');
        for i := 1 to 2 do begin
           for j:= 1 to 2 do begin
               write('matrik ke ',i,' ',j,': ');readln(mat[i,j]);
           end;
           writeln;
        end;

        for i := 1 to 2 do begin
         write('|');
          for j := 1 to 2 do begin
            write(' ',mat[i,j],' ');
              if j = 2 then write ('|');
          end;
          writeln;
        end;
                 {end proses input matrik}

        writeln;
        writeln;
                 {mulai adjoin matrik dan determinan}

        writeln('Adjoin matrik Ordo 2x2');
        writeln('-----------------------');

        adj[1,1] := mat[2,2];
        adj[1,2] := mat[1,2] * -1;
        adj[2,1] := mat[2,1] * -1;
        adj[2,2] := mat[1,1];

          for i := 1 to 2 do begin
           write('|');
             for j := 1 to 2 do begin
                 write(' ',adj[i,j],' ');
                   if j = 2 then write('|');
             end;
             writeln;
          end;
        writeln;

        det := (mat[1,1] * mat [2,2]) - (mat[1,2] * mat[2,1]);

        write('Determinan dari matrik diatas adalah ');
        writeln(det);
        writeln;
                  {end of adjoin and determinan}

                  {mulai menghitung invers matrik}

        writeln('Invers Matrik ');
        writeln('----------------');
        writeln;

        for i := 1 to 2 do begin
         write('|');
          for j := 1 to 2 do begin
            write(' ',adj[i,j]/det:3:2,' ');
              if j = 2 then write('|');
          end;
          writeln;writeln;writeln;
       end;
                    {end of hitung invers matrik}

       end;
readln;
end.

Program Matriks Penjumlahan

Dengan menggunakan array 3 dimensi

program matrik_penjumlahan;
uses wincrt;
var a,b,c: array[1..10,1..10] of integer;
    i,j,k1,k2,b1,b2,sum,r:integer;

begin
write('Masukkan baris Matrik A = ');readln(b1);
write('Masukkan kolom Matrik A = ');readln(k1);
write('Masukkan baris Matrik B = ');readln(b2);
write('Masukkan kolom Matrik B = ');readln(k2);
for i:=1 to b1 do
for j:=1 to k1 do
readln(a[i,j]);
writeln;
for i:=1 to b2 do
for j:=1 to k2 do
readln(b[i,j]);
writeln;
writeln('Matrik A');
writeln('==================');
for i:=1 to b1 do
begin
for j:=1 to k1 do
write(a[i,j],' ');
writeln;
end;
writeln;
writeln('Matrik B');
writeln('===================');
for i:=1 to b2 do
begin
for j:=1 to k2 do
write(b[i,j],' ');
writeln;

end;
writeln;
writeln('Matrik A*B');
writeln('================');
for i:=1 to b1 do
begin
for j:=1 to k2 do
begin
sum:=0;
for r:=1 to k1 do
sum:=sum+a[i,r]*b[r,j];
c[i,j]:=sum;
write(c[i,j]:2,' ');
end;
writeln;
end;
end.

Program Perpangkatan

program perpangkatan;
uses wincrt;
var
   i,o,n:longint;
   hasil:real;
begin
     writeln('a pangkat b');
     writeln('masukkan a= ');readln(o);
     writeln('masukkan b= ');readln(n);
     hasil:=1;
     for i:=1 to abs(n) do
     hasil:=o * hasil;
     if (n<0) then
     begin
     write('hasil= ');
     write(1/hasil);
     end
     else
     begin
     write('hasil= ');
     write(hasil);
     end;
end.

Program Menentukan Genap atau Ganjil

program pascal;
uses wincrt;
var b:longint;
hasil : integer;

begin
writeln('bilangan = '); readln(b);
if (b mod 2)=1 then
write('ganjil')
else
write('genap');

end.

Fibonacci

Dalam matematika, bilangan Fibonacci adalah barisan yang didefinisikan secara rekursif sebagai berikut:

Penjelasan: barisan ini berawal dari 0 dan 1, kemudian angka berikutnya didapat dengan cara menambahkan kedua bilangan yang berurutan sebelumnya. Dengan aturan ini, maka barisan bilangan Fibonaccci yang pertama adalah:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946...

Barisan bilangan Fibonacci dapat dinyatakan sebagai berikut:

Fn = (x1n – x2n)/ sqrt(5)

dengan

  • Fn adalah bilangan Fibonacci ke-n
  • x1 dan x2 adalah penyelesaian persamaan x2-x-1=0
(wikipedia)

Contoh Program Fibonacci untuk Pascal

program vibonacci;
uses wincrt;
var
b,a,c,i,n:integer;
begin
readln(n);
a:=0;
b:=1;
for i:=1 to n do
begin
c:=b;
b:=a;
a:=a+c;
writeln(a);
end;
end.

Program Faktorial

Program faktorial;
uses wincrt;
var
   n,i:longint;
   f:real;
begin
     readln(n);f:=1;
     for i:=1 to n do
     begin f:=f*i;
     end;
     writeln(n,'faktorial=',f);
     end.

Program Mencari Rata-rata

program rata;
uses wincrt;
var
   i,n : integer ;
x,sum,mean : real;
begin
   writeln('banyaknya data=');
   readln(n); sum:=0;
   for i:=1 to n do
begin
   writeln ('data ke ',i,'=');
   readln(x);
   sum:=sum+x;
end;
   mean:=sum/n;
    writeln('rata-rata=', mean:9:4);
end.

Program kombinasi dan permutasi

Program permutasi_kombinasi;
uses wincrt;
var
   a,b,a_k,Kombinasi,Permutasi:real;
   i,n,k:integer;
begin
     writeln('Menghitung Kombinasi dan Permutasi:');
     writeln('Masukkan bilangan n=');readln(n);
     writeln('masukkan bilangan k=');readln(k);
a:=1;
b:=1;
a_k:=1;
for i:=2 to n do
a:=a*i;
for i:=2 to k do
b:=b*i;
for i:=2 to (n-k)do
a_k:=a_k*i;
Kombinasi:=a/(b*a_k);
Permutasi:=a/(a_k);
writeln(n, ' Kombinasi ',k,' = ',kombinasi:0:0);
writeln(n, ' Permutasi ',k,' = ',Permutasi:0:0);
end.

Senin, 19 Desember 2011

Contoh Program Penilaian (Penggunaan Nested dan Case of)

Dengan menggunakan nested

program nested;
uses wincrt;
var
a:real;
begin
readln (a);
if a>=81then writeln('A')
else if a>=76then writeln('AB')
else if a>=71then writeln('B')
else if a>=66then writeln('BC')
else if a>=61then writeln('C')
else if a>=41then writeln('D')
else writeln('E')

end.

Dengan menggunankan Case of

PROGRAM penilaian;
USES WINCRT;
VAR i:integer;
BEGIN
READLN(i);
CASE i OF 81..100:writeln('A');
76..80:writeln('AB');
71..75:writeln('B');
61..70:writeln('BC');
51..60:writeln('C');
41..50:writeln('D');
0..40:writeln('E');
ELSE writeln ('Input nilai salah');
END;
END.

Kamis, 15 Desember 2011

Repeat Until

REPEAT . . . UNTIL

Perintah Repeat . . . Until mirip dengan perintah While . . . Do, yaitu untuk melakukan perulangan jika banyak perulangan yang akan dikerjakan belum diketahui.

Syntax  :
Repeat
Statement1;
Statement2;
………;

Until <kondisi logika>
Perbedaan antara Repeat . . . Until dengan While . . . Do adalah bahwa pada  Repeat  . . . Until statement akan dikerjakan secara berulang-ulang sampai kondisi logika bernilai TRUE.  Dengan demikian selama kondisi bernilai FALSE, maka perulangan akan terus dilakukan.
Pada Repeat . . . Until, pemeriksaan kondisi untuk menentukan benyaknya perulangan setelah statement dikerjakan.  Dengan demikian statement pada perulangan ini akan selalu dikerjakan minimal satu kali.

contoh program pascal menggunakan repeat until

program konversi_biner;
uses wincrt;
var desimal,d,sisa,biner:longint;
begin
write('Angka Desimal');readln(desimal);
d:=0;
repeat
      sisa:=desimal mod 2;
      desimal:=desimal div 2;
      if (d=0)then
         d:=1
      else
          d:=d*10;
     biner:=biner+sisa*d
until desimal=0;
write ('Biner= ',biner);
end.

Konversi Desimal ke Biner

Desimal ke binner

Ambil sebuah contoh bilangan desimal yang akan dikonversi ke biner. Setelah itu, lakukan konversi masing2

Misalkan bilangan desimal yang ingin dikonversi adalah 2510.

Maka langkah yang dilakukan adalah membagi tahap demi tahap angka 2510 tersebut dengan 2, seperti berikut :

25 : 2 = 12,5

Jawaban di atas memang benar, tapi bukan tahapan yang kita inginkan. Tahapan yang tepat untuk melakukan proses konversi ini sebagai berikut :

25 : 2 = 12 sisa 1.    —–> Sampai disini masih mengerti kan?

Langkah selanjutnya adalah membagi angka 12 tersebut dengan 2 lagi. Hasilnya sebagai berikut :

12 : 2 = 6 sisa 0.      —–> Ingat, selalu tulis sisanya.

Proses tersebut dilanjutkan sampai angka yang hendak dibagi adalah 0, sebagai berikut :



25 : 2 = 12 sisa 1.

12 : 2 = 6 sisa 0.

6 : 2 = 3 sisa 0.

3 : 2 = 1 sisa 1.

1 : 2 = 0 sisa 1.

0 : 2 = 0 sisa 0….



Nah, setelah didapat perhitungan tadi, pertanyaan berikutnya adalah, hasil konversinya yang mana? Ya, hasil konversinya adalah urutan seluruh sisa-sisa perhitungan telah diperoleh, dimulai dari bawah ke atas.

Maka hasilnya adalah 0110012. Angka 0 di awal tidak perlu ditulis, sehingga hasilnya menjadi 110012. Sip?
berikut pemograman pascal untuk konversi desikmal ke biner

program konversi_biner;
uses wincrt;
var desimal,d,sisa,biner:longint;
begin
write('Angka Desimal');readln(desimal);
d:=0;
repeat
      sisa:=desimal mod 2;
      desimal:=desimal div 2;
      if (d=0)then
         d:=1
      else
          d:=d*10;
     biner:=biner+sisa*d
until desimal=0;
write ('Biner= ',biner);
end.

 
ini buat menu bawah