Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 28 kwietnia 2026 13:55
  • Data zakończenia: 28 kwietnia 2026 14:02

Egzamin niezdany

Wynik: 8/40 punktów (20,0%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Aby przywrócić bazę danych MS SQL z archiwum, należy użyć polecenia

A. RESTORE DATABASE
B. REBACKUP DATABASE
C. SAVE DATABASE
D. DBCC CHECKDB
Pozostałe odpowiedzi nie są właściwe w kontekście przywracania bazy danych MS SQL z kopii bezpieczeństwa. DBCC CHECKDB jest narzędziem służącym do sprawdzania integralności bazy danych, ale nie ma zastosowania w procesie przywracania danych. To polecenie diagnostyczne pozwala na identyfikację uszkodzeń strukturalnych bazy danych oraz ich potencjalne naprawienie, co jest ważne, lecz nie dotyczy samego procesu przywracania. SAVE DATABASE nie jest uznawane za standardowe polecenie w MS SQL Server. Takie działanie nie istnieje w dokumentacji, co oznacza, że nie można go używać do wykonywania operacji na bazach danych. Ostatnia odpowiedź, REBACKUP DATABASE, również nie jest poprawna, ponieważ MS SQL Server nie posiada takiej komendy. W rzeczywistości, proces tworzenia kopii zapasowej danych realizuje się za pomocą polecenia BACKUP DATABASE, a nie REBACKUP. Każda z tych odpowiedzi ma swoje zastosowanie w pracy z bazami danych, ale w kontekście przywracania nie spełniają wymagań. Dlatego kluczowe jest zrozumienie roli polecenia RESTORE DATABASE w prawidłowym zarządzaniu bazami danych.

Pytanie 2

Jakie funkcje w języku PHP umożliwiają weryfikację wartości oraz typu zmiennej?

A. readfile()
B. strlen()
C. var_dump()
D. implode()
W języku PHP do sprawdzania wartości i typu zmiennej można wykorzystać funkcję var_dump(). Ta funkcja jest niezwykle przydatna w procesie debugowania, ponieważ wyświetla szczegółowe informacje na temat zmiennej, w tym jej typ, wartość oraz, w przypadku tablic i obiektów, również ich strukturę. Przykładowo, jeśli mamy zmienną $a przypisaną do wartości 10, wywołując var_dump($a), otrzymamy wynik: int(10). Oznacza to, że $a jest zmienną typu całkowitego (integer) o wartości 10. Funkcja ta jest szczególnie użyteczna w sytuacjach, gdy potrzebujemy dokładnych informacji o złożonych strukturach danych, takich jak tablice czy obiekty. Warto zauważyć, że var_dump() jest zgodna z typowymi standardami PHP i często stosowana w praktyce przez programistów do szybkiego diagnozowania problemów w kodzie. Dodatkowo, jej użycie jest zalecane podczas pisania testów jednostkowych, gdyż umożliwia weryfikację stanu zmiennych.

Pytanie 3

Aby posortować listę uczniów według daty urodzenia w bazie danych, jakie polecenie należy zastosować?

A. SELECT imie,nazwisko,klasa from uczniowie order by rok_urodzenia
B. SELECT imie,nazwisko,klasa from uczniowie order by nazwisko
C. SELECT imie,nazwisko,klasa from uczniowie where rok_urodzenia = 1994
D. SELECT imie,nazwisko,klasa from uczniowie group by rok_urodzenia
Wybór pierwszej odpowiedzi nie jest właściwy, ponieważ ogranicza on wyniki do uczniów, którzy urodzili się w konkretnym roku, czyli 1994. Takie podejście nie pozwala na uzyskanie pełnej listy uczniów w kolejności ich roku urodzenia, a jedynie wyświetla tych z jednego, wybranego roku. Zatem nie spełnia ono wymogu uporządkowania całej listy według roku urodzenia. Kolejna odpowiedź, która sugeruje użycie klauzuli 'GROUP BY' na kolumnie 'rok_urodzenia', również jest niepoprawna. Klauzula ta służy do agregacji danych i grupowania ich na podstawie wartości w danej kolumnie, a nie do sortowania. Może to prowadzić do utraty informacji, gdyż zwraca jedynie jedną pozycję dla każdej unikalnej wartości w kolumnie, co nie umożliwia analizy szczegółowej. Co więcej, ostatnia odpowiedź, która proponuje sortowanie według nazwiska, jest całkowicie nieadekwatna do zadania. Sortowanie uczniów według nazwiska nie odnosi się do roku urodzenia, co było celem pytania. Takie działanie może prowadzić do zamieszania w wynikach, a uczniowie nie będą uporządkowani w sposób, który odpowiada ich wieku. Wszystkie te odpowiedzi nie spełniają zatem wymagań dotyczących sortowania i analizy danych w kontekście roku urodzenia.

Pytanie 4

Jakie stwierdzenie dotyczące zaprezentowanego kodu jest prawdziwe?

Ilustracja do pytania
A. Znak kropki "." jest operatorem konkatenacji
B. W zmiennej $a wartość "Ala" zostanie zmieniona na "Ola"
C. Znak "=" pełni rolę operatora porównania dwóch zmiennych
D. Zostanie wyświetlony komunikat "OlaA"
W analizowanym kodzie występuje kilka nieporozumień dotyczących działania operatorów Znak równości w PHP pełni rolę operatora przypisania a nie porównania Działa on poprzez przypisywanie wartości znajdującej się po prawej stronie do zmiennej po lewej stronie Operator porównania w PHP to podwójny znak równości == który sprawdza czy dwie wartości są sobie równe lub potrójny === który dodatkowo sprawdza typy danych Z kolei operator kropki w PHP jest używany do łączenia ciągów znaków a nie do przypisywania wartości lub porównywania W przedstawionym kodzie $a Ola używa operatora kropek z przypisaniem aby dołączyć Ola do zmiennej $a która zawierała wcześniej Ala Co więcej twierdzenie że zmienna zostanie zmieniona z Ala na Ola jest błędne ponieważ operacja konkatenacji powoduje dodanie drugiej wartości do pierwszej a nie jej zastąpienie Każda z tych błędnych interpretacji może wynikać z mylnego zrozumienia podstawowych operatorów PHP i ich funkcji w manipulatorze ciągów znaków oraz przypisywaniu wartości Operator konkatenacji jest fundamentalnym narzędziem w programowaniu PHP pozwalającym na dynamiczne zarządzanie i modyfikację tekstu w aplikacjach co czyni jego znajomość kluczową dla każdego programisty Aby uniknąć takich błędów warto dobrze poznać podstawy składni i semantyki języka PHP oraz regularnie ćwiczyć ich zastosowanie w praktycznych scenariuszach projektowych

Pytanie 5

Które z poniższych stwierdzeń dotyczy skalowania obrazu?

A. Opiera się na modyfikacji formatu zapisu obrazu w celu zmiany metody kompresji
B. Skutkuje wycięciem z oryginalnego obrazu konkretnego fragmentu, aby uzyskać lepszy widok
C. Prowadzi do zmiany wielkości obrazu bez zmiany istotnej zawartości wizualnej
D. Łączy bądź pozbywa się kształtów
Wybór odpowiedzi, które nie odnosi się do poprawnego zrozumienia procesu skalowania obrazu, często wynika z zamieszania z innymi technikami przetwarzania obrazu. Na przykład, pierwsza odpowiedź sugeruje operacje na kształtach, co jest bardziej związane z wektoryzacją lub przekształceniem geometrycznym niż z samym skalowaniem. Skalowanie nie łączy ani nie odejmuje kształtów, lecz dostosowuje rozmiar istniejącego obrazu. Kolejna odpowiedź sugeruje, że skalowanie obrazu polega na zmianie sposobu zapisu, co dotyczy bardziej kompresji lub formatu pliku, a nie samego rozmiaru obrazu. Kompresja obrazu to proces zmniejszania rozmiaru pliku, ale nie zmienia fizycznych wymiarów obrazu. Ostatnia błędna odpowiedź koncentruje się na wycinaniu fragmentów obrazu, co jest zupełnie inną operacją, znaną jako kadrowanie. Kadrowanie zmienia sposób, w jaki obraz jest prezentowany, ale nie przekształca jego rozmiaru w kontekście jego rozdzielczości. Typowe błędy myślowe, które mogą prowadzić do takich nieprawidłowych wniosków, to mylenie terminów i zamienność pojęć związanych z przetwarzaniem obrazów. Kluczem do właściwego zrozumienia skalowania jest świadomość, że chodzi o zmianę wymiarów przy zachowaniu integralności wizualnej, co jest istotne w wielu aplikacjach cyfrowych.

Pytanie 6

Wskaż właściwą zasadę odnoszącą się do integralności danych w bazie danych?

A. pole klucza obcego nie powinno być puste
B. w relacji 1..n pole klucza obcego łączy się z polem klucza podstawowego innej tabeli
C. pole klucza podstawowego nie powinno być puste
D. pole klucza podstawowego musi mieć utworzony indeks
Wybór odpowiedzi dotyczącej klucza obcego, klucza podstawowego z indeksem lub relacji 1..n nie jest dostosowany do rzeczywistych zasad spójności danych w bazach danych. Klucz obcy, choć istotny dla relacji pomiędzy tabelami, może być pusty, jeżeli nie jest konieczne wskazanie powiązania z innym rekordem. Oznacza to, że pole klucza obcego w przypadku niektórych relacji może pozostawać puste bez naruszania integralności danych, co jest szczególnie widoczne w relacjach opcjonalnych. Odnośnie klucza podstawowego, również może pojawić się nieporozumienie, ponieważ pole klucza podstawowego wymaga utworzenia indeksu, ale nie jest to bezpośrednim wymogiem, aby pole to było puste. W praktyce, wielokrotnie można zaobserwować błędne założenia, że obecność indeksu automatycznie implikuje poprawność klucza podstawowego, co jest nieprawidłowe. Dodatkowo, niepoprawne jest również stwierdzenie, że pole klucza obcego jest zawsze powiązane z innym kluczem obcym; relacja 1..n oznacza, że klucz obcy w tabeli podrzędnej wskazuje na klucz podstawowy w tabeli głównej, a nie na inny klucz obcy. Te błędne koncepcje prowadzą do nieporozumień w projektowaniu baz danych oraz mogą skutkować nieefektywnymi, narażonymi na błędy systemami zarządzania danymi, które mogą naruszać zasady spójności oraz integralności danych.

Pytanie 7

Według zasad walidacji HTML5, właściwym zapisem dla znacznika hr jest

A. </ hr>
B. </ hr />
C. <hr>
D. </hr?>
Znaczniki HTML mają ściśle określoną składnię, której nieprzestrzeganie prowadzi do błędów interpretacji przez przeglądarki oraz problemów z dostępnością. W przypadku odpowiedzi, które zawierają '/ hr', '/hr?>' oraz '/ hr />', pojawia się nieporozumienie dotyczące struktury znaczników samodzielnych. W HTML5 znaczniki takie jak <hr> są elementami samodzielnymi, co oznacza, że nie potrzebują ani otwierającego, ani zamykającego znacznika. Użycie '/ hr' sugeruje, że element wymaga zamknięcia, co jest błędne. Ponadto, '/hr?>' zawiera nieprawidłowy znak '>', który w kontekście HTML nie ma sensu, co skutkuje błędem w kodzie. ' />' w odpowiedzi '/ hr />' może powodować mylenie z XHTML, gdzie rzeczywiście wymagane jest zamknięcie dla elementów samodzielnych. XHTML i HTML5 to różne standardy, a HTML5 został zaprojektowany w taki sposób, aby uprościć pisanie kodu i zwiększyć jego czytelność. Typowe błędy myślowe obejmują mylenie zasad dotyczących XHTML z HTML5 oraz niewłaściwe rozumienie, że wszystkie elementy muszą być zamykane. Ważne jest, aby zrozumieć różnice między tymi dwiema technologiami oraz stosować aktualne standardy, aby zapewnić kompatybilność i poprawność kodu.

Pytanie 8

Jakie są różnice między poleceniami DROP TABLE a TRUNCATE TABLE?

A. Obydwa polecenia usuwają tabelę wraz z jej zawartością, jednak tylko TRUNCATE TABLE może być cofnięte
B. Oba polecenia usuwają tylko zawartość tabeli, lecz tylko DROP TABLE może być cofnięte
C. DROP TABLE kasuje tabelę, a TRUNCATE TABLE usuwa wszystkie dane, pozostawiając tabelę pustą
D. DROP TABLE kasuje tabelę, natomiast TRUNCATE TABLE zmienia dane w niej, które spełniają określony warunek
Odpowiedź jest prawidłowa, ponieważ polecenie DROP TABLE w SQL służy do całkowitego usunięcia tabeli z bazy danych, co oznacza, że zarówno struktura tabeli, jak i jej dane zostaną trwale usunięte. Natomiast TRUNCATE TABLE jest używane do usuwania wszystkich wierszy z tabeli, ale sama tabela pozostaje w bazie danych. Po użyciu TRUNCATE TABLE struktura tabeli jest nienaruszona, co umożliwia jej dalsze wykorzystanie. Przykładowo, jeżeli mamy tabelę 'klienci' z danymi klientów, użycie DROP TABLE spowoduje utratę zarówno samej tabeli, jak i wszystkich danych. W przypadku TRUNCATE TABLE, tabela 'klienci' będzie nadal istniała, ale nie będzie zawierała żadnych rekordów. W praktycznych zastosowaniach, TRUNCATE TABLE jest bardziej efektywne pod względem wydajności, szczególnie przy dużych zbiorach danych, ponieważ działa szybciej niż DELETE bez warunku, i nie zapisuje informacji o usuniętych wierszach w dzienniku transakcji. Zgodnie z dobrymi praktykami, używaj DROP TABLE, gdy jesteś pewny, że tabela nie jest już potrzebna, a TRUNCATE TABLE, gdy chcesz szybko opróżnić tabelę, pozostawiając jej strukturę.

Pytanie 9

Który z elementów HTML ma charakter bloku?

A. span
B. p
C. img
D. strong
Czasami ludzie mają problemy z rozumieniem znaczenia <img>, <span> i <strong>, co może prowadzić do nieporozumień. Znacznik <img> to element inline, który służy do wstawiania obrazków do dokumentów HTML. Elementy inline nie zaczynają nowej linii, więc obrazek dodany przez <img> wpasowuje się w tekst i nie wywołuje żadnej przerwy. Dlatego <img> nie jest elementem blokowym i nie nadaje się do dzielenia treści akapitów, co jest istotne w kontekście struktury dokumentu. Z kolei <span> też jest inline i głównie służy do stylizacji konkretnego fragmentu tekstu, bez zmiany jego ogólnej struktury. To przydatne, gdy chcesz zastosować CSS do wybranych części, ale nie pomoże w budowaniu większych sekcji treści. A znacznik <strong>? No cóż, jest używany do podkreślenia ważności tekstu, co zazwyczaj oznacza pogrubienie, ale i tak nie wpływa na układ strony w sensie blokowym. Elementy inline, jak <img>, <span> i <strong>, nie tworzą widocznych sekcji w treści, co ogranicza ich zastosowanie przy budowaniu struktury dokumentu. Żeby stworzyć logiczne bloki tekstowe i sekcje na stronie, warto korzystać z elementów blokowych, jak <p>, by zapewnić lepszą czytelność i spełniać zasady semantyczne HTML.

Pytanie 10

Aby zmienić strukturę już istniejącej tabeli przy użyciu zapytania SQL, należy użyć kwerendy

A. INSERT INTO
B. ALTER TABLE
C. CREATE TABLE
D. UPDATE
Wybór odpowiedzi 'UPDATE' jest niepoprawny, ponieważ polecenie UPDATE służy jedynie do modyfikacji danych znajdujących się w już istniejących rekordach tabeli, a nie do zmiany samej struktury tabeli. Użycie tego polecenia w kontekście pytania prowadzi do mylnego wniosku, że można za jego pomocą dodawać kolumny lub zmieniać ich typy. Podobnie jak UPDATE, odpowiedź 'INSERT INTO' jest również niewłaściwa. To polecenie jest używane do dodawania nowych rekordów do tabeli, a nie do modyfikacji jej struktury. W praktyce, błędne użycie INSERT INTO w kontekście zmiany struktury tabeli może prowadzić do nieporozumień i komplikacji w zarządzaniu danymi. Ponadto odpowiedź 'CREATE TABLE' jest także nieadekwatna, ponieważ to polecenie tworzy nową tabelę w bazie danych, a nie modyfikuje istniejącą. Typowym błędem w rozumieniu poleceń SQL jest mylenie między operacjami na danych a operacjami na strukturze bazy danych. Kluczowe jest zrozumienie różnicy między tymi typami operacji, ponieważ każda komenda SQL ma swoje specyficzne zastosowanie i nie można ich stosować zamiennie. W kontekście administracji bazami danych, umiejętność rozróżnienia tych komend jest niezbędna, aby efektywnie zarządzać strukturą i danymi w bazach danych.

Pytanie 11

Co oznacza zapis w obiekcie w języku JavaScript?

x = przedmiot.nazwa();
A. nazwa jest cechą obiektu przedmiot
B. zmienna x będzie przechowywać wynik działania metody nazwa
C. nazwa jest atrybutem klasy przedmiot
D. zmienna x będzie przechowywać rezultat działania funkcji przedmiot
Zapis przedmiot.nazwa() w języku JavaScript oznacza wywołanie metody nazwa na obiekcie przedmiot. Częstym błędem jest mylenie metody z polem klasy czy właściwością obiektu. Pole klasy odnosi się do zmiennej zdefiniowanej na poziomie klasy która przechowuje dane związane z instancjami tej klasy. Metody natomiast są funkcjami które wykonują operacje na danych obiektu. Jeśli chodzi o zmienną przechowującą wynik działania funkcji przedmiot nie jest to poprawna interpretacja ponieważ przedmiot w tym przypadku jest obiektem na którym działa metoda nazwa a nie funkcją. Kolejny błąd to mylenie wywołania metody z przypisaniem wartości właściwości obiektu. Właściwości to atrybuty które przechowują stany obiektu natomiast metody określają jego zachowanie i umożliwiają wykonywanie czynności. Często podczas nauki JavaScript błędnie interpretujemy składnię kropki jako odnoszącą się tylko do właściwości zamiast dostrzegać że może ona również oznaczać wywołanie metod. Dobra praktyka polega na jasnym rozróżnieniu pomiędzy metodami a właściwościami co zwiększa czytelność i niezawodność kodu ułatwiając jego późniejszą konserwację i rozwój przez zespoły programistyczne

Pytanie 12

Wykonanie następującego polecenia PHP umożliwia:

$zapytanie = mysqli_query($db, "UPDATE ...");
A. pobranie danych z bazy
B. zmianę danych w bazie
C. zmianę struktury bazy
D. dodanie nowych danych do bazy
Odpowiedzi sugerujące zapis nowych danych do bazy oraz modyfikację struktury bazy są nieprawidłowe, ponieważ mysqli_query z instrukcją SQL UPDATE nie służy do tych celów. Zapis nowych danych do bazy odbywa się za pomocą instrukcji INSERT, która dodaje nowe rekordy do tabeli. Funkcja INSERT INTO jest używana, gdy chcemy dodać nowe dane, a nie je modyfikować. W przypadku modyfikacji struktury bazy danych, takich jak dodawanie nowych kolumn czy zmiany w tabelach, używane są instrukcje DDL (Data Definition Language) jak ALTER TABLE. Te operacje są istotne, gdy zmienia się schemat bazy danych, co jest zupełnie inną operacją niż modyfikacja danych. Odczyt danych z bazy to kolejna funkcjonalność, która jest realizowana za pomocą instrukcji SELECT, służącej do pobierania danych z tabel. SELECT umożliwia wyświetlanie danych bez ich zmiany, co jest podstawową operacją w aplikacjach potrzebujących dostępu do informacji przechowywanych w bazie. Typowe błędy to mylenie tych różnych operacji, co wynika z niepełnego zrozumienia podstawowych operacji SQL i ich zastosowań. Poprawne rozróżnianie tych funkcji jest kluczowe dla efektywnego zarządzania bazą danych i unikania błędów logicznych w aplikacjach.

Pytanie 13

W systemie MySQL przyznanie roli o nazwie DBManager umożliwia użytkownikowi wykonywanie

A. zakładanie użytkowników serwera oraz definiowanie ich haseł
B. wszystkie operacje na bazach danych serwera
C. wszystkie operacje związane z bazami danych oraz użytkownikami serwera
D. nadzór nad serwerem
Wybór odpowiedzi, która sugeruje, że rola DBManager przyznaje prawa do monitorowania serwera, tworzenia użytkowników serwera oraz wykonywania wszystkich operacji na bazach danych i użytkownikach, może prowadzić do mylnych wniosków na temat rzeczywistych możliwości tej roli. Monitorowanie serwera jako funkcja nie jest bezpośrednio związane z rolą DBManager. Chociaż monitorowanie jest istotnym aspektem zarządzania bazami danych, odpowiednie uprawnienia związane z tą funkcjonalnością są przyznawane innym rolom lub użytkownikom posiadającym konkretne przywileje, takie jak rola DBMonitor. Tworzenie użytkowników serwera i ustawianie im haseł również wykracza poza standardowe uprawnienia roli DBManager. Zwykle te czynności są przypisane administratorom systemu, którzy mają kontrolę nad bezpieczeństwem całego środowiska bazodanowego. Odpowiedzi sugerujące możliwość wykonywania wszelkich operacji na bazach danych i użytkownikach mogą sugerować, że rola DBManager obejmuje pełne uprawnienia administracyjne, co nie jest zgodne z praktykami bezpieczeństwa, które zalecają ograniczanie uprawnień w oparciu o zasadę najmniejszych uprawnień. Takie zrozumienie jest kluczowe, ponieważ przyznawanie zbyt szerokich uprawnień może prowadzić do luk w zabezpieczeniach i nadużyć, co narusza standardy zarządzania danymi i bezpieczeństwa w organizacjach. Dlatego ważne jest, aby dokładnie rozumieć zakres dostępnych ról i ich odpowiedzialności, aby zapewnić właściwe zarządzanie dostępem i bezpieczeństwem danych.

Pytanie 14

Funkcja CONCAT() w SQL służy do

A. przycinania tekstu do wyświetlenia
B. usuwania określonego tekstu
C. łączenia tekstów do wyświetlenia
D. uzyskiwania podłańcucha ze wskazanego tekstu
Funkcja CONCAT() w SQL nie ma nic wspólnego z usuwaniem tekstu, przycinaniem go ani wyznaczaniem podłańcuchów. Usunięcie wskazanego tekstu to inaczej operacja związana z funkcją REPLACE lub DELETE, które służą do usuwania fragmentów danych z tabel, a nie ich łączenia. Przycinanie tekstu, z kolei, może być realizowane za pomocą funkcji CHARINDEX lub LEN, które są używane do określenia długości tekstu lub jego pozycji, ale nie mają one zastosowania w kontekście łączenia różnych elementów. Odpowiedź sugerująca, że CONCAT() wyznacza podłańcuchy znaków, również jest mylna, ponieważ do tego celu służą funkcje takie jak SUBSTRING czy LEFT, które pozwalają na wyodrębnianie określonych części tekstu na podstawie pozycji. Typowym błędem myślowym jest mylenie różnych funkcji SQL, które pełnią odrębne role. Należy pamiętać, że każda z tych operacji ma swoje unikalne zastosowanie i są one wykorzystywane w różnych kontekstach. Dlatego przed przystąpieniem do użycia konkretnej funkcji, warto dokładnie zrozumieć jej przeznaczenie i działanie, aby uniknąć nieporozumień i błędów w zapytaniach SQL.

Pytanie 15

Jaki wynik przyjmie zmienna a po zakończeniu pętli w podanym fragmencie kodu PHP?

$i = 10; $a = 0;
while ($i)
{
    $a = $a + 2;
    $i--;
}
A. 2
B. 10
C. 0
D. 20
Błędem w rozumieniu tego fragmentu kodu może być założenie, że pętla while zakończy się wcześniej niż po 10 iteracjach. Można błędnie przypuszczać, że zmienna a przyjmuje inną wartość, na przykład 10, 0 lub 2, jeśli nie zrozumiemy poprawnie mechanizmu działania pętli while i operacji wewnątrz niej. Zmienna i początkowo wynosi 10 i jest dekrementowana o 1 w każdej iteracji, co oznacza, że pętla zakończy się dopiero, gdy i osiągnie wartość 0. W trakcie każdej iteracji do zmiennej a dodawana jest wartość 2, co prowadzi do jej końcowej wartości 20 po 10 iteracjach. Błędne odpowiedzi mogą wynikać z niedostatecznego zrozumienia, jak działa dekrementacja zmiennej sterującej pętlą lub jak wpływa to na liczbę wykonanych iteracji. Zrozumienie poprawnego przepływu kontroli w pętli while jest kluczowe w wielu sytuacjach programowania, aby przewidzieć wynik działania kodu. Pętla while jest fundamentalnym mechanizmem sterowania przepływem w wielu językach programowania, dlatego tak ważne jest, by dobrze rozumieć jej działanie i unikać błędnych wniosków, które mogą prowadzić do nieprawidłowego działania programu.

Pytanie 16

Jakiego języka można użyć do nawiązania połączenia z bazą MySQL w trakcie tworzenia aplikacji internetowej?

A. XHTML
B. CSS
C. PHP
D. HTML
PHP to naprawdę fajny język skryptowy, który świetnie sprawdza się w tworzeniu dynamicznych aplikacji internetowych. Jest super efektywny, kiedy trzeba połączyć się z bazami danych, takimi jak MySQL. Jako język serwerowy, daje programistom narzędzia do robienia różnych rzeczy z danymi, jak dodawanie, edytowanie czy usuwanie rekordów w bazie. Na przykład, gdy tworzysz aplikację do zarządzania użytkownikami, możesz użyć PHP do obsługi formularza rejestracyjnego, który zbiera dane od użytkowników i następnie łączy się z MySQL, by je zapisać. Do łączenia z bazą danych używa się funkcji, jak mysqli_connect() lub PDO (PHP Data Objects), co pozwala na bezpieczne i sprawne zarządzanie połączeniami oraz zapytaniami SQL. Co ważne, PHP zachęca do dobrych praktyk, jak stosowanie przygotowanych zapytań, co mocno zwiększa bezpieczeństwo aplikacji, chroniąc przed różnymi atakami, jak SQL injection.

Pytanie 17

W tabeli podzespoly należy zaktualizować wartość pola URL na 'toshiba.pl' dla wszystkich rekordów, gdzie pole producent to TOSHIBA. W języku SQL ta zmiana będzie wyglądała następująco

A. UPDATE podzespoly SET URL='toshiba.pl' WHERE producent='TOSHIBA';
B. UPDATE podzespoly SET URL='toshiba.pl';
C. UPDATE producent='TOSHIBA' SET URL='toshiba.pl';
D. UPDATE podzespoly.producent='TOSHIBA' SET URL='toshiba.pl';
Odpowiedź ta jest prawidłowa, ponieważ poprawnie wykorzystuje składnię języka SQL do aktualizacji danych w tabeli. W instrukcji UPDATE podzespoly SET URL='toshiba.pl' WHERE producent='TOSHIBA'; najpierw wskazujemy tabelę, w której chcemy dokonać zmian, czyli 'podzespoly'. Następnie używamy klauzuli SET, aby zdefiniować nową wartość pola URL, a klauzula WHERE precyzuje, które rekordy mają zostać zaktualizowane, w tym przypadku te, gdzie producent to 'TOSHIBA'. To podejście jest zgodne z dobrymi praktykami, ponieważ stosowanie klauzuli WHERE zapobiega masowym aktualizacjom, które mogą prowadzić do niezamierzonych zmian w danych. Przykładowo, jeśli chcielibyśmy zaktualizować tylko określoną grupę produktów, klauzula WHERE pozwala na precyzyjne określenie zakresu zmian. Wprowadzenie takiej modyfikacji w bazie danych, z uwzględnieniem warunków, minimalizuje ryzyko błędów i poprawia integralność danych.

Pytanie 18

Programista stworzył pętlę w języku C++ mającą na celu obliczenie wartości 5! (5! = 1 * 2 * 3 * 4 * 5). Niestety, popełnił błąd logiczny polegający na tym, że

int a = 1;
for (int i = 1; i < 5; i++)
{
    a = a * i;
}
cout << a;
A. w drugim warunku pętli powinno być porównanie i < 6 zamiast i < 5
B. zmienna a powinna być ustawiona na 0 zamiast 1
C. parametr i pętli powinien być inicjowany wartością 0, a nie 1
D. parametr i pętli powinien być zmniejszany zamiast zwiększany
Podczas analizy błędów w pętli for jednym z kluczowych aspektów jest poprawne inicjowanie i aktualizowanie zmiennych sterujących oraz warunków zakończenia pętli. W kontekście obliczania silni 5 trzeba zwrócić uwagę na to, że inicjowanie zmiennej a wartością 0 zamiast 1 spowodowałoby, że wszystkie mnożenia dadzą wynik 0, co jest fundamentalnym błędem w logice obliczeń silni. Zmienna powinna startować od wartości 1, aby mnożenie było poprawne. Zainicjowanie parametru i wartością 0 zamiast 1 również prowadziłoby do niepoprawnych rezultatów, ponieważ mnożyłoby przez 0 w pierwszej iteracji, co skutkowałoby, że cała silnia wynosiłaby 0. To typowy błąd związany z niewłaściwym zakresem iteracji. Natomiast zmiana w kierunku dekrementacji zamiast inkrementacji nie ma sensu w kontekście tego zadania, gdzie celem jest sekwencyjne przemnożenie przez kolejne liczby naturalne do 5. Takie podejście jest błędne, ponieważ nie odwzorowuje poprawnego algorytmu obliczania silni. Rozumienie poprawnych zakresów i logicznych schodków iteracji w pętlach to kluczowy element w zapobieganiu tego typu błędom i osiąganiu zamierzonych wyników w algorytmach obliczeniowych. Warto pamiętać, że dbanie o poprawność warunków iteracyjnych jest nieodzowne w praktyce programistycznej, aby zapewnić niezawodność i poprawność działania kodu w różnych scenariuszach testowych i produkcyjnych.

Pytanie 19

W tabeli psy znajdują się kolumny: imie, rasa, telefon_wlasciciela, rok_szczepienia. Jakie polecenie SQL należy zastosować, aby uzyskać numery telefonów właścicieli psów, które były szczepione przed rokiem 2015?

A. SELECT psy FROM rok_szczepienia < 2015
B. SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia > 2015
C. SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia < 2015
D. SELECT imie, rasa FROM psy WHERE rok_szczepienia > 2015
Wybór błędnych odpowiedzi wynika z nieporozumienia dotyczącego zastosowania różnych operatorów porównania i struktury zapytań SQL. W pierwszej analizowanej odpowiedzi 'SELECT imie, rasa FROM psy WHERE rok_szczepienia > 2015', zamiast wydobywać telefony właścicieli, zapytanie skupia się na imionach i rasach psów, co nie odpowiada na zadane pytanie. Użycie operatora '>' w kontekście roku szczepienia jest sprzeczne z wymaganiem, które dotyczy psów zaszczepionych przed 2015 rokiem, co jest podstawowym błędem logicznym. Inna odpowiedź, 'SELECT psy FROM rok_szczepienia < 2015', jest niepoprawna z powodu błędnej składni SQL; nie można wybierać całej tabeli w ten sposób, co pokazuje brak znajomości podstaw struktury zapytań. Ostatnia niepoprawna odpowiedź, 'SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia > 2015', również wskazuje na błąd w interpretacji kryteriów czasowych, ponieważ operator '>' nie uwzględnia psów zaszczepionych przed rokiem 2015. Ta sytuacja pokazuje, jak ważne jest dokładne czytanie wymagań oraz znajomość podstawowych zasad składni SQL, aby unikać błędów i skutecznie korzystać z baz danych.

Pytanie 20

W przedstawionym kodzie JavaScript występuje błąd logiczny. Program, zamiast informować, czy liczby są równe, nie działa prawidłowo. Wskaż, która odpowiedź dotyczy tego błędu.

var x = 5;
var y = 3;
if (x = y)
  document.getElementById("demo").innerHTML = "zmienne są równe";
else
  document.getElementById("demo").innerHTML = "zmienne się różnią";
A. W instrukcji if znajduje się przypisanie zamiast operacji porównania
B. Zmienne zostały błędnie zadeklarowane
C. Polecenia w sekcjach if i else powinny zostać zamienione miejscami
D. Przed instrukcją else nie powinno być średnika
Kod JavaScript z błędem logicznym w pytaniu ma na celu sprawdzenie równoważności dwóch zmiennych, jednak ze względu na użycie niewłaściwego operatora nie działa poprawnie. W przypadku stwierdzenia, że przed klauzulą else nie powinno być średnika, należy zrozumieć, że w JavaScript średnik wskazuje koniec instrukcji i jego obecność lub brak bezpośrednio przed else może zmienić logikę kodu, ale nie w tym kontekście. Jeśli chodzi o błędne przypisanie zamiast porównania w instrukcji if, właściwe używanie operatorów przypisania i porównania jest kluczowe, ponieważ ich zamiana prowadzi do logicznych błędów, które mogą być trudne do zdiagnozowania. Natomiast nieprawidłowa deklaracja zmiennych w JavaScript może wpływać na zakres lub sposób ich użycia, ale tutaj zmienne są poprawnie zadeklarowane za pomocą var, choć nowoczesne standardy promują let lub const dla lepszej kontroli zakresu. Na koniec, zamiana miejsc instrukcji wewnątrz sekcji if oraz else prowadzi jedynie do zmiany logicznej kolejności akcji bez rozwiązywania błędu pierwotnego, jakim jest użycie niewłaściwego operatora porównania. Kluczowym jest tu zrozumienie, że zrozumienie i poprawne stosowanie operatorów logicznych jest fundamentalne w pisaniu poprawnego kodu.

Pytanie 21

W relacyjnych systemach baz danych, gdy dwie tabele są powiązane przez ich klucze główne, mamy do czynienia z relacją

A. n..1
B. n..n
C. 1..n
D. 1..1
Błędne odpowiedzi 1..n, n..1 oraz n..n wskazują na różne typy relacji, które nie odpowiadają sytuacji opisanej w pytaniu. Relacja 1..n sugeruje, że jeden rekord w pierwszej tabeli może być powiązany z wieloma rekordami w drugiej tabeli. Przykładem może być relacja między tabelą 'Klienci' i 'Zamówienia', gdzie każdy klient może mieć wiele zamówień. Tego typu relacja nie jest możliwa z kluczem głównym, ponieważ klucz główny jest unikalny dla każdego rekordu. Podobnie, relacja n..1 oznacza, że wiele rekordów w pierwszej tabeli odnosi się do jednego rekordu w drugiej. Może to być interpretowane w kontekście danych, gdzie wiele produktów może być przypisanych do jednego dostawcy. W kontekście kluczy głównych, to również jest niepoprawne, ponieważ klucz główny w jednej tabeli powinien jednoznacznie identyfikować każdy rekord. Natomiast relacja n..n, która oznacza wiele rekordów w obu tabelach, jest również błędna w tym przypadku. Przykładem może być relacja między 'Użytkownikami' i 'Grupami', gdzie użytkownicy mogą należeć do wielu grup, a grupy mogą mieć wielu użytkowników. Żaden z tych typów relacji nie bierze pod uwagę unikalnych powiązań, które można osiągnąć tylko poprzez relację 1..1. Często błędy te wynikają z niepełnego zrozumienia zasad normalizacji baz danych oraz specyficznych zastosowań kluczy głównych, co prowadzi do błędnych wniosków o strukturze danych.

Pytanie 22

Który z poniższych znaczników HTML nie służy do formatowania tekstu?

A. <div>
B. <em>
C. <sub>
D. <strong>
Każdy z pozostałych znaczników jest określony jako element do formatowania tekstu w HTML. Znacznik <em> służy do oznaczania tekstu, który ma być wyrażony z naciskiem, co zazwyczaj przekłada się na kursywę w przeglądarkach internetowych. To podejście jest zgodne z zasadami semantyki HTML, które zalecają użycie odpowiednich znaczników dla różnych typów treści, co poprawia dostępność oraz SEO. Znacznik <sub> jest używany do oznaczania tekstu jako dolnego indeksu, co jest powszechnie stosowane w naukowych notacjach i chemii. W końcu, <strong> jest używany do zaznaczania tekstu jako ważnego, co zazwyczaj skutkuje pogrubieniem. Zrozumienie ról tych znaczników jest kluczowe dla projektowania stron internetowych. Często mylnie przyjmuje się, że każdy znacznik jest tym samym, co prowadzi do nieefektywnego kodowania i braku semantyki w stronach. Dlatego ważne jest, aby stosować odpowiednie znaczniki zgodnie z ich przeznaczeniem, co jest fundamentalne w tworzeniu dostępnych i dobrze zorganizowanych aplikacji internetowych.

Pytanie 23

Kod przedstawiony poniżej został napisany w języku JavaScript. W zdefiniowanym obiekcie metoda to element o nazwie

 var obj1 = {
    czescUlamkowa: 10,
    czescCalkowita: 20,
    oblicz: function () { ... }
}
A. czescUlamkowa
B. czescCalkowita
C. oblicz
D. obj1
Odpowiedzi 'czescUlamkowa', 'obj1' oraz 'czescCalkowita' są niepoprawne, ponieważ nie są metodami w kontekście obiektu 'obj1'. 'czescUlamkowa' i 'czescCalkowita' to właściwości obiektu, które przechowują dane, ale nie wykonują żadnych operacji. W JavaScript, właściwości obiektów są parametrami, które mogą przechowywać wartości, jednak nie są to funkcje. Właściwości te mogą być wykorzystywane w metodach do przechowywania i manipulowania danymi, ale same w sobie nie wykonują żadnych obliczeń ani operacji. Odpowiedź 'obj1' odnosi się do samego obiektu, a nie do jego metod. W kontekście programowania obiektowego, obiekty są instancjami klas, które grupują ze sobą zarówno dane, jak i funkcjonalność, ale tylko metody można wywoływać w celu wykonania operacji. Typowym błędem myślowym jest mylenie pojęcia obiektu z pojęciem metody. Aby rozwiązać takie nieporozumienia, warto przyjąć podejście, w którym każda metoda jest rozumiana jako funkcjonalność obiektu, podczas gdy właściwości służą do przechowywania danych. Zrozumienie tej różnicy jest kluczowe, aby efektywnie korzystać z obiektowego modelu programowania w JavaScript.

Pytanie 24

O obiekcie zdefiniowanym w języku JavaScript można stwierdzić, że zawiera

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: functon() { … }
}
A. dwie metody oraz jedną właściwość
B. trzy metody
C. trzy właściwości
D. dwie właściwości oraz jedną metodę
Analizując niepoprawne odpowiedzi, można zauważyć typowe błędy w zrozumieniu struktury obiektów w JavaScript. Odpowiedzi sugerujące, że obiekt ma trzy właściwości lub trzy metody, zbudowane są na błędnych założeniach dotyczących struktury obiektu. Obiekt `obiekt1` wyraźnie definiuje tylko dwie właściwości: `x` i `y`, co jest kluczowe dla zrozumienia, czym są właściwości w kontekście obiektów. Właściwości są to dane przechowywane w obiekcie, podczas gdy metody to funkcje przynależące do obiektu. Stwierdzenie, że obiekt ma trzy metody, błędnie interpretuje funkcję `wsp` jako wiele metod, podczas gdy w rzeczywistości jest to tylko jedna funkcja, a więc jedna metoda. Takie nieporozumienia mogą prowadzić do trudności w projektowaniu obiektów oraz ich późniejszym użytkowaniu. W praktyce, umiejętność prawidłowego identyfikowania właściwości i metod obiektów jest istotna w kontekście programowania obiektowego, które jest kluczowym paradygmatem w JavaScript. Niezrozumienie tych podstaw może skutkować błędami w kodzie, które są trudne do zdiagnozowania, zwłaszcza w większych projektach, gdzie struktura obiektów może być złożona. W związku z tym, zaleca się dokładne zapoznanie się z zasadami definiowania obiektów oraz ich składników, aby uniknąć takich nieporozumień w przyszłości.

