Pemograman berbasis BLOK

Definisi

kode di sebuah blok dasar ialah:

  1. point masukan, di dalamnya tidak ada kode untuk melompati  instruksi di mana saja di dalam program.
  2. point keluaran , hanya intruksi terakhir yang bisa memprogram untuk memulai eksekusi yang berbeda pada blok dasar kode.

Dalam keadaan seperti ini, setiap kali instruksi pertama di sebuah blok dasar dilaksanakan, seseluruhan  instruksi tidak selalu dieksekusi persis, dengan urutan.

kodenya  bisa saja dari  source kode, assembly  kode atau beberapa urutan dari instruksi.

Secara formal, urutan instruksi membentuk sebuah blok dasar apabila:

  1. Instruksi pada setiap posisi mendominasi, atau selalu mengeksekusi sebelumnya, semua yang ada di posisi berikutnya.
  2. tidak ada instruksi lain yang dieksekusi diantara dua instruksi dalam urutan.

Definisi yeng lebih umum dari sisi intuisi satu dalam beberapa hal. Misalnya, memungkinkan perpindahan tanpa syarat ke lebel yang tidak menjadi target. Definisi ini mewujudkan sifat-sifat yang membuat blok dasar mudah untuk bekerja ketika membangun algoritma .

Blok yang digunakan untuk mengontrol diperbolehkan mentransfer setelah mencapai akhir blok yang dipanggil yang disebut blok terusan , ketika blok yang mengontrol diperbolehkan datang memasuki sebuah blok disebut blok pendahulu .Awal sebuah blok dasar diperbolehkan pindah dari lebih satu lokasi.

Algoritma Buatan

alogaritma untuk menghasilkan blok dasar dari daftar kode sangatlah sederhana: yang analyser scan atas kode , menandai blok batas , yang instruksi yang dapat baik begin atau end blok karena mereka juga transfer kontrol atau menerima kontrol dari titik lain .Kemudian , daftar ‘ cut’ di setiap poin , dan blok dasar tetap .

Dicatat bahwa metode ini tidak selalu hasilkan maksimal blok dasar , oleh formal definisi , tetapi mereka biasanya cukup ( maksimal dasar blok yang blok dasar yang tidak dapat diperpanjang oleh termasuk berdekatan blok tanpa melanggar definisi sebuah blok dasar.

Masukan: urutan instruksi ( kebanyakan three-address kode ) .

keluaran: daftar dari blok dasar dengan satu sama three-address pernyataan pada tepatnya satu blok .

Langkah pertama .Mengidentifikasi pemimpin di kode .Pemimpin yang instruksi yang datang di bawah salah satu dari berikut 3 bagian:

1 .Instruksi pertama dia adalah seorang pemimpin .

2 .Target dari sebuah goto bersyarat atau tanpa syarat / melompat instruksi dia adalah seorang pemimpin .

3 .Instruksi yang segera mengikuti bersyarat atau tanpa syarat goto / jump instruksi dia adalah seorang pemimpin .

Langkah 2 .Mulai dari seorang pemimpin , set semua mengikuti instruksi sampai dan tidak termasuk dasar ke depan pemimpin merupakan tanda mulai blok sesuai dengan pemimpin .Dengan demikian setiap blok dasar telah seorang pemimpin

Yang berakhir sebuah blok dasar instruksi adalah berikut

–  tanpa syarat dan  bersyarat cabang, baik langsung dan tidak langsung

– kembali pada suatu panggilan prosedur

– instruksi yang bisa memberikan  pengecualian

– fungsi memanggil  bisa berada di akhir dari sebuah blok dasar jika mereka tidak bisa mengembalikan, seperti fungsi yang memberikan pengecualian atau panggilan khusus seperti c longjmp dan exit

– kembalinya instruksi itu sendiri.

yang Instruksi yang memulai blok dasar baru  adalah sebagai berikut:

– titik masuk prosedur dan fungsi

– sasaranpindah atau cabang

– ‘ fall-through ‘ mengikuti beberapa instruksi  bersyarat

– instruksi mengikuti yang memberikan pengecualian

– handlers pengecualian

Perhatikan bahwa , karena tidak dapat mengendalikan melewati akhir dari sebuah blok dasar , di batas blok akan diubah menjadi setelah mendapati bangunan blok dasar .Secara khusus , percabangan kondisional fall-through harus two-way berubah menjadi cabang , dan memanggil fungsi yang melemparkan pengecualian tanpa harus oleh mereka setelah itu .Hal ini mungkin membutuhkan label tambahan hingga awal blok.

 

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s