Persiapan UAS Programming Paradigm hehe..

Belajar..belajar..

Dik. Program berikut :

{(x>0) ^ (y>0)}

z:=0;

u:=x;

repeat

z:=z+y;

u:=u-1;

until u=0

outputnya : z

  1. Mengerjakan apa program tersebut ?
  2. Buktikan kebenaran program tersebut dengan menggunakan aturan pembuktian standard ?

JAWABAN :

  1. Program mengerjakan perkalian tanpa operator “kali”, yaitu

    {z=x*y} … ini akan menjadi asersi akhir.

  2. Pembuktian kebenaran program tersebut dengan menggunakan aturan pembuktian standard –> artinya : jika program dijalankan terhadap asersi awal, maka akan menghasilkan asersi akhir.

    Kunci Pengerjaan adalah : arahkan asersi awal ke asersi akhir.

{(x>0) ^ (y>0)} … asersi awal

z:=0;

u:=x;

repeat


z:=z+y;

u:=u-1;

until u=0

{z=x*y} … asersi akhir

Sehingga diperoleh asersi-asersi yang harus dibuktikan :

{(x>0) ^ (y>0)} … asersi awal

z:=0;

…………………….. sampai disini akan dihasilkan asersi 1

u:=x;

…………………….. sampai disini akan dihasilkan asersi 2

repeat

z:=z+y;

…………………….. sampai disini akan dihasilkan asersi 3

u:=u-1;

…………………….. sampai disini akan dihasilkan asersi 4

until u=0

{z=x*y} … asersi akhir

Tiap asersi harus dibuktikan !!!

Catatan : asersi 3 dan asersi 4 termasuk dalam lingkup blok repeat, sehingga pengerjaannya nanti akan menggunakan aturan pembuktian standard untuk repeat.

Dari asersi awal lakukan hal sebagai berikut :

Arahkan ke asersi akhir

{(x>0) ^ (y>0)} ↄ {x*y = x*y} ↄ {(0+x*y = x*y) ^ (x>0)}

Dari asersi awal diperoleh asersi :

{(0+x*y = x*y) ^ (x>0)} … asersi 0

Keterangan : (y>0)ditulis boleh, tidak ditulis juga boleh, tergantung kebutuhan.

Masuk ke program :

– z:=0;

Jika statement ini dijalankan, maka statement ini mengganti
0
pada (0+x*y = x*y) di asersi 0 dengan z, menghasilkan asersi :

{(z+x*y = x*y) ^ (x>0)} … asersi 1

u:=x;

Jika statement ini dijalankan, maka :

  • statement mengganti
    x
    pada {(z+x*y = x*y) ^ (x>0)} di asersi 1 dengan u, menghasilkan asersi :

    {(z+u*y = x*y) ^ (u>0)} … asersi 2

  • TAPI x pada x*y tetap, karena untuk mengarahkan ke asersi akhir
    {z=x*y}.

– repeat

Pada tahap ini, gunakan aturan pembuktian standard untuk repeat, yaitu

{P}S{R}, {R}^~B ↄ {P}, {R} ^ B ↄ {Q}

____________________________

{P} Repeat S until B{Q}

Arti dari rumus tersebut adalah : blok repeat {P} Repeat S until B{Q} dibuktikan melalui rumus (aturan pembuktian standard untuk repeat) {P}S{R}, {R}^~B ↄ {P}, {R} ^ B ↄ {Q}


Catatan : {R} adalah asersi yang terletak tepat sebelum until pada {P} Repeat S until B{Q}

Catatan :
{R}^~B ↄ {P} dibaca “dari {R}^~B tanpa ada instruksi apapun () menghasilkan {P}

Setelah statement u:=x; dieksekusi, maka tadi sudah dihasilkan asersi 2, yaitu :

{(z+u*y = x*y) ^ (u>0)} … maka, untuk blok repeat, asersi 2 ini disebut{P}

Perhatikan potongan program berikut :

u:=x;

…………………….. {(z+u*y = x*y) ^ (u>0)} adalah {P}

repeat

z:=z+y;

u:=u-1;

until
u=0

Sedangkan yang menjadi B adalah u=0

Sekarang mari kita fokus!!! pada blok repeat ini :

