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: 10 czerwca 2026 12:41
  • Data zakończenia: 10 czerwca 2026 13:18

Egzamin zdany!

Wynik: 28/40 punktów (70,0%)

Wymagane minimum: 20 punktów (50%)

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

Jak określa się program, który realizuje polecenia zawarte w kodzie źródłowym tworzonego oprogramowania bez wcześniejszego generowania programu wynikowego?

A. Interpreter
B. Konwerter języka
C. Konwerter kodu
D. Kompilator
Interpreter to program, który wykonuje instrukcje zawarte w kodzie źródłowym bez potrzeby wcześniejszego generowania kodu wynikowego. Działa on na zasadzie analizy i wykonywania kodu w czasie rzeczywistym, co pozwala na szybkie testowanie i debugowanie aplikacji. Dzięki temu programiści mogą wprowadzać zmiany w kodzie i natychmiastowo sprawdzać ich efekty, co znacznie przyspiesza proces tworzenia oprogramowania. Interpretery są często wykorzystywane w językach skryptowych, takich jak Python, JavaScript czy Ruby, gdzie szybka iteracja jest kluczowa. Warto również zaznaczyć, że interpretery mogą być częścią większych środowisk programistycznych, co jest zgodne z praktykami Agile, które promują elastyczność i szybkie dostosowywanie się do zmieniających się wymagań. Dlatego znajomość działania interpreterów jest niezbędna dla każdego programisty, który chce skutecznie rozwijać swoje umiejętności i dostosowywać się do nowoczesnych trendów w programowaniu.

Pytanie 2

Jeżeli zmienna $x zawiera dowolną dodatnią liczbę naturalną, to przedstawiony kod źródłowy PHP ma na celu wyświetlenie:

$licznik = 0;
while ($licznik != $x)
{
    echo $licznik;
    $licznik++;
}
A. liczb wprowadzanych z klawiatury, aż do momentu wprowadzenia wartości x
B. kolejnych liczb od 0 do x-1
C. losowych liczb z zakresu (0, x)
D. kolejnych liczb od x do 0
Odpowiedzi błędne wynikają z niepoprawnej interpretacji działania pętli i warunku zakończenia. Pierwszym błędnym rozumowaniem jest wniosek że pętla wyświetla kolejne liczby wstecz od x do 0. W kodzie $licznik jest inkrementowany co oznacza że wartości rosną a nie maleją. To często spotykany błąd gdyż może się wydawać że warunek różności sugeruje zbliżanie się do zera zamiast do wartości $x. Kolejnym błędnym założeniem jest błędne zrozumienie że kod wczytuje wartości z wejścia aż do osiągnięcia $x. Kod nie używa funkcji do wczytywania danych od użytkownika takich jak np. fgets() w związku z czym nie można tutaj mówić o interakcji z użytkownikiem. Ostatnia błędna odpowiedź sugeruje losowanie liczb co jest nieprawidłowe gdyż w kodzie nie występuje żaden mechanizm generowania liczb losowych np. poprzez rand(). Warto tutaj zauważyć że pętla while jest jedną z podstawowych struktur sterujących i zrozumienie jej poprawnego działania jest kluczowe dla programowania w każdym języku. Dobór odpowiedniego warunku zakończenia i modyfikacji zmiennej kontrolnej to podstawy które pomagają uniknąć błędów logicznych w kodzie.

Pytanie 3

Baza danych, która fizycznie znajduje się na wielu komputerach, lecz logicznie postrzegana jako całość, opiera się na architekturze

A. rozproszoną
B. lokalną
C. relacyjną
D. abstrakcyjną
Architektura rozproszona baz danych polega na tym, że dane są przechowywane na wielu fizycznych komputerach, które razem tworzą jedną logiczną całość. Taki system umożliwia zwiększenie dostępności, niezawodności oraz wydajności baz danych, co jest szczególnie istotne w dużych organizacjach czy systemach, które wymagają obsługi dużej ilości danych. Przykładem zastosowania architektury rozproszonej może być system zarządzania danymi w chmurze, gdzie dane użytkowników są przechowywane w wielu lokalizacjach geograficznych. Dzięki temu, nawet w przypadku awarii jednego z serwerów, system może dalej funkcjonować, co minimalizuje ryzyko utraty danych. Dodatkowo, architektury rozproszone często korzystają z technologii takich jak replikacja danych, co pozwala na synchronizowanie danych pomiędzy różnymi lokalizacjami. Warto podkreślić, że w kontekście rozwoju technologii SQL i NoSQL, architektura rozproszona zyskuje na znaczeniu, stając się standardem w nowoczesnych rozwiązaniach bazodanowych.

Pytanie 4

W języku PHP zmienna typu float może przyjmować wartości

A. wartości logiczne
B. wartości nieliczbowe
C. jedynie liczby całkowite
D. wartości zmiennoprzecinkowe
W języku PHP zmienne typu float są używane do reprezentowania liczb zmiennoprzecinkowych, co oznacza, że mogą przechowywać zarówno wartości całkowite, jak i wartości z częścią ułamkową. Typ float w PHP jest szczególnie przydatny w sytuacjach, gdzie precyzyjne obliczenia są niezbędne, na przykład w aplikacjach finansowych, gdzie obliczenia z użyciem pieniędzy wymagają uwzględnienia centów. W praktyce, operacje na zmiennych typu float mogą obejmować dodawanie, odejmowanie, mnożenie oraz dzielenie. Warto również zauważyć, że PHP obsługuje zarówno liczby w formacie dziesiętnym, jak i w notacji naukowej. Dobrą praktyką jest używanie funkcji takich jak round() do zaokrąglania wyników obliczeń zmiennoprzecinkowych, aby uniknąć problemów z precyzją, które mogą występować w wyniku ograniczeń reprezentacji liczb zmiennoprzecinkowych w pamięci komputera. W dokumentacji PHP, typ float jest jasno zdefiniowany jako liczba zmiennoprzecinkowa, co podkreśla jego kluczową rolę w różnych zastosowaniach programistycznych. Zrozumienie tego typu zmiennych jest fundamentem dla efektywnego programowania w PHP.

Pytanie 5

Ile razy należy użyć instrukcji warunkowej, aby wdrożyć w danym języku programowania przedstawiony algorytm?

Ilustracja do pytania
A. Trzykrotnie
B. Czterokrotnie
C. Dwukrotnie
D. Jednokrotnie
Aby prawidłowo zaimplementować algorytm przedstawiony na diagramie, musisz zrozumieć jego strukturę. Diagram pokazuje dwa punkty decyzyjne, co wskazuje na konieczność użycia dwóch instrukcji warunkowych w kodzie. Każda instrukcja warunkowa odpowiada jednemu z tych punktów decyzyjnych. W praktyce, instrukcje warunkowe są kluczowe w programowaniu, pozwalając na podejmowanie decyzji i wykonywanie różnych działań w zależności od spełnienia określonych warunków. Można to zobrazować za pomocą języków programowania takich jak Python czy C++, gdzie 'if', 'else if' oraz 'else' są standardowymi konstrukcjami używanymi do tego celu. Warto zauważyć, że implementując algorytm, należy również zwrócić uwagę na poprawne użycie bloków kodu zagnieżdżonych w instrukcjach warunkowych, co jest dobrą praktyką programistyczną. Dzięki temu kod jest bardziej czytelny i łatwiejszy w utrzymaniu, co jest zgodne z zasadami czystego kodu i standardami branżowymi.

Pytanie 6

W stylu CSS zdefiniowano klasę uzytkownik:

p.uzytkownik {
    color: blue;
}
Na stronie będą wyświetlane czcionką w kolorze niebieskim:
A. wszystkim elementom w sekcji <body> z przypisaną klasą uzytkownik.
B. paragrafy, do których została przypisana klasa uzytkownik.
C. tylko elementy tekstowe typu <p>, <h1>.
D. wszystkie akapity.
Deklaracja selektora p.uzytkownik oznacza w CSS połączenie selektora typu z selektorem klasy. Innymi słowy: przeglądarka wybierze tylko te elementy <p>, które mają w atrybucie class wpisaną klasę uzytkownik, np. <p class="uzytkownik">Treść</p>. Sama kropka przed nazwą klasy definiuje selektor klasy, a litera p przed kropką zawęża go wyłącznie do paragrafów. Gdyby w stylu było samo .uzytkownik { color: blue; }, wtedy reguła objęłaby wszystkie elementy z tą klasą, niezależnie czy to <p>, <div>, <h1> czy cokolwiek innego. Moim zdaniem to jedno z podstawowych, ale bardzo ważnych rozróżnień w CSS: kombinacja selektorów pozwala dokładnie kontrolować, które elementy są stylowane. Dzięki temu nie trzeba nadawać unikalnych klas dla każdego typu elementu, tylko łączyć selektor typu (np. p, h1, li) z klasą, gdy jest to potrzebne. W praktyce w projektach spotyka się dużo takich zapisów: np. li.active, a.button-primary, input.error. To pomaga utrzymać porządek w arkuszu stylów i unikać niepotrzebnie szerokiego działania reguł. Warto też zwrócić uwagę na specyficzność: p.uzytkownik ma większą specyficzność niż samo p, ale mniejszą niż np. #idElementu. Przy konfliktach stylów przeglądarka bierze to pod uwagę. Dobra praktyka jest taka, żeby nie pisać zbyt ogólnych selektorów, które kolorują „pół strony” przypadkiem. Taki selektor jak w pytaniu jest bezpieczny i precyzyjny – wiadomo dokładnie, że kolor niebieski trafi tylko do tych paragrafów, którym świadomie przypiszemy klasę uzytkownik w HTML.

Pytanie 7

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

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

Pytanie 8

W języku PHP użyto funkcji is_int). Które z wymienionych wywołań tej funkcji zwróci wartość TRUE?

A. is_int(13.5)
B. is_int(NULL)
C. is_int("135")
D. is_int(135)
Funkcje is_int w PHP są pomocne w określaniu, czy dana zmienna jest typu całkowitego, co jest szczególnie istotne w kontekście przetwarzania danych. Często spotykaną pomyłką jest przyjmowanie założenia, że wartości przekazane w postaci tekstowej, takie jak "135", są traktowane jako liczby całkowite. W rzeczywistości, gdy do funkcji is_int przekazujemy string, nawet jeśli zawiera on liczbę, PHP interpretuje tę wartość jako tekst, co skutkuje zwróceniem FALSE. Podobnie jest w przypadku NULL; is_int(NULL) również zwraca FALSE, ponieważ NULL nie jest liczbą, lecz specjalną wartością oznaczającą brak wartości. Innym częstym błędem myślowym jest mylenie typów danych w kontekście zmiennoprzecinkowym. Wartość 13.5 jest liczbą zmiennoprzecinkową, a nie całkowitą, dlatego is_int(13.5) również zwróci FALSE. Warto zdawać sobie sprawę, że PHP jest językiem o systemie typów dynamicznych, co oznacza, że typy danych mogą się zmieniać w trakcie wykonywania programu. Dlatego, aby uniknąć błędów, zaleca się stosowanie funkcji walidacyjnych, takich jak is_int, przed wykonaniem operacji, które są uzależnione od określonego typu zmiennej. Dbanie o poprawną walidację danych jest fundamentalnym krokiem w tworzeniu bezpiecznych i stabilnych aplikacji.

Pytanie 9

Który ze sposobów komentowania kodu nie jest stosowany w kodzie jako komentarz PHP?

A. <!-- komentarz -->
B. // komentarz
C. /* komentarz */
D. # komentarz
W tym pytaniu kluczowe jest odróżnienie komentarzy w samym języku PHP od komentarzy w otaczającym go kodzie HTML. Wiele osób myli te dwie warstwy, bo pliki .php bardzo często zawierają jednocześnie kod HTML i PHP, i wtedy łatwo założyć, że skoro coś wygląda jak komentarz w przeglądarce, to na pewno jest też komentarzem dla interpretera PHP. To jest właśnie podstawowy błąd myślowy. W PHP obowiązuje składnia komentarzy przejęta głównie z języka C i powiązanych z nim technologii. Znak # oraz podwójny ukośnik // oznaczają komentarz jednolinijkowy – wszystko od tego znaku do końca linii jest ignorowane przez interpreter. Z kolei konstrukcja /* ... */ tworzy komentarz blokowy, który może obejmować wiele linii i jest bardzo wygodny do opisywania większych fragmentów kodu, np. funkcji, klas czy bardziej skomplikowanych algorytmów. Te trzy formy są pełnoprawnymi komentarzami PHP i są dokładnie opisane w oficjalnej dokumentacji języka. Problem pojawia się, gdy ktoś uzna, że <!-- komentarz --> też jest komentarzem PHP, bo „przecież używa się go w plikach .php”. Ten zapis jest jednak komentarzem HTML, rozumianym przez przeglądarkę internetową, a nie przez interpreter PHP. Działa on tylko w części dokumentu, którą przeglądarka widzi jako czysty HTML. Jeżeli taki komentarz wstawimy wewnątrz bloku <?php ... ?>, to PHP nie potraktuje go jako komentarz, tylko jako nieznane znaki, co w praktyce skończy się błędem składni. Z mojego doświadczenia wynika, że zamieszanie bierze się z tego, że w jednym pliku mieszają się dwa światy: serwerowy (PHP) i kliencki (HTML). Dobrą praktyką jest więc świadome rozdzielanie: w sekcjach PHP używamy wyłącznie #, // i /* */, a w czystym HTML – tylko <!-- -->. Pozwala to uniknąć trudnych do wykrycia błędów i sprawia, że kod jest czytelniejszy dla innych programistów, którzy od razu widzą, co jest komentarzem dla serwera, a co tylko dla frontendu.

Pytanie 10

Jakie z poniższych stwierdzeń poprawnie opisuje zdefiniowaną tabelę?

CREATE TABLE dane (kolumna INTEGER(3));
A. Tabela ma jedną kolumnę, która zawiera tablice z trzema elementami.
B. Tabela o nazwie dane zawiera trzy kolumny typu całkowitego.
C. Tabela o nazwie dane posiada jedną kolumnę liczb całkowitych.
D. Kolumny tabeli dane są nazywane: kolumna 1, kolumna2, kolumna3.
Wszystkie niepoprawne odpowiedzi opierają się na błędnych założeniach dotyczących definicji tabeli i jej kolumn. Twierdzenie, że kolumny tabeli dane nazywają się kolumna1, kolumna2, kolumna3, jest błędne, ponieważ zdefiniowana tabela posiada jedynie jedną kolumnę o nazwie 'kolumna'. W SQL kolumny tworzy się na podstawie zadanej definicji, a w tym przypadku nie ma żadnych dodatkowych kolumn. Kolejne błędne stwierdzenie, że tabela posiada trzy kolumny liczb całkowitych, jest również nieprawdziwe, ponieważ w rzeczywistości mamy tylko jedną kolumnę, nie trzy. Wartości 'kolumna1', 'kolumna2' i 'kolumna3' wskazują na nieporozumienie w interpretacji struktury tabeli. Ponadto, założenie, że tabela posiada jedną kolumnę zawierającą trzyelementowe tablice, jest całkowicie błędne. Typ danych INTEGER oznacza, że kolumna przechowuje pojedyncze liczby całkowite, a nie tablice. W SQL nie definiuje się tablic w ten sposób; jeżeli konieczne byłoby przechowywanie tablic, zastosowanie wymagałoby innego podejścia, takiego jak zdefiniowanie typu danych ARRAY (w systemach, które go obsługują) lub zastosowanie relacji w inny sposób. Tego rodzaju nieporozumienia mogą prowadzić do nieefektywnego projektowania baz danych oraz problemów w aplikacjach korzystających z tych danych, co podkreśla znaczenie dokładności w definiowaniu struktur baz danych.

Pytanie 11

Jaką wartość zwróci funkcja w języku C++, jeśli parametry wynoszą a = 4 oraz b = 3?

long int fun1(int a, int b)
{
long int wynik = 1;
for (int i = 0; i < b; i++)
wynik *= a;
return wynik;
}
A. 12
B. 1
C. 16
D. 64
Funkcja fun1 w języku C++ oblicza potęgę liczby a do b. Wykorzystuje pętlę for aby przemnożyć początkową wartość 1 przez a dokładnie b razy co daje wynik a do potęgi b. W tym przypadku gdy a = 4 i b = 3 funkcja wykonuje 3 iteracje mnożąc wynik początkowo równy 1 przez 4 daje 4 następnie 16 i ostatecznie 64. To podejście ilustruje podstawowe zastosowanie pętli for w obliczeniach iteracyjnych. Takie podejście do obliczania potęg jest efektywne dla małych potęg ale dla większych wartości można rozważyć algorytmy typu exponentiation by squaring które są optymalniejsze. W programowaniu C++ pętla for jest często stosowana do zadań o z góry określonej liczbie iteracji co czyni ją idealnym wyborem dla tego problemu. Ważne jest także zrozumienie jak zmienne takie jak wynik są wykorzystywane do przechowywania stanu w trakcie iteracji co jest kluczowe w wielu algorytmach programistycznych. Takie rozumowanie i wykorzystanie pętli for jest zgodne z dobrymi praktykami programowania.

Pytanie 12

Czym jest proces normalizacji tabel w kontekście baz danych?

A. wyłącznie stworzenie tabel oraz relacji w bazie
B. analiza i optymalizacja bazy danych
C. wprowadzenie nowych rekordów do bazy
D. wizualizacja struktury bazy danych
Normalizacja tabel to kluczowy proces w projektowaniu baz danych, który ma na celu minimalizację redundancji danych oraz zapewnienie ich integralności. Proces ten polega na organizowaniu danych w taki sposób, aby zmniejszyć powtarzalność oraz eliminować potencjalne anomalia podczas operacji na bazie, takich jak wstawianie, aktualizowanie czy usuwanie danych. Standardowe formy normalne, takie jak pierwsza, druga czy trzecia forma normalna, definiują zasady, według których można osiągnąć ten cel. Na przykład, w trzeciej formie normalnej, żadne niekluczowe atrybuty nie mogą być zależne od innych atrybutów, co pozwala na lepsze zarządzanie danymi. W praktyce, normalizacja może przyczynić się do efektywności zapytań SQL oraz ułatwiać zarządzanie danymi poprzez tworzenie relacji między tabelami. Przykładem może być rozdzielenie danych klienta i zamówienia do osobnych tabel, co pozwala na łatwiejsze aktualizacje informacji o kliencie bez konieczności modyfikowania całej historii zamówień. W ten sposób normalizacja wspiera standardy branżowe, takie jak ANSI SQL, a także najlepsze praktyki w zakresie projektowania baz danych.

Pytanie 13

Ile razy zostanie wykonana pętla napisana w języku PHP, przy założeniu, że zmienna kontrolna nie jest zmieniana w trakcie działania pętli?
for ($i = 0; $i <= 10; $i+=2) { .... }

A. 6
B. 0
C. 5
D. 10
Wybór błędnych odpowiedzi wynika z nieprawidłowego zrozumienia działania pętli for oraz sposobu, w jaki zostają liczone iteracje. Odpowiedzi takie jak 0, 5 czy 10 są oparte na mylących założeniach. Na przykład, odpowiedzi 0 i 10 mogą sugerować, że pętla nie wykonuje żadnych iteracji lub, że wykonuje ich zbyt wiele, co jest sprzeczne z rzeczywistością. Pętla for, jak w tym przypadku, zaczyna od 0 i kończy na 10, a krok wynosi 2. Zmiana wartości $i przy każdym przejściu pętli jest kluczowym elementem do zrozumienia. Jeśli więc zmienna nie jest zmieniana, nie osiągnie ona wartości końcowej prawidłowo. Typowym błędem jest także myślenie o warunkach w sposób nieprecyzyjny; w tym wypadku warunek $i <= 10 jest spełniony dla wartości 10, co może mylić. W praktyce, programiści powinni zawsze dokładnie analizować zakres iteracji, aby uniknąć błędnych założeń. To zrozumienie jest fundamentalne, aby pisać wydajny i bezpieczny kod, stosując się do najlepszych praktyk programistycznych.

Pytanie 14

Jakie źródło danych może posłużyć do stworzenia raportu?

A. zapytanie ALTER
B. zapytanie SELECT
C. etykieta
D. projekt raportu
Etykieta jako źródło danych dla raportu nie jest najlepszym pomysłem, bo sama etykieta nie ma danych, które można by analizować. To jakby mieć tylko opakowanie bez zawartości. Projekt raportu także nie nadaje się jako źródło, bo mówi głównie o tym, jak coś powinno wyglądać, a nie jakie info powinno być w środku. Ważne jest, żeby źródłem danych były konkretne tabele czy zapytania, które dostarczają faktyczną wiedzę. Co do zapytania ALTER, to też jest pewne nieporozumienie, bo ono służy do zmiany struktury bazy, a nie do pobierania danych. Może zmieniać kolumny czy tabelę, ale nie da nam informacji do raportu. Zdarza się, że mylimy różne funkcje w SQL, co prowadzi do użycia niewłaściwych narzędzi do analizy. Dlatego warto wiedzieć, do czego dokładnie służą zapytania SQL, żeby dobrze zarządzać danymi i robić sensowne raporty.

Pytanie 15

Podane zapytanie SQL przyznaje użytkownikowi adam@localhost uprawnienia:

GRANT SELECT, INSERT, UPDATE, DELETE
ON klienci TO adam@localhost
A. do manipulowania danymi w tabeli klienci
B. do zarządzania strukturą tabeli klienci
C. do manipulowania danymi bazy danych klienci
D. do zarządzania strukturą bazy danych klienci
Pozostałe opcje wskazują na zarządzanie strukturą bazy danych lub tabeli co w kontekście podanego polecenia SQL nie jest prawidłowe Zarządzanie strukturą bazy danych odnosi się do operacji takich jak tworzenie usuwanie lub modyfikowanie tabel indeksów i innych obiektów bazy danych Przykłady takich operacji to polecenia CREATE ALTER i DROP które zmieniają definicję strukturalną tabel lub innych obiektów bazodanowych W przypadku zarządzania strukturą tabeli moglibyśmy mówić o dodawaniu nowych kolumn zmienianiu typu danych istniejących kolumn czy zmianach w kluczach indeksach Tego typu zmiany nie są objęte poleceniem GRANT SELECT INSERT UPDATE DELETE które koncentruje się wyłącznie na manipulacji danymi w istniejącej strukturze Dlatego też typowym błędem myślowym jest utożsamianie operacji na danych z operacjami modyfikującymi strukturę bazy danych takimi jak dodawanie tabel czy kolumn Operatorzy SQL są precyzyjnie zdefiniowani i rozdzieleni na kategorie manipulacji danymi DML oraz definicji danych DDL co jest kluczowym rozróżnieniem w pracy z bazami danych

Pytanie 16

Pozycjonowanie poza stroną (off-page SEO) polega na

A. pozyskiwaniu linków zewnętrznych prowadzących do strony.
B. zoptymalizowaniu elementów grafiki i multimediów.
C. sprawdzeniu i testowaniu szybkości ładowania strony.
D. walidacji kodu HTML, CSS oraz linków.
Poprawnie – pozycjonowanie poza stroną (off-page SEO) dotyczy przede wszystkim wszystkiego, co dzieje się poza Twoją własną witryną, a ma wpływ na jej pozycję w wynikach wyszukiwania. Kluczowym elementem są właśnie linki zewnętrzne prowadzące do strony (backlinki). Dla Google i innych wyszukiwarek taki link to coś w rodzaju „głosu zaufania”: jeśli wartościowe, wiarygodne serwisy linkują do Twojej strony, to roboty wyszukiwarki zakładają, że treść też jest wartościowa. Oczywiście nie chodzi o byle jakie linki. Liczy się jakość domeny linkującej, tematyczne dopasowanie, naturalny profil linków, zróżnicowane anchory oraz to, czy linki nie pochodzą z podejrzanych źródeł (farmy linków, spam w komentarzach itd.). W praktyce off-page SEO to m.in.: publikacja artykułów gościnnych na innych portalach, zdobywanie wzmianek i linków z mediów branżowych, katalogów wysokiej jakości, forów tematycznych, social mediów oraz współpraca z influencerami. W dobrych praktykach SEO podkreśla się, że link building powinien być naturalny, rozłożony w czasie i wsparty realną wartością merytoryczną treści, do których prowadzą linki. Moim zdaniem sensowna strategia off-page zawsze zaczyna się od pytania: „Dlaczego ktoś miałby do mnie linkować?” – jeśli treść i oferta są słabe, to żadne linki nie pomogą na dłuższą metę. Warto też pamiętać, że off-page SEO to nie tylko linki, ale też sygnały zewnętrzne, takie jak brand mentions, opinie, recenzje, aktywność w social media. Jednak w kontekście tego pytania najważniejszym i najbardziej klasycznym elementem off-page SEO jest właśnie pozyskiwanie linków zewnętrznych.

Pytanie 17

Odszumienie zapisu dźwiękowego można wykonać w programie

A. Blender
B. Inkscape
C. FileZilla
D. Audacity
Poprawna odpowiedź to Audacity, bo jest to specjalistyczny, ale jednocześnie darmowy i otwartoźródłowy program do edycji oraz obróbki dźwięku. W praktyce oznacza to, że możesz w nim nagrywać, przycinać, normalizować, a właśnie także odszumiać nagrania audio. W menu Efekty znajdziesz funkcje typu „Usuwanie szumu” (Noise Reduction), które działają na podstawie próbki szumu – najpierw zaznaczasz fragment, gdzie słychać sam szum tła (np. wentylator, brumienie, szum ulicy), a potem program wykorzystuje ten wzorzec do odfiltrowania podobnych częstotliwości z całego nagrania. To jest standardowa, bardzo typowa procedura w amatorskiej i półprofesjonalnej postprodukcji audio. Moim zdaniem Audacity to taki „podstawowy kombajn” dźwiękowy, którego warto znać w technikum. Pozwala też stosować inne efekty: kompresję, korekcję barwy (EQ), filtrowanie dolno- i górnoprzepustowe, zmianę głośności (normalizacja, wzmacnianie), a nawet proste miksowanie kilku ścieżek. W kontekście dobrych praktyk ważne jest, żeby nie przesadzać z odszumianiem, bo zbyt agresywne ustawienia potrafią zepsuć brzmienie głosu, tworząc artefakty i metaliczny dźwięk. Profesjonaliści zwykle pracują tak, że najpierw nagrywają jak najczyściej (dobry mikrofon, cisza w pomieszczeniu), a dopiero potem delikatnie odszumiają w programie. Audacity dobrze wpisuje się w takie podejście, bo daje podgląd efektu (odsłuch) przed zatwierdzeniem zmian i możliwość cofania operacji. W realnych projektach szkolnych czy webowych, np. przy przygotowaniu podcastu, narracji do filmu instruktażowego albo materiału wideo na stronę WWW, właśnie w Audacity robi się podstawowe czyszczenie dźwięku, zanim materiał trafi do montażu wideo lub na serwer.

Pytanie 18

Który sposób na utworzenie tablicy w JavaScript jest niepoprawny pod względem składniowym?

A. var liczby = [1, 2, 3];
B. var liczby = [3];
C. var liczby = new Array[1, 2, 3];
D. var liczby = new Array(1, 2, 3);
Zauważyłeś, że zapis 'var liczby = new Array[1, 2, 3];' jest błędny, i masz rację. Problem tkwi w tym, że w JavaScript do tworzenia tablicy używa się nawiasów okrągłych, a nie kwadratowych. Dlatego poprawny sposób na utworzenie tablicy z liczbami 1, 2 i 3 to 'var liczby = new Array(1, 2, 3);'. Ale szczerze mówiąc, dużo lepiej jest używać literałów tablicowych, czyli 'var liczby = [1, 2, 3];'. To jest zdecydowanie prostsze i czytelniejsze. W programowaniu dobrze jest wybrać opcje, które sprawiają, że kod jest łatwiejszy do zrozumienia i utrzymania, a literały tablicowe to dokładnie to. Tak więc, kiedy możesz, korzystaj z tej prostszej formy.

Pytanie 19

Na ilustracji zaprezentowano koncepcję układu bloków strony internetowej. Przyjmując, że bloki są realizowane za pomocą znaczników sekcji, a szerokość jest określona tylko dla bloków 2, 3 oraz 4, ich stylowanie powinno uwzględniać właściwość

Ilustracja do pytania
A. float: left dla wszystkich bloków
B. clear: both dla wszystkich bloków
C. float: left jedynie dla bloków 3 i 4 oraz clear: both dla bloku 2
D. clear: both dla bloku 5 i float: left jedynie dla bloków 2, 3 oraz 4
Stosowanie float: left dla wszystkich bloków jest nieprawidłowe, ponieważ prowadziłoby do nieprzewidywalnego zachowania bloków 1 i 5, które powinny być pełnej szerokości strony. Użycie float: left dla bloku 1 oznaczałoby, że jego miejsce w układzie zależałoby od szerokości i pozycji innych pływających elementów. Podobnie blok 5 potrzebuje wyraźnej separacji od pływających elementów powyżej, co osiągamy dzięki clear: both. Użycie clear: both dla wszystkich bloków odwołuje się do nieprawidłowej koncepcji, ponieważ blokowałoby to pływanie, co jest kluczowe dla tworzenia układów wielokolumnowych. Clear: both zmusza element do rozpoczęcia pod pływającymi elementami, co oznacza, że bloki 2, 3 i 4 nie mogłyby być ustawione obok siebie, co nie spełnia wymagań projektu. Rozważenie float: left jedynie dla bloków 3 i 4 i clear: both dla bloku 2 zaburzyłoby logiczny ciąg layoutu ze względu na fizyczne blokowanie się bloków, co wywołałoby niepożądane przesunięcia i brak przewidywalności w wyświetlaniu. Zastosowanie float w celu tworzenia układów kolumnowych wymaga precyzyjnego zarządzania pływającymi elementami, a niepoprawne użycie właściwości clear może prowadzić do problemów z dostępnością i użytecznością strony. Dlatego właściwe zrozumienie tych koncepcji jest kluczowe w tworzeniu efektywnych i responsywnych projektów internetowych, zgodnych z oczekiwaniami użytkowników oraz standardami branżowymi.

Pytanie 20

Walidacja strony internetowej polega na

A. udostępnianiu w Internecie
B. sprawdzeniu jej w celu usunięcia błędów
C. zestawie działań mających na celu podniesienie liczby odwiedzin
D. reklamie strony
Proces walidacji strony internetowej to kluczowy etap w cyklu życia witryny, który ma na celu identyfikację i eliminację błędów technicznych oraz zgodność z określonymi standardami. Walidacja obejmuje sprawdzenie struktury HTML, CSS oraz JavaScript, co pozwala na upewnienie się, że strona działa poprawnie na różnych przeglądarkach i urządzeniach. Techniki walidacji mogą obejmować użycie narzędzi online, takich jak W3C Validator, który ocenia zgodność kodu z aktualnymi standardami W3C. Przykładowo, błędy w składni HTML mogą prowadzić do niepoprawnego renderowania strony, co negatywnie wpływa na doświadczenia użytkowników. Dodatkowo, walidacja może obejmować testy funkcjonalności oraz bezpieczeństwa, co jest szczególnie istotne w kontekście przetwarzania danych osobowych. Niezależnie od celu witryny - czy to e-commerce, blog, czy portal informacyjny - regularna walidacja pozwala na ich optymalizację oraz zwiększenie efektywności SEO. Przestrzeganie standardów nie tylko poprawia jakość strony, ale także może wpływać na jej pozycjonowanie w wynikach wyszukiwania.

Pytanie 21

W relacyjnych bazach danych dane zapisywane są w

A. tabelach.
B. listach.
C. wektorach.
D. kolejkach.
W relacyjnych bazach danych dane są przechowywane w tabelach, bo cały model relacyjny opiera się właśnie na pojęciu tabeli (relacji). Tabela to po prostu uporządkowany zbiór wierszy i kolumn: kolumny opisują strukturę danych (np. id, imię, nazwisko, email), a wiersze przechowują konkretne rekordy, czyli pojedyncze wpisy. Każda kolumna ma określony typ danych, np. INTEGER, VARCHAR, DATE, co pozwala silnikowi bazy danych kontrolować poprawność zapisów i optymalizować zapytania. Tak to działa w typowych systemach jak MySQL, PostgreSQL, SQL Server czy Oracle – wszędzie podstawową jednostką przechowywania danych użytkownika jest tabela. W praktyce, kiedy projektujesz bazę dla sklepu internetowego, tworzysz tabele takie jak users, products, orders, order_items. Potem za pomocą języka SQL wykonujesz na tych tabelach operacje SELECT, INSERT, UPDATE, DELETE. Klucze główne i obce też odnoszą się do tabel – klucz główny jednoznacznie identyfikuje wiersz w tabeli, a klucz obcy wskazuje na wiersz w innej tabeli, tworząc relację między nimi. To właśnie dzięki tabelom i relacjom możesz łączyć dane z wielu miejsc, np. pobrać zamówienia wraz z danymi klienta jednym zapytaniem. Moim zdaniem warto od początku myśleć o tabeli jak o odpowiedniku arkusza w Excelu, tylko z dużo bardziej rygorystycznymi zasadami i możliwością zaawansowanych zapytań. Standard SQL zakłada, że operujemy na relacjach, a w implementacjach relacja = tabela. Dlatego odpowiedź „tabelach” jest zgodna zarówno z teorią modelu relacyjnego, jak i z praktyką codziennej pracy z bazami danych.

Pytanie 22

Po zrealizowaniu przedstawionego fragmentu kodu w języku C/C++ do zmiennej o nazwie zmienna2 przypisany zostanie ```int zmienna1 = 158; int *zmienna2 = &zmienna1;```

A. przypisana liczba w kodzie binarnym odpowiadająca wartości, która jest przechowywana w zmienna1
B. przypisany adres zmiennej o nazwie zmienna1
C. przypisana zamieniona na łańcuch wartość, która jest przechowywana w zmienna1
D. przypisana ta sama wartość, która jest przechowywana w zmienna1
W odpowiedzi 1 stwierdzono, że zmiennej zmienna2 zostanie przypisany adres zmiennej zmienna1. To stwierdzenie jest poprawne, ponieważ w kodzie C/C++ operator '&' jest używany do uzyskania adresu zmiennej. W prezentowanym fragmencie kodu zmienna2 jest wskaźnikiem, który przechowuje adres zmiennej zmienna1, co oznacza, że zmienna2 wskazuje na lokalizację w pamięci, w której przechowywana jest wartość zmiennej zmienna1. Takie podejście jest kluczowe w programowaniu niskopoziomowym, gdzie manipulacja adresami pamięci jest często wykorzystywana do efektywnego zarządzania zasobami. Przykład praktyczny to dynamiczna alokacja pamięci, gdzie programista może przydzielać i zwalniać pamięć w trakcie działania programu, co jest możliwe dzięki wskaźnikom. Zrozumienie wskaźników i adresów jest fundamentalne w C/C++, a ich właściwe użycie przyczynia się do optymalizacji kodu oraz umożliwia tworzenie bardziej złożonych struktur danych, takich jak listy, stosy czy kolejki.

Pytanie 23

Z tabel Klienci oraz Uslugi należy wyodrębnić tylko imiona klientów oraz odpowiadające im nazwy usług, które kosztują więcej niż 10 zł. Kwerenda uzyskująca te informacje ma formę

Ilustracja do pytania
A. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id WHERE cena > 10
B. SELECT imie, nazwa FROM klienci, uslugi WHERE cena < 10
C. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id
D. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = klienci.id
Odpowiedź 4 jest prawidłowa, ponieważ prawidłowo wykorzystuje składnię SQL do połączenia dwóch tabel oraz filtrowania danych na podstawie podanego warunku. Kwerenda używa JOIN, aby połączyć tabele Klienci i Uslugi na podstawie wspólnej kolumny uslugi_id, co jest zgodne z zasadami relacyjnej bazy danych, gdzie klucz obcy w jednej tabeli odnosi się do klucza głównego w innej tabeli. Następnie, kwerenda stosuje filtrację WHERE cena > 10, co pozwala na wybór tylko tych rekordów, gdzie cena usługi przekracza 10 zł. Jest to zgodne z praktyką selektywnego pobierania danych, co jest kluczowe w optymalizacji zapytań i skutecznym zarządzaniu zasobami bazy danych. Zastosowanie takich technik jest standardem w branży, umożliwiając efektywne zarządzanie dużymi zbiorami danych oraz zwiększenie wydajności aplikacji poprzez ograniczenie liczby zwracanych wierszy do tych, które spełniają określone kryteria. Zrozumienie i umiejętność implementacji takich zapytań SQL to podstawowa umiejętność dla specjalistów IT pracujących z bazami danych.

Pytanie 24

W języku PHP zmienna $a została przypisana do wartości 1. Wyrażenie $a === $b będzie miało wartość true, gdy zmienna $b będzie ustawiona na wartość

A. "1" lub '1'
B. 1 lub '1'
C. *1
D. '1'
Odpowiedzi, które sugerują różne typy danych, takie jak '1', 1 lub '1', oraz \"1\" lub '1', mogą prowadzić do nieporozumień wynikających z niepełnego rozumienia operatorów porównania w PHP. W przypadku operatora porównania identyczności (===), ważne jest, aby zarówno wartość, jak i typ zmiennej były zgodne. Porównanie 1 (liczba całkowita) z '1' (łańcuch znaków) zwróci false, ponieważ różnią się one typem. Typowe błędy myślowe, prowadzące do takiej pomyłki, mogą wynikać z braku zrozumienia, jak PHP obsługuje typy danych i konwersję typów. Warto zauważyć, że w innych językach programowania porównania mogą działać inaczej, co może prowadzić do zamieszania, szczególnie w kontekście programowania w PHP. Istotne jest, aby przy projektowaniu aplikacji zawsze stosować porównania identyczności, by uniknąć nieprzewidzianych problemów związanych z typami danych. Dobrą praktyką jest również eksploracja dokumentacji PHP oraz testowanie porównań w praktyce, co pozwala na głębsze zrozumienie działania języka. Właściwe podejście do typów danych oraz klarowne rozumienie operatorów porównania są kluczowymi elementami skutecznego programowania w PHP.

Pytanie 25

W tabeli zwierzeta znajdują się pola: nazwa, gatunek, gromada, cechy oraz dlugosc_zycia. Aby uzyskać listę nazw zwierząt, które dożywają przynajmniej 20 lat i są ssakami, należy wykonać zapytanie:

A. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
B. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20;
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = 'ssak';
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 OR gromada = 'ssak';
Twoja odpowiedź jest jak najbardziej na miejscu, bo spełnia te dwa ważne wymagania z pytania: pokazuje nazwy zwierząt, które żyją przynajmniej 20 lat i są ssakami. Użycie AND w klauzuli WHERE sprawia, że w wynikach są tylko te zwierzęta, które pasują do obu kryteriów. To zapytanie ma swoje zastosowanie, na przykład w analizach zoologicznych, gdzie długość życia niektórych gatunków ssaków może być kluczowa, zwłaszcza w kontekście ochrony i badań nad ich ekologią. Z osobistego doświadczenia mogę powiedzieć, że dobrze jest stosować takie zapytania w bazach danych, bo to zapewnia lepszą efektywność i wydajność w przetwarzaniu danych. Generalnie w tworzeniu zapytań SQL warto zawsze ustalać konkretne warunki w klauzuli WHERE, żeby uniknąć niechcianych wyników i zmniejszyć obciążenie bazy danych.

Pytanie 26

Rodzaj programowania, w którym seria poleceń (sekwencja instrukcji) jest traktowana jako program, nazywa się programowaniem

A. funkcyjnym
B. stanowym
C. logicznym
D. imperatywnym
Programowanie funkcyjne, które można by błędnie uznać za odpowiedź, koncentruje się na obliczeniach jako na wywołaniach funkcji, co oznacza, że kluczowym aspektem tego podejścia jest niezmienność danych i unikanie efektów ubocznych. Funkcje w programowaniu funkcyjnym są traktowane jako pierwszorzędne obiekty, co różni je od programowania imperatywnego, gdzie głównym celem jest sekwencja instrukcji. Z tego powodu, w programowaniu funkcyjnym nie definiuje się programu jako ciągu poleceń, lecz jako zbiór transformacji danych. Programowanie logiczne z kolei skupia się na reprezentacji wiedzy w postaci faktów i reguł, umożliwiając systemom wnioskowanie, a nie na wykonywaniu instrukcji. Przykładem takiego podejścia jest Prolog, gdzie programy są formułowane w sposób deklaratywny. Programowanie stanowe, które również mogłoby być mylące, odnosi się do koncepcji, w której program operuje w różnych stanach, często z użyciem maszyn stanowych, co znowu nie odnosi się do ciągu instrukcji. Typowe błędy myślowe prowadzące do takich niepoprawnych wniosków często wynikają z nieporozumienia dotyczącego różnicy między różnymi paradygmatami programowania i ich zastosowaniami. Każde z tych podejść ma swoje unikalne cechy i zastosowania, ale kluczowa różnica, która definiuje programowanie imperatywne, to jego zależność od sekwencji instrukcji, co czyni je odmiennym od innych stylów programowania.

Pytanie 27

Która z poniższych zasad NIE WPŁYNIE pozytywnie na poprawę czytelności kodu?

A. Warto dodawać komentarze w bardziej skomplikowanych fragmentach kodu
B. Kod powinien być tworzony bez wcięć oraz zbędnych enterów
C. Każda linia kodu powinna zawierać tylko jedną komendę
D. Nazwy zmiennych powinny odzwierciedlać ich funkcję
Odpowiedź, że kod powinien być napisany bez wcięć i zbędnych enterów, jest poprawna, ponieważ w rzeczywistości brak wcięć i odpowiedniego formatowania znacząco obniża czytelność kodu. Wcięcia są kluczowe w wielu językach programowania, takich jak Python, gdzie definiują one blok kodu. Dobrze sformatowany kod, który wykorzystuje wcięcia i puste linie, ułatwia zrozumienie struktury programu i jego logiki. Przykładowo, w kodzie Pythona, brak wcięć skutkuje błędami składniowymi. Standardy kodowania, takie jak PEP 8 dla Pythona, jasno wskazują, że stosowanie wcięć jest nie tylko zalecane, ale wręcz wymagane dla utrzymania przejrzystości. Dobrze sformatowany kod zwiększa również jego utrzymywalność, co jest kluczowe w pracy zespołowej, gdzie wiele osób może pracować nad tym samym projektem. W praktyce, programiści często korzystają z narzędzi automatyzujących formatowanie kodu, co dodatkowo podnosi jego jakość i czytelność.

Pytanie 28

W PHP, aby poprawnie zakończyć połączenie z bazą danych MySQL, ostatnim krokiem powinno być użycie polecenia

A. mysqli_close
B. mysql_exit
C. exit
D. die
Aby prawidłowo obsłużyć połączenie z bazą danych MySQL w języku PHP, kluczowym krokiem jest zamknięcie tego połączenia po zakończeniu operacji na bazie danych. Najlepszą praktyką jest użycie funkcji mysqli_close. Ta funkcja jest częścią rozszerzenia MySQLi (MySQL Improved), które oferuje nowoczesne podejście do komunikacji z bazą danych, w tym zwiększone bezpieczeństwo i wydajność. Po wywołaniu mysqli_close, wszystkie zasoby związane z połączeniem są zwalnianie, co pozwala na uniknięcie potencjalnych wycieków pamięci. Przykładowe użycie: $connection = mysqli_connect('host', 'user', 'password', 'database'); // Po dokonaniu operacji na bazie danych mysqli_close($connection);. Ważne jest, aby zamykać połączenia, szczególnie w aplikacjach działających w środowisku produkcyjnym, aby zapewnić optymalne wykorzystanie zasobów serwera oraz bezpieczeństwo danych. Standardowe zalecenia dokumentacji PHP podkreślają znaczenie użycia mysqli_close w celu zakończenia sesji z bazą danych, co sprzyja stabilności i niezawodności aplikacji.

Pytanie 29

W tabeli Recepta pola Imię oraz Nazwisko odnoszą się do pacjenta, dla którego recepta została wystawiona. Jaką kwerendę należy wykorzystać, aby dla wszystkich recept uzyskać datę ich wystawienia oraz imię i nazwisko lekarza, który je wystawił?

Ilustracja do pytania
A. SELECT Imie, DataWystawienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id
B. SELECT Lekarz.Imie, Lekarz.Nazwisko, DataWystawienia FROM Recepta
C. SELECT Imie, Nazwisko, DataWystawienia FROM Recepta
D. SELECT Lekarz.Imie, Lekarz.Nazwisko, DataWystawienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id
Zauważyłem, że dobrze zrozumiałeś, jak skonstruować kwerendę SQL, która łączy dane lekarza z datą wystawienia recepty. Użycie klauzuli JOIN to kluczowa sprawa, bo dzięki temu możesz połączyć tabele Recepta i Lekarz na podstawie odpowiednich kluczy. Dzięki temu dostajesz imię i nazwisko lekarza, który wypisał daną receptę. Klauzula SELECT, którą używasz, wskazuje, co chcesz zobaczyć – w tym przypadku Imie i Nazwisko z tabeli Lekarz oraz Datę Wystawienia z tabeli Recepta. To jest naprawdę podstawowa umiejętność, która pomaga w pracy z relacyjnymi bazami danych. Z mojego doświadczenia, umiejętność tworzenia takich zapytań, pomoże nie tylko w nauce, ale i w przyszłej pracy, bo baza danych rzadko jest prosta i często trzeba łączyć różne dane. I jeszcze jedna rzecz: używanie JOIN w odpowiedni sposób może przyspieszyć działanie zapytań, co jest ważne, gdy mamy do czynienia z dużą ilością danych.

Pytanie 30

Wskaź komentarz, który zajmuje wiele linii, w języku PHP?

A. <!-- -->
B. /* */
C. / /
D. #
Komentarze wieloliniowe w języku PHP są definiowane za pomocą znaków '/*' na początku i '*/' na końcu bloku tekstu, co pozwala na umieszczanie komentarzy obejmujących wiele linii. Tego rodzaju komentarze są niezwykle przydatne w sytuacjach, gdy chcemy opisać bardziej złożone fragmenty kodu, jak również w celu wyłączenia większych sekcji kodu podczas debugowania. Komentarze wieloliniowe są zgodne ze standardem PHP, co czyni je preferowanym rozwiązaniem w wielu projektach programistycznych. Przykład użycia: /* To jest komentarz komentarz wieloliniowy w PHP */. W odróżnieniu od komentarzy jedno-liniowych, które są ograniczone do jednej linii (używając // lub #), komentarze wieloliniowe umożliwiają umieszczanie dłuższych opisów. Ważne jest, aby używać komentarzy z umiarem, aby kod pozostał czytelny i zrozumiały dla innych programistów oraz dla przyszłych wersji projektu.

Pytanie 31

Wskaż blok, który jest sformatowany zgodnie z podanym stylem CSS.

background: linear-gradient(to right, LightBlue, DarkBlue);
Ilustracja do pytania
A. Blok 1
B. Blok 4
C. Blok 3
D. Blok 2
Blok 2 jest poprawną odpowiedzią ponieważ wykorzystuje styl CSS background linear-gradient(to right LightBlue DarkBlue) co oznacza że gradient kolorów rozciąga się od lewej do prawej strony elementu CSS linear-gradient pozwala na tworzenie gładkich przejść między kolorami co jest popularną techniką w projektowaniu stron internetowych Styl ten dodaje wizualnej atrakcyjności i może być użyty w różnych częściach witryny takich jak przyciski nagłówki czy tła sekcji Właściwość gradientu pozwala na zastosowanie wielu kolorów i kontrolowanie ich punktów początkowych i końcowych co zwiększa elastyczność projektowania Ponadto gradienty są wspierane przez wszystkie nowoczesne przeglądarki co czyni je doskonałym wyborem dla responsywnych stron internetowych Wykorzystanie gradientów zamiast obrazów tła pomaga także w optymalizacji strony zmniejszając czas ładowania co jest zgodne z najlepszymi praktykami branżowymi i wpływa pozytywnie na doświadczenie użytkownika CSS oferuje również inne typy gradientów takie jak radial-gradient i conic-gradient które mogą być używane w zależności od potrzeb projektowych

Pytanie 32

Na podstawie przypisania wartości do zmiennych zapisanych w języku PHP można stwierdzić, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. zmienna2 i zmienna3 są tego samego typu.
B. zmienna1 i zmienna2 są tego samego typu.
C. Wszystkie zmienne są tego samego typu.
D. zmienna1 i zmienna3 są tego samego typu.
Gratulacje! Wybrałeś poprawną odpowiedź, czyli zmienna2 i zmienna3 są tych samych typów. W kodzie PHP wartość zmiennej1 była liczbą całkowitą (int), natomiast wartość zmiennej2 była ciągiem znaków (string). Zmienna3 natomiast była wynikiem rzutowania zmiennej1 na typ string. Stąd wynika, że zmienna2 i zmienna3 są obie typu string. Rzutowanie to operacja konwersji jednego typu danych na inny, co jest powszechną praktyką w programowaniu. Używane jest, na przykład, kiedy chcemy porównać dwa różne typy danych lub chcemy je połączyć. Pamiętaj jednak, że PHP jest językiem o dynamicznych typach, co oznacza, że typ zmiennej może ulec zmianie w trakcie wykonania skryptu. Dlatego zawsze warto mieć na uwadze typy zmiennych, z którymi pracujesz.

Pytanie 33

Jakie skutki wywoła poniższy fragment kodu w języku JavaScript? ```n = "Napis1"; s = n.length;```

A. Przypisze zmiennej s wartość odpowiadającą długości tekstu w zmiennej n
B. Przypisze zmiennej s część napisu ze zmiennej n o długości określonej przez zmienną length
C. Przypisze wartość zmiennej n do zmiennej s
D. Wyświetli liczbę znaków napisu z zmiennej n
Fragment skryptu w języku JavaScript, w którym zmienna n jest przypisana do napisu "Napis1", a następnie zmienna s jest przypisana do długości tego napisu, korzysta z właściwości length. Odpowiedź 3 jest poprawna, ponieważ właściwość length dla obiektów typu string zwraca liczbę znaków w danym napisie. W tym przypadku "Napis1" ma 6 znaków, więc zmienna s przyjmie wartość 6. Tego typu operacje są powszechnie stosowane w programowaniu do manipulacji i analizy danych tekstowych, co jest istotnym aspektem tworzenia aplikacji webowych. W praktyce, programiści często muszą sprawdzać długość napisów, aby weryfikować dane wejściowe, przygotowywać napisy do dalszego przetwarzania lub dostosowywać interfejs użytkownika. Dobrym przykładem zastosowania length jest walidacja formularzy, gdzie długość wprowadzonego tekstu musi spełniać określone kryteria, np. minimalną lub maksymalną liczbę znaków. Warto zaznaczyć, że zgodnie ze standardami ECMAScript, wszystkie napisy w JavaScript mają tę właściwość, co czyni ją niezwykle użyteczną w codziennej pracy programisty.

Pytanie 34

W języku HTML, aby uzyskać następujący efekt formatowania
pogrubiony pochylony lub w górnym indeksie
należy zapisać kod:

A. <b>pogrubiony </b><i>pochylony</i> lub w <sup>górnym indeksie</sup>
B. <i>pogrubiony <b>pochylony lub w </i><sup>górnym indeksie</sup>
C. <i>pogrubiony </i><b>pochylony </b>lub w <sub>górnym indeksie</sub>
D. <b>pogrubiony <i>pochylony</i></b> lub w <sup>górnym indeksie</sup>
Odpowiedź, w której użyłeś znaczników <b> i <i> w odpowiednich miejscach, jest całkiem dobra. Znak <b> jest świetny do pogrubiania tekstu, co przydaje się, gdy chcesz podkreślić coś ważnego. Natomiast <i> pozwala na pochylanie tekstu, co dodaje mu charakteru i może sugerować cytaty czy tytuły. Co ciekawe, znacznik <sup> stosujemy, gdy chcemy pokazać górny indeks, np. przy potęgach czy jednostkach miar. Przykład takiego użycia byłby taki: <b>Waga</b> <i>w kilogramach</i> wynosi <sup>2</sup> dla dwóch jednostek. Jak widać, stosowanie HTML w odpowiedni sposób pozwala robić czytelne i estetyczne prezentacje, co jest zgodne z dobrymi praktykami w web designie oraz standardami W3C. Warto też pamiętać, że dobrze dobrane znaczniki mają znaczenie nie tylko wizualne, ale także pomagają w indeksowaniu treści przez wyszukiwarki, co z kolei wpływa na SEO.

Pytanie 35

Zgodnie z zasadami ACID, które odnoszą się do realizacji transakcji, wymóg trwałości (ang. durability) oznacza, że

A. transakcja może w pewnych okolicznościach być podzielona na dwa niezależne etapy
B. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od wydarzeń, które nastąpią po jej zakończeniu
C. w trakcie wykonywania transakcji dane mogą być zmieniane przez inne transakcje
D. w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi
Trwałość (czyli durability) w bazach danych to taka cecha, która mówi, że jak już zatwierdzisz transakcję, to wszystkie zmiany zostaną na zawsze w systemie. To znaczy, że niezależnie od tego, co się później wydarzy, jak na przykład awaria, Twoje dane są bezpieczne. To naprawdę ważne, bo pozwala na utrzymanie spójności i pewności, że system działa tak, jak powinien. Weźmy na przykład systemy bankowe. Gdy robisz przelew, musisz być pewien, że pieniądze poszły tam, gdzie miały, nawet jak serwer padnie tuż po zakończeniu transakcji. Dobrze jest mieć też takie mechanizmy, jak zapisywanie dzienników, które pomagają odtworzyć dane, jeśli coś pójdzie nie tak. Trwałość to kluczowa sprawa w projektowaniu baz danych, bo buduje zaufanie użytkowników oraz pozwala spełnić różne normy i regulacje.

Pytanie 36

W języku JavaScript zdefiniowano obiekt ```obiekt = { q: 1, w: 2, e: 3, r: 4 };``` W jaki sposób można uzyskać wartość właściwości ```w```?

A. obiekt.w
B. obiekt->w
C. obiekt::w
D. obiekt:w
Aby uzyskać dostęp do wartości własności obiektu w JavaScript, stosuje się notację kropkową. Odpowiedź obiekt.w jest poprawna, ponieważ w JavaScript, odwołując się do właściwości obiektu, używamy kropki jako separatora między nazwą obiektu a nazwą właściwości. W podanym przykładzie obiekt ma cztery właściwości: q, w, e oraz r, z których każda ma przypisaną wartość. Używając notacji obiekt.w, możemy bezpośrednio uzyskać wartość 2, która jest przypisana do właściwości w. W praktyce, notacja kropkowa jest powszechnie stosowana i jest preferowaną metodą dostępu do właściwości obiektów, ponieważ jest bardziej czytelna i łatwiejsza w użyciu. Alternatywnie, można również użyć notacji nawiasowej, jak obiekt['w'], co może być przydatne, gdy nazwa właściwości zawiera znaki niedozwolone w identyfikatorach, ale w większości przypadków notacja kropkowa jest bardziej ergonomiczna i zalecana zgodnie z dobrymi praktykami programowania.

Pytanie 37

W skrypcie PHP konieczne jest stworzenie cookie o nazwie owoce, które przyjmie wartość jabłko. Cookie powinno być dostępne przez jedną godzinę od momentu jego utworzenia. W tym celu w skrypcie PHP należy wykorzystać funkcję:

A. cookie("owoce","jabłko",3600);
B. setcookie("owoce","jabłko",time()+3600);
C. setcookie("jabłko","owoce",time()+3600);
D. cookie("jabłko","owoce",3600);
Funkcja setcookie w PHP jest kluczowym narzędziem do zarządzania ciasteczkami, a w szczególności do ich tworzenia. W przypadku prawidłowej odpowiedzi, setcookie("owoce","jabłko",time()+3600) poprawnie ustawia nazwę ciasteczka na 'owoce', przypisując mu wartość 'jabłko'. Funkcja time() zwraca aktualny czas w sekundach od 1 stycznia 1970 roku, a dodanie 3600 do tej wartości ustawia czas wygaśnięcia ciasteczka na jedną godzinę od momentu jego utworzenia. Jest to standardowa praktyka, by zapewnić, że cookie będzie dostępne przez określony czas. W kontekście aplikacji webowych, cookies są często wykorzystywane do przechowywania informacji o preferencjach użytkowników, sesjach logowania czy koszykach zakupowych. Ważne jest, aby przy tworzeniu ciasteczek upewnić się, że nazwa i wartość są odpowiednio sformatowane, a czas wygaśnięcia jest zgodny z oczekiwaniami. Prawidłowe zarządzanie ciasteczkami przyczynia się do lepszej interakcji z użytkownikami oraz zwiększa wydajność aplikacji.

Pytanie 38

Jakiego rodzaju oprogramowanie narzędziowe jest wymagane, aby użytkownik mógł przeprowadzać operacje na zebranych danych?

A. Obiektowy System Zarządzania Bazą Danych
B. Klucz obcy
C. Otwarty mechanizm komunikacji bazy danych
D. System Zarządzania Bazą Danych (SZBD)
Obiektowy System Zarządzania Bazą Danych, klucz obcy oraz otwarty mechanizm komunikacji bazy danych to pojęcia związane z zarządzaniem danymi, jednak nie spełniają one roli SZBD. Obiektowe systemy zarządzania bazą danych (OODBMS) różnią się od tradycyjnych SZBD tym, że przechowują dane w formie obiektów zgodnych z paradygmatem programowania obiektowego. Choć OODBMS mogą być użyteczne w specyficznych zastosowaniach, ich zastosowanie nie jest uniwersalne jak w przypadku SZBD. Klucz obcy to natomiast termin odnoszący się do atrybutu w tabeli, który wskazuje na klucz główny innej tabeli, co pozwala na tworzenie relacji między danymi, ale klucz obcy nie jest oprogramowaniem i nie umożliwia samodzielnego zarządzania danymi. Z kolei otwarty mechanizm komunikacji bazy danych odnosi się do protokołów i standardów, które umożliwiają współpracę między różnymi systemami, jednak również nie spełnia funkcji SZBD. Typowe błędy myślowe prowadzące do takich wniosków to brak zrozumienia różnicy między pojęciem systemu zarządzania bazą danych a specyficznymi elementami, takimi jak klucze czy mechanizmy komunikacji. W tej sytuacji kluczowe jest zrozumienie, że aby móc wykonywać operacje na danych, konieczne jest zainstalowanie odpowiedniego SZBD, które zapewnia pełną funkcjonalność w zarządzaniu danymi.

Pytanie 39

Podczas zapisywania hasła użytkownika w serwisie WWW, na przykład w bankowości internetowej, aby zabezpieczyć je przed odczytaniem, zazwyczaj stosuje się funkcję

A. abstrakcyjnych
B. mieszających
C. klucza
D. cyklometrycznych
Użycie klucza do zabezpieczania haseł użytkowników jest standardową praktyką w dziedzinie bezpieczeństwa informatycznego. Klucz, który może być generowany na podstawie hasła lub stanowić odrębny, losowy ciąg znaków, jest stosowany w procesach szyfrowania. Dzięki temu, nawet jeśli dane hasło zostanie przechwycone, bez klucza nie jest możliwe jego odczytanie. W praktyce powszechnie wykorzystuje się algorytmy kryptograficzne, takie jak AES (Advanced Encryption Standard), które wymagają kluczy do szyfrowania i deszyfrowania informacji. W kontekście hasła użytkownika, stosuje się także techniki takie jak hashowanie, gdzie dane są przekształcane w unikalny skrót. Przykładem jest funkcja bcrypt, która nie tylko przechowuje hasło, ale i dodaje sól, co dodatkowo utrudnia ataki słownikowe. Takie podejście do zarządzania hasłami jest zgodne z najlepszymi praktykami, jak OWASP Password Storage Cheat Sheet, która zaleca unikanie przechowywania haseł w formie czystego tekstu oraz stosowanie silnych algorytmów kryptograficznych.

Pytanie 40

W przedstawionym filmie, aby połączyć tekst i wielokąt w jeden obiekt tak, aby operacja ta była odwracalna zastosowano funkcję

A. wykluczenia.
B. sumy.
C. części wspólnej.
D. grupowania.
Prawidłowo – w filmie została użyta funkcja grupowania. W grafice wektorowej, np. w programach typu Inkscape, CorelDRAW czy Illustrator, grupowanie służy właśnie do logicznego połączenia kilku obiektów w jeden „zestaw”, ale bez trwałego mieszania ich geometrii. To znaczy: tekst dalej pozostaje tekstem, wielokąt dalej jest wielokątem, tylko są traktowane jak jeden obiekt przy przesuwaniu, skalowaniu czy obracaniu. Dzięki temu operacja jest w pełni odwracalna – w każdej chwili możesz rozgrupować elementy i edytować każdy osobno. Moim zdaniem to jest podstawowa dobra praktyka w pracy z projektami, które mogą wymagać późniejszych poprawek: podpisy, etykiety, logotypy, schematy techniczne. Jeśli połączysz tekst z kształtem za pomocą operacji boolowskich (suma, część wspólna, wykluczenie), to tekst zwykle zamienia się na krzywe, przestaje być edytowalny jako tekst. To bywa potrzebne przy przygotowaniu do druku czy eksportu do formatu, który nie obsługuje fontów, ale nie wtedy, gdy zależy nam na łatwej edycji. Z mojego doświadczenia: przy projektowaniu interfejsów, ikon, prostych banerów na WWW czy grafik do multimediów, najrozsądniej jest najpierw grupować logicznie elementy (np. ikona + podpis), a dopiero na samym końcu, gdy projekt jest ostateczny, ewentualnie zamieniać tekst na krzywe. Grupowanie pozwala też szybko zaznaczać całe moduły projektu, wyrównywać je względem siebie, duplikować całe zestawy (np. kafelki menu, przyciski z opisami) bez ryzyka, że coś się rozjedzie. W grafice komputerowej to taka podstawowa „organizacja pracy” – mniej destrukcyjna niż różne operacje na kształtach i zdecydowanie bardziej elastyczna przy późniejszych zmianach.