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: 6 maja 2026 11:10
  • Data zakończenia: 6 maja 2026 11:47

Egzamin zdany!

Wynik: 25/40 punktów (62,5%)

Wymagane minimum: 20 punktów (50%)

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

Który typ danych należy przypisać kolumnie z kodami pocztowymi w tabeli relacyjnej bazy danych, aby przechowywała dane w formie łańcuchów znakowych o zdefiniowanej, stałej długości?

A. TEXT
B. CHAR
C. DECIMAL
D. BLOB
Poprawnie – dla kolumny z kodami pocztowymi najlepszym wyborem jest typ CHAR. Kody pocztowe są danymi tekstowymi, a nie liczbowymi, mimo że często składają się wyłącznie z cyfr. W wielu krajach (np. w Polsce, Wielkiej Brytanii czy Kanadzie) kod pocztowy może zawierać myślniki, spacje, a nawet litery. Co ważne, długość kodu jest z góry znana i stała (np. w Polsce zawsze 6 znaków w formacie „NN-NNN”). Typ CHAR został właśnie zaprojektowany do przechowywania krótkich łańcuchów znaków o stałej długości. Silnik bazy danych rezerwuje stałą ilość miejsca i dopełnia wartość spacjami, jeśli jest krótsza. Dzięki temu porównywanie, indeksowanie i sortowanie takich pól jest przewidywalne i wydajne. Moim zdaniem jest to dokładnie ten przypadek, który się podręcznikowo podaje na zajęciach: PESEL, NIP, numer dokumentu, kod pocztowy – wszystkie to typowe przykłady na CHAR. W praktyce np. w MySQL zdefiniujesz taką kolumnę jako CHAR(6), w PostgreSQL jako CHAR(6) albo ewentualnie VARCHAR(6), ale przy stałej długości CHAR jest bardziej jednoznacznym sygnałem projektowym. Dodatkowo użycie typu znakowego zapobiega „obcinaniu” zer wiodących, co jest częstym błędem przy traktowaniu kodów pocztowych jako liczby. W wielu systemach legacy właśnie z tego powodu trzeba było później migrować typ danych z numerycznego na tekstowy. Z punktu widzenia dobrych praktyk modelowania danych przyjmuje się zasadę: jeżeli coś nie służy do liczenia, tylko jest identyfikatorem lub etykietą, to przechowujemy to jako tekst, a dla stałej długości – jako CHAR o odpowiednim rozmiarze.

Pytanie 2

Po wykonaniu poniższego kodu JavaScript, który operuje na wcześniej przygotowanej tablicy liczby, w zmiennej wynik znajduje się suma

var wynik = 0;
for (i = 0; i < 100; i++)
  if (liczby[i] % 2 == 0)
    wynik += liczby[i];
A. nieparzystych elementów tablicy
B. wszystkich elementów tablicy
C. parzystych elementów tablicy
D. dodatnich elementów tablicy
Przedstawiony kod JavaScript oblicza sumę wszystkich parzystych elementów tablicy liczby. W języku JavaScript operator modulo (%) jest używany do obliczania reszty z dzielenia. W tym przypadku liczby[i] % 2 == 0 sprawdza, czy dany element tablicy liczby jest parzysty. Jeśli reszta z dzielenia przez 2 wynosi 0, oznacza to, że liczba jest parzysta. Dlatego każda parzysta liczba z tablicy jest dodawana do zmiennej wynik. Warto zauważyć, że pętla for przechodzi przez pierwsze 100 elementów tablicy, co sugeruje, że tablica liczby musi mieć co najmniej 100 elementów. Tego typu operacje są często wykorzystywane w praktycznych zastosowaniach, takich jak analiza danych, gdzie konieczne jest filtrowanie i przetwarzanie określonych wartości z dużych zbiorów danych. Dobre praktyki zalecają, aby zrozumieć zarówno składnię, jak i zastosowanie operacji warunkowych i pętli, co jest kluczowe w efektywnym programowaniu. Takie rozwiązania są fundamentem optymalnego przetwarzania danych, a ich zrozumienie umożliwia tworzenie bardziej złożonych algorytmów.

Pytanie 3

Kolor reprezentowany w formacie heksadecymalnym #0000FF to

A. czarny
B. niebieski
C. czerwony
D. zielony
Kolor zapisany w notacji heksadecymalnej #0000FF to odcień niebieskiego. Notacja heksadecymalna jest powszechnie stosowana w projektowaniu stron internetowych oraz grafice komputerowej do definicji kolorów w systemie RGB. W tej notacji sześć znaków reprezentuje wartości czerwonego, zielonego i niebieskiego (RGB), gdzie pierwsze dwa znaki to wartość czerwonego, kolejne dwa to wartość zielonego, a ostatnie dwa to wartość niebieskiego. W przypadku #0000FF, wartości są następujące: 00 (czerwony), 00 (zielony), FF (niebieski), co oznacza maksymalny poziom niebieskiego światła. Taki kolor jest czystym niebieskim, uzyskiwanym gdy intensywność czerwonego i zielonego jest zerowa, a niebieskiego maksymalna. Przykładami użycia niebieskiego w designie mogą być logo Facebooka, które wykorzystuje podobny odcień, czy tła niektórych stron internetowych. Heksadecymalne kody kolorów są zgodne z standardem W3C, co zapewnia ich uniwersalność i spójność w różnych aplikacjach graficznych i interfejsach użytkownika.

Pytanie 4

Tablica tab[] jest wypełniona dowolnymi liczbami całkowitymi. Jaka wartość znajdzie się w zmiennej zm2 po wykonaniu prezentowanego fragmentu kodu?

int tab[10];
int zm1 = 0;
double zm2 = 0;

for (int i=0; i < 10; i++)
{
  zm1 = zm1 + tab[i];
}
zm2 = zm1 / 10;
A. Suma liczb od 1 do 10.
B. Średnia arytmetyczna elementów tablicy.
C. Suma elementów tablicy.
D. Średnia geometryczna liczb od 0 do 9.
Rozważanie sumy liczb z tablicy jako wyniku zmiennej zm2 jest błędne, ponieważ zmienna ta nie przechowuje sumy, lecz średnią arytmetyczną. Suma liczb z tablicy jest przechowywana w zmiennej zm1, co jest zupełnie inną wartością. Średnia arytmetyczna jest definicją statystyczną, która odnosi się do podziału całkowitej wartości (sumy) przez liczbę elementów, co w tym przypadku jest realizowane przez zmienną zm2. Wybierając odpowiedź, która twierdzi, że zm2 to suma liczb od 1 do 10, wprowadza w błąd, ponieważ nie ma to związku z danymi w tablicy tab, która zawiera dowolne liczby całkowite. Inna błędna koncepcja to średnia geometryczna, która jest zupełnie innym typem średniej, obliczaną na podstawie iloczynu wartości, a nie ich sumy. Zrozumienie różnicy między tymi pojęciami jest kluczowe w analizie danych i programowaniu, a także w zastosowaniach matematycznych. Błędy w myśleniu, takie jak pomylenie średniej arytmetycznej z geometryczną, mogą prowadzić do poważnych konsekwencji w analizach danych i wnioskach wyciąganych z nich. Niezrozumienie kontekstu tablicy oraz algorytmu prowadzi do nieprawidłowego interpretowania wyników.

Pytanie 5

Jaką funkcję agregującą można zastosować, aby uzyskać ilość rekordów?

A. AVG
B. COUNT
C. SUM
D. NUMBER
Funkcja agregująca COUNT jest używana w bazach danych do zwracania liczby rekordów spełniających określone kryteria. Jest to jedna z podstawowych funkcji agregujących, która pozwala na szybkie uzyskanie informacji o objętości danych w tabeli. Na przykład, w zapytaniu SQL, które ma na celu policzenie liczby wszystkich klientów w tabeli "klienci", możemy użyć: SELECT COUNT(*) FROM klienci. Zwróci to całkowitą liczbę rekordów. Funkcja COUNT może być również używana z warunkami, co pozwala na bardziej zaawansowane analizy, takie jak: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska', co policzy tylko tych klientów, którzy są z Polski. W praktyce, COUNT jest nieoceniony w raportowaniu i analizie danych, umożliwiając analitykom i programistom szybkie zrozumienie struktury danych. Dobra praktyka to zawsze stosować COUNT w kontekście grupowania danych przy użyciu klauzuli GROUP BY, co pozwala na uzyskanie liczby rekordów w poszczególnych grupach.

Pytanie 6

W języku JavaScript, aby w jednym poleceniu zweryfikować, czy dany ciąg tekstowy zawiera inny ciąg, można zastosować metodę

A. repeat()
B. valueOf()
C. includes()
D. substr()
Metody valueOf(), substr() oraz repeat() nie są odpowiednie do sprawdzania, czy dany napis zawiera inny napis, co może prowadzić do nieporozumień w zakresie ich zastosowań. Metoda valueOf() jest używana do zwracania prymitywnej wartości obiektu, co czyni ją nieprzydatną w kontekście wyszukiwania podciągów w tekstach. Nie ma ona związku z analizą treści stringów. Podobnie, substr() służy do wyodrębniania podciągu z danego napisu, co również nie jest odpowiednie dla kontekstu sprawdzania zawartości. Użycie tej metody wymagałoby najpierw zdefiniowania pozycji początkowej i długości podciągu, co nie odpowiada na pytanie o obecność. Metoda repeat() natomiast, jak sama nazwa wskazuje, powiela dany ciąg znaków określoną liczbę razy. Choć jest przydatna w sytuacjach, gdzie potrzebujemy duplikować tekst, nie może być użyta do weryfikacji istnienia podciągu. Typowym błędem jest mylenie funkcji analitycznych z funkcjami manipulacyjnymi, co prowadzi do frustracji i błędów w kodzie. Ważne jest, aby zrozumieć różnice między metodami oraz ich specyfikę, aby efektywnie korzystać z możliwości, jakie oferuje JavaScript.

Pytanie 7

CMYK to kombinacja czterech podstawowych kolorów stosowanych w druku:

A. czerwonego, purpurowego, żółtego, szarego
B. turkusowego, purpurowego, białego, czarnego
C. turkusowego, błękitnego, białego, różowego
D. turkusowego, purpurowego, żółtego, czarnego
Wszystkie podane odpowiedzi zawierające inne kolory niż cyjan, magenta, żółty i czarny są niepoprawne, ponieważ nie odnoszą się do uznawanego modelu kolorów CMYK. Na przykład, zestaw kolorów turkusowy, błękitny, biały, różowy nie zawiera kluczowych składników, które definiują CMYK. Błękit, choć podobny do cyjanu, nie jest uznawany za jego zamiennik w kontekście druku. Ponadto, biały kolor nie jest używany w modelu CMYK, ponieważ jest reprezentowany jako brak pigmentu, a nie jako osobny kolor. Kolejny przykład - czerwony, purpurowy, żółty i szary - również nie oddaje prawdziwego modelu CMYK, ponieważ czerwony nie jest jednym z kolorów podstawowych w tym systemie. Zamiast tego, w modelu CMYK używa się magenty, która jest intensywnym odcieniem różowoczerwonym. Warto zauważyć, że niektóre osoby mogą mylić różowe odcienie z magentą, co prowadzi do błędów w projektowaniu, szczególnie w kontekście druku. Również zestaw kolorów turkusowy, purpurowy, białe i czarny nie oddaje zasadności stosowania czarnego jako 'kluczowego' koloru w modelu CMYK. Często w druku czarny jest dodawany, aby zwiększyć głębokość i kontrast kolorów. W zrozumieniu tych zasad kluczowe jest odniesienie się do praktyk druku oraz standardów branżowych, które jasno określają, jak kolory powinny być łączone i drukowane. Dlatego zrozumienie podstawowych kolorów w modelu CMYK ma fundamentalne znaczenie dla każdego, kto zajmuje się grafiką i drukiem.

Pytanie 8

Jak można opisać przedstawiony obiekt w JavaScript?

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: function() { ... }
}
A. dwiema właściwościami i jedną metodą
B. trzema właściwościami
C. trzema metodami
D. dwiema metodami i jedną właściwością
Obiekt w języku JavaScript to struktura danych, która przechowuje zbiór właściwości, gdzie każda właściwość jest parą klucz-wartość. W podanym przykładzie mamy obiekt o nazwie 'obiekt1' zdefiniowany za pomocą literału obiektowego. Składa się on z dwóch właściwości 'x' i 'y', które mają przypisane wartości liczby całkowitej zero oraz jednej metody 'wsp', która jest funkcją. Właściwości 'x' i 'y' są prostymi wartościami liczbowymi, a metoda 'wsp' jest zdefiniowana jako funkcja, co oznacza, że można ją wywoływać, aby wykonywać pewne operacje. Tego typu struktury są często używane w JavaScript do tworzenia obiektów reprezentujących dane, jak współrzędne punktów na płaszczyźnie. Dzięki możliwości definiowania metod, obiekty mogą wykonywać operacje na swoich danych, co jest zgodne z zasadami programowania obiektowego. Dzięki zrozumieniu tej struktury, programista może efektywnie zarządzać danymi i logiką aplikacji, stosując dobre praktyki takie jak enkapsulacja i modularność kodu.

Pytanie 9

Który z zaprezentowanych kodów HTML sformatuje tekst zgodnie z podanym wzorem?
Uwaga: słowo "stacji" jest napisane większą czcionką niż pozostałe wyrazy w tej linijce)

Lokomotywa

Stoi na stacji lokomotywa ...

A. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji</big> lokomotywa ...</p>
B. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji lokomotywa ...</p>
C. <p><small>Lokomotywa</small></p> <p>Stoi na <big>stacji<big> lokomotywa ...</p>
D. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji</big> lokomotywa ...</p>
Poprawny kod dokładnie odtwarza wzór: nagłówek poziomu pierwszego <h1> z tekstem „Lokomotywa” oraz akapit <p>, w którym tylko słowo „stacji” jest wyróżnione większym rozmiarem za pomocą znacznika <big>. Dzięki temu przeglądarka powiększa wyłącznie ten jeden wyraz, a reszta zdania zachowuje standardowy rozmiar czcionki wynikający z kaskady CSS lub domyślnych ustawień. Struktura dokumentu jest też logiczna: tytuł w <h1>, treść w akapicie, bez zbędnego mieszania poziomów nagłówków. W praktyce taki zapis dobrze pokazuje, jak selektywnie formatować tekst wewnątrz akapitu – możemy objąć znacznikiem <big> tylko fragment, podobnie jak używa się <strong> albo <em> do wyróżniania pojedynczych słów. W nowoczesnych projektach zamiast <big> zaleca się raczej stosowanie CSS, np. <span class="wiekszy">stacji</span> i w CSS: .wiekszy { font-size: 1.2em; }. Daje to większą kontrolę nad wyglądem i jest zgodne z aktualnymi standardami W3C, bo <big> jest znacznikiem przestarzałym (deprecated). Mimo to, z punktu widzenia tego zadania, kluczowe jest zrozumienie, że tag musi dokładnie obejmować tylko słowo, które ma być powiększone, oraz że znacznik musi być poprawnie zamknięty. Taka precyzyjna selekcja fragmentu tekstu to podstawa przy formatowaniu treści w HTML i późniejszym stylowaniu w CSS.

Pytanie 10

Ile razy zostanie wykonana pętla napisana w języku PHP, przy założeniu, że zmienna kontrolna nie jest zmieniana w trakcie działania pętli?
for ($i = 0; $i <= 10; $i+=2) { .... }

A. 10
B. 5
C. 6
D. 0
Wybór błędnych odpowiedzi wynika z nieprawidłowego zrozumienia działania pętli for oraz sposobu, w jaki zostają liczone iteracje. Odpowiedzi takie jak 0, 5 czy 10 są oparte na mylących założeniach. Na przykład, odpowiedzi 0 i 10 mogą sugerować, że pętla nie wykonuje żadnych iteracji lub, że wykonuje ich zbyt wiele, co jest sprzeczne z rzeczywistością. Pętla for, jak w tym przypadku, zaczyna od 0 i kończy na 10, a krok wynosi 2. Zmiana wartości $i przy każdym przejściu pętli jest kluczowym elementem do zrozumienia. Jeśli więc zmienna nie jest zmieniana, nie osiągnie ona wartości końcowej prawidłowo. Typowym błędem jest także myślenie o warunkach w sposób nieprecyzyjny; w tym wypadku warunek $i <= 10 jest spełniony dla wartości 10, co może mylić. W praktyce, programiści powinni zawsze dokładnie analizować zakres iteracji, aby uniknąć błędnych założeń. To zrozumienie jest fundamentalne, aby pisać wydajny i bezpieczny kod, stosując się do najlepszych praktyk programistycznych.

Pytanie 11

W diagramie ER powiązanie między dwoma zbiorami encji nazywamy

A. związkiem.
B. atrybutem.
C. dziedziną.
D. krotką.
Poprawna odpowiedź to „związek”, bo w diagramie ER (Entity-Relationship) właśnie tak nazywamy powiązanie między dwoma zbiorami encji. Mamy encje, czyli zbiory obiektów z rzeczywistości, na przykład „Klient” i „Zamówienie”, a pomiędzy nimi rysujemy relację: „Klient składa Zamówienie”. Ta linia, często z nazwą i krotnością (1:1, 1:N, N:M), to właśnie związek. W notacji Chen’a czy notacji Crow’s Foot zawsze chodzi o to samo: formalne opisanie, jak dane z jednego zbioru encji są powiązane z danymi z innego zbioru. W praktyce projektowania baz danych związek w diagramie ER prawie zawsze przekłada się na relację w modelu relacyjnym: albo na klucz obcy (np. tabela zamówienia ma kolumnę klient_id), albo na dodatkową tabelę asocjacyjną przy relacjach wiele‑do‑wielu (np. tabela produkt_zamówienie). Moim zdaniem ważne jest, żeby od początku myśleć o związku nie tylko jako o kresce na diagramie, ale jako o czymś, co później będzie miało konkretne odwzorowanie w SQL, w kluczach obcych, indeksach i ograniczeniach integralności. Z punktu widzenia dobrych praktyk branżowych, poprawne modelowanie związków to podstawa: pozwala zadbać o integralność referencyjną, unikać duplikacji danych i poprawnie odzwierciedlić reguły biznesowe. Na przykład relacja 1:N między Klientem a Zamówieniem jasno mówi, że jedno zamówienie należy do dokładnie jednego klienta, ale klient może mieć wiele zamówień. Dzięki temu, gdy później piszesz kwerendy SQL, dokładnie wiesz, jak łączyć tabele za pomocą JOIN i które klucze obce są obowiązkowe. W praktyce w firmach, które poważnie podchodzą do projektowania baz, diagram ER z dobrze opisanymi związkami jest normalnym elementem dokumentacji technicznej i ułatwia współpracę między programistami, analitykami i administratorami baz danych.

Pytanie 12

Które z wymienionych stwierdzeń na temat zasad programowania w PHP jest prawdziwe?

A. Jest to język o słabej kontroli typów
B. Deklaracja zmiennych następuje po słowie var
C. W nazwach zmiennych nie rozróżnia się wielkości liter
D. Nazwy zmiennych poprzedza znak !
PHP jest językiem o słabej kontroli typów, co oznacza, że zmienne mogą zmieniać swój typ w trakcie działania programu, co nie jest typowe dla języków o silnej kontroli typów. Na przykład, w PHP możemy przypisać do zmiennej wartość liczbową, a następnie tę samą zmienną nadpisać tekstem. To daje programistom dużą elastyczność, jednak wymaga również ostrożności, aby unikać błędów związanych z nieoczekiwanym typem danych. W praktyce oznacza to, że programiści muszą być czujni na typy danych, aby nie wprowadzać błędów, które mogą prowadzić do trudnych do zdiagnozowania błędów w kodzie. Zasady projektowania w PHP zachęcają do stosowania funkcji typu is_int(), is_string() i innych, aby upewnić się, że zmienne mają oczekiwany typ przed ich użyciem. Współczesne standardy programowania, takie jak PHP-FIG, promują dobre praktyki kodowania, które mogą pomóc zminimalizować problemy związane z dynamiczną typizacją.

Pytanie 13

Którą kwerendę należy wykonać, aby zaktualizować wszystkim rekordom z tabeli pracownicy wartość w kolumnie plec na K, przyjmując na potrzeby zadania, że każde imię żeńskie kończy się literą a?

A. ALTER TABLE pracownicy SET plec='K' WHERE imie='%a';
B. UPDATE pracownicy SET plec='K' WHERE imie LIKE '%a';
C. ALTER TABLE pracownicy SET plec='K' WHERE imie LIKE '%a';
D. UPDATE pracownicy SET plec='K' WHERE imie='%a';
Poprawna jest kwerenda: UPDATE pracownicy SET plec='K' WHERE imie LIKE '%a';. Po pierwsze użyty jest właściwy typ polecenia SQL do modyfikacji danych w tabeli. Do zmiany wartości w istniejących rekordach zawsze używamy instrukcji UPDATE, a nie ALTER TABLE. ALTER TABLE służy do zmiany struktury tabeli (np. dodanie kolumny, zmiana typu danych, usunięcie kolumny), a nie do operowania na danych w wierszach. To jest taki podstawowy podział: DDL (Data Definition Language) – np. ALTER TABLE, CREATE, DROP – do definicji struktury; DML (Data Manipulation Language) – np. SELECT, INSERT, UPDATE, DELETE – do pracy na rekordach. W tym zadaniu ewidentnie potrzebna jest operacja DML. Druga ważna rzecz to warunek WHERE imie LIKE '%a'. Operator LIKE służy do porównywania tekstów z wykorzystaniem wzorców. Symbol % oznacza „dowolny ciąg znaków (również pusty)”, więc wzorzec '%a' oznacza: dowolny ciąg znaków zakończony literą „a”. Dokładnie o to chodzi w zadaniu: przyjmujemy założenie, że każde imię żeńskie kończy się na „a”, więc chcemy zaktualizować wszystkie rekordy, gdzie kolumna imie kończy się na „a”. Gdybyśmy chcieli szukać imion zaczynających się na „A”, używalibyśmy 'A%'. Moim zdaniem warto zapamiętać ten schemat, bo w praktyce bardzo często stosuje się LIKE do prostych filtrów tekstowych: wyszukiwanie użytkowników po fragmencie loginu, znajdowanie produktów po części nazwy, filtrowanie adresów e-mail po domenie itp. Przykład: UPDATE klienci SET status='VIP' WHERE nazwisko LIKE 'Nowak%'; – zaktualizuje wszystkich Nowaków. Albo: UPDATE produkty SET promocja=1 WHERE nazwa LIKE '%kabel%'; – zaznaczy jako promocyjne wszystkie produkty, których nazwa zawiera słowo „kabel”. W dobrych praktykach zaleca się uważać z aktualizacjami bez WHERE, bo wtedy zmieniamy wszystkie rekordy w tabeli. Tutaj warunek LIKE '%a' pełni rolę bezpiecznego filtra. W wielu systemach bazodanowych warto też pamiętać, że domyślnie porównania tekstowe mogą być niewrażliwe na wielkość liter (collation), więc 'a' i 'A' mogą być traktowane tak samo, ale to już zależy od konfiguracji bazy. W kontekście egzaminów zawodowych i pracy z SQL-em takie zadanie to klasyk – łączy poprawne użycie UPDATE z właściwym użyciem LIKE i symbolu % jako wieloznakowego wildcarda.

Pytanie 14

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
B. 1 lub '1'
C. "1" lub '1'
D. '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 15

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

A. określenia długości tekstu
B. usuwania białych znaków lub innych znaków wymienionych w parametrze z obu końców tekstu
C. porównywania dwóch tekstów i zwracania ich wspólnej części
D. redukcji tekstu o zdefiniowaną w parametrze liczbę znaków
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 16

W JavaScript, wynik operacji przyjmuje wartość NaN, gdy skrypt usiłuje przeprowadzić

A. funkcję, która sprawdza długość stringa, a zawartość zmiennej była liczba
B. operację arytmetyczną, a zawartość zmiennej była tekstem
C. funkcję parseInt zamiast parseFloat na zmiennej numerycznej
D. operację arytmetyczną na dwóch dodatnich zmiennych liczbowych
W pytaniu zwrócono uwagę na różne operacje, które mogą prowadzić do uzyskania wartości NaN w JavaScript. Jednak nie wszystkie wymienione przypadki są związane z generowaniem tej wartości. Przykładowo, korzystanie z parseFloat zamiast parseInt przy konwersji zmiennych liczbowych nie ma wpływu na wynik operacji arytmetycznych i nie prowadzi do NaN. Funkcja parseFloat konwertuje ciąg znaków na liczbę zmiennoprzecinkową, podczas gdy parseInt konwertuje na liczbę całkowitą. W obu przypadkach, jeśli ciąg jest odpowiedni, wynik zawsze będzie liczbą, a nie NaN. Kolejną sytuacją jest sprawdzanie długości napisu; jeśli zmienna jest liczbą, operacje związane z długością nie wpływają na typ danych, więc nie powinny generować NaN. Trzeci przypadek, czyli działanie arytmetyczne na dwóch zmiennych liczbowych dodatnich, również nie prowadzi do uzyskania NaN, ponieważ operacje są poprawnie wykonywane. Zrozumienie tych koncepcji jest niezwykle ważne, aby unikać typowych błędów i nieporozumień, które mogą wystąpić w kodzie. Kluczowym zagadnieniem w programowaniu w JavaScript jest zarządzanie typami danych, a ich niewłaściwe użycie może prowadzić do trudnych do zdiagnozowania błędów w aplikacjach.

Pytanie 17

Wskaż funkcję PHP, która umożliwia zapisanie odczytanej zawartości pliku do zmiennej, która reprezentuje ciąg znaków?

A. eof()
B. get_file()
C. fwrite()
D. file_get_contents()
Odpowiedzi takie jak fwrite(), eof() oraz get_file() nie są prawidłowe w kontekście odczytu zawartości pliku do zmiennej. fwrite() jest funkcją przeznaczoną do zapisywania danych do pliku, co oznacza, że zamiast odczytu, jej zastosowanie polega na wprowadzaniu danych do plików, co jest odwrotne do potrzebnego działania. eof() natomiast sprawdza, czy osiągnięto koniec pliku, ale nie ma związku z odczytem zawartości pliku do zmiennej; jest to funkcja używana w kontekście strumieni plikowych. Wreszcie, get_file() nie jest standardową funkcją PHP i nie istnieje w dokumentacji PHP. Tego rodzaju błędy mogą wynikać z nieporozumienia dotyczącego funkcji i ich zastosowania w PHP. Ważne jest, aby przy wyborze funkcji kierować się ich specyfiką i przeznaczeniem. Właściwa wiedza na temat dostępnych funkcji oraz ich właściwego użycia jest kluczowa w programowaniu, aby uniknąć błędów logicznych i technicznych w kodzie.

Pytanie 18

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

<label for="imie">Imię: </label>
<input id="imie" value="Wpisz dane" title="Wpisz imię"><br>
<label for="nazw">Nazwisko: </label>
<input id="nazw" placeholder="Wpisz dane" title="Wpisz nazwisko">
A. placeholder
B. value
C. for
D. title
Dobrze! Poprawna odpowiedź to 'placeholder'. Atrybut 'placeholder' w elemencie input HTML jest używany do wyświetlania podpowiedzi wewnątrz pola formularza, która znika, gdy użytkownik zaczyna wpisywanie danych. Jest to zgodne z pytaniem, w którym poproszono o atrybut reprezentujący podpowiedź w polu formularza, która znika, gdy użytkownik rozpoczyna wpisywanie. Przykładem może być formularz logowania, gdzie w polach 'Użytkownik' i 'Hasło' można umieścić podpowiedzi 'Wpisz nazwę użytkownika' i 'Wpisz hasło' odpowiednio. Atrybut 'placeholder' jest bardzo przydatny w interaktywnym designie, pomagając użytkownikom zrozumieć, jakie informacje są od nich oczekiwane w danym polu formularza.

Pytanie 19

W PHP utworzenie oraz przypisanie tablicy asocjacyjnej do zmiennej odbywa się poprzez zapis

A. $tab = array (); $tab[] = array (1, 2, 3, 4);
B. $tab = array (array (1, 2), array (3, 4));
C. $tab = array ("a" => 1, "b" => 2, "c" => 3);
D. $tab = array (1, 2, 3, 4);
W niektórych odpowiedziach widzę różne typy tablic w PHP, ale to nie są tablice asocjacyjne. Na przykład zapis $tab = array (1, 2, 3, 4); tworzy tablicę z wartościami numerycznymi, gdzie te wartości mają domyślne indeksy, więc dostęp odbywa się przez numery. To nie pasuje do tego, co znamy jako tablice asocjacyjne, bo potrzebujemy kluczy będących ciągami znaków. Inny przypadek, $tab = array (array (1, 2), array (3, 4)); to tablica wielowymiarowa, gdzie każdy element też jest tablicą. Jest to w porządku w PHP, ale nie ma tu mowy o kluczach asocjacyjnych, więc niestety nie pasuje do kontekstu pytania. A zapis $tab = array (); $tab[] = array (1, 2, 3, 4); dodaje tablicę numeryczną jako element, co znów nie spełnia definicji tablicy asocjacyjnej, bo brakuje kluczy. Wszystkie te struktury mają swoje miejsce w PHP, ale żadna z nich nie jest tablicą asocjacyjną i nie pozwala na przypisanie wartości do konkretnych kluczy, co jest kluczowe w tym pytaniu.

Pytanie 20

W języku PHP tablice asocjacyjne to tablice, w których

A. istnieją przynajmniej dwa wymiary.
B. elementy tablicy są zawsze indeksowane od liczby równej 0.
C. indeks jest dowolnym napisem.
D. w każdej komórce tablicy przechowywana jest inna tablica.
W PHP pojęcie tablicy asocjacyjnej bywa mylone z kilkoma innymi konstrukcjami, dlatego łatwo wpaść w pułapkę skojarzeń. Tablica asocjacyjna nie ma nic wspólnego z liczbą wymiarów – fakt, że jakaś tablica jest wielowymiarowa (np. tablica tablic), wcale nie oznacza, że jest asocjacyjna. Możesz mieć tablicę dwuwymiarową z indeksami czysto numerycznymi i będzie to po prostu zwykła tablica indeksowana liczbami, tylko zagnieżdżona. Sam „wymiar” dotyczy struktury zagnieżdżenia, a nie sposobu adresowania elementów. Podobnie nie jest prawdą, że w tablicy asocjacyjnej w każdej komórce musi być inna tablica. To jest raczej opis tablicy zagnieżdżonej (np. do reprezentowania wierszy i kolumn), a nie definicja tablicy asocjacyjnej. Elementem tablicy asocjacyjnej może być cokolwiek: liczba, string, obiekt, null, inna tablica – ale to, co ją wyróżnia, to klucze tekstowe, a nie typ przechowywanych wartości. Kolejne typowe nieporozumienie to przekonanie, że elementy w tablicy zawsze są indeksowane od zera. W wielu językach (np. w C, Javie) rzeczywiście tablice „klasyczne” startują od indeksu 0, więc łatwo to nawykowo przenieść do PHP. Natomiast PHP jest pod tym względem bardziej elastyczny: możesz mieć tablicę z kluczami 0, 1, 2, ale możesz też mieć klucze 'imie', 'email' albo nawet mieszane – częściowo numeryczne, częściowo tekstowe. W tablicy asocjacyjnej klucz jest wartością logicznie opisującą dany element, a nie tylko kolejnym numerem pozycji. Z mojego doświadczenia wynika, że wiele błędów w kodzie bierze się z tego, że ktoś traktuje tablicę asocjacyjną jak „zwykłą tablicę od zera”, a potem odwołuje się do nieistniejących indeksów numerycznych. Dobra praktyka to świadome korzystanie z kluczy, nadawanie im sensownych nazw i pamiętanie, że w PHP tablica asocjacyjna to po prostu struktura klucz → wartość, gdzie kluczem bardzo często jest właśnie napis, a nie liczba.

Pytanie 21

Jakie narzędzie jest używane do organizowania oraz przedstawiania danych z wielu rekordów w celu ich wydruku lub dystrybucji?

A. makropolecenie
B. raport
C. kwerenda
D. formularz
Raport to narzędzie, które umożliwia zgrupowanie i prezentowanie informacji z wielu rekordów, co jest kluczowe w kontekście analizy danych oraz podejmowania decyzji biznesowych. Tworzenie raportów pozwala na syntetyzowanie informacji, co sprawia, że są one bardziej zrozumiałe dla odbiorców. W praktyce raporty mogą być wykorzystywane do monitorowania wyników sprzedaży, analiz finansowych, badań rynkowych czy oceny efektywności działań marketingowych. Dzięki zastosowaniu narzędzi do raportowania, takich jak systemy Business Intelligence, możliwe jest generowanie szczegółowych zestawień oraz wizualizacji, które wspierają decyzje strategiczne. Dobre praktyki w zakresie raportowania obejmują jasne definiowanie celów raportu, dobór odpowiednich wskaźników KPI oraz zastosowanie wizualizacji danych, co pozwala na lepsze zrozumienie przedstawianych informacji. W kontekście standardów branżowych, raporty powinny być tworzone zgodnie z zasadami klarowności, precyzji i adekwatności, aby skutecznie odpowiadały na potrzeby użytkowników.

Pytanie 22

Jaki selektor stylizuje akapity tekstu z klasą tekst oraz element blokowy z identyfikatorem obrazki?

A. p#tekst, div.obrazki
B. p.tekst + div#obrazki
C. p.tekst, div#obrazki
D. p#tekst + div.obrazki
Analizując dostępne odpowiedzi, można zauważyć istotne błędy w tym, jak selektory są zbudowane. Selekcja 'p#tekst' wprowadza zamieszanie, ponieważ '#' wskazuje na unikalny identyfikator, co oznacza, że nie może być zastosowane do akapitu, który wykorzystuje klasę. Identyfikatory w HTML muszą być unikalne w obrębie dokumentu, więc nie można stosować ID do wielu akapitów. Inna odpowiedź, 'p.tekst + div.obrazki', wykorzystuje operator sąsiedztwa '+', co oznacza, że styl zastosowany do div.obrazki dotyczy wyłącznie tego <div>, który jest bezpośrednio po akapicie z klasą 'tekst'. Tego rodzaju selektor może być użyty w bardzo specyficznych sytuacjach, ale w przypadku ogólnego formatowania akapitów i elementów div jest to znacznie bardziej ograniczające. Ostatnia odpowiedź 'p#tekst + div.obrazki' jest podobnie wadliwa z powodu nieprawidłowego użycia '#' w kontekście akapitu. Takie błędne myślenie prowadzi do sytuacji, gdzie nie tylko nie osiągamy zamierzonego efektu wizualnego, ale również komplikujemy kod, co negatywnie wpływa na jego czytelność oraz utrzymanie. W przypadku stylizacji ważne jest, aby stosować odpowiednie selektory w sposób zgodny z ich definicjami w standardach CSS, co zapewnia efektywne i zgodne z najlepszymi praktykami zarządzanie stylem elementów na stronie.

Pytanie 23

Wynikiem działania poniższej pętli for w przedstawionym kodzie PHP jest wyświetlenie liczb:

<?php
   for($i=5;$i>1;$i-=2)
       echo ($i%2)." ";
?>
A. 1 0 1
B. 1 1
C. 1 0
D. 1 0 1 0
Poprawna odpowiedź to 1 1, ponieważ analizując przedstawioną pętlę for, zaczynamy od zmiennej $i, która ma wartość 5. Pętla będzie działać tak długo, jak wartość $i jest większa od 1. W każdym kroku $i jest zmniejszane o 2, co oznacza, że w kolejnych iteracjach przyjmuje wartości 5, 3, a następnie 1. Wartości te są poddawane operacji modulo 2. Operacja modulo zwraca resztę z dzielenia, która dla liczb nieparzystych (5 i 3) wynosi 1 oraz dla liczby parzystej (0) wynosi 0. Zatem, w pierwszej iteracji, $i = 5, 5 % 2 = 1, a w drugiej iteracji, $i = 3, 3 % 2 = 1. Ostatecznie, pętla nie wykonuje się, gdy $i = 1, ponieważ warunek $i > 1 nie jest już spełniony. W rezultacie, poprawnym wynikiem działania tego fragmentu kodu jest wyświetlenie dwóch wartości 1. Przykład zastosowania takiej konstrukcji można znaleźć w sytuacjach, w których chcemy przetworzyć kolekcję liczb i wyodrębnić ich parzystość lub nieparzystość, co jest powszechną operacją w programowaniu.

Pytanie 24

W grze komputerowej można przejść do kolejnego poziomu, gdy spełnione są trzy warunki: zdobycie 20 punktów, zebranie co najmniej 3 paczek oraz przebycie dystansu 200 m. Wyrażenie logiczne, które weryfikuje te warunki w języku JavaScript, to

A. punkty == 20 && paczki == 3 && dystans == 200
B. punkty == 20 && paczki >= 3 && dystans == 200
C. punkty == 20 || paczki == 3 || dystans == 200
D. punkty == 20 || paczki >= 3 || dystans == 200
Wybrana odpowiedź 'punkty == 20 && paczki >= 3 && dystans == 200' jest prawidłowa, ponieważ wykorzystuje operator logiczny AND ('&&'), co oznacza, że wszystkie trzy warunki muszą być spełnione jednocześnie, aby przejść do następnego poziomu w grze. W kontekście programowania, a zwłaszcza w JavaScript, zrozumienie operatorów logicznych jest kluczowe dla podejmowania decyzji w oparciu o różne warunki. Na przykład, jeśli gracz zdobył dokładnie 20 punktów, zebrał 3 paczki i przebył 200 metrów, to wszystkie te warunki są spełnione, co pozwala na kontynuację gry. Dobrą praktyką jest stosowanie operatora >= (większe lub równe) dla paczek, ponieważ pozwala to graczowi na zbieranie większej liczby paczek, co dodaje elementy strategii i rozwoju w grze. Używanie odpowiednich operatorów logicznych jest fundamentalne w programowaniu, zapewniając, że aplikacje działają zgodnie z oczekiwaniami użytkowników. Przykład zastosowania to wprowadzenie logiki do gier, gdzie gracz musi wykonać określone zadania, aby przejść do kolejnych poziomów, co jest podstawą mechaniki wielu gier komputerowych.

Pytanie 25

Jakie jest zastosowanie programu debugger?

