Instrukcja wyboru – Wikipedia, wolna encyklopedia

Instrukcja wyboru, instrukcja decyzyjna – instrukcja w określonym języku programowania, umożliwiająca wybór instrukcji do wykonania spośród wielu opcji.

Działanie i stosowanie instrukcji wyboru

[edytuj | edytuj kod]

Instrukcję wyboru stosuje się w programach, w których należy wybrać jedną spośród wielu opcji, np. w Pascalu.

  case x of     1, 2, 3 :       begin         instrukcje-1       end;     4 :       begin         instrukcje-2       end;     else       instrukcje-else   end; 

Wybór określonego kodu następować może na podstawie różnych kryteriów:

  • numeru instrukcji lub elementu na liście,
  • wartości pewnego wyrażenia,
  • warunków logicznych.

Składnia instrukcji wyboru

[edytuj | edytuj kod]

Składnia instrukcji wyboru różni się w zależności od języka programowania, lecz można wyróżnić w niej charakterystyczne elementy:

  • nagłówek instrukcji wyboru:
    • słowo kluczowe rozpoczynające instrukcję (np. case, select, switch)
    • opcjonalnie wyrażenie, na podstawie którego następuje wybór
    • słowo łączące (np. of, do)
  • ciało instrukcji wyboru:
    • kolejne instrukcje podlegające selekcji
    • opcjonalnie poprzedzone frazami zawierającymi wartości porównywane z wyrażeniem z nagłówka instrukcji
      • opcjonalnie poprzedzone słowem kluczowym (np. case, when)
      • wyrażenie stałe lub lista takich wyrażeń, albo zakresów wartości (np. 1, zm, 7..12)
      • słowo lub symbol łącznika (np. :, =>, do)
    • opcjonalnie fraza domyślna, wykonywana gdy żadna z fraz nie spełni warunku (np. else, otherwise, other, default, when else)
  • koniec instrukcji wyboru – słowo zamykające blok (np. end, end case, end select itp.).
  • instrukcja wyboru
  case wyrażenie is     when war-1 => instr-1     [     when war-n => instr-n]     [when others => instr-oth]   end case; 
  • instrukcja nadzorowana – wyboru wejścia
  select     when war-1 => instr-1     [or ...      or when war-n => instr-n]   end select; 

Wybór według numeru instrukcji.

 case wyrażenie of    begin      instrukcja-1      ...      instrukcja-n    end 

Wybór zależny jest od numeru instrukcji:

 ON wyrażenie GOTO lista_etykiet 

W języku C występuje instrukcja decyzyjna switch o składni:

  switch([warunek]) instrukcja;   // gdzie instrukcja jest najczęściej [[Instrukcja blokowa|instrukcją grupującą]] zawierającą frazy case i default:   {     case wyr-stałe-1 : instrukcje-1     [...     case wyr-stałe-n : instrukcje-n]     [default : instrukcje-default]   } 

W odróżnieniu od instrukcji wyboru implementowanych w większości języków programowania, w instrukcji decyzyjnej języka C wykonywane są wszystkie instrukcje występujące po właściwej frazie case, także instrukcje występujące w następnych frazach case i default. Z tego względu jeżeli występuje konieczność ograniczenia zakresu wykonywania instrukcji należy zastosować instrukcję opuszczenia break.

  switch(x)     {       case 1 : instr-1;       case 2 : instr-2; break;       case 3 : instr-3;     } 

W powyższym przykładzie instrukcji switch, jeśli x=1 to wykonane zostaną instr-1 i instr-2, a jeżeli x=2 to tylko instr-2, gdyż instrukcja opuszczenia break spowoduje zakończenie wykonywania instrukcji zawartych w grupie switch.

W języku Clipper instrukcja wyboru uzależniona jest od spełnienia określonego warunku:

 DO CASE    CASE war-1      instrukcje-1    [...    CASE war-n      nstrukcje-n]    [OTHERWISE      instrukcje-other  END [CASE] 
 CASE wyr OF    WHEN war-1      instrukcje-1    [...    WHEN war-1      instrukcje-1]    [OTHERWISE      instrukcje-oth]  ENDCASE 
  GO TO ([[Etykieta (informatyka)|etykieta]]-1, , etykieta-n) zmienna_integer; 
 case wyrażenie of {    war-1 : instr-1    [...    war-n : instr-n]    [default : instr-default]  } 
 CASE wyrażenie OF    wartość-1 : instrukcje-1 |    [... |    wartość-n: instrukcje-n] |    [ELSE instrukcje-else]  END 

W Pascalu wybór uzależniony jest podobnie jak w języku C od wartości określonego w nagłówku instrukcji wyrażenia. Jednak w języku Pascal wykonanie instrukcji ograniczone jest do wybranej frazy.

  case wyrażenie of     lista_wartości_1 : instrukcja-1     [...     lista_wartości_n : instrukcja-n]     else instrukcja-else   end; 
 SELECT(wyrażenie);    WHEN(lista_wyrażeń-1) instrukcja-1;    [...    WHEN(lista_wyrażeń-n) instrukcja-n;]    [OTHERWISE instrukcja-oth;]  END; 

Wybór uzależniony od numeru instrukcji.

 DO CASE wyrażenie;    instr-1;    […     instr-n;]   END; 
 inspect w when w1 do i-1;         [...          when wn do i-n;]         [otherwise i-oth;] 
  • wybór zależny od wartości wyrażenia
  Select Case wyrażenie     Case lista_wyrażeń_1       instrukcje-1     [...         Case lista_wyrażeń_n       instrukcje-n]     [Case Else       instrukcje-else]   End Select 
  • wybór zależny od numeru instrukcji (przejęta z języka Basic)
  ON wyrażenie GOTO lista_etykiet 

Zobacz też

[edytuj | edytuj kod]