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: 9 czerwca 2026 00:36
  • Data zakończenia: 9 czerwca 2026 00:38

Egzamin niezdany

Wynik: 15/40 punktów (37,5%)

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

Dzięki któremu mechanizmowi możliwe jest dostosowanie wyglądu strony do konkretnego użytkownika i jego identyfikacja w serwisie?

A. połączenia z bazą
B. obiektów DOM
C. cookie (ciasteczek)
D. formularzy
Pytanie dotyczy rozpoznania konkretnego użytkownika między wizytami. Obiekty DOM to reprezentacja struktury strony, połączenie z bazą dotyczy danych na serwerze, a formularze tylko zbierają dane wejściowe - żadne z nich samo nie zapamiętuje tożsamości. Robią to cookie (ciasteczka).

Pytanie 2

Aby przenieść pliki strony internetowej na serwer, można skorzystać z programu:

A. FileZilla
B. Go!Zilla
C. Bugzilla
D. CloneZilla
FileZilla to popularny, darmowy klient FTP, FTPS i SFTP. Umożliwia przesyłanie plików między komputerem a serwerem, dlatego używa się go do publikacji witryny: po połączeniu z kontem na serwerze kopiuje się pliki strony do właściwego katalogu. Obsługuje połączenia szyfrowane i wznawianie transferu. To typowe narzędzie do wdrażania strony, więc poprawną odpowiedzią jest FileZilla.

Pytanie 3

W instrukcji warunkowej w języku JavaScript należy zweryfikować sytuację, w której wartość zmiennej a mieści się w przedziale (0, 100), a wartość zmiennej b jest większa od zera. Jak można poprawnie zapisać taki warunek?

A. if (a > 0 || a < 100 11 b < 0)
B. if ((a > 0 11 a < 100) && b > 0)
C. if ((a > 0 && a < 100) 11 b < 0)
D. if (a > 0 && a < 100 && b > 0)
Odpowiedź if (a > 0 && a < 100 && b > 0) jest prawidłowa, ponieważ dokładnie odzwierciedla wymogi przedstawione w pytaniu. W tym przypadku, warunek sprawdza, czy zmienna 'a' jest większa od zera oraz mniejsza od 100, co oznacza, że mieści się w przedziale (0, 100). Dodatkowo, warunek b > 0 zapewnia, że zmienna 'b' ma wartość większą od zera. Użycie operatora logicznego && jest kluczowe, ponieważ pozwala na połączenie wszystkich trzech warunków, co oznacza, że wszystkie muszą być spełnione, aby blok kodu w instrukcji if został wykonany. W praktyce, ten typ instrukcji jest niezwykle użyteczny w różnorodnych aplikacjach, na przykład w systemach walidacji danych wejściowych, gdzie istotne jest sprawdzenie, czy wartości są w określonych zakresach przed przetwarzaniem. Dobrą praktyką jest zawsze stosowanie wyraźnych i zrozumiałych warunków logicznych w celu zwiększenia czytelności i utrzymania kodu, co jest zgodne z zasadami czystego kodowania.

Pytanie 4

W dokumencie HTML umieszczono tekst sformatowany określonym stylem. Aby dodać do tego tekstu kilka słów sformatowanych innym stylem, należy użyć znacznika

A. <span>
B. <hr>
C. <table>
D. <section>
<span> jest znacznikiem HTML, który służy do stosowania stylów CSS do określonych fragmentów tekstu w obrębie bloków HTML. Umożliwia on formatowanie tekstu w bardziej lokalny sposób, co jest niezwykle przydatne, gdy chcemy wyróżnić niektóre słowa lub frazy w dłuższym akapicie. W odróżnieniu od znaczników takich jak <div>, które są stosowane do większych sekcji, <span> działa na poziomie inline, co oznacza, że nie wprowadza nowego bloku w układzie strony. Przykład użycia tej etykiety może wyglądać następująco: <p>W tym akapicie <span style='color:red;'>ważne słowo</span> jest wyróżnione kolorem czerwonym.</p>. Dzięki temu możemy łatwo zastosować różnorodne style, takie jak zmiana koloru czcionki, czcionki, tła lub nawet dodawanie efektów animacyjnych do konkretnego fragmentu tekstu. Zgodnie z standardami W3C, <span> jest zalecanym sposobem na selektywne formatowanie tekstu, co czyni go niezwykle praktycznym narzędziem w tworzeniu elastycznych i atrakcyjnych wizualnie stron internetowych.

Pytanie 5

Aby ustawić wewnętrzne marginesy dla elementu: margines górny 50px, dolny 40px, prawy 20px oraz lewy 30px, powinno się zastosować składnię CSS

A. padding: 50px, 20px, 40px, 30px;
B. padding: 50px, 40px, 20px, 30px;
C. padding: 20px, 40px, 30px, 50px;
D. padding: 40px, 30px, 50px, 20px;
Podane odpowiedzi niepoprawne wynikają z pomylenia kolejności, w jakiej wartości paddingu są interpretowane w CSS. Wartości paddingu są rozpoznawane w określonej sekwencji: najpierw górny, następnie prawy, dolny, a na końcu lewy. Dlatego, jeśli margines górny wynosi 50px, prawy 20px, dolny 40px i lewy 30px, to niektóre z przedstawionych opcji nie oddają tej kolejności. Użycie nieodpowiednich wartości skutkuje nieprzewidywalnym wyglądem elementów na stronie, co może prowadzić do problemów z układem oraz zaburzenia estetyki. W szczególności, niepoprawne zestawienie wartości może powodować, że odstępy będą nie tylko niewłaściwe, ale także mogą przyczynić się do trudności w interakcji użytkowników z elementami na stronie. Dodatkowo, błędy w stosowaniu paddingu mogą prowadzić do konfliktów z innymi stylami CSS, co jeszcze bardziej komplikuje proces projektowania. W praktyce, niepoprawne stosowanie kolejności wartości paddingu jest częstym błędem, który może być wynikiem braku zrozumienia konwencji CSS lub pośpiechu w implementacji. Kluczowe jest zrozumienie, że CSS jest oparty na ściśle określonych zasadach, a niewłaściwe stosowanie tych zasad może prowadzić do nieefektywnych rozwiązań projektowych.

Pytanie 6

W tabeli artykuly (kolumna cena) chcemy wybrać artykuły, których cena NIE mieści się w przedziale od 1000 do 1500 zł. Którego warunku WHERE należy użyć?

A.
cena NOT IN (1000, 1500)
B.
cena < 1000 AND cena > 1500
C.
cena NOT BETWEEN 1000 AND 1500
D.
cena BETWEEN 1000 AND 1500
Aby wybrać wartości spoza zakresu, używa się NOT BETWEEN dolna AND górna. Warunek cena NOT BETWEEN 1000 AND 1500 zwróci artykuły tańsze niż 1000 lub droższe niż 1500 zł. To zwięzły odpowiednik cena < 1000 OR cena > 1500. Dlatego poprawny jest NOT BETWEEN.

Pytanie 7

Tabele Osoby oraz Zainteresowania są połączone relacją jeden do wielu. Jakie zapytanie SQL należy użyć, aby w oparciu o tę relację poprawnie wyświetlić imiona i odpowiadające im hobby?

Ilustracja do pytania
A. SELECT imie, hobby FROM Osoby, Zainteresowania;
B. SELECT imie, hobby FROM Osoby.Zainteresowania_id = Zainteresowania.id FROM Osoby, Zainteresowania;
C. SELECT imie, hobby FROM Osoby, Zainteresowania WHERE Osoby.id = Zainteresowania.id;
D. SELECT imie, hobby FROM Osoby JOIN Zainteresowania ON Osoby.Zainteresowania_id = Zainteresowania.id;
Odpowiedź numer 1 jest poprawna, ponieważ wykorzystuje składnię JOIN, która jest standardowym sposobem łączenia dwóch tabel w SQL. W tym przypadku tabele Osoby i Zainteresowania są połączone za pomocą klucza obcego Osoby.Zainteresowania_id, który odwołuje się do klucza głównego w tabeli Zainteresowania. Dzięki użyciu klauzuli ON możemy precyzyjnie określić warunek łączenia tych tabel. Takie podejście jest zgodne z dobrymi praktykami projektowania baz danych, ponieważ pozwala na efektywne zarządzanie relacjami między danymi. Stosowanie JOIN umożliwia również ograniczenie wyniku do konkretnych wierszy, co zwiększa wydajność zapytań. Praktyczne zastosowanie tego rodzaju zapytań obejmuje różne systemy zarządzania danymi, gdzie konieczne jest pobieranie powiązanych informacji z wielu źródeł danych. Warto również pamiętać, że JOIN-y są ustandaryzowanym elementem języka SQL, co gwarantuje ich poprawne działanie w różnych systemach bazodanowych, takich jak MySQL, PostgreSQL czy Oracle SQL. W kontekście relacyjnych baz danych stanowią one fundament w optymalizacji i organizacji danych, co jest kluczowe dla profesjonalistów z branży IT.

Pytanie 8

Co powinno znaleźć się w KAŻDEJ tabeli, aby baza działała poprawnie i spójnie?

A. klucz PRIMARY KEY (unikalny i niepusty)
B. klucze PRIMARY KEY i FOREIGN KEY
C. klucz FOREIGN KEY z NOT NULL
D. klucz obcy z NOT NULL i UNIQUE
Każda tabela powinna mieć klucz główny (PRIMARY KEY) - pole o wartościach UNIKALNYCH i NIEPUSTYCH, które jednoznacznie identyfikuje każdy wiersz. Bez niego trudno odróżnić rekordy i utrzymać spójność. Dlatego w każdej tabeli potrzebny jest klucz główny.

Pytanie 9

Którego znacznika HTML użyć, aby wstawić poziomą linię?

A.
<line>
B.
<br>
C.
<hl>
D.
<hr>
<br> łamie wiersz, a nie rysuje linii. <line> i <hl> to znaczniki nieistniejące w HTML. Poziomą linię wstawia <hr>.

Pytanie 10

Przedstawiony algorytm umożliwia wyliczenie

Ilustracja do pytania
A. średniej arytmetycznej n liczb a wprowadzonych przez użytkownika.
B. najmniejszego wspólnego dzielnika dla n kolejnych liczb a.
C. średniej geometrycznej n liczb a wprowadzonych przez użytkownika.
D. reszty z dzielenia kolejnych liczb a przez liczbę n.
Algorytm z diagramu realizuje dokładnie klasyczny wzór na średnią arytmetyczną. Najpierw wczytywana jest liczba n – ile wartości użytkownik poda. Potem zmienna „Wynik” jest zerowana, a zmienna sterująca pętlą i ustawiana na 0. Następnie działa pętla z warunkiem i < n: w każdej iteracji program wczytuje kolejną liczbę a, dodaje ją do zmiennej Wynik (czyli de facto sumuje wszystkie podane liczby), a licznik i zwiększa o 1. Gdy i przestaje być mniejsze od n, pętla się kończy i dopiero wtedy wykonywana jest operacja Wynik = Wynik / n. To jest dokładnie to, co robi wzór: średnia = (a1 + a2 + … + an) / n. Z praktycznego punktu widzenia taki algorytm to absolutna podstawa w programowaniu, szczególnie przy pracy z danymi wejściowymi: wynikami pomiarów, ocenami uczniów, czasami odpowiedzi serwera itp. W wielu językach programowania (C, Java, JavaScript, PHP) napisanie tego w kodzie sprowadza się do jednej pętli for lub while, sumowania zmiennej i jednego dzielenia na końcu. Dobrą praktyką jest, żeby dzielenie wykonywać dopiero po zsumowaniu wszystkich elementów, dokładnie tak jak na diagramie, a nie w każdej iteracji, bo to ogranicza błędy zaokrągleń i jest po prostu wydajniejsze obliczeniowo. W aplikacjach webowych ten schemat pojawia się np. przy liczeniu średniej oceny produktu z wielu głosów użytkowników, średniego czasu odpowiedzi API albo średniego czasu spędzonego na stronie. Moim zdaniem to jedno z kluczowych ćwiczeń na zrozumienie pętli i zmiennych pomocniczych, bo łączy matematykę z bardzo praktyczną logiką algorytmiczną.

Pytanie 11

Na podstawie przydzielenia wartości do zmiennych w języku PHP można zauważyć, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. zmienna1 i zmienna2 mają ten sam typ.
B. zmienna2 i zmienna3 mają ten sam typ.
C. zmienna1 i zmienna3 mają ten sam typ.
D. wszystkie zmienne mają ten sam typ.
Nie do końca to jest dobre, co mówisz, bo $zmienna1 to liczba całkowita (integer), a $zmienna2 to string. Typy danych w PHP mają znaczenie, bo różnie się zachowują w trakcie działania. Liczby są liczone, a teksty traktowane jako znaki. Mimo że obie pokazują "15", to ich typy są inne, co może prowadzić do błędów. Z $zmienna1 i $zmienna3 też jest nieciekawie, bo mimo że to liczby, to jednak typy się różnią - $zmienna1 to integer, a $zmienna3 to string. Często można się w tym pogubić, zakładając, że mając te same wartości, są też tego samego typu. Jak mówisz, że trzy zmienne są takie same, to pokazujesz, że nie do końca masz jasność co do typów w PHP. Pamiętaj, żeby zwracać uwagę na rzutowanie typów, bo niedopatrzenia mogą skutkować problemami w kodzie. Rekomenduję, żeby programiści regularnie sięgać do dokumentacji i używać dobrych praktyk, by lepiej ogarnąć temat typów danych w swoich projektach.

Pytanie 12

W tabeli zwierzeta znajdują się pola: nazwa, gatunek, gromada, cechy oraz dlugosc_zycia. Aby uzyskać listę nazw zwierząt, które dożywają przynajmniej 20 lat i są ssakami, należy wykonać zapytanie:

A. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = 'ssak';
B. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 OR gromada = 'ssak';
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20;
Twoja odpowiedź jest jak najbardziej na miejscu, bo spełnia te dwa ważne wymagania z pytania: pokazuje nazwy zwierząt, które żyją przynajmniej 20 lat i są ssakami. Użycie AND w klauzuli WHERE sprawia, że w wynikach są tylko te zwierzęta, które pasują do obu kryteriów. To zapytanie ma swoje zastosowanie, na przykład w analizach zoologicznych, gdzie długość życia niektórych gatunków ssaków może być kluczowa, zwłaszcza w kontekście ochrony i badań nad ich ekologią. Z osobistego doświadczenia mogę powiedzieć, że dobrze jest stosować takie zapytania w bazach danych, bo to zapewnia lepszą efektywność i wydajność w przetwarzaniu danych. Generalnie w tworzeniu zapytań SQL warto zawsze ustalać konkretne warunki w klauzuli WHERE, żeby uniknąć niechcianych wyników i zmniejszyć obciążenie bazy danych.

Pytanie 13

Jaka będzie wartość $a po wykonaniu kodu?

$i = 10; $a = 0;
while ($i) {
  $a = $a + 2;
  $i--;
}
A. 10
B. 0
C. 2
D. 20
Wszystkie błędne wyniki biorą się z pomyłki przy „ręcznym” prześledzeniu pętli. Wartość 0 oznaczałaby, że pętla nie wykonała się ani razu - ale $i startuje od 10, więc warunek od początku jest prawdziwy. Wynik 2 odpowiadałby tylko JEDNEMU obrotowi, a obrotów jest dziesięć (tyle, ile wynosi początkowe $i). Wartość 10 wyszłaby, gdyby $a rosło o 1 na obrót - tutaj jednak rośnie o 2 (instrukcja $a = $a + 2). Prześledź licznik krok po kroku: $i maleje o 1 aż do zera, czyli 10 obrotów, a w każdym dokładamy 2 do $a. Po dziesięciu obrotach po +2 otrzymujemy 10 × 2 = 20 - i to jest poprawny wynik.

Pytanie 14

W bazie danych znajduje się tabela pracownicy z kolumnami: id, imie, nazwisko, pensja. W nowym roku zdecydowano o podwyżce pensji dla wszystkich pracowników o 100 zł. Ta aktualizacja w bazie danych powinna mieć formę

A. UPDATE pensja SET +100
B. UPDATE pensja SET 100
C. UPDATE pracownicy SET pensja = 100
D. UPDATE pracownicy SET pensja = pensja + 100
Odpowiedź 'UPDATE pracownicy SET pensja = pensja + 100;' jest właściwa, ponieważ używa standardowej składni SQL do aktualizacji danych w tabeli. W tym przypadku, instruktacja 'SET pensja = pensja + 100' oznacza, że dla każdego rekordu w tabeli 'pracownicy', wartość kolumny 'pensja' zostanie zwiększona o 100 zł. To podejście jest zgodne z zasadami dobrych praktyk w programowaniu SQL, ponieważ aktualizuje wartość na podstawie jej bieżącej wartości, co pozwala na zachowanie pełnej kontroli nad danymi. Tego rodzaju aktualizacja jest często stosowana w bazach danych, gdy konieczne jest modyfikowanie istniejących danych na podstawie ich aktualnych wartości. Na przykład, jeśli w tabeli mamy pracowników z różnymi wynagrodzeniami, każdemu z nich dodamy stałą kwotę, co sprawia, że struktura danych pozostaje spójna. Dodatkowo, takie podejście ma zastosowanie w praktycznych scenariuszach, takich jak coroczne podwyżki wynagrodzeń, co jest powszechną praktyką w wielu organizacjach, a poprawność tej operacji można zweryfikować poprzez zapytania SELECT po aktualizacji.

Pytanie 15

Której właściwości CSS użyć, aby ustawić WYSOKOŚĆ grafiki na stronie?

A.
padding
B.
height
C.
width
D.
margin
Wysokość elementu (w tym grafiki) ustawia w CSS właściwość height, np. height: 200px;. Dlatego wysokość grafiki ustawia height.

Pytanie 16

Grafika powinna być zapisana w formacie GIF, jeśli

A. konieczne jest zapisanie obrazu lub animacji
B. jest to obraz w technologii stereoskopowej
C. jest to grafika wektorowa
D. istnieje potrzeba zapisu obrazu w formie bez kompresji
Wybór formatu GIF dla obrazów stereoskopowych jest niewłaściwy z kilku powodów. Obrazy stereoskopowe wymagają specyficznej technologii obrazowania, która pozwala na uzyskanie efektu głębi, a format GIF nie jest w stanie tego efektywnie zrealizować. GIF jest formatem 2D, który nie obsługuje trójwymiarowej struktury danych, co czyni go nieodpowiednim narzędziem do zapisu obrazów wymagających zaawansowanej parallaxu. Podobnie, potrzeba zapisu obrazu bez kompresji kojarzy się z formatami takimi jak BMP lub TIFF, które zachowują pełną jakość obrazu, natomiast GIF stosuje kompresję bezstratną, która ogranicza liczbę kolorów, co z kolei wpływa na jakość i szczegółowość zapisywanych obrazów. Grafika wektorowa, z kolei, opiera się na matematycznych równaniach i jest zapisywana w formatach takich jak SVG lub EPS, a nie w GIF, który jest formatem rastrowym. Wybierając format do przechowywania określonego typu obrazu, należy kierować się jego cechami oraz wymaganiami technologicznymi, co pozwala uniknąć typowych błędów myślowych związanych z doborem formatu do zastosowania. Właściwe zrozumienie różnic pomiędzy formatami obrazów jest kluczowe w kontekście ich zastosowań, aby efektywnie zarządzać zasobami graficznymi.

Pytanie 17

W bazie danych znajduje się tabela ksiazki, która zawiera pola: tytul, id_autora, data_wypoz oraz id_czytelnika. Co dzień generowany jest raport dotyczący książek wypożyczonych w danym dniu, który prezentuje tylko tytuły książek. Która z poniższych kwerend SQL będzie odpowiednia do utworzenia tego raportu?

A. SELECT tytul FROM ksiazki
B. SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE()
C. SELECT * FROM ksiazki
D. SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATE_NT_E()
Wybór innych kwerend nie spełnia wymagania, by uzyskać tylko tytuły wypożyczonych książek z konkretnego dnia. Kwerenda 'SELECT tytul FROM ksiazki;' zwraca wszystkie tytuły książek z tabeli, nie uwzględniając daty wypożyczenia. Takie podejście mogłoby prowadzić do nieefektywnego przetwarzania danych oraz przeciążenia systemu, ze względu na duże ilości danych. W kontekście baz danych, selekcja zbyt ogólnych danych jest niezalecana, ponieważ nie dostarcza istotnych informacji i nie spełnia wymagań użytkowników, prowadząc do frustracji. Kwerenda 'SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATE_NT_E();' zawiera błąd w nazwie funkcji, jako że 'CURRDATE_NT_E()' nie jest standardową funkcją SQL, co skutkuje błędem wykonania zapytania. Dodatkowo, nawet gdyby była poprawna, ta kwerenda zwracałaby więcej danych niż potrzebne, co znowu nie jest praktyką zgodną z efektywnym zarządzaniem danymi. Ostatnia propozycja, 'SELECT * FROM ksiazki;', również nie jest odpowiednia, ponieważ zwraca wszystkie kolumny z tabeli, a nie tylko tytuły książek, co skutkuje nieoptymalnym przetwarzaniem i brakiem precyzyjnych informacji. Kluczową lekcją jest to, że kwerendy w SQL powinny być precyzyjnie dopasowane do potrzeb użytkowników, aby minimalizować obciążenie bazy danych oraz maksymalizować użyteczność raportów.

Pytanie 18

Rozważ tabelę mieszkań, która zawiera kolumny: adres, metraż, ile_pokoi, standard, status, cena. Wykonanie poniższej kwerendy SQL SELECT spowoduje wyświetlenie:

SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3;
A. metraż oraz cena tych mieszkań, które mają więcej niż 3 pokoje
B. wszystkie dane mieszkań, które mają co najmniej 3 pokoje
C. wszystkie informacje, z wyjątkiem adresu, dotyczące mieszkań z więcej niż 3 pokojami
D. metraż oraz cena tych mieszkań, które posiadają co najmniej 3 pokoje
Odpowiedzi, które sugerują, że kwerenda wyświetla wszystkie dane mieszkań z co najmniej 3 pokojami lub wszystkie dane oprócz adresu, są nieprawidłowe z kilku powodów. Przede wszystkim, operator '>' w kwerendzie oznacza, że zapytanie dotyczy jedynie mieszkań z większą liczbą pokoi niż 3, a więc tylko te, które mają 4 lub więcej pokoi będą brane pod uwagę. Odpowiedzi sugerujące, że zwracane są wszystkie dane mieszkań, nie uwzględniają, że kwerenda skupia się wyłącznie na kolumnach metraż i cena, co jest kluczowe w kontekście efektywności i przejrzystości zapytań. W kontekście SQL, wybór określonych kolumn jest bardzo istotny, ponieważ nie tylko zmniejsza objętość przesyłanych danych, ale również ułatwia ich analizę. Niezrozumienie tego aspektu może prowadzić do nieefektywnego korzystania z zasobów bazy danych. Ponadto, stwierdzenie, że kwerenda zwraca wszystkie dane oprócz adresu, jest mylne, ponieważ zapytanie w ogóle nie uwzględnia adresu ani innych informacji, a jedynie metraż i cenę. Tego typu nieprecyzyjne interpretacje mogą zniekształcić obraz tego, jak działa SQL i w jaki sposób można efektywnie zarządzać danymi.

Pytanie 19

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

A. WHERE dataDodania LIKE '2021%' OR cena < 100 OR liczbaSztuk > 4
B. WHERE dataDodania LIKE '2021%' AND cena < 100 AND liczbaSztuk > 4
C. WHERE dataDodania LIKE '2021%' AND (cena < 100 OR liczbaSztuk > 4)
D. WHERE dataDodania LIKE '2021%' OR (cena < 100 AND liczbaSztuk > 4)
W analizowanych odpowiedziach błędy wynikają z niepoprawnego rozumienia operatorów logicznych oraz ich zastosowania w kontekście filtracji danych. Pierwsza z propozycji, która używa operatora OR w każdym warunku, powoduje, że zapytanie obejmie zbyt szeroki zakres danych. Oznacza to, że każdy produkt dodany w 2021 roku, niezależnie od ceny czy liczby sztuk, zostanie uwzględniony, co jest sprzeczne z zamierzonym celem. Operator OR w tym przypadku nie spełnia wymagań, ponieważ musimy mieć produkty, które są jednocześnie związane z danym rokiem oraz spełniają przynajmniej jeden z dwóch dodatkowych kryteriów. Odpowiedzi korzystające z operatora AND w każdym warunku również są błędne, ponieważ wykluczą z wyników produkty, które mogą mieć cenę wyższą niż 100 zł, ale liczba sztuk przekracza 4. Taki sposób myślenia prowadzi do zbyt restrykcyjnych filtrów, co może uniemożliwić pozyskanie wartościowych danych. Ważne jest, aby w zapytaniach SQL stosować operator AND do łączenia warunków, gdzie wszystkie muszą być spełnione, oraz operator OR w sytuacjach, gdy wystarczy spełnienie jednego z warunków. Poprawny dobór tych operatorów ma kluczowe znaczenie dla wydajności zapytań oraz dokładności wyników, zwłaszcza w kontekście dużych zbiorów danych, takich jak bazy danych produktów.

Pytanie 20

W podanym kodzie PHP, w miejscu kropek należy umieścić odpowiednią instrukcję

$zapytanie = mysqli_query($db, "SELECT imie, nazwisko FROM uzytkownik");
while ($wiersz = ...................)
    echo "$wiersz[0] $wiersz[1]";
A. mysqli_query($zapytanie)
B. mysqli_free_result($zapytanie)
C. mysqli_fetch_array($zapytanie)
D. mysqli_num_fields($zapytanie)
Mysqli_query($zapytanie) to funkcja, która wykonuje zapytanie SQL, ale nie przetwarza wyników. Jest to kluczowy etap interakcji z bazą danych, ponieważ bez wykonania zapytania nie można uzyskać żadnych danych. Jednak w podanym kodzie funkcja ta już została użyta do utworzenia zasobu $zapytanie, więc jej ponowne użycie w pętli nie miałoby sensu. Z kolei mysqli_free_result($zapytanie) służy do zwolnienia zasobów związanych z wynikiem zapytania, co jest potrzebne po zakończeniu przetwarzania danych, aby unikać wycieków pamięci. W miejscu kropek nie jest jednak potrzebne, ponieważ nadal przetwarzamy dane. Mysqli_num_fields($zapytanie) zwraca liczbę pól w wyniku zapytania, co może być przydatne podczas analizy struktury danych, ale nie jest właściwe do pobierania danych z zapytania. Typowe błędy myślowe wynikają z niezrozumienia procesu przetwarzania wyników zapytania i różnicy między wykonaniem zapytania a przetwarzaniem jego wyników. Ważne jest, aby rozróżniać role poszczególnych funkcji i stosować je zgodnie z ich przeznaczeniem, co jest fundamentem efektywnej pracy z bazami danych.

Pytanie 21

Przypisanie wartości do zmiennej $dana = 125; zapisane jest w języku

A. PHP
B. Python
C. JavaScript
D. C++
Zapis $dana = 125; na pierwszy rzut oka może wyglądać jak zwykłe przypisanie znane z wielu języków, ale kluczowy jest tutaj znak dolara przed nazwą zmiennej. Właśnie ten prefiks odróżnia PHP od takich języków jak C++, Python czy czysty JavaScript. W tych trzech technologiach zmienne nie są oznaczane znakiem $, albo używa się go w zupełnie innym kontekście.
W C++ standardowa deklaracja zmiennej liczbowej wygląda np. tak: int dana = 125; lub auto dana = 125;. Trzeba podać typ (lub pozwolić kompilatorowi go wywnioskować), a nazwa zmiennej nie ma żadnego prefiksu. Zapis ze znakiem $ nie jest zgodny ze składnią C++ i zwyczajnie się nie skompiluje. Błąd myślowy często wynika z tego, że ktoś kojarzy średnik na końcu i myśli: „aha, to pewnie C++ albo coś podobnego”, ale sam średnik to za mało, żeby poprawnie zidentyfikować język.
W Pythonie sytuacja jest odwrotna: nie ma średników na końcu linii (są opcjonalne i praktycznie się ich nie używa), a nazwy zmiennych absolutnie nie mogą zaczynać się od $. Poprawny zapis w Pythonie to po prostu dana = 125. Python mocno stawia na czytelność i prostotę składni, dlatego takie ozdobniki jak $ są tam całkowicie zbędne. Wiele osób, które zaczynają przygodę z programowaniem webowym, myli Pythona z PHP, bo oba są dynamicznie typowane, ale składnia zmiennych jest zupełnie inna.
JavaScript też nie używa $ jako obowiązkowego prefiksu. Co prawda $ może być częścią nazwy zmiennej (np. w jQuery: var $elem = $('#id');), ale nie jest to stały wymóg języka. Kluczowe jest to, że w nowoczesnym JavaScript zmienne deklarujemy przez let, const albo var: let dana = 125;. Samo $dana = 125; bez słowa kluczowego też jest formalnie możliwe w trybie nie–strict, ale jest to uznawane za bardzo złą praktykę, bo tworzy zmienną globalną i nie wygląda jak typowy, poprawny fragment kodu z dokumentacji czy podręczników. W kontekście tego pytania chodzi o rozpoznanie charakterystycznej składni, a nie o sztuczne przykłady z błędami.
Typowy błąd przy takich zadaniach polega na tym, że ktoś skupia się tylko na jednym elemencie składni, np. na średniku, i ignoruje resztę. W programowaniu webowym warto patrzeć na całość: prefiksy, słowa kluczowe, styl zapisu. Wzorzec $zmienna = wartość; jest bardzo mocno związany z PHP i to właśnie pozwala poprawnie zaklasyfikować ten fragment kodu.

Pytanie 22

Którą funkcją PHP przekierować użytkownika na inną stronę?

A.
include();
B.
upload();
C.
require();
D.
header();
require() i include() DOŁĄCZAJĄ zawartość innego pliku do skryptu, a nie przekierowują przeglądarki. upload() nie jest funkcją PHP. Przekierowanie wykonuje header().

Pytanie 23

Jakie zapytanie SQL umożliwi wyszukanie z podanej tabeli tylko imion i nazwisk pacjentów, którzy przyszli na świat przed rokiem 2002?

Ilustracja do pytania
A. SELECT imie, nazwisko FROM Pacjenci WHERE rok_urodzenia < 2002
B. SELECT * FROM Pacjenci WHERE rok_urodzenia <= 2002
C. SELECT * FROM Pacjenci WHERE rok_urodzenia LIKE 2002
D. SELECT imie, nazwisko FROM Pacjenci WHERE data_ostatniej_wizyty < 2002
No więc, w takich odpowiedziach, które podałeś, widać kilka nieporozumień, jak działają zapytania SQL. Zacznijmy od pierwszego - zapytanie SELECT * FROM Pacjenci WHERE rok_urodzenia <= 2002 jest niestety błędne. Chociaż wyłapuje pacjentów z roku 2002 i wcześniejszych, to zwraca wszystkie kolumny, a nie tylko imię i nazwisko, co nie jest zgodne z tym, co było w pytaniu. Używanie operatora * może prowadzić do zbytecznego obciążenia systemu, bo wyciągane są dodatkowe dane, które wcale nie są potrzebne. W drugim przypadku - SELECT * FROM Pacjenci WHERE rok_urodzenia LIKE 2002 - tutaj jest problem, bo operator LIKE jest do dopasowywania tekstów, a nie do porównywania liczb. To po prostu nie zadziała. Trzecie zapytanie - SELECT imie, nazwisko FROM Pacjenci WHERE data_ostatniej_wizyty < 2002 - jest też niepoprawne, bo filtruje według daty ostatniej wizyty, a nie roku urodzenia, co nie spełnia warunków pytania. Tego typu błędy często wynikają z nieprecyzyjnego czytania zadań. Żeby unikać takich pomyłek, dobrze jest dokładnie zrozumieć, jak wygląda struktura tabeli i co zapytanie ma właściwie zwracać.

Pytanie 24

Który element relacyjnej bazy danych (kod w języku SQL) można WYWOŁAĆ wewnątrz zapytania, tak że zwróci wartość lub dane widoczne jak tabela?

A. wyzwalacz
B. funkcja zdefiniowana przez użytkownika
C. procedura składowana
D. reguła
Pozostałe elementy działają inaczej. Wyzwalacz (trigger) uruchamia się automatycznie przy zmianie danych, a nie na żądanie w zapytaniu. Procedury składowanej nie wywołuje się wewnątrz SELECT jak źródła danych (uruchamia się ją osobno). Reguła to ograniczenie. Wartość lub dane w zapytaniu zwraca funkcja zdefiniowana przez użytkownika.

Pytanie 25

W języku JavaScript zapisano poniższy fragment kodu:

var x=10;
x++;
console.log(x);
Po uruchomieniu skryptu zmienna x
A. będzie miała wartość 10 i zostanie pokazana w dokumencie HTML
B. będzie miała wartość 11 i zostanie wyświetlona w oknie popup
C. będzie miała wartość 10 i zostanie wyświetlona w głównym oknie przeglądarki internetowej
D. będzie miała wartość 11 i zostanie wyświetlona w konsoli przeglądarki internetowej
Analizując niepoprawne odpowiedzi, można zauważyć, że opierają się one na nieprawidłowym rozumieniu działania kodu JavaScript. W pierwszej niewłaściwej odpowiedzi wskazuje się, że zmienna x będzie równa 11 i zostanie wypisana w oknie popup. Pomimo, że wartość zmiennej x rzeczywiście wynosi 11 przed próbą jej wyświetlenia, brak poprawnej składni w wywołaniu console.log skutkuje błędem, a kod nie zadziała zgodnie z zamierzeniem. Kolejne stwierdzenie sugeruje, że zmienna x pozostanie równa 10 i zostanie wypisana w dokumencie HTML. To jest również niepoprawne, ponieważ zmiana wartości zmiennej poprzez inkrementację miała miejsce, a jeśli kod działałby poprawnie, zmienna x by wynosiła 11. Wreszcie, ostatni błąd polega na twierdzeniu, że zmienna x będzie miała wartość 10 i zostanie wypisana w głównym oknie przeglądarki. To również jest niezgodne z rzeczywistością, ponieważ zmiana wartości zmiennej x przez operator inkrementacji prowadzi do uzyskania wartości 11. Dodatkowo, aby wyświetlić tę wartość w głównym oknie przeglądarki, należałoby użyć metody document.write lub innej odpowiedniej metody, co nie ma miejsca w analizowanym kodzie. W związku z tym, wszystkie te odpowiedzi nie są zgodne z rzeczywistością z powodu błędnej analizy kodu oraz pominięcia kluczowych elementów składniowych.

Pytanie 26

Znacznik <ins> w języku HTML jest używany do wskazania

A. tekstu, który został usunięty
B. tekstu o zmienionym formacie
C. tekstu, który został dodany
D. cytowanego fragmentu tekstu
Znacznik <ins> w języku HTML jest używany do oznaczania tekstu, który został dodany w stosunku do pierwotnej treści dokumentu. Został wprowadzony w standardzie HTML5, co umożliwia programistom i twórcom stron internetowych wyraźne zaznaczanie zmian w treści. Użycie tego znacznika jest szczególnie przydatne w kontekście dokumentów, które podlegają częstym aktualizacjom lub rewizjom, gdyż pozwala użytkownikom łatwo dostrzegać dodany tekst. Przykładem może być sytuacja, w której wprowadzasz poprawki do artykułu na blogu: tekst oznaczony jako <ins> może być wyświetlany z podkreśleniem, co wizualnie wskazuje na jego nowość. Warto także zwrócić uwagę, że znacznik <ins> może być używany w połączeniu z atrybutem 'cite', który wskazuje źródło zmiany, oraz atrybutem 'datetime', który określa datę i godzinę wprowadzenia zmian. Dzięki tym właściwościom, <ins> przyczynia się do lepszego zarządzania treścią w dokumentach HTML, spełniając wymagania dotyczące dostępności i przejrzystości informacji.

Pytanie 27

Jakie będzie wynikowe wyjście po uruchomieniu tego skryptu PHP?

<?php
$kolory = array("czarny", "zielony", "niebieski", "biały");
rsort($kolory);
$ile = count($kolory);
for($x = 0; $x < $ile; $x++)
{
  echo $kolory[$x].", ";
}
?>
A. biały, niebieski, zielony, czarny
B. biały, czarny, niebieski, zielony
C. zielony, niebieski, czarny, biały
D. czarny, zielony, niebieski, biały
W przypadku podanego skryptu PHP błędne odpowiedzi wynikają z niewłaściwej interpretacji działania funkcji rsort(). Zadaniem tej funkcji jest sortowanie elementów tablicy w porządku malejącym na podstawie wartości ASCII pierwszego znaku każdego elementu. Jeśli przyjrzymy się tablicy zawierającej słowa czarny zielony niebieski biały funkcja rsort() ułoży je w odwrotnej kolejności alfabetycznej zaczynając od słów których pierwsze litery mają wyższą wartość ASCII. Typowym błędem może być niezrozumienie że rsort() działa na całych wartościach łańcuchów a nie tylko na pierwszych literach. Należy również pamiętać że funkcje sortujące takie jak rsort() nie zwracają nowej tablicy lecz modyfikują istniejącą co czasem może prowadzić do niepoprawnych założeń dotyczących oryginalnych danych. Innym częstym błędem jest zakładanie że rsort() zachowuje porządek elementów o tej samej wartości początkowej co nie jest prawdą jeśli dwa elementy miałyby tę samą pierwszą literę rsort() może zmienić ich kolejność względem siebie. Właściwe zrozumienie działania funkcji sortujących w PHP jest niezbędne aby uniknąć błędów logicznych i zapewnić że nasze aplikacje działają zgodnie z oczekiwaniami.

Pytanie 28

Na ilustracji przedstawiono rezultat stosowania stylów CSS oraz odpowiadający mu kod HTML, który generuje ten przykład. Przyjmując, że marginesy wewnętrzne mają wartość 50 px, natomiast zewnętrzne wynoszą 20 px, styl CSS dla tego obrazu wygląda następująco

Ilustracja do pytania
A. Odpowiedź D
B. Odpowiedź C
C. Odpowiedź A
D. Odpowiedź B
Odpowiedź C jest poprawna, ponieważ zdefiniowany styl CSS zawiera wszystkie elementy odpowiadające przedstawionemu formatowaniu obrazu. Styl ten określa kolor tła jako Teal, co jest zgodne z opisem wizualnym obrazu. Dodatkowo zastosowanie solidnej czarnej ramki o grubości 4 pikseli odpowiada profesjonalnym standardom, które zapewniają wyraźne oddzielenie obrazu od reszty treści przez wyróżnienie go. Zastosowanie marginesów zewnętrznych o wartości 20 pikseli oraz wewnętrznych paddingów o wartości 50 pikseli jest zgodne z podanym założeniem, co pozwala na właściwe umiejscowienie obrazu na stronie, dając przestrzeń wokół i wewnątrz elementu. Dbałość o takie szczegóły jest kluczowa dla tworzenia responsywnych i estetycznych stron internetowych. Praktyczne stosowanie tego typu stylizacji umożliwia poprawienie czytelności oraz przyciąga uwagę użytkowników na znaczące elementy strony. Warto przy tym pamiętać o zasadzie KISS (Keep It Simple, Stupid), która zachęca do utrzymywania prostoty w projektach, co nie tylko ułatwia ich tworzenie ale też późniejsze utrzymanie.

Pytanie 29

Została stworzona baza danych z tabelą podzespoły, która zawiera pola: model, producent, typ, cena. Aby uzyskać listę wszystkich modeli pamięci RAM od firmy Kingston uporządkowanych od najniższej do najwyższej ceny, należałoby użyć kwerendy:

A. SELECT model FROM podzespoły WHERE typ='RAM' OR producent='Kingston' ORDER BY cena DESC
B. SELECT model FROM podzespoły WHERE typ='RAM' AND producent='Kingston' ORDER BY cena ASC
C. SELECT model FROM podzespoły WHERE typ='RAM' AND producent='Kingston' ORDER BY cena DESC
D. SELECT model FROM producent WHERE typ='RAM' OR producent='Kingston' ORDER BY podzespoły ASC
Analizując niepoprawne odpowiedzi, można zauważyć kilka istotnych błędów koncepcyjnych, które prowadzą do błędnych wyników. W przypadku pierwszej z błędnych kwerend, użycie klauzuli ORDER BY cena DESC sprawia, że wyniki są sortowane od najdroższej do najtańszej, co jest sprzeczne z wymaganiem przedstawienia modeli w porządku rosnącym. Problem ten często wynika z błędnego zrozumienia celu sortowania, co może prowadzić do frustracji użytkowników poszukujących najkorzystniejszych cen. W innej z błędnych odpowiedzi, klauzula WHERE wykorzystuje operator OR zamiast AND, co skutkuje zwróceniem modeli RAM od różnych producentów, co jest niewłaściwe w kontekście zadania, które wymaga danych tylko od producenta Kingston. Ponadto, ostatnia odpowiedź zawiera również błąd w odniesieniu do źródła danych, wskazując na tabelę 'producent' zamiast 'podzespoły'. W SQL kluczowe jest zrozumienie struktury danych oraz logiczne formułowanie zapytań, aby uniknąć nieścisłości. Błędy te mogą wynikać z mylnego założenia, że każda zmiana w zapytaniu nie wpływa na jego integralność i wynik, co jest niebezpiecznym podejściem w praktyce programistycznej.

Pytanie 30

Tabela faktury w bazie danych zawiera pola: numer, data, id_klienta, wartość oraz status. Każdego dnia tworzony jest raport dotyczący faktur z dnia bieżącego. Zawiera on jedynie numery oraz wartości faktur. Która z poniższych kwerend SQL pozwoli na wygenerowanie tego raportu?

A. SELECT numer, wartość FROM faktury;
B. SELECT * FROM faktury;
C. SELECT * FROM faktury WHERE data=CURRENT_DATE();
D. SELECT numer, wartosc FROM faktury WHERE data=CURRENT_DATE();
Analizując inne dostępne kwerendy, możemy zauważyć, że nie spełniają one wymogów skutecznego raportowania faktur z bieżącego dnia. Pierwsza z nich, która wykorzystuje 'SELECT * FROM faktury;', zwraca wszystkie kolumny z tabeli faktury, co nie jest zgodne z wymaganiami, ponieważ nie ogranicza wyników do tylko dwóch pożądanych pól, czyli numeru i wartości. Takie podejście generowałoby zbędne dane, co mogłoby prowadzić do niewłaściwej analizy. Druga kwerenda, 'SELECT numer, wartość FROM faktury;', z kolei nie zawiera żadnego filtra daty, przez co zwracałaby numery i wartości wszystkich faktur, niezależnie od daty ich wystawienia. To podejście nie dostarczałoby potrzebnych informacji dotyczących tylko bieżącego dnia, co jest kluczowe w kontekście tworzenia codziennego raportu. Ostatnia z błędnych odpowiedzi to 'SELECT * FROM faktury WHERE data=CURRENT_DATE();'. Choć ta kwerenda zawiera właściwy warunek daty, to znowu, użycie '*' powoduje, że zwracane są wszystkie kolumny, a nie tylko te, które są istotne dla raportu. Takie podejście jest nieefektywne, a także niezgodne z najlepszymi praktykami tworzenia raportów, które powinny być zwięzłe i skoncentrowane na kluczowych informacjach.

Pytanie 31

Który z opisów komentarza odzwierciedla działanie funkcji zdefiniowanej w języku PHP

function fun1($a, $b) { if($a > $b) return $a; elseif($b > $a) return $b; else return -1; }
?
A. /* Funkcja zwraca niższą wartość spośród dwóch podanych, w przypadku równości zwraca -1 */
B. /* Funkcja zwraca wyższą wartość spośród dwóch podanych, w przypadku równości zwraca wartość $a */
C. /* Funkcja zwraca wyższą wartość spośród dwóch podanych, w przypadku równości zwraca -1 */
D. /* Funkcja zwraca niższą wartość spośród dwóch podanych, w przypadku równości zwraca wartość $a */
Wszystkie pozostałe odpowiedzi nie oddają właściwego zachowania funkcji `fun1`. Przede wszystkim, twierdzenie, że funkcja zwraca wartość niższą z dwóch podanych, jest błędne. Funkcja została zaprojektowana w taki sposób, aby zwracać wartość wyższą, a nie niższą, co jest kluczowe dla zrozumienia jej działania. Stwierdzenie, że funkcja zwraca wartość -1 w przypadku równości, jest prawdziwe, jednak nieimplikuje ono, że zwraca wartość niższą, co wprowadza w błąd. Ponadto, odpowiedzi sugerujące, że w przypadku równości funkcja zwraca wartość `$a`, są również mylące - w rzeczywistości zwraca tylko -1, co wyraźnie wskazuje na brak różnicy. Tego typu nieporozumienia mogą wynikać z braku zrozumienia logiki warunkowej w programowaniu, gdzie zastosowane instrukcje `if` i `elseif` determinują, która wartość zostanie zwrócona. W programowaniu należy zawsze analizować wyniki funkcji oraz upewnić się, że dokumentacja odpowiada rzeczywistemu działaniu kodu. Dobre praktyki obejmują również testowanie funkcji oraz jasne komunikowanie jej działania w komentarzach, aby uniknąć takich nieporozumień w przyszłości.

Pytanie 32

Tabele Osoby i Adresy są połączone relacją jeden do wielu. Które zapytanie SQL należy wykonać, aby korzystając z tej relacji, prawidłowo wyświetlić nazwiska oraz przyporządkowane im miasta?

Ilustracja do pytania
A. SELECT nazwisko, Miasto FROM Osoby.Adresy_id = Adresy.id FROM Osoby, Adresy;
B. SELECT nazwisko, Miasto FROM Osoby, Adresy WHERE Osoby.id = Adresy.id;
C. SELECT nazwisko, Miasto FROM Osoby, Adresy;
D. SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id = Adresy.id;
W tym zadaniu widać kilka typowych pułapek związanych z łączeniem tabel w SQL. Często spotyka się podejście, że wystarczy wypisać kilka tabel po przecinku w klauzuli FROM i baza danych sama się domyśli, jak je połączyć. Niestety tak to nie działa. Jeśli podamy FROM Osoby, Adresy bez żadnego warunku, otrzymamy tzw. iloczyn kartezjański. Oznacza to, że każda osoba zostanie połączona z każdym adresem, co w praktyce daje ogromny, kompletnie bezsensowny zestaw danych. To jest bardzo częsty błąd początkujących: zapytanie technicznie się wykonuje, ale wynik nie ma żadnego logicznego związku z modelem danych. Drugi problem to łączenie tabel po niewłaściwych kolumnach. Zdarza się założenie, że skoro obie tabele mają kolumnę id, to można je po prostu zrównać w warunku WHERE Osoby.id = Adresy.id. Jest to myślenie intuicyjne, ale błędne z punktu widzenia projektowania relacyjnego. Kolumna id w każdej tabeli jest zwykle osobnym kluczem głównym i nie ma powodu, żeby ich wartości się pokrywały. W poprawnym modelu relacji używa się klucza obcego, tutaj Osoby.Adresy_id, który jawnie wskazuje na Adresy.id. To właśnie te dwie kolumny należy ze sobą powiązać. Kolejna pułapka to mylenie składni JOIN z warunkiem łączenia. Fragment Osoby.Adresy_id = Adresy.id nie może znajdować się w miejscu, gdzie SQL oczekuje listy tabel po FROM albo słowa kluczowego JOIN. To jest wyrażenie logiczne, które powinno znaleźć się w klauzuli ON (w przypadku JOIN) lub w WHERE (w starszym stylu zapisu). Moim zdaniem ważne jest, żeby w głowie rozdzielić trzy elementy: najpierw wymieniamy tabele, które chcemy połączyć, potem określamy typ złączenia (JOIN, LEFT JOIN itd.), a dopiero na końcu definiujemy warunek powiązania ON klucz_obcy = klucz_główny. Jeśli pomieszamy te poziomy, wychodzą dziwne konstrukcje, które są po prostu niezgodne ze składnią SQL. Dobra praktyka branżowa jest taka, że używamy jawnych JOIN-ów z precyzyjnym warunkiem ON i zawsze sprawdzamy, czy łączymy po właściwych kolumnach wynikających z relacji w modelu danych.

Pytanie 33

Metainformacja „Description” zawarta w pliku źródłowym HTML powinna zawierać

<head>
    <meta name="description" content="...">
</head>
A. opis tego, co znajduje się na stronie.
B. informację o tym, kto jest autorem strony.
C. nazwę programu, przy użyciu którego została stworzona strona.
D. wyrazy kluczowe, z których korzystają wyszukiwarki sieciowe.
Należy podkreślić, że choć autor strony czy program, którym strona została stworzona, to informacje mogą być ciekawe, nie są one celem metainformacji 'Description'. Informacje o autorstwie czy narzędziach służących do stworzenia strony mogą zostać uwzględnione w innych metatagach lub sekcjach strony, ale nie w 'Description'. Na przykład, metatag 'author' jest przeznaczony do wskazywania autora strony. Podobnie, informacje o oprogramowaniu, które zostało użyte do stworzenia strony, zwykle są zawarte w metatagu 'generator'. Co do wyrazów kluczowych, to choć są one istotne dla optymalizacji strony pod kątem wyszukiwarek, nie powinny być jedyną zawartością metatagu 'Description'. Kluczowe słowa powinny być raczej wplecione w naturalny, czytelny dla użytkownika opis strony. W ten sposób 'Description' staje się efektywnym narzędziem SEO, które pomaga zwiększyć ruch na stronie.

Pytanie 34

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

A. nav { float: right; }
B. nav { float: right; } section { float: right; }
C. nav { float: left; } aside { float: left; }
D. aside {float: left; }
Prawidłowa odpowiedź opiera się na tym, jak działają własności float w CSS i w jakiej kolejności przeglądarka renderuje elementy blokowe. Jeśli w dokumencie HTML kolejność znaczników to np. &lt;aside&gt;, potem &lt;section&gt;, a na końcu &lt;nav&gt;, to bez dodatkowego stylowania wszystkie trzy ustawią się pionowo, jeden pod drugim, w tej właśnie kolejności. Dodanie float zmienia sposób, w jaki elementy „odpływają” od normalnego przepływu dokumentu i jak układają się obok siebie.

W stylu nav { float: right; } section { float: right; } sprawiamy, że zarówno nav, jak i section są przesuwane do prawej krawędzi kontenera, natomiast aside (bez float) pozostaje w normalnym przepływie, czyli z lewej strony. Ponieważ przeglądarka układa elementy w kolejności występowania w kodzie, najpierw wyrenderuje aside po lewej, potem section „odpłynie” w prawo, a na końcu nav też „odpłynie” w prawo, ustawiając się po prawej stronie, ale dalej od góry niż section. Efekt wizualny jest taki, że po lewej mamy aside, po prawej nav, a section ląduje między nimi, dokładnie tak jak było pokazane na filmie.

Moim zdaniem to zadanie dobrze pokazuje, że przy floatach zawsze trzeba myśleć o trzech rzeczach naraz: kolejności elementów w HTML, kierunku „pływania” (left/right) oraz o tym, które elementy pozostawiamy w normalnym przepływie. W praktyce w nowoczesnych projektach częściej używa się flexboxa albo CSS Grid do takich układów, bo są czytelniejsze i mniej problematyczne. Przykładowo, zamiast kombinować z float, można by użyć display: flex; na kontenerze i ustawić order dla aside i nav. Float nadal jednak pojawia się w starszych layoutach i w zadaniach egzaminacyjnych, więc warto dobrze rozumieć jego zachowanie, choćby po to, żeby poprawnie modyfikować istniejące style lub naprawiać „rozjechane” układy w starszych projektach.

Pytanie 35

W języku PHP nie można zrealizować

A. przetwarzania danych z formularzy
B. zmiany dynamicznej zawartości strony HTML w przeglądarce
C. tworzenia dynamicznej treści strony
D. obróbki danych przechowywanych w bazach danych
PHP, jako skryptowy język programowania po stronie serwera, nie jest w stanie dynamicznie zmieniać zawartości strony HTML w przeglądarce użytkownika po jej załadowaniu. Operacje, które wykonuje PHP, są realizowane na serwerze, a wyniki tych operacji przesyłane są jako statyczny HTML do przeglądarki. Oznacza to, że jakiekolwiek zmiany w treści strony muszą być przeprowadzane przed wysłaniem odpowiedzi do klienta. Dynamiczne zmiany w istniejącej zawartości HTML w przeglądarce są realizowane za pomocą JavaScriptu, który działa po stronie klienta. Na przykład, jeśli mamy formularz, który po wypełnieniu wymaga zmiany niektórej zawartości na stronie bez jej ponownego ładowania, to właśnie JavaScript, a nie PHP, będzie odpowiedzialny za te zmiany. PHP może generować zawartość w odpowiedzi na żądania, ale nie ma możliwości interakcji z już załadowanym DOM w przeglądarce. To ograniczenie wynika z architektury webowej, w której PHP i JavaScript pełnią różne role, co jest zgodne z ogólnymi standardami tworzenia aplikacji webowych, w tym modelu MVC (Model-View-Controller), gdzie PHP obsługuje model i widok, a JavaScript kontroler.

Pytanie 36

Interpreter PHP zwróci błąd i zaniecha wykonania kodu, jeżeli programista

A. będzie tworzył kod bez odpowiednich wcięć
B. nie umieści średnika po wyrażeniu w instrukcji if, jeśli za nim znajduje się sekcja else
C. pobierze wartość z formularza, w którym pole input nie zostało wypełnione
D. będzie definiował zmienne w obrębie warunku
Pojęcie wcięć w kodzie PHP ma charakter stylistyczny, a nie składniowy, co sprawia, że nie są one wymagane do poprawnego działania kodu. PHP nie wymaga wcięć, aby zrozumieć logikę programu, co oznacza, że kod bez wcięć będzie działał poprawnie, chociaż może być trudniejszy do odczytania. Deklaracja zmiennych wewnątrz warunków również nie prowadzi do błędów. Możliwość deklarowania zmiennych w każdej instrukcji warunkowej jest zgodna z zasadami języka PHP, a zmienne te są lokalne dla danego zakresu, co jest zgodne z dobrymi praktykami programistycznymi. Co do pobierania wartości z formularzy, nawet jeśli pole input nie zostało wypełnione, PHP nie zgłasza błędów, lecz zwraca wartość null lub pusty ciąg, co jest normalnym zachowaniem. Typowe błędy myślowe przy podejmowaniu decyzji o tym, co może powodować błędy w PHP, często wynikają z braku zrozumienia różnicy między błędami składniowymi a błędami logicznymi. Błędy składniowe są związane z niepoprawnym formatowaniem kodu, podczas gdy błędy logiczne mogą występować w wyniku niepoprawnej logiki działania programu. Dlatego ważne jest, aby dokładnie rozumieć zasady działania języka i jego składni, aby uniknąć frustracji w procesie tworzenia aplikacji.

Pytanie 37

System baz danych gromadzi multimedia, co wiąże się z przechowywaniem znacznych ilości danych binarnych. Jakiego typu danych należy użyć w tym przypadku?

A. DOUBLE
B. ENUM
C. BLOB
D. LONGTEXT
Typ BLOB (Binary Large Object) służy do przechowywania dużych ilości danych binarnych, takich jak obrazy, dźwięki, filmy czy inne multimedia. BLOBy są niezwykle przydatne w aplikacjach, które wymagają zarządzania danymi o dużych rozmiarach, ponieważ pozwalają na efektywne przechowywanie i manipulowanie tymi danymi w bazie danych. Przykładem zastosowania BLOBów może być system zarządzania treścią (CMS), w którym użytkownicy mogą przesyłać zdjęcia i filmy. BLOBy umożliwiają przechowywanie tych plików w bazie, co ułatwia ich późniejsze pobieranie i wyświetlanie. W praktyce, stosując BLOBy, należy pamiętać o odpowiednich indeksach oraz optymalizacji zapytań, aby zminimalizować czas dostępu do danych. Warto również rozważyć zastosowanie systemów zarządzania bazami danych, które są dostosowane do pracy z danymi multimedialnymi, takich jak PostgreSQL czy MySQL, które obsługują typy BLOB i inne odpowiednie struktury danych. Standardy SQL definiują BLOB jako typ danych, co sprawia, że jego użycie jest zgodne z najlepszymi praktykami programowania baz danych.

Pytanie 38

W języku JavaScript przedstawiona definicja jest definicją

var imiona = ["Anna", "Jakub", "Iwona", "Krzysztof"];
A. klasy.
B. tablicy.
C. kolekcji.
D. obiektu.
Niestety, wybrana przez Ciebie odpowiedź nie jest poprawna. Wygląda na to, że nie do końca zrozumiałeś jak działa definicja tablicy w JavaScript. Zrozumienie różnicy między tablicami, obiektami, klasami i kolekcjami jest kluczowe. Kolekcje to pojęcie bardziej ogólne, mogą one obejmować różne typy danych, takie jak tablice, listy czy zbiory, a termin ten nie jest używany w kontekście JavaScript. Klasy w JavaScript są 'szablonami' dla tworzenia obiektów, a więc struktur danych składających się z pól (zmiennych) i metod (funkcji). Tablica to specyficzny typ obiektu, który przechowuje elementy w określonym porządku. Wskazane jest, aby dokładnie zrozumieć, jakie informacje są przechowywane w tablicach, klasach, obiektach i kolekcjach w JavaScript, ponieważ jest to kluczowe dla efektywnego korzystania z tego języka. Spróbuj jeszcze raz, z pewnością za kolejnym razem się uda!

Pytanie 39

Używa się zapytania z klauzulą JOIN, aby

A. określić klucz obcy dla tabeli
B. otrzymać wynik tylko z jednej tabeli
C. uzyskać dane z dwóch tabel, które są ze sobą powiązane
D. wykonać funkcję agregującą
Zastosowanie klauzuli JOIN w zapytaniach SQL jest często mylone z innymi operacjami na tabelach, co prowadzi do nieporozumień i błędnych koncepcji. Definiowanie klucza obcego dla tabeli jest procesem, który nie ma bezpośredniego związku z samym zapytaniem. Klucz obcy, który służy do utrzymania integralności referencyjnej między tabelami, jest konfigurowany podczas tworzenia lub modyfikacji struktury bazy danych, a nie podczas pisania zapytań. Ponadto, wywoływanie funkcji agregujących, takich jak SUM czy COUNT, może być przeprowadzane niezależnie od tego, czy w zapytaniu wykorzystujemy JOIN. Funkcje te mogą działać na danych z jednej tabeli, co jest sprzeczne z błędnym stwierdzeniem, że JOIN jest niezbędny do ich wywołania. Ostatnim nieporozumieniem jest idea, że można otrzymać wyniki tylko z jednej tabeli. W praktyce, wiele zapytań wymaga współpracy między tabelami, aby uzyskać pełniejszy kontekst danych. Dobrą praktyką w projektowaniu baz danych jest jednak unikanie nieefektywnego łączenia tabel, jeżeli nie jest to konieczne, co może prowadzić do nieoptymalnej wydajności zapytań. Znajomość różnicy między operacjami na poziomie struktury bazy danych a zapytaniami pozwala na lepsze projektowanie i wykorzystanie systemów bazodanowych.

Pytanie 40

Co określa właściwość CSS animation-duration?

A. liczbę powtórzeń animacji
B. opóźnienie startu animacji
C. czas trwania jednego cyklu animacji
D. kierunek animacji
Pozostałe parametry animacji mają osobne właściwości. Opóźnienie startu ustawia animation-delay, liczbę powtórzeń animation-iteration-count, a kierunek (w przód lub w tył) animation-direction. Sam czas pojedynczego przebiegu to animation-duration.