Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 16 kwietnia 2026 14:12
  • Data zakończenia: 16 kwietnia 2026 14:37

Egzamin zdany!

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

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

W każdej iteracji pętli wartość aktualnego elementu tablicy jest przypisywana do zmiennej, a wskaźnik tablicy przesuwa się o jeden, aż do osiągnięcia ostatniego elementu tablicy. To stwierdzenie jest prawdziwe w kontekście instrukcji

A. foreach
B. next
C. switch
D. if
Wybór if, next i switch jako odpowiedzi nie jest poprawny w kontekście opisanego działania pętli, ponieważ każda z tych instrukcji ma odmienny cel i zastosowanie. Instrukcja if służy do warunkowego wykonywania bloków kodu, co oznacza, że nie umożliwia iteracji po elementach tablicy. W przypadku używania if, programista musi samodzielnie zarządzać pętlami, co wprowadza dodatkową złożoność oraz możliwość wystąpienia błędów. Z kolei next jest używane w kontekście iteracji w niektórych językach programowania, ale nie funkcjonuje jako samodzielna instrukcja. Zazwyczaj next jest częścią pętli, jak na przykład w pętli while, gdzie służy do przesunięcia wskaźnika lub indeksu, lecz nie pełni roli do iteracji po tablicach w sposób zautomatyzowany. Z kolei switch jest konstrukcją służącą do stosowania wielokrotnych warunków, co pozwala na wybór jednego z wielu możliwych bloków kodu na podstawie wartości danej zmiennej. Nie jest to mechanizm iteracyjny, dlatego nie można go zastosować do przetwarzania elementów tablicy w sposób opisany w pytaniu. Analizując te trzy odpowiedzi, można zauważyć, że żadna z nich nie spełnia kryteriów, które opisuje działanie instrukcji foreach.

Pytanie 2

Wskaż, na czym polega błąd w kodzie napisanym w języku C++.

char str1[30] = 'Ala ma kota'; printf("%s", str1);
A. W funkcji printf nie można używać formatowania %s.
B. Do funkcji printf przekazano zbyt mało argumentów.
C. Napis powinien mieć dokładnie 30 znaków.
D. Napis powinien być umieszczony w cudzysłowach.
Podawanie błędnych informacji na temat inicjalizacji łańcucha znaków w C++ może prowadzić do poważnych nieporozumień. Wskazanie, że napis powinien mieć dokładnie 30 znaków, nie jest zasadniczo poprawne, ponieważ tablice w C++ mogą mieć zmienną długość. Ważne jest, aby łańcuch znaków był odpowiednio długi, jednak nie istnieje wymóg, aby dokładnie wypełniał całą tablicę. Mówiąc o długości, istotniejsze jest, aby nie przekraczać rozmiaru tablicy, aby uniknąć błędów pamięci. Poza tym, stwierdzenie, że do funkcji printf przekazano zbyt mało argumentów, jest mylące; w tym przypadku argumenty są poprawne, ponieważ przekazujemy jedynie jeden wskaźnik do łańcucha, co jest zgodne z formatem funkcji printf. Dodatkowo, twierdzenie, że w printf nie można stosować formatowania %s, jest całkowicie błędne. Format %s jest standardowym sposobem na wyświetlanie łańcuchów znaków w C++, co jest zgodne z dokumentacją i najlepszymi praktykami w programowaniu. Stosowanie tego formatu jest kluczowe w przypadku pracy z tekstem, a zrozumienie tej zasady jest fundamentem w nauce języka C++. Warto zatem pamiętać o właściwej inicjalizacji łańcuchów oraz o tym, jak korzystać z funkcji wejścia/wyjścia, aby unikać typowych błędów w kodzie.

Pytanie 3

W bazie danych MYSQL znajduje się tabela z programami komputerowymi, która ma pola: nazwa, producent, rokWydania. Jak należy sformułować kwerendę SELECT, aby uzyskać wszystkie nazwy producentów bez powtórzeń?

A. SELECT producent FROM programy WHERE UNIQUE;
B. SELECT UNIQUE producent FROM programy;
C. SELECT producent FROM programy WHERE producent NOT DUPLICATE;
D. SELECT DISTINCT producent FROM programy;
Odpowiedź 'SELECT DISTINCT producent FROM programy;' jest w porządku. To dlatego, że kluczowe słowo DISTINCT działa tak, że zwraca tylko unikalne wartości z kolumny 'producent' w tabeli 'programy'. Jak są duże zbiory danych, to użycie DISTINCT naprawdę się przydaje, bo pozwala pozbyć się duplikatów i to później ułatwia analizę danych. Na przykład, kiedy w tabeli jest mnóstwo rekordów dla tego samego producenta, to DISTINCT zwróci tylko jeden wpis dla każdego z nich. Wiesz, to taka dobra praktyka w SQL, bo im mniej danych musisz przetwarzać, tym lepsza wydajność. I, co ciekawe, użycie DISTINCT nie obniża wydajności zapytania tak bardzo, jak niektórzy mogą myśleć, szczególnie w dobrze zindeksowanych tabelach. Warto to mieć na uwadze.

Pytanie 4

Zapis CSS

margin: auto;
wskazuje, że marginesy są
A. stałe dla konkretnej przeglądarki, niezależnie od rozmiaru jej okna
B. obliczane przez przeglądarkę w taki sposób, aby element został wyśrodkowany poziomo
C. równe domyślnym wartościom marginesów elementu, do którego są przypisane
D. dziedziczone z elementu nadrzędnego dla danego obiektu
Zapis CSS 'margin: auto;' jest kluczowy w kontekście wyśrodkowywania elementów blokowych w poziomie w ich rodzicach. Gdy zastosujemy ten styl, przeglądarka dynamicznie oblicza wartość marginesów po lewej i prawej stronie elementu, aby równomiernie rozłożyć pozostałą przestrzeń w kontenerze. W praktyce oznacza to, że jeśli mamy element o stałej szerokości umieszczony w szerszym kontenerze, zastosowanie 'margin: auto;' spowoduje, że ten element zostanie wyśrodkowany, co jest szczególnie przydatne w responsywnym projektowaniu stron internetowych. Dobrym przykładem może być użycie 'margin: auto;' w przypadku kontenera obrazka, gdzie chcemy, aby obrazek był zawsze wyśrodkowany na stronie niezależnie od rozmiaru okna przeglądarki. To podejście jest zgodne z najlepszymi praktykami CSS i jest szeroko stosowane w nowoczesnym web designie, co czyni strony bardziej estetycznymi i przyjaznymi dla użytkowników.

Pytanie 5

W sekcji nagłówka dokumentu HTML umieszczono ```Strona miłośników psów``` Zawarty tekst będzie widoczny

A. w treści witryny, w pierwszym ukazanym nagłówku
B. na pasku tytułu w przeglądarce
C. w treści witryny, na banerze witryny
D. w polu adresowym, za wprowadzonym adresem URL
Odpowiedź jest poprawna, ponieważ zawartość tagu <title> w kodzie HTML określa tytuł dokumentu, który jest wyświetlany na pasku tytułu przeglądarki. Tytuł ten jest kluczowym elementem SEO, ponieważ wpływa na sposób, w jaki użytkownicy postrzegają stronę w wynikach wyszukiwania. W praktyce, dobrze dobrany tytuł zwiększa szansę na kliknięcia i poprawia widoczność strony w internecie. Warto pamiętać, że tytuł powinien być krótki, zwięzły i zawierać najważniejsze słowa kluczowe, aby skutecznie komunikować, o czym jest strona. Dobre praktyki zalecają, aby długość tytułu nie przekraczała 60 znaków, aby uniknąć jego obcięcia w wynikach wyszukiwania. Dodatkowo, tytuł powinien być unikalny dla każdej podstrony, co ułatwia użytkownikom i wyszukiwarkom zrozumienie zawartości witryny.

