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: 17 czerwca 2026 14:41
  • Data zakończenia: 17 czerwca 2026 14:48

Egzamin niezdany

Wynik: 12/40 punktów (30,0%)

Wymagane minimum: 20 punktów (50%)

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

Zdefiniowano bazę danych z tabelą sklepy, która zawiera pola: nazwa, ulica, miasto, branza. W celu zlokalizowania wszystkich nazw sklepów spożywczych, które znajdują się tylko we Wrocławiu, należy wykorzystać kwerendę:

A. SELECT nazwa FROM sklepy WHERE branza="spozywczy" AND miasto="Wrocław"
B. SELECT sklepy FROM branza="spożywczy" WHERE miasto="Wrocław"
C. SELECT nazwa FROM sklepy WHERE branza="spozywczy" OR miasto="Wrocław"
D. SELECT sklepy FROM nazwa WHERE branza="spożywczy" BETWEEN miasto="Wrocław"
Odpowiedź 'SELECT nazwa FROM sklepy WHERE branza="spozywczy" AND miasto="Wrocław";' jest poprawna, ponieważ wykorzystuje właściwą składnię SQL do pobrania danych. W tym przypadku chcemy wybrać nazwy sklepów z tabeli 'sklepy', które spełniają dwa warunki: branża musi być równa 'spozywczy', a miasto musi być równe 'Wrocław'. Użycie operatora AND zapewnia, że oba kryteria muszą być spełnione jednocześnie, co jest kluczowe w tym zadaniu. Ponadto, dobrym zwyczajem jest stosowanie podwójnych cudzysłowów dla nazw kolumn i wartości tekstowych. Przykładowo, w praktyce taka kwerenda może być użyta do analizy lokalizacji sklepów spożywczych w danym mieście, co może być istotne dla strategii marketingowej lub planowania rozwoju sieci handlowej. Zrozumienie struktury SQL oraz sposób formułowania zapytań jest fundamentem efektywnego zarządzania danymi w relacyjnych bazach danych.

Pytanie 2

Tabele Klienci oraz Zgłoszenia są ze sobą połączone relacją jeden do wielu. W celu uzyskania jedynie opisu zgłoszenia oraz odpowiadającego mu nazwiska klienta dla zgłoszenia o numerze 5, należy wykonać polecenie

Ilustracja do pytania
A. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci WHERE Klienci.id = 5
B. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.Klienci_id WHERE Klienci.id = 5
C. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.Klienci_id WHERE Zgłoszenia.id = 5
D. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.id WHERE Zgłoszenia.id = 5
Odpowiedź jest poprawna, ponieważ uwzględnia właściwe połączenie między tabelami Klienci i Zgłoszenia za pomocą klucza obcego Klienci_id w tabeli Zgłoszenia. W relacyjnych bazach danych, gdy chcemy pobrać dane z dwóch tabel powiązanych relacją klucz główny-klucz obcy, używamy klauzuli JOIN. W tym przypadku Klienci_id w tabeli Zgłoszenia odnosi się do kolumny id w tabeli Klienci. Zapytanie SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.Klienci_id WHERE Zgłoszenia.id = 5; precyzyjnie pobiera kolumny opis i nazwisko z odpowiednich tabel, filtrując wyniki, aby dotyczyły jedynie zgłoszenia o id równym 5. Takie podejście jest zgodne z dobrymi praktykami projektowania relacyjnych baz danych, gdzie separacja danych na tabele pozwala na efektywne zarządzanie związkami między danymi. Korzystając z JOIN, integrujemy te dane w logiczny sposób, co jest fundamentem wydajnych i skalowalnych systemów bazodanowych. Praktyczne zastosowanie tego podejścia można znaleźć w projektowaniu systemów CRM, gdzie dane o klientach i ich zgłoszeniach są regularnie łączone w celu analizy i raportowania.

Pytanie 3

W wyniku przedstawionego polecenia w tabeli zostanie

ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL;
A. dodana kolumna nazwa2 z wymuszoną wartością DOUBLE
B. zmieniona kolumna z nazwa1 na nazwa2
C. zmieniony typ kolumny nazwa2 na DOUBLE
D. dodana kolumna nazwa2 o typie zmiennoprzecinkowym
Analizując pozostałe odpowiedzi, można zauważyć, że nie odzwierciedlają one poprawności działania zapytania SQL. Pierwsza odpowiedź sugeruje zmianę nazwy kolumny, co jest błędnym podejściem, ponieważ użycie klauzuli "ADD" wyraźnie wskazuje na dodanie nowej kolumny, a nie na modyfikację istniejącej. Zmiana nazwy kolumny wymagałaby użycia zapytania "ALTER TABLE ... RENAME COLUMN...", co jest zupełnie inną operacją. Drugie stwierdzenie koncentruje się na zmianie wartości kolumny "nazwa2" na typ DOUBLE, co jest niepoprawne, gdyż zapytanie nie zmienia wartości, a dodaje nową kolumnę. Ostatnia odpowiedź wskazuje na dodanie kolumny z wartością domyślną, co również jest błędne, gdyż w zapytaniu nie określono wartości domyślnej dla nowej kolumny. W rzeczywistości, przy dodawaniu kolumny można również ustawić wartość domyślną, ale nie jest to wymagane. Typowe błędy w myśleniu prowadzące do takich wniosków często wynikają z niepełnego zrozumienia składni SQL i funkcji poszczególnych poleceń. Dlatego istotne jest, aby przed przystąpieniem do modyfikacji struktury bazy danych dobrze zaznajomić się z dokumentacją i zasadami działania systemu zarządzania bazą danych, z którego się korzysta.

Pytanie 4

Aby uzyskać informacje o środowisku pracy serwera obsługującego PHP, należy skorzystać z funkcji

A.
phpinfo()
B.
php()
C.
phpinformation()
D.
phpgetinfo()
Funkcja phpinfo() po wywołaniu generuje gotową stronę z kompletem informacji o środowisku, w którym działa PHP. Znajdziesz tam wersję interpretera, listę załadowanych rozszerzeń, aktywne ustawienia z pliku php.ini, ścieżki i zmienne środowiskowe oraz dane o serwerze HTTP. Dzięki temu szybko sprawdzisz, czy potrzebny moduł jest dostępny i jak skonfigurowane jest środowisko - to podstawowe narzędzie diagnostyczne przy wdrażaniu i uruchamianiu aplikacji. Wystarczy umieścić w skrypcie wywołanie tej funkcji i otworzyć stronę w przeglądarce. Pamiętaj jednak, by nie zostawiać takiego pliku na działającym serwerze publicznie - ujawnia on szczegóły konfiguracji, które mogą pomóc atakującemu.

Pytanie 5

Dana jest tabela uczniowie, do której wpisano rekordy jak na rysunku. Co będzie wynikiem działania przedstawionego zapytania SQL?

SELECT AVG(ocena) FROM uczniowie;

NazwiskoImieocena
KowalskiSebastian4
KaczmarekMarta3
BaryłaZenon4
GotaAnna3
A. Dane 4, 3, 4, 3
B. Liczba wierszy równa 4
C. Wartość 3.5
D. Suma ocen równa 14
Widzę, że popełniłeś parę błędów w odpowiedziach. Stwierdzenie 'Suma ocen równa 14' pokazuje, że mogłeś nie do końca zrozumieć, jak działa AVG, bo ta funkcja nie sumuje wartości, ale liczy średnią. Z kolei odpowiedzi 'Dane 4, 3, 4, 3' i 'Liczba wierszy równa 4' też sugerują, że coś nie tak z interpretacją wyników. Pierwsza sugeruje, że zapytanie wyciąga konkretne liczby, a to nieprawda, bo AVG zwraca tylko jedną wartość – średnią. A druga odpowiedź wprowadza w błąd, mówiąc o liczbie wierszy, podczas gdy AVG operuje na wartościach, a nie ich ilości. Tego typu pomyłki mogą wynikać z nieznajomości funkcji agregujących w SQL. Ważne jest, żeby zrozumieć, co każda funkcja robi i jakie zwraca wyniki.

Pytanie 6

Instrukcja JavaScript: document.write5==='5'); co zostanie wyświetlone?

A. 0
B. 1
C. false
D. true
Analizując inne opcje odpowiedzi, można zauważyć, że pierwsza z nich sugeruje wynik 1. W kontekście JavaScript, wynik 1 zazwyczaj odnosi się do wartości prawdy, co jest mylne w przypadku porównania 5 === '5', które nie może zwrócić takiej wartości. Kolejna opcja wskazuje na 0, co w JavaScript również jest interpretowane jako fałsz, ale nie jest zgodne z logiką porównania typów, gdzie wynik jest jednoznacznie 'false', a nie liczbowy. Trzecia opcja, 'true', jest szczególnie myląca, ponieważ może sugerować, że porównanie zakończyło się sukcesem, co jest sprzeczne z zasadą porównania typów: 5 jako liczba i '5' jako string nie mogą być uznawane za identyczne przy użyciu operatora '===' w JavaScript. Warto pamiętać, że JavaScript jest językiem z dynamicznym typowaniem, co oznacza, że typy danych mogą być zmieniane, ale operator '===' wymaga, aby obie strony porównania były tego samego typu. Dlatego każda z tych niepoprawnych odpowiedzi błędnie interpretuje zasady operatorów w JavaScript, prowadząc do nieprawidłowych wniosków.

Pytanie 7

Co PRZYSPIESZA wyszukiwanie danych, ale może spowolnić operacje zapisu (INSERT/UPDATE)?

A. indeksy
B. wartości domyślne
C. reguły
D. klucze podstawowe
Pozostałe elementy nie mają takiego kompromisu. Reguły i wartości domyślne dotyczą poprawności i wypełniania danych, a klucze podstawowe identyfikują rekordy (same w sobie nie są mechanizmem przyspieszania wyszukiwań po dowolnych polach). Przyspieszają odczyt kosztem zapisu indeksy.

Pytanie 8

Który składnik nie jest wymagany do instalacji i uruchomienia systemu CMS Joomla!?

A. serwer WWW
B. platforma .NET
C. baza danych
D. parser PHP
Poprawnie wskazana została platforma .NET jako element, który nie jest wymagany do instalacji i działania Joomla!. Ten CMS jest napisany w PHP i z założenia działa w klasycznym stosie LAMP/LEMP, czyli Linux/Windows + serwer WWW (najczęściej Apache lub Nginx) + PHP + baza danych (MySQL/MariaDB, czasem PostgreSQL). Joomla! korzysta z interpretera PHP do wykonywania całej logiki aplikacji: obsługi logowania, generowania szablonów, pracy z bazą danych, modułów, komponentów itd. Serwer WWW (HTTP) odpowiada za przyjmowanie żądań z przeglądarki i przekazywanie ich do PHP, a baza danych przechowuje treści, użytkowników, konfigurację, menu, artykuły i całą resztę danych dynamicznych. Platforma .NET to zupełnie inny ekosystem technologiczny, typowy dla aplikacji pisanych w C#, ASP.NET, .NET Core, działających np. na IIS. Joomla! nie jest aplikacją .NET, więc nie potrzebuje środowiska uruchomieniowego .NET ani serwera IIS, żeby działać. W praktyce, w typowej firmie hostingowej, gdy chcesz uruchomić Joomla!, patrzysz czy jest obsługa PHP w odpowiedniej wersji, dostęp do bazy MySQL/MariaDB oraz czy serwer WWW pozwala na friendly URLs (mod_rewrite lub odpowiednik). To są realne wymagania. Można oczywiście postawić Joomla! także na Windowsie, ale dalej korzystasz z PHP i serwera WWW, a nie z ASP.NET. Moim zdaniem warto zapamiętać prostą zasadę: jeśli CMS jest napisany w PHP, to kluczowe są PHP, serwer HTTP i baza danych, a nie platformy typowe dla innych języków, jak .NET czy Java.

Pytanie 9

W języku JavaScript zapisano funkcję. Co ona ma za zadanie?

function fun1(f) {
    if (f < 0) f = f * (-1);
    return f;
}
A. zwrócić wartość odwrotną do f
B. wypisać wartość odwrotną do f
C. zwrócić wartość bezwzględną z f
D. wypisać wartość bezwzględną z f
Niepoprawna odpowiedź wskazuje, że funkcja ma za zadanie zwrócić wartość odwrotną do f, lub wypisać wartość bezwzględną z f, lub wypisać wartość odwrotną do f. Te wszystkie odpowiedzi są błędne. Wartość odwrotna do f to 1/f, a nie wartość bezwzględna z f. Wypisanie wartości to inny rodzaj operacji niż jej zwrócenie. Funkcje wypisują wartość, kiedy używamy instrukcji console.log() w JavaScript. Zwrócenie wartości oznacza, że funkcja po zakończeniu swojego działania przekazuje tę wartość do miejsca, skąd została wywołana. Zwracanie wartości jest podstawą działania większości funkcji, które następnie używane są do budowy bardziej skomplikowanych algorytmów. Dlatego też ważne jest, aby dobrze rozumieć, jakie wartości są zwracane przez różne typy funkcji.

Pytanie 10

W katalogu www znajdują się podkatalogi html oraz styles, w których umieszczone są pliki o rozszerzeniu html oraz pliki z rozszerzeniem css. Aby dołączyć styl.css do pliku HTML, należy zastosować

A. <link rel=" Stylesheet" type="text/css" href="www/style/styl. css" />
B. <link rel="Stylesheet" type="text/css" href="styl.css" />
C. <link rel="Stylesheet" type="text/css" href="../style/styl.css" />
D. <link rel="Stylesheet" type="text/css" href="/style/styl.css" />
Przy analizie pozostałych odpowiedzi można dostrzec pewne powszechne błędy w rozumieniu ścieżek do zasobów w dokumentach HTML. W pierwszej odpowiedzi, użycie ścieżki 'www/style/styl.css' sugeruje, że autor zakłada, że jest to pełna ścieżka dostępu, co jest mylące, ponieważ taka ścieżka nie jest względna w kontekście pliku HTML znajdującego się w folderze 'html'. Ponadto, użycie dużych liter w atrybucie 'rel' (np. 'Stylesheet') jest niepoprawne, ponieważ HTML jest językiem case-insensitive, lecz konwencjonalnie zaleca się używanie małych liter. Druga odpowiedź, wskazująca na '/style/styl.css', implikuje, że 'style' jest umiejscowione w katalogu głównym serwera, co również jest błędne w kontekście podanej struktury folderów. Takie podejście jest typowym błędem przy zrozumieniu relatywnych i bezwzględnych ścieżek URL. Ostatnia odpowiedź, 'styl.css', zakłada, że plik CSS znajduje się w tym samym folderze co plik HTML, co nie odpowiada rzeczywistości w przedstawionym układzie folderów. Wszyscy, którzy pracują nad projektami webowymi, muszą zrozumieć, jak ważne jest precyzyjne określenie lokalizacji zasobów, ponieważ błędy te mogą prowadzić do ładowania nieprawidłowych plików, co w efekcie negatywnie wpływa na wygląd i funkcjonalność strony. Wiedza na temat struktury folderów oraz umiejętność nawigacji po nich jest kluczowym elementem w pracy programisty.

Pytanie 11

Jakim sposobem można w języku PHP dokumentować blok komentarza składający się z wielu linii?

A. <!-- -->
B. /* */
C. #
D. //
W języku PHP oprócz bloku komentarza /* */ istnieją inne metody, które jednak nie są przeznaczone do tworzenia komentarzy wieloliniowych. Użycie // pozwala na komentowanie jedynie pojedynczych linii kodu, co może być mylące dla osób, które szukają sposobu na dodawanie dłuższych opisów. Kiedy stosujemy ten styl, każda linia, którą chcemy skomentować, musi być poprzedzona tymi znakami, co znacząco ogranicza możliwości dokumentacji w kodzie. Podobnie sytuacja wygląda w przypadku znaku #, który również działa jedynie na poziomie pojedynczych linii. Te podejścia mogą prowadzić do nieefektywności, zwłaszcza w bardziej złożonych projektach, gdzie jasne i zwięzłe komentarze są kluczowe dla utrzymania zrozumiałości kodu. Alternatywnie, użycie <!-- --> jest związane z HTML i nie jest poprawne w kontekście PHP, ponieważ nie jest uznawane za standardowy sposób komentowania w tym języku. Dlatego istotne jest, aby programiści stosowali odpowiednie metody zgodne z konwencjami PHP, aby uniknąć nieporozumień oraz zapewnić, że dokumentacja kodu będzie użyteczna i łatwo dostępna dla innych twórców. Błędem jest zatem stosowanie nieodpowiednich znaków do komentowania, co może prowadzić do nieczytelności oraz trudności w utrzymaniu kodu.

Pytanie 12

Aby wykonać kod napisany w języku PHP, w systemie musi być zainstalowany:

A. serwer WWW z interpreterem PHP
B. wyłącznie edytor tekstu
C. tylko przeglądarka internetowa
D. serwer WWW z bazą danych MySQL
Pozostałe odpowiedzi nie pozwolą uruchomić kodu PHP. Sama przeglądarka wykonuje jedynie technologie klienta - HTML, CSS i JavaScript - a kodu PHP nie zna, bo ten działa na serwerze. Serwer WWW z bazą MySQL zawiera co prawda element serwera, ale to baza, nie interpreter, więc bez PHP skrypt się nie wykona (baza bywa potrzebna dopiero przy pracy z danymi). Sam edytor tekstu pozwala jedynie zapisać kod. Do wykonania PHP konieczny jest serwer WWW z interpreterem PHP.

Pytanie 13

Jakie oznaczenie w języku PHP wskazuje na komentarz wieloliniowy?

A. <!-- -->
B. /* */
C. //
D. #
Istnieje wiele błędnych przekonań na temat różnych typów komentarzy w PHP, co może prowadzić do nieprawidłowych wniosków. Opcja // definiuje komentarze jednoliniowe, które są używane do dokumentowania pojedynczych linijek kodu i są ignorowane do końca danej linii. Ten typ komentarzy jest przydatny do krótkich notatek, ale nie nadaje się do bardziej skomplikowanych opisów, które wymagają kilku linii. Z kolei <!-- --> jest składnią HTML i nie jest akceptowany w PHP jako sposób definiowania komentarzy. Używanie tej składni w plikach PHP może prowadzić do nieprzewidywalnych błędów, szczególnie jeśli kod jest interpretowany w kontekście serwera. Ostatnia opcja, #, jest również poprawnym sposobem na definiowanie komentarzy jednoliniowych w PHP, ale nie spełnia wymagań dla komentarzy wieloliniowych, które można zdefiniować wyłącznie przy użyciu /* */. Dobrą praktyką jest stosowanie odpowiednich typów komentarzy w zależności od kontekstu, aby zapewnić przejrzystość i zrozumiałość kodu dla innych programistów. Ważne jest zrozumienie, jakie składnie są dozwolone w danym języku programowania, aby unikać potencjalnych błędów w kodzie oraz nieporozumień w zespole projektowym.

Pytanie 14

Którego złączenia należy użyć, aby z dwóch tabel pobrać wszystkie wiersze tabeli po lewej stronie, nawet jeśli nie mają dopasowania w prawej?

A.
RIGHT JOIN
B.
LEFT JOIN
C.
INNER JOIN
D.
CROSS JOIN
Pozostałe złączenia działają inaczej. INNER JOIN zwraca wyłącznie wiersze, które mają dopasowanie w obu tabelach - pominie więc te z lewej bez pary. RIGHT JOIN zachowuje komplet wierszy tabeli prawej, czyli odwrotnie niż w pytaniu. CROSS JOIN tworzy iloczyn kartezjański, łącząc każdy wiersz z każdym, co nie dotyczy dopasowywania po kluczu. Wszystkie wiersze lewej tabeli (z NULL w miejscach bez pary) zwraca LEFT JOIN, dlatego to ono jest poprawne.

Pytanie 15

Tabele Osoby i Adresy są połączone relacją jeden do wielu. Jakie zapytanie SQL należy zapisać, 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, Adresy WHERE Osoby.id = Adresy.id;
C. SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id = Adresy.id;
D. SELECT nazwisko, Miasto FROM Osoby.Adresy_id = Adresy.id FROM Osoby, Adresy;
Błędne odpowiedzi pokazują typowe nieporozumienia związane ze składnią i logiką SQL. Niektóre z nich opierają się na błędnym założeniu, że po prostu wymienienie tabel w instrukcji FROM automatycznie połączy te tabele - to nie jest prawda, ponieważ wymaga to jasno określonego warunku połączenia. Inne błądne odpowiedzi sugerują, że można po prostu porównać wartości kolumny 'id' w obu tabelach, aby je połączyć. To jest błędne, ponieważ nie uwzględnia to faktu, że relacja między tabelami jest określona przez klucz obcy, który może nie mieć takiej samej nazwy ani wartości jak klucz główny. Wreszcie, niektóre błędne odpowiedzi mylą składnię zapytania, umieszczając warunek łączenia w niewłaściwym miejscu lub pomijając niezbędne słowo kluczowe JOIN. To pokazuje, jak ważne jest dokładne zrozumienie składni SQL i jej reguł.

Pytanie 16

Który z rysunków obrazuje efekt działania przedstawionego fragmentu kodu HTML?

<table border="1">
 <tr><td rowspan="2">pierwszy</td><td>drugi</td></tr>
 <tr><td>trzeci</td></tr>
</table>
Ilustracja do pytania
A. C.
B. B.
C. D.
D. A.
Hmm, niestety źle. Ale spoko, każdy czasem myli. Rysunki pokazują różne układy tabel, ale tylko rysunek C oddaje to, co masz w kodzie HTML. Zwłaszcza ważne jest tu użycie atrybutu rowspan='2', który sprawia, że komórka 'pierwszy' rozciąga się na dwa wiersze. W pierwszym wierszu jest 'drugi', a w drugim tylko 'trzeci', bo 'pierwszy' zajmuje już sporo miejsca. Może pomyliłeś rowspan z colspan? To drugie dotyczy kolumn, podczas gdy pierwsze to wiersze. Spróbuj jeszcze raz, mając to na uwadze. Zrozumienie układu tabeli w HTML jest kluczowe dla stworzenia fajnych stron.

Pytanie 17

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 18

Jaki jest cel poniższego fragmentu funkcji w JavaScript?

wynik = 0;
for (i = 0; i < tab.length; i++)
{
    wynik += tab[i];
}
A. dodać stałą wartość do każdego elementu tablicy
B. przypisać do każdego elementu tablicy bieżącą wartość zmiennej i
C. obliczyć sumę wszystkich elementów tablicy
D. wyświetlić wszystkie pozycje w tablicy
Podany fragment kodu w języku JavaScript ma za zadanie zsumować wszystkie elementy tablicy. Widzimy, że zmienna wynik jest inicjalizowana wartością 0 co jest standardową praktyką przy zliczaniu sumy. Następnie pętla for iteruje przez każdy element tablicy używając warunku i < tab.length co zapewnia że przechodzimy przez wszystkie indeksy tablicy od 0 do ostatniego. Wewnątrz pętli mamy instrukcję wynik += tab[i] która dodaje aktualny element tablicy do zmiennej wynik. Jest to typowe podejście do sumowania elementów tablicy i odpowiada standardowym praktykom w programowaniu. Dzięki temu możemy w prosty sposób uzyskać sumę elementów tablicy niezależnie od jej długości. Takie rozwiązanie jest nie tylko przejrzyste ale i efektywne z punktu widzenia złożoności obliczeniowej gdyż operuje w czasie liniowym O(n). Powyższy sposób zliczania jest uniwersalny i można go stosować w różnych językach programowania.

Pytanie 19

Który typ relacji wymaga utworzenia tabeli pośredniczącej, łączącej klucze główne obu tabel?

A.
n..1
B.
n..n
C.
1..1
D.
1..n
Pozostałe relacje nie potrzebują takiej tabeli. 1..1 i 1..n (a także n..1, czyli 1..n z drugiej strony) realizuje się kluczem obcym umieszczonym we właściwej tabeli. Tabela pośrednicząca jest konieczna wyłącznie dla n..n.

Pytanie 20

Kiedy stosuje się kwerendę SELECT DISTINCT?

A. gdy rekordy występują w bazie tylko raz
B. gdy w wybranej kolumnie wartości nie mają się powtarzać
C. gdy chcemy posortować rekordy
D. gdy chcemy pogrupować rekordy
Pozostałe sytuacje obsługują inne klauzule. Grupowanie rekordów to zadanie GROUP BY, a sortowanie rosnące lub malejące - ORDER BY. DISTINCT nie wybiera też „rekordów istniejących w bazie tylko raz” - on usuwa powtórzenia dopiero w wyniku zapytania.

Pytanie 21

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

<?php
   for($i=5;$i>1;$i-=2)
       echo ($i%2)." ";
?>
A. 1 0 1 0
B. 1 0
C. 1 0 1
D. 1 1
Wybór błędnych odpowiedzi wynika z niepełnej analizy działania pętli oraz błędnych założeń dotyczących wartości zwracanych przez operację modulo. Odpowiedzi 1 0, 1 0 1 oraz 1 0 1 0 wskazują na zrozumienie, że liczby mogą mieć różne wartości modulo 2, ale z niewłaściwym przypisaniem ich do konkretnego kontekstu pętli. Wartość 0 w odpowiedzi 1 0 sugeruje, że użytkownik myśli, że $i może kiedykolwiek przyjąć wartość parzystą i wpłynąć na wynik, co jest błędne w kontekście analizowanego kodu. Liczba 5 jest liczbą nieparzystą, więc operacja modulo skutkuje 1, a 3 również jest liczbą nieparzystą, co również daje 1. Odpowiedź 1 0 1 sugeruje, że po osiągnięciu wartości $i = 1, wynik zmienia się na zero, co jest niezgodne z zasadami przetwarzania w tej pętli. Podobnie, odpowiedź 1 0 1 0 sugeruje, że w pętli mogłyby pojawić się inne wartości, podczas gdy w rzeczywistości, jak pokazuje analiza, pętla kończy się po dwóch iteracjach. Kluczowe jest zrozumienie, jak działają struktury kontrolne w programowaniu oraz jakie wyniki można otrzymać na podstawie operacji arytmetycznych. Taka analiza jest niezbędna, aby uniknąć typowych błędów związanych z operacjami na liczbach oraz wyciąganiem wniosków na temat ich właściwości.

Pytanie 22

Podany kod źródłowy ma na celu pokazanie:

$liczba = 1;
while ($liczba != 0)
{
  $liczba = rand(0, 100);
  echo $liczba;
}
A. losowe liczby od 0 do 100 aż do momentu, gdy wylosowana zostanie wartość 0
B. liczby wprowadzane z klawiatury do momentu, gdy wczytana zostanie wartość 0
C. kolejne liczby od 1 do 100
D. wylosowane liczby od 1 do 99
Odpowiedź "losowe liczby od 0 do 100 tak długo, aż nie zostanie wylosowana wartość 0" jest poprawna, ponieważ kod źródłowy wykorzystuje funkcję rand(), która generuje losowe liczby z zadanego zakresu, w tym przypadku od 0 do 100. Pętla while działa w taki sposób, że kontynuuje swoje działanie, dopóki zmienna $liczba nie przyjmie wartości 0. Oznacza to, że wszystkie wylosowane liczby, niezależnie od tego, czy są to liczby parzyste, nieparzyste, czy wartości graniczne, będą wyświetlane na ekranie do momentu, aż wylosowana zostanie wartość 0, która przerwie działanie pętli. Przykładem zastosowania tego typu kodu może być generowanie próbki danych w celu testowania algorytmów lub symulacji. Praktyka ta jest zgodna z dobrymi standardami programowania, gdzie często wykorzystuje się losowe dane do różnych celów, takich jak testowanie, analizy statystyczne lub gry. Ponadto, rozumienie jak działa generowanie liczb losowych i kontrola pętli jest podstawową umiejętnością w programowaniu, która pomaga w rozwoju bardziej zaawansowanych aplikacji.

Pytanie 23

Na ilustracji przedstawiono strukturę bloków na stronie internetowej. Który z poniższych fragmentów CSS odpowiada takim ustawieniom? (Dla uproszczenia pominięto właściwości dotyczące koloru tła, wysokości oraz czcionki)

Ilustracja do pytania
A. #pierwszy{float:left; width:30%;} #drugi {clear:both; width:70%;} #trzeci {clear:both; width:70%;} #czwarty {float:left; width:100%;}
B. #pierwszy {float:left; width:30%; } #drugi {clear:both; width:70%; } #trzeci {float:left; width:70%; } #czwarty {clear:both; }
C. #pierwszy { width: 30%; } #drugi { width: 70%; } #trzeci { width: 70%; } #czwarty { width: 100%; }
D. #pierwszy {float:left; width:30%;} #drugi {float:left; width:70%;} #trzeci {float:left; width:70%;} #czwarty {clear:both; }
Inne odpowiedzi wykorzystują niewłaściwe zastosowanie właściwości float oraz clear, co skutkuje nieprawidłowym wyświetlaniem elementów na stronie. Użycie clear:both dla elementów, które powinny być wyświetlane w tej samej linii co inne elementy, powoduje, że te elementy są przesuwane do nowej linii, co nie jest zgodne z zamierzonym układem. Clear:both powinno być stosowane w celu zakończenia efektu float i rozpoczęcia nowego wiersza dla elementów, które mają być poniżej tych unoszących się. Ponadto brak użycia float przy elementach takich jak #drugi i #trzeci oznacza, że nie będą one ułożone w jednej linii, co jest kluczowe dla zaawansowanego rozplanowania przestrzeni na stronie. Niepoprawne użycie tych właściwości może prowadzić do niezgodności w różnych przeglądarkach, co jest częstym błędem w projektowaniu stron. Wiedza o tym, jak i kiedy stosować float oraz clear, jest niezbędna w tworzeniu funkcjonalnych i estetycznych layoutów. Zrozumienie właściwego użycia tych mechanizmów pozwala na unikanie problemów związanych z układem strony, szczególnie w kontekście responsywności i kompatybilności z różnymi urządzeniami. Dlatego ważne jest, aby dobrze zrozumieć zasady relacji między elementami, aby tworzyć bardziej złożone struktury stron internetowych, które są zgodne z obecnymi standardami web developmentu.

Pytanie 24

W HTML zdefiniowano hiperłącze zawierające znak #. Co się wydarzy po kliknięciu na ten odsyłacz?

<a href="#dane"></a>
A. Uruchomi się skrypt o nazwie dane
B. Zostanie wskazany względny adres URL o nazwie dane
C. Otworzy się nowa karta przeglądarki o nazwie dane
D. Strona przewinie się do elementu o id równym dane
W HTML znacznik <a> to taki element, który tworzy hiperłącza. Dzięki nim możesz przeskakiwać po stronie lub między różnymi stronami. Atrybut href wskazuje, dokąd prowadzi to łącze. Jak widzisz, gdy href zaczyna się od #, to znaczy, że przeniesie Cię do konkretnego miejsca na tej samej stronie, które jest oznaczone atrybutem id. Czyli, jeśli masz href="#dane", to strona przewinie się do elementu z id="dane". To bardzo przydatna rzecz, szczególnie na długich stronach, bo zamiast przewijać wszystko, możesz od razu trafić do odpowiedniej sekcji. To zgodne z tymi sztywnymi zasadami W3C, które mówią o tym, że strony powinny być łatwe w obsłudze. Powinieneś też pamiętać, żeby zawsze sprawdzać, czy id, do którego się odnosisz, istnieje. Dzięki temu unikniesz problemów z nawigacją.

Pytanie 25

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. B
C. C
D. D
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 26

Które z formatowań nie jest wyrażone w języku CSS?

A. Fragment pliku strona.html:
<style>
body { background-color: yellow; }
</style>
B. Fragment pliku formatowanie.css:
body { background-color: yellow; }
C. Fragment pliku strona.html:
<body bgcolor="yellow">
D. Fragment pliku strona.html:
<body style="background-color: yellow;" >
A. A.
B. D.
C. C.
D. B.
Twoja odpowiedź nie była prawidłowa. Pytanie dotyczyło rozróżnienia, które formatowanie nie jest wyrażone w języku CSS. W przypadku CSS, istotne jest zrozumienie, że jest to język wykorzystywany do opisu wyglądu strony internetowej napisanej w HTML. CSS pozwala na zapewnienie spójnego wyglądu dla różnych elementów na stronie, a także na dostosowanie wyglądu do różnych urządzeń i rozmiarów ekranu. Fragment A i fragment B pokazują styl wewnątrz dokumentu HTML oraz styl z zewnętrznego pliku CSS. Oba są prawidłowymi zastosowaniami CSS. W przypadku fragmentu D, mimo że jest to tzw. "inline CSS", który jest stosowany bezpośrednio do elementu HTML, nadal wykorzystuje składnię CSS. Błędem był wybór jednego z tych fragmentów jako odpowiedzi, ponieważ wszystkie wykorzystują CSS. Ostatecznie, jedynie fragment C nie używa CSS. Zamiast tego, używa przestarzałego atrybutu HTML "bgcolor" do określenia koloru tła. Ten atrybut nie jest elementem CSS i jest obecnie uważany za przestarzały. Przy projektowaniu stron internetowych, zaleca się stosowanie CSS zamiast bezpośredniego formatowania HTML, aby zapewnić większą kontrolę nad wyglądem i zachowaniem strony.

Pytanie 27

Który efekt został zaprezentowany na filmie?

A. Zmiana jasności zdjęć.
B. Zwiększenie ostrości zdjęcia.
C. Zmniejszenie kontrastu zdjęcia.
D. Przenikanie zdjęć.
W tym zadaniu łatwo pomylić kilka różnych rodzajów operacji na obrazie, bo wszystkie jakoś „zmieniają wygląd zdjęcia”, ale działają zupełnie inaczej. Efekt pokazany na filmie to przenikanie dwóch zdjęć w czasie, czyli animowane przejście między jednym obrazem a drugim. Kluczowa cecha: widzimy jednocześnie dwa zdjęcia, jedno stopniowo zanika, a drugie stopniowo się pojawia. To nie jest typowa operacja edycyjna na pojedynczym pliku graficznym, tylko efekt animacyjny, często wykorzystywany w pokazach slajdów, sliderach na stronach WWW i w montażu wideo.

Zmiana jasności zdjęć to zupełnie inny rodzaj przetwarzania. Jasność modyfikuje poziom luminancji całego obrazu lub jego fragmentów – obraz staje się ciemniejszy albo jaśniejszy, ale dalej jest to to samo zdjęcie. Nie pojawia się nowe, drugie zdjęcie, nie ma nakładania dwóch kadrów. W programach do grafiki mamy to jako „Brightness”, „Exposure” czy „Levels”. Jeśli na filmie widać, że jeden obraz przechodzi płynnie w inny, to nie jest korekta jasności, tylko przejście między dwiema warstwami.

Podobnie z ostrością – zwiększenie ostrości polega na podbiciu kontrastu na krawędziach, żeby szczegóły wyglądały wyraźniej. W praktyce używa się filtrów typu Unsharp Mask, Smart Sharpen albo algorytmów wyostrzania w czasie rzeczywistym. Obraz przed i po wyostrzeniu to ciągle ta sama klatka, tylko z innym przetworzeniem detali, nie ma efektu zanikania jednego zdjęcia i pojawiania się drugiego.

Zmniejszenie kontrastu to kolejna korekta globalna, która spłaszcza różnice między jasnymi a ciemnymi partiami obrazu. Zdjęcie robi się bardziej „szare”, mniej dynamiczne. Znowu – cały czas pracujemy na jednym ujęciu, bez miksowania dwóch fotografii. Typowym błędem myślowym przy takich pytaniach jest to, że skoro coś się „zmienia w czasie”, to musi chodzić o jakąś regulację parametrów typu jasność czy kontrast. Tymczasem w efektach multimedialnych bardzo często operujemy na wielu warstwach – dwa obrazy, dwie klatki wideo – i animujemy ich wzajemną przezroczystość. Właśnie to jest esencją przenikania zdjęć i odróżnia je od zwykłych korekt obrazu.

Pytanie 28

Określ rezultat działania podanego kodu PHP, jeśli zmienna tab jest tablicą.

$tab = explode(",","jelenie,sarny,dziki,lisy,borsuki"); echo $tab[1]." ".$tab[2];
A. sarny dziki
B. lisy borsuki
C. dziki lisy
D. jelenie sarny
Patrząc na błędne odpowiedzi, widzę, że były one wynikiem mylnego zrozumienia, jak działa funkcja explode w PHP oraz indeksowanie tablic. Na przykład, odpowiedź 'jelenie sarny' pomieszała pierwszy i drugi element tablicy, przez co wyszło coś nie tak. W PHP ważne jest, żeby pamiętać, że tablice zaczynają się od zera, czyli pierwszy element to tablica[0], a drugi to tablica[1]. Kolejna błędna odpowiedź, 'lisy borsuki', też nie brała pod uwagę tego faktu, odwołując się do elementów na końcu tablicy, co jest sprzeczne z kodem. A odpowiedź 'dziki lisy' to już całkowite zignorowanie porządku elementów w tablicy, co ma kluczowe znaczenie, gdy je wywołujemy. Żeby uniknąć takich pomyłek, programiści powinni zwracać uwagę na indeksy tablic i wiedzieć, jak działa funkcja explode. Zrozumienie tych podstawowych zasad w PHP jest istotne dla skutecznego przetwarzania danych i unikania typowych błędów w kodzie.

Pytanie 29

Który standard wideo cechuje się rozdzielczością 1920 × 1080 pikseli?

A. Ultra HD
B. Full HD
C. 4K
D. HD Ready
Full HD (oznaczane też 1080p) to standard rozdzielczości 1920 × 1080 pikseli - powszechny w telewizorach, monitorach i nagraniach wideo. „p” oznacza skanowanie progresywne (pełne klatki). Wyższe standardy to 4K / Ultra HD (3840 × 2160), a niższy popularny to HD Ready (1280 × 720). Im więcej pikseli, tym ostrzejszy obraz. Dlatego 1920 × 1080 to rozdzielczość Full HD.

Pytanie 30

Która z funkcji SQL nie wymaga podania argumentów?

A.
NOW()
B.
UPPER()
C.
YEAR()
D.
LEN()
Pozostałe funkcje potrzebują argumentu. LEN() (w MySQL LENGTH()) wymaga tekstu, by zwrócić jego długość. YEAR() przyjmuje datę i wyciąga z niej rok - bez podania daty nie ma na czym działać. UPPER() potrzebuje napisu, który zamieni na wielkie litery. Wszystkie one operują na przekazanej wartości, podczas gdy NOW() po prostu zwraca aktualny czas bez żadnych danych wejściowych, dlatego to ona jest poprawna.

Pytanie 31

Po wykonaniu przedstawionego poniżej polecenia SQL użytkownik Ela będzie mógł

GRANT SELECT, INSERT, UPDATE, DELETE ON baza1.tab1 TO 'Ela'@'localhost';
A. jedynie dodawania i edytowania danych
B. wykonywania wszelkich działań na danych
C. jedynie tworzenia i zmiany struktury tabel
D. wykonywania wszystkich operacji na strukturze danych
Polecenie SQL GRANT SELECT INSERT UPDATE DELETE ON baza1.tab1 TO 'Ela'@'localhost' przyznaje użytkownikowi Ela pełny dostęp do danych w tabeli tab1 w bazie danych baza1. Oznacza to możliwość wykonywania wszystkich operacji związanych z zarządzaniem danymi w tej tabeli. Komenda GRANT jest używana do nadawania uprawnień użytkownikom bazy danych. W tym przypadku uprawnienia obejmują SELECT do odczytu danych INSERT do dodawania nowych rekordów UPDATE do modyfikacji istniejących danych oraz DELETE do usuwania rekordów. Uprawnienia te pokrywają pełne spektrum operacji związanych z manipulacją danymi co jest kluczowe w sytuacjach gdzie użytkownik musi mieć elastyczność w zarządzaniu zawartością tabeli. Dobrymi praktykami jest ograniczanie nadawania takich szerokich uprawnień tylko wtedy gdy jest to absolutnie konieczne w celu minimalizacji ryzyka nieautoryzowanej manipulacji danymi. Rozumienie i zarządzanie uprawnieniami użytkowników jest kluczowym elementem bezpieczeństwa bazy danych ponieważ pozwala na kontrolę dostępu i zapewnienie integralności danych. Tak szeroki dostęp jak w tym przypadku powinien być przyznawany z rozwagą i jedynie zaufanym użytkownikom w środowiskach produkcyjnych gdzie dane są szczególnie wrażliwe.

Pytanie 32

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

a:visited {color: orange;}
A. posiada błędny adres URL
B. został wcześniej odwiedzony
C. jeszcze nie był odwiedzony
D. wskaźnik myszy znajduje się nad nim
Wybór odpowiedzi związanej z błędnym adresem URL jest błędny, ponieważ kwestia odwiedzonych odsyłaczy w CSS nie ma związku z poprawnością adresu linku. Adres URL może być prawidłowy, a mimo to link może być nieodwiedzony lub odwiedzony, w zależności od tego, czy użytkownik wcześniej kliknął w dany odsyłacz. Użytkownicy często mylą te dwa pojęcia, co prowadzi do nieporozumień dotyczących działania linków w sieci. Kolejna błędna koncepcja to mylenie odsyłaczy z aktywnym stanem wskaźnika myszy. Pseudo-klasa `:hover` jest odpowiedzialna za stylizowanie odsyłaczy w momencie, gdy wskaźnik myszy znajduje się nad nimi, co jest zupełnie innym stanem niż stan odwiedzony. Takie pomylenie może prowadzić do nieprawidłowego projektowania interfejsu użytkownika, gdzie wizualizacje stanu linków są niewłaściwe. Z kolei stwierdzenie, że odsyłacz jeszcze nie został odwiedzony, ignoruje fakt, że stylizacja dotycząca odwiedzonych linków jest specyficzna dla tych, które były już otwarte przez użytkownika. Warto pamiętać, że CSS umożliwia precyzyjne definiowanie zachowań i stylów elementów, co powinno być stosowane zgodnie z ich przeznaczeniem i w dobrze zaplanowanej architekturze strony internetowej.

Pytanie 33

Która definicja i wywołanie funkcji PHP poprawnie wypisze ciąg $n znaków @?

A.
function znaki($znak, $i++) { for($i=0; $i<$n; $i++) print($znak); } znaki($n);
B.
function znaki($i) { for($i=0; $i<$n; $i++) print("@"); } znaki($i);
C.
function znaki($znak, $n) { for($i=0; $i<$n; $i++) print($znak); } znaki("@", $n);
D.
function znaki($znak, $i++) { for($i=0; $i<$n; $i++) print($znak); } znaki(@, $n);
Poprawna funkcja przyjmuje DWA parametry - znak do wypisania i liczbę powtórzeń - oraz pętlą wypisuje znak tyle razy: function znaki($znak, $n) { for($i=0; $i<$n; $i++) print($znak); }, wywołana np. znaki("@", 5). Dlatego poprawny jest wariant z parametrami ($znak, $n).

Pytanie 34

W celu wykonania kopii bazy danych biblioteka w systemie MySQL należy w konsoli użyć polecenia

A. backupmysql -u root biblioteka kopia.sql
B. copymysql –u root biblioteka kopia.sql
C. mysqlduplicate –u root biblioteka > kopia.sql
D. mysqldump -u root biblioteka > kopia.sql
W poleceniu do wykonywania kopii bazy danych MySQL kluczowe jest użycie właściwego narzędzia oraz poprawnej składni. W systemach z MySQL standardowym, oficjalnym narzędziem do tworzenia logicznych kopii zapasowych jest program mysqldump. Nazwy takie jak „copymysql”, „backupmysql” czy „mysqlduplicate” po prostu nie istnieją w standardowej dystrybucji MySQL i wynikają raczej z intuicyjnego myślenia typu: skoro chcę skopiować bazę, to pewnie będzie jakaś komenda „copy” albo „backup”. To naturalne skojarzenie, ale niestety oderwane od rzeczywistych narzędzi dostępnych w praktyce administracji bazami danych.
MySQL dostarcza konkretny zestaw binariów: mysql (klient), mysqld (serwer), mysqldump (backup), mysqladmin, mysqlimport itd. Nazwa mysqldump jest trochę mało oczywista, ale to właśnie ona jest właściwa do wykonywania zrzutów baz danych. Błędne odpowiedzi sugerują istnienie narzędzi, które brzmieniem przypominają operacje typu „backup” czy „duplicate”, jednak w profesjonalnym środowisku trzymamy się dokładnych nazw binariów i składni opisanej w dokumentacji. W praktyce administracyjnej takie pomyłki kończą się po prostu komunikatem „command not found” w konsoli.
Drugi aspekt to samo przekierowanie do pliku. W poprawnym poleceniu używa się znaku „>”, który jest elementem powłoki systemowej, a nie MySQL. To przekierowanie bierze standardowe wyjście programu mysqldump i zapisuje je do wskazanego pliku tekstowego, np. kopia.sql. Jeżeli ktoś pominie to przekierowanie, zobaczy cały zrzut bazy na ekranie, co jest kompletnie niepraktyczne. Jeżeli natomiast spróbuje używać nieistniejących poleceń typu „copymysql … kopia.sql” bez znaku „>”, to ani nie wywoła prawidłowego narzędzia, ani nie zapisze danych we właściwy sposób.
Z mojego doświadczenia typowy błąd myślowy polega na traktowaniu MySQL jakby miał wbudowane jakieś „magiczne” polecenie backupu, na wzór prostych programów typu „kopiuj plik”. Baza danych to jednak usługa sieciowa działająca w tle, a kopie wykonuje się przez specjalistyczne narzędzia, które rozumieją jej strukturę, zależności, typy danych i potrafią wygenerować poprawne instrukcje SQL do późniejszego odtworzenia. Dlatego tak ważne jest, żeby zapamiętać nie tylko poprawną odpowiedź, ale i samą ideę: do backupu MySQL używamy mysqldump, z odpowiednimi opcjami, a wynik zapisujemy do pliku przez przekierowanie. To jest zgodne z dokumentacją MySQL i ogólnie przyjętymi dobrymi praktykami w administracji serwerami i bezpieczeństwie danych.

Pytanie 35

Co opisuje polecenie

CREATE TABLE dane (kolumna INTEGER(3));
?
A. tabelę dane z JEDNĄ kolumną liczb całkowitych
B. tabelę z jedną kolumną zawierającą 3-elementowe tablice
C. tabelę z TRZEMA kolumnami liczb całkowitych
D. tabelę z kolumnami kolumna1, kolumna2, kolumna3
INTEGER przechowuje pojedynczą liczbę, a nie „3-elementowe tablice”. W definicji jest tylko jedna kolumna (kolumna) - nie ma „kolumna1, kolumna2, kolumna3”. (3) to parametr wyświetlania, a nie liczba KOLUMN. Powstaje tabela z jedną kolumną typu całkowitego.

Pytanie 36

Tworząc raport w systemie zarządzania relacyjnymi bazami danych, umożliwia się