Pytanie 25

Tabele Osoby i Adresy są połączone relacją jeden do wielu. Jakie zapytanie SQL należy zapisać, aby korzystając z tej relacji, prawidłowo wyświetlić nazwiska oraz przyporządkowane im miasta?

Ilustracja do pytania
A. SELECT nazwisko, Miasto FROM Osoby, Adresy;
B. SELECT nazwisko, Miasto FROM Osoby, Adresy WHERE Osoby.id = Adresy.id;
C. SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id = Adresy.id;
D. SELECT nazwisko, Miasto FROM Osoby.Adresy_id = Adresy.id FROM Osoby, Adresy;
Błędne odpowiedzi pokazują typowe nieporozumienia związane ze składnią i logiką SQL. Niektóre z nich opierają się na błędnym założeniu, że po prostu wymienienie tabel w instrukcji FROM automatycznie połączy te tabele - to nie jest prawda, ponieważ wymaga to jasno określonego warunku połączenia. Inne błądne odpowiedzi sugerują, że można po prostu porównać wartości kolumny 'id' w obu tabelach, aby je połączyć. To jest błędne, ponieważ nie uwzględnia to faktu, że relacja między tabelami jest określona przez klucz obcy, który może nie mieć takiej samej nazwy ani wartości jak klucz główny. Wreszcie, niektóre błędne odpowiedzi mylą składnię zapytania, umieszczając warunek łączenia w niewłaściwym miejscu lub pomijając niezbędne słowo kluczowe JOIN. To pokazuje, jak ważne jest dokładne zrozumienie składni SQL i jej reguł.