Pytanie 6

Który atrybut pozwala na wskazanie lokalizacji pliku graficznego w znaczniku <img>?

A. href
B. link
C. src
D. alt
Atrybut 'src' w znaczniku <img> jest kluczowy, ponieważ określa lokalizację pliku graficznego, który ma być wyświetlany na stronie. Oznacza to, że wartość tego atrybutu to URL (Uniform Resource Locator), który wskazuje na lokalizację obrazu w internecie lub na lokalnym serwerze. Przykładowo, jeśli chcemy wyświetlić obrazek o nazwie 'zdjecie.jpg' znajdujący się w folderze 'obrazy', użyjemy: <img src='obrazy/zdjecie.jpg' alt='Opis obrazka'>. Zastosowanie odpowiedniego atrybutu 'src' jest zgodne z najlepszymi praktykami HTML, co zapewnia, że przeglądarki internetowe prawidłowo interpretują nasze zamierzenia co do wyświetlania treści wizualnych. Nieprawidłowe określenie lokalizacji obrazu może prowadzić do błędów '404 Not Found', co negatywnie wpływa na doświadczenie użytkownika. Dobrze zaprojektowane strony internetowe powinny również uwzględniać atrybut 'alt', który zapewnia dostępność oraz opisuje zawartość obrazu osobom korzystającym z czytników ekranu, ale to 'src' jest odpowiedzialny za wyświetlanie samego obrazu.

Pytanie 7

Hermetyzacja to zasada programowania obiektowego, która mówi, że

A. typy pól w klasach/obiektach mogą być zmieniane w sposób dynamiczny w zależności od przypisywanych danych
B. pola i metody dostępne tylko dla konkretnej klasy/obiektu mają zasięg ograniczony do private lub protected
C. klasy/obiekty mogą definiować metody wirtualne, które są realizowane w klasach/obiektach pochodnych
D. klasy/obiekty mogą dzielić się funkcjonalnością
Odpowiedzi sugerujące różne interpretacje hermetyzacji w programowaniu obiektowym zakładają błędne zrozumienie tej zasady. Wskazanie, że klasy mogą mieć metody wirtualne, które są implementowane w pochodnych klasach, odnosi się do polimorfizmu, a nie hermetyzacji. Polimorfizm pozwala na zdefiniowanie metod w klasie bazowej, które mogą być nadpisywane w klasach pochodnych, ale nie ma związku z ograniczeniem dostępu do danych. Z kolei twierdzenie, że typy pól w klasach mogą być dynamicznie zmieniane, wskazuje na nieporozumienie dotyczące typów statycznych i dynamicznych w kontekście języków programowania, gdzie typy pól są zazwyczaj ustalane w momencie kompilacji. Ponadto, stwierdzenie, że klasy mogą współdzielić ze sobą funkcjonalność, odnosi się do dziedziczenia oraz kompozycji, które są osobnymi konceptami w programowaniu obiektowym. W rzeczywistości, hermetyzacja jest bardziej związana z ochroną danych i zapewnieniem, że wewnętrzna logika klasy pozostaje nietknięta przez nieautoryzowane modyfikacje. Te nieporozumienia mogą prowadzić do istotnych problemów w architekturze aplikacji, gdzie niezrozumienie hermetyzacji skutkuje nadmiernym uzależnieniem od zewnętrznych interakcji oraz zwiększoną złożonością kodu. Zrozumienie hermetyzacji jest kluczowe, aby tworzyć kod, który jest nie tylko bardziej odporny na błędy, ale również łatwiejszy do utrzymania i rozwijania.

Pytanie 8

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

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

Pytanie 9

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

A. </b>
B. </br>
C. <p>
D. <br>
Znaczniki <p> i </b> oraz </br> są błędnymi odpowiedziami w kontekście przełamania linii tekstu. Znacznik <p> służy do definiowania akapitu, co oznacza, że każdorazowe jego użycie powoduje wprowadzenie przerwy między akapitami. W związku z tym, jego zastosowanie do przełamania linii nie byłoby odpowiednie, ponieważ nie umożliwia kontynuacji tekstu w tym samym kontekście. Podobnie, znacznik </b> jest używany do zamykania formatowania pogrubienia, a jego użycie nie ma żadnego związku z przełamaniem linii; jest on tylko elementem prezentacyjnym. Co więcej, </br> nie jest poprawnym znacznikiem w HTML. Chociaż w niektórych kontekstach może być używany przez niektóre silniki renderujące, jego właściwe zastosowanie to <br>, co czyni </br> niepoprawnym i mylącym. Typowe błędy myślowe, prowadzące do takich odpowiedzi, często wynikają z braku zrozumienia semantyki HTML oraz różnicy pomiędzy elementami blokowymi a liniowymi. Użytkownicy często mylą funkcje poszczególnych znaczników, co prowadzi do nieprawidłowego formatowania treści na stronach internetowych. Zrozumienie tych różnic jest kluczowe dla tworzenia poprawnych i efektywnych struktur dokumentu HTML.

Pytanie 10

Funkcja zapisana w języku PHP wygląda tak patrz ramka): Jej celem jest

Ilustracja do pytania
A. zwrócenie wartości 0, gdy liczba jest parzysta
B. zwrócenie wartości 1, gdy liczba jest parzysta
C. wypisanie liczby nieparzystej
D. wypisanie liczby parzystej
Funkcja w języku PHP jest zapisana w taki sposób że przyjmuje jeden argument liczba i sprawdza czy jest on parzysty. Używa operatora modulo % który zwraca resztę z dzielenia. Jeśli liczba podzielona przez 2 daje resztę równą 0 oznacza to że jest parzysta. W takim przypadku funkcja zwraca wartość 1. W przeciwnym razie czyli gdy liczba jest nieparzysta funkcja zwraca 0. Takie podejście jest częstym wzorcem w programowaniu gdyż pozwala na szybkie i efektywne sprawdzenie parzystości liczby. Stosowanie operatora modulo jest standardem w wielu językach programowania dzięki czemu kod jest zrozumiały i łatwo go przenieść między różnymi platformami. W praktyce takie funkcje mogą być używane w algorytmach gdzie konieczne jest filtrowanie danych na podstawie parzystości lub innych podobnych kryteriów. Dobre praktyki w kodowaniu w PHP obejmują również jasne nazywanie funkcji i zmiennych co poprawia czytelność i utrzymanie kodu. Można także zastanowić się nad rozszerzeniem funkcji o dodatkowe sprawdzania lub logikę w zależności od potrzeb projektu.

Pytanie 11

Grafika powinna być zapisana w formacie GIF, jeśli

A. jest to obraz w technologii stereoskopowej
B. jest to grafika wektorowa
C. konieczne jest zapisanie obrazu lub animacji
D. istnieje potrzeba zapisu obrazu w formie bez kompresji
Format GIF (Graphics Interchange Format) jest powszechnie wykorzystywany do przechowywania obrazów oraz animacji. Dzięki obsłudze przezroczystości oraz możliwości tworzenia prostych animacji, GIF stał się standardem w przypadku grafiki na stronach internetowych. Jego ograniczenie do 256 kolorów sprawia, że idealnie nadaje się do prostych grafik, takich jak logo czy ikony, gdzie nie jest wymagana pełna gama kolorów, co ma miejsce w formatach takich jak JPEG czy PNG. W przypadku animacji, GIF umożliwia zapis wielu klatek w jednym pliku, co pozwala na odtwarzanie sekwencji obrazu bez potrzeby korzystania z dodatkowego oprogramowania. Praktyczne zastosowanie GIF-a można zaobserwować w mediach społecznościowych, gdzie animowane obrazki są często wykorzystywane do wyrażania emocji, a także na stronach internetowych do przedstawiania logo w ruchu. Używanie formatu GIF w kontekście animacji jest zgodne z dobrą praktyką w branży, ponieważ pozwala na efektywne zarządzanie zasobami wizualnymi oraz zwiększa atrakcyjność treści wizualnych.

Pytanie 12

Jakim zapisem w dokumencie HTML można stworzyć element, który wyświetli obrazek kotek.jpg z tekstem alternatywnym "obrazek kotka"?

A. <img src="kotek.jpg" alt="obrazek kotka">
B. <img href="kotek.jpg" alt="obrazek kotka">
C. <img href="kotek.jpg" title="obrazek kotka">
D. <img src="kotek.jpg" title="obrazek kotka">
Odpowiedź <img src="kotek.jpg" alt="obrazek kotka"> jest poprawna, ponieważ zgodnie z standardem HTML do wyświetlania obrazów należy używać atrybutu 'src', który wskazuje źródło obrazu. Atrybut 'alt' jest również niezbędny, ponieważ zapewnia tekst alternatywny dla obrazów, co jest kluczowe dla dostępności strony internetowej. Użytkownicy, którzy korzystają z technologii wspomagających, takich jak czytniki ekranu, będą mogli zrozumieć zawartość obrazu poprzez ten tekst. Dobrą praktyką jest również stosowanie odpowiednich nazw plików obrazów oraz opisowych tekstów alternatywnych, co poprawia SEO i użyteczność strony. Na przykład, jeśli w przyszłości planujesz dodać więcej obrazów kotów, warto, aby każdy z nich miał unikalny opis w atrybucie 'alt', co pomoże w lepszym zrozumieniu kontekstu przez użytkowników i roboty wyszukiwarek. W ten sposób poprawiasz zarówno dostępność, jak i indeksowalność swojej strony.

Pytanie 13

Jakiego języka należy użyć do stworzenia aplikacji internetowej, która działa po stronie klienta?

A. Python
B. Perl
C. PHP
D. JavaScript
JavaScript jest językiem programowania, który został stworzony z myślą o interakcji z przeglądarkami internetowymi, co czyni go idealnym wyborem do implementacji aplikacji internetowych po stronie klienta. Dzięki swojej wszechstronności, JavaScript umożliwia dynamiczne manipulowanie elementami DOM, obsługę zdarzeń oraz komunikację z serwerem za pomocą AJAX. Umożliwia również korzystanie z nowoczesnych frameworków i bibliotek, takich jak React, Angular czy Vue.js, które przyspieszają proces tworzenia złożonych interfejsów użytkownika. Oprócz tego, JavaScript jest standardowym językiem skryptowym dla większości przeglądarek, co zapewnia jego szeroką kompatybilność i dostępność. Przykładem zastosowania JavaScript w aplikacjach internetowych może być formularz kontaktowy, który bez przeładowania strony waliduje dane wprowadzone przez użytkownika lub dynamicznie aktualizuje zawartość strony w odpowiedzi na interakcje użytkownika. Warto również zaznaczyć, że JavaScript jest wspierany przez ECMAScript, standard, który regularnie aktualizuje i rozwija jego możliwości, co sprawia, że jest on nie tylko podstawą wielu aplikacji internetowych, ale także kluczowym narzędziem w ekosystemie programistycznym.

Pytanie 14

Które z poniższych poleceń przyznaje użytkownikowi uczen najniższy poziom uprawnień w zakresie zmiany danych i struktury tabel?

A. GRANT INSERT, DROP ON szkola.przedmioty TO uczen;
B. GRANT DROP ON szkola.przedmioty TO uczen;
C. GRANT SELECT ON szkola.przedmioty TO uczen;
D. GRANT ALTER, SELECT ON szkola.przedmioty TO uczen;
Rozpatrując inne polecenia, które zostały zaproponowane, należy zauważyć, że każde z nich przyznaje użytkownikowi 'uczen' szerszy zakres uprawnień, co nie jest zgodne z założeniem nadawania minimalnych uprawnień. Przyznanie uprawnień DROP, jak w przypadku polecenia GRANT DROP ON szkola.przedmioty TO uczen, pozwoliłoby użytkownikowi usunąć tabelę 'przedmioty', co jest nieakceptowalne w kontekście użytkownika edukacyjnego. Takie działanie nie tylko zagrażałoby integralności bazy danych, ale również mogłoby prowadzić do utraty ważnych informacji. Podobnie, przyznanie uprawnień INSERT, jak w poleceniu GRANT INSERT, DROP ON szkola.przedmioty TO uczen, umożliwia użytkownikowi dodawanie nowych rekordów do tabeli, co w przypadku ucznia nie jest pożądane, ponieważ jego rola powinna być ograniczona do przeglądania danych. Co więcej, polecenie GRANT ALTER, SELECT ON szkola.przedmioty TO uczen zawiera uprawnienie ALTER, które pozwala na modyfikację struktury tabeli, co również nie powinno mieć miejsca w kontekście użytkownika, który jest tylko uczniem. Wszelkie te niepoprawne podejścia prowadzą do niebezpieczeństwa związane z nieautoryzowanymi zmianami w bazie danych, co jest sprzeczne z najlepszymi praktykami w zakresie zarządzania uprawnieniami i bezpieczeństwa danych. Warto pamiętać, że właściwe zarządzanie uprawnieniami nie tylko zabezpiecza dane, ale również usprawnia procesy edukacyjne, zapewniając odpowiedni dostęp do informacji w sposób kontrolowany.

Pytanie 15

W języku JavaScript, aby zweryfikować, czy liczba leży w zakresie 100,200>, należy użyć:

A. if(liczba<100 || liczba>=200)
B. if (liczba>100 || liczba<=200)
C. if(liczba>100 && liczba <=200)
D. if(liczba<100 && liczba<=200)
Aby sprawdzić, czy liczba znajduje się w przedziale od 100 do 200 włącznie w języku JavaScript, należy użyć operatora logicznego AND (&&). Wyrażenie if(liczba > 100 && liczba <= 200) oznacza, że liczba musi być większa niż 100 oraz jednocześnie mniejsza lub równa 200. Przykład: jeśli mamy liczby 150 i 250, to 150 spełnia warunki tego warunku (jest większa od 100 i mniejsza lub równa 200), podczas gdy 250 nie spełnia (jest większa od 200). Kluczowe jest zrozumienie operatorów porównania oraz logicznych w JavaScript. Zgodnie z ECMAScript, językiem, na którym oparty jest JavaScript, użycie operatora AND w tym kontekście jest standardowym podejściem do określenia, czy wartość znajduje się w danym przedziale. Poprawne użycie tych operatorów jest istotne dla logiki programów oraz dostosowywania warunków do różnych sytuacji, co jest niezbędne w codziennej pracy programisty.

Pytanie 16

Kiedy dane z formularza są przesyłane w sposób jawny jako parametry w adresie URL, w skrypcie PHP można je odczytać za pomocą tablicy

A. $_COOKIE
B. $_SESSION
C. $_GET
D. $_POST
Odpowiedź 1 jest poprawna, ponieważ dane przesyłane w postaci jawnej jako parametry w adresie URL są dostępne w PHP poprzez tablicę superglobalną $_GET. Ta tablica przechowuje dane, które zostały przesłane metodą GET. Przykład użycia: jeśli mamy adres URL w formie 'example.com/page.php?name=Jan&age=25', to w skrypcie PHP możemy uzyskać te wartości poprzez $_GET['name'] i $_GET['age']. Wartością $_GET['name'] będzie 'Jan', a $_GET['age'] to '25'. Jest to standardowa praktyka w PHP, umożliwiająca łatwe pozyskiwanie danych w różnych aplikacjach webowych, szczególnie w kontekście wyszukiwania i filtracji wyników. Ważne jest jednak pamiętanie o bezpieczeństwie i sanitizacji danych wejściowych, ponieważ wartości te mogą być modyfikowane przez użytkowników. Użycie funkcji takich jak htmlspecialchars() może pomóc w zapobieganiu atakom XSS, a filter_input() w walidacji danych. Dobrą praktyką jest także unikanie przesyłania wrażliwych informacji w adresie URL, ponieważ mogą być one widoczne w historii przeglądarki oraz serwerowych logach.

Pytanie 17

W kodzie JavaScript aby wywołać okno z polem do wprowadzania danych i przyciskami OK i ANULUJ, należy zastosować metodę

A. prompt();
B. confirm();
C. message();
D. alert();
W tym zadaniu wszystko kręci się wokół trzech podstawowych funkcji dialogowych JavaScriptu: alert(), confirm() i prompt(). Bardzo łatwo je ze sobą pomylić, bo wszystkie wywołują okienka przeglądarkowe i na pierwszy rzut oka wyglądają podobnie. Jednak ich przeznaczenie jest inne i warto to sobie raz porządnie poukładać w głowie. alert() służy wyłącznie do wyświetlenia komunikatu. Pokazuje okno z tekstem i jednym przyciskiem OK. Nie ma żadnego pola do wpisywania danych, nie zwraca też żadnej wartości od użytkownika – po prostu informuje. Typowe użycie to komunikaty ostrzegawcze albo bardzo proste debugowanie na początku nauki. Jeśli ktoś wybierze alert() przy pytaniu o wprowadzanie danych, to zwykle dlatego, że kojarzy „okienko w przeglądarce” właśnie z alertem, bo to najczęściej pokazywany przykład. confirm() to trochę inna bajka. To okno z komunikatem i dwoma przyciskami: OK i Anuluj. Ta funkcja zwraca wartość typu boolean: true dla OK, false dla Anuluj. Używa się jej, gdy chcesz zapytać użytkownika o potwierdzenie jakiejś akcji, np. „Czy na pewno chcesz usunąć ten rekord?”. I tu pojawia się częsty błąd: skoro są dwa przyciski, to wielu osobom wydaje się, że to jest dokładnie to, o co chodzi w pytaniu. Brakuje jednak kluczowego elementu – pola tekstowego do wpisania danych. confirm() niczego nie pobiera, jedynie pyta o decyzję tak/nie. Z kolei message() w ogóle nie jest standardową funkcją w JavaScripcie. Jeśli ktoś ją wybierze, to zwykle wynika to z domysłu na zasadzie „brzmi sensownie”. W specyfikacji ECMAScript nie ma takiej wbudowanej metody, więc w normalnym kodzie przeglądarkowym jej użycie zakończy się błędem ReferenceError. Tego typu odpowiedzi uczą, żeby nie zgadywać po nazwie, tylko kojarzyć konkretne funkcje z ich działaniem. Podsumowując, jedyna funkcja, która łączy w sobie pole tekstowe oraz przyciski OK i Anuluj, to prompt(). alert() tylko informuje, confirm() tylko pyta o potwierdzenie, a message() po prostu nie istnieje jako standardowa metoda. Typowy błąd myślowy polega na skupieniu się na samych przyciskach i pominięciu wymogu „pola do wprowadzania danych”, które jest tutaj kluczowe z punktu widzenia logiki języka JavaScript i sposobu komunikacji z użytkownikiem.

Pytanie 18

W CSS należy ustawić tło dokumentu na obraz rys.png, który powinien się powtarzać tylko w poziomie. Którą definicję trzeba przypisać selektorowi body?

A. {background-image: url("rys.png"); background-repeat: repeat-x;}
B. {background-image: url("rys.png"); background-repeat: repeat;}
C. {background-image: url("rys.png"); background-repeat: round;}
D. {background-image: url("rys.png"); background-repeat: repeat-y;}
Wszystkie pozostałe opcje definiują sposób powtarzania tła, lecz każda z nich wprowadza inne zasady, co sprawia, że są one niewłaściwe w kontekście przedstawionego pytania. Wybór background-repeat: round, jak w pierwszej opcji, powoduje, że obrazek będzie powtarzany w taki sposób, aby całość się wpasowała w dostępne miejsce, ale niekoniecznie będzie powtarzany w ustalony sposób, co nie odpowiada założeniom pytania. Druga opcja, background-repeat: repeat, ustawia powtarzanie obrazu zarówno w poziomie, jak i w pionie, co jest sprzeczne z wymaganiem, aby obraz powtarzał się tylko w poziomie. Ostatnia z wyborów, background-repeat: repeat-y, z kolei powtarza obraz w pionie, co również nie spełnia założenia o poziomym powtarzaniu. Niestety, wiele osób myli te właściwości, co może prowadzić do niezamierzonych efektów wizualnych w projektach. Dlatego kluczowe jest zrozumienie różnicy między różnymi typami powtórzeń i ich zastosowaniem w praktyce. Właściwe użycie CSS, w tym dobór właściwych wartości dla background-repeat, wpływa na wydajność oraz na estetykę interfejsów użytkownika. W kontekście dobrych praktyk należy również pamiętać o optymalizacji obrazów oraz zapewnieniu, że używane techniki nie wpływają negatywnie na czas ładowania strony. Rozumienie tych aspektów jest kluczowe dla każdego, kto zajmuje się projektowaniem stron internetowych.

Pytanie 19

W której notacji diagramów ER został zapisany model związków encji przedstawiony na ilustracji?

Ilustracja do pytania
A. Chena.
B. Bachmana.
C. Martina.
D. Min-Max.
Na diagramie przedstawiono model w notacji Martina, a nie w żadnej z pozostałych wymienionych. Warto zrozumieć, czym ta notacja różni się od innych, bo w praktyce projektowania baz danych bardzo łatwo je ze sobą pomylić. Notacja Chena to bardziej „akademickie” podejście do ERD. Encje są zwykle rysowane jako prostokąty, ale atrybuty pojawiają się w osobnych elipsach, połączonych liniami z encją. Klucz główny bywa podkreślony, a związki są reprezentowane przez romby z nazwą relacji. Na naszym diagramie nic takiego nie ma – atrybuty są w środku prostokąta, w formie listy, a nie jako osobne kształty, więc to już mocny sygnał, że to nie jest Chen. Z kolei notacja Bachmana historycznie kojarzy się z modelami sieciowymi i specyficznym sposobem prezentowania struktur danych, często z łamanymi liniami i strzałkami, raczej nie przypomina tabel z nagłówkiem i listą pól. W typowych podręcznikach do systemów baz danych Bachman jest pokazywany jako dość stary styl, dziś mało używany przy klasycznym relacyjnym ERD, więc mało prawdopodobne, by tak wyglądał nowoczesny diagram klient–zakup–towar. Odpowiedź Min-Max jest też myląca, bo Min-Max nie jest nazwiskiem autora notacji, tylko sposobem zapisu krotności relacji, np. (0,1), (1,n). Można taki zapis wykorzystać zarówno z notacją Chena, jak i z innymi, ale sam diagram z obrazka nie używa jawnego oznaczenia min/max przy relacjach – widzimy crow’s foot, czyli styl typowy dla Martina. Typowy błąd w tego typu pytaniach polega na tym, że ktoś kojarzy jeden detal, np. gdzieś widział oznaczenia min-max, i automatycznie zakłada, że każda notacja z relacjami i krotnościami to „Min-Max”. Tutaj jednak kluczowe są kształty encji i sposób zapisu atrybutów: prostokąt z nagłówkiem i lista pól jak w tabeli, bez elips i rombów, bez dodatkowych znaczników kluczy – to bardzo klasyczny, praktyczny styl używany przy projektowaniu relacyjnych baz danych, właśnie w notacji Martina. Dobrze jest więc patrzeć na diagram całościowo, a nie tylko na pojedynczy symbol, bo wtedy łatwiej uniknąć takich pomyłek.

Pytanie 20

Który model barw opisuje kolor za pomocą stożka przestrzeni barw?

