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 22:53
  • Data zakończenia: 28 kwietnia 2026 23:24

Egzamin zdany!

Wynik: 33/40 punktów (82,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

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, wysokosc FROM gory;
B. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory;
C. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo;
D. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc;
Wybrana kwerenda SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo; jest poprawna, ponieważ umożliwia uzyskanie najwyższego szczytu w każdym pasmie górskim. W tym przypadku użycie funkcji agregującej MAX pozwala na zidentyfikowanie maksymalnej wartości kolumny 'wysokosc' dla każdej grupy utworzonej przez 'pasmo'. Podczas stosowania klauzuli GROUP BY, dane są dzielone na różne grupy na podstawie wartości w kolumnie 'pasmo', a następnie dla każdej grupy obliczana jest maksymalna wysokość szczytu. Taki sposób zorganizowania danych jest zgodny z najlepszymi praktykami SQL, które rekomendują wykorzystanie funkcji agregujących w połączeniu z grupowaniem, aby uzyskać zwięzłe i precyzyjne wyniki. Przykładowo, po wykonaniu tej kwerendy, otrzymamy listę pasm górskich wraz z najwyższymi szczytami, co jest niezbędne do analizy geograficznej i turystycznej.

Pytanie 2

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport, który wyświetla dane z tabeli dla komputerów z co najmniej 8 GB pamięci oraz procesorem Intel, można użyć kwerendy

A. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec >= 8
B. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec < 8
C. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec >= 8
D. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec < 8
Odpowiedź "SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8;" jest poprawna, ponieważ wykorzystuje operator AND do jednoczesnego spełnienia dwóch warunków: procesor musi być równy 'Intel', a pamięć musi wynosić co najmniej 8 GB. Taki zapis jest zgodny z najlepszymi praktykami w programowaniu zapytań SQL, którymi są m.in. precyzyjność oraz jednoznaczność. Dzięki użyciu operatora AND, zapytanie filtruje wyniki w sposób, który jest zgodny z wymaganiami użytkownika. W praktyce, takie kwerendy są niezwykle ważne dla analizy danych w bazach danych, ponieważ umożliwiają wyodrębnienie specyficznych informacji, które są krytyczne dla podejmowania decyzji biznesowych. Na przykład, w kontekście sklepu komputerowego, analiza komputerów z określonymi parametrami technicznymi może pomóc w lepszym dostosowaniu oferty do potrzeb klientów. Ponadto, rozumienie składni SQL oraz umiejętność formułowania efektywnych zapytań to kluczowa umiejętność dla specjalistów w dziedzinie zarządzania danymi.

Pytanie 3

Który z przedstawionych obrazów został przetworzony przy użyciu podanego stylu CSS?

Ilustracja do pytania
A. Rys. C
B. Rys. A
C. Rys. B
D. Rys. D
Analizując inne odpowiedzi, możemy zidentyfikować kluczowe błędy wynikające z niezrozumienia bądź błędnej interpretacji właściwości CSS zastosowanych w stylu. Należy zwrócić uwagę na rozbieżności między oczekiwanym efektem a rzeczywistym wyglądem obrazów. W przypadku Rys. B, obraz nie posiada żadnego marginesu ani zaokrąglonych rogów, co świadczy o nieobecności zastosowanego stylu border-radius oraz padding. Ten brak zaokrąglenia sugeruje pominięcie istotnego aspektu estetycznego, jakim jest border-radius w CSS, który jest często używany do poprawienia odbioru wizualnego. Rys. C z kolei może mieć prawidłowy kolor obramowania, ale brak zaokrąglonych rogów również sygnalizuje, że styl nie został w pełni zastosowany zgodnie z założeniami CSS. Natomiast Rys. D wykazuje zastosowanie obramowania przerywanego, co wskazuje na nieodpowiednie użycie właściwości border-style, która w zadaniu powinna być ustawiona na solid. To błędne użycie stylu obramowania pokazuje złą interpretację specyfikacji CSS, gdzie ciągła linia jest wymagana. Podsumowując, wybór innej niż Rys. A odpowiedzi wskazuje na pominięcie kluczowych cech stylu CSS, takich jak padding i border-radius, które są istotne dla poprawnego renderowania wizualnego elementów interfejsu w zgodności z projektowymi standardami i praktykami branżowymi.

Pytanie 4

Którego elementu nie powinno się umieszczać w nagłówku pliku HTML?

A. <meta>
B. <h2>
C. <title>
D. <link>
Odpowiedź <h2> jest poprawna, ponieważ ten znacznik rzeczywiście może być używany w nagłówku dokumentu HTML. Znaczniki nagłówków, takie jak <h1>, <h2>, <h3>, itd., są kluczowe dla strukturyzowania treści w HTML, ponieważ definiują hierarchię informacji na stronie. Zgodnie z najlepszymi praktykami SEO, właściwe użycie znaczników nagłówków nie tylko poprawia czytelność dla użytkowników, ale także umożliwia wyszukiwarkom lepsze zrozumienie struktury treści. Warto jednak zauważyć, że w nagłówku dokumentu HTML, który znajduje się w sekcji <head>, należy umieszczać jedynie metadane takie jak <title> oraz <meta>. Znaczniki nagłówków są przeznaczone do użycia w sekcji <body>, co podkreśla ich rolę w organizacji zawartości wizualnej. W praktyce, poprawne użycie znaczników nagłówków przyczynia się do lepszej nawigacji i dostępności treści dla użytkowników z różnymi potrzebami, w tym dla osób korzystających z technologii asystujących. Zastosowanie odpowiednich znaczników nagłówków może także wpłynąć na czas ładowania strony oraz jej ogólną wydajność.

Pytanie 5

W dokumencie HTML zdefiniowano listę oraz dodano do niej formatowanie CSS. Który z efektów odpowiada tej definicji?

<ul>
  <li>Foksterier
  <li>Bokser
  <li>Baset
</ul>
li::after {
  content: " - Pies";
  background-color: teal;
  color: white;
}
Efekt 1
  • Foksterier
  • Bokser
  • Baset
Efekt 2
  • Foksterier
  • Bokser
  • Baset
Efekt 3
  • Foksterier
  • Bokser
  • Baset
Efekt 4
  • Foksterier
  • Bokser
  • Baset
A. Efekt 3.
B. Efekt 1.
C. Efekt 4.
D. Efekt 2.
Wybór każdej z niepoprawnych odpowiedzi wskazuje na niezrozumienie jak działają niektóre elementy CSS. 'Efekt 2', 'Efekt 3' i 'Efekt 1' nie pokazują tekstu '- Pies' dodanego za każdym elementem listy, co jest wynikiem zastosowania pseudoelementu ::after w kodzie CSS. Pseudoelementy w CSS są używane do style'owania określonych części elementu, jak na przykład jego początek lub koniec. W tym konkretnym przypadku, pseudoelement ::after dodaje treść do elementu po jego treści, ale zanim nastąpi jego zamknięcie. Jeżeli nie widzisz tego efektu w wybranym przez Ciebie efekcie, prawdopodobnie nie zrozumiałeś poprawnie jak działają pseudoelementy w CSS. Dodatkowo, jeśli wybrana przez Ciebie odpowiedź nie ma tła w kolorze 'teal' i tekstu w kolorze 'white', prawdopodobnie nie zwróciłeś uwagi na szczegółowe style CSS zastosowane do listy w kodzie. Zachęcamy do dalszego studiowania tematu CSS i HTML, aby zrozumieć, jak te dwie technologie współpracują ze sobą przy tworzeniu stron internetowych.

Pytanie 6

W instrukcjach mających na celu odtwarzanie dźwięku na witrynie internetowej jako podkładu muzycznego nie stosuje się atrybutu

A. volume="-100"
B. href="C:/100.wav">
C. balance="-10"
D. loop="10"
Odpowiedź 'href="C:/100.wav"' jest prawidłowa, ponieważ atrybut 'href' nie jest używany w kontekście odtwarzania dźwięku na stronie internetowej. Atrybut ten jest przeznaczony do definiowania hiperłączy w elementach, takich jak <a> (linki). W przypadku odtwarzania dźwięków na stronach internetowych, stosuje się atrybuty, takie jak 'src' w elemencie <audio> lub <embed>, które wskazują lokalizację pliku audio, który ma być odtwarzany. Dobre praktyki webowe zalecają korzystanie z elementu <audio>, który pozwala na kontrolowanie odtwarzania dźwięku przy pomocy takich atrybutów jak 'controls', 'autoplay', 'loop' itp. Na przykład, aby odtworzyć plik audio, można użyć znacznika <audio src="C:/100.wav" controls></audio>, co pozwala na interaktywne sterowanie odtwarzaniem. Zrozumienie różnicy między atrybutami i ich zastosowaniem w kontekście HTML jest kluczowe dla projektowania funkcjonalnych i dostępnych stron internetowych.

Pytanie 7

W języku JavaScript rezultat wykonania instrukcji zmienna++; będzie równy wynikowi instrukcji

A. zmienna = zmienna + 10;
B. zmienna--;
C. zmienna === zmienna + 1;
D. zmienna += 1;
Zmienna <span>zmienna++;</span> w JavaScript to operator inkrementacji, który zwiększa wartość zmiennej o 1. Odpowiedź <span>zmienna += 1;</span> jest równoważna, gdyż również zwiększa wartość zmiennej o 1, korzystając z operatora przypisania z dodawaniem. Dobre praktyki programistyczne sugerują, że wykorzystanie operatorów skróconych, jak <span>+=</span>, poprawia czytelność kodu. Przykład zastosowania można zobaczyć w pętli, gdzie każdy krok może wymagać zwiększenia wartości licznika: <span>for (let i = 0; i < 10; i++) { licznik += 1; }</span>. Warto również zauważyć, że operator inkrementacji <span>++</span> może być używany w formie prefiksowej i postfiksowej, co ma znaczenie w kontekście zwracania wartości. Ponadto, w sytuacjach, gdy kod wymaga zwiększenia wartości zmiennej, preferowanie <span>zmienna += 1;</span> nad <span>zmienna++;</span> może poprawić zrozumienie logiki programu, zwłaszcza dla mniej doświadczonych programistów.

Pytanie 8

W jaki sposób można w języku CSS ustawić takie stylizowanie tabeli, aby wiersz, na którym obecnie znajduje się kursor myszki, zmieniał kolor tła na szary?

A. tr:active { color: gray; }
B. tr:active { background-color: gray; }
C. tr:hover { color: gray; }
D. tr:hover { background-color: gray; }
Odpowiedź tr:hover { background-color: gray; } jest całkiem trafna. Używasz pseudoklasy :hover, co jest super standardowym podejściem do stylizacji elementów, gdy kursor najedzie na nie. W tabeli to tak działa, że cały wiersz zmienia kolor tła na szary, co znacznie poprawia czytelność i jakby cały interfejs staje się bardziej interaktywny. To jest przydatne w aplikacjach webowych, bo użytkownicy szybko rozumieją, na którym wierszu akurat są. Można jeszcze dodać inne efekty, na przykład zmienić kolor tekstu czy dodać jakies cień. Przykład to jakieś interaktywne tabele w systemach do zarządzania danymi, gdzie jak najeżdżasz na wiersze, to wyświetlają się dodatkowe info lub pozwalają je edytować. Pamiętaj też o dostępności – dobrze jest zadbać o kontrasty kolorystyczne, żeby osoby z dysfunkcjami wzroku mogły z tego korzystać.

Pytanie 9

Określenie powiązań między tabelami w bazie danych MySQL realizuje klauzula

A. INDEX
B. REFERENCES
C. PRIMARY KEY
D. ORDER BY
Klauzula REFERENCES w systemie bazodanowym MySQL jest kluczowym elementem, który umożliwia ustanawianie relacji pomiędzy tabelami. Jej główną funkcją jest definiowanie kluczy obcych, które zapewniają referencyjną integralność danych. Klucz obcy wskazuje na kolumnę w innej tabeli, co pozwala na powiązanie dwóch zestawów danych. Na przykład, jeśli mamy tabelę 'Zamówienia', która zawiera kolumnę 'KlientID', możemy użyć klauzuli REFERENCES, aby wskazać, że ta kolumna odnosi się do kolumny 'ID' w tabeli 'Klienci'. Dzięki temu, przy dodawaniu lub aktualizowaniu rekordów w tabeli 'Zamówienia', system MySQL będzie sprawdzać, czy 'KlientID' ma odpowiadający mu rekord w tabeli 'Klienci'. Takie powiązanie zapobiega błędom związanym z nieistniejącymi danymi i umożliwia bardziej złożone zapytania, które łączą dane z różnych tabel. Klauzula REFERENCES jest częścią szerszych standardów SQL, które ułatwiają zarządzanie relacyjnymi bazami danych i są kluczowe w projektowaniu złożonych struktur danych.

Pytanie 10

Z tabeli mieszkancy trzeba wydobyć unikalne nazwy miast, w tym celu należy użyć wyrażenia SQL zawierającego klauzulę

A. CHECK
B. UNIQUE
C. DISTINCT
D. HAVING
Odpowiedź 'DISTINCT' jest prawidłowa, ponieważ klauzula ta w SQL służy do eliminacji duplikatów z wyników zapytania. Gdy chcemy uzyskać unikalne wartości z określonej kolumny, stosujemy 'SELECT DISTINCT nazwa_kolumny FROM nazwa_tabeli'. Na przykład, używając zapytania 'SELECT DISTINCT miasto FROM mieszkancy', otrzymamy jedynie unikalne nazwy miast bez powtórzeń. To podejście jest szczególnie przydatne w analizach, gdzie kluczowe jest posiadanie jedynie jednorazowych wartości, na przykład w raportach marketingowych czy badaniach demograficznych. W praktyce 'DISTINCT' powinno być używane z rozwagą, gdyż jego użycie może wpływać na wydajność zapytania, zwłaszcza w przypadku dużych zbiorów danych. Należy również pamiętać, że 'DISTINCT' dotyczy wszystkich kolumn w zapytaniu – jeśli wybierzemy więcej niż jedną kolumnę, to zduplikowane wiersze będą usuwane tylko wtedy, gdy wszystkie kolumny są identyczne. To sprawia, że 'DISTINCT' jest elastycznym narzędziem w SQL, pozwalającym na efektywne zarządzanie i przetwarzanie danych.

Pytanie 11

W języku PHP stwórz warunek, który będzie prawdziwy, gdy zmienna

$a 
będzie jakąkolwiek liczbą całkowitą mniejszą niż -10 lub gdy zmienna
$b 
będzie liczbą z zakresu (25, 75). Wyrażenie logiczne w tym warunku powinno mieć postać
A. ($a < -10) or (($b > 25) and ($b < 75))
B. ($a < -10) and (($b > 25) or ($b < 75))
C. ($a < -10) and (($b > 25) and ($b < 75))
D. ($a < -10) or (($b > 25) or ($b < 75))
Wyrażenie logiczne ($a < -10) or (($b > 25) and ($b < 75)) jest poprawne, ponieważ spełnia warunki określone w treści zadania. Warunek ten sprawdza, czy zmienna $a jest mniejsza od -10 lub czy zmienna $b mieści się w przedziale od 25 do 75, co oznacza, że musi być większa niż 25 oraz mniejsza niż 75 jednocześnie. Takie podejście jest zgodne z zasadami logiki i jest typowe w programowaniu w PHP. Praktycznym zastosowaniem tego typu warunków może być filtrowanie danych użytkowników na podstawie wieku lub kwot transakcji, gdzie istotne jest spełnienie kilku kryteriów. Warto również zauważyć, że użycie operatora 'or' w tym przypadku jest kluczowe, gdyż pozwala na spełnienie przynajmniej jednego z warunków, co jest istotne w kontekście przyjmowania danych. Dobre praktyki w programowaniu sugerują, aby zawsze dokładnie definiować warunki logiczne oraz unikać nadmiarowych złożoności, co czyni kod bardziej czytelnym i łatwiejszym w utrzymaniu.

Pytanie 12

Witryna internetowa powinna mieć zaprezentowaną strukturę bloków. Aby osiągnąć ten układ, należy przypisać sekcjom odpowiednie właściwości w następujący sposób:

Ilustracja do pytania
A. float wyłącznie dla bloku 5; clear dla bloku 2
B. float tylko dla bloku 2; clear dla bloków: 3, 4
C. float tylko dla bloków: 3, 4; clear dla bloku 5
D. float tylko dla bloków: 2, 3, 4; clear dla bloku 5
Żeby osiągnąć układ, który widzisz w pytaniu, musisz dobrze zrozumieć, jak działają właściwości CSS float i clear. Właściwość float umożliwia przesunięcie elementów w lewo lub w prawo w stosunku do ich kontenera oraz innych elementów. To jest przydatne do tworzenia układów kolumnowych. W tym przypadku bloki 2, 3 i 4 muszą być przesunięte w prawo, żeby ułożyły się obok siebie na poziomie. Blok 2 jest największy i pełni rolę ramki dla pozostałych bloków. Użycie float dla tych bloków daje oczekiwany efekt. Jednak żeby blok 5 znalazł się pod całą strukturą, musisz zastosować clear dla bloku 5. Dzięki temu clear, blok 5 nie będzie otoczony przez inne elementy z float i znajdzie się poniżej. Z mojego doświadczenia, praktyczne wykorzystanie float i clear jest świetne, bo pozwala na tworzenie responsywnych układów bez potrzeby sięgania po bardziej skomplikowane metody jak flexbox czy grid. Choć float nie jest już tak powszechnie stosowany w profesjonalnych projektach, dobrze jest znać jego działanie i ograniczenia, żeby lepiej rozumieć ewolucję CSS oraz móc pracować z kodem, który jeszcze wykorzystuje te klasyczne metody.

Pytanie 13

Jakie słowo kluczowe w językach z grupy C powinno być wykorzystane do nadania alternatywnej nazwy już istniejącemu typowi danych?

A. enum
B. union
C. typedef
D. switch
Słowo kluczowe 'typedef' w języku C służy do tworzenia aliasów dla istniejących typów danych, co znacząco zwiększa czytelność kodu. Daje możliwość nadania bardziej znaczącej i zrozumiałej nazwy dla złożonych typów, takich jak struktury czy wskaźniki. Przykładowo, zamiast używać trudnych do zrozumienia definicji, możemy zdefiniować typ 'typedef struct { int x; int y; } Point;' i używać 'Point' w kodzie, co zwiększa jego przejrzystość. Dobre praktyki w programowaniu C zalecają stosowanie typedef w celu uproszczenia kodu oraz ułatwienia jego konserwacji. Dodatkowo, typedef wspomaga przenośność kodu, ponieważ zmiana definicji typu w jednym miejscu nie ma wpływu na cały projekt, jeśli używamy aliasów. W kontekście programowania systemowego oraz aplikacji wymagających wysokiej wydajności, umiejętność efektywnego użycia typedef jest kluczowa dla tworzenia zrozumiałych i wydajnych programów.

Pytanie 14

Co chce osiągnąć poniższe zapytanie MySQL?

ALTER TABLE ksiazki
MODIFY tytul VARCHAR(100) NOT NULL;
A. Zmienić nazwę kolumny w tabeli ksiazki
B. Dodać do tabeli ksiazki kolumnę tytul
C. Usunąć kolumnę tytul z tabeli ksiazki
D. Zmienić typ kolumny w tabeli ksiazki
Polecenie SQL ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL; służy do zmiany typu kolumny tytul w tabeli ksiazki. W tym przypadku typ kolumny jest zmieniany na VARCHAR(100), co oznacza, że będzie przechowywać łańcuchy znaków o maksymalnej długości 100 znaków, a dodatkowo kolumna ta nie może przyjmować wartości NULL. Użycie ALTER TABLE i MODIFY pozwala na dynamiczną modyfikację struktury tabeli bez konieczności jej usuwania i ponownego tworzenia, co jest korzystne w dużych systemach bazodanowych, gdzie minimalizacja czasu przestoju jest kluczowa. Praktyczne zastosowanie polecenia MODIFY jest szerokie i obejmuje sytuacje, w których wymagane są zmiany w przechowalności danych, na przykład aby dostosować się do nowych wymagań biznesowych lub normatywnych. Warto pamiętać o dopasowaniu zmian do istniejących danych i zapewnieniu spójności bazy danych, co jest dobrą praktyką w zarządzaniu bazami danych.

Pytanie 15

W języku JavaScript rezultat działania instrukcji zmienna1 –= 1; będzie identyczny jak wynik instrukcji

A. zmienna1++;
B. zmienia1 = zmienna1 - 0;
C. zmienna1––;
D. zmienna1 === zmienna1 - 1;
Instrukcja 'zmienna1 -= 1;' w języku JavaScript jest skróconą formą zapisu, która oblicza nową wartość zmiennej 'zmienna1', odejmując od niej 1. Działa to na zasadzie równania, gdzie zmienna zostaje zaktualizowana do nowej wartości. Z kolei zapis 'zmienna1--;' również dokonuje dekrementacji zmiennej 'zmienna1' o 1, ale w formie operatora post-dekrementacji. W praktyce oznacza to, że obie instrukcje mają ten sam efekt końcowy, czyli zmiana wartości 'zmienna1' o 1 w dół. Przykładowo, jeżeli 'zmienna1' wynosi 5 przed wykonaniem powyższych operacji, to po ich wykonaniu jej wartość wyniesie 4. Takie skrócone formy zapisu są powszechną praktyką w programowaniu, ponieważ umożliwiają bardziej zwięzłe i czytelne przedstawienie operacji na zmiennych, co jest zgodne z zasadami czystego kodu. Używanie operatorów skróconych, takich jak '+=' i '-=', jest zalecane, ponieważ poprawia czytelność i zrozumiałość kodu.

Pytanie 16

Kod CSS można włączyć do dokumentu HTML, używając znacznika

A. <style>
B. <body>
C. <meta>
D. <head>
Odpowiedź <style> jest prawidłowa, ponieważ ten znacznik HTML jest dedykowany do osadzania kodu CSS wewnątrz dokumentu HTML. Znacznik <style> powinien być umieszczony w sekcji <head> dokumentu, co umożliwia przeglądarkom interpretację stylów przed renderowaniem treści strony. Dzięki temu można definiować różne reguły CSS, które modyfikują wygląd elementów HTML, co jest kluczowe w tworzeniu estetycznych i funkcjonalnych stron internetowych. Przykładowo, można użyć <style> do określenia koloru tła, rozmiaru czcionki czy marginesów. Ważne jest, aby stosować zasady dotyczące kaskadowości, ponieważ style zdefiniowane w <style> mają priorytet nad stylem zewnętrznym, jeśli są tak samo specyficzne. Dodatkowo, korzystanie z <style> jest zgodne z zasadami dobrych praktyk, takich jak unikanie nadmiarowego ładowania zewnętrznych plików CSS w przypadku prostych projekty, co przyspiesza czas ładowania strony.

Pytanie 17

W algorytmie jeden z bloków zawiera akcję „Wypisz liczbę”. Jaki kształt może mieć ta akcja?

Ilustracja do pytania
A. Kształt 4
B. Kształt 1
C. Kształt 3
D. Kształt 2
Kształt 1 jest równoległobokiem, który w kontekście algorytmów często reprezentuje operacje wprowadzania lub wyprowadzania danych. W algorytmach i schematach blokowych, różne kształty mają przypisane konkretne funkcje, co jest standardem w projektowaniu programów. Równoległobok jest standardowym symbolem dla operacji wejścia i wyjścia, w tym wypisywania danych na ekranie. Przykładem zastosowania tego może być wypisywanie wyników obliczeń matematycznych na konsoli w językach takich jak Python czy Java. Używanie odpowiednich kształtów pozwala na łatwiejsze zrozumienie działania algorytmu przez innych programistów, co jest kluczowe w pracy zespołowej i podczas dokumentacji projektowej. Dobre praktyki w programowaniu zalecają jasność i przejrzystość schematów blokowych, co ułatwia ich późniejsze utrzymanie i rozwój. Szukając standardów, warto odnieść się do norm ISO/IEC 19515:2017 dotyczących diagramów przepływu pracy, które podkreślają znaczenie konwencji w projektowaniu algorytmów.

Pytanie 18

Zdarzenie JavaScript onmousedown występuje, gdy

A. został naciśnięty dwa razy klawisz myszy komputerowej.
B. wskaźnik myszy komputerowej wyszedł poza obręb obiektu.
C. został wciśnięty dowolny klawisz myszy komputerowej na danym elemencie.
D. wskaźnik myszy komputerowej znalazł się w obrębie obiektu.
Poprawnie – zdarzenie onmousedown w JavaScript wywołuje się dokładnie w momencie, gdy użytkownik naciska dowolny klawisz myszy na danym elemencie. Nie ma znaczenia, czy to jest lewy, prawy czy środkowy przycisk, samo fizyczne wciśnięcie przycisku nad elementem powoduje uruchomienie tego eventu. Z punktu widzenia przeglądarki jest to bardzo wczesny etap interakcji myszą: najpierw pojawia się onmousedown, później ewentualnie onmouseup, a dopiero z kombinacji tych dwóch czasem wynika onclick. Moim zdaniem warto to sobie dobrze poukładać, bo w praktyce front-endowca to jedna z podstawowych rzeczy przy obsłudze interfejsu. onmousedown jest używany wszędzie tam, gdzie chcesz zareagować natychmiast po naciśnięciu przycisku, a nie dopiero po jego puszczeniu. Klasyczny przykład to przeciąganie elementów (drag and drop): w onmousedown zapamiętujesz, że użytkownik „złapał” element, podpinasz nasłuch na mousemove, a w mouseup kończysz przeciąganie. Innym typowym zastosowaniem są własne przyciski i kontrolki, gdzie chcesz np. zmienić styl od razu po wciśnięciu (wrażenie wciśniętego guzika), albo rozpocząć jakąś akcję ciągłą, np. przytrzymanie przycisku powoduje powiększanie mapy czy przewijanie listy. W nowoczesnym JavaScript raczej używa się addEventListener("mousedown", handler) zamiast atrybutu onmousedown w HTML, bo to zgodne z dobrymi praktykami separacji logiki od struktury (HTML + JS osobno). Sam event obiektu MouseEvent przekazuje też szczegóły, np. który przycisk został naciśnięty (właściwość button), pozycję kursora, stan klawiszy modyfikujących itd. Dobrze wiedzieć, że onmousedown nie jest powiązany z wyjściem kursora poza element ani z podwójnym kliknięciem – od tego są inne zdarzenia, co często myli początkujących.

Pytanie 19

Aby zdefiniować styl akapitu <p>, który występuje bezpośrednio po znaczniku <img>, należy w arkuszu stylów CSS zastosować związek

A. img + p
B. img p
C. img > p
D. img [p]
Poprawna odpowiedź to selektor sąsiedniego rodzeństwa: img + p. W CSS znak plus między selektorami oznacza: „wybierz element, który występuje bezpośrednio po innym elemencie, na tym samym poziomie drzewa DOM”. Czyli img + p trafi dokładnie w akapit <p>, który jest pierwszym rodzeństwem po znaczniku <img>, a nie w dowolny akapit gdzieś niżej. Przykład w praktyce: img + p { margin-top: 10px; font-style: italic; } Taki zapis spowoduje, że tylko akapit bezpośrednio po obrazku dostanie ten margines i kursywę. Jeśli pod obrazkiem będą dwa akapity z rzędu, to ostylowany zostanie tylko pierwszy. To jest bardzo przydatne np. przy podpisach pod zdjęciami, krótkich opisach ilustracji albo przy specyficznym formatowaniu pierwszego paragrafu po grafice. Warto odróżniać ten selektor od innych. Zapis img p oznaczałby: „akapit znajdujący się wewnątrz elementu img”, co w normalnym HTML nie ma sensu, bo <img> jest pustym elementem, nie zawiera w sobie dzieci. Z kolei img > p wybierałby tylko bezpośrednie dzieci <img>, co też jest nielogiczne z tego samego powodu. Natomiast img [p] nie jest w ogóle poprawnym selektorem w tym kontekście – nawiasy kwadratowe służą w CSS do selektorów atrybutów, np. a[target="_blank"]. Z mojego doświadczenia taki selektor jak img + p jest lepszym rozwiązaniem niż dokładanie dodatkowych klas tylko po to, żeby ostylować akapit po obrazku. Mniej zbędnych klas w HTML-u, bardziej semantyczny i czysty kod. Jest to zgodne z dobrymi praktykami front-endu: wykorzystywać możliwości selektorów CSS zanim zaczniemy zaśmiecać strukturę HTML dodatkowymi znacznikami czy klasami. Ten typ selektora jest opisany w specyfikacji CSS Selectors Level 3 jako adjacent sibling combinator i jest wspierany przez wszystkie współczesne przeglądarki, więc spokojnie można go stosować w normalnych projektach produkcyjnych.

Pytanie 20

Które zdarzenie języka JavaScript jest wyzwalane w momencie, gdy kursor myszy znajduje się na elemencie do którego jest przypisane?

A. onmouseout
B. onmouseover
C. onmousedown
D. onmouseup
Prawidłowa odpowiedź to onmouseover, bo właśnie to zdarzenie w JavaScript uruchamia się w momencie, kiedy kursor myszy *wchodzi* na dany element i znajduje się nad nim. Przeglądarka monitoruje położenie kursora i gdy tylko „najedziesz” na element z przypisanym zdarzeniem onmouseover, wywoływany jest podpięty handler, na przykład funkcja w JavaScript. W praktyce często używa się tego do tworzenia efektów typu podświetlanie przycisków, rozwijane menu, podpowiedzi (tooltips) albo lekkie animacje po najechaniu. Przykładowo: `<button onmouseover="this.style.backgroundColor='orange'">Najedź na mnie</button>` – w chwili najechania myszką kolor tła przycisku się zmienia. Moim zdaniem to jedno z bardziej podstawowych zdarzeń, które warto ogarnąć na początku nauki frontendu, bo pozwala szybko zrobić stronę bardziej „żywą”. W nowoczesnym kodzie raczej unika się pisania atrybutów typu onmouseover bezpośrednio w HTML i zamiast tego stosuje się `addEventListener("mouseover", handler)` w JavaScript. Jest to zgodne z dobrymi praktykami i oddziela logikę od struktury dokumentu. Warto też wiedzieć, że onmouseover różni się od onmouseenter: onmouseover propaguje się (bąbelkuje) w górę drzewa DOM, co ma znaczenie przy bardziej złożonych interfejsach. Standardowe API DOM dokładnie opisuje te różnice i przy projektowaniu interakcji dobrze jest świadomie wybierać odpowiedni typ zdarzenia. W typowych projektach webowych onmouseover jest używany głównie do prostych reakcji na najechanie, ale trzeba pamiętać, by nie przesadzać z efektami, żeby nie przeciążyć użytkownika i nie zepsuć użyteczności strony.

Pytanie 21

Kod w języku PHP przedstawia się następująco (patrz ramka): Zakładając, że zmienne a, b, c mają wartości numeryczne, wynik warunku będzie skutkował wypisaniem liczby:

if ($a > $b && $a > $c)
    echo $a;
else if ($b > $c)
    echo $b;
else
    echo $c;
A. parzystej.
B. największej.
C. najmniejszej.
D. nieparzystej.
Kod PHP używa instrukcji warunkowych if aby porównać wartości trzech zmiennych a b i c. Pierwsza instrukcja if sprawdza czy a jest większe od b i c. Jeśli tak to echo a wyświetla wartość a jako największą. Jeśli ten warunek nie jest spełniony sprawdzamy czy b jest większe od c za pomocą else if. Jeśli b jest rzeczywiście większe to echo b wyświetla wartość b. W przeciwnym razie instrukcja else zakłada że c jest największe i wyświetla echo c. To podejście jest powszechnie stosowane w programowaniu i opiera się na dobrej praktyce stopniowego eliminowania przypadków poprzez logiczne porównania. Znajomość takich konstrukcji jest kluczowa w codziennej pracy programisty umożliwiając tworzenie efektywnego i czytelnego kodu. Tego rodzaju struktura logiczna należy do podstawowych elementów algorytmiki w programowaniu proceduralnym i obiektowym. Rozumienie jak struktury kontrolne wpływają na przepływ programu jest podstawą efektywnego kodowania oraz rozwiązywania problemów poprzez algorytmy.

Pytanie 22

Wskaż pole edycyjne sformatowane przedstawionym stylem CSS

input {
  border: none;
  border-bottom: 2px solid Blue;
  color: Gray;
  font-weight: 900;
}

Input 1. Podaj imię:

Input 2. Podaj imię:

Input 3. Podaj imię:

Input 4. Podaj imię: Agnieszka

A. Input 1.
B. Input 4.
C. Input 3.
D. Input 2.
Niestety, to nie to. Wybrałeś element, który nie spełnia wszystkich wymagań stylu CSS, który widziałeś w pytaniu. Właściwości takie jak 'border-bottom', 'color' i 'font-weight' są super przydatne, bo dzięki nim możemy dokładnie ustawić wygląd każdego elementu na stronie. W tym przypadku, styl, którego szukaliśmy, określa dolne obramowanie o grubości 2px w kolorze niebieskim, szary tekst oraz pogrubioną czcionkę. Jak coś nie pasuje do tych wymagań, to znaczy, że nie jest poprawnie sformatowane. Często zdarza się pomylić różne właściwości CSS albo nie zrozumieć, jak one wpływają na to, co widzimy na stronie. Ważne, żeby dobrze wiedzieć, jak działa CSS w praktyce, bo to naprawdę pomaga w tworzeniu i poprawianiu stron internetowych.

Pytanie 23

Wskaż właściwą sekwencję kroków w procesie projektowania relacyjnej bazy danych?

A. Określenie relacji, Określenie kluczy głównych tabel, Selekcja, Określenie zbioru danych
B. Selekcja, Określenie relacji, Określenie kluczy głównych tabel, Określenie zbioru danych
C. Określenie zbioru danych, Selekcja, Określenie kluczy głównych tabel, Określenie relacji
D. Określenie kluczy głównych tabel, Określenie zbioru danych, Selekcja, Określenie relacji
Poprawna odpowiedź to 'Określenie zbioru danych, Selekcja, Określenie kluczy podstawowych tabel, Określenie relacji'. Ta kolejność pokazuje, jak działa projektowanie relacyjnej bazy danych. Na początku trzeba określić, jakie dane będą przechowywane, czyli stworzyć zbiór danych. Potem trzeba wybrać, które z tych informacji są ważne i jak je ułożyć. Następnie ustalamy klucze podstawowe dla tabel. To ważne, żeby dane były unikalne i łatwe do zidentyfikowania. Na końcu definiujemy relacje między tabelami, co pozwala zrozumieć, jak dane ze sobą współpracują. Na przykład, kiedy projektujemy bazę danych dla szkoły, zbór danych może obejmować uczniów, nauczycieli i przedmioty. Wybierając dane, możemy zdecydować, że potrzebujemy imienia, nazwiska i przedmiotów, które uczniowie uczą się. Klucze podstawowe są wtedy używane do identyfikacji uczniów, a relacje pokazują, jak uczniowie są powiązani z nauczycielami i przedmiotami.

Pytanie 24

Na ilustracji przedstawiono schemat rozmieszczenia elementów na stronie WWW, gdzie zazwyczaj umieszcza się stopkę strony?

Ilustracja do pytania
A. 1
B. 2
C. 5
D. 4
Odpowiedź 5 jest poprawna ponieważ w typowym układzie strony WWW stopka umieszczana jest na samym dole strony i obejmuje całą jej szerokość. Stopka to sekcja strony internetowej która zawiera istotne informacje takie jak prawa autorskie polityka prywatności linki do mediów społecznościowych oraz dane kontaktowe. Jest to zgodne z konwencjami projektowania stron internetowych gdzie stopka pełni rolę miejsca do umieszczania informacji które są ważne lecz niekoniecznie powinny być umieszczone na samej górze strony. W praktyce projektowania stron internetowych stosuje się różne technologie takie jak HTML CSS oraz frameworki jak Bootstrap które umożliwiają łatwe tworzenie responsywnych stopek. Stopka powinna być dostępna na każdej podstronie co ułatwia nawigację użytkownikom. Takie rozmieszczenie poprawia również SEO poprzez umieszczanie linków wewnętrznych. Dbałość o szczegóły w projektowaniu stopki zgodnie z dobrymi praktykami UX/UI przyczynia się do lepszej użyteczności strony oraz zadowolenia użytkowników co jest kluczowe w nowoczesnym web designie.

Pytanie 25

Z przedstawionych tabel Klienci i Uslugi należy wybrać jedynie imiona klientów oraz odpowiadające im nazwy usług, które są droższe niż 10 zł. Kwerenda wybierająca te dane ma postać

Ilustracja do pytania
A. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id WHERE cena > 10;
B. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = klienci.id;
C. SELECT imie, nazwa FROM klienci, uslugi WHERE cena < 10;
D. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id;
Niestety, Twoja odpowiedź jest błędna. Może być kilka powodów, dlaczego wybrałeś to zapytanie. Może nie do końca zrozumiałeś, jak działają zapytania JOIN w SQL albo jak powinno wyglądać poprawne użycie warunków, takich jak 'WHERE cena > 10'. W pierwszym zapytaniu, mimo że struktura wygląda w porządku, brakuje tam warunku dotyczącego ceny, co jest mega ważne, żeby wyniki były odpowiednie. W drugim zapytaniu, popełniłeś błąd, bo łączysz tabele w niewłaściwy sposób – powinieneś użyć klucza obcego, a nie identyfikatora 'id' z tabeli 'Usługi'. W trzecim zapytaniu też jest klapa, bo wybierasz usługi tańsze niż 10 zł, a powinno być odwrotnie. Warto poświęcić trochę czasu na zrozumienie, jak te zapytania działają, żeby uniknąć takich wpadek. Najlepiej się uczyć przez praktykę na konkretnych przykładach, to naprawdę pomaga w opanowaniu SQL.

Pytanie 26

Kolor Chartreuse przedstawiony w formie heksadecymalnej jako #7FFF00 odpowiada wartości RGB wynoszącej

A. rgb(127, 255, 0)
B. rgb(192, 255, 0)
C. rgb(128, 255, 0)
D. rgb(64, 255, 0)
Odpowiedź rgb(127, 255, 0) jest poprawna, ponieważ odpowiada wartościom RGB z koloru Chartreuse zapisanego w postaci heksadecymalnej #7FFF00. W systemie heksadecymalnym, pierwsze dwa znaki (7F) odpowiadają wartości czerwonej (R), drugie dwa znaki (FF) wartości zielonej (G), a ostatnie dwa znaki (00) wartości niebieskiej (B). Przekształcając te wartości na system dziesiętny, 7F w heksadecymalnym to 127 w dziesiętnym, FF to 255, a 00 to 0. Użycie tego koloru w projektach graficznych, web designie czy w aplikacjach mobilnych jest szerokie, zwłaszcza w kontekście tworzenia interfejsów użytkownika, gdzie Chartreuse może być wykorzystany jako kolor akcentujący, przyciągający uwagę. Dobrą praktyką jest stosowanie kolorów o wysokim kontraście dla elementów interaktywnych, co sprawia, że korzystanie z tak żywego koloru jak Chartreuse może poprawić użyteczność oraz estetykę projektu. Warto również zaznaczyć, że znajomość konwersji kolorów między różnymi modelami (HEXA, RGB, CMYK) jest kluczowa dla każdego projektanta wizualnego, z uwagi na różne zastosowania w druku i w mediach cyfrowych.

Pytanie 27

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: left; } aside { float: left; }
B. nav { float: right; } section { float: right; }
C. nav { float: right; }
D. aside {float: left; }
W tym zadaniu kluczowe jest zrozumienie, jak naprawdę działa float, a nie tylko samo skojarzenie, że „left to lewo, right to prawo”. Wiele osób myśli, że wystarczy ustawić jeden element na lewo, drugi na prawo i wszystko magicznie się poukłada. W praktyce przeglądarka trzyma się bardzo konkretnych reguł: najpierw liczy kolejność elementów w HTML, potem dopiero stosuje float i układa je możliwie jak najwyżej i jak najbliżej odpowiedniej krawędzi. Jeśli nada się float tylko dla aside albo tylko dla nav, to zmienia się ich pozycja, ale układ trzech bloków nie spełni warunku z zadania: aside i nav nie zamienią się miejscami z pozostawieniem section w środku. Przykładowo, samo float: left na aside niczego nie „zamieni”, bo element i tak pojawia się jako pierwszy w kodzie, więc będzie u góry, tylko że „przyklejony” do lewej. Z kolei ustawienie nav na prawą stronę bez odpowiedniego floatowania section prowadzi do sytuacji, gdzie section nadal zachowuje się jak normalny blok, zwykle ląduje pod elementami pływającymi albo obok nich w sposób mało przewidywalny dla początkującego. Częsty błąd myślowy polega też na tym, że ktoś próbuje wszystkim elementom dać float: left, licząc na to, że przeglądarka „ułoży je po swojemu”. Wtedy jednak wszystkie te bloki ustawiają się w jednym kierunku, w kolejności z HTML, więc nie ma mowy o świadomym „zamienianiu miejsc”. Brak zrozumienia, że float wyjmuje element z normalnego przepływu i wpływa na to, jak kolejne elementy zawijają się wokół niego, prowadzi właśnie do takich błędnych odpowiedzi. Z mojego doświadczenia lepiej jest najpierw narysować sobie prosty schemat: w jakiej kolejności idą znaczniki i które z nich mają pływać w prawo, a które zostać w naturalnym układzie. Dopiero wtedy dobiera się konkretne deklaracje CSS. Takie myślenie przydaje się nie tylko przy float, ale też przy nauce flexboxa czy grida, gdzie kolejność w DOM i własności układu też grają ogromną rolę.