Pytanie 26

Jakie wyrażenie logiczne powinno zostać użyte w języku JavaScript, aby przeprowadzić operacje wyłącznie na dowolnych liczbach ujemnych z zakresu jednostronnie domkniętego <-200, -100)?

A. (liczba >= -200) && (liczba < -100)
B. (liczba <= -200) || (liczba > -100)
C. (liczba >= -200) || (liczba > -100)
D. (liczba <= -200) && (liczba < -100)
Poprawna odpowiedź, (liczba >= -200) && (liczba < -100), jest zgodna z wymaganym zakresem liczb ujemnych. Wyrażenie to sprawdza, czy wartość zmiennej 'liczba' jest większa lub równa -200, a jednocześnie mniejsza niż -100. Oznacza to, że przyjmuje wszystkie liczby z przedziału, w tym -200, ale nie uwzględnia -100. To podejście jest zgodne z praktykami programowania, gdzie istotne jest dokładne definiowanie zakresów. W JavaScript stosowanie operatorów logicznych, takich jak &&, umożliwia precyzyjne warunkowanie wykonania kodu, co jest niezbędne do sprawnego zarządzania błędami oraz zwiększa czytelność kodu. Przykładowo, w kontekście walidacji danych, takie wyrażenie można wykorzystać do filtrowania nieprawidłowych wartości przed ich przetwarzaniem. Umożliwia to lepsze zarządzanie danymi oraz zapobiega błędom w aplikacjach. Zastosowanie tego wyrażenia w praktyce pokazuje, jak ważne jest precyzyjne formułowanie warunków, co jest kluczowym elementem skutecznego programowania.

