Instrukcja wyboru
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
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
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.).
Języki programowania
Ada
- 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;
Algol 68
Wybór według numeru instrukcji.
case wyrażenie of begin instrukcja-1 ... instrukcja-n end
Basic
Wybór zależny jest od numeru instrukcji:
ON wyrażenie GOTO lista_etykiet
C, C++
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.
Clipper
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]
Comal
CASE wyr OF WHEN war-1 instrukcje-1 [... WHEN war-1 instrukcje-1] [OTHERWISE instrukcje-oth] ENDCASE
Fortran
GO TO ([[Etykieta (informatyka)|etykieta]]-1, …, etykieta-n) zmienna_integer;
Icon
case wyrażenie of { war-1 : instr-1 [... war-n : instr-n] [default : instr-default] }
Modula 2
CASE wyrażenie OF wartość-1 : instrukcje-1 | [... | wartość-n: instrukcje-n] | [ELSE instrukcje-else] END
Pascal
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;
PL/1
SELECT(wyrażenie); WHEN(lista_wyrażeń-1) instrukcja-1; [... WHEN(lista_wyrażeń-n) instrukcja-n;] [OTHERWISE instrukcja-oth;] END;
PL/M
Wybór uzależniony od numeru instrukcji.
DO CASE wyrażenie; instr-1; [… instr-n;] END;
Simula 67
inspect w when w1 do i-1; [... when wn do i-n;] [otherwise i-oth;]
Visual Basic
- 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