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: 10 kwietnia 2026 11:12
  • Data zakończenia: 10 kwietnia 2026 11:33

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu— sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Standard kodowania ISO-8859-2 jest używany do poprawnego wyświetlania

A. symboli matematycznych
B. znaków zarezerwowanych dla języka opisu strony
C. polskich liter, takich jak: ś, ć, ń, ó, ą
D. znaków specjalnych dla języka kodu strony
Wybór odpowiedzi dotyczący znaków specjalnych dla języka kodu strony sugeruje, że ISO-8859-2 byłoby używane do obsługi elementów związanych z kodowaniem strony, co jest mylące. Chociaż kodowanie znaków jest istotne dla wyświetlania treści, odnosi się ono głównie do sposobu, w jaki znaki są reprezentowane w kodzie komputerowym, a nie do języka kodu strony. Z kolei odpowiedź dotycząca znaków zarezerwowanych dla języka opisu strony wprowadza dodatkowy zamęt, ponieważ zarezerwowane znaki nie mają związku z kodowaniem znaków, lecz dotyczy to specyficznych symboli i elementów w języku HTML, które mogą być interpretowane przez przeglądarki. Ostatnia odpowiedź sugerująca, że ISO-8859-2 jest używane dla symboli matematycznych nie ma podstaw, ponieważ ten standard koncentruje się na znakach używanych w językach europejskich. Takie nieprawidłowe podejścia mogą wynikać z braku zrozumienia specyfikacji standardów kodowania, co prowadzi do nieporozumień w zakresie ich zastosowania w praktyce. Należy pamiętać, że w kontekście tworzenia stron internetowych kluczowe jest wykorzystanie odpowiedniego kodowania, które zapewnia prawidłowe wyświetlanie treści, a nie symboli specyficznych dla danej dziedziny. Dlatego, dla zrozumienia znaczenia kodowania znaków, niezbędne jest zapoznanie się z dokumentacją oraz standardami, które definiują, jak różne znaki są reprezentowane w różnych kodowaniach.

Pytanie 2

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. tr:active { background-color: Pink; }
B. tr { background-color: Pink; }
C. td, th { background-color: Pink; }
D. tr:hover { background-color: Pink; }
W tym zadaniu chodzi o zrozumienie, jak działają selektory CSS oraz pseudo-klasy odpowiedzialne za interakcję z użytkownikiem. Jeśli efekt ma pojawiać się tylko wtedy, gdy użytkownik najedzie myszką na wiersz tabeli, to zwykłe ustawienie background-color bez pseudo-klasy nie spełni tego warunku. Deklaracja tr { background-color: Pink; } oznaczałaby, że wszystkie wiersze tabeli są cały czas różowe, niezależnie od tego, czy ktoś na nie najedzie, czy nie. To jest po prostu styl statyczny, bez żadnej reakcji na zdarzenia. Podobnie zapis td, th { background-color: Pink; } ustawia tło dla wszystkich komórek tabeli (zarówno nagłówkowych th, jak i zwykłych td) w sposób stały. Moim zdaniem to dość częsty błąd: ktoś kojarzy tabelę z komórkami i intuicyjnie styluje td/th, ale zapomina, że w pytaniu chodzi o efekt dynamiczny „po najechaniu”. W rezultacie otrzymujemy tabelę pokolorowaną na stałe, bez jakiejkolwiek interakcji, co jest sprzeczne z założeniem zadania i z typowym zachowaniem tabel w nowoczesnych interfejsach. Ciekawsza jest kwestia selektora tr:active { background-color: Pink; }. Pseudo-klasa :active oznacza element w momencie „aktywacji”, czyli najczęściej w chwili klikania (przytrzymania przycisku myszy). Efekt trwa bardzo krótko, tylko w czasie samego kliknięcia. To zupełnie inny scenariusz niż wygodne podświetlenie wiersza, które ma się utrzymywać, dopóki kursor jest nad elementem. Użycie :active prowadzi do efektu, który miga na ułamek sekundy i z punktu widzenia ergonomii jest praktycznie bezużyteczny w kontekście podświetlania wierszy. Typowy błąd myślowy przy takich pytaniach polega na myleniu różnych pseudo-klas: :hover, :active, :focus. W webdevie przyjęło się, że :hover służy do reakcji na najechanie myszką, :active do krótkiej reakcji na kliknięcie, a :focus do zaznaczenia elementu, który ma aktualnie fokus klawiatury. Standardy CSS i dobre praktyki projektowania interfejsów jasno wskazują, że do efektu „podświetl wiersz, gdy nad nim jestem” należy użyć właśnie :hover na odpowiednim elemencie, czyli w tym przypadku tr. Wszystkie pozostałe odpowiedzi ignorują tę zasadę albo stosują nie tę pseudo-klasę, co trzeba, przez co nie odzwierciedlają poprawnie zachowania pokazanego w materiale wideo.

Pytanie 3

W języku PHP znajduje się poniższa instrukcja pętli. Ile iteracji wykona ta pętla, zakładając, że zmienna kontrolna nie jest zmieniana w jej wnętrzu i nie zastosowano instrukcji przerywającej pętlę typu break?

for ($i = 10; $i <= 100; $i += 10)
A. 100 iteracji
B. 11 iteracji
C. 9 iteracji
D. 10 iteracji
Podana pętla w języku PHP jest zdefiniowana jako: for ($i = 10; $i <= 100; $i += 10). W tym przypadku, zmienna sterująca $i jest inicjalizowana na wartość 10 i jest inkrementowana o 10 w każdej iteracji, aż osiągnie wartość 100 włącznie. Zatem, możliwe wartości zmiennej $i podczas powtórzeń pętli będą: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. W sumie daje to 10 powtórzeń, ponieważ pętla wykonuje się także dla wartości 100. W praktyce, znajomość struktur pętli w PHP jest kluczowa, szczególnie podczas przetwarzania dużych zbiorów danych, gdzie efektywność i precyzyjne kontrolowanie liczby iteracji mogą znacznie wpłynąć na wydajność skryptów. Przy implementacji pętli, warto również pamiętać o standardach czystości kodu oraz zasadach DRY (Don't Repeat Yourself), co pozwala na utrzymanie czytelności i ułatwia przyszłe modyfikacje kodu.

Pytanie 4

Na ilustracji przedstawiono

Ilustracja do pytania
A. analizę poprawności kodu strony internetowej.
B. testy bezpieczeństwa strony.
C. analizę ruchu sieciowego między serwerem a przeglądarką.
D. testy funkcjonalne strony interenetowej.
Na ilustracji widoczna jest zakładka „Network” w narzędziach deweloperskich przeglądarki, a nie panel do testów funkcjonalnych, skanera bezpieczeństwa ani walidatora kodu HTML/CSS. Wiele osób myli te pojęcia, bo wszystko dzieje się w przeglądarce i dotyczy tej samej strony, ale zakres i cel tych narzędzi jest zupełnie inny. Testy funkcjonalne strony internetowej dotyczą sprawdzenia, czy funkcje działają zgodnie z wymaganiami: czy formularz poprawnie się wysyła, czy przyciski reagują, czy logowanie i rejestracja działają poprawnie, czy przekierowania prowadzą we właściwe miejsca. Do tego używa się zwykle scenariuszy testowych, narzędzi typu Selenium, Cypress, Playwright itp. Sama zakładka Network tylko pokazuje żądania HTTP i odpowiedzi, nie „wie”, czy logowanie jest zgodne z wymaganiami biznesowymi. Z kolei testy bezpieczeństwa strony obejmują takie tematy jak podatność na SQL Injection, XSS, CSRF, błędne konfiguracje nagłówków bezpieczeństwa, słabe hasła, podatne biblioteki. Do tego służą skanery bezpieczeństwa (np. OWASP ZAP, Burp Suite), audyty kodu, testy penetracyjne. W DevTools możesz co najwyżej podejrzeć pewne nagłówki bezpieczeństwa, ale to wciąż tylko analiza ruchu, a nie pełny test security. Analiza poprawności kodu strony internetowej to znowu coś innego: walidacja HTML i CSS (np. W3C Validator), lintowanie JavaScript (ESLint), sprawdzanie składni i semantyki. Na ekranie nie ma żadnych komunikatów walidatora, tylko tabela żądań sieciowych. Typowym błędem myślowym jest tu skupienie się na tym, że „to narzędzia deweloperskie, więc pewnie testy” albo „widzę pliki CSS i JS, więc to analiza kodu”. Tymczasem kluczowe jest to, co faktycznie pokazuje interfejs: czasy, statusy HTTP, typy zasobów, rozmiary odpowiedzi. To klasyczne monitorowanie i analizowanie ruchu sieciowego między przeglądarką a serwerem, które pomaga w debugowaniu komunikacji klient–serwer, optymalizacji wydajności i diagnozowaniu błędów ładowania zasobów.

Pytanie 5

Wbudowanym w pakiet XAMPP narzędziem służącym do zarządzania bazą danych jest

A. phpMyAdmin
B. SQLite
C. MySQL Workbench
D. pgAdmin
W tym pytaniu łatwo się pomylić, bo wszystkie podane nazwy są w jakiś sposób związane z bazami danych, ale tylko jedna z nich jest faktycznie wbudowana w XAMPP jako standardowe narzędzie. XAMPP to pakiet, który ma ułatwić uruchomienie lokalnego środowiska serwerowego (Apache, PHP, MySQL/MariaDB itd.) jednym instalatorem. Jego celem jest „postawienie” gotowego stosu webowego na komputerze programisty. Z tego powodu twórcy XAMPP dołączyli phpMyAdmin, bo jest lekkie, webowe i napisane w PHP, więc idealnie pasuje do tego ekosystemu. MySQL Workbench bywa mylony z narzędziami w XAMPP, bo też służy do zarządzania MySQL, ale jest to osobna, natywna aplikacja instalowana oddzielnie, dostarczana przez Oracle. Nie jest częścią XAMPP, nie uruchamia się z panelu XAMPP i nie działa w przeglądarce. To bardziej rozbudowane środowisko do projektowania schematów, administrowania serwerami MySQL, analizowania wydajności. Dla wielu początkujących wygląda „profesjonalniej”, ale w typowej instalacji XAMPP go po prostu nie ma. pgAdmin z kolei jest narzędziem do zarządzania PostgreSQL, a XAMPP domyślnie korzysta z MySQL/MariaDB, nie z PostgreSQL. Stąd pgAdmin nie ma żadnego naturalnego powiązania z XAMPP, występuje raczej w pakietach, które celują w środowisko PostgreSQL (np. instalatory Postgresa). Wybranie tej odpowiedzi zwykle wynika z myślenia: „to jakieś narzędzie do bazy, więc pewnie będzie pasować”, ale tu trzeba zwracać uwagę na konkretny silnik bazy danych. SQLite natomiast nie jest nawet narzędziem administracyjnym, tylko samym silnikiem bazy danych, w dodatku wbudowanym, plikowym. Można z niego korzystać w PHP, ale nie ma tu mowy o tym, że byłby to graficzny panel w XAMPP. Typowy błąd polega na wrzuceniu do jednego worka „wszystko co ma coś wspólnego z bazami” i zakładaniu, że to będzie interfejs do zarządzania. W praktyce warto rozróżniać: silnik bazy (MySQL, MariaDB, PostgreSQL, SQLite) od narzędzia klienckiego/administracyjnego (phpMyAdmin, MySQL Workbench, pgAdmin). W XAMPP, jako narzędzie wbudowane, występuje właśnie phpMyAdmin i to jego nazwę trzeba kojarzyć bezpośrednio z tym pakietem.

Pytanie 6

Podaj dwa sposoby ochrony bazy danych Microsoft Access?

A. Zaszyfrowanie pliku bazy danych oraz wiadomości SMS z kodem autoryzacyjnym
B. Ustalenie zabezpieczeń na poziomie użytkownika i sesji
C. Ustalenie hasła do otwarcia bazy danych oraz zabezpieczeń na poziomie użytkownika
D. Funkcje anonimowe oraz ustawienie hasła do bazy danych
W analizie pozostałych odpowiedzi można zauważyć, że wiele z nich nie odnosi się do skutecznych metod ochrony bazy danych Microsoft Access. Na przykład, funkcje anonimowe nie są standardową metodą zabezpieczania baz danych. Anonimizacja danych może być stosowana w kontekście ochrony prywatności, ale nie zapobiega dostępowi do samej bazy danych. Ponadto, ustalenie hasła otwarcia bazy danych bez dodatkowych zabezpieczeń nie zapewnia pełnej ochrony, ponieważ łatwe do odgadnięcia hasła mogą być szybko złamane przez atakujących. W kontekście zabezpieczeń SMS z kodem autoryzującym, warto zauważyć, że ta metoda w zasadzie nie jest stosowana w Microsoft Access. Chociaż SMS-y z kodami mogą być skuteczne w autoryzacji na poziomie aplikacji lub systemów webowych, Access nie obsługuje takiej funkcji. Wprowadzenie takich środków może być mylące i nie prowadzi do rzeczywistego zabezpieczenia bazy danych. Podobnie, ustalenie zabezpieczeń na poziomie sesji, mimo że jest ważne w niektórych systemach, nie znajduje zastosowania w Access, który nie obsługuje bardziej zaawansowanych metod autoryzacji sesji, jak to ma miejsce w systemach zarządzania bazami danych wysokiego poziomu, takich jak SQL Server. W skrócie, brak znajomości funkcji i ograniczeń Microsoft Access prowadzi do zaproponowania nieefektywnych metod zabezpieczeń.

Pytanie 7

Do jakiego celu służy polecenie mysqldump?

A. stworzenia kopii zapasowej bazy
B. sprawdzenia integralności bazy
C. optymalizacji bazy
D. naprawy niespójnej bazy
Niektóre odpowiedzi mogą wydawać się na pierwszy rzut oka sensowne, jednak ich analiza pokazuje, że nie oddają one rzeczywistej funkcji mysqldump. Naprawa niespójnej bazy danych jest zadaniem, które wymaga zastosowania innych narzędzi, takich jak `myisamchk` dla silnika MyISAM lub `innodb_force_recovery` dla silnika InnoDB. Mysqldump nie zawiera mechanizmów naprawczych, więc jego użycie w tym kontekście jest błędne. Ponadto proces optymalizacji bazy danych, taki jak reorganizacja indeksów czy usuwanie nieużywanych danych, również nie jest domeną mysqldump, lecz narzędzi takich jak `OPTIMIZE TABLE` czy `ANALYZE TABLE`. Kolejnym błędnym podejściem jest sugestia, że mysqldump służy do sprawdzania integralności bazy danych. Integralność danych w bazach MySQL zapewniają różne mechanizmy, w tym transakcje, a także kontrola spójności danych na poziomie aplikacji. Mysqldump nie jest narzędziem do przeprowadzania walidacji danych ani analizy ich integralności, a skupić się powinien przede wszystkim na tworzeniu kopii zapasowych. W związku z tym, aby poprawnie zrozumieć zastosowanie mysqldump, warto wystrzegać się mylnych przekonań dotyczących jego funkcji, bazując na rzeczywistych możliwości tego narzędzia. Właściwe zrozumienie ról różnych narzędzi w ekosystemie baz danych jest kluczowe dla efektywnego zarządzania i ochrony danych.

Pytanie 8

Wskaź na właściwą sekwencję tworzenia aplikacji?

A. Tworzenie, analiza potrzeb klienta, specyfikacja wymagań, wdrażanie, testowanie
B. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, wdrażanie, testowanie
C. Specyfikacja wymagań, analiza potrzeb klienta, tworzenie, wdrażanie, testowanie
D. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, testowanie, wdrażanie
Nieprawidłowe odpowiedzi w kwestii kolejności tworzenia aplikacji bazują na błędnych założeniach dotyczących etapów procesu. W pierwszej z tych odpowiedzi, pominięcie analizy wymagań klienta na rzecz specyfikacji powoduje, że projekt może nie spełniać oczekiwań użytkowników, co prowadzi do nieefektywnego wykorzystania zasobów oraz czasu. Specyfikacja wymagań musi być tworzona na podstawie dokładnej analizy potrzeb, a nie odwrotnie. Kolejna odpowiedź zaczyna się od tworzenia aplikacji bez wcześniejszej analizy i specyfikacji, co jest nie tylko technicznie błędne, ale również wiąże się z ogromnym ryzykiem powstawania błędów w kodzie i funkcjonalności, które nie odpowiadają na realne potrzeby użytkowników. W ostatnim przypadku, pomimo że analiza wymagań oraz specyfikacja są na początku, przed wdrożeniem powinny być przeprowadzone testy, aby upewnić się, że produkt działa zgodnie z oczekiwaniami. Etap testowania jest niezbędny przed wdrożeniem, ponieważ pozwala na identyfikację i naprawę błędów, co jest kluczowe dla osiągnięcia wysokiej jakości końcowego produktu. Wszelkie zmiany w tej kolejności mogą prowadzić do kosztownych błędów oraz niezadowolenia użytkowników.

Pytanie 9

Która z zasad dotyczących użycia semantycznych znaczników sekcji w języku HTML 5 jest poprawna?

A. Znacznik <footer> powinien być umieszczony na górze strony, a <header> na jej końcu
B. Znacznik <main> może być użyty tylko raz w danym dokumencie
C. Znacznik <nav> jest przypisany do sekcji <article>
D. Znacznik <aside> jest wykorzystywany dla dodatkowej treści strony
Każda z pozostałych odpowiedzi zawiera nieprawidłowe założenia dotyczące używania znaczników semantycznych w HTML5. Znacznik <nav> nie jest ograniczony do sekcji <article>, lecz jest przeznaczony do oznaczania linków nawigacyjnych w całym dokumencie, co oznacza, że może występować w różnych miejscach, nie tylko w kontekście artykułów. Z kolei umiejscowienie znaczników <footer> i <header> w odwrotnych pozycjach jest również błędne. Zgodnie z najlepszymi praktykami, <header> powinien znajdować się na górze dokumentu, a <footer> na jego końcu, co jest zgodne z intuicyjnym podejściem do struktury strony. Ostatnia odpowiedź sugerująca, że <aside> jest używane dla głównej treści strony, również nie jest prawdziwa. Znacznik <aside> służy do oznaczania treści pobocznej, która jest związana z główną treścią, ale nie jest jej integralną częścią. Przykłady błędów myślowych związanych z tymi nieprawidłowymi odpowiedziami często wynikają z mylenia funkcjonalności znaczników z ich miejscem w hierarchii dokumentu. Użycie nieprawidłowych znaczników lub niewłaściwe umiejscowienie znaczników semantycznych prowadzi do osłabienia struktury dokumentu oraz negatywnie wpływa na dostępność i SEO strony.

Pytanie 10

Która rozdzielczość jest wyrażana za pomocą jednostki ppi (ang. pixels per inch)?

A. Skanerów.
B. Obrazów tworzonych przez drukarki i plotery.
C. Cyfrowych urządzeń wykonujących pomiary.
D. Obrazów rastrowych.
Poprawnie – jednostka ppi (pixels per inch) opisuje rozdzielczość obrazów rastrowych, czyli takich, które składają się z siatki pojedynczych pikseli. Ppi mówi nam, ile pikseli przypada na jeden cal długości obrazu na ekranie lub w projekcie graficznym. Im większa liczba ppi, tym więcej informacji szczegółowych można upchnąć w tej samej fizycznej przestrzeni, a więc obraz wygląda ostrzej i bardziej szczegółowo. W praktyce ppi wykorzystuje się głównie przy pracy z grafiką rastrową w programach typu Photoshop, GIMP czy Affinity Photo. Kiedy projektujesz layout strony WWW, baner, grafikę do aplikacji mobilnej albo makietę interfejsu, to operujesz właśnie pikselami i rozdzielczością wyrażoną w ppi. Standardowo przyjmuje się np. 72–96 ppi jako typową gęstość dla ekranów komputerów, chociaż w rzeczywistości nowoczesne monitory i smartfony mają często dużo wyższe wartości, a producenci chwalą się np. „Retina” albo „High DPI”. Moim zdaniem ważne jest rozróżnienie: ppi dotyczy obrazu rastrowego jako pliku/projektu, a nie samego urządzenia drukującego. W webdesignie dobrą praktyką jest projektowanie w natywnej rozdzielczości urządzeń docelowych, z uwzględnieniem ekranów o wysokim ppi (tzw. urządzenia high-density) i przygotowywanie kilku wariantów grafik (np. 1x, 2x, 3x) tak, aby przeglądarka mogła dobrać odpowiednią wersję. W druku z kolei często przygotowuje się pliki rastrowe w rozdzielczości 300 ppi dla dobrej jakości wydruku materiałów takich jak ulotki czy plakaty. To nadal jest parametr obrazu rastrowego, który potem trafia do drukarki, a nie bezpośrednio parametr drukarki.

Pytanie 11

Tabela Pacjenci ma pola: imie, nazwisko, wiek, lekarz_id. Aby zestawić raport zawierający wyłącznie imiona i nazwiska pacjentów poniżej 18 roku życia, którzy zapisani są do lekarza o id równym 6, można posłużyć się kwerendą SQL

A. SELECT imie, nazwisko WHERE wiek < 18 AND lekarz_id = 6;
B. SELECT imie, nazwisko FROM Pacjenci WHERE wiek < 18 AND lekarz_id = 6;
C. SELECT imie, nazwisko WHERE wiek < 18 OR lekarz_id = 6;
D. SELECT imie, nazwisko FROM Pacjenci WHERE wiek < 18 OR lekarz_id = 6;
W tym zadaniu kluczowe są dwie rzeczy: poprawna składnia SQL i właściwe zrozumienie logiki warunków w klauzuli WHERE. Wiele osób intuicyjnie skupia się tylko na treści pytania i trochę pomija formalne wymagania języka, a to potem mści się w realnych systemach. Pierwszy typ błędu to pomijanie klauzuli FROM. Instrukcje w stylu SELECT imie, nazwisko WHERE wiek < 18 ... wyglądają na pierwszy rzut oka sensownie, bo jest wybór kolumn i jest warunek, ale w SQL standardowo nie da się filtrować rekordów bez wskazania źródła danych. Serwer bazodanowy musi wiedzieć, z której tabeli pobrać kolumny imie, nazwisko, wiek i lekarz_id. Brak FROM Pacjenci powoduje po prostu błąd składni, a nie „prawie działającą” kwerendę. Z mojego doświadczenia to bardzo typowy błąd osób zaczynających przygodę z SQL: mieszanie logiki „co chcę” z tym „jak to ma być zapisane w języku”. Drugi, bardziej podstępny problem to mylenie operatorów logicznych AND i OR. W zadaniu chodzi o pacjentów poniżej 18 roku życia, którzy jednocześnie są przypisani do lekarza o id = 6. To jest klasyczny przypadek koniunkcji – oba warunki muszą być spełnione. Użycie OR zamiast AND powoduje zupełnie inne działanie: zapytanie zwróci wszystkich pacjentów młodszych niż 18 lat niezależnie od lekarza, a dodatkowo wszystkich pacjentów lekarza nr 6 w każdym wieku. W praktyce taki raport byłby kompletnie niezgodny z założeniem, a co gorsza, na pierwszy rzut oka mógłby wyglądać „prawie dobrze”, bo część wyników się zgadza. Warto też zwrócić uwagę na to, że przy prostych warunkach AND/OR bez nawiasów kolejność oceny może być myląca, dlatego dobrą praktyką w bardziej złożonych zapytaniach jest stosowanie nawiasów, np. WHERE (wiek < 18 AND lekarz_id = 6) OR ... itd. Tutaj warunek jest prosty, ale nawyk myślenia o logice boole’owskiej bardzo się przydaje. Podsumowując, poprawne zapytanie musi mieć: wskazaną tabelę w klauzuli FROM, właściwie dobrane kolumny w SELECT oraz warunek z użyciem AND, który zawęża wynik do rekordów spełniających oba kryteria jednocześnie. Pomyłki w którymkolwiek z tych elementów prowadzą albo do błędu składni, albo – co gorsza – do logicznie błędnych raportów, których użytkownik nie zauważy od razu, a to w systemach produkcyjnych bywa naprawdę groźne.

Pytanie 12

W HTML-u znacznik tekst będzie prezentowany przez przeglądarkę w sposób identyczny do znacznika

A. <sub>tekst</sub>
B. <b>tekst</b>
C. <big>tekst</big>
D. <h1>tekst</h1>
Wybór znaczników <sub>, <h1>, czy <big> w odpowiedzi na pytanie o semantykę i stylizację tekstu jest nieadekwatny. Znacznik <sub> służy do podkreślenia tekstu dolnego, najczęściej używanego w kontekście chemicznym lub matematycznym, np. H₂O, i nie ma nic wspólnego z wyróżnianiem ważności tekstu. Natomiast <h1> to znacznik nagłówka, który definiuje tytuł sekcji lub podsekcji na stronie internetowej. Użycie <h1> dla tekstu, który ma być po prostu pogrubiony, wprowadza w błąd w kontekście struktury semantycznej dokumentu HTML, ponieważ nagłówki mają swoją hierarchię i powinny być używane w odpowiednich miejscach, zgodnie z zasadami SEO. Znacznik <big> z kolei powiększa rozmiar czcionki, co nie jest równoważne z wyróżnieniem tekstu jako ważnego. Każdy z tych znaczników ma własne zastosowanie, ale nie można ich używać zamiennie z <strong>, ponieważ nie przekazują one tego samego znaczenia semantycznego. Przy projektowaniu stron internetowych kluczowe jest stosowanie znaczników zgodnie z ich przeznaczeniem, aby mieć pewność, że treść jest właściwie interpretowana przez przeglądarki oraz urządzenia asystujące.

Pytanie 13

Którą czynność gwarantującą poprawne wykonanie przedstawionego kodu Java Script, należy wykonać przed pętlą?

var text;
for ( var i = 0; i < tab.length; i++ ) {
  text += tab[i] + "<br>";
}
A. Sprawdzić rozmiar tabeli tab.
B. Sprawdzić czy text j est typu znakowego.
C. Zadeklarować zmienną i.
D. Zainicjować zmienną text.
Dobrze! Prawidłową odpowiedzią jest 'Zainicjować zmienną text'. W języku JavaScript, przed rozpoczęciem pętli, istotne jest zainicjowanie zmiennej, która będzie używana do akumulacji wyników. Zmienna 'text' w tym przypadku spełnia tę rolę. Jej prawidłowe zainicjowanie, czyli przypisanie jej początkowej wartości, zazwyczaj pustego ciągu znaków ('text = "";'), jest kluczowe dla poprawnej pracy kodu. Pozwala to na uniknięcie błędów związanych z niezdefiniowaną zmienną. Jest to standardowa procedura stosowana w wielu językach programowania, nie tylko w JavaScript. Zrozumienie i zastosowanie tej praktyki pomaga w pisaniu czystego i efektywnego kodu.

Pytanie 14

Które zapytanie MySQL należy użyć, aby usunąć jedynie pracowników, którzy zarabiają nie mniej niż 500 i nie więcej niż 1000 zł oraz ich miejsce pracy zawiera frazę tx

A. DELETE FROM pracownicy WHERE pensja IN (500,1000) AND miejsce_pracy LIKE '*tx*';
B. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 AND miejsce_pracy LIKE '%tx%';
C. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 OR miejsce_pracy LIKE '%tx%';
D. DELETE FROM pracownicy WHERE pensja > 500 AND pensja < 1000 AND miejsce_pracy LIKE '%tx%';
W tym zadaniu widać kilka typowych pułapek związanych z SQL-em: składnią operatora LIKE, doborem zakresu liczbowego oraz użyciem spójników logicznych AND i OR. Zacznijmy od wzorca tekstowego. W MySQL, zgodnie ze standardową składnią SQL, do dopasowań wzorców używa się znaków % i _. Procent oznacza dowolny ciąg znaków, a podkreślnik pojedynczy znak. Natomiast gwiazdka * nie jest prawidłowym wildcardem w operatorze LIKE, więc zapis typu LIKE '*tx*' po prostu nie zadziała tak, jak większość osób intuicyjnie zakłada. To jest częsty błąd u osób, które mieszają składnię SQL z np. wyrażeniami w stylu systemów plików czy niektórych narzędzi linuksowych. Kolejna sprawa to warunki logiczne. W tym poleceniu chodziło o wybranie rekordów, które spełniają oba kryteria jednocześnie: pensja w określonym przedziale i miejsce pracy zawiera „tx”. Użycie operatora OR całkowicie zmienia znaczenie zapytania, bo wtedy wystarczy, że spełniony jest tylko jeden z warunków. W efekcie można by usunąć osoby, które mają odpowiednią pensję, ale w ogóle nie mają „tx” w miejscu pracy, albo odwrotnie – mają „tx” w miejscu pracy, ale zarabiają dużo mniej lub więcej niż zadany zakres. To klasyczny przykład nieprecyzyjnie dobranego spójnika logicznego, który na produkcyjnej bazie może zakończyć się masowym usunięciem nie tych danych, co trzeba. Trzeci problem dotyczy interpretacji zakresu. Operator IN z wartościami (500,1000) nie wybiera przedziału od 500 do 1000, tylko dokładnie dwie wartości: 500 i 1000. To nie ma nic wspólnego z „między 500 a 1000”, więc zadanie nie byłoby zrealizowane. Z drugiej strony użycie warunku pensja > 500 AND pensja < 1000 wyklucza wartości graniczne, czyli 500 i 1000, co jest sprzeczne z opisem „nie mniej niż 500 i nie więcej niż 1000”. Z mojego doświadczenia najczęściej takie błędy wynikają z pośpiechu i nieprzeczytania dokładnie treści zadania. Dobra praktyka jest taka, żeby zawsze świadomie decydować, czy zakres ma być domknięty (BETWEEN) czy otwarty (>, <) oraz żeby testować zapytanie w wersji SELECT przed wykonaniem operacji DELETE albo UPDATE. To pozwala od razu zauważyć, że warunki logiczne albo wzorzec LIKE nie działają tak, jak zakładaliśmy w głowie.

Pytanie 15

Określ rodzaj relacji między tabelami: Tabela1 oraz Tabela3?

Ilustracja do pytania
A. Jeden do wielu
B. Wiele do jednego
C. Jeden do jednego
D. Wiele do wielu
Rozważając różne typy relacji pomiędzy tabelami w relacyjnych bazach danych, istotne jest zrozumienie konceptu kluczy i połączeń. Relacja jeden do jednego implikuje, że każdemu rekordowi w jednej tabeli odpowiada dokładnie jeden rekord w drugiej. Stosuje się ją tam, gdzie dane można logicznie podzielić na dwie części, jak np. dane osobowe i szczegółowe informacje kontaktowe danej osoby. Relacja jeden do wielu oznacza, że jeden rekord z pierwszej tabeli łączy się z wieloma rekordami w drugiej. Przykładowo, jeden autor może napisać wiele książek. Taka struktura jest typowa przy modelowaniu hierarchii danych i przy relacjach typu rodzic-dziecko. W przypadku relacji wiele do wielu, potrzebna jest trzecia tabela, która pośredniczy między dwoma głównymi tabelami, przechowując ich klucze obce. Umożliwia to powiązanie wielu rekordów z obu stron. Typowe błędy polegają na niepoprawnym wyborze typu relacji, co prowadzi do redundancji danych i problemów z integralnością. Zrozumienie i prawidłowe zastosowanie tych koncepcji jest kluczowe dla projektowania efektywnych i skalowalnych baz danych, wspierając jednocześnie złożone operacje i analizy. Wybór niewłaściwego typu relacji może prowadzić do trudności w zarządzaniu danymi i skomplikowanych zapytań, co jest znanym wyzwaniem w zarządzaniu bazami danych.

Pytanie 16

Zapis w CSS `h2 {background-color: green;}` spowoduje, że kolor zielony będzie dotyczył

A. tła całej witryny
B. czcionki nagłówków drugiego poziomu
C. czcionki wszystkich nagłówków na stronie
D. tła tekstu nagłówka drugiego poziomu
No dobra, wszystkie inne odpowiedzi są błędne z paru powodów. Mówiąc, że ten zapis CSS dotyczy tła całej strony, jest to trochę nieprecyzyjne, bo ta reguła odnosi się tylko do nagłówków h2. Zmiana tła strony to inna sprawa i robi się to w sekcji <body>, a nie przez nagłówek. Jeszcze ta kwestia z kolorem zielonym – to nie jest kolor czcionki nagłówka, bo 'background-color' zmienia tylko tło, a nie kolor tekstu. Żeby zmienić kolor czcionki, musimy użyć 'color', bo to jest zupełnie inna funkcjonalność w CSS. I ostatni błąd to stwierdzenie, że styl dotyczy czcionki każdego nagłówka na stronie. Jeśli nie ustawimy ogólnych stylów dla wszystkich nagłówków, to ta reguła działa tylko na h2. Warto zrozumieć, jak CSS działa, żeby wiedzieć, jakie właściwości kiedy używać i co dokładnie one robią w kontekście HTML.

Pytanie 17

W HTML wprowadzono tag a. Co oznacza wartość nofollow w atrybucie rel?

<a href="http://website.com" rel="nofollow">link</a>
A. oznacza, że naciśnięcie na link spowoduje jego otwarcie w nowej karcie przeglądarki
B. jest wskazówką dla przeglądarki internetowej, aby nie interpretowała słowa 'link' jako hiperłącza
C. jest komunikatem dla robota wyszukiwarki Google, by nie śledził tego linku
D. oznacza, że kliknięcie na link nie przekieruje do strony website.com
Nofollow to nie jest informacja dla przeglądarki, żeby nie pokazywała linka jak normalnego odnośnika. Linki wciąż będą wyglądały jak zwykłe linki HTML. Atrybut nofollow dotyczy tylko tego, jak roboty wyszukiwarek traktują ten link, a nie jak wygląda on na stronie. Jak chcesz, żeby link otwierał się w nowej karcie, to musisz użyć atrybutu target z _blank. Nofollow nie ma wpływu na to, gdzie prowadzi link, więc kliknięcie w niego zawsze przeniesie cię na daną stronę, niezależnie od tego, czy jest tam nofollow czy nie. Jego rola jest tylko w SEO i w tym, jak wpływa na PageRank, a nie w tym, co widzą użytkownicy.

Pytanie 18

Jaką cechę wyróżnia format PNG?

A. kompresję bezstratną
B. możliwość reprezentacji grafiki wektorowej
C. niedostępność kanału alfa
D. możliwość obsługi animacji
Odpowiedzi dotyczące obsługi animacji, braku obsługi kanału alfa oraz reprezentacji grafiki wektorowej są niepoprawne na poziomie technicznym. Format PNG nie wspiera animacji, co czyni go innym od formatów takich jak GIF, które pozwalają na tworzenie prostych animacji. PNG został zaprojektowany do przechowywania statycznych obrazów, co jest istotną różnicą w jego zastosowaniach w porównaniu do animowanych formatów graficznych. Ponadto, PNG obsługuje kanał alfa, co oznacza, że można tworzyć obrazy z przezroczystością, umożliwiając projektantom używanie tego formatu do tworzenia złożonych kompozycji wizualnych z różnymi poziomami przezroczystości. Na koniec, PNG nie jest formatem do reprezentacji grafiki wektorowej. Grafika wektorowa opiera się na matematycznych opisach kształtów, a typowymi formatami dla takich zastosowań są SVG lub AI. PNG natomiast jest formatem rastrowym, który składa się z pikseli, co ogranicza jego zastosowanie do ilustracji złożonych z bitmap, a nie z definicji wektorowych. Dlatego dla każdego z wymienionych punktów istnieją konkretne podstawy techniczne, które potwierdzają, dlaczego nie są one odpowiednie dla opisanego formatu.

Pytanie 19

W języku HTML, aby połączyć w pionie dwie sąsiadujące komórki w kolumnie tabeli, należy użyć atrybutu

A. cellspacing
B. rowspan
C. colspan
D. cellpadding
Atrybut rowspan w języku HTML jest kluczowy do scalania komórek tabeli w pionie, co oznacza, że pozwala na połączenie dwóch lub więcej komórek w jednej kolumnie w jedną, większą komórkę. Dzięki temu, można uzyskać bardziej przejrzysty i zorganizowany układ informacji w tabelach, zwłaszcza w przypadku danych, które są ze sobą powiązane. Na przykład, jeśli mamy tabelę, w której jeden z wierszy odnosi się do tytułu kategorii, a poniżej znajdują się różne elementy tej kategorii, użycie atrybutu rowspan w pierwszej komórce umożliwi jej rozszerzenie na kilka wierszy, co wizualnie połączy te dane. Standard HTML5 definiuje atrybut rowspan jako atrybut, który przyjmuje wartość liczbową, określającą liczbę wierszy, które mają zostać scalone. Przykładowy kod HTML mógłby wyglądać następująco: <table><tr><td rowspan='3'>Kategoria</td><td>Element 1</td></tr><tr><td>Element 2</td></tr><tr><td>Element 3</td></tr></table>, co w efekcie tworzy jedną komórkę o wysokości trzech wierszy oraz trzy osobne komórki w drugiej kolumnie. Użycie rowspan w praktyce jest nie tylko estetyczne, ale również poprawia czytelność danych, co jest niezmiernie ważne w interfejsach użytkownika.

Pytanie 20

Po wykonaniu poniższego kodu PHP, w zmiennej $napis znajduje się tekst:

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. og
B. gr
C. ogram
D. gramo
Wybór odpowiedzi 'gr' lub 'og' oraz 'ogram' jest wynikiem nieporozumienia dotyczącego działania funkcji substr() w PHP. Funkcja ta nie zwraca pierwszych kilku znaków z łańcucha, lecz podciąg zaczynający się od określonego indeksu. W przypadku odpowiedzi 'gr', wydaje się, że koncentrujesz się na pierwszych dwóch znakach od momentu, gdy substr() zaczyna od indeksu 3, co jest błędne. Indeks 3 w łańcuchu 'Programowanie w PHP' wskazuje na literę 'g', a nie zawiera żadnych liter przed nią. Z kolei odpowiedź 'og' pomija literę 'r', co również jest błędne. Natomiast wybór 'ogram' może wynikać z mylnego przekonania, że substr() zwraca więcej znaków, niż rzeczywiście to robi. Funkcja substr() działa na zasadzie podawania precyzyjnych wartości, które określają, od którego znaku zacząć i ile znaków wyodrębnić. Dlatego kluczowe jest zrozumienie indeksowania w PHP oraz tego, jak funkcja substr() interpretuje te wartości. Zrozumienie tych zasad jest istotne, zwłaszcza przy pracy z danymi tekstowymi, gdzie precyzyjne operacje są niezbędne do poprawnego przetwarzania i manipulacji łańcuchami znaków. Warto także zwrócić uwagę na dokumentację PHP, aby lepiej poznać inne parametry i możliwości funkcji substr() oraz jej zastosowania w kontekście programowania webowego. Zastosowanie takich funkcji w praktyce pozwala na bardziej efektywne zarządzanie danymi, co jest kluczowe w projektach programistycznych.

Pytanie 21

W języku PHP przypisano zmiennej $a wartość 1. Porównanie $a === $b zwraca true, gdy zmienna $b ma przypisaną wartość

A. 1 lub '1'
B. '1'
C. '1' lub "1"
D. *1
Zmienna $a, zainicjowana wartością 1, jest typu integer i porównując ją z inną zmienną $b za pomocą operatora identyczności (===), należy zwrócić szczególną uwagę na typ i wartość obu zmiennych. Wiele osób myli operator porównania identyczności z operatorem równości (==), który nie wymaga, aby typy były zgodne. Z tego powodu odpowiedzi takie jak 1 lub '1' mogą wydawać się poprawne, jednak w przypadku porównania identyczności, istotne jest, aby zmienne były tego samego typu. Odpowiedź, która sugeruje wartość 1, jest błędna, ponieważ porównuje wartość integer z potencjalnie innym typem bez uwzględnienia konwersji typów, co prowadzi do niejednoznaczności. Z kolei odpowiedź sugerująca wartość '1' nie do końca zdaje sobie sprawę, że chociaż string '1' jest zgodny w kontekście równości, nie spełnia warunków identyczności w dosłownym sensie, gdyż typy są różne. Typowe błędy myślowe prowadzące do takich nieprawidłowych wniosków często wynikają z założenia, że PHP automatycznie wykonuje konwersje typów, co nie zawsze jest pożądane. Dla programistów istotne jest zrozumienie różnic między typami oraz kiedy stosować odpowiednie operatory, aby zapewnić poprawność logiki aplikacji i uniknąć potencjalnych błędów, które mogą prowadzić do trudnych do zdiagnozowania problemów w przyszłości.

Pytanie 22

W języku PHP symbol "//" oznacza

A. operator alternatywy.
B. początek programu.
C. operator dzielenia całkowitego.
D. początek komentarza jednoliniowego
Wybór błędnych odpowiedzi może się brać z niezrozumienia podstawowych zasad PHP. Na przykład, jeśli myślisz, że "//" oznacza początek skryptu, to trochę się mylisz. Każdy skrypt PHP zaczyna się od tagu "<?php", a nie od "//". Użycie operatora alternatywy w jednej z odpowiedzi też jest niepoprawne, bo w PHP do tego używamy "||" lub "?:". Kolejna sprawa to operator dzielenia całkowitego, który w PHP tak naprawdę nie istnieje jako oddzielny operator; dzielenie robimy za pomocą " /", a do dzielenia całkowitego używamy funkcji "floor()" albo operatora "intdiv()". Wiele osób myli różne operacje, co prowadzi do nieporozumień. Dlatego zrozumienie, jak działają komentarze w kodzie, jest ważne; one dają kontekst, nie wpływają na logiczne działanie skryptu. Warto, żeby programiści wiedzieli, że komentarze nie zmieniają wykonania kodu, a raczej mają na celu ułatwienie pracy nad projektem, co jest zgodne z dobrymi praktykami w branży.

Pytanie 23

Która z poniższych grup znaczników HTML zawiera tagi używane do grupowania elementów oraz organizacji struktury dokumentu?

A. div, article, header
B. br, img, hr
C. span, strong, em
D. table, tr, td
Wybór znaczników jak <br>, <img> czy <hr> to nie jest najlepszy pomysł, gdy mówimy o strukturze dokumentu. <br> tylko wstawia przerwę w tekście i nie ma tu mowy o jakimkolwiek grupowaniu treści. <img> dodaje obrazy, a <hr> to tylko podział wizualny między sekcjami. To wszystko bardziej estetyka niż sensowna organizacja. Również <table>, <tr> i <td> są do prezentacji danych w tabelach, co jest inną bajką. Przy tabelach trzeba mieć na uwadze, że służą one głównie do pokazywania danych, a nie porządkowania treści. Z kolei <span>, <strong> i <em> też nie dają rady, bo ich głównym zadaniem jest stylizowanie tekstu lub nadawanie mu znaczenia. Jak się te znaczniki używa nie tak jak trzeba, to kończy się na nieczytelnych dokumentach, co jest sprzeczne z dobrymi praktykami w tworzeniu stron. I pamiętaj, nieodpowiednie znaczniki mogą też prowadzić do problemów z dostępnością i obniżać SEO, co jest ważne dla widoczności w internecie.

Pytanie 24

Określ rezultat działania skryptu napisanego w języku PHP ```PHP "Perl",14=>"PHP",20=>"Python",22=>"Pike"); asort($tablica); print("

");
print_r($tablica);
print("
"); ?> ```

Ilustracja do pytania
A. rys. D
B. rys. C
C. rys. A
D. rys. B
Poprawna odpowiedź wskazuje uporządkowanie tablicy asocjacyjnej według wartości. Funkcja asort() w języku PHP sortuje tablicę według wartości, zachowując klucze. Oznacza to, że elementy zostaną uporządkowane alfabetycznie według nazw języków, co w tym przypadku prowadzi do kolejności PHP Perl Pike Python. Klucze pozostają przypisane do swoich wartości co jest ważnym aspektem przy pracy z tablicami asocjacyjnymi w PHP. Praktyczne zastosowanie tej funkcji obejmuje np. sortowanie list produktów według ich nazw w aplikacjach e-commerce. Dobre praktyki programistyczne sugerują użycie funkcji sortujących z zachowaniem kluczy w przypadku gdy klucze te mają istotne znaczenie np. unikalne identyfikatory. Zrozumienie jak działa sortowanie w PHP pozwala na efektywne zarządzanie danymi i poprawia optymalizację kodu.

Pytanie 25

W stylach CSS, aby ustalić styl linii obramowania jako linię kreskową, należy zastosować wartość

A. dotted
B. groove
C. solid
D. dashed
W kontekście stylów CSS odpowiedzi, które zostały podane jako niepoprawne, mają swoje unikalne zastosowania, jednak nie spełniają kryteriów ustalenia stylu obramowania jako linii kreskowej. Wartość 'solid' definiuje obramowanie w postaci ciągłej linii, co czyni go najprostszym i najczęściej stosowanym stylem obramowania, ale nie wprowadza efektu przerywanego. Styl 'dotted' z kolei tworzy obramowanie złożone z pojedynczych kropek, co nadaje elementom subtelny wygląd, ale również nie tworzy linii kreskowej. Zastosowanie 'dotted' jest popularne w przypadku elementów, które mają być mniej dominujące, jednak nie jest to styl obramowania odpowiadający na potrzeby przerywanego wzoru. Ostatnia z odpowiedzi, 'groove', generuje efekt trójwymiarowego wgłębienia, co może być atrakcyjne wizualnie, ale nie ma nic wspólnego z przerywaną linią. 'Groove' jest zazwyczaj stosowane do podkreślenia hierarchii lub do uwydatnienia elementów na stronie, jednak nie spełnia warunku bycia linią kreskową. Podsumowując, wszystkie trzy odpowiedzi, mimo że są poprawnymi stylami obramowania w CSS, nie odpowiadają na zadane pytanie, ponieważ żadna z nich nie generuje efektu przerywanego, który jest kluczowy dla prawidłowej odpowiedzi na to zagadnienie.

Pytanie 26

Zmienna o typie integer lub int jest w stanie przechowywać

A. liczbę rzeczywistą
B. liczbę całkowitą
C. łańcuch znaków
D. znak
Odpowiedzi niepoprawne wskazują na mylne zrozumienie typów danych oraz ich zastosowania w programowaniu. Zmienna typu znakowego, która może przechowywać pojedynczy znak, nie jest odpowiednia dla wartości całkowitych, ponieważ nie reprezentuje liczby, lecz symbol. Przechowywanie znaków wymaga innego podejścia, które obejmuje typy danych takie jak char. Z kolei ciąg znaków, reprezentujący zestaw znaków, również nie nadaje się do przechowywania liczb całkowitych. Takie podejście prowadzi do nieporozumień dotyczących zarządzania danymi, ponieważ programy operujące na ciągach muszą konwertować te wartości do formatu liczbowego przed przeprowadzeniem kalkulacji, co wprowadza dodatkowe komplikacje i obniża wydajność. Ponadto, zmienne typu liczba rzeczywista, takie jak float czy double, są używane do przechowywania wartości z częścią dziesiętną, co również nie pasuje do definicji zmiennej integer, która ma na celu wyłącznie reprezentację liczb całkowitych. Tego typu pomyłki mogą wynikać z niepełnego zrozumienia struktury danych oraz podstawowych koncepcji programowania, co podkreśla znaczenie solidnej edukacji w zakresie typów danych i ich zastosowań w praktyce. Właściwe dobieranie typów danych jest kluczowe dla efektywności aplikacji oraz unikania błędów podczas ich działania.

Pytanie 27

Wskaż styl CSS za pomocą którego został uzyskany przedstawiony efekt.

  • psy
  • koty
  • chomiki
  • świnki morskie
  • rybki
A. ul li:nth-child(odd) { background-color: DodgerBlue; }
B. ul li:active { background-color: DodgerBlue; }
C. ul li:hover { background-color: DodgerBlue; }
D. ul li:nth-child(even) { background-color: DodgerBlue; }
Wybrane przez Ciebie odpowiedzi są nieprawidłowe. Zacznijmy od selektora CSS 'ul li:active { background-color: DodgerBlue; }' - aktywny stan elementu to moment, kiedy jest on aktualnie klikany, co nie pasuje do obserwowanego efektu. Następnie 'ul li:nth-child(odd) { background-color: DodgerBlue; }' - ten selektor odnosi się do nieparzystych elementów listy, podczas gdy na obrazku parzyste elementy mają niebieskie tło. Na koniec 'ul li:hover { background-color: DodgerBlue; }' - pseudoklasa :hover odnosi się do stanu, kiedy kursor myszy jest nad elementem, co również nie jest zgodne z efektem na obrazku. Wybór nieodpowiedniej pseudoklasy sugeruje, że nie zrozumiałeś do końca ich zastosowania w CSS. Jest to typowy błąd, który można naprawić przez dokładniejsze zapoznanie się z tym aspektem języka CSS, konkretnie z różnymi pseudoklasami i ich zastosowaniem.

Pytanie 28

Jakie zadanie wykonuje funkcja napisana w JavaScript?

function fun1(a,b)
{
    if ( a % 2 != 0 ) a++;
    for(n=a; n<=b; n+=2)
        document.write(n);
}
A. wypisanie liczb parzystych w przedziale od a do b
B. zwrócenie parzystych wartości liczb od a do b
C. wypisanie wszystkich liczb w zakresie od a do b
D. sprawdzenie, czy liczba a jest liczbą nieparzystą; jeśli tak, to jej wypisanie
Analiza niepoprawnych odpowiedzi wymaga zrozumienia, dlaczego poszczególne opcje nie pasują do działania funkcji fun1. W pierwszym przypadku, opcja dotycząca sprawdzania, czy liczba a jest nieparzysta i jej wypisywania, nie jest zgodna z logiką funkcji. Chociaż funkcja sprawdza, czy a jest nieparzysta, to nie wypisuje jej, lecz zmienia ją na parzystą, co wskazuje, że jej celem nie jest wypisywanie liczby a, ale przygotowanie jej do dalszej iteracji. Wypisanie wszystkich liczb z przedziału od a do b również nie jest prawidłowe, ponieważ funkcja nie iteruje po wszystkich liczbach, lecz wyłącznie po liczbach parzystych. Warto zauważyć, że funkcja pomija wszystkie liczby nieparzyste, co wyklucza tę opcję. Kolejna możliwa odpowiedź sugeruje zwracanie wartości parzystych liczb od a do b, jednak funkcja nie wykorzystuje żadnej procedury zwracania wartości, a jej konstrukcja wskazuje na bezpośrednie wypisywanie wyników, co wyklucza tę możliwość. Typowy błąd myślowy to niepoprawne rozumienie działania pętli for oraz operacji wypisywania danych w kontekście przeglądarki internetowej, co jest istotne z punktu widzenia dynamicznych aplikacji webowych. Zrozumienie, jak działa operator modulo i jego rola w wyznaczaniu parzystości liczb, jest kluczowe dla poprawnego interpretowania takich fragmentów kodu. Wskazane jest również, aby programiści byli świadomi różnicy między wypisywaniem a zwracaniem wyników, co często prowadzi do nieporozumień w kontekście funkcji i metod w JavaScript i innych językach programowania.

Pytanie 29

Wskaż wszystkie symbole, które pozwalają na komentowanie kodu w języku PHP.

A. tylko /* */
B. /* */ oraz <!-- -->
C. /* */ oraz // oraz #
D. <?php ?> oraz //
Wybór odpowiedzi wskazującej jedynie na znaki /* */ jako mechanizmy komentowania jest niekompletny i wprowadza w błąd. Komentarze są istotnym elementem każdego skryptu, ponieważ pozwalają na dodawanie uwag, które nie wpływają na wykonanie programu, ale znacząco przyczyniają się do jego zrozumienia. Ograniczanie się jedynie do komentarzy wieloliniowych oznaczonych przez /* */ pomija inne, równie istotne metody komentowania, które są dostępne w PHP. Innym błędem jest sugerowanie, że <?php ?> oraz // są metodami komentowania. Znak <?php ?> służy do otwierania bloku kodu PHP, a nie do tworzenia komentarzy, co jest fundamentalnym nieporozumieniem. Wprowadzenie znaku <!-- --> jako sposobu na komentowanie w PHP jest również mylące, ponieważ ten zapis jest używany w HTML, a nie w PHP, co prowadzi do nieporozumień dotyczących kontekstu użycia. Użycie nieodpowiednich znaków do komentowania może prowadzić do problemów w interpretacji kodu przez interpreter PHP oraz utrudniać jego konserwację. Właściwe rozumienie mechanizmów komentowania jest kluczowe dla każdej osoby programującej w PHP, ponieważ pozwala na tworzenie bardziej czytelnych, zrozumiałych i utrzymywalnych skryptów.

Pytanie 30

Który z przedstawionych ciągów znaków nie pasuje do wzorca wyrażenia regularnego określonego poniżej?

(([A-ZŁŻ][a-ząęóźżćńś]{2,})(-[A-ZŁŻ][a-ząęóźżćńś]{2,})?)
A. Nowakowska-Kowalska
B. Kowalski
C. Kasprowicza
D. Jelenia Góra
Wyrażenie regularne jest narzędziem do precyzyjnego przeszukiwania i manipulowania tekstem zgodnie z określonymi wzorcami. W podanym wzorcu, (([A-ZŁŻ][a-ząęóźżćńś]{2,})(-[A-ZŁŻ][a-ząęóźżćńś]{2,})?)?, szukamy ciągów rozpoczynających się dużą literą, następujących po niej przynajmniej dwóch małych liter, z możliwością oddzielenia myślnikiem i kolejną sekwencją podobnego formatu. Odpowiedź Jelenia Góra nie pasuje do tego wzorca, ponieważ zawiera spację, co łamie ciągłość wzorca. Wyrażenia regularne są kluczowe w przetwarzaniu danych tekstowych i walidacji, ponieważ pozwalają na dynamiczne określanie struktury danych. Przykłady zastosowania obejmują filtrowanie danych wejściowych w formularzach czy analizowanie logów serwerowych. W praktyce, stosując wyrażenia regularne, można skutecznie odróżniać i przetwarzać skomplikowane struktury tekstowe zgodnie z wymaganymi kryteriami, co jest standardem w branżach opartych na danych. Zrozumienie, jak działa taki wzorzec, pomaga w wielu zadaniach związanych z przetwarzaniem tekstu, w tym w programowaniu i analizie danych.

Pytanie 31

Jak nazywa się edytor, który wspiera proces tworzenia stron internetowych i którego działanie można opisać w polskim tłumaczeniu jako "otrzymujesz to, co widzisz"?

A. VISUAL EDITOR
B. WEB STUDIO
C. WYSIWYG
D. IDE
Edytor WYSIWYG (What You See Is What You Get) to narzędzie, które umożliwia tworzenie stron internetowych w sposób wizualny, co oznacza, że użytkownik może zobaczyć, jak strona będzie wyglądać w rzeczywistości podczas edytowania. Tego typu edytory eliminują potrzebę znajomości języków programowania, takich jak HTML czy CSS, ponieważ pozwalają na przeciąganie i upuszczanie elementów na stronie. Przykłady popularnych edytorów WYSIWYG to Adobe Dreamweaver, Wix czy WordPress z jego edytorem blokowym. Standardy takie jak HTML5 oraz CSS3 są często wspierane przez te narzędzia, co pozwala na tworzenie nowoczesnych, responsywnych stron internetowych. To podejście jest szczególnie przydatne dla osób nietechnicznych, które pragną stworzyć własną witrynę bez konieczności angażowania programisty.

Pytanie 32

Czym w relacyjnej bazie danych jest odpowiednik encji?

A. kolumna
B. tabela
C. wiersz
D. atrybut
No, odpowiedzi w formie wierszy, kolumn czy atrybutów nie oddają tego, co encja oznacza w relacyjnych bazach danych. Wiersz to niby pojedynczy rekord, ale nie pokazuje encji w pełni. Jakbyśmy uznali wiersz za encję, to moglibyśmy źle zrozumieć, że encja to tylko jeden zestaw danych, a nie cały zbiór rekordów. Kolumna z kolei definiuje atrybuty encji, ale sama nie oddaje encji w całości. Atrybuty są do opisu cech obiektów, ale to nie znaczy, że same w sobie pokazują ich zbiór. Ważne jest, żeby pojąć, że encja jako całość jest reprezentowana przez tabelę, a nie przez pojedyncze składniki jej struktury. W praktyce wiele osób myli te pojęcia, co rzadko prowadzi do efektywnego modelowania danych i może sprawiać problemy z integracją oraz wydajnością zapytań. Dlatego warto uczyć się o strukturze bazy danych, skupiając się na tym, jak różne elementy współdziałają, żeby tworzyć sensowną całość, która dobrze przechowuje i zarządza danymi.

Pytanie 33

Jakie polecenie należy zastosować, aby w trakcie tworzenia tabeli dodać klucz obcy obejmujący wiele kolumn?

A. CONSTRAINT fk_osoba_uczen FOREIGN KEY (nazwisko, imie) REFERENCES osoby (nazwisko,imie)
B. CONSTRAINT fk_osoba_uczen FOREIGN KEY ON (nazwisko, imie) REFERENCES osoby (nazwisko,imie)
C. CONSTRAINT(nazwisko,imie) FOREIGN KEY REFERENCES osoby (nazwisko, imie)
D. CONSTRAINT(nazwisko,imie) FOREIGN REFERENCES KEY osoby (nazwisko, imie)
Wszystkie odpowiedzi inne niż 'CONSTRAINT fk_osoba_uczen FOREIGN KEY (nazwisko, imie) REFERENCES osoby (nazwisko,imie)' zawierają błędy, które mogą prowadzić do nieprawidłowego definiowania klucza obcego. Pierwsza odpowiedź niepoprawnie używa terminu 'FOREIGN REFERENCES KEY', co jest błędną konstrukcją, ponieważ nie istnieje taki termin w standardzie SQL. Poprawnym terminem jest 'FOREIGN KEY', który jasno wskazuje na rolę kolumn w kontekście relacji między tabelami. Dwie kolejne odpowiedzi błędnie zdefiniowały składnię definicji klucza obcego, używając niepoprawnych konstrukcji, takich jak 'ON' czy niewłaściwego umiejscowienia nazwy ograniczenia. Klucz obcy powinien być zdefiniowany w kontekście kolumn, które są nim objęte, a także powinien odnosić się do kolumn w innej tabeli, co w tych przypadkach nie zostało zrobione prawidłowo. Typowe błędy myślowe prowadzące do takich wniosków obejmują mylenie terminów i składni SQL, co może wynikać z braku znajomości standardów SQL lub po prostu z nieuwagi. Ważne jest, aby osoby pracujące z bazami danych dokładnie znały zasady składni oraz funkcje, jakie pełnią różne elementy definicji tabel i relacji, aby unikać takich błędów i zapewniać integralność danych.

Pytanie 34

Program napisany w języku PHP ma na celu wyliczenie średniej pozytywnych ocen ucznia w zakresie od 2 do 6. Warunek doboru ocen w pętli obliczającej średnią powinien zawierać wyrażenie logiczne

A. $ocena >= 2 or $ocena <= 6
B. $ocena > 2 or $ocena < 6
C. $ocena > 2 and $ocena < 6
D. $ocena >= 2 and $ocena <= 6
Analizując pozostałe odpowiedzi, zauważamy, że każda z nich zawiera błędne założenia dotyczące zakresu ocen, jakie należy uwzględnić w obliczeniach. Opcje zawierające operator 'or' wprowadzają zamieszanie, ponieważ nie dostarczają odpowiednich ograniczeń dla ocen. Na przykład, warunek '$ocena > 2 or $ocena < 6' pozwala na przyjęcie ocen poniżej 2 oraz powyżej 6, co jest sprzeczne z założeniem, że analiza ma dotyczyć tylko ocen w przedziale od 2 do 6. Takie podejście może prowadzić do sytuacji, w której średnie obliczenia będą oparte na błędnych danych, co z kolei wpłynie negatywnie na ocenę ucznia. Podobnie, warunek '$ocena >= 2 or $ocena <= 6' również nie jest odpowiedni, ponieważ również nie koncentruje się na wąskim zakresie wartości, co w rezultacie skutkuje włączeniem ocen niepożądanych. W programowaniu istotne jest, aby stosować jasne i precyzyjne warunki, które nie będą prowadzić do niejednoznaczności. Stosowanie błędnych operatorów logicznych prowadzi do logicznych pułapek, w których programista myśli, że jego kod działa zgodnie z zamierzeniem, podczas gdy w rzeczywistości generuje on niepoprawne wyniki. Przykładowo, jeśli do analizy zostaną uwzględnione oceny spoza dozwolonego zakresu, średnia ocen może być zawyżona lub zaniżona, co jest niezgodne z celem analizy. Dlatego ważne jest, aby w każdej iteracji korzystać z precyzyjnych warunków, które ograniczają wartości do odpowiedniego zakresu.

Pytanie 35

Który atrybut należy wstawić w miejsce kropek, aby przeglądarka wyświetliła komunikat o błędzie w przypadku kliknięcia przycisku "Zapisz" bez wypełnionego pola nazwisko?

<form action="/skrypt.php" method="post">
  <input type="text" name="nazwisko" ...>
  <input type="submit" value="Zapisz">
</form>
A. pattern
B. checked
C. required
D. disable
W tym zadaniu chodzi o wbudowaną walidację formularza w HTML, a dokładniej o to, żeby przeglądarka sama z siebie zablokowała wysłanie formularza, gdy pole nazwisko jest puste. Kluczowe jest zrozumienie, które atrybuty faktycznie wpływają na walidację, a które tylko zmieniają zachowanie lub wygląd elementu. Atrybut „disable” brzmi podobnie do „disabled”, więc część osób może go kojarzyć z blokowaniem pola lub przycisku. Problem w tym, że poprawny atrybut HTML to „disabled”, a nie „disable”. Po drugie, disabled nie służy do wymuszania wypełnienia pola, tylko wręcz przeciwnie – całkowicie je wyłącza z użycia. Pole disabled nie jest edytowalne i w ogóle nie jest wysyłane z formularzem, więc absolutnie nie nadaje się do sprawdzania, czy użytkownik coś wpisał. „Pattern” to już coś związanego z walidacją, ale działa inaczej niż required. Pattern przyjmuje wyrażenie regularne i sprawdza poprawność formatu wprowadzonej wartości, ale tylko wtedy, gdy w polu coś jest wpisane. Jeżeli pole jest puste i nie ma atrybutu required, przeglądarka uzna to za poprawne i formularz zostanie wysłany bez żadnego ostrzeżenia. Pattern nadaje się np. do weryfikacji numeru telefonu, kodu pocztowego czy konkretnego formatu identyfikatora, ale nie wymusza samo w sobie obowiązkowego wypełnienia. Atrybut „checked” z kolei dotyczy zupełnie innego typu elementów formularza. Używa się go wyłącznie przy input type="checkbox" oraz input type="radio", aby zaznaczyć domyślnie daną opcję. Nie ma on żadnego wpływu na pola tekstowe typu text. Wstawienie checked do input type="text" jest po prostu błędem semantycznym i nie wywoła żadnego efektu walidacyjnego. Typowym błędem myślowym przy tym pytaniu jest mieszanie pojęć: „coś blokuje” z „coś wymusza”. Required nie blokuje pola, tylko blokuje wysłanie formularza, jeśli pole jest puste. Disabled blokuje pole, ale nie ma nic wspólnego z wymaganiem danych. Pattern sprawdza format, ale nie wymusza istnienia wartości. Checked ustawia stan zaznaczenia, a nie obowiązkowość. Właśnie dlatego jedynym poprawnym atrybutem, który informuje przeglądarkę, że dane pole musi być wypełnione przed wysłaniem formularza, jest „required”.

Pytanie 36

W aplikacji webowej komunikat powinien być wyświetlany jedynie wtedy, gdy użytkownik odwiedza stronę po raz pierwszy. Jakiej funkcji PHP należy użyć w tym przypadku?

A. define
B. mysqli_change_user
C. session_destroy
D. setcookie
Odpowiedzi, które nie są zgodne z funkcjonalnością opisaną w pytaniu, często opierają się na nieporozumieniach dotyczących zastosowań różnych funkcji w PHP. Funkcja define służy do definiowania stałych w aplikacji, co nie ma zastosowania w kontekście zarządzania stanem użytkownika czy komunikatami. Użycie define do wyświetlania komunikatów byłoby nieefektywne, ponieważ stałe są niezmienne w czasie działania skryptu. Z kolei session_destroy to funkcja, która kończy sesję użytkownika, co również nie jest zgodne z wymaganiami pytania. Zniszczenie sesji skutkuje utratą wszystkich danych sesyjnych, co często jest niepożądane, zwłaszcza jeśli potrzebujemy śledzić stan użytkownika. Mysqli_change_user to funkcja służąca do zmiany aktualnego użytkownika bazy danych, co jest zupełnie niezwiązane z wyświetlaniem komunikatów użytkownikom. Mylne jest przekonanie, że funkcje te mogą zastąpić mechanizm ciasteczek, ponieważ każda z nich ma swoje specyficzne zastosowanie w kontekście PHP. Właściwe zrozumienie roli ciasteczek, sesji oraz stałych jest kluczowe dla tworzenia aplikacji webowych, które są zarówno funkcjonalne, jak i przystosowane do potrzeb użytkowników.

Pytanie 37

Poniższy fragment kodu w PHP wyświetli

$n = '[email protected]';
$dl = strlen($n);
$i = 0;
while($i < $dl && $n[$i] != '@')
{
    echo $n[$i];
    $i++;
}
A. samą nazwę domeny, czyli "host.pl"
B. tylko nazwę konta, czyli "adres"
C. nazwa konta z symbolem @, czyli "adres@"
D. cały adres e-mail, czyli "[email protected]"
Powyższy fragment kodu w języku PHP ma za zadanie wyodrębnić i wypisać nazwę konta z adresu e-mail. Kod definiuje ciąg znaków zawierający pełny adres e-mail i używa pętli while do iteracji przez każdy znak tego ciągu aż do napotkania znaku '@'. Pętla while działa, dopóki indeks i jest mniejszy niż długość ciągu $n oraz bieżący znak $n[$i] nie jest '@'. W każdej iteracji echo wypisuje bieżący znak, a zmienna i jest inkrementowana. Dzięki temu kod wypisuje wszystkie znaki przed '@', co w tym przypadku jest nazwą konta 'adres'. Takie podejście jest powszechnie stosowane w podstawowym przetwarzaniu tekstu, gdzie potrzebna jest iteracja przez ciąg znaków. W praktyce, w aplikacjach webowych, takie operacje są często wykonywane na danych wejściowych użytkownika, aby wyodrębnić specyficzne części danych, takie jak nazwa użytkownika z e-maila. Jest to również zgodne z zasadami przetwarzania stringów w PHP, gdzie manipulacja tekstem odbywa się z wykorzystaniem indeksów i pętli.

Pytanie 38

Na obrazie przedstawiono projekt układu bloków witryny internetowej. Zakładając, że bloki są realizowane za pomocą znaczników sekcji, ich formatowanie w CSS, oprócz ustawionych szerokości dla bloków: 1, 2,
3, 4 (blok 5 nie ma ustawionej szerokości), powinno zawierać właściwość

Ilustracja do pytania
A. clear: both dla wszystkich bloków.
B. float: left dla wszystkich bloków.
C. clear: both dla bloku 5 oraz float: left dla pozostałych bloków.
D. clear: both dla bloku 5 oraz float: left jedynie dla 1 i 2 bloku.
Twoja odpowiedź nie jest poprawna, ale nie przejmuj się, błąd może wynikać z niepełnego zrozumienia zastosowania właściwości 'float' i 'clear' w CSS. Zastosowanie 'float: left' dla wszystkich bloków nie jest dobrym pomysłem, ponieważ spowoduje to, że wszystkie bloki będą się starały zmieścić w jednym rzędzie, co jest niezgodne z założonym układem. Podobnie, dodawanie 'clear: both' do wszystkich bloków też nie jest poprawne, ponieważ spowoduje to, że wszystkie bloki będą wyświetlane jeden pod drugim, zamiast obok siebie. Właściwość 'clear' powinna być stosowana do bloków, które chcemy wyświetlić poniżej innych bloków, natomiast 'float: left' powinien być stosowany do bloków, które chcemy wyświetlić obok siebie. Pamiętaj, że zrozumienie tych właściwości i umiejętność ich stosowania jest kluczowe dla tworzenia efektywnych i atrakcyjnych layoutów stron internetowych.

Pytanie 39

Które z wywołań funkcji PHP round() da wynik równy 1?

A. round(0.29)
B. round(-1.40)
C. round(0.60)
D. round(-4.60)
Wybór round(-4.60) prowadziłby do błędnego wyniku, ponieważ ta funkcja zaokrągliłaby wartość do -5, a nie do 1. Podobnie, w przypadku round(0.29), wynik to 0, ponieważ liczba ta jest bliżej 0 niż do 1. Z kolei round(-1.40 również nie spełnia wymogów, gdyż ta liczba zostanie zaokrąglona do -1, co znów nie jest zadowalające. Typowym błędem myślowym jest mylenie wartości ujemnych lub zbyt małych z ich zaokrąglonymi wartościami, co prowadzi do nieprawidłowych wniosków. Użytkownicy często nie zdają sobie sprawy, że wartości bliskie 0.5 mają tendencję do zaokrąglania w górę, natomiast wartości mniejsze od zera są zaokrąglane w dół. Właściwe zrozumienie mechanizmu działania funkcji round() w kontekście różnych zakresów liczb jest kluczowe dla precyzyjnych obliczeń. Dobrą praktyką jest również testowanie wyników zaokrągleń w różnych scenariuszach, co pozwala na lepsze zrozumienie działania funkcji oraz uniknięcie błędów w przyszłych projektach programistycznych.

Pytanie 40

<form>
  <input type="email" id="addr" required>
  <input type="submit" value="Zapisz">
</form>
Na podstawie przedstawionego kodu formularza HTML można powiedzieć, że pole edycyjne:
A. wymaga wpisania jedynie znaków alfanumerycznych.
B. może być puste.
C. nie powinno zawierać znaków numerycznych.
D. nie może być puste i wymaga wpisania tekstu ze znakiem @.
Kod formularza, który został pokazany w pytaniu, wykorzystuje dwa mechanizmy walidacji wbudowane w HTML5: typ pola ustawiony na email oraz atrybut required. Jeśli się je dobrze rozumie, to łatwo odrzucić wszystkie błędne interpretacje. Spójrzmy na to bardziej od strony tego, co faktycznie robi przeglądarka. Pomysł, że pole może być puste, jest sprzeczny z działaniem atrybutu required. Ten atrybut wprost oznacza, że użytkownik musi coś wpisać. Jeżeli zostawi pole puste i kliknie przycisk „Zapisz”, przeglądarka zablokuje wysłanie formularza i wyświetli swój komunikat, np. „Wypełnij to pole”. To nie jest kwestia „dobrej praktyki”, tylko twardej reguły zapisanej w specyfikacji HTML. W praktyce to bardzo przydatne, bo od razu na froncie wymusza uzupełnienie danych. Stwierdzenie, że pole nie powinno zawierać znaków numerycznych, też jest błędne. Pole typu email dopuszcza cyfry, bo wiele poprawnych adresów e‑mail zawiera liczby, np. [email protected]. Przeglądarka nie ma żadnego zakazu cyfr w takim polu, patrzy tylko na ogólny format adresu. Nieprawidłowy jest też pogląd, że wymagane są „jedynie znaki alfanumeryczne”. Adres e‑mail zawiera zwykle kropki, znak @, czasem myślniki, podkreślenia i inne dopuszczalne znaki. Gdyby przeglądarka pozwalała tylko na litery i cyfry, większość realnych adresów zostałaby odrzucona. Walidacja typu email jest skoncentrowana na strukturze (część przed @, znak @, część po @), a nie na tak prymitywnym ograniczeniu jak „tylko litery i cyfry”. Typowy błąd myślowy przy takich pytaniach to mylenie różnych poziomów walidacji: jedni zakładają, że HTML w ogóle nie sprawdza formatu, inni z kolei wyobrażają sobie zbyt restrykcyjne reguły, które w praktyce by uniemożliwiły wpisanie normalnego adresu. Dobrym nawykiem jest patrzenie na to, co gwarantuje przeglądarka: w tym wypadku wymagane jest, żeby pole nie było puste (required) oraz żeby wpisany tekst przypominał adres e‑mail, czyli zawierał m.in. znak @ w odpowiednim miejscu. Wszystkie inne interpretacje wychodzą poza to, co naprawdę wynika z kodu formularza.