Pytanie 27

Przedstawiona ikona funkcji edytora grafiki rastrowej o nazwie "kubełek" umożliwia

Ilustracja do pytania
A. zmianę aktywnych kolorów.
B. wypełnienie zaznaczonego obszaru kolorem.
C. pobranie wskazanej barwy i ustawienie jej, jako aktywnej.
D. zaznaczenie obszaru o takim samym kolorze.

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Gratulacje, odpowiedź jest poprawna. Ikona 'kubełek farby' w edytorach grafiki rastrowej jest narzędziem umożliwiającym wypełnienie zaznaczonego obszaru wybranym kolorem. Działanie tego narzędzia jest podobne do rozlewania farby - kolor wypełnia ciągły obszar aż do napotkania krawędzi lub pikseli o innym kolorze. Ta funkcja pozwala na szybkie i efektywne kolorowanie większych powierzchni obrazu. W praktyce, jest to niezwykle przydatne narzędzie, szczególnie gdy potrzebujesz szybko zmienić tło obrazu lub wypełnić obszar jednolitym kolorem. Warto również zauważyć, że różne edytory mogą mieć dodatkowe opcje dla tego narzędzia, takie jak możliwość wyboru tolerancji (która decyduje, jak bardzo podobny kolor musi być, aby został wypełniony) czy wypełnianie według warstwy czy według obrazu.

