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: 23 kwietnia 2026 18:53
  • Data zakończenia: 23 kwietnia 2026 19:41

Egzamin niezdany

Wynik: 16/40 punktów (40,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

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. brązowy
B. zielony
C. żółty
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 2

Baza danych zawiera tabelę uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL powinno być użyte, aby wyświetlić imiona i nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = "M%"
B. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%"
C. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN "M%"
D. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN "M%"
Wybór innych opcji jest błędny z kilku powodów związanych z niewłaściwym zastosowaniem operatorów oraz składni SQL. W przypadku polecenia SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN "M%", pojawia się mylne rozumienie zastosowania klauzuli ORDER BY. Ta klauzula jest używana do sortowania wyników zapytania, a nie do filtrowania ich na podstawie warunków. Operator IN służy do sprawdzania, czy wartość znajduje się w określonym zbiorze danych, ale nie współdziała poprawnie z wzorcami, takimi jak "M%", które wymagają użycia LIKE. Podobnie, w odpowiedzi SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN "M%", użycie IN jest niewłaściwe, ponieważ nie można stosować wildcardów w tym kontekście. Ostatecznie, SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = "M%" również nie jest trafnym podejściem, ponieważ operator = wymaga dokładnego dopasowania, a nie porównania na podstawie wzorca. Powszechnym błędem jest brak zrozumienia zasięgu operatorów w SQL oraz ich właściwej aplikacji w kontekście zapytań, co prowadzi do nieefektywnego uzyskiwania danych. Znalezienie właściwego rozwiązania wymaga zrozumienia, jak zastosować odpowiednie operatory w celu efektywnego przeszukiwania i filtrowania danych w bazach danych.

Pytanie 3

W języku HTML, aby uzyskać efekt taki jak na przykładzie, należy zastosować konstrukcję

Duży tekst zwykły tekst

A. <p><big>Duży tekst</big> zwykły tekst</p>
B. <p><strike>Duży tekst zwykły tekst</p>
C. <p><strike>Duży tekst</strike> zwykły tekst</p>
D. <p><big>Duży tekst</p> zwykły tekst
Pierwsza z niepoprawnych odpowiedzi wykorzystuje znacznik <big> w kontekście niewłaściwego zamknięcia. Brak zamknięcia tagu <big> czyni tę konstrukcję błędną. Semantycznie, HTML wymaga, aby wszystkie znaczniki były odpowiednio otwarte i zamknięte dla prawidłowego renderowania. Kolejna odpowiedź stosuje znacznik <strike>, który jest przeznaczony do oznaczania tekstu, który był kiedyś aktualny, ale nie jest już taki. Użycie <strike> w tym kontekście jest nieodpowiednie, ponieważ celem jest zwiększenie widoczności tekstu, a nie jego skreślenie. Ostatnia z odpowiedzi również korzysta z tagu <strike>, co prowadzi do podobnego efektu, gdzie tekst jest skreślony, a nie powiększony. Takie podejście nie tylko wprowadza w błąd czytelników, ale także nie spełnia wymogów dostępności, ponieważ nie przekazuje intencji autora tekstu. Poprawne użycie HTML powinno koncentrować się na semantyce i dostępności, a nie na wizualnych efektach, które są efektywniej osiągane przez CSS.

Pytanie 4

Odizolowane środowisko ogólnego przeznaczenia, utworzone na fizycznym serwerze z wykorzystaniem technologii wirtualizacji, to

A. serwer VPS.
B. serwer dedykowany.
C. serwer aplikacji.
D. serwer DHCP.
Opis w pytaniu bardzo precyzyjnie wskazuje na wirtualizację i izolację środowiska, dlatego częste pomyłki wynikają głównie z mieszania pojęć różnych typów serwerów. Serwer aplikacji to przede wszystkim rola programowa – oprogramowanie, które uruchamia logikę aplikacji (np. Tomcat, WildFly, Node.js, serwer PHP-FPM). Może działać na VPS-ie, na serwerze dedykowanym, a nawet na zwykłym hostingu współdzielonym. Nie jest to jednak samo w sobie „odizolowane środowisko” stworzone przez wirtualizację sprzętową, tylko usługa działająca w ramach jakiegoś systemu operacyjnego. Z mojego doświadczenia wiele osób myli tu warstwę systemową z warstwą aplikacyjną. Serwer dedykowany natomiast to fizyczna maszyna przeznaczona dla jednego klienta. Owszem, można na nim tworzyć wiele odizolowanych środowisk (np. kilka VPS-ów), ale sam w sobie nie jest „odizolowanym środowiskiem utworzonym przy użyciu wirtualizacji”. On jest właśnie tą bazą sprzętową, na której dopiero instalujemy hypervisor i tworzymy serwery VPS. W języku branżowym mówi się, że serwer dedykowany to bare metal – goły metal, na którym dopiero budujemy warstwę wirtualizacji. Serwer DHCP z kolei to zupełnie inna kategoria – to usługa sieciowa służąca do automatycznego przydzielania adresów IP, masek, bram domyślnych i DNS-ów w sieci lokalnej. Może działać na routerze, na serwerze fizycznym, na VPS-ie, a nawet w systemie wbudowanym. Nie opisuje on w ogóle rodzaju środowiska, tylko konkretną funkcję w sieci. Typowy błąd myślowy przy tym pytaniu to skupianie się na słowie „serwer” zamiast na kluczowych fragmentach: „odizolowane środowisko ogólnego przeznaczenia” i „utworzone na fizycznym serwerze z wykorzystaniem technologii wirtualizacji”. Te dwie cechy razem są charakterystyczne właśnie dla VPS-a – wirtualnej maszyny logicznie wydzielonej z jednego, mocniejszego serwera fizycznego.

Pytanie 5

Typowym programem przeznaczonym do edycji grafiki wektorowej jest

A. Paint.
B. Brasero.
C. Audacity.
D. Inkscape.
Poprawnie wskazany program to Inkscape, bo jest to typowy, specjalistyczny edytor grafiki wektorowej. Grafika wektorowa opiera się na obiektach takich jak linie, krzywe Béziera, wielokąty, tekst, które są opisane matematycznie (współrzędne, promienie, kąty), a nie na siatce pikseli. Dzięki temu projekty można skalować praktycznie dowolnie bez utraty jakości, co jest absolutnym standardem przy projektowaniu logotypów, ikon, infografik, schematów technicznych czy elementów interfejsu użytkownika. Inkscape obsługuje format SVG, który jest otwartym standardem W3C i jest powszechnie stosowany w projektach webowych, także w responsywnych interfejsach. W praktyce, używając Inkscape, można tworzyć np. logo firmy, które później bez problemu osadzisz na stronie WWW, w materiałach do druku, na banerach, a nawet w aplikacji mobilnej, bez martwienia się o rozmazanie czy pikselizację. Program oferuje warstwy, style, grupowanie obiektów, precyzyjne wyrównywanie, siatki i prowadnice, co jest zgodne z dobrymi praktykami pracy z grafiką: porządek w projekcie, praca na oddzielnych warstwach, używanie krzywych zamiast „ręcznego” rysowania byle jakich kształtów. Moim zdaniem, znajomość Inkscape albo innego edytora wektorowego (np. Adobe Illustrator, CorelDRAW) to dzisiaj podstawowa umiejętność dla kogoś, kto myśli poważnie o grafice komputerowej czy front-endzie. Wiele firm wręcz wymaga, żeby materiały były dostarczane właśnie w formacie wektorowym, bo wtedy łatwiej je modyfikować, dopasowywać kolorystykę do brandingu i eksportować do różnych formatów (PNG, PDF, EPS) w zależności od potrzeb. Inkscape pozwala też na pracę z krzywymi, maskami, gradientami czy efektami filtrów, co daje bardzo duże możliwości przy zachowaniu zalet wektorów.

Pytanie 6

Wskaż styl CSS za pomocą, którego uzyskano przedstawiony efekt

Styl 1.
img {
  width: 100px;
  border-radius: 10%;
}
Styl 2.
img {
  width: 100px;
  border-radius: 50px;
}
Styl 3.
img {
  width: 100px;
  border: 50% green;
}
Styl 4.
img {
  width: 100px;
  shape: circle;
}
Ilustracja do pytania
A. Styl 3.
B. Styl 1.
C. Styl 2.
D. Styl 4.
Niestety, wybrałeś niepoprawną odpowiedź. Poprawną odpowiedzią jest 'Styl 2.', który wykorzystuje właściwość CSS border-radius z wartością 50px do zaokrąglania rogów obrazka. Zobaczmy, dlaczego pozostałe style są niepoprawne. 'Styl 1.' ma za małą wartość zaokrąglenia, co nie daje oczekiwanego efektu. Właściwość border-radius musi mieć odpowiednią wartość, aby uzyskać pożądane zaokrąglenie. 'Styl 3.' zawiera niepoprawną wartość, a mianowicie kolor. Kolor nie jest właściwą wartością dla border-radius, co pokazuje, jak ważne jest zrozumienie, jakie wartości są akceptowane dla różnych właściwości CSS. 'Styl 4.' używa właściwości shape, która nie istnieje w CSS. To jest błąd typowy dla osób, które nie są jeszcze pewne, które właściwości są dostępne w CSS. Jest to jasnym przykładem, dlaczego nauka i praktyka CSS są tak ważne do tworzenia atrakcyjnych i funkcjonalnych stron internetowych.

Pytanie 7

Poniżej zamieszczony fragment skryptu w JavaScript zwróci

Ilustracja do pytania
A. owodzeni
B. wodzenia
C. wo
D. ze
Patrząc na ten skrypt JavaScript, który działa na łańcuchach i wypisuje różne fragmenty tekstu, można się natknąć na pewne nieporozumienia związane z metodą substring. Z doświadczenia, wiem, że początkujący programiści czasem mylą się w odczytywaniu indeksów w tej metodzie. W skrócie, substring wyciąga dwa argumenty: początkowy i końcowy, ale działa tak, że bierze znaki od początkowego do przed końcowym. Więc gdy mamy substring(3,9) na 'Powodzenia na egzaminie', to zwraca 'odzeni'. Potem, jak wywołasz z.substring(2,4) na 'odzeni', to dostajesz 'ze'. Często błędnie myśli się, że substring bierze znaki do końca, co prowadzi do pomyłek. I jest jeszcze różnica między substring a substr, co też jest dość mylące. W kontekście tego egzaminu, ważne jest, aby rozumieć te drobne szczegóły i używać metod w odpowiednich sytuacjach. Z mojego doświadczenia, to klucz do efektywnej pracy z tekstem w skryptach webowych.

Pytanie 8

Który styl CSS ma najwyższy priorytet ważności w zastosowaniu do elementów dokumentu HTML?

A. Styl importowany do wewnętrznego arkusza.
B. Styl lokalny.
C. Wewnętrzny arkusz stylów.
D. Zewnętrzny arkusz stylów.
W tym zagadnieniu kluczowe jest zrozumienie, jak działa kaskada CSS i co faktycznie oznacza „priorytet ważności”. Wiele osób intuicyjnie zakłada, że skoro zewnętrzny arkusz stylów jest głównym źródłem stylowania projektu, to właśnie on ma największą moc. Inni z kolei myślą, że wewnętrzny arkusz w <style> w dokumencie HTML jest ważniejszy, bo jest bliżej elementu. Spotyka się też przekonanie, że style importowane przez @import do wewnętrznego arkusza są traktowane jako coś „bardziej aktualnego”. Wszystkie te intuicje mijają się z tym, jak faktycznie działa specyfikacja CSS. Z perspektywy przeglądarki istnieją trzy główne źródła stylów autora strony: zewnętrzne pliki .css, wewnętrzne style w sekcji <style> oraz style lokalne w atrybucie style na konkretnym elemencie. Do tego dochodzą jeszcze style domyślne przeglądarki i ewentualne style użytkownika, ale w typowym projektowaniu stron WWW skupiamy się na stylach autora. Kaskada bierze pod uwagę kilka kroków: najpierw ważność (czy jest !important), potem pochodzenie, następnie specyficzność selektora, a na końcu kolejność deklaracji. Jeśli porównujemy odpowiedzi w tym pytaniu, wszystkie dotyczą stylów autora bez !important, więc decyduje właśnie źródło i specyficzność. Zewnętrzny arkusz stylów i wewnętrzny arkusz w <style> mają w praktyce ten sam poziom „źródła”, różnią się tylko kolejnością ładowania i tym, że reguły z <style> zwykle nadpisują wcześniejsze z plików .css, jeśli mają taką samą specyficzność. Style importowane przez @import traktowane są jakby były wczytane wcześniej, więc często mają nawet mniejszy wpływ, bo są nadpisywane przez późniejsze reguły. Natomiast styl lokalny, czyli atrybut style na elemencie, ma znacznie wyższą specyficzność i to on wygrywa, o ile nie pojawiają się reguły z !important. Typowy błąd myślowy polega na mieszaniu „miejsca zapisania” z „ważnością w kaskadzie”: to, że plik zewnętrzny jest głównym nośnikiem stylów w projekcie, nie oznacza, że ma największy priorytet. Dobra praktyka front-endowa wręcz odradza nadużywanie stylu lokalnego, ale to, że coś jest niezalecane, nie zmienia faktu, że technicznie ma najwyższy priorytet spośród podanych opcji. Warto o tym pamiętać, zwłaszcza przy debugowaniu sytuacji, w których styl „nie działa” – bardzo często blokuje go właśnie jakiś inline style, który został dodany ręcznie lub przez JavaScript.

Pytanie 9

Przy edytowaniu obrazu w programie graficznym rastrowym należy usunąć kolory z obrazu, aby uzyskać jego wersję w skali szarości. Jaką funkcję można zastosować, aby osiągnąć ten efekt?

A. szumu RGB
B. kadrowania
C. filtru rozmycia
D. desaturacji
Desaturacja to technika używana w edytorach grafiki rastrowej, polegająca na usunięciu kolorów z obrazu, co prowadzi do uzyskania odcieni szarości. Proces ten jest często stosowany w celu podkreślenia formy, tekstury i kontrastu obiektów w grafice, a także w celu poprawy czytelności w przypadku zdjęć i ilustracji, gdzie kolory mogą rozpraszać uwagę. Aby zastosować desaturację, użytkownik może skorzystać z odpowiedniej opcji w menu edytora, co zazwyczaj odbywa się poprzez wybór narzędzia desaturacji lub konwersji na skalę szarości. Dobrą praktyką jest przetestowanie różnych metod desaturacji, ponieważ niektóre programy oferują różne algorytmy, które mogą dawać różne rezultaty. Na przykład, niektóre edytory pozwalają na kontrolę intensywności desaturacji, co daje większą elastyczność w edytowaniu. W kontekście standardów branżowych, desaturacja jest powszechnie używana w grafikach do druku i w mediach cyfrowych, aby poprawić jakość wizualną i komunikacyjną obrazów.

Pytanie 10

Która z poniższych instrukcji jest równoważna z poleceniem switch w języku PHP?

switch ($liczba) {
    case 10:
    case 20: $liczba++; break;
    default: $liczba = 0;
}

Instrukcja 1.
if ($liczba==10)
    $liczba++;
else
    $liczba = 0;

Instrukcja 2.
if ($liczba==10 or $liczba==20)
    $liczba++;
else
    $liczba = 0;

Instrukcja 3.
if ($liczba==10 or $liczba==20)
    $liczba++;

Instrukcja 4.
if ($liczba==10 and $liczba==20)
    $liczba++;
else
    $liczba = 0;
A. Polecenie 4
B. Polecenie 3
C. Polecenie 1
D. Polecenie 2
Instrukcje warunkowe if-else są często używane w programowaniu do kontrolowania przepływu programu na podstawie wartości logicznych. W kontekście podanego pytania, istotne jest zrozumienie, jak różne operatory logiczne wpływają na działanie tych instrukcji. Instrukcja 1 zakłada, że zmienna $liczba musi być równa 10, by wykonać operację inkrementacji, co nie jest zgodne z oryginalnym kodem switch, ponieważ pomija wartość 20. Taka interpretacja mogłaby prowadzić do błędów w sytuacjach, gdzie obie wartości są dopuszczalne. Instrukcja 3 używa operatora or, co wydaje się poprawne, ale brak bloku else powoduje brak możliwości przypisania wartości 0 w sytuacjach, gdy $liczba nie wynosi 10 ani 20. To oznacza niekompletność logiczną i potencjalne błędy. Instrukcja 4 stosuje operator and, co wymaga, aby $liczba jednocześnie wynosiła 10 i 20, co jest logicznie niemożliwe w tym kontekście, prowadząc do nieprawidłowego działania. Taka nieprawidłowa logika może być wynikiem błędnego zrozumienia warunków logicznych, co jest częstym problemem wśród początkujących programistów. Zrozumienie różnic między tymi operatorami jest kluczowe dla tworzenia poprawnych i efektywnych konstrukcji warunkowych w dowolnym języku programowania, w tym w PHP. Poprawne użycie instrukcji if-else oraz operatorów logicznych jest fundamentem wielu aplikacji, a błędy mogą prowadzić do nieprzewidywalnego działania programu.

Pytanie 11

W algebrze relacji działanie selekcji polega na

A. wybór krotek, które spełniają określone warunki
B. usunięciu pustych wierszy
C. wybór krotek, które nie zawierają wartości NULL
D. usunięciu krotek z powtórzonymi polami
W algebrze relacji operacja selekcji, określana również jako filtracja, polega na wydobywaniu krotek z relacji (tabel), które spełniają określone warunki. Selekcja jest kluczowym narzędziem w zarządzaniu bazami danych, ponieważ umożliwia przetwarzanie i analizowanie dużych zbiorów danych poprzez skupienie się tylko na istotnych informacjach. Na przykład, w bazie danych zawierającej informacje o pracownikach, można zastosować selekcję, aby wyodrębnić jedynie tych pracowników, którzy mają wynagrodzenie powyżej określonej kwoty. W praktyce, operator selekcji jest często reprezentowany przez symbol sigma (σ) w notacji algebry relacji. Zgodnie z normami SQL, operacja ta odpowiada klauzuli WHERE, co pozwala na precyzyjne określenie kryteriów, według których krotki są wybierane. Selekcja nie zmienia struktury tabeli, lecz tworzy nową relację, która zawiera jedynie te krotki, które spełniają dane warunki. Przykładem może być zapytanie SQL, które zwraca dane o studentach, którzy uzyskali ocenę powyżej 4.0. Selekcja jest fundamentalnym elementem w projektowaniu baz danych, umożliwiającym efektywne przetwarzanie danych oraz wsparcie dla analizy danych w różnych aplikacjach biznesowych.

Pytanie 12

void wypisz(int n) {
    for (int i = 1; i <= n; i++) {
        System.out.println("Wykonanie operacji po raz " + i);
    }
    System.out.println("Wykonanie kolejnej operacji!");
}
Złożoność obliczeniowa prezentowanego kodu wynosi:
A. O(n)
B. O(1)
C. O(n²)
D. O(n!)
W tym zadaniu kluczowe jest zauważenie, że jedynym fragmentem kodu, który realnie „rośnie” wraz ze wzrostem n, jest pętla for. Pętla wykonuje się od i = 1 do i <= n, czyli dokładnie n razy. W każdej iteracji wykonywana jest jedna instrukcja wypisania tekstu na konsolę: System.out.println("Wykonanie operacji po raz " + i);. To jest stały zestaw operacji w każdej iteracji, nie pojawia się żadna zagnieżdżona pętla, żadne rekurencyjne wywołania ani inne konstrukcje, które by powodowały większy wzrost liczby operacji. Z tego powodu całkowita liczba operacji tego algorytmu jest proporcjonalna do n, a w notacji dużego O zapisujemy to jako O(n). Dodatkowe wywołanie System.out.println("Wykonanie kolejnej operacji!"); po zakończeniu pętli ma z punktu widzenia złożoności asymptotycznej znaczenie stałe – to jest jedna instrukcja, więc dokładamy tylko +1 do liczby operacji. Standardowo w analizie algorytmów takie stałe pomijamy, bo interesuje nas zachowanie dla bardzo dużych n. W praktyce taki schemat O(n) pojawia się non stop: przechodzenie po elementach tablicy, listy, sprawdzanie każdego rekordu z pliku, proste filtrowanie danych. Moim zdaniem warto wyrobić sobie nawyk: widzisz pojedynczą pętlę, bez dodatkowych zagnieżdżeń i bez skoków zależnych od innych zmiennych – bardzo często będzie to właśnie złożoność liniowa. W dobrych praktykach projektowania algorytmów przyjmuje się, że O(n) jest zazwyczaj akceptowalne dla sporych danych, bo czas rośnie wprost proporcjonalnie do liczby elementów. Dopiero gdy pojawiają się pętle w pętlach, trzeba się bardziej martwić o wydajność. Warto też pamiętać, że operacja wejścia/wyjścia (I/O), jak wypisywanie na konsolę, jest w rzeczywistości dość kosztowna, ale w analizie teoretycznej zakładamy, że to jedna jednostkowa operacja na iterację. Dzięki temu możemy porównywać różne algorytmy w sposób ogólny, niezależny od konkretnej maszyny czy implementacji.

Pytanie 13

W języku C, aby zdefiniować stałą, należy zastosować

A. static
B. const
C. #INCLUDE
D. #CONST
W języku C, aby zadeklarować stałą, należy użyć słowa kluczowego 'const'. Użycie 'const' umożliwia programiście zdefiniowanie zmiennej, której wartość nie może być zmieniana w trakcie działania programu. To podejście jest zgodne z dobrymi praktykami programowania, ponieważ pozwala na większą kontrolę nad danymi i minimalizuje ryzyko przypadkowej modyfikacji istotnych wartości. Na przykład, jeżeli chcemy zdefiniować stałą wartość liczby pi, możemy użyć: 'const double PI = 3.14159;'. Taka deklaracja zapewnia, że PI pozostanie niezmienne w trakcie działania programu. Użycie 'const' jest również istotne w kontekście bezpieczeństwa kodu, ponieważ zmniejsza prawdopodobieństwo wystąpienia błędów związanych z modyfikacją wartości, które powinny pozostać stałe. Warto również zauważyć, że używanie stałych w programowaniu zwiększa czytelność kodu, ponieważ jasno wskazuje na zamiar programisty, że pewne wartości nie powinny być zmieniane. Dodatkowo, stałe mogą być używane w kontekście makr preprocesora, co wprowadza dodatkowe możliwości zdefiniowania stałych, które mogą być używane w całym kodzie przy zachowaniu zasad programowania defensywnego.

Pytanie 14

Dane są liczby całkowite różne od zera w tablicy nazwanej tab. Podany poniżej kod w języku PHP ma na celu

Ilustracja do pytania
A. wyliczenie iloczynu wszystkich wartości w tablicy
B. zmienić wszystkie elementy tablicy na liczby o przeciwnym znaku
C. zmienić wartości tablicy na te zapisane w zmiennej liczba
D. obliczenie wartości bezwzględnej poszczególnych elementów tablicy
Kod pokazany na obrazku używa konstrukcji foreach z operatorem referencji ampersand aby iterować po tablicy tab i zmieniać każdy jej element. Operator referencji & pozwala na bezpośrednią modyfikację wartości w tablicy. Instrukcja $liczba = $liczba * (-1) w pętli foreach zmienia znak każdej liczby na przeciwny co oznacza że dodatnie liczby stają się ujemne a ujemne stają się dodatnie. Dzięki temu możliwe jest szybkie odwrócenie znaków wszystkich elementów w tablicy co jest powszechnie stosowane w programowaniu aby przygotować dane do dalszych operacji matematycznych lub analizy. Unset($liczba) jest używane po pętli aby odłączyć referencję co jest dobrą praktyką zapobiegającą przypadkowym modyfikacjom przyszłych danych. Zastosowanie tego wzorca jest efektywne i pozwala na bezpieczną manipulację strukturą danych w PHP. Technika ta jest użyteczna nie tylko w kontekście matematycznym ale również w przypadkach gdzie wymagane jest szybkie przetwarzanie dużych ilości danych.

Pytanie 15

Który z modyfikatorów określa opisany w ramce przypadek? Metoda i zmienna są dostępne wyłącznie dla innych metod tej samej klasy

A. protected
B. public
C. static
D. private
Modyfikatory dostępu mają kluczowe znaczenie dla organizacji i bezpieczeństwa kodu. Odpowiedzi wskazujące na 'static', 'public' oraz 'protected' są nieprawidłowe w kontekście podanego opisu. Modyfikator 'static' oznacza, że metoda lub zmienna należy do klasy, a nie do instancji klasy, co pozwala na dostęp do niej bez tworzenia obiektu. Jest to użyteczne w przypadku narzędzi lub metod pomocniczych, ale nie odpowiada na wymaganie dotyczące ograniczenia dostępu. Modyfikator 'public' z kolei pozwala na dostęp do elementów z każdego miejsca w kodzie, co jest sprzeczne z definicją zawężającego dostępu do innych metod klasy. Użycie 'public' w tym kontekście prowadzi do sytuacji, w której inne klasy mogą niebezpiecznie zmieniać stan obiektów, co jest sprzeczne z zasadami dobrego projektowania. Modyfikator 'protected' umożliwia dostęp do elementów dla klas dziedziczących oraz dla tych, które znajdują się w tej samej paczce, co również nie spełnia wymogu ograniczenia dostępu wyłącznie do metod własnej klasy. Typowe błędy myślowe, prowadzące do wyboru niewłaściwych odpowiedzi, często wynikają z braku zrozumienia zasad projektowania obiektowego oraz niewłaściwego kojarzenia modyfikatorów z poziomem dostępu. Dlatego kluczowe jest zrozumienie, że 'private' jest jedynym modyfikatorem, który w pełni spełnia wymagania opisane w pytaniu.

Pytanie 16

Jak kwerenda SQL przedstawiona w ramce wpłynie na tabelę pracownicy?

ALTER TABLE pracownicy MODIFY plec char(9);
A. Zmieni typ danych kolumny plec na znakowy o stałej długości 9
B. Doda kolumnę plec ze znakowym typem danych o stałej długości 9
C. Doda kolumnę plec ze znakowym typem danych o zmiennej długości 9
D. Zmieni typ danych kolumny plec na znakowy o zmiennej długości 9
Jak widzisz, polecenie SQL ALTER TABLE pracownicy MODIFY plec char(9) zmienia typ kolumny plec na CHAR o stałej długości 9 znaków. To znaczy, że wszystkie wartości w tej kolumnie będą miały dokładnie 9 znaków. Jeśli dana wartość będzie krótsza, to automatycznie dopełni się spacjami. W praktyce to jest przydatne, gdy musimy mieć dane zawsze w tej samej długości, na przykład przy kodach pocztowych czy numerach identyfikacyjnych. Twoja odpowiedź jest poprawna, ponieważ mówi dokładnie o tym, co się dzieje przy użyciu MODIFY, a typ CHAR wskazuje, że mamy do czynienia z danymi o stałej długości. Wiesz, czasami w aplikacjach biznesowych trzeba mieć dane w jednolitej formie, bo to ułatwia ich przetwarzanie i porównywanie. Dlatego tak ważne jest, żeby znać różne typy danych i ich zastosowania podczas projektowania baz danych.

Pytanie 17

char str1[30] = 'Ala ma kota';
printf("%s", str1); 
Jakie jest źródło błędu w prezentowanym kodzie napisanym w języku C++?
A. Napis powinien być umieszczony w cudzysłowie.
B. Do funkcji printf przekazano za mało argumentów.
C. W funkcji printf nie można używać formatowania %s.
D. Napis powinien mieć dokładnie 30 znaków.
Odpowiedź wskazująca, że napis powinien być ujęty w cudzysłów jest poprawna, ponieważ w języku C/C++ napisy (łańcuchy znaków) muszą być ujęte w podwójne cudzysłowy, aby zostały prawidłowo zinterpretowane przez kompilator. W przedstawionym kodzie, zamiast użycia pojedynczych cudzysłowów, które są przeznaczone do definiowania pojedynczych znaków (char), należy użyć podwójnych, aby zdefiniować napis jako tablicę znaków. Takie podejście jest zgodne z standardami języka C i C++, gdzie łańcuchy znaków są implementowane jako tablice znaków zakończone znakiem null ('\0'). Przykładowo, poprawny sposób zapisu to: char str1[30] = "Ala ma kota";. Stosowanie odpowiednich cudzysłowów jest kluczowe w programowaniu, ponieważ może zapobiegać wielu błędom kompilacji oraz ułatwiać późniejszą edycję i zarządzanie kodem. Warto również pamiętać, że dobrym zwyczajem jest stosowanie tablic odpowiedniej wielkości, aby uniknąć nadpisywania pamięci, co może prowadzić do nieprzewidywalnych zachowań programu.

Pytanie 18

input:focus { background-color: LightGreen; } W Ciebie CSS określono stylizację dla pola wejściowego. Tak przygotowane pole wejściowe będzie miało tło w odcieniu jasnozielonym?

A. kiedy zostanie najechane kursorem myszy bez jego klikania
B. w każdej sytuacji
C. jeżeli jest to pierwsza obecność tego elementu w dokumencie
D. po naciśnięciu przycisku myszy w celu wprowadzenia tekstu
Odpowiedź 'po kliknięciu myszą w celu zapisania w nim tekstu' jest poprawna, ponieważ styl CSS zdefiniowany jako 'input:focus' odnosi się do stanu, w którym pole edycyjne jest aktywne i gotowe do wprowadzania danych. Kiedy użytkownik klika w pole edycyjne, przeglądarka przełącza jego stan na 'focus', co skutkuje zastosowaniem zdefiniowanego stylu, w tym przypadku jasnozielonego tła. Dzięki temu użytkownicy mogą wizualnie zidentyfikować, które pole edycyjne jest aktualnie wybrane, co znacząco poprawia użyteczność i interaktywność formularzy na stronach internetowych. W praktyce, jest to kluczowe podczas projektowania formularzy, aby zapewnić użytkownikom wyraźne wskazówki dotyczące aktualnego stanu interfejsu. Dobrym przykładem zastosowania jest formularz rejestracyjny, gdzie aktywne pole edycyjne wyróżnia się kolorem, ułatwiając użytkownikom wprowadzanie danych. Zgodnie z wytycznymi WCAG (Web Content Accessibility Guidelines), takie wizualne wskazówki są istotne dla zapewnienia dostępności aplikacji webowych, co czyni je standardem branżowym.

Pytanie 19

Aby stworzyć relację jeden do wielu, w tabeli po stronie wiele, co należy zdefiniować?

A. klucz podstawowy wskazujący na klucz podstawowy tabeli po stronie jeden
B. klucz obcy wskazujący na klucz podstawowy tabeli po stronie jeden
C. klucz sztuczny odnoszący się do kluczy podstawowych obu tabel
D. klucz obcy wskazujący na klucz obcy tabeli po stronie jeden
W kontekście relacji jeden do wielu w bazach danych, każda z podanych niepoprawnych opcji wprowadza w błąd odnośnie do zasady funkcjonowania kluczy obcych i ich roli w modelowaniu danych. Klucz obcy wskazujący na klucz obcy tabeli po stronie jeden jest konceptualnie błędny, ponieważ klucz obcy zawsze odnosi się do klucza podstawowego innej tabeli, a nie do innego klucza obcego. Taki układ narusza zasady referencyjności i integralności danych, co może prowadzić do trudności w utrzymaniu spójności w bazie. Kolejną niepoprawną opcją jest klucz sztuczny odnoszący się do kluczy podstawowych obu tabel. Klucze sztuczne, choć mogą być użyteczne w pewnych kontekstach, nie powinny być używane jako sposób tworzenia relacji, ponieważ nie odzwierciedlają naturalnych powiązań między danymi. Klucz podstawowy wskazujący na klucz podstawowy tabeli po stronie jeden również jest mylny, ponieważ w relacji jeden do wielu klucz podstawowy tabeli 'jeden' musi być referencjonowany przez klucz obcy w tabeli 'wiele', a nie odwrotnie. Te nieporozumienia mogą prowadzić do błędów projektowych w bazach danych, co w efekcie utrudnia ich rozwój i zarządzanie, szczególnie w dużych systemach, gdzie spójność danych jest kluczowa dla funkcjonowania aplikacji.

Pytanie 20

Aby sprawdzić, czy kod JavaScript działa poprawnie, należy skorzystać z

A. interpretera PERL
B. interpretera PHP
C. konsoli w przeglądarce internetowej
D. kompilatora C++
Konsola w przeglądarce to świetne narzędzie do sprawdzania i naprawiania kodu JavaScript. Dzięki niej możesz od razu zobaczyć, co działa, a co nie. Na przykład, kiedy wpiszesz `console.log('Hello, World!');`, to od razu zobaczysz wynik w konsoli. To bardzo fajny sposób na szybkie testowanie, bo nie musisz czekać ani niczego dodatkowo uruchamiać. Konsola ma też sporo innych przydatnych funkcji, jak inspekcja obiektów czy monitorowanie zdarzeń, więc naprawdę warto się z nią zaprzyjaźnić. Właściwie, każda popularna przeglądarka, jak Chrome czy Firefox, dodaje różne ciekawe opcje, które pomagają w debugowaniu. Z mojego doświadczenia, korzystanie z konsoli to kluczowy element nauki i pracy z JavaScript.

Pytanie 21

Program FileZilla może być użyty do

A. walidacji strony internetowej
B. zarządzania bazami danych strony internetowej
C. publikacji strony internetowej na serwerze
D. zmiany domyślnych ustawień hostingu dla strony internetowej
Wybór odpowiedzi, która nie odnosi się do publikacji strony internetowej na serwerze, jest typowym błędem związanym z myleniem różnych funkcji i zastosowań technologii internetowych. Walidacja strony internetowej, choć ważna, odnosi się do sprawdzania poprawności kodu HTML oraz zgodności z standardami W3C, co nie ma bezpośredniego związku z przesyłaniem plików na serwer. Użytkownicy często zakładają, że weryfikacja poprawności ich kodu jest wystarczająca do publikacji, co jest nieścisłe, ponieważ nawet poprawny kod nie będzie dostępny online bez przesłania na serwer. Zmiana domyślnych ustawień hostingu również nie ma związku z funkcjonalnością FileZilla, ponieważ takie zmiany zazwyczaj dokonuje się w panelu zarządzania hostingiem, a nie przez klienta FTP. Ponadto zarządzanie bazami danych, które jest inną kluczową częścią rozwoju aplikacji webowych, wymaga użycia narzędzi takich jak PHPMyAdmin czy konsola SQL, a nie narzędzi do przesyłania plików. Zrozumienie tych różnic jest niezbędne dla efektywnego korzystania z technologii webowych i unikania typowych pułapek, które mogą prowadzić do błędnych wniosków oraz problemów w procesie publikacji stron internetowych.

Pytanie 22

Dostępna jest tabela programisci, która zawiera pola: id, nick, ilosc_kodu, ocena. Pole ilosc_kodu wskazuje liczbę linii kodu stworzonych przez programistę w danym miesiącu. W celu obliczenia łącznej liczby linii kodu napisanych przez wszystkich programistów, należy zastosować poniższe polecenie

A. SELECT COUNT(programisci) FROM ilosc_kodu;
B. SELECT MAX(ilosc_kodu) FROM programisci;
C. SELECT SUM(ocena) FROM ilosc_kodu;
D. SELECT SUM(ilosc_kodu) FROM programisci;
Aby obliczyć sumę linii kodu napisanych przez wszystkich programistów w tabeli 'programisci', poprawne jest użycie zapytania SQL: SELECT SUM(ilosc_kodu) FROM programisci. Zapytanie to wykorzystuje funkcję agregującą SUM(), która sumuje wartości w określonej kolumnie, w tym przypadku 'ilosc_kodu'. Kolumna ta zawiera liczbę linii kodu napisanych przez każdego programistę w danym miesiącu. Przykładem zastosowania tego zapytania może być sytuacja, w której chcemy określić całkowitą produktywność zespołu programistycznego w danym okresie czasu. Możemy rozszerzyć to zapytanie, dodając klauzulę WHERE, aby zsumować tylko linie kodu z określonego miesiąca lub roku. Warto również pamiętać o standardach SQL oraz zasadach normalizacji baz danych, które zalecają unikanie redundancji danych i umożliwiają efektywne przetwarzanie zapytań. Dzięki poprawnym praktykom można zapewnić optymalizację wydajności bazy danych oraz ułatwić późniejsze analizy danych.

Pytanie 23

Wskaż nieprawdziwe zdanie dotyczące normalizacji dźwięku.

A. Normalizacja polega na obniżeniu poziomu najgłośniejszej próbki w sygnale do określonej wartości, a następnie w odniesieniu do niej proporcjonalnym zwiększeniu głośności pozostałej części sygnału.
B. Gdy najgłośniejszy fragment dźwięku ma wartość pół na skali, to wszystkie dźwięki zostaną wzmocnione dwukrotnie - w ten sposób najgłośniejszy fragment osiągnie maksymalną wartość na skali.
C. Podczas normalizacji poziom głośności całego nagrania jest wyrównywany.
D. Funkcja normalizacja znajduje się w menu programu do edycji dźwięku.
W tej odpowiedzi jest pewne nieporozumienie związane z tym, co to znaczy normalizacja sygnału dźwiękowego. To nie jest po prostu podwojenie głośności najgłośniejszego kawałka, to by było za proste. Chodzi o to, żeby całe nagranie miało odpowiednią głośność bez wprowadzania zniekształceń. Jeśli najgłośniejszy fragment audio jest na poziomie 50%, normalizacja ma za zadanie podnieść poziom całego nagrania tak, żeby ten najgłośniejszy kawałek dotarł do maksymalnej wartości. To nie jest kwestia po prostu pomnożenia przez dwa, a raczej odpowiedniego dostosowania do skali decybelowej. To jest szczególnie ważne, bo w normalizacji musimy unikać clippingu, czyli zniekształceń dźwięku, które mogą się zdarzyć, gdy poziom wyjściowy jest za wysoki. Normalizacja dobrze działa w połączeniu z innymi technikami, takimi jak kompresja i limitacja, żeby uzyskać najlepsze efekty w produkcji audio. Dlatego warto to dobrze rozumieć, bo źle użyta normalizacja może prowadzić do kiepskiej jakości dźwięku oraz ogólnie nieprzyjemnych wrażeń podczas słuchania.

Pytanie 24

Aby włączyć zewnętrzny skrypt JavaScript zatytułowany skrypt.js, należy umieścić w kodzie HTML

A. <script> skrypt.js </script>
B. <script src="skrypt.js"></script>
C. <link rel="JavaScript" type="js" href="skrypt.js" />
D. <link rel="script" href="skrypt.js" />
Wiele z niepoprawnych odpowiedzi opiera się na nieporozumieniach co do właściwej składni używania JavaScript w dokumentach HTML. Odpowiedź <link rel="JavaScript" type="js" href="skrypt.js" /> jest błędna, ponieważ element <link> jest stosowany głównie do łączenia stylów CSS, a nie skryptów JavaScript. Atrybuty rel i type w tym kontekście nie mają zastosowania, co prowadzi do niepoprawnego załączenia skryptu. Kolejny przykład, <link rel="script" href="skrypt.js" />, również jest niewłaściwy, ponieważ nie istnieje atrybut rel o nazwie "script" w kontekście tagu <link>. Użycie atrybutu rel w kontekście skryptów nie jest zgodne z żadnym standardem HTML. Z kolei odpowiedź <script> skrypt.js </script> jest błędna, ponieważ nie używa atrybutu src, co oznacza, że przeglądarka nie będzie wiedziała, gdzie znaleźć plik skrypt.js. To podejście jest zatem nieefektywne i nieintuicyjne. Właściwe podejście do dołączania skryptów JavaScript polega na używaniu tagu <script> z atrybutem src, co jest zgodne z najlepszymi praktykami i standardami branżowymi. Takie zrozumienie składni HTML i JavaScript jest kluczowe dla każdego dewelopera webowego, aby zapewnić właściwą integrację i funkcjonalność stron internetowych.

Pytanie 25

DOM oferuje metody i właściwości, które w języku JavaScript umożliwiają

A. przesyłanie danych formularza bezpośrednio do bazy danych
B. pobieranie oraz modyfikowanie elementów strony widocznej w przeglądarce
C. manipulowanie łańcuchami zadeklarowanymi w kodzie
D. przeprowadzanie operacji na zmiennych przechowujących liczby
Zarówno wysyłanie danych formularza bezpośrednio do bazy danych, jak i manipulowanie zadeklarowanymi w kodzie łańcuchami są podejściami, które mogą być mylące w kontekście funkcji DOM. Przede wszystkim, DOM nie jest odpowiedzialny za interakcję z bazami danych. Wysyłanie danych formularza do bazy danych odbywa się zazwyczaj poprzez technologię backendową, taką jak PHP, Node.js czy Python, która przetwarza dane po stronie serwera. Użytkownik nie może bezpośrednio łączyć się z bazą danych z poziomu przeglądarki, co jest kluczowym aspektem bezpieczeństwa aplikacji internetowych. Ponadto, manipulacja łańcuchami w kontekście DOM również nie jest jego funkcją. DOM jest skoncentrowany na reprezentacji strukturalnej dokumentu, a nie na operacjach na danych. Takie operacje powinny być realizowane w kontekście zmiennych JavaScript, a nie za pośrednictwem DOM. Zrozumienie różnicy między tymi technologiami jest fundamentalne, aby uniknąć nieporozumień w programowaniu oraz zapewnić poprawne funkcjonowanie aplikacji. Typowe błędy myślowe obejmują mylenie pojęć związanych z front-endem i back-endem, co może prowadzić do błędnych wniosków na temat architektury aplikacji. Kluczowe jest, aby programiści zdawali sobie sprawę, że każdy komponent aplikacji ma swoje specyficzne zadania i odpowiedzialności.

Pytanie 26

W formularzu dokumentu PHP znajduje się pole <input name="im" />. Po wpisaniu przez użytkownika ciągu „Janek”, aby dodać wartość tego pola do bazy danych, w tablicy $_POST będzie obecny element

A. im z kolejnym numerem indeksu
B. im z indeksem Janek
C. Janek z kolejnym numerem indeksu
D. Janek z indeksem im
Odpowiedzi, które nie są poprawne, bazują na nieprawidłowych założeniach dotyczących sposobu, w jaki PHP przetwarza dane z formularzy. Pierwsza z niepoprawnych odpowiedzi sugeruje, że w tablicy $_POST istnieje element o kluczu 'im' z indeksem 'Janek'. W rzeczywistości, kluczem jest nazwa pola, a wartością jest to, co zostało wprowadzone przez użytkownika, więc takie połączenie klucza i wartości jest mylące. W drugiej niepoprawnej opcji mowa o 'Janek' jako kluczu, co również jest błędne, ponieważ 'Janek' jest wartością, a nie kluczem. Klucz w tablicy $_POST to zawsze nazwa pola formularza, czyli w tym przypadku 'im', a jego wartość to 'Janek'. Trzecia niepoprawna odpowiedź sugeruje, że klucz 'im' miałby być skojarzony z kolejnym numerem indeksu. To również jest niewłaściwe, ponieważ PHP nie dodaje automatycznie numerów indeksów do kluczy tablic, a klucze pozostają takie same, jak nazwy w formularzu. W każdej sytuacji nazwa pola pozostaje kluczem, co jest istotnym elementem przetwarzania danych w PHP.

Pytanie 27

Aby ustanowić relację jeden do wielu, w tabeli reprezentującej stronę "wiele", konieczne jest zdefiniowanie

A. klucza obcego odnoszącego się do klucza obcego tabeli po stronie "jeden"
B. klucza podstawowego wskazującego na klucz podstawowy tabeli po stronie "jeden"
C. klucza obcego wskazującego na klucz podstawowy tabeli po stronie "jeden"
D. klucza sztucznego odnoszącego się do kluczy podstawowych obydwu tabel
Definiowanie relacji w bazach danych to dosyć skomplikowana sprawa. Jakby nie patrzeć, jak zrobisz coś źle z kluczami obcymi czy podstawowymi, to mogą być duże problemy z danymi. Klucz sztuczny, który odnosi się do kluczy podstawowych w obu tabelach, może wydawać się prosty, ale nie rozwiązuje faktycznego problemu, którym jest jasna relacja między danymi. To wprowadza dodatkowe zamieszanie, a to nie jest dobra praktyka. Jak zdefiniujesz klucz obcy, który wskazuje na inny klucz obcy w tabeli po stronie 'jeden', no to może być tylko mętlik, bo ciężko wtedy utrzymać spójność danych. Klucz podstawowy, który wskazuje na klucz podstawowy z tabeli po stronie 'jeden', to również zły wybór, bo klucz podstawowy ma być unikalny dla każdej tabeli. Kluczowe jest, żeby klucze obce były używane w odpowiedni sposób, bo inaczej struktura danych robi się nieczytelna i trudna do zarządzania, a to na pewno nie idzie w parze z dobrym projektowaniem baz danych.

Pytanie 28

Która operacja nie wpłynie na wielkość zajmowanej pamięci przez plik graficzny?

A. Interpolacja
B. Zmiana rozmiaru obrazu z użyciem atrybutów HTML
C. Modyfikacja rozdzielczości obrazu
D. Kompresja
Zmiana rozdzielczości obrazu, interpolacja oraz kompresja to operacje, które w istotny sposób wpływają na rozmiar pliku graficznego, co często jest mylone z ich funkcjami wizualnymi. Zmiana rozdzielczości obrazu to proces, w którym liczba pikseli w obrazie jest modyfikowana, co prowadzi do mniejszej lub większej ilości danych do zapisania w pliku. Na przykład, zmniejszenie rozdzielczości z 300 DPI do 72 DPI znacząco redukuje rozmiar pliku, ponieważ zmniejsza liczbę informacji, które muszą być zapisane. Interpolacja natomiast jest techniką, która służy do obliczania wartości pikseli w nowych rozmiarach obrazu. W tym procesie generowane są nowe piksele, co często skutkuje zwiększeniem rozmiaru pliku, jeśli obraz jest powiększany. Kompresja to kolejny kluczowy element wpływający na rozmiar pliku. Kompresja stratna i bezstratna zmieniają sposób, w jaki dane obrazów są przechowywane, co może znacznie obniżyć wagę pliku. Typowe błędy myślowe związane z tymi operacjami polegają na założeniu, że manipulacje na poziomie wyświetlania nie mają wpływu na rzeczywiste parametry pliku graficznego. Ważne jest, aby zrozumieć, że każda z tych operacji ma swoje zastosowanie i wpływ na jakość oraz rozmiar pliku, co powinno być starannie rozważane podczas pracy z grafiką.

Pytanie 29

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

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

Pytanie 30

Co robi funkcja napisana w języku JavaScript?

function fun1(f)
{
  if(f < 0)
    f = f * (-1);
  return f;
}
A. zwrócenie wartości odwrotnej do f
B. wypisanie wartości bezwzględnej z f
C. wypisanie wartości odwrotnej do f
D. zwrócenie wartości bezwzględnej z f
Funkcja, którą podałeś w JavaScript, ma za zadanie zwrócić wartość bezwzględną z podanego argumentu f. Sprawdza, czy f jest mniejsze od zera, a jeśli tak, to mnoży je przez -1, co w praktyce oznacza, że zmienia znak liczby na dodatni. Jeśli wartość jest już dodatnia, to nic się nie dzieje. To wszystko jest zgodne z tym, jak definiujemy wartość bezwzględną, bo ta zawsze jest równa lub większa od zera. Z mojego doświadczenia, wartości bezwzględne są przydatne w różnych dziedzinach, jak matematyka czy analiza danych, gdzie zależy nam na wartościach liczbowych bez względu na to, czy są dodatnie, czy ujemne. Warto też wspomnieć, że JavaScript ma wbudowaną funkcję Math.abs(), która robi to samo i jest to naprawdę dobry wybór, bo ułatwia zrozumienie kodu i zmniejsza ryzyko błędów. Tworzenie takiej funkcji, jak w Twoim zadaniu, to świetny sposób na lepsze poznanie działania języka i manipulowania danymi.

Pytanie 31

W CSS należy ustawić tło dokumentu na obrazek rys.png. Obrazek powinien się powtarzać tylko w poziomej osi. Jaką definicję powinien mieć selektor body?

A. {background-image: url("rys.png"); background-repeat: repeat-y;}
B. {background-image: url("rys.png"); background-repeat: repeat-x;}
C. {background-image: url("rys.png"); background-repeat: round;}
D. {background-image: url("rys.png"); background-repeat: repeat;}
Odpowiedzi, które nie zostały wybrane, zawierają różne błędne podejścia do definiowania tła w CSS. W przypadku opcji używających wartości 'round' oraz 'repeat', tło powtarzałoby się zarówno w poziomie, jak i w pionie, co może nie być pożądanym efektem, jeżeli celem jest ograniczenie powtarzania jedynie do poziomego rozciągnięcia. Wartość 'repeat' jest domyślną wartością dla 'background-repeat', co oznacza, że obrazy będą powtarzane w obu kierunkach, co nie odpowiada wymaganiom zadania. Ponadto, 'repeat-y' powtarzałoby obraz tylko w pionie, co jest całkowicie odwrotne do zamierzonego efektu. Błędy te wynikają z nieporozumienia dotyczącego sposobu działania właściwości CSS związanych z tłem oraz ich wartości. Kluczowe w projektowaniu jest zrozumienie, które aspekty wizualne są istotne dla doświadczeń użytkowników. Właściwa kontrola nad powtarzaniem tła ma znaczenie w kontekście estetyki i układu elementów strony. Dlatego ważne jest, aby dokładnie przemyśleć, jak obrazy będą się zachowywać w różnych kontekstach i na różnych urządzeniach, aby uniknąć niezamierzonych efektów wizualnych.

Pytanie 32

Ile razy zostanie wykonany blok pętli napisanej w PHP, przy założeniu, że zmienna sterująca nie jest modyfikowana podczas działania pętli?

for($i=0; $i <=10; $i+=2) {
       . . . . . .
}
A. 6
B. 0
C. 10
D. 5
Nieprawidłowe rozumienie działania pętli for w języku PHP może wynikać z niedokładnego zrozumienia jej składni oraz mechanizmu iteracji W tym przypadku pętla zaczyna się od wartości 0 i przyrasta o 2 aż do momentu gdy i przekroczy 10 Kluczowym elementem jest zrozumienie jak działa warunek i<=10 który wskazuje że pętla zakończy się po osiągnięciu wartości 10 ale zostanie wykonana również dla tej wartości Stąd liczba iteracji wynosi 6 a nie mniej lub więcej Jeżeli ktoś uznał że pętla wykonuje się 10 razy mógł zignorować fakt że krok iteracji wynosi 2 a nie 1 co jest typowym błędem gdy analizujemy pętle z niestandardowym przyrostem Inny błąd polega na przypuszczeniu że pętla nie wykona się wcale co wynika z nieprawidłowego założenia że warunek początkowy lub krok są błędnie skonfigurowane Warto zatem zawsze przeprowadzić symulację iteracji lub skorzystać z debuggera aby zrozumieć działanie pętli i sposób w jaki operują na niej warunki Dobrą praktyką jest również testowanie pętli z różnymi wartościami początkowymi i krokami aby uzyskać pewność co do oczekiwanego wyniku oraz uniknięcie błędów wynikających z nieprawidłowej interpretacji kodu

Pytanie 33

Aby skorzystać z relacji w zapytaniu, trzeba użyć słowa kluczowego

A. GROUP BY
B. IN
C. UNION
D. JOIN
Wybór słów kluczowych takich jak UNION, IN oraz GROUP BY w kontekście łączenia danych z różnych tabel jest nieprawidłowy i opiera się na błędnym zrozumieniu funkcji tych instrukcji. UNION jest używane do łączenia wyników dwóch lub więcej zapytań, ale nie łączy danych z różnych tabel na podstawie relacji. Umożliwia ono zestawienie wyników, które mają tę samą strukturę, co oznacza, że wszystkie zapytania muszą zwracać tę samą liczbę kolumn i odpowiadające im typy danych. IN z kolei służy do porównywania wartości w jednej kolumnie z zestawem wartości, ale nie operuje na relacjach między tabelami. Ta instrukcja jest bardziej przydatna w filtracji wyników, a nie w ich łączeniu. GROUP BY jest używane do grupowania wyników na podstawie określonych kolumn, co jest niezbędne w przypadku agregacji danych, ale również nie odnosi się bezpośrednio do łączenia tabel. Zrozumienie tych różnic jest kluczowe, aby unikać typowych błędów w projektowaniu zapytań SQL. Zamiast tego, należy skupić się na technikach łączenia danych przy użyciu JOIN, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi w systemach baz danych.

Pytanie 34

Rodzaj programowania, w którym seria poleceń (sekwencja instrukcji) jest traktowana jako program, nazywa się programowaniem

A. imperatywnym
B. funkcyjnym
C. stanowym
D. logicznym
Programowanie imperatywne to podejście, w którym programy są definiowane jako ciąg instrukcji, które komputer wykonuje w określonej kolejności. W tym modelu programista precyzyjnie określa kroki, które należy wykonać, aby osiągnąć zamierzony cel. Kluczowym elementem programowania imperatywnego jest zmiana stanu programu, co odnosi się do manipulacji danymi i kontrolowania przepływu wykonania. Przykładem mogą być języki programowania takie jak C, Java czy Python, które umożliwiają wykorzystanie zmiennych, pętli i instrukcji warunkowych. W praktyce, programowanie imperatywne jest często wykorzystywane w tworzeniu aplikacji, które wymagają precyzyjnego sterowania przepływem danych, na przykład w systemach operacyjnych czy oprogramowaniu sterującym. Zgodnie z zasadami dobrych praktyk, programowanie imperatywne promuje modularność, dzięki czemu kod jest bardziej zrozumiały i łatwiejszy w utrzymaniu. To podejście jest fundamentem dla wielu technik programistycznych, jak na przykład programowanie obiektowe, które rozszerza te zasady poprzez organizowanie kodu w oparciu o obiekty i klasy.

Pytanie 35

W CSS, aby zmienić kolor tekstu dowolnego elementu HTML po najechaniu na niego myszą, należy wykorzystać pseudoklasę

A. :coursor
B. :active
C. :hover
D. :visited
:hover jest pseudoklasą wykorzystywaną w CSS do stylizacji elementów w momencie, gdy użytkownik na nie najedzie kursorem. To bardzo przydatne narzędzie, pozwalające na interaktywne zmiany wyglądu strony internetowej, co znacznie poprawia doświadczenia użytkownika. Przykładem zastosowania może być zmiana koloru tekstu linków. Można to osiągnąć, definiując odpowiednie reguły CSS, takie jak: `a:hover { color: red; }`, co spowoduje, że linki zmienią kolor na czerwony, gdy na nie najedziemy. Pseudoklasa :hover jest zgodna z W3C CSS, a jej zastosowanie w projektowaniu stron zapewnia lepszą dostępność i intuitwność interfejsu. Warto pamiętać, że efekty hover powinny być subtelne i dobrze przemyślane, aby nie odwracać uwagi od głównych treści strony, ale jednocześnie umożliwić użytkownikom szybkie zauważenie działań, które mogą podjąć.

Pytanie 36

W PHP tablice asocjacyjne to struktury, w których

A. indeks może być dowolnym ciągiem znaków
B. elementy tablicy są zawsze numerowane od zera
C. w każdej pozycji tablicy znajduje się inna tablica
D. są co najmniej dwa wymiary
W przypadku niepoprawnych odpowiedzi, warto zwrócić uwagę na podstawowe koncepcje dotyczące tablic asocjacyjnych. Gdybyśmy uznali, że tablica asocjacyjna musi mieć przynajmniej dwa wymiary, byłoby to niezgodne z definicją, ponieważ tablice asocjacyjne w PHP mogą być jednowymiarowe. W rzeczywistości, tablica asocjacyjna to po prostu kolekcja par klucz-wartość, gdzie klucz może być unikalnym napisem, a wartość może być dowolnym typem danych. Odpowiedź sugerująca, że w każdej komórce tablicy przechowywana jest inna tablica, również jest myląca, ponieważ tablice asocjacyjne mogą przechowywać różne typy danych, a nie tylko inne tablice. Dlatego każde przechowywane dane mogą być różnorodne, co czyni je elastycznym narzędziem. Z kolei stwierdzenie, że elementy tablicy są zawsze indeksowane od liczby równej 0, odnosi się do standardowych tablic numerowanych w PHP, a nie tablic asocjacyjnych, gdzie klucze mogą przybierać różne wartości, a nie tylko liczby. Te nieporozumienia mogą prowadzić do nieefektywnego użycia tablic asocjacyjnych, co w praktyce skutkuje trudnościami w zarządzaniu danymi i ich dostępem. Aby efektywnie korzystać z tablic asocjacyjnych, kluczowe jest zrozumienie ich podstawowych właściwości oraz różnic w porównaniu do tablic numerowanych.

Pytanie 37

Jakiego języka należy użyć, aby stworzyć skrypt realizowany po stronie klienta w przeglądarki internetowej?

A. PHP
B. Python
C. Perl
D. JavaScript
JavaScript to język skryptowy, który super nadaje się do interakcji z użytkownikami w przeglądarkach. Właściwie to jedyny język z tej całej paczki, który działa po stronie klienta. To znaczy, że skrypty w JavaScript są interpretowane przez przeglądarkę, a nie przez serwer. Można go używać na przykład do zmieniania treści stron w locie, walidacji formularzy, animacji i różnych interaktywnych elementów. Jest też ważnym elementem w technologiach internetowych, obok frameworków jak React, Angular czy Vue.js, które pomagają tworzyć nowoczesne aplikacje webowe. Uważam, że każdy programista webowy powinien znać JavaScript przynajmniej na poziomie średnim, żeby wdrażać dobre praktyki dotyczące wydajności i UX. Standardy takie jak ECMAScript mówią, jak ten język ma działać, a jego wszechstronność sprawia, że obecnie jest jednym z najpopularniejszych języków programowania na świecie. Ostatnio dużo mówi się też o używaniu go po stronie serwera z Node.js.

Pytanie 38

W JavaScript metoda Math.random() ma na celu

A. zaokrąglić liczbę do najbliższej większej liczby całkowitej
B. zwrócić liczbę po zaokrągleniu
C. porównać dwie sekwencje znaków
D. zwrócić liczbę pseudolosową
Metoda Math.random() w języku JavaScript jest kluczowym narzędziem do generowania liczb pseudolosowych w zakresie od 0 (włącznie) do 1 (wyłącznie). Oznacza to, że każdorazowe wywołanie tej metody zwraca nową, losową wartość zmiennoprzecinkową, co jest przydatne w wielu zastosowaniach, takich jak tworzenie gier, symulacje, a także w algorytmach generujących dane testowe. Ważne jest, aby pamiętać, że Math.random() nie generuje liczb losowych w sensie statystycznym, lecz wykorzystuje algorytmy deterministyczne do produkcji wartości, co oznacza, że są one przewidywalne, jeśli znany jest stan początkowy. W praktyce, aby uzyskać liczbę losową w określonym zakresie, można zastosować następujący wzór: Math.floor(Math.random() * (max - min + 1)) + min, gdzie 'min' i 'max' to odpowiednio dolna i górna granica zakresu. To podejście jest zgodne z dobrymi praktykami w programowaniu, gdyż pozwala na elastyczne wykorzystanie losowości w aplikacjach.

Pytanie 39

Ile razy zostanie wykonana pętla w zamieszczonym skrypcie PHP?

$a = $x = 0;
do{
    $a++;
    $x = $x + $a;
}while($x != 21);
A. 7
B. 0
C. 5
D. 6
Pętla typu do-while jest specyficzna w tym że jej ciało wykonuje się przynajmniej raz przed sprawdzeniem warunku pętli. To różni ją od pętli while gdzie warunek jest sprawdzany przed wykonaniem kodu wewnątrz pętli. W analizowanym skrypcie zmienne $a i $x są inicjalizowane wartością 0 i najpierw $a jest inkrementowane co powoduje że w pierwszej iteracji $x przyjmuje wartość 1. W każdej kolejnej iteracji do $x dodaje się aktualną wartość $a która rośnie o 1 w każdym kroku. Częstym błędem jest zakładanie że pętla do-while wykona się tyle razy ile wskazuje różnica między wartościami początkowymi zmiennych a wartością końcową warunku. Jednak w tym przypadku każda iteracja przyczynia się do sumowania wartości rosnącej $a z $x co wpływa na liczbę iteracji. Przy złym zrozumieniu mechanizmu może się wydawać że pętla wykona mniej lub więcej iteracji zwłaszcza gdy nie prześledzimy krok po kroku wartości zmiennych. Obliczenia są kluczowe aby określić że pętla do momentu osiągnięcia $x równego 21 wykonuje się dokładnie 6 razy a nie 5 czy 7 co podkreśla znaczenie dokładności w analizie kodu i zrozumieniu jego działania w kontekście iteracji i warunków kończących pętlę.

Pytanie 40

Jaki typ powinien być wykorzystany, aby pole danych mogło przyjmować liczby zmiennoprzecinkowe?

A. CHAR
B. FLOAT
C. VARCHAR
D. INT
Typ danych INT służy do przechowywania liczb całkowitych, co oznacza, że nie może on przyjmować wartości z miejscami po przecinku. W zastosowaniach, gdzie wymagana jest precyzja dziesiętna, INT nie będzie wystarczający i może prowadzić do utraty informacji, co jest nieakceptowalne w kontekście obliczeń finansowych czy inżynieryjnych. CHAR oraz VARCHAR to typy danych używane do przechowywania tekstu, a ich zastosowanie w kontekście liczb rzeczywistych jest niewłaściwe. CHAR jest statycznym typem, który alokuje stałą ilość pamięci, niezależnie od długości przechowywanego tekstu, co może prowadzić do marnotrawstwa zasobów. Z kolei VARCHAR jest dynamiczny i może przechowywać zmienną długość tekstu, ale również nie potrafi reprezentować liczb w formie liczbowej. Użycie CHAR czy VARCHAR dla wartości liczbowych może skutkować błędami w obliczeniach, ponieważ traktują one numery jako tekst, co uniemożliwia jakiekolwiek operacje matematyczne na tych danych. W kontekście baz danych, ważne jest, aby dobierać odpowiednie typy danych dla przechowywanych wartości, aby uniknąć problemów z wydajnością oraz integralnością danych.