A. CMYK
B. HSV
C. CMY
D. CIE
CIE to standard przestrzeni barw opracowany przez International Commission on Illumination, który opisuje sposób percepcji kolorów przez ludzkie oko. Choć model CIE jest fundamentalny w teorii kolorów, nie jest bezpośrednio reprezentowany jako stożek przestrzeni barw, lecz jako zbiór punktów w przestrzeni trójwymiarowej, co czyni go mniej intuicyjnym w praktycznych zastosowaniach niż model HSV. Model CMY to model barw subtraktywnych, który opiera się na absorpcji światła i jest stosowany głównie w druku. W praktyce, model ten nie uwzględnia wszystkich aspektów percepcji kolorów, co może prowadzić do niedokładności w odzwierciedleniu kolorów. Z kolei model CMYK, będący rozszerzeniem modelu CMY, dodaje czarny atrament do uzyskania głębszych odcieni, co czyni go lepszym do druku, ale nie jest on dogodny do reprezentacji kolorów w przestrzeni stożkowej. Te modele, choć mają swoje zastosowanie w różnych dziedzinach, nie są tak użyteczne, jak model HSV, gdyż nie oferują podobnej elastyczności w manipulacji kolorami i nie są oparte na intuicyjnym systemie odcieni, nasycenia i jasności.

Pytanie 21

W formularzu HTML użyto znacznika <input>. Pole to będzie służyło do wprowadzania maksymalnie

<input type="password" size="30" maxlength="20">
A. 20 znaków, które nie są widoczne w polu tekstowym
B. 30 znaków, które są widoczne w trakcie wprowadzania
C. 20 znaków, które są widoczne w trakcie wprowadzania
D. 30 znaków, które nie są widoczne w polu tekstowym
Poprawna odpowiedź to 20 znaków, które nie są widoczne w polu tekstowym. Znacznik <input type="password"> w HTML jest używany do tworzenia pól wprowadzania, w których hasła lub inne wrażliwe dane są maskowane, co oznacza, że wpisywane znaki są pokazywane jako symbole, zwykle kropki. W atrybucie 'maxlength' określa się maksymalną liczbę znaków, które użytkownik może wprowadzić. W tym przypadku, atrybut 'maxlength="20"' oznacza, że użytkownik może wprowadzić maksymalnie 20 znaków, ale nie będą one widoczne w polu tekstowym, co zwiększa bezpieczeństwo. Dobrym przykładem zastosowania tego typu pola jest logowanie do systemów, gdzie ochrona danych użytkownika jest kluczowa. Stosowanie pól typu 'password' jest zgodne z zasadami ochrony prywatności i dobrymi praktykami w zakresie projektowania interfejsów użytkownika, które wymagają maskowania danych w celu minimalizacji ryzyka ich ujawnienia.

Pytanie 22

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. stworzyć kwerendę, która wyszukuje tytuły książek
D. Ustalić relację 1..1 pomiędzy tabelami ksiazki i autorzy, a następnie stworzyć kwerendę łączącą obie tabele
Zdefiniowanie relacji 1..n między tabelami 'ksiazki' oraz 'autorzy' jest kluczowe dla prawidłowego modelowania danych w bazach danych. Relacja 1..n oznacza, że jeden autor może mieć wiele książek, co jest w pełni zgodne z rzeczywistością w kontekście księgarni. Aby stworzyć raport sprzedanych książek z tytułami i nazwiskami autorów, konieczne jest, aby obie tabele były połączone w sposób umożliwiający łatwy dostęp do danych. Po utworzeniu relacji można skorzystać z kwerendy SQL, która wykorzystuje złączenie (JOIN) do pobrania informacji z obu tabel. Przykładowe zapytanie może wyglądać następująco: SELECT ksiazki.tytul, autorzy.nazwisko FROM ksiazki JOIN autorzy ON ksiazki.idAutor = autorzy.id. Tego typu podejście jest zgodne z dobrymi praktykami w projektowaniu baz danych, umożliwiając łatwe skalowanie oraz modyfikację w przyszłości.

Pytanie 23

W PHP utworzenie oraz przypisanie tablicy asocjacyjnej do zmiennej odbywa się poprzez zapis

A. $tab = array ("a" => 1, "b" => 2, "c" => 3);
B. $tab = array (array (1, 2), array (3, 4));
C. $tab = array (); $tab[] = array (1, 2, 3, 4);
D. $tab = array (1, 2, 3, 4);
Żeby dobrze stworzyć i przypisać zmiennej tablicę asocjacyjną w PHP, trzeba użyć głównie składni, która pozwoli nam przypisać wartości do konkretnych kluczy. Jak mamy zapis $tab = array ("a" => 1, "b" => 2, "c" => 3); to definiujemy tablicę, w której klucze to "a", "b" i "c", a wartości to 1, 2 i 3. Takie tablice asocjacyjne w PHP są naprawdę super, bo ułatwiają zarządzanie danymi, dzięki czemu bez problemu możemy sięgać po wartości używając unikalnych kluczy zamiast nudnych indeksów. Można to sobie wyobrazić na przykładzie aplikacji, gdzie klucze są identyfikatorami użytkowników, a wartości to ich dane. Jest to mega pomocne, szczególnie w dużych projektach, gdyż kod staje się bardziej czytelny i łatwiejszy do naprawy. Tak więc umiejętne korzystanie z tablic asocjacyjnych to kluczowa umiejętność w programowaniu w PHP, a dobrze przypisane wartości do kluczy ułatwiają pracę z danymi.

Pytanie 24

Wskaż funkcję JavaScript, która umożliwia obliczenie połowy kwadratu liczby podanej jako argument.

A. function wynik(a) { return a/2+a/2; }
B. function wynik(a) { return a*2/2; }
C. function wynik(a) { return a*a/2; }
D. function wynik(a) { return 2*a/a; }
Funkcja 'wynik' w postaci 'function wynik(a) { return a*a/2; }' poprawnie oblicza połowę kwadratu liczby 'a', co można zapisać matematycznie jako (a^2)/2. Takie podejście jest zgodne z definicją funkcji w programowaniu, gdzie argument 'a' jest przekazywany jako parametr, a następnie wykorzystany w obliczeniach. Przykładowo, jeśli przekazalibyśmy liczbę 4, wynik funkcji wyniósłby (4*4)/2 = 8. W praktycznych zastosowaniach, takie obliczenia mogą być przydatne w różnych dziedzinach, jak grafika komputerowa, gdzie oblicza się pola powierzchni, czy inżynieria, gdzie analizuje się różne parametry techniczne. Użycie operatora mnożenia i dzielenia zapewnia, że wyniki są zgodne z oczekiwaniami matematycznymi, co jest zgodne z najlepszymi praktykami programistycznymi, polegającymi na precyzyjnym oddzieleniu operacji arytmetycznych i dbałości o czytelność kodu.

Pytanie 25

W aplikacji webowej komunikat powinien być wyświetlany jedynie wtedy, gdy użytkownik odwiedza stronę po raz pierwszy. Jakiej funkcji PHP należy użyć w tym przypadku?

A. setcookie
B. define
C. session_destroy
D. mysqli_change_user
Funkcja setcookie w PHP jest wykorzystywana do ustawiania ciasteczek w przeglądarkach użytkowników. Ciasteczka te mogą przechowywać różne informacje, co umożliwia personalizację doświadczeń użytkownika na stronie internetowej. W kontekście opisanego zagadnienia, można zastosować setcookie do zdefiniowania ciasteczka, które będzie informować, że dany użytkownik odwiedza stronę po raz pierwszy. Przykładowe zastosowanie może wyglądać tak: jeśli na stronie nie ma określonego ciasteczka (np. 'first_visit'), można wyświetlić komunikat powitalny i wówczas ustawić ciasteczko z odpowiednim czasem ważności, co pozwala na ukrycie tego komunikatu przy kolejnych wizytach. Użycie tej funkcji jest zgodne z najlepszymi praktykami w zakresie zarządzania sesjami użytkowników, ponieważ pozwala na zachowanie stanu użytkownika w sposób prosty i efektywny. Dodatkowo, dzięki ciasteczkom, można analizować zachowanie użytkowników, co pozwala na dalsze optymalizowanie doświadczeń na stronie.

Pytanie 26

W przypadku podanego fragmentu kodu walidator HTML zgłosi błąd, ponieważ <img src="kwiat.jpg alt="kwiat">

A. brak obrazu kwiat.jpg
B. zastosowano nieznany atrybut alt
C. nie zamknięto cudzysłowu
D. użyto niewłaściwego znacznika do wyświetlenia obrazu
W przedstawionym kodzie HTML występuje błąd związany z niedomknięciem cudzysłowu dla atrybutu 'src'. Prawidłowa składnia powinna wyglądać następująco: <img src="kwiat.jpg" alt="kwiat">. Brak cudzysłowu po 'kwiat.jpg' uniemożliwia poprawne zinterpretowanie kodu przez przeglądarki, co skutkuje błędem walidacji. Zasady walidacji kodu HTML są zgodne z wytycznymi W3C, które zalecają, aby każdy atrybut był zamknięty cudzysłowem. Poprawność kodu nie tylko wpływa na jego działanie, ale również na dostępność strony oraz SEO. Użytkownicy, którzy poruszają się po stronach bez pełnej obsługi HTML, mogą napotkać problemy z wyświetlaniem obrazów. W praktyce, zawsze warto stosować dobregi praktyki kodowania, takie jak użycie linterów do sprawdzania poprawności kodu przed jego publikacją, aby uniknąć takich błędów.

Pytanie 27

Strona internetowa została napisana w języku XHTML. Który z poniższych kodów przedstawia implementację zamieszczonego fragmentu strony, przy założeniu, że nie zdefiniowano żadnych stylów CSS?

Ilustracja do pytania
A. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<hr /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
B. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<i>prototyp hipertekstowego systemu informacyjnego - <b>ENQUIRE</b></i></p>
C. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
D. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
Odpowiedź druga jest prawidłowa, ponieważ w XHTML stosowanie znaczników zgodnych z HTML jest kluczowe. Nagłówek <h1> wskazuje na najbardziej wyróżniający się element na stronie, co jest zgodne z prezentowanym obrazem, gdzie 'Początki HTML' jest nagłówkiem. XHTML wymaga, by wszystkie elementy były poprawnie zagnieżdżone i zamknięte, a tag <br /> jest poprawnie użyty jako samo zamykający się, co jest wymagane w XHTML. Ponadto, struktura dokumentu XHTML musi być bardziej restrykcyjna, co oznacza, że używanie semantycznych znaczników jak <h1> dla nagłówków sprzyja lepszej interpretacji struktury dokumentu przez przeglądarki i narzędzia dostępności. Poprawne użycie <b> i <i> do wyróżniania tekstu jest zgodne ze standardami, chociaż w nowoczesnym HTML5 zaleca się używanie <strong> i <em> dla semantycznego formatowania. Takie podejście wspomaga dostępność oraz ułatwia zrozumienie kodu przez inne osoby. Dobór tagów w tej odpowiedzi pokazuje zrozumienie zasad semantyki oraz poprawnej struktury dokumentów w XHTML co jest zgodne z dobrymi praktykami web developmentu.

Pytanie 28

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. INSERT INTO nowy FROM artykuly SET TRUE;
B. INSERT INTO artykuly VALUE nowy = TRUE;
C. UPDATE artykuly SET nowy = TRUE;
D. UPDATE nowy FROM artykuly VALUE TRUE;
Poprawna kwerenda UPDATE artykuly SET nowy = TRUE; jest klasycznym przykładem instrukcji aktualizacji danych w SQL. Słowo kluczowe UPDATE wskazuje, że modyfikujemy istniejące rekordy, a nie dodajemy nowe. Nazwa tabeli artykuly określa, w której tabeli wykonujemy operację. Następnie część SET nowy = TRUE ustawia dla kolumny nowy wartość logiczną TRUE we wszystkich wierszach, ponieważ w zapytaniu nie ma klauzuli WHERE. I to jest tu kluczowe: brak WHERE oznacza, że aktualizacja dotknie każdego rekordu w tabeli. Moim zdaniem warto zapamiętać schemat: UPDATE nazwa_tabeli SET kolumna = wartość WHERE warunek;. W praktyce bardzo często dodaje się WHERE, np.: UPDATE artykuly SET nowy = TRUE WHERE data_dodania >= '2026-01-01'; – wtedy oznaczamy jako nowe tylko artykuły dodane od konkretnej daty. W zadaniu jednak wyraźnie jest mowa o każdym rekordzie, więc brak WHERE jest jak najbardziej zgodny z treścią. W większości systemów bazodanowych (MySQL, PostgreSQL, SQL Server, MariaDB) ta składnia jest standardowa i zalecana. Dobra praktyka jest taka, żeby przed odpaleniem UPDATE bez WHERE najpierw zrobić SELECT * FROM artykuly; albo SELECT COUNT(*) FROM artykuly;, żeby mieć świadomość, ile rekordów zmienimy. W projektach produkcyjnych często dodaje się też transakcje, np. w PostgreSQL: BEGIN; UPDATE artykuly SET nowy = TRUE; COMMIT; dzięki temu w razie pomyłki można zrobić ROLLBACK. Warto też wiedzieć, że kolumna typu logicznego może przyjmować wartości TRUE, FALSE, czasem 1/0 (np. w MySQL), ale forma z TRUE/FALSE jest czytelniejsza i bardziej zgodna z semantyką. W wielu aplikacjach webowych pole w stylu nowy służy np. do filtrowania artykułów w panelu administracyjnym albo na stronie głównej: SELECT * FROM artykuly WHERE nowy = TRUE;. To dokładnie ten sam atrybut, który przed chwilą masowo ustawiliśmy poleceniem UPDATE.

Pytanie 29

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

A. upper
B. now
C. len
D. year
Funkcja SQL 'now' jest funkcją, która zwraca bieżącą datę i czas. Jest to przykład funkcji, która nie pobiera żadnych argumentów, co oznacza, że jej działanie jest niezależne od jakichkolwiek wartości wejściowych. W praktyce, użycie tej funkcji pozwala na uzyskanie aktualnego znacznika czasu w zapytaniach SQL, co jest szczególnie przydatne w kontekście logowania zdarzeń w bazach danych, generowania raportów lub wstawiania danych z bieżącą datą i czasem do tabeli. Na przykład, w poleceniu SQL 'INSERT INTO logi (data_czas) VALUES (now());' wstawiamy aktualny czas do kolumny 'data_czas'. Stosowanie funkcji, które nie wymagają argumentów, jak 'now', jest zgodne z najlepszymi praktykami, ponieważ upraszcza kod i minimalizuje ryzyko błędów związanych z przekazywaniem niepoprawnych argumentów.

Pytanie 30

W tabeli o nazwie zadania znajduje się kolumna tekstowa status. Jakie zapytanie należy wykorzystać, aby usunąć te rekordy, w których status to ‘zamknięte’?

A. DELETE FROM zadania WHERE status = 'zamknięte';
B. TRUNCATE TABLE zadania;
C. TRUNCATE TABLE zadania WHERE status = 'zamknięte';
D. DELETE FROM zadania;
Odpowiedź 'DELETE FROM zadania WHERE status = 'zamknięte';' jest poprawna, ponieważ ta kwerenda w sposób precyzyjny usuwa tylko te rekordy z tabeli 'zadania', które mają status 'zamknięte'. Użycie klauzuli WHERE jest kluczowe, ponieważ pozwala na ograniczenie operacji usunięcia do konkretnych wierszy w tabeli, co jest zgodne z najlepszymi praktykami w zarządzaniu bazami danych. Należy unikać bezwarunkowego usuwania wszystkich rekordów, jak w przypadku kwerendy 'DELETE FROM zadania;', co mogłoby spowodować utratę danych, które są nadal potrzebne. Przykłady zastosowania tej kwerendy można znaleźć w wielu systemach zarządzania projektami, gdzie często musimy archiwizować lub usuwać zakończone zadania. Dodatkowo stosowanie klauzuli WHERE jest zgodne z zasadą minimalizacji zmian w bazie danych, co jest istotne dla zapewnienia integralności danych i umożliwienia ich późniejszej analizy.

