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: 8 czerwca 2026 10:59
  • Data zakończenia: 8 czerwca 2026 11:33

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Do czego służy w SQL polecenie ALTER TABLE?

A. do modyfikowania danych w rekordach
B. do dodawania tabeli do bazy
C. do modyfikowania kolumn (struktury) tabeli
D. do usuwania tabeli z bazy
Polecenie ALTER TABLE należy do języka definicji danych (DDL) i służy do MODYFIKOWANIA STRUKTURY istniejącej tabeli - dodawania, usuwania lub zmiany kolumn oraz ograniczeń. Nie zmienia samych danych w wierszach. Dlatego ALTER TABLE służy do modyfikowania kolumn (struktury) tabeli.

Pytanie 2

Jaką wartość w formacie szesnastkowym ma kolor rgb(255, 16, 8)?

A. #801008
B. #800F80
C. #FF1008
D. #FF0F80
Pozostałe kody się nie zgadzają. #801008 zaczyna się od 80 (czyli 128, a nie 255). #FF0F80 i #800F80 nie odpowiadają wartościom 16 i 8. Poprawny zapis rgb(255, 16, 8) to #FF1008.

Pytanie 3

W PHP typ float oznacza

A. łańcuchowy
B. zmiennoprzecinkowy
C. całkowity
D. logiczny
Typ float w PHP to coś w rodzaju magicznego narzędzia do pracy z liczbami, które mają część dziesiętną. Tego typu liczby są niezbędne, kiedy musimy mieć na uwadze detale, na przykład w finansach czy matematyce. Weźmy taki przykład: przy obliczaniu cen w sklepie internetowym często spotykamy się z kwotami jak 19.99 zł. Dzięki PHP możemy wykonywać różne operacje matematyczne na tych liczbach, co daje nam dużą elastyczność w pracy z danymi liczbowymi. Jednak trzeba wiedzieć, że ze względu na to, jak komputery przechowują liczby zmiennoprzecinkowe, zdarzają się problemy z ich dokładnością. W sytuacjach, gdzie to precyzja jest kluczowa, jak w przypadku obliczeń finansowych, dobrze jest skorzystać z takich funkcji jak round(), żeby zaokrąglić wynik do odpowiedniej liczby miejsc po przecinku. Wiedza na temat typu float i jego zastosowania to absolutna podstawa w pracy z programowaniem, zwłaszcza przy tworzeniu aplikacji webowych.

Pytanie 4

Jaką wartość zwróci funkcja

empty($a);
w języku PHP, gdy zmienna
$a
będzie miała wartość liczbową równą 0?
A. NULL
B. TRUE
C. FALSE
D. 0
Odpowiedzi, które wskazują, że funkcja empty() zwraca 0, FALSE lub NULL, są mylne z kilku powodów. Po pierwsze, wartość 0 w PHP to po prostu liczba i nie jest interpretowana jako pusta. Zmienne, które mają wartość 0 są traktowane jako fałszywe w kontekście logicznym, ale nie są uznawane za puste zgodnie z definicją funkcji empty(). Kiedy przyjmujemy, że empty($a) zwraca 0, w rzeczywistości mylimy funkcję empty() z innymi, które operują na wartościach liczbowych. Podobnie, FALSE jako wynik również nie jest poprawny; chociaż 0 jest uważane za fałszywe, empty() zwraca TRUE, a nie FALSE, gdy zmienna jest pusta. Także NULL to typ danych, a w kontekście empty() jest uznawany za pusty, ale nie jest to wynik, jaki uzyskalibyśmy dla zmiennej $a = 0. Właściwe zrozumienie zwrotów z funkcji PHP oraz typów danych jest kluczowe dla skutecznego programowania. Pomocne jest, aby programiści upewniali się, że korzystają z odpowiednich funkcji do określenia pustych wartości, a w przypadku empty() nie mogą pomylić jej działania z innymi funkcjami, które operują na wartościach logicznych lub liczbowych.

Pytanie 5

Co stanie się po wykonaniu

ALTER TABLE osoba DROP COLUMN grupa;
?
A. nazwa kolumny zmieni się na grupa
B. kolumna grupa zostanie dodana
C. kolumna grupa zostanie USUNIĘTA
D. nazwa tabeli zmieni się na grupa
Polecenie ALTER TABLE osoba DROP COLUMN grupa; modyfikuje strukturę tabeli osoba i USUWA z niej kolumnę grupa wraz z zapisanymi w niej danymi. ALTER TABLE zmienia definicję tabeli, a klauzula DROP COLUMN wskazuje, że chodzi o skasowanie kolumny. Dlatego kolumna grupa zostanie usunięta.

Pytanie 6

Brak którego elementu spowoduje BŁĄD/ostrzeżenie walidatora HTML?

A.
<title>
B.
<meta name="author">
C. przynajmniej jednego <h1>
D.
<link>
Pozostałe elementy nie są obowiązkowe. <link> (np. do CSS) i <meta name="author"> są opcjonalne. Brak <h1> nie jest błędem walidacji (to zalecenie dostępności, nie wymóg). Wymagany jest <title>.

Pytanie 7

Jaką właściwość CSS należy zastosować, aby ustawić wewnętrzne marginesy dla danego elementu?

A. margin
B. padding
C. hight
D. width
Właściwość CSS, którą należy zastosować do definiowania marginesów wewnętrznych elementu, to padding. Padding określa przestrzeń wewnętrzną między zawartością elementu a jego granicami. Przy pomocy paddingu możemy dostosować, jak dużo przestrzeni chcemy mieć wokół tekstu, obrazów czy innych elementów wewnątrz danego kontenera. Na przykład, zastosowanie padding: 20px; w CSS sprawi, że wewnętrzny margines będzie wynosił 20 pikseli od wszystkich stron wokół zawartości. Na poziomie praktycznym, padding jest niezwykle użyteczny w projektowaniu responsywnych interfejsów użytkownika, ponieważ pozwala na lepsze dostosowanie elementów do różnych rozmiarów ekranów. Dobrą praktyką jest używanie paddingu w połączeniu z innymi właściwościami, takimi jak margin, aby uzyskać pełną kontrolę nad położeniem i rozkładem elementów na stronie. Warto także pamiętać, że w CSS możemy ustalać padding oddzielnie dla górnej, prawej, dolnej i lewej strony, co daje jeszcze większą elastyczność w projektowaniu.

Pytanie 8

Aby strona internetowa była bardziej dostępna dla osób niewidomych, obrazom wstawianym znacznikiem img należy nadać atrybut:

A.
alt
B.
src
C.
style
D.
text
Atrybut alt znacznika <img> zawiera tekst alternatywny - krótki opis tego, co przedstawia obraz. Czytnik ekranu, z którego korzystają osoby niewidome, odczytuje tę treść na głos, dzięki czemu użytkownik wie, co jest na obrazku. Tekst alternatywny pokazuje się też, gdy obraz się nie wczyta. Dlatego dla dostępności obrazom nadaje się atrybut alt.

Pytanie 9

Który modyfikator dostępu daje dostęp do pola w obrębie klasy oraz w klasach dziedziczących (a nie z zewnątrz)?

A. prywatny
B. publiczny
C. opublikowany
D. chroniony
Modyfikator chroniony (ang. protected) udostępnia pole lub metodę w obrębie własnej klasy oraz we wszystkich klasach po niej dziedziczących, ale zamyka dostęp dla kodu z zewnątrz. To pośredni poziom między prywatnym a publicznym, przydatny przy projektowaniu hierarchii klas. Dlatego dostęp dla klasy i jej potomków daje modyfikator chroniony.

Pytanie 10

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

A. $ocena > 2 or $ocena < 6
B. $ocena > 2 and $ocena < 6
C. $ocena >= 2 and $ocena <= 6
D. $ocena >= 2 or $ocena <= 6
Wybrana odpowiedź jest poprawna, ponieważ warunek '$ocena >= 2 and $ocena <= 6' precyzyjnie definiuje zakres ocen, które mają być brane pod uwagę przy obliczaniu średniej. Użycie operatora 'and' zapewnia, że tylko oceny mieszczące się w przedziale od 2 do 6, włącznie z obydwoma krańcami, będą uwzględnione. Przykład praktyczny to sytuacja, w której programista chciałby zrealizować system oceny uczniów, w którym dopuszczalne oceny to 2, 3, 4, 5 i 6. Gdybyśmy użyli operatora 'or', program mógłby przyjąć oceny spoza tego zakresu, co prowadziłoby do nieprawidłowych obliczeń i fałszywych wniosków. W kontekście programowania w PHP, stosowanie poprawnych warunków logicznych jest kluczowe dla zapewnienia prawidłowego działania kodu. Dobrym przykładem zastosowania takiego warunku jest pętla, która iteruje przez zestaw ocen i sumuje je, aby na końcu obliczyć średnią. Stosując odpowiednie warunki, programista może być pewny, że obliczenia są realizowane na danych, które są zgodne z wymaganiami. Warto również zauważyć, że w kontekście dobrych praktyk programistycznych, jasne definiowanie warunków logicznych pozwala na łatwiejsze zrozumienie kodu przez innych programistów oraz ułatwia jego późniejsze utrzymanie.

Pytanie 11

Funkcja colspan umożliwia łączenie komórek tabeli w układzie poziomym, natomiast rowspan w układzie pionowym. Która z poniższych tabel odpowiada fragmentowi kodu w języku HTML?

Ilustracja do pytania
A. Odpowiedź A
B. Odpowiedź B
C. Odpowiedź D
D. Odpowiedź C
Polecenie rowspan w języku HTML służy do łączenia komórek tabeli w pionie. W podanym fragmencie kodu HTML, atrybut rowspan jest użyty z wartością 2 w pierwszej komórce pierwszego wiersza. Oznacza to, że ta komórka będzie się rozciągać na dwa wiersze, co jest widoczne w odpowiedzi B. Tabelę HTML można wykorzystać do tworzenia złożonych struktur danych, gdzie rowspan jest kluczowe w przypadku, gdy chcemy zminimalizować liczbę komórek i lepiej zorganizować dane w pionowe bloki. Użycie rowspan jest zgodne ze standardami HTML5, które zalecają semantyczne i logiczne układanie danych. Praktyczne zastosowanie rowspan można znaleźć w projektach takich jak raporty finansowe czy skomplikowane formularze, gdzie często wymagane jest łączenie komórek w pionie. W projektowaniu stron internetowych zaleca się stosowanie tabel w przypadkach rzeczywistych danych tabelarycznych, a nie do układu strony, co jest zgodne z wytycznymi dotyczącymi dostępności WCAG.

Pytanie 12

W systemie bazy danych dotyczącej pojazdów, pole kolor w tabeli samochody może przyjmować wartości tylko z listy lakier. Aby zrealizować połączenie między tabelami samochody a lakier przez relację, należy użyć kwerendy

A. <br>ALTER TABLE lakier<br> ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
B. <br>ALTER TABLE samochody<br> ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
C. <br>ALTER TABLE samochody<br> ADD FOREIGN KEY kolor REFERENCES lakier;
D. <br>ALTER TABLE samochody<br> ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
Odpowiedź 4 jest poprawna, ponieważ dokładnie określa, jak należy zdefiniować relację między tabelą samochody a tabelą lakier w kontekście bazy danych. W tym przypadku, pole kolor w tabeli samochody pełni rolę klucza obcego, który odnosi się do kolumny lakierId w tabeli lakier. To połączenie jest niezbędne, aby zapewnić integralność danych oraz umożliwić korzystanie z relacyjnych własności baz danych. Klucz obcy stosowany w relacjach między tabelami pozwala na ograniczenie wartości, które mogą być wprowadzone do pola kolor, zapewniając, że będą one zgodne z wartościami zdefiniowanymi w tabeli lakier. Przykładowo, jeśli chcemy zapewnić, że każdy samochód ma przypisany kolor z określonej palety, stosowanie kluczy obcych jest najlepszą praktyką. Tego rodzaju podejście jest zgodne z normami ACID (Atomicity, Consistency, Isolation, Durability), co zwiększa niezawodność operacji na bazie danych.

Pytanie 13

Jaką wartość zwróci funkcja zao, która została zdefiniowana w języku C++, gdy zostanie wywołana z argumentem 3.55?

int zao(float x) {
    return x+0.5;
}
A. 3.5
B. 4.05
C. 4
D. 3
Wartości zwracane przez funkcje w C++ mogą być mylące, gdy nie zrozumiemy, jak działa zaokrąglanie i operacje na liczbach zmiennoprzecinkowych. Rozważając odpowiedzi 3, 3.5 i 4.05, można zauważyć, że każda z tych odpowiedzi opiera się na błędnym zrozumieniu zastosowania funkcji zaofloat. Odpowiedź 3 wynika z błędu myślowego, który zakłada, że dodanie 0.5 do wartości 3.55 skutkuje zmniejszeniem wartości do najbliższej liczby całkowitej, co jest niezgodne z zasadami matematycznymi. Z kolei odpowiedź 3.5 może wydawać się logiczna dla kogoś, kto może pomyśleć, że dodanie 0.5 w jakimś sensie zmienia wartość do tej liczby, jednak w rzeczywistości, gdyby tak było, funkcja nie spełniałaby swojej podstawowej roli. Odpowiedź 4.05, mimo że jest poprawnym wynikiem dodania do 3.55 wartości 0.5, nie jest właściwą odpowiedzią w kontekście pytania, ponieważ nie uwzględnia zasady zaokrąglania do najbliższej liczby całkowitej. W praktyce programiści często napotykają podobne problemy i dlatego dobrym zwyczajem jest, aby jasno określać wymagania dotyczące wyników i stosować odpowiednie metody zaokrąglania, kiedy to konieczne, aby uniknąć nieporozumień.

Pytanie 14

Które zdarzenie JavaScript zachodzi, gdy kursor myszy znajdzie się nad elementem, do którego jest przypisane?

A.
onmouseup
B.
onmouseout
C.
onmouseover
D.
onmousedown
Pozostałe zdarzenia zachodzą w innych sytuacjach. onmouseup jest wyzwalane przy zwolnieniu wciśniętego przycisku myszy, a onmousedown przy jego naciśnięciu - oba dotyczą kliknięcia, a nie samego najechania. onmouseout działa odwrotnie do szukanego: zachodzi, gdy kursor OPUSZCZA element. Najechanie kursorem na element obsługuje onmouseover, dlatego ta odpowiedź jest poprawna.

Pytanie 15

Ile razy powtórzy się pętla w JavaScript?

var x=1, i=0;
do{
    x*=3;
    i++;
}
while(x!=27);
A. 27 razy
B. 2 razy
C. 3 razy
D. 26 razy
W przedstawionym kodzie JavaScript, pętla do-while wykonuje się do momentu, gdy zmienna x nie jest równa 27. Zaczynając od wartości x równej 1, przy każdym przejściu przez pętlę zmienna x jest mnożona przez 3. Kolejno, x przyjmuje wartości: 3, 9, 27. Zatem pętla wykonuje się trzy razy, ponieważ dopiero po trzecim cyklu x osiąga wartość 27, co powoduje zakończenie pętli. Do-while zawsze wykonuje przynajmniej jedno przejście, niezależnie od warunku końcowego, dzięki czemu jest przydatna w sytuacjach, gdy operacja musi być przeprowadzona co najmniej raz. Dobrym przykładem wykorzystania tego mechanizmu jest oczekiwanie na spełnienie określonego warunku, np. uzyskanie poprawnej odpowiedzi od użytkownika. Warto zwrócić uwagę, że w przypadku operacji matematycznych wymagających określonej liczby iteracji, pętla do-while zapewnia prostotę i przejrzystość implementacji, zgodnie z dobrymi praktykami zapewniającymi łatwość w czytaniu i utrzymaniu kodu.

Pytanie 16

Kod JavaScript uruchomiony w wyniku kliknięcia przycisku ma na celu <img id="i1" src="obraz1.gif"> <button onclick="document.getElementById('i1').src='obraz2.gif'"> test</button>

A. zamienić obraz1.gif na obraz2.gif
B. ukryć obraz2.gif
C. wyświetlić obraz2.gif obok obraz1.gif
D. zmienić styl obrazu o id równym i1
Odpowiedź 'zamienić obraz1.gif na obraz2.gif' jest poprawna, ponieważ kod JavaScript w przycisku jest odpowiedzialny za zmianę źródła obrazu. W momencie kliknięcia przycisku, funkcja `document.getElementById('i1').src='obraz2.gif'` przypisuje nowe źródło do elementu o identyfikatorze 'i1', co efektywnie powoduje wyświetlenie obraz2.gif zamiast obraz1.gif. Tego typu manipulacje DOM są powszechnie stosowane w interaktywnych aplikacjach webowych, gdzie użytkownik wchodzi w interakcję z różnymi elementami. Przykładem zastosowania tej techniki może być tworzenie galerii zdjęć, gdzie użytkownik klika na miniaturkę, a główny obrazek zostaje zmieniony na wybrane zdjęcie. Warto również zauważyć, że ta zmiana jest realizowana bez potrzeby reładowania strony, co znacząco poprawia doświadczenie użytkownika. Takie podejście jest zgodne z dobrymi praktykami w zakresie tworzenia dynamicznych interfejsów użytkownika.

Pytanie 17

W języku PHP funkcja trim ma za zadanie

A. zmniejszać napis o wskazaną w parametrze liczbę znaków.
B. z obu końców napisu usuwać białe znaki lub inne znaki podane w parametrze.
C. porównywać dwa napisy i wypisywać część wspólną.
D. wyznaczyć długość napisu.
W PHP łatwo pomylić różne funkcje operujące na łańcuchach znaków, bo często używa się ich obok siebie i wszystkie „coś robią z napisem”. Funkcja trim() bywa mylona z innymi narzędziami, które mierzą długość, porównują teksty albo je przycinają w środku. Warto więc to sobie spokojnie uporządkować. Trim nie służy do wyznaczania długości napisu – do tego jest funkcja strlen(), która zwraca liczbę znaków w łańcuchu i nic z nim nie usuwa ani nie modyfikuje. To typowy błąd: ktoś widzi krótką nazwę „trim” i kojarzy ją z „przycięciem do długości”, a tu chodzi wyłącznie o usuwanie znaków z obu końców. Funkcja trim nie porównuje też dwóch napisów i nie wypisuje części wspólnej. Jeżeli chcemy porównać łańcuchy, używamy operatorów porównania (==, ===) albo funkcji strcmp(), strcasecmp() itd. Szukanie części wspólnej między dwoma tekstami wymaga zupełnie innych technik, np. funkcji strpos(), substr(), czasem nawet algorytmów dopasowania wzorców – ale to zupełnie inny temat niż trim. Częste jest też mylne przekonanie, że trim „zmniejsza napis o wskazaną liczbę znaków”, jakby działał na zasadzie: przekaż n i utnij tyle znaków. Tymczasem trim w ogóle nie operuje na liczbach, tylko na zbiorze znaków podanych w drugim parametrze. Usuwa wszystkie wystąpienia tych znaków z początku i końca, niezależnie od tego, ile ich tam jest. Jeżeli ktoś chce przyciąć łańcuch do określonej długości, używa się substr() albo mb_substr() (dla UTF-8), czasem w połączeniu z funkcjami multibajtowymi. Moim zdaniem podstawowy błąd myślowy polega tu na traktowaniu „przycinania” bardzo ogólnie, bez rozróżnienia: czy przycinamy do długości, czy usuwamy białe znaki na brzegach, czy porównujemy zawartość. Trim jest funkcją specjalistyczną: normalizuje początek i koniec łańcucha, co jest kluczowe przy walidacji danych wejściowych, porównywaniu stringów i zapisywaniu ich w spójnej postaci. Dobrą praktyką jest najpierw zastosować trim na danych od użytkownika, a dopiero potem używać strlen, strcmp czy substr do dalszych operacji. Wtedy każdy element ma swoją jasną, techniczną rolę.

Pytanie 18

$x = 0; while($x < 5) { echo "$x,"; $x++; } Wskaż instrukcję, która jest funkcjonalnie równoważna dla podanej pętli while w języku PHP.

Ilustracja do pytania
A. Instrukcja 2
B. Instrukcja 1
C. Instrukcja 3
D. Instrukcja 4
Instrukcja while w PHP jest pętlą, która kontroluje warunek przed każdą iteracją. W jej przypadku zmienna $x jest początkowo równa 0, a warunek $x < 5 powoduje, że blok kodu wewnątrz pętli wykonuje się dopóki $x jest mniejsze od 5. Za każdym razem, gdy kod wewnątrz pętli się wykonuje, echo wyświetla aktualną wartość zmiennej $x, a następnie $x jest inkrementowane o 1. Instrukcja for, która jest funkcjonalnie równoważna tej pętli while, to taka, która zaczyna się z $x równe 0, kończy na $x mniejszym od 5, i w każdym kroku zwiększa $x o 1, dokładnie tak jak instrukcja 3. Odpowiednia struktura pętli for daje możliwość precyzyjnego określenia wszystkich trzech elementów: inicjalizacji zmiennej, warunku kontynuacji oraz zmiany wartości zmiennej po każdej iteracji, co zapewnia pełną kontrolę nad przebiegiem pętli i transparentność kodu, realizując te same funkcjonalności co pętla while w bardziej kompaktowy sposób. Tego typu podejście jest szeroko stosowane w branży ze względu na swoją czytelność i efektywność, co czyni je zgodnym z dobrymi praktykami programistycznymi.

Pytanie 19

Jaką klauzulę należy wykorzystać w instrukcji CREATE TABLE w SQL, by dane pole rekordu pozostawało wypełnione?

A. CHECK
B. NULL
C. NOT NULL
D. DEFAULT
Odpowiedź 'NOT NULL' jest poprawna, ponieważ klauzula ta jest używana w SQL do definiowania, że dane pole w tabeli nie może przyjmować wartości NULL, co oznacza, że musi zawierać jakąś wartość. Użycie klauzuli NOT NULL jest kluczowe w zapewnieniu integralności danych, szczególnie w sytuacjach, gdy brak wartości w danym polu może prowadzić do błędów w logice aplikacji lub nieprawidłowych wyników zapytań. Na przykład, w przypadku tworzenia tabeli dla użytkowników w systemie, pole 'email' powinno być oznaczone jako NOT NULL, aby zapobiec sytuacji, w której użytkownik mógłby zostać dodany bez podania adresu e-mail, co uniemożliwiłoby kontaktowanie się z nim. Dobrą praktyką jest również stosowanie klauzuli NOT NULL tam, gdzie dane są wymagane do poprawnego działania aplikacji. Użycie tej klauzuli jest zgodne z zasadami normalizacji baz danych, które z kolei mają na celu redukcję redundancji i poprawę integralności danych.

Pytanie 20

Efektem wykonania poniższego kodu PHP jest wyświetlenie komunikatu:

$a = $c = true;
$b = $d = false;

if(($a && $b) || ($c && $d))
    echo 'warunek1';
elseif(($a && $b) || ($c || $d))
    echo 'warunek2';
elseif(($c && $d) || (!$a))
    echo 'warunek3';
else
    echo 'warunek4';
A. warunek3
B. warunek4
C. warunek1
D. warunek2
W tym zadaniu kluczowe jest zrozumienie, jak PHP ocenia wyrażenia logiczne z użyciem operatorów `&&` i `||` oraz jak działa sekwencja `if / elseif / else`. Sporo osób gubi się tutaj przez pobieżne liczenie w głowie albo przez mylenie operatora AND z OR, albo przez nieuwzględnianie tego, że kolejne gałęzie `elseif` są sprawdzane dopiero wtedy, gdy poprzednie warunki były fałszywe.

Najpierw warto zauważyć wartości zmiennych: `$a = $c = true;` oraz `$b = $d = false;`. To oznacza po prostu: `a = true`, `c = true`, `b = false`, `d = false`. W pierwszym warunku mamy `($a && $b) || ($c && $d)`. Zarówno `true && false`, jak i `true && false` dają `false`, więc całość to `false || false`, czyli `false`. Dlatego komunikat „warunek1” nie ma prawa się pojawić – ten blok w ogóle nie jest wykonywany.

Częsty błąd polega na tym, że ktoś widzi dwa `true` w warunku i z automatu zakłada, że „coś tam pewnie wyjdzie na true”. Niestety tak to nie działa – przy operatorze `&&` wystarczy jeden `false`, żeby całe wyrażenie było fałszywe. Z kolei przy `||` wystarczy jedno `true`, by wynik był prawdziwy. I to dokładnie widać w drugim warunku: `($a && $b) || ($c || $d)`. Tu pierwsza część znów jest fałszywa, ale druga to `true || false`, więc daje `true`. Cały warunek jest więc prawdziwy i dlatego wykonuje się tylko ten blok – „warunek2”.

Jeżeli ktoś zaznaczył „warunek3” lub „warunek4”, to zazwyczaj wynika to z niezrozumienia, że po pierwszym spełnionym `if`/`elseif` dalsze nie są już w ogóle analizowane. Trzeci warunek logicznie też warto policzyć: `($c && $d) || (!$a)` to `false || false`, bo `$c && $d` to `true && false = false`, a `!$a` to `!true = false`. On byłby fałszywy nawet gdyby do niego dotrzeć, więc „warunek3” i tak by się nie wydrukował. „warunek4” z kolei to blok domyślny, wykonywany tylko wtedy, gdy wszystkie wcześniejsze warunki są fałszywe – tutaj tak nie jest, bo drugi warunek jest prawdziwy.

Z mojego doświadczenia dobrym nawykiem jest zawsze rozpisywanie takich wyrażeń krok po kroku, szczególnie na początku nauki: najpierw obliczyć `&&` wewnątrz nawiasów, potem `||`, i dopiero wtedy patrzeć, która gałąź `if/elseif/else` zostanie wykonana. W realnym kodzie przy skomplikowanych warunkach lepiej je upraszczać albo rozbijać na kilka czytelnych zmiennych pomocniczych, zamiast liczyć wszystko „w głowie”, bo to prosta droga do subtelnych błędów logicznych.

Pytanie 21

Zaprezentowano tabelę stworzoną za pomocą kodu HTML, bez zastosowania stylów CSS. Który z poniższych fragmentów kodu HTML odnosi się do pierwszego wiersza tabeli?

Ilustracja do pytania
A. A
B. D
C. C
D. B
W przypadku odpowiedzi A zastosowano znaczniki <td> co jest błędną praktyką dla nagłówków tabeli. Znaczniki <td> służą do definiowania zwykłych komórek danych a nie komórek nagłówkowych. Użycie <td> w nagłówkach pozbawia tabelę odpowiednich walorów semantycznych co utrudnia jej późniejsze stylizowanie oraz dostępność. W odpowiedzi B użyto znacznika <i> jako części nagłówków co jest nieoptymalne ponieważ znacznik ten semantycznie oznacza zmianę tonu lub stylu i nie jest przeznaczony do formatowania komórek tabeli. Oznacza to że formatowanie takie może być odebrane jako nieodpowiednie przez czytniki ekranowe co dodatkowo wpływa na dostępność. Natomiast w odpowiedzi C zastosowano znacznik <center> wewnątrz <td> co jest przestarzałą techniką HTML oraz nie jest zalecane we współczesnym tworzeniu stron internetowych. Znacznik <center> został zdeprecjonowany w HTML 4.01 i nie powinien być używany ponieważ jego funkcjonalność można osiągnąć za pomocą CSS. Wszystkie te podejścia pomijają aspekty semantycznego tworzenia stron internetowych co jest kluczowe dla utrzymania prawidłowej struktury dokumentu oraz dostępności dla użytkowników z różnymi potrzebami.

Pytanie 22

Który obiekt bazy danych służy głównie do drukowania lub wyświetlania zestawień danych?

A. raport
B. makro
C. formularz
D. moduł
Raport to obiekt bazy przeznaczony głównie do DRUKOWANIA i wyświetlania zestawień - grupuje, sortuje i podsumowuje dane w przejrzystej, gotowej do wydruku formie. Zapamiętaj: gdy potrzebujesz wydruku lub czytelnego podsumowania, tworzysz raport.

Pytanie 23

Selektor CSS a:link {color:red} użyty w kaskadowych arkuszach stylów określa

A. pseudoelement
B. klasę
C. identyfikator
D. pseudoklasę
Zdecydowanie coś poszło nie tak w Twojej odpowiedzi, bo wygląda na to, że nie do końca rozumiesz podstawowe pojęcia związane z CSS. Klasy i identyfikatory, używane do grupowania elementów i nadawania im stylów, to zupełnie inna sprawa niż pseudoklasy. Klasy w CSS definiujesz przez kropkę, jak na przykład .nazwa-klasy, a pseudoklasy zawsze zaczynają się od dwukropka. Klasy są super do stylizacji większej grupy elementów, podczas gdy identyfikatory są unikalne i służą do stylizacji pojedynczych elementów, zaczynają się od hasha (#). Pseudoelementy, które mogą być mylone z pseudoklasami, pomagają stylizować tylko część elementów, jak na przykład ::before lub ::after, co pozwala na dodawanie treści przed lub po danym elemencie. Rozróżnienie tych pojęć jest naprawdę kluczowe, gdy chcesz dobrze zrozumieć CSS. Często zdarza się, że ludzie mylą te pojęcia, co prowadzi do chaosu przy stylizacji stron. Żeby uniknąć tych nieporozumień, warto przejrzeć dokumentację CSS i trochę poćwiczyć z różnymi selektorami. Z mojej perspektywy, jest to najlepszy sposób, by zrozumieć jak to wszystko działa i jakie są różnice między tymi pojęciami.

Pytanie 24

Którą funkcję z menu Kolory programu GIMP użyto, w celu uzyskania efektu przedstawionego w filmie?

A. Krzywe.
B. Progowanie.
C. Barwienie.
D. Inwersja.
Wiele osób myli w GIMP-ie różne narzędzia z menu Kolory, bo na pierwszy rzut oka kilka z nich „mocno zmienia” obraz. Jednak efekt pokazany na filmie, gdzie obraz staje się dwuwartościowy (czarno-biały, bez półtonów), jest typowym działaniem funkcji Progowanie. Kluczowe jest tu zrozumienie, czym różnią się od siebie dostępne operacje. Krzywe służą do zaawansowanej korekcji tonalnej i kontrastu. Można nimi mocno przyciemnić lub rozjaśnić wybrane zakresy jasności, robić tzw. efekt kontrastu „S”, korygować prześwietlenia itd. Ale nawet przy bardzo agresywnych ustawieniach krzywych obraz nadal zawiera półtony – pojawiają się stopniowe przejścia między odcieniami, a nie ostre odcięcie na zasadzie czarne/białe. To świetne narzędzie do retuszu zdjęć, ale nie do uzyskania efektu progowania. Inwersja (Kolory → Inwersja) po prostu odwraca wartości kolorów lub jasności: jasne staje się ciemne, czerwony zmienia się na cyjan, zielony na magentę itd. To jak negatyw fotograficzny. Struktura szczegółów pozostaje identyczna, zmienia się tylko ich „biegun”. Nie pojawia się żadne odcięcie progowe, więc obraz wciąż ma pełne spektrum odcieni. W praktyce inwersja przydaje się np. przy przygotowaniu masek lub pracy z materiałami skanowanymi, ale nie generuje typowego, „plakatowego” efektu czerni i bieli jak progowanie. Barwienie z kolei (Kolory → Barwienie) służy do nadania całemu obrazowi jednolitego odcienia, zwykle po wcześniejszym sprowadzeniu go do skali szarości. Można w ten sposób uzyskać np. sepię, niebieski ton nocny albo dowolny kolorystyczny „filtr”. Jasność i kontrast lokalny pozostają bardzo podobne, zmienia się dominująca barwa. To zupełnie inna kategoria operacji niż progowanie, które pracuje na poziomie progów jasności, a nie na poziomie koloru. Typowym błędem jest patrzenie tylko na to, że „obraz bardzo się zmienił” i przypisywanie tego narzędziom takim jak krzywe czy inwersja. W pracy z grafiką warto zawsze zadać sobie pytanie: czy efekt polega na zmianie rozkładu jasności, na odwróceniu kolorów, czy na twardym podziale na dwa poziomy? Jeśli widzisz brak półtonów i ostre granice, praktycznie zawsze chodzi o progowanie, które zostało wskazane jako poprawna funkcja.

Pytanie 25

Algorytm przedstawiony na rysunku można zapisać w języku JavaScript za pomocą instrukcji

A. for(i = 0; i > 10; i++)

B. var i = 0;
   while(i <= 10)
     i += 2;

C. var i = 0;
   do
     i++;
   while(i > 10);

D. var i = 0;
   do
     i = i + 2;
   while(i < 10);
Ilustracja do pytania
A. B.
B. D.
C. A.
D. C.
Dobrze! Wybrałeś prawidłową odpowiedź B. Biorąc pod uwagę wykres przepływu, zmienna 'i' jest inicjalizowana wartością 0 i następnie w pętli zwiększana o 2, dopóki jej wartość nie przekroczy 10. Wprowadzona instrukcja w JavaScript (var i = 0; while(i <= 10) { i += 2; }) idealnie odzwierciedla proces przedstawiony na diagramie. Inicjalizacja zmiennej jest ważnym krokiem w programowaniu, który pozwala na użycie zmiennej w kodzie, a pętla 'while' jest często stosowana do wykonywania części kodu wielokrotnie do momentu, aż warunek przestanie być spełniony. W tym przypadku, warunkiem jest 'i' mniejsze lub równe 10, a kod wewnątrz pętli zwiększa wartość 'i' o 2 za każdym razem, gdy jest wykonywany. Jest to typowy przykład użycia pętli i operatorów w języku JavaScript.

Pytanie 26

Jaka funkcja w PHP pozwala na wyświetlenie ciągu n znaków @?

function znaki($znak,$i++){
for($i=0;$i<$n;$i++)
print($znak);
}
znaki(@,$n);
A
function znaki($i){
for($i=0;$i<$n;$i++)
print("@");
}
znaki($i);
B
function znaki($znak,$i++){
for($i=0;$i<$n;$i++)
print($znak);
}
znaki($n);
C
function znaki($znak,$n){
for($i=0;$i<$n;$i++)
print($znak);
}
znaki("@",$n);
D
A. A
B. B
C. C
D. D
Błędne odpowiedzi w tym przypadku wynikają z niepoprawnego przekazania parametrów do funkcji lub niewłaściwego sposobu ich wykorzystania co skutkuje nieosiągnięciem zamierzonego celu czyli wyświetlenia ciągu znaków @. W jednym przypadku funkcja nie przyjmuje wystarczającej liczby parametrów co uniemożliwia dynamiczne określenie liczby powtórzeń znaku. Zamiast tego powinno się zapewnić że funkcja przyjmuje zarówno znak jak i liczbę powtórzeń jako parametry. Innym częstym błędem jest brak przekazania właściwego argumentu do funkcji co skutkuje jej niepoprawnym działaniem i potencjalnym błędem wykonania. Ponadto korzystanie z niepoprawnie nazwanych zmiennych lub zmiennych które nie są jasno zdefiniowane w kontekście wywołania funkcji prowadzi do błędów logicznych. Kluczowym jest zrozumienie w jaki sposób funkcje w PHP przyjmują i przetwarzają argumenty oraz jak pętle takie jak for pozwalają na iteracyjne przetwarzanie danych. Poprawne zrozumienie i zastosowanie tych mechanizmów jest fundamentem efektywnego programowania w PHP co przekłada się na tworzenie kodu który jest nie tylko poprawny ale także łatwy do utrzymania i skalowalny. Zrozumienie tych podstawowych zasad pozwala na uniknięcie typowych błędów w programowaniu i prowadzi do tworzenia bardziej niezawodnych aplikacji. Prawidłowe podejście do tworzenia funkcji i ich wywoływania jest jednym z kluczowych elementów w rozwijaniu umiejętności programistycznych w PHP i innych językach programowania. Dlatego też ważne jest aby zawsze dokładnie analizować wymagania funkcji i poprawnie konstruować ich implementację oraz wywołanie aby zapewnić ich poprawne i efektywne działanie w kontekście całego systemu.

Pytanie 27

W JavaScript stworzono funkcję o nazwie licz_pitagoras, która oblicza długość przeciwprostokątnej w trójkącie prostokątnym, zgodnie z twierdzeniem Pitagorasa. Funkcja przyjmuje dwa parametry wejściowe i zwraca wynik. Poprawne wywołanie tej funkcji, wraz z uzyskaniem zwróconej wartości, będzie miało formę

A. licz_pitagoras(a, b, c);
B. licz_pitagoras(a, b) = c;
C. c = licz_pitagoras(a, b);
D. licz_pitagoras(a, b);
Wywołanie funkcji w JavaScript wymaga przestrzegania określonych zasad, które nie zostały spełnione w pozostałych odpowiedziach. Odpowiedź 'licz_pitagoras(a, b);' jest niekompletna, ponieważ pomija przypisanie wyniku do zmiennej. Funkcja może być wywołana, ale bez możliwości dalszego wykorzystania jej wyniku, co ogranicza jej użyteczność. Z kolei 'licz_pitagoras(a, b) = c;' sugeruje, że przypisanie wyniku może być wykonane w odwrotny sposób, co jest niezgodne z zasadami przypisywania wartości w JavaScript. Warto pamiętać, że w tym języku nie możemy przypisywać do wyniku funkcji, gdyż funkcje zwracają wartości, a nie są same w sobie zmiennymi. Natomiast 'licz_pitagoras(a, b, c);' sugeruje, że funkcja oczekuje trzech argumentów, co jest nieprawidłowe, ponieważ funkcja została zdefiniowana do przyjmowania tylko dwóch parametrów. Tego typu błędne założenia mogą prowadzić do frustracji podczas programowania, gdyż przydzielanie niewłaściwych argumentów do funkcji może skutkować błędami runtime. Dobrą praktyką jest zrozumienie definicji funkcji i jej parametrów przed jej wywołaniem, co pozwala na efektywne korzystanie z możliwości oferowanych przez JavaScript.

Pytanie 28

Której klauzuli należy użyć w poleceniu CREATE TABLE, aby pole nie mogło pozostać puste?

A.
NULL
B.
CHECK
C.
NOT NULL
D.
DEFAULT
Klauzula NOT NULL w definicji kolumny wymusza, że pole musi mieć wartość - baza odrzuci próbę wstawienia wiersza bez niej. Stosuje się ją do danych obowiązkowych, np. nazwisko VARCHAR(50) NOT NULL, a także automatycznie dla kolumn klucza głównego. Często łączy się ją z DEFAULT, by przy braku wartości wstawić ustaloną domyślną. Dlatego aby pole nie mogło być puste, używa się NOT NULL.

Pytanie 29

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

A. Bugzilla
B. FileZilla
C. Go!Zilla
D. CloneZilla
Nazwy celowo brzmią podobnie (kończą się na „-zilla”), ale tylko jedna to klient FTP. Bugzilla służy zespołom programistycznym do rejestrowania i śledzenia błędów, więc z transferem plików nie ma nic wspólnego. Go!Zilla działa odwrotnie niż potrzebujemy - to menedżer pobierania, który ściąga pliki z sieci na dysk. CloneZilla tworzy obrazy i klonuje dyski, co przydaje się przy kopiach zapasowych systemu, a nie przy publikacji strony. Do przeniesienia plików witryny na serwer służy FileZilla - klient FTP/SFTP stworzony do transferu plików.

Pytanie 30

Które stwierdzenie dotyczy SKALOWANIA obrazu?

A. zmienia format zapisu, by zmienić kompresję
B. zmienia rozmiar obrazu bez utraty istotnej zawartości
C. łączy lub odejmuje kształty
D. wycina fragment obrazu (kadrowanie)
Skalowanie obrazu to zmiana jego ROZMIARU (powiększenie lub pomniejszenie) z zachowaniem istotnej zawartości wizualnej - całość zostaje, zmieniają się wymiary. Stosuje się je np. przy dopasowaniu zdjęcia do układu strony. Dlatego skalowanie to zmiana rozmiaru obrazu bez utraty istotnej zawartości.

Pytanie 31

Definicja stylu zaprezentowana w CSS odnosi się do odsyłacza, który

a:visited {color: orange;}
A. jeszcze nie był odwiedzony
B. wskaźnik myszy znajduje się nad nim
C. został wcześniej odwiedzony
D. posiada błędny adres URL
Odpowiedź "został wcześniej odwiedzony" jest prawidłowa, ponieważ definicja stylu CSS `a:visited {color: orange;}` dotyczy odsyłaczy, które zostały już odwiedzone przez użytkownika. W CSS pseudo-klasa `:visited` jest stosowana do stylizacji odsyłaczy, które prowadzą do stron, które użytkownik już otworzył. Dzięki tej możliwości, twórcy stron internetowych mogą wprowadzać różne kolory dla odwiedzonych i nieodwiedzonych linków, co pozwala na szybszą orientację użytkowników w treści strony. Na przykład, jeżeli na stronie znajduje się wiele linków, użytkownik może łatwiej zrozumieć, które z nich już kliknął, a które są nowe. Dobrą praktyką jest stosowanie kontrastowych kolorów dla odsyłaczy, aby zwiększyć ich dostępność i użyteczność. Warto również zauważyć, że przeglądarki mogą mieć różne ograniczenia dotyczące stylizacji odwiedzonych linków, co jest podyktowane względami prywatności użytkowników. Z tego powodu zaleca się, aby nie opierać funkcjonalności strony jedynie na wyglądzie odwiedzonych linków.

Pytanie 32

Aby ustawić marginesy wewnętrzne elementu: górny 50px, prawy 20px, dolny 40px, lewy 30px, należy użyć deklaracji CSS:

A.
padding: 20px 40px 30px 50px;
B.
padding: 50px 20px 40px 30px;
C.
padding: 30px 20px 40px 50px;
D.
padding: 50px 40px 20px 30px;
Pozostałe zapisy mają wartości w złej kolejności. Skrót padding czyta cztery liczby jako górę, prawo, dół i lewo - po kolei, zgodnie z ruchem wskazówek zegara. Wariant padding: 50px 40px 20px 30px; zamienia miejscami prawy (powinno 20) z dolnym (powinno 40). Pozostałe zaczynają od innej wartości niż wymagane 50px dla góry, więc również nie odwzorują zadanych marginesów. Poprawny zapis to padding: 50px 20px 40px 30px; (góra-prawo-dół-lewo), dlatego ta odpowiedź jest właściwa.

Pytanie 33

Który z przedstawionych poniżej fragmentów kodu HTML5 zostanie uznany przez walidator HTML za niepoprawny?

A. <p class= "stl" id= "a">tekst</p>
B. <p class= "stl"><style>.a{color:#F00}</style>tekst</p>
C. <p class= "stl">tekst</p>
D. <p class= "stl" style= "color: #F00 ">tekst</p>
Poprawna odpowiedź, która została wskazana, to <p class= "stl"><style>.a{color:#F00}</style>tekst</p>. W kontekście HTML5, element <style> jest przeznaczony do umieszczania w nagłówkach dokumentu (<head>), a nie wewnątrz elementów blokowych, takich jak <p>. Umieszczanie tagu <style> w tagu <p> narusza zasady dotyczące struktury dokumentu HTML. Walidatory HTML5, które sprawdzają zgodność kodu z obowiązującymi standardami W3C, uznają takie umieszczenie za błąd, ponieważ stylizacja powinna być oddzielona od treści. Zgodnie z najlepszymi praktykami, CSS powinno być zaimplementowane w plikach zewnętrznych lub sekcjach <head>, co ułatwia utrzymanie i modyfikację kodu. Przykładem poprawnej struktury może być: <head><style>.a{color:#F00}</style></head><body><p class="stl">tekst</p></body>. To zapewnia przejrzystość i zgodność z zasadami HTML5, co jest kluczowe dla SEO oraz dostępności strony.

Pytanie 34

W kodzie HTML5 znajduje się fragment, który zawiera błąd walidacji. Jakiego rodzaju jest to błąd?

<h6>tekst</h6>
<p>pierwsza <b>linia</b><br>
<p>Druga linia</p>
A. Znaczniki powinny być zapisane wielkimi literami.
B. Pierwszy znacznik <p> nie został zamknięty.
C. Znacznik <br> musi być zamknięty.
D. Nagłówek szóstego poziomu nie istnieje.
W tym zadaniu chodziło o rozpoznanie typowego błędu związanego z poprawnym zamykaniem znaczników HTML, a dokładniej – ze znacznikiem <p>. W przedstawionym kodzie rzeczywiście pierwszy znacznik <p> nie został zamknięty przed pojawieniem się kolejnego bloku <p>, co powoduje naruszenie struktury dokumentu. Według specyfikacji HTML5, element <p> nie powinien być zagnieżdżany ani przerwany przez inny blokowy element (w tym przypadku przez drugi <p>). Przeglądarki zwykle próbują automatycznie domykać taki znacznik, ale nie jest to dobra praktyka – takie poleganie na mechanizmach autokorekty może później prowadzić do trudnych do wykrycia błędów wizualnych albo nieprzewidywalnych efektów w stylach CSS. Z mojego doświadczenia wynika, że konsekwentne zamykanie znaczników nie tylko poprawia czytelność kodu, ale i ułatwia pracę zespołową oraz skalowanie projektu. Przykład: jeśli piszesz większy artykuł i zapomnisz zamknąć <p>, cała dalsza część tekstu może zostać potraktowana jako jeden paragraf. To potrafi solidnie namieszać, nawet w prostych stronach! Branża webowa od lat promuje zasadę – pisz zgodnie ze specyfikacją, a będziesz miał mniej problemów później. Zawsze lepiej przejrzeć strukturę dokumentu dwa razy, niż potem szukać błędów na produkcji. Przy pracy z edytorami kodu warto korzystać z funkcji podświetlania składni lub walidatorów HTML, które od razu wyłapują takie potknięcia.

Pytanie 35

Które kolory tła zostały przypisane odpowiednio do akapitów o identyfikatorach 1, 2, 3, 4?

<p id="1" style="background-color:rgb(128,128,128);"> Akapit 1</p>
<p id="2" style="background-color:rgb(255,255,0);"> Akapit 2</p>
<p id="3" style="background-color:rgb(0,128,0);"> Akapit 3</p>
<p id="4" style="background-color:rgb(0,0,255);"> Akapit 4</p>
A. Szary, żółty, zielony, niebieski.
B. Szary, niebieski, czerwony, żółty.
C. Żółty, zielony, czerwony, szary.
D. Żółty, czerwony, zielony, szary.
Poprawnie powiązałeś zapis w notacji RGB z nazwami kolorów. W kodzie CSS zapis rgb(128,128,128) oznacza kolor, w którym wartości składowych czerwonej, zielonej i niebieskiej są równe, a dość niskie, co daje odcień szarości – stąd tło akapitu o id="1" jest szare. W rgb(255,255,0) maksymalna jest czerwień i zieleń, a niebieski ma wartość 0, co w modelu barw RGB daje kolor żółty – taki kolor ma akapit o id="2". Z kolei rgb(0,128,0) to tylko składowa zielona o średniej intensywności, więc wychodzi ciemniejsza zieleń i to jest tło akapitu o id="3". Ostatni zapis rgb(0,0,255) to maksymalna składowa niebieska, więc mamy wyraźny niebieski kolor tła dla akapitu o id="4". W praktyce webowej takie bezpośrednie użycie rgb() w atrybucie style jest poprawne, ale z mojego doświadczenia lepiej jest przenosić te style do arkusza CSS i używać klas, np. .bg-gray, .bg-yellow itp. Ułatwia to późniejszą modyfikację wyglądu strony i trzymanie się zasady rozdzielenia struktury (HTML) od prezentacji (CSS), co jest zgodne z dobrymi praktykami i rekomendacjami W3C. Warto też kojarzyć liczby z odpowiadającymi im nazwami kolorów: 255 to maksimum, 0 to brak danej składowej, a wartości pośrednie (np. 128) dają ciemniejsze odcienie. W projektach komercyjnych często używa się też zapisu heksadecymalnego (#808080 dla szarego, #FFFF00 dla żółtego, #008000 dla zielonego, #0000FF dla niebieskiego), ale mechanizm jest dokładnie ten sam – opisujemy intensywność kanałów R, G i B.

Pytanie 36

Który element CMS odpowiada bezpośrednio za WYGLĄD strony?

A. wtyczka (WordPress) / dodatek (Joomla!)
B. motyw (WordPress) / szablon (Joomla!)
C. widżet (WordPress) / moduł (Joomla!)
D. kokpit (WordPress) / panel administracyjny (Joomla!)
Pozostałe elementy pełnią inne role. Kokpit i panel administracyjny to interfejs ZARZĄDZANIA. Widżety i moduły to bloki treści w wyznaczonych miejscach. Wtyczki i dodatki rozszerzają FUNKCJE. Za wygląd odpowiada motyw (WordPress) lub szablon (Joomla!).

Pytanie 37

Aby w języku PHP odwołać się do danych formularza przesłanych metodą POST, należy użyć tablicy:

A.
$_SERVER
B.
$_FILES
C.
$_SESSION
D.
$_POST
Dane pól formularza wysłanego metodą POST PHP udostępnia w tablicy superglobalnej $_POST. Odwołujesz się do konkretnego pola po jego atrybucie name, na przykład $_POST["login"]. Jest ona dostępna w każdym miejscu skryptu bez deklarowania. Analogicznie dane wysłane metodą GET trafiają do $_GET. Dlatego do odczytania pól formularza przesłanego przez POST używa się właśnie $_POST.

Pytanie 38

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;
B. SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id = Adresy.id;
C. SELECT nazwisko, Miasto FROM Osoby, Adresy WHERE Osoby.id = Adresy.id;
D. SELECT nazwisko, Miasto FROM Osoby.Adresy_id = Adresy.id FROM Osoby, Adresy;
Poprawne zapytanie korzysta z jawnego złączenia tabel: SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id = Adresy.id;. Kluczowe są tu dwie rzeczy: użycie słowa kluczowego JOIN oraz właściwy warunek ON, który łączy klucz obcy z kluczem głównym. W tabeli Osoby kolumna Adresy_id jest kluczem obcym (FK), który wskazuje na kolumnę id w tabeli Adresy. To dokładnie odzwierciedla relację jeden‑do‑wielu narysowaną na diagramie. Dzięki temu baza danych wie, które miasto przypisać do którego nazwiska. Takie podejście jest zgodne ze standardem SQL i dobrą praktyką w relacyjnych bazach danych. Jawne JOIN-y są czytelne, łatwe do modyfikacji (np. dodanie kolejnych tabel lub warunków filtrowania) i dobrze współpracują z optymalizatorem zapytań. W praktycznych projektach, np. w aplikacjach webowych, właśnie tak buduje się zapytania: łączymy tabelę użytkowników lub klientów z tabelą adresów, zamówień, faktur, logów itp. zawsze po kluczach głównych i obcych, a nie po przypadkowo dobranych kolumnach. Moim zdaniem warto od razu wyrabiać sobie nawyk pisania nazw tabel przy kolumnach, czyli Osoby.nazwisko, Adresy.Miasto – zmniejsza to ryzyko konfliktu nazw i poprawia czytelność kodu SQL. Gdyby w przyszłości w którejś tabeli pojawiła się druga kolumna o nazwie Miasto, zapytanie nadal byłoby jednoznaczne. W większych systemach, gdzie dochodzą dodatkowe warunki (WHERE, ORDER BY, GROUP BY), taka struktura zapytania z JOIN ON jest po prostu dużo łatwiejsza w utrzymaniu i debugowaniu. Warto też pamiętać, że relacja jeden‑do‑wielu oznacza, że jedna osoba może mieć wiele adresów albo jeden adres może być przypisany do wielu osób – dokładne powiązanie zależy od modelu, ale technika złączenia po kluczu obcym pozostaje taka sama.

Pytanie 39

Z bazy danych trzeba uzyskać zapytaniem SQL nazwiska pracowników, którzy sprawują funkcję kierownika, a ich wynagrodzenie mieści się w jednostronnie domkniętym przedziale (3000, 4000>. Która klauzula weryfikuje ten warunek?

A. WHERE kierownik = true AND pensja => 3000 AND pensja <= 4000
B. WHERE kierownik = true AND pensja => 3000 OR pensja < 4000
C. WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000
D. WHERE kierownik = true AND pensja > 3000 AND pensja <= 4000
Nieprawidłowe odpowiedzi bazują na mylnych założeniach dotyczących operatorów logicznych oraz porównawczych w SQL. Przykładowo, w przypadku użycia klauzuli 'WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000;' spełniony jest warunek dla każdej z trzech części, co prowadzi do zbyt szerokiego zakresu wyników. Operator OR zwraca wyniki, jeśli przynajmniej jeden z warunków jest prawdziwy, co w rezultacie może obejmować pracowników, którzy nie są kierownikami. Klauzula 'WHERE kierownik = true AND pensja => 3000 OR pensja < 4000;' również jest niepoprawna, gdyż składnia operatora => jest błędna (powinno być >=), a ponadto użycie OR sprawia, że wyniki mogą obejmować pracowników, którzy nie spełniają wymagań pensjowych. Kolejna nieadekwatna klauzula 'WHERE kierownik = true AND pensja => 3000 AND pensja < 4000;' również zawiera błąd w zapisie operatora porównania, co uniemożliwia poprawne wykonanie zapytania. Przyczyną tych błędów są często nieznajomość operatorów oraz niepoprawne rozumienie logiki zapytań SQL. W praktyce, zrozumienie różnicy pomiędzy AND a OR oraz prawidłowe stosowanie operatorów porównawczych jest kluczowe dla uzyskania oczekiwanych wyników w bazach danych. W kontekście profesjonalnego podejścia do SQL, ważne jest także, aby zapytania były nie tylko poprawne syntaktycznie, ale również semantycznie, co zapewnia ich efektywność i wiarygodność.

Pytanie 40

Wskaź poprawną formę kodowania polskich znaków w pliku HTML?

A. <meta charset="UTF-8">
B. <meta content='UTF8'>
C. <meta "content=UTF-8">
D. <meta char set= "UTF-8">
Odpowiedź <meta charset="UTF-8"> to strzał w dziesiątkę! To zgodny z nowoczesnymi standardami HTML sposób na określenie kodowania znaków w dokumencie. Dzięki temu, że używamy atrybutu 'charset' z wartością 'UTF-8', mówimy przeglądarkom, że tekst powinien być interpretowany według tego kodowania. UTF-8 jest super popularne, bo obsługuje wszystkie znaki w Unicode. To oznacza, że możemy pisać wszystkie polskie znaki diakrytyczne, czyli te jak ą, ć, ę, ł itd., bez obaw o błędy w wyświetlaniu. Jeśli wstawisz ten tag w sekcji <head> swojego dokumentu HTML, masz pewność, że strona będzie dobrze wyglądać w różnych przeglądarkach i na różnych urządzeniach. Dobrze jest umieszczać go na początku sekcji <head>, żeby uniknąć problemów z pokazywaniem treści. Co więcej, korzystanie z UTF-8 jest rekomendowane przez W3C, więc to naprawdę dobry wybór dla nowoczesnych aplikacji webowych.