Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 19 lutego 2026 08:10
  • Data zakończenia: 19 lutego 2026 08:42

Egzamin zdany!

Wynik: 29/40 punktów (72,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

W języku PHP symbol "//" oznacza

A. operator dzielenia całkowitego.
B. operator alternatywy.
C. początek komentarza jednoliniowego
D. początek programu.
Znak "//" w PHP to początek komentarza jednoliniowego. Komentarze to naprawdę ważna część kodowania, bo dzięki nim można dodawać notatki, które wyjaśniają, co się dzieje w kodzie. Ułatwia to późniejsze zrozumienie przy pracy nad projektem. Kiedy programista wpisuje "//", mówi interpreterowi PHP, żeby zignorował wszystko, co znajduje się w tej linii po tym znaku. Dzięki temu można opisywać funkcje czy klasy albo tymczasowo wyłączać część kodu, gdy testujemy różne rzeczy. To dobra praktyka, bo czytelność i dokumentacja kodu są kluczowe, szczególnie w większych projektach. Przykładowo, można zobaczyć taki komentarz: // Funkcja oblicza sumę dwóch liczb function suma($a, $b) { return $a + $b; } Dzięki takiemu komentarzowi inny programista szybko zrozumie, co ta funkcja robi, co jest super ważne w sytuacjach, gdy w zespole jest więcej osób.

Pytanie 2

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

A. wielu wartości wyłącznie tekstowych.
B. wielu wartości lub funkcji.
C. wielu wartości dowolnego typu.
D. wielu wartości wyłącznie liczbowych.
Obiekt typu array w języku JavaScript jest strukturą danych, która służy do przechowywania wielu wartości dowolnego typu. Można w nim przechowywać liczby, napisy, obiekty, a nawet inne tablice. Dzięki temu arrays są niezwykle elastyczne i użyteczne w tworzeniu aplikacji. W JavaScript tablice są dynamiczne, co oznacza, że można do nich dodawać nowe elementy w trakcie działania programu za pomocą metod takich jak push() i unshift(). Przykład użycia tablicy: let fruits = ['jabłko', 'banan', 42, {color: 'zielony'}, [1, 2, 3]]; w tym przykładzie tablica fruits przechowuje różne typy danych, w tym napisy, liczbę, obiekt oraz inną tablicę. Warto również zauważyć, że tablice w JavaScript są obiektami, co pozwala na wykorzystanie różnych metod i właściwości typowych dla obiektów. Dokumentacja ECMAScript jasno określa zasady działania tablic, co potwierdza ich funkcjonalność jako kolekcji wartości. Warto zrozumieć, że tablice nie są ograniczone do przechowywania jednego typu danych, co czyni je idealnym narzędziem do zarządzania złożonymi zbiorami informacji.

Pytanie 3

W formularzu dokumentu PHP znajduje się pole <input name="im">. Po tym, jak użytkownik wprowadzi ciąg znaków "Janek", aby dodać zawartość tego pola do bazy danych, w tablicy $_POST obecny jest element

A. im z następnym numerem indeksu
B. im z indeksem Janek
C. Janek z następnym numerem indeksu
D. Janek o indeksie im
W analizowanym pytaniu niepoprawne odpowiedzi wskazują różne błędne koncepcje dotyczące działania PHP i struktury tablicy $_POST. Przede wszystkim, w systemach opartych na PHP, po przesłaniu formularza, wartości pól formularza są przekazywane do tablicy $_POST, gdzie klucze odpowiadają nazwom pól w formularzu, a ich wartości odpowiadają użytkownikowi wprowadzonym danym. Odpowiedzi sugerujące, że "im" może mieć inny typ indeksu, jak "Janek" lub numer indeksu, są nieprecyzyjne i mylące. Klucz w tablicy $_POST to nazwa pola, co oznacza, że jest stały i niezmienny, niezależnie od wartości, którą użytkownik wprowadza. Ponadto, odpowiedzi, które sugerują istnienie "kolejnego numeru indeksu", mogą prowadzić do błędnego rozumienia konceptu tablic asocjacyjnych w PHP. Tablice asocjacyjne działają na zasadzie klucz-wartość, co oznacza, że klucz (w tym wypadku "im") jest zawsze powiązany z jedną wartością (tu: "Janek"). Błędne myślenie może również wynikać z nieznajomości podstaw PHP, gdzie wiele osób myli pojęcia klucza i wartości lub nie rozumie, że klucz jest stały i determinowany przez atrybut "name" w formularzu, a nie przez wartość wprowadzoną przez użytkownika. Zrozumienie tej zasadniczej różnicy jest kluczowe dla prawidłowego przetwarzania danych w formularzach oraz budowy bezpiecznych aplikacji webowych.

Pytanie 4

Jakie wartości zostaną wyświetlone kolejno w wyniku wykonania podanego skryptu?

<script language = "JavaScript">
var x = 1;
var y;
++y;
document.write(++x);
document.write(" ");
document.write(x--);
document.write(" ");
document.write(x);
</script>
A. 2 1 1
B. 1 2 1
C. 2 2 1
D. 1 2 2
Skrypt operuje na zmiennej x używając zarówno preinkrementacji jak i postdekrementacji co może być mylące jeśli nie jest się zaznajomionym z ich działaniem. W przypadku preinkrementacji ++x wartość zmiennej x jest najpierw zwiększana zanim zostanie wykorzystana w dalszym wyrażeniu. To jest kluczowe ponieważ oznacza że już przy pierwszym wypisaniu wartość x to 2 co jest często błędnie interpretowane jako 1 jeśli nie uwzględni się preinkrementacji. Z kolei postdekrementacja x-- oznacza że obecna wartość zmiennej jest używana zanim zostanie ona zmniejszona. To często jest źródłem błędów logicznych gdyż programista może oczekiwać że wartość zmiennej została już zaktualizowana. W efekcie druga wartość jest również 2 ponieważ dekrementacja następuje po użyciu wartości w wyrażeniu a dopiero trzecia instrukcja wypisuje wynik dekrementacji czyli 1. Zrozumienie tych mechanizmów jest kluczowe w kontekście pisania wydajnego i poprawnego kodu zwłaszcza w językach takich jak JavaScript gdzie operacje na zmiennych są powszechne. Warto zatem zwrócić uwagę na różnicę między pre- a post- operacjami aby uniknąć potencjalnych błędów w logice aplikacji i lepiej zarządzać przepływem danych w programach. Dobre praktyki programistyczne zalecają również konsystencję w korzystaniu z tych operatorów co pomaga w utrzymaniu czytelności i zrozumiałości kodu przez współpracowników i samego autora post factum. Tego rodzaju błędy należą do typowych wśród początkujących programistów i podkreślają znaczenie dokładnego testowania i dokumentowania kodu dla zapewnienia jego niezawodności i poprawności działania w różnorodnych kontekstach środowiskowych i użytkowych. Weryfikacja takich operacji w trakcie testów jednostkowych pozwala na wcześniejsze wykrycie i korektę błędów logicznych co jest zgodne z najlepszymi praktykami w inżynierii oprogramowania. Przy tym podejściu zmniejsza się również ryzyko nieoczekiwanych zachowań aplikacji w środowiskach produkcyjnych co może mieć kluczowe znaczenie w przypadku aplikacji o krytycznym znaczeniu dla biznesu.

Pytanie 5

Jaką wartość zwróci funkcja zoo zdefiniowana w języku C++, wywołana z aktualnym parametrem 3.55

int zao(float x){
    return (x + 0.5);
}
A. 4.05
B. 3
C. 4
D. 3.5
Niestety, wybrana odpowiedź jest niepoprawna. Możliwe, że zapomniano o specyficznych zasadach konwersji typów danych w języku C++. W języku tym, jeśli mamy do czynienia z wartościami zmiennoprzecinkowymi (float) i konwertujemy je do wartości całkowitych (int), część ułamkowa jest zawsze odrzucana. Nie ma tutaj zaokrąglenia do najbliższej liczby całkowitej. Dlatego, nawet jeśli wynik działania wewnątrz funkcji wynosi 4.05, po konwersji do typu int, zostaje z tego tylko 4. To jest typowy błąd, który może prowadzić do nieoczekiwanych wyników, szczególnie w programach, gdzie precyzja obliczeń jest kluczowa. Pamiętaj zawsze o tej specyfice języka C++ i dokładnie określaj typy danych, z którymi pracujesz.

Pytanie 6

Wskaż pętlę w języku JavaScript, która wypisze sześć kolejnych liczb parzystych.

A. for(i=2;i<12;i+=2) {document.write(i);}
B. for(i=2;i<=12;i++) {i=i+2; document.write(i);}
C. for(i=2;i<=12;i+=2) {document.write(i);}
D. for(i=2;i<12;i++) {i++; document.write(i);}
Prawidłowa odpowiedź to pętla for(i=2;i<=12;i+=2) {document.write(i);}, ponieważ jest ona skonstruowana w sposób, który pozwala na wyświetlenie sześciu kolejnych liczb parzystych, zaczynając od 2 do 12 włącznie. Pętla for składa się z trzech głównych części: inicjalizacji (i=2), warunku (i<=12) oraz inkrementacji (i+=2). Inicjalizacja ustawia zmienną i na 2, co jest pierwszą liczbą parzystą. Warunek i<=12 zapewnia, że pętla będzie kontynuowana do momentu, gdy i osiągnie wartość większą niż 12, co oznacza, że ostatnią liczbą, która zostanie wyświetlona, będzie 12. Inkrementacja i+=2 powoduje, że przy każdej iteracji wartość i zwiększa się o 2, co pozwala na przechodzenie pomiędzy kolejnymi liczbami parzystymi (2, 4, 6, 8, 10, 12). Taki sposób konstrukcji pętli jest zgodny z zasadami programowania w JavaScript oraz pozwala na efektywne i kontrolowane wyświetlanie danych na stronie. Istotne jest również, że wykorzystanie metody document.write() jest jedną z prostszych form wyświetlania danych w JavaScript, aczkolwiek w praktyce jest zalecane korzystanie z bardziej nowoczesnych metod, takich jak manipulacja DOM, aby uniknąć nadpisywania całej zawartości strony.

Pytanie 7

W instrukcjach, których celem jest odtwarzanie dźwięku na stronie internetowej jako tła muzycznego, nie stosuje się atrybutu

A. loop="10"
B. volume="-100"
C. balance="10"
D. href="c:/100.wav"
Wszystkie pozostałe odpowiedzi są niepoprawne z kilku powodów. Atrybut loop, który jest używany do powtarzania dźwięku, nie może przyjmować wartości liczbowych, dlatego loop='10' jest niewłaściwy. Wartość loop jest typu boolowskiego, gdzie obecność atrybutu w tagu <audio> lub <source> oznacza, że dźwięk ma być odtwarzany w pętli. Kolejną niepoprawną odpowiedzią jest balance='10', który nie jest uznawany za standardowy atrybut HTML. W kontekście dźwięku, nie istnieje atrybut balance, który mógłby kontrolować balans lewego i prawego kanału. Ostatnia z niepoprawnych odpowiedzi, volume='-100', także nie jest obowiązującym atrybutem. W HTML5 nie ma możliwości ustawienia głośności w ten sposób; zamiast tego dźwięk musi być kontrolowany za pomocą JavaScript i API Web Audio, co pozwala na programowe dostosowanie głośności dźwięku. Podsumowując, wszystkie te odpowiedzi nie odpowiadają na wymagania techniczne dotyczące odtwarzania dźwięku w standardach internetowych.

Pytanie 8

Głównym zadaniem systemu CMS jest

A. przyspieszenie projektowania aplikacji desktopowych.
B. ułatwienie zarządzania treścią na stronie internetowej.
C. ujednolicenie tematyczne zawartości stron internetowych.
D. konwersja obiektowego języka programowania na strukturalny.
Poprawnie wskazana odpowiedź dobrze oddaje istotę systemów CMS (Content Management System). Głównym zadaniem CMS-a jest właśnie ułatwienie zarządzania treścią na stronie internetowej bez konieczności ciągłego grzebania w kodzie HTML, PHP czy JavaScript. W praktyce oznacza to, że redaktor, nauczyciel, pracownik biura czy nawet właściciel małej firmy może samodzielnie dodawać newsy, edytować teksty, podmieniać zdjęcia, tworzyć nowe podstrony, a czasem nawet zarządzać menu – wszystko z poziomu przeglądarki, przez panel administracyjny. Z mojego doświadczenia w szkole i w pracy wynika, że to właśnie CMS sprawia, że strona żyje, bo ktoś nietechniczny może ją na bieżąco aktualizować. Typowe systemy CMS, jak WordPress, Joomla czy Drupal, oferują edytor WYSIWYG (podobny do Worda), zarządzanie mediami, wersjonowanie treści, role i uprawnienia użytkowników (np. redaktor, administrator), a także szablony i wtyczki. Z punktu widzenia dobrych praktyk w branży webowej, CMS oddziela warstwę prezentacji (szablony, motywy) od warstwy treści (artykuły, strony, wpisy). To jest zgodne z zasadą separacji logiki, treści i wyglądu, co ułatwia rozwój i utrzymanie serwisu. W nowoczesnych projektach często stosuje się tzw. headless CMS, gdzie treść jest zarządzana w panelu, a następnie udostępniana przez API do różnych front-endów (strona WWW, aplikacja mobilna). Niezależnie jednak od technologii, główna idea jest ta sama: CMS ma usprawnić i uporządkować cały proces tworzenia, edycji, publikacji oraz archiwizacji treści. Dzięki temu programista nie musi za każdym razem zmieniać kodu, gdy ktoś chce poprawić przecinek w artykule, a firma ma kontrolę nad tym, kto co może opublikować, kiedy i w jakiej formie.

Pytanie 9

Aby zrealizować przycisk na stronę internetową zgodnie z wzorem, należy w programie graficznym skorzystać z opcji

Ilustracja do pytania
A. zaokrąglenie lub wybranie opcji prostokąt z zaokrąglonymi rogami
B. deformacje i zniekształcenia
C. propagacja wartości
D. wybór eliptyczny
Stworzenie przycisku na stronie internetowej, który ma zaokrąglone rogi, wymaga użycia opcji zaokrąglenia w programie do grafiki rastrowej lub wybrania narzędzia prostokąt z zaokrąglonymi rogami. Jest to podejście zgodne z aktualnymi trendami w projektowaniu interfejsów użytkownika, gdzie nacisk kładziony jest na estetykę i użyteczność. Zaokrąglone elementy są bardziej przyjazne dla oka i pomagają w tworzeniu wizualnie przyjemnych projektów. W programach graficznych takich jak Adobe Photoshop czy GIMP, opcja ta pozwala na szybkie i precyzyjne dostosowanie kształtu przycisku, co jest nieocenione przy tworzeniu prototypów i projektów graficznych. Stosowanie zaokrągleń jest również zgodne z zasadami projektowania responsywnego, gdyż takie elementy wyglądają dobrze na różnorodnych rozdzielczościach ekranów. Wybierając tę technikę, projektanci mogą skupić się na tworzeniu spójnych i nowoczesnych interfejsów, co jest istotne w kontekście doświadczenia użytkownika. Przykładem zastosowania jest przycisk 'Kontakt' na stronie internetowej, który dzięki zaokrąglonym rogom wygląda bardziej zachęcająco i nowocześnie, co wpływa na pozytywne postrzeganie strony przez użytkowników.

Pytanie 10

Hermetyzacja to zasada programowania obiektowego mówiąca o tym, że

A. klasy mogą mieć zdefiniowane metody wirtualne, które są implementowane w pochodnych klasach.
B. typy pól w klasach/obiektach mogą być dynamicznie zmieniane w zależności od danych im przypisywanych.
C. klasy mogą współdzielić ze sobą funkcjonalność.
D. pola i metody wykorzystywane tylko przez daną klasę są ograniczane zasięgiem private lub protected.
Hermetyzacja to pojęcie, które dość często miesza się z innymi zasadami programowania obiektowego, takimi jak dziedziczenie, polimorfizm czy współdzielenie funkcjonalności między klasami. W efekcie powstaje takie wrażenie, że chodzi po prostu o „współpracę obiektów” albo „możliwość rozszerzania klas”, co jest tylko częścią obrazu, ale nie definicją hermetyzacji. Sedno hermetyzacji polega na ukrywaniu stanu obiektu i szczegółów implementacyjnych za dobrze zdefiniowanym interfejsem. Klasa ma swoje pola i metody pomocnicze, ale kod na zewnątrz widzi tylko to, co programista świadomie wystawi jako public. Pozostałe odpowiedzi dotykają innych cech obiektowości. Współdzielenie funkcjonalności między klasami to bardziej temat dziedziczenia, kompozycji albo używania wspólnych modułów czy interfejsów. To, że dwie klasy mogą mieć podobne metody i wykorzystywać wspólny kod, nie ma bezpośrednio nic wspólnego z hermetyzacją. Można mieć świetnie współdzieloną logikę, a kompletnie zignorować ukrywanie szczegółów implementacji i bezpieczeństwo stanu obiektów. Z kolei pomysł, że typy pól w klasach mogą się dynamicznie zmieniać w zależności od danych, dotyczy raczej systemu typów i języków dynamicznych, jak JavaScript czy PHP w trybie bez ścisłego typowania. To jest kwestia dynamicznego typowania, a nie hermetyzacji. Można mieć język statycznie typowany (np. Java, C#) i świetną hermetyzację, i można mieć język dynamicznie typowany, w którym hermetyzacja jest słaba lub w ogóle nieprzestrzegana. Natomiast metody wirtualne, nadpisywanie ich w klasach pochodnych, późne wiązanie wywołań – to klasyczny polimorfizm, nie hermetyzacja. Owszem, te koncepcje często występują razem w jednym projekcie, przez co łatwo się mylą, ale ich cele są inne. Polimorfizm pozwala różnym klasom reagować inaczej na to samo wywołanie metody, hermetyzacja zaś skupia się na tym, żeby ukryć wnętrze obiektu i wystawić tylko kontrolowany interfejs. Typowym błędem myślowym jest utożsamianie „obiektowości jako całości” z pojedynczymi jej elementami. Ktoś widzi dziedziczenie albo metody wirtualne i zakłada, że to już automatycznie „hermetyzacja”. W praktyce dobra hermetyzacja to przede wszystkim rozsądne używanie private/protected, unikanie publicznych pól, a także pilnowanie, żeby stan obiektu był spójny i nie dało się go przypadkiem popsuć z zewnątrz. To właśnie ta ochrona wnętrza klasy, a nie możliwość dziedziczenia czy dynamicznego typowania, jest tutaj kluczowa.

Pytanie 11

Który z przedstawionych kodów XHTML sformatuje tekst według podanego wzorca?
Ala ma kota
a kot ma Alę

A. <p>Ala ma <b>kota</b><br> a <i>kot</i> ma Alę</p>
B. <p>Ala ma <b>kota</b><br> a <b>kot</b> ma Alę</p>
C. <p>Ala ma <b>kota</i><br> a <b>kot</b> ma Alę</p>
D. <p>Ala ma <b>kota<br> a <i>kot</i> ma Alę</p>
Poprawna odpowiedź to <p>Ala ma <b>kota</b><br/>a <i>kot</i> ma Alę</p>. W tym kodzie XHTML tekst 'Ala ma kota' jest odpowiednio sformatowany dzięki zastosowaniu znaku <b>, który definiuje tekst pogrubiony, oraz <i>, który oznacza tekst kursywą. Ponadto <br/> jest używane do wstawienia przerwy w linii, co jest zgodne z praktykami formatowania tekstu w HTML/XHTML. Zgodnie ze standardami W3C, XHTML jest stricte oparty na XML, co oznacza, że wszystkie elementy muszą być poprawnie zagnieżdżone i zamknięte. Użycie <i> w drugiej części tekstu jest poprawne, ponieważ wskazuje na pewną formę wyróżnienia, a jednocześnie zachowuje semantykę. Przy tworzeniu stron internetowych ważne jest, aby formatowanie tekstu było zarówno estetyczne, jak i zgodne z regułami semantycznymi, co ta odpowiedź spełnia. Przykładowo, tekst ten można umieścić w dowolnym dokumencie HTML, aby zachować poprawne formatowanie, co wpływa na czytelność.

Pytanie 12

W programie Microsoft Access mechanizmem ochrony danych związanym z tabelą i kwerendą jest

A. ustalanie limitów przestrzeni na dysku
B. przypisanie uprawnień
C. określanie zakresu tabel
D. wykorzystanie makr
Przypisanie uprawnień jest kluczowym elementem zarządzania bezpieczeństwem w Microsoft Access, ponieważ pozwala na kontrolowanie, kto ma dostęp do danych w tabelach i kwerendach. W praktyce, administratorzy baz danych mogą definiować, które grupy użytkowników mogą przeglądać, edytować lub usuwać dane. To podejście jest zgodne z zasadą najmniejszych uprawnień, co oznacza, że użytkownicy otrzymują tylko te uprawnienia, które są im niezbędne do wykonywania swoich zadań. Na przykład, jeśli pracownik potrzebuje jedynie przeglądać dane w konkretnej tabeli, administrator może przyznać mu jedynie uprawnienia do odczytu, co minimalizuje ryzyko nieautoryzowanych zmian. Warto także wspomnieć, że przypisanie uprawnień nie ogranicza się tylko do tabel, ale dotyczy również kwerend, formularzy i raportów, co pozwala na szczegółowe zarządzanie dostępem do różnych zasobów systemu. Dobre praktyki w zakresie bezpieczeństwa baz danych zalecają regularne audyty uprawnień, aby upewnić się, że są one nadal odpowiednie do zmieniających się potrzeb organizacji oraz roli użytkowników.

Pytanie 13

W pliku CSS znajdują się poniższe style. Kiedy klikniemy na hiperłącze i wrócimy na stronę, jego kolor zmieni się na

a { color: Brown; }
a:link { color: Green; }
a:visited { color: Red; }
a:hover { color: Yellow; }
A. brązowy
B. czerwony
C. zielony
D. żółty
W stylach CSS dla hiperłączy istnieją różne pseudoklasy które określają ich wygląd w zależności od stanu. W tym przypadku kolor czerwony przypisany jest do pseudoklasy a:visited co oznacza że po odwiedzeniu i późniejszym powrocie na stronę hiperłącze przyjmie kolor czerwony. Pseudoklasa a:visited jest używana aby oznaczyć linki które użytkownik już odwiedził co jest przydatne w nawigacji i pozwala użytkownikom zidentyfikować które strony już odwiedzili. Dobre praktyki w projektowaniu stron internetowych zalecają użycie wyraźnych i kontrastujących kolorów aby użytkownicy mogli łatwo rozpoznać odwiedzone linki co poprawia doświadczenie użytkownika. Warto pamiętać że przeglądarki mają różne poziomy wsparcia dla pseudoklasy a:visited w kontekście stylizacji innych właściwości niż kolor co wynika z wymogów prywatności. Dlatego w standardowych przypadkach kolorowe oznaczenie linków przynosi pożądany efekt zapewniając zgodność z wytycznymi WCAG dotyczącymi dostępności stron internetowych. Bardzo ważne jest aby projektując strony internetowe dbać o klarowność i intuicyjność nawigacji co zwiększa satysfakcję z użytkowania serwisu.

Pytanie 14

W bazie danych istnieje tabela ksiazki, która posiada pola: tytul, id_autora, data_wypoz, id_czytelnika. Codziennie tworzony jest raport dotyczący książek wypożyczonych w danym dniu, który wyświetla jedynie tytuły książek. Która kwerenda SQL jest odpowiednia do generowania tego raportu?

A. SELECT * FROM ksiazki
B. SELECT tytul FROM ksiazki
C. SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATENT_E()
D. SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE()
Ta odpowiedź jest prawidłowa, ponieważ wykorzystuje funkcję CURRENT_DATE(), która zwraca bieżącą datę systemową. Zapytanie SQL SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE(); umożliwia wybranie jedynie tych książek, które zostały wypożyczone w dniu, w którym raport jest generowany. To podejście jest zgodne z dobrymi praktykami w zakresie zarządzania danymi, ponieważ pozwala na efektywne filtrowanie danych bez zbędnych informacji. W kontekście bazy danych, operacje takie jak filtrowanie danych według daty są kluczowe dla tworzenia raportów, które są użyteczne i zrozumiałe dla użytkowników. Dzięki temu możemy na przykład generować codzienne zestawienia wypożyczeń książek, co jest szczególnie przydatne w bibliotekach oraz innych instytucjach zajmujących się wynajmem materiałów. Użycie odpowiednich funkcji w SQL jest nie tylko korzystne, ale również zwiększa efektywność procesów analitycznych oraz zarządzania danymi.

Pytanie 15

W języku PHP instrukcja foreach jest rodzajem

A. instrukcji wyboru, dla elementów tablicy
B. pętli, niezależnie od rodzaju zmiennej
C. instrukcji warunkowej, niezależnie od typu zmiennej
D. pętli, przeznaczonej wyłącznie dla elementów tablicy
Instrukcja <i>foreach</i> w PHP to naprawdę super sprawa, jeśli chodzi o przechodzenie przez elementy tablicy. Dzięki niej można bardzo prosto iterować po wszystkich wartościach, co sprawia, że kod staje się bardziej przejrzysty i zwięzły. Nie trzeba wtedy się martwić o ręczne zarządzanie wskaźnikami tablicy. A dostęp do kluczy i wartości? Proszę bardzo! Na przykład, mając tablicę $fruits = ['jabłko', 'banan', 'czereśnia'], można użyć <i>foreach</i> tak: <code>foreach ($fruits as $fruit) { echo $fruit; }</code>. To wydrukuje nam wszystkie owoce na ekranie. No i warto mieć na uwadze, że <i>foreach</i> działa też z tablicami asocjacyjnymi, co pozwala na przechodzenie przez pary klucz-wartość. Korzystając z tej instrukcji, można pisać lepszy, bardziej zrozumiały kod, a to szczególnie ma znaczenie w większych projektach, gdzie czytelność jest kluczowa dla późniejszego rozwoju i utrzymania kodu.

Pytanie 16

W aplikacji internetowej komunikat powinien pojawiać się tylko wtedy, gdy dany użytkownik jest na stronie po raz pierwszy. Którą funkcję PHP należy w tym celu zastosować?

A. mysqli_change_user
B. session_destroy
C. setcookie
D. define
Prawidłowo – w tym zadaniu kluczowa jest funkcja setcookie(), bo to właśnie ciasteczka są standardowym mechanizmem do rozpoznawania, czy użytkownik był już wcześniej na danej stronie. W praktyce robi się to tak: przy pierwszym wejściu na stronę sprawdzasz, czy istnieje określone cookie, np. $_COOKIE['first_visit']. Jeśli go nie ma, wyświetlasz komunikat powitalny i ustawiasz ciasteczko za pomocą setcookie('first_visit', '1', time()+3600*24*365). Przy kolejnych wejściach cookie już będzie istniało, więc komunikat się nie pojawi. To jest bardzo typowy wzorzec np. dla banerów informujących o ciasteczkach, komunikatów onboardingowych czy jednorazowych podpowiedzi dla nowych użytkowników. Z mojego doświadczenia w webdevie to najprostsze i najbardziej przenośne rozwiązanie, bo działa niezależnie od sesji i logowania użytkownika – wystarczy przeglądarka z włączonymi cookies. Ważne jest też, żeby pamiętać o tym, że setcookie() musi być wywołane przed wysłaniem jakiegokolwiek outputu (czyli przed jakimkolwiek HTML, echo, BOM itd.), bo ciasteczka są wysyłane w nagłówkach HTTP. W bardziej rozbudowanych projektach często łączy się cookies z innymi mechanizmami (np. sesją czy bazą danych), ale do prostego sprawdzenia „czy użytkownik jest tu pierwszy raz” ciasteczko ustawiane setcookie() to według dobrych praktyk w zupełności wystarcza. Warto też dbać o parametry bezpieczeństwa ciastek (secure, httponly, samesite), szczególnie gdy później używamy tego mechanizmu do czegoś ważniejszego niż zwykły komunikat informacyjny.

Pytanie 17

W języku PHP istnieje funkcja, która pozwala na weryfikację, czy dany ciąg stanowi część innego ciągu, to

A. strlen()
B. trim()
C. strstr()
D. strtok()
Funkcja strstr() w języku PHP jest używana do wyszukiwania pierwszego wystąpienia jednego ciągu (substringu) w innym ciągu. Kiedy użyjesz tej funkcji, zwróci ona fragment oryginalnego ciągu, zaczynając od miejsca, w którym znaleziono szukany substring, aż do końca ciągu. Przykładowo, jeśli wywołasz strstr('programowanie w PHP', 'w'), otrzymasz 'w PHP'. Jest to bardzo przydatne, gdy chcemy sprawdzić, czy dany ciąg zawiera inny ciąg, a także uzyskać kontekst, w którym ten substring występuje. W praktyce, strstr() może być używana w sytuacjach takich jak walidacja danych wejściowych, parsowanie tekstu, a także w implementacjach funkcjonalności wyszukiwania. Zastosowanie strstr() jest zgodne z dobrymi praktykami programowania, ponieważ pozwala na efektywne operacje na ciągach tekstowych, przy minimalnym ryzyku błędów, co zwiększa czytelność i utrzymanie kodu.

Pytanie 18

Baza danych szkoły podstawowej dla dzieci w wieku 6 lat obejmuje tabelę szkoła, która zawiera kolumny: imie, nazwisko, klasa. Wszyscy uczniowie w klasach od 1 do 5 przeszli do wyższej klasy. W celu zwiększenia wartości w kolumnie klasa o 1, należy wykonać następujące polecenie

A. UPDATE szkoła SET klasa = klasa + 1 WHERE klasa >=1 AND klasa <= 5
B. SELECT szkoła FROM klasa = klasa + 1 WHERE klasa >=1 AND klasa <= 5
C. UPDATE nazwisko, imie SET klasa = klasa + 1 WHERE klasa>l OR klasa < 5
D. SELECT nazwisko, imie FROM klasa = klasa + 1 WHERE klasa>l OR klasa < 5
Poprawne polecenie to 'UPDATE szkoła SET klasa = klasa + 1 WHERE klasa >=1 AND klasa <= 5;'. To zapytanie aktualizuje wartość w kolumnie 'klasa' dla wszystkich uczniów w tabeli 'szkoła', których aktualny poziom klasy mieści się w zakresie od 1 do 5. Kluczowym elementem jest użycie polecenia UPDATE, które jest standardowym sposobem na modyfikowanie danych w bazach danych SQL. Oznaczenie 'SET klasa = klasa + 1' wskazuje, że chcemy zwiększyć obecną wartość w kolumnie 'klasa' o 1. Warto zwrócić uwagę na warunek WHERE, który filtruje rekordy tak, aby aktualizacja dotyczyła tylko tych uczniów, którzy są w klasach 1-5. Tego rodzaju operacje są powszechnie stosowane w zarządzaniu danymi w aplikacjach edukacyjnych i są zgodne z praktykami bezpieczeństwa i integralności danych, zapewniając, że tylko odpowiednie rekordy są aktualizowane. Przykładem praktycznego zastosowania może być coroczna aktualizacja klas uczniów po zakończeniu roku szkolnego.

Pytanie 19

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

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

Aby przeanalizować rozkład ilościowy różnych kolorów na zdjęciu, jaka metoda powinna być zastosowana?

A. histogramu
B. balansu kolorów
C. rozmycia Gaussa
D. desaturacji
Histogram to narzędzie analityczne, które pozwala wizualizować rozkład kolorów oraz ich intensywność w obrazie. Dzięki histogramowi możemy zidentyfikować, które kolory dominują w danym zdjęciu, co jest kluczowe w procesie edycji graficznej oraz analizy obrazu. Histogram przedstawia liczbę pikseli dla każdego poziomu jasności lub dla poszczególnych kolorów w skali RGB (czerwony, zielony, niebieski). W praktyce, analizując histogram, możemy szybko ocenić, czy zdjęcie jest dobrze naświetlone, czy może występują w nim zbyt ciemne lub zbyt jasne obszary. Przykładowo, w fotografii krajobrazowej, gdy chcemy uzyskać pełne spektrum barw zieleni i niebieskiego nieba, histogram pomoże nam dostosować ekspozycję lub kolory, aby uzyskać pożądany efekt. Standardy branżowe, takie jak Adobe RGB czy sRGB, również opierają się na analizie histogramu, co czyni go niezbędnym narzędziem dla profesjonalnych fotografów oraz grafików.

Pytanie 21

Instrukcja REVOKE SELECT ON nazwa1 FROM nazwa2 w języku SQL pozwala na

A. przyznawanie praw do tabeli
B. przyznawanie uprawnień z użyciem ustalonego schematu
C. usunięcie użytkownika z bazy danych
D. odebranie uprawnień danemu użytkownikowi
Polecenie REVOKE SELECT ON w języku SQL jest używane do odbierania uprawnień do wykonywania operacji SELECT na określonej tabeli lub widoku dla konkretnego użytkownika lub grupy użytkowników. W przypadku użycia tej komendy, administrator bazy danych lub właściciel obiektu wskazuje, że dany użytkownik nie ma już prawa do odczytu danych z określonej tabeli, co skutkuje zablokowaniem dostępu do informacji w tej tabeli. Przykładowo, jeśli mamy tabelę 'Pracownicy' i użytkownika 'JanKowalski', polecenie REVOKE SELECT ON Pracownicy FROM JanKowalski skutkuje tym, że Jan Kowalski nie będzie mógł wykonywać zapytań typu SELECT na tej tabeli. Ważne jest, aby zrozumieć, że polecenie to nie usuwa użytkownika z bazy danych ani nie zmienia struktury bazy, a jedynie modyfikuje uprawnienia dostępu. W kontekście SQL, standardy takie jak ANSI SQL definiują sposób, w jaki uprawnienia mogą być przyznawane i odbierane, co sprawia, że umiejętność zarządzania uprawnieniami jest niezbędna dla każdego administrującego bazą danych.

Pytanie 22

W hurtowni danych stworzono tabelę sprzedaz, która zawiera pola: id, kontrahent, grupa_cenowa, obrot. Jakie polecenie trzeba zastosować, aby znaleźć tylko kontrahentów z grupy cenowej numer dwa, których obrót przekracza 4000 zł?

A. SELECT sprzedaz FROM kontrahent WHERE grupa_cenowa = 2 AND obrot > 4000;
B. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 OR obrot > 4000;
C. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 AND obrot > 4000;
D. SELECT sprzedaz FROM kontrahent WHERE obrot > 4000;
Twoja odpowiedź jest na właściwej drodze. Wykorzystałeś klauzulę SELECT w zapytaniu SQL, żeby wydobyć konkretne dane z tabeli sprzedaz. Świetnie, że zastosowałeś WHERE z warunkami 'grupa_cenowa = 2' oraz 'obrot > 4000', bo to dokładnie filtruje wyniki do tych kontrahentów, którzy są w drugiej grupie cenowej i mają obrót większy niż 4000 zł. Takie operacje są bardzo ważne w analizie danych, szczególnie w hurtowniach danych, gdzie musisz dobrze filtrować i agregować informacje, żeby wyciągnąć sensowne wnioski. W praktyce takie zapytania mogą być przydatne przy tworzeniu raportów sprzedażowych czy ocenie rentowności klientów. Warto też pamiętać, żeby tabele i kolumny były jasno nazwane, bo to zdecydowanie ułatwia tworzenie zapytań SQL.

Pytanie 23

Jaki znacznik z sekcji head dokumentu HTML w wersji 5 jest wymagany przez walidator HTML i jego brak skutkuje zgłoszeniem błędu error?

A. link
B. style
C. meta
D. title
Znacznik <title> jest kluczowym elementem każdej strony internetowej, który znajduje się w sekcji <head> dokumentu HTML. Jego podstawową funkcją jest określenie tytułu strony, który jest wyświetlany w pasku tytułowym przeglądarki oraz w wynikach wyszukiwania. Wersja HTML5 podkreśla znaczenie tego znacznika, czyniąc go wymaganym do poprawnej walidacji dokumentu. Brak znacznika <title> prowadzi do błędu walidacji, co może wpływać na SEO oraz użyteczność strony. Dobrze zaprojektowany tytuł powinien być krótki, ale zwięzły, zawierać kluczowe słowa związane z treścią strony, co pozytywnie wpływa na pozycjonowanie w wyszukiwarkach. Przykład poprawnego znacznika to: <title>Moja Strona Internetowa</title>. Ważne jest, aby tytuł był unikalny dla każdej podstrony, co ułatwia użytkownikom oraz wyszukiwarkom identyfikację treści. W praktyce, zrozumienie roli znacznika <title> jest kluczowe dla każdego, kto tworzy strony internetowe, ponieważ jego obecność ma istotny wpływ na wrażenia użytkowników oraz sukces witryny w Internecie.

Pytanie 24

Używając polecenia BACKUP LOG w MS SQL Server, można

A. przeglądać komunikaty wygenerowane w trakcie tworzenia kopii
B. połączyć się z kopią zapasową
C. wykonać kopię zapasową dziennika transakcji
D. wykonać całkowitą kopię zapasową
Pierwsza odpowiedź sugeruje, że polecenie BACKUP LOG może być użyte do wykonania pełnej kopii bezpieczeństwa bazy danych. W rzeczywistości, pełna kopia bezpieczeństwa jest realizowana za pomocą polecenia BACKUP DATABASE, które zgrywa całą bazę danych, w tym wszystkie obiekty i dane. BACKUP LOG dotyczy jedynie dziennika transakcyjnego, co oznacza, że nie jest to odpowiednia odpowiedź. Druga odpowiedź sugeruje, że można zalogować się do kopii bezpieczeństwa, co jest konceptualnie niepoprawne. Kopie zapasowe są plikami, które można przywrócić, ale nie oferują bezpośredniego dostępu do bazy danych. Użytkownik nie może zalogować się do backupu, dopóki nie zostanie przywrócony do instancji SQL Server. Wreszcie, trzecia odpowiedź sugeruje, że BACKUP LOG pozwala na przeczytanie komunikatów wygenerowanych podczas tworzenia kopii. W rzeczywistości, przy tworzeniu kopii zapasowych, komunikaty są rejestrowane w logach serwera, a polecenie BACKUP LOG nie służy do ich przeglądania. Można je jednak monitorować przy pomocy narzędzi do zarządzania SQL Server lub poprzez odpowiednie zapytania do systemowych tabel logów. Dlatego wszystkie te odpowiedzi są błędne w kontekście polecenia BACKUP LOG.

Pytanie 25

Polecenie TRUNCATE TABLE w systemie MySQL stosuje się do usuwania

A. wierszy tabeli.
B. kolumn.
C. tabel.
D. baz danych.
W poleceniu TRUNCATE TABLE kluczowe jest zrozumienie, że operujemy na zawartości tabeli, a nie na jej definicji czy całej bazie danych. W praktyce wiele osób myli to polecenie z innymi instrukcjami SQL, co później prowadzi do niebezpiecznych sytuacji w środowisku produkcyjnym. Usuwanie tabel jako obiektów bazy danych realizuje się poleceniem DROP TABLE. DROP kasuje całą strukturę: kolumny, indeksy, klucze, uprawnienia powiązane z tą tabelą. Po DROP nie ma już gdzie wstawić danych, trzeba tabelę zdefiniować na nowo. TRUNCATE takich rzeczy nie robi, pozostawia strukturę nienaruszoną. Mylenie TRUNCATE z usuwaniem kolumn też bywa częste. Za dodawanie i usuwanie kolumn odpowiada ALTER TABLE, np. ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny. To są operacje na schemacie (strukturze) danych, a TRUNCATE działa na poziomie rekordów, czyli zawartości. Ktoś, kto kojarzy słowo „truncate” z „ucięciem” struktury, może intuicyjnie pomyśleć, że zniknie kolumna, ale w SQL tak to nie działa. Podobnie w przypadku baz danych: do kasowania całych baz służy DROP DATABASE, ewentualnie w narzędziach typu phpMyAdmin odpowiednie opcje w interfejsie. TRUNCATE TABLE nie ma prawa dotykać całej bazy, bo jest przypisane do konkretnej tabeli. Typowy błąd myślowy polega na wrzuceniu do jednego worka wszystkich poleceń, które „coś usuwają”, bez rozróżniania, czy modyfikujemy strukturę (DDL), czy dane (DML), oraz na jakim poziomie: pojedynczy rekord, wszystkie rekordy, tabela czy cała baza. W MySQL TRUNCATE to specyficzna hybryda – formalnie DDL, ale semantycznie kasuje wyłącznie wiersze. Dlatego dobra praktyka jest taka: DROP używamy, gdy chcemy pozbyć się obiektu (tabeli, bazy), ALTER – gdy zmieniamy strukturę (kolumny, indeksy), a TRUNCATE lub DELETE – gdy czyścimy zawartość, przy czym TRUNCATE zawsze usuwa wszystkie wiersze, bez możliwości filtrowania i bez prostego cofnięcia transakcji. Rozdzielenie tych pojęć bardzo ułatwia bezpieczną pracę z SQL-em.

Pytanie 26

Która z funkcji SQL nie wymaga żadnych argumentów?

A. len
B. year
C. now
D. upper
Funkcja SQL 'now()' jest jedną z funkcji, które nie wymagają argumentów, a jej głównym zadaniem jest zwracanie bieżącej daty i godziny systemowej w formacie odpowiednim dla bazy danych. Użycie tej funkcji jest niezwykle przydatne w kontekście rejestrowania momentu wykonania operacji w bazie danych, na przykład przy dodawaniu nowych rekordów do tabeli. Przykładowe zastosowanie tej funkcji można zobaczyć w poniższym zapytaniu SQL: 'INSERT INTO wydarzenia (nazwa, data_utworzenia) VALUES ('Nowe Wydarzenie', now());'. Takie podejście nie tylko automatyzuje proces rejestrowania czasu, ale także zapewnia spójność danych, eliminując ryzyko błędów związanych z ręcznym wprowadzaniem daty. W praktyce, stosowanie funkcji, które nie wymagają argumentów, jest często zgodne z zasadami dobrych praktyk programistycznych, które promują czytelność i prostotę kodu.

Pytanie 27

Pierwszym etapem w konwersji sygnału analogowego na cyfrowy jest

A. kodowanie
B. próbkowanie
C. kwantyzacja
D. filtrowanie
Zaczynamy od próbkowania, czyli pierwszego kroku w zamianie sygnału analogowego na cyfrowy. To po prostu znaczy, że regularnie mierzysz wartości sygnału w określonych momentach. Dzięki temu przekształcamy ciągły sygnał w zbiór dyskretnych wartości, co potem pozwala na dalsze działanie w cyfrowych systemach. I pamiętaj, próbkowanie powinno być zgodne z zasadą Nyquista, która mówi, że częstotliwość próbkowania musi być przynajmniej dwa razy większa od najwyższej częstotliwości w sygnale. Dla audio standard to 44,1 kHz, co zapewnia, że dźwięk wiernie odzwierciedla rzeczywistość. W praktyce dobrze przeprowadzone próbkowanie jest mega ważne, bo zapewnia jakość sygnału i zapobiega aliasingowi, który może zepsuć dźwięk. Są też normy, tak jak AES67, które ustalają standardy dla próbkowania audio i wideo, żeby wszystko brzmiało równo w różnych systemach.

Pytanie 28

Wskaż system do zarządzania treściami.

A. Apache
B. phpMyAdmin
C. MariaDB
D. Joomla!
Wybór odpowiedzi innych niż Joomla! ukazuje istotne nieporozumienia dotyczące roli różnych technologii w kontekście zarządzania treścią. Apache to serwer HTTP, który obsługuje żądania użytkowników w Internecie, ale nie jest systemem zarządzania treścią. Jego funkcją jest dostarczanie plików z serwera do przeglądarki internetowej, co jest kluczowe, ale nie dotyczy bezpośredniego zarządzania treścią witryny. PhpMyAdmin to narzędzie do zarządzania bazami danych MySQL, które umożliwia użytkownikom wykonywanie operacji na bazach danych w interfejsie webowym, jednak nie pełni funkcji CMS. Jego głównym celem jest umożliwienie użytkownikom łatwego zarządzania danymi, a nie tworzenia i publikowania treści na stronach internetowych. MariaDB jest systemem zarządzania relacyjnymi bazami danych, będącym rozwidleniem MySQL, który również nie jest CMS-em. Jest używany do przechowywania danych, ale nie oferuje funkcji do zarządzania treścią w kontekście tworzenia i edycji stron. Kluczowym błędem myślowym, który prowadzi do takich odpowiedzi, jest mylenie różnych technologii webowych i ich funkcji. W rzeczywistości system zarządzania treścią, taki jak Joomla!, łączy w sobie zarówno zarządzanie danymi, jak i interfejs do tworzenia treści, co czyni go bardziej kompleksowym rozwiązaniem dla użytkowników pragnących budować i utrzymywać witryny internetowe.

Pytanie 29

Kaskadowe arkusze stylów są tworzone w celu

A. połączenia struktury dokumentu strony z odpowiednią formą jego wyświetlania
B. blokowania wszelkich zmian w wartościach znaczników już przypisanych w pliku CSS
C. nadpisywania wartości znaczników, które już funkcjonują na stronie
D. ułatwienia formatowania strony
Wszystkie pozostałe odpowiedzi nie odzwierciedlają prawidłowego zrozumienia roli, jaką pełnią kaskadowe arkusze stylów w procesie tworzenia stron internetowych. Nadpisywanie wartości znaczników już ustawionych na stronie jest jednym z aspektów działania CSS, ale nie jest to jego główny cel. CSS pozwala na nadpisanie stylów, jednak kluczowym elementem jest możliwość łatwego zarządzania oraz modyfikacji wyglądu całej witryny poprzez centralne arkusze, a nie jedynie lokalne zmiany. Połączenie struktury dokumentu z formą jego prezentacji to w rzeczy samej cel CSS, ale nie jest to odpowiednia odpowiedź, ponieważ bardziej odnosi się do ogólnej koncepcji tworzenia stron internetowych niż do konkretnej funkcji CSS. Ostatnia z propozycji, czyli blokowanie zmian w wartościach znaczników, jest mylna, ponieważ CSS ma na celu umożliwienie, a nie blokowanie, wprowadzania zmian. Rola CSS polega na tym, że dzięki niemu można swobodnie modyfikować wygląd strony bez wpływania na samą strukturę HTML, co czyni go niezwykle elastycznym narzędziem w rękach web deweloperów.

Pytanie 30

W diagramie ER powiązanie między dwoma zbiorami encji nazywamy

A. dziedziną.
B. związkiem.
C. atrybutem.
D. krotką.
Poprawna odpowiedź to „związek”, bo w diagramie ER (Entity-Relationship) właśnie tak nazywamy powiązanie między dwoma zbiorami encji. Mamy encje, czyli zbiory obiektów z rzeczywistości, na przykład „Klient” i „Zamówienie”, a pomiędzy nimi rysujemy relację: „Klient składa Zamówienie”. Ta linia, często z nazwą i krotnością (1:1, 1:N, N:M), to właśnie związek. W notacji Chen’a czy notacji Crow’s Foot zawsze chodzi o to samo: formalne opisanie, jak dane z jednego zbioru encji są powiązane z danymi z innego zbioru. W praktyce projektowania baz danych związek w diagramie ER prawie zawsze przekłada się na relację w modelu relacyjnym: albo na klucz obcy (np. tabela zamówienia ma kolumnę klient_id), albo na dodatkową tabelę asocjacyjną przy relacjach wiele‑do‑wielu (np. tabela produkt_zamówienie). Moim zdaniem ważne jest, żeby od początku myśleć o związku nie tylko jako o kresce na diagramie, ale jako o czymś, co później będzie miało konkretne odwzorowanie w SQL, w kluczach obcych, indeksach i ograniczeniach integralności. Z punktu widzenia dobrych praktyk branżowych, poprawne modelowanie związków to podstawa: pozwala zadbać o integralność referencyjną, unikać duplikacji danych i poprawnie odzwierciedlić reguły biznesowe. Na przykład relacja 1:N między Klientem a Zamówieniem jasno mówi, że jedno zamówienie należy do dokładnie jednego klienta, ale klient może mieć wiele zamówień. Dzięki temu, gdy później piszesz kwerendy SQL, dokładnie wiesz, jak łączyć tabele za pomocą JOIN i które klucze obce są obowiązkowe. W praktyce w firmach, które poważnie podchodzą do projektowania baz, diagram ER z dobrze opisanymi związkami jest normalnym elementem dokumentacji technicznej i ułatwia współpracę między programistami, analitykami i administratorami baz danych.

Pytanie 31

W podanym fragmencie zapytania w języku SQL, komenda SELECT jest używana do zwrócenia SELECT COUNT(wartosc) FROM …

A. summy w kolumnie wartosc
B. ilości wierszy
C. średniej w kolumnie wartosc
D. średniej wartości z tabeli
Tak, masz rację! To zapytanie zwraca liczbę wierszy. Użycie funkcji COUNT w SQL jest jakby liczeniem, ile jest niepustych wartości w danej kolumnie. Kiedy piszemy coś takiego jak SELECT COUNT(wartosc) FROM ..., to ta funkcja sprawdza, ile wierszy ma coś w kolumnie 'wartosc'. Przykładowo, w tabeli z danymi sprzedażowymi, kolumna 'wartosc' może mieć wszystkie wartości transakcji. To zapytanie pokaże nam, ile transakcji się odbyło, co jest super przydatne, gdy analizujemy biznes. Funkcja COUNT jest szalenie popularna, bo daje nam jasny obraz tego, co się dzieje w naszych danych. A jeśli zamiast COUNT(wartosc) zrobimy COUNT(*), to dostaniemy ogólną liczbę wszystkich wierszy, niezależnie od tego, czy coś w nich jest, co może być też przydatne, gdy chcemy ogarnąć całą tabelę.

Pytanie 32

Jakie są wyniki wykonania zapytania SQL?

SELECT count(*) FROM Uczniowie WHERE srednia=5;
A. łączna liczba uczniów
B. ilość uczniów, których średnia ocen wynosi 5
C. suma ocen uczniów z średnią 5
D. średnia wszystkich ocen uczniów
Zapytanie SQL używa funkcji COUNT aby policzyć liczbę rekordów w tabeli Uczniowie spełniających warunek srednia=5 Klauzula WHERE ogranicza zestaw zliczanych rekordów do tych gdzie średnia ocen ucznia wynosi dokładnie 5 W efekcie wynik zapytania odpowiada liczbie uczniów mających średnią ocen równą 5 Takie podejście jest powszechnie stosowane w analizie danych gdzie wymagane jest określenie liczby jednostek spełniających konkretne kryteria Zastosowanie COUNT w połączeniu z WHERE umożliwia precyzyjną kontrolę nad analizowanym zbiorem danych co jest standardem w wielu systemach bazodanowych Praktyczne zastosowanie tej techniki można spotkać w raportowaniu wyników nauczania generowaniu statystyk czy w analizach biznesowych gdzie kluczowe jest zrozumienie struktury i charakterystyki danych Zapytanie to ilustruje dobrą praktykę pracy z bazami danych polegającą na efektywnym i precyzyjnym formułowaniu zapytań w celu uzyskania wartościowych i precyzyjnych informacji

Pytanie 33

W CSS, aby stylizować tekst przez dodanie podkreślenia dolnego lub górnego, należy użyć atrybutu

A. text-decoration
B. text-transform
C. text-indent
D. text-align
Atrybut text-decoration w CSS jest używany do stylizacji tekstu poprzez dodanie efektów, takich jak podkreślenie, przekreślenie czy nadkreślenie. Jest to istotny element stylizacji, który pozwala na wyróżnienie fragmentów tekstu oraz dostosowanie ich wyglądu zgodnie z wymaganiami projektowymi. W przypadku podkreślenia dolnego tekstu, można zastosować zapis 'text-decoration: underline;', co spowoduje, że tekst będzie wyraźnie podkreślony. Warto zaznaczyć, że atrybut ten jest zgodny z standardami CSS, w tym CSS2 oraz CSS3, co zapewnia jego szeroką kompatybilność z różnymi przeglądarkami. Przykładowo, jeśli mamy element <p>, możemy dodać stylizację w sekcji CSS jak poniżej: p { text-decoration: underline; }. Dodatkowo, text-decoration przyjmuje różne wartości, takie jak 'none' (brak dekoracji), 'underline' (podkreślenie), 'overline' (nadkreślenie) oraz 'line-through' (przekreślenie), co daje programistom dużą elastyczność w projektowaniu interfejsu użytkownika. Użycie text-decoration jest nie tylko zgodne z najlepszymi praktykami w tworzeniu stron internetowych, ale również ułatwia dostępność treści dla użytkowników z ograniczeniami wzrokowymi, ponieważ wyróżnianie ważnych informacji może pomóc w ich lepszym zrozumieniu i odnalezieniu w treści.

Pytanie 34

Które z poniższych oprogramowań nie jest systemem do zarządzania treścią (CMS)?

A. Joomla
B. Apache
C. WordPress
D. Mambo
Odpowiedź "Apache" jest prawidłowa, ponieważ Apache to serwer HTTP, który jest odpowiedzialny za obsługę i dostarczanie stron internetowych do przeglądarek użytkowników. Nie jest to system zarządzania treścią (CMS), który służy do tworzenia, edytowania i publikowania treści na stronach internetowych. Systemy takie jak Mambo, Joomla i WordPress to platformy CMS, które umożliwiają użytkownikom zarządzanie treściami w sposób intuicyjny i przyjazny dla użytkownika. Na przykład, WordPress, będący jednym z najpopularniejszych CMS-ów, oferuje bogaty ekosystem wtyczek oraz motywów, co pozwala na łatwe dostosowanie witryn do indywidualnych potrzeb. W kontekście branżowych standardów, stosowanie CMS-ów pozwala na skuteczniejsze zarządzanie treściami w witrynach, co jest zgodne z najlepszymi praktykami w zakresie tworzenia i utrzymania stron internetowych.

Pytanie 35

W stylach CSS, aby ustalić styl linii obramowania jako linię kreskową, należy zastosować wartość

A. groove
B. dashed
C. dotted
D. solid
W kontekście stylów CSS odpowiedzi, które zostały podane jako niepoprawne, mają swoje unikalne zastosowania, jednak nie spełniają kryteriów ustalenia stylu obramowania jako linii kreskowej. Wartość 'solid' definiuje obramowanie w postaci ciągłej linii, co czyni go najprostszym i najczęściej stosowanym stylem obramowania, ale nie wprowadza efektu przerywanego. Styl 'dotted' z kolei tworzy obramowanie złożone z pojedynczych kropek, co nadaje elementom subtelny wygląd, ale również nie tworzy linii kreskowej. Zastosowanie 'dotted' jest popularne w przypadku elementów, które mają być mniej dominujące, jednak nie jest to styl obramowania odpowiadający na potrzeby przerywanego wzoru. Ostatnia z odpowiedzi, 'groove', generuje efekt trójwymiarowego wgłębienia, co może być atrakcyjne wizualnie, ale nie ma nic wspólnego z przerywaną linią. 'Groove' jest zazwyczaj stosowane do podkreślenia hierarchii lub do uwydatnienia elementów na stronie, jednak nie spełnia warunku bycia linią kreskową. Podsumowując, wszystkie trzy odpowiedzi, mimo że są poprawnymi stylami obramowania w CSS, nie odpowiadają na zadane pytanie, ponieważ żadna z nich nie generuje efektu przerywanego, który jest kluczowy dla prawidłowej odpowiedzi na to zagadnienie.

Pytanie 36

<source src="plik.mp4" type="video/mp4">
Aby osadzić plik wideo na stronie WWW, przedstawiony kod HTML5 należy umieścić wewnątrz znaczników:
A. <section> </section>
B. <div> </div>
C. <embed> </embed>
D. <video> </video>
Poprawna odpowiedź to umieszczenie znacznika `<source>` wewnątrz `<video>...</video>`. W HTML5 to właśnie element `<video>` jest kontenerem odpowiedzialnym za osadzanie plików wideo na stronie WWW. Atrybuty takie jak `controls`, `autoplay`, `loop`, `muted`, `width` czy `height` przypisujemy właśnie do `<video>`, a nie do `<source>`. Znacznik `<source>` służy głównie do wskazania konkretnego pliku multimedialnego i jego typu MIME, np.: `<video controls width="640" height="360"><source src="film.mp4" type="video/mp4"><source src="film.webm" type="video/webm">Twoja przeglądarka nie obsługuje elementu video.</video>`. Przeglądarka przechodzi po kolei po elementach `<source>` i wybiera pierwszy format, który potrafi odtworzyć. To jest zgodne ze specyfikacją HTML Living Standard (WHATWG) oraz zaleceniami W3C dotyczącymi multimediów w sieci. W praktyce, w projektach komercyjnych, często dodaje się kilka formatów (np. MP4, WebM), właśnie po to, by zapewnić maksymalną kompatybilność między różnymi przeglądarkami i systemami. Moim zdaniem warto od razu wyrabiać sobie nawyk pisania pełnej, semantycznie poprawnej struktury: `<video>` jako główny element odtwarzacza, w środku jeden lub więcej `<source>` i ewentualnie tekst alternatywny. Dzięki temu kod jest czytelny, łatwiej go stylować w CSS, a także lepiej zachowuje się w kontekście dostępności (np. czytniki ekranu widzą, że to element wideo). Dodatkowo, `<video>` można łatwo obsługiwać z poziomu JavaScript, korzystając z jego API (play, pause, currentTime, volume itd.), co w praktyce daje sporą kontrolę nad odtwarzaniem multimediów na stronie.

Pytanie 37

Wyrażenie JavaScript:

document.write(5==='5');
Co zostanie wyświetlone?
A. true
B. false
C. 0
D. 1
Odpowiedź 'false' jest jak najbardziej na miejscu, bo operator '===' w JavaScript sprawdza nie tylko wartość, ale i typ danych. Przykład 'document.write(5 === '5');' pokazuje, że porównujemy liczbę (5) z ciągiem znaków ('5'). To są różne typy, więc nie mogą być równe! Generalnie, lepiej używać '===' w programowaniu, bo to eliminuje niejasności, które mogą się pojawić przy '=='. Ten drugi lubi zamieniać typy, co czasami prowadzi do chaosu. Dobrze jest mieć na uwadze, że w obiektowym programowaniu ważne jest, by typy danych się zgadzały. Używając '===', mamy pewność, że unikniemy niechcianych błędów związanych z typami.

Pytanie 38

Klucz obcy w tabeli jest używany w celu

A. zdefiniowania relacji 1..n łączącej go z kluczem głównym innej tabeli
B. umożliwienia jednoznacznej identyfikacji rekordu w danej tabeli
C. połączenia go z innymi kluczami obcymi w tabeli
D. opracowania formularza do wprowadzania danych do tabeli
Klucz obcy w tabeli pełni kluczową rolę w definiowaniu relacji między tabelami w bazach danych. Dzięki zastosowaniu klucza obcego możliwe jest określenie relacji 1..n, co oznacza, że jeden rekord w tabeli głównej może być powiązany z wieloma rekordami w tabeli podrzędnej. Przykładem może być tabela 'Klienci' i tabela 'Zamówienia', gdzie klucz obcy w tabeli 'Zamówienia' wskazuje na klucz główny w tabeli 'Klienci'. To pozwala na gromadzenie wielu zamówień dla jednego klienta, co jest niezbędne w systemach e-commerce. Praktyczne wdrożenie kluczy obcych wspiera integralność danych oraz zapobiega ich duplikacji. Właściwe projektowanie relacji w bazach danych zgodnie z zasadami normalizacji wprowadza przejrzystość i efektywność w zarządzaniu danymi, a także ułatwia ich późniejszą analizę i raportowanie. W branży IT standardem jest stosowanie kluczy obcych w celu zapewnienia spójności i relacyjności danych, co jest istotne dla każdej aplikacji opierającej się na bazach danych.

Pytanie 39

Zapytanie: SELECT imie, pesel, wiek FROM dane WHERE wiek IN (18,30) spowoduje zwrócenie:

A. imion, numerów PESEL oraz wieku osób, które mają więcej niż 30 lat
B. imion, numerów PESEL oraz wieku osób, których wiek wynosi 18 lub 30 lat
C. imion, numerów PESEL oraz wieku osób w przedziale od 18 do 30 lat
D. imion, nazwisk oraz numerów PESEL osób mających mniej niż 18 lat
W przypadku pierwszej opcji, wybór imion, nazwisk i numerów PESEL osób w wieku poniżej 18 lat jest błędny, ponieważ zapytanie wykorzystuje klauzulę WHERE z operatorem IN, co oznacza, że filtruje jedynie osoby, które są w wieku równym 18 lub 30 lat, a nie poniżej 18 lat. Warto zauważyć, że taka interpretacja zapytania ignoruje zasadniczą logikę działania operatora IN. Z kolei trzecia opcja, dotycząca wybrania imion, numerów PESEL i wieku osób z przedziału od 18 do 30 lat, również mija się z prawdą, gdyż operator IN nie obejmuje osób, które mają wiek pomiędzy 18 a 30 lat, a jedynie osoby, które mają 18 lub 30 lat. Ostatnia opcja, dotycząca wyboru osób powyżej 30 lat, jest całkowicie sprzeczna z zapytaniem, które w ogóle nie bierze pod uwagę takiej grupy wiekowej. Warto przy tym zauważyć, że typowe błędy myślowe, które prowadzą do takich nieprawidłowych wniosków, mogą wynikać z niepełnego zrozumienia działania operatorów w SQL oraz nieznajomości zasad filtracji danych. W praktyce, znajomość specyfiki poszczególnych operatorów oraz ich zastosowań w różnych kontekstach jest kluczowa dla poprawnego formułowania zapytań i analizy danych.

Pytanie 40

Model kolorów oparty na trzech parametrach: hue, saturation i brightness to

A. CMYK
B. CMY
C. HSV
D. RGB
Model barw HSV (Hue, Saturation, Value) jest szeroko stosowany w grafice komputerowej oraz przemysłach związanych z wizualizacją kolorów. Odcień (Hue) odnosi się do koloru podstawowego, takiego jak czerwony, zielony czy niebieski, co można wizualizować na kole barw. Nasycenie (Saturation) określa intensywność koloru; kolor o wysokim nasyceniu będzie bardziej 'czysty', podczas gdy nasycenie bliskie zeru prowadzi do odcienia szarości. Jasność (Value) odnosi się do percepcji jasności koloru, gdzie wysoka wartość wskazuje na jasny kolor, a niska na ciemny. Model HSV jest szczególnie przydatny w aplikacjach, które wymagają manipulacji kolorem w intuicyjny sposób, na przykład w programach graficznych, gdzie użytkownicy mogą łatwo wybierać i modyfikować kolory. Standardy takie jak HSL (Hue, Saturation, Lightness) są podobne, jednak różnią się w podejściu do jasności koloru, co sprawia, że HSV jest preferowany w niektórych kontekstach, zwłaszcza w cyfrowym świecie obrazów.