Wyniki egzaminu

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

Egzamin zdany!

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

Aby przywrócić bazę danych o nazwie Sklep z pliku towary.sql, należy w miejsce gwiazdek wpisać nazwę użytkownika. Polecenie wygląda następująco:

mysql -u ******* -p Sklep < towary.sql
A. adres IP bazy danych.
B. nazwę użytkownika.
C. liczbę importowanych obiektów bazy.
D. nazwę odzyskiwanej tabeli.
Polecenie mysql ma dość sztywną i dobrze udokumentowaną składnię, więc warto ją sobie poukładać raz a dobrze. W przedstawionym przykładzie mamy: mysql -u ******* -p Sklep < towary.sql. Przełącznik -u w kliencie MySQL zawsze oznacza nazwę użytkownika, czyli konto w systemie bazy danych, którym się logujemy. To nie jest ani adres IP, ani nazwa tabeli, ani żadna liczba obiektów. Klient mysql w ogóle nie przyjmuje w tym miejscu takich danych. Częsty błąd polega na mieszaniu pojęć: adres IP czy hostname serwera bazy podaje się inną opcją, -h (np. -h 192.168.1.10 lub -h db.example.com). Parametr -u nie ma nic wspólnego z lokalizacją serwera, tylko z tożsamością użytkownika w systemie uprawnień MySQL. Podobnie nazwa odzyskiwanej tabeli nie jest nigdzie wpisywana w linii poleceń mysql przy imporcie. Tabele są tworzone i wypełniane wewnątrz pliku SQL – to tam znajdują się instrukcje CREATE TABLE i INSERT, więc nie ma potrzeby ani możliwości podania nazwy jednej konkretnej tabeli w miejscu, gdzie klient oczekuje nazwy użytkownika. Jeśli importujemy tylko jedną tabelę, to i tak cały proces kontroluje zawartość pliku towary.sql, a nie argument -u. Równie mylące jest myślenie o „liczbie importowanych obiektów bazy”. Narzędzie mysql nie ma opcji, w której wpisujemy jakąś liczbę tabel czy rekordów do zaimportowania. Importuje po prostu wszystko, co jest w skrypcie SQL, aż do końca pliku lub do wystąpienia błędu. Właściwy sposób myślenia jest taki: -h mówi „do jakiego serwera się łączę”, -u mówi „kim się loguję”, -p wymusza podanie hasła, dalej podajemy nazwę bazy (Sklep), a znak < przekierowuje zawartość pliku towary.sql na wejście programu. Z mojego doświadczenia wynika, że jak się raz zrozumie to rozdzielenie ról poszczególnych parametrów, to znika większość nieporozumień przy pracy z kopią zapasową i przywracaniem baz danych.

Pytanie 2

Jak, wykorzystując język PHP, można zapisać w ciasteczku wartość znajdującą się w zmiennej dane na okres jednego dnia?

A. setcookie("dane", $dane, time() + (3600*24));
B. setcookie("dane", $dane, time());
C. setcookie("dane", $dane, 0);
D. setcookie("dane", "dane", 0);
Poprawna odpowiedź to setcookie("dane", $dane, time() + (3600*24));, ponieważ umożliwia ona zapisanie wartości zmiennej $dane w ciasteczku o nazwie "dane" na okres jednego dnia. Funkcja setcookie() w PHP przyjmuje trzy podstawowe argumenty: nazwę ciasteczka, jego wartość oraz czas wygaśnięcia. W tym przypadku, używając time() + (3600*24), ustawiamy czas wygaśnięcia ciasteczka na aktualny czas plus 24 godziny (3600 sekund w godzinie razy 24). Jest to zgodne z najlepszymi praktykami zarządzania sesjami i danymi użytkowników, ponieważ pozwala na przechowywanie informacji, które są dostępne dla użytkownika przez dłuższy czas, co może być przydatne w różnych scenariuszach, takich jak zapamiętywanie preferencji użytkownika lub stanu logowania. Użycie odpowiednich czasów wygaśnięcia wpływa na bezpieczeństwo i prywatność danych. Dobre praktyki sugerują także, aby ciasteczka były używane w sposób przemyślany, aby nie obniżać wydajności aplikacji ani nie narażać danych użytkowników na nieautoryzowany dostęp.

Pytanie 3

W kodzie HTML stworzono link do strony internetowej. Aby otworzyć tę stronę w nowym oknie lub zakładce przeglądarki, należy dodać do definicji linku atrybut

<a href="http://google.com" >strona Google</a>
A. target = "_blank"
B. rel = "external"
C. target = "_parent"
D. rel = "next"
Atrybut target w języku HTML służy do określenia, w jaki sposób ma otworzyć się dokument, do którego prowadzi odnośnik. Użycie wartości '_blank' dla atrybutu target jest standardowym sposobem na otwarcie nowej strony w nowym oknie lub zakładce przeglądarki. Przykład zastosowania to: <a href="http://google.com" target="_blank">strona Google</a>. Jest to niezwykle przydatne w kontekście UX, ponieważ pozwala użytkownikom na łatwe porównanie informacji bez utraty dostępu do oryginalnej strony. Warto również zauważyć, że użycie tego atrybutu jest zgodne z najlepszymi praktykami w tworzeniu stron internetowych, gdyż umożliwia użytkownikom zachowanie kontekstu przeglądania. W HTML5 atrybut target pozostaje wspierany, co czyni go istotnym elementem w projektowaniu interfejsów użytkownika. Oprócz '_blank' istnieją inne wartości, takie jak '_self', '_parent' i '_top', które również spełniają różne funkcje w zależności od potrzeb nawigacyjnych w aplikacji webowej.

Pytanie 4

Jak powinien być poprawnie zapisany znacznik <img>, służący do umieszczenia na stronie internetowej obrazu rys.jpg, przeskalowanego do szerokości 120 px oraz wysokości 80 px z tekstem alternatywnym "krajobraz"?

A. <img src="rys.jpg" width="120px" height="80px" alt="krajobraz"/>
B. <img src="rys.jpg" height="120px" width="80px" info="krajobraz"/>
C. <img image="rys.jpg" width="120px" height="80px" alt="krajobraz"/>
D. <img href="rys.jpg" height="120px" width="80px" info="krajobraz"/>
Odpowiedź <img src="rys.jpg" width="120px" height="80px" alt="krajobraz"/> jest poprawna z kilku powodów. Przede wszystkim, atrybut 'src' wskazuje na lokalizację pliku graficznego, co jest kluczowe dla poprawnego wyświetlania obrazu na stronie internetowej. Atrybuty 'width' oraz 'height' pozwalają na precyzyjne określenie rozmiarów obrazu, co jest istotne zarówno dla responsywności strony, jak i dla optymalizacji czasu ładowania. Użycie jednostki 'px' (pikseli) jest poprawne, jednak w HTML5 można pominąć tę jednostkę, wpisując jedynie wartość liczbową. Atrybut 'alt' jest niezwykle ważny dla dostępności, ponieważ dostarcza alternatywny opis obrazu dla użytkowników, którzy nie mogą go zobaczyć, na przykład osób niewidomych korzystających z czytników ekranu. Używanie odpowiednich atrybutów oraz wartości jest zgodne z najlepszymi praktykami w tworzeniu stron WWW oraz standardami W3C, co wpływa na lepszą użyteczność oraz SEO strony. Przykładem praktycznym może być umieszczenie grafiki w nagłówku strony, gdzie obraz jest widoczny, a opis alternatywny wspiera dostępność i kontekst treści.

Pytanie 5

W dostępnej tabeli mieszkań znajdują się kolumny o nazwach: adres, metraż, liczba_pokoi, standard, status, cena. Wykonanie podanej kwerendy SQL SELECT spowoduje, że zostaną wyświetlone

Ilustracja do pytania
A. metraż oraz cena tych mieszkań, które mają co najmniej 3 pokoje
B. metraż oraz cena tych mieszkań, które mają więcej niż 3 pokoje
C. wszystkie informacje dotyczące mieszkań, które mają co najmniej 3 pokoje
D. wszystkie informacje oprócz adresu tych mieszkań, które mają więcej niż 3 pokoje
Kwerenda SQL SELECT metraz cena FROM mieszkania WHERE ile_pokoi 3 jest zapytaniem, które precyzyjnie określa zakres danych do wyświetlenia na podstawie warunku. Polecenie SELECT określa, które kolumny będą zwracane w wyniku kwerendy w tym przypadku metraz i cena. Dzięki temu uzyskujemy tylko te dane które są istotne w kontekście analizy efektywności lub porównania cen nieruchomości o określonym rozmiarze w ramach bazy danych. Użycie klauzuli WHERE ile_pokoi 3 definiuje dodatkowy filtr aby wyświetlane były jedynie te rekordy które spełniają podany warunek logiczny czyli ilość pokoi większą niż trzy. Jest to powszechnie stosowana praktyka w pracy z bazami danych pozwalająca na efektywne przetwarzanie i analizę dużych zbiorów danych poprzez ograniczenie zwracanych wyników do tych które są najbardziej istotne dla użytkownika. Takie podejście pozwala na optymalizację wydajności zapytań SQL co jest kluczowe w środowiskach produkcyjnych gdzie czas odpowiedzi i obciążenie serwera mają istotne znaczenie

Pytanie 6

Aby zadeklarować pole klasy, do którego dostęp mają jedynie metody tej klasy, a które nie jest dostępne dla klas pochodnych, należy użyć kwalifikatora dostępu

A. publiczny
B. publikowany
C. prywatny
D. chroniony
Pole, które ma być widoczne tylko dla metod własnej klasy i niedostępne dla klas pochodnych, deklarujemy z modyfikatorem private. To najsilniejsze ograniczenie dostępu: pole prywatne istnieje w obiekcie, ale odwołać się do niego może wyłącznie kod tej samej klasy. Realizuje to zasadę hermetyzacji (enkapsulacji) - ukrywamy wewnętrzny stan obiektu i wystawiamy go na zewnątrz przez kontrolowane metody (gettery i settery). Dzięki temu nikt z zewnątrz, ani nawet klasa dziedzicząca, nie zmieni pola w sposób łamiący jego poprawność. Przykładowo pole z saldem konta zadeklarowane jako prywatne można modyfikować jedynie przez metody klasy, które pilnują reguł biznesowych.

Pytanie 7

W skrypcie JavaScript użyto metody DOM getElementsByClassName('akapit'). Ta metoda odniesie się do akapitu

A. <p class="akapit">akapit4</p>
B. <p>akapit</p>
C. <p href="/akapit">akapit3</p>
D. <p id="akapit">akapit2</p>
Metoda DOM getElementsByClassName jest jedną z najważniejszych funkcji w JavaScript, która pozwala na selekcję elementów na stronie internetowej na podstawie ich klas CSS. W tym przypadku, odpowiedź <p class="akapit">akapit4</p> jest poprawna, ponieważ element ten ma przypisaną klasę "akapit", co czyni go bezpośrednim kandydatem do selekcji przez metodę getElementsByClassName('akapit'). Metoda ta zwraca kolekcję elementów (HTMLCollection), które mają podaną klasę, a następnie można z nimi pracować w kodzie JavaScript. Na przykład, możemy zmieniać ich style, zawartość lub dodawać zdarzenia. Dobrą praktyką jest stosowanie klas do stylizacji oraz manipulacji DOM, co pozwala na lepszą organizację kodu i zwiększa jego czytelność. Pamiętaj, że klasy są bardziej uniwersalne i elastyczne niż identyfikatory (ID), które powinny być unikalne na stronie. W przypadku konieczności stosowania metod do manipulacji elementami DOM, warto znać również inne metody, takie jak querySelector i querySelectorAll, które oferują bardziej zaawansowane opcje selekcji, umożliwiające wykorzystanie kombinacji klas, identyfikatorów i innych atrybutów.

Pytanie 8

Strona internetowa została zaprezentowana w taki sposób:

Rozdział 1

tekst

Podrozdział 1.1

tekst

Podrozdział 1.2

Jakie są poprawne znaczniki do tego formatu?
A. <h1>Rozdział 1</h1> <p>tekst</p> <h2>Podrozdział 1.1</h2> <p>tekst</p> <h2>Podrozdział 1.2</h2>
B. <h1>Rozdział 1<p>tekst <h2>Podrozdział 1.1<p>tekst <h2>Podrozdział 1.2
C. <ul><li>Rozdział 1<li>tekst<li>Podrozdział 1.1<li>tekst<li>Podrozdział 1.2</ul>
D. <big>Rozdział 1</big>tekst<big>Podrozdział 1.1</big>tekst<big>Podrozdział 1.2</big>
Odpowiedź zawierająca znaczniki <h1>, <p> oraz <h2> jest poprawna, ponieważ odzwierciedla właściwą strukturę dokumentu HTML. Znaczniki nagłówków <h1> i <h2> są kluczowe dla hierarchii treści na stronie, co ma istotne znaczenie z punktu widzenia SEO oraz dostępności. Właściwe stosowanie tych znaczników wpływa na to, jak wyszukiwarki indeksują zawartość strony, a także ułatwia nawigację osobom korzystającym z urządzeń asystujących. Na przykład, znacznik <h1> powinien być używany raz na stronę, aby wskazać główny temat, podczas gdy <h2> może być stosowany do podziału treści na sekcje. Dodatkowo, znaczniki <p> są przeznaczone do wyświetlania akapitów tekstu, co jest standardową praktyką w tworzeniu treści webowych. Warto również pamiętać o zachowaniu odpowiednich zasad semantyki HTML, co bezpośrednio przekłada się na poprawę doświadczeń użytkowników oraz wydajność strony.

Pytanie 9

Której wartości text-transform użyć, aby każda pierwsza litera wyrazu była wielka?

A.
capitalize
B.
uppercase
C.
lowercase
D.
underline
Wartość capitalize właściwości text-transform sprawia, że każda pierwsza litera WYRAZU staje się wielka (np. „ala ma psa” → „Ala Ma Psa”). Dlatego do tego efektu służy capitalize.

Pytanie 10

Po uruchomieniu poniższego kodu PHP na ekranie ukaże się bieżąca data w formacie:

echo date("Y-m");
A. rok oraz miesiąc
B. dzień oraz rok
C. dzień, miesiąc, rok
D. tylko rok
Odpowiedź "rok i miesiąc" jest prawidłowa, ponieważ funkcja date() w PHP, kiedy wykorzystujemy format "Y-m", zwraca datę w formacie roku, np. 2023, oraz miesiąca w postaci dwucyfrowej, np. 09 dla września. Warto zrozumieć, że format "Y" generuje czterocyfrowy rok, natomiast "m" generuje dwucyfrowy miesiąc. To podejście jest często wykorzystywane w aplikacjach webowych do prezentacji dat w sposób zrozumiały dla użytkowników, a także do grupowania danych według miesięcy w bazach danych. Przykładowo, w systemach raportowania finansowego, często wykorzystuje się ten format do agregacji danych sprzedażowych według miesięcy, co ułatwia analizę wyników. Użycie odpowiednich standardów w formacie daty wspomaga utrzymanie spójności i czytelności danych w różnych systemach informatycznych.

Pytanie 11

Który kod szesnastkowy oznacza kolor żółty (w RGB: czerwony + zielony)?

A.
#FF00FF
B.
#FFFF00
C.
#00FFFF
D.
#F0F0F0
Pozostałe kody dają inne barwy. #FF00FF to magenta (czerwony + niebieski). #00FFFF to cyjan (zielony + niebieski). #F0F0F0 to jasna szarość (równe, wysokie składowe). Żółty to #FFFF00.

Pytanie 12

W języku C++ utworzono zmienną: char zml;. Jak można przypisać jej wartość, zgodnie ze składnią tego języka?

A. zml = "wiadro";
B. zml = ' w ' ;
C. zml == 0x35;
D. zml[2] = 32;
Odpowiedzi zml == 0x35 oraz zml[2] = 32 są niepoprawne, ponieważ nie odpowiadają standardom przypisywania wartości zmiennej char w C++. W pierwszej odpowiedzi użyto operatora porównania '==', co skutkuje błędem, ponieważ zamiast przypisywać wartość, program sprawdziłby, czy zml jest równe wartości 0x35, co nie spełnia wymagań przypisania. Dodatkowo, wartość 0x35 reprezentuje znak '5' w kodowaniu ASCII, co nie może być zdefiniowane jako przypisanie do zmiennej char w oczekiwanym kontekście. Druga błędna odpowiedź wprowadza w błąd, ponieważ zml[2] sugeruje, że zmienna zml jest tablicą char, co jest niezgodne z jej deklaracją jako zmiennej pojedynczej. W C++, operacje na tablicach wymagają innego podejścia; nie można bezpośrednio przypisywać wartości w ten sposób do zmiennej char. Z kolei odpowiedź zml = "wiadro" jest niezgodna, gdyż próbuje przypisać łańcuch znaków do zmiennej char, co prowadzi do naruszenia reguł typów danych. Pojedynczy znak powinien być zamknięty w pojedynczych cudzysłowach, a nie w podwójnych, co prowadzi do błędu kompilacji i źle zrozumianej koncepcji wartości zmiennych w C++. Podstawowa zasada programowania w C++ polega na zgodności typów danych, a zrozumienie tej zasady jest kluczowe dla efektywnego programowania.

Pytanie 13

Jak nazywa się proces przedstawienia, w formie właściwej dla danego środowiska, informacji zawartych w dokumencie elektronicznym?

A. mapowanie
B. teksturowanie
C. renderowanie
D. rasteryzacja
Pozostałe pojęcia oznaczają inne operacje. Mapowanie to przyporządkowanie elementów jednego zbioru do drugiego (np. klawiszy do funkcji, danych do struktur) - nie tworzy obrazu dokumentu. Rasteryzacja to konkretna zamiana grafiki wektorowej na siatkę pikseli, czyli wycinek szerszego procesu, a nie samo przedstawienie dokumentu. Teksturowanie należy do grafiki 3D i polega na nakładaniu tekstur (obrazów) na powierzchnie modeli. Przekształcenie dokumentu w jego widoczną postać to renderowanie, dlatego ta odpowiedź jest poprawna.

Pytanie 14

Jaką wartość zwróci ten algorytm?

Z = 0
N = 1
dopóki Z < 3:
    N = N * 2 + 1
    Z = Z + 1
wypisz N
A. 15
B. 7
C. 5
D. 3
Zrozumienie działania tego algorytmu jest kluczowe dla programowania i matematyki obliczeniowej. Algorytm ten wykorzystuje pętlę 'dopóki', która wykonuje operacje na dwóch zmiennych: Z i N. Na początku Z jest równe 0, a N jest równe 1. Pętla trwa dopóki Z jest mniejsze od 3. W każdej iteracji pętli zmienna N jest aktualizowana zgodnie z wyrażeniem N = N * 2 + 1 oraz Z jest zwiększane o 1. Przy pierwszej iteracji Z wynosi 0, więc N staje się 1 * 2 + 1 = 3, a Z zostaje zwiększone do 1. W drugiej iteracji Z wynosi 1, więc N staje się 3 * 2 + 1 = 7, a Z wynosi 2. W trzeciej iteracji Z wynosi 2, dlatego N staje się 7 * 2 + 1 = 15, a Z zostaje zwiększone do 3, co kończy pętlę. W rezultacie, gdy algorytm kończy działanie, zmienna N ma wartość 15, która zostaje wypisana. To podejście jest zgodne z dobrymi praktykami w pisaniu algorytmów, gdzie dbałość o zrozumienie pętli i operacji na zmiennych jest fundamentalna dla tworzenia wydajnych programów.

Pytanie 15

W edytorze grafiki wektorowej zbudowano kształt, który składa się z dwóch figur: trójkąta oraz koła. Aby uzyskać ten kształt, po narysowaniu figur i ich odpowiednim ustawieniu, trzeba użyć funkcji

Ilustracja do pytania
A. wykluczenia
B. różnicy
C. sumy
D. rozdzielenia
Funkcja sumy w programach do grafiki wektorowej, takich jak Adobe Illustrator czy CorelDRAW, pozwala na połączenie dwóch lub więcej kształtów w jeden obiekt. To takie sprytne narzędzie! Sumowanie, znane też jako unia lub łączenie ścieżek, integruje geometrię wszystkich wybranych kształtów. Na przykład, jak narysujesz trójkąt i koło, a potem je odpowiednio ustawisz, to używając funkcji sumy, stworzysz nowy kształt, który obejmuje całą powierzchnię obu figur. Często to robi się przy projektowaniu logo, gdzie trzeba uprościć złożone kształty do jednej ścieżki. Taki sposób działania jest przyjęty w branży, bo ułatwia tworzenie czytelnych grafik, które są łatwe do edytowania. A co najważniejsze, połączenie figur w jedną upraszcza późniejsze zmiany i wpisuje się w zasady projektowania minimalistycznego, dzięki czemu można robić przejrzyste kompozycje. Warto mieć na uwadze, że takie podejście też ułatwia drukowanie i wycinanie, co jest mega ważne w produkcji materiałów reklamowych czy wyrobów przemysłowych.

Pytanie 16

Aby zwiększyć wydajność operacji na bazie danych dla pól często używanych w wyszukiwaniu lub sortowaniu, należy:

A. utworzyć osobną tabelę na te pola
B. utworzyć indeks
C. dodać więzy integralności
D. dodać klucz obcy
Indeks to dodatkowa struktura bazy, która działa jak skorowidz w książce: zamiast przeglądać cały zbiór wierszy, baza sięga do uporządkowanego spisu i szybko odnajduje szukane wartości. Dlatego dla kolumn często występujących w warunkach WHERE, sortowaniu czy złączeniach zakłada się indeksy - przyspieszają odczyt nawet wielokrotnie. Trzeba pamiętać, że indeksy nieco spowalniają zapis i zajmują miejsce, więc zakłada się je świadomie, na właściwych polach. Do poprawy wydajności wyszukiwania służy właśnie indeks.

Pytanie 17

Podczas edytowania grafiki w programie do obróbki rastrowej należy usunąć kolory z obrazu, aby uzyskać wizualizację w odcieniach szarości. W tym celu można zastosować funkcję

A. filtru rozmycia
B. kadrowania
C. szumu RGB
D. desaturacji
Desaturacja to proces, który polega na usunięciu kolorów z obrazu, co skutkuje uzyskaniem jego wersji w odcieniach szarości. W kontekście edytorów grafiki rastrowej, takich jak Adobe Photoshop lub GIMP, desaturacja jest kluczową funkcją, umożliwiającą szybkie przekształcenie zdjęcia kolorowego w monochromatyczne. Tego typu operacje są szczególnie przydatne w fotografii czarno-białej, w grafice artystycznej oraz w projektowaniu, gdzie kolor może odwracać uwagę od kompozycji lub detali. Aby wykonać desaturację, wystarczy zastosować odpowiednią funkcję menu, co pozwala na łatwe i efektywne pozbycie się kolorów. Dobrą praktyką jest również eksploracja różnych metod desaturacji, takich jak konwersja do skali szarości lub użycie filtrów, które mogą dać różne efekty wizualne. Warto również zaznaczyć, że desaturacja nie jest tym samym co konwersja do odcieni szarości, gdyż może zachować pewne informacje o luminancji, które są istotne w kontekście dalszej obróbki obrazu.

Pytanie 18

Wskaż wszystkie symbole, które pozwalają na komentowanie kodu w języku PHP.

A. /* */ oraz <!-- -->
B. /* */ oraz // oraz #
C. tylko /* */
D. <?php ?> oraz //
Odpowiedź, która wskazuje na znaki /* */, // oraz # jako metody komentowania w PHP jest poprawna. W języku PHP istnieją różne sposoby na dodawanie komentarzy, co jest kluczowe dla dokumentacji kodu i ułatwiania jego późniejszego zrozumienia. Komentarze wieloliniowe otaczane są przez znaki /* i */. Umożliwiają one opisanie złożonych fragmentów kodu, co jest przydatne w przypadku długich wyjaśnień. Z kolei // umożliwia tworzenie komentarzy jednoliniowych, co jest idealne dla krótkich notatek czy opisów funkcji. Dodatkowo, znak # również pozwala na tworzenie komentarzy jednoliniowych, co czyni go użytecznym w kontekście skryptów PHP, szczególnie w połączeniu z plikami konfiguracyjnymi. Właściwe stosowanie komentarzy jest częścią dobrych praktyk programistycznych, które pozwalają na lepszą współpracę w zespole oraz przyszłą konserwację kodu. Przykładowo, użycie komentarzy do wyjaśnienia zastosowania konkretnej funkcji w kodzie może znacznie ułatwić pracę innym programistom, którzy będą musieli pracować z tym kodem w przyszłości.

Pytanie 19

W przedstawionym kodzie PHP, co powinno się wyświetlić zamiast znaków zapytania?

$x = mysql_query('SELECT * FROM mieszkancy');
if(!$x)
echo "???????????????????????";
A. Nieprawidłowe hasło do bazy danych
B. Błąd w trakcie przetwarzania zapytania
C. Zapytanie zostało zrealizowane pomyślnie
D. Niepoprawna nazwa bazy danych
Odpowiedź 2 czyli Błąd przetwarzania zapytania jest poprawna ponieważ w kodzie PHP używana jest funkcja mysql_query do wykonania zapytania SQL Funkcja ta zwraca false w przypadku niepowodzenia co oznacza że blok if(!x) zostanie wykonany tylko wtedy gdy wystąpi błąd w przetwarzaniu zapytania Komunikat Błąd przetwarzania zapytania jest więc właściwy ponieważ odzwierciedla sytuację w której zapytanie nie mogło zostać wykonane poprawnie co może być wynikiem wielu czynników takich jak błędy składniowe w zapytaniu brak połączenia z serwerem bazy danych lub nieodpowiednie uprawnienia użytkownika Praktyczne podejście do obsługi błędów w PHP często obejmuje logowanie szczegółowych komunikatów błędów lub przekazywanie ich użytkownikowi w sposób przyjazny dla użytkownika co jest zgodne z najlepszymi praktykami w zakresie programowania Dodatkowo warto wspomnieć że funkcja mysql_query jest przestarzała i nie jest zalecana do użycia w nowych projektach Zaleca się używanie bardziej nowoczesnych funkcji takich jak mysqli_query lub PDO co poprawia bezpieczeństwo i wydajność aplikacji

Pytanie 20

Którego ograniczenia (constraint) użyć do zdefiniowania klucza OBCEGO?

A.
PRIMARY KEY(id)
B.
UNIQUE KEY(id)
C.
FOREIGN KEY(id)
D.
AUTO_INCREMENT(id)
Klucz obcy definiuje ograniczenie FOREIGN KEY, np. FOREIGN KEY(id) - wiąże kolumnę z kluczem głównym innej tabeli, pilnując spójności powiązań. Dlatego klucz obcy tworzy FOREIGN KEY(id).

Pytanie 21

Jaką relację w projekcie bazy danych należy zdefiniować pomiędzy tabelami przedstawionymi na rysunku, zakładając, że każdy klient sklepu internetowego składa przynajmniej dwa zamówienia?

Ilustracja do pytania
A. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
B. n:n
C. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
D. 1:1
Relacja 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia, jest prawidłowa, ponieważ odzwierciedla rzeczywiste założenie, że każdy klient może złożyć wiele zamówień. W praktyce baza danych musi odwzorowywać te zależności, co pozwala na efektywne zarządzanie danymi. Każdy klient posiada unikalny identyfikator, zwykle klucz podstawowy, który nie może się powtarzać w tabeli Klient. Tabela Zamówienie posiada natomiast klucz obcy, który odnosi się do klucza podstawowego w tabeli Klient, umożliwiając przechowywanie wielu zamówień przypisanych do jednego klienta. Dzięki temu możemy łatwo wykonywać operacje takie jak wyszukiwanie wszystkich zamówień danego klienta czy śledzenie historii zakupów. Dobre praktyki projektowania baz danych podkreślają znaczenie poprawnego zdefiniowania relacji między tabelami, co zwiększa spójność danych i ułatwia ich późniejsze przetwarzanie. W systemach e-commerce taka struktura bazy danych jest niezbędna do obsługi klientów i śledzenia ich zamówień, co jest podstawą do analizy sprzedaży i tworzenia strategii marketingowych.

Pytanie 22

UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);
W tabeli klient o polach: id, imie, nazwisko, miejscowosc znajduje się 5 rekordów o id od 1 do 5. Dla których wartości kolumny id przedstawiona kwerenda zaktualizuje zawartość pola miejscowosc na Warszawa?
A. 2, 4
B. 1, 5
C. 3
D. 2, 3, 4
Zapytanie UPDATE, które widzisz w treści pytania, działa bardzo precyzyjnie: `UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);` oznacza wprost „zmień wartość kolumny miejscowosc na 'Warszawa' tylko w tych wierszach, w których kolumna id ma wartość 2 albo 4”. Klauzula `WHERE id IN (2,4)` to po prostu skrócony zapis warunku: `WHERE id = 2 OR id = 4`. Skoro w tabeli są rekordy o id 1, 2, 3, 4, 5, to modyfikacji podlegają tylko te dwa wiersze, które spełniają warunek logiczny, czyli id równe 2 i id równe 4. Pozostałe rekordy nie są w żaden sposób dotykane przez to polecenie – ich miejscowość zostaje bez zmian. Z mojego doświadczenia to bardzo często używany wzorzec w praktyce, np. gdy trzeba szybko poprawić dane tylko wybranych klientów, zamówień czy produktów. Warto pamiętać, że polecenie UPDATE bez klauzuli WHERE zaktualizuje wszystkie rekordy w tabeli, co zwykle jest niebezpieczne i w realnych projektach uznawane za błąd, jeśli nie jest to w pełni świadome działanie. W profesjonalnych systemach bazodanowych dobrą praktyką jest zawsze dokładne sprawdzanie warunku WHERE, czasem nawet poprzedzonego zapytaniem SELECT z takim samym warunkiem, żeby zobaczyć, które wiersze zostaną zmienione przed wykonaniem UPDATE. W tym przykładzie można by najpierw zrobić: `SELECT * FROM klient WHERE id IN (2,4);`, a dopiero potem uruchomić UPDATE. W codziennej pracy z SQL konstrukcja `IN` jest też wygodna, gdy lista identyfikatorów jest dłuższa, np. `IN (2,4,7,10,15)`, zamiast pisać długie wyrażenie z wieloma OR. To poprawia czytelność i zmniejsza ryzyko pomyłki przy edycji kodu, co jest po prostu zdrową praktyką w zespole programistów i administratorów baz danych.

Pytanie 23

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: left; } aside { float: left; }
B. nav { float: right; }
C. aside {float: left; }
D. nav { float: right; } section { float: right; }
Prawidłowa odpowiedź opiera się na tym, jak działają własności float w CSS i w jakiej kolejności przeglądarka renderuje elementy blokowe. Jeśli w dokumencie HTML kolejność znaczników to np. &lt;aside&gt;, potem &lt;section&gt;, a na końcu &lt;nav&gt;, to bez dodatkowego stylowania wszystkie trzy ustawią się pionowo, jeden pod drugim, w tej właśnie kolejności. Dodanie float zmienia sposób, w jaki elementy „odpływają” od normalnego przepływu dokumentu i jak układają się obok siebie.

W stylu nav { float: right; } section { float: right; } sprawiamy, że zarówno nav, jak i section są przesuwane do prawej krawędzi kontenera, natomiast aside (bez float) pozostaje w normalnym przepływie, czyli z lewej strony. Ponieważ przeglądarka układa elementy w kolejności występowania w kodzie, najpierw wyrenderuje aside po lewej, potem section „odpłynie” w prawo, a na końcu nav też „odpłynie” w prawo, ustawiając się po prawej stronie, ale dalej od góry niż section. Efekt wizualny jest taki, że po lewej mamy aside, po prawej nav, a section ląduje między nimi, dokładnie tak jak było pokazane na filmie.

Moim zdaniem to zadanie dobrze pokazuje, że przy floatach zawsze trzeba myśleć o trzech rzeczach naraz: kolejności elementów w HTML, kierunku „pływania” (left/right) oraz o tym, które elementy pozostawiamy w normalnym przepływie. W praktyce w nowoczesnych projektach częściej używa się flexboxa albo CSS Grid do takich układów, bo są czytelniejsze i mniej problematyczne. Przykładowo, zamiast kombinować z float, można by użyć display: flex; na kontenerze i ustawić order dla aside i nav. Float nadal jednak pojawia się w starszych layoutach i w zadaniach egzaminacyjnych, więc warto dobrze rozumieć jego zachowanie, choćby po to, żeby poprawnie modyfikować istniejące style lub naprawiać „rozjechane” układy w starszych projektach.

Pytanie 24

Co stanie się po wykonaniu

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

Pytanie 25

Aby sprawdzić poprawność składni kodu CSS, można skorzystać z:

A. konsolidatora
B. debuggera
C. walidatora
D. optymalizatora
Poprawność składni CSS sprawdza walidator - na przykład walidator CSS organizacji W3C (jigsaw.w3.org/css-validator). Analizuje arkusz pod kątem zgodności ze standardem i wypisuje błędy oraz ostrzeżenia: literówki we właściwościach, nieprawidłowe wartości czy brakujące średniki. Dlatego do kontroli składni CSS służy walidator.

Pytanie 26

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

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

Pytanie 27

Na ilustracji przedstawiono projekt struktury bloków strony internetowej. Przy założeniu, że bloki są realizowane przy użyciu znaczników sekcji, ich stylizacja w CSS, poza określonymi szerokościami dla bloków: 1, 2, 3, 4 (blok 5 nie ma przypisanej szerokości), powinna obejmować właściwość

Ilustracja do pytania
A. clear: both dla bloku 5 oraz float: left tylko dla bloków 1 i 2
B. float: left dla wszystkich bloków
C. clear: both dla wszystkich bloków
D. clear: both dla bloku 5 oraz float: left dla pozostałych bloków
Czwarta odpowiedź jest na miejscu, bo dzięki float: left dla bloków 1, 2, 3 i 4, te elementy będą się ładnie ustawiać w linii, zgodnie z ich szerokością. Potem, z clear: both dla bloku 5, unikniesz sytuacji, gdy nachodzi on na inne pływające bloki i pojawi się poniżej nich. Wiesz, float często stosuje się do robienia układów, gdzie elementy muszą być obok siebie. Ale float ma to do siebie, że nie wpływa na rodziców, co czasami sprawia, że wszystko może się zdezorganizować, jeśli nie użyjesz clear. To też jest ważne, bo clear mówi, które elementy nie powinny nachodzić na te pływające - dzięki temu wszystko jest uporządkowane. Dobrze jest to wykorzystać, na przykład, gdy chcesz zrobić kolumny na stronie. Generalnie, stosowanie float jest jak najbardziej w porządku, ale musi iść w parze z clear, żeby strona była czytelna i dobrze zorganizowana, zgodnie ze standardami HTML i CSS.

Pytanie 28

Aby zwiększyć wydajność operacji w bazie danych, należy skupić się na polach, które są często wyszukiwane lub sortowane

A. dodać klucz obcy
B. stworzyć oddzielną tabelę przechowującą wyłącznie te pola
C. utworzyć indeks
D. dodać więzy integralności
Utworzenie indeksu w bazie danych jest kluczowym krokiem w optymalizacji operacji wyszukiwania i sortowania. Indeksy działają jak spis treści w książce, umożliwiając szybsze odnajdywanie danych bez konieczności przeszukiwania całej tabeli. Gdy zapytania często wykorzystują konkretne kolumny do filtracji lub sortowania, indeksowanie tych kolumn znacznie przyspiesza wydajność. Na przykład, jeśli często wyszukujesz klientów według ich nazwisk, utworzenie indeksu na kolumnie nazwiska pozwoli bazie danych szybko zlokalizować odpowiednie rekordy. Standardy branżowe, takie jak SQL Server czy MySQL, zalecają stosowanie indeksów zwłaszcza na dużych tabelach, gdzie operacje skanowania mogą być czasochłonne. Dobrą praktyką jest również monitorowanie wydajności i regularne dostosowywanie indeksów w zależności od zmieniających się wzorców zapytań. Należy jednak pamiętać, że nadmierna liczba indeksów może wpłynąć negatywnie na operacje zapisu, dlatego kluczowe jest znalezienie odpowiedniej równowagi.