Pytanie 28

W wyniku walidacji strony został wygenerowany błąd. Oznacza on, że

Ilustracja do pytania
A. w znaczniku meta nie występuje atrybut charset.
B. oznaczenie kodowania znaków powinno być zapisane bez myślników.
C. oznaczenie ISO-8859-2 nie istnieje.
D. w atrybucie charset jest dozwolona wyłącznie wartość "utf-8".
Dobra robota! Twoja odpowiedź jest na miejscu. To, co się stało z błędem walidacji, to fakt, że przy atrybucie charset w znaczniku meta musisz zawsze podać 'utf-8'. To standard kodowania Unicode, który w sieci jest bardzo popularny. Kodowanie UTF-8 ma to do siebie, że obsługuje mnóstwo znaków, co sprawia, że nadaje się do prawie wszystkich języków na świecie. Dlatego warto to stosować przy tworzeniu nowoczesnych stron. HTML5 jasno mówi, że każdy dokument powinien mieć ten znacznik w sekcji head, czyli na przykład: <meta charset='utf-8'>.

Pytanie 29

Aby skorzystać z relacji w zapytaniu, trzeba użyć słowa kluczowego

A. UNION
B. GROUP BY
C. IN
D. JOIN
Wybór słów kluczowych takich jak UNION, IN oraz GROUP BY w kontekście łączenia danych z różnych tabel jest nieprawidłowy i opiera się na błędnym zrozumieniu funkcji tych instrukcji. UNION jest używane do łączenia wyników dwóch lub więcej zapytań, ale nie łączy danych z różnych tabel na podstawie relacji. Umożliwia ono zestawienie wyników, które mają tę samą strukturę, co oznacza, że wszystkie zapytania muszą zwracać tę samą liczbę kolumn i odpowiadające im typy danych. IN z kolei służy do porównywania wartości w jednej kolumnie z zestawem wartości, ale nie operuje na relacjach między tabelami. Ta instrukcja jest bardziej przydatna w filtracji wyników, a nie w ich łączeniu. GROUP BY jest używane do grupowania wyników na podstawie określonych kolumn, co jest niezbędne w przypadku agregacji danych, ale również nie odnosi się bezpośrednio do łączenia tabel. Zrozumienie tych różnic jest kluczowe, aby unikać typowych błędów w projektowaniu zapytań SQL. Zamiast tego, należy skupić się na technikach łączenia danych przy użyciu JOIN, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi w systemach baz danych.