Pytanie 28

Który format graficzny rastrowy jest obsługiwany przez przeglądarki internetowe?

A. TGA
B. FLIF
C. PCX
D. PNG
Format PNG (Portable Network Graphics) to jeden z tych formatów, które są naprawdę popularne w sieci. Przeglądarki go dobrze obsługują, co jest dużym plusem. Został stworzony jako lepsza wersja formatu GIF i do tego ma większą paletę kolorów oraz wspiera przezroczystość. To oznacza, że jakość obrazka pozostaje wysoka, kiedy go zapisujesz, bo PNG korzysta z bezstratnej kompresji. Dodatkowo, ten format pozwala na różne stopnie przezroczystości, co czyni go idealnym do różnych grafik w Internecie, na przykład logo czy ikony. Fajnie, że jest zgodny z HTML5 i CSS, bo to ułatwia pracę przy projektowaniu stron. Można go używać z kolorami w trybie RGBA, dzięki czemu można dodawać fajne efekty z przezroczystością, co zdecydowanie poprawia wygląd stron. W praktyce wiele witryn korzysta z PNG, bo nie tylko zachowuje jakość, ale też nie zajmuje dużo miejsca na serwerze, co sprawia, że strony ładują się szybciej i użytkownicy mają lepsze doświadczenia.

Pytanie 29

Typ zmiennych int odnosi się do wartości liczbowych

A. naturalnych
B. całkowitych
C. w systemie zmiennoprzecinkowym
D. w systemie stałoprzecinkowym
Zmienne typu int (ang. integer) w językach programowania odnoszą się do liczb całkowitych, czyli takich, które nie mają części dziesiętnej. Przykłady to liczby -3, 0, 42. Zmienne typu int są powszechnie używane w programowaniu do przechowywania danych, które wymagają całkowitych wartości, takich jak liczby porządkowe, indeksy tablic czy liczniki w pętlach. Dzięki zastosowaniu zmiennych całkowitych, programista ma możliwość wykonywania operacji matematycznych, takich jak dodawanie, odejmowanie, mnożenie i dzielenie, które są niezwykle istotne w logice aplikacji. Warto zaznaczyć, że różne języki programowania mają różne zakresy dla typu int, co oznacza, że liczby mogą mieć różne maksymalne i minimalne wartości w zależności od zastosowanej platformy. Przykładowo, w języku C++ typ int zazwyczaj zajmuje 4 bajty, co pozwala na reprezentację wartości od -2,147,483,648 do 2,147,483,647. Zrozumienie i umiejętne wykorzystanie zmiennych całkowitych to fundament programowania, który umożliwia tworzenie efektywnych algorytmów i struktur danych.

Pytanie 30

W języku CSS, aby zdefiniować marginesy zewnętrzne o wartościach: margines górny i dolny 20 px, lewy i prawy 40 px należy użyć kodu

A. margin: 20px 40px;
B. margin: 40px 20px;
C. margin: 20px 40px 40px 20px;
D. margin: 20px 20px 40px 40px;
Poprawny zapis margin: 20px 40px; wynika z tzw. skróconej (shorthand) składni własności margin w CSS. Gdy podajemy dwie wartości, przeglądarka interpretuje je zawsze w ten sam sposób: pierwsza wartość dotyczy marginesu górnego i dolnego (top i bottom), a druga wartość dotyczy marginesu lewego i prawego (left i right). Czyli dokładnie tak, jak w treści pytania: 20 px góra/dół i 40 px lewo/prawo. To jest zgodne ze specyfikacją CSS (CSS Box Model) i działa we wszystkich współczesnych przeglądarkach. Moim zdaniem warto zapamiętać ogólny schemat dla margin i padding: – 1 wartość: wszystkie cztery strony jednakowe (margin: 20px;) – 2 wartości: góra/dół, lewo/prawo (margin: 20px 40px;) – 3 wartości: góra, lewo/prawo, dół (margin: 10px 20px 30px;) – 4 wartości: góra, prawo, dół, lewo – zgodnie z ruchem wskazówek zegara (margin: 10px 20px 30px 40px;) W praktyce zapis z dwiema wartościami jest bardzo często używany w layoutach responsywnych, np. przy centrowaniu kontenera: .container { margin: 20px auto; width: 80%; }. Zamiast podawać osobno margin-top, margin-right, margin-bottom i margin-left, używamy jednego, czytelnego skrótu. To nie tylko skraca kod, ale też ułatwia jego późniejsze utrzymanie. Dobrą praktyką jest też świadome korzystanie z jednostek. W przykładach szkolnych często pojawiają się piksele, ale w prawdziwych projektach produkcyjnych często stosuje się rem, em czy jednostki procentowe, żeby łatwiej skalować interfejs. Sama zasada działania shorthand margin pozostaje jednak identyczna, niezależnie od jednostki. Jeśli rozumiesz ten mechanizm, dużo łatwiej będzie Ci później ogarniać spacing w bardziej złożonych layoutach i frameworkach CSS, typu Bootstrap czy Tailwind, które bazują na tych samych regułach box modelu.

Pytanie 31

Aby uruchomić kod JavaScript w przeglądarce, konieczne jest

A. debugowanie
B. zamiana na kod maszynowy
C. kompilowanie
D. interpretowanie
Wykonanie kodu JavaScript w przeglądarce opiera się na procesie interpretacji, co oznacza, że kod jest analizowany i wykonywany w czasie rzeczywistym przez silnik JavaScript zainstalowany w przeglądarce. W przeciwieństwie do języków programowania kompilowanych, takich jak C++ czy Java, które wymagają wcześniejszego przetworzenia całego kodu na kod maszynowy, JavaScript jest językiem interpretowanym, co pozwala na bezpośrednią interakcję z użytkownikiem i dynamiczną aktualizację treści na stronie. Silnik JavaScript, jak V8 w Google Chrome, przetwarza kod źródłowy linia po linii, co umożliwia natychmiastowe wykonanie skryptów. Dzięki temu, zmiany w kodzie JavaScript można natychmiast zobaczyć na stronie bez potrzeby ponownego kompilowania całego projektu. Istotne jest także, że interpretacja pozwala na elastyczność w pisaniu kodu, co jest kluczowe w kontekście rozwoju aplikacji webowych. Zrozumienie procesu interpretacji jest fundamentalne dla programistów pracujących z JavaScript, ponieważ wpływa na wydajność i sposób, w jaki aplikacje są rozwijane oraz debugowane. Warto również zaznaczyć, że standard ECMAScript określa zasady dotyczące implementacji języka, co czyni interpretację kluczowym elementem w kontekście zgodności i wydajności skryptów.

Pytanie 32

Jaką wartość wyświetli standardowe wyjście dla podanego w ramce fragmentu kodu w języku C++?

Ilustracja do pytania
A. 0
B. 3
C. 32
D. 2
Analizując podane odpowiedzi warto zwrócić uwagę na podstawowe błędy w zrozumieniu działania operatorów w języku C++. Operator %= jest często źle interpretowany jako zwykłe dzielenie zamiast operacji modulo co prowadzi do błędnych wniosków takich jak wynik równy 0 lub 32. Reszta z dzielenia 32 przez 3 nie wynosi 0 ponieważ 32 nie dzieli się przez 3 bez reszty. Zapominając że operator ten zwraca resztę nie wynik dzielenia łatwo jest przyjąć błędne założenia. Dodatkowo zignorowanie inkrementacji x++ po operacji modulo może prowadzić do niepoprawnego oczekiwania że wynik pozostanie 2. Inkrementacja to podstawowa operacja która zwiększa wartość zmiennej o 1 co jest kluczowe w wielu algorytmach i strukturach danych. Brak zrozumienia tej operacji często prowadzi do błędnych rezultatów w programach. Przy rozwiązywaniu takich problemów należy brać pod uwagę sekwencję operacji oraz ich wpływ na końcowy rezultat. Praktyka oraz dokładna analiza działania poszczególnych operatorów pozwalają uniknąć typowych błędów które mogą powodować nieoczekiwane zachowanie aplikacji. Dobrze jest testować kod w małych fragmentach aby zobaczyć bezpośredni wpływ operacji na wynik co jest zgodne z dobrymi praktykami w programowaniu ukierunkowanym na testowanie i debugowanie. Zrozumienie tych koncepcji ułatwia pisanie wydajnego i niezawodnego kodu co jest celem każdego programisty w profesjonalnym środowisku.

Pytanie 33

W języku PHP funkcja trim ma za zadanie

A. porównywać dwa napisy i wypisywać część wspólną.
B. zmniejszać napis o wskazaną w parametrze liczbę znaków.
C. wyznaczyć długość napisu.
D. z obu końców napisu usuwać białe znaki lub inne znaki podane w parametrze.
Poprawnie – funkcja trim() w PHP służy do usuwania z obu końców napisu tzw. znaków niechcianych, domyślnie białych znaków, czyli spacji, tabulatorów, znaków nowej linii, powrotu karetki itp. Kluczowe jest tu słowo „z końców” – trim nie rusza środka łańcucha, modyfikuje tylko początek i koniec. Składnia jest prosta: trim(string $string, string $characters = " \n\r\t\0\x0B"). Drugi parametr jest opcjonalny i pozwala samodzielnie określić zestaw znaków, które mają być usunięte. Przykład z praktyki: bardzo często po odebraniu danych z formularza stosuje się $name = trim($_POST['name']); żeby usunąć przypadkowe spacje przed i po imieniu użytkownika. Dzięki temu porównywanie napisów, walidacja czy zapisywanie do bazy danych jest bardziej przewidywalne i zgodne z dobrymi praktykami. Moim zdaniem trim to jedna z takich małych funkcji, które powinny wejść w nawyk – szczególnie przy obsłudze inputów użytkownika, importu danych z plików CSV, parsowaniu logów czy przygotowywaniu danych do serializacji. Warto też znać powiązane funkcje: ltrim() usuwa znaki tylko z lewej strony, a rtrim() (alias chop()) tylko z prawej. Dobrą praktyką jest stosowanie trim bezpośrednio po pobraniu danych z zewnętrznych źródeł, zanim zaczniemy robić jakiekolwiek porównania, zapisy do bazy czy generowanie kluczy. Pozwala to uniknąć bardzo irytujących błędów typu „ten sam użytkownik, ale inne spacje”, które potem trudno debugować. W profesjonalnych aplikacjach webowych obróbka łańcuchów, w tym właśnie trim, jest standardowym elementem warstwy walidacji i normalizacji danych wejściowych.

Pytanie 34

Użytkownik Jan będzie miał możliwość realizacji

GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost';
A. wszystkie operacje na tabelach w bazie dane
B. tylko operacje manipulacji danymi oraz zmienić jedynie swoje uprawnienia
C. wyłącznie operacje CREATE, ALTER, DROP na tabelach w bazie dane
D. wszystkie operacje na tabelach bazy dane oraz przekazywać prawa innym użytkownikom
Odpowiedź jest prawidłowa, ponieważ polecenie GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost'; przyznaje użytkownikowi Jan wszelkie uprawnienia na wszystkich tabelach w bazie danych o nazwie 'dane'. Oznacza to, że Jan może wykonywać wszystkie operacje, takie jak SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP i inne, które są związane z zarządzaniem danymi oraz strukturą bazy. W praktyce oznacza to, że Jan ma pełną kontrolę nad bazą danych, co może być przydatne w scenariuszach, gdzie administratorzy chcą umożliwić użytkownikom elastyczność w zarządzaniu danymi. Warto jednak pamiętać, że przyznawanie ALL PRIVILEGES powinno być stosowane ostrożnie, aby uniknąć nieautoryzowanego dostępu do informacji. Dobrym rozwiązaniem jest stosowanie polityki minimalnych uprawnień, która ogranicza możliwości użytkowników do tylko tych, które są niezbędne do ich codziennych obowiązków.

Pytanie 35

Kwalifikatory dostępu: private, protected oraz public określają mechanizm

A. rekurencji
B. przeładowania
C. polimorfizmu
D. hermetyzacji
Kwalifikatory dostępu: private, protected i public, są kluczowymi elementami hermetyzacji w programowaniu obiektowym. Hermetyzacja polega na ukrywaniu wewnętrznych szczegółów implementacji obiektu i ograniczaniu dostępu do jego danych oraz metod. Dzięki tym kwalifikatorom programista może definiować, które elementy klasy są dostępne dla innych klas, co znacząco poprawia bezpieczeństwo kodu oraz jego czytelność. Na przykład, deklarując zmienną jako private, uniemożliwiamy jej bezpośredni dostęp z zewnątrz, co zapobiega przypadkowemu lub niezamierzonemu modyfikowaniu jej wartości. Dzięki temu kod staje się bardziej odporny na błędy oraz łatwiejszy do utrzymania. W praktyce, hermetyzacja jest jedną z podstawowych zasad programowania obiektowego i jest zgodna z najlepszymi praktykami, takimi jak SOLID, które promują pisanie przejrzystego i elastycznego kodu. Dobrze zaprojektowane klasy, które stosują hermetyzację, są bardziej modułowe i ułatwiają współpracę w zespołach programistycznych, co jest niezmiernie istotne w dużych projektach.

Pytanie 36

Weryfikację kompletności formularza, działającą po stronie przeglądarki, należy zrealizować w języku

A. PHP
B. JavaScript
C. CSS
D. Ruby on Rails
Poprawna odpowiedź to JavaScript, bo właśnie ten język działa bezpośrednio w przeglądarce użytkownika i pozwala na dynamiczną weryfikację formularzy jeszcze przed wysłaniem danych na serwer. JavaScript ma dostęp do drzewa DOM, więc może odczytać wartości pól, sprawdzić, czy nie są puste, czy e‑mail ma poprawny format, czy hasło ma odpowiednią długość, a nawet czy dwa pola hasła są identyczne. Z mojego doświadczenia to jest absolutny standard w nowoczesnych aplikacjach webowych: najpierw lekka walidacja po stronie klienta w JS, a dopiero potem solidna walidacja po stronie serwera. Dobrym przykładem jest formularz rejestracji: po wpisaniu zbyt krótkiego hasła JavaScript może od razu wyświetlić komunikat pod polem, bez przeładowania strony. Można też blokować przycisk „Wyślij”, dopóki wszystkie wymagane pola nie są poprawnie wypełnione. W praktyce często używa się zdarzeń takich jak onsubmit na formularzu albo input/blur na polach, żeby na bieżąco sprawdzać dane. Można też korzystać z gotowych bibliotek walidacyjnych, ale pod spodem i tak pracuje JavaScript. W dobrych praktykach przyjmuje się zasadę: walidacja po stronie klienta poprawia wygodę i szybkość obsługi (user experience), ale nie zastępuje walidacji po stronie serwera. JavaScript służy więc do „pierwszej linii obrony” i podpowiedzi użytkownikowi, a serwer (np. w PHP czy innym języku backendowym) musi i tak wszystko jeszcze raz sprawdzić ze względów bezpieczeństwa. Warto też pamiętać o wykorzystaniu wbudowanych mechanizmów HTML5 (atrybuty required, type="email" itd.), ale to JavaScript daje pełną kontrolę nad logiką i komunikatami błędów, bo pozwala tworzyć własne reguły i reagować na konkretne zachowania użytkownika.

Pytanie 37

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID, natomiast tabela rezyserzy ma klucz główny id. Obydwie tabele są połączone relacją jeden do wielu, gdzie strona rezyserzy odnosi się do strony filmy. Jak należy zapisać kwerendę SELECT, aby połączyć tabele filmy i rezyserzy?

A. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.filmyID ...
B. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id ...
C. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.filmyID ...
D. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.id ...
Odpowiedź, która wskazuje na połączenie tabeli filmy z tabelą rezyserzy za pomocą klauzuli JOIN, z warunkiem ON filmy.rezyserID = rezyserzy.id, jest prawidłowa, ponieważ bezpośrednio odzwierciedla relację pomiędzy tymi dwiema tabelami. Klucz obcy rezyserID w tabeli filmy wskazuje na klucz główny id w tabeli rezyserzy. W związku z tym, aby prawidłowo połączyć te tabele w kwerendzie SELECT, musimy użyć tego klucza obcego w warunku połączenia. Przykładowo, w realnych zastosowaniach chcesz uzyskać informacje o filmach oraz ich reżyserach; więc pisząc zapytanie, możesz z łatwością uzyskać dane, takie jak tytuł filmu i imię reżysera, co jest kluczowe w systemach zarządzania bazą danych. Dobre praktyki wskazują, że zawsze należy używać poprawnych kluczy do łączenia tabel, aby uzyskać wiarygodne i dokładne wyniki, co jest fundamentalne w projektowaniu baz danych i tworzeniu zapytań SQL.

Pytanie 38

Algorytm przedstawiony na rysunku można zapisać w języku JavaScript za pomocą instrukcji

A. for(i = 0; i > 10; i++)

B. var i = 0;
   while(i <= 10)
     i += 2;

C. var i = 0;
   do
     i++;
   while(i > 10);

D. var i = 0;
   do
     i = i + 2;
   while(i < 10);
Ilustracja do pytania
A. C.
B. D.
C. A.
D. B.
Niestety, wybrana odpowiedź nie jest poprawna. Przeanalizujmy błędy w pozostałych odpowiedziach. Wszystkie niepoprawne odpowiedzi nie odzwierciedlają prawidłowo logiki przedstawionej na diagramie przepływu. Mogą nie inicjalizować zmiennej 'i' na 0, nie zwiększać jej wartości o 2 za każdym obrotem pętli lub nie sprawdzać, czy 'i' jest mniejsze lub równe 10. Takie błędy są często wynikiem niezrozumienia działania pętli i operatorów w języku JavaScript. Pętla 'while' powinna wykonywać określony kod, dopóki jej warunek jest spełniony. Operator '+=' to skrócona forma zapisu operacji dodawania i przypisania. Jeśli zmienna 'i' jest zwiększana o 2, powinniśmy użyć 'i += 2', a nie 'i++' lub 'i--', które odpowiednio zwiększają lub zmniejszają wartość 'i' o 1. Ważne jest, aby zrozumieć znaczenie i zastosowanie różnych operatorów i instrukcji w języku JavaScript, aby prawidłowo odwzorować algorytmy na kod.

Pytanie 39

Rodzaj programowania, w którym zestaw poleceń (sekwencja instrukcji) przekazywanych komputerowi postrzega się jako program, określa się mianem programowania

A. funkcyjnego
B. stanowego
C. logicznego
D. imperatywnego
Programowanie imperatywne to paradygmat, w którym programista definiuje sekwencję instrukcji, które komputer ma wykonać, aby osiągnąć określony cel. Jest to najpopularniejszy i najczęściej stosowany sposób programowania, który koncentruje się na tym, jak osiągnąć pożądany rezultat, a nie tylko na tym, co ma być osiągnięte. W programowaniu imperatywnym zazwyczaj używa się zmiennych, struktur kontrolnych takich jak pętle i instrukcje warunkowe, co pozwala na kontrolę przepływu wykonania programu. Przykłady języków programowania, które implementują ten paradygmat, to C, C++, Java oraz Python. Zastosowanie programowania imperatywnego w praktyce jest szerokie: od tworzenia aplikacji desktopowych, przez gry, aż po systemy operacyjne. Standardy takie jak ISO C określają wytyczne dla programowania w języku C, co dodatkowo podkreśla znaczenie tego paradygmatu w branży programistycznej. Zrozumienie programowania imperatywnego stanowi fundament dla dalszej nauki bardziej zaawansowanych technik i paradygmatów programowania.

Pytanie 40

W skrypcie JavaScript, aby uzyskać dane od użytkownika, można wykorzystać okno wyświetlane przez funkcję

A. confirm()
B. prompt()
C. alert()
D. documet.write()
Funkcja prompt() w JavaScript jest specjalnie zaprojektowana do pobierania danych od użytkownika i wyświetlania okna dialogowego, które pozwala wprowadzić tekst. W przeciwieństwie do alert(), który jedynie wyświetla informacje, prompt() umożliwia użytkownikowi wprowadzenie danych, które mogą być później wykorzystane w kodzie. Na przykład, można zainicjować zmienną i przypisać do niej wartość wprowadzaną przez użytkownika: var imie = prompt('Podaj swoje imię:');. Tego rodzaju interakcje są niezwykle ważne w dynamicznych aplikacjach internetowych, gdzie potrzeba elastyczności i użytkownika jako aktywnego uczestnika w procesie. Dobrą praktyką jest zapewnienie, że zapytania są jasne i zrozumiałe, a także, że walidujemy dane wejściowe, aby uniknąć błędów. Warto również mieć na uwadze, że z uwagi na estetykę i funkcjonalność, w nowoczesnym podejściu do interakcji użytkownika, lepszym rozwiązaniem mogą być formularze HTML z JavaScript, które oferują większą kontrolę nad danymi i lepsze możliwości stylizacji."