A. interpretacji kodu w wirtualnej maszynie Java
B. tłumaczenia kodu napisanego w języku wyższego poziomu na język maszynowy
C. analizy wykonywanego programu w celu lokalizacji błędów
D. badania kodu źródłowego w celu znalezienia błędów składniowych
Interpretacja kodu w wirtualnej maszynie Java odnosi się do działania maszyny wirtualnej, która wykonuje kod bajtowy stworzony przez kompilatory języków programowania, takich jak Java. Chociaż maszyna wirtualna jest istotna w procesie uruchamiania aplikacji Java, nie jest to funkcjonalność debuggera, który ma na celu inną rolę. Podobnie, analiza kodu źródłowego w celu odnalezienia błędów składniowych to proces, który wykonuje kompilator przed uruchomieniem programu. Debugger nie zajmuje się analizą składni, lecz koncentruje się na wykrywaniu błędów podczas wykonywania kodu. Tłumaczenie kodu zapisanego w języku wyższego poziomu na język maszynowy jest zadaniem kompilatora, a nie debuggera. Debugger działa na poziomie wykonania programu, a nie na poziomie jego kompilacji, co jest kluczowym aspektem odróżniającym te dwie funkcjonalności. Poprawne zrozumienie ról kompilatora i debuggera jest niezbędne, aby uniknąć mylnych wniosków dotyczących procesów tworzenia i uruchamiania oprogramowania.

Pytanie 26

Ile razy zostanie wykonana pętla przedstawiona w kodzie PHP?

for($i = 0; $i < 25; $i += 5) { ...... }
A. 25
B. 5
C. 0
D. 26
Pętla for w PHP, zdefiniowana jako for($i = 0; $i < 25; $i += 5), będzie wykonywana do momentu, gdy warunek $i < 25 będzie spełniony. Początkowa wartość $i to 0, a w każdej iteracji zwiększamy $i o 5. Wartości $i w kolejnych iteracjach będą wynosiły: 0, 5, 10, 15, 20. Po piątej iteracji, gdy $i osiągnie wartość 25, warunek $i < 25 przestanie być spełniony, co zakończy działanie pętli. W sumie, pętla wykona się dokładnie pięć razy. Zrozumienie działania pętli for jest kluczowe w programowaniu, ponieważ pozwala na automatyzację wielu zadań, co jest niezbędne w tworzeniu efektywnych i zoptymalizowanych aplikacji. Przykłady zastosowania to iteracja przez elementy tablic, generowanie numerów identyfikacyjnych czy przetwarzanie danych w bazach.

Pytanie 27

Wskaż polecenie do iteracji.

A. else
B. switch
C. for
D. throw
Instrukcja iteracyjna 'for' jest jednym z najczęściej używanych mechanizmów w programowaniu, umożliwiającym powtarzanie bloków kodu. Jej główną zaletą jest możliwość precyzyjnego określenia liczby powtórzeń, co czyni ją idealnym narzędziem do pracy z tablicami i kolekcjami danych. W skład składni instrukcji 'for' wchodzi inicjalizacja zmiennej, warunek kontynuacji oraz aktualizacja zmiennej, co pozwala na eleganckie i zrozumiałe pętle. Na przykład, w języku Python, zapis 'for i in range(5):' spowoduje wykonanie bloku kodu pięć razy, co jest przydatne przy iteracji przez indeksy tablicy. Standardy programowania, takie jak PEP 8 dla Pythona, podkreślają znaczenie czytelności kodu, a dobrze zorganizowane pętle 'for' przyczyniają się do utrzymania przejrzystości. Ponadto, instrukcje 'for' są również obecne w wielu innych językach, takich jak Java, C++ czy JavaScript, co czyni je uniwersalnym narzędziem w arsenale programisty.

Pytanie 28

Ograniczanie dostępu do niektórych pól lub metod obiektów danej klasy, tak aby mogły być one wykorzystywane wyłącznie przez wewnętrzne metody tej klasy lub funkcje zaprzyjaźnione, to

A. polimorfizm
B. hermetyzacja
C. dziedziczenie
D. konkatenacja
Dziedziczenie to mechanizm, który pozwala na tworzenie nowych klas na podstawie już istniejących, co umożliwia ponowne wykorzystanie kodu i wprowadzanie hierarchii w projektach, jednak nie ma nic wspólnego z ukrywaniem pól i metod. W dziedziczeniu, klasy pochodne dziedziczą właściwości i metody klas bazowych, co sprawia, że możliwe jest ich wykorzystanie, a nie ukrycie. Kolejną koncepcją jest konkatenacja, która w kontekście programowania nie odnosi się do hermetyzacji, lecz do łączenia ciągów tekstowych, co nie ma zastosowania przy ukrywaniu danych w klasach. Polimorfizm natomiast to zdolność obiektów do przyjmowania wielu form, co jest związane z interfejsami i dziedziczeniem, ale również nie dotyczy hermetyzacji. Typowym błędem myślowym jest mylenie tych pojęć z hermetyzacją, ponieważ wszystkie one są fundamentami programowania obiektowego, lecz służą różnym celom. Zrozumienie tego rozróżnienia jest istotne dla prawidłowego stosowania technik programistycznych i wdrażania efektywnych rozwiązań w praktyce.

Pytanie 29

Aby umieścić plik wideo na stronie internetowej z widocznymi przyciskami sterującymi oraz zapętlonym odtwarzaniem, należy w znaczniku <video> użyć atrybutów

A. controls i autoplay
B. autoplay i preload
C. loop i muted
D. controls i loop
Odpowiedź "controls i loop" jest całkiem dobra, bo te dwa atrybuty są naprawdę istotne, żeby wideo działało jak należy na stronie. Atrybut "controls" dodaje do odtwarzacza przyciski, które pozwalają na zatrzymywanie, odtwarzanie i regulowanie głośności, co jest bardzo wygodne dla ludzi. Z kolei "loop" sprawia, że filmik odtwarza się w kółko, co może być super użyteczne, szczególnie w prezentacjach albo reklamach, które chcemy pokazać kilka razy. Przykładowo, <video src='video.mp4' controls loop> wstawia wideo z przyciskami, które można łatwo obsługiwać, no i od razu się zapętla. W ogóle, korzystanie z tych atrybutów to dobra praktyka, bo sprawia, że strony są bardziej przyjazne dla użytkowników oraz poprawia ich doświadczenia.

Pytanie 30

<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. nie może być puste i wymaga wpisania tekstu ze znakiem @.
C. nie powinno zawierać znaków numerycznych.
D. może być puste.
W tym fragmencie kodu HTML masz dwa bardzo ważne atrybuty: type="email" oraz required. To właśnie one razem powodują, że poprawna jest odpowiedź, że pole nie może być puste i wymaga wpisania tekstu ze znakiem @. Atrybut required oznacza, że pole jest obowiązkowe. Przeglądarka, zgodnie ze specyfikacją HTML5, nie pozwoli wysłać formularza, dopóki pole nie będzie wypełnione. Użytkownik kliknie przycisk „Zapisz”, a formularz po prostu się nie wyśle – pojawi się komunikat walidacyjny po stronie przeglądarki. To jest tzw. walidacja po stronie klienta, domyślnie wbudowana w HTML. Z kolei type="email" uruchamia specjalny mechanizm sprawdzania formatu wpisanego tekstu. Przeglądarka sprawdza, czy ciąg znaków wygląda jak adres e‑mail: musi zawierać co najmniej znak @ i jakąś część przed i po nim. To nie jest super zaawansowana walidacja, ale wystarcza jako pierwszy filtr, np. "[email protected]" przejdzie, a "jan.domena.pl" już nie. Moim zdaniem to bardzo wygodne, bo nie trzeba od razu pisać własnego JavaScriptu tylko po to, żeby odsiać oczywiste błędy. W praktyce w aplikacjach webowych zwykle łączy się tę prostą walidację HTML5 z dodatkowymi sprawdzeniami po stronie serwera (np. w PHP czy w innym backendzie), bo dane z formularza zawsze trzeba traktować z ograniczonym zaufaniem. Dobrym nawykiem jest też dodanie atrybutu name, np. name="email", żeby serwer mógł poprawnie odebrać wartość pola. Warto też wiedzieć, że niektóre przeglądarki mobilne, gdy widzą type="email", podpowiadają użytkownikowi specjalną klawiaturę z łatwym dostępem do znaku @ i kropki, co realnie poprawia wygodę wpisywania adresu. To taki mały szczegół, ale w profesjonalnych projektach UX ma znaczenie. Podsumowując: required blokuje puste wysłanie formularza, a type="email" wymusza poprawny, podstawowy format adresu ze znakiem @ – dokładnie to opisuje poprawna odpowiedź.

