Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 8 czerwca 2026 11:15
  • Data zakończenia: 8 czerwca 2026 11:34

Egzamin zdany!

Wynik: 23/40 punktów (57,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Do czego służy w JavaScript funkcja Math.pow()?

A. do obliczania potęgi liczby
B. do obliczania wartości przybliżonej liczby
C. do obliczania wartości bezwzględnej liczby
D. do obliczania pierwiastka kwadratowego
Funkcja Math.pow(podstawa, wykładnik) oblicza POTĘGĘ liczby, np. Math.pow(2, 3) daje 8. Dlatego Math.pow() służy do potęgowania.

Pytanie 2

Który program przekształca kod źródłowy napisany w danym języku programowania na język zrozumiały dla komputera?

A. debugger
B. kompilator
C. edytor kodu źródłowego
D. środowisko programistyczne (IDE)
Kompilator to program, który tłumaczy cały kod źródłowy napisany w języku programowania na kod maszynowy (lub pośredni) zrozumiały dla komputera, tworząc program wynikowy - np. plik wykonywalny. Robi to przed uruchomieniem, w całości, dzięki czemu gotowy program działa szybko. Tak budowane są aplikacje w językach C czy C++. Przeciwieństwem jest interpreter, który wykonuje kod na bieżąco bez tworzenia osobnego pliku. Dlatego program tłumaczący kod źródłowy na język komputera to kompilator.

Pytanie 3

Poniżej przedstawiono sposób obsługi:

<?php
if (!isset($_COOKIE[$nazwa]))
    echo "nie ustawiono!";
else
    echo "ustawiono, wartość: " . $_COOKIE[$nazwa];
?>
A. zmiennych tekstowych
B. baz danych
C. ciasteczek
D. sesji
Kod PHP przedstawiony w pytaniu ilustruje użycie mechanizmu ciasteczek w przeglądarce. Ciasteczka to małe pliki tekstowe, które serwer umieszcza na komputerze użytkownika, aby przechowywać informacje między sesjami HTTP. W tym przypadku kod sprawdza, czy zmienna o nazwie $nazwa jest ustawiona w tablicy superglobalnej $_COOKIE. Jeśli ciasteczko o danej nazwie nie zostało ustawione, skrypt zwraca komunikat 'nie ustawiono!'. Gdy ciasteczko istnieje, wyświetlana jest jego wartość. Ciasteczka są powszechnie stosowane do śledzenia sesji użytkowników, przechowywania preferencji czy zachowania stanu zalogowania. Ważnym aspektem jest zrozumienie, że ciasteczka działają po stronie klienta i mogą być modyfikowane przez użytkownika, dlatego powinny być używane z ostrożnością i w połączeniu z innymi mechanizmami zabezpieczeń. Warto pamiętać, że ciasteczka mają ograniczenia co do wielkości i liczby, które mogą być przechowywane przez przeglądarkę. Implementacja ciasteczek powinna być zgodna z regulacjami dotyczącymi prywatności, takimi jak RODO, które nakładają obowiązek informowania użytkowników o ich używaniu oraz uzyskiwania zgody.

Pytanie 4

W MSSQL Server rola dbcreator, która jest predefiniowana, umożliwia użytkownikowi

A. zarządzanie plikami na dysku
B. zarządzanie bezpieczeństwem systemu
C. tworzenie, modyfikowanie, usuwanie i odzyskiwanie bazy danych
D. wykonywanie każdej operacji na serwerze i posiadanie prawa własności każdej bazy
Zarządzanie plikami na dysku nie jest funkcjonalnością przypisaną roli dbcreator w SQL Server. Użytkownicy z tą rolą nie mają bezpośrednich uprawnień do zarządzania systemem plików na serwerze, co oznacza, że nie mogą modyfikować, przenosić ani usuwać plików bazy danych bez użycia odpowiednich zabezpieczeń. Rola dbcreator koncentruje się wyłącznie na operacjach związanych z bazami danych. Ponadto, zarządzanie bezpieczeństwem systemu również wykracza poza kompetencje roli dbcreator. Użytkownicy, którzy chcą zarządzać dostępem i bezpieczeństwem baz danych, powinni mieć przypisane role takie jak securityadmin, które pozwalają na kontrolowanie uprawnień i ról użytkowników. W kontekście prawa do wykonywania każdej operacji na serwerze i posiadania prawa własności każdej bazy danych, taka funkcjonalność przynależy do roli sysadmin, która ma pełne uprawnienia do wszystkich zasobów w SQL Server. Rola dbcreator jest ograniczona do operacji związanych z bazami danych, co czyni ją mniej potężną w porównaniu do sysadmin, ale bardziej bezpieczną w kontekście zarządzania uprawnieniami w środowisku produkcyjnym.

Pytanie 5

Co zazwyczaj wchodzi w skład frameworka?

A. obsługa błędów i domena
B. wbudowany serwer i obsługa formularzy
C. certyfikat HTTP oraz mechanizm przetwarzania akcji
D. zarządzanie komunikacją z bazą oraz mechanizm uruchamiania i przetwarzania akcji
Pozostałe odpowiedzi mieszają pojęcia spoza frameworka. „Domena” to adres internetowy, certyfikat HTTP/SSL zapewnia szyfrowanie - to elementy hostingu, a nie składowe frameworka. Wbudowany serwer bywa narzędziem deweloperskim, lecz nie definiuje frameworka. Jego trzon to zarządzanie komunikacją z bazą oraz mechanizm przetwarzania akcji.

Pytanie 6

Którego polecenia SQL użyć, aby utworzyć tabelę?

A.
ADD TABLE
B.
ALTER TABLE
C.
INSERT TABLE
D.
CREATE TABLE
Nową tabelę tworzy polecenie CREATE TABLE, po którym podaje się nazwę i definicje kolumn. Należy do języka definicji danych (DDL). Dlatego do utworzenia tabeli służy CREATE TABLE.

Pytanie 7

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia klienta z serwerem oraz umożliwia wymianę danych bez konieczności przeładowania całej strony WWW?

A. PHP
B. XML
C. AJAX
D. VBScript
Wybór odpowiedzi nieprawidłowych, takich jak PHP, XML czy VBScript, wskazuje na częste nieporozumienia dotyczące funkcji oraz zastosowania tych technologii w kontekście komunikacji klient-serwer. PHP to język skryptowy wykorzystywany głównie do generowania dynamicznej treści na serwerze. Chociaż PHP może być używane do obsługi żądań z AJAX, samo w sobie nie zapewnia asynchroniczności ani nie umożliwia komunikacji bez przeładowania strony. XML, mimo że jest formatem danych, nie jest techniką komunikacyjną. Może być wykorzystywane w AJAX jako format przesyłania danych, ale nie jest to jego główne zastosowanie. VBScript to język skryptowy, który jest przestarzały i nie jest odpowiedni do nowoczesnych aplikacji internetowych. Wybierając te odpowiedzi, można popaść w błąd, sądząc, że różne technologie mają podobne zastosowania, co prowadzi do nieporozumień dotyczących struktury aplikacji internetowych. Ważne jest zrozumienie roli, jaką różne technologie odgrywają w architekturze aplikacji, aby właściwie wykorzystywać ich możliwości w praktyce.

Pytanie 8

Którego słowa kluczowego użyć do deklaracji zmiennej w JavaScript?

A.
var
B.
new
C.
variable
D.
instanceof
Do deklaracji zmiennej w JavaScripcie służy słowo var (a w nowszym standardzie także let i const), np. var liczba = 5;. Dlatego zmienną deklaruje var.

Pytanie 9

Która grupa znaczników HTML służy do GRUPOWANIA elementów i budowy struktury dokumentu?

A. <br>, <img>, <hr>
B. <table>, <tr>, <td>
C. <span>, <strong>, <em>
D. <div>, <article>, <header>
Do grupowania elementów i budowy struktury dokumentu służą znaczniki blokowe i semantyczne: <div> (uniwersalny kontener) oraz <article> i <header> (sekcje HTML5). Wyznaczają one układ strony. Dlatego strukturę buduje grupa <div>, <article>, <header>.

Pytanie 10

Której właściwości CSS należy użyć, aby ustawić marginesy wewnętrzne elementu?

A.
hight
B.
width
C.
margin
D.
padding
Marginesy WEWNĘTRZNE - odstęp między treścią elementu a jego obramowaniem - ustawia w CSS padding, np. padding: 10px; daje 10 px wolnego miejsca dookoła treści wewnątrz ramki. To część modelu pudełkowego (box model). Zapamiętaj różnicę: padding jest WEWNĄTRZ ramki, a margin na ZEWNĄTRZ.

Pytanie 11

Wskaż poprawne stwierdzenie dotyczące przedstawionego kodu HTML.
<video width="640" height="480" controls>
<source src="animacja.mp4" type="video/mp4">
</video>

A. Plik animacja.mp4 powinien mieć rozdzielczość 640x480 pikseli, aby był odtwarzany.
B. Użytkownik nie będzie miał możliwości kontrolowania odtwarzania wideo.
C. Kod może nie działać w przeglądarkach, które nie obsługują HTML5.
D. Lokalizacja pliku jest nieprawidłowa, brak w niej ścieżki bezwzględnej.
Pierwsze stwierdzenie sugeruje, że plik animacja.mp4 musi mieć dokładnie rozdzielczość 640x480 pikseli, co jest nieprawdziwe. Format &lt;video&gt; w HTML umożliwia odtwarzanie filmów w różnych rozdzielczościach, a przeglądarka automatycznie dostosuje odtwarzanie w zależności od dostępnych zasobów i jakości pliku wideo. Drugie stwierdzenie, że użytkownik nie będzie miał możliwości sterowania odtwarzaniem, jest sprzeczne z definicją atrybutu 'controls', który dodaje elementy sterujące do odtwarzacza, takie jak play, pause i seek. Trzecie stwierdzenie odnosi się do lokalizacji pliku, podczas gdy w rzeczywistości plik animacja.mp4 może być lokalizowany w różnych folderach, a nie tylko w ścisłej ścieżce bezwzględnej. HTML5 wprowadza wiele standardów i uproszczeń, a deweloperzy są zobowiązani do przestrzegania tych standardów, aby zapewnić, że ich treści będą dostępne na różnych platformach. Typowe błędy myślowe prowadzące do takich wniosków obejmują nieznajomość zasad działania znaczników HTML oraz niepełne zrozumienie mechanizmów, jakie przeglądarki stosują w kontekście odtwarzania multimediów.

Pytanie 12

Logo platformy CMS noszącej nazwę Joomla! to

Ilustracja do pytania
A. A
B. B
C. C
D. D
Logo Joomla! jest charakterystyczne z uwagi na swoją kolorystykę i kształt symbolizujący współpracę oraz integrację. Zawiera cztery kolorowe elementy splecione w formie kwiatka lub wiru co często jest interpretowane jako symbol integracji społeczności i otwartości na różnorodność. Joomla! to system zarządzania treścią (CMS) napisany w PHP który wykorzystywany jest do tworzenia stron internetowych blogów i aplikacji internetowych. Jest jednym z najpopularniejszych CMS na świecie dzięki swojej elastyczności modułom oraz dużej społeczności wspierającej rozwój. Joomla! jest wykorzystywany zarówno przez małe przedsiębiorstwa jak i duże organizacje dzięki swojej możliwości skalowania i dostosowywania do indywidualnych potrzeb. Dodatkowo jego open-source'owy charakter pozwala na szerokie dostosowanie kodu do specyficznych wymagań co jest cenione przez programistów i deweloperów. Dobry wybór Joomla! jako CMS może znacząco przyspieszyć proces tworzenia i zarządzania treścią na stronie internetowej oferując jednocześnie wsparcie licznych rozszerzeń i szablonów

Pytanie 13

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ź C
D. Odpowiedź D
Rozumienie działania atrybutów rowspan i colspan jest kluczowe dla prawidłowego tworzenia struktur tabelarycznych w HTML. Błędne odpowiedzi wynikają często z nieporozumienia dotyczącego sposobu, w jaki te atrybuty kształtują układ tabeli. Rowspan, jak sama nazwa wskazuje, łączy komórki w pionie, czyli wzdłuż kolumny, co może być źródłem zamieszania dla osób przyzwyczajonych do myślenia bardziej w kategoriach kolumn niż wierszy. Przy błędnym przypisaniu rowspan można oczekiwać komórek rozciągających się w poziomie, co jest funkcją colspan. Typowym błędem jest także założenie, że rowspan i colspan są zamienne, podczas gdy w rzeczywistości służą do różnych celów i mają różne zastosowania. Ważne jest, aby rozumieć, że rowspan zwiększa wysokość komórki poprzez zajęcie miejsca w kolejnych wierszach, co jest istotne przy projektowaniu układów tabel, które muszą być zarówno funkcjonalne, jak i estetycznie poprawne. Prawidłowe użycie rowspan i colspan zgodnie z zasadami semantyki HTML zwiększa dostępność i użyteczność stron, co jest zgodne z najlepszymi praktykami w branży.

Pytanie 14

Aby zmienić wartość atrybutu elementu opisanego w CSS przy użyciu skryptu JavaScript, należy zastosować następujący zapis

A. document.getElementById(id).innerHTML = <nowa wartość>
B. document.getElementById(id).<nazwa właściwości> = <nowa wartość>
C. document.getElementById(id).style.<nazwa właściwości> = <nowa wartość>
D. document.getElementById(id).<nazwa-atrybutu> = <nowa wartość>
Odpowiedź "document.getElementById(id).style.<nazwa właściwości> = <nowa wartość>;" jest poprawna, ponieważ umożliwia bezpośrednią modyfikację stylu CSS elementu HTML o określonym identyfikatorze. Przy użyciu metody getElementById() uzyskujemy dostęp do konkretnego elementu w DOM (Document Object Model), a następnie poprzez właściwość style, możemy zmieniać różne atrybuty CSS. Na przykład, aby zmienić kolor tła elementu, możemy napisać: document.getElementById('myElement').style.backgroundColor = 'red';. Wartością, którą przypisujemy, jest odpowiednia właściwość CSS, co czyni ten sposób zgodnym z dobrymi praktykami w programowaniu JavaScript. Dodatkowo, korzystając z tej metody, możemy dynamicznie dostosowywać styl elementów na stronie w odpowiedzi na interakcje użytkownika, co jest kluczowe w nowoczesnych aplikacjach webowych. Warto też zauważyć, że zmiany dokonane w ten sposób są natychmiast widoczne na stronie, co przyczynia się do lepszego doświadczenia użytkownika.

Pytanie 15

W pliku CSS znajdują się poniższe style. Kiedy klikniemy na hiperłącze i wrócimy na stronę, jego kolor zmieni się na

a { color: Brown; }
a:link { color: Green; }
a:visited { color: Red; }
a:hover { color: Yellow; }
A. zielony
B. żółty
C. brązowy
D. czerwony
W zrozumieniu działania stylów CSS dla hiperłączy kluczowe jest poznanie zastosowania pseudoklas takich jak a:link a:visited i a:hover. Każda z tych pseudoklas odpowiada za inny stan linku. Pseudoklasa a:link stosuje się do linków które użytkownik jeszcze nie odwiedził dlatego kolor zielony przypisany do tej pseudoklasy oznaczałby nieodwiedzony link co w tym przypadku jest nieprawidłowe. Pseudoklasa a:hover zmienia kolor podczas najechania myszką i tutaj ustalono kolor żółty który jest tylko tymczasowy. Błędne byłoby uznawanie że kolor żółty pozostanie po odwiedzeniu linku ponieważ dotyczy on jedynie stanu przejściowego. Pseudoklasa a:visited która definiuje kolor po odwiedzeniu jest tu kluczowa ponieważ określa właśnie kolor po powrocie na stronę. Zastosowanie odpowiednich stylów pomaga w nawigacji i poprawia dostępność. Typowe błędy związane z rozumieniem pseudoklas wynikają z braku znajomości ich specyfiki działania oraz priorytetu jaki mają w kaskadowym modelu stylów. Dlatego zrozumienie i prawidłowe stosowanie tych zasad jest fundamentalne w projektowaniu intuicyjnych i przyjaznych dla użytkownika stron internetowych co jest zgodne z najlepszymi praktykami branżowymi i standardami WCAG.

Pytanie 16

W zaprezentowanym fragmencie dokumentu HTML ustalono stylowanie CSS dla selektora klasy "menu", aby kolor tła tego elementu był zielony. Które z poniższych określeń stylu CSS odpowiada temu stylowaniu?

<div class="menu"></div>
A. div.menu { background-color: green; }
B. #menu { background-color: rgb(0,255,0); }
C. menu { background-color: rgb(0,255,0); }
D. div:menu { color: green; }
Odpowiedź div.menu { background-color: green; } jest prawidłowa, ponieważ odnosi się do selektora klasy w języku CSS. W HTML, atrybut class jest używany do przypisywania elementom jednej lub wielu klas, które mogą być następnie stylizowane w CSS. Selektor klasy jest definiowany przez poprzedzenie nazwy klasy kropką, co pozwala na stylizację wszystkich elementów używających tej klasy. W przypadku selektora div.menu, stylizacja dotyczy wszystkich elementów div z klasą menu. Użycie właściwości background-color z wartością green ustawia zielone tło dla zdefiniowanego elementu. Taki sposób definiowania stylów jest zgodny z dobrymi praktykami, które zalecają użycie klas do stylizacji wielokrotnego użytku w celu zwiększenia elastyczności i czytelności kodu. Ponadto używanie nazw klas i odpowiednich selektorów pozwala na łatwe zarządzanie stylistyką większych projektów, co jest kluczowe w rozwoju współczesnych stron internetowych. Warto zauważyć, że stosowanie klas zamiast identyfikatorów jest bardziej elastyczne, ponieważ jedna klasa może być przypisana do wielu elementów, podczas gdy identyfikator musi być unikalny w całym dokumencie.

Pytanie 17

W formularzu, wartości z pola input o typie number zostały przypisane do zmiennej a, a następnie przetworzone w skrypcie JavaScript w pokazany sposób. Jaki typ będzie miała zmienna x?

var x = parseInt(a);
A. zmiennoprzecinkowy
B. NaN
C. liczbowy, całkowity
D. napisowy
Rzeczywiście, rozumienie tego, jak działa parseInt(), to klucz do ogarnięcia problemów związanych z danymi liczbowymi w JavaScript. Często można spotkać błąd polegający na myśleniu, że parseInt() zwraca liczby zmiennoprzecinkowe, co jest totalnie nieprawidłowe, bo zawsze dostajesz liczbę całkowitą, obcinając część dziesiętną. Inny typowy błąd to oczekiwanie, że dostaniemy NaN, kiedy dane wejściowe to liczby. NaN pojawia się tylko wtedy, gdy string nie zaczyna się od cyfry, a parseInt() nie może nic wyciągnąć. Ważne jest też to, że ta funkcja daje ci liczbę całkowitą, a nie tekst. W praktyce, jeśli nie rozumiesz dobrze konwersji typów, możesz narobić błędów w aplikacjach, co jest istotne, zwłaszcza gdy dokładność danych ma duże znaczenie. Programiści powinni mieć to na uwadze, żeby dobrze zarządzać danymi i unikać zaskakujących rezultatów, co jest zgodne z tym, co mówią najlepsze praktyki w pisaniu kodu. Warto także pamiętać o dodaniu podstawy liczbowej jako drugiego argumentu dla parseInt(), żeby uniknąć pomyłek przy interpretacji danych liczbowych w różnych systemach liczbowych, jak na przykład ósemkowy czy szesnastkowy. To naprawdę wpływa na poprawność działania aplikacji w praktyce.

Pytanie 18

Mamy do czynienia z tablicą o nazwie tab, która zawiera liczby całkowite różniące się od zera. Zawarty w języku PHP kod ma na celu:

foreach ($tab as &$liczba)
    $liczba = $liczba * (-1);
unset($liczba);
A. wyliczenie iloczynu wszystkich wartości w tablicy
B. zmienić wszystkie elementy tablicy na liczby o przeciwnym znaku
C. przekształcić elementy tablicy na wartości zapisane w zmiennej liczba
D. obliczyć wartość bezwzględną elementów tej tablicy
Analizując przedstawione odpowiedzi, ważne jest zrozumienie, dlaczego pozostałe opcje są nieprawidłowe w kontekście podanego kodu PHP. Pierwsza z nich sugeruje, że kod oblicza iloczyn wszystkich liczb w tablicy. Jednakże, kod ten nie prowadzi do żadnej operacji akumulacji wartości, nie jest stosowana zmienna do przechowywania wyniku, a operacja wykonywana w pętli to jedynie zmiana znaku każdej liczby. Druga odpowiedź, mimo że błędna jako wybór, w rzeczywistości jest poprawną odpowiedzią zgodnie z pytaniem egzaminacyjnym. Trzecia sugeruje, że elementy tablicy zostaną zastąpione wartością przechowywaną w zmiennej liczba. Kod, który by tego dokonywał, musiałby inicjalizować zmienną z konkretną wartością i przypisywać ją każdemu elementowi tablicy, co nie jest realizowane przez przedstawiony fragment kodu. Czwarta odpowiedź mówi o obliczaniu wartości bezwzględnej elementów tablicy. Aby to osiągnąć, w PHP należałoby użyć funkcji abs(), której tutaj nie zastosowano. Typowym błędem prowadzącym do takich niepoprawnych wniosków jest nieprawidłowe zrozumienie działania operatorów i funkcji w kontekście języka PHP. Kluczowe jest, aby rozumieć, że kod bezpośrednio modyfikuje wartości w tablicy przez mnożenie przez -1, a nie wykonuje żadnych innych operacji matematycznych czy przypisania wartości.

Pytanie 19

Na przedstawionej tabeli samochodów wykonano zapytanie SQL:

SELECT model FROM samochody
WHERE rocznik=2016;

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

Pytanie 20

.format1 {
    …
}
W CSS określono wspólne style dla pewnej grupy elementów. Użycie takich stylów w kodzie HTML odbywa się za pomocą atrybutu:
A. div = "format1"
B. style = "format1"
C. id = "format1"
D. class = "format1"
Użycie atrybutu class w języku HTML do formatowania grupy znaczników jest zgodne z najlepszymi praktykami web developmentu. Atrybut class pozwala na zastosowanie tej samej definicji stylu CSS do wielu elementów, co jest efektywne i utrzymuje porządek w kodzie. Umożliwia to również łatwą zmianę wyglądu strony poprzez modyfikację tylko jednej definicji CSS zamiast ręcznego edytowania stylów każdego z elementów z osobna. Dzięki takiemu podejściu, programista może szybko aktualizować wygląd całej strony lub jej części bez ryzyka, że pominięte zostaną pojedyncze elementy. Ponadto użycie klas jest zgodne ze standardami W3C, co zapewnia kompatybilność i poprawne renderowanie w różnych przeglądarkach. Praktycznym przykładem zastosowania jest stronie, gdzie wszystkie elementy z klasą .format1 będą miały jednolity wygląd, na przykład wszystkie przyciski na stronie mogą mieć jednakowy kolor i styl. Pozwala to na tworzenie spójnych interakcji użytkownika i ułatwia przyszłą rozbudowę strony o dodatkowe funkcje.

Pytanie 21

Jak nazywa się metoda dodawania arkusza stylów do dokumentu HTML zastosowana w poniższym kodzie?

<p style="color: red;">tekst paragrafu</p>
A. Styl alternatywny, zewnętrzny
B. Styl wewnętrzny
C. Styl zewnętrzny
D. Styl wpisany, lokalny
Styl wpisany, lokalny, to metoda definiowania stylów bezpośrednio w elemencie HTML, co jest dokładnie tym, co widzimy w przedstawionym kodzie. W tym przypadku atrybut "style" jest użyty, aby ustawić kolor tekstu na czerwony dla konkretnego paragrafu. Ta metoda jest przydatna, gdy potrzebujemy szybko wprowadzić zmiany w stylu pojedynczego elementu bez konieczności edytowania zewnętrznych arkuszy stylów. Z perspektywy standardów webowych, lokalne style mogą wprowadzać poważne problemy z utrzymaniem kodu, gdy stosowane w nadmiarze, ponieważ kody CSS mogą stać się trudne do zarządzania, a konsystencja stylów może być zagrożona. Z tego powodu, dla bardziej rozbudowanych projektów, rekomenduje się korzystanie z arkuszy stylów zewnętrznych lub wewnętrznych, które zapewniają lepszą organizację kodu oraz ułatwiają zarządzanie stylami na większą skalę. Dobrą praktyką jest również korzystanie z klas CSS, co pozwala na ponowne wykorzystanie stylów w różnych częściach dokumentu, eliminując duplikacje.

Pytanie 22

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;
C. <br>ALTER TABLE samochody<br> ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
D. <br>ALTER TABLE samochody<br> ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
Wszystkie błędne odpowiedzi opierają się na nieprawidłowym przypisaniu kluczy obcych lub niewłaściwych odniesieniach między tabelami. Przykładowo, pierwsza z odpowiedzi próbuje dodać klucz obcy do tabeli lakier, co jest niezgodne z zasadami relacyjnych baz danych, gdzie klucze obce powinny być definiowane w tabeli, która zawiera pole odnoszące się do innej tabeli. Klucz obcy powinien zawsze znajdować się w tabeli, która zawiera dane odnoszące się do innej tabeli, a nie w tabeli, z której te dane pochodzą. Druga odpowiedź sugeruje, że można dodać klucz obcy do kolumny kolor bez wskazania tabeli docelowej oraz właściwego klucza, co czyni tę odpowiedź niekompletną i błędną. Odpowiedź trzecia z kolei próbuje powiązać kolumnę barwa z tabelą samochody, co nie ma sensu w kontekście relacji; klucz obcy w tabeli samochody powinien odnosić się do klucza głównego w tabeli lakier, a nie do innej kolumny w tej samej tabeli. Typowym błędem jest także nieznajomość zasad normalizacji baz danych, co prowadzi do błędnych wniosków na temat relacji między tabelami. Zrozumienie tych zasad jest kluczowe dla właściwego projektowania struktury bazy danych oraz zapewnienia jej efektywności i integralności.

Pytanie 23

O zmiennej predefiniowanej

$_POST 
w języku PHP można stwierdzić, że
A. jest odwzorowaniem tablicy $_COOKIE
B. jest rozwiniętą wersją tablicy $_SESSION
C. zawiera dane przesłane do skryptu za pośrednictwem formularza
D. zawiera dane bezpośrednio dostarczone do skryptu z ciasteczka
Odpowiedź, że zmienna predefiniowana $_POST zawiera dane przesłane do skryptu z formularza, jest w pełni poprawna. W języku PHP, $_POST to jedna z superglobalnych tablic, która umożliwia dostęp do danych przesyłanych metodą POST. Metoda ta jest powszechnie stosowana w formularzach HTML, gdzie użytkownik może wprowadzać dane, które następnie są wysyłane do serwera. Na przykład, formularz kontaktowy, w którym użytkownik wprowadza swoje imię i adres e-mail, może być przetwarzany za pomocą $_POST, co pozwala na łatwą i bezpieczną obsługę danych. Dobrą praktyką jest również walidacja danych przed ich użyciem, aby zminimalizować ryzyko ataków, takich jak SQL Injection czy XSS. Dzięki zastosowaniu $_POST, programiści mogą przechwytywać i przetwarzać dane użytkowników w bardziej zaawansowany sposób, co pozwala na dynamiczne generowanie treści i interakcję z użytkownikami.

Pytanie 24

Na podstawie fragmentu dokumentu HTML, określ co należy wpisać w miejsce kropek w odnośniku w menu, aby przenosił on do rozdziału 2.

Fragment menu
<a ...>Rozdział 2</a>

Fragment dalej w dokumencie
<h1 id="r2" name="sekcja2" class="rozdzial2">Rozdział 2<h1>
A. href = "r2"
B. href = "#r2"
C. href = "sekcja2"
D. href = "#sekcja2"
Niestety, Twoja odpowiedź nie jest prawidłowa. Prawidłowa odpowiedź 'href="#r2"' odwołuje się do identyfikatora (id) 'r2' na tej samej stronie. W HTML, atrybut 'href' w tagu 'a' służy do określenia miejsca docelowego odnośnika. Przed identyfikatorem umieszcza się znak '#', który informuje przeglądarkę, że ma poszukać elementu z danym 'id' na tej samej stronie. Błędy w niepoprawnych odpowiedziach wynikają z pominięcia znaku '#' lub zastosowania nieprawidłowego identyfikatora. Pamiętaj, że identyfikator powinien być unikalny dla każdego elementu na stronie i powinien być używany w odnośniku dokładnie w takiej samej formie. W przypadku 'href="r2"' i 'href="sekcja2"', pominięto znak '#', co sprawia, że przeglądarka będzie szukać zasobu o podanej ścieżce, a nie identyfikatora na tej samej stronie. 'href="#sekcja2"' zawiera niepoprawny identyfikator, który nie istnieje na stronie. Kluczowe jest zrozumienie, jak działają identyfikatory i jaki mają wpływ na nawigację na stronie.

Pytanie 25

W języku działającym po stronie serwera tworzysz ankietę, której wynik ma być zapamiętany w postaci małego pliku po stronie użytkownika. Jaki mechanizm wykorzystasz?

A. tablicę globalną $_FILES
B. sesję
C. bazę danych SQL
D. ciasteczka (cookies)
Ciasteczko (cookie) to niewielki plik zapisywany przez serwer w przeglądarce użytkownika i odsyłany przy kolejnych żądaniach. Idealnie nadaje się do zapamiętania drobnej informacji po stronie klienta, np. że ktoś wziął już udział w ankiecie. W PHP ustawia się je funkcją setcookie(). Dlatego dane zapisywane w małym pliku u użytkownika to ciasteczka.

Pytanie 26

Jak w PHP usunąć ciasteczko o nazwie ciastko?

A.
deletecookie("ciastko");
B.
setcookie("ciastko", "", time()-3600);
C.
setcookie("$ciastko", "", 0);
D.
unsetcookie("$ciastko");
Pozostałe zapisy są błędne. Funkcje deletecookie() i unsetcookie() w PHP nie istnieją. setcookie("$ciastko", "", 0) myli nazwę (z niepotrzebnym $) i nie wskazuje minionej daty wygaśnięcia. Ciasteczko kasuje setcookie("ciastko", "", time()-3600);.

Pytanie 27

W języku HTML zapisano formularz. Który z efektów działania poniższego kodu zostanie wyświetlony przez przeglądarkę, zakładając, że w pierwsze pole użytkownik wpisał wartość "Przykładowy tekst"?

<form>
    <textarea rows="3" cols="30"></textarea><br>
    <input type="checkbox"> Opcja1<br>
    <input type="checkbox"> Opcja2
</form>
Ilustracja do pytania
A. Efekt 4.
B. Efekt 1.
C. Efekt 3.
D. Efekt 2.
Twoja odpowiedź jest poprawna. Wybrałeś odpowiedź 'Efekt 2', która jest zgodna z zachowaniem formularza HTML w opisanym scenariuszu. Formularz zawiera pole tekstowe i dwa pola typu checkbox. Kiedy wpiszesz do pola tekstowego wartość 'Przykładowy tekst' i wyświetlisz formularz w przeglądarce, zobaczysz ten tekst w polu tekstowym oraz dwa pola wyboru typu checkbox poniżej z etykietami 'Opcja1' i 'Opcja2'. To dokładnie taki układ, co pokazuje Efekt 2. Tworzenie formularzy HTML to ważna umiejętność w projektowaniu stron internetowych. Pozwalają one na interakcję z użytkownikiem oraz zbieranie od niego informacji. Pamiętaj, że dobry formularz powinien być intuicyjny w użyciu i jasno prezentować swoje funkcje użytkownikowi.

Pytanie 28

Atrybut wskazujący na lokalizację pliku graficznego w znaczniku <img> to

A. href
B. alt
C. src
D. link
Atrybut 'src' (source) jest kluczowym elementem znacznika <img>, ponieważ wskazuje lokalizację pliku graficznego, który ma być wyświetlony na stronie internetowej. Użycie tego atrybutu jest niezbędne, aby przeglądarka mogła zlokalizować i załadować odpowiedni obraz. Na przykład, jeśli chcesz wyświetlić grafikę logo na stronie, możesz użyć znacznika <img src='logo.png'>, gdzie 'logo.png' jest ścieżką do pliku graficznego. Ważne jest, aby pamiętać o dokładnym podaniu ścieżki, która może być względna lub absolutna. Zgodnie z najlepszymi praktykami, ważne jest również użycie atrybutu 'alt', który opisuje obraz dla osób z problemami wzrokowymi oraz w przypadku, gdy obraz nie może być załadowany. Przestrzeganie standardów W3C w zakresie HTML zapewnia lepszą dostępność i użyteczność stron internetowych.

Pytanie 29

Jaką szerokość zaplanowano dla treści strony, bazując na podanej definicji CSS?

body {
  border: 2px;
  height: 600px;
  width: 560px;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
A. 2 px
B. 560 px
C. 600 px
D. 640 px
Gratulacje, udzieliłeś poprawnej odpowiedzi. W definicji CSS dla elementu body, szerokość ustawiono na 560 px. Właściwość box-sizing: border-box, gwarantuje, że szerokość ta obejmuje również obramowanie. Dlatego, w praktyce, szerokość strony pozostawiona na treść wynosi 560 px. Wartości te są bardzo ważne przy projektowaniu stron internetowych, szczególnie przy tworzeniu responsywnych layoutów, gdzie musimy precyzyjnie kontrolować szerokość i rozmieszczenie elementów. Pamiętaj, że wykorzystanie odpowiednich jednostek i precyzyjne definiowanie wymiarów jest kluczowe dla zachowania poprawnej struktury strony. Dobrym nawykiem jest również stosowanie właściwości box-sizing: border-box, która ułatwia kontrolę nad rozmiarem elementów, zwłaszcza przy komplikowanych układach strony.

Pytanie 30

Jakie zapytanie SQL należy użyć, aby zmienić strukturę już istniejącej tabeli?

A. UPDATE
B. INSERT INTO
C. ALTER TABLE
D. CREATE TABLE
Odpowiedź 'ALTER TABLE' jest poprawna, ponieważ to polecenie SQL służy do modyfikacji struktury istniejącej tabeli w bazie danych. Dzięki 'ALTER TABLE' możemy dodawać nowe kolumny, modyfikować istniejące kolumny (np. zmieniając ich typ danych czy nazwę), a także usuwać kolumny, które nie są już potrzebne. Przykładowe zastosowanie polecenia to dodanie nowej kolumny do tabeli pracowników: 'ALTER TABLE pracownicy ADD COLUMN wiek INT;'. Ponadto, 'ALTER TABLE' pozwala na wprowadzanie ograniczeń, takich jak klucze obce czy unikalności, co jest kluczowe w kontekście integracji danych i zapewnienia ich spójności. W praktyce, odpowiednie zarządzanie strukturą tabel jest fundamentalnym aspektem utrzymania bazy danych w dobrej kondycji. Należy pamiętać, aby stosować te zmiany zgodnie z najlepszymi praktykami, takimi jak testowanie zapytań w środowisku deweloperskim przed ich wdrożeniem w produkcji, co minimalizuje ryzyko błędów i strat danych.

Pytanie 31

Która z wymienionych grup znaczników HTML zawiera elementy przeznaczone do grupowania oraz tworzenia struktury dokumentu?

A. br, img, hr
B. table, tr, td
C. span, strong, em
D. div, article, header
Odpowiedź 'div, article, header' jest poprawna, ponieważ te znaczniki HTML są kluczowymi elementami umożliwiającymi grupowanie i organizację treści w dokumentach webowych. Znacznik 'div' jest uniwersalnym kontenerem, który można wykorzystać do grupowania innych elementów w celu lepszej strukturyzacji strony. 'article' jest przeznaczony do oznaczania niezależnych fragmentów treści, takich jak posty na blogach, które mogą być samodzielnie dystrybuowane. Z kolei 'header' zazwyczaj zawiera nagłówki i elementy wprowadzające dla sekcji strony. Zastosowanie tych znaczników zgodnie z wytycznymi W3C sprzyja poprawnej hierarchii dokumentu, co z kolei zwiększa użyteczność strony oraz jej dostępność dla technologii asystujących. Przykładowo, użycie 'article' pozwala wyszukiwarkom i czytnikom ekranu lepiej zrozumieć strukturę treści, co może pozytywnie wpłynąć na SEO oraz doświadczenia użytkowników.

Pytanie 32

Do której właściwości można przypisać wartości: static, relative, fixed, absolute oraz sticky?

A. display
B. position
C. list-style-type
D. text-transform
Wybór czegoś innego niż 'position' pokazuje, że mogło dojść do małego miszmaszu z rozumieniem CSS. Na przykład, 'display' decyduje, jak elementy się wyświetlają – czy są blokowe, czy liniowe – ale nie ma nic wspólnego z ich pozycjonowaniem. 'display: block' sprawia, że element zajmuje całą szerokość, a 'display: inline' pozwala na mniejszy wpływ na inne elementy, co może wprowadzić w błąd, jeśli chodzi o pozycjonowanie. 'list-style-type' to kwestia stylizacji list, więc to też nie ma związku z układem elementów na stronie. Tak samo, 'text-transform' zmienia wygląd tekstu, na przykład na wielkie litery, ale nie wpływa na to, gdzie elementy są umieszczone. Wydaje mi się, że warto by było jeszcze raz przestudiować, jak działa pozycjonowanie w CSS. Fajnie by było też zajrzeć do dokumentacji i zobaczyć konkretne przykłady, żeby lepiej to zrozumieć.

Pytanie 33

Podana linia kodu została napisana w języku?

document.getElementById("paragraf1").innerHTML = wynik;
A. C#
B. PHP
C. Python
D. JavaScript
Odpowiedź JavaScript jest prawidłowa, ponieważ linia kodu, którą przedstawiono, wykorzystuje standardową metodę DOM (Document Object Model) do dynamicznej manipulacji zawartością HTML. W kodzie 'document.getElementById("paragraf1").innerHTML = wynik;' funkcja 'getElementById' służy do odnajdywania elementu HTML o identyfikatorze 'paragraf1'. Następnie, przypisanie wartości zmiennej 'wynik' do 'innerHTML' tego elementu zmienia jego zawartość tekstową. JavaScript jest głównym językiem do tworzenia interaktywnych stron internetowych i umożliwia programistom tworzenie dynamicznych funkcjonalności. Przykład praktycznego użycia to sytuacja, gdy na stronie internetowej chcemy wyświetlić obliczone wyniki w czasie rzeczywistym, np. w aplikacjach kalkulatorów online. W kontekście standardów branżowych, używanie DOM do manipulacji elementami HTML w JavaScript jest uważane za dobrą praktykę, a jego znajomość jest niezbędna dla każdego web developera.

Pytanie 34

Podczas weryfikacji pliku HTML5 pojawił się komunikat brzmiący: "Error: Element head is missing a required instance of child element title". Co to oznacza w kontekście dokumentu?

A. element <title> nie jest konieczny.
B. element <title> nie został prawidłowo zamknięty przez </title>.
C. nie zdefiniowano elementu <title> w sekcji <head> dokumentu.
D. nie zdefiniowano obowiązkowego atrybutu title w tagu <img>.
Wybierając odpowiedzi, które wskazują na inne problemy z elementem <title>, możesz się trochę pogubić jeśli chodzi o podstawowe zasady HTML5. Pamiętaj, że ten element jest obowiązkowy, a jak go brakuje w sekcji <head>, to pojawia się błąd, który pokazuje, że nie wszystko się zgadza z zasadami HTML. Myślenie, że <title> nie jest wymagany, to duży błąd, bo każda strona powinna mieć ten element, żeby działała poprawnie w przeglądarkach i wyszukiwarkach. Też stwierdzenie, że <title> nie jest zamknięty przez </title>, może sugerować, że myślisz, że ten element mógłby być opcjonalny, co jest nieprawdziwe. Jeśli masz <title>, to musi być on poprawnie zdefiniowany i zamknięty. A pomijanie atrybutu title w znaczniku <img> może być mylące, bo ten atrybut dotyczy opisu obrazków, a to wcale nie jest związane z tytułem dokumentu. Pamiętaj, że brak atrybutu alt w <img> może powodować problemy z dostępnością, ale nie wpływa na walidację sekcji <head>. Ważne jest, żeby zrozumieć kontekst i rolę każdego elementu HTML w budowie strony.

Pytanie 35

Tabela programy zawiera kolumny: nazwa_programu, nazwa_producenta, rok_wydania. Jak należy zapisać kwerendę SELECT, aby uzyskać wszystkie unikalne nazwy producentów?

A. SELECT UNIQUE nazwa_producenta FROM programy
B. SELECT DISTINCT nazwa_producenta FROM programy
C. SELECT nazwa_producenta FROM programy WHERE UNIQUE
D. SELECT nazwa_producenta FROM programy WHERE nazwa_producenta NOT DUPLICATE
Odpowiedzi, które wykorzystują terminologię niezgodną ze standardami SQL, prowadzą do błędnych wniosków. W przypadku użycia słowa kluczowego UNIQUE, które nie jest używane w kontekście kwerendy SELECT, użytkownicy mogą błędnie sądzić, że powiązanie z tym terminem umożliwia pozyskanie unikalnych wartości. W rzeczywistości UNIQUE jest używane w kontekście ograniczeń (constraints) w definiowaniu tabeli, a nie w zapytaniach. To podejście może prowadzić do zrozumienia, że istnieje sposób na wykorzystanie tego słowa kluczowego w zapytaniach, co jest mylące. Z kolei propozycje, które odwołują się do frazy WHERE z dodatkowymi warunkami, jak UNIQUE czy NOT DUPLICATE, są również niepoprawne, ponieważ nie są to poprawne składniowo konstrukcje w SQL. Klauzula WHERE służy do filtrowania wyników na podstawie określonych warunków, ale nie ma możliwości zastosowania przy niej unikalnych filtrów w taki sposób. Tego rodzaju nieporozumienia mogą prowadzić do niepoprawnych wyników i frustracji w pracy z bazami danych, dlatego niezwykle ważne jest, aby dokładnie zapoznawać się z dokumentacją i standardami języka SQL, aby unikać takich pułapek. Właściwe zrozumienie terminologii i składni jest kluczowe w efektywnym zarządzaniu danymi.

Pytanie 36

Obraz o rozdzielczości 72 PPI oznacza, że ma 72 piksele na:

A. cal
B. milimetr
C. centymetr
D. megabajt
Skrót PPI to „pixels per inch”, czyli piksele na CAL - więc 72 PPI oznacza 72 piksele przypadające na jeden cal długości obrazu. To miara gęstości obrazu rastrowego. Zapamiętaj: „inch” = cal, więc PPI zawsze odnosi się do cala, nie do centymetra czy milimetra.

Pytanie 37

Na ilustracji przedstawiono ustawienia programu służącego do montażu filmów. Nowy projekt ma ustawienia

Ilustracja do pytania
A. 25 klatek na cały film.
B. 48 minut czasu trwania filmu.
C. 25 klatek na każdą sekundę filmu.
D. wysokość 1920 px i szerokość 1080 px.
Prawidłowa odpowiedź wynika bezpośrednio z oznaczenia „25 fps” w ustawieniach projektu. Skrót fps oznacza „frames per second”, czyli liczbę klatek na sekundę. Jeśli projekt ma 25 fps, to znaczy, że każda sekunda gotowego filmu będzie złożona z 25 kolejnych klatek wideo. To jest właśnie standardowa liczba klatek na sekundę stosowana w Europie (standard telewizyjny oparty na PAL), bardzo często używana w programach do montażu i w kamerach.
W praktyce wygląda to tak: jeżeli nagrasz materiał w 25 fps i zmontujesz projekt również w 25 fps, to ruch będzie wyglądał naturalnie, a odtwarzanie będzie płynne i zgodne z typowymi ustawieniami telewizorów i wielu platform VOD. Gdybyś ustawił np. 10 fps, obraz byłby wyraźnie „szarpiący”, a przy 60 fps – bardzo płynny, ale też wymagający więcej miejsca na dysku i większej mocy obliczeniowej przy montażu.
Moim zdaniem warto zapamiętać, że liczba klatek na sekundę to jedna z kluczowych decyzji przy zakładaniu nowego projektu: wpływa na płynność ruchu, rozmiar pliku wynikowego i komfort montażu. W programach do edycji wideo zawsze szukaj parametru „Frame Rate” lub właśnie „fps”. Jeżeli widzisz tam liczbę, np. 24, 25, 30, 50 czy 60, to zawsze będzie chodziło o liczbę klatek przypadających na jedną sekundę odtwarzania filmu, a nie o całkowitą liczbę klatek czy czas trwania projektu. W tym zadaniu opis 25 fps dokładnie odpowiada odpowiedzi „25 klatek na każdą sekundę filmu”.

Pytanie 38

Wskaż sposób oznaczania komentarzy wielowierszowych w kodzie PHP.

A. // treść komentarza
B. / treść komentarza/
C. /* treść komentarza*/
D. <!-- treść komentarza -->
W PHP składnia komentarzy jest bardzo konkretna i dość ściśle określona, więc drobna pomyłka w znakach powoduje, że interpreter nie potraktuje fragmentu jako komentarza, tylko jako zwykły tekst kodu – co zwykle kończy się błędem składni. Wiele osób myli pojęcia z innych technologii, np. z HTML albo z ogólnego zapisu tekstowego, i stąd biorą się nietrafione odpowiedzi.
Znak // w PHP oznacza komentarz, ale tylko jednowierszowy. Oznacza to, że wszystko od // do końca danej linii jest ignorowane, ale już kolejna linia jest znowu normalnym kodem. To jest bardzo wygodne do krótkich dopisków obok instrukcji, np. $x = 5; // liczba elementów. Nie można jednak w ten sposób w prosty sposób opisać większego bloku, który zajmuje kilka wierszy, bo każdy z nich musiałby zaczynać się od //. Technicznie da się, ale jest to nieczytelne i w większych projektach wygląda zwyczajnie słabo.
Zapis / treść komentarza/ wygląda trochę jak intuicyjna próba „otoczenia” tekstu ukośnikami, ale w składni PHP nie ma takiej konstrukcji. Pierwszy ukośnik jest traktowany jako początek operatora dzielenia, a dalsza część jako coś zupełnie innego, więc interpreter zgłosi błąd. To typowy błąd: ktoś kojarzy, że są jakieś ukośniki przy komentarzach, ale nie pamięta dokładnej kolejności i ilości znaków.
Z kolei <!-- treść komentarza --> to składnia komentarza z języka HTML, a nie z PHP. W plikach .php często mieszamy kod PHP z kodem HTML i wtedy łatwo się pomylić, ale warto to rozdzielać w głowie: gdy jesteśmy „w środku” PHP, czyli pomiędzy znacznikami <?php i ?>, obowiązują zasady komentarzy z PHP: //, # oraz /* */. Natomiast gdy piszemy czysty HTML (poza blokiem PHP), wtedy używamy komentarza <!-- -->. Przenoszenie składni HTML do PHP po prostu nie zadziała, bo interpreter PHP tego nie rozumie.
Dobra praktyka jest taka, żeby świadomie wybierać rodzaj komentarza: // lub # do krótkich, jednowierszowych uwag oraz /* */ do dłuższych opisów, dokumentacji funkcji i klas. Mieszanie składni z różnych technologii albo wymyślanie własnych „ozdobnych” wariantów kończy się błędami i trudnym do utrzymania kodem. W programowaniu webowym, szczególnie w PHP, precyzyjna składnia komentarzy to drobiazg, ale bez niej szybko pojawiają się trudne do zlokalizowania problemy, więc warto mieć to dobrze poukładane.

Pytanie 39

1       <script>
2       const liczba = 1;
3       let gora = 10, dol = 1;
4       let podaj = parseInt(prompt("Podaj liczbę całkowitą z zakresu <1-10>"));
5       liczba = Math.random() * ( gora - dol + 1 ) + dol;
6       liczba = parseInt(liczba);
7       if (liczba == podaj) {
8           document.write("Liczba została odgadnięta");
9       } else {
10          document.write("Niestety nie tym razem");
11      }
12      </script>
Przedstawiony fragment kodu JavaScript powinien wylosować liczbę całkowitą z zakresu <1 , 10> i porównać ją z liczbą podaną przez użytkownika w oknie dialogowym. Skrypt po uruchomieniu generuje błąd, którego przyczyną jest
A. przypisanie wartości do stałej liczba w piątej linii skryptu .
B. błędna składnia deklaracji zmiennych gora i dol w drugiej linii skryptu.
C. błędna składnia instrukcji warunkowej if ... else.
D. niepotrzebne użycie konwersji z funkcji prompt do liczby całkowitej.
W tym zadaniu łatwo skupić się na szczegółach, które wyglądają podejrzanie, ale w rzeczywistości są poprawne. Wiele osób patrzy najpierw na deklarację zmiennych `gora` i `dol` w trzeciej linii, bo mamy tam dwa identyfikatory zadeklarowane w jednym wierszu: `let gora = 10, dol = 1;`. Taka składnia w JavaScript jest całkowicie poprawna i bardzo często spotykana w kodzie produkcyjnym. Standard ECMAScript dopuszcza deklarację wielu zmiennych w jednym instrukcie `let`, `const` czy `var`, oddzielonych przecinkami. To nie ma żadnego wpływu na poprawność działania skryptu, jest tylko kwestią stylu kodowania. Niektórzy lintersi zalecają jedną zmienną na linię, ale to jest wyłącznie konwencja, nie błąd.

Podobnie z instrukcją warunkową `if ... else`. Konstrukcja `if (liczba == podaj) { ... } else { ... }` jest jak najbardziej poprawna składniowo. Nawet użycie operatora `==` (zamiast bardziej restrykcyjnego `===`) nie powoduje tu błędu wykonania, najwyżej może być dyskusyjne ze względu na dobre praktyki, bo `===` nie robi konwersji typów. Jednak w tym konkretnym kodzie obie wartości są konwertowane do liczb, więc porównanie zadziała logicznie. Błąd wykonania nie ma więc źródła w warunku.

Czasem pojawia się też myśl, że problemem może być `parseInt(prompt(...))`, bo prompt zwraca tekst. Tymczasem właśnie dlatego używamy `parseInt`, żeby zamienić łańcuch znaków na liczbę całkowitą. Bez tej konwersji porównywalibyśmy liczbę z tekstem, co mogłoby dawać dziwne wyniki logiczne. Konwersja jest tu więc nie tylko „nie niepotrzebna”, ale wręcz wskazana. W nowoczesnym kodzie można by użyć np. `Number(prompt(...))` albo dodatkowo sprawdzić, czy użytkownik faktycznie podał liczbę, ale sam `parseInt` jest jak najbardziej OK.

Sednem problemu nie są więc ani deklaracje `gora` i `dol`, ani składnia `if ... else`, ani konwersja wartości z prompta, tylko próba nadpisania stałej. Z mojego doświadczenia wynika, że to bardzo typowy błąd przy nauce `const` i `let`: mylenie stałych z „zwykłymi” zmiennymi. Warto zawsze zadać sobie pytanie: czy ta wartość ma się zmieniać w czasie działania skryptu? Jeśli tak, używamy `let`. Jeśli nie, wtedy dopiero `const`. To prosta zasada, która pozwala uniknąć takich błędów logicznych i runtime'owych.

Pytanie 40

Aby wymusić, by wartość w kolumnie odwoływała się do istniejącego rekordu w innej tabeli, należy zastosować:

A. klucz obcy
B. indeks
C. klucz główny
D. widok
Pozostałe pojęcia dotyczą innych zadań. Indeks działa wyłącznie na wydajność - tworzy uporządkowany spis wartości, by szybciej wyszukiwać, lecz nie kontroluje powiązań. Klucz główny identyfikuje wiersze w obrębie własnej tabeli i zapewnia ich unikalność, ale nie odwołuje się do tabeli sąsiedniej. Widok to zapamiętane zapytanie, które prezentuje dane w wygodnej formie - również nie wymusza żadnych reguł integralności. Powiązanie kolumny z istniejącym rekordem innej tabeli zapewnia klucz obcy.