KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2013

PYTANIE NR 28.
Przeanalizuj program i określ, jaki będzie efekt jego działania.
Ilustracja przedstawia fragment kodu w języku C++, który jest częścią pytania egzaminacyjnego dla technika programisty.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna jest odpowiedź: "Do pliku o nazwie wpisanej przez użytkownika zostanie wpisana litera "K"". Wynika to z typowego schematu: program pobiera od użytkownika nazwę pliku, otwiera plik do zapisu pod tą nazwą, a następnie zapisuje do niego pojedynczy znak "K", a nie całe słowo ani nazwę pliku.

Pełne wyjaśnienie:

W tego typu zadaniach kluczowe jest rozdzielenie dwóch kwestii: jaka jest nazwa pliku oraz co dokładnie jest do niego zapisywane. Jeżeli program wczytuje od użytkownika tekst (np. nazwę pliku) i wykorzystuje go jako parametr otwarcia pliku do zapisu, to plik wynikowy nie ma stałej nazwy typu "wyniki", tylko jest tworzony/otwierany pod nazwą podaną przez użytkownika.

Następnie należy sprawdzić, co jest wysyłane na strumień plikowy. Jeżeli w kodzie pojawia się zapis pojedynczego znaku "K" (a nie łańcucha znaków "wyniki"), to efektem działania jest umieszczenie w pliku właśnie litery "K". W wielu językach i bibliotekach zapis do pliku realizuje się tym samym mechanizmem co wypisywanie na ekran, ale różni się tym, że "adresatem" jest obiekt reprezentujący plik.

Dlaczego pozostałe propozycje są błędne:

  • Odpowiedź "Do pliku o nazwie wpisanej przez użytkownika zostanie wpisane słowo "wyniki"" miesza pojęcia: wymagałaby, aby program zapisywał do pliku dokładny tekst "wyniki", a nie pojedynczy znak.
  • Odpowiedź "Do pliku o nazwie "wyniki" zostanie wpisana nazwa pliku jaką poda użytkownik" zakłada stałą nazwę pliku "wyniki" i jednocześnie zapis wczytanej nazwy do zawartości. To byłyby dwa osobne elementy logiki, które musiałyby wynikać wprost z instrukcji otwarcia pliku i instrukcji zapisu.
  • Odpowiedź "Do pliku o nazwie "nazwa" zostanie wpisane zdanie "wynik<<'K'"" jest typowym błędem "czytania kodu jak tekstu": program zwykle nie zapisuje do pliku fragmentów własnej składni, tylko wartości (np. znak "K").

Wskazówka egzaminacyjna: zawsze podkreśl w kodzie (1) miejsce, gdzie tworzony/otwierany jest plik i z jaką nazwą, oraz (2) dokładny argument zapisu (znak, słowo, zmienna). To pozwala szybko odróżnić "nazwa pliku" od "zawartości pliku".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza to, że program pobiera tekst z wejścia (np. z klawiatury) i używa go jako nazwy/ścieżki przy otwieraniu pliku. W efekcie plik nie ma stałej nazwy z kodu, tylko zależy od tego, co poda użytkownik. To częsty mechanizm w zadaniach egzaminacyjnych z analizą programu.
Trzeba sprawdzić, do jakiego strumienia trafia operator zapisu. Jeśli "adresatem" jest obiekt plikowy (np. strumień pliku), dane trafią do pliku. Jeśli używany jest strumień konsoli, dane pojawią się na ekranie. Podobna składnia bywa pułapką, więc liczy się nazwa/typ strumienia.
Bo zapis może dotyczyć pojedynczego znaku, nie łańcucha znaków. W wielu językach znak w apostrofach oznacza jeden znak, a tekst w cudzysłowie oznacza napis. W zadaniu efekt to zapis dokładnie tego, co jest argumentem operacji zapisu, czyli znaku "K".
Najczęściej tak, jeśli plik jest otwierany w trybie zapisu domyślnym. Wtedy poprzednia zawartość może zostać zastąpiona nową. Aby dopisywać na końcu, zwykle potrzebny jest tryb dopisywania. Na egzaminie warto zwracać uwagę, czy w kodzie jest ustawiony tryb dopisywania.
Najczęściej myli się nazwę pliku z zawartością pliku, zakłada się stałą nazwę "wyniki" mimo wczytywania od użytkownika albo myli się zapis do pliku z wypisaniem na ekran. Pomaga zaznaczenie w kodzie: skąd pochodzi nazwa pliku oraz jaka wartość jest przekazywana do zapisu.
To zapis pojedynczego znaku (jednej litery, cyfry lub symbolu), a nie całego wyrazu czy zdania. W praktyce plik będzie zawierał tylko ten znak, ewentualnie wraz z końcem linii, jeśli program dopisuje go osobno. W zadaniach egzaminacyjnych odróżniaj znak od napisu.
Nie musi. To typowa pułapka: nazwa pliku może służyć wyłącznie do otwarcia pliku, a zapisywane do środka mogą być inne dane (np. znak "K"). Żeby nazwa trafiła do zawartości, w kodzie musiałaby wystąpić jawna instrukcja zapisu tej zmiennej.
Stała nazwa zwykle występuje jako dosłowny tekst w cudzysłowie (np. "wyniki"). Zmienna z nazwą pliku ma identyfikator (np. nazwa, plikNazwa) i jest wcześniej wczytana od użytkownika. W analizie programu sprawdź, co jest argumentem funkcji/operacji otwierającej plik.
Pojawiają się, gdy trzeba ocenić skutek działania kodu: co zostanie wypisane, co zapisane do pliku, jak zmieni się zmienna, jaki będzie rezultat pętli lub warunku. To sprawdza umiejętność czytania kodu i przewidywania efektu bez uruchamiania programu, co jest ważne w pracy informatyka.
Zastosuj procedurę: wejścia (co program wczytuje), przetwarzanie (jakie operacje wykonuje) i wyjścia (gdzie trafia wynik: ekran/plik). W zadaniach z plikami szczególnie wypisz: jaka jest nazwa pliku i jaka wartość jest do niego zapisywana.
info

Statystycznie 48% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Poprawna jest odpowiedź: "Do pliku o nazwie wpisanej przez użytkownika zostanie wpisana litera "K""."

Źródła:

  • cppreference.com: std::basic_ofstream — opis tworzenia/otwierania pliku do zapisu oraz użycia strumienia wyjściowego (C++), https://en.cppreference.com/w/cpp/io/basic_ofstream (dostęp: 02.03.2026)
  • cppreference.com: operator<< dla strumieni — mechanizm zapisu danych (w tym znaków) do strumienia wyjściowego, https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt (dostęp: 02.03.2026)

Materiały:

  • Dokumentacja języka i biblioteki standardowej dotycząca strumieni wejścia/wyjścia i plików
  • Materiały dydaktyczne do INF.3: podstawy programowania i operacje na plikach
  • Ćwiczenia praktyczne: krótkie programy zapisujące tekst/znaki do pliku i porównanie efektów

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego