Wyniki egzaminu

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

Egzamin zdany!

Wynik: 24/40 punktów (60,0%)

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

Zgodnie z wytycznymi WCAG 2.x  na poziomie AA minimalny kontrast tekstu (o standardowym rozmiarze) do tła, spełniający wymogi dostępności serwisu WWW dla osób z ograniczoną percepcją wzrokową wynosi

A. 2,5 : 1
B. 1,5 : 1
C. 2,0 : 1
D. 4,5 : 1
W tym pytaniu łatwo wpaść w pułapkę myślenia, że „jakikolwiek” kontrast wystarczy, by tekst był czytelny. Warto jednak oprzeć się na twardych definicjach z WCAG 2.x, a nie na subiektywnym wrażeniu, że coś „da się przeczytać”. Propozycje niższych wartości kontrastu, takich jak 1,5 : 1, 2,0 : 1 czy 2,5 : 1, odzwierciedlają typowy błąd: ocenianie czytelności tylko własnymi oczami, najczęściej osoby młodej, bez problemów ze wzrokiem, siedzącej przy dobrym monitorze i w dobrych warunkach oświetleniowych. Współczynniki zbyt niskie, rzędu 1,5 : 1 czy 2,0 : 1, oznaczają bardzo małą różnicę jasności między tekstem a tłem. Na ekranie będzie to wyglądało jak delikatne „rozmycie” tekstu w tle. Osoby z obniżonym kontrastem widzenia, z wadami refrakcji, a nawet użytkownicy korzystający ze słabszych ekranów lub w mocnym słońcu, zwyczajnie nie odczytają takiego tekstu bez dużego wysiłku. To nie jest tylko kwestia komfortu – przy dłuższej pracy może to powodować zmęczenie oczu, bóle głowy i zniechęcenie do korzystania z serwisu. Warto też zauważyć, że wartości 2,5 : 1 czasem „intuicyjnie” wydają się już całkiem niezłe, szczególnie gdy projektant przyzwyczajony jest do bardzo delikatnych, pastelowych palet. Ale WCAG 2.0 i 2.1 w kryterium 1.4.3 wyraźnie mówią: dla zwykłego tekstu poziom AA wymaga minimum 4,5 : 1. Niższe liczby mogą być stosowane tylko w określonych sytuacjach, np. dla dużego tekstu (wtedy próg 3 : 1) albo na poziomie AAA, gdzie są jeszcze ostrzejsze wymagania dla niektórych elementów. Wszelkie niższe wartości dla małego tekstu są po prostu niezgodne ze standardem. Kolejny typowy błąd myślowy to mieszanie wymagań estetycznych z wymogami dostępności. Projektanci często boją się „zbyt mocnych” kontrastów, bo wydaje im się, że interfejs będzie wyglądał zbyt ciężko, zbyt ostro. Przez to sięgają po bardzo jasne szarości albo blade kolory tekstu. Tymczasem branżowe dobre praktyki projektowania dostępnych interfejsów mówią jasno: kontrast minimum 4,5 : 1 dla podstawowego tekstu to absolutne minimum, a w wielu serwisach (np. administracja publiczna, systemy B2B używane godzinami) warto iść jeszcze wyżej. Trzymanie się zbyt niskich wartości nie tylko łamie standard WCAG, ale też realnie wyklucza część użytkowników z komfortowego korzystania z serwisu.

Pytanie 2

Podczas tworzenia formularza konieczne jest dodanie kontrolki, która odnosi się do kontrolki w innym formularzu. Jakie działania w bazie danych Access są w tym przypadku możliwe?

A. możliwe poprzez określenie ścieżki do kontrolki w atrybucie „Źródło kontrolki”.
B. niemożliwe we wszystkich trybach z wyjątkiem trybu projektowania.
C. możliwe o ile dotyczą danych liczbowych.
D. niemożliwe.
No więc, dobrze zrozumiałeś, że można ustawić kontrolkę, żeby odnosiła się do innej w innym formularzu przez wybór odpowiedniej ścieżki w właściwości „Źródło kontrolki”. W Accessie to naprawdę działa! Dzięki temu masz możliwość dynamicznego wczytywania danych do formularzy, co jest mega przydatne. Wyobraź sobie, że masz formularz A, który korzysta z danych z formularza B – po prostu wpisujesz odpowiednią ścieżkę i wszystko działa. To w sumie jest zgodne z tym, co się robi w projektowaniu baz danych, gdzie ważne jest, żeby unikać zbędnego powielania danych. Dzięki temu, jeśli zaktualizujesz coś w jednym miejscu, to automatycznie odbija się to w innym, co naprawdę ułatwia życie. W praktyce, takie podejście sprawia, że praca z dużymi aplikacjami staje się znacznie prostsza i bardziej efektywna.

Pytanie 3

Jak wybrać nazwy produktów z tabeli sprzet zawierającej pola: nazwa, cena, liczbaSztuk, dataDodania, które zostały dodane w roku 2021, a ich cena jest poniżej 100 zł lub liczba sztuk przekracza 4, w sekcji WHERE?

A. WHERE dataDodania LIKE '2021%' AND cena < 100 AND liczbaSztuk > 4
B. WHERE dataDodania LIKE '2021%' OR cena < 100 OR liczbaSztuk > 4
C. WHERE dataDodania LIKE '2021%' AND (cena < 100 OR liczbaSztuk > 4)
D. WHERE dataDodania LIKE '2021%' OR (cena < 100 AND liczbaSztuk > 4)
Odpowiedź trzecia jest poprawna, ponieważ stosuje logiczne połączenie warunków w sekcji WHERE, które precyzyjnie spełnia wymagania zawarte w pytaniu. Warunek 'dataDodania LIKE '2021%'' filtruje dane, aby uwzględnić jedynie te produkty, które zostały dodane w roku 2021. Następnie, użycie operatora AND łączy ten warunek z nawiasem, który grupuje dwa inne warunki: 'cena < 100 OR liczbaSztuk > 4'. Taki zapis oznacza, że wystarczy spełnić jeden z tych dwóch warunków - cena musi być niższa niż 100 zł lub liczba sztuk większa niż 4. Dzięki temu, zapytanie będzie wydajne i zwróci wszystkie pasujące rekordy, co jest kluczowe w pracy z bazami danych. Takie podejście jest zgodne z najlepszymi praktykami SQL, które sugerują stosowanie nawiasów do grupowania logiki warunków, co zwiększa czytelność i zrozumienie zapytania. Przykładem zastosowania tego podejścia jest sytuacja w dużych sklepach internetowych, gdzie istotne jest szybkie filtrowanie danych produktów, aby poprawić doświadczenie użytkownika oraz efektywność sprzedażową.

Pytanie 4

Przedstawiony algorytm umożliwia wyliczenie

Ilustracja do pytania
A. średniej geometrycznej n liczb a wprowadzonych przez użytkownika.
B. najmniejszego wspólnego dzielnika dla n kolejnych liczb a.
C. reszty z dzielenia kolejnych liczb a przez liczbę n.
D. średniej arytmetycznej n liczb a wprowadzonych przez użytkownika.
Na diagramie widać dość typowy schemat algorytmu: wczytanie n, zainicjowanie zmiennych, pętla z licznikiem i i na końcu pojedyncza operacja dzielenia. Taki układ często myli osoby początkujące, bo łatwo go skojarzyć z innymi pojęciami matematycznymi. Warto więc spokojnie prześledzić logikę. Najpierw ustalana jest liczba elementów n. Potem zmienna Wynik jest ustawiana na 0, a i na 0, więc mamy klasyczne przygotowanie do sumowania w pętli. Warunek i < n powoduje, że ciało pętli wykona się dokładnie n razy. W każdej iteracji wczytywana jest jedna liczba a, a następnie Wynik = Wynik + a. To jest zwykłe sumowanie wszystkich podanych wartości. Dopiero po wyjściu z pętli następuje pojedyncza operacja Wynik = Wynik / n. To wyklucza interpretację w stylu „reszta z dzielenia” lub „najmniejszy wspólny dzielnik”, bo w algorytmie nie ma ani operatora modulo, ani żadnej logiki opartej na dzielnikach, porównywaniu reszt, iteracyjnej redukcji NWD itp. Dla średniej geometrycznej potrzebne byłoby mnożenie wszystkich wartości, a na końcu pierwiastek n-tego stopnia. Tutaj nie ma ani mnożenia w pętli, ani pierwiastkowania, więc średnia geometryczna odpada. Typowym błędem myślowym jest patrzenie tylko na końcowe dzielenie przez n i dopowiadanie sobie różnych znaczeń: że to reszta, że to jakiś „wspólny dzielnik” albo inna bardziej skomplikowana operacja. Tymczasem według dobrych praktyk analizy algorytmów trzeba zawsze prześledzić pełny przebieg: co się dzieje z każdą zmienną w każdej iteracji pętli. Wtedy widać jasno, że algorytm realizuje sumę n wczytanych liczb i na końcu dzieli tę sumę przez n, czyli liczy zwykłą średnią arytmetyczną. W kontekście podstaw informatyki to klasyczny wzorzec: inicjalizacja, pętla z akumulacją, przetworzenie wyniku po zakończeniu pętli.

Pytanie 5

Definicja stylu przedstawiona w języku CSS dotyczy odnośnika, który

Ilustracja do pytania
A. ma wskaźnik myszy ustawiony nad nim
B. jeszcze nie był odwiedzany
C. posiada niepoprawny adres URL
D. był już odwiedzany
W języku CSS selektor a:visited odnosi się do linków, które użytkownik już odwiedził. To pseudo-klasa, która umożliwia projektantom stron internetowych kontrolowanie wyglądu linków po ich kliknięciu, co poprawia doświadczenia użytkownika i umożliwia łatwiejszą nawigację. W przykładzie a:visited{color:orange;} wszystkie odwiedzone linki zostaną pokolorowane na pomarańczowo, co wizualnie odróżnia je od nieodwiedzonych linków. To podejście jest zgodne z zasadami dostępności, które sugerują, aby odwiedzone linki były w jakiś sposób wyróżnione. Praktycznym zastosowaniem tej wiedzy jest tworzenie stron, które są bardziej przejrzyste i intuicyjne dla użytkowników. Dobre praktyki zalecają, by różnica między odwiedzonymi a nieodwiedzonymi linkami była subtelna, ale zauważalna. Ustawianie różnych kolorów dla tych stanów linków jest popularnym rozwiązaniem. Prawidłowe użycie pseudo-klasy :visited wspiera także budowanie stron responsywnych, które poprawiają UX i spełniają standardy nowoczesnego designu, jednocześnie biorąc pod uwagę kwestie związane z prywatnością użytkowników, ponieważ CSS nie pozwala na stylizowanie niektórych właściwości odwiedzonych linków.

Pytanie 6

W HTML znacznik <i> wywołuje taki sam efekt wizualny jak znacznik

A. <em>
B. <strong>
C. <u>
D. <pre>
Zastosowanie znaczników <u>, <pre> oraz <strong> w kontekście odwzorowania efektu znacznika <i> jest mylące ze względu na różnice w semantyce i wizualizacji. Znacznik <u> (underline) stosowany jest do podkreślenia tekstu, ale nie wprowadza on żadnych aspektów znaczeniowych. Używanie <u> zazwyczaj jest odradzane w nowoczesnym HTML, ponieważ może zostać zinterpretowane przez użytkowników jako link, co wprowadza w błąd. Znacznik <strong> (strong emphasis) wskazuje na szczególne znaczenie tekstu, co również nie odpowiada efektowi kursywy, a wręcz przeciwnie – ma na celu przyciągnięcie uwagi odbiorcy do ważnych informacji. Warto zauważyć, że <pre> (preformatted text) służy do wyświetlania tekstu w stałym formacie, co nie ma związku z efektem kursywy. Wprowadzenie do dokumentu HTML takich znaczników, które nie odpowiadają zamierzonym funkcjom, wprowadza chaos w strukturę semantyczną i może prowadzić do problemów z dostępnością. Przykładowe błędy myślowe obejmują mylenie efektów wizualnych z ich semantycznym znaczeniem, co jest kluczowe dla prawidłowego używania HTML. Zrozumienie różnic między tymi znacznikami jest istotne dla twórców stron internetowych, aby zapewnić, że ich treść jest nie tylko estetycznie przyjemna, ale również funkcjonalna i dostępna.

Pytanie 7

W CSS, co spowoduje poniższy kod z plikiem rysunek.png?

p {background-image: url("rysunek.png");}
A. pokazany obok każdego akapitu
B. widoczny, jeśli zastosowany zostanie znacznik img w kodzie
C. tłem dla każdego akapitu
D. tłem całej witryny
Wybrana odpowiedź jest poprawna ponieważ w arkuszach stylów CSS zastosowanie selektora elementu p z właściwością background-image powoduje że obraz rysunek.png zostanie ustawiony jako tło dla każdego elementu paragrafu na stronie. Jest to przydatna technika gdy chcemy nadać spójny wygląd wszystkim paragrafom w dokumencie. Tło to może być używane do celów estetycznych lub jako część identyfikacji wizualnej strony. Warto pamiętać że w CSS można dodatkowo kontrolować sposób wyświetlania obrazka tła za pomocą właściwości takich jak background-repeat background-size i background-position co pozwala na precyzyjne dostosowanie wyświetlania. Dobre praktyki zalecają aby obrazy tła były odpowiednio zoptymalizowane pod kątem rozmiaru aby nie wpływały negatywnie na szybkość ładowania strony. W praktyce stosowanie obrazów jako tła w paragrafach może wspierać wizualne narracje oraz zwiększać zaangażowanie użytkowników szczególnie gdy są stosowane w przemyślany sposób w kontekście projektowania doświadczeń użytkownika UX.

Pytanie 8

W bazie MySQL zdefiniowano podczas tworzenia tabeli pole

id int NOT NULL AUTO_INCREMENT
Wpis AUTO_INCREMENT oznacza, że
A. kolumna id będzie mogła przyjmować wartości: NULL, 1, 2, 3, 4 i tak dalej
B. możliwe jest wprowadzenie rekordu z dowolną wartością dla kolumny id
C. wartość kolumny id zostanie automatycznie przypisana przez system i będzie to przypadkowo wygenerowana liczba całkowita
D. wartości tej kolumny będą automatycznie tworzone w trakcie dodawania nowego rekordu do bazy
Odpowiedź jest poprawna, ponieważ w MySQL, gdy pole jest zdefiniowane jako AUTO_INCREMENT, oznacza to, że wartości tego pola będą automatycznie generowane przez system podczas dodawania nowych rekordów. Mechanizm ten jest szczególnie przydatny w przypadku identyfikatorów, ponieważ zapewnia unikalne wartości bez konieczności ręcznego ich przypisywania. Na przykład, jeśli do tabeli dodamy nowy rekord, a ostatni zarejestrowany identyfikator wynosił 5, to nowy rekord będzie miał pole 'id' ustawione na 6. Dzięki temu proces dodawania rekordów jest znacznie uproszczony i zautomatyzowany. Warto zauważyć, że pole AUTO_INCREMENT zwykle powinno być zdefiniowane jako klucz główny (PRIMARY KEY), co dodatkowo zapewnia unikalność wpisów oraz ich szybkie wyszukiwanie. W kontekście standardów branżowych, korzystanie z AUTO_INCREMENT to praktyka, która zwiększa efektywność operacji na bazach danych, zwłaszcza w aplikacjach o dużym obciążeniu, gdzie wiele rekordów jest dodawanych jednocześnie.

Pytanie 9

W tabeli artykuły wykonano następujące instrukcje dotyczące uprawnień użytkownika jan: ```GRANT ALL PRIVILEGES ON artykuly TO jan``` ```REVOKE SELECT, UPDATE ON artykuly FROM jan``` Po zrealizowaniu tych instrukcji pracownik jan będzie uprawniony do

A. wyświetlania zawartości tabeli
B. edycji danych oraz przeglądania tabeli
C. tworzenia tabeli oraz edytowania danych w niej
D. tworzenia tabeli i wypełniania jej danymi
Jan, po wydaniu polecenia GRANT ALL PRIVILEGES ON artykuly TO jan, miał pełne uprawnienia do wszystkich operacji na tabeli artykuly. Jednakże, po wykonaniu polecenia REVOKE SELECT, UPDATE ON artykuly FROM jan, jego uprawnienia do przeglądania danych (SELECT) oraz aktualizacji danych (UPDATE) zostały odebrane. Oznacza to, że Jan zachowuje możliwość tworzenia nowych tabel oraz wypełniania ich danymi (INSERT), ponieważ nie został ograniczony w tym zakresie. Możliwości tworzenia tabeli i wypełniania jej danymi są częścią przyznanych uprawnień. W standardzie SQL, komendy GRANT i REVOKE służą odpowiednio do przyznawania i odbierania uprawnień użytkownikom. W praktycznym zastosowaniu, takie operacje są kluczowe dla zarządzania bezpieczeństwem i dostępem do danych w bazach danych, co zapobiega nieautoryzowanym zmianom i zabezpiecza integralność danych.

Pytanie 10

Aby zidentyfikować błędy w składni kodu HTML, trzeba użyć

A. interpretera
B. debuggera
C. kompilatora
D. walidatora
Debugger, interpreter i kompilator to narzędzia, które pełnią różne funkcje w procesie programowania, ale nie są bezpośrednio związane z walidacją kodu HTML. Debugger to narzędzie służące do wykrywania i naprawiania błędów w kodzie podczas jego wykonywania. Chociaż może być użyteczny w przypadku aplikacji webowych, nie zajmuje się on analizą poprawności składni HTML, a bardziej skupia się na logice i działaniu skryptów. Interpreter, z kolei, jest odpowiedzialny za bezpośrednie wykonanie kodu, tłumacząc go na instrukcje, które są rozumiane przez komputer. Działa głównie w kontekście języków skryptowych, takich jak JavaScript, ale nie analizuje kodu HTML w kontekście jego poprawności. Kompilator to narzędzie, które przekształca kod źródłowy napisany w jednym języku programowania na inny, często kod maszynowy. Pomimo że wszystkie te narzędzia są ważne w procesie tworzenia oprogramowania, nie spełniają one funkcji walidatora, który jest kluczowy w zapewnieniu poprawności kodu HTML w zgodności ze standardami.

Pytanie 11

Jakiego języka można użyć do obsługi połączenia z bazą danych MySQL podczas rozwijania aplikacji webowej?

A. PHP
B. XHTML
C. CSS
D. HTML
PHP jest językiem skryptowym, który jest szeroko stosowany do tworzenia dynamicznych aplikacji internetowych, a jego zdolność do interakcji z bazami danych, takimi jak MySQL, czyni go idealnym narzędziem do obsługi połączeń z bazą danych. PHP umożliwia programistom wysyłanie zapytań SQL do bazy danych, wykonywanie operacji CRUD (tworzenie, odczyt, aktualizacja, usuwanie) oraz przetwarzanie wyników, co jest kluczowe w nowoczesnym tworzeniu aplikacji webowych. Przykładowy kod PHP do nawiązania połączenia z bazą danych MySQL może wyglądać następująco: $conn = new mysqli('localhost', 'username', 'password', 'database');. W przypadku niepowodzenia połączenia, można użyć if ($conn->connect_error) { die('Connection failed: ' . $conn->connect_error); }. PHP wspiera również różne techniki zabezpieczeń, takie jak przygotowywanie zapytań, co znacząco zwiększa bezpieczeństwo aplikacji przed atakami typu SQL Injection. Dokumentacja PHP oraz standardy, takie jak PSR (PHP Standards Recommendations), dostarczają programistom niezbędnych wytycznych, aby tworzyć wydajne i bezpieczne aplikacje. Dzięki swojej elastyczności i wszechstronności, PHP stał się językiem pierwszego wyboru dla programistów zajmujących się tworzeniem aplikacji internetowych z interfejsem do baz danych.

Pytanie 12

Na przedstawionej tabeli samochodów wykonano zapytanie SQL:

SELECT model FROM samochody
WHERE rocznik=2016;

Jakie wartości zostaną zwrócone w wyniku tego zapytania?
idmarkamodelrocznikkolorstan
1FiatPunto2016czerwonybardzo dobry
2FiatPunto2002czerwonydobry
3FiatPunto2007niebieskibardzo dobry
4OpelCorsa2016grafitowybardzo dobry
5OpelAstra2003niebieskiporysowany lakier
6ToyotaCorolla2016czerwonybardzo dobry
7ToyotaCorolla2014szarydobry
8ToyotaYaris2004granatowydobry
A. Czerwony, grafitowy
B. Punto, Corsa, Astra, Corolla, Yaris
C. Punto, Corsa, Corolla
D. Fiat, Opel, Toyota
Zapytanie SQL SELECT model FROM samochody WHERE rocznik=2016; jest skonstruowane w sposób, który filtruje wyniki do wierszy, gdzie kolumna rocznik ma wartość 2016. Następnie zostaje wyświetlona tylko kolumna model z tych wierszy. W przedstawionej tabeli samochodów wiersze o roczniku 2016 mają modele Punto Corsa i Corolla. Dlatego odpowiedź zawiera te konkretne modele. To zapytanie ilustruje podstawową funkcję filtracji danych w SQL co jest kluczowe w zarządzaniu bazami danych. Użycie WHERE pozwala na selektywne pobieranie danych co jest niezbędne w analizie danych. W praktyce takie zapytania mogą być stosowane w systemach zarządzania zasobami np. w branży motoryzacyjnej do śledzenia modeli pojazdów według rocznika. Dobre praktyki obejmują używanie indeksów na kolumnach wykorzystywanych w klauzuli WHERE aby zoptymalizować wydajność zapytań. Indeksy pomagają w szybszym wyszukiwaniu i filtracji danych co jest szczególnie ważne w dużych bazach danych. Konsystencja oraz dokładność zapytań SQL są kluczowe dla efektywnego funkcjonowania systemów opartych na bazach danych.

Pytanie 13

Który z elementów w sekcji head dokumentu HTML 5 jest obowiązkowy według walidatora HTML, a jego niedobór skutkuje błędem (error)?

A. style
B. meta
C. link
D. title
Odpowiedzi wskazujące na znaczniki takie jak „style”, „link” czy „meta” mogą wprowadzać w błąd, jeśli chodzi o ich rolę w dokumentach HTML. Znacznik „style” jest używany do osadzania arkuszy stylów CSS i jest istotny dla prezentacji wizualnej, jednak nie jest wymagany do prawidłowego działania strony w kontekście walidacji. Podobnie znacznik „link” jest kluczowy dla łączenia zasobów zewnętrznych, takich jak pliki CSS, ale jego brak nie prowadzi do błędów w walidacji HTML. Z kolei znacznik „meta” pozwala na definiowanie metadanych, takich jak opis strony czy słowa kluczowe, które również są istotne z perspektywy SEO, ale nie są obligatoryjne w każdej sytuacji. Typowym błędem myślowym jest sądzenie, że wszystkie te znaczniki są równie niezbędne jak „title”. Warto pamiętać, że tylko znacznik „title” ma bezpośrednie znaczenie dla walidacji HTML i jest wymagany, aby dokument był zgodny z normami. Brak „title” może prowadzić do negatywnych konsekwencji zarówno w zakresie walidacji, jak i SEO, co podkreśla znaczenie każdej struktury w dokumencie HTML. Dlatego ważne jest, aby zrozumieć, jaka jest rola poszczególnych znaczników w budowie dokumentów HTML oraz jakie są ich konsekwencje w kontekście standardów sieciowych.

Pytanie 14

Funkcja drzewo kontekstowe w edytorze WYSIWYG Adobe Dreamweaver ma na celu

A. stylizację tekstu za pomocą dostępnych znaczników
B. przygotowanie szablonu witryny internetowej
C. określenie kaskadowych arkuszy stylów przypisanych do strony
D. prezentowanie interaktywnej struktury drzewa HTML dla treści statycznych i dynamicznych
Drzewo kontekstowe w edytorze WYSIWYG Adobe Dreamweaver jest narzędziem, które umożliwia wizualne przedstawienie struktury HTML dokumentu. Użytkownicy mogą za jego pomocą łatwo nawigować po elementach strony, zarówno tych statycznych, jak i dynamicznych. Tego typu rozwiązanie jest nieocenione w procesie projektowania strony internetowej, ponieważ pozwala programistom na szybkie zrozumienie hierarchii elementów, co jest kluczowe dla efektywnego zarządzania kodem. Na przykład, podczas tworzenia złożonych stron internetowych z wieloma sekcjami, drzewa kontekstowe ułatwiają identyfikację i modyfikację poszczególnych komponentów, co może przyspieszyć proces tworzenia oraz debugowania. Dodatkowo, przestrzeganie dobrych praktyk, takich jak stosowanie semantycznych znaczników HTML i odpowiedniego formatowania kodu, może poprawić dostępność i SEO strony, co jest szczególnie ważne w kontekście konkurencji w internecie.

Pytanie 15

Jakie polecenie przywróci do działania uszkodzoną tabelę w SQL?

A. REPAIR TABLE tblname
B. REGENERATE TABLE tbl_name
C. ANALYZE TABLE tbl_name
D. OPTIMIZE TABLE tbl_name
REPAIR TABLE tblname jest komendą w SQL, która jest używana do naprawy uszkodzonych tabel w bazach danych, szczególnie w systemach zarządzania bazami danych, takich jak MySQL. Gdy tabela ulegnie uszkodzeniu z powodu awarii systemu, błędów oprogramowania lub innych problemów, użycie tej komendy pozwala na przywrócenie jej do stanu używalności. Przykładem może być sytuacja, gdy po awarii serwera tabela przestaje być dostępna. Wówczas wystarczy uruchomić polecenie REPAIR TABLE, aby zdiagnozować i naprawić problemy. Warto pamiętać, że ta komenda nie tylko przywraca integralność danych, ale także może poprawić wydajność tabeli, usuwając fragmentację. Praktyka wskazuje, że regularne sprawdzanie i naprawa tabel, zwłaszcza po dużych operacjach zapisu, jest dobrym nawykiem w zarządzaniu bazami danych. Dobrą praktyką jest również tworzenie kopii zapasowych tabel przed ich naprawą, co zabezpiecza dane przed potencjalną utratą w wyniku błędów przy naprawie.

Pytanie 16

W skrypcie napisanym w języku PHP należy przeprowadzić operacje, gdy spełniony jest warunek, że adresy są parzystymi numerami na ulicach: Bratkowej oraz Nasturcjowej. Jakie wyrażenie logiczne to określa?

A. $ulica == "Bratkowa" && $ulica == "Nasturcjowa" && $numer % 2 == 0
B. ($ulica == "Bratkowa" || $ulica == "Nasturcjowa") && $numer / 2 == 0
C. ($ulica == "Bratkowa" || $ulica == "Nasturcjowa") && $numer % 2 == 0
D. $ulica == "Bratkowa" && $ulica == "Nasturcjowa" && $numer / 2 == 0
Pojęcia zastosowane w odpowiedziach, które nie są poprawne, zawierają błędne założenia dotyczące użycia operatorów logicznych i arytmetycznych. W przypadku pierwszej odpowiedzi, użycie operatora && (i) do sprawdzania, czy zmienna $ulica jest jednocześnie równa "Bratkowa" i "Nasturcjowa" jest technicznie niemożliwe, ponieważ zmienna nie może przyjąć dwóch różnych wartości jednocześnie. Druga odpowiedź, która używa operatora / (dzielenie) w kontekście sprawdzania parzystości, wprowadza w błąd; reszta z dzielenia przez 2 jest właściwym sposobem sprawdzania parzystości, a nie dzielenie, które może prowadzić do nieprawidłowego wyniku - liczba będzie parzysta tylko wtedy, gdy reszta z dzielenia wynosi zero. W czwartej odpowiedzi, użycie operatora / również nie jest odpowiednie. Kluczowym błędem, który można zauważyć, jest nieprawidłowe myślenie o logice warunkowej i operatorach matematycznych. W praktyce, stosowanie reszty z dzielenia jako metody określenia parzystości jest powszechną praktyką w wielu językach programowania, w tym PHP. Dlatego konieczne jest zrozumienie, jak poprawnie formułować warunki logiczne oraz jakich operatorów używać, aby osiągnąć zamierzony efekt.

Pytanie 17

Na tabeli 'dania', której wiersze zostały pokazane, wykonano przedstawioną kwerendę:

SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5;
Ile wierszy wybierze kwerenda?
idtypnazwacena
11Gazpacho20
21Krem z warzyw25
31Gulaszowa ostra30
42Kaczka i owoc30
52Kurczak pieczony40
62wieprzowy przysmak35
72Mintaj w panierce30
82Alle kotlet30
93Owoce morza20
103Grzybki, warzywka, sos15
113Orzechy i chipsy10
123Tatar i jajo15
133Bukiet warzyw10
A. 13
B. 5
C. 8
D. 2
Wybór błędnych odpowiedzi często wynika z nieprawidłowego zrozumienia warunków filtracji danych w zapytaniach SQL. Odpowiedzi takie jak 5, 8 oraz 13 mogą sugerować, że osoba udzielająca odpowiedzi nie dostrzega kluczowych ograniczeń nałożonych przez zapytanie. Po pierwsze, kwerenda ogranicza wynik do tych pozycji, które mają typ mniejszy niż 3 oraz cenę mniejszą niż 30. W odpowiedzi 5, na przykład, można błędnie założyć, że więcej pozycji spełnia te warunki, jednak po dokładnej analizie danych z tabeli tylko dwie pozycje (Gazpacho i Krem z warzyw) są zgodne z tymi kryteriami. Kolejna odpowiedź sugerująca 8 również popełnia błąd w ocenie, ponieważ nie uwzględnia dodatkowych ograniczeń dotyczących ceny. Ostatecznie odpowiedź 13, wskazująca na bezpośrednią liczbę wszystkich wierszy w tabeli, jest całkowicie mylna, ponieważ nie uwzględnia żadnych filtrów. W praktyce, kluczowym krokiem w efektywnym korzystaniu z SQL jest umiejętność precyzyjnego określania warunków, co pozwala na uzyskanie tylko tych danych, które są naprawdę potrzebne. Warto zwrócić uwagę na to, że prawidłowe zrozumienie tych zasad jest podstawą do analizy danych i podejmowania decyzji opartych na rzeczywistych informacjach.

Pytanie 18

Wskaż fragment CSS, który odpowiada rozkładowi bloków 2-5, zakładając, że zostały one zbudowane na podstawie podanego kodu HTML.

Ilustracja do pytania
A. Kod 1
B. Kod 3
C. Kod 4
D. Kod 2
Niepoprawne podejścia w pozostałych kodach wynikają z niewłaściwego użycia właściwości float oraz clear. W Kodzie 1 użycie float: right; dla czwartego bloku jest poprawne, jednak clear: both; dla piątego bloku powoduje, że nie będzie on kontynuował linii z poprzednimi blokami, co nie pasuje do przedstawionego układu. Clear: both; wymusza przeniesienie bloku poniżej aktualnej linii. Kod 3 charakteryzuje się brakiem właściwości clear, co prowadzi do problemów z układem, gdyż blok 5 ułożony float: right; nie rozpocznie nowego wiersza, co jest potrzebne w tym zadaniu. W Kodzie 4 brak jest jakiegokolwiek użycia właściwości float lub clear dla bloków 3, 4 i 5 co uniemożliwia osiągnięcie założonego układu. Brak float dla trzeciego i czwartego bloku spowoduje, że będą one umieszczone pod sobą jako blokowe elementy domyślnie, co nie pasuje do układu. Prawidłowa organizacja układu bloków za pomocą właściwości float opiera się na odpowiednim przypisaniu float: left; lub right; oraz strategicznym użyciu clear, aby kontrolować przepływ elementów w wierszach. Typowym błędem jest niezrozumienie, że clear resetuje przepływ dla kolejnego bloku, co jest kluczowe w manipulacji wyglądem layoutu blokowego w starszych technikach CSS. Takie błędy mogą prowadzić do nieprzewidywalnych rezultatów, zwłaszcza gdy układ jest testowany na różnych przeglądarkach i rozdzielczościach ekranów, co podkreśla znaczenie testowania i walidacji CSS w kontekście projektów webowych. Stosowanie zasad float i clear wymaga precyzyjnego planowania, by unikać konfliktów w przepływie i zachować spójność wizualną projektu webowego.

Pytanie 19

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

A. aside {float: left; }
B. nav { float: right; } section { float: right; }
C. nav { float: right; }
D. nav { float: left; } 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 20

Ile razy zostanie wykonana zaprezentowana pętla w języku PHP, zakładając, że zmienna sterująca nie jest zmieniana wewnątrz pętli?

 for ($i = 0; $i <= 10; $i++) {
    // kod pętli
}
A. 10
B. 0
C. 11
D. Nieskończenie wiele
Prawidłowa odpowiedź wynika z analizy działania pętli for w języku PHP. W przedstawionej pętli warunek iteracji jest ustawiony na '$i <= 10', co oznacza, że pętla będzie wykonywana tak długo, jak długo zmienna $i będzie mniejsza lub równa 10. Zmienna $i jest inicjalizowana wartością 0 i inkrementowana o 1 przy każdym obiegu pętli. W efekcie, pętla będzie wykonywana dla wartości $i od 0 do 10, co daje 11 iteracji. Praktycznym zastosowaniem takiej pętli może być na przykład generowanie listy numerów lub przetwarzanie elementów w tablicy. Dobrą praktyką podczas używania pętli jest również upewnienie się, że warunek zakończenia jest poprawnie zdefiniowany, aby uniknąć niezamierzonych nieskończonych iteracji. Warto także uwzględnić możliwość modyfikowania zmiennej sterującej w ciele pętli, co może prowadzić do złożonych przypadków, ale w tym konkretnym przykładzie nie mamy takiej sytuacji.

Pytanie 21

Wskaż, jaki błąd walidacyjny zawiera przedstawiony fragment kodu w języku HTML 5.

<h6>CSS</h6>
<p>Kaskadowe arkusze stylów (<b>ang. <i>Cascading Style Sheets</b></i>)<br>to język służący ...</p>
A. Znacznik zamykający /b jest niezgodny z zasadą zagnieżdżania
B. Znacznik br nie powinien znajdować się wewnątrz znacznika p
C. Znacznik br nie został prawidłowo zamknięty
D. Znacznik h6 nie jest używany w HTML5
W analizowanym fragmencie kodu HTML, znacznik zamykający /b jest niezgodny z zasadą zagnieżdżania. W prawidłowej konstrukcji HTML, znaczniki powinny być zamykane w odwrotnej kolejności do ich otwierania — nazywa się to zasadą LIFO (Last In, First Out). W przedstawionym kodzie, znacznik <b> jest otwierany przed znacznikiem <i>, ale zamykany po nim, co jest błędem strukturalnym. Poprawny zapis powinien wyglądać tak: <b><i>Cascading Style Sheets</i></b>. Ważne jest, aby zawsze pamiętać o poprawnej strukturze dokumentu HTML, ponieważ nieprzestrzeganie tej zasady może prowadzić do nieprzewidywalnych wyników renderowania na różnych przeglądarkach. Zasada ta jest kluczowa w zapewnieniu, że znaczniki są zagnieżdżone poprawnie i że style oraz skrypty działają zgodnie z oczekiwaniami. Tego rodzaju błędy mogą również negatywnie wpływać na dostępność strony dla użytkowników korzystających z czytników ekranowych.

Pytanie 22

W języku PHP zmienna $a została przypisana do wartości 1. Wyrażenie $a === $b będzie miało wartość true, gdy zmienna $b będzie ustawiona na wartość

A. 1 lub '1'
B. '1'
C. *1
D. "1" lub '1'
Odpowiedzi, które sugerują różne typy danych, takie jak '1', 1 lub '1', oraz \"1\" lub '1', mogą prowadzić do nieporozumień wynikających z niepełnego rozumienia operatorów porównania w PHP. W przypadku operatora porównania identyczności (===), ważne jest, aby zarówno wartość, jak i typ zmiennej były zgodne. Porównanie 1 (liczba całkowita) z '1' (łańcuch znaków) zwróci false, ponieważ różnią się one typem. Typowe błędy myślowe, prowadzące do takiej pomyłki, mogą wynikać z braku zrozumienia, jak PHP obsługuje typy danych i konwersję typów. Warto zauważyć, że w innych językach programowania porównania mogą działać inaczej, co może prowadzić do zamieszania, szczególnie w kontekście programowania w PHP. Istotne jest, aby przy projektowaniu aplikacji zawsze stosować porównania identyczności, by uniknąć nieprzewidzianych problemów związanych z typami danych. Dobrą praktyką jest również eksploracja dokumentacji PHP oraz testowanie porównań w praktyce, co pozwala na głębsze zrozumienie działania języka. Właściwe podejście do typów danych oraz klarowne rozumienie operatorów porównania są kluczowymi elementami skutecznego programowania w PHP.

Pytanie 23

Jakie skutki wywoła poniższy fragment kodu w języku JavaScript? ```n = "Napis1"; s = n.length;```

A. Przypisze zmiennej s wartość odpowiadającą długości tekstu w zmiennej n
B. Przypisze wartość zmiennej n do zmiennej s
C. Wyświetli liczbę znaków napisu z zmiennej n
D. Przypisze zmiennej s część napisu ze zmiennej n o długości określonej przez zmienną length
Fragment skryptu w języku JavaScript, w którym zmienna n jest przypisana do napisu "Napis1", a następnie zmienna s jest przypisana do długości tego napisu, korzysta z właściwości length. Odpowiedź 3 jest poprawna, ponieważ właściwość length dla obiektów typu string zwraca liczbę znaków w danym napisie. W tym przypadku "Napis1" ma 6 znaków, więc zmienna s przyjmie wartość 6. Tego typu operacje są powszechnie stosowane w programowaniu do manipulacji i analizy danych tekstowych, co jest istotnym aspektem tworzenia aplikacji webowych. W praktyce, programiści często muszą sprawdzać długość napisów, aby weryfikować dane wejściowe, przygotowywać napisy do dalszego przetwarzania lub dostosowywać interfejs użytkownika. Dobrym przykładem zastosowania length jest walidacja formularzy, gdzie długość wprowadzonego tekstu musi spełniać określone kryteria, np. minimalną lub maksymalną liczbę znaków. Warto zaznaczyć, że zgodnie ze standardami ECMAScript, wszystkie napisy w JavaScript mają tę właściwość, co czyni ją niezwykle użyteczną w codziennej pracy programisty.

Pytanie 24

Jakie wyniki zostaną wyświetlone po wykonaniu podanej w ramce kwerendy SQL SELECT na tabeli pracownicy, która zawiera rekordy?

idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
SELECT SUM(pensja) FROM pracownicy WHERE pensja > 4000;
A. Kwota 19500, czyli suma wszystkich pensji zatrudnionych
B. Kwota 10000, co stanowi sumę pensji pracowników o id=4 i id=6
C. Dwie kwoty: 4600 oraz 5400, jako wynagrodzenia pracowników przekraczające 4000
D. Kwota 5400, co oznacza najwyższą pensję wśród pracowników
W zapytaniu SQL użyto funkcji agregującej SUM, która służy do sumowania wartości w określonej kolumnie. Klauzula WHERE ogranicza zbiór rekordów do tych, które spełniają dany warunek. W tym przypadku, pensja musi być większa niż 4000. Analizując tabelę, znajdujemy dwie osoby z pensjami spełniającymi ten warunek: pracownik o id=4 z pensją 4600 oraz pracownik o id=6 z pensją 5400. SUM(4600 + 5400) daje 10000. Prawidłowe zrozumienie wykorzystania funkcji agregujących w SQL jest kluczowe w analizie danych i raportowaniu. Jest to standardowa praktyka w branży IT, gdzie analiza danych jest podstawą przy podejmowaniu decyzji biznesowych. Funkcje agregujące, takie jak SUM, AVG, MAX, są fundamentalnymi narzędziami analitycznymi w bazach danych. Przy pracy nad większymi zbiorami danych, takie zapytania pomagają szybko uzyskać podsumowania, co jest nieocenione w analizie finansowej czy tworzeniu raportów zarządczych.

Pytanie 25

Aby obraz w filmie zmieniał się gładko, liczba klatek (niezachodzących na siebie) w ciągu sekundy musi mieścić się przynajmniej w zakresie

A. 20 do 23 fps
B. 24 do 30 fps
C. 31 do 36 fps
D. 16 do 19 fps
Wybór '31 do 36 fps' jest trochę mylący, bo chociaż teoretycznie mogłoby to zapewnić płynny obraz, to w praktyce nie jest to standard w produkcjach filmowych. Klatki powyżej 30 fps w tradycyjnym kinie to rzadkość, co może wprowadzać zamieszanie co do efektów wizualnych. Ponadto sztuczne zwiększenie fps takich jak 31 może sprawić, że ruch będzie wyglądał na rozmyty, a to niespecjalnie pasuje do estetyki filmowej. Z drugiej strony, '20 do 23 fps' to zdecydowanie za mało, by zapewnić przyzwoitą jakość w profesjonalnych produkcjach. Takie wartości mogą się sprawdzić w animacjach czy niskobudżetowych filmach, ale już w bardziej skomplikowanych ujęciach nie dają płynności. Natomiast '16 do 19 fps' to totalna porażka, bo powoduje skoki i zacięcia, a to w branży nie przechodzi. Dlatego w pracy z wideo, warto pilnować minimum 24 fps, żeby widzowie mieli fajne wrażenia wizualne.

Pytanie 26

Tabela Pracownicy zawiera informacje o zatrudnionych w różnych działach, co jest określone przez pole liczbowe dzial. Z uwagi na to, że zazwyczaj wykonuje się kwerendy jedynie dla działu równego 2, można uprościć zapytania do tej tabeli, tworząc wirtualną tabelę o nazwie Prac_dzial2 przy użyciu zapytania

A. CREATE VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2
B. VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2
C. VIEW Prac_dzial2 SELECT FROM Pracownicy WHERE dzial=2
D. CREATE VIEW Prac_dzial2 AS SELECT * FROM Pracownicy WHERE dzial=2
Pozostałe odpowiedzi są błędne z różnych powodów. Przede wszystkim, brak słowa kluczowego 'AS' w odpowiedziach, które twierdzą, że mają na celu stworzenie widoku, skutkuje nieprawidłową składnią. W SQL, podczas definiowania widoku, kluczowe jest użycie 'AS' po nazwie widoku, aby określić, że następujące zapytanie jest definicją źródła danych tego widoku. Ponadto, użycie słowa kluczowego 'VIEW' bez 'CREATE' jest niepoprawne, ponieważ struktura SQL wymaga, aby przed utworzeniem widoku zawsze były używane polecenia 'CREATE VIEW'. Również pominięcie 'SELECT *' w kontekście tworzenia widoku ogranicza elastyczność, ponieważ pozwala na wybranie tylko niektórych kolumn z tabeli, co nie jest zgodne z wymaganiami przedstawionymi w pytaniu. Zrozumienie tych zasad jest kluczowe, aby uniknąć typowych pułapek w pracy z SQL, a także pozwala na tworzenie bardziej złożonych i wydajnych strukturyzacji danych. Użycie nieprawidłowej składni może prowadzić do błędów wykonania, co w praktyce może skutkować zamieszaniem i wydłużonym czasem reakcji na wyciąganie danych. Dlatego kluczowe jest przestrzeganie standardów i dobrych praktyk w pisaniu zapytań SQL.

Pytanie 27

W skrypcie JavaScript operatory: ||, && wchodzą w skład grupy operatorów

A. bitowych
B. logicznymi
C. arytmetycznych
D. przypisania
Operatory || (OR) i && (AND) w języku JavaScript są klasyfikowane jako operatory logiczne. Służą one do wykonywania operacji na wartościach boolowskich, które mogą przyjmować jedynie dwie wartości: true (prawda) oraz false (fałsz). Operator && zwraca true, jeśli oba operandy są prawdziwe, w przeciwnym przypadku zwraca false. Przykładem jest wyrażenie: true && false, które zwraca false. Operator || zwraca true, jeśli przynajmniej jeden z operandów jest prawdziwy. Na przykład, wyrażenie: false || true, zwraca true. Operatory te są powszechnie wykorzystywane w warunkach kontrolnych, takich jak instrukcje if, pętle oraz w kombinacjach z innymi operatorami. Dodatkowo, JavaScript posługuje się tzw. 'krótkim circuiting', co oznacza, że w przypadku operatora &&, jeśli pierwszy operand jest false, to nie sprawdza drugiego, ponieważ wynik będzie na pewno false. W kontekście standardów, JavaScript przestrzega specyfikacji ECMAScript, która definiuje zasady działania tych operatorów. Zrozumienie operatorów logicznych jest kluczowe dla efektywnego programowania i tworzenia złożonych warunków.

Pytanie 28

W HTML, aby ustawić tytuł dokumentu na "Moja strona", który pojawi się na karcie przeglądarki internetowej, należy użyć zapisu

A. <title>Moja strona</title>
B. <meta name="title" content="Moja strona">
C. <head>Moja strona</head>
D. <meta title="Moja strona">
Element <title> w HTML jest naprawdę ważny, bo to właśnie on ustala, co zobaczysz na zakładce w przeglądarce. Powinien być umieszczony w sekcji <head>, co jest zgodne z tym, co mówi W3C. Poprawny zapis wygląda tak: <title>Moja strona</title>, co sprawia, że "Moja strona" będzie się pokazywać jako tytuł w przeglądarce. Tytuł strony ma spore znaczenie dla SEO, bo wpływa na to, jak strona jest pozycjonowana w wynikach wyszukiwania. Warto, żeby tytuł był krótki, ale jednocześnie zawierał istotne informacje, a najlepiej, żeby nie miał więcej niż 60 znaków, żeby się nie obcinał w wynikach. Fajnie też umieścić w tytule kluczowe słowa, które opisują, o czym jest strona, bo to może zwiększyć jej atrakcyjność i CTR. Dobrze skonstruowany tytuł to też lepsza dostępność, bo ułatwia użytkownikom poruszanie się i orientowanie w otwartych zakładkach.

Pytanie 29

Wybierz prawidłowy sposób umieszczania komentarzy w kodzie źródłowym HTML

A. /* informacje komentarza */
B. -- informacje komentarza --
C. "" informacje komentarza ""
D. <!-- informacje komentarza -->
Poprawny komentarz w HTML musi być zapisany dokładnie w formie: <!-- treść komentarza -->. To jest jedyny format zgodny ze specyfikacją HTML (HTML5, ale też starsze wersje). Przeglądarka traktuje wszystko, co znajduje się między ciągiem znaków <!-- a -->, jako komentarz, czyli tego nie wyświetla użytkownikowi i nie interpretuje jako kod. Dzięki temu można w kodzie zostawiać sobie uwagi, opisy sekcji, tymczasowo coś „wyłączyć” albo oznaczyć fragment do późniejszej edycji. W praktyce stosuje się np.: <!-- Nawigacja główna strony --> albo <!-- TODO: dodać link do panelu logowania -->. Moim zdaniem komentarze są szczególnie ważne w większych projektach, bo po miesiącu naprawdę trudno pamiętać, po co była jakaś dziwna konstrukcja w HTML. Warto też wiedzieć, że w HTML nie stosujemy ani //, ani /* */ jak w JavaScript czy CSS. To są inne języki, inne reguły. Jeżeli wstawisz coś w stylu <!-- <p>Tekst</p> -->, to cały ten akapit jest ignorowany przez przeglądarkę, co jest wygodne przy testowaniu. Dobra praktyka jest też taka, żeby nie przesadzać z ilością komentarzy, ale tam gdzie struktura jest mniej oczywista (np. zagnieżdżone divy, rozbudowane formularze), lepiej dodać krótki, konkretny opis. W projektach komercyjnych często używa się komentarzy do oznaczania sekcji layoutu, np. <!-- HEADER START -->, <!-- FOOTER END -->, co ułatwia pracę całemu zespołowi. W skrócie: tylko zapis z nawiasami ostrymi i myślnikami, czyli <!-- ... -->, jest w HTML prawidłowy i rozpoznawany jako komentarz.

Pytanie 30

Aby ustanowić relację jeden do wielu, w tabeli reprezentującej stronę "wiele", konieczne jest zdefiniowanie

A. klucza podstawowego wskazującego na klucz podstawowy tabeli po stronie "jeden"
B. klucza sztucznego odnoszącego się do kluczy podstawowych obydwu tabel
C. klucza obcego wskazującego na klucz podstawowy tabeli po stronie "jeden"
D. klucza obcego odnoszącego się do klucza obcego tabeli po stronie "jeden"
Definiowanie relacji w bazach danych to dosyć skomplikowana sprawa. Jakby nie patrzeć, jak zrobisz coś źle z kluczami obcymi czy podstawowymi, to mogą być duże problemy z danymi. Klucz sztuczny, który odnosi się do kluczy podstawowych w obu tabelach, może wydawać się prosty, ale nie rozwiązuje faktycznego problemu, którym jest jasna relacja między danymi. To wprowadza dodatkowe zamieszanie, a to nie jest dobra praktyka. Jak zdefiniujesz klucz obcy, który wskazuje na inny klucz obcy w tabeli po stronie 'jeden', no to może być tylko mętlik, bo ciężko wtedy utrzymać spójność danych. Klucz podstawowy, który wskazuje na klucz podstawowy z tabeli po stronie 'jeden', to również zły wybór, bo klucz podstawowy ma być unikalny dla każdej tabeli. Kluczowe jest, żeby klucze obce były używane w odpowiedni sposób, bo inaczej struktura danych robi się nieczytelna i trudna do zarządzania, a to na pewno nie idzie w parze z dobrym projektowaniem baz danych.

Pytanie 31

Funkcja
fun1(a,b) {
  if(a % 2 != 0) a++;
  for(let n = a; n <= b; n+=2) document.write(n);
}
ma na celu

A. sprawdzenie, czy liczba a jest nieparzysta; w przypadku pozytywnej odpowiedzi, jej wypisanie
B. wypisanie liczb parzystych w zakresie od a do b
C. zwrócenie parzystych wartości liczb od a do b
D. wypisanie wszystkich liczb w przedziale od a do b
W przypadku pierwszej błędnej odpowiedzi, najważniejszy błąd to myślenie, że funkcja zwraca wartości parzyste jak zwykły wynik. W rzeczywistości funkcja wypisuje te liczby na stronie za pomocą document.write(), więc to jest kluczowy szczegół. Druga niepoprawna odpowiedź jest na dobrej drodze, ale myli się w interpretacji 'wypisania liczb parzystych z przedziału od a do b'. Funkcja nie tylko wypisuje liczby parzyste, ale też sprawdza, czy a jest nieparzyste, i wtedy zmienia tę wartość. Co do trzeciej błędnej odpowiedzi, sugeruje ona, że funkcja wypisuje wszystkie liczby między a a b, co jest zupełnie błędne, bo pętla for zwiększa n o 2, więc tylko parzyste liczby się pojawią. Rozumienie jak działa pętla for oraz operator modulo jest kluczowe, żeby dobrze zrozumieć tę funkcję. Jeśli nie ogarniasz tych podstaw, ciężko będzie analizować kod w JavaScript i pisać lepsze programy.

Pytanie 32

Pokazane pole input pozwala na

<input type="checkbox" name="text1" value="text2">
A. wprowadzenie hasła
B. wybranie opcji
C. wpisanie dowolnego ciągu znaków
D. selekcję opcji z listy zawierającej wartości text1 oraz text2
Pole input typu checkbox to fajna opcja, bo pozwala użytkownikom zaznaczać jedną albo więcej opcji z dostępnych wyborów. Takie checkboxy można zobaczyć na różnych stronach internetowych, są super przydatne, a użytkownik może je odznaczać kiedy chce. W HTML mamy atrybut type, który mówi, co użytkownik może wpisać. W przypadku checkboxa mamy to pole, które można zaznaczyć i dzięki temu dodajemy wartość do formularza, gdy go wysyłamy. Przykładem mogą być formularze zgód, gdzie trzeba potwierdzić kilka polityk prywatności lub warunków korzystania z serwisu. Ważne jest także, żeby każdy checkbox miał odpowiednio przypisane atrybuty name i value, bo dzięki temu łatwiej jest je zidentyfikować, gdy przesyłamy dane. I pamiętajmy, żeby dobrze oznaczać checkboxy etykietami przez element label – to pomaga, zwłaszcza osobom korzystającym z technologii wspomagających. Takie poprawne używanie checkboxów to klucz do budowania intuicyjnych i użytecznych interfejsów użytkowników.

Pytanie 33

Źródłem danych dla raportu może być

A. zapytanie INSERT INTO
B. inny raport
C. makropolecenie
D. tabela
Tabela jest podstawowym elementem struktury bazy danych, który służy jako źródło danych dla raportów. Tabele przechowują zorganizowane informacje w formie wierszy i kolumn, co umożliwia łatwy dostęp i analizę danych. Każda kolumna w tabeli reprezentuje atrybut, a każdy wiersz to pojedynczy rekord z danymi. Przykładowo, w tabeli zawierającej informacje o klientach, kolumny mogą obejmować imię, nazwisko, adres e-mail i numer telefonu. Dzięki standardom takim jak SQL (Structured Query Language), można łatwo wykonywać operacje na tych tabelach, takie jak selekcja, aktualizacja czy usuwanie danych. Tabele są fundamentalne w systemach zarządzania bazami danych (DBMS) i stanowią podstawowe źródło dla generowania raportów, które mogą być wykorzystywane w różnych kontekstach biznesowych. W raportach można agregować dane, obliczać różne wskaźniki oraz wizualizować wyniki, co czyni tabele nieocenionym elementem w analizie danych.

Pytanie 34

W języku PHP funkcja trim służy do

A. porównywania dwóch tekstów i zwracania ich wspólnej części
B. redukcji tekstu o zdefiniowaną w parametrze liczbę znaków
C. określenia długości tekstu
D. usuwania białych znaków lub innych znaków wymienionych w parametrze z obu końców tekstu
Analizując inne odpowiedzi, można zauważyć, że każda z nich opiera się na mylnych założeniach dotyczących funkcji trim. Wyznaczanie długości napisu to funkcjonalność, którą realizuje funkcja strlen. Użytkownicy mogą mylić te dwie funkcje, jednak trim nie zwraca liczby znaków w łańcuchu, a jedynie przekształca jego zawartość poprzez usunięcie białych znaków. Porównywanie dwóch napisów i wypisywanie ich części wspólnej to z kolei funkcjonalność, którą można zrealizować przy pomocy funkcji takich jak strcmp lub strcasecmp, które są dedykowane do porównań łańcuchów i operacji na nich. Pomijając funkcjonalności porównawcze, zrozumienie, że trim nie zmniejsza napisu o wskazaną liczbę znaków, lecz usuwa tylko białe znaki z końców, jest kluczowe dla poprawnego korzystania z tej funkcji. Takie podejście może prowadzić do błędnych interpretacji, gdyż funkcja trim działa na zasadzie operacji na końcach łańcucha, a nie na konkretnych pozycjach. Dlatego istotne jest, aby użytkownicy PHP zdobyli wiedzę na temat specyfikacji poszczególnych funkcji, aby uniknąć takich nieporozumień, co w praktyce ułatwia rozwój i utrzymanie kodu.

Pytanie 35

Jaką instrukcją można zastąpić poniższy kod JavaScript, pełniącą tę samą funkcję?

for (i = 0; i < 100; i += 10)
  document.write(i + ' ');
while (i < 10) {
  document.write(i + ' ');
  i += 10;
}

Kod 1.
while (i < 100) {
  document.write(i + ' ');
}

Kod 2.
i = 0;
while (i < 100) {
  document.write(i + ' ');
  i += 10;
}

Kod 3.
i = 0;
while (i < 10) {
  document.write(i + ' ');
  i++;
}

Kod 4.
A. Kod 2
B. Kod 1
C. Kod 3
D. Kod 4
Odpowiedź Kod 3 jest prawidłowa ponieważ instrukcja while w tej formie jest równoważna z podaną pętlą for. W obu przypadkach pętla inicjuje zmienną i na wartości 0 i zwiększa ją o 10 w każdej iteracji aż do osiągnięcia wartości mniejszej niż 100. Pętla for jest skondensowaną formą pętli while i zapewnia bardziej czytelny zapis gdy wszystkie elementy inicjalizacja warunek i inkrementacja są blisko siebie. Taka konstrukcja jest używana w wielu językach programowania zorientowanych obiektowo takich jak JavaScript czy Java. W praktyce pętle te są używane do iteracji przez listy tablice lub do wykonywania powtarzalnych zadań w kodzie. Dobre praktyki zalecają wybór pętli for gdy zakres iteracji jest znany z góry co poprawia czytelność i utrzymanie kodu. Zrozumienie jak pętla while może być przekształcona w pętlę for i odwrotnie jest podstawową umiejętnością w programowaniu co pozwala na elastyczność w pisaniu kodu i lepsze dostosowanie do specyficznych potrzeb aplikacji.

Pytanie 36

Polecenie serwera MySQL w postaci

REVOKE DELETE, UPDATE ON pracownicy FROM 'tKowal'@'localhost'
spowoduje, że użytkownikowi tKowal zostaną
A. przydzielone uprawnienia do wszelkich zmian struktury tabeli pracownicy
B. odebrane uprawnienia usuwania oraz dodawania rekordów w tabeli pracownicy
C. odebrane prawa usuwania i modyfikowania danych w tabeli pracownicy
D. przydzielone uprawnienia do usuwania oraz aktualizowania danych w tabeli pracownicy
Odpowiedź wskazuje, że użytkownikowi tKowal odebrane zostały prawa usuwania i modyfikowania danych w tabeli pracownicy za pomocą polecenia REVOKE. W kontekście zarządzania uprawnieniami w MySQL, polecenie REVOKE jest kluczowym narzędziem, które umożliwia administratorom bazy danych kontrolowanie dostępu użytkowników do różnych operacji na danych. W tym przypadku, przy użyciu REVOKE DELETE, UPDATE, administrator zdejmuje z użytkownika tKowal możliwość usuwania (DELETE) oraz aktualizowania (UPDATE) rekordów w tabeli pracownicy. Praktycznym zastosowaniem tej funkcji może być sytuacja, gdy administrator chce ograniczyć dostęp do wrażliwych danych, aby zapobiec przypadkowemu lub nieuprawnionemu usunięciu informacji. Dobrą praktyką jest regularne przeglądanie i aktualizowanie uprawnień użytkowników, aby zapewnić, że mają oni tylko te uprawnienia, które są im niezbędne do wykonywania swoich obowiązków, co przyczynia się do zwiększenia bezpieczeństwa danych.

Pytanie 37

Algorytm porządkowania tablicy, który polega na wielokrotnym porównywaniu ze sobą par sąsiednich elementów oraz ich zamianie, gdy warunek jest spełniony, nosi nazwę sortowania

A. szybkim
B. bąbelkowym
C. przez wybór
D. przez scalanie
Sortowanie bąbelkowe, znane również jako bubble sort, to jeden z najprostszych algorytmów sortowania. Działa on na zasadzie wielokrotnego porównywania dwóch sąsiadujących ze sobą elementów tablicy. Jeśli elementy są w niewłaściwej kolejności, zostają zamienione miejscami. Proces ten powtarza się, aż cała tablica będzie posortowana. Algorytm ten jest szczególnie łatwy do zrozumienia i wdrożenia, co czyni go popularnym wśród początkujących programistów. Chociaż sortowanie bąbelkowe jest stosunkowo mało efektywne w przypadku dużych zbiorów danych — jego złożoność czasowa wynosi O(n^2) w najgorszym przypadku — ma swoje zastosowanie w edukacji, jako wprowadzenie do koncepcji algorytmów sortujących. Przykład zastosowania sortowania bąbelkowego może wystąpić w sytuacjach, gdy liczba elementów do posortowania jest mała lub gdy zrozumienie podstawowych mechanizmów sortujących jest celem nauki. W praktyce, sortowanie bąbelkowe często służy do ilustracji problemów z optymalizacją i efektywnością algorytmów, co jest istotne dla rozwoju umiejętności programistycznych.

Pytanie 38

Jakiego zdarzenia należy użyć, aby funkcja JavaScript była uruchamiana za każdym razem, gdy użytkownik wprowadzi jakikolwiek znak w polu edycji?

A. onkeydown
B. onload
C. onmouseout
D. onclick
Zdarzenie 'onclick' jest używane do wykrywania kliknięć myszą, a nie do monitorowania wprowadzania tekstu. Dlatego nie jest odpowiednie dla tego kontekstu, gdzie istotne jest reagowanie na każde naciśnięcie klawisza. Kiedy użytkownik klika w pole edycji, nie oznacza to, że wprowadza tekst; to zdarzenie jedynie wskazuje na interakcję myszą. Z tego powodu poleganie na 'onclick' nie pozwoli na prawidłowe reagowanie na wprowadzanie danych przez użytkownika. Z drugiej strony, 'onmouseout' jest zdarzeniem, które wywoływane jest, gdy kursor myszki opuszcza element, co również nie ma zastosowania w sytuacji, gdy chcemy monitorować tekst wprowadzany przez użytkownika. Takie podejście może prowadzić do nieporozumień, ponieważ 'onmouseout' nie dotyczy interakcji związanej z klawiaturą. Z kolei 'onload' jest stosowane do wykrywania momentu, gdy strona internetowa lub element na niej załadują się całkowicie. To zdarzenie również nie ma zastosowania w kontekście wprowadzania tekstu, ponieważ nie jest związane z interakcją użytkownika. Kluczowe jest zrozumienie, że każde z tych zdarzeń ma swoje specyficzne zastosowania, a wybór niewłaściwego zdarzenia może prowadzić do nieefektywnego działania aplikacji oraz utrudnienia w interakcji z użytkownikiem. Dlatego istotne jest zrozumienie różnicy pomiędzy tymi zdarzeniami oraz ich kontekstem użycia.

Pytanie 39

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 4.
B. Efekt 3.
C. Efekt 2.
D. Efekt 1.
Gratulacje, wybrałeś poprawną odpowiedź, która jest 'Efekt 4'. W tym przypadku, dokument HTML został odpowiednio sformatowany za pomocą kodu CSS. Widzimy, że pseudoelement ::after został użyty do dodania tekstu '- Pies' za każdym elementem listy. Jest to często stosowana technika w CSS do dodawania dekoracji lub dodatkowych informacji do elementów na stronie. Dodatkowo, widzimy, że styl CSS definiuje kolor tła jako 'teal' i kolor tekstu jako 'white'. Jest to zgodne z zasadami dobrego projektowania stron internetowych, które sugerują, że kontrast między kolorem tekstu a tłem powinien być wystarczający, aby tekst był łatwo czytelny. Również dobrym podejściem jest utrzymanie spójności kolorów na stronie internetowej, co poprawia jej estetykę i profesjonalizm. W praktyce, umiejętność manipulacji elementami HTML za pomocą CSS jest kluczowa dla każdego front-end developera.

Pytanie 40

Do modyfikacji danych w bazie danych można wykorzystać

A. kwerendę SELECT
B. raport
C. formularz
D. filtrowanie
Formularz jest narzędziem, które umożliwia użytkownikom wprowadzanie i edytowanie danych w bazie danych w sposób przyjazny i intuicyjny. Przy użyciu formularzy można łatwo zdefiniować, jakie dane mają być wprowadzone, oraz w jakim formacie, co znacząco ogranicza ryzyko błędów. W praktyce, formularze są powszechnie wykorzystywane w aplikacjach webowych oraz systemach zarządzania danymi, takich jak systemy CRM czy ERP. Umożliwiają one także walidację danych przed ich zapisaniem w bazie, co jest ważnym krokiem w zapewnieniu integralności danych. Wykorzystanie formularzy w projektowaniu aplikacji jest zgodne z zasadami UX, które kładą nacisk na łatwość obsługi i wygodę użytkownika. Dodatkowo, standardy takie jak HTML5 oferują różnorodne elementy formularzy, które można łatwo integrować z backendem, co ułatwia przechwytywanie danych i ich późniejsze przetwarzanie.