Pytanie 30

Skrypt w JavaScript, który obsługuje wynagrodzenia pracowników, powinien stworzyć raport dla tych, którzy są zatrudnieni na umowę o pracę oraz otrzymują wynagrodzenie w przedziale domkniętym od 4000 do
4500 zł. Jaki warunek należy zastosować do wygenerowania raportu?

A. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
B. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
C. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
D. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
Analizując inne odpowiedzi, można zauważyć kilka kluczowych błędów w koncepcjach wykorzystanych w tych formułach. W pierwszej odpowiedzi występuje nieprawidłowe użycie operatora logicznego '||', który w tym kontekście nie jest odpowiedni. Wykorzystanie '||' oznacza, że pensja może być mniejsza lub równa 4000 zł, co prowadzi do sytuacji, w której zostaną uwzględnieni pracownicy, którzy nie spełniają wymogu minimalnej pensji, co jest sprzeczne z założeniem raportu. W drugiej odpowiedzi zastosowanie operatora '||' również powoduje, że warunek dotyczący umowy jest nieistotny, co sprawia, że program może generować raporty dla osób zatrudnionych na innych rodzajach umów. Trzecia odpowiedź wydaje się być bliska, jednak użycie '&&' w odniesieniu do pensji nie jest wystarczające, ponieważ nie definiuje warunku zatrudnienia. Właściwa logika programistyczna wymaga precyzyjnego określenia zarówno rodzaju umowy, jak i zakresu płacy. W praktyce, niepoprawne zrozumienie operatorów logicznych oraz ich zastosowania w warunkach może prowadzić do poważnych błędów w kodzie, co w konsekwencji wpływa na jakość danych raportowych. Warto pamiętać, że przy tworzeniu warunków w oprogramowaniu, kluczowe jest stosowanie odpowiednich operatorów, aby uniknąć błędów w logice oraz zapewnić poprawność wyników.

Pytanie 31

Tabela gory zawiera dane o polskich szczytach oraz górach, w których się one znajdują. Jakie zapytanie należy wykonać, aby zobaczyć Koronę Gór Polskich, czyli najwyższy szczyt w każdym z pasm górskich?

A. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory;
B. SELECT pasmo, szczyt, wysokosc FROM gory;
C. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo;
D. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc;
Analizując pozostałe odpowiedzi, można zauważyć kluczowe błędy w podejściu do zadania. W pierwszej opcji, SELECT pasmo, szczyt, wysokosc FROM gory; kwerenda ta zwracałaby wszystkie rekordy z tabeli, co oznacza, że nie zrealizowano by celu znalezienia najwyższego szczytu w każdym pasmie. Brak użycia grupowania i funkcji agregującej prowadzi do nieefektywnego przetwarzania danych. Kolejna odpowiedź, SELECT pasmo, szczyt, MAX(wysokosc) FROM gory; wygląda na bliską poprawności, ale również nie spełnia wymogów, ponieważ nie zawiera klauzuli GROUP BY, co skutkuje błędem w kontekście SQL. Bez grupowania nie można poprawnie zidentyfikować wartości maksymalnych w odniesieniu do poszczególnych pasm. Dodatkowo, kwerenda SELECT pasmo, szczyt FROM gory GROUP BY wysokosc; jest całkowicie wadliwa, ponieważ grupuje dane według wysokości szczytów, co nie ma sensu w kontekście poszukiwania najwyższych szczytów w każdym pasmie. Takie podejście może prowadzić do niejednoznacznych i niepoprawnych wyników, które nie odpowiadają zadaniu. Typowe błędy myślowe, które prowadzą do takich wniosków, obejmują nieprawidłowe zrozumienie zasad grupowania i agregacji w SQL, co jest fundamentalne do skutecznego wykorzystania relacyjnych baz danych.

Pytanie 32

W bazie danych sklepu internetowego, w tabeli klienci znajdują się m.in. pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy o typie DATE. Klauzula WHERE dla zapytania wybierającego klientów, którzy mają ponad 3000 punktów lub dokonali zakupów więcej niż 100 razy, a ich ostatnie zakupy miały miejsce co najmniej w roku 2022, przyjmuje postać

A. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
B. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'
C. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
D. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
W przypadku pozostałych odpowiedzi pojawiają się istotne błędy związane z logiką stosowania operatorów w klauzuli WHERE. W pierwszej z niepoprawnych opcji zastosowano operator OR w połączeniu z operatorami AND, co prowadzi do niejednoznaczności w logice kwerendy. Taki zapis sugeruje, że każdy klient, który spełnia tylko jeden z podanych warunków, zostanie wybrany, co nie jest zgodne z wymaganiami zadania. W drugim przypadku, zastosowanie operatora AND dla wszystkich warunków implikuje, że klient musi jednocześnie spełniać wszystkie trzy warunki, co znacząco zawęża grupę wyników i może prowadzić do pominięcia klientów, którzy są wartościowi z punktu widzenia transakcji, ale nie spełniają wszystkich kryteriów jednocześnie. W ostatniej opcji również zastosowano operator AND we wszystkich warunkach, co jest niezgodne z zamysłem zapytania. Ważne jest, aby w takich sytuacjach dobrze rozumieć logikę operacji logicznych oraz ich konsekwencje w praktyce. Kluczowym błędem jest nieodpowiednie zrozumienie relacji między warunkami oraz ich wzajemnego wpływu na ostateczny wynik zapytania. W SQL istotne jest precyzyjne formułowanie zapytań, aby uniknąć niezamierzonych wyników, dlatego warto na etapie pisania schematów myśleć o logice, która będzie spełniać założone cele analizy danych.

Pytanie 33

Zidentyfikuj styl CSS, który doprowadził do uzyskania pokazanego efektu.

Ilustracja do pytania
A. Styl 4
B. Styl 1
C. Styl 2
D. Styl 3
Odpowiedź Styl 2 jest prawidłowa, ponieważ zastosowanie border-radius w wartości 50px pozwala osiągnąć efekt zaokrąglenia narożników elementu do kształtu koła, o ile element jest kwadratem. W tym przypadku obraz ma szerokość 100px, co oznacza, że promień zaokrąglenia równy 50px sprawia, że wszystkie narożniki zbiegają się w punktach centralnych ścianek kwadratu, tworząc idealny okrąg. Ta technika jest szeroko stosowana w projektowaniu stron internetowych zwłaszcza w odniesieniu do awatarów lub elementów graficznych, które wymagają zaokrąglonego kształtu. Stosowanie odpowiednich wartości border-radius jest zgodne z dobrymi praktykami w CSS, co pozwala projektantom na eleganckie i efektywne kształtowanie wyglądu witryny. Dzięki temu można tworzyć intuicyjne i estetyczne interfejsy użytkownika. Ważne jest również, aby testować wyświetlanie na różnych urządzeniach, ponieważ CSS powinien być responsywny i adaptowalny do różnorodnych rozdzielczości wyświetlaczy co zwiększa dostępność oraz użyteczność witryn.

Pytanie 34

Deklaracja CSS margin: auto; wskazuje, że marginesy są

A. stałe dla danej przeglądarki, niezależnie od jej okna
B. zgodne z domyślnymi wartościami marginesów elementu, do którego zostały przypisane
C. przechodzące z elementu nadrzędnego dla danego elementu
D. obliczane przez przeglądarkę w taki sposób, aby element był wyśrodkowany poziomo
W przypadku, gdy mówimy o marginesach w CSS, często pojawiają się nieporozumienia dotyczące ich dziedziczenia i stałości. Odpowiedzi sugerujące, że marginesy są odziedziczone po elemencie rodzica, są mylne, ponieważ marginesy w CSS nie dziedziczą wartości, jak ma to miejsce w przypadku wielu właściwości typograficznych, np. czcionki. Marginesy są niezależne dla każdego elementu i można je ustawić indywidualnie. Dodatkowo, stwierdzenie, że marginesy są stałe dla danej przeglądarki, jest również nieprawidłowe. Wartości marginesów mogą być różne w zależności od rozmiaru okna przeglądarki i innych czynników, co sprawia, że są one elastyczne, a nie stałe. Kiedy mówimy o domyślnych wartościach marginesów, warto zauważyć, że elementy HTML mają swoje własne domyślne marginesy, ale użycie 'margin: auto;' nie odnosi się do tych domyślnych wartości. Zamiast tego, ta reguła wymusza na przeglądarce obliczenie marginesów w taki sposób, aby osiągnąć pożądany efekt wizualny, jakim jest centrowanie. Dlatego kluczowe jest zrozumienie, jak działają marginesy w CSS i jak mogą być wykorzystywane do tworzenia responsywnych układów stron internetowych.

Pytanie 35

Definicja formularza została wykorzystana na stronie www, która przesyła dane do pliku w języku PHP. W której tablicy będą dostępne informacje z formularza?

<form action="plik.php" method="post">
A. $_GET
B. $_ACTION
C. $_COOKIE
D. $_POST
W kontekście przesyłania danych z formularza w PHP, zrozumienie funkcji różnych superglobalnych tablic jest kluczowe. Odpowiedzi takie jak $_GET, $_COOKIE i $_ACTION wskazują na nieporozumienia dotyczące sposobu, w jaki formularze interagują z PHP. Tablica $_GET jest używana do odbierania danych przesyłanych metodą GET, co oznacza, że dane są dołączane do URL jako parametry. To podejście ma istotne ograniczenia, zwłaszcza w zakresie bezpieczeństwa oraz maksymalnej długości danych, co czyni je nieodpowiednim do bardziej złożonych formularzy, w których przesyłane informacje mogą być poufne. $_COOKIE z kolei służy do obsługi danych przechowywanych w plikach cookie, które są wykorzystywane głównie do śledzenia sesji użytkowników, a nie do bezpośredniego przesyłania danych z formularzy. Warto również zauważyć, że $_ACTION nie jest standardową superglobalną tablicą w PHP, co sprawia, że jest to odpowiedź błędna, ponieważ taka tablica po prostu nie istnieje w kontekście PHP. Typowe błędy myślowe prowadzące do takich niepoprawnych wniosków obejmują mylenie metod przesyłania danych oraz niewłaściwe zrozumienie roli poszczególnych superglobalnych tablic. Zrozumienie tych różnic jest kluczowe dla prawidłowego projektowania aplikacji webowych i zapewnienia bezpieczeństwa przesyłanych danych.

Pytanie 36

Jakie oznaczenie wykorzystuje się do jednoliniowego komentarza w skryptowym języku PHP?

A. #
B. /*
C. --
D. $
Stosowanie znaków '/*', '$' oraz '--' jako sposobów na oznaczanie jednoliniowych komentarzy w PHP jest niepoprawne i może prowadzić do nieporozumień. Znaki '/*' oraz '*/' są stosowane do tworzenia komentarzy wieloliniowych, co oznacza, że jeśli kod zawierający takie oznaczenie pojawi się w kontekście jednoliniowym, to system nie rozpozna, gdzie komentarz się zaczyna, a gdzie kończy. Może to prowadzić do błędów składniowych, które uniemożliwiają poprawne działanie programu. Znak '$' w PHP jest używany do definiowania zmiennych, co czyni go całkowicie nieodpowiednim w kontekście komentarzy. Użycie '$' jako prefiksu dla zmiennych jest kluczowym elementem języka, ale nie ma nic wspólnego z oznaczaniem komentarzy. Przykładowo, $variable = 'value'; jest poprawnym użyciem, natomiast '$ This is a comment' nie będzie zrozumiane jako komentarz. Znak '--' jest często stosowany w SQL do komentowania linii, jednak w przypadku PHP jego użycie nie jest prawidłowe. Przyjęcie niepoprawnych metod dla komentarzy może prowadzić do nieczytelności kodu, a także do trudności w jego utrzymaniu i rozwoju przez innych programistów, co jest sprzeczne z najlepszymi praktykami w branży technicznej.

Pytanie 37

W SQL, aby usunąć wszystkie rekordy z tabeli, ale zachować jej strukturę, należy użyć polecenia:

A. REMOVE
B. TRUNCATE
C. DELETE FROM
D. DROP TABLE
Istnieje kilka nieporozumień związanych z usuwaniem danych z tabel SQL, co może prowadzić do błędów. Polecenie <code>DROP TABLE</code> jest często mylone z <code>DELETE FROM</code>. Jednak <code>DROP TABLE</code> usuwa zarówno dane, jak i strukturę tabeli, co oznacza, że po jego użyciu nie będzie można odzyskać tabeli bez jej ponownego stworzenia. To polecenie jest destrukcyjne i powinno być używane tylko wtedy, gdy mamy pewność, że tabela nie jest już potrzebna. Z kolei <code>REMOVE</code> nie jest poprawnym poleceniem SQL. To może wynikać z mylnego przekonania, że istnieje takie polecenie w języku SQL, jednak w rzeczywistości nie jest ono częścią standardu SQL. Tego typu błędy wynikają często z nieznajomości składni SQL lub mylenia z innymi językami programowania, które mogą mieć podobne polecenia. Na koniec, <code>ERASE TABLE</code> również nie jest poprawnym poleceniem SQL. Może to być wynikiem intuicyjnego podejścia do nazewnictwa poleceń, ale w rzeczywistości SQL posługuje się innymi komendami. Kluczowe jest, by dobrze zrozumieć standardy języka SQL i znać właściwe polecenia dla zamierzonych operacji, aby uniknąć potencjalnie destrukcyjnych działań na bazie danych.