A. analizę wybranych danych
B. aktualizowanie danych w tabelach
C. usuwanie danych z tabel
D. dodawanie danych do tabel
Analiza wybranych danych w systemie obsługi relacyjnych baz danych jest kluczowym aspektem raportowania. Umożliwia to zrozumienie wzorców i trendów, co jest niezbędne dla podejmowania świadomych decyzji biznesowych. Poprzez odpowiednie zapytania SQL, użytkownicy mogą selektywnie wybierać dane, które są dla nich istotne, a następnie przetwarzać je w celu generowania raportów. Przykładem może być analiza sprzedaży w danym okresie czasu, co pozwala na identyfikację najlepiej sprzedających się produktów. Praktyczne zastosowanie raportów obejmuje również monitoring efektywności działań marketingowych, co jest zgodne z najlepszymi praktykami w dziedzinie zarządzania danymi. W kontekście standardów branżowych, raportowanie powinno opierać się na zasadzie przejrzystości, co oznacza, że użytkownicy powinni mieć łatwy dostęp do zrozumiałych i czytelnych wyników analizy. Umożliwia to nie tylko identyfikację problemów, ale również wykorzystanie danych do prognozowania i planowania przyszłych działań.

Pytanie 37

W JavaScript poprawnie zdefiniowana zmienna to

A. imię%
B. imię2
C. #imie
D. imie2
W przypadku odpowiedzi 'imię%' występuje nieprawidłowy znak specjalny, co łamie zasady dotyczące nazewnictwa zmiennych w JavaScript. Zgodnie z tymi zasadami, zmienne mogą zawierać tylko litery, cyfry, znaki podkreślenia oraz znaki dolara, ale nie mogą kończyć się ani zawierać znaków specjalnych, takich jak procent. Z tego powodu, użycie takiego znaku w nazwie zmiennej prowadzi do błędów składniowych i jest niezgodne z konwencjami programistycznymi. Podobnie, w przypadku odpowiedzi '#imie', znak hashtagu jest również zabroniony w nazwach zmiennych. Często początkujący programiści mylą się, myśląc, że mogą używać dowolnych symboli w nazwach zmiennych, co prowadzi do problemów podczas kompilacji czy interpretacji kodu. Ważne jest, aby znać te zasady, ponieważ ich przestrzeganie ułatwia współpracę w zespołach programistycznych oraz zapewnia lepszą organizację kodu. Prawidłowe nazewnictwo sprzyja również łatwiejszej konserwacji i rozwoju projektów, co jest kluczowe w długoterminowych inicjatywach programistycznych.

Pytanie 38

W języku PHP symbol "//" oznacza

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

Pytanie 39

Aby poprawnie skomentować linię kodu w języku JavaScript, należy po znakach // wprowadzić komentarz x = Math.max(a,b,c); //

A. nieprawidłowe dane
B. w zmiennej x minimalna wartość ze zmiennych a, b, c
C. w zmiennej x maksymalna wartość ze zmiennych a, b, c
D. wybór wartości maksymalnej spośród zmiennych a, b oraz c
W analizowanych odpowiedziach znajdują się stwierdzenia, które nie oddają rzeczywistego działania funkcji wykorzystywanej w tej linii kodu. Stwierdzenie dotyczące wyboru losowej wartości ze zmiennych a, b i c jest błędne, ponieważ funkcja Math.max nie dokonuje wyboru losowego, ale precyzyjnie analizuje wartości i zwraca największą z nich. Takie myślenie może prowadzić do poważnych nieporozumień w kontekście programowania, gdzie deterministyczne wyniki są kluczowe. Inne z kolei stwierdzenie, że w zmiennej x znajduje się minimalna wartość ze zmiennych a, b, c, jest całkowicie sprzeczne z logiką funkcji Math.max, która z definicji nakazuje jej zwracać maksymalną, a nie minimalną wartość. Użytkownik, bazując na tym błędnym rozumowaniu, mógłby wprowadzić niepoprawne dane do dalszego przetwarzania. Natomiast ostatnia błędna odpowiedź sugerująca, że zmienna x zawiera maksymalną wartość bez uwzględnienia kontekstu, jest niepoprawna w tym sensie, że nie precyzuje, iż funkcja Math.max porównuje konkretnie wartości a, b i c. Aby uniknąć takich nieporozumień, ważne jest zrozumienie mechanizmu działania wbudowanych funkcji w JavaScript oraz ich zastosowania w praktyce.

Pytanie 40

<form>
  <input type="email" id="addr" required>
  <input type="submit" value="Zapisz">
</form>
Na podstawie przedstawionego kodu formularza HTML można powiedzieć, że pole edycyjne:
A. wymaga wpisania jedynie znaków alfanumerycznych.
B. może być puste.
C. nie powinno zawierać znaków numerycznych.
D. nie może być puste i wymaga wpisania tekstu ze znakiem @.
W tym fragmencie kodu HTML masz dwa bardzo ważne atrybuty: type="email" oraz required. To właśnie one razem powodują, że poprawna jest odpowiedź, że pole nie może być puste i wymaga wpisania tekstu ze znakiem @.

Atrybut required oznacza, że pole jest obowiązkowe. Przeglądarka, zgodnie ze specyfikacją HTML5, nie pozwoli wysłać formularza, dopóki pole nie będzie wypełnione. Użytkownik kliknie przycisk „Zapisz”, a formularz po prostu się nie wyśle – pojawi się komunikat walidacyjny po stronie przeglądarki. To jest tzw. walidacja po stronie klienta, domyślnie wbudowana w HTML.

Z kolei type="email" uruchamia specjalny mechanizm sprawdzania formatu wpisanego tekstu. Przeglądarka sprawdza, czy ciąg znaków wygląda jak adres e‑mail: musi zawierać co najmniej znak @ i jakąś część przed i po nim. To nie jest super zaawansowana walidacja, ale wystarcza jako pierwszy filtr, np. "[email protected]" przejdzie, a "jan.domena.pl" już nie. Moim zdaniem to bardzo wygodne, bo nie trzeba od razu pisać własnego JavaScriptu tylko po to, żeby odsiać oczywiste błędy.

W praktyce w aplikacjach webowych zwykle łączy się tę prostą walidację HTML5 z dodatkowymi sprawdzeniami po stronie serwera (np. w PHP czy w innym backendzie), bo dane z formularza zawsze trzeba traktować z ograniczonym zaufaniem. Dobrym nawykiem jest też dodanie atrybutu name, np. name="email", żeby serwer mógł poprawnie odebrać wartość pola.

Warto też wiedzieć, że niektóre przeglądarki mobilne, gdy widzą type="email", podpowiadają użytkownikowi specjalną klawiaturę z łatwym dostępem do znaku @ i kropki, co realnie poprawia wygodę wpisywania adresu. To taki mały szczegół, ale w profesjonalnych projektach UX ma znaczenie. Podsumowując: required blokuje puste wysłanie formularza, a type="email" wymusza poprawny, podstawowy format adresu ze znakiem @ – dokładnie to opisuje poprawna odpowiedź.