Asersi awal untuk blok repeat ini adalah {P} yaitu {(z+u*y = x*y) ^ (u>0)} ,

Dari asersi ini, kerjakan hal berikut :

{(z+u*y = x*y) ^ (u>0)}

ↄ {(z+u*y+0 = x*y) ^ (u>0)}

ↄ {(z+u*y+y-y = x*y) ^ (u>0)}

ↄ {(z+y+u*y-y = x*y) ^ (u>0)}

ↄ {(z+y+(u-1)*y = x*y) ^ (u>0)} … {P}

Kemudian, dijalankan secara berurutan statement z:=z+y; dan u:=u-1;

– z:=z+y

(cara baca : z baru sama dengan z lama ditambah y)

Sehingga, dari statement ini akan diperoleh asersi 3 :

{(z +(u-1)*y = x*y) ^ (u>0)}

Hasil dari : mengganti
z+y
pada {(z+y+(u-1)*y = x*y) ^ (u>0)} dengan
z.

u:=u-1;

(cara baca : isi var u sama dengan u lama dikurang 1)

Sehingga, dari statement ini akan diperoleh asersi 4 yang akan menjadi asersi {R} :

{(z+u*y = x*y) ^ (u≥0)}

Perhatikan bahwa u>0 berubah menjadi
u≥0.
Hal ini karena apapun positif dikurangi 1, maka paling rendah hasilnya adalah 0

Setelah statement u:=u-1; dijalankan, maka kita sudah melakukan proses {P} S {R} dari
aturan pembuktian standard untuk repeat, yaitu {P}S{R}, {R}^~B ↄ {P}, {R} ^ B ↄ {Q}. Dengan demikian pada tahap ini diperoleh {R}, yaitu {(z+u*y = x*y) ^ (u≥0)}.

Kita beri warna aturan yang sudah dibuktikan

{P}S{R},{R}^~B ↄ {P},{R}^B ↄ {Q}

Catatan : {Q} adalah asersi akhir

Sekarang kita akan membuktikan aturan selanjutnya, yaitu {R}^~B ↄ {P}.

Kita telah mengetahui bahwa :

{R} adalah {(z+u*y = x*y) ^ (u≥0)} ; dan B adalah tepat setelah until , yaitu u=0. Maka berdasarkan {R}^~B didapat :

{(z+u*y = x*y) ^ (u≥0)} ^ ~(u=0)

ↄ (z+u*y = x*y) ^ (u≥0) ^ (u≠0)

Catatan : (u≥0)^(u≠0) sama maknanya dgn (u>0)

ↄ {(z+u*y = x*y) ^ (u>0)} … asersi {P}

Sampai disini kita sudah membuktikan {R}^~B ↄ {P}.

Kita beri warna aturan yang sudah dibuktikan

{P}S{R},{R}^~B ↄ {P},{R}^B ↄ {Q}

Sekarang kita akan membuktikan aturan selanjutnya, yaitu {R}^B ↄ {Q}.

Kita telah mengetahui bahwa

{R} adalah {(z+u*y = x*y) ^ (u≥0)} ; dan B adalah tepat setelah until , yaitu u=0.
Maka berdasarkan {R}^B didapat :

(z+u*y = x*y) ^ (u≥0)^ (u=0)

Catatan : (u≥0)^ (u=0) sama maknanya dengan (u=0)

ↄ (z+u*y = x*y) ^ (u=0)

ↄ (z+0*y = x*y)

ↄ (z+0= x*y)

ↄ (z = x*y) … {Q}

Sampai disini kita sudah membuktikan {R}^B ↄ {Q}.

Kita beri warna aturan yang sudah dibuktikan

{P}S{R},{R}^~B ↄ {P},{R}^B ↄ {Q}

Artinya semua aturan sudah kita buktikan.

{Q} adalah asersi akhir. Pada soal, asersi akhir adalah {z = x*y}

Dan setelah menjalankan aturan pembuktian, juga diperoleh (z = x*y). Sehingga
TERBUKTI.

***SEMOGA BERMANFAAT, DAN SUKSES SELALU***

6 thoughts on “Persiapan UAS Programming Paradigm hehe..

  1. saya dari angkatan 2012 nih..lumayan bisa buat belajar nih postingannya, makasih banyak yahh, postingannya udah bermanfaat

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s