Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 12 czerwca 2026 13:21
  • Data zakończenia: 12 czerwca 2026 13:35

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

W tabeli pracownicy zdefiniowano klucz główny jako INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT. Dodatkowo zdefiniowano kolumny imie oraz nazwisko. W przypadku wykonania poniższej kwerendy SQL wprowadzającej dane, w której pominięto pole klucza, w bazie danych MySQL wystąpi:

INSERT INTO pracownicy (imie, nazwisko) VALUES ('Anna', 'Nowak');
A. ignorowanie polecenia, tabela nie ulegnie zmianie
B. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
C. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
D. błąd związany z nieprawidłową liczbą kolumn
Jak używasz polecenia INSERT w MySQL i masz klucz główny ustawiony jako AUTO_INCREMENT, to system sam zajmie się przydzieleniem nowej, unikalnej wartości dla tego klucza dla każdego nowego rekordu. Kiedy wprowadzasz dane o pracowniku, takie jak imię i nazwisko, to nie musisz martwić się o podawanie wartości klucza głównego. MySQL świetnie to rozumie i dodaje kolejny wolny numer. To jest zgodne z dobrymi praktykami w bazach danych, gdzie klucz główny musi być unikalny dla każdego rekordu, ale niekoniecznie musisz go podawać ręcznie, szczególnie gdy korzystasz z mechanizmu AUTO_INCREMENT. Weźmy na przykład tabelę zamówień – tam każdy nowy wpis automatycznie dostaje unikalny numer zamówienia, co eliminuje ryzyko błędów i ułatwia późniejsze śledzenie danych. Dzięki AUTO_INCREMENT wprowadzanie danych staje się dużo prostsze, a szansa na pomyłki przy manualnym wpisywaniu wartości klucza głównego znacznie maleje.

Pytanie 2

Co umożliwia funkcja phpinfo()?

A. rozpoczęcie wykonywania kodu PHP
B. sprawdzenie wartości zmiennych
C. debugowanie kodu PHP
D. uzyskanie informacji o środowisku serwera PHP
Funkcja phpinfo() generuje stronę z pełnymi informacjami o środowisku serwera PHP: wersję PHP, system operacyjny, załadowane rozszerzenia, ustawienia php.ini i zmienne serwera. Używa się jej do szybkiej diagnostyki konfiguracji (np. czy włączone jest dane rozszerzenie). Zapamiętaj: phpinfo() = „pokaż mi, jak skonfigurowany jest ten serwer”.

Pytanie 3

W zamieszczonym kodzie PHP, zamiast znaków zapytania powinien być wyświetlony komunikat:

$x = mysql_query('SELECT * FROM mieszkancy');
if (!$x)
    echo '??????????????????????';
A. Błąd w trakcie przetwarzania zapytania
B. Niepoprawna nazwa bazy danych
C. Zapytanie zostało poprawnie przetworzone
D. Niepoprawne hasło do bazy danych
W przedstawionym kodzie PHP, komunikat "??????????????????????" powinien wskazywać na błąd przetwarzania zapytania SQL. Kiedy wynik funkcji mysql_query() jest równy fałszowi (false), oznacza to, że zapytanie nie mogło zostać poprawnie wykonane. Może to być spowodowane różnymi czynnikami, takimi jak błędy w składni zapytania, problemy z połączeniem z bazą danych, lub nieprawidłowe tabele. W tym przypadku, dobrym podejściem jest użycie funkcji mysql_error() w celu uzyskania bardziej szczegółowych informacji na temat natury błędu. Przykład poprawnego kodu mógłby wyglądać tak: <p>$x = mysql_query('SELECT * FROM mieszkancy');<br>If (!$x) {<br>echo mysql_error();<br>}</p> Używanie tej metody pomaga w diagnostyce problemu i pozwala na szybsze jego rozwiązanie. Znalezienie i naprawienie błędów w zapytaniach SQL jest kluczowe w pracy z bazami danych, szczególnie w kontekście aplikacji internetowych, które muszą być niezawodne i efektywne.

Pytanie 4

Jaką wartość wydrukuje na standardowe wyjście poniższy fragment kodu C++?

int obliczenia( int x ) {
x %= 3;
x++;
return x;
}

int main() {
std::cout<<obliczenia(32);
}
A. 3
B. 2
C. 32
D. 0
Rozważając dostępne odpowiedzi musimy przeanalizować dlaczego niektóre z nich są błędne w kontekście działania fragmentu programu. Zaczynając od odpowiedzi 0 warto zauważyć że reszta z dzielenia 32 przez 3 nie wynosi 0 co oznacza że operacja x %= 3 nie da w wyniku zera. Wartość 0 mogłaby być wynikiem tylko wtedy gdyby liczba 32 była podzielna przez 3 co nie jest prawdą w tym przypadku. Przechodząc dalej odpowiedź 32 sugeruje że operacje wewnątrz funkcji nie zmieniają wartości x co jest błędnym założeniem. Operacja x %= 3 zmienia wartość x na 2 a następnie x++ zmienia ją na 3. Dlatego wynik nie może być 32 ponieważ funkcja jawnie modyfikuje wartość wejściową. W kontekście odpowiedzi 2 operacje w funkcji mogą rzeczywiście prowadzić do wyniku 2 jeśli pominie się krok inkrementacji. Jednakże analiza kodu pokazuje że po operacji modulo wartość x wynosi 2 a następny krok to x++ który zwiększa tę wartość do 3. W rezultacie żadna z tych odpowiedzi nie uwzględnia pełnego przepływu operacji w funkcji co prowadzi do nieprawidłowych wniosków. Analizując ten problem można zauważyć jak ważne jest dokładne śledzenie przepływu danych w programie oraz zrozumienie wpływu każdej operacji na ostateczny wynik co jest kompetencją kluczową w profesjonalnym programowaniu.

Pytanie 5

Jaka będzie wartość $a po wykonaniu kodu?

$i = 10; $a = 0;
while ($i) {
  $a = $a + 2;
  $i--;
}
A. 10
B. 20
C. 2
D. 0
Wszystkie błędne wyniki biorą się z pomyłki przy „ręcznym” prześledzeniu pętli. Wartość 0 oznaczałaby, że pętla nie wykonała się ani razu - ale $i startuje od 10, więc warunek od początku jest prawdziwy. Wynik 2 odpowiadałby tylko JEDNEMU obrotowi, a obrotów jest dziesięć (tyle, ile wynosi początkowe $i). Wartość 10 wyszłaby, gdyby $a rosło o 1 na obrót - tutaj jednak rośnie o 2 (instrukcja $a = $a + 2). Prześledź licznik krok po kroku: $i maleje o 1 aż do zera, czyli 10 obrotów, a w każdym dokładamy 2 do $a. Po dziesięciu obrotach po +2 otrzymujemy 10 × 2 = 20 - i to jest poprawny wynik.

Pytanie 6

W aplikacjach webowych tablice asocjacyjne to takie tablice, w jakich

A. indeks jest ciągiem znaków
B. elementy tablicy są zawsze indeksowane od 0
C. w każdej komórce tablicy znajduje się inna tablica
D. istnieją przynajmniej dwa wymiary
Indeksowanie elementów tablicy od zera jest charakterystyczne dla tradycyjnych tablic, w których liczby naturalne służą jako indeksy do dostępu do poszczególnych elementów. Koncepcja ta jest powszechnie stosowana w wielu językach programowania, jednak nie odnosi się do tablic asocjacyjnych. W przypadku tablic asocjacyjnych klucze mogą być dowolnymi łańcuchami znaków, co oznacza, że nie ograniczają się do prostego indeksowania numerycznego. Wartość, jaka znajduje się w każdej komórce takiej tablicy, nie musi być inną tablicą, ponieważ tablice asocjacyjne mogą przechowywać różne typy danych, od prostych wartości po złożone obiekty. W dodatku, tablice asocjacyjne nie wymagają istnienia przynajmniej dwóch wymiarów; mogą być jednowymiarowe, co oznacza, że nie wszystkie tablice muszą być wielowymiarowe, aby działały prawidłowo. Typowe błędy myślowe, które prowadzą do takich niepoprawnych wniosków, obejmują nieporozumienie dotyczące definicji i właściwości różnych struktur danych oraz ich zastosowania w programowaniu. Ważne jest, aby zrozumieć, że różne typy tablic mają różne zastosowania i właściwości, co wpływa na sposób, w jaki mogą być używane w praktycznych scenariuszach programowania.

Pytanie 7

Jak określa się metodę umożliwiającą nawiązanie asynchronicznego połączenia klienta z serwerem i prowadzenie komunikacji bez konieczności przeładowania całej strony WWW?

A. AJAX
B. VBScript
C. PHP
D. XML
AJAX (Asynchronous JavaScript and XML) to technika używana w projektowaniu aplikacji internetowych, która umożliwia asynchroniczną komunikację między klientem a serwerem. Główną zaletą AJAX jest to, że pozwala na zaktualizowanie części strony internetowej bez potrzeby jej przeładowywania. Dzięki temu użytkownicy mogą interaktywnie korzystać z aplikacji, co poprawia doświadczenia użytkownika i zwiększa wydajność strony. Przykładem zastosowania AJAX może być dynamiczne ładowanie danych w formularzach, aktualizacja treści przy użyciu przycisków (np. 'Zobacz więcej'), czy też autouzupełnianie w polach tekstowych. Wykorzystując AJAX, deweloperzy mogą również minimalizować ruch sieciowy, ponieważ tylko zmienione lub nowe dane są przesyłane między serwerem a klientem. Technika ta jest zgodna z wieloma standardami webowymi, w tym z RESTful API, co czyni ją kluczowym elementem nowoczesnych architektur webowych. Warto zaznaczyć, że AJAX jest fundamentem dla wielu frameworków JavaScript, takich jak jQuery, Angular czy React, które jeszcze bardziej ułatwiają jego implementację.

Pytanie 8

W tabeli mieszkancy znajdują się różne dane. Aby przefiltrować jedynie mieszkańców, którzy mają przypisaną dzielnicę = 1, stworzono dla uproszczenia działania wirtualną tabelę (widok) poprzez zastosowanie kwerendy

A. CREATE VIEW mieszkancy FROM mieszkancy WHERE dzielnica = 1
B. CREATE VIEW mieszkancy WHERE dzielnica = 1
C. CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy WHERE dzielnica = 1
D. CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy
Odpowiedzi, które nie pasują do definicji widoków w SQL, mają kilka kluczowych błędów. W pierwszej z nich, 'CREATE VIEW mieszkancy WHERE dzielnica = 1;', brakuje ważnych elementów do zdefiniowania widoku. Przede wszystkim, nie ma słowa 'AS', które powinno być tam, żeby określić kwerendę, z której widok się tworzy. SQL wymaga, żeby definicja widoku miała zapytanie, czego tutaj brakuje. W drugiej odpowiedzi, 'CREATE VIEW mieszkancy FROM mieszkancy WHERE dzielnica = 1;', również jest niepoprawna, bo nie ma 'AS' i jest zła składnia, bo 'FROM' nie może być używane w tworzeniu widoku bez odpowiedniej struktury. Ostatnia odpowiedź, 'CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy;', choć składnia jest okej, nie filtruje danych do mieszkańców z dzielnicy nr 1. To błędne myślenie, bo często zapominamy o używaniu filtrów, co prowadzi do tego, że mamy za dużo danych do analizy. Tworząc widoki, warto zawsze mieć na uwadze, po co je robimy i zadbać o to, żeby zawierały tylko te dane, które są nam naprawdę potrzebne.

Pytanie 9

Co uzyskujemy po wykonaniu zapytania SQL?

Ilustracja do pytania
A. liczbę uczniów, których średnia ocen wynosi 5
B. całkowitą liczbę uczniów
C. suma ocen uczniów, których średnia ocen wynosi 5
D. średnią wszystkich ocen uczniów
Zapytanie SQL SELECT count(*) FROM Uczniowie WHERE srednia = 5; wykorzystuje funkcję agregującą count(*), która służy do zliczania liczby wierszy spełniających określone warunki. W tym przypadku warunkiem jest srednia = 5 co oznacza że zapytanie zlicza wszystkich uczniów których średnia ocen wynosi dokładnie 5. Jest to powszechna praktyka w analizie danych gdzie często potrzebujemy określić liczebność pewnych grup danych na przykład aby przeanalizować ich rozkład lub porównać je z innymi grupami. W profesjonalnej bazie danych zliczanie wierszy na podstawie kryteriów jest standardem co umożliwia generowanie raportów i podejmowanie decyzji na podstawie danych. Użycie count(*) bez dodatkowych parametrów jest zgodne z dobrymi praktykami ponieważ jest wydajne i łatwe w interpretacji. W praktyce stosowanie tego typu zapytań jest nieodzowne w działach analizy danych zarządzania relacjami z klientami czy w edukacji gdzie analizujemy wyniki uczniów.