Pytanie 38

Aby utworzyć strukturę strony internetowej za pomocą znaczników semantycznych języka HTML 5, zgodnie z przedstawionym na ilustracji projektem, SEKCJA B powinna być zawarta w znaczniku

Ilustracja do pytania
A. <header></header>
B. <article></article>
C. <nav></nav>
D. <section></section>
Poprawnie – sekcja B na ilustracji to klasyczne menu nawigacyjne strony, więc w semantycznym HTML5 powinna być zawarta w znaczniku <nav>. Ten element został wprowadzony właśnie po to, żeby jasno oznaczać blok linków służących do poruszania się po serwisie: główne menu, nawigacja w stopce, paginacja artykułów itp. Przeglądarki, czytniki ekranu i roboty wyszukiwarek rozpoznają <nav> jako specjalny region nawigacyjny i dzięki temu lepiej „rozumieją” strukturę strony. To jest bardzo ważne z punktu widzenia dostępności (WCAG) i SEO. W typowym szkielecie strony HTML5 nagłówek z tytułem umieszcza się w <header>, menu w <nav>, główną treść w <main>, artykuły w <article>, a poboczne informacje w <aside>. U Ciebie: sekcja A to najpewniej <header>, sekcja B – <nav>, a sekcja C – jakiś <section> lub <article>. W praktyce kod dla pokazanej sekcji B wyglądałby np.: <nav><a href="index.html">Główna</a><a href="onas.html">O nas</a><a href="kontakt.html">Kontakt</a></nav>. Moim zdaniem dobrze jest od początku wyrabiać nawyk używania <nav> tylko dla głównych bloków nawigacji, a nie dla każdego przypadkowego linka w tekście. Dzięki temu dokument ma czytelną hierarchię, łatwiej się go styluje w CSS i utrzymuje w większych projektach.

Pytanie 39

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. UPDATE artykuly SET nowy = TRUE;
B. INSERT INTO artykuly VALUE nowy = TRUE;
C. UPDATE nowy FROM artykuly VALUE TRUE;
D. INSERT INTO nowy FROM artykuly SET TRUE;
W tym zadaniu kluczowe jest zrozumienie różnicy między poleceniami UPDATE i INSERT w SQL oraz poprawnej składni tych instrukcji. Chodzi o modyfikację istniejących rekordów w tabeli artykuly, a nie o dodawanie nowych wierszy. To jest taki typowy błąd początkujących: pomieszanie operacji wstawiania danych z operacją ich aktualizacji. Jeśli tabela już zawiera dane i chcemy zmienić wartość w konkretnej kolumnie dla wszystkich wierszy, zawsze sięgamy po UPDATE. Instrukcje wykorzystujące INSERT, typu INSERT INTO artykuly VALUE nowy = TRUE; czy INSERT INTO nowy FROM artykuly SET TRUE;, są niepoprawne składniowo i logicznie. INSERT służy do dodawania nowych rekordów, czyli tworzenia kolejnych wierszy w tabeli. Poprawny wzorzec wygląda mniej więcej tak: INSERT INTO artykuly (kolumna1, kolumna2) VALUES (wartość1, wartość2);. Nie aktualizuje on istniejących pól, tylko dokłada nowe rekordy. Gdybyśmy próbowali użyć INSERT do „ustawienia” kolumny nowy, to w rzeczywistości tworzyliśmy nowe wiersze, a stare rekordy pozostałyby nietknięte, co jest sprzeczne z treścią pytania. Z kolei konstrukcje w rodzaju UPDATE nowy FROM artykuly VALUE TRUE; przypominają czasem składnię innych języków lub narzędzi, ale nie są poprawnym SQL-em. Standard SQL wymaga, żeby po słowie UPDATE pojawiła się nazwa tabeli, a po SET lista kolumn i przypisanych im wartości. Nie ma tu słów kluczowych FROM i VALUE w takiej kombinacji. FROM bywa używane w bardziej zaawansowanych UPDATE’ach, np. w PostgreSQL, ale w formie UPDATE tabela1 SET kolumna = coś FROM tabela2 WHERE warunek; – czyli z zupełnie inną logiką i strukturą. Typowy błąd myślowy polega też na tym, że ktoś próbuje tłumaczyć składnię SQL „na polski” i układa komendy w stylu „INSERT INTO nowy FROM artykuly SET TRUE”, bo brzmi to logicznie w języku naturalnym. Niestety, SQL jest językiem ściśle zdefiniowanym, z bardzo konkretną kolejnością słów kluczowych. Standardowe podejście branżowe jest takie: jeśli modyfikujesz wartości w istniejących wierszach – używasz UPDATE; jeśli dodajesz nowe wiersze – używasz INSERT. Dobrą praktyką jest też najpierw napisać SELECT, który wybiera dokładnie te rekordy, które chcesz zmienić, a dopiero potem na jego podstawie zbudować UPDATE z odpowiednim SET i ewentualnym WHERE. Dzięki temu unikasz przypadkowego uszkodzenia danych.

Pytanie 40

W bazach danych typ DECIMAL jest przeznaczony do przechowywania

A. liczb rzeczywistych zmiennoprzecinkowych.
B. liczb rzeczywistych stałoprzecinkowych.
C. liczb zapisanych w systemie binarnym.
D. danych napisowych o określonej długości.
W tym pytaniu łatwo się złapać na skojarzeniach z innymi typami danych, dlatego warto sobie to porządnie poukładać. Typ DECIMAL nie ma nic wspólnego z „liczbami zapisanymi w systemie binarnym” w takim sensie, w jakim często myśli się o typach zmiennoprzecinkowych. Oczywiście fizycznie wszystko i tak jest binarne, ale chodzi o model reprezentacji logicznej. Klasyczne typy zmiennoprzecinkowe (FLOAT, DOUBLE) trzymają wartość w formacie binarnym IEEE 754, co powoduje znane problemy z dokładnością, np. 0.1 + 0.2 ≠ 0.3 idealnie. DECIMAL jest zaprojektowany właśnie po to, żeby unikać tych błędów i zapewnić precyzyjną reprezentację dziesiętną z określoną liczbą miejsc po przecinku. Dlatego utożsamianie DECIMAL z „typem binarnym” albo ogólnie z „liczbami w systemie binarnym” to takie lekkie pomieszanie poziomów abstrakcji. Kolejna pułapka to traktowanie DECIMAL jako typu do przechowywania danych napisowych. Dane tekstowe o określonej długości trzymamy w typach CHAR(n) lub VARCHAR(n). One przechowują ciągi znaków, a nie wartości numeryczne, więc nie wykonamy na nich sensownie operacji arytmetycznych, agregacji typu SUM, AVG itp. Oczywiście czasem ktoś z lenistwa zapisuje np. kwoty jako VARCHAR, ale to jest sprzeczne z dobrymi praktykami projektowania schematu bazy i potem mści się przy raportach i walidacji. Częsty błąd myślowy polega też na wrzuceniu wszystkich „liczb z przecinkiem” do jednego worka i uznaniu, że to zawsze są liczby zmiennoprzecinkowe. W rzeczywistości w SQL rozróżniamy typy przybliżone (FLOAT, DOUBLE, REAL) i typy dokładne (DECIMAL, NUMERIC). Te pierwsze są dobre do obliczeń naukowych, pomiarów, gdzie dopuszczalne jest małe odchylenie, za to są szybsze i mniej pamięciożerne. Te drugie, stałoprzecinkowe, są stosowane tam, gdzie ważna jest bezwzględna poprawność wartości dziesiętnej, np. finanse, księgowość, rozliczenia magazynowe. Traktowanie DECIMAL jako „liczby rzeczywistej zmiennoprzecinkowej” zaciera tę bardzo ważną granicę. Z mojego doświadczenia w projektach komercyjnych wybór między DECIMAL a FLOAT/DOUBLE to jedno z kluczowych miejsc, gdzie początkujący projektanci baz popełniają błędy. Jeśli typ dobierzemy źle, to później pojawiają się trudne do wytłumaczenia różnice groszowe, błędne sumy w raportach, problemy z porównaniami w WHERE. Dlatego warto zapamiętać: DECIMAL to liczby rzeczywiste stałoprzecinkowe, z dokładnie określoną precyzją i skalą, a nie typ tekstowy ani przybliżony typ binarny.