KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2009

PYTANIE NR 14.
Poniższy algorytm zapisany w postaci listy kroków zawiera


1. Zacznij algorytm
2. Wprowadź wartość współczynnika a
3. Wprowadź wartość współczynnika b
4. Jeśli a=0, to jeśli b=0, to wyprowadź: "nieskończenie wiele rozwiązań" 
	w przeciwnym wypadku wyprowadź: "równania sprzeczne" 
	w przeciwnym wypadku: oblicz: x:=b/a, wyprowadź x
5. Zakończ algortym	



A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W algorytmie są dwie operacje warunkowe: "Jeśli a=0" oraz zagnieżdżone "jeśli b=0". Klauzule "w przeciwnym wypadku" są częścią tych instrukcji i nie tworzą nowych warunków. Są też trzy operacje wyprowadzenia: dwa komunikaty tekstowe i wyprowadzenie wartości x.

Pełne wyjaśnienie:

W tym zadaniu trzeba rozpoznać typy operacji w pseudokodzie: wejście (wprowadź), wyjście (wyprowadź), warunek (jeśli) oraz ewentualnie przypisanie/obliczenie.

Operacje warunkowe liczymy jako wystąpienia instrukcji "jeśli". W podanym algorytmie są dwa takie miejsca:

  • "Jeśli a=0" – pierwsza instrukcja warunkowa, która rozdziela przypadek szczególny od standardowego.
  • "to jeśli b=0" – druga instrukcja warunkowa, zagnieżdżona w gałęzi pierwszego warunku.

Sformułowanie "w przeciwnym wypadku" opisuje gałąź alternatywną tej samej instrukcji IF-THEN-ELSE. Nie jest to osobny test logiczny, więc nie zwiększa liczby operacji warunkowych.

Operacje wyprowadzenia (OUTPUT) to wszystkie instrukcje "wyprowadź". W algorytmie występują trzy wyprowadzenia:

  • wyprowadzenie komunikatu "nieskończenie wiele rozwiązań",
  • wyprowadzenie komunikatu "równania sprzeczne",
  • wyprowadzenie obliczonej wartości x.

Dlaczego pozostałe propozycje są błędne? Odpowiedzi wskazujące na "operacje wprowadzenia danych" nie pasują, bo w algorytmie wprowadzamy tylko dwa dane: a i b. Odpowiedzi z jedną operacją warunkową pomijają zagnieżdżony warunek dla b=0. Z kolei odpowiedź z dwiema operacjami wyprowadzenia jest niepoprawna, bo widać trzy instrukcje "wyprowadź" (dwa komunikaty i wynik x).

Praktyczna wskazówka egzaminacyjna: najpierw podkreśl wszystkie "jeśli" i wszystkie "wyprowadź", a dopiero potem policz. To zmniejsza ryzyko doliczenia ELSE jako "dodatkowego warunku".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operacja warunkowa to instrukcja podejmowania decyzji, zwykle zapisywana jako jeśli (IF), która wybiera jedną z gałęzi wykonania na podstawie warunku logicznego. Liczy się ją jako wystąpienie testu (np. "jeśli a=0"), a nie jako liczbę gałęzi czy słów "w przeciwnym wypadku".
Nie, standardowo "w przeciwnym wypadku" (ELSE) jest częścią tej samej konstrukcji IF-THEN-ELSE. Nie wprowadza nowego sprawdzenia warunku, tylko opisuje, co zrobić, gdy warunek IF jest fałszywy. Doliczanie ELSE jako dodatkowego warunku to częsty błąd na egzaminach.
Operacje wyprowadzenia to wszystkie instrukcje typu OUTPUT, w tym przypadku oznaczone słowem "wyprowadź". Każde wystąpienie "wyprowadź …" liczymy osobno, niezależnie od tego, czy wyprowadzamy komunikat tekstowy, liczbę, czy zmienną (np. "wyprowadź x").
Są dwie operacje wprowadzenia danych, bo algorytm zawiera kroki "Wprowadź wartość współczynnika a" oraz "Wprowadź wartość współczynnika b". Każda instrukcja INPUT to osobna operacja. Późniejsze obliczenia i warunki nie są wprowadzeniem danych.
Ponieważ występują dwa niezależne testy logiczne: najpierw sprawdzane jest "a=0", a następnie (w tej gałęzi) sprawdzane jest "b=0". To zagnieżdżenie oznacza drugą decyzję. Z perspektywy analizy algorytmu liczy się liczba instrukcji IF, a nie liczba zakończeń algorytmu.
Ten przypadek zachodzi, gdy jednocześnie a=0 i b=0. Wtedy równanie ma postać 0·x=0, która jest prawdziwa dla każdej wartości x, więc rozwiązań jest nieskończenie wiele. Algorytm rozpoznaje to przez zagnieżdżony warunek dla b w gałęzi a=0.
"Równanie sprzeczne" pojawia się, gdy a=0 oraz b≠0. Wtedy równanie ma postać 0·x=b, czyli 0=b, co jest fałszem dla b różnego od zera. Dlatego algorytm kończy działanie komunikatem, zamiast próbować liczyć x.
Najczęstsze błędy to: (1) liczenie ELSE jako osobnego warunku, (2) pomijanie zagnieżdżonego IF, bo jest "wewnątrz" innego warunku, (3) traktowanie przypisania (np. x:=b/a) jako wyprowadzenia, oraz (4) mylenie liczby linii z liczbą operacji danego typu.
Najpierw zaznacz wszystkie słowa kluczowe: "wprowadź" (INPUT), "wyprowadź" (OUTPUT) i "jeśli" (IF). Potem policz wystąpienia każdego typu. Na końcu sprawdź, czy nie doliczyłeś gałęzi "w przeciwnym wypadku" jako osobnego IF oraz czy nie pominąłeś zagnieżdżonych warunków.
Zagnieżdżenia IF tworzą więcej możliwych ścieżek wykonania programu. To zwiększa liczbę przypadków testowych potrzebnych do pokrycia logiki (np. różne kombinacje wartości a i b). W praktyce często dąży się do uproszczenia warunków lub stosowania wcześniejszych zakończeń, aby kod był czytelniejszy i łatwiejszy w utrzymaniu.
info

To pytanie poprawnie rozwiązuje 56% zdających egzamin. średnie

Według specjalistów z branży: "W algorytmie są dwie operacje warunkowe: "Jeśli a=0" oraz zagnieżdżone "jeśli b=0"."

Źródła:

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, "Wprowadzenie do algorytmów", rozdziały wprowadzające o pseudokodzie i analizie algorytmów (wydania polskie, różne).
  • Ian Sommerville, "Inżynieria oprogramowania", rozdziały o konstrukcjach sterujących i jakości/kontrolowaniu złożoności kodu (wydania polskie, różne).
  • Thomas J. McCabe, "A Complexity Measure", IEEE Transactions on Software Engineering, 1976 (złożoność cyklomatyczna – związek z liczbą decyzji/warunków).

Materiały:

  • Podręczniki i skrypty do podstaw algorytmiki i pseudokodu (instrukcje warunkowe, wejście/wyjście)
  • Materiały o złożoności obliczeniowej i praktycznych miarach jakości kodu (np. złożoność cyklomatyczna)
  • Ćwiczenia z analizy krótkich fragmentów pseudokodu: klasyfikacja instrukcji i zliczanie operacji

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego