W tym zadaniu trzeba prześledzić wykonanie krótkiego fragmentu programu w Pascalu, w którym użyto operatora mod oraz instrukcji wielokrotnego wyboru case.
1) Obliczenie wyrażenia sterującego
Najpierw następuje przypisanie s := 30. Następnie program oblicza wyrażenie s mod 3. Operator mod zwraca resztę z dzielenia całkowitego, więc:
- 30 dzieli się przez 3 bez reszty,
- zatem 30 mod 3 = 0.
2) Dopasowanie w instrukcji case
Instrukcja case s mod 3 of porównuje otrzymaną wartość z wymienionymi etykietami przypadków. W kodzie są dwie etykiety: 1 i 2. Ponieważ obliczony wynik to 0, nie pasuje on ani do 1, ani do 2.
3) Rola klauzuli else
Gdy żadna etykieta nie pasuje, wykonywana jest gałąź else. W tej gałęzi znajduje się instrukcja write('start'), więc na ekranie pojawi się napis start.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Odpowiedź "wyświetli się napis stop." byłaby prawdziwa tylko wtedy, gdyby s mod 3 wyniosło 1. Dla s=30 to nie zachodzi.
- Odpowiedź "wyświetli się napis koniec." byłaby prawdziwa tylko wtedy, gdyby s mod 3 wyniosło 2. To również nie zachodzi.
- Odpowiedź "nie zostanie wyświetlony żaden napis." jest błędna, bo instrukcja write realizuje wypisanie tekstu; nie jest do tego potrzebne użycie read ani writeln (writeln jedynie dopisuje znak nowej linii).
Wskazówka egzaminacyjna: w zadaniach z case zawsze sprawdź, czy może wystąpić wartość "spoza listy" (np. 0 przy użyciu mod). Wtedy kluczowa jest gałąź else.