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: 7 kwietnia 2026 12:22
  • Data zakończenia: 7 kwietnia 2026 12:34

Egzamin zdany!

Wynik: 22/40 punktów (55,0%)

Wymagane minimum: 20 punktów (50%)

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

Deklaracja

<!DOCTYPE html>
informuje przeglądarkę internetową o:
A. tytule strony internetowej.
B. indeksowaniu strony internetowej na potrzeby pozycjonowania witryny.
C. dostosowaniu strony internetowej do różnych rozmiarów urządzeń.
D. wersji języka HTML zastosowanej w dokumencie strony internetowej.
Deklaracja <!DOCTYPE html> to wbrew pozorom bardzo ważny element każdej poprawnej strony internetowej. Informuje przeglądarkę, jaka wersja języka HTML została użyta w dokumencie, a w praktyce – że ma renderować stronę w trybie zgodnym ze współczesnym standardem HTML5. Dzięki temu przeglądarka nie próbuje włączać tzw. „quirks mode”, czyli trybu zgodności ze starymi, historycznymi błędami Internet Explorera, tylko stosuje aktualne zasady specyfikacji. Moim zdaniem to jest jeden z tych drobiazgów, które po prostu trzeba pisać z automatu na górze każdego pliku .html. W starszych wersjach HTML deklaracja DOCTYPE była dużo dłuższa i określała konkretne DTD (Document Type Definition), np. dla HTML 4.01 Transitional czy XHTML 1.0 Strict. W HTML5 uproszczono to do jednej, krótkiej formy: <!DOCTYPE html>. To właśnie ta linijka mówi: „to jest dokument HTML5”. Na tej podstawie silnik przeglądarki dobiera reguły parsowania, walidacji struktury i sposób interpretacji wielu elementów, np. sekcji <header>, <footer>, <section>, a także nowych atrybutów formularzy. W praktyce, gdy tworzysz nową stronę, zawsze zaczynasz od: <!DOCTYPE html> <html lang="pl"> <head>… Jeśli pominiesz DOCTYPE albo wpiszesz go błędnie, możesz mieć kłopot z tym, że strona wygląda inaczej w różnych przeglądarkach, pojawią się problemy z modelu pudełkowym CSS (box model), z obsługą nowych znaczników lub z poprawnym działaniem responsywnego layoutu. Walidatory W3C też zakładają konkretną wersję HTML na podstawie DOCTYPE i pod nią sprawdzają poprawność kodu. Z mojego doświadczenia wynika, że poprawny DOCTYPE to absolutna podstawa profesjonalnego front-endu, nawet jeśli wygląda jak coś „magicznego” na samej górze pliku.

Pytanie 2

Obiekt bazy danych, którego głównym przeznaczeniem jest drukowanie lub wyświetlanie zestawień danych, to

A. raport.
B. formularz.
C. makro.
D. moduł.
Poprawna odpowiedź to „raport”, bo właśnie ten obiekt bazy danych jest przeznaczony typowo do estetycznego drukowania lub wyświetlania gotowych zestawień danych. W typowych systemach bazodanowych, takich jak Microsoft Access czy różne narzędzia klasy RAD, formularze służą głównie do wprowadzania i edycji danych, kwerendy do ich wyszukiwania i filtrowania, a raporty do prezentacji wyników w uporządkowanej, czytelnej formie. Raport ma własny projekt układu: nagłówki, stopki, grupowanie po polach (np. po kliencie, dacie, dziale), sumy częściowe i końcowe, numerację stron, a często także pola obliczeniowe. To jest dokładnie to, czego potrzebujemy, gdy chcemy przygotować np. wydruk faktur, miesięczne zestawienie sprzedaży, raport obecności pracowników albo raport kasowy do działu księgowości. Z mojego doświadczenia raport traktuje się jako końcowy produkt pracy z danymi – użytkownika końcowego zwykle nie interesują tabele czy relacje, tylko czy dostanie przejrzysty wydruk lub PDF, który można wysłać dalej. Dobre praktyki mówią, żeby w raportach nie upychać logiki biznesowej ani skomplikowanych obliczeń, tylko oprzeć je na dobrze przygotowanych kwerendach. Raport powinien być możliwie prosty, czytelny i stabilny – tak, żeby zmiana sposobu liczenia odbywała się w warstwie zapytań, a nie w każdym raporcie osobno. W narzędziach BI (np. Power BI, Tableau, ale też klasyczne Crystal Reports) idea jest podobna: raport to warstwa prezentacji, która korzysta z danych z bazy, modelu analitycznego albo widoków SQL. W praktyce w firmach raporty są podstawą podejmowania decyzji, więc poprawne zrozumienie ich roli w bazie danych jest naprawdę kluczowe.

Pytanie 3

Baza danych księgarni ma tabelę ksiazki z polami: id, idAutor, tytul, ileSprzedanych oraz tabelę autorzy z polami: id, imie, nazwisko. Jak utworzyć raport dotyczący sprzedanych książek, który zawiera tytuły oraz nazwiska autorów?

A. utworzyć dwie oddzielne kwerendy: pierwszą, która wyszuka tytuły książek, a drugą, która pobierze nazwiska autorów
B. Zdefiniować relację 1..n między tabelami ksiazki i autorzy, a następnie stworzyć kwerendę łączącą obie tabele
C. Ustalić relację 1..1 pomiędzy tabelami ksiazki i autorzy, a następnie stworzyć kwerendę łączącą obie tabele
D. stworzyć kwerendę, która wyszukuje tytuły książek
Podejścia polegające na tworzeniu dwóch osobnych kwerend lub definiowaniu relacji 1..1 są błędne z kilku powodów. Rekomendacja dotycząca tworzenia dwóch osobnych kwerend, z jedną dla tytułów książek i drugą dla nazwisk autorów, prowadzi do nieefektywności. Umożliwia to jedynie pobranie fragmentarycznych danych, które następnie trzeba łączyć w aplikacji lub manualnie, co zwiększa ryzyko błędów i wymaga dodatkowego wysiłku. Kwerendy są wydajniejsze w połączeniu, a ich wykonanie jest szybsze i bardziej zorganizowane. Z kolei definicja relacji 1..1 pomija fakt, że jeden autor może napisać wiele książek, co nie oddaje rzeczywistej struktury danych. Takie podejście prowadzi do niepoprawnego modelowania danych, które uniemożliwia efektywne zarządzanie informacjami o książkach i ich autorach. W praktyce, prawidłowe zdefiniowanie relacji w bazie danych jest kluczowe dla integracji danych oraz ich przyszłego wykorzystania, a także dla zapewnienia integralności referencyjnej. Dlatego też, ważne jest, aby zrozumieć zasady rządzące relacjami między tabelami oraz umiejętnie stosować złączenia w kwerendach.

Pytanie 4

Zaproponowany blok ilustruje operację

Ilustracja do pytania
A. załadowania lub przedstawienia danych
B. realizacji zadania w pętli
C. wykorzystania wcześniej zdefiniowanej procedury lub funkcji
D. podjęcia decyzji
Podjęcie decyzji w programowaniu jest kluczowym elementem umożliwiającym dynamiczne i warunkowe działania w aplikacjach. Symbolicznie, blok decyzyjny w diagramie przepływu, takim jak przedstawiony na obrazku, oznacza punkt, w którym program sprawdza określony warunek i w zależności od jego wyniku podejmuje różne ścieżki działania. Jest to często implementowane przy użyciu struktur decyzyjnych takich jak instrukcje if-else w wielu językach programowania. Na przykład w języku Python decyzję można wyrazić jako if temperatura > 30: print('Gorąco') else: print('Chłodno'). Decyzje te pozwalają programowi reagować na zmieniające się warunki i dane wejściowe, co jest niezbędne w tworzeniu interaktywnych aplikacji czy systemów sterowania. Zgodnie z dobrymi praktykami w inżynierii oprogramowania, właściwe stosowanie bloków decyzyjnych sprzyja czytelności kodu i efektywności jego działania. Dodatkowo, w większych projektach często stosuje się wzorce projektowe takie jak stan lub strategia, które opierają się na mechanizmach decyzyjnych, pomagając zarządzać złożonością kodu i poprawiać jego skalowalność.

Pytanie 5

W języku JavaScript następujący zapis: var napis1 = new napisy); ma na celu

A. wywołanie metody dla obiektu napisy
B. stworzenie instancji obiektu napis1 klasy napisy
C. stworzenie nowej klasy napis1
D. zadeklarowanie zmiennej napis1 oraz wywołanie funkcji, w której argumentem jest napis1
Pierwsza z niepoprawnych odpowiedzi sugeruje, że kod tworzy nową klasę 'napis1', co jest błędem. W rzeczywistości, w JavaScript klasy są definiowane za pomocą słowa kluczowego 'class', a 'new napisy()' uruchamia konstruktor, a nie definiuje klasę. Klasy w JavaScript można zdefiniować w następujący sposób: 'class napisy { constructor() { this.text = ''; }}', co wyraźnie różni się od podanego przykładu. Kolejna odpowiedź mówi o wywołaniu metody obiektu 'napisy', co również jest mylące, ponieważ aby wywołać metodę, obiekt musi być już stworzony, a 'new napisy()' nie wywołuje metody, lecz tworzy instancję obiektu. Ostatnia z odpowiedzi wskazuje na zadeklarowanie zmiennej 'napis1' i wywołanie funkcji z argumentem 'napis1', co jest całkowicie niezgodne z intencją podanego kodu. Nie ma tu żadnego wywołania funkcji z argumentem, a 'new' jest używane do instancjonowania klasy, co nie ma nic wspólnego z przekazywaniem argumentów do funkcji. Tak więc, wszystkie te odpowiedzi nie oddają prawidłowego zrozumienia działania konstrukcji obiektowych w JavaScript.

Pytanie 6

Które z poniższych poleceń przywróci funkcjonalność uszkodzonej tabeli w SQL?

A. ANALYZE TABLE tbl_name
B. REPAIR TABLE tbl_name
C. OPTIMIZE TABLE tbl_name
D. REGENERATE TABLE tbl_name
Polecenie REPAIR TABLE tbl_name jest używane w systemach zarządzania bazami danych, takich jak MySQL, do naprawy uszkodzonych tabel. Kiedy tabela ulega uszkodzeniu, na przykład z powodu błędów podczas zapisu danych, utraty zasilania lub problemów z dyskiem, REPAIR TABLE analizuje strukturę tabeli i podejmuje próby przywrócenia jej do stanu operacyjnego. Działanie to jest szczególnie przydatne w przypadku tabel typu MyISAM, które mogą być bardziej podatne na uszkodzenia niż inne silniki, takie jak InnoDB. Użycie tego polecenia jest stosunkowo proste: wystarczy wykonać zapytanie w formacie REPAIR TABLE nazwa_tabeli. W praktyce, aby zwiększyć bezpieczeństwo danych, zaleca się regularne wykonywanie kopii zapasowych oraz monitorowanie logów serwera bazy danych, co pozwala na wczesne wykrywanie problemów i minimalizowanie ryzyka utraty danych. Dodatkowo, dokumentacja MySQL podkreśla znaczenie tego polecenia jako narzędzia do utrzymania integralności baz danych, co czyni go nieocenionym w pracy administratora baz danych.

Pytanie 7

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

A. BOOLEAN
B. DOUBLE
C. CHAR
D. VARCHAR(5)
Odpowiedź BOOLEAN jest optymalnym wyborem dla pola status czyWypozyczona, ponieważ reprezentuje typ danych logicznych, które mogą przyjmować jedynie dwie wartości: prawda (true) lub fałsz (false). W kontekście systemów baz danych, typ BOOLEAN jest używany do efektywnego przechowywania informacji, które mają tylko dwa możliwe stany, co pozwala na oszczędność miejsca oraz przyspieszenie operacji zapytań. Na przykład, przy tworzeniu zapytań SQL, możemy łatwo filtrować wyniki na podstawie statusu wypożyczenia, co znacząco zwiększa czytelność i wydajność kodu. Warto również zauważyć, że wiele systemów baz danych, takich jak MySQL, PostgreSQL, czy SQLite, oferują dedykowane wsparcie dla typu BOOLEAN, co czyni go zgodnym z najlepszymi praktykami w projektowaniu baz danych, w których dąży się do maksymalnej klarowności i wydajności. Dzięki temu, stosując typ BOOLEAN, nie tylko upraszczamy model danych, ale także ułatwiamy jego dalsze wykorzystanie i konserwację.

Pytanie 8

W SQL klauzula DISTINCT w poleceniu SELECT spowoduje, że otrzymane dane

A. będą spełniały dany warunek
B. będą zgrupowane według wskazanego pola
C. zostaną uporządkowane
D. nie będą zawierały powtórzeń
Użycie klauzuli DISTINCT w instrukcji SELECT w języku SQL ma na celu eliminację powtórzeń w zwracanych wynikach. Dzięki temu, gdy wykonujemy zapytanie, w którym chcemy uzyskać unikalne wartości z określonej kolumny, możemy uniknąć sytuacji, w której te same dane pojawiają się wielokrotnie. Na przykład, jeśli mamy tabelę z informacjami o klientach, a chcemy otrzymać listę unikalnych miast, w których mieszkają, możemy użyć zapytania SELECT DISTINCT city FROM customers. Ta funkcjonalność jest szczególnie przydatna w raportowaniu i analizie danych, gdzie unikalność wartości ma kluczowe znaczenie. Warto również zauważyć, że klauzula DISTINCT wpływa na wydajność zapytań, dlatego ważne jest, aby używać jej tylko wtedy, gdy jest to rzeczywiście konieczne. Przy stosowaniu DISTINCT warto również znać inne techniki, takie jak grupowanie danych przy użyciu GROUP BY, które może być bardziej odpowiednie w niektórych scenariuszach, szczególnie gdy chcemy wykonywać agregacje.

Pytanie 9

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

A. przesyłanie danych formularzy bezpośrednio do bazy danych
B. pobieranie i zmianę elementów strony, która jest wyświetlana przez przeglądarkę
C. manipulację łańcuchami zdefiniowanymi w kodzie
D. przeprowadzanie operacji na zmiennych zawierających liczby
No cóż, odpowiedzi, które mówisz o manipulacji łańcuchami, wysyłaniu formularzy do baz czy operacjach na liczbach, nie są związane z tym, co oferuje DOM. Manipulacja łańcuchami dotyczy zmiennych w JavaScript, a nie interakcji z elementami na stronie. Wysyłanie formularzy do bazy danych to temat dla innych technologii, jak AJAX, a nie coś, co robi DOM. Operacje na liczbach też są częścią samego JavaScript, ale nie mają nic wspólnego z elementami HTML. Często można usłyszeć, że DOM to wszystko, co związane z JavaScript, ale tak nie jest. DOM to narzędzie do zmiany struktury strony, a nie do obliczeń. Warto to rozróżnić, żeby nie popełniać błędów w projektowaniu aplikacji webowych, bo to może przysporzyć problemów.

Pytanie 10

Aby włączyć do skryptu zawartość pliku egzamin.php z kodem PHP, należy użyć polecenia

A. fopen("egzamin.php");
B. fgets("egzamin.php");
C. include("egzamin.php");
D. getfile("egzamin.php");
Instrukcja include w PHP jest używana do włączania zawartości jednego pliku PHP do innego. Dzięki temu możemy dzielić kod na mniejsze, modularne fragmenty, co ułatwia zarządzanie nim oraz sprzyja wielokrotnemu używaniu tych samych elementów w różnych częściach aplikacji. Kiedy używamy include('egzamin.php');, PHP wykonuje kod zawarty w pliku egzamin.php w miejscu, w którym znajduje się ta instrukcja. Jest to szczególnie przydatne w przypadku, gdy chcemy załadować szereg funkcji, klas lub nawet szablonów HTML. Ponadto, jeśli plik, który chcemy dołączyć, nie istnieje, PHP zgłosi ostrzeżenie, ale skrypt będzie kontynuowany. Z perspektywy standardów programowania i najlepszych praktyk w PHP, użycie include jest szeroko akceptowane do organizacji kodu. Przykładowo, w projekcie PHP można mieć osobny plik dla połączenia z bazą danych i dołączyć go w każdym skrypcie, który wymaga dostępu do danych. Taki sposób organizacji kodu zwiększa jego czytelność i ułatwia konserwację.

Pytanie 11

Parametr face w znaczniku <font> jest używany do określenia

A. koloru czcionki
B. typy czcionki
C. stylów czcionki
D. rozmiaru czcionki
Zrozumienie parametrów stylizacji tekstu jest kluczowe w pracy z HTML i często napotyka na nieporozumienia. Wiele osób błędnie interpretuje funkcję parametru <b>face</b> w znaczniku <b>&lt;font&gt;</b>, co prowadzi do niepoprawnych odpowiedzi. Na przykład, nie jest on używany do określenia barwy czcionki, co jest zadaniem innego parametru, jak 'color'. Barwa czcionki dotyczy estetyki i może być ustawiana niezależnie od samej czcionki. Kolejnym błędnym założeniem jest możliwość korzystania z parametru <b>face</b> do definiowania efektów czcionki, takich jak pogrubienie czy kursywa; te efekty są zwykle osiągane przy użyciu osobnych znaczników lub stylów CSS, takich jak 'font-weight' czy 'font-style'. Wreszcie, pomylenie parametru <b>face</b> z określeniem wielkości czcionki również jest częstym błędem myślowym, ponieważ do tego celu używa się atrybutu 'size', który skoncentrowany jest na rozmiarze tekstu, a nie na jego typie. Warto pamiętać, że precyzyjne zrozumienie tych różnic nie tylko wpływa na jakość tworzonego kodu, ale również na dostępność i estetykę stron internetowych.

Pytanie 12

Wyrażenie JavaScript:

document.write(5==='5');
Co zostanie wyświetlone?
A. true
B. 0
C. false
D. 1
Odpowiedzi, które wybrałeś, jak '0', 'true' i '1', pokazują, że mogło dojść do pewnych nieporozumień w zrozumieniu, jak działają operatory porównania w JavaScript. Na przykład '0' może sugerować, że sądzisz, że wynik jest liczbowy, a nie logiczny. Warto pamiętać, że w JavaScript liczby i wartości logiczne to różne typy danych. '0' oznacza fałsz, więc to nie jest właściwy wynik. Odpowiedź 'true' świadczy o błędnym przekonaniu, że porównywane wartości są takie same, co nie jest zgodne z tym, co robi '===' . Natomiast odpowiedź '1' sugeruje, że mogłeś pomylić wynik porównania z kodem prawdy w formie 1, co zdarza się w niektórych językach, ale w JavaScript to nie działa. Kluczowe jest to, że '===' porównuje zarówno wartości, jak i typy, więc porównując liczbę i ciąg znaków, dostajemy 'false'. W JavaScript mamy 'true' i 'false', a porównania powinny uwzględniać typy danych, żeby uniknąć zamieszania. Fajnie byłoby, gdybyś zgłębił temat typów danych w JavaScript i sam spróbował różnych porównań, żeby lepiej to ogarnąć.

Pytanie 13

Wskaż właściwą sekwencję faz projektowania relacyjnej bazy danych?

A. Określenie relacji, Określenie kluczy podstawowych, Selekcja, Określenie zbioru danych
B. Określenie zbioru danych, Selekcja, Określenie kluczy podstawowych tabel, Określenie relacji
C. Selekcja, Określenie relacji, Określenie kluczy podstawowych tabel, Określenie zbioru danych
D. Określenie kluczy podstawowych tabel, Określenie zbioru danych, Selekcja, Określenie relacji
Wszystkie te błędne odpowiedzi zapominają o jednym ważnym aspekcie – czyli kolejności w projektowaniu relacyjnych baz danych. Jak zaczniesz od ustalania relacji, nie mając wcześniej sprecyzowanego zbioru danych, to później może być naprawdę chaotycznie. Trudniej wtedy zrozumieć, jakie dane powinny być razem, co tylko skomplikuje projekt. Jeśli określisz klucze podstawowe, zanim dobrze zrozumiesz, jakie atrybuty mamy, to może być dość problematyczne. Kolejność działań jest kluczowa – najpierw musimy mieć zbiór danych, potem selekcję, a na końcu relacje. Odwrotna kolejność tylko wprowadza zamieszanie i może negatywnie wpływać na wydajność. A tego w IT nie chcemy.

Pytanie 14

Oznaczenie barwy w postaci #FF00E0 jest równoważne zapisowi

A. rgb(FF, 0, E0)
B. rgb(255, 0, 224)
C. rgb(F, 0, E0)
D. rgb(255, 0, 128)
Zapis #FF00E0 to klasyczny przykład koloru w notacji szesnastkowej, używanej w CSS i ogólnie w webdesignie. Cały haczyk polega na tym, że te literki i cyfry nie są traktowane jako tekst, tylko jako liczby w systemie o podstawie 16. Każde dwa znaki odpowiadają jednej składowej koloru: czerwonej, zielonej i niebieskiej. Czyli mamy strukturę: #RRGGBB. W tym konkretnym przypadku RR = FF, GG = 00, BB = E0. Częsty błąd polega na traktowaniu tych liter dosłownie, jak w odpowiedziach typu rgb(F, 0, E0) czy rgb(FF, 0, E0). W zapisie rgb() wartości muszą być liczbami dziesiętnymi z zakresu 0–255, a nie ciągami znaków. Przeglądarka oczekuje tam konkretnych wartości natężenia składowych, a nie kodu szesnastkowego. FF to nie symbol, tylko liczba w systemie hex. Żeby ją poprawnie zinterpretować, trzeba przeliczyć ją na system dziesiętny: F to 15, więc FF = 15×16 + 15 = 255. Podobnie z E0: E to 14, więc E0 = 14×16 + 0 = 224. Z mojego doświadczenia to przeliczanie jest źródłem wielu pomyłek, szczególnie na początku nauki. Inny typowy błąd myślowy to zgadywanie wartości na oko, jak w odpowiedzi rgb(255, 0, 128). Ktoś widzi intensywny kolor, więc daje maksymalny czerwony i jakąś średnią wartość niebieskiego. Problem w tym, że hex E0 to wcale nie jest 128, tylko 224, czyli dużo bliżej maksimum 255 niż środka skali. Takie „strzelanie” bez przeliczenia łamie spójność pomiędzy zapisem hex a rgb i prowadzi do zupełnie innego koloru niż zamierzony. Dobra praktyka w branży jest taka, żeby zawsze pamiętać: zapis hex to trzy liczby 0–255 zapisane w bazie 16, a rgb() to te same liczby zapisane normalnie, po ludzku, w systemie dziesiętnym. Jeżeli pojawiają się litery A–F, to znaczy, że mamy do czynienia z systemem szesnastkowym i trzeba je potraktować jak cyfry 10–15, a nie jako jakiś tekst. To niby drobiazg, ale w pracy front-endowca albo grafika webowego ma ogromne znaczenie, bo precyzja kolorów jest kluczowa dla spójności całego projektu graficznego.

Pytanie 15

Rozmiary ekranu w formacie 16:9 (zakładając, że piksel jest kwadratem) można osiągnąć przy rozdzielczości

A. 800 na 480 pikseli
B. 320 na 240 pikseli
C. 2560 na 2048 pikseli
D. 1366 na 768 pikseli
Odpowiedź 1366 na 768 pikseli jest poprawna, ponieważ proporcja szerokości do wysokości wynosi dokładnie 16:9. Aby to obliczyć, dzielimy szerokość przez wysokość: 1366 / 768 = 1,78, co jest bliskie wartości 1,77 (16:9). Proporcje 16:9 stały się standardem w telewizji wysokiej rozdzielczości oraz w produkcji wideo, co oznacza, że są szeroko stosowane w przemysłach związanych z mediami i technologią. Przykładem zastosowania tej rozdzielczości może być wyświetlanie filmów na nowoczesnych telewizorach, gdzie forma obrazu 16:9 pozwala na pełne wykorzystanie ekranu bez czarnych pasków po bokach. Stosując to w projektach multimedialnych, warto zawsze dążyć do zgodności z tymi standardami, aby zapewnić optymalne wrażenia wizualne dla użytkowników. Zrozumienie tych proporcji jest kluczowe dla profesjonalistów zajmujących się grafiką, filmem i projektowaniem UX/UI.

Pytanie 16

Jak prawidłowo skomentować linię kodu w języku Java Script? Komentarz powinien być umieszczony po znakach //

x = Math.max(a,b,c); //
A. w zmiennej x minimalna wartość ze zmiennych a, b, c
B. wybór losowej wartości ze zmiennych a, b i c
C. w zmiennej x maksymalna wartość ze zmiennych a, b, c
D. nieprawidłowe dane
Odpowiedź numer 1 jest całkiem trafna, bo funkcja Math.max w JavaScript tak naprawdę najpierw sprawdza, która z podanych wartości jest największa. W tym wypadku, x = Math.max(a, b, c) zwraca największą liczbę z a, b i c i przypisuje ją do x. To jest super przydatne, gdy musisz szybko porównać jakieś liczby, na przykład podczas analizowania danych albo ustalania maksymalnych limitów w aplikacjach internetowych. Math.max to część wbudowanej biblioteki Math, która ma sporo przydatnych funkcji. Wykorzystanie tej funkcji jest zgodne z dobrymi praktykami programowania, bo jest szybka i bezpieczna. Co ważne, Math.max przyjmuje różną liczbę argumentów, więc można ją łatwo dopasować do swoich potrzeb. Używanie tej funkcji naprawdę poprawia czytelność kodu, a to jest kluczowe w projektach, gdzie inne osoby mogą musieć zrozumieć nasz kod.

Pytanie 17

Który zapis w języku JavaScript daje taki sam wynik jak poniższy kod?

x = 0;
x += 10;
A. x = 0; x++; x = x + 9
B. x = 0; x--; x *= 9
C. x = 10; x = x + 10
D. x = 10; x = 0
Analiza odpowiedzi prowadzi do zrozumienia, że w niektórych przypadkach programiści mogą mieć trudności z interpretacją operacji na zmiennych. W przypadku pierwszej z niepoprawnych odpowiedzi, x = 0; x--; x *= 9; prowadzi to do innej logiki. Po przypisaniu x = 0, użycie x-- zmienia wartość x na -1, a następnie mnożenie przez 9 skutkuje -9, co nie ma nic wspólnego z oczekiwaną wartością 10. To pokazuje, jak nieprawidłowe zrozumienie podstawowych operacji arytmetycznych może prowadzić do błędów. W drugiej niepoprawnej odpowiedzi, x = 10; x = x + 10; przypisanie 10 do x oraz dodanie 10 do x daje wartość 20, co również jest dalekie od oczekiwanego wyniku. Takie nieprawidłowe podejście do operacji przypisania i dodawania może być wynikiem niedostatecznej znajomości reguł działania operatorów w JavaScript. Wreszcie, ostatnia odpowiedź, x = 10; x = 0; jest sprzeczna sama w sobie, ponieważ po przypisaniu 10, nadpisanie wartości na 0 bez żadnej operacji arytmetycznej skutkuje wartością 0, co jest jeszcze bardziej mylące. Wnioskując, kluczowe jest zrozumienie, jak działają operatory w JavaScript oraz unikanie typowych pułapek wynikających z niepoprawnego łączenia przypisania i operacji arytmetycznych. Takie błędy mogą prowadzić do trudności w debugowaniu i utrzymaniu kodu, dlatego warto przestrzegać dobrych praktyk programistycznych oraz dokładnie analizować operacje na zmiennych.

Pytanie 18

Model reprezentacji kolorów z parametrami: hue, saturation i value, to

A. RGB
B. CMY
C. CMYK
D. HSV
Odpowiedź HSV (Hue, Saturation, Value) jest poprawna, ponieważ ten model opisu przestrzeni barw koncentruje się na trzech kluczowych parametrach: odcieniu, nasyceniu i jasności. Odcień odnosi się do rzeczywistego koloru, nasycenie informuje o intensywności koloru, a jasność wskazuje na jego jasność. Model HSV jest szczególnie użyteczny w aplikacjach graficznych oraz podczas pracy z grafiką komputerową, ponieważ jest bardziej intuicyjny dla ludzi, niż inne modele, takie jak RGB czy CMYK. Przykładem zastosowania modelu HSV jest edytor graficzny, gdzie użytkownik może łatwo dostosować kolor, manipulując tymi trzema parametrami. Standardy branżowe, takie jak Adobe Photoshop, implementują ten model, co pozwala na efektywne tworzenie i edytowanie kolorów. Dodatkowo, model HSV jest używany w programowaniu komputerowym do tworzenia efektów wizualnych, gdzie precyzyjne dostosowanie kolorów jest kluczowe.

Pytanie 19

Podaj zapytanie SQL, które tworzy użytkownika sekretarka na localhost z hasłem zaq123

CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123"; 
A. CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123'
B. CREATE USER 'sekretarka'@'localhost' IDENTIFIED `zaq123`
C. CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123"
D. CREATE USER `sekretarka`@`localhost` IDENTIFY BY `zaq123`
Użycie nieprawidłowych składni w zapytaniach SQL może prowadzić do nieporozumień i błędów w konfiguracji użytkowników. W przypadku podanych błędnych odpowiedzi, brak użycia frazy 'IDENTIFIED BY' z odpowiednio umieszczonym hasłem w pojedynczych cudzysłowach jest kluczowym błędem. Na przykład, w jednym z przypadków zastosowano słowo 'IDENTIFY', które jest niepoprawne i nie jest częścią składni SQL dla tworzenia użytkowników. Różnice w użyciu pojedynczych cudzysłowów i backticks również mają znaczenie; backticks są używane do oznaczania nazw obiektów w SQL, podczas gdy hasła powinny być otoczone pojedynczymi cudzysłowami. Ponadto, znaki takie jak ` zaq123` w niektórych odpowiedziach sugerują mylne zrozumienie zasad definiowania danych tekstowych w SQL. Niepoprawne podejście do tworzenia użytkowników może skutkować problemami w zakresie bezpieczeństwa, ponieważ niewłaściwie skonfigurowani użytkownicy mogą uzyskiwać nieautoryzowany dostęp do systemów. Właściwe zrozumienie składni SQL oraz terminologii jest kluczowe do skutecznego zarządzania bazami danych i zapewnienia odpowiedniego poziomu ochrony informacji.

Pytanie 20

Aby utworzyć styl strony responsywnej dla ekranów o szerokości od 600 px do 800 px należy zastosować regułę CSS

A. @media screen (min-width: 800px) and (max-width: 600px){/*style css*/}
B. @media (max-width: 800px) (min-width: 600px){/*style css*/}
C. @media screen and (max-width: 800px) and (min-width: 600px){/*style css*/}
D. @media (min-width: 800px){/*style css*/}
Prawidłowa reguła to @media screen and (max-width: 800px) and (min-width: 600px){/*style css*/}, bo dokładnie określa zakres szerokości ekranu od 600 px do 800 px i robi to w sposób zgodny ze składnią CSS. Kluczowe są tu trzy elementy: słowo kluczowe screen, operator and oraz poprawna kolejność i zapis warunków min-width i max-width. Media queries działają tak, że przeglądarka sprawdza, czy wszystkie warunki połączone słowem and są spełnione. W tym przypadku styl zadziała tylko wtedy, gdy typ urządzenia to ekran (screen) i szerokość widoku (viewport) jest jednocześnie nie mniejsza niż 600 px i nie większa niż 800 px. To jest właśnie typowy zapis tzw. przedziału (range) w responsywnym CSS. W praktyce taki zakres wykorzystuje się np. do stylowania widoków tabletów w pozycji pionowej lub poziomej, w zależności od projektu. Możesz tam zmieniać układ kolumn z trzech na dwie, powiększać przyciski, dostosowywać rozmiary czcionek, marginesy, czy ukrywać mniej ważne elementy. Co ważne, użycie screen ogranicza stosowanie tych styli tylko do ekranów, a nie np. do wydruku (print), co jest zgodne z dobrą praktyką opisaną w specyfikacji CSS Media Queries Level 3 i nowszych. Z mojego doświadczenia dobrym nawykiem jest zawsze pilnować spójnych breakpointów, np. 480 px, 600 px, 768 px, 1024 px, i dla każdego z nich pisać media queries w dokładnie takim formacie, jak w tej poprawnej odpowiedzi. Ułatwia to późniejsze utrzymanie kodu i eliminuje dziwne „przeskoki” layoutu między rozdzielczościami. Dodatkowo warto pamiętać, że kolejność min-width i max-width nie ma znaczenia dla działania, ale przyjęcie jednej konwencji w projekcie mocno poprawia czytelność kodu zespołowego.

Pytanie 21

ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;
Wykonanie powyższej kwerendy SQL w bazie MySQL spowoduje:
A. zmianę typu danych w kolumnie rok_produkcji na INT.
B. utworzenie tabeli transport zawierającej kolumnę rok_produkcji.
C. usunięcie kolumny rok_produkcji w tabeli transport.
D. dodanie kolumny rok_produkcji typu INT w tabeli transport.
Poprawnie – polecenie ALTER TABLE ... MODIFY COLUMN w MySQL służy do modyfikowania istniejącej kolumny, a nie do jej tworzenia czy usuwania. W podanym przykładzie baza danych szuka tabeli o nazwie `transport`, a następnie zmienia definicję kolumny `rok_produkcji` tak, aby jej typ danych był `INT`. Jeśli kolumna już istnieje (a musi istnieć, żeby MODIFY zadziałało), to po wykonaniu polecenia dalej będzie miała tę samą nazwę, ale jej typ i właściwości zostaną nadpisane nową definicją. W MySQL warto pamiętać, że przy MODIFY COLUMN trzeba podać pełną definicję kolumny, nie tylko sam typ. Czyli jeśli wcześniej była np. NOT NULL albo miała domyślną wartość, to dobra praktyka jest napisać coś w stylu: `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT NOT NULL DEFAULT 2000;` – inaczej można przypadkiem zgubić część ustawień. W praktyce takie polecenia stosuje się przy zmianach w projekcie bazy: np. najpierw kolumna jest typu VARCHAR, bo ktoś przechowuje tam rok jako tekst, a potem, zgodnie z lepszymi zasadami projektowania, zmienia się to na typ liczbowy INT, żeby można było łatwo filtrować, sortować, robić warunki typu `WHERE rok_produkcji > 2015`. Z mojego doświadczenia dobrze jest przed taką zmianą sprawdzić, czy wszystkie dane da się bezpiecznie skonwertować na liczbę, bo jeśli w kolumnie są jakieś śmieciowe wartości tekstowe, to MySQL może je obciąć albo zamienić na 0, co później robi bałagan w raportach. W środowiskach produkcyjnych takie ALTER TABLE najlepiej wykonywać po zrobieniu kopii zapasowej i często w oknie serwisowym, bo przy dużych tabelach operacja może chwilowo blokować dostęp do danych.

Pytanie 22

Który z czynników ma negatywny wpływ na efektywną współpracę w zespole?

A. rywalizacja między członkami zespołu
B. efektywna komunikacja
C. podział ról i obowiązków
D. wzajemny szacunek
Rywalizacja między członkami zespołu jest zasadą, która w sposób negatywny wpływa na efektywność współpracy. Tego rodzaju rywalizacja prowadzi do konfliktów, osłabia zaufanie oraz może skutkować brakiem otwartości w komunikacji. W praktyce, gdy zespół zamiast współdziałać, koncentruje się na konkurencji, członkowie mogą zacząć ukrywać informacje lub sabotować działania innych, co obniża ogólną wydajność. Dobrym przykładem jest sytuacja, gdy w projekcie dwóch programistów stara się zdobyć uznanie lidera, co prowadzi do rywalizacji i pomija współpracę. Efektem może być spadek jakości pracy, opóźnienia w realizacji zadań oraz frustracja w zespole. Standardy zarządzania projektami, takie jak Agile, podkreślają znaczenie współpracy i dzielenia się wiedzą w celu osiągnięcia sukcesu. Przyjazne środowisko pracy, w którym członkowie zespołu wspierają się nawzajem, jest kluczem do efektywności i innowacyjności.

Pytanie 23

Podane w ramce polecenie SQL ma za zadanie

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. ustawić wartość w kolumnie id_klasy na 1 dla wszystkich rekordów tabeli Uczen
B. zwiększyć o jeden wartość w kolumnie id_klasy dla wszystkich rekordów tabeli Uczen
C. ustawić wartość pola id_klasy na 1 dla wszystkich rekordów tabeli Uczen
D. zwiększyć o jeden wartość pola id_klasy w jednym rekordzie tabeli Uczen
Analizując to polecenie SQL, warto na spokojnie rozłożyć je na części, bo większość nieporozumień bierze się z mylenia stałej wartości z wyrażeniem oraz z niezauważenia braku klauzuli WHERE. W zapisie UPDATE Uczen SET id_klasy = id_klasy + 1; po lewej stronie znaku równości mamy kolumnę, którą aktualizujemy, a po prawej – wyrażenie, które określa nową wartość. To wyrażenie nie jest stałą liczbą 1, tylko operacją: bieżąca wartość id_klasy plus 1. Dlatego nie można tego interpretować jako „ustaw wartość na 1”. Gdyby celem było ustawienie identycznej wartości dla wszystkich uczniów, składnia wyglądałaby np. tak: UPDATE Uczen SET id_klasy = 1; i wtedy rzeczywiście każdemu rekordowi przypisano by dokładnie 1, bez użycia dotychczasowej wartości. Druga częsta pomyłka dotyczy zakresu działania UPDATE. W SQL to klauzula WHERE zawęża liczbę modyfikowanych rekordów. Jeśli WHERE nie ma, silnik bazy danych zgodnie ze standardem SQL przyjmuje, że operacja dotyczy wszystkich wierszy tabeli. Nie istnieje domyślne założenie „tylko jeden rekord”, chyba że jawnie wskażemy warunek, który zwróci pojedynczy wiersz, np. WHERE id_ucznia = 5. Dlatego interpretacja, że polecenie zmienia tylko jeden rekord, jest po prostu sprzeczna z tym, jak działa mechanizm UPDATE. Z mojego doświadczenia typowy błąd myślowy polega na tym, że ktoś patrzy na przykład z dokumentacji, gdzie często pojawia się WHERE, i podświadomie zakłada, że on tam „zawsze jest”. A tu go po prostu nie ma, więc działanie jest globalne. Drugi błąd to utożsamianie zapisu „+ 1” z „ustaw na 1”, co jest bardzo niebezpieczne w prawdziwych systemach, bo łatwo wtedy masowo popsuć dane. Dobre praktyki w pracy z SQL mówią jasno: zawsze dokładnie analizuj część SET oraz obecność lub brak WHERE, a przed wykonaniem złożonego UPDATE warto najpierw uruchomić SELECT z tym samym warunkiem, żeby zobaczyć, które rekordy zostaną zmienione. Taka systematyka pozwala uniknąć właśnie takich nieporozumień, jakie widać w błędnych odpowiedziach.

Pytanie 24

Na podstawie relacji przedstawionej na ilustracji, można stwierdzić, że jest to relacja

Ilustracja do pytania
A. jeden do wielu, gdzie kluczem obcym jest pole w tabeli uslugi
B. jeden do wielu, gdzie kluczem obcym jest pole w tabeli kadra
C. wiele do wielu pomiędzy kluczami głównymi obu tabel
D. jeden do jednego, gdzie obie tabele mają przypisane klucze obce
Odpowiedzi błędne opierają się na niewłaściwym zrozumieniu relacji w bazach danych. Pierwsza z błędnych koncepcji sugeruje relację jeden do wielu, gdzie kluczem obcym jest pole w tabeli kadra, co jest odwrotne do przedstawionej struktury, gdyż w rzeczywistości pole kadra_id znajduje się w tabeli uslugi, wskazując na tabelę kadra. Relacja jeden do jednego, w której obie tabele mają klucze obce, oznaczałoby, że każdy rekord w jednej tabeli jest ściśle powiązany z jednym rekordem w drugiej, co nie jest przypadkiem dla tych danych. Takie podejście zwykle stosuje się, gdy tabele przechowują różne aspekty tego samego podmiotu, co nie jest odzwierciedlone na diagramie. Relacja wiele do wielu między kluczami głównymi obu tabel wymagałaby użycia dodatkowej tabeli łączącej, co umożliwiałoby powiązanie wielu rekordów każdej z tabel z wieloma rekordami drugiej, co również nie jest przedstawione tutaj. Typową pomyłką przy analizie tego typu relacji jest nieuwzględnienie struktury kluczy obcych i ich roli w łączeniu danych poprzez zrozumienie ich jako jedynie strukturalne powiązania, zamiast narzędzi umożliwiających integralność i spójność danych w bazie. Ważne jest, aby zawsze analizować kierunek relacji i rolę kluczowych pól w kontekście aplikacji i modelu danych, co zapobiega błędnym interpretacjom i wspiera prawidłowe projektowanie bazy danych, zgodnie z jej wymaganiami funkcjonalnymi i wydajnościowymi.

Pytanie 25

Kwerenda umożliwiająca modyfikację wielu rekordów lub przeniesienie ich przy pomocy jednego działania, określana jest jako kwerenda

A. parametrycznej
B. wybierająca
C. funkcjonalnej
D. krzyżowej
Odpowiedzi takie jak kwerenda wybierająca, parametryczna czy krzyżowa nie są właściwe w tym kontekście pytania, bo nie są do wprowadzania zmian w wielu rekordach. Kwerenda wybierająca filtruje i zwraca dane z bazy, ale nie zmienia ich. Często ludzie mylą to z masowym przetwarzaniem, co prowadzi do błędnych wniosków. Kwerenda parametryczna za to pozwala na dynamiczne dodawanie zmiennych podczas wykonywania zapytania, ale również nie działa na masowej aktualizacji. Jest bardziej o elastycznym pobieraniu danych według jakichś kryteriów. Kwerenda krzyżowa z kolei służy do analizy danych w formie tabeli przestawnej, co jest zupełnie inną bajką, bo tu chodzi bardziej o zestawianie niż o modyfikacje. Często myli się różne typy kwerend i ich funkcje w bazach danych, co może prowadzić do zamieszania i błędów. Ważne jest, żeby zrozumieć, że te różne kwerendy mają swoje konkretne zastosowania i są projektowane do różnych zadań w ramach baz danych.

Pytanie 26

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

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

Pytanie 27

W języku CSS, aby ustalić wewnętrzny górny margines, czyli przestrzeń pomiędzy elementem a jego otaczającym obramowaniem, należy zastosować komendę

A. border-top
B. local-top
C. outline-top
D. padding-top
W języku CSS, aby zdefiniować wewnętrzny górny margines elementu, należy użyć właściwości padding-top. Marginesy wewnętrzne (padding) to przestrzeń, która znajduje się pomiędzy zawartością elementu a jego obramowaniem, co pozwala na stworzenie efektu oddzielenia treści od krawędzi. Wartości padding-top można ustalać w jednostkach takich jak px, em, rem czy %. Na przykład, kod CSS 'padding-top: 20px;' doda 20 pikseli odstępu od górnej krawędzi obramowania do zawartości elementu. Właściwość ta jest standardowo wspierana we wszystkich nowoczesnych przeglądarkach i jest częścią specyfikacji CSS Box Model, która określa, jak przestrzeń jest zorganizowana w obrębie elementów HTML. Użycie padding-top jest kluczowe, gdy chcemy, aby nasza strona była estetyczna i czytelna, co ma istotne znaczenie w projektowaniu responsywnym, gdzie różne urządzenia mogą wymagać różnych wartości paddingu, aby utrzymać spójność wizualną. Poprawne stosowanie padding-top przyczynia się również do lepszej dostępności strony, co jest istotnym aspektem w nowoczesnym web designie.

Pytanie 28

Wskaż polecenie, które zostało opisane w ramce.

Dla każdego przebiegu pętli aktualna wartość elementu tablicy jest przypisywana do zmiennej, a wskaźnik tablicy jest przesuwany o jeden, aż do osiągnięcia ostatniego elementu tablicy
A. next
B. for
C. while
D. foreach
Pętla 'for' wymaga jawnego zarządzania indeksem i często jest stosowana, gdy potrzebujemy precyzyjnej kontroli nad iteracją, na przykład gdy musimy modyfikować indeks lub iterować w niestandardowy sposób. W przeciwieństwie do 'foreach', pętla 'for' nie zajmuje się automatycznym przypisywaniem elementów tablicy do zmiennych, co czyni ją mniej odpowiednią w kontekście opisanym w pytaniu. Instrukcja 'next' nie jest typową konstrukcją w najpopularniejszych językach programowania i może być myląca, ponieważ czasami jest używana w kontekście pętli w VBA lub jako element iteracyjny w innych, mniej popularnych językach. Natomiast pętla 'while' służy do wykonywania iteracji dopóki spełniony jest określony warunek logiczny, co nie jest zgodne z opisaną funkcjonalnością, w której pętla ma automatycznie przypisywać wartość elementów tablicy do zmiennej. Zrozumienie różnic między tymi strukturami pomaga w wyborze odpowiedniego narzędzia do zadania, zwiększając efektywność i czytelność kodu.

Pytanie 29

Formaty wideo, które są wspierane przez standard HTML5, to

A. Ogg, QuickTime
B. MP4, Ogg, WebM
C. MP4, AVI
D. Ogg, AVI, MPEG
Odpowiedź MP4, Ogg, WebM jest poprawna, ponieważ te trzy formaty wideo są oficjalnie obsługiwane przez standard HTML5, co oznacza, że są zgodne z różnymi przeglądarkami internetowymi bez potrzeby używania dodatkowych wtyczek. Format MP4, oparty na kontenerze MPEG-4, jest szeroko stosowany z uwagi na jego efektywność w kompresji oraz wysoką jakość obrazu i dźwięku. Ogg to otwarty format, który wspiera kodek VP8, co czyni go popularnym wśród projektów o otwartym oprogramowaniu. WebM, z kolei, jest również formatem otwartym, zoptymalizowanym dla wideo w Internecie, co czyni go dobrym wyborem dla zastosowań webowych. Te formaty są zgodne z najlepszymi praktykami w zakresie wydajności i dostępności, co sprawia, że są preferowane podczas tworzenia treści wideo do zastosowań online. Przykładem ich użycia może być osadzanie wideo na stronach internetowych, gdzie różnorodność formatów pozwala na ich odtwarzanie na różnych urządzeniach oraz w różnych systemach operacyjnych.

Pytanie 30

W przedstawionym kodzie JavaScript występuje błąd logiczny. Program, zamiast informować, czy liczby są równe, nie działa prawidłowo. Wskaż, która odpowiedź dotyczy tego błędu.

var x = 5;
var y = 3;
if (x = y)
  document.getElementById("demo").innerHTML = "zmienne są równe";
else
  document.getElementById("demo").innerHTML = "zmienne się różnią";
A. Polecenia w sekcjach if i else powinny zostać zamienione miejscami
B. W instrukcji if znajduje się przypisanie zamiast operacji porównania
C. Zmienne zostały błędnie zadeklarowane
D. Przed instrukcją else nie powinno być średnika
W tym przypadku mamy do czynienia z częstym błędem w programowaniu, gdzie zamiast porównania użyto operatora przypisania. W języku JavaScript operator przypisania '=' służy do przypisywania wartości do zmiennej, natomiast do porównania dwóch wartości używa się operatora '==' dla równości lub '===' dla równości i sprawdzania typu. Użycie '=' w warunku if powoduje przypisanie wartości y do x, co zawsze zwróci true, jeśli y jest różne od zera. To prowadzi do nieoczekiwanych rezultatów w logice programu. Poprawnym zapisem w tym kontekście jest if (x == y). Warto pamiętać o dobrych praktykach, które zalecają używanie '===' zamiast '==' dla uzyskania lepszej precyzji i uniknięcia błędów spowodowanych niejawnych konwersji typów. To podejście minimalizuje ryzyko błędów logicznych i poprawia czytelność kodu. Regularne stosowanie takich dobrych praktyk zwiększa jakość kodu i ułatwia jego późniejszą konserwację oraz rozwój.

Pytanie 31

Jaką formę ma instrukcja w języku PHP, która tworzy obiekt pkt w klasy Punkt zdefiniowanej w klasie?