Pytanie 31

W przedstawionym filmie, aby połączyć tekst i wielokąt w jeden obiekt tak, aby operacja ta była odwracalna zastosowano funkcję

A. sumy.
B. grupowania.
C. części wspólnej.
D. wykluczenia.
Prawidłowo – w filmie została użyta funkcja grupowania. W grafice wektorowej, np. w programach typu Inkscape, CorelDRAW czy Illustrator, grupowanie służy właśnie do logicznego połączenia kilku obiektów w jeden „zestaw”, ale bez trwałego mieszania ich geometrii. To znaczy: tekst dalej pozostaje tekstem, wielokąt dalej jest wielokątem, tylko są traktowane jak jeden obiekt przy przesuwaniu, skalowaniu czy obracaniu. Dzięki temu operacja jest w pełni odwracalna – w każdej chwili możesz rozgrupować elementy i edytować każdy osobno. Moim zdaniem to jest podstawowa dobra praktyka w pracy z projektami, które mogą wymagać późniejszych poprawek: podpisy, etykiety, logotypy, schematy techniczne. Jeśli połączysz tekst z kształtem za pomocą operacji boolowskich (suma, część wspólna, wykluczenie), to tekst zwykle zamienia się na krzywe, przestaje być edytowalny jako tekst. To bywa potrzebne przy przygotowaniu do druku czy eksportu do formatu, który nie obsługuje fontów, ale nie wtedy, gdy zależy nam na łatwej edycji. Z mojego doświadczenia: przy projektowaniu interfejsów, ikon, prostych banerów na WWW czy grafik do multimediów, najrozsądniej jest najpierw grupować logicznie elementy (np. ikona + podpis), a dopiero na samym końcu, gdy projekt jest ostateczny, ewentualnie zamieniać tekst na krzywe. Grupowanie pozwala też szybko zaznaczać całe moduły projektu, wyrównywać je względem siebie, duplikować całe zestawy (np. kafelki menu, przyciski z opisami) bez ryzyka, że coś się rozjedzie. W grafice komputerowej to taka podstawowa „organizacja pracy” – mniej destrukcyjna niż różne operacje na kształtach i zdecydowanie bardziej elastyczna przy późniejszych zmianach.

Pytanie 32

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

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

Pytanie 33

Który z wymienionych formatów wideo nie jest wspierany przez standard HTML5?

A. D. WebM
B. A. AVI
C. B. Ogg
D. C. MP4
Wybór Ogg, MP4 czy WebM jako odpowiedzi niewłaściwych jest nie do końca trafny, bo wszystkie te formaty są jednak obsługiwane przez HTML5. Ogg, mimo że mniej popularny, jest całkowicie ok w specyfikacji HTML5 i zyskuje na znaczeniu w kontekście otwartych standardów. MP4 to jeden z najpopularniejszych formatów, wspierany przez prawie wszystkie przeglądarki i urządzenia mobilne, więc to świetny wybór do strumieniowania. WebM, stworzony przez Google, również ma swoje miejsce i jest często używany do wideo w sieci. Wiele osób myli się myśląc, że mniej znane formaty są niekompatybilne z HTML5. Często ludzie uważają, że starsze formaty jak AVI są bardziej uniwersalne, ale to nieprawda, bo współczesne przeglądarki mają inne wymagania. Dlatego tak ważne jest, by programiści i twórcy treści znali różnorodność formatów i ich zastosowanie w multimediach w sieci.

Pytanie 34

Zarządzanie procesem przekształcania kodu źródłowego stworzonego przez programistę na kod maszynowy, który jest zrozumiały dla komputera, nosi nazwę

A. rozpoczynanie
B. wdrażanie
C. kompilowanie
D. analizowanie
Kompilowanie to proces, w którym kod źródłowy, napisany w języku programowania wysokiego poziomu, jest przekształcany na kod maszynowy, który może być zrozumiany i wykonany przez komputer. Działa to na zasadzie analizy składniowej i semantycznej kodu źródłowego, a następnie generowania odpowiednich instrukcji dla procesora. Przykładem narzędzi, które realizują ten proces, są kompilatory, takie jak GCC dla języka C czy javac dla języka Java. Kompilowanie ma kluczowe znaczenie w programowaniu, ponieważ pozwala na optymalizację kodu, co zwiększa wydajność aplikacji. Dobre praktyki wskazują, że kompilowanie powinno być częścią cyklu programowania, a regularne kompilowanie kodu pomaga w szybszym wykrywaniu błędów oraz zapewnia, że kod jest zawsze zgodny z wymaganiami projektowymi. Warto również zaznaczyć, że proces kompilacji może obejmować różne etapy, takie jak prekompilacja, generacja kodu pośredniego oraz linkowanie, co czyni go złożonym i wieloetapowym działaniem.

Pytanie 35

$n = '[email protected]'; $dl = strlen($n); $i = 0; while ($i < $dl && $n[$i] != '@') {     echo $n[$i];     $i++; } Fragment kodu w języku PHP wyświetli

A. tylko nazwę domeny, czyli 'host.pl'
B. nazwę konta z znakiem @, czyli 'adres@'
C. wyłącznie nazwę konta, czyli 'adres'
D. cały adres e-mail, czyli '[email protected]'
W przedstawionym kodzie PHP zmienna $n przechowuje adres e-mail '[email protected]'. Funkcja strlen($n) zwraca długość tego ciągu, co w tym przypadku wynosi 14. Pętla while iteruje przez znaki ciągu, aż napotka znak '@' lub do końca ciągu. W każdej iteracji pętli, znak aktualnej pozycji jest wypisywany. Pętla zaczyna od indeksu 0 i sprawdza każdy znak, aż do momentu, gdy napotka znak '@'. W wyniku działania pętli, wypisywane są tylko znaki przed '@', co w tym przypadku oznacza nazwę konta, czyli 'adres'. Aby lepiej zrozumieć to działanie, warto postawić przed sobą praktyczny przykład. Jeśli zmienimy zmienną $n na '[email protected]', kod wypisze 'test', co potwierdza, że pętla działa zgodnie z zamierzeniem, wypisując wyłącznie część przed znakiem '@'. Technicznie, zmienne tablicowe w PHP mogą być indeksowane za pomocą operatora kwadratowego, co jest wykorzystywane w tym przypadku do dostępu do poszczególnych znaków ciągu, co jest typowe w programowaniu z użyciem PHP i stringów. W kontekście standardów, kod przestrzega zasady oddzielania nazwy użytkownika od domeny w adresie e-mail, co jest kluczowe dla jego poprawnego działania.

Pytanie 36

Wskaż, jak wygląda komentarz wieloliniowy w języku PHP?

