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: 13 maja 2026 14:00
  • Data zakończenia: 13 maja 2026 14:11

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

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

A. Klucz obcy
B. System Zarządzania Bazą Danych (SZBD)
C. Obiektowy System Zarządzania Bazą Danych
D. Otwarty mechanizm komunikacji bazy danych
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 2

Aby przeanalizować rozkład ilościowy różnych kolorów na zdjęciu, należy skorzystać z

A. desaturacji
B. histogramu
C. balansu kolorów
D. rozmycia Gaussa
Desaturacja to taki proces, który sprawia, że kolory w obrazku są mniej intensywne, co czasem prowadzi do efektu czarno-białego albo po prostu bardziej stonowanej kolorystyki. Moim zdaniem, w niektórych sytuacjach może się to przydać, ale nie daje informacji o tym, jak kolory się rozkładają. Ludzie mogą pomyśleć, że desaturacja pomoże im w analizie kolorów, ale tak naprawdę to tylko zasłania różnice i nie ujawnia, co tak naprawdę jest w obrazie. Balans kolorów to sprawa dostosowywania intensywności poszczególnych kolorów, co zmienia wygląd zdjęcia, ale też nie mówi nic o ich ilościowym rozkładzie. A rozmycie Gaussa to sposób na wygładzanie obrazów, żeby zredukować szumy, a nie do analizy kolorów. Wybierając jedną z tych opcji, można łatwo pomylić się i sądzić, że zyskuje się jakieś dane o rozkładzie kolorów, podczas gdy tak naprawdę żadna z tych metod tego nie robi. Dlatego lepiej trzymać się histogramu, bo on naprawdę pokazuje, co się dzieje z kolorami w obrazach.

Pytanie 3

Jaką wartość zwróci funkcja napisana w języku C++, gdy jej argumentami są a = 4 i 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. 16
B. 1
C. 12
D. 64
Wartości, które nie są prawidłowymi odpowiedziami, mogą wynikać z błędnych interpretacji działania funkcji. Na przykład, odpowiedź wskazująca na 1 sugeruje, że wynik funkcji zacząłby się od wartości zerowej, co jest nieprawidłowe, ponieważ każda potęga liczby wynosi co najmniej 1, o ile podstawą jest liczba różna od zera. Pomocne w zrozumieniu tego jest zapoznanie się z regułą mnożenia, która mówi, że każda liczba podniesiona do zera wynosi 1, ale w tym przypadku mamy do czynienia z dodatnimi argumentami. Z kolei odpowiedzi 12 i 16 mogą wynikać z błędnego zrozumienia liczby mnożenia, gdzie użytkownik mógłby przekonwertować działanie funkcji na inne operacje, takie jak dodawanie lub mnożenie bez zrozumienia, że przykład ilustruje potęgowanie. Tego typu błędy myślowe często prowadzą do mylnego rozumienia algorytmów, w których istotne jest, aby śledzić, co dzieje się z każdą iteracją pętli. Zrozumienie zasady działania pętli i ich zastosowania w kontekście potęgowania jest kluczem do poprawnego rozwiązywania zadań programistycznych. Dlatego ważne jest, aby dokładnie analizować działanie kodu i stosować dobrych praktyk, takich jak testowanie poszczególnych części kodu, aby upewnić się, że rozumiemy, co się dzieje w każdej iteracji.

Pytanie 4

Jakie imiona spełniają warunek klauzuli LIKE w zapytaniu

SELECT imie FROM mieszkancy WHERE imie LIKE 'o_%_a';
?
A. Oktawia, Oktawian, Olga
B. Oksana, Oktawia, Olga
C. Oksana, Ola, Olga
D. Oda, Oksana, Oktawia
Wybór imion Oda, Oksana, Oktawia jest błędny, ponieważ chociaż Oksana i Oktawia są poprawne, Oda nie spełnia wymagań klauzuli LIKE 'o_%_a'. Imię Oda zaczyna się na 'O', ale nie ma znaku, który by wypełniał miejsce reprezentowane przez '_' przed literą 'a', co oznacza, że nie ma żadnego znaku między 'O' a 'a'. Kluczowym błędem w analizie tego zapytania jest niedostrzeganie, że warunek LIKE wymaga, aby były przynajmniej dwa znaki w imieniu: jeden po 'o' oraz końcowy 'a'. Imiona Oktawian i Olga pojawiają się w różnych niepoprawnych odpowiedziach, ale nie są zgodne z wymaganiami, ponieważ nie wszystkie odpowiadają wzorowi. W przypadku imienia Oktawian, kończy się ono na 'n', a nie na 'a', co narusza klauzulę końcową. Zrozumienie zasadności stosowania klauzuli LIKE oraz jej składni jest kluczowe dla prawidłowego przetwarzania danych w zapytaniach SQL. Typowym błędem jest także pominięcie, że symbole wildcard muszą być stosowane z pełnym zrozumieniem ich funkcji w kontekście danych, co może prowadzić do niepoprawnych wyników w analizach i raportach.

Pytanie 5

Formularze do zarządzania bazami danych są tworzone w celu

A. tworzenia powiązań w relacyjnych bazach danych
B. wyszukiwania rekordów spełniających określone kryteria
C. generowania raportów z danych
D. łatwiejszego wprowadzania, edytowania oraz usuwania danych
Formularze do obsługi baz danych są kluczowym narzędziem, które umożliwia użytkownikom łatwe wprowadzanie, edytowanie i usuwanie danych w sposób zorganizowany i efektywny. Głównym celem formularzy jest zapewnienie przyjaznego interfejsu, który upraszcza interakcję z bazą danych, eliminując potrzebę bezpośredniego wprowadzania poleceń SQL czy pracy z tabelami w surowej formie. Dzięki formularzom użytkownicy mogą szybko wprowadzać dane do bazy, a także modyfikować istniejące rekordy, co jest szczególnie istotne w codziennym zarządzaniu danymi. Przykładem zastosowania formularzy jest system CRM, gdzie zespół sprzedażowy może w prosty sposób dodawać nowe informacje o klientach czy aktualizować dane kontaktowe. Dobre praktyki w projektowaniu formularzy obejmują zapewnienie walidacji danych, co pozwala na uniknięcie błędów podczas wprowadzania, oraz stosowanie odpowiednich typów pól, takich jak daty, numery czy listy rozwijane, które zwiększają użyteczność formularza. W skrócie, formularze są nieodłącznym elementem efektywnego zarządzania danymi i poprawiają wydajność pracy z bazami danych.

Pytanie 6

W tabeli mieszkancy znajdują się dane o osobach z całego kraju. Aby ustalić, ile unikalnych miast występuje w tej tabeli, trzeba zapisać kwerendę

A. SELECT COUNT(miasto) FROM mieszkancy;
B. SELECT COUNT(DISTINCT miasto) FROM mieszkancy;
C. SELECT COUNT(miasto) FROM mieszkancy DISTINCT;
D. SELECT DISTINCT miasto FROM mieszkancy;
Wybór odpowiedzi, która polega na użyciu tylko funkcji COUNT, jak w "SELECT COUNT(miasto) FROM mieszkancy;" nie jest najlepszy. To zapytanie zlicza wszystkie wystąpienia miast, w tym duplikaty, więc dostajesz łączną liczbę wierszy w kolumnie 'miasto', a to nie pokazuje, ile tak naprawdę jest unikalnych miejscowości. Moim zdaniem, ta pomyłka może prowadzić do złych wniosków, bo nie uwzględniasz różnorodności danych. Użycie DISTINCT, na przykład w "SELECT DISTINCT miasto FROM mieszkancy;", też nie daje ci liczby unikalnych miast, tylko listę ich. Niektórzy mogą myśleć, że wystarczy wylistować unikalne wartości, żeby wiedzieć, ile ich jest, ale to błędne podejście do zliczania. A ta odpowiedź "SELECT COUNT(miasto) FROM mieszkancy DISTINCT;" jest też niepoprawna, bo nie możesz używać DISTINCT w takim kontekście. Z doświadczenia wiem, że zrozumienie zasad dotyczących funkcji agregujących i filtrujących w SQL jest naprawdę kluczowe, jeśli chcesz dobrze zarządzać danymi i prowadzić sensowne analizy. Dlatego warto zastanowić się nad tym, jak używasz tych funkcji, żeby uniknąć typowych błędów przy interpretacji wyników zapytań w bazach danych.

Pytanie 7

Jaką wartość wyświetli standardowe wyjście dla podanego w ramce fragmentu kodu w języku C++?

Ilustracja do pytania
A. 0
B. 32
C. 3
D. 2
Analizując podane odpowiedzi warto zwrócić uwagę na podstawowe błędy w zrozumieniu działania operatorów w języku C++. Operator %= jest często źle interpretowany jako zwykłe dzielenie zamiast operacji modulo co prowadzi do błędnych wniosków takich jak wynik równy 0 lub 32. Reszta z dzielenia 32 przez 3 nie wynosi 0 ponieważ 32 nie dzieli się przez 3 bez reszty. Zapominając że operator ten zwraca resztę nie wynik dzielenia łatwo jest przyjąć błędne założenia. Dodatkowo zignorowanie inkrementacji x++ po operacji modulo może prowadzić do niepoprawnego oczekiwania że wynik pozostanie 2. Inkrementacja to podstawowa operacja która zwiększa wartość zmiennej o 1 co jest kluczowe w wielu algorytmach i strukturach danych. Brak zrozumienia tej operacji często prowadzi do błędnych rezultatów w programach. Przy rozwiązywaniu takich problemów należy brać pod uwagę sekwencję operacji oraz ich wpływ na końcowy rezultat. Praktyka oraz dokładna analiza działania poszczególnych operatorów pozwalają uniknąć typowych błędów które mogą powodować nieoczekiwane zachowanie aplikacji. Dobrze jest testować kod w małych fragmentach aby zobaczyć bezpośredni wpływ operacji na wynik co jest zgodne z dobrymi praktykami w programowaniu ukierunkowanym na testowanie i debugowanie. Zrozumienie tych koncepcji ułatwia pisanie wydajnego i niezawodnego kodu co jest celem każdego programisty w profesjonalnym środowisku.

Pytanie 8

Wskaż prawidłową definicję funkcji w języku JavaScript?

A. new nazwa_funkcji(argumenty) {instrukcje;}
B. function nazwa_funkcji(argumenty) {instrukcje;}
C. typ_funkcji nazwa_funkcji(argumenty) {instrukcje;}
D. nazwa_funkcji(argumenty) {instrukcje;}
Wybór innej definicji funkcji w JavaScript, takiej jak 'typ_funkcji nazwa_funkcji(argumenty) {instrukcje;}' czy 'new nazwa_funkcji(argumenty) {instrukcje;}' jest niepoprawny z kilku kluczowych powodów. Przede wszystkim, użycie 'typ_funkcji' sugeruje, że funkcja ma być zdefiniowana w oparciu o z góry określony typ, co jest niezgodne z dynamiczną naturą JavaScript, gdzie typ danych jest określany w czasie wykonywania, a nie w czasie kompilacji. Ponadto, zapis 'new nazwa_funkcji(argumenty) {instrukcje;}' odnosi się do tworzenia instancji obiektów za pomocą konstruktora, a nie do definiowania funkcji, co wprowadza zamieszanie. Typowe błędy myślowe mogą wynikać z mylenia pojęć funkcji i obiektów, co prowadzi do nieporozumień co do roli funkcji w tym języku. Warto również zwrócić uwagę, że konwencja używania słowa kluczowego 'function' pomaga w zachowaniu spójności i czytelności kodu, co jest istotne w kontekście współpracy w zespołach programistycznych oraz utrzymania jakości kodu. W końcu, znajomość standardowej składni deklaracji funkcji w JavaScript jest niezbędna do efektywnego programowania w tym języku oraz zrozumienia jego podstawowych zasad działania.

Pytanie 9

W języku PHP pętla umieści liczby w tablicy

$x=0;
for($i=0; $i<10; $i++)
{
    $tab[$i]=$x;
    $x=$x+10;
}
A. 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
B. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
C. 0, 10, 20, 30, 40, 50, 60, 70, 80, 90
D. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Rozważmy, dlaczego inne odpowiedzi są niepoprawne. Pierwsza z nich sugeruje, że pętla wstawi do tablicy sekwencję od 0 do 10, co implikuje iterację, która zwiększa zmienną o 1. Jednak w analizowanym kodzie zmienna $x jest zwiększana o 10. Natomiast druga odpowiedź zakłada, że wartości w tablicy będą rosnąć od 0 do 9 co również wskazuje na niepełne zrozumienie mechanizmu działania pętli i inkrementacji zmiennej $x. Z kolei ostatnia odpowiedź sugeruje że do tablicy zostaną wstawione liczby kończące się na 100. To wskazuje na błędne przetworzenie pętli, w której zakres wartości $x nigdy nie dochodzi do 100 w żadnym z kroków iteracji. Typowym błędem myślowym w tych przypadkach jest niezrozumienie jak wartość zmiennej $x jest zmieniana w każdym kroku pętli oraz jak indeksy tablicy są przypisywane. Kluczowym elementem prawidłowego zrozumienia działania tego kodu jest dostrzeżenie, że pętla for kontroluje liczbę iteracji, a zmienna $x jest modyfikowana zgodnie z wyrażeniem $x=$x+10 przy każdym obrocie, co prowadzi do systematycznego zwiększania wartości dodawanej do tablicy.

Pytanie 10

Którą relację w projekcie bazy danych należy ustalić między tabelami widocznymi na ilustracji zakładając, że każdy klient sklepu internetowego dokona przynajmniej dwóch zamówień?

Ilustracja do pytania
A. n:n
B. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
C. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
D. 1:1
W tym zadaniu pułapka polega głównie na poprawnym zrozumieniu biznesowego sensu relacji. Opis mówi jasno, że mamy tabelę Klient i tabelę Zamówienie w sklepie internetowym oraz że każdy klient złoży co najmniej dwa zamówienia. To automatycznie sugeruje relację, w której pojedynczy klient jest powiązany z wieloma zamówieniami, ale każde konkretne zamówienie należy tylko do jednego klienta. Relacja 1:1 między Klientem a Zamówieniem byłaby sensowna wtedy, gdyby na jednego klienta przypadało dokładnie jedno zamówienie. W praktyce systemów sprzedażowych to bardzo rzadki przypadek i raczej zły model. Prowadziłby do sytuacji, że dla kolejnego zamówienia tego samego klienta trzeba by tworzyć nowy rekord klienta, czyli duplikować dane osobowe, adres, NIP itd. To łamie podstawowe zasady normalizacji (szczególnie pierwszą i trzecią postać normalną) i bardzo utrudnia późniejsze raportowanie. Relacja n:n sugeruje, że jedno zamówienie mogłoby należeć do wielu klientów, a jeden klient do wielu zamówień jednocześnie, przy czym do poprawnego odwzorowania takiej relacji trzeba by wprowadzić tabelę pośredniczącą, np. Klient_Zamówienie. W kontekście sklepu internetowego takie założenie jest nielogiczne: jedno zamówienie ma jednego właściciela, nie ma sensu aby ten sam koszyk zakupowy był przypisany do kilku różnych klientów. Relacja n:n jest typowa raczej dla powiązań typu Produkt–Zamówienie (wiele produktów w wielu zamówieniach), a nie Klient–Zamówienie. Z kolei relacja 1:n odwrócona, gdzie „1” jest po stronie Zamówienia, a „n” po stronie Klienta, oznaczałaby, że jedno zamówienie może być przypisane do wielu klientów. To dokładnie odwrócenie poprawnego modelu i w praktyce niewykonalne biznesowo – kto byłby płatnikiem, kto odbiorcą, jak liczyć historię zakupów? Taki projekt łamie też zasadę jednoznacznej odpowiedzialności rekordu: zamówienie powinno mieć jednego, jasno określonego właściciela. Typowym błędem myślowym przy takich pytaniach jest mylenie relacji Klient–Zamówienie z relacją Zamówienie–Produkt. Tam rzeczywiście często stosuje się n:n z tabelą pośrednią (pozycje zamówienia). Warto zawsze zatrzymać się i odpowiedzieć sobie na proste pytanie: czy ten obiekt może realnie „należeć” do więcej niż jednego innego obiektu? W przypadku zamówienia odpowiedź brzmi: nie, dlatego poprawnym podejściem jest właśnie relacja 1:n z jednym klientem i wieloma jego zamówieniami.

Pytanie 11

Witryna internetowa zawiera poziome menu w formie listy punktowanej. Aby elementy tej listy mogły być wyświetlane w jednej linii, należy przypisać selektorowi li właściwość

A. position
B. display
C. text-align
D. outline
Wybór opcji 'outline' jako właściwości do ustawienia dla selektora 'li' w kontekście wyświetlania elementów listy w jednej linii jest błędny, ponieważ 'outline' dotyczy jedynie rysowania konturów wokół elementu, nie wpływa natomiast na ich układ. Przykładowo, 'outline' jest często używane w celu poprawy dostępności elementów interaktywnych, takich jak przyciski, ale nie ma żadnego wpływu na ich położenie w dokumencie. Z kolei 'position' jest używane do określenia sposobu pozycjonowania elementów, co również nie wpływa na ich wyświetlanie w jednej linii. Choć 'position: relative;' lub 'absolute;' mogą zmienić sposób, w jaki elementy są rozmieszczone w stosunku do siebie, to jednak nie jest to odpowiednie narzędzie do uzyskania efektu poziomego menu. Natomiast 'text-align' jest właściwością, która ustala sposób wyrównania tekstu wewnątrz bloku, ale również nie dotyczy samego wyświetlania elementów listy. Używanie takich podejść może prowadzić do nieporozumień i błędów w projektach, gdzie kluczowe jest zrozumienie, że różne właściwości CSS mają swoje specyficzne zastosowania i nie mogą być zamieniane. Zrozumienie tego aspektu jest kluczowe dla prawidłowego tworzenia układów w stronach internetowych i unikania typowych błędów w stylizacji.

Pytanie 12

Który z wartości atrybutu background-attachment w CSS powinien być użyty, aby tło strony pozostało nieruchome w stosunku do okna przeglądarki?

A. Fixed
B. Local
C. Scroll
D. Inherit
Wybór wartości scroll w atrybucie background-attachment skutkuje tym, że tło przewija się razem z zawartością strony, co oznacza, że nie jest statyczne względem okna przeglądarki. Takie ustawienie jest standardowe dla większości stron internetowych, gdzie tło zmienia się podczas przewijania, co nie pozwala uzyskać efektu głębi czy trójwymiarowości. Użycie wartości local powoduje, że tło jest związane z przewijaniem wewnętrznych elementów, a nie z całym oknem przeglądarki. To oznacza, że jeśli element ma własny pasek przewijania, tło będzie przewijać się w tym kontekście, co sprawia, że efekt statyczny w kontekście całej strony jest niedostępny. Wartość inherit z kolei służy do przekazania wartości atrybutu z elementu nadrzędnego do elementu potomnego. Używanie inherit w kontekście background-attachment nie ma sensu, ponieważ nie definiuje konkretnego zachowania tła, a jedynie dziedziczy ustawienia, które mogą być nieodpowiednie dla danego kontekstu. W rezultacie, dla uzyskania pożądanego efektu statycznego tła, warto wybierać fixed, aby osiągnąć najlepszy rezultat wizualny.

Pytanie 13

Aby dostosować dźwięk do określonego poziomu głośności, należy zastosować efekt

A. podbicia basów
B. wyciszenia
C. normalizacji
D. usuwania szumów
Normalizacja to proces, który polega na dostosowywaniu poziomu głośności nagrania audio, tak aby maksymalny sygnał osiągał określony poziom, najczęściej bliski maksymalnej wartości dostępnej dla formatu audio. Normalizacja dźwięku może być zastosowana zarówno do pojedynczych ścieżek, jak i do całych projektów, co pozwala na uzyskanie spójności głośności w różnych utworach. W praktyce oznacza to, że nagrania są przetwarzane tak, aby największy dźwięk nie przekraczał ustalonego progu, co zapobiega zniekształceniom i pogorszeniu jakości dźwięku. Standardowe poziomy normalizacji obejmują wartości takie jak -1 dBFS, które zapewniają odpowiednią przestrzeń dla dynamicznych szczytów dźwięku. Przykładem zastosowania normalizacji jest przygotowywanie playlisty do transmisji radiowej, gdzie wszystkie utwory muszą być na podobnym poziomie głośności, aby zapewnić komfort słuchania. W branży muzycznej normalizacja jest kluczowym procesem, który zapewnia nie tylko odpowiednią jakość dźwięku, ale i profesjonalny odbiór nagrań przez słuchaczy.

Pytanie 14

Na ilustracji przedstawiono ustawienia programu służącego do montażu filmów. Nowy projekt ma ustawienia

Ilustracja do pytania
A. 48 minut czasu trwania filmu.
B. 25 klatek na każdą sekundę filmu.
C. 25 klatek na cały film.
D. wysokość 1920 px i szerokość 1080 px.
Prawidłowa odpowiedź wynika bezpośrednio z oznaczenia „25 fps” w ustawieniach projektu. Skrót fps oznacza „frames per second”, czyli liczbę klatek na sekundę. Jeśli projekt ma 25 fps, to znaczy, że każda sekunda gotowego filmu będzie złożona z 25 kolejnych klatek wideo. To jest właśnie standardowa liczba klatek na sekundę stosowana w Europie (standard telewizyjny oparty na PAL), bardzo często używana w programach do montażu i w kamerach. W praktyce wygląda to tak: jeżeli nagrasz materiał w 25 fps i zmontujesz projekt również w 25 fps, to ruch będzie wyglądał naturalnie, a odtwarzanie będzie płynne i zgodne z typowymi ustawieniami telewizorów i wielu platform VOD. Gdybyś ustawił np. 10 fps, obraz byłby wyraźnie „szarpiący”, a przy 60 fps – bardzo płynny, ale też wymagający więcej miejsca na dysku i większej mocy obliczeniowej przy montażu. Moim zdaniem warto zapamiętać, że liczba klatek na sekundę to jedna z kluczowych decyzji przy zakładaniu nowego projektu: wpływa na płynność ruchu, rozmiar pliku wynikowego i komfort montażu. W programach do edycji wideo zawsze szukaj parametru „Frame Rate” lub właśnie „fps”. Jeżeli widzisz tam liczbę, np. 24, 25, 30, 50 czy 60, to zawsze będzie chodziło o liczbę klatek przypadających na jedną sekundę odtwarzania filmu, a nie o całkowitą liczbę klatek czy czas trwania projektu. W tym zadaniu opis 25 fps dokładnie odpowiada odpowiedzi „25 klatek na każdą sekundę filmu”.

Pytanie 15

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

A. części wspólnej.
B. sumy.
C. wykluczenia.
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.

Pytanie 16

Co można powiedzieć o stylu hiperłącza na podstawie opisu CSS, zakładając, że żadne inne style nie zostały zdefiniowane?

a:link {
  color: green;
  text-decoration: none;
}

a:hover {
  color: red;
  text-decoration: underline;
}
A. Tekst odwiedzonego hiperłącza jest koloru czerwonego.
B. Gdy hiperłącze jest nieodwiedzone, jego tekst jest koloru niebieskiego z podkreśleniem.
C. Gdy kursor znajdzie się na obszarze hiperłącza, pojawia się podkreślenie i tekst przyjmuje kolor czerwony.
D. Hiperłącze jest zawsze podkreślone.
Twoja odpowiedź jest poprawna. W przypadku hiperłącza, w momencie, gdy kursor znajduje się na obszarze hiperłącza, pojawia się podkreślenie i tekst przyjmuje kolor czerwony. Jest to efekt zastosowania stylu CSS w stanie 'hover'. Styl ten umożliwia dynamiczną zmianę wyglądu elementu, kiedy kursor myszy znajduje się nad nim. Jest to praktyka powszechnie stosowana w celu zwiększenia użyteczności i interaktywności stron internetowych. Dobrą praktyką jest również zapewnienie kontrastu między kolorem tła a tekstem dla lepszej czytelności. W tym przypadku, kolor tekstu zmienia się na czerwony, co zapewnia wyraźny kontrast i zwraca uwagę użytkownika. Równocześnie dodanie podkreślenia jest dodatkowym wizualnym wskaźnikiem, że dany element jest hiperłączem. Zastosowanie takiego stylu pozwala na intuicyjne i efektywne poruszanie się po stronie internetowej.

Pytanie 17

W PHP typ float oznacza

A. łańcuchowy
B. logiczny
C. całkowity
D. zmiennoprzecinkowy
Wybór innego typu danych w PHP, jak całkowity, łańcuchowy czy logiczny, może być mylący. Typ całkowity to po prostu liczby bez części dziesiętnej, więc jak mamy do czynienia z cenami, gdzie pojawiają się grosze, to nie ma szans na użycie tego typu. Z kolei typ łańcuchowy to coś zupełnie innego, związane z tekstem – i stosowanie go do obliczeń to droga do katastrofy. Typ logiczny, co prawda przyjmuje tylko dwie wartości – prawda i fałsz – ale również nie nadaje się do liczb. Kluczowe jest zrozumienie, że każdy typ ma swoje miejsce w programowaniu. Wiele osób myli je ze sobą, na przykład próbując użyć typu łańcuchowego tam, gdzie potrzebne są liczby, co zazwyczaj kończy się problemami. Aby rozwijać aplikacje skutecznie, trzeba odpowiednio dobierać typy danych, bo to jest podstawa programowania w PHP i w innych językach także.

Pytanie 18

Jakie pojęcia są wykorzystywane do opisu interfejsu użytkownika serwisu internetowego?

A. Wysyłanie zapytań do bazy, skrypty PHP
B. Przetwarzanie danych, system zarządzania treścią, projektowanie informacji
C. Szkic strony, mapa witryny, diagram przepływu informacji
D. Przyciski, menu, interakcja użytkownika z aplikacją
Odpowiedź "Przyciski, menu, interakcja użytkownika z aplikacją" jest prawidłowa, ponieważ odnosi się bezpośrednio do kluczowych elementów interfejsu użytkownika (UI) na stronach internetowych. Interfejs użytkownika to zespół wszystkich punktów kontaktowych między użytkownikiem a systemem, a przyciski i menu są podstawowymi składnikami, które umożliwiają interakcję z aplikacją. Dobre praktyki projektowania UI opierają się na zapewnieniu intuicyjności i dostępności tych elementów, co jest podstawą pozytywnego doświadczenia użytkownika (UX). Na przykład, przyciski powinny być jasno oznaczone i łatwo rozpoznawalne, a menu powinno być zorganizowane w sposób logiczny, aby użytkownicy mogli szybko znaleźć potrzebne informacje. W kontekście standardów, warto zwrócić uwagę na wytyczne WCAG, które dotyczą dostępności treści internetowych, oraz zasady heurystyki Jakobsona, które pomagają w ocenie interfejsu użytkownika. Dobry design UI powinien również uwzględniać responsywność, co oznacza, że interfejs powinien być użyteczny na różnych urządzeniach i rozmiarach ekranów.

Pytanie 19

W tabeli artykuly w bazie danych sklepu znajduje się pole o nazwie nowy. Jak należy wykonać kwerendę, aby wypełnić to pole wartościami TRUE dla wszystkich rekordów?

A. UPDATE artykuly SET nowy=TRUE;
B. INSERT INTO artykuly VALUE nowy=TRUE;
C. INSERT INTO nowy FROM artykuly SET TRUE;
D. UPDATE nowy FROM artykuly VALUE TRUE;
Pozostałe odpowiedzi są błędne z kilku powodów. Pierwsza, 'INSERT INTO artykuly VALUE nowy=TRUE;', jest niepoprawna, bo instrukcja INSERT służy do dodawania nowych rekordów, a nie do aktualizacji tych, które już są. Używanie tej komendy w kontekście aktualizacji to poważny błąd w zrozumieniu baz danych. Druga odpowiedź, 'UPDATE nowy FROM artykuly VALUE TRUE;', też nie jest dobra, bo składnia tutaj jest błędna. Komenda UPDATE nie używa słowa 'FROM' w taki sposób i brakuje też struktury, która określałaby, które rekordy mają być zmienione. Ostatnia odpowiedź, 'INSERT INTO nowy FROM artykuly SET TRUE;', jeszcze bardziej myli, bo 'INSERT INTO' nie służy do zmiany wartości w kolumnie. Raczej dodaje nowe wiersze do tabeli. Takie podejście łamie zasady SQL i może prowadzić do błędów w zapytaniach. Ważne jest, żeby zrozumieć różnice pomiędzy INSERT a UPDATE, aby skutecznie zarządzać danymi.

Pytanie 20

Aby cofnąć uprawnienia dostępu do serwera MySQL, należy wykorzystać polecenie

A. GRANT
B. REVOKE
C. USAGE
D. DELETE
Polecenie USAGE w MySQL nie przyznaje ani nie odbiera żadnych praw dostępu. Jest to typ uprawnienia, które de facto oznacza brak uprawnień do wykonywania jakichkolwiek operacji na danym obiekcie. Użycie USAGE nie ma zastosowania w kontekście odbierania praw, a jedynie w definiowaniu minimalnego poziomu dostępu. Z kolei GRANT to polecenie służące do przyznawania uprawnień, a nie do ich odbierania. GRANT pozwala administratorom na udzielanie użytkownikom różnych poziomów dostępu do zasobów, co czyni je odwrotnością REVOKE. Wreszcie DELETE jest to polecenie SQL, które służy do usuwania danych z tabel, a nie do zarządzania uprawnieniami dostępu. Używanie DELETE w kontekście odbierania praw dostępu jest całkowicie niewłaściwe, ponieważ nie odnosi się ono do autoryzacji użytkowników w systemie. Wszelkie te trzy odpowiedzi są niepoprawne w kontekście pytania, ponieważ nie spełniają celu zarządzania dostępem do bazy danych, jakim jest odebranie praw dostępu, co precyzyjnie realizuje polecenie REVOKE.

Pytanie 21

Dla dowolnego a z przedziału (0, 99) zadaniem funkcji zapisanej w języku JavaScript jest

function fun1(a)
{
    for (n = a; n <= 100; n++)
        document.write(n);
    return n;
}
A. zwrócenie liczb z przedziału a .. 99
B. wypisanie liczb z przedziału a .. 99 i zwrócenie wartości 100
C. wypisanie liczb z przedziału a .. 100 i zwrócenie wartości zmiennej n
D. wypisanie wartości zmiennej a oraz zwrócenie wartości zmiennej n
Twoja odpowiedź jest poprawna. Funkcja fun1(a) w języku JavaScript przyjmuje argument a i za pomocą pętli for wypisuje liczby od a do 100 włącznie - a więc pętla jest iterowana tyle razy, ile wynosi różnica między 100 a wartością argumentu a. Po każdej iteracji pętli, wartość zmiennej n jest zwiększana o 1, co jest typowym zachowaniem dla pętli for w JavaScript. Funkcja zwraca wartość zmiennej n po zakończeniu pętli. Tak więc funkcja zwraca 101, ponieważ to właśnie wartość o 1 większa niż warunek kończący pętlę (100) spowoduje jej zakończenie. Ta funkcja to przykładowe zastosowanie pętli for w JavaScript, pokazujące praktyczne zastosowanie tego elementu składni. Pętla for jest standardem w branży i jest powszechnie stosowana do iterowania przez elementy tablicy, obiekty, liczby i inne struktury danych.

Pytanie 22

W SQL przy użyciu kwerendy ALTER można

A. dodać dane do tabeli
B. zmienić strukturę tabeli
C. zlikwidować tabelę
D. stworzyć tabelę
Kwerenda <i>ALTER</i> w SQL ma na celu modyfikację istniejących tabel, a nie ich usuwanie czy tworzenie nowych. Usunięcie tabeli realizowane jest za pomocą komendy <i>DROP</i>, która trwałego eliminuje tabelę z bazy danych, wraz z wszystkimi danymi, które zawiera. Tworzenie nowych tabel odbywa się za pomocą kwerendy <i>CREATE</i>, która definiuje nową strukturę i jest niezbędna, gdy potrzebujemy zacząć od zera lub wprowadzić nowe dane w zgodzie z innymi wymaganiami lub projektami. Natomiast wprowadzanie danych do tabeli zrealizowane jest przy pomocy komendy <i>INSERT</i>, która pozwala na dodawanie nowych rekordów do już istniejących tabel w bazie. Odpowiedzi te mogą prowadzić do mylnych wniosków, ponieważ nie uwzględniają konkretnej funkcjonalności kwerendy <i>ALTER</i</i>, co jest kluczowe dla zrozumienia relacyjnych baz danych. W praktyce, brak zrozumienia roli i zastosowania poszczególnych kwerend SQL może prowadzić do błędów w projektowaniu baz danych oraz ich administracji, co może skutkować utratą danych lub wydajności. Ważne jest zatem, aby jasno rozróżniać te komendy i ich zastosowania w kontekście zarządzania danymi w systemach bazodanowych.

Pytanie 23

Jaką rolę odgrywa kwerenda krzyżowa w systemie baz danych MS Access?

A. Zmienia już istniejące dane w tabeli
B. Dodaje do wskazanej tabeli dane z innej tabeli
C. Eliminuje rekordy z tabel zgodnie z określonymi kryteriami
D. Prezentuje zliczone wartości z określonego pola, organizując je w wiersze oraz kolumny
Wybór odpowiedzi, które sugerują modyfikację danych, usuwanie rekordów czy dołączanie ich z innych tabel, świadczy o nieporozumieniu w zakresie funkcji kwerend w MS Access. Modyfikacja danych w tabeli oraz usuwanie rekordów to operacje, które są realizowane przez inne typy kwerend, takie jak kwerendy aktualizujące czy kwerendy usuwające. Kwerenda krzyżowa nie ma na celu zmiany struktury danych ani ich usuwania, ale raczej analizy i agregacji istniejących informacji. Z kolei dołączanie rekordów z innych tabel zazwyczaj realizowane jest przez kwerendy dołączające, które łączą dane z różnych źródeł w celu ich wspólnej analizy. Odpowiedzi te mogą wprowadzać w błąd, zwłaszcza dla osób, które dopiero zaczynają pracę z bazami danych. Warto pamiętać, że kwerendy krzyżowe są narzędziami analitycznymi, które służą do prezentacji danych, a nie do ich przetwarzania. Dlatego kluczowe jest rozumienie, że każda kwerenda w MS Access ma swoją unikalną funkcję, co wymaga znajomości celu, dla którego ma być używana. Niezrozumienie tego może prowadzić do błędnego wnioskowania i nieefektywnego wykorzystania narzędzi dostępnych w MS Access.

Pytanie 24

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

A. Warunkową, niezależną od typu zmiennej
B. Wyboru, dotyczącej elementów tablicy
C. Pętli, przeznaczonej wyłącznie dla elementów tablicy
D. Pętli, niezależnej od typu zmiennej
Wybierając inne odpowiedzi, można się czasem pogubić w tym, jak naprawdę działa foreach i do czego służy. Te odpowiedzi, które mówią, że foreach jest jakąś instrukcją warunkową albo działa na różnych typach zmiennych, nie pokazują prawdziwego oblicza tej konstrukcji. To jest pętla, która chodzi tylko po elementach tablicy, więc nie da się jej używać do liczb czy stringów. W praktyce mnóstwo osób może myśleć, że to działa jak wybór, co prowadzi do różnych błędów w kodzie. Ważne, żeby zrozumieć, że foreach nie wybiera elementów na podstawie warunków, tylko po prostu przegląda wszystkie elementy tablicy. I mimo że kod w foreach jest zazwyczaj bardziej czytelny, to jeśli użyjesz go w złym kontekście, może być mniej efektywny. Często programiści mylą się, stosując foreach do struktur, które nie są tablicami, co kończy się błędami. Dobrze jest pamiętać, że każda konstrukcja w PHP ma swoje miejsce i trzeba dobrze dobrać pętlę czy instrukcję do potrzeb projektu.

Pytanie 25

Zapis koloru w formacie #ff00e0 jest równoważny reprezentacji

A. rgb(255, 0, 128)
B. rgb(f, 0, e0)
C. rgb(255, 0, 224)
D. rgb(ff, 0, e0)
Odpowiedzi rgb(f, 0, e0) oraz rgb(ff, 0, e0) zawierają błędy dotyczące formatu wartości RGB. W przypadku formatu RGB, wartości składowych koloru muszą być liczbami całkowitymi w przedziale od 0 do 255. W pierwszym przypadku 'f' i 'e0' nie są poprawnymi wartościami, ponieważ 'f' nie reprezentuje liczby w systemie dziesiętnym, a 'e0' nie zostało przeliczone na wartość dziesiętną, co czyni tę odpowiedź niezgodną ze standardami definiowania kolorów. Z kolei druga odpowiedź, rgb(ff, 0, e0), również nie przekształca wartości szesnastkowych na format dziesiętny. Standard RGB wymaga, aby wartości były zrozumiałe dla silnika renderującego, dlatego niepoprawne są wartości, które nie są liczbami całkowitymi. Pojawiają się też koncepcje dotyczące odczytywania wartości szesnastkowych, gdzie podstawowym błędem jest brak znajomości konwersji między tymi systemami liczbowymi. Wartości szesnastkowe trzeba zamieniać na dziesiętne, aby prawidłowo interpretować kolory. W przypadku rgb(255, 0, 128), wartość niebieska została błędnie określona jako 128, co jest znacznie niższe niż 224, co prowadzi do błędnej interpretacji koloru. Używanie błędnych wartości w definicji kolorów może skutkować niezgodnością wizualną w projektach graficznych i webowych.

Pytanie 26

Jakiego zdarzenia trzeba użyć, aby funkcja JavaScript była uruchamiana za każdym razem, gdy użytkownik wprowadzi jakikolwiek znak do pola tekstowego?

A. onmouseout
B. onkeydown
C. onload
D. onclick
Odpowiedzi takie jak 'onload', 'onclick' i 'onmouseout' nie pasują tutaj wcale. Zdarzenie onload uruchamia się, gdy strona całkowicie się załadowała, co nie ma nic wspólnego z tym, co użytkownik wpisuje w danym momencie. Używanie go do monitorowania wprowadzania danych mija się z celem, bo nie pokaże, co dokładnie użytkownik wprowadza. Zdarzenie onclick dotyczy kliknięć myszą, więc też nie przyda się w tym kontekście. Kliknięcie w pole tekstowe nie oznacza, że coś zostało wpisane. Z kolei onmouseout wywołuje się, gdy myszka opuszcza element, co też jest zupełnie niepotrzebne w śledzeniu, co użytkownik pisze. Chyba jasne, że trzeba lepiej rozumieć różne zdarzenia i ich zastosowania, żeby nie popełniać takich błędów. Dobrze jest dobierać odpowiednie zdarzenia do funkcji, które chcemy osiągnąć, bo to klucz do tworzenia fajnych, responsywnych aplikacji.

Pytanie 27

W bazie danych znajduje się tabela o nazwie pracownicy z kolumnami: nazwisko, imię, pensja, wiek. Jak powinna wyglądać składnia polecenia do obliczenia średniej pensji pracowników?

A. select VAR (pensja) from nazwisko
B. select AVG (pensja) from pracownicy
C. select AVG (nazwisko) into pensja
D. select VAR (pracownicy) into pensja
Poprawna odpowiedź, czyli polecenie 'select AVG (pensja) from pracownicy', wykorzystuje funkcję agregującą AVG, która jest standardowo stosowana w SQL do obliczania średniej wartości w kolumnie. W tym przypadku, polecenie to oblicza średnią pensję pracowników zapisanych w tabeli 'pracownicy'. Użycie funkcji AVG jest zgodne z dobrymi praktykami SQL, które zalecają stosowanie odpowiednich funkcji agregujących w celu efektywnego przetwarzania danych. Wartości w kolumnie 'pensja' są analizowane, a wynik zwraca jedną wartość — średnią pensję, co jest niezwykle użyteczne w kontekście raportowania czy analizy wynagrodzeń. Przykładowo, jeśli tabela zawiera pensje 3000, 4000 i 5000, funkcja AVG zwróci 4000. Tego rodzaju zapytania są powszechnie stosowane w raportach kadrowych oraz podczas analizy budżetu w organizacjach, co czyni je niezbędnym elementem wiedzy dla analityków danych oraz programistów baz danych.

Pytanie 28

W HTML 5 atrybut action jest wykorzystywany w znaczniku

A. <head>
B. <code>
C. <form>
D. <body>
Zarówno <code>, <body>, jak i <head> to znaczniki HTML, które mają swoiste zastosowanie, ale nie są związane z funkcją przesyłania danych formularzy. Znacznik <code> służy do prezentacji kodu źródłowego w formacie tekstowym, co nie ma żadnego związku z obsługą formularzy. Stosowanie go w kontekście atrybutu action jest błędne, ponieważ jego rola ogranicza się do formatowania tekstu, a nie do interakcji z danymi użytkownika. Znacznik <body> odpowiada za zawartość widoczną na stronie, ale nie definiuje, jak te dane powinny być przetwarzane po ich przesłaniu. Atrybut action nie ma zastosowania w tym kontekście, ponieważ nie obsługuje przesyłania danych, a jego brak spowoduje, że formularz nie będzie miał określonego celu, co może prowadzić do nieefektywnego lub nieprawidłowego działania strony. Natomiast znacznik <head> jest używany do definiowania metadanych dokumentu HTML, takich jak tytuł strony czy odwołania do arkuszy stylów oraz skryptów. Nie zawiera elementów interaktywnych i nie ma związku z przesyłaniem formularzy, co czyni jego wybór całkowicie nietrafionym w tej sytuacji. Kluczowym błędem w rozumieniu tego zagadnienia jest mylenie ról poszczególnych znaczników i ich funkcji w architekturze dokumentu HTML.

Pytanie 29

Model fizyczny replikacji bazy danych pokazany na ilustracji to model

Ilustracja do pytania
A. równorzędny
B. centralnego wydawcy
C. centralnego subskrybenta
D. rozproszony
Równorzędny model replikacji zakłada że wszystkie serwery w sieci mają taką samą rolę i mogą zarówno publikować jak i subskrybować dane co prowadzi do bardziej skomplikowanego zarządzania danymi ze względu na konieczność rozwiązywania konfliktów i synchronizacji zmian w różnych lokalizacjach W przeciwieństwie do modelu centralnego wydawcy ten model nie oferuje centralnego punktu kontroli co może prowadzić do problemów z jednolitością danych W modelu rozproszonym natomiast dane są dzielone między różnymi serwerami co może być przydatne w systemach o dużej skali ale wymaga bardziej złożonej architektury sieci oraz zaawansowanych mechanizmów synchronizacji i redundancji danych Model centralnego subskrybenta z kolei działa odwrotnie do centralnego wydawcy gdzie wiele serwerów publikuje dane do jednego subskrybenta co nie jest praktyczne w większości scenariuszy biznesowych ponieważ ogranicza przepływ informacji i może prowadzić do wąskich gardeł Decyzja o wyborze odpowiedniego modelu replikacji powinna opierać się na potrzebach organizacji oraz specyfice infrastruktury technicznej zastosowanej w firmie błędne zrozumienie tej koncepcji może prowadzić do nieefektywnego działania systemu oraz problemów z dostępnością i bezpieczeństwem danych

Pytanie 30

GRANT CREATE, ALTER ON sklep.* TO adam; Zakładając, że użytkownik adam nie dysponował wcześniej żadnymi uprawnieniami, to polecenie SQL przyzna mu prawa jedynie do

A. wstawiania oraz modyfikacji danych w tabeli sklep
B. tworzenia oraz modyfikacji struktury w tabeli sklep
C. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
D. wstawiania oraz modyfikacji danych we wszystkich tabelach bazy sklep
Polecenie SQL 'GRANT CREATE, ALTER ON sklep.* TO adam;' przyznaje użytkownikowi adam prawa do tworzenia i modyfikowania struktury wszystkich tabel w bazie danych o nazwie 'sklep'. W kontekście zarządzania bazami danych, przyznawanie takich uprawnień jest kluczowe dla realizacji zadań związanych z projektowaniem i rozbudową bazy. Przykładowo, gdyby adam potrzebował dodać nową kolumnę do istniejącej tabeli lub utworzyć nową tabelę, mógłby to zrobić dzięki tym prawom. Z perspektywy bezpieczeństwa, nadawanie takich uprawnień powinna być starannie przemyślane, aby uniknąć nieautoryzowanych zmian w strukturze bazy. W praktyce, w sytuacjach, gdy wiele osób współpracuje nad projektem, zaleca się przyznawanie minimalnych uprawnień, które są niezbędne do wykonania określonych zadań. W związku z tym, wykorzystanie polecenia GRANT w sposób odpowiadający wymaganiom projektu jest najlepszą praktyką w zakresie administracji bazami danych.

Pytanie 31

Podaj zapytanie SQL, które tworzy użytkownika sekretarka na localhost z hasłem zaq123?

A. CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123";
B. CREATE USER 'sekretarka'@'localhost' IDENTIFIED `zaq123`;
C. CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123';
D. CREATE USER `sekretarka`@`localhost` IDENTIFY BY `zaq123`;
W analizowanych odpowiedziach można dostrzec kilka kluczowych błędów związanych z zarządzaniem użytkownikami w MySQL. Przykładowo, odpowiedź sugerująca użycie słowa kluczowego 'IDENTIFY' zamiast 'IDENTIFIED' jest niewłaściwa, ponieważ w kontekście MySQL nie istnieje tego typu polecenie. Takie nieprawidłowe zrozumienie składni SQL może prowadzić do nieudanych prób tworzenia użytkowników, co z kolei skutkuje frustracją i czasem straconym na debugowanie. Ponadto, odpowiedzi, które używają backticków (`) do oznaczania hasła, są niepoprawne. W SQL backticki służą do oznaczania identyfikatorów, takich jak nazwy tabel czy kolumn, a nie do łańcuchów tekstowych. Oznaczanie haseł przy użyciu backticków może prowadzić do nieprzewidywalnych błędów podczas wykonywania zapytań. Kolejnym problemem jest brak właściwego zrozumienia konwencji dotyczących użycia pojedynczych lub podwójnych cudzysłowów do definiowania łańcuchów. Użycie cudzysłowów zamiast apostrofów prowadzi do błędów składniowych. W kontekście bezpieczeństwa, każda nieprawidłowa próba utworzenia użytkownika może zagrażać integralności danych, dlatego ważne jest, aby korzystać z poprawnych praktyk, jak również ze zrozumienia zasad dotyczących zarządzania użytkownikami w systemie baz danych.

Pytanie 32

$i=10; $a=0; while $i) { $a=$a+2; $i--; } W języku PHP przedstawiono fragment kodu. Jaka będzie wartość zmiennej a po zakończeniu pętli?

A. 20
B. 2
C. 10
D. 0
Nieprawidłowe odpowiedzi są wynikiem niepełnego zrozumienia działania pętli while w PHP oraz mechanizmu dekremencji zmiennych. Odpowiedzi wskazujące na wartość 0, 2, czy 10 ignorują fakt, że pętla wykonuje się wielokrotnie, a każda iteracja wpływa na końcową wartość zmiennej $a. Odpowiedź 0 sugeruje, że pętla w ogóle się nie wykonała, co jest niezgodne z logiką działania while. Pętla ta będzie aktywna tak długo, jak zmienna $i jest różna od zera, a ponieważ $i zaczyna się od 10, pętla wykona się 10 razy. Odpowiedź 2 może wynikać z błędnego rozumienia, że pętla wykona się tylko raz, co jest sprzeczne z jej definicją; na każdym kroku $a zwiększa się o 2, co w kontekście pełnych 10 iteracji pozostawia $a na poziomie 20. Z kolei wartość 10 mogłaby wynikać z mylnego przekonania, że $a zwiększa się jedynie o 1 na każdym kroku, co również jest fałszywe, gdyż w każdej iteracji dodawane jest 2. Kluczowe do zrozumienia tego fragmentu kodu jest rozważenie, jak iteracje pętli wpływają na zmienne oraz jakie są efekty działania tych operacji. W programowaniu istotne jest, aby dokładnie analizować każdy krok, aby uniknąć błędów logicznych, które mogą prowadzić do nieoczekiwanych wyników.

Pytanie 33

Pole insert_id zdefiniowane w bibliotece MySQLi w języku PHP może służyć do

A. pobrania pierwszego dostępnego indeksu w bazie, tak aby można było pod nim dodać nowe dane
B. pobrania najwyższego indeksu z bazy, aby po jego inkrementacji wstawić pod niego dane
C. pozyskania kodu błędu, jeśli proces dodawania wiersza się nie powiódł
D. uzyskania id ostatnio dodanego wiersza
Pole insert_id w bibliotece MySQLi w języku PHP jest kluczowym narzędziem do uzyskiwania identyfikatora (ID) ostatnio wstawionego rekordu w bazie danych. Jest to szczególnie przydatne w kontekście operacji wstawiania nowych danych, gdzie często chcemy wiedzieć, jaki identyfikator został przypisany do nowego rekordu, aby móc go później wykorzystać, na przykład w odniesieniach do powiązanych tabel. W praktyce, po wykonaniu zapytania INSERT, możemy od razu pobrać ID nowo wstawionego rekordu, co jest istotne w relacyjnych bazach danych, gdzie klucze główne są często generowane automatycznie. Przykładowe zastosowanie to sytuacja, gdy wstawiamy nowego użytkownika do tabeli 'users' i chcemy również dodać rekord do tabeli 'profiles', który będzie powiązany z tym użytkownikiem. Wówczas, po wstawieniu użytkownika, możemy użyć insert_id, aby uzyskać jego ID i użyć go do wstawienia do 'profiles'. Używanie insert_id jest zgodne z najlepszymi praktykami, które zalecają minimalizowanie liczby zapytań do bazy danych oraz zapewnienie spójności danych.

Pytanie 34

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

A. document.getElementById(id).<nazwa-atrybutu> = <nowa wartość>
B. document.getElementById(id).innerHTML = <nowa wartość>
C. document.getElementById(id).style.<nazwa właściwości> = <nowa wartość>
D. document.getElementById(id).<nazwa właściwości> = <nowa wartość>
Sposoby zapisu w pozostałych odpowiedziach nie są odpowiednie dla zmiany cech elementów opisanych w CSS, co może prowadzić do nieporozumień w zakresie manipulacji stylem w JavaScript. Użycie document.getElementById(id).<nazwa-atrybutu> = <nowa wartość>; może sugerować, że próbujemy ustawić atrybuty HTML, jednak nie odnosi się to do stylów CSS. Atrybuty HTML i style CSS to dwa różne obszary, a manipulowanie stylem wymaga bezpośredniego odniesienia do obiektu style. Podobnie, w przypadku document.getElementById(id).<nazwa właściwości> = <nowa wartość>; wygląd elementu nie jest zmieniany, ponieważ nie wskazujemy na obiekt style, lecz na właściwości samego elementu. Użycie document.getElementById(id).innerHTML = <nowa wartość>; również wprowadza w błąd, ponieważ ta metoda służy do zmiany zawartości HTML wewnątrz danego elementu, a nie stylów. Często pojawia się mylne przekonanie, że można manipulować stylem, używając ogólnych atrybutów lub zawartości, co prowadzi do nieefektywnego i błędnego kodu. Istotne jest zrozumienie, że stylizacja elementów wymaga poprawnej interakcji z obiektem style, co zapewnia jednocześnie zgodność z najlepszymi praktykami programowania i pozwala uniknąć błędów w logice aplikacji.

Pytanie 35

Jaki język skryptowy o uniwersalnym zastosowaniu powinien być użyty do tworzenia aplikacji internetowych, wkomponowanych w kod HTML i działających na serwerze?

A. PHP
B. C#
C. JavaScript
D. Perl
PHP, czyli Hypertext Preprocessor, to taki język skryptowy, który jest mega popularny, szczególnie jeśli chodzi o dynamiczne strony www. Fajnie, że można go wplatać w HTML i uruchamiać na serwerze, bo to pozwala generować treści na bieżąco, tak jak chce użytkownik. PHP współpracuje z różnymi bazami danych, na przykład MySQL, co czyni go super wyborem dla aplikacji, które muszą się z nimi łączyć. Dzięki frameworkom, jak Laravel czy Symfony, programiści mogą szybko i sprawnie tworzyć bardziej skomplikowane aplikacje. PHP jest też zgodny z wieloma standardami webowymi, więc działa na różnych serwerach i systemach operacyjnych. Przykład? Weźmy WordPress - to popularny system zarządzania treścią, który w całości jest zrobiony właśnie w PHP. No i nie można zapomnieć, że jest prosty i elastyczny, co sprawia, że chętnie uczą się go zarówno początkujący, jak i doświadczeni programiści.

Pytanie 36

Jakie znaczenie ma przedstawiony fragment kodu w języku C++?

Ilustracja do pytania
A. Typ strukturalny składający się z trzech pól.
B. Interakcja między zmiennymi globalnymi a lokalnymi.
C. Zbiór zmiennych w hierarchii.
D. Trzy niezwiązane ze sobą zmienne.
W niektórych odpowiedziach widać, że mogłeś źle zrozumieć, jak działa struktura w C++. Ludzie myślą, że hierarchia zmiennych pokazuje zależności, ale w rzeczywistości struktura po prostu grupuje różne dane razem, a nie tworzy hierarchię. Pomyśl też o tym, że te trzy pola to nie są osobne zmienne – one są ze sobą połączone w jeden obiekt. Często myślenie o zmiennych globalnych i lokalnych w kontekście struktury jest mylące, bo struktury same w sobie nie definiują takich relacji. Te pojęcia dotyczą raczej zasięgu zmiennych. Zrozumienie struktury jako jednego typu danych naprawdę pomaga w lepszym zarządzaniu informacjami w kodzie, co jest istotne w programowaniu dzisiaj.

Pytanie 37

Jakim zapisem można w dokumencie HTML stworzyć element, który wyświetla obraz kotek.jpg oraz zawiera tekst alternatywny „obrazek kotka”?

A. <img src="/kotek.jpg" alt="obrazek kotka">
B. <img src="/kotek.jpg" title="obrazek kotka">
C. <img href="/kotek.jpg" title="obrazek kotka">
D. <img href="/kotek.jpg" alt="obrazek kotka">
W analizowanych odpowiedziach pojawiają się błędne koncepcje dotyczące atrybutów używanych w tagu <img>. Atrybut 'href' nie jest właściwy w kontekście obrazów; jest on używany w tagu <a> do definiowania linków. W związku z tym zapisy, które zawierają 'href', są niepoprawne, ponieważ nie prowadzą do załadowania obrazu. Zamiast tego, atrybut 'src' jest kluczowy, ponieważ informuje przeglądarkę, skąd ma pobrać plik graficzny. Ponadto ważne jest, aby używać atrybutu 'alt' w celu opisu zawartości obrazów, co znacząco wpływa na dostępność strony internetowej. W przypadku pominięcia atrybutu 'alt' lub użycia niewłaściwego atrybutu, użytkownicy korzystający z technologii asystujących mogą nie otrzymać istotnych informacji o wizualnych elementach strony, co może prowadzić do frustracji i braku zrozumienia treści. Należy unikać typowych błędów myślowych, takich jak przekonanie, że atrybuty są zamienne lub że nie mają one znaczenia dla dostępności. Łączenie niewłaściwych atrybutów z tagiem <img> skutkuje poważnymi problemami z wyświetlaniem treści oraz dostępnością strony, co jest sprzeczne z najlepszymi praktykami tworzenia stron internetowych.

Pytanie 38

Która z poniższych instrukcji jest równoważna z poleceniem switch w języku PHP?

switch ($liczba) {
    case 10:
    case 20: $liczba++; break;
    default: $liczba = 0;
}

Instrukcja 1.
if ($liczba==10)
    $liczba++;
else
    $liczba = 0;

Instrukcja 2.
if ($liczba==10 or $liczba==20)
    $liczba++;
else
    $liczba = 0;

Instrukcja 3.
if ($liczba==10 or $liczba==20)
    $liczba++;

Instrukcja 4.
if ($liczba==10 and $liczba==20)
    $liczba++;
else
    $liczba = 0;
A. Polecenie 2
B. Polecenie 3
C. Polecenie 1
D. Polecenie 4
Instrukcje warunkowe if-else są często używane w programowaniu do kontrolowania przepływu programu na podstawie wartości logicznych. W kontekście podanego pytania, istotne jest zrozumienie, jak różne operatory logiczne wpływają na działanie tych instrukcji. Instrukcja 1 zakłada, że zmienna $liczba musi być równa 10, by wykonać operację inkrementacji, co nie jest zgodne z oryginalnym kodem switch, ponieważ pomija wartość 20. Taka interpretacja mogłaby prowadzić do błędów w sytuacjach, gdzie obie wartości są dopuszczalne. Instrukcja 3 używa operatora or, co wydaje się poprawne, ale brak bloku else powoduje brak możliwości przypisania wartości 0 w sytuacjach, gdy $liczba nie wynosi 10 ani 20. To oznacza niekompletność logiczną i potencjalne błędy. Instrukcja 4 stosuje operator and, co wymaga, aby $liczba jednocześnie wynosiła 10 i 20, co jest logicznie niemożliwe w tym kontekście, prowadząc do nieprawidłowego działania. Taka nieprawidłowa logika może być wynikiem błędnego zrozumienia warunków logicznych, co jest częstym problemem wśród początkujących programistów. Zrozumienie różnic między tymi operatorami jest kluczowe dla tworzenia poprawnych i efektywnych konstrukcji warunkowych w dowolnym języku programowania, w tym w PHP. Poprawne użycie instrukcji if-else oraz operatorów logicznych jest fundamentem wielu aplikacji, a błędy mogą prowadzić do nieprzewidywalnego działania programu.

Pytanie 39

Web designer pragnie wstawić w znaczniku <header> nagłówek do treści. Zgodnie z zasadami użycia znaczników semantycznych, powinien wykorzystać znacznik

A. <h1>
B. <strong>
C. <p>
D. <title>
Zastosowanie znacznika <h1> w nagłówkach strony internetowej jest zgodne z zasadami semantycznymi HTML. Znacznik <h1> jest przeznaczony do oznaczania głównego nagłówka dokumentu i powinien być używany do przedstawienia najważniejszej treści. Dobrą praktyką jest, aby każda strona miała tylko jeden znacznik <h1>, co pomaga wyszukiwarkom zrozumieć hierarchię treści na stronie. Na przykład, w przypadku artykułu, tytuł artykułu mógłby być umieszczony w znaczniku <h1>, a podtytuły w <h2>, <h3> itd. W ten sposób struktura dokumentu jest jasna, co poprawia dostępność oraz SEO. Dodatkowo, stosowanie semantycznych znaczników ułatwia nawigację po stronie osobom korzystającym z technologii asystujących, takich jak czytniki ekranu, które interpretują hierarchię treści na podstawie użytych znaczników.

Pytanie 40

Które z poniższych poleceń pozwala na dodanie kolumny zadanie_kompletne do tabeli zadania?

A. CREATE INDEX zadania ADD COLUMN zadanie_kompletne int
B. ALTER TABLE zadania ADD COLUMN zadanie_kompletne int
C. INSERT INTO zadania VALUES zadanie_kompletne
D. ADD COLUMN zadanie_kompletne WITH zadania
Wszystkie trzy pozostałe odpowiedzi są nieprawidłowe w kontekście dodawania nowej kolumny do tabeli. Pierwsze z zaproponowanych poleceń, które sugeruje utworzenie indeksu, jest niepoprawne, ponieważ CREATE INDEX służy do tworzenia indeksów, które poprawiają wydajność zapytań, a nie do modyfikacji struktury tabeli. Indeks może być pomocny w optymalizacji wyszukiwania danych w tabeli, jednak nie ma związku z dodawaniem nowych kolumn. Drugie polecenie, INSERT INTO, jest przeznaczone do dodawania nowych rekordów do istniejącej tabeli, a nie do modyfikacji jej struktury. To polecenie umożliwia dodawanie danych do kolumn, które już istnieją, ale nie może być użyte do dodawania nowych kolumn. Ostatnia nieprawidłowa odpowiedź dotycząca 'ADD COLUMN zadanie_kompletne WITH zadania' jest również błędna, ponieważ nie jest to poprawna składnia SQL. Nie ma polecenia 'WITH' w kontekście dodawania kolumn do tabeli; zamiast tego powinno być używane polecenie ALTER TABLE. W rezultacie, niezrozumienie celu każdego z tych poleceń może prowadzić do błędnych prób modyfikacji struktury bazy danych, co w praktyce może skutkować utratą danych lub rozczarowującymi wynikami operacji.