Instrukcja blokowa – (instrukcja złożona) jako instrukcja strukturalna jest elementem składni języków programowania strukturalnego, wydzielona część kodu źródłowego programu komputerowego, stosowane np. do grupowania sekwencji instrukcji składowych (prostych lub złożonych), ujmując je w nawiasy zdaniowe.

Instrukcja blokowa wyróżniona jest przez odpowiednie symbole składniowe (nawiasy zdaniowe), np. w językach C, C++, Java symbolami takimi są nawiasy klamrowe { }, w Algolu i Pascalu słowa kluczowe begin end.

Instrukcja blokowa jest traktowana na takich samych zasadach jak pojedyncza instrukcja.

Rodzaje instrukcji blokowych edytuj

W różnych językach programowania istnieją dwa rodzaje instrukcji blokowej:

  • instrukcja grupująca
  • instrukcja blokowa.

Instrukcja grupująca edytuj

Z tego typu instrukcją mamy do czynienia w językach takich jak

 begin
   instrukcje
 end;
 DO;
   instrukcje
 END;

Instrukcje te grupują fragment kodu, który może być traktowany jak jedna instrukcja (w odniesieniu do instrukcji strukturalnych: warunkowych, pętli czy wyboru). Tego typu instrukcja blokowa jest więc tylko swoistym „nawiasem”, nie ograniczającym zakresu deklaracji (np. zmiennych).

Instrukcja blokowa edytuj

Ten rodzaj instrukcji jest rozszerzeniem w porównaniu do instrukcji grupującej. Instrukcja ta stanowi rzeczywisty blok z ograniczeniem zakresu zawartych w niej deklaracji (np. zmiennych).

 begin
   deklaracje zmiennych lokalnych
   instrukcje
 end
 {
   deklaracje zmiennych lokalnych
   instrukcje
 }
 BEGIN;
   deklaracje zmiennych lokalnych
   instrukcje
 END;

Różnicę między oboma rodzajami instrukcji blokowej widać najlepiej na przykładzie języka PL/1, w którym występują obie instrukcje, mając różne możliwości i zastosowanie.

Języki strukturalne bez instrukcji blokowej edytuj

Wiele języków strukturalnych nie zawiera instrukcji blokowej. Do tej grupy należą te języki programowania, w których każda instrukcja sterująca posiada własne słowo kluczowe zamykające instrukcję strukturalną, a także nie przewidziano możliwości deklarowania zmiennych lokalnych w bloku. Do takich języków należą między innymi: Basic, Comal, Visual Basic

Przykład Visual Basic:

 IF warunek THEN
   instrukcje
 END IF

Rozszerzenia instrukcji blokowych edytuj

Algol edytuj

Istnieje możliwość zastosowania instrukcji opuszczenia, aby wyjść z instrukcji blokowej:

 begin
   ...
   exit
   ...
 end

Clipper edytuj

Postać instrukcji blokowej w języku Clipper:

 BEGIN SEQUENCE
   instrukcje
 [BREAK [wyrażenie]]
   instrukcje
 [RECOVER [USING parametr]]
   instrukcje
 END [SEQUENCE]

Rozszerzenie instrukcji blokowej w języku Clipper polega na wprowadzeniu możliwości kontroli wykonania zawartych w niej instrukcji i możliwości ich przerwania (np. w sytuacjach błędów), za pomocą instrukcji opuszczenia BREAK. Instrukcja ta ma rozszerzenie o możliwość podania wyrażenia, które zostanie podstawione pod parametr podany we frazie USING sekcji RECOVER, do której następuje przejście po napotkaniu instrukcji BREAK. Stosowanie instrukcji blokowej w tym języku jako nawiasu spinającego jest zbędne, gdyż składania każdej instrukcji strukturalnej definiuje słowo zamykające.

Przykłady edytuj

Język C/C++

   while(W) I1;  // wykonywana dopóki spełniony jest warunek W

   I2;  // wykona się raz - nie objęte pętlą

   while(W)
   {
       I1;      // wykonywane dopóki spełniony jest warunek W
       I2;
   }

Język Pascal

   if(W) then I1;
   I2;

   if(W) then
   begin
      I1;
      I2;
   end;

Bibliografia edytuj