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: 8 czerwca 2026 09:56
  • Data zakończenia: 8 czerwca 2026 10:20

Egzamin zdany!

Wynik: 26/40 punktów (65,0%)

Wymagane minimum: 20 punktów (50%)

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

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

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

Pytanie 2

Na podstawie kodu widocznego na ilustracji można stwierdzić, że

Ilustracja do pytania
A. funkcja wyswietlNazwisko(nazwisko) musi być wywołana wewnątrz innej funkcji.
B. podano nieprawidłowy argument do funkcji alert.
C. nie przypisano wartości do zmiennej nazwisko.
D. nie zadeklarowano funkcji wyswietlNazwisko.
W tym kodzie funkcja wyswietlNazwisko(nazwisko) jest poprawnie zadeklarowana, a komunikat przekazywany do alert() też jest w porządku. Problem wcale nie leży w samej funkcji, tylko w tym, że wywołujemy ją z argumentem nazwisko, który nigdzie wcześniej nie został zdefiniowany ani nie ma do niego przypisanej żadnej wartości. Silnik JavaScript widzi wywołanie wyswietlNazwisko(nazwisko); i szuka zmiennej o nazwie nazwisko w aktualnym zasięgu (scope). Ponieważ jej nie znajduje, zgłasza błąd ReferenceError: nazwisko is not defined. To jest klasyczny przypadek braku inicjalizacji zmiennej przed użyciem.
W praktyce, żeby to naprawić, trzeba najpierw zadeklarować zmienną, np.: var nazwisko = "Kowalski"; albo let nazwisko = prompt("Podaj swoje nazwisko:"); i dopiero potem wywołać funkcję: wyswietlNazwisko(nazwisko);. Dobra praktyka w JavaScript to zawsze jawne deklarowanie zmiennych przy użyciu let lub const (ewentualnie var w starszym kodzie) oraz nadawanie im czytelnych, przewidywalnych wartości początkowych. W aplikacjach webowych takie zmienne często pochodzą z pól formularza, np. z document.getElementById("nazwisko").value, i dopiero ta wartość jest przekazywana jako argument funkcji. Moim zdaniem warto wyrobić sobie nawyk, że zanim użyjesz jakiejś nazwy w wywołaniu funkcji, sprawdzasz, czy na pewno istnieje jej deklaracja w odpowiednim zasięgu i czy ma sensowną wartość. Dzięki temu unikniesz wielu irytujących błędów w konsoli i łatwiej będzie debugować kod.

Pytanie 3

input[type=number] { background-color: Brown; }
Zapis tego selektora oznacza, że tło będzie miało brązowy kolor dla:
A. pól edycyjnych, w które użytkownik wprowadzi dowolną cyfrę
B. wszystkich typów pól edycyjnych
C. wszystkich tekstów na stronie internetowej
D. pól edycyjnych, które są typu numerycznego
Selekcja `input[type=number]` w CSS jest używana do stylizacji pól formularzy, które oczekują wartości numerycznych. Tło tych pól zostanie ustawione na kolor brązowy, co wpływa na ich wygląd i może poprawić doświadczenie użytkownika. Takie podejście jest zgodne z zasadami dostępności, ponieważ pozwala użytkownikom na natychmiastowe rozpoznanie, które pola są przeznaczone do wprowadzania cyfr. Przykładem zastosowania może być formularz zamówienia, w którym część pól ma określony typ, jak `number`, co ogranicza wprowadzanie do wartości liczbowych. Używając odpowiednich typów input, projektanci mogą tworzyć bardziej intuicyjne interfejsy, które redukują błędy użytkowników oraz poprawiają proces wypełniania formularzy. W tym kontekście warto również zwrócić uwagę na standardy W3C, które zalecają stosowanie typów input, aby zapewnić lepszą kompatybilność i funkcjonalność w różnych przeglądarkach i urządzeniach.

Pytanie 4

Jaki znak (lub znaki) rozpoczyna komentarz jednoliniowy w języku JavaScript?

A.
//
B.
<?
C.
<!--
D.
#
Pozostałe znaki należą do innych języków. <!-- otwiera komentarz w HTML (zamykany -->), więc w skrypcie JavaScript nie zadziała. <? to początek bloku kodu PHP, a nie komentarz. # rozpoczyna komentarz jednoliniowy m.in. w PHP czy Pythonie, lecz w JavaScript nie jest do tego używany. Komentarz jednoliniowy w JS zaczyna się od //, dlatego ta odpowiedź jest poprawna.

Pytanie 5

Algorytm sortowania tablicy, polegający na wielokrotnym porównywaniu par sąsiednich elementów i ich zamianie, gdy są w złej kolejności, nosi nazwę sortowania:

A. bąbelkowym
B. przez scalanie
C. szybkim
D. przez wybór
Pozostałe nazwy oznaczają inne algorytmy. Sortowanie przez wybór w każdym kroku znajduje najmniejszy element z nieposortowanej części i przenosi go na właściwe miejsce - nie polega na zamianie sąsiadów. Sortowanie szybkie (quicksort) wybiera element osiowy i dzieli tablicę na mniejsze i większe od niego, a potem rekurencyjnie sortuje części. Sortowanie przez scalanie dzieli tablicę na połowy, sortuje je i scala - też działa inaczej. Wielokrotne porównywanie i zamienianie sąsiednich elementów to cecha sortowania bąbelkowego.

Pytanie 6

Jakiego języka należy użyć, aby stworzyć skrypt realizowany po stronie klienta w przeglądarki internetowej?

A. JavaScript
B. PHP
C. Perl
D. Python
JavaScript to język skryptowy, który super nadaje się do interakcji z użytkownikami w przeglądarkach. Właściwie to jedyny język z tej całej paczki, który działa po stronie klienta. To znaczy, że skrypty w JavaScript są interpretowane przez przeglądarkę, a nie przez serwer. Można go używać na przykład do zmieniania treści stron w locie, walidacji formularzy, animacji i różnych interaktywnych elementów. Jest też ważnym elementem w technologiach internetowych, obok frameworków jak React, Angular czy Vue.js, które pomagają tworzyć nowoczesne aplikacje webowe. Uważam, że każdy programista webowy powinien znać JavaScript przynajmniej na poziomie średnim, żeby wdrażać dobre praktyki dotyczące wydajności i UX. Standardy takie jak ECMAScript mówią, jak ten język ma działać, a jego wszechstronność sprawia, że obecnie jest jednym z najpopularniejszych języków programowania na świecie. Ostatnio dużo mówi się też o używaniu go po stronie serwera z Node.js.

Pytanie 7

Zadanie polecenia w języku SQL ALTER TABLE USA ... polega na

A. stworzeniu nowej tabeli USA
B. zamianie starej tabeli USA
C. usunięciu tabeli USA
D. modyfikacji tabeli USA
Odpowiedzi wskazujące na utworzenie nowej tabeli, usunięcie istniejącej tabeli oraz nadpisanie starej tabeli są błędne, ponieważ nie odpowiadają na rzeczywistą funkcję polecenia ALTER TABLE w SQL. Utworzenie nowej tabeli wymaga użycia polecenia CREATE TABLE, które definiuje nową strukturę danych w bazie, co jest zupełnie inną operacją niż modyfikacja istniejącej tabeli. Usunięcie tabeli jest realizowane przez polecenie DROP TABLE, a nie przez ALTER TABLE, co może prowadzić do katastrofalnych skutków, jeśli nie zostanie przeprowadzone świadome i ostrożne. Nadpisanie tabeli w kontekście SQL nie jest standardowym podejściem, gdyż w praktyce, aby 'nadpisać' dane, najpierw trzeba by usunąć starą tabelę, co wiąże się z ryzykiem utraty danych. Typowe błędy myślowe wynikają z mylenia tych podstawowych operacji i nieznajomości standardów SQL. Dlatego kluczowe jest zrozumienie różnic między podstawowymi poleceniami baz danych oraz ich rzeczywistych zastosowań w kontekście zarządzania danymi. Użycie właściwych poleceń w odpowiednich sytuacjach jest fundamentalne dla efektywności i bezpieczeństwa w pracy z bazami danych.

Pytanie 8

Która z zasad walidacji strony internetowej jest nieprawidłowa?

A. Jeżeli w poleceniu występuje kilka atrybutów, ich kolejność powinna być uporządkowana alfabetycznie np. ```<img alt="..." src="/.."/>```
B. Wyłączanie tagów musi następować w odwrotnej sekwencji do ich włączenia, np. ```<p> ... <big>...</big></p>```
C. W tagach nie jest brana pod uwagę różnica między dużymi a małymi literami, np. ```<p>``` i ```<P>``` to ten sam tag.
D. Tagi, poza samozamykającymi się, funkcjonują do momentu ich wyłączenia znakiem "/", np. ```<p> ..</p>```
Odpowiedź dotycząca kolejności atrybutów w znacznikach HTML jest poprawna, ponieważ nie ma wymogu, aby atrybuty w znacznikach były uporządkowane alfabetycznie. W rzeczywistości, HTML pozwala na dowolną kolejność atrybutów, co czyni tę regułę błędną. Przykładowo, znacznik <img src="/path/to/image.jpg" alt="Opis obrazu" /> jest poprawny niezależnie od kolejności atrybutów. Ważne jest, aby atrybuty były odpowiednio używane w kontekście ich przeznaczenia, a nie w kontekście kolejności alfabetycznej. Dobrą praktyką jest również stosowanie atrybutów w sposób, który zwiększa czytelność kodu, jednak nie jest to wymóg techniczny. Zgodnie z zaleceniami W3C, kluczowym aspektem jest poprawność semantyczna i zgodność ze standardami, a nie kolejność atrybutów.

Pytanie 9

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

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

Pytanie 10

Jakie mechanizmy przydzielania zabezpieczeń, umożliwiające przeprowadzanie operacji na bazie danych, są powiązane z zagadnieniami dotyczącymi zarządzania kontami, użytkownikami oraz uprawnieniami?

A. Z przywilejami systemowymi
B. Z regułami
C. Z atrybutami
D. Z przywilejami obiektowymi
Przywileje systemowe odnoszą się do uprawnień, które są nadawane użytkownikom w kontekście zarządzania kontami i dostępem do zasobów w systemach baz danych. Te mechanizmy są kluczowe dla zapewnienia bezpieczeństwa oraz integralności danych. Przykładem przywilejów systemowych mogą być uprawnienia do tworzenia i usuwania innych kont użytkowników, a także do modyfikacji struktur danych, co jest fundamentalne w operacjach administracyjnych. W praktyce, administratorzy baz danych wykorzystują te przywileje do określenia, które konta mają dostęp do określonych funkcji systemu. W standardach takich jak SQL standard, zarządzanie uprawnieniami jest ściśle zdefiniowane, co pozwala na audyt i kontrolę dostępu. Aby stosować dobre praktyki, warto wdrożyć zasadę najmniejszych uprawnień, co oznacza, że użytkownicy powinni otrzymywać tylko te uprawnienia, które są niezbędne do wykonywania ich zadań. Dzięki temu minimalizujemy ryzyko nieautoryzowanego dostępu oraz potencjalnych naruszeń bezpieczeństwa.

Pytanie 11

W skrypcie JavaScript zmienne mogą być definiowane

A. jedynie wtedy, gdy podamy typ zmiennej oraz jej nazwę
B. w chwili pierwszego użycia zmiennej
C. wyłącznie na początku skryptu
D. zawsze poprzedzone znakiem $ przed nazwą
Wykorzystanie zmiennych w JavaScript jest bardziej elastyczne i złożone, niż sugerują tego niektóre odpowiedzi. Faktem jest, że w JavaScript nie ma wymogu deklarowania zmiennych na początku skryptu. Odpowiedź sugerująca, że zmienne mogą być deklarowane tylko na początku, jest nieprawidłowa, ponieważ JavaScript pozwala na deklarację w dowolnym miejscu kodu, a silnik interpretuje zmienne zgodnie z regułami hoistingu. Kolejna niepoprawna koncepcja związana jest z mylnym przekonaniem, że wcześniej należy określić typ zmiennej. JavaScript jest językiem dynamicznie typowanym, co oznacza, że nie jest konieczne podawanie typu przy deklaracji zmiennej. Dla przykładu, w wielu językach programowania, jak Java czy C#, typ musi być jawnie określony, lecz w JavaScript nie jest to wymagane, co czyni kod bardziej zwięzłym i elastycznym. Ponadto, stwierdzenie, że zmienne w JavaScript muszą być poprzedzone znakiem '$', również jest błędne. Chociaż '$' jest dozwolony w nazwach zmiennych, nie jest to wymóg. Dobre praktyki programistyczne sugerują, aby nazwy zmiennych były zrozumiałe i opisywały ich zawartość, co zwiększa czytelność kodu. W związku z tym, zrozumienie, jak i gdzie można deklarować zmienne w JavaScript, jest kluczowe dla efektywnego pisania kodu w tym języku.

Pytanie 12

W instrukcjach mających na celu odtwarzanie dźwięku na witrynie internetowej jako podkładu muzycznego nie stosuje się atrybutu

A. volume="-100"
B. balance="-10"
C. href="C:/100.wav">
D. loop="10"
Wybór atrybutów, takich jak 'volume="-100"', 'balance="-10"' oraz 'loop="10"', może prowadzić do nieporozumień dotyczących ich zastosowania w kontekście odtwarzania dźwięku na stronach internetowych. Atrybut 'volume', w rzeczywistości, nie jest standardowym atrybutem HTML. Wprowadzenie atrybutu 'volume' z wartością '-100' sugeruje błędne podejście do zarządzania głośnością, gdyż głośność powinna być regulowana w sposób programowy, często przy użyciu JavaScript, aby zapewnić bardziej precyzyjną kontrolę nad poziomem dźwięku. Z kolei 'balance' także nie jest standardowym atrybutem HTML i nie istnieje możliwość bezpośredniego jego zastosowania w tagach HTML dla dźwięku. Aby zrównoważyć dźwięk, należy skorzystać z dedykowanych narzędzi audio w JavaScript lub edytorów audio. Warto również zauważyć, że 'loop="10"' jest błędnym wykorzystaniem atrybutu 'loop', który w HTML działa jako prosty przełącznik, bez możliwości określenia liczby powtórzeń. Przykład wartości boolean 'loop' w tagu <audio> polega na tym, że plik audio będzie powtarzany w nieskończoność, a nie przez 10 razy. Te nieporozumienia mogą prowadzić do rozczarowania wśród deweloperów, jeśli nie są świadomi funkcji i ograniczeń atrybutów HTML. Kluczowe jest zrozumienie, że użycie atrybutów powinno być zgodne z ich przeznaczeniem w standardach HTML, aby zapewnić prawidłowe działanie aplikacji webowych.

Pytanie 13

Która pętla w PHP wykona swoje instrukcje CO NAJMNIEJ RAZ, bo warunek sprawdzany jest dopiero na końcu?

A.
for
B.
while
C.
do...while
D.
foreach
Pętla do...while najpierw WYKONUJE blok instrukcji, a dopiero potem sprawdza warunek - dlatego jej ciało wykona się przynajmniej raz, nawet gdy warunek od początku jest fałszywy. Stosuje się ją, gdy coś trzeba zrobić co najmniej raz, np. wyświetlić menu, a potem pytać o powtórzenie. Zapamiętaj: warunek na KOŃCU = minimum jedno wykonanie.

Pytanie 14

Jakie znaczniki należy zastosować, aby umieścić kod w języku PHP w pliku z rozszerzeniem .php?

A.
<php> ... </php>
B.
<php ... />
C.
<?php>...<php?>
D.
<?php ... ?>
Atrybut w bazie danych to nazwana KOLUMNA tabeli, opisująca jedną określoną cechę obiektu (encji) - np. w tabeli „Uczeń” atrybutami są „imię”, „nazwisko”, „klasa”. Każda krotka (wiersz) ma dla danego atrybutu konkretną wartość. Dlatego atrybut to nazwana kolumna opisująca cechę.

Pytanie 15

W języku JavaScript zapisano funkcję. Co ona ma za zadanie?

function fun1(f) {
    if (f < 0) f = f * (-1);
    return f;
}
A. wypisać wartość odwrotną do f
B. wypisać wartość bezwzględną z f
C. zwrócić wartość odwrotną do f
D. zwrócić wartość bezwzględną z f
Niepoprawna odpowiedź wskazuje, że funkcja ma za zadanie zwrócić wartość odwrotną do f, lub wypisać wartość bezwzględną z f, lub wypisać wartość odwrotną do f. Te wszystkie odpowiedzi są błędne. Wartość odwrotna do f to 1/f, a nie wartość bezwzględna z f. Wypisanie wartości to inny rodzaj operacji niż jej zwrócenie. Funkcje wypisują wartość, kiedy używamy instrukcji console.log() w JavaScript. Zwrócenie wartości oznacza, że funkcja po zakończeniu swojego działania przekazuje tę wartość do miejsca, skąd została wywołana. Zwracanie wartości jest podstawą działania większości funkcji, które następnie używane są do budowy bardziej skomplikowanych algorytmów. Dlatego też ważne jest, aby dobrze rozumieć, jakie wartości są zwracane przez różne typy funkcji.

Pytanie 16

Jak nazywa się proces przedstawienia, w formie właściwej dla danego środowiska, informacji zawartych w dokumencie elektronicznym?

A. teksturowanie
B. renderowanie
C. rasteryzacja
D. mapowanie
Pozostałe pojęcia oznaczają inne operacje. Mapowanie to przyporządkowanie elementów jednego zbioru do drugiego (np. klawiszy do funkcji, danych do struktur) - nie tworzy obrazu dokumentu. Rasteryzacja to konkretna zamiana grafiki wektorowej na siatkę pikseli, czyli wycinek szerszego procesu, a nie samo przedstawienie dokumentu. Teksturowanie należy do grafiki 3D i polega na nakładaniu tekstur (obrazów) na powierzchnie modeli. Przekształcenie dokumentu w jego widoczną postać to renderowanie, dlatego ta odpowiedź jest poprawna.

Pytanie 17

Który z poniższych formatów plików graficznych wspiera przejrzystość?

A. BMP
B. JPG
C. PNG
D. NEF
Format PNG (Portable Network Graphics) jest jednym z najpopularniejszych formatów plików graficznych obsługujących przezroczystość. Jego główną zaletą jest możliwość zachowania kanału alfa, który umożliwia tworzenie obrazów z przezroczystymi elementami. PNG wykorzystuje bezstratną kompresję, co oznacza, że jakość obrazu nie ulega pogorszeniu podczas zapisywania i otwierania pliku. Format ten jest szczególnie ceniony w aplikacjach internetowych, ponieważ pozwala na uzyskanie estetycznych efektów, takich jak cienie, przezroczystość i delikatne przejścia kolorów. Warto również zauważyć, że PNG obsługuje głębię kolorów do 48 bitów, co umożliwia uzyskanie bogatych i szczegółowych obrazów. Standard PNG został opracowany w 1996 roku jako alternatywa dla formatu GIF, który był ograniczony do 256 kolorów oraz nie obsługiwał przezroczystości w sposób, który byłby zadowalający dla projektantów. Dzięki swoim właściwościom, PNG jest szeroko stosowany w grafice komputerowej, w tym w tworzeniu logo, ikon oraz w elementach interfejsów użytkownika, a także w fotografii cyfrowej, gdzie zachowanie jakości jest kluczowe.

Pytanie 18

Które polecenie MySQL sprawdza tabelę pod kątem błędów i uszkodzeń (bez jej naprawiania)?

A.
FIX TABLE
B.
CHECK TABLE
C.
CHANGE TABLE
D.
UPDATE TABLE
Pozostałe odpowiedzi nie sprawdzają tabeli. FIX TABLE i CHANGE TABLE brzmią wiarygodnie, ale w MySQL takich poleceń nie ma. UPDATE TABLE również nie istnieje - modyfikację danych wykonuje samo UPDATE, a nie polecenie operujące na całej tabeli. Zbadanie tabeli pod kątem uszkodzeń, z raportem ale bez naprawy, realizuje CHECK TABLE, dlatego to ono jest poprawne.

Pytanie 19

Jak przeglądarka zaprezentuje kod HTML formularza?

<form>
stanowisko: <input type="text"><br>
obowiązki:<br>
<input type="checkbox" name="obowiazek1" value="1" disabled checked>
sporządzanie dokumentacji<br>
<input type="checkbox" name="obowiazek2" value="2" checked>
pisanie kodu<br>
<input type="checkbox" name="obowiazek3" value="3">
testy oprogramowania<br>
</form>
Ilustracja do pytania
A. C
B. B
C. A
D. D
Prawidłowa odpowiedź to D ponieważ kod HTML formularza definiuje trzy pola wyboru typu checkbox z różnymi atrybutami wpływającymi na ich stan początkowy. Pierwsze pole wyboru dotyczące sporządzania dokumentacji posiada atrybuty disabled i checked co oznacza że będzie zaznaczone ale nieaktywne dla użytkownika. Oznacza to że użytkownik nie może zmienić jego stanu w przeglądarce. Drugie pole dotyczące pisania kodu ma tylko atrybut checked co oznacza że będzie zaznaczone i dostępne do edycji. Trzecie pole dotyczące testów oprogramowania nie posiada żadnego z tych atrybutów więc będzie domyślnie niezaznaczone i edytowalne. To zachowanie jest zgodne ze standardami HTML i dobrymi praktykami kodowania gdzie atrybuty kontrolują interakcje użytkownika z formularzami. Wiedza ta jest kluczowa dla projektantów stron internetowych aby zapewnić prawidłowe działanie formularzy i poprawne doświadczenie użytkownika. Formularze są podstawowym elementem interakcji z użytkownikiem dlatego zrozumienie ich działania jest niezbędne w tworzeniu funkcjonalnych i intuicyjnych interfejsów użytkownika.

Pytanie 20

Którego polecenia JavaScript należy użyć, aby w oknie przeglądarki wyświetliło się okno przedstawione na obrazie?

Ilustracja do pytania
A. prompt(’Ile masz lat?’)
B. document.write(’Ile masz lat?’)
C. confirm(’Ile masz lat?’)
D. alert(’Ile masz lat?’)
Prawidłowo – żeby wyświetlić w przeglądarce okno z polem tekstowym do wpisania odpowiedzi, trzeba użyć funkcji prompt(). W JavaScript wywołanie prompt('Ile masz lat?') powoduje pokazanie natywnego okna dialogowego z komunikatem oraz jednym polem input typu tekstowego. Funkcja zwraca to, co użytkownik wpisze, jako łańcuch znaków (string), albo null, jeśli kliknie „Anuluj”. Dzięki temu od razu możesz przypisać wynik do zmiennej, np.: const wiek = prompt('Ile masz lat?'); i dalej go przetwarzać w skrypcie, np. konwertować na liczbę: const wiekNum = Number(wiek); albo parseInt(wiek, 10). Z mojego doświadczenia prompt() jest często używany w prostych przykładach dydaktycznych, do szybkiego testowania logiki programu, np. pytanie o imię, wiek, hasło dostępu w wersji „demo”. W realnych aplikacjach produkcyjnych raczej unika się prompt(), bo jest mało elastyczny, trudno go ostylować i blokuje interfejs (jest modalny i synchroniczny). Standardem branżowym jest budowanie własnych okien dialogowych w HTML/CSS/JS, np. z użyciem <dialog>, frameworków UI albo bibliotek typu modal. Jednak do nauki podstaw JavaScript, zrozumienia przepływu danych między użytkownikiem a skryptem i pokazania prostych interakcji prompt() jest bardzo wygodny. Warto też pamiętać, że prompt zawsze zwraca tekst, więc jeśli dalej chcesz wykonywać obliczenia, to zgodnie z dobrymi praktykami najpierw jawnie rzutuj go na typ liczbowy i sprawdź, czy użytkownik nie wpisał bzdury (isNaN, walidacja zakresu itp.).

Pytanie 21

Instrukcja przypisania elementu do tablicy w języku JavaScript dotyczy tablicy:

Tablica['technik'] = 'informatyk';
A. numerycznej.
B. wielowymiarowej.
C. statycznej.
D. asocjacyjnej.
Najpierw omówmy odpowiedź 'statyczna'. 'Statyczna' tablica to termin, który odnosi się do tablic o stałej wielkości, które nie mogą być dynamicznie zmieniane. W języku JavaScript jednak, tablice są dynamiczne i ich wielkość może być zmieniana w dowolnym momencie. Wybór odpowiedzi 'numeryczna' sugeruje niezrozumienie podstawowych właściwości tablic w JavaScript. Tablice numeryczne są strukturami danych, które używają numerów jako indeksów, ale to nie jest to, co pokazano na zdjęciu - tutaj kluczem jest ciąg znaków. Wybór odpowiedzi 'wielowymiarowa' wskazuje na błędną interpretację przedstawionego obrazu. Tablica wielowymiarowa to tablica tablic, a na zdjęciu pokazano jednowymiarową tablicę asocjacyjną. Pamiętaj, że rozumienie różnych rodzajów tablic i ich zastosowań jest kluczowe dla skutecznego programowania w JavaScript.

Pytanie 22

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID, natomiast tabela rezyserzy ma klucz główny id. Obydwie tabele są połączone relacją jeden do wielu, gdzie strona rezyserzy odnosi się do strony filmy. Jak należy zapisać kwerendę SELECT, aby połączyć tabele filmy i rezyserzy?

A. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id ...
B. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.filmyID ...
C. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.filmyID ...
D. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.id ...
W przypadku błędnych odpowiedzi, takich jak używanie rezyserzy.filmyID lub porównywanie kluczy głównych tabeli rezyserzy z kluczami głównymi tabeli filmy, istotne jest zrozumienie, że klucze muszą być stosowane zgodnie z ich rolami w relacji. Klucz obcy w tabeli filmy (rezyserID) jest przeznaczony do wskazywania na odpowiedni klucz główny w tabeli rezyserzy (id). Używanie rezyserzy.filmyID jest całkowicie błędne, ponieważ tabela rezyserzy nie ma kolumny o takiej nazwie; nie ma relacji, która by wskazywała na filmy w tej tabeli. Z kolei porównywanie filmy.id z rezyserzy.id nie jest sensowne, ponieważ porównujemy dwa różne klucze, które nie mają ze sobą bezpośredniego związku, co prowadzi do niepoprawnych wyników zapytań. Klucz rezyserID w tabeli filmy jest odpowiedzialny za powiązanie konkretnego reżysera z filmem, a nie odwrotnie. Warto również zauważyć, że nieprzestrzeganie zasad normalizacji oraz poprawnego stosowania kluczy obcych może prowadzić do niejednoznacznych danych oraz trudności w utrzymaniu spójności bazy danych.

Pytanie 23

W formularzu wartości z pola input o typie number zostały przypisane do zmiennej a, a następnie przetworzone w skrypcie JavaScript w sposób następujący:

var x = parseInt(a);
Jakiego typu będzie zmienna x?
A. Nan
B. liczbowego, całkowitego
C. zmiennoprzecinkowego
D. napisowego
Wybór niepoprawnych odpowiedzi wynika z nieporozumienia dotyczącego działania funkcji parseInt oraz typów danych w JavaScript. W pierwszej z niepoprawnych odpowiedzi, Nan oznacza 'Not a Number', który jest zwracany, gdy operacja konwersji na liczbę nie może zostać przeprowadzona. W kontekście zmiennej a, jeśli ta wartość jest poprawnym wejściem z pola input typu number, parseInt nie zwróci NaN, a raczej prawidłową liczbę całkowitą. Kolejna opcja opisuje typ napisowy, co jest sprzeczne z tym, co zapewnia funkcja parseInt, ponieważ zwraca ona wartość liczbową, a nie tekst. Wartości typu string mogą być konwertowane na liczby, ale samo pole input o typie number nie wprowadza napisów, a zatem nie tworzy sytuacji, w której wynik byłby typu string. Ostatnia z błędnych odpowiedzi nawiązuje do zmiennoprzecinkowego typu danych. Chociaż JavaScript obsługuje liczby zmiennoprzecinkowe, funkcja parseInt celowo konwertuje na wartość całkowitą, co wyklucza możliwość uzyskania zmiennoprzecinkowego wyniku. Zrozumienie tych różnic jest istotne dla efektywnego programowania w JavaScript i unikania typowych pułapek związanych z konwersją typów.

Pytanie 24

Zgodnie z zasadami ACID dotyczącymi transakcji, wymóg izolacji (ang. isolation) wskazuje, że

A. gdy wystąpi konflikt z inną transakcją, obie mogą modyfikować te same dane równocześnie
B. jeśli dwie transakcje są wykonywane równolegle, to zazwyczaj nie zauważają wprowadzanych przez siebie zmian
C. pod określonymi warunkami dane modyfikowane przez transakcję mogą zostać anulowane
D. po zrealizowaniu transakcji system baz danych będzie w stanie spójności
Izolacja, jako jedno z kluczowych wymagań standardu ACID w kontekście transakcji baz danych, oznacza, że transakcje wykonywane współbieżnie nie wpływają na siebie nawzajem w sposób widoczny. Gdy dwie transakcje są uruchamiane jednocześnie, każda z nich operuje na swoim zestawie danych, nie widząc zmian dokonanych przez drugą do momentu zakończenia transakcji. Dzięki temu, nawet w środowisku o dużym natężeniu operacji, możliwe jest zapewnienie spójności danych. Na przykład, w systemie bankowym, jeśli jeden użytkownik wykonuje przelew, a inny jednocześnie sprawdza stan konta, to proces sprawdzania nie powinien ujawniać niepotwierdzonych jeszcze operacji przelewu. W praktyce, mechanizmy takie jak blokady, czasowe znaczniki (timestamps) oraz protokoły kontroli współbieżności (np. MVCC - Multi-Version Concurrency Control) są wykorzystywane do zapewnienia tej izolacji, co jest fundamentalne dla zachowania integralności danych i poprawności operacji w wielu aplikacjach bazodanowych.

Pytanie 25

Wskaź, która instrukcja jest równoważna z instrukcją switch w języku PHP?

Ilustracja do pytania
A. Instrukcja 1
B. Instrukcja 3
C. Instrukcja 2
D. Instrukcja 4
Instrukcja switch w PHP służy do wykonywania różnych bloków kodu w zależności od wartości wyrażenia. W podanym przykładzie, jeśli zmienna $liczba wynosi 10 lub 20, zostanie zwiększona o 1. W przeciwnym razie $liczba zostanie ustawiona na 0. Instrukcja 2 używa warunku if z operatorem or, który sprawdza, czy $liczba jest równa 10 lub 20, co odpowiada logice w switch. Dzięki temu, mimo że struktura instrukcji if różni się od switch, logika działania jest identyczna. Praktycznie, użycie instrukcji if z operatorem or w takich sytuacjach jest czytelne i wydajne zwłaszcza jeśli mamy do czynienia z ograniczoną liczbą warunków. Warto zauważyć, że switch jest bardziej efektywny, gdy mamy wiele przypadków do sprawdzenia, ale if z operatorami logicznymi jest bardziej elastyczny, co czyni go przydatnym w różnorodnych scenariuszach programistycznych. Dobre praktyki wskazują na wybór struktury kontrolnej w zależności od złożoności i specyfiki problemu, co pozwala na optymalizację czytelności i utrzymania kodu.

Pytanie 26

Aby umieścić kod JavaScript bezpośrednio w dokumencie HTML, należy użyć znacznika:

A.
<script>
B.
<style>
C.
<js>
D.
<code>
Kod JavaScript osadza się w dokumencie wewnątrz znacznika <script>. Wszystko między <script> a </script> przeglądarka traktuje jako kod do wykonania. Tym samym znacznikiem (z atrybutem src) dołącza się też skrypty zewnętrzne. Dlatego do umieszczenia JS w stronie służy <script>.

Pytanie 27

ID_PracownikaNazwiskoImięStanowiskoWynagrodzenie
1KowalskiKrzysztofkasjer3215,76
2NowakAntonikierownik5350,00
3ZającAlicjaksięgowy4568,70
4KrólWitoldkasjer3045,00
5NowikGrzegorzkasjer2750,65
6KotulskiAndrzejkierowca3467,00
7TutkaKatarzynakierownik4935,33
8PoradaJakubmagazynier3321,56
Które zapytanie SQL należy wykonać na tabeli Pracownicy, aby otrzymać średnie wynagrodzenie dla pracownika na stanowisku kasjer?
A. SELECT SUM(*) FROM Pracownicy AND Stanowisko= 'kasjer';
B. SELECT SREDNIA(Wynagrodzenie) AND Stanowisko='kasjer' FROM Pracownicy;
C. SELECT AVG(kasjer.Wynagrodzenie) FROM Pracownicy;
D. SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';
Poprawne zapytanie to SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';, bo dokładnie robi to, o co chodzi w treści zadania. Funkcja AVG() w SQL jest standardową funkcją agregującą, która liczy średnią arytmetyczną z wartości liczbowych w danej kolumnie. W tym przypadku kolumna to Wynagrodzenie, czyli kwoty wypłat, a klauzula WHERE Stanowisko='kasjer' zawęża zestaw rekordów tylko do pracowników na stanowisku kasjera. Najpierw więc silnik bazy danych filtruje wiersze (kasjerów), a dopiero potem na tej ograniczonej grupie liczy średnią. To jest bardzo typowy i poprawny schemat pracy z danymi w SQL: najpierw filtrujesz, potem agregujesz.
Moim zdaniem warto zauważyć, że taka konstrukcja jest uniwersalna – w praktyce w firmach często liczy się średnie wynagrodzenia dla różnych stanowisk, działów, lokalizacji. Wtedy zmienia się tylko warunek w klauzuli WHERE. Można też pójść krok dalej i użyć GROUP BY, np. SELECT Stanowisko, AVG(Wynagrodzenie) FROM Pracownicy GROUP BY Stanowisko; żeby dostać średnie dla wszystkich stanowisk naraz, co jest wygodne np. w raportach HR. To, co masz w odpowiedzi, to w zasadzie „wersja jednostanowiskowa” takiego raportu.
Ważna dobra praktyka: zawsze filtrujemy w klauzuli WHERE, a nie próbujemy wpychać warunków do funkcji agregującej. Dzięki temu zapytanie jest czytelne, zgodne ze standardem SQL i dobrze optymalizowane przez silnik bazy. W realnych projektach staramy się też nadać alias wynikom agregacji, np. SELECT AVG(Wynagrodzenie) AS SredniaKasjera FROM Pracownicy WHERE Stanowisko='kasjer';, żeby w raportach i w kodzie aplikacji od razu było wiadomo, co oznacza zwracana kolumna.

Pytanie 28

Element

<meta charset="utf-8">
służy do definiowania metadanych witryny internetowej związanych z
A. językiem witryny
B. kodowaniem znaków
C. opisem witryny
D. słowami kluczowymi
Element <meta charset="utf-8"> jest kluczowym fragmentem kodu HTML, który definiuje kodowanie znaków używane na stronie internetowej. Ustawienie kodowania na UTF-8 jest obecnie standardem branżowym, który pozwala na prawidłowe wyświetlanie tekstów w różnych językach, a także obsługę różnorodnych znaków specjalnych. Dzięki temu strona będzie renderować się poprawnie niezależnie od używanego języka, co jest szczególnie istotne w kontekście globalizacji i dostępności treści dla szerokiego grona użytkowników. W praktyce, poprawne kodowanie znaków eliminuje problemy z wyświetlaniem polskich znaków diakrytycznych, takich jak ą, ć, ę, ł czy ź. Warto także zauważyć, że błędne ustawienie kodowania może prowadzić do tzw. "krzaków" w treści, co znacząco obniża jakość prezentacji strony oraz jej użyteczność. Dlatego zaleca się zawsze stosować <meta charset="utf-8"> w nagłówku dokumentu HTML, aby zapewnić pełną kompatybilność i poprawność wyświetlania treści w różnych przeglądarkach i systemach operacyjnych.

Pytanie 29

Określ rezultat działania podanego kodu PHP, jeśli zmienna tab jest tablicą.

$tab = explode(",","jelenie,sarny,dziki,lisy,borsuki"); echo $tab[1]." ".$tab[2];
A. dziki lisy
B. lisy borsuki
C. jelenie sarny
D. sarny dziki
Wynik działania tego kodu PHP to 'sarny dziki'. Dzieje się tak dzięki funkcji explode oraz indeksom tablicy. Funkcja explode dzieli tekst na kawałki według separatora, który w tym przypadku to przecinek. Więc, kiedy zastosujemy ją na ciągu 'jelenie,sarny,dziki,lisy,borsuki', dostaniemy tablicę, gdzie indeks 0 to 'jelenie', indeks 1 to 'sarny', indeks 2 to 'dziki', indeks 3 to 'lisy', a indeks 4 to 'borsuki'. Potem, polecenie echo wyświetla wartości z indeksów 1 i 2, które mają 'sarny' oraz 'dziki'. To całkiem praktyczne w programowaniu, zwłaszcza gdy przerabiamy i manipulujemy danymi tekstowymi. Dzięki explode łatwo dzielimy dane na mniejsze kawałki, co przydaje się w różnych sytuacjach, jak analiza danych czy robienie formularzy, a nawet w pracy z plikami CSV.

Pytanie 30

Aby zadeklarować pole klasy, do którego dostęp mają jedynie metody tej klasy, a które nie jest dostępne dla klas pochodnych, należy użyć kwalifikatora dostępu

A. publikowany
B. prywatny
C. publiczny
D. chroniony
Pole, które ma być widoczne tylko dla metod własnej klasy i niedostępne dla klas pochodnych, deklarujemy z modyfikatorem private. To najsilniejsze ograniczenie dostępu: pole prywatne istnieje w obiekcie, ale odwołać się do niego może wyłącznie kod tej samej klasy. Realizuje to zasadę hermetyzacji (enkapsulacji) - ukrywamy wewnętrzny stan obiektu i wystawiamy go na zewnątrz przez kontrolowane metody (gettery i settery). Dzięki temu nikt z zewnątrz, ani nawet klasa dziedzicząca, nie zmieni pola w sposób łamiący jego poprawność. Przykładowo pole z saldem konta zadeklarowane jako prywatne można modyfikować jedynie przez metody klasy, które pilnują reguł biznesowych.

Pytanie 31

W języku SQL używanym przez bazę danych MySQL atrybut UNIQUE w poleceniu CREATE TABLE

A. uniemożliwia wprowadzenie wartości NULL
B. jest stosowany jedynie w przypadku kolumn liczbowych
C. jest używany, jeżeli wartości w danej kolumnie nie mogą się powtarzać
D. wymusza niepowtarzalne nazwy kolumn tabeli
W pierwszej niepoprawnej odpowiedzi wspomniano o wymogu unikatowości nazw pól tabeli. To stwierdzenie jest błędne, ponieważ atrybut UNIQUE nie dotyczy nazw kolumn, lecz wartości przechowywanych w tych kolumnach. W SQL możemy mieć wiele kolumn w tabeli o tej samej nazwie, o ile są one częścią różnych tabel. Zatem, atrybut UNIQUE nie ma wpływu na nazywanie kolumn, a jego głównym celem jest zapewnienie unikalności danych. Kolejną nieprawidłową informacją jest stwierdzenie, że atrybut UNIQUE blokuje możliwość wpisania wartości NULL. W rzeczywistości, w MySQL atrybut UNIQUE pozwala na wprowadzenie wartości NULL, ponieważ wartość NULL jest traktowana jako brak danych, co oznacza, że różne rekordy mogą mieć NULL jako wartość w kolumnie oznaczonej przez UNIQUE. Wreszcie, twierdzenie, że atrybut UNIQUE jest stosowany tylko w przypadku pól liczbowych, jest również fałszywe. Atrybut UNIQUE można zastosować do dowolnego typu danych, w tym tekstowych, datowych czy liczbowych. W praktyce, atrybut ten może być używany w różnych kontekstach, aby zapewnić unikalność danych w każdej kolumnie, niezależnie od ich typów.

Pytanie 32

Który zapis to poprawny SKŁADNIOWO warunek PHP sprawdzający błąd połączenia z bazą?

A.
if (mysqli_connect_error()}{
B.
if (mysqli_connect_error())()
C.
if (mysqli_connect_errno()){}
D.
if (mysqli_connect_errno()}{
Pozostałe zapisy mają błędnie pozamykane nawiasy. if (...)() dokłada zbędne okrągłe nawiasy zamiast bloku {}. if (...}{ i if (...}{ mieszają i odwracają nawiasy okrągłe z klamrowymi. Poprawna struktura to if (mysqli_connect_errno()){}.

Pytanie 33

W przedstawionej regule CSS h1{color: blue} co oznacza h1?

A. deklarację
B. selektor
C. wartość
D. klasę
W regule CSS h1{color: blue} termin h1 odnosi się do selektora, który jest używany do wybierania elementów HTML, a w tym przypadku oznacza wszystkie nagłówki pierwszego poziomu. Selekcje w CSS są kluczowym elementem stylizacji stron internetowych, ponieważ pozwalają na precyzyjne określenie, które elementy mają być stylizowane. Selekcja h1 odnosi się do wszystkich elementów <h1> w dokumencie HTML, co oznacza, że wszystkie nagłówki pierwszego poziomu zostaną stylizowane zgodnie z podaną regułą. Wartością kolorystyki, czyli blue, jest przypisana do właściwości CSS 'color', co skutkuje zmianą koloru tekstu nagłówka na niebieski. Zgodnie z W3C, CSS (Cascading Style Sheets) pozwala na oddzielenie treści od prezentacji, co zwiększa elastyczność i ułatwia zarządzanie stylem strony. Przykładem praktycznym może być strona internetowa, gdzie wszystkie nagłówki pierwszego poziomu są wyróżnione kolorem niebieskim, co przyciąga uwagę użytkowników i poprawia czytelność. Selekcja jest zatem podstawowym narzędziem w stylizacji, umożliwiającym aplikację reguł CSS do określonych elementów HTML.

Pytanie 34

Który z przedstawionych rysunków ilustruje efekt działania zamieszczonego fragmentu kodu HTML?

Ilustracja do pytania
A. rys. B
B. rys. C
C. rys. D
D. rys. A
Odpowiedź rys. C jest prawidłowa, ponieważ kod HTML przedstawia tabelę z dwiema komórkami w pierwszym wierszu, gdzie pierwsza komórka ma atrybut rowspan o wartości 2. Oznacza to, że komórka ta rozciąga się na dwa wiersze. Efektem tego jest układ, w którym pierwszy element znajduje się w jednej kolumnie ale zajmuje miejsce w dwóch wierszach. Pozostałe komórki są umieszczone zgodnie z kolejnością ich definicji w kodzie. W praktyce rowspan jest często używany do tworzenia bardziej złożonych układów tabeli, gdzie potrzebne jest łączenie komórek w pionie. Jest to ważne w kontekście dostępności i czytelności danych, szczególnie przy prezentacji skomplikowanych zestawień. Stosowanie rowspan powinno być dobrze przemyślane i zgodne z semantyką HTML ułatwiając interpretację danych przez przeglądarki i technologie wspomagające. Ważne jest także, aby używać tabel zgodnie z ich przeznaczeniem czyli do prezentacji danych tabelarycznych a nie do tworzenia layoutu strony co jest uznawane za złą praktykę od czasu wprowadzenia CSS

Pytanie 35

W języku PHP do zmiennej a przypisano tekst, w którym wielokrotnie występuje słowo Kowalski. W celu zamiany wszystkich wystąpień słowa Kowalski na słowo Nowak w zmiennej a, należy użyć polecenia

A. $a = str_replace('Nowak', 'Kowalski', $a);
B. $a = str_replace('Kowalski', 'Nowak', $a);
C. $a = str_rep('Kowalski', 'Nowak', $a);
D. $a = str_replace('Nowak', 'Kowalski');
Odpowiedź $a = str_replace('Kowalski', 'Nowak', $a); jest na pewno dobra! Używasz funkcji str_replace, która w PHP jest mega przydatna do zamiany tekstu. W tym przypadku, pierwsza część to słowo, które chcesz zmienić ('Kowalski'), druga to nowy tekst, którym je zastępujesz ('Nowak'), a trzecia to zmienna, na której pracujesz. Funkcja zwraca nowy tekst, gdzie wszystkie 'Kowalski' stały się 'Nowakami'. To super rozwiązanie, bo str_replace działa na wszystkich przypadkach podanego słowa, co sprawia, że jest naprawdę użyteczna w przetwarzaniu tekstów. Na przykład, jak a zawiera 'Kowalski, Kowalski i Kowalski', to po tym poleceniu dostaniesz 'Nowak, Nowak i Nowak'. Użycie tej funkcji to świetna praktyka w programowaniu, bo pisanie przejrzystego i efektywnego kodu to podstawa.

Pytanie 36

Którą funkcję z menu Kolory programu GIMP użyto, w celu uzyskania efektu przedstawionego w filmie?

A. Inwersja.
B. Progowanie.
C. Krzywe.
D. Barwienie.
Prawidłowo wskazana funkcja to „Progowanie”, bo dokładnie ona zamienia obraz kolorowy lub w odcieniach szarości na obraz dwuwartościowy: piksel jest albo czarny, albo biały, w zależności od tego, czy jego jasność przekracza ustawiony próg. W GIMP-ie znajdziesz ją w menu Kolory → Progowanie. Suwakami ustalasz zakres poziomów jasności, które mają zostać potraktowane jako „białe”, a wszystko poza tym zakresem staje się „czarne”. Efekt, który się wtedy uzyskuje, jest bardzo charakterystyczny: mocno kontrastowy, bez półtonów, coś w stylu skanu czarno-białego lub grafiki do druku na ploterze tnącym. Z mojego doświadczenia progowanie świetnie nadaje się do przygotowania logotypów, szkiców technicznych, schematów, a także do wyciągania konturów z lekko rozmytych zdjęć. Często używa się go też przed wektoryzacją, żeby program śledzący krawędzie miał wyraźne granice między czernią a bielą. W pracy z grafiką na potrzeby stron WWW próg bywa stosowany np. przy tworzeniu prostych ikon, piktogramów albo masek (maski przezroczystości można przygotować właśnie na bazie obrazu progowanego). Dobrą praktyką jest najpierw sprowadzenie obrazu do odcieni szarości i dopiero potem użycie progowania, bo wtedy masz większą kontrolę nad tym, jak rozkłada się jasność i gdzie wypadnie granica progu. Warto też pamiętać, że progowanie jest operacją destrukcyjną – traci się informacje o półtonach – więc najlepiej pracować na kopii warstwy, żeby w razie czego móc wrócić do oryginału i poprawić ustawienia progu.

Pytanie 37

Kiedy dane z formularza są przesyłane w sposób jawny jako parametry w adresie URL, w skrypcie PHP można je odczytać za pomocą tablicy

A. $_SESSION
B. $_COOKIE
C. $_GET
D. $_POST
Odpowiedź 1 jest poprawna, ponieważ dane przesyłane w postaci jawnej jako parametry w adresie URL są dostępne w PHP poprzez tablicę superglobalną $_GET. Ta tablica przechowuje dane, które zostały przesłane metodą GET. Przykład użycia: jeśli mamy adres URL w formie 'example.com/page.php?name=Jan&age=25', to w skrypcie PHP możemy uzyskać te wartości poprzez $_GET['name'] i $_GET['age']. Wartością $_GET['name'] będzie 'Jan', a $_GET['age'] to '25'. Jest to standardowa praktyka w PHP, umożliwiająca łatwe pozyskiwanie danych w różnych aplikacjach webowych, szczególnie w kontekście wyszukiwania i filtracji wyników. Ważne jest jednak pamiętanie o bezpieczeństwie i sanitizacji danych wejściowych, ponieważ wartości te mogą być modyfikowane przez użytkowników. Użycie funkcji takich jak htmlspecialchars() może pomóc w zapobieganiu atakom XSS, a filter_input() w walidacji danych. Dobrą praktyką jest także unikanie przesyłania wrażliwych informacji w adresie URL, ponieważ mogą być one widoczne w historii przeglądarki oraz serwerowych logach.

Pytanie 38

W przedstawionej na rysunku relacji pole AutorID znajdujące się w tabeli ksiazki jest kluczem

Ilustracja do pytania
A. podstawowym.
B. kandydującym.
C. sztucznym.
D. obcym.
Pole AutorID w tabeli ksiazki jest klasycznym przykładem klucza obcego (foreign key) w relacyjnej bazie danych. Odwołuje się ono do pola IDAutor w tabeli autorzy, które jest kluczem podstawowym tej tabeli. Dzięki temu każda książka jest logicznie powiązana z konkretnym autorem, a baza danych może pilnować spójności referencyjnej. Innymi słowy: nie da się (a przynajmniej nie powinno się dać, jeśli relacje są poprawnie zdefiniowane) wstawić do ksiazki wartości AutorID, która nie istnieje w tabeli autorzy. W praktyce, w SQL definiuje się to np. tak: `AutorID INT CONSTRAINT FK_Ksiazki_Autorzy FOREIGN KEY REFERENCES autorzy(IDAutor)`. Moim zdaniem to jedno z najważniejszych pojęć w projektowaniu baz – bez kluczy obcych relacje między tabelami byłyby tylko „umowne”, a nie wymuszane przez silnik bazy. Klucz obcy zawsze wskazuje na klucz kandydujący, najczęściej na klucz podstawowy innej tabeli. Dzięki temu można łatwo wykonywać złączenia (JOIN): np. `SELECT Tytul, Imie, Nazwisko FROM ksiazki JOIN autorzy ON ksiazki.AutorID = autorzy.IDAutor;`. To jest dokładnie ten przypadek z rysunku: wiele książek może mieć tego samego autora, więc między autorzy a ksiazki mamy relację jeden‑do‑wielu, a pole AutorID jest po stronie „wiele” i pełni rolę klucza obcego. Dobre praktyki mówią też, żeby nazwy kluczy obcych jasno wskazywały, do czego się odnoszą (np. AutorID, Autor_Id), co tu również jest sensownie zrobione. W realnych systemach (biblioteki, księgarnie internetowe, systemy wydawnicze) dokładnie tak modeluje się powiązanie książka–autor: ID autora jako klucz podstawowy w tabeli autorzy i to samo ID jako klucz obcy w tabeli ksiazki.

Pytanie 39

Aby nadać styl CSS bezpośrednio pojedynczemu elementowi HTML (styl śródliniowy), należy użyć atrybutu:

A.
id
B.
css
C.
style
D.
class
Styl śródliniowy (inline) zapisuje się w atrybucie style danego znacznika, na przykład <p style="color: red">. Reguły podane w tym atrybucie dotyczą wyłącznie tego jednego elementu i mają najwyższą specyficzność. Stosuje się go oszczędnie, do pojedynczych wyjątków, bo miesza treść ze stylem. Dlatego do ostylowania jednego elementu wprost służy atrybut style.

Pytanie 40

W zaprezentowanym fragmencie algorytmu wykorzystano

Ilustracja do pytania
A. trzy bloki operacyjne (procesy)
B. jedną pętlę
C. jeden blok decyzyjny
D. dwie pętle
Na tym diagramie widać jedną pętlę, co jest dość ważne w programowaniu. Pętla pozwala na powtarzanie pewnych działań, aż spełni się jakiś warunek. Tu mamy blok decyzyjny, który mówi, czy proces ma trwać, czy się zakończyć. To dość powszechnie używane podejście, zwłaszcza w algorytmach, jak na przykład sortowanie czy obróbka danych. Warto zwrócić uwagę, by dobrze zrozumieć, jak działają pętle, szczególnie te oparte na warunkach, jak while czy for. Pozwoli to uniknąć problemów z niekończącymi się pętlami, które mogą sprawić, że program przestanie działać. Z mojego doświadczenia, ogarnać te struktury to kluczowy skill dla każdego, kto chce działać w IT.