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: 12 kwietnia 2026 11:30
  • Data zakończenia: 12 kwietnia 2026 12:06

Egzamin zdany!

Wynik: 35/40 punktów (87,5%)

Wymagane minimum: 20 punktów (50%)

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

Kod programu wraz z komentarzami oraz opisem algorytmów i metod stanowi dokumentację

A. audiowizualną.
B. urzędową.
C. graficzną.
D. techniczną.
Poprawnie – mówimy tutaj o dokumentacji technicznej. Kod programu razem z komentarzami w kodzie, opisem algorytmów, struktur danych, interfejsów, sposobu działania poszczególnych modułów czy klas to właśnie klasyczny przykład dokumentacji technicznej. W branży IT przyjmuje się, że dokumentacja techniczna jest skierowana głównie do programistów, administratorów, czasem też architektów systemów, czyli osób, które będą rozwijać, utrzymywać lub integrować dany system. Nie jest to materiał marketingowy ani „urzędowy”, tylko coś, co ma pomóc zrozumieć jak system działa od środka. W praktyce dokumentacja techniczna obejmuje na przykład: komentarze w kodzie źródłowym (zgodne z konwencją danego języka, np. PHPDoc, JSDoc), opisy algorytmów w plikach README, wiki projektowe, diagramy UML, schematy przepływu danych, opisy endpointów API, a nawet instrukcje uruchomienia środowiska developerskiego. Moim zdaniem im lepiej zrobiona taka dokumentacja, tym łatwiej jest później komuś „wejść” w projekt bez zadawania dziesiątek pytań. Dobre praktyki mówią, żeby dokumentacja techniczna była aktualna, wersjonowana razem z kodem (np. w Git), a komentarze w kodzie nie powtarzały tego, co oczywiste, tylko wyjaśniały „dlaczego tak”, a nie „co robi ta linijka”. W projektach webowych dokumentacja techniczna opisuje na przykład, jak działa logika logowania użytkownika, jak są zrobione zapytania do bazy, jakie są ograniczenia wydajnościowe. To wszystko pozwala utrzymać spójność systemu i ułatwia debugowanie oraz rozwój nowych funkcji. Dlatego odpowiedź „techniczną” jest jak najbardziej zgodna z tym, jak branża rozumie dokumentację w kontekście programowania i algorytmów.

Pytanie 2

Jakie skutki przyniesie zastosowanie przedstawionego formatowania CSS dla nagłówka trzeciego stopnia?

<style> h3 { background-color: grey; } </style> ... <h3 style="background-color: orange;"> Rozdział 1.2.2. </h3>
A. kolor tekstu będzie pomarańczowy
B. kolor tekstu będzie szary
C. tło będzie pomarańczowe
D. tło będzie szare
W tym przykładzie pokazano dwa różne sposoby stylizacji za pomocą CSS: styl wbudowany i styl zewnętrzny. Styl wbudowany ma wyższy priorytet, bo jest przypisany bezpośrednio do elementu HTML, a to oznacza, że w nagłówku trzeciego stopnia kolor tła będzie pomarańczowy. To ma sens, bo czasem musimy przeskoczyć ogólne reguły stylizacji, żeby wprowadzić jakieś szczególne zmiany. Używanie stylów wbudowanych może być jednak ryzykowne, bo jak się ich nagromadzi, to ciężko się potem w tym połapać. Dlatego lepiej korzystać z zewnętrznych stylów – są bardziej uporządkowane i pozwalają na łatwe powtarzanie kodu CSS. Ważne jest też, żeby nie łączyć HTML z CSS w sposób, który wprowadza zamęt, bo to ułatwia życie i sprawia, że kod jest bardziej zrozumiały. Wiedza na temat priorytetów w CSS jest kluczowa dla każdego, kto chce dobrze projektować strony i mieć wszystko ładnie poukładane.

Pytanie 3

Które ze znaczników HTML umożliwią wyświetlenie na stronie tekstu w jednym wierszu, jeżeli żadne formatowanie CSS nie zostało zdefiniowane?

Dobre strony mojej strony

A. <h3>Dobre strony </h3><h3 style=”letter-spacing:3px”>mojej strony</h3>
B. <span>Dobre strony </span><span style=”letter-spacing:3px”>mojej strony</span>
C. <p>Dobre strony </p><p style=”letter-spacing:3px”>mojej strony</p>
D. <div>Dobre strony </div><div style=”letter-spacing:3px”>mojej strony</div>
Niestety, Twoja odpowiedź nie była prawidłowa. Wybrałeś jedną z odpowiedzi zawierających znaczniki blokowe: <p>, <h3> lub <div>. Te znaczniki domyślnie zaczynają nowy wiersz przed i po swoim zakończeniu, co oznacza, że tekst zawarty w kolejnych takich znacznikach będzie wyświetlany w oddzielnych wierszach. To jest dobre podejście, kiedy chcemy utworzyć strukturę dokumentu z wyraźnie zdefiniowanymi sekcjami. Jednak w przypadku pytania, które polegało na wyświetlaniu tekstu w jednym wierszu bez dodatkowego formatowania CSS, odpowiedzi z użyciem tych znaczników są niepoprawne. W takim przypadku powinniśmy skorzystać z znacznika liniowego <span>, który nie wprowadza nowych linii. Ważne jest, aby dobrze rozumieć różnice między znacznikami liniowymi i blokowymi, ponieważ mają one istotne znaczenie dla struktury i wyglądu naszej strony internetowej.

Pytanie 4

1       <script>
2       const liczba = 1;
3       let gora = 10, dol = 1;
4       let podaj = parseInt(prompt("Podaj liczbę całkowitą z zakresu <1-10>"));
5       liczba = Math.random() * ( gora - dol + 1 ) + dol;
6       liczba = parseInt(liczba);
7       if (liczba == podaj) {
8           document.write("Liczba została odgadnięta");
9       } else {
10          document.write("Niestety nie tym razem");
11      }
12      </script>
Przedstawiony fragment kodu JavaScript powinien wylosować liczbę całkowitą z zakresu <1 , 10> i porównać ją z liczbą podaną przez użytkownika w oknie dialogowym. Skrypt po uruchomieniu generuje błąd, którego przyczyną jest
A. niepotrzebne użycie konwersji z funkcji prompt do liczby całkowitej.
B. błędna składnia deklaracji zmiennych gora i dol w drugiej linii skryptu.
C. błędna składnia instrukcji warunkowej if ... else.
D. przypisanie wartości do stałej liczba w piątej linii skryptu .
Przyczyną błędu w tym skrypcie jest próba nadpisania stałej zadeklarowanej słowem kluczowym const. W drugiej linii kodu mamy `const liczba = 1;`, czyli tworzymy stałą o nazwie `liczba` i nadajemy jej wartość początkową 1. Zgodnie ze specyfikacją ECMAScript, zmienne zadeklarowane przez `const` nie mogą być później modyfikowane poprzez przypisanie. Innymi słowy: raz ustawiona wartość const jest niezmienna. Tymczasem w piątej linii skryptu występuje instrukcja `liczba = Math.random() * (gora - dol + 1) + dol;`, która dokładnie próbuje przypisać nową wartość do tej stałej. Przeglądarka reaguje na to błędem typu `TypeError` lub `Assignment to constant variable`, i skrypt się sypie zanim w ogóle dojdzie do porównania z wartością wprowadzoną przez użytkownika. W praktyce, jeśli chcemy losować liczbę, zmienna powinna być zadeklarowana przez `let` lub `var`, np. `let liczba;` w drugiej linii, a dopiero potem przypisywać wartość wylosowaną z `Math.random()`. Dobra praktyka jest taka, żeby do `const` dawać rzeczy, które naprawdę nie będą zmieniane w logice programu, np. `const GORA = 10; const DOL = 1;` albo stałe konfiguracyjne, adresy URL API itp. Natomiast zmienne, które w czasie działania skryptu mają się zmieniać (liczniki pętli, wyniki obliczeń, losowania), deklarujemy jako `let`. Z mojego doświadczenia jednym z częstszych błędów początkujących jest właśnie mechaniczne używanie `const` „bo jest nowoczesne” bez zrozumienia, że to blokuje późniejsze przypisania. Warto też zauważyć, że sama konstrukcja losowania liczby całkowitej z przedziału <1,10> jest poprawna: `Math.random()` daje liczbę z zakresu <0,1), potem skalujemy ją do odpowiedniego przedziału i na końcu obcinamy część ułamkową przez `parseInt` lub lepiej `Math.floor`. Gdyby `liczba` była zadeklarowana jako `let`, skrypt by działał zgodnie z założeniami.

Pytanie 5

W języku MySQL należy wykorzystać polecenie REVOKE, aby użytkownikowi anna cofnąć możliwość wprowadzania zmian wyłącznie w definicji struktury bazy danych. Polecenie, które służy do odebrania tych uprawnień, ma następującą formę

A. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
D. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
Polecenie REVOKE w MySQL jest używane do odbierania przydzielonych uprawnień użytkownikom. W przypadku użytkownika 'anna', aby odebrać mu prawa do modyfikacji struktury bazy danych, należy użyć polecenia REVOKE z odpowiednimi uprawnieniami. Wybór REVOKE CREATE ALTER DROP jest poprawny, ponieważ obejmuje kluczowe prawa związane z zarządzaniem strukturą tabeli. Uprawnienie CREATE pozwala na tworzenie nowych obiektów, ALTER umożliwia modyfikację istniejących obiektów, a DROP pozwala na ich usuwanie. Przydzielając te uprawnienia, użytkownik ma pełną kontrolę nad strukturą bazy danych. Odbierając te uprawnienia, ograniczamy możliwości użytkownika do modyfikacji struktury, co jest kluczowe w kontekście zarządzania bezpieczeństwem bazy danych i zapewnienia integralności danych. Przykładem zastosowania tego polecenia może być sytuacja, w której administrator bazy danych chce, aby użytkownik miał jedynie prawa do wprowadzania danych, ale nie do zmiany ich struktury. W takich przypadkach ważne jest, aby precyzyjnie definiować uprawnienia użytkowników, co może pomóc w unikaniu nieautoryzowanych zmian i potencjalnych utrat danych. Należy również odwołać się do standardów SQL, które definiują zarządzanie uprawnieniami w obiektach bazy danych, co jest kluczowym elementem każdego systemu zarządzania bazą danych.

Pytanie 6

Jaki znacznik powinien być zastosowany, aby wprowadzić nową linię tekstu bez tworzenia akapitu w dokumencie internetowym?

A. </br>
B. <br>
C. <p>
D. </b>
Znak <br> jest używany w HTML do wstawiania przełamania linii w tekstach, co pozwala na kontynuację pisania w tym samym akapicie bez jego formalnego kończenia. Jest to element blokowy, który nie tworzy nowego akapitu, co jest istotne w kontekście układu strony i czytelności tekstu. Przykładem zastosowania może być sytuacja, gdy chcemy umieścić kilka zdań w jednej sekcji, ale z pewnymi odstępami między nimi, na przykład: 'To jest pierwsze zdanie.<br>To jest drugie zdanie, które zaczyna się w nowej linii, ale nie jest nowym akapitem.' Zastosowanie znacznika <br> jest zgodne z zasadami semantyki HTML i sprzyja tworzeniu czytelnych i dobrze zorganizowanych treści. Praktyki branżowe zalecają stosowanie tego znacznika głównie w kontekście formatowania tekstu, w którym istotne jest zachowanie ciągłości akapitu oraz uniknięcie zbędnych przerw w treści.

Pytanie 7

Przedstawiona ikona funkcji edytora grafiki rastrowej o nazwie "różdżka" umożliwia

Ilustracja do pytania
A. pobranie wskazanego koloru i ustawienie go jako aktywny.
B. wybiórcze rozsmarowywanie koloru za pomocą pędzla.
C. zaznaczenie obszaru na podstawie koloru.
D. odręczne zaznaczanie obszarów przez przeciąganie po nich kursora.
Dobrze! Odpowiedź jest poprawna. Narzędzie 'różdżka' w edytorze grafiki rastrowej służy do zaznaczania obszarów na podstawie koloru. Jest to bardzo przydatne, gdy chcemy zaznaczyć obszar o jednolitym kolorze lub gradientem kolorów. Działa ona na zasadzie kliknięcia w dany punkt obrazu, a następnie automatycznego zaznaczenia pikseli o kolorze zbliżonym do tego, w który kliknęliśmy. Użycie tej funkcji jest zdecydowanie efektywniejsze niż ręczne zaznaczanie obszarów, szczególnie dla skomplikowanych kształtów lub dużych obszarów o podobnej barwie. Ponadto, narzędzie to jest zgodne ze standardami i dobrą praktyką w branży edycji grafiki rastrowej, a jego umiejętne wykorzystanie może znacznie przyspieszyć prace edycyjne i zapewnić lepszą precyzję.

Pytanie 8

Jaką wartość zwróci funkcja ```empty($a);``` w języku PHP, gdy zmienna ```$a``` będzie miała wartość liczbową równą 0?

A. NULL
B. FALSE
C. TRUE
D. 0
Funkcja empty() w PHP służy do sprawdzania, czy zmienna jest pusta. Zmienna uznawana jest za pustą, jeśli nie istnieje, ma wartość NULL, jest równoważna FALSE, jest pustym ciągiem (''), jest pustą tablicą lub ma wartość 0. W przypadku zmiennej $a, która ma wartość liczbową równą 0, funkcja empty($a) zwróci TRUE, co oznacza, że zmienna jest uznawana za pustą. Kluczowym aspektem jest zrozumienie, że w PHP wartość 0 jest interpretowana jako fałszywa w kontekście logicznym, a tym samym spełnia kryteria funkcji empty(). Praktyczne zastosowanie tej funkcji można zauważyć w wielu aspektach programowania: na przykład podczas walidacji danych wejściowych w formularzach, gdzie chcemy upewnić się, że użytkownik nie pozostawił pustych pól. Dobrą praktyką jest użycie empty() zamiast bezpośrednich porównań, ponieważ jest bardziej odporna na różne typy danych oraz zrozumiała w kontekście semantycznym, co poprawia czytelność kodu.

Pytanie 9

Które z poniższych poleceń pozwala na dodanie kolumny zadanie_kompletne do tabeli zadania?

A. ALTER TABLE zadania ADD COLUMN zadanie_kompletne int
B. ADD COLUMN zadanie_kompletne WITH zadania
C. CREATE INDEX zadania ADD COLUMN zadanie_kompletne int
D. INSERT INTO zadania VALUES zadanie_kompletne
Dodanie kolumny do istniejącej tabeli w relacyjnej bazie danych może być realizowane za pomocą polecenia ALTER TABLE. To polecenie jest standardem SQL i jest wspierane przez większość systemów zarządzania bazami danych, takich jak MySQL, PostgreSQL, Oracle czy Microsoft SQL Server. W przypadku zapytania 'ALTER TABLE zadania ADD COLUMN zadanie_kompletne int', polecenie to modyfikuje strukturę tabeli 'zadania', dodając nową kolumnę o nazwie 'zadanie_kompletne', która będzie przechowywać dane typu całkowitego (int). Praktycznym przykładem zastosowania tego polecenia może być system zarządzania projektami, w którym chcemy śledzić status zadań. Po dodaniu tej kolumny, możemy wprowadzać wartości 0 lub 1, które mogą reprezentować, czy zadanie zostało ukończone, czy nie. Użycie ALTER TABLE jest niezbędne, gdyż inne polecenia, takie jak CREATE INDEX czy INSERT INTO, służą do innych celów, takich jak tworzenie indeksów lub wstawianie danych, a nie do modyfikacji struktury tabeli. W praktyce, aby upewnić się, że zmiany są zgodne z wymaganiami systemu, zaleca się zawsze wykonanie kopii zapasowej bazy danych przed przeprowadzeniem operacji na strukturze tabeli.

Pytanie 10

W dokumencie HTML umieszczono tekst sformatowany określonym stylem. Aby wprowadzić w treści kilka słów o zróżnicowanym stylu, należy użyć znacznika

A. <section>
B. <hr>
C. <table>
D. <span>
Znacznik <span> jest używany w HTML do definiowania niewielkich fragmentów tekstu, które można stylizować niezależnie od reszty treści. Przy jego pomocy możemy wprowadzać różne style CSS, co pozwala na skomponowanie bardziej zróżnicowanego wizualnie tekstu. Na przykład, możemy użyć znacznika <span> do podkreślenia ważnych słów w zdaniu, zmieniając ich kolor lub czcionkę. Ważne jest, aby znacznik <span> nie wprowadzał żadnych zmian semantycznych w treści; jest to znacznik czysto stylistyczny. W praktyce, korzystając z CSS, możemy zastosować różne klasy do elementów <span>, co zwiększa elastyczność w zakresie stylizacji. Przykład: <span class='highlight'>ważne słowo</span> może zostać zapisane w arkuszu stylów jako .highlight { background-color: yellow; }. To podejście jest zgodne z zasadami semantycznego HTML oraz wykorzystania CSS, co jest rekomendowaną praktyką w tworzeniu stron internetowych.

Pytanie 11

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia między klientem a serwerem oraz umożliwia wymianę danych bez przeładowania całej strony WWW?

A. AJAX
B. XML
C. PHP
D. YBScript
AJAX, czyli Asynchronous JavaScript and XML, to naprawdę fajna technika, która pozwala na komunikację między klientem a serwerem bez konieczności przeładowywania całej strony. To znaczy, że możemy wysyłać i odbierać dane w tle, co jest mega wygodne. Dzięki temu możemy np. aktualizować tylko część strony, kiedy użytkownik coś kliknie. Dużo nowoczesnych aplikacji, jak Gmail, korzysta z AJAX, żeby dynamicznie ładować i wysyłać e-maile. W praktyce, gdy użytkownik wysyła wiadomość, to nie musi czekać, aż załaduje się cała strona, żeby zobaczyć nową treść. AJAX współpracuje z różnymi technologiami, jak JSON, co ułatwia wymianę danych w formacie, który JavaScript bez problemu przetwarza. Generalnie, standardy webowe mówią, że warto korzystać z AJAX, bo poprawia to wydajność i responsywność aplikacji. Dlatego jest to narzędzie, które każdy nowoczesny deweloper stron powinien mieć w swoim arsenale.

Pytanie 12

Która definicja CSS wskazuje na formatowanie nagłówka h1: tekst z przekreśleniem, z odstępami między słowami wynoszącymi 10 px oraz w kolorze czerwonym?

Ilustracja do pytania
A. C
B. D
C. B
D. A
Błędne odpowiedzi są efektem nie do końca właściwego zastosowania CSS w kontekście tego, co pytanie wymagało. Odpowiedź B używa 'letter-spacing: 10px;', co zmienia odstępy między literami, a nie wyrazami, co jest dość istotne w stylizacji. Można się pomylić i myśleć, że to to samo, ale różnią się tym, co robią. Odpowiedź C używa 'line-height: 10px;', ale to też nie spełnia wymagań co do odstępów między wyrazami. Z kolei 'text-transform: none;' to nie to, czego szukasz w tym pytaniu, więc tu też można się pogubić. Odpowiedź D z kolei stosuje 'text-decoration: underline;', a to podkreślenie, a nie nadkreślenie, co też mija się z celem. Ważne, żeby znać te różnice między właściwościami CSS, bo to klucz do skutecznej stylizacji w zgodzie z tym, co projekt wymaga. Dobre użycie CSS nie tylko sprawia, że strona wygląda lepiej, ale też poprawia dostępność i użyteczność.

Pytanie 13

W podanym przykładzie pseudoklasa hover spowoduje, że styl pogrubiony zostanie przypisany

a:hover { font-weight: bold; }
A. każdemu odnośnikowi bez względu na jego bieżący stan
B. odnośnikowi, gdy kursor myszy na niego najedzie
C. wszystkim odnośnikom, które nie były odwiedzane
D. wszystkim odnośnikom, które były wcześniej odwiedzane
Pseudoklasa hover jest jedną z najczęściej używanych pseudoklas w CSS stosowaną do stylizacji elementów HTML w momencie, gdy użytkownik najeżdża kursorem myszy na dany element. W podanym przykładzie kodu CSS zastosowano pseudoklasę hover dla elementów a czyli odnośników. Oznacza to, że gdy kursor myszy znajdzie się nad jakimkolwiek odnośnikiem, jego styl zmieni się na pogrubiony dzięki właściwości font-weight: bold. Jest to bardzo przydatne w interaktywnej stylizacji stron internetowych, ponieważ pozwala użytkownikom na wizualne odróżnienie elementów, z którymi mogą wchodzić w interakcję. Praktycznym zastosowaniem tej pseudoklasy jest zwiększenie użyteczności i estetyki strony poprzez subtelne wskazanie elementów interaktywnych, takich jak menu nawigacyjne czy linki w treści. Warto pamiętać o zachowaniu spójności stylizacji dla wszystkich stanów odnośników, co jest zalecane jako dobra praktyka w projektowaniu responsywnych interfejsów użytkownika. Pseudoklasa hover, jako część kaskadowego arkusza stylów, pozwala na dynamiczną interakcję z elementami strony, co znacząco wpływa na doświadczenia użytkownika.

Pytanie 14

Na tabeli muzyka, przedstawionej na rysunku, zostało wykonane następujące zapytanie SQL. Jaki wynik zwróci ta kwerenda?

SELECT wykonawca FROM `muzyka` WHERE wykonawca LIKE 'C%w';
IDtytul_plytywykonawcarok_nagraniaopis
1Czas jak rzekaCzeslaw Niemen2005Przyjdz W Taka Noc itd.
2IkonaStan Borys2014
3AerolitCzeslaw Niemen2017Winylowa reedycja płyty „Aerolit”.
4JourneyMikolaj Czechowski2013
A. Czeslaw, Niemen
B. Czeslaw, Czechowski
C. Czeslaw
D. pusty wynik
Niepoprawna odpowiedź wynika ze złego zrozumienia, jak działa operator LIKE w zapytaniach SQL. Operator LIKE jest używany do porównania wartości z określonym wzorcem. W naszym przypadku, wzorzec to 'C%w', gdzie '%' oznacza dowolne zero lub więcej znaków. Czyli szukamy wykonawców, których nazwy zaczynają się na 'C' i kończą na 'w'. Błędne odpowiedzi sugerują, że niezrozumienie polega na tym, że '%w' miałoby oznaczać 'wszystkie nazwy kończące się na w', co nie jest prawdą. W rzeczywistości, '%w' oznacza 'dowolne znaki, po których następuje litera w'. Dlatego, żadne z podanych wykonawców nie spełnia tego kryterium, a wynik zapytania jest pusty. To ważne, aby zrozumieć, jak działają wzorce w SQL, gdyż są one bardzo użyteczne przy wyszukiwaniu danych w bazie.

Pytanie 15

Jaką wartość w formacie RGB będzie miała barwa oznaczona kodem heksadecymalnym: #1510FE?

A. rgb(21, 16, FE)
B. rgb(21, 16, 255)
C. rgb(21, 16, 254)
D. rgb(15, 10, FE)
Odpowiedź rgb(21, 16, 254) jest dobra, bo te wartości RGB pochodzą z kodu heksadecymalnego #1510FE. W tym kodzie każda para cyfr pokazuje, jak mocno świeci dany kolor: od 00, co oznacza brak koloru, do FF, gdzie mamy pełną intensywność. W naszym przypadku, pierwsza para '15' to kolor czerwony, '10' to zielony, a 'FE' to niebieski. Jak to przeliczymy na dziesiętny, to '15' daje nam 21, '10' daje 16, a 'FE' to 254. I stąd mamy rgb(21, 16, 254). Te wartości są super przydatne, na przykład przy tworzeniu stylów CSS, gdzie kolory są podstawą. Warto ogarnąć, jak przerabiać kolory z jednego formatu na drugi – to naprawdę pomaga w projektowaniu grafiki i stron www.

Pytanie 16

Która z czynności NIE WPŁYNIE na wielkość zajmowanej pamięci pliku graficznego?

A. Kompresja
B. Interpolacja
C. Zmiana rozdzielczości obrazu
D. Skalowanie obrazu przy użyciu atrybutów HTML
Skalowanie obrazu za pomocą atrybutów HTML nie wpływa na rozmiar pliku graficznego, ponieważ ta operacja odbywa się po stronie klienta, w przeglądarce, a nie na samym pliku. Gdy obraz jest wyświetlany w HTML, atrybuty takie jak 'width' i 'height' mogą zmienić jego wizualny rozmiar na stronie, ale nie modyfikują samego pliku. W praktyce oznacza to, że niezależnie od tego, jak duży lub mały wyświetlany jest obraz, jego rzeczywisty rozmiar na dysku pozostaje niezmieniony. Dobrą praktyką w web designie jest stosowanie odpowiednich rozmiarów i formatów obrazów w zależności od kontekstu, co może poprawić szybkość ładowania strony i doświadczenie użytkownika. Warto również pamiętać, że zbyt duże obrazy mogą powodować dłuższy czas ładowania, co wpływa na SEO i oceny wydajności witryny. Dlatego zaleca się optymalizację obrazów przed ich dodaniem do strony, co jest bardziej efektywne niż poleganie na zmianie rozmiarów przez HTML.

Pytanie 17

W systemie zarządzania bazą danych MySQL, aby uzyskać listę wszystkich przywilejów przyznanych użytkownikowi anna, można użyć polecenia

A. SHOW GRANTS FOR anna;
B. SELECT GRANTS FOR anna;
C. GRANT * TO anna;
D. REVOKE GRANTS FROM anna;
Odpowiedź 'SHOW GRANTS FOR anna;' jest trafna. To polecenie w MySQL to coś jak standard do wyświetlania przydzielonych uprawnień dla konkretnego użytkownika. Dzięki temu administrator bazy danych może szybko zobaczyć, co użytkownik o imieniu 'anna' może zrobić. Na przykład, jeśli chcemy wiedzieć, jakie operacje są dozwolone dla tego użytkownika, to właśnie to polecenie będzie na to najlepsze. Przydaje się to zwłaszcza przy audytach czy rozwiązywaniu problemów z dostępem. Warto też dodać, że w MySQL można przypisywać różnorodne uprawnienia, na przykład SELECT, INSERT, UPDATE, czy DELETE, a także konkretnym bazom danych czy tabelom. Regularne sprawdzanie uprawnień to dobra praktyka, bo pomaga utrzymać bezpieczeństwo danych i zminimalizować ryzyko nieautoryzowanego dostępu. Znajomość polecenia 'SHOW GRANTS' jest naprawdę ważna, zwłaszcza w większych systemach, gdzie kontrola dostępu odgrywa istotną rolę.

Pytanie 18

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

A. year
B. upper
C. now
D. len
Funkcja SQL now() jest funkcją, która nie wymaga żadnych argumentów, a jej głównym celem jest zwrócenie bieżącej daty i godziny w formacie odpowiednim dla systemu zarządzania bazą danych. Funkcja ta jest często używana w aplikacjach, które wymagają dynamicznego śledzenia czasu, takich jak rejestrowanie daty i godziny wstawiania danych do tabel. W standardzie SQL, funkcje tego rodzaju są kluczowe dla operacji związanych z czasem. Na przykład, używając zapytania SELECT now(); zwracana jest bieżąca data i godzina. Funkcja ta jest szczególnie przydatna w kontekście transakcji oraz w kontrolowaniu stanu danych w bazie. W wielu popularnych systemach zarządzania bazą danych, takich jak MySQL czy PostgreSQL, now() jest szeroko wykorzystywana do synchronizacji operacji bazodanowych z aktualnym czasem. Warto zaznaczyć, że funkcja ta nie przyjmuje żadnych parametrów, co odróżnia ją od innych funkcji, które wymagają przynajmniej jednego argumentu. Dlatego now() jest idealnym przykładem funkcji, która działa autonomicznie i zwraca wartość bez potrzeby podawania dodatkowych informacji.

Pytanie 19

Termin "front-end" w kontekście projektowania stron WWW odnosi się do

A. działania skryptów oraz aplikacji realizowanych po stronie serwera WWW
B. organizacji informacji na serwerze WWW
C. bazy danych z danymi publikowanymi na stronie
D. interfejsu witryny internetowej powiązanego z technologiami operującymi w przeglądarce internetowej
Front-end to wszystko to, co widzisz w przeglądarce, czyli ogólnie mówiąc, wygląd strony i to, jak się z nią bawisz. Mówię tu o kolorach, czcionkach, układzie czy różnych akcjach, które możesz wykonać. Technologie jak HTML, CSS i JavaScript są tu na czołowej pozycji, bo to dzięki nim strona jest taka interaktywna i przyjemna dla oka. Przykłady? Budowa responsywnych interfejsów, które zmieniają rozmiar na różnych ekranach, albo skrypty, które potrafią zmieniać treści na stronie bez przeładowania jej. Dobrze jest też pomyśleć o tym, żeby strona ładowała się jak najszybciej, bo to wpływa na to, jak użytkownicy będą ją odbierać. A jeśli znasz nowe frameworki, jak React czy Angular, to naprawdę ułatwia stworzenie bardziej złożonych aplikacji webowych, co w dzisiejszych czasach jest mega ważne.

Pytanie 20

Model, w którym wszystkie informacje są zgromadzone w jednej tabeli, określa się jako struktura prostych baz danych

A. jednorodnym
B. hierarchicznym
C. sieciowym
D. relacyjnym
Model jednorodny, znany też jako model płaskiej tabeli, to taka struktura bazy, w której trzymamy wszystkie dane w jednej tabeli. To najprostsza opcja do zrozumienia i wdrożenia, dlatego świetnie nadaje się do małych i prostych aplikacji. W tym modelu dane są poukładane w wiersze i kolumny – każdy wiersz to jakiś rekord, a kolumny to różne cechy lub atrybuty tego rekordu. Na przykład, wyobraź sobie tabelę z informacjami o książkach: każda książka to osobny wiersz, a kolumny mogą zawierać tytuł, autora, rok wydania czy ISBN. Oczywiście, ma to swoje ograniczenia, zwłaszcza jeśli chodzi o wydajność i zarządzanie dużymi zbiorami danych. Dlatego w praktyce często przechodzi się na bardziej zaawansowane modele, jak relacyjny. Mimo to, model jednorodny sprawdza się w prototypowaniu albo tam, gdzie liczy się prostota i szybki dostęp do danych. Warto też wiedzieć, że nie korzysta się tu do końca ze standardów typu SQL, bo nie ma relacji między danymi.

Pytanie 21

Podczas realizacji grafiki na stronę internetową konieczne jest wycięcie jedynie jej części. Jak nazywa się ta czynność?

A. łącznie warstw
B. odwrócenie obrazu
C. kadrowanie
D. zmiana rozmiaru
Kadrowanie to proces, który polega na przycinaniu obrazu w celu uzyskania określonego obszaru, eliminując zbędne fragmenty. W kontekście przygotowywania grafiki na stronę internetową, kadrowanie jest kluczowe, ponieważ pozwala na dostosowanie wymiarów obrazu do wymagań projektu, co jest szczególnie istotne w kontekście responsywnego designu. Przykładowo, jeśli mamy zdjęcie o wysokiej rozdzielczości, a chcemy je wykorzystać jako tło na stronie, kadrowanie pozwala nam wybrać najważniejszy fragment, który będzie najlepiej komponował się w ustalonym układzie. W praktyce kadrowanie nie tylko poprawia estetykę grafiki, ale także wpływa na jej wydajność, zmniejszając rozmiar pliku, co jest korzystne dla szybkości ładowania strony. Warto również zaznaczyć, że dobrym zwyczajem jest zachowanie proporcji obrazu podczas kadrowania, co można osiągnąć przy pomocy narzędzi takich jak Adobe Photoshop czy GIMP, które oferują funkcje do precyzyjnego wycinania i dostosowywania wymiarów.

Pytanie 22

Jednym z atrybutów tabeli ksiazki jest pole czyWypozyczona, które może mieć dwie wartości: true lub false. Jaki typ danych będzie najbardziej odpowiedni dla tego pola?

A. CHAR
B. BOOLEAN
C. DOUBLE
D. VARCHAR(5)
Odpowiedź 'BOOLEAN' jest poprawna, ponieważ jest to typ danych, który idealnie odpowiada na potrzeby pola 'czyWypozyczona', które przyjmuje jedynie dwie wartości: true (prawda) oraz false (fałsz). W przypadku baz danych, typ BOOLEAN jest optymalny do reprezentowania stanów logicznych, co pozwala na efektywniejsze zarządzanie danymi oraz ich przetwarzanie. Przykładowo, w systemie zarządzania biblioteką, pole 'czyWypozyczona' może być używane do szybkiego filtrowania książek, które są aktualnie dostępne lub wypożyczone. Użycie typu BOOLEAN eliminuje potrzebę zbędnych konwersji typu, zwiększa czytelność kodu oraz ułatwia optymalizację zapytań SQL. W praktyce, stosowanie typu BOOLEAN jest zgodne z najlepszymi praktykami projektowania baz danych, które promują przejrzystość i zgodność z modelowaniem danych. Warto również zauważyć, że w niektórych systemach zarządzania bazami danych (np. PostgreSQL) typ BOOLEAN jest natywnie obsługiwany, co dodatkowo wpływa na wydajność operacji na danych.

Pytanie 23

Pierwszym etapem w procesie konwersji sygnału analogowego na cyfrowy jest

A. filtracja
B. kwantyzacja
C. próbkowanie
D. kodowanie
Próbkowanie to naprawdę ważny proces, jeśli chodzi o przekształcanie sygnałów analogowych w cyfrowe. Chodzi w zasadzie o to, że co pewien czas mierzymy te wartości sygnału, co pozwala nam na późniejsze przetwarzanie. Wyobraź sobie, że fala dźwiękowa, która jest cały czas w ruchu, nagle staje się zestawem punktów, które możemy analizować w systemach cyfrowych. Na przykład, w nagrywaniu muzyki cyfrowej wykorzystujemy próbkowanie z częstotliwością 44,1 kHz. To oznacza, że wartość fali jest mierzona 44,100 razy na sekundę. To ważne, żeby częstotliwość próbkowania była dostatecznie wysoka, bo musimy spełniać standardy, takie jak zasada Nyquista, żeby mieć pewność, że nie stracimy jakości dźwięku. Właściwie przeprowadzone próbkowanie jest kluczowe, żeby uzyskać dobry sygnał cyfrowy, co jest istotne w różnych branżach, od telekomunikacji po multimedia.

Pytanie 24

Jaką rolę odgrywa kwerenda krzyżowa w programie MS Access?

A. Prezentuje zliczone wartości z pola i układa je w wiersze oraz kolumny
B. Usuwa rekordy z tabel według określonych kryteriów
C. Zmienia istniejące dane w tabeli
D. Dodaje do wybranej tabeli rekordy z innej tabeli
Kwerenda krzyżowa w bazie danych MS Access pełni kluczową rolę w analizie danych, umożliwiając użytkownikom prezentację zliczonych wartości w formacie tabelarycznym, gdzie wyniki są układane w wiersze i kolumny. To narzędzie jest niezwykle przydatne w przypadku, gdy chcemy zsyntetyzować dane na podstawie dwóch lub więcej kryteriów, co pozwala na szybką analizę zależności i trendów. Na przykład, możemy stworzyć kwerendę krzyżową, która zlicza sprzedaż według miesięcy i kategorii produktów. W rezultacie otrzymujemy czytelny raport, który pozwala na natychmiastowe zrozumienie, które produkty sprzedają się najlepiej w danym okresie. Kwerendy krzyżowe są zgodne z najlepszymi praktykami w zakresie analizy danych, umożliwiając użytkownikom szybkie podejmowanie decyzji na podstawie wizualizacji wyników. Standardy projektowania baz danych zalecają korzystanie z takich kwerend tam, gdzie potrzebne są złożone analizy, a ich struktura jest zgodna z zasadami normalizacji danych, co z kolei ułatwia ich późniejsze przetwarzanie.

Pytanie 25

Jakie typy danych w języku C++ służą do reprezentacji liczb zmiennoprzecinkowych?

A. float, long
B. double, bool
C. double, short
D. float, double
Odpowiedź 'float, double' jest poprawna, ponieważ w języku C++ to właśnie te dwa typy danych są używane do reprezentacji liczb rzeczywistych. Typ 'float' (zmienna pojedynczej precyzji) przechowuje liczby rzeczywiste w formacie zmiennoprzecinkowym, co oznacza, że może reprezentować liczby z częściami dziesiętnymi, ale z ograniczoną precyzją – zazwyczaj do 7 miejsc znaczących. Z kolei typ 'double' (zmienna podwójnej precyzji) oferuje znacznie większą precyzję, umożliwiając reprezentację do 15 miejsc znaczących. Stosowanie tych typów jest kluczowe w kontekście obliczeń naukowych, inżynieryjnych oraz wszędzie tam, gdzie precyzyjne operacje na liczbach rzeczywistych są niezbędne, na przykład w obliczeniach dotyczących grafiki komputerowej czy symulacji fizycznych. C++ przestrzega standardów IEEE 754 dla reprezentacji liczb zmiennoprzecinkowych, co sprawia, że te typy danych są zgodne z innymi językami programowania i technologiami. Dlatego wybór 'float' i 'double' jest zgodny z najlepszymi praktykami programistycznymi, które priorytetowo traktują zarówno wydajność, jak i dokładność obliczeń.

Pytanie 26

Polecenie w SQL GRANT ALL PRIVILEGES ON klienci TO pracownik ma na celu

A. nadać wszystkie uprawnienia do tabeli klienci użytkownikowi pracownik
B. cofnąć wszystkie uprawnienia pracownika do tabeli klienci
C. przenieść uprawnienia z grupy klienci na użytkownika pracownik
D. przyznać grupie klienci uprawnienia do tabeli pracownik
Polecenie GRANT ALL PRIVILEGES ON klienci TO pracownik w języku SQL jest używane do nadawania wszystkich dostępnych uprawnień na określonej tabeli, w tym przypadku na tabeli klienci, użytkownikowi o nazwie pracownik. Dzięki temu, otrzymuje on pełną kontrolę nad danymi w tej tabeli, co obejmuje możliwość dodawania, modyfikowania oraz usuwania rekordów, a także zarządzania strukturą tabeli. Jako przykład, jeśli pracownik potrzebuje wprowadzać nowe informacje o klientach, usuwanie zbędnych danych lub edytowanie istniejących rekordów, nadanie mu wszystkich uprawnień jest kluczowe. Standardy SQL definiują sposób zarządzania uprawnieniami i pozwalają administratorom na precyzyjne kontrolowanie dostępu do danych. W praktyce, aby skorzystać z tego polecenia, użytkownik musi mieć odpowiednie uprawnienia do nadawania uprawnień innym użytkownikom. Warto również pamiętać o zasadzie najmniejszych uprawnień, która sugeruje, że użytkownik powinien otrzymać tylko te uprawnienia, które są niezbędne do wykonania jego zadań, co zwiększa bezpieczeństwo bazy danych.

Pytanie 27

Wskaż zapis stylu CSS, który formatuje punktor listy numerowanej na wielkie cyfry rzymskie oraz listy punktowanej na kwadraty?

A. ol { list-style-type: square; } ul { list-style-type: upper-roman; }
B. ol { list-style-type: disc; } ul { list-style-type: upper-alpha; }
C. ol { list-style-type: upper-roman; } ul { list-style-type: square; }
D. ol { list-style-type: upper-alpha; } ul { list-style-type: disc; }
Odpowiedź jest poprawna, ponieważ styl CSS `ol { list-style-type: upper-roman; }` ustawia numerację dla listy uporządkowanej na wielkie cyfry rzymskie, co jest zgodne z wymaganiami. Użycie `ul { list-style-type: square; }` definiuje styl dla listy nieuporządkowanej, gdzie punkty są przedstawiane jako kwadraty. Stylizacja list w CSS jest kluczowa dla estetyki i czytelności dokumentu, a korzystanie z różnych typów markerów dla różnych rodzajów list potrafi znacząco poprawić organizację treści. Przykładem zastosowania może być dokumentacja techniczna, gdzie numery rzymskie używane są do oznaczania sekcji głównych, a kwadratowe punkty do podpunktów. Tego rodzaju stylizacja jest zgodna z dobrymi praktykami w projektowaniu stron internetowych, które wymaga dobrego zrozumienia CSS i jego właściwości. Ponadto, CSS pozwala na elastyczne dostosowywanie stylów, co jest istotne w kontekście responsywności i dostępności stron.

Pytanie 28

Jaką metodę używa się w języku PHP do tworzenia komentarza obejmującego więcej niż jedną linijkę?

A. #
B. /* */
C. //
D. <!-- -->
W języku PHP, użycie bloków komentarzy za pomocą składni /* */ jest standardowym sposobem na zapisanie wielolinijnych komentarzy. Ta metoda pozwala na umieszczanie tekstu komentarza w wielu liniach, co jest szczególnie przydatne w przypadku dłuższych objaśnień kodu. Komentarze pozwalają programistom na dokumentowanie funkcji, metod lub fragmentów kodu, co znacznie zwiększa przejrzystość i zrozumiałość kodu dla innych deweloperów. Przykładowo, można ich używać w następujący sposób: /* To jest komentarz, który może zajmować wiele linii. Możesz go używać do szczegółowego opisu funkcji lub zmiennych. */ Praktyka korzystania z opisowych komentarzy jest zgodna z najlepszymi standardami programowania, ponieważ zwiększa czytelność i ułatwia pracę w zespołach. Komentarze są nieocenione w trakcie konserwacji kodu, ponieważ pozwalają na szybsze zrozumienie intencji autora, a także na łatwiejsze wprowadzenie zmian w przyszłości. Warto również pamiętać, że komentarze nie wpływają na wydajność aplikacji, ponieważ są ignorowane przez interpreter PHP w trakcie wykonywania skryptu.

Pytanie 29

Integralność referencyjna w relacyjnych bazach danych oznacza, że

A. klucz główny lub klucz obcy nie mogą zawierać wartości NULL
B. wartość klucza obcego w danej tabeli musi być albo równa wartości klucza głównego w związanej z nią tabeli albo równa wartości NULL
C. wartość klucza głównego oraz klucza obcego nie może być pusta
D. każdemu kluczowi głównemu przyporządkowany jest dokładnie jeden klucz obcy w powiązanych tabelach
Integralność referencyjna jest kluczowym pojęciem w modelu relacyjnych baz danych, które zapewnia spójność i wiarygodność danych. Odpowiedź dotycząca wartości klucza obcego w danej tabeli, która musi być równa wartości klucza głównego w powiązanej tabeli lub NULL, jest zgodna z zasadami projektowania baz danych. Klucz obcy stanowi odniesienie do klucza głównego w innej tabeli, co umożliwia utrzymanie relacji między danymi. Na przykład, w bazie danych dotyczącej szkoły, tabela 'Uczniowie' może mieć kolumnę 'KlasaID', która jest kluczem obcym odnoszącym się do 'KlasaID' w tabeli 'Klasy'. Integralność referencyjna zapewnia, że każdy uczeń jest przypisany do istniejącej klasy, a jeśli uczeń nie jest przypisany do żadnej klasy, wartość ta może być NULL. Praktyczne zastosowanie tej zasady pozwala uniknąć błędów, takich jak pozostawienie ucznia bez przypisania do klasy, co mogłoby prowadzić do nieporozumień w analizach danych. Zgodnie z dobrymi praktykami, integralność referencyjna powinna być implementowana na poziomie bazy danych, aby automatycznie wymuszać te zasady, co zwiększa jakość i spójność gromadzonych danych.

Pytanie 30

Aby przeprowadzić walidację kontrolek formularza w momencie, gdy użytkownik wprowadza dane, można wykorzystać zdarzenie

A. onKeyDown
B. onLoad
C. onClick
D. onFocusOut
Zdarzenia 'onLoad', 'onClick' oraz 'onFocusOut' są niewłaściwymi odpowiedziami w kontekście walidacji formularzy w czasie rzeczywistym. Zdarzenie 'onLoad' jest wywoływane podczas ładowania strony, a nie podczas interakcji użytkownika z polami formularza. Oznacza to, że nie nadaje się do monitorowania zmian wprowadzanych przez użytkownika, a jego zastosowanie ogranicza się zazwyczaj do inicjalizacji komponentów lub załadowania danych. Z kolei 'onClick' jest wywoływane, gdy użytkownik klika na element, co również nie jest optymalnym momentem do walidacji danych wprowadzanych w formularzu, ponieważ nie oferuje możliwości reagowania na zmiany wprowadzane w trakcie pisania. To zdarzenie bardziej nadaje się do sytuacji, gdy chcemy wykonać akcję po zakończeniu interakcji z danym elementem. Zdarzenie 'onFocusOut', które jest wywoływane, gdy element traci fokus, również nie jest wystarczające do walidacji w czasie rzeczywistym. Może to prowadzić do opóźnienia w informowaniu użytkownika o błędach, ponieważ walidacja jest przeprowadzana dopiero po zakończeniu interakcji z polem. Dlatego poprawnym podejściem do walidacji danych użytkowników w formularzach jest korzystanie ze zdarzeń związanych z klawiaturą, które umożliwiają bieżące monitorowanie wprowadzanych danych, co zwiększa efektywność procesu walidacji oraz poprawia komfort użytkowników. Warto również podkreślić, że odpowiednie użycie zdarzeń jest kluczowe dla budowy interaktywnych i responsywnych aplikacji webowych.

Pytanie 31

W JavaScript, aby wyodrębnić fragment tekstu pomiędzy wskazanymi indeksami, powinno się zastosować metodę

A. replace()
B. concat()
C. trim()
D. slice()
Metoda slice() w języku JavaScript jest kluczowym narzędziem do wydobywania fragmentów ciągów tekstowych. Umożliwia wyodrębnienie podciągu na podstawie określonych indeksów początkowego i końcowego. Przykładowo, jeśli mamy napis 'JavaScript' i chcemy uzyskać 'Script', możemy użyć slice(4, 10). Indeks początkowy jest wliczany, a końcowy jest wykluczany, co zapewnia elastyczność w manipulacji ciągami. Metoda slice() nie modyfikuje oryginalnego ciągu, co jest zgodne z zasadą immutability w funkcjonalnym programowaniu, zwiększając bezpieczeństwo danych. Metoda ta obsługuje również ujemne indeksy, co pozwala na łatwe wyodrębnianie fragmentów z końca napisu. Warto pamiętać, że slice() jest preferowana, gdyż jest bardziej czytelna i intuicyjna w porównaniu z innymi metodami do manipulacji tekstem, jak substr() czy substring().

Pytanie 32

Z przedstawionych tabel Artykuly i Autorzy należy wybrać jedynie nazwiska autorów i tytuły ich artykułów, które zostały ocenione na 5. Kwerenda wybierająca te dane ma postać

Ilustracja do pytania
A. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id;
B. SELECT nazwisko, tytul FROM autorzy, artykuly WHERE ocena == 5;
C. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = artykuly.id;
D. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id WHERE ocena = 5;
Gratulacje! Wybrałeś poprawne zapytanie SQL, które dokładnie odpowiada na postawione pytanie. Zapytanie 'SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id WHERE ocena = 5;' jest prawidłowe, bo łączy dwie tabele 'autorzy' i 'artykuly' za pomocą klucza obcego 'autorzy_id' w tabeli 'artykuly'. Dzięki temu uzyskujemy dostęp do nazwisk autorów i tytułów artykułów. Dodatkowo, część 'WHERE ocena = 5' filtruje wyniki tak, aby wyświetlane były tylko te rekordy, gdzie ocena wynosi 5. To jest kluczowy element, który pozwala nam skupić się tylko na tych danych, które są istotne dla pytania. W praktyce, tego typu zapytania pomagają nam w analizie wydajności autorów i jakości artykułów, co jest niezwykle ważne w branży wydawniczej.

Pytanie 33

Tablica tab[] zawiera różne liczby całkowite. Jaką wartość przyjmie zmienna zm2 po wykonaniu podanego fragmentu kodu?

Ilustracja do pytania
A. Suma liczb od 1 do 10
B. Średnia geometryczna liczb od 0 do 9
C. Suma liczb z tablicy
D. Średnia arytmetyczna liczb z tablicy
Odpowiedź numer 3 jest prawidłowa, ponieważ kod oblicza średnią arytmetyczną elementów tablicy tab[]. Wartość zmiennej zm1 po zakończeniu pętli for będzie sumą wszystkich elementów tablicy, ponieważ w każdej iteracji do zm1 dodawana jest wartość kolejnego elementu tablicy. Następnie zmienna zm2 jest ustawiana na wartość zm1 podzieloną przez 10, co odpowiada obliczeniu średniej arytmetycznej, biorąc pod uwagę, że tablica ma 10 elementów. Obliczenie średniej arytmetycznej jest często wykorzystywane w różnych dziedzinach, takich jak analiza danych, statystyka czy nauki przyrodnicze, ponieważ pozwala na uzyskanie ogólnego obrazu rozkładu wartości. W programowaniu istotne jest, aby pamiętać o właściwym podziale przez liczbę elementów, co w tym przypadku zostało prawidłowo zastosowane. Praktykowanie takich operacji uczy pisania efektywnego kodu i zrozumienia podstaw matematycznych w informatyce. Zgodnie z dobrymi praktykami, użycie typu double dla zm2 zapewnia dokładność w przypadku niecałkowitych wyników dzielenia.

Pytanie 34

Jak wygląda instrukcja przypisania wartości do elementu tablicy w języku JavaScript względem tablicy? ```Tablica['technik'] = 'informatyk';```

A. asocjacyjnej
B. statycznej
C. numerycznej
D. wielowymiarowej
W języku JavaScript tablice mogą być traktowane jako obiekty, a więc wykazują cechy struktur asocjacyjnych. Przypisując wartość do tablicy za pomocą notacji z nawiasami kwadratowymi, jak w przykładzie 'Tablica[\'technik\'] = \'informatyk\';', tworzymy nowy element o kluczu 'technik', co jest charakterystyczne dla obiektów asocjacyjnych. W JavaScript tablice są dynamiczne, co oznacza, że możemy dodawać elementy w dowolny sposób, a ich rozmiar nie jest ustalony z góry. Standard ECMAScript definiuje tablice jako obiekty, gdzie klucze są indeksami liczb całkowitych, ale można również używać stringów jako kluczy, co czyni tablice asocjacyjnymi. Przykładem może być obiekt, który przechowuje różne informacje, a elementy są dostępne zarówno za pomocą indeksów numerycznych, jak i stringów. Warto zaznaczyć, że użycie tablicy jako obiektu asocjacyjnego może być praktyczne w wielu zastosowaniach, np. w przechowywaniu konfiguracji czy zestawów danych. Dobrą praktyką jest jednak ograniczać użycie takich technik dla przejrzystości kodu."

Pytanie 35

Jakie wartości zostaną wyświetlone kolejno w wyniku wykonania podanego skryptu?

<script language = "JavaScript">
var x = 1;
var y;
++y;
document.write(++x);
document.write(" ");
document.write(x--);
document.write(" ");
document.write(x);
</script>
A. 2 2 1
B. 1 2 2
C. 2 1 1
D. 1 2 1
Skrypt operuje na zmiennej x używając zarówno preinkrementacji jak i postdekrementacji co może być mylące jeśli nie jest się zaznajomionym z ich działaniem. W przypadku preinkrementacji ++x wartość zmiennej x jest najpierw zwiększana zanim zostanie wykorzystana w dalszym wyrażeniu. To jest kluczowe ponieważ oznacza że już przy pierwszym wypisaniu wartość x to 2 co jest często błędnie interpretowane jako 1 jeśli nie uwzględni się preinkrementacji. Z kolei postdekrementacja x-- oznacza że obecna wartość zmiennej jest używana zanim zostanie ona zmniejszona. To często jest źródłem błędów logicznych gdyż programista może oczekiwać że wartość zmiennej została już zaktualizowana. W efekcie druga wartość jest również 2 ponieważ dekrementacja następuje po użyciu wartości w wyrażeniu a dopiero trzecia instrukcja wypisuje wynik dekrementacji czyli 1. Zrozumienie tych mechanizmów jest kluczowe w kontekście pisania wydajnego i poprawnego kodu zwłaszcza w językach takich jak JavaScript gdzie operacje na zmiennych są powszechne. Warto zatem zwrócić uwagę na różnicę między pre- a post- operacjami aby uniknąć potencjalnych błędów w logice aplikacji i lepiej zarządzać przepływem danych w programach. Dobre praktyki programistyczne zalecają również konsystencję w korzystaniu z tych operatorów co pomaga w utrzymaniu czytelności i zrozumiałości kodu przez współpracowników i samego autora post factum. Tego rodzaju błędy należą do typowych wśród początkujących programistów i podkreślają znaczenie dokładnego testowania i dokumentowania kodu dla zapewnienia jego niezawodności i poprawności działania w różnorodnych kontekstach środowiskowych i użytkowych. Weryfikacja takich operacji w trakcie testów jednostkowych pozwala na wcześniejsze wykrycie i korektę błędów logicznych co jest zgodne z najlepszymi praktykami w inżynierii oprogramowania. Przy tym podejściu zmniejsza się również ryzyko nieoczekiwanych zachowań aplikacji w środowiskach produkcyjnych co może mieć kluczowe znaczenie w przypadku aplikacji o krytycznym znaczeniu dla biznesu.

Pytanie 36

W tabeli pracownicy zdefiniowano klucz główny jako INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT. Dodatkowo zdefiniowano kolumny imie oraz nazwisko. W przypadku wykonania poniższej kwerendy SQL wprowadzającej dane, w której pominięto pole klucza, w bazie danych MySQL wystąpi:

INSERT INTO pracownicy (imie, nazwisko) VALUES ('Anna', 'Nowak');
A. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
B. błąd związany z nieprawidłową liczbą kolumn
C. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
D. ignorowanie polecenia, tabela nie ulegnie zmianie
Jak używasz polecenia INSERT w MySQL i masz klucz główny ustawiony jako AUTO_INCREMENT, to system sam zajmie się przydzieleniem nowej, unikalnej wartości dla tego klucza dla każdego nowego rekordu. Kiedy wprowadzasz dane o pracowniku, takie jak imię i nazwisko, to nie musisz martwić się o podawanie wartości klucza głównego. MySQL świetnie to rozumie i dodaje kolejny wolny numer. To jest zgodne z dobrymi praktykami w bazach danych, gdzie klucz główny musi być unikalny dla każdego rekordu, ale niekoniecznie musisz go podawać ręcznie, szczególnie gdy korzystasz z mechanizmu AUTO_INCREMENT. Weźmy na przykład tabelę zamówień – tam każdy nowy wpis automatycznie dostaje unikalny numer zamówienia, co eliminuje ryzyko błędów i ułatwia późniejsze śledzenie danych. Dzięki AUTO_INCREMENT wprowadzanie danych staje się dużo prostsze, a szansa na pomyłki przy manualnym wpisywaniu wartości klucza głównego znacznie maleje.

Pytanie 37

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID, natomiast tabela rezyserzy ma klucz główny id. Obydwie tabele są połączone relacją jeden do wielu, gdzie strona rezyserzy odnosi się do strony filmy. Jak należy zapisać kwerendę SELECT, aby połączyć tabele filmy i rezyserzy?

A. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.filmyID ...
B. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.filmyID ...
C. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.id ...
D. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id ...
Odpowiedź, która wskazuje na połączenie tabeli filmy z tabelą rezyserzy za pomocą klauzuli JOIN, z warunkiem ON filmy.rezyserID = rezyserzy.id, jest prawidłowa, ponieważ bezpośrednio odzwierciedla relację pomiędzy tymi dwiema tabelami. Klucz obcy rezyserID w tabeli filmy wskazuje na klucz główny id w tabeli rezyserzy. W związku z tym, aby prawidłowo połączyć te tabele w kwerendzie SELECT, musimy użyć tego klucza obcego w warunku połączenia. Przykładowo, w realnych zastosowaniach chcesz uzyskać informacje o filmach oraz ich reżyserach; więc pisząc zapytanie, możesz z łatwością uzyskać dane, takie jak tytuł filmu i imię reżysera, co jest kluczowe w systemach zarządzania bazą danych. Dobre praktyki wskazują, że zawsze należy używać poprawnych kluczy do łączenia tabel, aby uzyskać wiarygodne i dokładne wyniki, co jest fundamentalne w projektowaniu baz danych i tworzeniu zapytań SQL.

Pytanie 38

Którą relację w projekcie bazy danych należy ustalić między tabelami widocznymi na ilustracji zakładając, że każdy klient sklepu internetowego dokona przynajmniej dwóch zamówień?

Ilustracja do pytania
A. n:n
B. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
C. 1:1
D. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
Poprawnie wskazana relacja 1:n (jeden do wielu), gdzie „1” jest po stronie tabeli Klient, a „n” po stronie tabeli Zamówienie, dokładnie odzwierciedla opisany przypadek biznesowy: jeden klient sklepu internetowego może złożyć wiele zamówień, a każde zamówienie należy do jednego, konkretnego klienta. W praktyce projektowania relacyjnych baz danych oznacza to, że w tabeli Zamówienie umieszczamy klucz obcy (np. kolumnę id_klienta), który wskazuje na klucz główny w tabeli Klient (np. id_klienta jako PRIMARY KEY). To jest klasyczny przykład relacji nadrzędny–podrzędny (parent–child). Z mojego doświadczenia w systemach e‑commerce taka struktura jest standardem, bo pozwala łatwo wykonywać typowe kwerendy: wyszukiwanie wszystkich zamówień danego klienta, liczenie wartości zamówień na klienta, analizę historii zakupów. Dodatkowo założenie, że każdy klient dokona co najmniej dwóch zamówień, wpływa na tzw. krotność minimalną po stronie Zamówienia (min 2), ale nie zmienia samego typu relacji – nadal jest to 1:n. W modelu logicznym i fizycznym realizujemy to przez odpowiednie więzy integralności: klucz główny w tabeli Klient i klucz obcy w tabeli Zamówienie z ON DELETE RESTRICT lub CASCADE (w zależności od polityki biznesowej). Taka relacja ułatwia normalizację danych: dane klienta trzymamy w jednym miejscu, unikamy duplikacji w wielu zamówieniach, a w razie zmiany np. adresu e‑mail aktualizujemy tylko jeden rekord. W dobrze zaprojektowanych schematach (np. zgodnych z 3NF) dokładnie tak modeluje się powiązanie Klient–Zamówienie.

Pytanie 39

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. td, th { background-color: Pink; }
B. tr { background-color: Pink; }
C. tr:active { background-color: Pink; }
D. tr:hover { background-color: Pink; }
Poprawny selektor to tr:hover { background-color: Pink; }, bo dokładnie opisuje sytuację pokazaną na filmie: efekt pojawia się dopiero po najechaniu kursorem na cały wiersz tabeli. Pseudo-klasa :hover w CSS służy właśnie do definiowania stylów w momencie, gdy użytkownik „najeżdża” myszką na dany element. Jeśli więc chcemy, żeby podświetlał się cały rząd tabeli, logiczne i zgodne z dobrymi praktykami jest przypięcie efektu do znacznika tr, a nie do pojedynczych komórek. W praktyce taki zapis stosuje się bardzo często w interfejsach webowych: w panelach administracyjnych, listach zamówień, tabelach z uczniami, produktami, logami systemowymi itd. Dzięki temu użytkownik łatwiej śledzi, który wiersz właśnie ogląda. To niby detal, ale z punktu widzenia UX robi sporą różnicę. Z mojego doświadczenia to jeden z tych prostych trików CSS, które od razu poprawiają „odczuwalną” jakość strony. Ważne jest też to, że :hover jest częścią standardu CSS (opisane m.in. w specyfikacji CSS Selectors Level 3/4) i działa w praktycznie wszystkich współczesnych przeglądarkach. Nie trzeba do tego żadnego JavaScriptu, żadnych skomplikowanych skryptów – czysty CSS. Dobrą praktyką jest również używanie bardziej stonowanych kolorów niż Pink w prawdziwych projektach, np. #f5f5f5 albo lekki odcień niebieskiego, tak żeby kontrast był czytelny i nie męczył wzroku. Warto też pamiętać, że podobny mechanizm możesz zastosować na innych elementach: np. a:hover dla linków, button:hover dla przycisków czy nawet div:hover dla całych kafelków w layoutach. Kluczowe jest to, żeby pseudo-klasa :hover była przypięta dokładnie do tego elementu, który ma reagować na interakcję użytkownika.

Pytanie 40

Jakie polecenie pozwala na zwiększenie wartości o jeden w kolumnie RokStudiów w tabeli Studenci dla uczniów, którzy są na roku 1÷4?

A. UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5
B. UPDATE RokStudiow SET RokStudiow++ WHERE RokStudiow < 5
C. UPDATE Studenci, RokStudiow+1 WHERE RokStudiow < 5
D. UPDATE Studenci SET RokStudiow WHERE RokStudiow < 5
Odpowiedź 'UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5;' jest prawidłowa, ponieważ poprawnie wykorzystuje składnię SQL do aktualizacji wartości w tabeli. W tym przypadku, polecenie zmienia wartość kolumny RokStudiow o jeden dla wszystkich studentów, którzy mają przypisany rok studiów mniejszy niż 5. Użycie 'SET RokStudiow = RokStudiow+1' jest zgodne z zasadą aktualizacji danych, gdzie przypisanie nowej wartości korzysta z obecnej wartości i modyfikuje ją. W praktyce, takie operacje są niezbędne w systemach zarządzania bazami danych, zwłaszcza w kontekście obliczeń związanych z postępem akademickim studentów, a przestrzeganie standardów SQL pomaga w utrzymaniu spójności i integralności danych. Dobrą praktyką jest również wykonanie operacji aktualizacji w sposób, który minimalizuje ryzyko utraty danych oraz zwiększa efektywność zapytań, co jest istotne w dużych bazach danych.