Pytanie 31

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

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

Pytanie 32

W języku JavaScript stworzono zmienną i, która będzie przechowywać wynik dzielenia równy 1, to

A. var i=3/2
B. var i=Number(3/2)
C. var i=parseFloat(3/2)
D. var i=parseInt(3/2)
Wybór 'var i=parseInt(3/2);' jest właściwy, ponieważ funkcja parseInt służy do konwersji wartości liczbowych na liczby całkowite. W tym przypadku, wyrażenie 3/2 zwraca wartość 1.5, a funkcja parseInt zamienia tę wartość na 1, co jest zgodne z oczekiwanym wynikiem. Warto zauważyć, że parseInt zawsze zwraca najbliższą liczbę całkowitą, zaokrąglając w dół, co czyni ją idealnym narzędziem do realizacji tego celu. W JavaScript istnieje wiele sposobów na konwersję wartości liczbowych, a parseInt jest jednym z najczęściej używanych, gdyż pozwala na przetwarzanie tekstów i liczb w zrozumiały sposób. Przykładowo, jeśli mamy stringa '10.5', użycie parseInt('10.5') da wynik 10. Odniesienie do standardów JavaScript w kontekście konwersji typów można znaleźć w dokumentacji ECMAScript, która definiuje zasady działania funkcji konwertujących. Dobrą praktyką jest również zwrócenie uwagi na radzenie sobie z typami danych w JavaScript, aby uniknąć nieporozumień w przyszłości.

Pytanie 33

Jednostka ppi (pixels per inch) oznacza

A. określa rozdzielczość obrazów tworzonych przez drukarki oraz plotery
B. jest jednostką rozdzielczości skanerów definiującą częstość próbkowania obrazu
C. określa rozdzielczość obrazów rastrowych
D. jest parametrem wyznaczającym rozdzielczość cyfrowych urządzeń dokonujących pomiarów
Wiele odpowiedzi na to pytanie wskazuje na różne aspekty rozdzielczości i pomiarów, które jednak nie odnoszą się bezpośrednio do definicji jednostki ppi. Na przykład, stwierdzenie, że ppi "określa rozdzielczości obrazów generowanych przez drukarki i plotery" zawęża pojęcie do urządzeń drukujących, ignorując szerszy kontekst obrazów rastrowych, które obejmują zarówno reprodukcję cyfrową, jak i wydruk. PPI jest miarą stosowaną do określenia, jak szczegółowy jest obraz w jego cyfrowej formie, co jest kluczowe w przypadku dowolnego zastosowania obrazów rastrowych, a nie tylko ich druku. Inna odpowiedź, sugerująca, że ppi "jest parametrem określającym rozdzielczość cyfrowych urządzeń wykonujących pomiary", wprowadza dodatkowe zamieszanie, ponieważ ppi odnosi się do gęstości pikseli w obrazach, a nie do samych urządzeń pomiarowych, takich jak skanery czy kamery. Ostatnia propozycja, sugerująca, że ppi "jest jednostką rozdzielczości skanerów określającą częstość wykonywanych próbkowań obrazu", również jest myląca, ponieważ ppi nie odnosi się bezpośrednio do częstotliwości próbkowania, a raczej do gęstości pikseli po cyfryzacji obrazu. Przykładowo, urządzenie skanujące może pracować przy różnych ustawieniach dpi (dots per inch), co jest inną wartością niż ppi, a te dwie jednostki, choć powiązane, pełnią różne funkcje w kontekście cyfrowych obrazów. Dlatego kluczowe jest zrozumienie, że jednostka ppi jest ściśle związana z jakością i szczegółowością obrazów rastrowych, a nie z różnymi aspektami samego procesu skanowania czy drukowania.

Pytanie 34

Jakiego typu w języku PHP można użyć do przechowywania wielu wartości z opcją ich indeksowania?

A. float
B. boolean
C. double
D. array
W PHP, jeśli chcesz przechowywać wiele wartości z możliwością ich indeksowania, to wybór pada na tablicę, czyli array. Tablice to naprawdę elastyczne struktury danych i mogą trzymać różne typy danych, takie jak liczby, teksty, obiekty, a nawet inne tablice. Fajną sprawą jest to, że możesz tworzyć tablice asocjacyjne, co oznacza, że przypisujesz wartości do konkretnych kluczy. Na przykład możesz stworzyć tablicę z imionami i numerami telefonów, jak w tym przykładzie: $contacts = array('Jan' => '123456789', 'Anna' => '987654321'). W PHP możesz łatwo dodawać i usuwać elementy, co jest super przydatne w programowaniu. A jakby tego było mało, tablice mogą być też wielowymiarowe, co sprawia, że idealnie nadają się do skomplikowanych danych, na przykład w bazach danych czy w aplikacjach webowych. Warto wiedzieć, że tablice w PHP są traktowane jako obiekty, więc masz dostęp do różnych funkcji, jak array_merge(), array_filter() czy array_map(). Dzięki nim manipulacja danymi staje się znacznie łatwiejsza. Tak więc odpowiedź 'array' to nie tylko dobry wybór, ale też kluczowa kwestia w programowaniu w PHP!

Pytanie 35

Który z poniższych fragmentów kodu HTML sformatuje tekst zgodnie z wymaganiami? (zauważ, że słowo "stacji" jest wyświetlane w większej czcionce niż pozostałe słowa w tej linii)

Ilustracja do pytania
A. Odpowiedź 4: D
B. Odpowiedź 3: C
C. Odpowiedź 1: A
D. Odpowiedź 2: B
Odpowiedź B jest prawidłowa ponieważ używa znacznika big do zwiększenia rozmiaru czcionki dla słowa stacji wewnątrz paragrafu. Znacznik big jest standardowym sposobem na zwiększenie tekstu w HTML chociaż obecnie rekomendowane jest stosowanie CSS do takich stylizacji co pozwala na oddzielenie treści od prezentacji. Przykładowo można użyć CSS w stylu inline lub w oddzielnym arkuszu stylów aby uzyskać ten sam efekt co zwiększa elastyczność i spójność projektu. Warto pamiętać że HTML5 wprowadza pewne zmiany i deprecjonuje niektóre znaczniki co wymaga ciągłego aktualizowania wiedzy dewelopera. Znacznik big mimo że działa w większości przeglądarek może być mniej przewidywalny w przyszłości w porównaniu z CSS. Rozdzielenie stylów od struktury dokumentu jest dobrą praktyką programistyczną co ułatwia zarządzanie kodem oraz poprawia dostępność stron internetowych. Pamiętaj by regularnie analizować i aktualizować swoje projekty zgodnie z najnowszymi standardami HTML i CSS.

Pytanie 36

Które z instrukcji algorytmu odpowiada graficznemu przedstawieniu bloku pokazanego na ilustracji?