A. /* */
B. //
C. <!-- -->
D. #
Komentarz wieloliniowy w języku PHP jest oznaczany przez symbole '/*' na początku oraz '*/' na końcu. Tego typu komentarze pozwalają na umieszczanie dłuższych opisów lub wyjaśnień w kodzie, co jest szczególnie przydatne w przypadku bardziej złożonych fragmentów. Przykładowo, jeśli mamy funkcję, która wykonuje skomplikowane obliczenia, można użyć komentarza wieloliniowego, aby szczegółowo opisać, co ta funkcja robi oraz jakie są jej wejścia i wyjścia. W dobie pracy zespołowej i dbałości o dokumentację kodu, stosowanie komentarzy do wyjaśnienia celów, metod i ograniczeń kodu jest dobrą praktyką. Dzięki temu, programiści, którzy będą pracować z danym fragmentem kodu w przyszłości, będą mieli pełniejsze zrozumienie jego działania. Używanie komentarzy wieloliniowych w PHP jest zgodne z najlepszymi praktykami programistycznymi, sprzyja utrzymaniu porządku w kodzie oraz ułatwia jego późniejsze modyfikacje.

Pytanie 37

Na ilustracji przedstawiono

Ilustracja do pytania
A. testy funkcjonalne strony interenetowej.
B. testy bezpieczeństwa strony.
C. analizę ruchu sieciowego między serwerem a przeglądarką.
D. analizę poprawności kodu strony internetowej.
Na zrzucie ekranu widać kartę „Network” w narzędziach deweloperskich przeglądarki (DevTools). To właśnie tutaj podglądamy, jak wygląda ruch sieciowy pomiędzy przeglądarką a serwerem. Każdy wiersz listy to jedno żądanie HTTP/HTTPS: dokument HTML, arkusz CSS, skrypt JS, grafika, font itp. W kolumnach masz m.in. Name (adres zasobu), Status (kody odpowiedzi HTTP, np. 200, 307), Type (rodzaj zasobu), Size (wielkość odpowiedzi) oraz Time (czas pobierania). U góry widać wykres czasowy, który pokazuje, kiedy poszczególne żądania były wysyłane i jak długo trwało ich obsłużenie. To jest klasyczna analiza ruchu sieciowego między serwerem a przeglądarką, a nie testy funkcjonalne czy bezpieczeństwa. W praktyce takie narzędzie wykorzystuje się do diagnozowania problemów z wydajnością strony (np. które pliki ładują się najdłużej), do sprawdzania, czy wszystkie zasoby ładują się poprawnie (brak błędów 404, 500), do inspekcji nagłówków HTTP (np. cache-control, content-type, CORS), a także do podglądu zapytań AJAX / Fetch/XHR wysyłanych przez skrypty JavaScript. Moim zdaniem znajomość tej zakładki to absolutna podstawa pracy front-end developera i testera, bo pozwala szybko zweryfikować, co naprawdę dzieje się „pod maską” podczas ładowania strony i komunikacji klient–serwer. Dobre praktyki w branży zalecają regularne korzystanie z DevTools przy optymalizacji czasu ładowania, analizie błędów sieciowych oraz przy debugowaniu REST API czy komunikacji z backendem.

Pytanie 38

Zapytanie SQL o treści: UPDATE artykuly SET cena = cena * 0.7 WHERE kod = 2; wskazuje na

A. dodanie w tabeli artykuly nowych pól cena oraz kod
B. w tabeli artykuly obniża wartość każdego pola cena o 30% dla wszystkich rekordów artykułów
C. dodanie w tabeli artykuly pola o nazwie cena z atrybutem kod
D. w tabeli artykuly zmniejsza wartość każdego pola cena, dla którego pole kod ma wartość 2
Ten kod SQL, czyli 'UPDATE artykuly SET cena = cena * 0.7 WHERE kod = 2;', służy do zaktualizowania ceny w tabeli 'artykuly' dla rekordów, gdzie 'kod' ma wartość 2. Fajnie, że rozumiesz, że z użyciem komendy 'UPDATE' nie dodajemy nowych pól, tylko zmieniamy te już istniejące. Mnożenie ceny przez 0.7 oznacza, że obniżamy ją o 30%, co jest dość powszechnie stosowane w przypadku promocji. Dzięki temu możemy lepiej zarządzać cenami w bazie danych. Warto też pamiętać, że klauzula 'WHERE' jest super ważna, bo pozwala nam ograniczyć działanie tego polecenia tylko do wybranych rekordów. W przeciwnym razie mogłoby się zdarzyć, że obniżylibyśmy ceny wszystkich produktów, co mogłoby być niebezpieczne. Dobrze wiedzieć, w jaki sposób korzystać z tych komend, bo to zdecydowanie ułatwia pracę z danymi.

Pytanie 39

Edytor, który realizuje zasady WYSIWYG, powinien umożliwiać

A. publikację serwisów na serwerze przy użyciu wbudowanego klienta FTP
B. osiągnięcie podobnego rezultatu tworzonej strony do jej wizualizacji w przeglądarce internetowej
C. tworzenie elementów podstawowej grafiki wektorowej
D. przetwarzanie plików dźwiękowych przed ich umieszczeniem na stronie internetowej
Wybór niepoprawnych odpowiedzi ukazuje szerszy kontekst funkcjonalności edytorów WYSIWYG i ich ograniczeń. Tworzenie podstawowej grafiki wektorowej nie jest typowym zadaniem dla edytora WYSIWYG, ponieważ te narzędzia koncentrują się głównie na edytowaniu treści tekstowych, układzie stron oraz zarządzaniu mediami, a nie na tworzeniu grafiki. Edytory graficzne, takie jak Adobe Illustrator czy Inkscape, są przeznaczone do pracy z grafiką wektorową, co różni się od funkcji edytora WYSIWYG. Publikacja strony na serwerze poprzez wbudowanego klienta FTP natomiast odnosi się do procesu transferu plików i nie jest kluczowym aspektem edytorów WYSIWYG, które skupiają się na tworzeniu i edytowaniu treści. Zazwyczaj użytkownicy korzystają z dedykowanych programów FTP do zarządzania tym procesem, a edytory WYSIWYG powinny jedynie eksportować gotową stronę do formatu, który można łatwo przesłać. Obróbka plików dźwiękowych przed umieszczeniem ich na stronie internetowej również nie jest funkcją edytora WYSIWYG. Edytory te zazwyczaj oferują jedynie opcje wstawiania multimediów, takich jak dźwięk czy wideo, ale nie zajmują się ich edytowaniem. Programy do edycji dźwięku, takie jak Audacity, służą do tego celu i oferują pełne możliwości obróbcze. W kontekście edytorów WYSIWYG kluczowe jest ich skupienie na prezentacji i łatwości użycia, a nie na złożonych procesach edycyjnych innych typów plików.

Pytanie 40

W JavaScript zdarzenie onKeydown zostanie wywołane, gdy klawisz

A. klawiatury będzie wciśnięty
B. klawiatury będzie zwolniony
C. myszki będzie zwolniony
D. myszki będzie wciśnięty
Odpowiedź, że zdarzenie onKeydown jest wywoływane, gdy klawisz klawiatury został naciśnięty, jest prawidłowa, ponieważ onKeydown jest zdarzeniem, które reaguje na pierwszą interakcję użytkownika z klawiaturą. W praktyce oznacza to, że gdy użytkownik naciśnie dowolny klawisz na klawiaturze, np. literę, cyfrę lub klawisz funkcyjny, zdarzenie onKeydown zostanie wywołane. Jest to kluczowe w kontekście tworzenia interaktywnych aplikacji webowych, ponieważ pozwala programistom na obsługę wejścia użytkownika w czasie rzeczywistym. Na przykład, w aplikacji do edycji tekstu, można wykorzystać onKeydown do aktualizacji zawartości edytora na podstawie wprowadzanego tekstu, co zapewnia płynne doświadczenie użytkownika. Dobrym przykładem zastosowania tego zdarzenia jest również implementacja gier, w których ruchy postaci lub akcje są wykonywane w odpowiedzi na naciśnięcia klawiszy. W standardach W3C dotyczących dostępu i interakcji z użytkownikiem, zdarzenie onKeydown uwzględnia również kwestie dostępności, co jest istotne dla projektowania inkluzywnych aplikacji.