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: 13 kwietnia 2026 17:07
  • Data zakończenia: 13 kwietnia 2026 17:28

Egzamin zdany!

Wynik: 26/40 punktów (65,0%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Liczba 0x142, przedstawiona w skrypcie JavaScript, jest zapisywana w postaci

A. dwójkowej
B. szesnastkowej
C. dziesiętnej
D. ósemkowej
Odpowiedzi sugerujące, że liczba 0x142 jest zapisana w systemie dziesiętnym, dwójkowym lub ósemkowym, są błędne z kilku powodów. System dziesiętny, bazujący na podstawie 10, używa cyfr od 0 do 9. Gdyby 0x142 byłoby w systemie dziesiętnym, nie miałby prefiksu '0x', a jego wartość wynosiłaby 322, co jest całkowicie inną reprezentacją. Z kolei system dwójkowy, znany również jako binarny, używa tylko dwóch cyfr: 0 i 1. Liczba 0x142 w systemie binarnym wynosi 101000010, co jest zupełnie inną formą niż przedstawienie szesnastkowe. Na koniec, system ósemkowy, mający podstawę 8, obejmuje cyfry od 0 do 7. Aby wyrazić 0x142 w systemie ósemkowym, należałoby najpierw przekonwertować ją na dziesiętną, co dałoby 322, a następnie na ósemkowy, co dawałoby 502. Tak więc żadna z tych odpowiedzi nie jest poprawna, ponieważ 0x142 jest jednoznacznie zapisane w systemie szesnastkowym.

Pytanie 2

Fragment kodu w języku PHP przedstawia się następująco (patrz ramka): W wyniku wykonania pętli zostaną wyświetlone liczby

Ilustracja do pytania
A. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
B. 0, 4, 8, 12, 16, 20
C. 0, 4, 8, 12, 16
D. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Pętla for w PHP to naprawdę podstawowe narzędzie, które pozwala nam w łatwy sposób powtarzać różne operacje na danych. W tej pętli zaczynamy od $i równego 0, a kończymy, kiedy $i osiągnie 20. W każdej iteracji dodajemy 4 do $i, więc wypisujemy liczby od 0 do 20, co 4 jednostki. Super sprawa, jeśli chcemy równomiernie przetwarzać dane. Przykładowo, gdy mamy jakieś tabele z danymi albo potrzebujemy wygenerować wykresy w regularnych odstępach, to taka pętla się przydaje. Stosowanie pętli to też dobra praktyka programistyczna, bo automatyzuje nam powtarzalne zadania, co czyni kod bardziej przejrzystym. Jak zrozumiesz, jak działa ta pętla, to dużo łatwiej będzie ci tworzyć różne algorytmy, co jest super ważne w informatyce.

Pytanie 3

W PHP funkcja trim służy do

A. porównywania dwóch tekstów i wyświetlania ich części wspólnej
B. podawania długości tekstu
C. redukcji tekstu o liczbę znaków określoną w parametrze
D. usuwania białych znaków lub innych znaków wymienionych w parametrze z obu końców tekstu
Funkcja trim w języku PHP jest używana do usuwania białych znaków z początku i końca ciągu znaków. Oprócz znaków białych, użytkownik może również określić inne znaki, które mają być usunięte, poprzez podanie ich jako drugi parametr funkcji. Jest to szczególnie przydatne w sytuacjach, gdy dane wejściowe pochodzą od użytkowników i mogą zawierać niechciane spacje lub znaki interpunkcyjne na początku lub końcu tekstu. Przykładowo, jeśli mamy napis ' Hello World! ', użycie funkcji trim w formie trim(' Hello World! ') zwróci 'Hello World!'. Funkcja ta jest zgodna z dokumentacją PHP i jej działanie można znaleźć w standardowych materiałach dotyczących obsługi stringów. Usuwanie białych znaków jest kluczowym krokiem w procesie sanitizacji danych i przygotowywaniu ich do dalszej obróbki, na przykład w bazach danych lub przy zestawianiu danych z różnych źródeł. Warto również wspomnieć, że istnieją pokrewne funkcje, takie jak ltrim i rtrim, które odpowiednio usuwają znaki tylko z lewej lub prawej strony łańcucha.

Pytanie 4

Ile razy zostanie wykonana pętla w zamieszczonym skrypcie PHP?

$a = $x = 0;
do{
    $a++;
    $x = $x + $a;
}while($x != 21);
A. 0
B. 7
C. 6
D. 5
Pętla do-while w PHP działa tak, że jej ciało jest zawsze wykonywane przynajmniej raz, a warunek sprawdzany jest na końcu. W przedstawionym skrypcie zmienne $a i $x są inicjalizowane wartością 0. Wewnątrz pętli zmienna $a jest inkrementowana o 1 w każdej iteracji, a $x zwiększane jest o wartość $a. Pętla powtarza się, dopóki zmienna $x nie osiągnie wartości 21. Aby zrozumieć, ile razy pętla się wykona, należy prześledzić zmiany wartości zmiennych. W pierwszej iteracji $a staje się 1 i $x wynosi 1. W kolejnych iteracjach $a przyjmuje wartości 2 3 4 5 6 a $x odpowiednio 3 6 10 15 21. Gdy $x osiąga 21 pętla kończy działanie. Oznacza to że pętla wykonuje się dokładnie 6 razy aż $x osiągnie wartość 21 co zgodnie z treścią pytania jest poprawną odpowiedzią. Takie podejście pozwala na efektywne kontrolowanie liczby iteracji przy dynamicznie zmieniających się warunkach a zasady działania pętli do-while są kluczowe w sytuacjach gdy wymagane jest przynajmniej jedno wykonanie bloku kodu co odróżnia ją od pętli while.

Pytanie 5

Analizując zamieszczony kod w języku HTML, można zauważyć, że w przeglądarce

Ilustracja do pytania
A. dolny margines zostanie przypisany do bloku B
B. blok A zostanie przesunięty w lewo o 20 px
C. bloki A oraz B będą się na siebie nakładać
D. blok B będzie oddalony od bloku A o 20 px
Odpowiedź jest prawidłowa ponieważ styl CSS margin-top: 20px zastosowany do bloku B powoduje dodanie górnego marginesu tego bloku co skutkuje odsunięciem go od bloku A o 20 pikseli. W praktyce oznacza to że w przeglądarce blok B będzie zlokalizowany 20 pikseli poniżej bloku A. Jest to standardowe zachowanie przeglądarek interpretujących HTML i CSS zgodnie z zasadami kaskadowych arkuszy stylów. Takie podejście jest zgodne z dobrymi praktykami projektowania stron internetowych gdyż pozwala na precyzyjne kontrolowanie układu elementów na stronie. Użycie jednostki pikseli jest powszechne w określaniu marginesów ze względu na przewidywalność i precyzję tej jednostki. Dzięki temu projektanci mogą osiągnąć estetyczną i funkcjonalną hierarchię wizualną co jest kluczowe w tworzeniu przejrzystych i użytecznych interfejsów użytkownika. Warto również zwrócić uwagę na fakt że marginesy są narzędziem nie tylko estetycznym ale i semantycznym zwiększając czytelność oraz dostępność treści na stronie

Pytanie 6

Deklaracja z właściwością background-attachment: scroll sprawia, że

A. tło strony zostanie zamocowane, a tekst będzie się poruszał
B. grafika tła będzie się powtarzać (kafelki)
C. tło strony będzie przesuwane razem z zawartością tekstową
D. grafika tła będzie widoczna w prawym górnym rogu strony
Właściwość CSS 'background-attachment: scroll' oznacza, że tło elementu będzie przewijane w równym tempie z treścią na stronie. Kiedy użytkownik przegląda stronę i przewija ją w dół lub w górę, tło przesuwa się razem z zawartością, co tworzy wrażenie głębokości i dynamiki. Przykładem zastosowania tej właściwości może być strona internetowa z długim tekstem, gdzie tło, takie jak kolor lub obraz, jest częścią estetyki projektu, ale nie powinno być statyczne. Warto zauważyć, że można to osiągnąć, ustawiając 'background-attachment' na 'scroll', co jest najczęściej stosowanym ustawieniem. W standardach CSS3 'background-attachment' ma cztery możliwe wartości: 'scroll', 'fixed', 'local', oraz 'inherit'. Stosowanie 'scroll' jest najbardziej intuicyjne i wspiera responsywność, ponieważ zmienia się w zależności od interakcji użytkownika z zawartością. To podejście jest zgodne z praktykami projektowania stron internetowych, które kładą nacisk na użytkownika i interaktywność.

Pytanie 7

Jaką wartość w systemie RGB uzyskamy dla koloru zapisanego w kodzie heksadecymalnym: #1510FE?

A. rgb(21,16,255)
B. rgb(21,16,254)
C. rgb(21,16,FE)
D. rgb(15,10,FE)
Odpowiedź rgb(21,16,254) jest poprawna, ponieważ kolor zapisany w systemie heksadecymalnym #1510FE można rozłożyć na składowe RGB. W kodzie heksadecymalnym każdy z trzech kolorów (czerwony, zielony, niebieski) jest reprezentowany przez dwie cyfry. W przypadku #1510FE, pierwsze dwie cyfry (15) odnoszą się do wartości czerwonej, drugie dwie (10) do wartości zielonej, a ostatnie dwie (FE) do wartości niebieskiej. Te wartości musimy przeliczyć na system dziesiętny: czerwony to 21 (15 w systemie szesnastkowym to 21 w dziesiętnym), zielony to 16 (10 w szesnastkowym to 16 w dziesiętnym), a niebieski to 254 (FE w szesnastkowym to 254 w dziesiętnym). Tak więc końcowy wynik to rgb(21,16,254). W praktyce, znajomość konwersji kolorów jest kluczowa w projektowaniu graficznym, stron internetowych oraz aplikacji, gdzie precyzyjne odwzorowanie kolorów jest niezbędne dla uzyskania poprawnej estetyki i spójności wizualnej. Warto zaznaczyć, że standardy takie jak sRGB są powszechnie stosowane do definiowania kolorów w cyfrowych mediach, co zapewnia zgodność i przewidywalność w różnych urządzeniach wyświetlających te kolory.

Pytanie 8

Która z zasad walidacji strony internetowej jest nieprawidłowa?

A. Jeżeli w poleceniu występuje kilka atrybutów, ich kolejność powinna być uporządkowana alfabetycznie np. ```<img alt="..." src="/.."/>```
B. Tagi, poza samozamykającymi się, funkcjonują do momentu ich wyłączenia znakiem "/", np. ```<p> ..</p>```
C. W tagach nie jest brana pod uwagę różnica między dużymi a małymi literami, np. ```<p>``` i ```<P>``` to ten sam tag.
D. Wyłączanie tagów musi następować w odwrotnej sekwencji do ich włączenia, np. ```<p> ... <big>...</big></p>```
Koncepcje zawarte w niepoprawnych odpowiedziach są oparte na błędnym zrozumieniu zasad działania znaczników HTML. W kontekście wyłączania znaczników, ważne jest, aby pamiętać, że znacznik startowy powinien być zawsze zamknięty odpowiednim znacznikiem końcowym, co oznacza, że struktura dokumentu musi być prawidłowo zagnieżdżona. Zasada dotycząca wyłączania znaczników w odwrotnej kolejności jest nieprawidłowa, ponieważ znaczniki nie są stosowane w taki sposób, a ich zamykanie powinno być zgodne z ich zagnieżdżeniem. Rozumienie tej zasady jest kluczowe dla tworzenia poprawnej struktury dokumentu HTML. Warto również zauważyć, że HTML nie rozróżnia wielkich i małych liter w znacznikach, co jest istotnym uproszczeniem, ale nie oznacza, że można je mieszać w sposób dowolny. Zastosowanie spójnych konwencji nazewnictwa, takich jak używanie małych liter, jest wskazane dla zachowania czytelności kodu. Rozumienie tych zasad jest kluczowe dla efektywnego projektowania stron internetowych oraz dla utrzymania wysokiej jakości kodu. W przypadku, gdy znacznik nie jest poprawnie zamknięty, może to prowadzić do błędów w renderowaniu strony oraz problemów z jej dostępnością. Dlatego kluczowe jest stosowanie się do zasad poprawności kodu i jego semantyki.

Pytanie 9

Jakie polecenie pozwala na zwiększenie wartości o jeden w polu RokStudiów w tabeli Studenci dla tych studentów, którzy są na roku 1÷4?

A. UPDATE RokStudiow SET RokStudiow++ WHERE RokStudiow < 5
B. UPDATE Studenci SET RokStudiow WHERE RokStudiow < 5
C. UPDATE Studenci, RokStudiow+1 WHERE RokStudiow < 5
D. UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5
Odpowiedź 'UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5;' jest poprawna, ponieważ stosuje właściwą składnię SQL do aktualizacji wartości w kolumnie RokStudiow w tabeli Studenci. Użycie słowa kluczowego 'SET' pozwala na przypisanie nowej wartości do atrybutu, a 'WHERE RokStudiow < 5' zapewnia, że tylko studenci z rokiem studiów od 1 do 4 zostaną zaktualizowani. Przykładowo, jeśli mamy studentów na roku 1, 2, 3 oraz 4, po wykonaniu tego polecenia ich rok studiów wzrośnie o 1, co jest zgodne z praktyką zwiększania roku studiów po zakończeniu danego etapu edukacji. W kontekście dobrych praktyk w programowaniu, warto również dbać o to, aby zapytania były jasne i zrozumiałe, a operacje aktualizacji mogły być łatwo śledzone i analizowane w przyszłości. Odpowiednie użycie komentarzy oraz testowanie zapytań w warunkach niskiego obciążenia bazy danych przed ich wdrożeniem w środowisku produkcyjnym to kluczowe aspekty zapewnienia bezpieczeństwa i integralności danych.

Pytanie 10

Jakiego protokołu należy użyć do przesyłania plików witryny internetowej na serwer hostingowy?

A. IRC
B. SMTP
C. HTTP
D. FTP
Protokół FTP (File Transfer Protocol) jest standardowym rozwiązaniem służącym do transferu plików pomiędzy komputerami w sieci. Dzięki FTP użytkownicy mogą przesyłać pliki na serwer hostingowy, co jest kluczowym krokiem w procesie publikacji stron internetowych. Protokoły FTP działają w oparciu o model klient-serwer, gdzie klient łączy się z serwerem, aby przesłać lub pobrać dane. Przykładem praktycznego wykorzystania FTP jest wgrywanie plików HTML, CSS, obrazków oraz innych zasobów potrzebnych do działania strony. Warto również zwrócić uwagę na to, że FTP może działać w trybie pasywnym lub aktywnym, co jest istotne w kontekście zapory sieciowej i konfiguracji sieci. Istnieją również inne protokoły, takie jak SFTP (Secure File Transfer Protocol), które oferują dodatkowe zabezpieczenia, co czyni je preferowanym wyborem w sytuacjach, gdy bezpieczeństwo danych jest priorytetem. W praktyce, FTP jest szeroko stosowany w branży web developmentu, a znajomość tego protokołu jest niezbędna dla każdego, kto zajmuje się tworzeniem i zarządzaniem stronami internetowymi.

Pytanie 11

Jakie polecenie SQL umożliwia usunięcie z tabeli artykuly wierszy, w których pole tresc zawiera słowo „sto” w dowolnej lokalizacji?

A. DELETE FROM artykuly WHERE tresc = "%sto%";
B. DELETE * FROM artykuly WHERE tresc = "%sto%";
C. DELETE * FROM artykuly WHERE tresc LIKE "%sto%";
D. DELETE FROM artykuly WHERE tresc LIKE "%sto%";
Odpowiedź "DELETE FROM artykuly WHERE tresc LIKE '%sto%';" jest całkiem na miejscu. Użycie polecenia DELETE z klauzulą WHERE oraz operatorem LIKE to standardowe podejście w SQL do usuwania danych w oparciu o jakiś wzorzec. Operator LIKE świetnie sprawdza się w wyszukiwaniu tekstów, a te znaki procenta (%) przed i po słowie 'sto' mówią SQL-owi, żeby szukał tego słowa w różnych miejscach w kolumnie 'tresc'. Na przykład, jeśli mamy takie przykłady jak 'Moje stoisko', 'sto lat' czy 'stoły', to wszystkie te wiersze znikną po wykonaniu tego zapytania. Takie działanie jest zgodne z dobrą praktyką, bo pozwala na elastyczne wyszukiwanie i zmniejsza ryzyko błędów, które mogłyby się zdarzyć przy prostym porównywaniu. Zawsze jednak warto zrobić kopię zapasową danych przed takim krokiem, żeby nie stracić czegoś ważnego.

Pytanie 12

Podczas walidacji witryn internetowych nie analizuje się

A. działania hiperlinków
B. zgodności z różnymi przeglądarkami
C. źródła pochodzenia narzędzi edycyjnych
D. błędów w składni kodu
W procesie walidacji stron internetowych, źródło pochodzenia narzędzi edytorskich nie jest przedmiotem analizy, ponieważ walidacja koncentruje się na technicznych aspektach kodu HTML, CSS i JavaScript, które wpływają na funkcjonalność oraz dostępność strony. Główne obszary walidacji obejmują zgodność z przeglądarkami, co oznacza, że strona powinna działać poprawnie w różnych środowiskach przeglądarkowych. Działania linków są również monitorowane, aby zapewnić, że wszystkie odnośniki kierują do właściwych lokalizacji oraz nie prowadzą do błędów 404. Błędy składni kodu są kluczowe, ponieważ mogą znacząco wpłynąć na sposób, w jaki strona jest renderowana przez przeglądarki. Przykładowo, walidatory HTML, takie jak W3C Validator, pomagają identyfikować błędy i ostrzegają o problemach, które mogą wpłynąć na dostępność i SEO strony. Dobre praktyki wymuszają, aby każda strona internetowa była nie tylko estetyczna, ale przede wszystkim funkcjonalna i zgodna z obowiązującymi standardami, co przekłada się na lepsze doświadczenia użytkowników.

Pytanie 13

W jakim przypadku w JavaScript warunek jest spełniony, jeśli zmienna x przyjmuje wartość

if ((!isNaN(x)) && (x > 0))
A. nie-liczbową wartość
B. wszelką całkowitą wartość liczbową
C. pusty ciąg znaków
D. wszelką dodatnią wartość liczbową
Warunek zapisany w JavaScript if (!isNaN(x) && x>0) jest prawdziwy, gdy zmienna x przechowuje dowolną dodatnią wartość liczbową Takie podejście jest zgodne z dobrymi praktykami programistycznymi ponieważ umożliwia skuteczne sprawdzenie czy wartość jest zarówno liczbowa jak i dodatnia Funkcja isNaN(x) zwraca true gdy x nie jest liczbą co powoduje że !isNaN(x) zwraca true tylko wtedy gdy x jest liczbą Następnie dodatkowy warunek x>0 sprawdza czy liczba jest większa od zera co oznacza że jest dodatnia Takie warunki są często używane w aplikacjach webowych do walidacji danych użytkownika Na przykład podczas wprowadzania kwoty transakcji system może używać podobnego warunku aby upewnić się że użytkownik nie wprowadza ujemnych wartości co mogłoby prowadzić do błędów logicznych w aplikacji Używanie takich warunków wspiera bezpieczeństwo i poprawność kodu co jest kluczowe w profesjonalnym środowisku programistycznym Dodatkowo takie podejście jest zgodne z zasadą przewidywalności działania kodu co jest istotne dla zapewnienia jego łatwej utrzymywalności i czytelności dla innych programistów

Pytanie 14

W zaprezentowanym fragmencie algorytmu wykorzystano

Ilustracja do pytania
A. trzy bloki operacyjne (procesy)
B. dwie pętle
C. jedną pętlę
D. jeden blok decyzyjny
Błędy w odpowiedziach mogą wynikać z mylnego odbioru diagramu. Posiadanie bloku decyzyjnego nie zawsze znaczy, że mamy pętlę, bo pętle potrzebują zarówno warunków, jak i mechanizmu powtarzania. Wydaje się, że są różne bloki, ale w rzeczywistości mamy tu dwa bloki decyzyjne i jeden operacyjny, co nie zgadza się z odpowiedzią. Na diagramie nie da się znaleźć dwóch pętli, co może sugerować, że nie do końca rozumiesz strukturę algorytmu. Często w takich analizach ludzie mylą bloki decyzyjne z pętlami, co jest błędne, bo pętle są bardziej złożonymi strukturami. Jak się programuje, ważne jest, żeby dobrze rozróżniać te elementy, bo to wpływa na jakość algorytmu. Mnie osobiście pomogło to w pisaniu lepszego kodu, dlatego warto poświęcić chwilę na zrozumienie różnic między tymi pojęciami.

Pytanie 15

W poniższym kodzie CSS czcionka zmieni kolor na żółty

a[target="_blank"]
{
  color: yellow;
}
A. każdego linku
B. odnośników, które otwierają się w nowej karcie
C. odnośników, które otwierają się w tej samej karcie
D. tekstu akapitu
Prawidłowa odpowiedź wskazuje na zastosowanie selektora a[target="_blank"] w języku CSS. Ten selektor odnosi się do wszystkich odnośników HTML, które otwierają się w nowej karcie przeglądarki dzięki użyciu atrybutu target z wartością "_blank". Stylizacja tych odnośników na kolor żółty jest możliwa przez przypisanie właściwości color z odpowiednią wartością. Jest to praktyczne podejście, które pozwala na wizualne wyróżnienie linków otwierających się w osobnych zakładkach. Takie podejście jest zgodne z dobrymi praktykami projektowania stron internetowych, gdzie wskazane jest, aby użytkownicy mieli wyraźne sygnały o nietypowych działaniach linków. W kontekście dostępności webowej, takie stylizowanie wspiera użytkowników w szybszym orientowaniu się w sposobie działania poszczególnych elementów interfejsu. Separacja stylu i treści zgodnie z zasadami CSS umożliwia bardziej elastyczne zarządzanie wyglądem strony i ułatwia utrzymanie spójności wizualnej na całej witrynie. Przykład ten ilustruje, jak CSS może wpływać na interakcję użytkownika z elementami strony, co jest kluczowe w procesie tworzenia przyjaznych i intuicyjnych interfejsów użytkownika.

Pytanie 16

Aby film wyglądał płynnie, liczba klatek (które nie nakładają się na siebie) na sekundę powinna wynosić przynajmniej w przedziale

A. 31-36 fps
B. 20-23 fps
C. 16-19 fps
D. 24-30 fps
Odpowiedź 24-30 fps jest poprawna, ponieważ standardowy zakres klatek na sekundę dla filmów wynosi właśnie 24-30 fps. W praktyce, 24 fps jest uznawane za minimum dla filmów kinowych, co pozwala uzyskać wrażenie ruchu, które ludzie uznają za płynne. Przykładowo, filmy kręcone w tej klatkażu, takie jak klasyczne produkcje Hollywood, często korzystają z techniki zwanej 'motion blur', która dodatkowo poprawia wrażenie płynności. W przypadku telewizji, większa liczba klatek może być stosowana, co pozwala na lepszą jakość obrazu podczas szybkich ruchów, jednak 30 fps to standard dla wielu programów telewizyjnych. Ważne jest również zrozumienie, że zbyt niska liczba klatek, jak na przykład 16-19 fps, może prowadzić do efektu stroboskopowego, co jest nieprzyjemne dla widza. Normy branżowe, takie jak SMPTE (Society of Motion Picture and Television Engineers), potwierdzają, że liczba klatek między 24 a 30 fps jest odpowiednia do uzyskania zamierzonego efektu wizualnego w filmie.

Pytanie 17

Zadaniem poniższego kodu napisanego w języku C++ jest wypisanie dla podanych dowolnych liczb całkowitych różnych od zera:

int main()
{
    int liczba;
    cin >> liczba;

    while (liczba != 0)
    {
        if ((liczba % 2) == 0)
            cout << liczba << endl;

        cin >> liczba;
    }
    return 0;
}
A. jedynie liczby parzyste
B. wszystkie liczby
C. liczby pierwsze
D. wyłącznie liczby nieparzyste
Prezentowany kod źródłowy w języku C++ jest zaprogramowany do wypisywania tylko liczb parzystych spośród wprowadzanych przez użytkownika liczb całkowitych różnych od zera. Kluczowym elementem jest tutaj operacja modulo (%), która oblicza resztę z dzielenia liczby przez 2. Dla liczb parzystych wynik tej operacji wynosi 0, co jest sprawdzane w warunku if. Kod używa pętli while, która pozwala na wprowadzanie i sprawdzanie wielu liczb w sposób iteracyjny, aż do momentu wprowadzenia zera, które kończy działanie programu. Zrozumienie tej struktury jest kluczowe w programowaniu i pozwala na efektywne filtrowanie danych. W praktyce taki mechanizm mógłby być użyty w systemach analizujących dane wejściowe pod kątem ich właściwości liczbowych. Podstawowe operacje na liczbach, takie jak modulo, są szeroko stosowane w algorytmach i strukturach danych, gdzie ważne jest klasyfikowanie czy filtrowanie elementów według zadanych kryteriów. Warto zwrócić uwagę na efektywność tego podejścia, które minimalizuje zbędne operacje poprzez bezpośrednie sprawdzanie warunku wewnątrz pętli.

Pytanie 18

Czym jest DBMS?

A. System zarządzania bazą danych
B. Strukturalny język zapytań do bazy danych
C. Obiektowy język programowania służący do tworzenia stron www
D. Kaskadowy arkusz stylów do opisu wyglądu witryny www
DBMS, czyli System Zarządzania Bazą Danych, to oprogramowanie, które umożliwia tworzenie, zarządzanie i manipulowanie danymi w bazach danych. Pozwala na efektywne przechowywanie, organizowanie i odzyskiwanie informacji, co jest kluczowe w każdej aplikacji wymagającej przetwarzania danych. Przykłady popularnych systemów DBMS to MySQL, PostgreSQL oraz Oracle Database. DBMS zapewnia nie tylko bezpieczeństwo danych, lecz także umożliwia współdzielenie informacji między użytkownikami. Stosuje mechanizmy kontroli dostępu, co chroni dane przed nieautoryzowanym dostępem. Dobre praktyki w zarządzaniu bazą danych obejmują normalizację danych, co zapobiega redundancji i poprawia integralność danych. W przypadku rosnących zbiorów danych, DBMS wspiera także skalowalność, co jest niezbędne w aplikacjach internetowych, gdzie liczba użytkowników może przeszło wzrosnąć. Ponadto, DBMS wykorzystuje język SQL (Structured Query Language) do wykonywania zapytań, co jest standardem branżowym dla interakcji z bazami danych.

Pytanie 19

Jakie mechanizmy przydzielania zabezpieczeń, umożliwiające przeprowadzanie operacji na bazie danych, są powiązane z zagadnieniami dotyczącymi zarządzania kontami, użytkownikami oraz uprawnieniami?

A. Z atrybutami
B. Z regułami
C. Z przywilejami systemowymi
D. Z przywilejami obiektowymi
Uprawnienia związane z atrybutami i regułami mogą mylnie wydawać się odpowiednie w kontekście zarządzania dostępem, ale ich zrozumienie jest kluczowe, aby uniknąć błędnych wniosków. Atrybuty w kontekście systemów zarządzania bazami danych są często używane do definiowania cech obiektów, takich jak kolumny w tabelach, ale nie są bezpośrednio związane z mechanizmami nadawania uprawnień. Reguły, choć mogą być wykorzystywane do definiowania polityk bezpieczeństwa, nie są tym samym co przywileje systemowe. Przywileje obiektowe, z kolei, dotyczą dostępu do konkretnych obiektów w bazie danych, takich jak tabele czy widoki, a nie ogólnych uprawnień administracyjnych. Często występuje nieporozumienie, że wszystkie te mechanizmy są równoważne, co prowadzi do niewłaściwego stosowania uprawnień w systemach. Kluczowe jest zrozumienie, że przywileje systemowe są tymi, które kontrolują dostęp do całej struktury bazy danych, a nie tylko do jej poszczególnych elementów, co stanowi podstawę dla skutecznego zarządzania bezpieczeństwem w środowiskach IT. W praktyce niepoprawne przypisywanie uprawnień może prowadzić do nieautoryzowanego dostępu do danych, co jest sprzeczne z najlepszymi praktykami ochrony informacji.

Pytanie 20

Kod języka CSS można umieścić wewnątrz kodu HTML, posługując się znacznikiem

A. <body>
B. <meta>
C. <style>
D. <head>
Element <style> umożliwia osadzenie stylów CSS bezpośrednio w dokumencie HTML. Jest on umieszczany w sekcji <head> strony, co pozwala na łatwe zarządzanie wyglądem strony bez potrzeby korzystania z zewnętrznych plików CSS. Przykładowo, aby ustawić kolor tła i czcionki dla całej strony, można użyć następującego kodu:<style>body { background-color: lightblue; color: darkblue; }</style>. W ten sposób można szybko zmieniać styl elementów, co jest szczególnie przydatne w prototypowaniu i tworzeniu małych projektów, gdzie nie jest konieczne segregowanie stylów w osobnych plikach. Z punktu widzenia standardów W3C, umieszczanie CSS w sekcji <style> jest zgodne z dobrymi praktykami, zwłaszcza w kontekście wydajności ładowania strony. Należy jednak pamiętać, że dla większych projektów zaleca się korzystanie z zewnętrznych plików CSS, co umożliwia lepszą organizację kodu oraz ponowne użycie stylów w różnych stronach.

Pytanie 21

W języku JavaScript funkcja document.getElementById(id) służy do

A. uzyskania odniesienia do pierwszego elementu HTML o wskazanym id
B. sprawdzania poprawności formularza z identyfikatorem id
C. pobierania danych z pola formularza i przypisania ich do zmiennej id
D. umieszczenia tekstu 'id' na stronie WWW
Metoda document.getElementById(id) jest kluczowym elementem API DOM (Document Object Model) w JavaScript, służącym do manipulacji elementami HTML na stronie internetowej. Jej głównym zadaniem jest zwrócenie odniesienia do pierwszego elementu, który ma określony identyfikator (id). Identyfikatory w HTML muszą być unikalne w obrębie dokumentu, co pozwala na efektywne i bezbłędne znajdowanie konkretnego elementu. Na przykład, jeśli mamy element o id 'header', możemy go uzyskać za pomocą document.getElementById('header'). To odniesienie pozwala nam na dalsze manipulacje tym elementem, takie jak zmiana jego zawartości, stylów CSS czy atrybutów. Przykładowe zastosowanie polega na tym, iż możemy zmienić tekst nagłówka na 'Witaj w moim serwisie' poprzez: document.getElementById('header').innerText = 'Witaj w moim serwisie'. Tego typu operacje są fundamentem interaktywnych aplikacji webowych i są zgodne z dobrymi praktykami w zakresie programowania JavaScript, które promują jasny i zrozumiały dostęp do struktury dokumentu.

Pytanie 22

Jaki rezultat zostanie wyświetlony po wykonaniu przedstawionego kodu HTML?

<ol>
    <li>punkt</li>
    <li>punkt
        <ul>
            <li>punkt</li>
            <li>punkt</li>
        </ul>
    </li>
    <li>punkt</li>
</ol>
<ol type="A" start="4">
    <li>punkt</li>
</ol>

1. punkt

2. punkt

  • punkt
  • punkt

3. punkt

4. punkt

A.

1. punkt

2. punkt

  • punkt
  • punkt

3. punkt

4. punkt

B.

1. punkt

2. punkt

  • punkt
  • punkt

3. punkt

D. punkt

C.

1. punkt

2. punkt

  • punkt
  • punkt

3. punkt

D. punkt

D.

A. D.
B. C.
C. A.
D. B.
Niestety, twoja odpowiedź nie była poprawna. Może wynikać to z braku zrozumienia struktury i semantyki kodu HTML, szczególnie w kontekście list uporządkowanych (``) i nieuporządkowanych (``). Kod HTML w pytaniu składa się z dwóch uporządkowanych list, z których pierwsza zawiera trzy elementy. Drugi element pierwszej listy zawiera zagnieżdżoną nieuporządkowaną listę z dwoma elementami. Warto zaznaczyć, że elementy listy nieuporządkowanej są zazwyczaj wyświetlane z kropkami. Druga lista uporządkowana zaczyna numerację od litery 'D', co jest zgodne z poprawną odpowiedzią. Typowym błędem jest niezauważenie zagnieżdżonych list lub niepoprawne zrozumienie funkcji atrybutu start w liście uporządkowanej. W praktyce, zrozumienie struktury i semantyki tagów HTML jest kluczowe dla tworzenia efektywnych i użytecznych stron internetowych. Proponuję, abyś ponownie przeanalizował kod HTML, skupiając się na strukturze list i zrozumieniu atrybutów stosowanych w tagach list.

Pytanie 23

Jeśli zmienna $x przechowuje dowolną dodatnią liczbę naturalną, przedstawiony kod źródłowy PHP ma za zadanie wyświetlić:

$licznik = 0;
while ($licznik != $x)
{
    echo $licznik;
    $licznik++;
}
A. kolejne liczby od 0 do x-1
B. liczby wczytywane z klawiatury, tak długo aż zostanie wczytana wartość x
C. losowe liczby z przedziału (0, x)
D. kolejne liczby od x do 0
Właściwa odpowiedź sugeruje, że kod PHP wyświetla liczby naturalne od 0 do x-1. Przez inicjalizację zmiennej $licznik wartością 0 i stopniowe zwiększanie jej wartości o 1 w każdej iteracji pętli while, aż do osiągnięcia wartości $x, proces ten jest realizowany. Jest to typowy przykład użycia pętli while w programowaniu, gdzie chcemy wykonać dane działanie wielokrotnie, zazwyczaj do momentu, gdy spełniony jest określony warunek. Zastosowanie takiego podejścia jest powszechne nie tylko w PHP, ale w większości języków programowania. W tym konkretnym przypadku, zastosowanie pętli while pozwala na efektywne wygenerowanie liczby naturalnej w określonym zakresie, co jest często potrzebne w różnych algorytmach czy operacjach matematycznych.

Pytanie 24

W poniższym kodzie PHP wykonano operację na bazie danych. Której funkcji należy użyć, aby pobrać liczbę zmienionych w tabeli wierszy?

$zapytanie="UPDATE kadra SET stanowisko='Programista' WHERE id < 10";
mysqli_query($db, $zapytanie);
A. mysqli_affected_rows()
B. mysqli_use_result()
C. mysqli_num_rows()
D. mysqli_field_count()
Wybrana odpowiedź jest niestety niepoprawna. Może to wynikać z niezrozumienia różnych funkcji dostępnych w języku PHP do manipulowania danymi w bazach danych MySQL. Funkcja mysqli_field_count() zwraca liczbę pól w wyniku zapytania SELECT, a nie liczbę zmienionych wierszy. Z kolei mysqli_use_result() inicjuje pobieranie wyników zapytania wysłanego do serwera MySQL i nie zwraca informacji o liczbie zmienionych wierszy. Natomiast funkcja mysqli_num_rows() zwraca liczbę wierszy w wyniku zapytania SELECT, a nie liczbę zmienionych wierszy. Do tego celu służy jedynie funkcja mysqli_affected_rows(), która zwraca liczbę wierszy zmienionych, dodanych lub usuniętych przez ostatnie wywołanie funkcji mysqli_query() na serwerze MySQL. Pamiętaj więc, że wybór odpowiedniej funkcji zależy od kontekstu i rodzaju operacji wykonanej na bazie danych.

Pytanie 25

Jednym z atrybutów tabeli ksiazki jest pole czyWypozyczona, które może mieć dwie wartości: true lub false. Jaki typ danych będzie najbardziej odpowiedni dla tego pola?

A. VARCHAR(5)
B. DOUBLE
C. BOOLEAN
D. CHAR
Wybór typów DOUBLE, CHAR oraz VARCHAR(5) do reprezentowania stanu wypożyczenia książki jest nieadekwatny i może prowadzić do nieefektywnego zarządzania danymi. Typ DOUBLE, będący typem liczbowym zmiennoprzecinkowym, jest przeznaczony do przechowywania wartości numerycznych z wysoką precyzją, co jest całkowicie zbędne w kontekście binaryjnej reprezentacji stanu wypożyczenia. Użycie typu DOUBLE zwiększa obciążenie pamięci i niepotrzebnie komplikuje zapytania, co negatywnie wpływa na wydajność bazy danych. CHAR oraz VARCHAR(5) są typami tekstowymi, które również są niewłaściwe w tym kontekście. W przypadku CHAR, którego długość jest stała, musielibyśmy zarezerwować miejsce na cały ciąg znaków, co jest nieefektywne. Z kolei VARCHAR(5), choć jest dynamiczny, nadal nie odzwierciedla logicznego charakteru pola 'czyWypozyczona'. Zamiast prostego true/false, wprowadzamy zbędne komplikacje przy operacjach porównawczych i filtracji. Tego rodzaju błędne podejście może wynikać z mylenia reprezentacji danych - niektóre osoby mogą sądzić, że tekstowe lub liczbowe reprezentacje zapewniają większą elastyczność, co jest mylnym przekonaniem. Kluczowe w projektowaniu baz danych jest dobieranie typów danych odpowiednio do ich przeznaczenia, a w przypadku wartości logicznych najlepszym wyborem jest typ BOOLEAN.

Pytanie 26

Jakim kodem określa się kolor czerwony?

A. #EE0000
B. #00EE00
C. #0000EE
D. #00EEEE
Poprawna odpowiedź to #EE0000, co jest kodem szesnastkowym reprezentującym kolor czerwony w systemie RGB. W tym kodzie, wartość R (czerwony) wynosi 238, co oznacza maksymalne nasycenie tego koloru. Wartości G (zielony) i B (niebieski) są ustawione na 0, co oznacza, że brak tych kolorów powoduje, że czerwony staje się dominujący. Kolory w formacie szesnastkowym są powszechnie stosowane w projektowaniu stron internetowych oraz w grafice komputerowej, ponieważ umożliwiają precyzyjne określenie kolorów. Na przykład, w CSS można użyć tego kodu, aby ustawić kolor tła przycisku: 'background-color: #EE0000;'. Taka praktyka pozwala na łatwe i konsekwentne utrzymanie estetyki wizualnej projektu. Warto również zaznaczyć, że w kontekście kolorów, czerwony często symbolizuje energię, pasję i akcję, co czyni go popularnym wyborem w marketingu i reklamie, gdzie przyciągnięcie uwagi jest kluczowe.

Pytanie 27

W formularzu zdefiniowano kontrolki do wpisania imienia i nazwiska. Który atrybut reprezentuje podpowiedź umiejscowioną w polu kontrolki, znikającą w momencie, gdy użytkownik rozpocznie wpisywanie wartości?

<label for="imie">Imię: </label>
<input id="imie" value="Wpisz dane" title="Wpisz imię"><br>
<label for="nazw">Nazwisko: </label>
<input id="nazw" placeholder="Wpisz dane" title="Wpisz nazwisko">
A. value
B. for
C. title
D. placeholder
Wybrałeś niepoprawną odpowiedź. Atrybut 'placeholder' w elemencie input HTML jest używany do wyświetlania podpowiedzi wewnątrz pola formularza, która znika, gdy użytkownik zaczyna wpisywanie danych. Inne atrybuty, takie jak 'title', 'value' i 'for', mają inne zastosowania. Atrybut 'title' służy do dodawania etykietki wyświetlanej po najechaniu kursorem na element, a nie do wyświetlania podpowiedzi w polu formularza. Atrybut 'value' określa domyślną wartość pola formularza, a nie podpowiedź dla użytkownika. Wreszcie, atrybut 'for' jest używany do powiązania etykiety z konkretnym polem input, a nie do wyświetlania podpowiedzi. Pamiętaj, że ważne jest zrozumienie, do czego służy każdy atrybut, aby móc skutecznie tworzyć interaktywne formularze HTML.

Pytanie 28

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

Ilustracja do pytania
A. float tylko dla bloku 2; clear dla bloków: 3, 4
B. float wyłącznie dla bloku 5; clear dla bloku 2
C. float jedynie dla bloków: 3, 4; clear dla bloku 5
D. float tylko dla bloków: 2, 3, 4; clear dla bloku 5
Stosowanie float tylko dla bloku 5 i clear dla bloku 2 nie jest właściwe, ponieważ float jest używane do umieszczania elementów obok siebie, a clear do zapobiegania takiemu zachowaniu. W przypadku float dla bloków 3 i 4 oraz clear dla bloku 5, blok 2 nie miałby żadnej właściwości float, co oznacza, że nie mógłby być poprawnie umieszczony obok bloków 3 i 4, a to prowadziłoby do nieprawidłowego ułożenia bloku 5. Użycie float tylko dla bloku 2 i clear dla bloków 3 i 4 byłoby błędne, ponieważ clear zapobiega przyleganiu elementów do boku, co jest niezgodne z celem floatowania bloków 2, 3 i 4 w jednej linii. Typowym błędem myślowym jest traktowanie clear jako narzędzia do rozmieszczania bloków w poziomie, co jest funkcją float. Zamiast tego, clear blokuje wpływ elementów pływających, co może być użyteczne w końcowych elementach układu jak blok 5, ale nie w środku. Dobre zrozumienie działania float i clear jest kluczowe dla efektywnego tworzenia layoutów stron internetowych, gdzie precyzyjne kontrolowanie pozycji bloków jest istotne dla estetyki i funkcjonalności projektu.

Pytanie 29

Który z przedstawionych obrazów ma zastosowany poniższy styl CSS?

img {
    padding: 5px;
    border: 1px solid grey;
    border-radius: 10px;
}
Ilustracja do pytania
A. B.
B. C.
C. D.
D. A.
Obraz A został sformatowany za pomocą stylu CSS, który określa podstawowe cechy estetyczne elementu graficznego. Pierwszym aspektem jest zastosowanie właściwości padding wynoszącej 5px, co oznacza, że wokół obrazu znajduje się wewnętrzny margines o szerokości 5 pikseli. To zapewnia przestrzeń między obrazem a jego ramką, zwiększając czytelność i estetykę wizualną. Następnie, użyto border o grubości 1px z kolorem solid grey. Ten cienki, szary obrys dodaje subtelny akcent, który pomaga wyróżnić obraz na tle strony. Wartość border-radius wynosi 10px, co dodaje zaokrąglone rogi, nadając nowoczesny wygląd. Takie zaokrąglenie jest często stosowane w nowoczesnym designie, aby nadać strony bardziej przyjazny i estetyczny wygląd. Stylizacja obrazów w ten sposób jest zgodna z zasadami responsywności i dostępności, co jest istotne w projektowaniu interfejsów użytkownika. Stosowanie takich technik pozwala na tworzenie spójnych i estetycznych stron internetowych, które są zgodne z obecnymi standardami UX i UI.

Pytanie 30

Aby stworzyć stronę internetową, która będzie odpowiadać załączonej ilustracji, konieczne jest użycie semantycznych znaczników sekcji w języku HTML5. Jakim znacznikiem należy określić sekcję menu?

A. nav
B. aside
C. div
D. header
Znacznik <nav> w HTML5 jest przeznaczony do definiowania sekcji nawigacyjnych na stronie internetowej, takich jak menu. Użycie semantycznego znacznika <nav> jest zgodne z dobrą praktyką projektowania stron, ponieważ pomaga przeglądarkom i technologiom wspomagającym, takim jak czytniki ekranowe, lepiej zrozumieć strukturę dokumentu. Dzięki zastosowaniu <nav>, silniki wyszukiwarek mogą również bardziej efektywnie indeksować zawartość strony. Przykład użycia <nav> w praktyce: html <nav> <ul> <li><a href='#'>Strona główna</a></li> <li><a href='#'>O nas</a></li> <li><a href='#'>Kontakt</a></li> </ul> </nav>. Ten znacznik powinien być używany wszędzie tam, gdzie mamy do czynienia z głównymi elementami nawigacyjnymi strony. Semantyczne tagi w HTML5, takie jak <nav>, ułatwiają utrzymanie i obsługę kodu oraz wspierają dostępność stron internetowych zgodnie ze standardami WCAG.

Pytanie 31

Gaśnicę oznaczoną literą C stosuje się do gaszenia pożarów

Ilustracja do pytania
A. metali palnych.
B. cieczy i ciał stałych.
C. tłuszczów i olejów kuchennych.
D. gazów palnych.
System klasyfikacji pożarów nie jest intuicyjny, więc sporo osób zgaduje po skojarzeniach, a to niestety w ochronie przeciwpożarowej bywa bardzo ryzykowne. Litery na gaśnicach nie oznaczają rodzaju środka gaśniczego, tylko klasę pożaru, do którego dana gaśnica może być bezpiecznie użyta. W europejskiej normie PN-EN 2 wyróżnia się m.in. klasy A, B, C, D i F. Metale palne, takie jak magnez, sód, potas czy aluminium w postaci wiórów, są zaklasyfikowane jako pożary klasy D. Do nich stosuje się specjalistyczne gaśnice proszkowe z proszkiem typu D, absolutnie nie te oznaczone C. Woda czy zwykły proszek może przy takich pożarach spowodować gwałtowne reakcje, wybuchy, rozprysk metalu. Ciecze i ciała stałe topiące się (np. benzyna, rozpuszczalniki, oleje mineralne) należą do klasy B. Do ich gaszenia używa się gaśnic z oznaczeniem B (często A/B), np. proszkowych, pianowych czy śniegowych. Gaśnica tylko z literą C nie jest projektowana pod tego typu zagrożenia, bo sposób rozchodzenia się płomienia w cieczy jest inny niż w gazie, a środek gaśniczy musi tworzyć szczelną warstwę odcinającą dostęp tlenu na powierzchni. Tłuszcze i oleje kuchenne, szczególnie w gastronomii, to osobna klasa F. Do nich stosuje się specjalne gaśnice płynowe, które wytwarzają warstwę mydlastą (saponifikacja) i obniżają temperaturę oleju. Użycie niewłaściwej gaśnicy, np. zwykłej proszkowej tylko z oznaczeniem C albo typowej pianowej do gorącego oleju, może skończyć się rozpryskiem i gwałtownym rozprzestrzenieniem pożaru. Typowy błąd myślowy polega na tym, że ktoś widzi płomień i bierze pierwszą lepszą gaśnicę, bez patrzenia na piktogramy i litery. A to właśnie litera C oznacza pożary gazów palnych, takich jak propan-butan czy metan, czyli sytuacje, gdzie pali się mieszanina gazu z powietrzem, a nie ciecz, tłuszcz czy metal. Z mojego doświadczenia na szkoleniach PPOŻ najlepiej działa zapamiętanie skrótu: A – drewno i papier, B – benzyna, C – gaz, D – metal, F – frytura. To bardzo upraszcza dobór właściwej gaśnicy w praktyce.

Pytanie 32

Który fragment definicji dwukolumnowej tabeli odpowiada efektowi scalenia komórki 1 i 3, przedstawionemu na ilustracji?

Ilustracja do pytania
A. <td colspan="3">komórka1+3</td>
B. <td rowspan="2">komórka1+3</td>
C. <td rowspan="3">komórka1+3</td>
D. <td colspan="2">komórka1+3</td>
W tym zadaniu kluczowe jest rozróżnienie dwóch atrybutów HTML: colspan i rowspan. Oba służą do scalania komórek w tabeli, ale działają w zupełnie różnych kierunkach. Colspan łączy komórki w poziomie, czyli wzdłuż kolumn, natomiast rowspan scala komórki w pionie, wzdłuż wierszy. Na ilustracji widać, że „komórka1+3” zajmuje całą pierwszą kolumnę w dwóch pierwszych wierszach. To oznacza, że jedna komórka rozciąga się na dwa wiersze, a nie na dwie kolumny. Stąd logicznie wynika, że użycie colspan w ogóle nie pasuje do tej sytuacji. Gdybyśmy wpisali <td colspan="2">, przeglądarka potraktowałaby tę komórkę jako rozciągającą się na dwie kolumny w jednym wierszu. Efekt byłby taki, że komórki z drugiej kolumny zostałyby przesunięte, a układ z obrazka zupełnie by się rozjechał. Z kolei wartość colspan="3" w dwukolumnowej tabeli jest po prostu nielogiczna: próbujemy zająć trzy kolumny, gdy istnieją tylko dwie. W praktyce takie nadmiarowe wartości często kończą się chaotycznym renderowaniem tabeli, bo przeglądarka stara się „naprawić” błędny kod. Zostaje jeszcze rowspan z wartością 3. To też nie pasuje do przykładu, bo nasza scalona komórka obejmuje tylko dwa wiersze, nie trzy. Ustawienie rowspan="3" spowodowałoby, że komórka próbowałaby zająć miejsce również w trzecim wierszu, co zaburzyłoby pozycję „komórki5”. Typowym błędem myślowym jest mylenie liczby kolumn z liczbą wierszy: wiele osób patrzy na liczbę pól, które wizualnie wydają się połączone, i automatycznie wybiera colspan, bo kojarzy im się to z „większą szerokością”. Tymczasem trzeba zawsze zadać sobie jedno proste pytanie: czy komórka ma być szersza (więcej kolumn – colspan), czy wyższa (więcej wierszy – rowspan). W tym zadaniu odpowiedź jest jednoznaczna: chodzi o połączenie komórek pionowo w dół, więc poprawne może być tylko rowspan z wartością równą liczbie wierszy, które faktycznie zajmuje scalona komórka, czyli 2.

Pytanie 33

Którą relację w projekcie bazy danych należy ustalić między tabelami widocznymi na ilustracji zakładając, że każdy klient sklepu internetowego dokona przynajmniej dwóch zamówień?

Ilustracja do pytania
A. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
B. n:n
C. 1:1
D. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
Poprawnie wskazana relacja 1:n (jeden do wielu), gdzie „1” jest po stronie tabeli Klient, a „n” po stronie tabeli Zamówienie, dokładnie odzwierciedla opisany przypadek biznesowy: jeden klient sklepu internetowego może złożyć wiele zamówień, a każde zamówienie należy do jednego, konkretnego klienta. W praktyce projektowania relacyjnych baz danych oznacza to, że w tabeli Zamówienie umieszczamy klucz obcy (np. kolumnę id_klienta), który wskazuje na klucz główny w tabeli Klient (np. id_klienta jako PRIMARY KEY). To jest klasyczny przykład relacji nadrzędny–podrzędny (parent–child). Z mojego doświadczenia w systemach e‑commerce taka struktura jest standardem, bo pozwala łatwo wykonywać typowe kwerendy: wyszukiwanie wszystkich zamówień danego klienta, liczenie wartości zamówień na klienta, analizę historii zakupów. Dodatkowo założenie, że każdy klient dokona co najmniej dwóch zamówień, wpływa na tzw. krotność minimalną po stronie Zamówienia (min 2), ale nie zmienia samego typu relacji – nadal jest to 1:n. W modelu logicznym i fizycznym realizujemy to przez odpowiednie więzy integralności: klucz główny w tabeli Klient i klucz obcy w tabeli Zamówienie z ON DELETE RESTRICT lub CASCADE (w zależności od polityki biznesowej). Taka relacja ułatwia normalizację danych: dane klienta trzymamy w jednym miejscu, unikamy duplikacji w wielu zamówieniach, a w razie zmiany np. adresu e‑mail aktualizujemy tylko jeden rekord. W dobrze zaprojektowanych schematach (np. zgodnych z 3NF) dokładnie tak modeluje się powiązanie Klient–Zamówienie.

Pytanie 34

DELETE FROM Pracownicy ORDER BY rok_urodzenia LIMIT 1;
W wyniku wykonania powyższego zapytania SQL zostanie:
A. usunięty rekord najstarszego pracownika.
B. usunięta kolumna rok_urodzenia z tabeli Pracownicy.
C. usunięta tabela Pracownicy.
D. usunięty rekord z danymi pracownika, który miał wpisaną datę urodzenia.
Poprawnie – to polecenie SQL usuwa dokładnie jeden rekord, i to taki, który odpowiada najstarszemu pracownikowi w tabeli. Kluczowe są tu dwie rzeczy: klauzula ORDER BY oraz LIMIT 1. Najpierw baza danych sortuje wiersze z tabeli Pracownicy po kolumnie rok_urodzenia rosnąco, czyli od najstarszego do najmłodszego (mniejszy rok urodzenia = starsza osoba). Dopiero na tak posortowanym zbiorze polecenie DELETE z LIMIT 1 usuwa pierwszy rekord z góry, czyli właśnie najstarszego pracownika. Warto zauważyć, że taka składnia (DELETE ... ORDER BY ... LIMIT ...) jest charakterystyczna m.in. dla MySQL i MariaDB. W standardowym SQL nie zawsze można użyć ORDER BY bezpośrednio w DELETE, ale w praktyce, w aplikacjach webowych, bardzo często pracuje się właśnie na tych silnikach, więc to rozwiązanie jest jak najbardziej realne. W innych systemach (np. PostgreSQL) podobny efekt robi się przez podzapytanie lub CTE. Moim zdaniem to jest bardzo przydatny wzorzec, gdy chcemy usuwać „najstarsze” lub „najmłodsze” rekordy, np. najstarszy log systemowy, najstarsze zamówienie w statusie roboczym, najstarszy wpis w kolejce zadań. Ważna dobra praktyka: takie operacje powinny opierać się na jednoznacznym kryterium sortowania (np. rok_urodzenia + id), żeby uniknąć sytuacji, że przy tych samych wartościach pola baza wybierze losowo któryś rekord. W projektach produkcyjnych często dodaje się dodatkową kolumnę typu data_utworzenia albo używa klucza głównego w ORDER BY, żeby zachować deterministyczne zachowanie. Zwróć też uwagę, że DELETE operuje na wierszach (rekordach), a nie na strukturze tabeli. Do usuwania kolumn służy ALTER TABLE, a do kasowania całej tabeli – DROP TABLE. To rozróżnienie jest absolutna podstawa pracy z SQL w każdej większej aplikacji.

Pytanie 35

W kodzie HTML 5, w celu walidacji wartości pola <input type="text"> za pomocą wyrażenia regularnego, należy użyć atrybutu

A. value
B. step
C. readonly
D. pattern
W tym pytaniu chodzi o konkretny mechanizm walidacji wbudowany w HTML5, a nie o ogólne właściwości pól formularza. Walidacja za pomocą wyrażeń regularnych jest w standardzie przypisana do jednego, ściśle określonego atrybutu – właśnie pattern. Inne atrybuty z listy pełnią zupełnie inne role i ich mylenie to dość typowy błąd przy nauce formularzy. Atrybut step jest używany do określania „kroku” dla wartości liczbowych lub dat, np. w input type="number" czy type="date". Pozwala zdefiniować, o ile ma się zwiększać lub zmniejszać wartość przy użyciu strzałek lub walidować, czy liczba jest wielokrotnością danego kroku. Przykład: step="0.5" przy liczbie zmiennoprzecinkowej. Nie ma on żadnego związku z wyrażeniami regularnymi ani ze zwykłym tekstem w type="text". value z kolei to po prostu wartość pola – początkowa (domyślna) lub aktualna, odczytywana i modyfikowana przez JavaScript lub wysyłana w formularzu. Ustawienie value nie waliduje danych, tylko je definiuje. Można wprawdzie ręcznie sprawdzać value w JS i dopasowywać je do regexa, ale to już logika skryptu, a nie działanie samego atrybutu w HTML. To pewnie częsty skrót myślowy: „wartość pola” vs. „sprawdzenie wartości pola”, ale przeglądarka sama z siebie nie waliduje na podstawie samego value. readonly natomiast blokuje możliwość edycji pola przez użytkownika, ale nadal wysyła jego wartość z formularzem. To przydatne, gdy chcemy coś pokazać, ale nie pozwolić na zmianę, np. wygenerowany identyfikator. Nie ma tu żadnej analizy treści, żadnego dopasowywania do wzorca – po prostu pole jest nieedytowalne. Czasem ktoś myśli: „skoro nie można tego zmienić, to jakby jest bezpieczne i zwalidowane”, ale to już bardziej kwestia logiki aplikacji, a nie mechanizmu walidacji. Mechanizm HTML5 do regexów jest jeden: pattern. Warto go łączyć z innymi atrybutami walidacyjnymi, jak required, minlength, maxlength, type, ale to właśnie pattern odpowiada za dopasowanie tekstu do określonego wzorca. Wszystko inne z tej listy pełni pomocnicze lub zupełnie inne funkcje i nie zastępuje typowej walidacji opartej o wyrażenia regularne.

Pytanie 36

W relacyjnych bazach danych dane zapisywane są w

A. listach.
B. kolejkach.
C. wektorach.
D. tabelach.
W relacyjnych bazach danych dane są przechowywane w tabelach, bo cały model relacyjny opiera się właśnie na pojęciu tabeli (relacji). Tabela to po prostu uporządkowany zbiór wierszy i kolumn: kolumny opisują strukturę danych (np. id, imię, nazwisko, email), a wiersze przechowują konkretne rekordy, czyli pojedyncze wpisy. Każda kolumna ma określony typ danych, np. INTEGER, VARCHAR, DATE, co pozwala silnikowi bazy danych kontrolować poprawność zapisów i optymalizować zapytania. Tak to działa w typowych systemach jak MySQL, PostgreSQL, SQL Server czy Oracle – wszędzie podstawową jednostką przechowywania danych użytkownika jest tabela. W praktyce, kiedy projektujesz bazę dla sklepu internetowego, tworzysz tabele takie jak users, products, orders, order_items. Potem za pomocą języka SQL wykonujesz na tych tabelach operacje SELECT, INSERT, UPDATE, DELETE. Klucze główne i obce też odnoszą się do tabel – klucz główny jednoznacznie identyfikuje wiersz w tabeli, a klucz obcy wskazuje na wiersz w innej tabeli, tworząc relację między nimi. To właśnie dzięki tabelom i relacjom możesz łączyć dane z wielu miejsc, np. pobrać zamówienia wraz z danymi klienta jednym zapytaniem. Moim zdaniem warto od początku myśleć o tabeli jak o odpowiedniku arkusza w Excelu, tylko z dużo bardziej rygorystycznymi zasadami i możliwością zaawansowanych zapytań. Standard SQL zakłada, że operujemy na relacjach, a w implementacjach relacja = tabela. Dlatego odpowiedź „tabelach” jest zgodna zarówno z teorią modelu relacyjnego, jak i z praktyką codziennej pracy z bazami danych.

Pytanie 37

Delegacja domeny to

A. zmiana nazwy domeny.
B. utrata okresu ważności domeny z możliwością odnowienia jej.
C. umieszczenie informacji o zewnętrznych serwerach, które obsługują stronę.
D. zmiana rejestratora domeny.
W temacie domen bardzo łatwo pomylić kilka pojęć, bo wszystko dzieje się w podobnych panelach administracyjnych i na pierwszy rzut oka wygląda podobnie. Delegacja domeny nie ma jednak nic wspólnego ze zmianą jej nazwy. Zmiana nazwy oznacza po prostu rejestrację zupełnie innej domeny, np. zamiast moja-firma.pl kupujesz moja-firmka.pl. Technicznie to są dwa różne wpisy w rejestrze, a delegacja zawsze dotyczy jednej, konkretnej zarejestrowanej już nazwy i tego, na jakie serwery DNS jest ona „wskazana”. Częsty błąd myślowy to też łączenie delegacji z przeniesieniem domeny do innego rejestratora. Transfer domeny polega na zmianie firmy, która zarządza Twoją usługą domenową (fakturowanie, panel, obsługa klienta). Możesz przenieść domenę do innego rejestratora bez zmiany delegacji, jak i zmienić delegację bez transferu. To są dwie niezależne operacje, choć użytkownicy często je mylą, bo wykonują je w podobnym momencie, np. przy zmianie hostingu. Kolejna rzecz to okres ważności domeny. Utrata ważności oznacza po prostu wygaśnięcie domeny, czasem z okresem ochronnym, w którym można ją jeszcze odnowić. To też nie jest delegacja. To kwestia opłacenia kolejnego okresu rozliczeniowego u rejestratora i statusu domeny w rejestrze (active, expired, redemption itp.). Delegacja natomiast dotyczy warstwy DNS, czyli tego, gdzie świat ma szukać informacji technicznych o domenie. Te błędne skojarzenia biorą się zwykle z tego, że użytkownik widzi w jednym miejscu: datę ważności, przycisk transferu i pola z serwerami DNS, więc wrzuca to wszystko do jednego worka. W rzeczywistości dobra praktyka jest taka, żeby traktować te obszary osobno: osobno zarządzanie własnością i okresem ważności domeny, osobno wybór rejestratora, a osobno właśnie delegację na odpowiednie serwery DNS, które obsługują stronę, pocztę i inne usługi powiązane z nazwą domenową.

Pytanie 38

Którego związku selektorów CSS należy użyć w miejscu znaków zapytania, aby zdefiniowany styl został zastosowany tylko do tekstu „paragrafie”?

<!DOCTYPE html>
<html>
  <head>
    <style>
      ???{letter-spacing: 10px; color: red;}
    </style>
  </head>
  <body>
    <p>Styl <b>tekstu</b> w pierwszym <i>paragrafie</i></p>
  </body>
</html>
A. b i
B. b + i
C. i + b
D. b > i
W tym zadaniu kluczowe jest zrozumienie, jak działają różne rodzaje selektorów powiązanych w CSS i jak odwzorowują one strukturę DOM. W kodzie HTML mamy element <p>, a w nim kolejno <b>tekstu</b> oraz zaraz po nim <i>paragrafie</i>. Oba są rodzeństwem, mają tego samego rodzica i występują w konkretnej kolejności. To, którą odpowiedź się wybierze, zależy od poprawnego odczytania tej relacji. Zapis „b i” to selektor potomka (descendant selector). Oznacza on: wybierz każdy element <i>, który znajduje się gdziekolwiek wewnątrz elementu <b>, na dowolnym poziomie zagnieżdżenia. W naszym przykładzie <i> nie jest wewnątrz <b>, tylko obok niego, więc taki selektor nic nie znajdzie. To jest dość typowe nieporozumienie: wiele osób myli „potomka” z „rodzeństwem”. Potomek to element zagnieżdżony, a nie kolejny po. Z kolei „b > i” to selektor dziecka (child selector). Jest jeszcze bardziej restrykcyjny – wybiera tylko te elementy <i>, które są bezpośrednimi dziećmi <b>. Czyli <i> musi być natychmiast wewnątrz <b>, bez żadnego pośredniego poziomu. W naszym kodzie znowu ten warunek nie jest spełniony, bo <i> nie jest dzieckiem <b>, tylko jego sąsiadem w tym samym paragrafie. To pokazuje, że zarówno selektor potomka, jak i dziecka są tu po prostu złym typem relacji. Odpowiedź „i + b” odwraca właściwy kierunek. Selektor sąsiedniego rodzeństwa z operatorem „+” działa zawsze w przód: po lewej stronie jest element, który występuje jako pierwszy, po prawej ten, który ma zostać wybrany. „i + b” oznacza więc: wybierz <b>, który stoi bezpośrednio po <i>. W naszym HTML jest odwrotnie – najpierw <b>, potem <i>. To częsty błąd myślowy: ktoś kojarzy poprawny typ selektora („+”), ale nie zwraca uwagi na kolejność elementów. Podsumowując, wszystkie błędne odpowiedzi ignorują prawdziwą relację strukturalną między <b> i <i>. Albo zakładają zagnieżdżenie tam, gdzie go nie ma, albo mylą kierunek selektora sąsiedniego. Dobra praktyka przy pracy z CSS to zawsze patrzenie na drzewo DOM jak na strukturę rodzic–dziecko–rodzeństwo i dobieranie selektora dokładnie do tej relacji. Dzięki temu styl trafia w jeden, konkretny element, zamiast działać przypadkowo lub wcale.

Pytanie 39

Która zasada dotyczy programowania strukturalnego? 

A. Można tworzyć obiekty składające się z pól i metod.
B. Dla powtarzających się sekwencji instrukcji należy tworzyć procedury i funkcje.
C. W kodzie programu należy często korzystać z instrukcji skoku goto.
D. Nie można korzystać z instrukcji warunkowych if. 
Prawidłowa odpowiedź dobrze oddaje jedną z kluczowych zasad programowania strukturalnego: jeśli w programie pojawiają się powtarzające się sekwencje instrukcji, należy je wydzielać do osobnych procedur i funkcji. Chodzi o to, żeby kod był podzielony na logiczne bloki, które coś konkretnego robią i można je wielokrotnie wywoływać. Z mojego doświadczenia to właśnie ten nawyk najmocniej odróżnia „klepanie kodu” od świadomego programowania. Programowanie strukturalne opiera się na trzech podstawowych strukturach sterujących: sekwencji, selekcji (if, switch) i iteracji (pętle). Z tych klocków buduje się całe algorytmy, bez potrzeby używania chaotycznych skoków typu goto. Funkcje i procedury są naturalnym rozszerzeniem tej idei: pozwalają zamknąć fragment algorytmu w jednym miejscu, nadać mu nazwę i parametry. W praktyce, gdy masz np. fragment kodu liczący średnią z tablicy, walidujący formularz lub generujący fragment HTML, nie powtarzasz go w dziesięciu miejscach, tylko robisz funkcję, np. validateForm(), calculateAverage(), renderMenu(). To podejście daje kilka konkretnych korzyści: po pierwsze, kod jest krótszy i czytelniejszy, bo zamiast ściany instrukcji widzisz wywołania dobrze nazwanych funkcji. Po drugie, łatwiej się go testuje i debugguje, bo możesz sprawdzać działanie pojedynczych procedur. Po trzecie, zmiany w logice wprowadzasz w jednym miejscu – mniejsze ryzyko, że coś przeoczysz. W praktyce wszystkie współczesne języki używane w web devie (C, PHP, JavaScript, Python i inne) promują takie podejście jako absolutny standard. Moim zdaniem, jeśli ktoś potrafi z każdego większego problemu „wyciągnąć” sensowne funkcje i procedury, to ma już bardzo solidny fundament pod dalszą naukę programowania, także obiektowego.

Pytanie 40

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. td, th { background-color: Pink; }
B. tr:hover { background-color: Pink; }
C. tr { background-color: Pink; }
D. tr:active { background-color: Pink; }
Poprawny selektor to tr:hover { background-color: Pink; }, bo dokładnie opisuje sytuację pokazaną na filmie: efekt pojawia się dopiero po najechaniu kursorem na cały wiersz tabeli. Pseudo-klasa :hover w CSS służy właśnie do definiowania stylów w momencie, gdy użytkownik „najeżdża” myszką na dany element. Jeśli więc chcemy, żeby podświetlał się cały rząd tabeli, logiczne i zgodne z dobrymi praktykami jest przypięcie efektu do znacznika tr, a nie do pojedynczych komórek. W praktyce taki zapis stosuje się bardzo często w interfejsach webowych: w panelach administracyjnych, listach zamówień, tabelach z uczniami, produktami, logami systemowymi itd. Dzięki temu użytkownik łatwiej śledzi, który wiersz właśnie ogląda. To niby detal, ale z punktu widzenia UX robi sporą różnicę. Z mojego doświadczenia to jeden z tych prostych trików CSS, które od razu poprawiają „odczuwalną” jakość strony. Ważne jest też to, że :hover jest częścią standardu CSS (opisane m.in. w specyfikacji CSS Selectors Level 3/4) i działa w praktycznie wszystkich współczesnych przeglądarkach. Nie trzeba do tego żadnego JavaScriptu, żadnych skomplikowanych skryptów – czysty CSS. Dobrą praktyką jest również używanie bardziej stonowanych kolorów niż Pink w prawdziwych projektach, np. #f5f5f5 albo lekki odcień niebieskiego, tak żeby kontrast był czytelny i nie męczył wzroku. Warto też pamiętać, że podobny mechanizm możesz zastosować na innych elementach: np. a:hover dla linków, button:hover dla przycisków czy nawet div:hover dla całych kafelków w layoutach. Kluczowe jest to, żeby pseudo-klasa :hover była przypięta dokładnie do tego elementu, który ma reagować na interakcję użytkownika.