Pytanie 29

Które znaczniki HTML wyświetlą tekst „Dobre strony mojej strony” w JEDNYM wierszu, jeśli nie zastosowano żadnych reguł CSS?

A.
<div>Dobre strony </div><div style="letter-spacing:3px">mojej strony</div>
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.
<h3>Dobre strony </h3><h3 style="letter-spacing:3px">mojej strony</h3>
Pozostałe znaczniki są BLOKOWE, więc każdy zaczyna się od nowej linii i rozbiłby tekst na osobne wiersze. Dotyczy to <p> (akapit), <h3> (nagłówek) oraz <div> (kontener). W jednym wierszu tekst utrzyma liniowy <span>.

Pytanie 30

Na czym polega opracowanie logicznego UKŁADU strony internetowej?

A. na zdefiniowaniu treści strony
B. na ustaleniu adresów URL podstron
C. na rozmieszczeniu elementów w określonych miejscach strony
D. na przygotowaniu zestawu grafik
Logiczny układ strony to zaplanowanie, GDZIE znajdą się poszczególne elementy - nagłówek, menu, treść główna, panel boczny, stopka. Chodzi o rozmieszczenie bloków w określonych miejscach, zanim wypełni się je treścią. Dlatego układ to rozmieszczenie elementów na stronie.

Pytanie 31

W zaprezentowanym fragmencie algorytmu użyto

Ilustracja do pytania
A. trzy bloki operacyjne (procesy).
B. dwie pętle.
C. jedną pętlę.
D. jeden blok decyzyjny.
Niepoprawne odpowiedzi wynikają z błędnego zrozumienia struktury algorytmu. Opcja dotycząca dwóch pętli zakłada istnienie dwóch niezależnych cykli co nie znajduje potwierdzenia w przedstawionym schemacie. Taki błąd może wynikać z nieumiejętności rozróżniania złożonych konstrukcji czy mylenia pętli z blokami decyzyjnymi. Jedna pętla oznacza jedną sekwencję powtarzającą się co jest wyraźnie zilustrowane przez powrót strzałki w schemacie. Odpowiedź sugerująca jeden blok decyzyjny nie uwzględnia faktu że blok decyzyjny jest częścią struktury warunkowej a nie pętli. Decyzje wpływają na przepływ sterowania ale nie tworzą same w sobie powtarzającej się sekwencji. Trzy bloki operacyjne odnoszą się do liczby operacji w algorytmie lecz nie implikują pętli. Bloki operacyjne wykonują konkretne zadania jak obliczenia czy przypisania ale nie zmieniają struktury iteracyjnej. Zrozumienie roli każdego z tych elementów jest kluczowe w analizie algorytmów i projektowaniu efektywnego kodu.

Pytanie 32

Która funkcja PHP sortuje tablicę asocjacyjną według KLUCZY?

A.
rsort()
B.
sort()
C.
asort()
D.
ksort()
Funkcja ksort() sortuje tablicę asocjacyjną według KLUCZY (litera „k” jak key), zachowując powiązanie klucz-wartość. Dlatego po kluczach sortuje ksort().

Pytanie 33

Przy założeniu, że nie istnieją inne definicje, jakie skutki będzie miało poniższe formatowanie CSS?

<style> td {padding: 30px; } </style>

<td style="padding: 10px;">Anna</td>
<td>Ewa</td>
A. marginesy wewnętrzne wszystkich komórek wyniosą 30 px
B. marginesy wewnętrzne wszystkich komórek wyniosą 10 px
C. margines wewnętrzny komórki z napisem Anna wyniesie 30 px, a z napisem Ewa – 10 px
D. margines wewnętrzny komórki z napisem Anna wyniesie 10 px, a z napisem Ewa – 30 px
Odpowiedź jest poprawna, ponieważ w kodzie HTML zastosowano bezpośrednie nadpisanie stylu dla komórki z napisem Anna. Chociaż w sekcji style zdefiniowano, że wszystkie komórki td mają padding 30px, to w przypadku komórki Anna zastosowano style inline, które mają wyższy priorytet i nadpisują ustalone wcześniej wartości. W rezultacie padding dla komórki Anna wynosi 10px. Natomiast dla pozostałych komórek, w tym komórki z napisem Ewa, obowiązuje reguła zdefiniowana globalnie w sekcji style, czyli padding wynosi 30px. Jest to przykład specyficzności w CSS, gdzie style inline są bardziej specyficzne niż style w sekcji style. W praktyce ważne jest, aby rozumieć hierarchię i specyficzność CSS, ponieważ pozwala to na skuteczne zarządzanie stylami i unikanie niezamierzonych zmian w wyglądzie strony. Dobra praktyka nakazuje unikać styli inline na rzecz zewnętrznych arkuszy stylów, co ułatwia zarządzanie kodem i czyni go bardziej czytelnym oraz łatwiejszym w utrzymaniu. Warto też stosować metodologie takie jak BEM, które pomagają w organizacji kodu CSS.

Pytanie 34

Która z funkcji SQL nie wymaga żadnych argumentów?

A. year
B. now
C. len
D. upper
Funkcja SQL 'now()' jest jedną z funkcji, które nie wymagają argumentów, a jej głównym zadaniem jest zwracanie bieżącej daty i godziny systemowej w formacie odpowiednim dla bazy danych. Użycie tej funkcji jest niezwykle przydatne w kontekście rejestrowania momentu wykonania operacji w bazie danych, na przykład przy dodawaniu nowych rekordów do tabeli. Przykładowe zastosowanie tej funkcji można zobaczyć w poniższym zapytaniu SQL: 'INSERT INTO wydarzenia (nazwa, data_utworzenia) VALUES ('Nowe Wydarzenie', now());'. Takie podejście nie tylko automatyzuje proces rejestrowania czasu, ale także zapewnia spójność danych, eliminując ryzyko błędów związanych z ręcznym wprowadzaniem daty. W praktyce, stosowanie funkcji, które nie wymagają argumentów, jest często zgodne z zasadami dobrych praktyk programistycznych, które promują czytelność i prostotę kodu.

Pytanie 35

Jakie wyrażenie należy umieścić w miejsce ??? w pętli napisanej w języku C++, aby na ekranie zostały wyświetlone wyłącznie elementy tablicy tab?

int tab[6];
for (int i = 0; ???; i++)
    cout << tab[i];
A. i > 6
B. i <= 6
C. i >= 6
D. i < 6
Niepoprawne wybory wyrażenia warunkowego w pętli for mogą prowadzić do różnych problemów, z których głównym jest przekroczenie zakresu tablicy, co jest powszechnym błędem w programowaniu w językach takich jak C++. Błędne zastosowanie warunku i >= 6 spowodowałoby, że pętla nie wykonałaby się ani razu, ponieważ początkowa wartość i wynosi 0, co nie spełnia tego warunku. Warunek i <= 6 może wydawać się poprawny, ponieważ uwzględnia indeks 6, jednak indeks ten wykracza poza zakres tablicy posiadającej 6 elementów (z indeksami od 0 do 5), co prowadziłoby do błędu out-of-bounds. Warunek i > 6 również jest błędny, ponieważ nigdy nie zostanie spełniony przy początkowej wartości i równej 0, a pętla tym samym się nie wykona. Typowe błędy myślowe prowadzące do takich wyborów wynikają z nieprawidłowego rozumienia indeksowania tablic oraz zakresu pętli. Ważne jest, aby dokładnie przeanalizować, jak indeksy są przypisywane w tablicach i dostosować warunki pętli, aby zawsze mieściły się w poprawnym zakresie. Aby uniknąć takich błędów, zaleca się stosowanie podejścia, które uwzględnia długość tablicy i iteruje do mniejszej wartości niż jej rozmiar. Tego typu prewencja nie tylko zwiększa stabilność programu, ale również jego bezpieczeństwo, eliminując ryzyko naruszenia pamięci programu i potencjalnych podatności bezpieczeństwa.

Pytanie 36

Który modyfikator dostępu sprawia, że pole klasy jest dostępne z dowolnego miejsca programu?

A.
protected
B.
published
C.
private
D.
public
Modyfikator public oznacza, że pole lub metoda są dostępne z każdego miejsca programu - z wnętrza klasy, z klas dziedziczących i z kodu zewnętrznego. To najszerszy poziom dostępu. Stosuje się go do elementów, które mają stanowić publiczny interfejs obiektu. Dlatego dostęp zewsząd zapewnia public.

Pytanie 37

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

A. Barwienie.
B. Progowanie.
C. Inwersja.
D. Krzywe.
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 38

Tabele Klienci oraz Zgloszenia są związane relacją jeden do wielu. Jakie polecenie należy wydać, aby uzyskać tylko opis zgłoszenia oraz odpowiadające mu nazwisko klienta dla zgłoszenia numer 5?

Ilustracja do pytania
A. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.id WHERE Zgloszenia.id = 5
B. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci WHERE Klienci.id = 5
C. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.Klienci_id WHERE Zgloszenia.id = 5
D. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.Klienci_id WHERE Klienci.id = 5
W przypadku nieprawidłowych odpowiedzi często występuje błędne rozumienie relacji i składni SQL. W pierwszym przykładzie, klauzula WHERE Klienci.id = 5 próbuje filtrować według identyfikatora klienta zamiast zgłoszenia, co nie jest zgodne z celem zapytania. Taki zapis prowadzi do niepoprawnych wyników, ponieważ zamiarem jest uzyskanie danych dla konkretnego zgłoszenia, a nie wszystkich zgłoszeń danego klienta. Innym częstym błędem jest pominięcie klauzuli ON w zapytaniu, co widać w trzeciej odpowiedzi. Bez określenia warunku łączenia, SQL nie ma informacji, jak powiązać rekordy z dwóch tabel, co może skutkować błędem lub zwróceniem niepoprawnych danych. W czwartym przypadku, klauzula ON jest błędnie skonstruowana, używając Klienci.id = Zgloszenia.id, co nie odpowiada relacji klucz główny-klucz obcy. Takie błędy wynikają z niezrozumienia struktury bazy danych i jej modeli relacyjnych. W praktyce, takie niepoprawne zapytania mogą prowadzić do błędnych wniosków, utraty integralności danych i problemów z wydajnością systemu. Aby tego uniknąć, istotne jest zrozumienie logicznej struktury bazy danych oraz poprawne stosowanie składni SQL, co jest kluczowe w pracy z relacyjnymi bazami danych. W profesjonalnym środowisku, testowanie i walidacja zapytań pomogą zidentyfikować i poprawić takie błędy przed wdrożeniem w produkcji.

Pytanie 39

Implementując przedstawiony fragment algorytmu należy posłużyć się instrukcją

Ilustracja do pytania
A. while
B. for
C. break
D. if
Dobra robota! Trafiłeś z odpowiedzią - to 'if'. To, co analizowałeś, to struktura warunkowa. Używamy jej, żeby sprawdzić, czy coś się zgadza. W tym przypadku algorytm sprawdza, czy 'a' jest większe niż 'b'. Jeśli tak, to robi jedną rzecz, a jeśli nie, to robi coś innego. To klasyczne wykorzystanie 'if'. Takie instrukcje warunkowe są naprawdę ważne w programowaniu, bo umożliwiają tworzenie elastycznych algorytmów, które reagują na różne sytuacje. Dzięki nim nasze programy stają się bardziej dynamiczne i inteligentne.

Pytanie 40

CMYK to zestaw czterech podstawowych kolorów stosowanych w druku:

A. turkusowego, purpurowego, białego, czarnego
B. turkusowego, purpurowego, żółtego, czarnego
C. czerwonego, purpurowego, żółtego, szarego
D. turkusowego, błękitnego, białego, różowego
CMYK to model barw używany w druku, oparty na czterech farbach: C - cyan (turkusowy), M - magenta (purpurowy), Y - yellow (żółty) i K - key/black (czarny). Kolory powstają przez nakładanie farb na biały papier (synteza substraktywna), a czarny dodaje głębi i oszczędza pozostałe farby. Dlatego CMYK to turkusowy, purpurowy, żółty i czarny.