Ilustracja do pytania
A. Wyświetl w konsoli wartość zmiennej n
B. n > 70
C. Zrealizuj podprogram do sortowania tablicy t
D. n ← n – 3
Odpowiedź n ← n – 3 to typowa operacja matematyczna, którą naprawdę często używamy w programowaniu. W skrócie, chodzi o to, że zmieniamy wartość zmiennej. Można to przedstawić przy użyciu prostokątnego bloku w diagramie, co jest standardem w notacjach algorytmicznych. To jest ważne, zwłaszcza w strukturach kontrolnych, jak pętle, bo musimy modyfikować zmienną, żeby pętla mogła się zakończyć po pewnej liczbie powtórzeń. Na przykład, w pętli for możemy zmieniać wartość zmiennej, żeby przechodzić przez elementy tablicy w odwrotnym kierunku. Dobrze jest dokumentować takie operacje w kodzie, żeby potem łatwiej było do niego wrócić. Te przypisania są również kluczowe w algorytmach, bo nawet małe zmiany w zmiennych mogą znacząco wpłynąć na wydajność. Zrozumienie tego wszystkiego to podstawa dla każdego programisty, który chce pisać dobry kod.

Pytanie 37

Co uzyskujemy po wykonaniu zapytania SQL?

Ilustracja do pytania
A. średnią wszystkich ocen uczniów
B. liczbę uczniów, których średnia ocen wynosi 5
C. suma ocen uczniów, których średnia ocen wynosi 5
D. całkowitą liczbę uczniów
Zapytanie SQL SELECT count(*) FROM Uczniowie WHERE srednia = 5; wykorzystuje funkcję agregującą count(*), która służy do zliczania liczby wierszy spełniających określone warunki. W tym przypadku warunkiem jest srednia = 5 co oznacza że zapytanie zlicza wszystkich uczniów których średnia ocen wynosi dokładnie 5. Jest to powszechna praktyka w analizie danych gdzie często potrzebujemy określić liczebność pewnych grup danych na przykład aby przeanalizować ich rozkład lub porównać je z innymi grupami. W profesjonalnej bazie danych zliczanie wierszy na podstawie kryteriów jest standardem co umożliwia generowanie raportów i podejmowanie decyzji na podstawie danych. Użycie count(*) bez dodatkowych parametrów jest zgodne z dobrymi praktykami ponieważ jest wydajne i łatwe w interpretacji. W praktyce stosowanie tego typu zapytań jest nieodzowne w działach analizy danych zarządzania relacjami z klientami czy w edukacji gdzie analizujemy wyniki uczniów.

Pytanie 38

ID_PracownikaNazwiskoImięStanowiskoWynagrodzenie
1KowalskiKrzysztofkasjer3215,76
2NowakAntonikierownik5350,00
3ZającAlicjaksięgowy4568,70
4KrólWitoldkasjer3045,00
5NowikGrzegorzkasjer2750,65
6KotulskiAndrzejkierowca3467,00
7TutkaKatarzynakierownik4935,33
8PoradaJakubmagazynier3321,56
Które zapytanie SQL należy wykonać na tabeli Pracownicy, aby otrzymać średnie wynagrodzenie dla pracownika na stanowisku kasjer?
A. SELECT AVG(kasjer.Wynagrodzenie) FROM Pracownicy;
B. SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';
C. SELECT SUM(*) FROM Pracownicy AND Stanowisko= 'kasjer';
D. SELECT SREDNIA(Wynagrodzenie) AND Stanowisko='kasjer' FROM Pracownicy;
Poprawne zapytanie to SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';, bo dokładnie robi to, o co chodzi w treści zadania. Funkcja AVG() w SQL jest standardową funkcją agregującą, która liczy średnią arytmetyczną z wartości liczbowych w danej kolumnie. W tym przypadku kolumna to Wynagrodzenie, czyli kwoty wypłat, a klauzula WHERE Stanowisko='kasjer' zawęża zestaw rekordów tylko do pracowników na stanowisku kasjera. Najpierw więc silnik bazy danych filtruje wiersze (kasjerów), a dopiero potem na tej ograniczonej grupie liczy średnią. To jest bardzo typowy i poprawny schemat pracy z danymi w SQL: najpierw filtrujesz, potem agregujesz. Moim zdaniem warto zauważyć, że taka konstrukcja jest uniwersalna – w praktyce w firmach często liczy się średnie wynagrodzenia dla różnych stanowisk, działów, lokalizacji. Wtedy zmienia się tylko warunek w klauzuli WHERE. Można też pójść krok dalej i użyć GROUP BY, np. SELECT Stanowisko, AVG(Wynagrodzenie) FROM Pracownicy GROUP BY Stanowisko; żeby dostać średnie dla wszystkich stanowisk naraz, co jest wygodne np. w raportach HR. To, co masz w odpowiedzi, to w zasadzie „wersja jednostanowiskowa” takiego raportu. Ważna dobra praktyka: zawsze filtrujemy w klauzuli WHERE, a nie próbujemy wpychać warunków do funkcji agregującej. Dzięki temu zapytanie jest czytelne, zgodne ze standardem SQL i dobrze optymalizowane przez silnik bazy. W realnych projektach staramy się też nadać alias wynikom agregacji, np. SELECT AVG(Wynagrodzenie) AS SredniaKasjera FROM Pracownicy WHERE Stanowisko='kasjer';, żeby w raportach i w kodzie aplikacji od razu było wiadomo, co oznacza zwracana kolumna.

Pytanie 39

Debugger to narzędzie programowe, które ma za zadanie

A. dynamiczna analiza działającego programu mająca na celu identyfikację przyczyn błędnego działania
B. łączenie plików bibliotek oraz wstępnie przetworzonego kodu źródłowego w plik wykonywalny
C. instalowanie zestawu do programowania
D. rozpoznawanie błędów składniowych w kodzie źródłowym języka programowania
Debugger to zaawansowane oprogramowanie, które odgrywa kluczową rolę w procesie programowania, umożliwiając programistom dynamiczną analizę uruchomionego programu. Jego głównym zadaniem jest identyfikacja i diagnozowanie problemów, które mogą występować podczas działania aplikacji, co jest nieocenione w procesie tworzenia oprogramowania. Debugger pozwala na obserwację zmiennych, śledzenie przepływu wykonania kodu oraz analizę stanu pamięci, co jest istotne dla wykrywania błędów logicznych i wydajnościowych. Przykłady zastosowania debuggera można znaleźć w różnych środowiskach programistycznych, takich jak Visual Studio, Eclipse czy PyCharm, które oferują wbudowane narzędzia do debugowania. Standardy takie jak IEEE 829, dotyczące dokumentacji testowej, podkreślają znaczenie narzędzi debugujących w zapewnieniu jakości oprogramowania. W kontekście debugowania, programiści mogą korzystać z takich technik jak breakpointy, które zatrzymują wykonywanie programu w określonym miejscu, co umożliwia dokładną analizę jego stanu w danym momencie. Takie praktyki przyczyniają się do poprawy stabilności i wydajności tworzonych aplikacji.

Pytanie 40

Jaką klauzulę należy użyć w instrukcji CREATE TABLE w SQL, żeby pole rekordu nie mogło być puste?

A. NOT NULL
B. DEFAULT
C. NULL
D. CHECK
Klauzula NOT NULL w poleceniu CREATE TABLE języka SQL służy do zapewnienia, że dane w danym polu rekordu nie mogą być puste. To oznacza, że podczas wstawiania nowych rekordów do tabeli, każde pole, które zostało zdefiniowane z tą klauzulą, musi zawierać wartość. Na przykład, jeśli mamy tabelę pracowników, w której kolumna 'nazwisko' jest zdefiniowana jako NOT NULL, to każde dodanie nowego pracownika do tej tabeli musi zawierać wartość w kolumnie 'nazwisko'. W praktyce jest to bardzo ważne, ponieważ pozwala na utrzymanie integralności danych i zapobiega sytuacjom, w których kluczowe informacje mogłyby zostać pominięte. Użycie NOT NULL jest zgodne z dobrymi praktykami projektowania baz danych, które podkreślają znaczenie pełnych i kompletnych danych. Zastosowanie tej klauzuli zwiększa jakość danych oraz ułatwia późniejsze operacje na tabeli, takie jak zapytania czy raporty.