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: 28 kwietnia 2026 13:51
  • Data zakończenia: 28 kwietnia 2026 14:04

Egzamin zdany!

Wynik: 21/40 punktów (52,5%)

Wymagane minimum: 20 punktów (50%)

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

Fragment kodu w PHP przedstawia się następująco (patrz ramka): Przy założeniu, że zmienna tablicowa $tab zawiera liczby naturalne, wynik działania programu polega na wypisaniu

Ilustracja do pytania
A. elementu tablicy równemu wartości $tab[0]
B. tych elementów, które przewyższają wartość zmiennej $liczba
C. największego elementu w tablicy
D. najmniejszego elementu w tablicy
Zobaczmy teraz, co poszło nie tak z innymi odpowiedziami. W przypadku tej, co miała znaleźć najmniejszy element, to kod nie jest w stanie tego zrobić, ponieważ warunek if sprawdza, czy element jest większy, a powinien być mniejszy, żeby szukać minimum. Jakby zmienić na if ($element < $liczba), to byłoby ok. W innej odpowiedzi twierdzono, że program znajdzie element równy $tab[0], ale w kodzie nie ma żadnego porównania z tym pierwszym elementem, poza tym, że przypisujemy go do $liczba na początku. Brak tam dodatkowej logiki, żeby to ogarnąć. A w ostatniej odpowiedzi pisano o wypisywaniu elementów większych od $liczba, ale kod nie działa w ten sposób, bo nie ma tam nic, co by pozwalało na wypisywanie więcej niż jednego elementu. Program jedynie aktualizuje $liczba, żeby znaleźć największą wartość. Często takie pomyłki biorą się z braku zrozumienia, jak działa iteracja i porównania w programowaniu, gdzie trzeba dobrze rozumieć, jakie warunki i operacje są potrzebne.

Pytanie 2

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

A. #
B. <!-- -->
C. //
D. /* */
W kontekście komentowania w języku PHP ważne jest zrozumienie, że różne metody mają swoje specyficzne zastosowania i ograniczenia. Użycie znaku '#' do komentowania nie jest właściwe w PHP, gdyż ta składnia jest typowa dla języka shellowego i nie jest wspierana w PHP. Próba użycia '#' spowoduje błąd składniowy, co jest klasycznym błędem popełnianym przez osoby, które mają doświadczenie w innych językach programowania, ale stają się mylące w kontekście PHP. Z kolei pojedyncza linia komentarza, oznaczona przez '//', pozwala na komentowanie tylko jednej linii, co może być niewystarczające w przypadkach, gdy potrzebujesz dłuższego wyjaśnienia. To ograniczenie w praktyce prowadzi do fragmentacji komentarzy, co może obniżyć czytelność kodu. Użycie z kolei znaku '<!-- -->' jest związane z HTML i również nie jest poprawne w kontekście PHP. Tego rodzaju komentarze są ignorowane przez przeglądarki internetowe, co sprawia, że są one całkowicie nieprzydatne w kodzie PHP, gdzie potrzebujemy, aby komentarze były zrozumiałe dla programisty, a nie dla użytkownika końcowego. Błędem myślowym związanym z tymi podejściami jest przekonanie, że można swobodnie przenosić metody komentowania z jednego języka do innego. Zrozumienie specyfiki każdego języka programowania, w tym jego zasadności i konwencji dotyczących komentarzy, jest kluczowe dla efektywnego pisania kodu, który jest zarówno funkcjonalny, jak i łatwy do zrozumienia.

Pytanie 3

Dla którego akapitu zastosowano przedstawioną właściwość stylu CSS?

border-radius: 20%;

To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf

A

To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf

B

To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf

C

To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf, To jest paragraf

D
A. A.
B. D.
C. C.
D. B.
Dobra robota! Zgadłeś, że chodziło o akapit z tą właściwością CSS 'border-radius: 20%;'. Ta właściwość faktycznie zaokrągla rogi elementów, co wygląda super i sprawia, że strona jest bardziej przyjemna dla oka. Widzisz, akapit B ma te zaokrąglone rogi, a to dokładnie to, co daje nam ten styl CSS. W rzeczywistości, tylko B jest tak zrobiony na obrazku, więc wiesz, że tam zastosowano 'border-radius'. Ta wartość '20%;' mówi nam, jak mocno rogi mają być zaokrąglone. Takie rzeczy są ważne w CSS, żeby strony wyglądały estetycznie i nowocześnie.

Pytanie 4

Która z poniższych funkcji w języku PHP zmieni słowo „kota” na „mysz” w zdaniu „ala ma kota”?

A. replace("ala ma kota", "kota", "mysz");
B. str_replace( "kota", "mysz", "ala ma kota");
C. str_replace("ala ma kota", "kota", "mysz");
D. replace("kota", "mysz", "ala ma kota");
Funkcja str_replace w języku PHP jest odpowiedzialna za zamianę określonych ciągów znaków w danym tekście. W poprawnej odpowiedzi użyto jej w sposób zgodny z jej syntaksą, co jest kluczowe dla prawidłowego działania w tym kontekście. W przypadku str_replace, pierwszy argument to ciąg znaków, który chcemy zamienić, drugi argument to nowy ciąg, który ma zastąpić stary, a trzeci argument to tekst, w którym dokonujemy zamiany. W przedstawionym przykładzie, zamieniamy słowo 'kota' na 'mysz' w napisie 'ala ma kota', co skutkuje wynikiem 'ala ma mysz'. Tego rodzaju operacje są powszechnie stosowane w programowaniu webowym, szczególnie przy dynamicznym generowaniu treści, gdzie konieczne jest modyfikowanie tekstu na podstawie danych użytkownika lub baz danych. Warto również zwrócić uwagę na to, że stosowanie str_replace zgodnie z dokumentacją PHP jest standardem, który pozwala na uniknięcie wielu błędów związanych z manipulacją tekstem.

Pytanie 5

W bazie danych wykonano następujące polecenia dotyczące uprawnień użytkownika adam. Po ich realizacji użytkownik adam uzyska uprawnienia do

GRANT ALL PRIVILEGES ON klienci TO adam
REVOKE SELECT, INSERT, UPDATE ON klienci FROM adam
A. usuwania tabeli lub jej rekordów
B. modyfikowania danych i przeglądania tabeli klienci
C. tworzenia tabeli klienci oraz modyfikowania w niej danych
D. przeglądania tabeli klienci oraz dodawania do niej sektorów
Analizując dostarczone polecenia SQL kluczowe jest zrozumienie jakie uprawnienia zostały przyznane użytkownikowi adam. Polecenie GRANT ALL PRIVILEGES przyznaje pełen zakres uprawnień do tabeli klienci co obejmuje operacje takie jak SELECT INSERT UPDATE DELETE oraz DROP. Jednakże w następnym kroku za pomocą polecenia REVOKE ograniczono specyficzne uprawnienia takie jak SELECT INSERT i UPDATE pozostawiając jedynie te które nie zostały wymienione co w tym przypadku oznacza usunięcie rekordów DELETE oraz całej tabeli DROP. Niezrozumienie znaczenia poszczególnych poleceń SQL oraz ich interakcji prowadzi do błędnych wniosków dotyczących zakresu możliwości użytkownika. Warto zwrócić uwagę że uprawnienia takie jak SELECT umożliwiają jedynie przeglądanie danych co nie jest zgodne z usunięciem danych ani tabeli. Podobnie INSERT pozwala na dodawanie nowych rekordów a nie ich usuwanie. UPDATE z kolei umożliwia modyfikację istniejących danych bez ich usunięcia. W kontekście zarządzania bazą danych ważne jest precyzyjne rozumienie jakie prawa są przyznawane i jakie konsekwencje to niesie dla bezpieczeństwa i operacyjności systemu bazodanowego. Niewłaściwe przypisanie uprawnień może prowadzić do nieautoryzowanego dostępu lub modyfikacji danych co stanowi poważne zagrożenie dla integralności danych oraz stabilności systemu. Zrozumienie różnic między poszczególnymi uprawnieniami jest fundamentalne dla zarządzania bazą danych zgodnie z najlepszymi praktykami branżowymi i standardami bezpieczeństwa informatycznego. Poprawna interpretacja poleceń SQL jest kluczowa dla zapewnienia odpowiedniego poziomu kontroli dostępu i ochrony danych w systemach bazodanowych.

Pytanie 6

W języku HTML, aby nadać dokumentowi tytuł "Moja strona", który będzie wyświetlany na zakładce przeglądarki internetowej, należy posłużyć się zapisem

A. <title>Moja strona</title>
B. <meta name="title" content="Moja strona" />
C. <meta title="Moja strona">
D. <head>Moja strona</head>
Element <title> jest absolutnie podstawą, jeśli chodzi o definiowanie tytułu strony w HTML. Umieszcza się go zawsze wewnątrz sekcji <head>, a jego zawartość jest tym, co wyświetla się na karcie przeglądarki. Moim zdaniem to jedna z tych rzeczy, które – choć wydają się drobiazgiem – mają duży wpływ na użyteczność i pozycjonowanie strony. Jeśli budujesz własną stronę lub pracujesz przy większym projekcie, warto pamiętać, żeby tytuł był unikalny i możliwie krótki, bo to właśnie on pojawia się również w wynikach wyszukiwania Google. Organizacje takie jak W3C wyraźnie podkreślają, że <title> jest wymagany w każdym dokumencie HTML5. Często też spotykałem się z przypadkami, gdzie ktoś zapominał o tym tagu i potem dziwił się, że przeglądarka pokazuje „Untitled” albo po prostu adres URL na pasku zakładki. Z praktyki – zawsze warto od razu na początku pracy nad stroną ustawić sensowny tytuł, bo potem łatwo o tym zapomnieć. A jak już masz kilka kart z otwartymi projektami, czy klient patrzy na podgląd w wyszukiwarce – profesjonalnie przygotowany tytuł robi robotę. Pamiętaj też, że <title> nie jest miejscem na wrzucanie dodatkowego kodu HTML, tylko sam tekst. Prosta sprawa, a oszczędza potem sporo nerwów.

Pytanie 7

Kaskadowe arkusze stylów są tworzone w celu

A. ulepszenia nawigacji dla użytkownika
B. zwiększenia szybkości ładowania grafiki na stronie internetowej
C. dodania na stronie internetowej treści tekstowych
D. określenia metod formatowania elementów na stronie internetowej
Kaskadowe arkusze stylów (CSS) są kluczowym elementem w projektowaniu stron internetowych, ponieważ umożliwiają one definiowanie sposobu formatowania i prezentacji elementów na stronie. CSS pozwala na oddzielenie treści od formy, co oznacza, że programiści mogą skupić się na tworzeniu struktury dokumentu HTML, podczas gdy stylistyka i układ są kontrolowane przez arkusze stylów. Przykładem zastosowania CSS jest stylizacja nagłówków, paragrafów czy list, gdzie można dostosować czcionki, kolory, marginesy oraz inne właściwości wizualne. Dzięki użyciu selektorów i reguł CSS, twórcy stron mają pełną kontrolę nad tym, jak każdy element będzie wyglądał, co pozwala na tworzenie responsywnych i estetycznych interfejsów. Ponadto, CSS obsługuje kaskadowość, co oznacza, że reguły mogą być dziedziczone i nadpisywane, co zwiększa elastyczność i wydajność procesu stylizacji. Warto również zwrócić uwagę na standardy W3C, które definiują najlepsze praktyki i zalecenia dotyczące użycia CSS, co przyczynia się do poprawy dostępności i zgodności stron internetowych.

Pytanie 8

Gdzie w dokumencie HTML mogą być umieszczane fragmenty kodu JavaScript?

A. tak w sekcji <head>, jak i <body>, w znaczniku <java>
B. wyłącznie w sekcji <body>, w znaczniku <java>
C. zarówno w sekcji <head>, jak i <body>, w znaczniku <script>
D. jedynie w sekcji <head>, w znaczniku <script>
Wiesz, wstawianie kodu JavaScript do dokumentu HTML powinno odbywać się w znaczniku <script>. Możesz go umieścić zarówno w <head>, jak i w <body>. Często wrzucamy skrypty do <head>, bo chcemy, żeby załadowały się przed wyświetleniem treści. To się przydaje, gdy skrypty zmieniają coś w DOM. Z drugiej strony, jak wrzucisz je do <body>, to skrypty będą ładowane po całej treści, co może przyspieszyć to, co widzi użytkownik. Na przykład, jeśli tworzysz coś interaktywnego, lepiej umieścić skrypty na dole, żeby nie blokować renderowania. Dobrze jest też pamiętać o atrybucie 'defer' w <script>, bo dzięki temu skrypt się ściąga równolegle z innymi rzeczami, ale działa dopiero jak cały dokument jest załadowany. To ważne, żeby strony działały sprawnie i były przyjemne w użytkowaniu.

Pytanie 9

Uprawnienia obiektowe przyznawane użytkownikom serwera bazy danych mogą umożliwiać lub ograniczać

A. wykonywać polecenia, takie jak tworzenie kopii zapasowej
B. przechodzić uprawnienia
C. zmieniać role i konta użytkowników
D. realizować operacje na bazie, takie jak wstawianie lub modyfikowanie danych
Uprawnienia obiektowe w kontekście baz danych pozwalają na kontrolowanie dostępu do różnych zasobów, takich jak tabele, widoki czy procedury składowane. Odpowiedź dotycząca wykonywania operacji na bazie, takich jak wstawianie czy modyfikowanie danych, jest prawidłowa, ponieważ uprawnienia te bezpośrednio wpływają na możliwości użytkownika w zakresie manipulacji danymi. Przykładowo, jeśli użytkownik posiada uprawnienie do INSERT, może dodawać nowe rekordy do tabeli, natomiast uprawnienie UPDATE pozwala na zmianę istniejących danych. Takie zarządzanie uprawnieniami jest kluczowe w kontekście bezpieczeństwa danych oraz zapewnienia integralności systemu, ponieważ pozwala na ograniczenie dostępu tylko do tych operacji, które są niezbędne dla danego użytkownika. W praktyce administratorzy baz danych stosują zasady minimalnych uprawnień, przyznając użytkownikom tylko te uprawnienia, które są niezbędne do wykonywania ich pracy, co jest zgodne z najlepszymi praktykami w zakresie zarządzania bezpieczeństwem baz danych.

Pytanie 10

Który z znaczników ma na celu organizację struktury tekstu w HTML?

A. <style>
B. <u>
C. <head>
D. <h6>
Znacznik <h6> jest jednym z sześciu poziomów nagłówków w HTML, które służą do tworzenia hierarchii tekstu w dokumentach internetowych. Użycie nagłówków, takich jak <h1> do <h6>, jest zgodne z zasadami semantycznego HTML, co ma kluczowe znaczenie dla dostępności i SEO. Poprawne użycie tych znaczników pozwala wyszukiwarkom lepiej zrozumieć strukturę treści na stronie, a także ułatwia nawigację osobom korzystającym z technologii asystujących. Na przykład, <h1> powinien być używany dla głównego tytułu strony, a <h2>, <h3> itd. do podtytułów w hierarchii, gdzie <h6> jest najmniej istotnym nagłówkiem. Dzięki temu każdy nagłówek odzwierciedla poziom ważności treści, co zwiększa przejrzystość i użyteczność strony. Dobrą praktyką jest również ograniczenie liczby nagłówków na stronie, aby uniknąć zamieszania w strukturze. Właściwe stosowanie znaczników nagłówków jest istotne nie tylko z punktu widzenia organizacji treści, ale również wpływa na wydajność SEO, ponieważ wyszukiwarki preferują strony o klarownej hierarchii i dobrze zorganizowanej treści.

Pytanie 11

W trakcie weryfikacji stron internetowych nie uwzględnia się

A. błędów w składni kodu
B. źródła pochodzenia narzędzi edytorskich
C. zgodności z różnymi przeglądarkami
D. działania hiperłączy
Walidacja stron internetowych to proces, który ma na celu zapewnienie, że HTML, CSS oraz inne elementy technologii webowych są zgodne ze standardami określonymi przez W3C (World Wide Web Consortium). W kontekście walidacji nie bada się źródła pochodzenia narzędzi edytorskich, ponieważ te narzędzia, takie jak edytory tekstu czy IDE (Integrated Development Environment), są jedynie medium do tworzenia kodu, a nie jego treści. Z perspektywy walidacji, kluczowe jest, aby kod był syntaktycznie poprawny oraz spełniał standardy interoperability, takie jak HTML5 czy CSS3. Przykładem walidacji może być użycie narzędzi takich jak W3C Validator, które analizują kod strony i wskazują błędy składniowe, problemy z dostępnością oraz niezgodności z różnymi przeglądarkami. Dzięki walidacji, developers mogą zapewnić, że ich strony będą działały poprawnie na różnych urządzeniach i przeglądarkach, co wpływa na lepsze doświadczenia użytkowników. Walidacja jest zatem kluczowym krokiem w procesie tworzenia stron internetowych, zapewniającym ich jakość i zgodność ze światowymi standardami.

Pytanie 12

Jaki styl CSS umożliwia ustawienie wyrównania tekstu do prawej strony?

A. <p style="positon: right"> tekst </p>
B. <p style="text-align: right"> tekst </p>
C. <p style="align: right"> tekst </p>
D. <p style="font: right"> tekst </p>
Odpowiedź <p style="text-align: right"> tekst </p> jest poprawna, ponieważ właściwość CSS 'text-align' jest standardowym sposobem definiowania wyrównania tekstu w elemencie blokowym, takim jak <p>. Używając 'text-align: right', tekst wewnątrz elementu <p> zostanie wyrównany do prawej strony, co jest szczególnie przydatne w przypadku projektów webowych, gdzie estetyka i układ treści mają kluczowe znaczenie. Dzięki CSS można z łatwością zmieniać wyrównanie tekstu w zależności od wymagań projektu, co pozwala na elastyczne dostosowywanie stylów do różnych urządzeń i rozmiarów ekranów. Warto również wspomnieć, że stosowanie CSS do stylizacji dokumentów HTML jest zgodne z zasadami kaskadowych arkuszy stylów, co zapewnia separację treści od prezentacji i ułatwia zarządzanie stylami w większych projektach. Dobrą praktyką jest stosowanie zewnętrznych lub wewnętrznych arkuszy stylów zamiast inline stylingu, co zwiększa czytelność kodu i ułatwia jego utrzymanie.

Pytanie 13

Jakie wyrażenie logiczne w języku PHP weryfikuje, czy zmienna1 znajduje się w jednostronnie domkniętym przedziale <-5, 10)?

A. $zmienna1 <= -5 || $zmienna1 < 10
B. $zmienna1 <= -5 && $zmienna1 < 10
C. $zmienna1 >= -5 || $zmienna1 < 10
D. $zmienna1 >= -5 && $zmienna1 < 10
W analizowanych odpowiedziach pojawia się kilka błędnych koncepcji związanych z użyciem operatorów logicznych oraz interpretacją przedziałów. W przypadku wyrażenia $zmienna1 >= -5 || $zmienna1 < 10, zastosowanie operatora || (OR) prowadzi do sytuacji, w której warunki są połączone w sposób, który nie spełnia wymagań jednostronnie domkniętego przedziału. W praktyce oznacza to, że jeśli zmienna1 jest mniejsza od 10, ale większa od -5, cały warunek zwraca prawdę, co jest niezgodne z zamierzonym przedziałem. Podobny błąd występuje w wyrażeniu $zmienna1 <= -5 || $zmienna1 < 10, gdzie również użycie operatora OR skutkuje tym, że przedział nie jest odpowiednio ograniczony. Ostatnie wyrażenie $zmienna1 <= -5 && $zmienna1 < 10 zawiera dodatkowo błąd związany z interpretacją granicy -5, które nie powinno być włączone w przedział domknięty. Takie błędne rozumienie prowadzi do nieprawidłowego przechwytywania wartości zmiennej, co jest szczególnie istotne w kontekście programowania w PHP, gdzie precyzyjne określenie warunków jest kluczowe dla zapewnienia poprawności działania aplikacji. Zrozumienie różnicy między jednostronnie domkniętym a domkniętym przedziałem jest fundamentem w programowaniu i pozwala uniknąć typowych pułapek podczas implementacji logiki aplikacji. Warto także regularnie przeglądać dokumentację oraz standardy dotyczące operatorskich konstrukcji w PHP, aby utrzymać wysoką jakość kodu.

Pytanie 14

Na ilustracji przedstawiono konfigurację serwera Apache dla środowiska XAMPP. Pod jakim lokalnym adresem jest on dostępny?

Ilustracja do pytania
A. localhost:80
B. 127.0.0.1:70
C. htdocs
D. 192.168.0.1:3306
Poprawna odpowiedź to „127.0.0.1:70”, bo na zrzucie z XAMPP Control Panel w kolumnie „Port(s)” przy module Apache widać wyraźnie liczbę 70 jako port HTTP (oraz 443 jako port HTTPS). Adres 127.0.0.1 to tzw. adres loopback, czyli „localhost” – wskazuje zawsze na tę samą maszynę, na której działa przeglądarka i serwer. W praktyce oznacza to, że żeby wejść na swoją stronę testową w XAMPP, wpisujesz w przeglądarce: http://127.0.0.1:70 lub równoważnie http://localhost:70 (jeśli system poprawnie rozwiązuje nazwę „localhost”). Różnica między 127.0.0.1:70 a samym „localhost” polega na tym, że tutaj jawnie podany jest port 70, który jest niestandardowy dla HTTP. Domyślny port HTTP to 80, więc jeśli Apache działałby na porcie 80, mógłbyś wpisać samo http://localhost bez numeru portu. W tym przypadku jednak, ponieważ w XAMPP Apache nasłuchuje na porcie 70, numer portu jest obowiązkowy. To jest częsta praktyka, gdy port 80 jest już zajęty (np. przez IIS, Skype’a, inny serwer www) lub gdy chcemy równolegle uruchomić kilka instancji serwera. W realnych projektach developerskich programiści często ustawiają różne porty dla różnych środowisk, np. 8080, 8000, 3000 itd., żeby rozdzielić aplikacje i uniknąć konfliktów. Moim zdaniem warto się od razu przyzwyczaić do patrzenia w panelu XAMPP właśnie na kolumnę „Port(s)” i świadomie używać adresu IP + port – wtedy od razu wiesz, dokąd naprawdę łączy się przeglądarka i łatwiej diagnozuje się problemy z dostępem do serwera lokalnego.

Pytanie 15

W kodzie HTML 5, w celu walidacji wartości pola <input type="text"> za pomocą wyrażenia regularnego, należy użyć atrybutu

A. value
B. pattern
C. readonly
D. step
W tym pytaniu chodzi o konkretny mechanizm walidacji wbudowany w HTML5, a nie o ogólne właściwości pól formularza. Walidacja za pomocą wyrażeń regularnych jest w standardzie przypisana do jednego, ściśle określonego atrybutu – właśnie pattern. Inne atrybuty z listy pełnią zupełnie inne role i ich mylenie to dość typowy błąd przy nauce formularzy. Atrybut step jest używany do określania „kroku” dla wartości liczbowych lub dat, np. w input type="number" czy type="date". Pozwala zdefiniować, o ile ma się zwiększać lub zmniejszać wartość przy użyciu strzałek lub walidować, czy liczba jest wielokrotnością danego kroku. Przykład: step="0.5" przy liczbie zmiennoprzecinkowej. Nie ma on żadnego związku z wyrażeniami regularnymi ani ze zwykłym tekstem w type="text". value z kolei to po prostu wartość pola – początkowa (domyślna) lub aktualna, odczytywana i modyfikowana przez JavaScript lub wysyłana w formularzu. Ustawienie value nie waliduje danych, tylko je definiuje. Można wprawdzie ręcznie sprawdzać value w JS i dopasowywać je do regexa, ale to już logika skryptu, a nie działanie samego atrybutu w HTML. To pewnie częsty skrót myślowy: „wartość pola” vs. „sprawdzenie wartości pola”, ale przeglądarka sama z siebie nie waliduje na podstawie samego value. readonly natomiast blokuje możliwość edycji pola przez użytkownika, ale nadal wysyła jego wartość z formularzem. To przydatne, gdy chcemy coś pokazać, ale nie pozwolić na zmianę, np. wygenerowany identyfikator. Nie ma tu żadnej analizy treści, żadnego dopasowywania do wzorca – po prostu pole jest nieedytowalne. Czasem ktoś myśli: „skoro nie można tego zmienić, to jakby jest bezpieczne i zwalidowane”, ale to już bardziej kwestia logiki aplikacji, a nie mechanizmu walidacji. Mechanizm HTML5 do regexów jest jeden: pattern. Warto go łączyć z innymi atrybutami walidacyjnymi, jak required, minlength, maxlength, type, ale to właśnie pattern odpowiada za dopasowanie tekstu do określonego wzorca. Wszystko inne z tej listy pełni pomocnicze lub zupełnie inne funkcje i nie zastępuje typowej walidacji opartej o wyrażenia regularne.

Pytanie 16

W języku PHP, instrukcja foreach pełni rolę

A. Warunkową, niezależną od typu zmiennej
B. Wyboru, dotyczącej elementów tablicy
C. Pętli, przeznaczonej wyłącznie dla elementów tablicy
D. Pętli, niezależnej od typu zmiennej
W PHP, instrukcja foreach to super sposób na przechodzenie przez elementy tablicy. Dzięki niej nie musisz się martwić o indeksy, tylko po prostu przeglądasz wszystkie wartości, co naprawdę ułatwia pisanie kodu. Na przykład, jeżeli mamy tablicę z nazwiskami, taką jak $nazwiska = ['Kowalski', 'Nowak', 'Wiśniewski'], to możemy to wrzucić w foreach: foreach ($nazwiska as $nazwisko) { echo $nazwisko; }. W tym przypadku każda wartość z tablicy zostanie wyświetlona po kolei. Z mojego doświadczenia, dobrze jest używać foreach kiedy mamy do czynienia z tablicami, bo to sprawia, że kod jest bardziej przejrzysty i łatwiejszy do zrozumienia. Co więcej, foreach ma tę fajną cechę, że poradzi sobie z różnymi typami wartości w tablicy, więc to naprawdę uniwersalne narzędzie. Pamiętaj, że używając tej pętli, poprawiasz nie tylko wydajność swojego kodu, ale też jego czytelność, co jest super ważne, zwłaszcza w dużych projektach.

Pytanie 17

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

for($i=0; $i <=10; $i+=2) {
       . . . . . .
}
A. 6
B. 5
C. 10
D. 0
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 18

SELECT ocena FROM oceny WHERE ocena>2 ORDER BY ocena;
Dana jest tabela oceny o polach id, nazwisko, imie, ocena. Przedstawione zapytanie jest przykładem:
A. łączenia
B. projekcji
C. selekcji
D. sumowania
Zapytanie SQL, które przedstawiłeś, jest naprawdę świetnym przykładem selekcji. Dzięki niemu można wyciągnąć konkretne dane z tabeli 'oceny'. Selekcja to nic innego jak filtracja danych według ustalonych kryteriów, a w tym przypadku chodzi o to, że 'ocena' musi być większa niż 2. Użycie klauzuli WHERE w SQL pozwala na efektywne wyodrębnienie danych spełniających te wymagania. A jak dodasz do tego klauzulę ORDER BY, to możesz posortować wyniki według wybranej kolejności, co jest naprawdę przydatne w różnych analizach. Takie operacje są kluczowe w pracy z bazami danych, bo dzięki nim zdobywasz konkretną wiedzę bez przeszukiwania całej bazy. W praktyce widać to w raportach, gdzie często potrzebne są tylko konkretne dane, przykładowo żeby sprawdzić, którzy studenci osiągnęli określony poziom ocen. Selekcja daje ci możliwość efektywnego zarządzania danymi, a to według mnie bardzo ważne, zwłaszcza w analizach.

Pytanie 19

Która z pętli w PHP umożliwia przeprowadzenie operacji na wszystkich elementach tablicy z automatycznym przypisaniem indeksów tych elementów?

A. while
B. foreach
C. for
D. do...while
Zarówno konstrukcja 'for', 'while', jak i 'do...while' są pętlami, które służą do wykonywania bloków kodu wielokrotnie, jednak każda z nich ma swoje specyficzne zastosowania, które mogą prowadzić do nieefektywności w kontekście iteracji po tablicach. Użycie pętli 'for' wymaga manualnego zarządzania indeksami, co zwiększa ryzyko błędów, zwłaszcza w przypadku tablic o zmiennej długości. Przykładowo, iterując po tablicy za pomocą 'for', musimy ustawić warunki początkowe, końcowe oraz właściwie modyfikować indeks, co może prowadzić do błędów, jeśli nie zostanie to prawidłowo skonfigurowane. Z drugiej strony, pętle 'while' i 'do...while' są bardziej elastyczne, ale również wymagają dodatkowego sprawdzania warunków, co czyni je mniej przejrzystymi w kontekście iteracji po tablicach. Często prowadzi to do sytuacji, w których programiści popełniają błędy logiczne, takie jak zapętlenie się lub pominięcie elementów, co z kolei skutkuje trudnościami w utrzymaniu kodu. Dlatego, zamiast stosować te pętle, lepiej jest korzystać z 'foreach', która jest dedykowana do pracy z tablicami i eliminuje wiele problemów związanych z zarządzaniem indeksami.

Pytanie 20

Jaki rezultat uzyskamy po uruchomieniu załączonego skryptu?

<?php
class Owoc {
  function __construct() {     echo "test1";     }
  function __destruct() {     echo "test2";     }
}
$gruszka = new Owoc();
?>
A. Na ekranie pojawią się oba komunikaty: "test1" oraz "test2"
B. Pojawi się tylko komunikat "test1"
C. Nie zostanie wyświetlony żaden komunikat
D. Pojawi się jedynie komunikat "test2"
Skrypt w PHP definiuje klasę Owoc z dwoma metodami specjalnymi __construct() i __destruct(). Metoda __construct() jest automatycznie wywoływana podczas tworzenia instancji klasy. W tym wypadku, w momencie utworzenia obiektu $gruszka, zostanie wykonana metoda __construct(), która wyświetli napis test1. Następnie, gdy skrypt kończy działanie lub obiekt jest usuwany z pamięci, wywoływana jest metoda __destruct(). W tym przypadku, po zakończeniu skryptu, wywołana zostanie metoda __destruct(), która wyświetli napis test2. Metody konstruktorów i destruktorów są podstawą zarządzania cyklem życia obiektu w PHP, pozwalając na inicjalizację ustawień, jak również zwalnianie zasobów. Użycie ich jest kluczowe w projektowaniu obiektowo-zorientowanym, gdzie każda klasa może definiować własne sposoby obsługi zasobów. Praktyka ta wspiera modularność i utrzymanie kodu, co jest standardem w profesjonalnym programowaniu.

Pytanie 21

Aby zmienić wartość atrybutu elementu opisanego w CSS przy użyciu skryptu JavaScript, należy zastosować następujący zapis

A. document.getElementById(id).<nazwa właściwości> = <nowa wartość>
B. document.getElementById(id).<nazwa-atrybutu> = <nowa wartość>
C. document.getElementById(id).innerHTML = <nowa wartość>
D. document.getElementById(id).style.<nazwa właściwości> = <nowa wartość>
Odpowiedzi, które nie zawierają poprawnego odniesienia do właściwości style, wskazują na istotne nieporozumienia dotyczące manipulacji elementami DOM w JavaScript. Użycie document.getElementById(id).innerHTML = <nowa wartość>; nie jest odpowiednie do zmiany elementów stylu, ponieważ innerHTML służy do modyfikacji zawartości HTML wewnątrz elementu, a nie jego stylów. Zmiana zawartości może prowadzić do nadpisania istniejących elementów i wprowadzenia niezamierzonych skutków, takich jak utrata zdarzeń przypisanych do tych elementów. Kolejny błąd tkwi w użyciu document.getElementById(id).<nazwa właściwości> = <nowa wartość>; gdzie <nazwa właściwości> może odnosić się do atrybutów DOM, ale nie do właściwości stylu CSS. Na przykład, ustawienie document.getElementById(id).className = 'newClass'; zmieni klasę CSS elementu, ale nie bezpośrednio jego styl. Ostatnia propozycja, document.getElementById(id).<nazwa-atrybutu> = <nowa wartość>; jest również myląca, ponieważ nie odnosi się do modyfikacji stylów, lecz do manipulacji atrybutami HTML, co może prowadzić do nieprawidłowego działania strony. Zrozumienie zasadniczej różnicy między manipulowaniem treścią a stylem, a także umiejętność właściwego korzystania z DOM, są kluczowe dla skutecznego programowania w JavaScript.

Pytanie 22

Przedstawiona jest tabela pracownicy, w której umieszczono rekordy widoczne obok. Jaką wartość zwróci wykonanie umieszczonej w ramce kwerendy SQL?

SELECT MAX(pensja) FROM pracownicy WHERE pensja < 3000;
idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
A. 1300
B. 5400
C. 2200
D. 2600
Kwerenda SQL SELECT MAX(pensja) FROM pracownicy WHERE pensja < 3000; służy do znalezienia maksymalnej wartości w kolumnie pensja z rekordów spełniających warunek pensja mniejsza niż 3000. Przeszukując tabelę pracownicy widzimy że wartości spełniające ten warunek to 1300 2600 i 2200. Najwyższą z tych wartości jest 2600 co czyni tę odpowiedź poprawną. Zrozumienie tego typu kwerend SQL jest kluczowe w pracy z bazami danych ponieważ pozwala na wyciąganie konkretnych informacji z dużych zbiorów danych. W praktyce takie zapytania mogą być używane do analizowania danych pracowniczych w firmach gdzie na przykład chcemy zidentyfikować pracowników z wynagrodzeniem poniżej określonego progu. Jest to zgodne z dobrymi praktykami w branży gdzie używa się agregacji danych do celów analitycznych. Zrozumienie jak działa funkcja MAX() w połączeniu z klauzulą WHERE umożliwia efektywne filtrowanie i przetwarzanie danych co jest niezbędne w wielu aplikacjach biznesowych.

Pytanie 23

W sklepie internetowym wykorzystuje się tabelę faktura. W trakcie generowania faktury pole dataPlatnosci nie zawsze jest uzupełnione. Aby to skorygować, pod koniec dnia należy wprowadzić bieżącą datę do wierszy, gdzie to pole jest puste. W tym celu można wykorzystać kwerendę

A. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataPlatnosci IS NULL
B. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE dataPlatnosci IS NOT NULL
C. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE id = 3
D. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataplatnosci = '0000-00-00'
Niepoprawne odpowiedzi zawierają różne koncepcje, które prowadzą do błędnych wniosków. W pierwszej z nich zastosowano 'UPDATE faktury SET dataPlatnosci=CURTIME() WHERE id = 3;', co jest niewłaściwe, ponieważ ta kwerenda aktualizuje tylko jedną fakturę o identyfikatorze 3 i używa CURTIME(), co zwraca czas, a nie datę. W rezultacie, pole 'dataPlatnosci' pozostanie puste dla większości faktur. W innej odpowiedzi znalazła się kwerenda 'UPDATE faktury SET dataPlatnosci=CURTIME() WHERE dataPlatnosci IS NOT NULL;', co jest sprzeczne z założeniem, że aktualizować powinno się tylko te wpisy, gdzie pole jest puste. Kwerenda ta mogłaby zaktualizować datę tylko dla wierszy, które już zawierają datę płatności, co nie ma sensu. Ostatnia odpowiedź 'UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataplatnosci = '0000-00-00';' również nie jest skuteczna, ponieważ nie uwzględnia sytuacji, gdy pole 'dataPlatnosci' jest NULL. Zastosowanie wartości '0000-00-00' nie jest standardem w bazach danych, a operacje na takich wartościach mogą prowadzić do niejednoznaczności oraz problemów z integralnością danych. W kontekście programowania baz danych, istotne jest, aby stosować się do standardów, które umożliwiają zachowanie spójności i poprawności danych. Kwestie takie jak brak wartości NULL w kolumnach powinny być rozwiązywane w sposób systematyczny, aby uniknąć problemów w przyszłości.

Pytanie 24

W języku PHP zapisano fragment kodu. Plik cookie stworzony tym poleceniem

setcookie("osoba", "Anna Kowalska", time() + (3600 * 24));
A. zostanie usunięty po jednym dniu od jego utworzenia.
B. będzie przechowywany na serwerze przez jeden dzień.
C. zostanie usunięty po jednej godzinie od jego utworzenia.
D. będzie przechowywany na serwerze przez jedną godzinę.
Widzę, że pomyślałeś, że plik cookie będzie trzymany na serwerze. To nie tak, bo wszystkie pliki cookie są przechowywane na komputerze użytkownika, a nie na serwerze. Serwer tylko korzysta z tych cookies, żeby wiedzieć, kto jest użytkownikiem i jak zarządzać sesjami. Kolejna sprawa – niektórzy myślą, że cookie wygasa po godzinie. Ale to nieprawda, bo w PHP argument wygaszenia to 3600 * 24, czyli 86400 sekund, co daje jeden dzień, a nie tylko godzinę. Te nieporozumienia mogą wynikać z braku zrozumienia funkcji setcookie() i tego, jak działają pliki cookie w webowych aplikacjach. Dobrze jest to wiedzieć, by tworzyć lepsze i bezpieczniejsze aplikacje.

Pytanie 25

W systemie MySQL należy użyć polecenia REVOKE, aby odebrać użytkownikowi anna możliwość wprowadzania zmian tylko w definicji struktury bazy danych. Odpowiednie polecenie do zrealizowania tej operacji ma formę

A. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
D. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
Wszystkie inne odpowiedzi są nieprawidłowe z kilku powodów. W pierwszej z nich, 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'', przyznawane są wszystkie uprawnienia, co jest sprzeczne z intencją odebrania tylko określonych praw. Użytkownicy powinni być ograniczani jedynie w tych obszarach, gdzie to konieczne. Z kolei odpowiedź 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'' zawiera 'UPDATE', co jest związane z danymi, a nie strukturą bazy, co również czyni ją niewłaściwą. Odmowa praw do aktualizacji danych nie jest odpowiednia w kontekście modyfikacji struktury bazy. Z kolei opcja 'REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'' ponownie nie odnosi się do struktury bazy, ponieważ odnosi się do manipulacji danymi, nie do struktury. Kluczowym błędem w tym kontekście jest mylenie uprawnień związanych z danymi z uprawnieniami związanymi ze strukturą bazy danych. W zarządzaniu uprawnieniami w MySQL istotne jest zrozumienie różnicy pomiędzy tymi kategoriami, aby skutecznie zabezpieczyć bazę danych. W praktyce dobrym podejściem jest wdrożenie zasady minimalnych uprawnień, co zmniejsza ryzyko nieautoryzowanych zmian w strukturze i danych bazy.

Pytanie 26

Rezultatem działania zamieszczonej pętli napisanej w języku PHP jest wypisanie następujących liczb

Ilustracja do pytania
A. od 10 do 2
B. od 2 do 10
C. od 10 do 1
D. od 1 do 10
Pętla for w języku PHP umożliwia iteracyjne wykonywanie kodu w określonym zakresie wartości. W analizowanym przypadku pętla rozpoczyna się od wartości $i = 10, a kończy się, gdy $i jest większe lub równe 1, co oznacza że pętla iteruje w kierunku malejącym. Wybranie odpowiedzi od 10 do 2 lub od 1 do 10 świadczy o braku zrozumienia działania warunku i kroku iteracyjnego. W pętli z dekrementacją, jak $i--, zmniejszamy wartość zmiennej w każdej iteracji. Niezrozumienie tego mechanizmu często prowadzi do błędnych odpowiedzi. W przypadku innych wyborów odpowiedzi można wnioskować że warunek zakończenia pętli został błędnie zinterpretowany, co wskazuje na brak uwagi przy analizie kodu. Typowym błędem w takich przypadkach jest założenie że pętla działała jak typowa iteracja w przód, co nie jest prawdą w tym kontekście. Dla programistów ważne jest zrozumienie, jak każda część pętli wpływa na wykonanie programu, co pozwala unikać problemów w kodzie związanych z nieoczekiwanym zakończeniem pętli lub błędnym wykonywaniem iteracji. Takie zrozumienie jest kluczowe w tworzeniu efektywnych i niezawodnych aplikacji.

Pytanie 27

W HTML znacznik tekst będzie wyświetlany przez przeglądarkę w taki sam sposób jak znacznik

A. <h1>tekst</h1>
B. <big>tekst</big>
C. <sub>tekst</sub>
D. <b>tekst</b>
Znacznik <strong> jest używany w HTML do oznaczania tekstu, który ma być wyróżniony ze względu na jego ważność. Jest to związane z semantyką dokumentu. Chociaż <strong> i <b> wyświetlają tekst w podobny sposób (zazwyczaj pogrubiony), mają inne znaczenie. Znacznik <b> jest używany do czysto wizualnego wyróżnienia, bez przypisywania wartości semantycznej. Dlatego, gdy używamy <strong>, nie tylko zmieniamy wygląd tekstu, lecz także informujemy przeglądarkę i dostępne technologie, że ten element ma szczególne znaczenie. Przykładem praktycznego zastosowania <strong> może być wyróżnienie kluczowych informacji w artykule, co wpływa na zrozumienie treści przez użytkowników oraz poprawia dostępność strony. Warto pamiętać, że stosowanie odpowiednich znaczników zgodnie z ich przeznaczeniem jest zgodne z zasadami HTML5 i poprawia SEO, ponieważ wyszukiwarki lepiej rozumieją kontekst strony, co jest kluczowe dla jej indeksacji.

Pytanie 28

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. tr:active { background-color: Pink; }
B. tr:hover { background-color: Pink; }
C. td, th { 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 29

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

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

Pytanie 30

W językach programowania o strukturze, aby przechować dane dotyczące 50 uczniów (ich imion, nazwisk i średniej ocen), należy zastosować

A. klasę 50 elementów typu tablicowego
B. tablicę 50 elementów o składowych strukturalnych
C. tablicę 50 elementów o składowych typu łańcuchowego
D. strukturę 50 elementów o składowych typu tablicowego
Tablica 50 elementów o składowych łańcuchowych nie jest odpowiednim wyborem w tym kontekście, ponieważ łańcuchy znaków są jednowymiarowymi tablicami znaków, które nie są w stanie przechować złożonych informacji, takich jak imię, nazwisko i średnia ocen w jednej jednostce. W takiej strukturze musielibyśmy stworzyć oddzielne tablice dla każdego z tych pól, co prowadziłoby do problemów z zarządzaniem danymi oraz ich synchronizacją. Z kolei tablica 50 elementów o składowych tablicowych również nie jest rozwiązaniem optymalnym, ponieważ tablice tablicowe wprowadzają dodatkową złożoność i utrudniają dostęp do konkretnych informacji o uczniach. Zamiast tego, lepszym podejściem byłoby użycie tablicy struktur, jak wcześniej opisano, co pozwala na prostsze zarządzanie danymi. Klasa 50 elementów typu tablicowego, z drugiej strony, sugeruje użycie obiektowego podejścia, które, chociaż jest stosowane w językach obiektowych, może być nieodpowiednie w kontekście prostych danych uczniów. Klasy mogą wprowadzać dodatkowe złożoności, takie jak dziedziczenie czy polimorfizm, które w tym przypadku nie są konieczne. Dla prostego przechowywania danych o uczniach, użycie struktur jest znacznie bardziej efektywne.

Pytanie 31

Metainformacja "Description" zawarta w pliku HTML powinna zawierać ``` ```

A. opis zawartości strony
B. listę kluczowych fraz używanych przez wyszukiwarki internetowe
C. nazwę aplikacji, w której stworzono stronę
D. informację o autorze strony
Metainformacja 'Description' zawarta w pliku HTML pełni kluczową rolę w optymalizacji stron internetowych pod kątem wyszukiwarek. Jest to krótki opis treści strony, który pomaga wyszukiwarkom zrozumieć, o czym jest dana strona. Wartościowy opis powinien być zwięzły, informacyjny i zachęcający do kliknięcia, ponieważ często pojawia się w wynikach wyszukiwania jako fragment tekstu, obok tytułu strony. Przykładem dobrze skonstruowanego opisu może być 'Dowiedz się, jak skutecznie zarządzać swoimi finansami osobistymi dzięki naszym praktycznym poradnikom i wskazówkom'. Taki opis nie tylko informuje użytkownika o zawartości strony, ale również zawiera słowa kluczowe, które mogą przyciągnąć uwagę. Zgodnie z wytycznymi Google, długość opisu powinna wynosić od 150 do 160 znaków, aby uniknąć obcięcia tekstu w wynikach wyszukiwania. Posiadanie dobrze napisanej metainformacji 'Description' jest więc niezbędne dla skutecznej strategii SEO i zwiększenia widoczności strony w internecie.

Pytanie 32

Która z poniższych definicji funkcji w języku C++ przyjmuje argument typu rzeczywistego i zwraca wynik typu całkowitego?

A. void fun1(int a);
B. float fun1(void a);
C. int fun1(float a);
D. float fun1(int a);
Kiedy deklaracje funkcji nie są zgodne z wymaganiami co do parametrów i typów zwracanych, to może być kłopot. Na przykład, 'void fun1(int a);' nie zwraca nic, a to w kontekście pytania nie działa. Mamy też 'float fun1(int a);', która przyjmuje liczbę całkowitą, ale zwraca zmiennoprzecinkową, co też jest nie to, co nam potrzebne. A 'float fun1(void a);' to już totalne nieporozumienie, bo 'void' jako typ parametru to nieporozumienie. Musi być jasno określony typ dla każdego parametru. Jak widać, te błędy pokazują, jak istotne jest rozumienie typów danych w C++, bo jeśli coś się pomyli, to mogą być błędy w kompilacji albo w trakcie działania programu. W praktyce to oznacza, że programiści muszą naprawdę zwracać uwagę na definicje funkcji, żeby mieć pewność, że parametry i typy zwracane są zgodne z tym, co chcemy osiągnąć. Zrozumienie tych zasad to podstawa, żeby tworzyć łatwy do utrzymania kod.

Pytanie 33

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

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

Pytanie 34

Polecenie GRANT w języku SQL służy do

A. umieszczania nowych danych w bazie.
B. aktualizacji istniejących danych w bazie.
C. nadawania użytkownikom praw do obiektów.
D. odbierania użytkownikom praw do obiektów.
Poprawnie – polecenie GRANT w SQL służy właśnie do nadawania użytkownikom praw do obiektów w bazie danych. W praktyce GRANT jest jednym z kluczowych narzędzi mechanizmu kontroli dostępu, czyli tzw. autoryzacji. Najpierw ktoś łączy się z bazą (to jest uwierzytelnianie – login/hasło, certyfikat itd.), a dopiero potem baza sprawdza, jakie uprawnienia ma ten użytkownik. I tu wchodzi GRANT. Administrator lub właściciel obiektu może przyznać użytkownikowi np. prawo SELECT do tabeli `klienci`, prawo INSERT do tabeli `zamowienia`, albo prawo EXECUTE do procedury składowanej. Składnia jest dość prosta, np.: `GRANT SELECT, INSERT ON klienci TO jan;`. W większości systemów (np. PostgreSQL, Oracle, MySQL/MariaDB, SQL Server) idea jest podobna, różnią się tylko szczegóły i nazwy ról czy typów uprawnień. W dobrych praktykach bezpieczeństwa nie daje się użytkownikom uprawnień typu „wszystko na wszystkim”, tylko dokładnie to, czego potrzebują (tzw. zasada najmniejszych uprawnień – least privilege). Moim zdaniem warto już na etapie nauki SQL odróżniać polecenia do pracy na danych (SELECT, INSERT, UPDATE, DELETE) od poleceń do zarządzania uprawnieniami, takich jak GRANT i REVOKE. W codziennej pracy administratora baz, programisty backendu czy nawet osoby od DevOps, GRANT pojawia się bardzo często: przy tworzeniu nowych kont aplikacyjnych, przy separacji środowisk (dev/test/prod), przy ograniczaniu dostępu do wrażliwych tabel, np. z danymi osobowymi. Dobre zrozumienie GRANT pomaga też szybko diagnozować błędy typu „permission denied” i świadomie projektować politykę bezpieczeństwa w systemie.

Pytanie 35

Który semantyczny znacznik języka HTML 5 może wystąpić tylko raz na stronie?

A. <header>
B. <article>
C. <main>
D. <section>
Poprawna odpowiedź to <main>, bo zgodnie ze specyfikacją HTML5 ten znacznik powinien pojawić się w dokumencie najwyżej raz. Element <main> reprezentuje główną, unikalną treść strony, czyli to, co jest najważniejsze dla konkretnego adresu URL. Przeglądarki, czytniki ekranu i inne narzędzia asystujące zakładają, że istnieje jedno główne miejsce, do którego użytkownik może szybko „przeskoczyć”, omijając nagłówek, menu czy stopkę. Dlatego pojedynczy <main> ma duże znaczenie dla dostępności (a11y) i użyteczności serwisu. W praktyce dobrym wzorcem jest struktura: <header> na górę, poniżej <nav> (jeśli jest), potem jeden <main>, a w nim np. <article>, <section>, <aside>, a na końcu <footer>. Wewnątrz <main> możesz mieć kilka artykułów, sekcji, nawet różne widoki aplikacji SPA, ale sam <main> jest tylko jeden. Moim zdaniem warto od początku wyrabiać sobie nawyk: dokładnie jeden <main> na stronę i absolutnie nie zagnieżdżać go wewnątrz <header>, <footer> czy <article>. To jest też zgodne z dobrymi praktykami SEO – wyszukiwarki łatwiej rozumieją, co jest esencją danej podstrony. Dodatkowo, wiele frameworków front‑endowych i systemów CMS zakłada w layoutach pojedynczy kontener na treść główną, który semantycznie powinien być właśnie <main>, a nie np. zwykłym <div id="content">. Taka semantyka sprawia, że kod wygląda czyściej, jest bardziej przyszłościowy i po prostu profesjonalny.

Pytanie 36

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

A. MP4, Ogg, WebM
B. Ogg, AVI, MPEG
C. Ogg, QuickTime
D. MP4, AVI
Wybór odpowiedzi takiej jak MP4, AVI, nie uwzględnia faktu, że format AVI nie jest obsługiwany przez HTML5. AVI to starszy format kontenera, który wymaga zainstalowanych kodeków, co czyni go mniej przydatnym w kontekście nowoczesnych aplikacji webowych, które stawiają na zgodność i łatwość użycia. Podobnie, wybór Ogg, QuickTime również jest błędny, ponieważ format QuickTime, choć popularny, nie jest częścią standardu HTML5 i wymaga korzystania z dodatkowych wtyczek lub komponentów w przeglądarkach, co nie sprzyja wydajności ani wygodzie użytkowników. W przypadku Ogg, choć jest to format otwarty, jego zastosowanie w praktyce jest ograniczone w porównaniu z MP4 czy WebM. Również zestawienie Ogg, AVI, MPEG jest mylące, ponieważ MPEG to bardziej ogólne określenie dla różnych standardów kompresji wideo, a nie konkretny format pliku. Współczesne praktyki programistyczne i standardy internetowe preferują formaty, które są natywnie wspierane przez przeglądarki, a te, które wymagają dodatkowych wtyczek lub nie są powszechnie używane, są odrzucane. Zrozumienie, które formaty są zgodne z HTML5, jest kluczowe dla zapewnienia optymalnych doświadczeń użytkownika.

Pytanie 37

W modelu kolorów RGB kolor żółty powstaje z połączenia zielonego i czerwonego. Który kod szesnastkowy przedstawia kolor żółty?

A. #00FFFF
B. #FF00FF
C. #F0F0F0
D. #FFFF00
Pierwszy z kodów szesnastkowych, który zawiera #FF00FF, reprezentuje kolor magenta. Magenta powstaje z połączenia pełnego czerwonego i niebieskiego, przy zerowej intensywności zielonego, co sprawia, że nie jest to kolor żółty. Z kolei kod #00FFFF to kolor cyjan, który uzyskuje się z połączenia pełnego zielonego i niebieskiego, co również nie prowadzi do uzyskania żółtego. Ostatni z kodów, #F0F0F0, to odcień szarości o wysokiej jasności, co oznacza, że jego składowe RGB są prawie równe, ale zdecydowanie nie są odpowiednie dla uzyskania koloru żółtego. Warto zauważyć, że korzystając z tych kodów w projektach graficznych, można łatwo pomylić się, jeśli nie zrozumie się, jak poszczególne kolory są tworzone z podstawowych składowych RGB. Zrozumienie tego systemu kolorów jest kluczowe dla każdego, kto projektuje w cyfrowym środowisku, ponieważ różne kolory mają różne zastosowania i znaczenia, które mogą wpływać na odbiór wizualny projektu.

Pytanie 38

Według którego parametru oraz dla ilu tabel zostaną zwrócone wiersze na liście w wyniku przedstawionego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis WHERE
  producent.nr_id = hurtownia.nr_id AND
  producent.wyrob_id = serwis.wyrob_id AND
  hurtownia.nr_id = sklep.nr_id AND
  sklep.nr_id = serwis.nr_id AND
  producent.nr_id = 1;
A. Według parametru nr id wyłącznie dla trzech tabel.
B. Według parametru nr id dla wszystkich tabel.
C. Według parametru wyrób id dla wszystkich tabel.
D. Według parametru wyrób Jd wyłącznie dla trzech tabel.
Wybrana odpowiedź jest niepoprawna. Wszystkie tabelki są łączone przez wartość kolumny nr id, a nie konkretnie przez 'wyrób id' lub 'wyrób Jd'. Ważne jest, aby pamiętać, że zapytanie SQL odnosi się do wszystkich tabel, a nie tylko do trzech. W niektórych odpowiedziach może wystąpić błąd, polegający na myśleniu, że zapytanie dotyczy tylko trzech tabel, podczas gdy w rzeczywistości dotyczy ono czterech: producent, hurtownia, sklep i serwis. Ponadto, zrozumienie, jakie konkretne parametry są używane do zwracania wierszy, jest kluczowe dla zrozumienia, jak działa zapytanie. Zrozumienie tego, jakie parametry są używane w zapytaniu SQL, jest kluczowe dla zrozumienia, jakie dane są zwracane i dlaczego. Niewłaściwe zrozumienie tego, jakie parametry są używane w zapytaniu, może prowadzić do niewłaściwego zrozumienia, jakie dane są zwracane i dlaczego. Pamiętaj, że idealnym celem jest nie tylko zrozumienie, jak działa zapytanie, ale także zrozumienie, dlaczego zwraca konkretne dane i jak te dane są związane z naszymi potrzebami programistycznymi.

Pytanie 39

Grafika, która ma być umieszczona na stronie, powinna mieć przezroczyste tło. Jakim formatem graficznym powinien być zapisany taki plik?

A. JPEG
B. BMP
C. PNG
D. CDR
Wybór formatu graficznego może istotnie wpływać na jakość oraz funkcjonalność obrazów w różnych zastosowaniach. CDR, czyli format plików CorelDRAW, jest używany głównie w projektowaniu wektorowym i nie jest powszechnie stosowany w kontekście wyświetlania obrazów w internecie. Pliki CDR mogą zawierać różnorodne elementy graficzne, ale nie są optymalizowane pod kątem przezroczystości tła w kontekście sieci. Z kolei BMP to format bitmapowy, który charakteryzuje się dużymi rozmiarami plików oraz brakiem kompresji, co sprawia, że nie jest efektywny w zastosowaniach internetowych, gdzie szybkość ładowania i optymalizacja są kluczowe. Format JPEG, mimo że jest powszechnie stosowany do fotografii ze względu na efektywną kompresję, nie obsługuje przezroczystości i wprowadza niepożądane artefakty, co czyni go niewłaściwym wyborem dla obrazów z transparentnym tłem. Wybierając format graficzny, warto kierować się nie tylko estetyką, ale również technicznymi wymaganiami, jakie stawia konkretne zastosowanie. Zrozumienie różnic między formatami i ich zastosowaniem jest kluczowe, aby uniknąć problemów związanych z jakością i funkcjonalnością wyświetlanych obrazów.

Pytanie 40

Jaką wartość przyjmie zmienna po wykonaniu poniższego fragmentu kodu w JavaScript?

var w=0;
var i=1;
for (i = 1; i < 50; i++)
{
    if (i%2 == 0)
        w += i;
}
A. suma wszystkich naturalnych liczb nieparzystych, które są większe od 50
B. liczbie naturalnych liczb parzystych większych od 50
C. liczbom naturalnym, które są nieparzyste i mniejsze od 50
D. suma naturalnych liczb parzystych, które są mniejsze od 50
Kod przedstawiony w pytaniu jest fragmentem programu JavaScript, który ma za zadanie zsumować wszystkie liczby parzyste mniejsze od 50. Początkowo zmienna w jest ustawiona na 0 i reprezentuje sumę, którą będziemy obliczać. Pętla for zaczyna się od i=1 i iteruje do i<50 zwiększając wartość i o 1 w każdej iteracji. Wewnątrz pętli znajduje się instrukcja warunkowa if, która sprawdza, czy liczba i jest parzysta, co oznacza, że jej reszta z dzielenia przez 2 wynosi 0. Jeśli warunek jest spełniony, liczba i jest dodawana do zmiennej w. W efekcie po zakończeniu pętli zmienna w zawiera sumę wszystkich parzystych liczb mniejszych niż 50. Przykładem praktycznego zastosowania takiego algorytmu może być sytuacja, w której musimy szybko obliczyć sumę określonego zbioru liczb spełniających dane kryterium, co jest częste w analizie danych lub generowaniu raportów. Konstrukcje takie jak pętla for i operator modulo są podstawowymi narzędziami w programowaniu, pozwalającymi na efektywne przetwarzanie danych i automatyzację złożonych operacji obliczeniowych, co jest zgodne z dobrymi praktykami w branży IT.