KWALIFIKACJA INF2 + INF3 - CZERWIEC 2006

PYTANIE NR 29.
W języku Pascal różnica między funkcją a procedurą polega na tym, że
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W Pascalu funkcja (FUNCTION) musi zwrócić dokładnie jedną wartość określonego typu, zwykle przez przypisanie do nazwy funkcji, i może być użyta w wyrażeniach. Procedura (PROCEDURE) wykonuje operacje, ale nie zwraca wartości przez nazwę (choć może zmieniać parametry VAR).

Pełne wyjaśnienie:

W Pascalu istnieją dwa podstawowe rodzaje podprogramów: funkcje i procedury. Kluczowa, egzaminacyjnie istotna różnica dotyczy zwracania wartości.

Funkcja (FUNCTION) zawsze zwraca dokładnie jedną wartość określonego typu. Typ wyniku jest podany w nagłówku funkcji, a sam wynik jest ustawiany w ciele funkcji przez przypisanie do nazwy funkcji (np. "NazwaFunkcji := wynik"). Dzięki temu wywołanie funkcji może być elementem wyrażeń arytmetycznych i logicznych, np. w obliczeniach lub warunkach.

Procedura (PROCEDURE) służy do wykonania czynności (np. wypisanie tekstu, zapis do pliku, modyfikacja struktur danych), ale nie zwraca wartości przez nazwę. Procedury nie używa się jako "wartości" w wyrażeniu. Ważny niuans: procedura może "oddać" dane przez modyfikację parametrów przekazanych przez referencję (VAR) lub przez zmianę zmiennych globalnych, ale to nie jest to samo co zwrócenie wyniku funkcji.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • "Do funkcji i procedur można przekazywać zarówno zmienne, jak i wartości." — to opis cechy wspólnej: oba typy podprogramów mogą przyjmować parametry, w tym przekazywane przez wartość lub przez referencję (VAR). Nie jest to różnica.
  • "Procedura i funkcja mogą mieć dowolną liczbę parametrów." — również cecha wspólna: zarówno funkcja, jak i procedura mogą mieć 0, 1 lub wiele parametrów, zależnie od potrzeb.
  • "Funkcja i procedura różnią się tylko nazwą, nie funkcjonalnością." — fałsz: różnią się semantyką wywołania i rolą w programie; funkcja jest źródłem wartości, procedura jest instrukcją wykonującą działanie.

Wskazówka do nauki: jeśli podprogram ma być użyty "po prawej stronie" w obliczeniach lub w warunku — zwykle powinien być funkcją. Jeśli ma wykonywać operację bez potrzeby pojedynczego wyniku — zwykle procedurą.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Funkcja (FUNCTION) to podprogram, który zwraca jedną wartość określonego typu. Wynik ustawia się w ciele funkcji, zwykle przez przypisanie do nazwy funkcji (np. Nazwa := wynik), dzięki czemu wywołanie funkcji może być użyte w wyrażeniach.
Procedura (PROCEDURE) to podprogram służący do wykonania operacji (np. wypisania danych, modyfikacji struktur, I/O), który nie zwraca wartości przez nazwę. Może jednak zmieniać stan programu, np. modyfikując parametry przekazane przez VAR.
Najważniejsza różnica: funkcja zwraca wartość (jedną, określonego typu) i może być elementem wyrażenia, a procedura nie zwraca wartości przez nazwę i jest traktowana jak instrukcja wykonująca działanie.
Tak, ale nie w sensie funkcji. Procedura nie zwraca wartości przez nazwę, natomiast może przekazać dane na zewnątrz przez parametry VAR (modyfikowane w środku) albo przez zmianę zmiennych globalnych. To częsty powód pomyłek na testach.
Tak. Ponieważ funkcja zwraca wartość, możesz jej użyć w obliczeniach i warunkach, np. w wyrażeniu arytmetycznym albo w instrukcji if. To praktyczna wskazówka: jeśli coś ma być "wartością" w kodzie, zwykle powinno być funkcją.
Procedura nie ma wartości zwracanej przez nazwę, więc kompilator nie ma czego wstawić do wyrażenia. Procedura ma wykonać działanie (efekt uboczny), a nie dostarczyć wynik. Jeśli potrzebujesz wartości, powinieneś zaprojektować to jako funkcję albo użyć parametru VAR.
W nagłówku funkcji występuje słowo FUNCTION oraz typ wyniku po dwukropku (np. function F(x: Integer): Integer;). Procedura ma słowo PROCEDURE i nie ma typu wyniku po dwukropku (np. procedure P(x: Integer);).
Typowe błędy to: użycie procedury w wyrażeniu, brak przypisania wyniku do nazwy funkcji, oraz mylenie "zwracania" z modyfikacją parametrów VAR. W testach warto pamiętać: funkcja = wartość, procedura = działanie (choć może zmieniać VAR).
Tak. Zarówno funkcje, jak i procedury mogą przyjmować parametry (0 lub wiele). Parametry mogą być przekazywane przez wartość lub przez referencję (VAR). To jednak cecha wspólna, a nie różnica między funkcją i procedurą.
Przećwicz rozpoznawanie nagłówków FUNCTION/PROCEDURE, dopisywanie typu wyniku w funkcji i ustawianie wyniku przez przypisanie do nazwy funkcji. Zrób też krótkie zadania: zamień procedurę na funkcję (gdy potrzebny wynik) i funkcję na procedurę (gdy liczy się efekt uboczny).
info

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

Eksperci podkreślają: "W Pascalu funkcja (FUNCTION) musi zwrócić dokładnie jedną wartość określonego typu, zwykle przez przypisanie do nazwy funkcji, i może być użyta w wyrażeniach."

Źródła:

  • Free Pascal Reference Guide: "Procedures and Functions" (dokumentacja FPC) - https://www.freepascal.org/docs-html/ref/refsu10.html - accessed 2026-02-18
  • Free Pascal Reference Guide: "Parameter lists" / przekazywanie parametrów (VAR) - https://www.freepascal.org/docs-html/ref/refsu11.html - accessed 2026-02-18
  • Embarcadero Delphi DocWiki: "Procedures and Functions (Delphi)" - https://docwiki.embarcadero.com/RADStudio/en/Procedures_and_Functions - accessed 2026-02-18

Materiały:

  • Dokumentacja Free Pascal: rozdziały o deklaracjach FUNCTION/PROCEDURE
  • Podręczniki do Pascala/Delphi (podprogramy, parametry, VAR)
  • Ćwiczenia: przepisywanie procedury na funkcję i odwrotnie (z zachowaniem semantyki)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego