KWALIFIKACJA MED7 - CZERWIEC 2017

PYTANIE NR 27.
Zmienne definiowane w programie głównym na zewnątrz wszystkich funkcji i procedur lub innych bloków programu określamy jako zmienne
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zmienne zadeklarowane w programie głównym poza wszystkimi funkcjami, procedurami i blokami mają zasięg obejmujący cały program/moduł, więc nazywa się je zmiennymi globalnymi.
Zmienne lokalne istnieją tylko wewnątrz funkcji/bloku, a "statyczne" i "dynamiczne" opisują inne własności niż samo miejsce deklaracji.

Pełne wyjaśnienie:

W programowaniu nazwa zmiennej często zależy od zasięgu widoczności (czyli tego, gdzie w kodzie można się do niej odwołać) oraz od miejsca jej deklaracji/definicji.

Jeżeli zmienna jest zdefiniowana w programie głównym poza wszystkimi funkcjami, procedurami i innymi blokami, to nie należy do wnętrza żadnego lokalnego zakresu. Taka zmienna jest dostępna (zgodnie z regułami danego języka) dla wielu fragmentów programu, dlatego określa się ją jako zmienną globalną.

Dlaczego pozostałe odpowiedzi nie pasują:

  • "lokalne" – zmienne lokalne są deklarowane wewnątrz funkcji/procedury lub bloku i tylko tam są widoczne. Kryterium w pytaniu mówi wprost o deklaracji na zewnątrz wszystkich funkcji i bloków, więc nie jest to lokalność.
  • "statyczne" – "statyczność" w wielu językach wiąże się z czasem życia obiektu lub sposobem przechowywania, a nie z samą informacją, że zmienna jest poza funkcjami. Zmienna globalna może (zależnie od języka) mieć różne cechy pamięciowe, ale kluczowe w pytaniu jest położenie deklaracji i zasięg.
  • "dynamiczne" – "dynamiczne" zwykle odnosi się do tworzenia/zarządzania pamięcią w trakcie działania programu (np. alokacja). To inny wymiar niż zasięg widoczności. Zmienna może być globalna, ale nie jest to równoznaczne z "dynamiczna".

Wskazówka egzaminacyjna: gdy w treści pojawia się opis "poza wszystkimi funkcjami/procedurami/blokami", najpierw myśl o zasięgu globalnym. Natomiast "lokalne" wiąż z wnętrzem funkcji, a "dynamiczne/statyczne" traktuj jako cechy dotyczące tworzenia i czasu życia danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Zmienna globalna to zmienna zadeklarowana poza funkcjami i blokami, której zasięg obejmuje szeroki obszar programu (np. cały moduł lub plik, zależnie od języka). Dzięki temu wiele funkcji może korzystać z tej samej wartości, ale rośnie ryzyko niekontrolowanych zmian stanu.
Najczęściej rozpoznasz to po miejscu deklaracji: znajduje się na "najwyższym poziomie" pliku/modułu, a nie wewnątrz funkcji, pętli czy instrukcji warunkowej. Jeśli kolejne funkcje odwołują się do tej samej nazwy bez przekazywania jej jako parametr, często jest to zmienna globalna.
Zmienna lokalna jest powiązana z konkretnym blokiem lub funkcją, więc nie istnieje "na zewnątrz wszystkich funkcji i procedur". Jej widoczność jest ograniczona do fragmentu kodu, w którym została zadeklarowana, co zwykle ułatwia kontrolę zmian, ale zmniejsza dostępność dla innych części programu.
Zakres widoczności określa, w jakiej części programu można użyć danej nazwy zmiennej. Jest zależny od struktury kodu (bloki, funkcje, moduły). W praktyce pomaga zrozumieć, czy dana zmienna jest dostępna tylko lokalnie, czy może być używana w wielu miejscach, jak w przypadku zmiennych globalnych.
Nie zawsze, ale często utrudniają testowanie i utrzymanie kodu, bo wiele funkcji może zmieniać wspólny stan. Czasem są uzasadnione, np. dla stałych konfiguracyjnych lub współdzielonych ustawień, ale w projektach (także medycznych) zwykle preferuje się przekazywanie danych parametrami lub użycie dobrze kontrolowanych struktur.
"Globalna" opisuje przede wszystkim zasięg (gdzie jest widoczna), a "statyczna" zwykle odnosi się do czasu życia lub sposobu przechowywania (zależnie od języka). Zmienna może być zadeklarowana globalnie, ale "statyczność" nie wynika automatycznie z samego faktu bycia poza funkcjami.
Dynamiczność najczęściej dotyczy tego, że pamięć dla danych jest przydzielana w trakcie działania programu (np. alokacja). To inna cecha niż zasięg widoczności. Zmienna globalna może wskazywać na dane dynamiczne (np. wskaźnik/referencja), ale pojęcia "globalna" i "dynamiczna" nie są równoważne.
Np. w prostych aplikacjach do akwizycji danych, skryptach pomocniczych lub programach diagnostycznych, gdzie przechowuje się wspólną konfigurację albo stan połączenia. W systemach medycznych warto jednak ograniczać globalny stan, bo może utrudniać analizę błędów i walidację działania oprogramowania.
Typowe pomyłki to mylenie "zasięgu" z "czasem życia" (globalna vs statyczna), traktowanie słowa "dynamiczna" jako przeciwieństwa "lokalna", oraz ignorowanie informacji o miejscu deklaracji. Pomaga zasada: najpierw ustal, gdzie zmienna jest zadeklarowana (wewnątrz czy na zewnątrz bloku).
Ćwicz na krótkich fragmentach kodu: zaznacz, gdzie zaczyna się i kończy blok, a następnie wypisz nazwy zmiennych i ich zasięg. Ucz się też rozróżniać pojęcia: zasięg (widoczność) vs czas życia vs sposób alokacji. To pozwala szybko eliminować mylące odpowiedzi.
info

To pytanie poprawnie rozwiązuje 75% zdających egzamin. średnio łatwe

Źródła:

  • cppreference.com: "Scope" (C/C++), https://en.cppreference.com/w/c/language/scope (dostęp: 2026-02-27)
  • Microsoft Learn: "Variable scope (C#)" (ogólne pojęcie zasięgu zmiennych), https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/scope (dostęp: 2026-02-27)
  • Python Documentation: "Naming and binding" / zasięg nazw (LEGB), https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces (dostęp: 2026-02-27)

Materiały:

  • Podręcznik do podstaw programowania (rozdziały: zmienne, zakres widoczności, funkcje)
  • Dokumentacja języka używanego na zajęciach (np. rozdział o scope i deklaracjach)
  • Ćwiczenia: identyfikacja zmiennych globalnych/lokalnych w krótkich fragmentach kodu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego