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: 30 kwietnia 2026 07:41
  • Data zakończenia: 30 kwietnia 2026 08:04

Egzamin zdany!

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

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

A. function wynik(a) { return 2*a/a; }
B. function wynik(a) { return a/2+a/2; }
C. function wynik(a) { return a*2/2; }
D. function wynik(a) { return a*a/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 2

Do tabeli pracownicy wpisano rekordy. Co zostanie wyświetlone po uruchomieniu kwerendy SQL SELECT podanej poniżej?

SELECT SUM(pensja) FROM pracownicy WHERE pensja > 4000;
idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
A. Wartość 19500, czyli suma wszystkich pensji pracowników.
B. Wartość 5400, czyli najwyższa pensja pracownika.
C. Wartość 10000, czyli suma pensji pracownika o id=4 oraz o id=6.
D. Dwie wartości: 4600 i 5400, jako pensje pracowników wyższe niż 4000.
Niestety, twoja odpowiedź nie jest poprawna. W przypadku tej konkretnej kwerendy, została użyta funkcja agregująca SUM(), która zwraca sumę wartości dla określonego zestawu wierszy, nie jednak wartości indywidualne. Dlatego odpowiedź mówiąca o wyświetleniu dwóch wartości jako pensje pracowników wyższych niż 4000 jest niepoprawna - kwerenda agregująca nie zwróci wartości indywidualnych. Odpowiedź mówiąca o wyświetleniu sumy wszystkich pensji pracowników jest również błędna, ponieważ w kwerendzie jest zastosowany warunek WHERE, który ogranicza zestaw danych do tych, gdzie pensja przekracza 4000. Wyświetlenie najwyższej pensji pracownika również nie jest poprawne, ponieważ nie została użyta funkcja MAX, która zwraca najwyższą wartość w zestawie. Kluczowe jest zrozumienie, jak działają różne operatory i funkcje w SQL i kiedy ich używać. W tym przypadku funkcja SUM() zastosowana do kolumny 'pensja' zwraca sumę pensji dla pracowników, którzy zarabiają więcej niż 4000.

Pytanie 3

Model, w którym wszystkie informacje są zgromadzone w jednej tabeli, określa się jako struktura prostych baz danych

A. hierarchicznym
B. relacyjnym
C. jednorodnym
D. sieciowym
No więc, wybór modelu sieciowego mija się z celem, bo ten model opiera się na strukturze grafik, gdzie dane są przechowywane z różnymi relacjami między sobą. Model sieciowy pozwala na tworzenie bardziej skomplikowanych więzi niż te w modelu jednorodnym, co jest fajne w systemach, które potrzebują lepszego zarządzania danymi. A model relacyjny też tu nie pasuje, bo on działa na relacjach między tabelami i wykorzystuje klucze do łączenia danych z różnych tabel – to już jest przeciwieństwo modelu jednorodnego. Model hierarchiczny natomiast buduje dane jak drzewo, gdzie każdy element może mieć pod-elementy, co też nie pasuje do prostego modelu jednorodnego. Każdy z tych modeli ma swoje zastosowanie i plusy, ale żaden z nich nie oddaje idei modelu jednorodnego z danymi w jednej tabeli. Warto pamiętać, że dobry wybór modelu danych to klucz do łatwiejszej pracy z bazą, a zrozumienie różnic między nimi naprawdę wpływa na projektowanie systemów informatycznych.

Pytanie 4

Co należy zweryfikować przed wykonaniem kopii zapasowej bazy danych, aby było możliwe jej późniejsze odtworzenie w poprawny sposób?

A. spójność bazy danych
B. poprawność składni zapytań
C. prawa dostępu do serwera bazy danych
D. możliwość udostępnienia bazy danych
Zarządzanie bazą danych wymaga zrozumienia, że przed wykonaniem kopii bezpieczeństwa kluczowe jest zapewnienie, że baza danych jest spójna. Wybór odpowiedzi dotyczącej możliwość udostępnienia bazy danych wskazuje na niezrozumienie podstawowych zasad operacji na bazie danych. Udostępnienie bazy może wiązać się z ryzykiem w przypadku, gdy użytkownicy wprowadzają dane w czasie wykonywania kopii zapasowej, co może prowadzić do niespójności. Prawa dostępu do serwera bazy danych są istotne, ale bez upewnienia się, że dane są spójne, nawet najlepiej zabezpieczona baza może okazać się problematyczna podczas przywracania. Poprawność składni zapytań jest także ważna, jednak nie ma bezpośredniego wpływu na jakość kopii zapasowej, ponieważ może być temat dotyczący operacji wykonywanych na danych, a nie samego stanu bazy. Spójność danych zapewnia, że wszystkie zależności i relacje między danymi są nienaruszone, co jest kluczowe, aby móc polegać na kopii zapasowej jako wiarygodnym źródle danych. Przykładem błędnego rozumienia może być sytuacja, w której administrator baz danych, koncentrując się na dostępności, ignoruje mechanizmy zapewniające integralność danych, co prowadzi do nieprzewidzianych błędów przy próbie ich odtworzenia.

Pytanie 5

Baza danych zawiera tabelę uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL powinno być użyte, aby wyświetlić imiona i nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%"
B. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = "M%"
C. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN "M%"
D. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN "M%"
Wybór opcji SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%" jest poprawny, ponieważ używa klauzuli WHERE do filtrowania rekordów na podstawie warunków. Operator LIKE pozwala na wyszukiwanie wzorców w danych tekstowych, a symbol % jest używany jako wildcard, co oznacza, że zastępuje dowolny ciąg znaków. Dzięki temu zapytanie zwraca wszystkich uczniów, których nazwiska zaczynają się na literę M. Takie podejście jest zgodne z najlepszymi praktykami w SQL, gdzie klauzula WHERE jest fundamentalnym elementem selekcji danych. W praktyce, gdy chcemy wyszukiwać dane w bazach danych, użycie LIKE w połączeniu z symbolami wieloznacznymi (takimi jak %) jest powszechną techniką, stosowaną w aplikacjach webowych i systemach zarządzania danymi. Przykładowo, w systemie szkolnym, takie zapytanie może być używane do generowania listy uczniów w celu wysyłania powiadomień lub gromadzenia informacji o postępach w nauce.

Pytanie 6

Fragment kodu w języku PHP przedstawia się następująco (patrz ramka): W wyniku wykonania pętli zostaną wyświetlone liczby

Ilustracja do pytania
A. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
B. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
C. 0, 4, 8, 12, 16
D. 0, 4, 8, 12, 16, 20
Pętla for w PHP to naprawdę podstawowe narzędzie, które pozwala nam w łatwy sposób powtarzać różne operacje na danych. W tej pętli zaczynamy od $i równego 0, a kończymy, kiedy $i osiągnie 20. W każdej iteracji dodajemy 4 do $i, więc wypisujemy liczby od 0 do 20, co 4 jednostki. Super sprawa, jeśli chcemy równomiernie przetwarzać dane. Przykładowo, gdy mamy jakieś tabele z danymi albo potrzebujemy wygenerować wykresy w regularnych odstępach, to taka pętla się przydaje. Stosowanie pętli to też dobra praktyka programistyczna, bo automatyzuje nam powtarzalne zadania, co czyni kod bardziej przejrzystym. Jak zrozumiesz, jak działa ta pętla, to dużo łatwiej będzie ci tworzyć różne algorytmy, co jest super ważne w informatyce.

Pytanie 7

Jakie jest zastosowanie programu debugger?

A. analizy wykonywanego programu w celu lokalizacji błędów
B. tłumaczenia kodu napisanego w języku wyższego poziomu na język maszynowy
C. interpretacji kodu w wirtualnej maszynie Java
D. badania kodu źródłowego w celu znalezienia błędów składniowych
Program debugger to narzędzie, które umożliwia programistom analizę wykonywanego programu w celu lokalizacji błędów, co jest kluczowym elementem procesu tworzenia oprogramowania. Debuggery pozwalają na zatrzymywanie wykonania programu w określonych momentach, co pozwala na inspekcję stanu zmiennych oraz wywołań funkcji w danym momencie. Dodatkowo, wiele debuggerów oferuje możliwość krokowego przechodzenia przez kod, co ułatwia zrozumienie logiki programu i identyfikację błędów. Przykładem może być użycie debuggera w IDE, takich jak Visual Studio czy Eclipse, gdzie można ustawić punkty przerwania i obserwować zmiany w czasie rzeczywistym. Zastosowanie debuggera jest zgodne z najlepszymi praktykami branżowymi, które zalecają regularne testowanie i debugowanie kodu w trakcie jego pisania, co znacząco zwiększa jakość oprogramowania oraz przyspiesza proces developmentu. Warto również zaznaczyć, że dobra znajomość narzędzi debugujących jest niezbędna dla każdego programisty, aby efektywnie rozwiązywać problemy i dostarczać stabilne aplikacje.

Pytanie 8

W języku PHP do zmiennej a przypisano tekst, w którym słowo Kowalski pojawia się wielokrotnie. Aby jednym poleceniem zamienić wszystkie wystąpienia słowa Kowalski na słowo Nowak, trzeba użyć polecenia

A. $a = str_rep('Kowalski','Nowak',$a);
B. $a = str_replace('Nowak','Kowalski');
C. $a = str_replace('Nowak', 'Kowalski',$a);
D. $a = str_replace('Kowalski','Nowak',$a);
Pierwsza odpowiedź jest nieprawidłowa, ponieważ funkcja str_rep nie istnieje w PHP. Wszelkie próby użycia takiego polecenia skutkują błędami, ponieważ PHP nie rozpoznaje tej funkcji. Zrozumienie właściwych nazw funkcji oraz ich składni jest kluczowe w programowaniu, aby uniknąć błędów. W drugiej odpowiedzi, funkcja str_replace została wywołana z niewłaściwymi parametrami, ponieważ brakuje trzeciego argumentu, który jest wymagany do zdefiniowania zmiennej, w której dokonujemy zamiany. Nieprawidłowe podejście do składni funkcji prowadzi do nieefektywnego kodu. Kolejna odpowiedź, w której zamieniamy 'Nowak' na 'Kowalski', także jest błędna, ponieważ nie spełnia celu zamiany wskazanego w pytaniu. Całkowicie odwrotne podejście do problemu może prowadzić do wprowadzenia błędnych danych. Warto zwrócić uwagę, że typowe błędy myślowe, takie jak nieprawidłowe przypisanie argumentów funkcji, mogą wynikać z braku znajomości dokumentacji lub niewłaściwego zrozumienia działania funkcji. Ostatecznie, kluczem do skutecznego programowania jest nie tylko znajomość składni, ale także umiejętność analizy i testowania kodu, co można osiągnąć poprzez praktykę oraz korzystanie z zasobów edukacyjnych.

Pytanie 9

Przedstawiony w ramce kod języka PHP oznacza, że zmienna $liczba2 jest

Ilustracja do pytania
A. wskaźnikiem do $liczba1
B. iloczynem logicznym ze zmienną $liczba1
C. negacją logiczną zmiennej $liczba1
D. referencją do $liczba1
Instrukcja $liczba2 = &$liczba1; w PHP oznacza, że zmienna $liczba2 staje się referencją do $liczba1. Ten znak ampersanda (&) nie jest żadnym operatorem logicznym, tylko właśnie operatorem referencji w PHP. W praktyce oznacza to, że obie zmienne wskazują na to samo miejsce w pamięci, więc przechowują dokładnie tę samą wartość. Jeżeli później w kodzie napiszesz $liczba1 = 10; to automatycznie $liczba2 też będzie miała wartość 10, i odwrotnie – zmiana $liczba2 zmieni $liczba1. Z mojego doświadczenia w PHP referencje używa się głównie wtedy, gdy chcemy, żeby funkcja modyfikowała przekazaną zmienną bez zwracania jej wyniku, albo gdy operujemy na dużych strukturach danych (tablice, obiekty) i nie chcemy kopiować ich zawartości. Przykład: function zwieksz(&$x){ $x++; } sprawi, że wywołanie zwieksz($liczba1); zmieni wartość zmiennej poza funkcją. To jest typowy, całkiem często spotykany wzorzec w starszych projektach PHP. Warto też pamiętać, że referencja w PHP nie jest tym samym, co wskaźnik w C/C++. Programista nie operuje bezpośrednio na adresach pamięci, tylko na abstrakcji zaprojektowanej przez silnik Zend. Dobra praktyka jest taka, żeby referencji używać oszczędnie i świadomie, bo nadmierne ich stosowanie utrudnia debugowanie, testowanie jednostkowe i zrozumienie przepływu danych w aplikacji. W nowoczesnym kodzie PHP częściej korzysta się z przekazywania obiektów (które zachowują się referencyjnie) oraz z czytelnego zwracania wartości z funkcji. Mimo to, rozumienie mechanizmu referencji jest bardzo ważne, bo nadal pojawia się w wielu istniejących aplikacjach webowych i w zadaniach egzaminacyjnych.

Pytanie 10

Grafik chce przekształcić bez utraty jakości obraz formatu JPEG w format PNG w ten sposób, żeby wszędzie tam, gdzie w pierwotnym obrazie jest kolor biały, w obrazie docelowym była przezroczystość. Aby to zrobić, powinien

A. zmniejszyć rozdzielczość obrazu.
B. dodać kanał alfa.
C. zaimportować obraz do edytora grafiki wektorowej.
D. przekształcić obraz w odcienie szarości.
Prawidłowa odpowiedź wynika z samej idei przezroczystości w grafice rastrowej. Żeby w PNG jakikolwiek piksel mógł być przezroczysty, obraz musi mieć kanał alfa, czyli dodatkową składową opisującą stopień przeźroczystości (opacity) dla każdego piksela. Standardowe RGB ma trzy kanały: R (czerwony), G (zielony), B (niebieski). Format PNG bardzo często używa wariantu RGBA, gdzie A (alpha) definiuje, na ile piksel jest widoczny: 0 oznacza całkowitą przezroczystość, 255 (albo 1.0 przy wartościach zmiennoprzecinkowych) pełną nieprzezroczystość. Dopiero po dodaniu kanału alfa można w programie graficznym zaznaczyć wszystkie białe obszary i ustawić im wartość alfa na 0. To właśnie realizuje wymaganie: „tam gdzie biały – ma być przezroczystość”. Z mojego doświadczenia w pracy z grafiką na potrzeby WWW, typowy workflow wygląda tak: otwierasz JPEG w edytorze rastrowym (np. GIMP, Photoshop, Krita), konwertujesz obraz do trybu z kanałem alfa (w Photoshopie: „Layer > New > Layer from Background” i „Add Layer Mask” albo „Add Alpha Channel” w GIMP-ie), następnie za pomocą narzędzia zaznaczania koloru (Magic Wand / Select by Color) wybierasz białe fragmenty i je usuwasz lub zmniejszasz im krycie. Dopiero potem zapisujesz jako PNG, który natywnie wspiera przezroczystość zgodnie ze specyfikacją formatu. Ważne też, że przy takim przekształceniu nie zwiększasz strat kompresji, bo PNG jest formatem bezstratnym. Straty są już w JPEG-u i ich się nie cofnie, ale samo przejście do PNG z kanałem alfa nie pogorszy jakości bardziej. W praktyce to jest standardowa procedura przygotowania ikon, logotypów i elementów UI na strony WWW, gdzie tło strony „prześwituje” przez przezroczyste fragmenty grafiki.

Pytanie 11

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. kolejnych liczb od x do 0
B. kolejnych liczb od 0 do x-1
C. liczb wprowadzanych z klawiatury, aż do momentu wprowadzenia wartości x
D. losowych liczb z zakresu (0, x)
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 12

Skrypt w języku JavaScript, który zajmuje się płacami pracowników, ma na celu stworzenie raportu dla osób zatrudnionych na umowę o pracę, które otrzymują wynagrodzenie w przedziale 4000 do 4500 zł, w tym przedziale obustronnie domkniętym. Jakie jest kryterium do wygenerowania raportu?

A. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
B. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
C. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
D. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
Wielu uczniów ma kłopoty z poprawnym rozumieniem operatorów logicznych i jak je łączyć. Na przykład, odpowiedź umowa == 'praca' || (pensja >= 4000 || pensja <= 4500) jest niepoprawna, bo mówi, że wystarczy spełnić chociaż jeden z warunków, co nie zgadza się z tym, czego chcieliśmy. W tej sytuacji, jeśli pracownik nie ma umowy o pracę, a jego pensja wynosi 5000 zł, to raport i tak może się wygenerować, co jest sprzeczne z zamysłem pytania. Inny błąd to użycie '||' w odpowiedzi umowa == 'praca' && (pensja >= 4000 || pensja <= 4500) – to znowu prowadzi do nieprawidłowego wniosku. Gdy pensja wynosi 3500 zł, raport ma szansę na generację, mimo że nie spełnia wymogu dotyczącego płac. W odpowiedzi umowa == 'praca' || (pensja >= 4000 && pensja <= 4500) też widać błędne zrozumienie operatorów, co prowadzi do sytuacji, w której raport może być generowany dla pracowników z pensjami poniżej 4000 zł, tylko dlatego, że mają umowę o pracę. Kluczowy błąd to brak dostrzegania, że w takich sytuacjach wszystkie warunki muszą być spełnione, co oznacza, że trzeba używać operatora '&&'. Zrozumienie operatorów logicznych to podstawa w programowaniu i bardzo ważny element przy tworzeniu skutecznych skryptów.

Pytanie 13

Aby włączyć zewnętrzny skrypt JavaScript o nazwie skrypt.js, konieczne jest umieszczenie w kodzie HTML

A. <script> skrypt.js </script>
B. <link rel="script" href="/skrypt.js" />
C. <script src="/skrypt.js"></script>
D. <link rel="JavaScript" type="js" href="/skrypt.js" />
Poprawna odpowiedź to <script src="/skrypt.js"></script>. Wykorzystanie atrybutu src w tagu <script> to standardowa metoda do ładowania zewnętrznych skryptów JavaScript w HTML. Dzięki temu przeglądarka wie, żeby pobrać i uruchomić kod z pliku skrypt.js. To z kolei pozwala na lepszą organizację, bo możemy używać tego samego skryptu w różnych miejscach projektu. No i w praktyce, to przynosi dużo korzyści, jak łatwiejsze utrzymanie czy debugowanie aplikacji. Jak mamy porządnie zorganizowany kod, to strona się szybciej ładuje, a przeglądarka może buforować te skrypty. Na koniec warto dodać, że dobrze osadzone skrypty wpływają też pozytywnie na SEO, bo wyszukiwarki lubią strony, które są zorganizowane i zoptymalizowane. Warto pamiętać, żeby umieszczać tagi <script> na końcu dokumentu HTML, zaraz przed zamknięciem tagu </body>, bo to pozwala na szybsze wyświetlanie zawartości.

Pytanie 14

W języku JavaScript, element został uzyskany przy pomocy metody getElementById. Jaką właściwość należy zastosować, aby zmienić zawartość tego elementu?

A. innerBody
B. Body
C. innerHTML
D. HTML
W każdej z niepoprawnych odpowiedzi występują podstawowe nieporozumienia dotyczące właściwości i metod związanych z manipulacją elementami DOM w JavaScript. Odpowiedź 'Body' odnosi się do całego dokumentu HTML i nie jest to właściwość, która pozwala na bezpośrednią modyfikację zawartości konkretnego elementu. Z kolei 'HTML' nie jest właściwością, lecz odnosi się do formatu dokumentu, co nie ma związku z manipulacją wewnętrzną pojedynczych elementów. Odpowiedź 'innerBody' jest nieprawidłowa, ponieważ nie istnieje taka właściwość w standardowym zestawie właściwości DOM; być może była to próba odwołania się do właściwości innerHTML, jednak jest to błędny termin. W kontekście programowania, ważne jest, aby rozumieć, że właściwości i metody muszą być zgodne z aktualnym standardem ECMAScript oraz specyfikacją DOM. Przykładowo, używanie textContent zamiast innerHTML jest preferowane w przypadkach, gdy nie chcemy, aby wprowadzany HTML został zinterpretowany lub gdy unikamy ryzyk związanych z bezpieczeństwem. Dlatego kluczowe jest zrozumienie różnicy pomiędzy tymi właściwościami i ich zastosowaniami oraz trzymanie się najlepszych praktyk w programowaniu, aby unikać błędów i potencjalnych luk bezpieczeństwa.

Pytanie 15

W SQL, aby zaktualizować informacje w wierszach w tabeli, konieczne jest użycie polecenia

A. SELECT
B. ALTER TABLE
C. UPDATE
D. INSERT INTO
Odpowiedź "UPDATE" jest właściwa, bo w SQL to właśnie to polecenie używamy do zmiany danych w już istniejących wierszach tabeli. Żeby zaktualizować konkretne kolumny w danym wierszu, trzeba wpisać coś takiego: "UPDATE nazwa_tabeli SET kolumna1 = wartość1, kolumna2 = wartość2 WHERE warunek". Dzięki klauzuli WHERE możemy dokładnie wskazać, które wiersze chcemy zmienić, co jest naprawdę ważne, żeby wszystko działało sprawnie i bezpiecznie. Na przykład, jeśli chcemy zmienić nazwisko użytkownika o id równym 1, napiszemy: "UPDATE Użytkownicy SET nazwisko = 'NoweNazwisko' WHERE id = 1". Używanie tego polecenia to dobra praktyka w zarządzaniu bazami danych. Nie zapominajmy o transakcjach, żeby mieć pewność, że dane są bezpieczne. A jak korzystamy z przygotowanych zapytań, to zminimalizujemy ryzyko ataków SQL injection, co jest bardzo istotne w kontekście bezpieczeństwa aplikacji bazodanowych.

Pytanie 16

W CSS wartości: underline, overline, blink są powiązane z atrybutem

A. font-weight
B. text-decoration
C. text-style
D. font-style
Atrybut text-decoration w CSS jest tym, co pozwala na dodawanie różnych efektów do tekstu. Możemy dzięki niemu użyć takich rzeczy jak underline, overline czy nawet blink, chociaż to ostatnie nie jest już zbyt popularne, bo wiele przeglądarek to ignoruje ze względu na dostępność. Dzięki tym efektom tekst może wyglądać bardziej estetycznie, a czytelność też się poprawia. Na przykład, jeśli użyjesz 'p { text-decoration: underline; }', to cały tekst w tym paragrafie będzie podkreślony. W CSS3 dodano też nowe możliwości, jak text-decoration-color czy text-decoration-style, co daje jeszcze większą kontrolę nad tym, jak nasz tekst będzie wyglądał. Dlatego myślę, że umiejętność korzystania z text-decoration jest naprawdę ważna dla każdego, kto zajmuje się tworzeniem stron internetowych.

Pytanie 17

W SQL polecenie ALTER TABLE służy do

A. usuwania tabeli z bazy danych
B. zmiany kolumn w tabeli
C. dodawania tabeli do bazy danych
D. zmiany danych w rekordach tabeli
Polecenie ALTER TABLE w języku SQL jest kluczowym narzędziem do modyfikacji struktury tabeli w bazie danych. Umożliwia dodawanie, modyfikowanie oraz usuwanie kolumn, co jest niezbędne w przypadku zmieniających się wymagań biznesowych lub technicznych. Na przykład, jeśli firma decyduje się na dodanie nowego atrybutu do produktu, można to zrobić za pomocą ALTER TABLE, co zapewni elastyczność w zarządzaniu danymi. Przykładowe polecenie może wyglądać tak: ALTER TABLE produkty ADD COLUMN kolor VARCHAR(30); Warto podkreślić, że zmiany wprowadzone za pomocą ALTER TABLE są trwałe i mogą wpływać na już istniejące dane, dlatego przed ich zastosowaniem zaleca się wykonanie kopii zapasowej bazy danych. Praktyki związane z właściwym używaniem ALTER TABLE powinny obejmować także testowanie w środowisku developerskim przed wdrożeniem zmian w produkcji, aby uniknąć nieprzewidzianych problemów.

Pytanie 18

W HTML, aby ustawić tytuł dokumentu na "Moja strona", który pojawi się na karcie przeglądarki internetowej, należy użyć zapisu

A. <title>Moja strona</title>
B. <meta title="Moja strona">
C. <head>Moja strona</head>
D. <meta name="title" content="Moja strona">
Element <title> w HTML jest naprawdę ważny, bo to właśnie on ustala, co zobaczysz na zakładce w przeglądarce. Powinien być umieszczony w sekcji <head>, co jest zgodne z tym, co mówi W3C. Poprawny zapis wygląda tak: <title>Moja strona</title>, co sprawia, że "Moja strona" będzie się pokazywać jako tytuł w przeglądarce. Tytuł strony ma spore znaczenie dla SEO, bo wpływa na to, jak strona jest pozycjonowana w wynikach wyszukiwania. Warto, żeby tytuł był krótki, ale jednocześnie zawierał istotne informacje, a najlepiej, żeby nie miał więcej niż 60 znaków, żeby się nie obcinał w wynikach. Fajnie też umieścić w tytule kluczowe słowa, które opisują, o czym jest strona, bo to może zwiększyć jej atrakcyjność i CTR. Dobrze skonstruowany tytuł to też lepsza dostępność, bo ułatwia użytkownikom poruszanie się i orientowanie w otwartych zakładkach.

Pytanie 19

W katalogu www znajdują się podkatalogi html oraz styles, w których umieszczone są pliki o rozszerzeniu html oraz pliki z rozszerzeniem css. Aby dołączyć styl.css do pliku HTML, należy zastosować

A. <link rel=" Stylesheet" type="text/css" href="www/style/styl. css" />
B. <link rel="Stylesheet" type="text/css" href="styl.css" />
C. <link rel="Stylesheet" type="text/css" href="../style/styl.css" />
D. <link rel="Stylesheet" type="text/css" href="/style/styl.css" />
Przy analizie pozostałych odpowiedzi można dostrzec pewne powszechne błędy w rozumieniu ścieżek do zasobów w dokumentach HTML. W pierwszej odpowiedzi, użycie ścieżki 'www/style/styl.css' sugeruje, że autor zakłada, że jest to pełna ścieżka dostępu, co jest mylące, ponieważ taka ścieżka nie jest względna w kontekście pliku HTML znajdującego się w folderze 'html'. Ponadto, użycie dużych liter w atrybucie 'rel' (np. 'Stylesheet') jest niepoprawne, ponieważ HTML jest językiem case-insensitive, lecz konwencjonalnie zaleca się używanie małych liter. Druga odpowiedź, wskazująca na '/style/styl.css', implikuje, że 'style' jest umiejscowione w katalogu głównym serwera, co również jest błędne w kontekście podanej struktury folderów. Takie podejście jest typowym błędem przy zrozumieniu relatywnych i bezwzględnych ścieżek URL. Ostatnia odpowiedź, 'styl.css', zakłada, że plik CSS znajduje się w tym samym folderze co plik HTML, co nie odpowiada rzeczywistości w przedstawionym układzie folderów. Wszyscy, którzy pracują nad projektami webowymi, muszą zrozumieć, jak ważne jest precyzyjne określenie lokalizacji zasobów, ponieważ błędy te mogą prowadzić do ładowania nieprawidłowych plików, co w efekcie negatywnie wpływa na wygląd i funkcjonalność strony. Wiedza na temat struktury folderów oraz umiejętność nawigacji po nich jest kluczowym elementem w pracy programisty.

Pytanie 20

Polecenie w języku SQL w formie

ALTER TABLE 'miasta' 
ADD 'kod' text; 
A. w tabeli miasta zmienia nazwę kolumny kod na text.
B. dodaje do tabeli dwie kolumny o nazwach: kod i text.
C. dodaje do tabeli kolumnę o nazwie kod typu text.
D. zmienia nazwę tabeli miasta na kod.
Poprawna odpowiedź to 'dodaje do tabeli kolumnę o nazwie kod typu text'. Polecenie SQL ALTER TABLE służy do modyfikacji struktury istniejącej tabeli, a w tym przypadku dodaje nową kolumnę do tabeli 'miasta'. Składnia ADD 'kod' text oznacza, że do tabeli zostanie dodana kolumna o nazwie 'kod', której typ danych to 'text'. Typ danych 'text' jest używany do przechowywania długich ciągów tekstowych, co jest przydatne w przypadku danych takich jak opisy czy komentarze. W praktyce, dodawanie kolumn do tabeli jest często wykorzystywane w procesie rozwoju bazy danych, aby dostosować strukturę do zmieniających się potrzeb aplikacji. W przypadku dodawania kolumn w sposób nieinwazyjny, jak w tym przykładzie, zapewniamy, że istniejące dane nie zostaną utracone, a nowa kolumna będzie dostępna do natychmiastowego użycia. Warto również pamiętać, aby stosować konwencje nazewnictwa, które poprawiają czytelność i zrozumiałość kodu SQL, co jest zalecane w dobrych praktykach projektowania baz danych.

Pytanie 21

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: right; } section { float: right; }
B. nav { float: left; } aside { float: left; }
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 22

W wyniku walidacji strony został wygenerowany błąd. Oznacza on, że

Ilustracja do pytania
A. w atrybucie charset jest dozwolona wyłącznie wartość "utf-8".
B. w znaczniku meta nie występuje atrybut charset.
C. oznaczenie ISO-8859-2 nie istnieje.
D. oznaczenie kodowania znaków powinno być zapisane bez myślników.
No niestety, odpowiedź nie jest poprawna. Ten błąd walidacji wynika z tego, że przy atrybucie charset w znaczniku meta tylko 'utf-8' jest akceptowane. Inne oznaczenia, jak 'iso-8859-2', mimo że są poprawne jako typy kodowania, nie mogą być używane w tym kontekście. Również pamiętaj, że atrybut charset nie może być pusty, co sugeruje jedna z Twoich odpowiedzi. HTML5 wymaga, żeby ten atrybut zawsze był obecny i miał wartość 'utf-8'. A tak w ogóle, nie można podawać kodowania bez myślników. Prawdziwy zapis to 'utf-8'. Z kolei 'iso-8859-2' jest wprawdzie realnym typem kodowania, ale w tym przypadku to nie przechodzi.

Pytanie 23

Zasłanianie niektórych pól lub metod obiektów danej klasy w sposób, który umożliwia dostęp wyłącznie wewnętrznym metodom tej klasy lub funkcjom zaprzyjaźnionym, to

A. konkatenacja
B. dziedziczenie
C. hermetyzacja
D. polimorfizm
Polimorfizm to zdolność obiektów do przyjmowania różnych form, co oznacza, że można stosować tę samą metodę do różnych typów obiektów. Nie ma on jednak związku z ukrywaniem pól i metod, a raczej koncentruje się na interfejsach i implementacjach, które mogą różnić się w zależności od kontekstu, co sprawia, że nie jest poprawną odpowiedzią w kontekście tego pytania. Konkatenacja to proces łączenia dwóch lub więcej ciągów tekstowych w jeden długi ciąg. Choć często pojawia się w programowaniu, nie jest to koncepcja związana z ukrywaniem pól czy metod w klasach, więc jej wybór w tym kontekście jest błędny. Dziedziczenie to mechanizm, który pozwala na tworzenie nowych klas na podstawie istniejących, co umożliwia ponowne użycie kodu. Podobnie jak polimorfizm, dziedziczenie nie odnosi się do hermetyzacji, ponieważ nie dotyczy ochrony i ukrywania wewnętrznych danych czy metod w klasie, lecz skupia się na relacjach między klasami i ich hierarchią. W związku z tym te odpowiedzi nie pasują do opisanego w pytaniu zagadnienia.

Pytanie 24

Która lista jest interpretacją przedstawionego kodu?

<ol>
    <li>muzyka
        <ul>
            <li>Wpis1</li>
            <li>Wpis2</li>
        </ul>
    </li>
    <li>filmy
        <ul>
            <li>Wpis3</li>
            <li>Wpis4</li>
        </ul>
    </li>
</ol>
A. Lista uporządkowana z podpunktami zapisanymi w formie numeracji dziesiętnej (np. 1.1, 1.2).
B. Lista uporządkowana z sześcioma następującymi elementami.
C. Lista uporządkowana z dwoma składnikami, z których każdy ma wewnętrzną listę nieuporządkowaną.
D. Lista nieuporządkowana zawierająca wszystkie składniki, jeden za drugim.
Przedstawiony kod HTML jest przykładem zagnieżdżonych list uporządkowanych i nieuporządkowanych. Na poziomie głównym użyto listy uporządkowanej oznaczonej tagiem <ol> która tworzy listę numerowaną. Listy zagnieżdżone opisane są za pomocą tagu <ul> co oznacza listy nieuporządkowane punktowane. Wewnętrzna struktura kodu pokazuje jak zagnieżdżać listy aby tworzyć hierarchiczne struktury które są często stosowane na stronach internetowych do organizowania treści. Taka organizacja danych jest szczególnie przydatna w przypadku tworzenia menu rozwijanych lub katalogów. Aby zrozumieć prawidłowość tej struktury należy zapoznać się z zasadą zagnieżdżania elementów w HTML gdzie jeden element może zawierać inne w celu tworzenia bardziej złożonych układów. Popularnymi zastosowaniami są również generowanie drzew katalogów oraz nawigacji w witrynach. Standardy HTML sugerują takie podejście do strukturyzacji danych aby były one semantycznie poprawne a zarazem łatwe do odczytania przez przeglądarki internetowe co zwiększa ich dostępność i użyteczność. Praktyka ta jest zgodna z dobrymi praktykami projektowania webowego gdzie zrozumiałość kodu oraz jego struktura są kluczowe dla dalszego rozwoju czy utrzymania aplikacji.

Pytanie 25

Wskaż właściwą sekwencję kroków w procesie projektowania relacyjnej bazy danych?

A. Selekcja, Określenie relacji, Określenie kluczy głównych tabel, Określenie zbioru danych
B. Określenie zbioru danych, Selekcja, Określenie kluczy głównych tabel, Określenie relacji
C. Określenie relacji, Określenie kluczy głównych tabel, Selekcja, Określenie zbioru danych
D. Określenie kluczy głównych tabel, Określenie zbioru danych, Selekcja, Określenie relacji
Wybranie błędnej odpowiedzi sugeruje, że nie do końca rozumiesz, jak działa proces projektowania relacyjnej bazy danych. Kiedy kolejność kroków jest pomijana, mogą się pojawić problemy. Czasem widziałem, że klucze podstawowe są określane jeszcze przed zdefiniowaniem zbioru danych. To może prowadzić do błędnego przypisania kluczy do tabel. Klucz podstawowy powinien być oparty na wcześniej zdefiniowanych danych, żeby wszystko było unikalne i wartościowe. Jak się nie rozumie, jakie dane mają być w bazie, to ustalanie relacji na wyrost nie ma sensu. W praktyce, jeśli źle podchodzimy do projektowania bazy danych, to później mogą być kłopoty z zarządzaniem danymi, co wpłynie na efektywność naszej aplikacji. Dlatego warto skupić się na dobrze przemyślanym zbiorze danych zanim zaczniemy myśleć o kluczach i relacjach.

Pytanie 26

W kodzie HTML zamieszczono link do strony internetowej:

<a href="http://google.com">strona Google</a>
Jakie dodatkowe zmiany należy wprowadzić, aby link otwierał się w nowym oknie lub zakładce przeglądarki, dodając do definicji linku odpowiedni atrybut?
A. target = "_parent"
B. target = "_blank"
C. rel = "next"
D. rel = "external"
Atrybut target w HTML ma na celu określenie, w jaki sposób ma być otwierany odnośnik. Wartość _blank wskazuje przeglądarkę, że nowa strona powinna zostać otwarta w nowym oknie lub zakładce. Jest to istotne dla poprawy użyteczności strony internetowej, gdyż użytkownicy mogą łatwo wrócić do oryginalnej strony po otwarciu nowego linku. W kontekście dobrych praktyk w projektowaniu stron internetowych, otwieranie odnośników w nowym oknie jest zalecane w przypadku linków zewnętrznych, aby użytkownik nie opuścił aktualnej witryny. Przykładem zastosowania jest link do dokumentacji czy zasobów zewnętrznych, gdzie ma to na celu zachowanie kontekstu przeglądania. Stosując ten atrybut, warto jednak pamiętać o tym, aby nie nadużywać go, ponieważ może to być irytujące dla użytkowników, którzy wolą kontrolować, kiedy nowe okno jest otwierane. Warto również pamiętać, że w nowoczesnych standardach HTML5 atrybut target jest często stosowany w połączeniu z atrybutem rel, aby określić, czy link jest zaufany czy nie. Umożliwia to jeszcze lepsze zarządzanie bezpieczeństwem użytkowników.

Pytanie 27

O zmiennej predefiniowanej

$_POST 
w języku PHP można stwierdzić, że
A. jest rozwiniętą wersją tablicy $_SESSION
B. zawiera dane bezpośrednio dostarczone do skryptu z ciasteczka
C. zawiera dane przesłane do skryptu za pośrednictwem formularza
D. jest odwzorowaniem tablicy $_COOKIE
Odpowiedź, że zmienna predefiniowana $_POST zawiera dane przesłane do skryptu z formularza, jest w pełni poprawna. W języku PHP, $_POST to jedna z superglobalnych tablic, która umożliwia dostęp do danych przesyłanych metodą POST. Metoda ta jest powszechnie stosowana w formularzach HTML, gdzie użytkownik może wprowadzać dane, które następnie są wysyłane do serwera. Na przykład, formularz kontaktowy, w którym użytkownik wprowadza swoje imię i adres e-mail, może być przetwarzany za pomocą $_POST, co pozwala na łatwą i bezpieczną obsługę danych. Dobrą praktyką jest również walidacja danych przed ich użyciem, aby zminimalizować ryzyko ataków, takich jak SQL Injection czy XSS. Dzięki zastosowaniu $_POST, programiści mogą przechwytywać i przetwarzać dane użytkowników w bardziej zaawansowany sposób, co pozwala na dynamiczne generowanie treści i interakcję z użytkownikami.

Pytanie 28

Jednoznacznym identyfikatorem rekordu w bazie danych jest pole

A. wyłącznie typu logicznego.
B. klucza głównego.
C. wyłącznie typu tekstowego.
D. klucza obcego.
W tym zagadnieniu łatwo pomylić różne typy pól i ich role w bazie danych, szczególnie gdy ktoś dopiero zaczyna przygodę z SQL i projektowaniem relacyjnych baz danych. Jednoznaczny identyfikator rekordu to takie pole, które pozwala bez żadnych wątpliwości wskazać dokładnie jeden wiersz w tabeli. W standardzie relacyjnych baz danych tę rolę pełni klucz główny, oznaczany jako PRIMARY KEY. Klucz obcy jest często mylony z kluczem głównym, bo też dotyczy identyfikatorów, ale jego zadanie jest inne. Foreign key służy do tworzenia powiązań między tabelami – przechowuje wartości klucza głównego z innej tabeli. Sam w sobie nie musi być unikalny, wręcz przeciwnie, w relacji 1:N zwykle powtarza się wiele razy. Dlatego nie może być uznany za jednoznaczny identyfikator rekordu w swojej tabeli. Gdybyśmy próbowali identyfikować rekordy po kluczu obcym, szybko okazałoby się, że wiele wierszy ma tę samą wartość i nie da się wskazać jednego, konkretnego. Kolejny typ błędnego rozumowania to przekonanie, że o byciu identyfikatorem decyduje typ danych, np. logiczny albo tekstowy. Typ logiczny (BOOLEAN, TINYINT(1) itp.) ma zwykle tylko dwie możliwe wartości: true/false, 0/1. Nietrudno zauważyć, że w dowolnej realnej tabeli więcej niż dwa rekordy nie będzie mogło mieć unikalnej wartości takiego pola, więc nie da się w ten sposób jednoznacznie identyfikować wierszy. Typ tekstowy też sam w sobie niczego nie gwarantuje. Można mieć kolumnę VARCHAR z e-mailem użytkownika, ale jeśli nie nałożymy ograniczenia unikalności i nie oznaczymy jej jako klucz główny, baza danych nie będzie pilnowała, by wartości się nie powtarzały. Częsty błąd myślowy polega na tym, że skoro w praktyce „zazwyczaj” coś jest unikalne (np. PESEL, e-mail), to ktoś zakłada, że to automatycznie jest klucz główny. Tymczasem dopiero formalne zadeklarowanie PRIMARY KEY (ewentualnie UNIQUE + NOT NULL, ale to już bardziej obejście) nadaje kolumnie rolę jednoznacznego identyfikatora w sensie technicznym. Dlatego nie typ danych, nie to czy pole wygląda na ważne, tylko jego definicja jako klucza głównego w strukturze tabeli decyduje o tym, że identyfikuje rekord jednoznacznie.

Pytanie 29

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

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

Pytanie 30

Dostosowanie wyglądu witryny do indywidualnych preferencji użytkownika oraz jego identyfikacja w systemie są możliwe dzięki mechanizmowi

A. łączenia z bazą
B. cookie
C. formularzy
D. obiektów DOM
Wybór formularzy, DOM i łączenia z bazą danych jako sposobów na personalizację strony i identyfikację użytkownika to trochę nieporozumienie. Formularze pozwalają na wysyłanie danych, jak logowanie czy rejestracja, ale same w sobie nie przechowują informacji o użytkownikach. Ich głównym celem jest interakcja z użytkownikiem. Obiekty DOM to właściwie struktura dokumentu HTML i umożliwiają modyfikację elementów na stronie, ale nie służą do identyfikacji użytkownika. Łączenie z bazą danych jest ważne dla przechowywania danych, ale to nie to samo co lokalne przechowywanie, które jest kluczowe dla personalizacji. Jeśli chcesz dobrze projektować aplikacje webowe, warto zrozumieć te różnice, bo błędy mogą się zdarzyć, zwłaszcza jeśli chodzi o cookies.

Pytanie 31

Jakiego znacznika używamy do definiowania list w HTML?

A. <tr>
B. <ul>
C. <th>
D. <td>
<ul> to znacznik w języku HTML, który definiuje nienumerowaną listę, co czyni go kluczowym elementem do strukturyzacji zawartości w dokumentach. Użycie <ul> pozwala na grupowanie powiązanych elementów, co zwiększa czytelność i dostępność treści. Zgodnie z zasadami semantycznego HTML, stosowanie list poprawia organizację informacji i ułatwia ich przetwarzanie przez maszyny, w tym wyszukiwarki internetowe. Przykład zastosowania: w sekcji strony internetowej przedstawiającej cechy produktu możemy użyć <ul> do wypisania jego zalet. Dobrym zwyczajem jest także dodawanie odpowiednich znaczników <li> dla poszczególnych elementów listy. Przykład: <ul><li>Zaleta 1</li><li>Zaleta 2</li></ul>. Dzięki temu tworzony jest bardziej przejrzysty i strukturalny układ treści, co przekłada się na lepsze doświadczenia użytkownika oraz spełnia standardy W3C dotyczące semantyki HTML.

Pytanie 32

Które z poniższych stwierdzeń na temat klucza głównego jest prawdziwe?

A. Może przyjmować wyłącznie wartości liczbowe
B. W przypadku tabeli z danymi osobowymi może to być pole nazwisko
C. Składa się wyłącznie z jednego pola
D. Jest unikalny dla danej tabeli
Klucz podstawowy to atrybut (lub zbiór atrybutów) w tabeli, który jednoznacznie identyfikuje każdy wiersz w tej tabeli. Jego unikalność w obrębie tabeli jest kluczowa, ponieważ pozwala na zapobieganie duplikatom i zapewnia integralność danych. Na przykład, w tabeli przechowującej informacje o klientach, kolumna z identyfikatorem klienta (np. ID klienta) powinna być kluczem podstawowym, ponieważ każdy klient musi mieć unikalny identyfikator. Standardy baz danych, takie jak model relacyjny, podkreślają znaczenie kluczy podstawowych w zapewnieniu stabilności i efektywności w przechowywaniu danych. Użycie klucza podstawowego również wpływa na wydajność operacji wyszukiwania i łączenia tabel, dlatego w projektowaniu baz danych należy starannie dobierać atrybuty, które będą pełnić tę rolę, aby spełniały wymagania unikalności oraz wydajności.

Pytanie 33

Przedstawiony w ramce fragment kwerendy SQL ma za zadanie wybrać

SELECT COUNT(wartosc) FROM ...
A. liczbę kolumn.
B. liczbę wierszy.
C. średnią w kolumnie wartosc.
D. sumę w kolumnie wartosc.
Poprawnie: wyrażenie SELECT COUNT(wartosc) ma za zadanie zwrócić liczbę wierszy, w których kolumna wartosc nie jest pusta (czyli nie ma wartości NULL). Funkcja agregująca COUNT() w SQL właśnie do tego służy – zlicza rekordy. W wersji COUNT(nazwa_kolumny) zliczane są tylko te wiersze, gdzie w tej kolumnie znajduje się jakaś konkretna wartość. To jest ważne rozróżnienie: COUNT(*) liczy wszystkie wiersze w tabeli lub wyniku kwerendy, natomiast COUNT(wartosc) pomija rekordy z NULL w tej kolumnie. Moim zdaniem to jedna z podstawowych rzeczy, które trzeba mieć „w ręku”, pracując z bazami danych. W praktyce używa się tego np. do sprawdzenia, ilu klientów podało numer telefonu, ilu pracowników ma przypisaną premię, ile zamówień ma ustawioną datę realizacji itd. Zamiast ręcznie przeglądać dane, odpalasz prostą kwerendę: SELECT COUNT(telefon) FROM klienci; i od razu wiesz, ile jest uzupełnionych pól. Dobre praktyki mówią też, żeby świadomie wybierać pomiędzy COUNT(*) a COUNT(kolumna), bo dają one różne wyniki przy brakach danych. W raportowaniu biznesowym to ma ogromne znaczenie, bo łatwo wyciągnąć złe wnioski, jeśli ktoś nie rozumie, co dokładnie liczy dana funkcja. W projektach komercyjnych COUNT() jest jedną z najczęściej używanych funkcji agregujących obok SUM(), AVG(), MIN() i MAX(), więc warto od razu nauczyć się jej poprawnej interpretacji i stosowania w połączeniu z klauzulą WHERE oraz GROUP BY, żeby liczyć wiersze spełniające konkretne warunki, np. ilu użytkowników aktywowało konto w danym miesiącu.

Pytanie 34

W tabeli samochody w bazie danych, pole kolor może przyjmować jedynie wartości zdefiniowane w słowniku lakier. Jaką kwerendę należy wykorzystać, aby ustanowić relację między tabelami samochody a lakier?

A. ALTER TABLE samochody ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
B. ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
C. ALTER TABLE samochody ADD FOREIGN KEY kolor REFERENCES lakier;
D. ALTER TABLE samochody ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
Pierwsza z niepoprawnych odpowiedzi próbuje dodać klucz obcy do kolumny 'kolor', ale brakuje w niej określenia, którego atrybutu z tabeli 'lakier' używamy. Wartości 'kolor' muszą odnosić się do konkretnego identyfikatora z tabeli 'lakier', a tym identyfikatorem jest 'lakierId'. Bez tego precyzyjnego odniesienia, kwerenda nie będzie mogła zostać wykonana. Druga odpowiedź, mimo że poprawnie odnosi się do właściwego pola, używa błędnej składni. W kontekście SQL klucz obcy musi być zdefiniowany poprzez wskazanie kolumny, do której odnosi się klucz główny w innej tabeli, co w przypadku tej odpowiedzi jest pominięte przy użyciu zewnętrznej referencji do kolumny 'lakierId'. Trzecia odpowiedź jest błędna, ponieważ odnosi się do kolumny 'barwa', która nie istnieje w tabeli 'samochody', co sprawia, że kwerenda jest niepoprawna. Ostatecznie, czwarta odpowiedź, która próbuje użyć kolumny 'barwa' i odnosić się do kolumny 'kolor', jest niepoprawna, ponieważ również nie wskazuje na prawidłową kolumnę w tabeli 'lakier'. W związku z tym, wszystkie te odpowiedzi nie spełniają wymagań do prawidłowego zdefiniowania klucza obcego w bazie danych.

Pytanie 35

Najłatwiejszym sposobem na zmianę obiektu z numerem 1 na obiekt z numerem 2 jest

Ilustracja do pytania
A. geometriczne przekształcenie obiektu
B. narysowanie obiektu docelowego
C. animacja obiektu
D. zmiana warstwy obiektu
Wybór niewłaściwej metody zamiany obiektu na inny może wynikać z niepełnego zrozumienia zasad manipulacji graficznych. Narysowanie docelowego obiektu to czasochłonny proces, który nie gwarantuje precyzji ani zgodności z oryginałem. Ponadto, ręczne tworzenie obiektów pomija korzyści płynące z automatyzacji i precyzji narzędzi do transformacji. Zmiana warstwy obiektu nie wpływa na jego rozmiar ani kształt; warstwy są wykorzystywane do organizacji elementów w projekcie, a nie do ich transformacji. Animowanie obiektu z kolei odnosi się do nadawania mu ruchu w czasie, co nie zmienia jego statycznej formy. Animacje są stosowane głównie w filmach, grach czy interfejsach użytkownika, gdzie celem jest dynamika. Wszystkie te błędne podejścia wynikają z pomylenia celów i narzędzi odpowiednich do danego zadania. Kluczowym błędem jest brak świadomości, że transformacje geometryczne są najefektywniejszym sposobem na modyfikację samego kształtu i rozmiaru obiektu, co jest standardową praktyką w projektowaniu graficznym i inżynierii komputerowej, zapewniającą dokładność i spójność wyników.

Pytanie 36

Aby za pomocą instrukcji SELECT uzyskać listę nazwisk osób mieszkających na osiedlu, przy czym nazwiska te nie mogą się powtarzać, należy sformułować zapytanie w następujący sposób

A. SELECT TOP 10 nazwisko FROM mieszkancy
B. SELECT DISTINCT nazwisko FROM mieszkancy
C. SELECT AVG(nazwisko) FROM mieszkancy
D. SELECT nazwisko FROM mieszkancy ORDER BY nazwisko
Odpowiedź "SELECT DISTINCT nazwisko FROM mieszkancy;" jest prawidłowa, ponieważ użycie klauzuli DISTINCT pozwala na wyświetlenie unikalnych wartości z kolumny 'nazwisko', eliminując wszelkie duplikaty. W praktyce jest to niezwykle przydatne, gdyż często zdarza się, że w bazach danych ta sama informacja może być wprowadzana wielokrotnie, co prowadzi do nieczytelnych raportów. Dzięki zastosowaniu klauzuli DISTINCT, możemy uzyskać czysty i zrozumiały zbiór danych, co jest zgodne z najlepszymi praktykami w analizie danych. Na przykład, w sytuacji, gdy chcemy uzyskać listę wszystkich nazwisk mieszkańców danego osiedla, DISTINCT pozwala na oszczędność czasu w późniejszej obróbce danych, eliminując potrzebę ręcznej filtracji wyników. Zastosowanie DISTINCT jest również standardem w wielu zapytaniach SQL, co czyni tę technikę fundamentalną w efektywnym zarządzaniu bazami danych oraz analizy informacji. Warto dodać, że klauzula DISTINCT może być używana z różnymi rodzajami danych, co pozwala na jej wszechstronność.

Pytanie 37

Czy poniższy kod PHP działa poprawnie, wyświetlając na stronie dane pobrane z bazy danych? Ile pól zostanie zaprezentowanych?

$ile = mysqli_num_rows($zapytanie);
for ($i = 0; $i < $ile; $i++)
{
  $wiersz = mysqli_fetch_row($zapytanie);
  echo "<p>Klient: $wiersz[0] $wiersz[1], adres: $wiersz[2] </p>";
}
A. Z dwóch pól
B. Z trzech pól
C. Z czterech pól
D. Z jednego pola
Kod PHP wykorzystuje funkcję mysqli_fetch_row aby pobrać dane z bazy danych które są następnie wyświetlane. W funkcji tej każda wiersz z wyników zapytania jest reprezentowany jako tablica indeksowana liczbowo. W zaprezentowanym fragmencie kodu mamy dostęp do trzech indeksów: $wiersz[0] $wiersz[1] oraz $wiersz[2]. Oznacza to że z każdego wiersza wyniku kwerendy pobierane są trzy pola. Kod ten wyświetla dane w formacie paragrafu HTML zawierającego imię i nazwisko klienta oraz jego adres. W praktyce taka konstrukcja jest często wykorzystywana do generowania dynamicznych treści na stronie internetowej. Należy jednak pamiętać o zabezpieczeniach takich jak filtrowanie danych wejściowych aby uniknąć zagrożeń związanych z SQL injection. Warto również rozważyć wykorzystanie bardziej złożonych struktur danych jak tablice asocjacyjne które pozwalają na bardziej czytelne i zrozumiałe odwoływanie się do poszczególnych pól wiersza danych zwłaszcza w przypadku większych projektów. Użycie mysqli_fetch_row jest zgodne z dobrą praktyką jeśli chcemy uzyskać dostęp do danych w sposób sekwencyjny i wydajny

Pytanie 38

W systemie baz danych sklepu znajdują się dwie tabele powiązane ze sobą relacją: produkty oraz oceny. Tabela oceny zawiera dowolną liczbę ocen wystawionych przez klientów dla konkretnego produktu, które są zdefiniowane przez pola: id, ocena (pole numeryczne), produktID (klucz obcy). Aby uzyskać maksymalną ocenę dla produktu o ID równym 10, należy użyć zapytania

A. COUNT MAX SELECT ocena FROM oceny WHERE produktID = 10;
B. SELECT MAX COUNT(ocena) FROM oceny WHERE produktID = 10;
C. SELECT MAX(ocena) FROM oceny WHERE produktID = 10;
D. MAX SELECT ocena FROM oceny WHERE produktID = 10;
Odpowiedź "SELECT MAX(ocena) FROM oceny WHERE produktID = 10;" jest prawidłowa, ponieważ wykorzystuje odpowiednią składnię SQL do uzyskania maksymalnej wartości z kolumny "ocena" dla produktu o określonym ID. Funkcja agregująca MAX() umożliwia znalezienie najwyższej oceny w zbiorze danych spełniających określone kryteria. W tym przypadku, zapytanie przeszukuje tabelę "oceny" i filtruje wyniki na podstawie "produktID" równym 10. Takie podejście jest zgodne z najlepszymi praktykami w obszarze SQL, ponieważ zapewnia prostotę i efektywność. W praktycznym zastosowaniu, w momencie gdy mamy do czynienia z dużymi zbiorami danych, takie zapytanie pozwala na szybkie uzyskanie potrzebnych informacji, co jest kluczowe dla analizy wydajności produktów w sklepie. Używanie funkcji agregujących, takich jak MAX(), jest standardem w relacyjnych bazach danych, co czyni to podejście odpowiednim w kontekście zarządzania danymi.

Pytanie 39

W JavaScript, aby wyodrębnić fragment tekstu pomiędzy wskazanymi indeksami, powinno się zastosować metodę

A. slice()
B. trim()
C. replace()
D. concat()
Metoda slice() w języku JavaScript jest kluczowym narzędziem do wydobywania fragmentów ciągów tekstowych. Umożliwia wyodrębnienie podciągu na podstawie określonych indeksów początkowego i końcowego. Przykładowo, jeśli mamy napis 'JavaScript' i chcemy uzyskać 'Script', możemy użyć slice(4, 10). Indeks początkowy jest wliczany, a końcowy jest wykluczany, co zapewnia elastyczność w manipulacji ciągami. Metoda slice() nie modyfikuje oryginalnego ciągu, co jest zgodne z zasadą immutability w funkcjonalnym programowaniu, zwiększając bezpieczeństwo danych. Metoda ta obsługuje również ujemne indeksy, co pozwala na łatwe wyodrębnianie fragmentów z końca napisu. Warto pamiętać, że slice() jest preferowana, gdyż jest bardziej czytelna i intuicyjna w porównaniu z innymi metodami do manipulacji tekstem, jak substr() czy substring().

Pytanie 40

W CSS wprowadzono formatowanie

p > i {color: blue} 

Co oznacza, że tekst zapisany będzie w kolorze niebieskim

A. pochylony tekst akapitu
B. cały tekst akapitu bez względu na jego formatowanie
C. pogrubiony tekst akapitu
D. cały tekst nagłówków bez względu na ich formatowanie
W podanym przypadku, zapis CSS <code>p > i {color: blue}</code> odnosi się do selektora, który aplikuje kolor niebieski do elementu <code><i></code> znajdującego się bezpośrednio wewnątrz elementu <code><p></code>. Oznacza to, że tylko tekst, który jest otoczony znacznikiem <code><i></code> w danym paragrafie, zostanie wyróżniony kolorem niebieskim. Ten sposób selekcji jest zgodny z zasadą kaskadowości i specyficzności CSS, co jest kluczowym elementem w zarządzaniu stylem dokumentów HTML. W praktyce, używanie takich selektorów pozwala na precyzyjne formatowanie tekstu w obrębie większych struktur, co jest szczególnie ważne w skomplikowanych projektach webowych. Dobrym przykładem zastosowania tego stylu może być sytuacja, gdy chcemy wyróżnić cytaty lub słowa kluczowe w tekście paragrafu, stosując odpowiednie znaczniki HTML oraz style CSS, co zwiększa czytelność i estetykę treści.