Ilustracja do pytania
A. Punkt() pkt;
B. pkt= new Punkt();
C. pkt Punkt;
D. pkt Punkt();
W języku PHP każda z podanych niepoprawnych opcji wynika z niewłaściwego zrozumienia konstrukcji obiektowej. Pierwszy błąd polega na próbie inicjalizacji obiektu przy użyciu składni pkt Punkt;, która jest niepoprawna, gdyż nie wykorzystuje słowa kluczowego new obowiązkowego podczas tworzenia instancji klasy. Taka składnia przypomina deklarację zmiennych typów prostych, co nie znajduje zastosowania w kontekście obiektowym. Innym powszechnym nieporozumieniem jest myślenie, że pkt Punkt(); jest poprawne, co sugeruje funkcję, jednakże PHP wymaga jawnego użycia new. Kolejna błędna koncepcja to Punkt() pkt;, która zdaje się używać składni funkcji z przypisaniem, co również jest niezgodne z semantyką PHP dla obiektów. Tego typu błędy często wynikają z prób zastosowania logiki innych języków programowania lub z niewłaściwej interpretacji składni PHP. Zrozumienie różnicy między deklaracją zmiennej a tworzeniem obiektu jest kluczowe dla efektywnego programowania obiektowego. Aby uniknąć takich błędów, warto zwrócić uwagę na dokumentację i praktykować pisanie kodu zgodnie z konwencjami przyjętymi w PHP, co nie tylko zwiększa czytelność kodu, ale także ułatwia późniejsze jego modyfikacje oraz integrację z większymi systemami. Poprawne zrozumienie konstrukcji obiektowej jest fundamentalne dla każdego programisty PHP, szczególnie w kontekście tworzenia aplikacji skalowalnych i łatwych do zarządzania.

Pytanie 32

Który efekt został zaprezentowany na filmie?

A. Zwiększenie ostrości zdjęcia.
B. Zmniejszenie kontrastu zdjęcia.
C. Przenikanie zdjęć.
D. Zmiana jasności zdjęć.
Poprawnie wskazany efekt to przenikanie zdjęć, często nazywane też płynnym przejściem (ang. crossfade). Polega to na tym, że jedno zdjęcie stopniowo zanika, jednocześnie drugie pojawia się z narastającą widocznością. W praktyce technicznej realizuje się to najczęściej przez zmianę przezroczystości (opacity) dwóch warstw – jedna warstwa z pierwszym obrazem ma zmniejszaną wartość opacity z 1 do 0, a druga z kolejnym zdjęciem zwiększaną z 0 do 1. Na stronach WWW taki efekt robi się zwykle za pomocą CSS (transition, animation, keyframes) albo JavaScriptu, czasem z użyciem bibliotek typu jQuery czy gotowych sliderów. Moim zdaniem to jest jeden z podstawowych efektów, który warto umieć odtworzyć, bo pojawia się w galeriach, sliderach na stronach głównych, prezentacjach produktów czy prostych pokazach slajdów. W materiałach multimedialnych, np. w edycji wideo, dokładnie ten sam efekt nazywa się przejściem typu „cross dissolve” lub „fade”, i zasada działania jest identyczna – płynne nakładanie się dwóch klatek obrazu w czasie. Dobre praktyki mówią, żeby nie przesadzać z czasem trwania przenikania: zwykle 0,5–1,5 sekundy daje przyjemny, profesjonalny wygląd, bez wrażenia „zamulenia” interfejsu. Warto też pilnować spójności – jeśli na stronie używasz przenikania w jednym miejscu, dobrze jest utrzymać podobny styl animacji w innych elementach, żeby całość wyglądała konsekwentnie i nie rozpraszała użytkownika. W kontekście multimediów na WWW przenikanie jest też korzystne wydajnościowo, bo operuje głównie na właściwości opacity i transformacjach, które przeglądarki potrafią optymalizować sprzętowo.

Pytanie 33

Który atrybut należy wstawić w miejsce kropek, aby przeglądarka wyświetliła komunikat o błędzie w przypadku kliknięcia przycisku "Zapisz" bez wypełnionego pola nazwisko?

<form action="/skrypt.php" method="post">
  <input type="text" name="nazwisko" ...>
  <input type="submit" value="Zapisz">
</form>
A. disable
B. required
C. checked
D. pattern
Poprawną odpowiedzią jest atrybut „required”. Ten atrybut jest częścią wbudowanego mechanizmu walidacji formularzy HTML5 po stronie przeglądarki. Jeśli dodasz go do pola typu input, textarea czy select, przeglądarka automatycznie sprawdzi, czy użytkownik coś tam wpisał lub wybrał, zanim pozwoli wysłać formularz. W naszym przykładzie: <input type="text" name="nazwisko" required> sprawi, że kliknięcie przycisku „Zapisz” bez wypełnionego nazwiska wywoła komunikat błędu i formularz nie zostanie wysłany. To działa bez żadnego JavaScriptu i bez dodatkowego kodu po stronie serwera. Moim zdaniem warto pamiętać, że „required” to nie tylko wygoda, ale też dobra praktyka UX – użytkownik od razu widzi, czego brakuje, a nie dopiero po przeładowaniu strony. Standard HTML5 jasno opisuje ten atrybut jako tzw. boolean attribute, czyli taki, który samą swoją obecnością w znaczniku włącza daną funkcję. Nie trzeba pisać required="required", chociaż przeglądarka i tak to zrozumie. W praktyce używa się go bardzo często w formularzach rejestracji, logowania, zamówień: imię, nazwisko, e‑mail, hasło – wszędzie tam, gdzie pole jest obowiązkowe. Dobrze jest łączyć required z innymi atrybutami walidacyjnymi, np. type="email" czy pattern, żeby od razu kontrolować nie tylko to, czy coś wpisano, ale też czy ma poprawny format. Mimo wszystko, nawet przy użyciu required, nigdy nie wolno rezygnować z walidacji po stronie serwera, bo walidacja w przeglądarce może być wyłączona albo ominięta. Required traktuj jako pierwszą linię obrony i wygodne wsparcie dla użytkownika, a nie jedyne zabezpieczenie.

Pytanie 34

Programista stworzył pętlę w języku C++, która miała za zadanie obliczyć wynik 5! (5! = 1 * 2 * 3 * 4 * 5). Niestety, popełnił błąd logiczny, gdyż ```int a = 1; for (int i=1; i < 5; i++) { a = a * i; } cout << a;```

Ilustracja do pytania
A. zmienna i pętli powinna być zmniejszana, a nie zwiększana
B. zmienna a powinna być początkowo ustawiona na 0 zamiast 1
C. zmienna i w pętli powinna być rozpoczynana od 0, a nie od 1
D. w drugim parametrze pętli powinno być porównanie i < 6 zamiast i < 5
Odpowiedź jest prawidłowa, ponieważ pętla powinna przebiegać przez wszystkie liczby od 1 do 5, aby obliczyć wartość 5! czyli 120. W kodzie pętla for zaczyna się od wartości i=1 i kontynuuje, dopóki i jest mniejsze niż 5, co oznacza, że nie uwzględnia liczby 5. Zmiana warunku na i<6 powoduje, że pętla wykona się pięć razy dla wartości i=1, 2, 3, 4, 5. To zgodne z matematyczną definicją silni, gdzie należy przemnożyć wszystkie liczby całkowite od 1 do n. Wpisując warunek i<6, kod stanie się bardziej zgodny z dobrymi praktykami programowania, które zalecają jasne i jednoznaczne warunki zakończenia pętli. Prawidłowe obliczenie silni jest częstym zadaniem w programowaniu i stanowi fundament dla bardziej zaawansowanych algorytmów liczbowych takich jak algorytmy rekurencyjne. Zrozumienie iteracyjnego i rekurencyjnego podejścia do tego problemu rozwija umiejętności logicznego myślenia i projektowania algorytmów. Takie zrozumienie jest kluczowe zwłaszcza w dziedzinie analizy algorytmów i optymalizacji kodu.

Pytanie 35

W analizowanym fragmencie algorytmu wykorzystano

Ilustracja do pytania
A. trzy bloki operacyjne (procesy).
B. jeden blok decyzyjny.
C. dwie pętle.
D. jedną pętlę.
W tym algorytmie na schemacie nie ma dwóch pętli, co jest pewnym nieporozumieniem. Gdyby były dwie pętle, to mielibyśmy dwa różne fragmenty kodu, które by się powtarzały, a tutaj tego nie widać. Często ludzie mylą zagnieżdżanie pętli z posiadaniem kilku pętli, a to jest całkiem inna sprawa. Mówiąc, że algorytm ma jeden blok decyzyjny, to również jest błąd, bo schemat pokazuje kilka bloków decyzyjnych, co jest normalne, gdy algorytm podejmuje różne decyzje na różnych etapach. W algorytmach zazwyczaj jest kilka bloków decyzyjnych, co pozwala na dynamiczne zarządzanie danymi. Co do trzech bloków operacyjnych, to też jest nieprawda. Bloki operacyjne wykonują operacje na danych, które są efektem decyzji z bloków decyzyjnych. Aby dobrze zrozumieć schematy blokowe, trzeba umieć rozpoznać te elementy, co jest kluczowe w analizie i projektowaniu algorytmów. Niepoprawne zrozumienie struktury algorytmu może prowadzić do błędów przy jego implementacji, co w konsekwencji wpływa na wydajność i poprawność działania.

