KWALIFIKACJA ELM5 - CZERWIEC 2021

PYTANIE NR 18.
Przedstawiony fragment programu realizuje
Ilustracja przedstawia fragment kodu programu w języku asemblera, który jest używany w kontekście kwalifikacji zawodowej
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Opóźnienie oznacza celowe wstrzymanie dalszego wykonywania instrukcji na zadany czas. Jeśli fragment programu wprowadza zwłokę równą 1000 ms (lub równoważną 1 sekundzie), to skutkiem jest opóźnienie działania programu o 1 s. Odpowiedzi o 10 ms dotyczą znacznie krótszej zwłoki.

Pełne wyjaśnienie:

W tego typu zadaniach sprawdza się umiejętność interpretacji fragmentu programu odpowiedzialnego za zwłokę oraz poprawne rozumienie jednostek czasu. Opóźnienie (zwłoka) polega na tym, że program przez pewien czas nie wykonuje kolejnych instrukcji (czeka), a dopiero po upływie zadanego czasu kontynuuje działanie.

Poprawna odpowiedź brzmi: opóźnienie działania programu o 1 s. Jest ona właściwa, gdy w kodzie zastosowano mechanizm wstrzymania równy jednej sekundzie, np. poprzez podanie wartości odpowiadającej 1 sekundzie (często spotykane jest przeliczanie: 1000 ms = 1 s).

  • "opóźnienie działania programu o 10 ms" – błędne, jeśli czas zwłoki w kodzie odpowiada 1 sekundzie, a nie 10 milisekundom. To typowa pomyłka wynikająca z nieuwagi na jednostkę.
  • "przyspieszenie działania programu o 1 s" – błędne, ponieważ wstawienie funkcji/fragmentu oczekiwania nie przyspiesza, tylko spowalnia (dodaje czas bezczynności).
  • "przyspieszenie działania programu o 10 ms" – również błędne z tej samej przyczyny: mechanizm zwłoki nie jest mechanizmem przyspieszania.

Wskazówka egzaminacyjna: zawsze sprawdzaj (1) czy fragment kodu czeka czy odmierza czas bez blokowania, oraz (2) w jakiej jednostce podano parametr (ms, s, takty zegara). Najczęstsze błędy wynikają z pomylenia milisekund z sekundami albo z odruchowego skojarzenia liczby bez analizy kontekstu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Opóźnienie (zwłoka) to celowe wstrzymanie wykonywania kolejnych instrukcji na określony czas. Stosuje się je np. do sterowania sekwencją zdarzeń (LED, przekaźniki), zachowania odstępów między pomiarami lub prostego "odbijania" przycisków.
Opóźnienie dodaje czas bezczynności (program czeka), więc całość działa wolniej. "Przyspieszenie" nie jest zwykle realizowane przez funkcje czasu, tylko przez optymalizację kodu, zmianę algorytmu lub zwiększenie taktowania. Jeśli w kodzie jest czekanie, to nie przyspiesza.
1 sekunda to 1000 milisekund, więc 1000 ms = 1 s. Analogicznie: 10 ms = 0,01 s. Na egzaminie zawsze zapisuj jednostkę i wykonuj przeliczenie, zamiast zgadywać po samej liczbie.
To efekt pomylenia skali czasu: milisekundy i sekundy różnią się 1000 razy. Dodatkowo w wielu bibliotekach parametr jest w ms, więc liczba "1000" oznacza 1 s, a "10" tylko 10 ms. Brak uwagi na jednostkę prowadzi do błędu.
Najprościej stosuje się funkcje blokujące (program "stoi" przez zadany czas). Bardziej profesjonalnie używa się timerów i przerwań lub odliczania czasu bez blokowania (pętla główna działa, a zdarzenie uruchamia się po upływie czasu).
Nie zawsze. W prostych układach i krótkich zwłokach bywa akceptowalne (np. test diod). Jest złe, gdy trzeba równolegle obsługiwać inne zadania (komunikacja, pomiary), bo w czasie zwłoki program nie reaguje na zdarzenia.
Najczęstsze to: pomylenie jednostek (ms/s), uznanie, że czekanie "stabilizuje" i "przyspiesza", mylenie opóźnienia blokującego z timerem oraz nieuwzględnienie, że pętla wykonuje się wielokrotnie (zwłoka może sumować się w czasie).
Opóźnienie 1 s spotyka się np. w sygnalizacji stanu (miga co sekundę), w sekwencjach uruchamiania (odczekanie przed kolejnym krokiem), w testach serwisowych oraz przy okresowym odczycie czujników, gdy pomiar nie musi być częstszy.
Sprawdź wartość i jednostkę parametru: 10 ms to zwykle liczba 10 (w ms), a 1 s to 1000 ms lub 1 (w sekundach). Jeśli środowisko podaje czas w milisekundach, to 1000 oznacza 1 sekundę.
Rób krótkie ćwiczenia: rozpoznawanie jednostek, przeliczanie ms↔s, porównywanie rozwiązań blokujących i nieblokujących oraz analiza pętli głównej. Dobrze działa też pisanie mini-programów: miganie LED, odczyt czujnika co czas, obsługa przycisku bez blokowania.
info

Statystycznie 66% uczniów zna prawidłową odpowiedź. średnie

W praktyce zawodowej kluczowe jest to, że opóźnienie oznacza celowe wstrzymanie dalszego wykonywania instrukcji na zadany czas.

Źródła:

  • Arduino Language Reference: delay() — https://docs.arduino.cc/language-reference/en/functions/time/delay/ (dostęp: 2026-02-18)
  • The Open Group Base Specifications Issue 7 (POSIX): sleep() — https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html (dostęp: 2026-02-18)
  • Microsoft Learn: Sleep function (synchapi.h) — https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja środowiska użytego w zadaniu (funkcje opóźnień/timerów)
  • Materiały o timerach sprzętowych i programowych w mikrokontrolerach
  • Ćwiczenia z przeliczania ms↔s i interpretacji prostych fragmentów kodu

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego