Kwalifikacja: EE8 - Kwalifikacja EE8
Zawód: Technik informatyk
Fragment programu z instrukcją case t of ... można zastąpić
var t:integer; begin write('Podaj rok '); readln(x); t:=x div 1000; case t of 1:write('M'); 2:write('MM'); 3:write('MMM'); end;
var t:integer; begin write('Podaj rok '); readln(x); t:=x div 1000; case t of 1:write('M'); 2:write('MM'); 3:write('MMM'); end;
Odpowiedzi
Informacja zwrotna
Odpowiedź, która wskazuje na możliwość zastąpienia instrukcji case trzema instrukcjami warunkowymi, jest poprawna, ponieważ w kontekście tego fragmentu programu, case t of 1:write('M'); 2:write('MM'); 3:write('MMM'); działa jako alternatywa do tradycyjnych instrukcji warunkowych if. Takie podejście pozwala na łatwiejsze zrozumienie i utrzymanie kodu, zwłaszcza w sytuacjach, gdzie mamy do czynienia z wieloma warunkami. Zamiast używać case, można by zastosować trzy oddzielne instrukcje if, w których każda z nich sprawdza wartość zmiennej t. Przykładowy kod mógłby wyglądać tak: if t = 1 then write('M'); else if t = 2 then write('MM'); else if t = 3 then write('MMM'); Takie rozwiązanie jest zgodne z dobrą praktyką programowania, gdzie stosuje się czytelność i prostotę kodu. Zastosowanie instrukcji case w tym przypadku jest preferowane, ponieważ pozwala na bardziej zwięzłe wyrażenie logiki programowej, co zwiększa przejrzystość i efektywność.
Propozycje dotyczące stosowania pętli sterujących, takich jak for...do, repeat...until oraz while...do, są niewłaściwe w kontekście omawianego zagadnienia. Pętle sterujące są konstrukcjami, które służą do wielokrotnego wykonywania bloku kodu, a nie do podejmowania decyzji na podstawie wartości zmiennej, jak ma to miejsce w instrukcji case. Pętla for...do jest używana w sytuacjach, kiedy znamy liczbę iteracji, co w przypadku oceny wartości zmiennej t, nie ma zastosowania. Z kolei konstrukcja repeat...until, która wykonuje blok kodu przynajmniej raz, a następnie sprawdza warunek, również nie jest odpowiednia, ponieważ nie ma potrzeby powtarzania zalogowanej operacji w tym kontekście. Podobnie, while...do wymaga sprawdzenia warunku przed każdym wykonaniem bloku kodu, co jest zbyteczne w przypadku, gdy chcemy jedynie sprawdzić wartość zmiennej t. Właściwe podejście polega na stosowaniu instrukcji warunkowych, które są dedykowane do decydowania, jaką operację wykonać na podstawie wartości, co wyraźnie wskazuje na zastosowanie case lub if. Stąd, błędne jest łączenie pętli z zadaniem, które wymaga alternatywy z warunkami, co prowadzi do większej złożoności kodu, a także obniża jego czytelność i efektywność.