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: 27 kwietnia 2026 18:21
  • Data zakończenia: 27 kwietnia 2026 19:04

Egzamin zdany!

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

Która wartość tekstowa nie pasuje do podanego w ramce wzorca wyrażenia regularnego?

(([A-ZŁŻ][a-ząęóżźćńłś]{2,})(-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?)
A. Jelenia Góra
B. Kowalski
C. Nowakowska-Kowalska
D. Kasprowicza
Wszystkie pozostałe wartości tekstowe, takie jak Kowalski, Kasprowicza oraz Nowakowska-Kowalska, spełniają wymagania określone przez wzorzec wyrażenia regularnego. Kowalski to przykład pojedynczego nazwiska, które zaczyna się od dużej litery oraz zawiera wystarczającą liczbę małych liter, co czyni je poprawnym. Kasprowicza również jest poprawne, gdyż zawiera dużą literę na początku, a następnie dwa znaki małe, co jest zgodne z wymaganiami. Dodatkowo, oba nazwiska nie zawierają spacji ani innych znaków, które mogłyby zakłócić strukturę wyrażenia regularnego. Nowakowska-Kowalska jest przykładem podwójnego nazwiska, które jest również zgodne z wzorcem, ponieważ składa się z dwóch części, oddzielonych znakiem '-' i każda z nich zaczyna się od dużej litery, a następnie zawiera co najmniej dwa znaki małe. Obie części nazwiska spełniają wymagania dotyczące polskich znaków diakrytycznych oraz ilości liter, dlatego są one uznawane za poprawne. W związku z tym, nieprawidłowa odpowiedź 'Jelenia Góra' wyróżnia się jako jedyna, która narusza zasady ustalone przez wzorzec.

Pytanie 2

Dodanie do tabeli Produkty kolumny data_produkcji zostanie wykonane kwerendą SQL

A. ALTER TABLE Produkty DROP COLUMN data_produkcji DATE;
B. ALTER TABLE Produkty ADD DATE data_produkcji;
C. ALTER TABLE Produkty ADD data_produkcji DATE;
D. ALTER TABLE Produkty DROP data_produkcji DATE;
Prawidłowa odpowiedź wykorzystuje dokładną składnię polecenia ALTER TABLE, którą stosuje się w SQL do modyfikowania struktury istniejącej tabeli. Instrukcja `ALTER TABLE Produkty ADD data_produkcji DATE;` robi dwie kluczowe rzeczy: wskazuje tabelę, którą zmieniamy (`Produkty`) oraz dodaje nową kolumnę (`data_produkcji`) z określonym typem danych (`DATE`). Taka forma jest zgodna z typową składnią w popularnych systemach bazodanowych, jak MySQL, PostgreSQL, SQL Server czy Oracle (choć drobne różnice składniowe mogą się pojawiać w innych, bardziej egzotycznych systemach). W praktyce oznacza to, że po wykonaniu tej komendy tabela zyska nową kolumnę, w której można przechowywać datę produkcji każdego produktu. Typ `DATE` służy do przechowywania samej daty (rok, miesiąc, dzień), bez czasu. To jest dobre rozwiązanie, jeśli interesuje nas tylko kiedy produkt został wyprodukowany, a nie konkretna godzina. W wielu projektach w technikum czy w pracy zawodowej taka kolumna przydaje się np. do wyliczania terminu przydatności, raportów wiekowania towaru, filtrowania produktów po dacie produkcji, a nawet do prostych analiz, kiedy dana partia była wytwarzana. Moim zdaniem warto od razu kojarzyć sobie taką komendę z dobrymi praktykami modelowania danych: nazwa kolumny powinna być czytelna i jednoznaczna (tutaj `data_produkcji` bardzo dobrze opisuje zawartość), typ danych powinien być możliwie najbardziej dopasowany do przechowywanej informacji (tu `DATE`, a nie np. `VARCHAR`), a zmiany struktury tabeli trzeba wykonywać świadomie, najlepiej mając kopię zapasową bazy lub przynajmniej danej tabeli. W realnych systemach produkcyjnych często dodaje się też ograniczenia, np. `NOT NULL` albo domyślną wartość, na przykład: `ALTER TABLE Produkty ADD data_produkcji DATE NOT NULL DEFAULT CURRENT_DATE;` W testach i nauce zaczyna się jednak od prostszej wersji, takiej jak w tym pytaniu, żeby dobrze zapamiętać podstawowy schemat: `ALTER TABLE <nazwa_tabeli> ADD <nazwa_kolumny> <typ_danych>;`.

Pytanie 3

Tabele Osoby oraz Zainteresowania są połączone relacją jeden do wielu. Jakie zapytanie SQL należy użyć, aby w oparciu o tę relację poprawnie wyświetlić imiona i odpowiadające im hobby?

Ilustracja do pytania
A. SELECT imie, hobby FROM Osoby, Zainteresowania;
B. SELECT imie, hobby FROM Osoby, Zainteresowania WHERE Osoby.id = Zainteresowania.id;
C. SELECT imie, hobby FROM Osoby.Zainteresowania_id = Zainteresowania.id FROM Osoby, Zainteresowania;
D. SELECT imie, hobby FROM Osoby JOIN Zainteresowania ON Osoby.Zainteresowania_id = Zainteresowania.id;
Wiele osób mylnie uważa, że można łączyć tabele w SQL bez wyraźnego określenia relacji między nimi. Jednak takie podejście, jak w odpowiedzi numer 2 i 3, prowadzi do niepoprawnych wyników, ponieważ nie definiujemy, w jaki sposób dane z tych tabel mają być łączone. To może skutkować produkcją tzw. iloczynu kartezjańskiego, gdzie każda kolumna z pierwszej tabeli jest łączona z każdą kolumną z drugiej tabeli. W kontekście dużych baz danych takie podejście nie jest skalowalne i powoduje niepotrzebne obciążenie systemu. Odpowiedź numer 4 zakłada istnienie bezpośredniego połączenia między kolumną Osoby.id a Zainteresowania.id, co jest błędnym założeniem, gdyż w analizowanym przypadku tabele są połączone poprzez kolumny Osoby.Zainteresowania_id i Zainteresowania.id. Niepoprawne rozumienie struktury bazy danych prowadzi do błędnych przekonań o relacjach między danymi. Ważne jest, aby zawsze zwracać uwagę na klucze obce, które definiują rzeczywiste połączenia w modelu danych. Dokładne zrozumienie struktury i logiki relacyjnych baz danych jest kluczowe dla pisania efektywnych i poprawnych zapytań SQL. Umiejętność prawidłowego łączenia tabel stanowi fundament dla tworzenia zaawansowanych zapytań, które są niezbędne w profesjonalnym zarządzaniu bazami danych.

Pytanie 4

W języku JavaScript obiekt typu array jest wykorzystywany do przechowywania

A. wielu wartości dowolnego typu.
B. wielu wartości lub funkcji.
C. wielu wartości wyłącznie tekstowych.
D. wielu wartości wyłącznie liczbowych.
Wybierając odpowiedzi, które ograniczają typy danych do tylko jednej kategorii, można zauważyć, że są one niepoprawne. Obiekty typu array w JavaScript mogą przechowywać wartości dowolnego rodzaju, co wyklucza te odpowiedzi. Niepoprawna jest idea przechowywania tylko wielu wartości lub funkcji, ponieważ tablice są znacznie bardziej wszechstronne. Funkcje mogą być jedynie jednym z elementów tablicy, ale nie definiują jej głównej funkcji. Przechowywanie tylko wielu wartości wyłącznie liczbowych jest również błędne, ponieważ tablica może zawierać różnorodne typy danych, nie tylko liczby. Tak samo, ograniczenie do wartości wyłącznie tekstowych jest mylące, gdyż tablica może przechowywać obiekty, inne tablice oraz liczby. Przykładowo, w tablicy można mieć mieszankę różnych typów danych takich jak: let mixedArray = [1, 'tekst', true, {key: 'value'}, [5, 6, 7]]; co pokazuje, że tablice są zdolne do przechowywania różnorodnych informacji. W związku z tym, ograniczenie do pojedynczych typów danych nie oddaje w pełni potencjału, jaki oferują tablice w JavaScript, co jest kluczowe dla ich użyteczności w programowaniu.

Pytanie 5

Jakiego elementu HTML należy użyć, aby uzyskać tekst z czcionką o stałej szerokości znaku, w którym uwzględnione są dodatkowe spacje, tabulacje oraz znaki końca linii?

A. <blockquote> ... </blockquote>
B. <ins> ... </ins>
C. <code> ... </code>
D. <pre> ... </pre>
Znacznik <ins> jest używany do oznaczania wstawionego tekstu, co jest przydatne w kontekście edytowania dokumentów lub zaznaczania nowego contentu. Nie wpływa on na formatowanie tekstu w sposób, który zachowałby dodatkowe spacje, tabulacje czy znaki końca linii. Jego głównym celem jest wskazanie na zmiany, a nie prezentacja tekstu w formacie preformatowanym. Znacznik <code> służy do wyświetlania fragmentów kodu, ale nie zachowuje on spacji i nowej linii w taki sposób, jak znaczniki preformatowane. Jest to bardziej semantyczny znacznik, który wskazuje, że zawarty tekst jest kodem, ale nie jest przeznaczony do zachowania struktury tekstu. Z kolei <blockquote> jest używany do cytowania dłuższych fragmentów tekstu, najczęściej z innych źródeł. Również nie zachowuje on formatowania tekstu w sposób, który by uwzględniał dodatkowe białe znaki, a jego główną funkcją jest wyróżnienie cytowanych treści. W kontekście prezentacji tekstu wymagającego precyzyjnego formatowania i zachowania wszystkich spacji, znaczników <ins>, <code> oraz <blockquote> są niewłaściwymi wyborami.

Pytanie 6

Jaką wartość w systemie RGB uzyskamy dla koloru zapisanego w kodzie heksadecymalnym: #1510FE?

A. rgb(15,10,FE)
B. rgb(21,16,255)
C. rgb(21,16,FE)
D. rgb(21,16,254)
Odpowiedź rgb(21,16,254) jest poprawna, ponieważ kolor zapisany w systemie heksadecymalnym #1510FE można rozłożyć na składowe RGB. W kodzie heksadecymalnym każdy z trzech kolorów (czerwony, zielony, niebieski) jest reprezentowany przez dwie cyfry. W przypadku #1510FE, pierwsze dwie cyfry (15) odnoszą się do wartości czerwonej, drugie dwie (10) do wartości zielonej, a ostatnie dwie (FE) do wartości niebieskiej. Te wartości musimy przeliczyć na system dziesiętny: czerwony to 21 (15 w systemie szesnastkowym to 21 w dziesiętnym), zielony to 16 (10 w szesnastkowym to 16 w dziesiętnym), a niebieski to 254 (FE w szesnastkowym to 254 w dziesiętnym). Tak więc końcowy wynik to rgb(21,16,254). W praktyce, znajomość konwersji kolorów jest kluczowa w projektowaniu graficznym, stron internetowych oraz aplikacji, gdzie precyzyjne odwzorowanie kolorów jest niezbędne dla uzyskania poprawnej estetyki i spójności wizualnej. Warto zaznaczyć, że standardy takie jak sRGB są powszechnie stosowane do definiowania kolorów w cyfrowych mediach, co zapewnia zgodność i przewidywalność w różnych urządzeniach wyświetlających te kolory.

Pytanie 7

Najprostszy sposób przekształcenia obiektu oznaczonego cyfrą 1 w obiekt oznaczony cyfrą 2 to

Ilustracja do pytania
A. zmiana warstwy obiektu
B. narysowanie docelowego obiektu
C. animowanie obiektu
D. geometryczne transformowanie obiektu
Geometria transformacji to niezwykle ważne pojęcie w dziedzinie grafiki komputerowej i projektowania. Polega na zmianie kształtu obiektu za pomocą operacji takich jak skalowanie, obracanie, przesuwanie czy odkształcanie. W kontekście pytania, geometria transformacji umożliwia przekształcenie obiektu oznaczonego cyfrą 1 w obiekt oznaczony cyfrą 2 poprzez zmianę jego kształtu i wielkości. Praktyczne zastosowanie transformacji geometrycznych obejmuje m.in. skalowanie w celu dostosowania rozmiarów obiektów do różnych nośników lub kontekstu wyświetlania. Obracanie jest używane do orientacji obiektów w przestrzeni, co jest niezwykle przydatne w modelowaniu 3D czy animacjach. Dobre praktyki projektowania graficznego zalecają korzystanie z transformacji geometrycznych, aby uzyskać spójną i estetyczną kompozycję. Standardy branżowe często definiują konkretne algorytmy i formaty danych dla transformacji, jak na przykład macierze przekształceń w grafice trójwymiarowej. Zrozumienie i umiejętne zastosowanie tych pojęć pozwala na efektywne tworzenie złożonych struktur wizualnych oraz interaktywnych aplikacji.

Pytanie 8

Jak można w języku CSS ustawić kolor czerwony dla tekstu?

A. text-color: rgb(255,0,0);
B. color: rgb(#FF0000);
C. text-color: rgb(#FF0000);
D. color: rgb(255,0,0);
Dobra robota! Odpowiedź 'color: rgb(255,0,0);' jest na pewno trafna. Używasz tu poprawnej składni CSS do ustawiania koloru tekstu. Wartość 'rgb(255,0,0)' daje nam mocny, intensywny czerwony kolor, a składniki RGB, czyli czerwony, zielony i niebieski, są liczone od 0 do 255. To, co robi ta funkcja, jest zgodne z dobrymi praktykami w stylizacji stron, więc naprawdę dobrze to ogarnąłeś. Przykładowo, możesz to zastosować w praktyce w pliku CSS, pisząc coś takiego jak 'h1 { color: rgb(255,0,0); }', co zmieni kolor nagłówków na czerwony. Oczywiście są też inne sposoby na podawanie kolorów, jak HEX ('#FF0000') czy HSL, ale RGB jest bardzo uniwersalne i proste do zrozumienia. Ważne też, żeby zwracać uwagę na dostępność, bo kontrastowe kolory, jak czerwony na białym tle, mogą naprawdę poprawić czytelność tekstu. To istotny element, gdy projektujemy UX.

Pytanie 9

Jakie prawa: CREATE, ALTER, DROP zostały użyte w poleceniu GRANT?

A. pracy ze strukturą
B. pobierania danych z bazy
C. przyznawania uprawnień innym użytkownikom
D. pracy z danymi
Analiza pozostałych odpowiedzi prowadzi do nieporozumień związanych z różnymi rodzajami uprawnień w systemach baz danych. Manipulowanie danymi odnosi się głównie do operacji takich jak SELECT, INSERT, UPDATE i DELETE, które są używane do odczytywania i zmieniania danych przechowywanych w tabelach. Zestaw praw użyty w poleceniu GRANT nie obejmuje tych operacji, co czyni tę odpowiedź niewłaściwą. W przypadku wybierania informacji z bazy danych, odpowiednie prawa to SELECT, które nie mają związku z manipulowaniem strukturą. Ponadto, nadawanie praw innym użytkownikom jest związane z używaniem polecenia GRANT, ale nie odnosi się bezpośrednio do zestawu praw CREATE, ALTER i DROP. To ważne, aby zrozumieć, że każdy z tych typów uprawnień ma swoje specyficzne zastosowanie i nie mogą być mylone. W praktyce, administratorzy baz danych muszą wiedzieć, które uprawnienia są niezbędne dla użytkowników, aby zrealizować konkretne zadania, a błędne przypisanie uprawnień może prowadzić do poważnych problemów bezpieczeństwa i integralności danych. Takie myślenie o uprawnieniach wymaga zrozumienia ich różnorodności i kontekstu ich zastosowania w architekturze bazy danych.

Pytanie 10

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

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

Pytanie 11

Po wykonaniu przedstawionego kodu PHP, w zmiennej $napis zostaje zapisany ciąg znaków.

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. og
B. ogram
C. gramo
D. gr
W podanym kodzie PHP używana jest funkcja substr() która służy do wycinania fragmentu ciągu znaków. W tym przypadku mamy ciąg znaków 'Programowanie w PHP'. Funkcja substr() przyjmuje trzy argumenty: pierwszy to ciąg znaków drugi to pozycja startowa trzecia to długość wycinka. Pozycje w ciągu znaków w PHP zaczynają się od zera dlatego pozycja startowa 3 oznacza czwarty znak w ciągu co w przypadku 'Programowanie w PHP' odpowiada literze 'g'. Trzeci argument 5 oznacza że wycinamy pięć znaków zaczynając od pozycji 3. Stąd funkcja zwróci napis 'gramo'. Znajomość funkcji substr() jest przydatna w różnych sytuacjach na przykład podczas formatowania danych wejściowych lub wyodrębniania części łańcucha takich jak numery telefonów czy kody pocztowe. Ważne jest aby pamiętać że indeksowanie zaczyna się od zera co jest kluczowe przy używaniu tej funkcji. Dobre praktyki w programowaniu zalecają również traktowanie długości wycinka jako parametru opcjonalnego co umożliwia wycięcie do końca łańcucha.

Pytanie 12

Który z poniższych kodów HTML najlepiej ilustruje opisaną tabelę? (Obramowanie tabeli oraz komórek zostało pominięte dla uproszczenia)

Ilustracja do pytania
A. Odpowiedź D
B. Odpowiedź A
C. Odpowiedź B
D. Odpowiedź C
Pozostałe opcje zawierają błędy w użyciu atrybutów colspan i rowspan co prowadzi do nieprawidłowego odwzorowania struktury tabeli. W opcji A dane są przedstawione bez użycia rowspan co powoduje że każda informacja znajdowałaby się w osobnym wierszu nie łącząc kolumny Telefony co jest sprzeczne z przedstawionym stylem w pytaniu. To może prowadzić do dezorganizacji danych i braku przejrzystości. W przypadku opcji C zastosowanie colspan na ostatniej komórce jest błędne ponieważ rozszerza komórkę na dwie kolumny co nie jest zgodne z prezentowaną strukturą gdzie dane są ułożone w dwóch wierszach pod jednym nagłówkiem. Opcja D również błędnie używa colspan przy nagłówku Telefony co powoduje że dane nie są przedstawiane w logicznym układzie ukazującym że jedna kolumna powinna obejmować dwie komórki z telefonami. Takie błędy w strukturze tabeli mogą prowadzić do problemów z użytecznością i dostępnością strony internetowej ponieważ użytkownicy mogą mieć trudności z odnalezieniem i zrozumieniem prezentowanych informacji. Problemem jest również brak semantyczności co jest kluczowe dla SEO i dostępności dla osób korzystających z czytników ekranu. Dlatego ważne jest prawidłowe użycie atrybutów strukturalnych w HTML aby zapewnić dostępność i poprawne wyświetlanie treści na różnych urządzeniach i przeglądarkach co jest kluczowe w nowoczesnym projektowaniu stron internetowych. Dobre praktyki projektowania stron internetowych zalecają również używanie HTML w sposób semantyczny co pomaga w tworzeniu bardziej czytelnych i dostępnych dokumentów. Poprawne użycie atrybutów takich jak rowspan i colspan jest kluczowe w osiągnięciu tych celów i uniknięciu nieporozumień i błędów w prezentacji danych na stronach internetowych. Ułatwia to również utrzymanie i aktualizację kodu w przyszłości oraz zwiększa ogólną jakość i dostępność strony internetowej.

Pytanie 13

Rozmiar grafiki JPEG zamieszczonej na stronie www może wpływać na

A. szybsze sprawdzanie linków.
B. zgodność z systemem Windows.
C. czas ładowania strony.
D. błędy w składni HTML.
Wielkość grafiki JPEG umieszczonej na stronie internetowej ma istotny wpływ na długość czasu ładowania strony. Gdy obraz jest zbyt duży, wymaga większej ilości danych do pobrania, co wydłuża czas, który użytkownik musi czekać na wyświetlenie zawartości. Optymalizacja grafik jest więc kluczowym aspektem projektowania stron internetowych. W praktyce, kompresja zdjęć przed ich załadowaniem na stronę, na przykład przy użyciu narzędzi takich jak ImageOptim lub TinyPNG, może znacząco zmniejszyć rozmiar pliku bez widocznej utraty jakości. Zgodnie z wytycznymi Google PageSpeed Insights, obrazy powinny być odpowiednio dostosowane do wymagań dotyczących jakości i rozmiaru. Sprawne zarządzanie grafiką może poprawić współczynnik konwersji oraz zredukować współczynnik odrzuceń, co jest kluczowe dla sukcesu witryny. Prędkość ładowania strony ma również znaczenie dla SEO, ponieważ wyszukiwarki preferują strony, które ładują się szybko, co wpływa na pozycjonowanie. Dlatego odpowiednia optymalizacja obrazów JPEG jest niezbędna dla każdej witryny internetowej, aby zapewnić pozytywne doświadczenia użytkowników oraz dobre wyniki w rankingach wyszukiwarek.

Pytanie 14

Aby uzyskać dane z tabeli pracownicy dotyczące jedynie osób, które ukończyły 26 lat, należy zastosować zapytanie

A. SELECT * FROM pracownicy AND wiek > 25
B. SELECT * FROM pracownicy WHERE wiek > 25
C. SELECT * FROM wiek WHERE pracownicy > 25
D. SELECT * FROM pracownicy OR wiek > 25
Aby wyświetlić rekordy z tabeli pracownicy, które dotyczą pracowników powyżej 26 roku życia, należy zastosować odpowiednie zapytanie SQL. Poprawne zapytanie to 'SELECT * FROM pracownicy WHERE wiek > 25;'. W tym przypadku, klauzula WHERE filtruje wyniki, zapewniając, że tylko ci pracownicy, którzy mają więcej niż 25 lat, zostaną zwróceni. Warto zauważyć, że w SQL operator '>' oznacza, że zwracane będą tylko rekordy, dla których warunek jest spełniony. Ponadto, wybranie wszystkich kolumn poprzez SELECT * jest powszechną praktyką, gdyż pozwala na uzyskanie pełnych informacji o pracownikach, bez konieczności wskazywania poszczególnych kolumn. Jest to zgodne z zasadami użycia SQL, gdzie operacje na danych są wykonywane poprzez polecenia definiujące wybrane tabele i warunki. Przykład zastosowania tego zapytania może być użyty w aplikacjach biznesowych, gdzie analiza wieku pracowników jest niezbędna do podejmowania decyzji kadrowych, a także w raportach dotyczących zatrudnienia. Takie zapytanie jest fundamentalne dla zarządzania danymi w relacyjnych bazach danych.

Pytanie 15

Jakie polecenie należy zastosować, aby naprawić bazę danych w MySQL?

A. CHANGE
B. FIX
C. UPDATE
D. REPAIR
Aby naprawić bazę danych w MySQL, służy polecenie REPAIR TABLE, które jest kluczowe w przypadku uszkodzonych tabel. Działa to w taki sposób, że przeszukuje strukturę tabeli oraz jej indeksy, a następnie próbuje naprawić wszelkie problemy, które mogły wystąpić. REPAIR TABLE można stosować w różnych sytuacjach, takich jak usunięcie zduplikowanych danych, naprawa uszkodzonych indeksów czy odbudowa tabel po awarii. Przykładowo, jeśli napotykasz na błąd, mówiący o tym, że tabela jest uszkodzona, wystarczy wydać polecenie 'REPAIR TABLE nazwa_tabeli;', aby spróbować ją naprawić. Warto także zaznaczyć, że polecenie to działa tylko na typach tabel MyISAM. W przypadku innych silników baz danych, takich jak InnoDB, należy stosować inne metody przywracania danych, które często opierają się na zrzutach bazy danych oraz mechanizmie odzyskiwania. Standardy MySQL jasno określają, że REPAIR TABLE jest istotnym narzędziem w arsenale administracyjnym, dlatego każdemu, kto pracuje z tym systemem, zaleca się zapoznanie z jego działaniem.

Pytanie 16

Jaką konstrukcją w języku C++ jest double *x;?

A. Zmienna całkowita
B. Formalny argument typu rzeczywistego
C. Zmienna rzeczywista
D. Wskaźnik
Deklaracja 'double *x;' w języku C++ oznacza, że 'x' jest wskaźnikiem, który może wskazywać na zmienną typu podwójnej precyzji (double). Wskaźniki są kluczowym elementem programowania w C++, umożliwiającym efektywne zarządzanie pamięcią oraz dostęp do dynamicznych struktur danych, takich jak tablice czy listy. W praktyce, wskaźniki są często używane do przekazywania dużych struktur danych do funkcji bez konieczności kopiowania całych obiektów, co jest wydajniejsze. Oto przykład: jeśli mamy funkcję, która modyfikuje tablicę, możemy przekazać wskaźnik do tej tablicy jako argument, co pozwala na bezpośrednią modyfikację oryginalnych danych. Dobre praktyki dotyczące wskaźników obejmują również ich odpowiednie inicjalizowanie oraz zarządzanie pamięcią, aby uniknąć wycieków pamięci. C++ pozwala na użycie wskaźników w połączeniu z dynamiczną alokacją pamięci za pomocą operatora 'new', co daje programiście dużą elastyczność w zarządzaniu zasobami.

Pytanie 17

Zaprezentowano poniżej obsługę

if (!isset($_COOKIE[$nazwa]))
  echo "nie ustawiono!";
else
  echo "ustawiono: " . $_COOKIE[$nazwa];
A. ciasteczek
B. zmiennych tekstowych
C. sesji
D. bazy danych
Obsługa ciasteczek jest kluczowym elementem w zarządzaniu stanem w aplikacjach webowych. Ciasteczka, czyli małe pliki tekstowe przechowywane w przeglądarce użytkownika, pozwalają na śledzenie aktywności użytkownika między stronami i sesjami. W kodzie powyżej widzimy użycie globalnej tablicy PHP $_COOKIE do sprawdzania, czy ciasteczko o określonej nazwie zostało ustawione. Funkcja isset() sprawdza, czy zmienna jest zdefiniowana i nie jest null. Jeśli ciasteczko istnieje, jego wartość jest wyświetlana. Ciasteczka są powszechnie używane do zarządzania sesjami, personalizacji treści czy śledzenia zachowań użytkowników. W praktyce, zabezpieczenia są ważnym aspektem zarządzania ciasteczkami. Powinny być szyfrowane i oznaczone jako HttpOnly oraz Secure, aby zminimalizować ryzyko kradzieży informacji przez ataki XSS. Programiści powinni także stosować polityki prywatności zgodnie z regulacjami RODO, informując użytkowników o użyciu ciasteczek. Zrozumienie tych mechanizmów jest fundamentalne dla budowy bezpiecznych i funkcjonalnych aplikacji webowych.

Pytanie 18

Którą wartość atrybutu name znacznika <meta> wykorzystuje się do kontrolowania obszaru widzialnego na różnych urządzeniach, na których jest wyświetlana strona internetowa?

A. keywords
B. viewport
C. generator
D. description
Poprawnie wskazana została wartość „viewport”. W praktyce właśnie meta name="viewport" służy do kontrolowania tzw. obszaru widzialnego (ang. viewport) na urządzeniach mobilnych i desktopowych. Przeglądarka mobilna domyślnie zakłada szeroką stronę i sztucznie ją pomniejsza, żeby „zmieściła się” na ekranie telefonu. Dopiero meta viewport mówi jej: potraktuj szerokość ekranu urządzenia jako bazową szerokość strony. Najczęściej spotykana, zgodna z dobrymi praktykami konstrukcja to: <meta name="viewport" content="width=device-width, initial-scale=1.0">. Parametr width=device-width ustawia szerokość obszaru widzialnego na szerokość ekranu urządzenia, a initial-scale=1.0 definiuje początkowe powiększenie. Dzięki temu layout responsywny oparty na media queries w CSS działa poprawnie, bez dziwnych przeskalowań i zbyt małej czcionki. W nowoczesnym front-endzie przyjmuje się, że każda strona, która ma być używalna na telefonach, tabletach i laptopach, powinna mieć prawidłowo ustawiony meta viewport. Moim zdaniem to jest absolutna podstawa RWD, zaraz obok poprawnego użycia jednostek względnych (np. %, vw, em) i zaprojektowania siatki w CSS. Warto też pamiętać, żeby nie przesadzać z blokowaniem powiększania (np. user-scalable=no), bo to pogarsza dostępność strony dla osób słabiej widzących i jest uznawane za złą praktykę. Podsumowując: jeśli chcesz mieć stronę, która naprawdę „żyje” na różnych ekranach, meta name="viewport" to obowiązkowy element w sekcji <head>.

Pytanie 19

CMYK to zestaw czterech podstawowych kolorów używanych w druku:

A. turkusowego, purpurowego, białego, czarnego
B. czerwonego, purpurowego, żółtego, szarego
C. turkusowego, błękitnego, białego, różowego
D. turkusowego, purpurowego, żółtego, czarnego
CMYK to model kolorów wykorzystywany w druku, który opiera się na czterech podstawowych kolorach: cyjan (turkusowy), magenta (purpurowy), żółty i czarny. Model ten jest kluczowy w procesach drukarskich, ponieważ wykorzystuje technikę subtraktywnego mieszania kolorów, co oznacza, że kolory powstają przez odejmowanie światła od białego tła. Każdy z kolorów w modelu CMYK odgrywa istotną rolę w uzyskaniu pożądanej gamy kolorystycznej. Na przykład, cyjan i magenta w połączeniu w różnych proporcjach mogą tworzyć różne odcienie niebieskiego, a dodanie żółtego umożliwia uzyskanie zieleni. Kluczowym aspektem jest również czarny kolor, który nie tylko zwiększa głębię barw, ale także poprawia kontrast oraz szczegółowość obrazu. Aby uzyskać optymalne rezultaty, profesjonalne drukarnie często korzystają z systemów kolorystycznych opartych na standardach takich jak ISO 12647, które definiują zasady druku oraz kontrolę jakości kolorów. Użycie modelu CMYK jest niezwykle istotne zarówno w projektowaniu graficznym, jak i w przemysłowym druku, gdzie precyzyjne odwzorowanie kolorów ma kluczowe znaczenie.

Pytanie 20

Jakie wyrażenie w języku JavaScript określa komentarz jednoliniowy?

A. #
B. ?
C. /*
D. //
Odpowiedź '//', stosowana w języku JavaScript, jest poprawnym zapisem komentarza jednoliniowego. Komentarze jednowierszowe rozpoczynają się od podwójnego ukośnika, co oznacza, że wszystko, co znajduje się po tym znaku w danym wierszu, jest ignorowane przez interpreter. Używanie komentarzy jest kluczowe w procesie programowania, ponieważ pozwala na dodawanie notatek, które mogą wyjaśniać logikę kodu lub przypominać o jego funkcji innym programistom oraz przyszłemu ja. Na przykład, jeśli mamy kod odpowiedzialny za obliczenia, można dodać komentarz wyjaśniający, co dokładnie robi dany blok kodu, co ułatwia utrzymanie kodu i jego późniejsze modyfikacje. Komentarze są niezwykle ważne w kontekście dobrych praktyk programistycznych, takich jak DRY (Don't Repeat Yourself) oraz KISS (Keep It Simple, Stupid), pomagając w utrzymaniu przejrzystości i czytelności kodu. Standardy ECMAScript, na których oparty jest JavaScript, jasno definiują sposób użycia komentarzy, co czyni ich stosowanie nie tylko praktyką, ale również zgodnością z normami branżowymi.

Pytanie 21

<?php
function silnia($liczba)
{
    if($liczba < 2)
        return 1;
    else
        return $liczba * silnia($liczba - 1);
}
?>
Funkcja silnia jest funkcją
A. bezparametrową.
B. rekurencyjną.
C. nie zwracającą wyniku.
D. abstrakcyjną.
Funkcja „silnia” w tym przykładzie jest klasycznym przykładem funkcji rekurencyjnej w PHP. Rekurencja polega na tym, że funkcja w swoim wnętrzu wywołuje samą siebie z innym argumentem. Tutaj dokładnie to widzimy w instrukcji `return $liczba * silnia($liczba - 1);`. Każde kolejne wywołanie zmniejsza wartość parametru `$liczba` o 1, aż dojdziemy do warunku zakończenia, czyli tzw. warunku brzegowego: `if($liczba < 2) return 1;`. Ten warunek jest kluczowy, bo bez niego rekurencja nigdy by się nie zatrzymała i skończyłaby się błędem przepełnienia stosu (stack overflow). Z punktu widzenia algorytmiki, silnia jest jednym z pierwszych przykładów, na których uczy się rekurencji, bo definicja matematyczna jest też rekurencyjna: n! = n * (n-1)!, przy 0! = 1 oraz 1! = 1. W kodzie odwzorowujemy to praktycznie 1:1. W profesjonalnym programowaniu webowym rekurencję stosuje się nie tylko do silni, ale np. do przetwarzania drzew kategorii, menu wielopoziomowych, parsowania struktur XML/JSON, czy przechodzenia po drzewach uprawnień. Moim zdaniem ważne jest, żeby przy rekurencji zawsze pilnować dwóch rzeczy: dobrze zdefiniowanego warunku zakończenia i tego, żeby w każdym kroku argument „zbliżał się” do tego warunku. W PHP można też porównać to z wersją iteracyjną (z pętlą), ale w wielu przypadkach rekurencyjna wersja jest czytelniejsza, szczególnie przy strukturach drzewiastych. W praktyce produkcyjnej warto jednak pamiętać o ograniczeniach głębokości stosu i przy bardzo dużych danych czasem lepiej przepisać rekurencję na iterację, ale sam wzorzec, który tu widzisz, jest jak najbardziej zgodny z dobrymi praktykami i podręcznikową definicją funkcji rekurencyjnej.

Pytanie 22

W analizowanym fragmencie algorytmu wykorzystano

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

Pytanie 23

Wskaż funkcję w JavaScript, która pozwoli obliczyć połowę kwadratu liczby podanej jako argument.

A. function wynik(a) { return a/2+a/2; }
B. function wynik(a) { return 2*a/a; }
C. function wynik(a) { return a*a/2; }
D. function wynik(a) { return a*2/2; }
Funkcja function wynik(a) { return a*a/2; } jest całkiem w porządku. Działa, bo fajnie oblicza połowę kwadratu liczby, którą podajesz jako argument. W praktyce, 'a*a' to nic innego jak kwadrat liczby 'a', a potem dzielimy to przez 2, co nam daje wartość połowy tego kwadratu. To, co zrobiłeś, jest zgodne z zasadami matematyki i jak na programowanie w JavaScript to też się sprawdza. Na przykład, jak podstawisz '4', to funkcja zwróci 8, bo (4*4)/2 = 16/2 = 8. Takie obliczenia mogą się przydać w różnych aplikacjach, np. przy obliczeniach inżynieryjnych czy analizie danych, gdzie często korzysta się z takich wzorów. Użycie zmiennych i funkcji w programowaniu ułatwia zarządzanie danymi, a do tego można łatwiej się orientować w kodzie, co jest super.

Pytanie 24

Badania dotyczące skalowalności oprogramowania mają na celu sprawdzenie, czy aplikacja

A. jest chroniona przed nieautoryzowanymi operacjami, takimi jak dzielenie przez zero
B. jest w stanie funkcjonować przy przewidzianym oraz większym obciążeniu
C. jest odpowiednio opisana dokumentacją
D. posiada właściwą funkcjonalność
Odpowiedzi takie jak 'ma odpowiednią funkcjonalność', 'jest odpowiednio udokumentowana' oraz 'jest zabezpieczona przed niedozwolonymi operacjami' odnoszą się do zupełnie innych aspektów jakości oprogramowania. Funkcjonalność dotyczy tego, czy aplikacja spełnia określone wymagania i jest w stanie realizować zamierzone zadania. Choć jest to istotna cecha, nie jest bezpośrednio związana ze skalowalnością, która koncentruje się na możliwości dostosowania się systemu do zwiększających się obciążeń. Dokumentacja jest równie ważna, ponieważ pozwala na zrozumienie architektury i funkcji systemu, lecz nie wpływa na jego zdolność do obsługi większej ilości użytkowników. Zabezpieczenia przed błędami, takimi jak dzielenie przez zero, są kluczowe dla stabilności i bezpieczeństwa aplikacji, ale również nie mają związku z jej skalowalnością. Często występującym błędem myślowym jest zakładanie, że wszystkie aspekty jakości oprogramowania są ze sobą ściśle powiązane i mogą być używane zamiennie. W rzeczywistości, każdy z tych elementów stanowi niezależny komponent większej całości, a ich ocena wymaga różnorodnych podejść i technik testowania. Aby poprawnie ocenić skalowalność, należy skupić się na pomiarze wydajności w warunkach dużego obciążenia, co wymaga zastosowania specyficznych metodologii testowych, takich jak testy obciążeniowe oraz analizę wydajności systemu w realnych scenariuszach użytkowania.

Pytanie 25

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

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

Pytanie 26

Ile razy zostanie wykonana pętla przedstawiona w języku PHP, zakładając, że zmienna kontrolna nie jest zmieniana w jej wnętrzu?
for($i = 0; $i <= 10; $i++) { ...... }

A. 0 razy
B. Nieskończoność
C. 10 razy
D. 11 razy
Odpowiedzi 0, 10 oraz nieskończoność są niepoprawne z kilku powodów. Przyjęcie, że pętla wykona się 0 razy, jest błędne, ponieważ pętla for rozpoczyna swoje działanie od zainicjowania zmiennej $i na 0. Zgodnie z konstrukcją pętli, pierwsze sprawdzenie warunku $i <= 10 jest pozytywne, co implikuje, że blok kodu zostanie wykonany przynajmniej raz. W odniesieniu do odpowiedzi 10, zakłada ona, że pętla zakończy się, gdy $i osiągnie wartość 10, co jest mylące. W rzeczywistości, pętla wykonuje się 11 razy, ponieważ ostatnie wykonanie kodu następuje przy $i równym 10, a następnie następuje inkrementacja, co sprawia, że $i osiąga 11 i przerywa działanie pętli. Wreszcie, odpowiedź sugerująca nieskończoną ilość iteracji jest również błędna. Nieskończone pętle często wynikają z braku modyfikacji zmiennej sterującej, jednak w tym przypadku pętla for ma zdefiniowaną inkrementację, co zapewnia, że po pewnym czasie pętla zakończy swoje działanie, nie generując nieskończoności. Każda z tych błędnych odpowiedzi pokazuje różne nieporozumienia dotyczące działania pętli for oraz logiki programistycznej w PHP.

Pytanie 27

W języku JavaScript zapisano poniższy fragment kodu. `````` Po uruchomieniu skryptu zmienna x

A. będzie miała wartość 10 i zostanie pokazana w dokumencie HTML
B. będzie miała wartość 11 i zostanie wyświetlona w oknie popup
C. będzie miała wartość 11 i zostanie wyświetlona w konsoli przeglądarki internetowej
D. będzie miała wartość 10 i zostanie wyświetlona w głównym oknie przeglądarki internetowej
W analizowanym fragmencie kodu JavaScript mamy do czynienia z prostą operacją inkrementacji zmiennej x, która początkowo wynosi 10. Operator ++ zwiększa wartość zmiennej o 1, co skutkuje wartością 11. Wartością, która zostanie wyświetlona, jest wartość zmiennej x, która po inkrementacji wynosi 11. Jednak ważnym aspektem jest to, że w kodzie jest błąd składniowy w wywołaniu funkcji console.log. Poprawna składnia powinna wyglądać tak: console.log(x); zamiast console.logx);. W obecnej formie kodu, mimo inkrementacji zmiennej x do wartości 11, pojawi się błąd wykonania, a wartość nie zostanie wypisana. Gdyby błąd został naprawiony, wynik 11 zostałby wyświetlony w konsoli przeglądarki, co jest standardowym miejscem do monitorowania wyjścia w aplikacjach JavaScript. To zachowanie jest zgodne ze specyfikacjami ECMAScript, które definiują zasady działania operatorów oraz metod konsoli.

Pytanie 28

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

A. nav { float: left; } aside { float: left; }
B. nav { float: right; } section { float: right; }
C. aside {float: left; }
D. nav { float: right; }
W tym zadaniu kluczowe jest zrozumienie, jak naprawdę działa float, a nie tylko samo skojarzenie, że „left to lewo, right to prawo”. Wiele osób myśli, że wystarczy ustawić jeden element na lewo, drugi na prawo i wszystko magicznie się poukłada. W praktyce przeglądarka trzyma się bardzo konkretnych reguł: najpierw liczy kolejność elementów w HTML, potem dopiero stosuje float i układa je możliwie jak najwyżej i jak najbliżej odpowiedniej krawędzi. Jeśli nada się float tylko dla aside albo tylko dla nav, to zmienia się ich pozycja, ale układ trzech bloków nie spełni warunku z zadania: aside i nav nie zamienią się miejscami z pozostawieniem section w środku. Przykładowo, samo float: left na aside niczego nie „zamieni”, bo element i tak pojawia się jako pierwszy w kodzie, więc będzie u góry, tylko że „przyklejony” do lewej. Z kolei ustawienie nav na prawą stronę bez odpowiedniego floatowania section prowadzi do sytuacji, gdzie section nadal zachowuje się jak normalny blok, zwykle ląduje pod elementami pływającymi albo obok nich w sposób mało przewidywalny dla początkującego. Częsty błąd myślowy polega też na tym, że ktoś próbuje wszystkim elementom dać float: left, licząc na to, że przeglądarka „ułoży je po swojemu”. Wtedy jednak wszystkie te bloki ustawiają się w jednym kierunku, w kolejności z HTML, więc nie ma mowy o świadomym „zamienianiu miejsc”. Brak zrozumienia, że float wyjmuje element z normalnego przepływu i wpływa na to, jak kolejne elementy zawijają się wokół niego, prowadzi właśnie do takich błędnych odpowiedzi. Z mojego doświadczenia lepiej jest najpierw narysować sobie prosty schemat: w jakiej kolejności idą znaczniki i które z nich mają pływać w prawo, a które zostać w naturalnym układzie. Dopiero wtedy dobiera się konkretne deklaracje CSS. Takie myślenie przydaje się nie tylko przy float, ale też przy nauce flexboxa czy grida, gdzie kolejność w DOM i własności układu też grają ogromną rolę.

Pytanie 29

Wskaż fragment CSS, który odpowiada rozkładowi bloków 2-5, zakładając, że zostały one zbudowane na podstawie podanego kodu HTML.

Ilustracja do pytania
A. Kod 4
B. Kod 2
C. Kod 1
D. Kod 3
Niepoprawne podejścia w pozostałych kodach wynikają z niewłaściwego użycia właściwości float oraz clear. W Kodzie 1 użycie float: right; dla czwartego bloku jest poprawne, jednak clear: both; dla piątego bloku powoduje, że nie będzie on kontynuował linii z poprzednimi blokami, co nie pasuje do przedstawionego układu. Clear: both; wymusza przeniesienie bloku poniżej aktualnej linii. Kod 3 charakteryzuje się brakiem właściwości clear, co prowadzi do problemów z układem, gdyż blok 5 ułożony float: right; nie rozpocznie nowego wiersza, co jest potrzebne w tym zadaniu. W Kodzie 4 brak jest jakiegokolwiek użycia właściwości float lub clear dla bloków 3, 4 i 5 co uniemożliwia osiągnięcie założonego układu. Brak float dla trzeciego i czwartego bloku spowoduje, że będą one umieszczone pod sobą jako blokowe elementy domyślnie, co nie pasuje do układu. Prawidłowa organizacja układu bloków za pomocą właściwości float opiera się na odpowiednim przypisaniu float: left; lub right; oraz strategicznym użyciu clear, aby kontrolować przepływ elementów w wierszach. Typowym błędem jest niezrozumienie, że clear resetuje przepływ dla kolejnego bloku, co jest kluczowe w manipulacji wyglądem layoutu blokowego w starszych technikach CSS. Takie błędy mogą prowadzić do nieprzewidywalnych rezultatów, zwłaszcza gdy układ jest testowany na różnych przeglądarkach i rozdzielczościach ekranów, co podkreśla znaczenie testowania i walidacji CSS w kontekście projektów webowych. Stosowanie zasad float i clear wymaga precyzyjnego planowania, by unikać konfliktów w przepływie i zachować spójność wizualną projektu webowego.

Pytanie 30

Funkcją zaprezentowanego kodu PHP jest napełnienie tablicy $tab 10 losowymi liczbami z przedziału od -100 do 100, a następnie wypisanie liczb ujemnych. Kod prezentuje się następująco:

$tab = array();
for ($i = 0; $i < 10; $i++)
{
    $tab[$i] = rand(-100, 100);
}

foreach ($tab as $x)
{
    if ($x < 0)
        echo "$x ";
}
A. kolejnymi liczbami od -100 do 100 oraz wypisanie liczb ujemnych
B. kolejnymi liczbami od 0 do 9 i ich wyświetlenie
C. 100 losowymi liczbami, a następnie wypisanie liczb dodatnich
D. 10 losowymi wartościami, a następnie wypisanie liczb ujemnych
Przedstawiony kod w języku PHP ma na celu wypełnienie tablicy dziesięcioma losowymi wartościami i wypisanie tych, które są ujemne. Funkcja rand(-100, 100) generuje liczby losowe z zakresu od -100 do 100. W pętli for wykonujemy dziesięć iteracji, co umożliwia dodanie dziesięciu takich liczb do tablicy. Następnie, za pomocą pętli foreach, iterujemy przez wszystkie elementy tablicy. Instrukcja warunkowa if sprawdza, czy każda z wartości jest mniejsza od zera. Jeśli warunek jest spełniony, liczba jest wypisywana na ekran. Takie podejście jest często stosowane w programowaniu, gdy wymagana jest praca z losowymi danymi w celu testowania lub symulacji. W praktycznych zastosowaniach można użyć tej metody do filtrowania danych lub analizy wyników eksperymentalnych, gdzie konieczne jest zidentyfikowanie i obsługa wartości o określonych właściwościach. Dobre praktyki programistyczne nakazują dokumentowanie takich fragmentów kodu, aby ułatwić zrozumienie i utrzymanie projektu przez innych deweloperów.

Pytanie 31

Zamieszczony kod w języku PHP

Ilustracja do pytania
A. jest niepoprawny, nieznany operator =>
B. jest błędny, indeksami tablicy mogą być wyłącznie liczby całkowite
C. określa tablicę z sześcioma wartościami
D. definiuje tablicę z trzema wartościami
Kod przedstawiony w pytaniu to przykład definiowania tablicy asocjacyjnej w języku PHP. Tablica asocjacyjna to struktura danych, która pozwala na przechowywanie wartości związanych z kluczami, które nie muszą być liczbami. W tym przypadku kluczami są łańcuchy znaków: 'imie', 'nazwisko' oraz 'wiek'. Każdy klucz ma przypisaną wartość: 'Anna', 'Nowak' oraz 21. Zatem tablica ta rzeczywiście zawiera trzy pary klucz-wartość. Operator '=>' jest używany w PHP do przypisywania wartości kluczom w tablicach asocjacyjnych. Jest to poprawna składnia i bardzo popularny sposób reprezentowania danych, zwłaszcza w kontekście baz danych i przetwarzania formularzy, gdzie każda wartość ma swoje unikalne znaczenie i klucz. W praktyce tablice asocjacyjne są używane do przechowywania danych, które nie mają charakteru sekwencyjnego, ale są raczej zestawem właściwości lub atrybutów obiektu. Stosowanie tablic asocjacyjnych z odpowiednimi kluczami wspiera czytelność kodu i ułatwia jego zarządzanie zwłaszcza w większych projektach gdzie zrozumienie struktury danych odgrywa kluczową rolę.

Pytanie 32

Podczas weryfikacji pliku HTML5 pojawił się komunikat brzmiący: "Error: Element head is missing a required instance of child element title". Co to oznacza w kontekście dokumentu?

A. nie zdefiniowano elementu <title> w sekcji <head> dokumentu.
B. element <title> nie został prawidłowo zamknięty przez </title>.
C. nie zdefiniowano obowiązkowego atrybutu title w tagu <img>.
D. element <title> nie jest konieczny.
Twoja odpowiedź jest całkowicie trafna! Zgodnie z tym, co mówi specyfikacja HTML5, element <title> rzeczywiście jest obowiązkowy i musi znaleźć się w sekcji <head>. To bardzo ważne, bo tytuł strony to coś, co pokazuje się na karcie przeglądarki, a także w wynikach wyszukiwania. Jak go brakuje, to strona nie spełnia podstawowych wymogów i pojawia się błąd walidacji. Fajnie jest mieć unikalne i opisowe tytuły dla każdej strony, bo to korzystnie wpływa na SEO i użyteczność. Na przykład, jeśli robiłbyś stronę o kulinariach, to tytuł mógłby być "Przepisy na zdrowe obiady", co od razu informuje użytkowników i wyszukiwarki, o co chodzi. Dobrze dobrany tytuł to naprawdę kluczowa sprawa, bo ma duży wpływ na to, jak użytkownicy postrzegają Twoją stronę i czy klikną w link. Pamiętaj też, że element <title> powinien być krótki, ale wystarczająco informacyjny, zazwyczaj nie dłuższy niż 60 znaków.

Pytanie 33

W HTML-u znacznik tekst będzie prezentowany przez przeglądarkę w sposób identyczny do znacznika

A. <h1>tekst</h1>
B. <b>tekst</b>
C. <sub>tekst</sub>
D. <big>tekst</big>
Znacznik <strong> w HTML jest używany do oznaczania tekstu, który ma być wyróżniony jako ważny. Jego domyślne stylizowanie w przeglądarkach polega na pogrubieniu tekstu, co jest również funkcją znacznika <b>. Oba znaczniki mają podobne zastosowanie, ale <strong> niesie dodatkowe znaczenie semantyczne, co oznacza, że informuje przeglądarki i maszyny o tym, że dany tekst jest istotny. Przykładem może być użycie <strong> w nagłówkach lub w miejscach, gdzie chcemy zwrócić uwagę na kluczowe informacje, jak np. 'Zamówienie <strong>pilne</strong> musi być dostarczone do jutra.' W kontekście dobrych praktyk zaleca się używanie znaku <strong> zamiast <b>, gdyż wspiera to dostępność i SEO - wyszukiwarki lepiej interpretują semantykę treści, co może wpłynąć na pozycjonowanie strony. Warto również pamiętać, że zgodnie z W3C, semantyka HTML ma kluczowe znaczenie dla strukturyzacji dokumentów oraz ich dostępności.

Pytanie 34

Która z poniższych funkcji sortujących, stosowanych w języku PHP, porządkuje tablicę asocjacyjną według kluczy?

A. asort()
B. rsort()
C. sort()
D. ksort()
Funkcja ksort() w PHP sortuje tablice asocjacyjne według ich kluczy, co oznacza, że klucze będą posortowane w naturalnej kolejności, a wartości pozostaną przypisane do swoich oryginalnych kluczy. Przykładowo, jeśli masz tablicę, powiedzmy $arr = array('b' => 2, 'a' => 1, 'c' => 3); to po użyciu ksort($arr), dostaniesz $arr = array('a' => 1, 'b' => 2, 'c' => 3). To naprawdę przydatna funkcja, bo dzięki niej można łatwo zorganizować i uporządkować dane. Kiedy korzystasz z ksort(), poprawiasz przejrzystość tablicy, a to na pewno zwiększa efektywność w pracy z danymi. No i warto dodać, że ksort() jest standardową funkcją w dokumentacji PHP, więc jest dość stabilna i popularna wśród programistów.

Pytanie 35

Pętla zapisana w języku PHP wstawi do tablicy liczby:

$x = 0;
for ($i = 0; $i < 10; $i++)
{
    $tabl[$i] = $x;
    $x = $x + 10;
}
A. 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
B. 0, 10, 20, 30, 40, 50, 60, 70, 80, 90
C. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
D. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Gratulacje, Twoja odpowiedź jest poprawna. Pętla zaczyna się od $x = 0 i wykonuje się 10 razy ($i od 0 do 9). W każdej rundzie pętli, do tablicy $tabl dodawana jest aktualna wartość $x, a następnie $x jest zwiększane o 10. To jest tzw. pętla for, która jest jednym z najbardziej podstawowych mechanizmów programowania. Dzięki tej pętli możemy kontrolować ilość iteracji, które chcemy wykonać. W tym przypadku, iteracja odbywa się 10 razy, za każdym razem inkrementując $x o 10. Niezależnie od tego, czy korzystasz z PHP, czy innego języka, konstrukcje pętli są niezwykle ważne i warto zrozumieć ich działanie. PHP, jak wiele innych języków programowania, posiada wiele różnych typów pętli - for, while, do-while, each, które mają swoje szczególne zastosowania w zależności od kontekstu.

Pytanie 36

Które rozszerzenie pliku jest związane z formatem wideo?

A. *.bmp
B. *.avi
C. *.png
D. *.jpg
Poprawna odpowiedź to *.avi, ponieważ jest to klasyczne rozszerzenie pliku wideo opartego na formacie AVI (Audio Video Interleave), opracowanym przez firmę Microsoft. Ten format pozwala na przechowywanie zarówno strumienia obrazu, jak i dźwięku w jednym kontenerze, co jest typowe dla plików wideo. W praktyce oznacza to, że plik .avi może zawierać w sobie różne kodeki wideo (np. DivX, Xvid) i różne kodeki audio. Z punktu widzenia użytkownika – klikasz plik .avi i od razu odtwarzacz multimedialny uruchamia film, a nie pojedynczy obrazek. W branży multimedialnej przyjęło się, że rozszerzenie musi jasno sugerować typ zawartości. Dobre praktyki mówią, żeby nie mieszać formatów graficznych z wideo, bo potem powstaje chaos w projektach, katalogach i na serwerach. Jeżeli tworzysz stronę WWW i chcesz osadzić film, stosujesz formaty wideo, np. .mp4, .webm, .avi (choć dzisiaj na web .avi raczej się nie używa, ale nadal możesz się z nim spotkać w starszych materiałach). Natomiast .jpg, .png, .bmp to formaty grafiki statycznej. One nie mają strumienia czasu, klatek na sekundę, ścieżki audio itd. Moim zdaniem warto też pamiętać, że AVI jest formatem kontenerowym, a nie samym kodekiem. To znaczy, że jakość, rozmiar i kompatybilność pliku zależą nie tylko od .avi jako rozszerzenia, ale głównie od tego, jakim kodekiem zakodowano obraz i dźwięk. W praktyce, przy pracy z multimediami, zawsze zwraca się uwagę na trzy rzeczy: rozszerzenie (typ kontenera), kodek (np. H.264, MPEG-4) oraz docelową platformę (przeglądarka, odtwarzacz, telewizor Smart TV). W projektach webowych i e-learningowych standardem jest raczej .mp4 (H.264/AAC), ale znajomość .avi nadal jest potrzebna, choćby po to, żeby wiedzieć, jak konwertować stare materiały wideo do nowszych, bardziej wydajnych formatów.

Pytanie 37

Błędy w interpretacji kodu PHP są rejestrowane

A. pomijane przez przeglądarkę oraz interpreter PHP
B. w logu, o ile odpowiedni parametr jest ustawiony w pliku php.ini
C. w dzienniku zdarzeń systemu Windows
D. w oknie edytora, w którym tworzony jest kod PHP
Błędy interpretacji kodu PHP są kluczowym zagadnieniem w procesie programowania w tym języku. Gdy wystąpi błąd, jego zapisanie w logu jest niezwykle istotne dla późniejszej analizy i debugowania. W celu umożliwienia takiej funkcjonalności, programista musi odpowiednio skonfigurować plik php.ini, który jest centralnym plikiem konfiguracyjnym dla PHP. Ustawienia związane z logowaniem błędów obejmują dyrektywy takie jak 'error_reporting', 'log_errors' oraz 'error_log'. Na przykład, aby włączyć logowanie błędów, należy ustawić 'log_errors' na 'On', a 'error_log' wskazuje lokalizację pliku, w którym błędy będą zapisywane. Przykładowo, ustawienie 'error_log = /var/log/php_errors.log' spowoduje, że wszystkie błędy będą trafiały do wskazanego pliku. To podejście jest zgodne z zaleceniami najlepszych praktyk w programowaniu, które wskazują na konieczność monitorowania i analizy błędów w aplikacjach. Takie logowanie może obejmować zarówno błędy krytyczne, jak i ostrzeżenia, co pozwala na lepszą kontrolę nad działaniem aplikacji i szybsze lokalizowanie problemów.

Pytanie 38

Jakie znaczenie ma akronim ACID w kontekście SQL?

A. atomic, consistent, iss, dependable
B. atomic, constaint, isolated, dependable
C. atomic, consistent, isolated, durable
D. atomic, comming, is, do
Każda z niepoprawnych odpowiedzi zawiera błędne definicje podstawowych pojęć związanych z właściwościami transakcji w bazach danych. Pierwsza z nich używa terminu "coming" zamiast "consistent", co jest poważnym błędem, ponieważ spójność jest kluczowa dla zapewnienia, że baza danych nie znajduje się w stanie półpełnym po zakończeniu transakcji. Druga odpowiedź zastępuje "durable" słowem "dependable", co nie oddaje rzeczywistego znaczenia trwałości w kontekście baz danych, gdzie ważne jest, aby wszelkie zmiany były zachowane mimo awarii systemu. Ostatnia odpowiedź błędnie używa słowa "constaint" zamiast "consistent", co wskazuje na nieporozumienie dotyczące fundamentalnych zasad działania baz danych. Ograniczenia (constraints) są istotne, ale to nie one definiują spójność transakcji. Właściwości ACID są kluczowe dla każdej operacji w bazach danych, a ich zrozumienie jest niezbędne dla zapewnienia integralności i bezpieczeństwa danych.

Pytanie 39

Na podstawie jakiego parametru oraz z ilu tabel będą zwrócone wiersze w wyniku podanego 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. Na podstawie parametru wyrob_id tylko dla trzech tabel
B. Na podstawie parametru nr_id tylko dla trzech tabel
C. Na podstawie parametru nr_id dla wszystkich tabel
D. Na podstawie parametru wyrob_id tylko dla trzech tabel
Zapytanie SQL w poleceniu jest skonstruowane tak by pobierać dane z czterech tabel: producent hurtownia sklep i serwis W warunku WHERE użyto klauzuli dotyczącej parametru nr_id co powoduje że połączenia między tabelami są realizowane na podstawie tego właśnie parametru Jest to typowe podejście w relacyjnych bazach danych gdzie klucz główny jednej tabeli jest kluczem obcym w innej umożliwiając łączenie danych Parametr nr_id pojawia się wielokrotnie w klauzuli WHERE jako kryterium dla różnych połączeń między tabelami To pozwala na uzyskanie spójnej listy wierszy które spełniają wszystkie zdefiniowane warunki Dzięki temu zapytanie zwraca wiersze dla wszystkich czterech tabel co jest zgodne z odpowiedzią numer 1 Takie podejście umożliwia tworzenie złożonych raportów i analiz danych branżowych Warto także zauważyć że użycie JOIN w taki sposób często optymalizuje wydajność zapytań co jest dobrą praktyką w zarządzaniu bazami danych SQL

Pytanie 40

Które z poniższych twierdzeń o definicji funkcji pokazanej w ramce jest prawdziwe?

function czytajImie(){
  var imie=null;
  do {
    imie=prompt("podaj imie: ");
    if (imie.length<3)
    alert("wprowadzony tekst jest niepoprawny");
  } while(imie.length<3);
}
A. Pętla zostanie uruchomiona tylko raz
B. Wczytanie tekstu zakończy się, gdy tekst będzie miał co najmniej 3 znaki
C. Funkcja zawiera pętlę, która powtarza się 3 razy
D. Tekst będzie wczytywany do czasu podania liczby większej niż 3
Błędne rozumienie działania pętli do-while może prowadzić do przekonania że pętla wykona się określoną ilość razy lub że zakończy się w momencie spełnienia innych warunków co jest typowym błędem wśród osób początkujących Pętla do-while w języku JavaScript wykonuje blok kodu przynajmniej raz a następnie sprawdza warunek kontynuacji co oznacza że nie jest ograniczona do stałej ilości iteracji jak mogłoby sugerować stwierdzenie o trzykrotnym powtórzeniu Warunek długości tekstu mniejszej niż 3 jest kluczowy dla jej działania i wymusza iterację aż do momentu gdy zostanie wprowadzony prawidłowy ciąg znaków co wyklucza możliwość że pętla wykona się tylko raz chyba że już za pierwszym razem zostanie wprowadzony tekst spełniający warunki Kolejnym nieporozumieniem może być błędne postrzeganie warunku jako związanego z wprowadzeniem liczby podczas gdy w rzeczywistości funkcja operuje na długości tekstu co jest częstym zagadnieniem przy walidacji danych tekstowych przy użyciu funkcji prompt Ważnym aspektem jest zrozumienie że pętle tego typu są używane tam gdzie wymagana jest walidacja danych wprowadzanego tekstu co jest praktyką szeroko akceptowaną w branży programistycznej z uwagi na konieczność zapewniania poprawności danych przed ich dalszym przetwarzaniem