Pytanie 36

Znak <s> w HTML powoduje

A. migotanie tekstu
B. skreślenie tekstu
C. podkreślenie tekstu
D. pochylenie tekstu
Znaczniki HTML pełnią różne funkcje związane z formatowaniem tekstu, jednak nie każdy znacznik działa w sposób intuicyjny. Na przykład, wybór odpowiedzi dotyczącej pochylenia tekstu wskazuje na nieporozumienie w zakresie zastosowania znacznika. Tekst pochylony w HTML osiąga się za pomocą znacznika <em> lub <i>, które są przeznaczone do podkreślenia znaczenia lub wyróżnienia fragmentu tekstu. Odpowiedź sugerująca migotanie tekstu pokazuje braki w wiedzy o standardach HTML; w rzeczywistości nie ma takiego znacznika w HTML5, a efekt migotania jest niezalecany ze względu na problemy z dostępnością i użytecznością. Wreszcie, podkreślenie tekstu w HTML realizowane jest przy pomocy znacznika <u>, który jest zarezerwowany dla tekstu, który jest ważny lub w inny sposób wyróżniony, a nie dla przekreślenia. Zatem, w kontekście HTML, kluczowe jest zrozumienie przeznaczenia każdego znacznika, aby unikać nieporozumień i błędnych interpretacji, które mogą prowadzić do niewłaściwego formatowania oraz naruszenia zasad dostępności.

Pytanie 37

W zamieszczonym kodzie PHP, który łączy się z serwerem bazy danych, jakie działania powinny być umieszczone w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost","root","qwerty","baza1");
if ( !$db ) {
...
}
A. Przetwarzanie danych otrzymanych z bazy
B. Zarządzanie błędem połączenia
C. Informacja o udanym połączeniu z bazą
D. Zamknięcie połączenia z bazą danych
Wykonywanie operacji na źle zestawionym połączeniu z bazą danych mogłoby prowadzić do nieprzewidywalnych zachowań aplikacji. Próba obsługi danych pobranych z bazy kiedy połączenie nie zostało nawiązane jest błędnym podejściem. Bez prawidłowego połączenia nie można pobrać danych dlatego nie ma sensu implementowanie takiej logiki w tym miejscu kodu. Podobnie komunikat o pomyślnym połączeniu nie znajduje uzasadnienia w konstrukcji warunku sprawdzającego nieudane połączenie. Jeśli warunek jest spełniony oznacza to że połączenie się nie powiodło i należy podjąć kroki w celu obsługi tego błędu a nie informować o sukcesie. Zamknięcie połączenia z bazą danych jest czynnością wykonywaną na końcu pracy z bazą a nie na początku co również czyni tę odpowiedź niepoprawną w kontekście błędnego nawiązywania połączenia. Dobre praktyki programistyczne wskazują na potrzebę właściwego zarządzania połączeniami do bazy danych co obejmuje ich otwieranie dopiero gdy są potrzebne i zamykanie gdy nie są już używane. Koncepcje błędnego umiejscowienia tych operacji w logice aplikacji mogą prowadzić do nieskuteczności i obniżenia wydajności aplikacji co podkreśla wagę poprawnego zrozumienia procesu nawiązywania połączeń z bazą danych.

Pytanie 38

Jakie zadanie wykonuje funkcja COUNT w języku SQL?

A. obliczenie wartości bezwzględnej w polu liczbowym
B. liczenie znaków w polu tekstowym
C. zliczanie rekordów uzyskanych z kwerendy
D. wyliczenie średniej wartości w danej kolumnie
Funkcja COUNT w języku SQL jest jedną z najbardziej fundamentalnych funkcji agregujących, która służy do zliczania liczby rekordów w zestawie danych. Użycie tej funkcji jest kluczowe w kontekście analizy danych, ponieważ pozwala na szybkie uzyskanie informacji o ilości danych, które spełniają określone kryteria. Przykład użycia COUNT może wyglądać następująco: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska'; Taki zapytanie zwróci liczbę wszystkich klientów z Polski. Funkcja COUNT jest również używana w połączeniu z klauzulą GROUP BY, co umożliwia zliczanie rekordów w podgrupach. Na przykład, SELECT kraj, COUNT(*) FROM klienci GROUP BY kraj; zliczy wszystkich klientów w każdym kraju. Warto podkreślić, że COUNT różni się od innych funkcji agregujących, takich jak AVG czy SUM, które obliczają wartości na podstawie danych, a nie zliczają ich. Funkcja COUNT jest zgodna z normami SQL-92 i jest wspierana przez wszystkie popularne systemy zarządzania bazami danych, co czyni ją uniwersalnym narzędziem w pracy z danymi.

Pytanie 39

W CSS określono styl paragrafu, który nada mu następujące właściwości:

background-color: red;
color: blue;
margin: 40px;
A. tło niebieskie, kolor tekstu czerwony, marginesy zewnętrzne na poziomie 40 px
B. tło czerwone, kolor tekstu niebieski, marginesy wewnętrzne na poziomie 40 px
C. tło czerwone, kolor tekstu niebieski, marginesy zewnętrzne na poziomie 40 px
D. tło niebieskie, kolor tekstu czerwony, marginesy wewnętrzne na poziomie 40 px
Poprawna odpowiedź wskazuje na tło czerwone, kolor tekstu niebieski oraz marginesy zewnętrzne ustawione na 40 px. W deklaracji CSS, przypisanie 'background-color: red;' skutkuje czerwonym tłem dla elementu, co jest zgodne z zasadami oznaczania kolorów w CSS, które pozwalają na zastosowanie nazw kolorów, kodów hex czy rgb. 'color: blue;' ustawia kolor tekstu na niebieski, co pozwala na lepszą czytelność tekstu na czerwonym tle. Z kolei 'margin: 40px;' definiuje marginesy zewnętrzne, co oznacza, że odległość od innych elementów na stronie wynosi 40 px. Takie praktyki są zgodne z dobrymi standardami projektowania, które sugerują stosowanie kontrastujących kolorów dla poprawy dostępności oraz przestrzeni między elementami dla lepszej struktury layoutu. Warto pamiętać, że marginesy zewnętrzne różnią się od marginesów wewnętrznych (padding), co często jest źródłem nieporozumień.

Pytanie 40

Aby włączyć kaskadowy arkusz stylów zapisany w zewnętrznym pliku, należy zastosować poniższy fragment kodu HTML?

A. <optionvalue="styl.css" type="text/css" />
B. <link rel="stylesheet" type="text/css" href="styl.css" />
C. <div id="styl.css" relation="css" />
D. <meta charset="styl.css" />
Odpowiedź <link rel="stylesheet" type="text/css" href="styl.css" /> jest poprawna, ponieważ jest to standardowy sposób dołączania zewnętrznych arkuszy stylów w HTML. Element <link> jest używany do powiązania dokumentu HTML z zewnętrznym źródłem CSS. Atrybut 'rel' informuje przeglądarkę, że jest to arkusz stylów, natomiast atrybut 'href' wskazuje ścieżkę do pliku CSS. Dzięki temu przeglądarka może załadować stylizacje z pliku, co pozwala na oddzielenie treści od stylu, co jest zgodne z zasadą separacji, kluczową w projektowaniu stron internetowych. Na przykład, dodając ten fragment kodu w sekcji <head> dokumentu HTML, możemy łatwo zarządzać wyglądem wielu stron, zmieniając tylko jeden plik CSS. To podejście zwiększa wydajność i ułatwia konserwację strony, co jest szczególnie ważne w większych projektach. W praktyce, aby załadować różne style dla różnych urządzeń, możemy użyć atrybutu 'media', co pozwoli na bardziej elastyczne podejście do zarządzania stylami.