Pytanie 10

W języku JavaScript, w celu przekształcenia specjalnie przygotowanego tekstu w tablicę, można wykorzystać metodę

A. slice()
B. split()
C. trim()
D. replace()
Użycie metod takich jak trim(), replace() czy slice() w kontekście zamiany tekstu na tablicę jest nieprawidłowe z kilku powodów. Metoda trim() służy do usuwania białych znaków (spacji, tabulatorów itp.) z początku i końca ciągu znaków. Choć jest to przydatne w wielu sytuacjach, nie ma ona żadnego wpływu na strukturę samego tekstu, a tym samym nie może być używana do przekształcania ciągu w tablicę. Z kolei replace() jest metodą, która zastępuje podciąg w łańcuchu, ale nie dzieli go na elementy. Na przykład, użycie replace() na ciągu "Jan,Kasia,Piotr" z celem uzyskania tablicy spowoduje, że nadal będziemy mieć jeden łańcuch, w którym nie będą mogły wystąpić oddzielne elementy. Natomiast metoda slice() służy do wycinania określonej części łańcucha, co również nie prowadzi do generowania tablicy. Powszechnym błędem myślowym jest założenie, że te metody mogą spełniać funkcję podziału tekstu, podczas gdy ich rzeczywiste zastosowanie jest zupełnie inne. W praktyce, stosując metody, które nie są przeznaczone do dzielenia tekstu, programiści mogą napotkać problemy z wydajnością i czytelnością kodu, co jest sprzeczne z zasadami dobrego programowania. Zrozumienie różnicy między tymi metodami oraz ich odpowiednim zastosowaniem jest kluczowe dla efektywnej pracy z danymi tekstowymi i zapewnia, że procesy przetwarzania informacji w aplikacjach są zarówno efektywne, jak i łatwe do utrzymania.

Pytanie 11

Co powinno znaleźć się w dokumentacji UŻYTKOWNIKA aplikacji?

A. instrukcja obsługi funkcji systemu
B. opis użytych technologii i bibliotek
C. szczegółowy opis kodu źródłowego
D. opis algorytmów zastosowanych w kodzie
Dokumentacja UŻYTKOWNIKA jest pisana dla osoby obsługującej program, więc zawiera instrukcję obsługi jego funkcji - jak wykonać typowe zadania, krok po kroku, bez wnikania w kod. Dlatego znajdzie się w niej instrukcja obsługi funkcji systemu.

Pytanie 12

Aby usunąć wszystkie rekordy z tabeli (zachowując samą tabelę), można użyć kwerendy:

A.
TRUNCATE TABLE
B.
CREATE COLUMN
C.
INSERT INTO
D.
ALTER COLUMN
Pozostałe polecenia nie czyszczą danych z tabeli. INSERT INTO działa odwrotnie - wstawia nowe wiersze. ALTER COLUMN odnosi się do modyfikacji definicji kolumny (jej typu czy nazwy), a nie do usuwania danych. CREATE COLUMN w ogóle nie istnieje w SQL. Usunięcie wszystkich rekordów z zachowaniem samej tabeli wykonuje TRUNCATE TABLE (alternatywnie DELETE bez WHERE), dlatego to ono jest poprawne.

Pytanie 13

Którego zdarzenia należy użyć, aby funkcja JavaScript uruchamiała się za każdym razem, gdy użytkownik wpisze znak w polu edycji?

A.
onmouseout
B.
onclick
C.
onkeydown
D.
onload
Pozostałe zdarzenia nie reagują na wpisywanie z klawiatury. onclick wywołuje się po kliknięciu myszą - nie zależy od tego, co użytkownik pisze. onmouseout zachodzi, gdy kursor opuszcza obszar elementu, czyli również dotyczy myszy, a nie klawiatury. onload uruchamia się tylko raz, po wczytaniu strony lub elementu, więc nie nadąży za kolejnymi znakami. Reakcję na każdy naciśnięty klawisz zapewnia onkeydown, dlatego to ono jest poprawne.

Pytanie 14

Który typ relacji wymaga utworzenia tabeli pośredniczącej, łączącej klucze główne obu tabel?

A.
1..n
B.
1..1
C.
n..1
D.
n..n
Pozostałe relacje nie potrzebują takiej tabeli. 1..1 i 1..n (a także n..1, czyli 1..n z drugiej strony) realizuje się kluczem obcym umieszczonym we właściwej tabeli. Tabela pośrednicząca jest konieczna wyłącznie dla n..n.

Pytanie 15

Aby wstawić w napisie tabulator (poziome wcięcie), należy użyć znaku sterującego:

A.
\r
B.
\n
C.
\t
D.
\\
Pozostałe sekwencje robią co innego. \\ służy do zapisania w napisie samego znaku ukośnika wstecznego, a nie wcięcia. \n to znak nowej linii - przenosi dalszy tekst do kolejnego wiersza, lecz nie tworzy poziomego odstępu. \r to powrót karetki, używany głównie razem z \n w zakończeniach wierszy w systemach Windows. Poziomy tabulator wstawia \t, dlatego to ta sekwencja jest poprawna.

Pytanie 16

W formularzu zdefiniowano kontrolki do wpisania imienia i nazwiska. Który atrybut reprezentuje podpowiedź umiejscowioną w polu kontrolki, znikającą w momencie, gdy użytkownik rozpocznie wpisywanie wartości?

<label for="imie">Imię: </label>
<input id="imie" value="Wpisz dane" title="Wpisz imię"><br>
<label for="nazw">Nazwisko: </label>
<input id="nazw" placeholder="Wpisz dane" title="Wpisz nazwisko">
A. value
B. for
C. title
D. placeholder
Dobrze! Poprawna odpowiedź to 'placeholder'. Atrybut 'placeholder' w elemencie input HTML jest używany do wyświetlania podpowiedzi wewnątrz pola formularza, która znika, gdy użytkownik zaczyna wpisywanie danych. Jest to zgodne z pytaniem, w którym poproszono o atrybut reprezentujący podpowiedź w polu formularza, która znika, gdy użytkownik rozpoczyna wpisywanie. Przykładem może być formularz logowania, gdzie w polach 'Użytkownik' i 'Hasło' można umieścić podpowiedzi 'Wpisz nazwę użytkownika' i 'Wpisz hasło' odpowiednio. Atrybut 'placeholder' jest bardzo przydatny w interaktywnym designie, pomagając użytkownikom zrozumieć, jakie informacje są od nich oczekiwane w danym polu formularza.

Pytanie 17

Wywoływanie funkcji przez samą siebie to

A. hermetyzacja
B. iteracja
C. dziedziczenie
D. rekurencja
Rekurencja to technika programistyczna, w której funkcja wywołuje samą siebie w celu rozwiązania problemu. Jest to potężne narzędzie, które pozwala na rozwiązywanie złożonych problemów przez ich dzielenie na mniejsze, bardziej przystępne podproblemy. Przykładem zastosowania rekurencji może być obliczanie silni liczby naturalnej, gdzie silnia n (n!) jest definiowana jako n * (n-1)! dla n > 0, a 1! = 1. W praktyce, rekurencja jest często wykorzystywana w algorytmach związanych z przeszukiwaniem struktur danych, takich jak drzewa czy grafy, gdzie takie podejście pozwala na eleganckie i czytelne rozwiązania. Dobrą praktyką w programowaniu rekurencyjnym jest zawsze definiowanie warunku zakończenia, aby uniknąć niekończących się wywołań, co mogłoby prowadzić do przepełnienia stosu. Rekurencja jest zgodna z zasadami programowania funkcyjnego, które promuje czystość i modularność kodu, co sprzyja jego testowalności i ponownemu wykorzystaniu.

Pytanie 18

W skrypcie JavaScript użyto metody DOM getElementsByClassName('akapit'). Metoda ta odniesie się do akapitu

A. <p class="akapit">akapit4</p>
B. <p id="akapit">akapit2</p>
C. <p>akapit</p>
D. <p href="/akapit">akapit3</p>
Metoda getElementsByClassName('akapit') w JavaScript jest metodą DOM, która zwraca kolekcję wszystkich elementów w dokumencie HTML, które mają przypisaną określoną klasę. W tym przypadku interesuje nas klasa 'akapit'. Poprawna odpowiedź to <p class="akapit">akapit4</p>, ponieważ ten akapit ma atrybut class ustawiony na 'akapit'. Zastosowanie klasy w HTML jest zgodne z najlepszymi praktykami programistycznymi, ponieważ pozwala na łatwe stylowanie i manipulowanie grupą elementów za pomocą CSS i JavaScript. Na przykład, jeśli chcemy zmienić kolor tekstu wszystkich akapitów z klasą 'akapit', możemy to zrobić jednym poleceniem w CSS: .akapit { color: red; }. Ponadto, metoda getElementsByClassName zwraca tzw. HTMLCollection, co oznacza, że możemy iterować po tej kolekcji i modyfikować jej elementy. Użycie klas w ten sposób wspiera zasadę separacji treści od prezentacji, co jest kluczowe w nowoczesnym podejściu do tworzenia stron internetowych.

Pytanie 19

Po wykonaniu poniższego kodu JavaScript, co będzie przechowywać zmienna str2?

var str1 = "JavaScript";
var str2 = str1.substring(2,6);
A. vaScri
B. vaSc
C. nvaScr
D. avaS
W przypadku analizy kodu JavaScript kluczowym aspektem jest zrozumienie działania metody substring która służy do wyodrębniania fragmentów łańcuchów znaków. Metoda przyjmuje dwa parametry: indeks początkowy oraz opcjonalny indeks końcowy. W kontekście pytania błędnym podejściem jest niedokładna interpretacja tych indeksów. Pierwsza niepoprawna odpowiedź avaS zakłada że wyodrębniane są znaki od 0 do 3 co jest niezgodne z podanymi indeksami 2 i 6. Druga odpowiedź vaScri zakłada że metoda substring obejmuje znaki aż do indeksu 6 włącznie co jest błędnym zrozumieniem zakresu działania tej metody. Metoda substring kończy wybieranie na znaku poprzedzającym indeks końcowy dlatego indeks 6 nie jest uwzględniany przy wyborze znaków. Kolejna niepoprawna odpowiedź nvaScr próbuje wybrać znaki rozpoczynając od indeksu 1 co jest błędnym startowym punktem dla zakresu 2 do 6. W kontekście dobrych praktyk programistycznych istotnym jest zrozumienie że indeksowanie od zera ma wpływ na rezultaty metod operujących na łańcuchach znaków. Częstym błędem początkujących programistów jest nieuwzględnienie tego faktu co prowadzi do niepoprawnych wyników i błędów logicznych w aplikacjach. Znajomość tych zasad pozwala efektywnie wykorzystywać możliwości języka JavaScript w codziennej pracy programistycznej.

Pytanie 20

W formularzu HTML wykorzystano znacznik <input>. Wyświetlane pole będzie przeznaczone do wprowadzania maksymalnie

Ilustracja do pytania
A. 30 znaków, które są widoczne podczas wpisywania
B. 20 znaków, które są widoczne podczas wpisywania
C. 30 znaków, które nie są widoczne w polu tekstowym
D. 20 znaków, które nie są widoczne w polu tekstowym
Zrozumienie działania atrybutów size i maxlength w znaczniku <input> jest kluczowe dla prawidłowego projektowania formularzy HTML. Atrybut size określa, ile znaków będzie widocznych w polu tekstowym, jednak to nie ogranicza faktycznej liczby znaków, które można wprowadzić. Działa to bardziej jako wskazówka dla użytkownika, jak szerokie może być pole, aby pomieścić określoną liczbę widocznych znaków. Dlatego odpowiedź, że size determinuje maksymalną ilość wprowadzanych znaków, jest błędna. Natomiast atrybut maxlength rzeczywiście ogranicza liczbę znaków, które można wprowadzić. Dzięki temu atrybutowi możemy kontrolować długość danych wejściowych, co jest często wykorzystywane w aplikacjach wymagających wprowadzania haseł lub innych danych tekstowych o określonej długości. W przypadku inputów typu password, wprowadzone znaki są maskowane, co oznacza, że użytkownik nie widzi tego, co wpisuje, a jego odpowiednik wprowadzenia tekstu typu tekstowego nie działa w ten sam sposób. Odpowiedzi zakładające, że dane są widoczne lub że size wpływa na długość wprowadzanych znaków, wynikają z niepełnego zrozumienia działania poszczególnych atrybutów HTML i ich roli w projektowaniu interfejsów użytkownika. Dobre praktyki projektowania formularzy wymagają jasnego rozróżnienia tych dwóch funkcji, co znacznie zwiększa użyteczność i dostępność aplikacji webowych oraz ułatwia użytkownikom korzystanie z formularzy zgodnie z ich przeznaczeniem.

Pytanie 21

Wskaż warunek w języku JavaScript, który ma na celu sprawdzenie, czy przynajmniej jeden z poniższych przypadków jest spełniony: 1) dowolna naturalna liczba a jest liczbą trzycyfrową 2) dowolna liczba całkowita b jest liczbą ujemną

A. ((a>99)&&(a<1000))&&(b<0)
B. ((a>99)||(a<1000))||(b<0)
C. ((a>99)&&(a<1000))||(b<0)
D. ((a>99)||(a<1000))&&(b<0)
Wszystkie pozostałe odpowiedzi zawierają błędy w logice warunków, które prowadzą do niepoprawnych wywołań logicznych. W przypadku pierwszego zapisu ((a>99)||(a<1000))||(b<0) użycie operatora '||' w pierwszej części oznacza, że wystarczy, aby a było większe niż 99 lub mniejsze niż 1000, co w praktyce nigdy nie wyklucza a z zakresu liczb naturalnych, ponieważ wszystkie liczby naturalne (w tym te jedno- i dwu-cyfrowe) spełniają ten warunek. To powoduje, że wynik będzie zawsze prawdziwy, niezależnie od wartości a. Kolejny zapis ((a>99)&&(a<1000))&&(b<0) również jest błędny, ponieważ wymaga, aby obie części były prawdziwe równocześnie. Oznacza to, że zarówno warunek trzycyfrowości liczby a, jak i warunek, że b musi być liczbą ujemną, muszą być spełnione, aby całość była prawdziwa. W sytuacji, gdy a jest liczbą trzycyfrową, ale b jest liczbą dodatnią, wynik będzie fałszywy, co nie spełnia założonych wymagań, które mówią o tym, że wystarczy, aby jeden z przypadków był prawdziwy. Wreszcie, ostatni zapis ((a>99)&&(a<1000))&&(b<0) jest identyczny w swej logice do poprzedniego, jedynie potwierdza, że oba warunki muszą być spełnione jednocześnie, co z kolei ogranicza możliwości otrzymania prawdziwego wyniku. W kontekście programowania i analizy logicznej, kluczowe jest zrozumienie operatorów logicznych oraz ich zastosowanie w konstrukcjach warunkowych, aby uzyskać zamierzony efekt działania.

Pytanie 22

Jakim poleceniem SQL można zlikwidować z tabeli artykuly wiersze, które zawierają słowo "sto" w dowolnej lokalizacji pola tresc?

A. DELETE * FROM artykuly WHERE tresc LIKE "%sto%"
B. DELETE * FROM artykuly WHERE tresc = "%sto%"
C. DELETE FROM artykuly WHERE tresc = "%sto%"
D. DELETE FROM artykuly WHERE tresc LIKE "%sto%"
Wybór odpowiedzi "DELETE * FROM artykuly WHERE tresc = '%sto%';" jest po prostu zły z paru powodów. Po pierwsze, w SQL nie używamy znaku '*' przy DELETE. Jak chcemy usunąć wiersze, to piszemy tylko "DELETE FROM nazwa_tabeli". To '*' sugeruje, że chcesz usunąć jakieś konkretne kolumny, a to w SQL się nie sprawdzi. Druga sprawa to operator '=' zamiast 'LIKE'. '=' używamy do porównania wartości, nie do wyszukiwania wzorców, a tu właśnie szukamy wystąpienia słowa 'sto' w dłuższym tekście. Dlatego operator LIKE z wildcardami jest tu konieczny, by znaleźć i usunąć te wiersze, które mają 'sto' gdziekolwiek. Często ludzie mylą te operatory w SQL, co prowadzi do problemów i nieefektywnego wyszukiwania.

Pytanie 23

Co oznacza w języku C++ przedstawiony fragment kodu?

struct CONTACT
{
std::string nazwisko;
std::string telefon;
int numer;
};
A. Interakcję między zmiennymi lokalnymi a globalnymi
B. Trzy niezależne zmienne
C. Typ strukturalny składający się z trzech pól
D. Organizację zmiennych
W C++ struktury to takie narzędzia do grupowania danych, co już wiesz. Jednak w twoim opisie pojawił się błąd dotyczący zmiennych globalnych i lokalnych. To nie do końca ma związek z tym, co robi struktura. Globalne zmienne to te, które możesz używać wszędzie w programie, a lokalne tylko w danym bloku kodu. Hierarchia zmiennych to inny temat, bo zazwyczaj chodzi o klasy i dziedziczenie, a nie o struktury. W przypadku CONTACT, wszystkie pola są równorzędne, więc nie ma tam żadnej hierarchii. Twoje stwierdzenie, że te zmienne są niepowiązane, również jest nietrafione, bo z definicji struktury wszystkie te pola skupiają się na tym samym obiekcie. To, że struktury grupują dane, to jedna z ich najważniejszych cech, którą trzeba mieć na uwadze, żeby dobrze wykorzystywać możliwości C++.

Pytanie 24

Wykonanie następującego polecenia PHP umożliwia:

$zapytanie = mysqli_query($db, "UPDATE ...");
A. zmianę struktury bazy
B. dodanie nowych danych do bazy
C. zmianę danych w bazie
D. pobranie danych z bazy
Polecenie PHP mysqli_query z użyciem instrukcji SQL UPDATE służy do modyfikacji danych w bazie danych. Funkcja mysqli_query umożliwia wykonywanie zapytań SQL na połączeniu z bazą danych reprezentowanym przez zmienną $db. Instrukcja UPDATE jest stosowana do aktualizacji istniejących rekordów w tabeli w bazie danych. Przykładowo, jeśli chcesz zaktualizować pole nazwa w tabeli użytkownicy, możesz użyć polecenia UPDATE users SET name='NowaNazwa' WHERE id=1. To podejście umożliwia dynamiczne zarządzanie danymi, co jest kluczowe w aplikacjach internetowych wymagających bieżącej aktualizacji informacji. W praktyce należy pamiętać o dobrych praktykach, takich jak walidacja danych wejściowych i zabezpieczenie przed atakami SQL injection, np. poprzez stosowanie przygotowanych zapytań. Aktualizowanie danych w bazie to jedna z podstawowych operacji CRUD (Create Read Update Delete), które są fundamentem zarządzania danymi w większości aplikacji obsługujących bazy danych. Poprawne użycie tej funkcji wymaga zrozumienia struktury SQL i znajomości specyfiki używanego systemu zarządzania bazą danych.

Pytanie 25

W języku JavaScript, deklaracja:

var x=true;
sprawia, że zmienna x ma typ
A. łańcuch znaków
B. logiczy
C. numeryczny
D. enumeracyjny
Odpowiedzi, które dotyczą typów danych jak ciągi znaków, liczby czy wyliczeniowe, są tutaj nietrafione. Na początek warto wspomnieć, że ciąg znaków w JavaScript to po prostu tekst, np. 'hello' lub '123'. To zupełnie co innego niż typ logiczny. Zmienna z wartością true to nie tekst, więc nie da się jej traktować jako ciągu znaków. Jeśli chodzi o typ liczbowy, to on dotyczy wartości takich jak 1, 2, 3 czy 3.14. Często można się pomylić, gdy wartości logiczne są brane pod uwagę w kontekście arytmetyki, co prowadzi do błędnych wniosków. Typ wyliczeniowy jest zazwyczaj używany w językach, które mają enumeracje, a w czystym JavaScript tego nie ma. Typ logiczny ma swoje unikalne zastosowania, szczególnie w tworzeniu warunków i decyzyjności w kodzie. Jak się nie zrozumie tych różnych typów, to można łatwo wpaść w pułapki logiczne, co jest dość powszechnym problemem, zwłaszcza u początkujących programistów. Dlatego ważne jest, by przy nauce programowania widzieć, jak różne typy danych mogą wpływać na kod i unikać uproszczeń, które mogą dać błędne rezultaty.

Pytanie 26

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

A. COUNT MAX SELECT ocena FROM oceny WHERE produktID = 10;
B. MAX SELECT ocena FROM oceny WHERE produktID = 10;
C. SELECT MAX COUNT(ocena) FROM oceny WHERE produktID = 10;
D. SELECT MAX(ocena) FROM oceny WHERE produktID = 10;
W odpowiedziach błędnych występują różne nieporozumienia dotyczące składni SQL oraz sposobu korzystania z funkcji agregujących. Przykładowo, pierwsza propozycja "MAX SELECT ocena FROM oceny WHERE produktID = 10;" jest niepoprawna, ponieważ nie przestrzega właściwej składni SQL. Słowo kluczowe MAX() powinno być używane jako funkcja, a nie jako część polecenia SELECT. Z kolei trzecia odpowiedź "COUNT MAX SELECT ocena FROM oceny WHERE produktID = 10;" również nie ma sensu, ponieważ COUNT() jest inną funkcją agregującą, która zlicza rekordy, a nie znajduje maksymalnej wartości. Kolejna sugestia, "SELECT MAX COUNT(ocena) FROM oceny WHERE produktID = 10;", jest niepoprawna z tego samego powodu - nie można użyć MAX() i COUNT() razem w taki sposób. Często takie nieprawidłowe podejścia wynikają z nieporozumienia dotyczącego funkcji agregujących i ich zastosowania w kontekście SQL. Kluczowe jest, aby rozumieć, że funkcje takie jak MAX() i COUNT() służą do różnych celów: MAX() znajduje najwyższą wartość, podczas gdy COUNT() zlicza wystąpienia danej wartości. Dlatego niezbędne jest solidne zrozumienie działania tych funkcji oraz ich odpowiedniego użycia w zapytaniach SQL, co stanowi fundament dobrych praktyk w analizie danych w relacyjnych bazach danych.

Pytanie 27

W skrypcie PHP funkcja mysqli_query() ma dodać do bazy danych nowe dane pobrane z formularza. Jakiego polecenia SQL należy w niej użyć?

A.
ALTER
B.
UPDATE
C.
INSERT INTO
D.
SELECT
Pozostałe polecenia operują na bazie, ale żadne nie dodaje nowego wiersza. UPDATE modyfikuje dane już istniejące - zmienia wartości w wybranych wierszach, lecz nie tworzy nowych rekordów. SELECT jedynie odczytuje dane z tabeli i zwraca wynik, niczego nie zapisując. ALTER działa na strukturze tabeli - dodaje lub usuwa kolumny, zmienia typy - a nie na samych danych. Wstawienie do tabeli nowego wiersza z danymi z formularza realizuje INSERT INTO, dlatego to ono jest poprawne.

Pytanie 28

Tabela psy ma pola imie, rasa, telefon_wlasciciela, rok_szczepienia. Która kwerenda zwróci telefony właścicieli psów szczepionych PRZED 2015?

A.
SELECT imie, rasa FROM psy WHERE rok_szczepienia > 2015;
B.
SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia > 2015;
C.
SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia < 2015;
D.
SELECT psy FROM rok_szczepienia < 2015;
Pozostałe zapytania mają błędy. SELECT psy FROM rok_szczepienia < 2015 myli tabelę z kolumną i nie ma poprawnej konstrukcji FROM ... WHERE. Warianty z rok_szczepienia > 2015 zwracają psy szczepione PO 2015, czyli odwrotnie. Wybór imie, rasa w ogóle nie daje numerów telefonów. Poprawne jest SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia < 2015;.

Pytanie 29

W bazie danych sklepu internetowego, w tabeli klienci znajdują się m.in. pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy o typie DATE. Klauzula WHERE dla zapytania wybierającego klientów, którzy mają ponad 3000 punktów lub dokonali zakupów więcej niż 100 razy, a ich ostatnie zakupy miały miejsce co najmniej w roku 2022, przyjmuje postać

A. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
B. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'
C. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
D. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
W przypadku pozostałych odpowiedzi pojawiają się istotne błędy związane z logiką stosowania operatorów w klauzuli WHERE. W pierwszej z niepoprawnych opcji zastosowano operator OR w połączeniu z operatorami AND, co prowadzi do niejednoznaczności w logice kwerendy. Taki zapis sugeruje, że każdy klient, który spełnia tylko jeden z podanych warunków, zostanie wybrany, co nie jest zgodne z wymaganiami zadania. W drugim przypadku, zastosowanie operatora AND dla wszystkich warunków implikuje, że klient musi jednocześnie spełniać wszystkie trzy warunki, co znacząco zawęża grupę wyników i może prowadzić do pominięcia klientów, którzy są wartościowi z punktu widzenia transakcji, ale nie spełniają wszystkich kryteriów jednocześnie. W ostatniej opcji również zastosowano operator AND we wszystkich warunkach, co jest niezgodne z zamysłem zapytania. Ważne jest, aby w takich sytuacjach dobrze rozumieć logikę operacji logicznych oraz ich konsekwencje w praktyce. Kluczowym błędem jest nieodpowiednie zrozumienie relacji między warunkami oraz ich wzajemnego wpływu na ostateczny wynik zapytania. W SQL istotne jest precyzyjne formułowanie zapytań, aby uniknąć niezamierzonych wyników, dlatego warto na etapie pisania schematów myśleć o logice, która będzie spełniać założone cele analizy danych.

Pytanie 30

Które stwierdzenie najlepiej opisuje klasę Owoc zdefiniowaną w języku PHP i przedstawioną na listingu?

class Owoc {
    public $nazwa;
    private $kolor;
    function set_nazwa($nazwa) {
        $this->nazwa = $nazwa;
    }
}
A. Zawiera dwa pola i jedną metodę, a pole nazwa ma zasięg widzialności ograniczony wyłącznie do metod klasy.
B. Zawiera dwa pola i jedną metodę, a pole kolor ma zasięg widzialności ograniczony wyłącznie do metod klasy.
C. Zawiera dwa pola oraz jeden konstruktor, oba pola mają zasięg widzialności ograniczony wyłącznie do metod klasy.
D. Zawiera jedno pole i dwie metody, z których jedna ma ograniczony zasięg prywatny.
Wiele z błędnych odpowiedzi opiera się na niewłaściwej interpretacji widoczności pól oraz liczby metod w klasie. Klasa Owoc ma jedno publiczne pole o nazwie nazwa oraz jedno prywatne pole kolor, co oznacza, że tylko metody wewnątrz klasy mogą uzyskiwać dostęp do pola kolor. Pierwsza odpowiedź sugeruje, że klasa ma jedno pole i dwie metody, co jest niezgodne z rzeczywistością, ponieważ nie zdefiniowano drugiej metody. Z kolei odpowiedzi wskazujące na istnienie konstruktora są również błędne, ponieważ klasa Owoc nie definiuje żadnego konstruktora, co oznacza, że PHP automatycznie generuje domyślny konstruktor, ale nie jest on jawnie widoczny w kodzie. Istotnym błędem jest również założenie, że pole nazwa ma ograniczoną widoczność, co nie jest prawdziwe, gdyż jest ono publiczne i dostępne z zewnątrz klasy. Takie nieprawidłowe wnioski mogą wynikać z braku zrozumienia podstawowych zasad programowania obiektowego oraz widoczności w PHP, co jest kluczowe dla poprawnego projektowania aplikacji. W szczególności, umiejętność rozróżnienia między różnymi poziomami widoczności (publiczne, prywatne, chronione) jest niezbędna dla efektywnego korzystania z obiektów i klas w tym języku.

Pytanie 31

Integralność referencyjna w relacyjnych bazach danych oznacza, że

A. klucz główny lub klucz obcy nie mogą zawierać wartości NULL
B. wartość klucza obcego w danej tabeli musi być albo równa wartości klucza głównego w związanej z nią tabeli albo równa wartości NULL
C. każdemu kluczowi głównemu przyporządkowany jest dokładnie jeden klucz obcy w powiązanych tabelach
D. wartość klucza głównego oraz klucza obcego nie może być pusta
Wybór odpowiedzi sugerujących, że każdemu kluczowi głównemu odpowiada dokładnie jeden klucz obcy w tabeli lub tabelach powiązanych, jest błędny. W rzeczywistości, jeden klucz główny może być powiązany z wieloma kluczami obcymi w różnych rekordach. Na przykład, w bazie danych dotyczącej zamówień, klucz główny tabeli 'Klienci' może być referencjonowany przez wiele rekordów w tabeli 'Zamówienia', co oznacza, że ten sam klient może mieć wiele zamówień. Odpowiedzi sugerujące, że klucz główny lub klucz obcy nie zawierają wartości NULL, są również mylące. W praktyce, klucze obce mogą zawierać wartość NULL, co oznacza, że dany rekord nie musi mieć przypisanego odniesienia do innej tabeli. Przykładem mogą być zamówienia, które nie są jeszcze przypisane do żadnego klienta – w takim wypadku wartość klucza obcego (KlientID) może być NULL. Te nieprawidłowe odpowiedzi prowadzą do błędnych wniosków, które mogą wpłynąć na projektowanie baz danych oraz ich funkcjonalność. Zrozumienie, że klucze obce mogą być NULL oraz że jeden klucz główny może być powiązany z wieloma kluczami obcymi, jest kluczowe dla prawidłowego modelowania danych i zapewnienia spójności w bazach danych.

Pytanie 32

Która zasada dotyczy integralności danych w bazie?

A. pole klucza podstawowego nie może być puste
B. w relacji 1..n klucz obcy łączy się z kluczem obcym innej tabeli
C. klucz podstawowy musi mieć osobny indeks
D. pole klucza obcego nie może być puste
Jedną z zasad integralności jest to, że pole klucza PODSTAWOWEGO nie może być puste (NULL) - skoro identyfikuje rekord, musi mieć wartość w każdym wierszu. Dlatego klucz podstawowy nie może być pusty.

Pytanie 33

Jaki typ relacji powstaje, gdy połączymy dwie tabele przez ich KLUCZE GŁÓWNE?

A. jeden do jednego
B. jeden do wielu
C. wiele do jednego
D. wiele do wielu
Gdy dwie tabele łączymy przez ich KLUCZE GŁÓWNE (oba unikalne), każdemu rekordowi jednej odpowiada dokładnie jeden rekord drugiej - to relacja JEDEN DO JEDNEGO (1:1). Stosuje się ją np. do rozdzielenia rzadko używanych pól. Zapamiętaj: dwa klucze główne naprzeciw siebie = 1:1.

Pytanie 34

Co wyświetli kod PHP:

echo date('Y');
?
A. rok
B. dzień
C. miesiąc i rok
D. dzień i miesiąc
Funkcja date() formatuje datę wg podanego wzorca, a litera 'Y' oznacza ROK czterocyfrowo (np. 2026). Dlatego echo date('Y'); wyświetli rok.

Pytanie 35

Które wywołanie is_float() zwróci true?

A.
is_float(NULL)
B.
is_float(334)
C.
is_float(3.34)
D.
is_float('3,34')
is_float('3,34') to NAPIS (z przecinkiem), nie liczba float. is_float(334) to liczba całkowita (int). is_float(NULL) to wartość pusta. Wynik true daje tylko is_float(3.34).

Pytanie 36

Zaprezentowane pole input daje możliwość

<input type="checkbox" name="text1" value="text2">
A. wprowadzenia hasła
B. wpisania dowolnego tekstu
C. wybrania opcji
D. zaznaczenia opcji z listy zawierającej wartości text1 i text2
Element HTML z atrybutem type="checkbox" jest używany do tworzenia pól wyboru które pozwalają użytkownikowi zaznaczać jedną lub więcej opcji. Checkboxy są częstym elementem formularzy internetowych gdyż umożliwiają elastyczne zbieranie danych od użytkowników. Przykładowo w formularzach rejestracyjnych można używać ich do akceptacji regulaminu zapisów na newslettery czy wyboru zainteresowań. Składnia takiego elementu jest prosta: tag <input> z atrybutami name i value. Atrybut name jest niezbędny do grupowania checkboxów a value do przekazywania wartości zaznaczonej opcji do serwera podczas wysyłania formularza. Dobre praktyki zalecają dodawanie etykiet opisujących znaczenie checkboxa co poprawia dostępność dla osób korzystających z czytników ekranowych. Stosowanie checkboxów powinno być przemyślane by nie przeciążać użytkownika zbyt dużą liczbą opcji co mogłoby negatywnie wpłynąć na UX. Właściwe użycie checkboxów zgodne ze standardami HTML i UX jest kluczowe dla intuicyjnego interfejsu użytkownika.

Pytanie 37

Na czym polega walidacja pól formularza?

A. na sprawdzeniu, czy istnieje plik PHP odbierający dane
B. na sprawdzeniu, czy użytkownik jest zalogowany
C. na ustaleniu, który użytkownik wprowadził dane
D. na sprawdzeniu, czy wprowadzone dane spełniają określone reguły
Walidacja pól formularza to sprawdzenie, czy wprowadzone dane spełniają określone REGUŁY - np. czy e-mail ma poprawny format, pole nie jest puste, a liczba mieści się w zakresie. Chroni to przed błędnymi lub niebezpiecznymi danymi. Dlatego polega na sprawdzeniu zgodności danych z regułami.

Pytanie 38

Wskaż zdanie, które jest nieprawdziwe w odniesieniu do poniższej definicji funkcji w języku C++? void zamien(float &x, float &y){ float tmp; tmp=x; x=y; y=tmp; }

A. Funkcja nie zwraca żadnej wartości
B. Funkcja zwraca jakąś wartość
C. Funkcja ma dwa argumenty
D. Funkcja korzysta z parametrów przez referencję
Funkcja zamien jest przykładem funkcji w języku C++, która nie zwraca wartości. Zdefiniowana jako 'void', co oznacza, że nie ma zwracanej wartości. W C++ typ zwracany przez funkcję jest kluczowym elementem definicji funkcji. W przypadku, gdy funkcja jest określona jako 'void', użytkownik nie powinien oczekiwać, że funkcja przekaże jakąkolwiek wartość po jej zakończeniu. Funkcja ta przyjmuje dwa argumenty typu 'float' przekazywane przez referencję, co pozwala na modyfikację ich wartości bezpośrednio w miejscu ich wywołania. Przykładowo, jeżeli zmienne 'x' i 'y' mają przypisane wartości 5.0 i 10.0 przed wywołaniem funkcji, po jej wykonaniu ich wartości zmienią się na odpowiednio 10.0 i 5.0. Oznacza to, że modyfikacja wartości zmiennych zewnętrznych jest możliwa dzięki użyciu referencji. W praktyce oznacza to także, że nie ma potrzeby korzystania z dodatkowych zmiennych do przechowywania wyników, co może być wydajniejsze. Funkcje 'void' są często stosowane w przypadkach, gdy operacje nie wymagają zwracania wyników, a jedynie modyfikacji przekazanych argumentów.

Pytanie 39

W JavaScript funkcja document.getElementById(id) ma na celu

A. umieścić tekst o treści ’id’ na stronie internetowej
B. pobrać wartości z formularza i przypisać je do zmiennej id
C. zweryfikować poprawność formularza o identyfikatorze id
D. zwrócić referencję do pierwszego elementu HTML o wskazanym id
Niektóre twoje odpowiedzi trochę mylą rolę metody document.getElementById(id). Myślenie, że ta metoda pobiera dane z formularza i wkłada je do zmiennej id to zły trop. W rzeczywistości, ona służy do uzyskiwania dostępu do elementów, a jeśli chcesz odczytać wartości z pól formularzy, powinieneś użyć właściwości value. Mówienie o tym, że ta metoda sprawdza poprawność formularza, też nie jest na miejscu - do walidacji używa się innych funkcji, jak addEventListener() na zdarzenie 'submit' albo atrybutów HTML5, jak required. No i jeśli chodzi o wstawianie tekstu 'id' na stronę, to też nie tak to działa - document.getElementById(id) daje ci odnośnik do elementu, ale nie modyfikuje go w jakiś bezpośredni sposób. To błędy, które mogą wynikać z nie do końca jasnego zrozumienia, jak działają metody manipulacyjne w JavaScript.

Pytanie 40

Jak ustawić tło body obrazem rys.png, powtarzanym TYLKO w poziomie?

A.
background-image: url("rys.png"); background-repeat: repeat-y;
B.
background-image: url("rys.png"); background-repeat: repeat-x;
C.
background-image: url("rys.png"); background-repeat: round;
D.
background-image: url("rys.png"); background-repeat: repeat;
Pozostałe wartości robią co innego. repeat powiela obraz w obu kierunkach (kafelki), repeat-y tylko w pionie, a round skaluje i dopasowuje liczbę powtórzeń. Powtarzanie wyłącznie w poziomie daje repeat-x.