Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 30 kwietnia 2026 07:34
  • Data zakończenia: 30 kwietnia 2026 07:59

Egzamin zdany!

Wynik: 32/40 punktów (80,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 przedstawionym kodzie JavaScript występuje błąd logiczny. Program, zamiast informować, czy liczby są równe, nie działa prawidłowo. Wskaż, która odpowiedź dotyczy tego błędu.

var x = 5;
var y = 3;
if (x = y)
  document.getElementById("demo").innerHTML = "zmienne są równe";
else
  document.getElementById("demo").innerHTML = "zmienne się różnią";
A. Przed instrukcją else nie powinno być średnika
B. Zmienne zostały błędnie zadeklarowane
C. W instrukcji if znajduje się przypisanie zamiast operacji porównania
D. Polecenia w sekcjach if i else powinny zostać zamienione miejscami
W tym przypadku mamy do czynienia z częstym błędem w programowaniu, gdzie zamiast porównania użyto operatora przypisania. W języku JavaScript operator przypisania '=' służy do przypisywania wartości do zmiennej, natomiast do porównania dwóch wartości używa się operatora '==' dla równości lub '===' dla równości i sprawdzania typu. Użycie '=' w warunku if powoduje przypisanie wartości y do x, co zawsze zwróci true, jeśli y jest różne od zera. To prowadzi do nieoczekiwanych rezultatów w logice programu. Poprawnym zapisem w tym kontekście jest if (x == y). Warto pamiętać o dobrych praktykach, które zalecają używanie '===' zamiast '==' dla uzyskania lepszej precyzji i uniknięcia błędów spowodowanych niejawnych konwersji typów. To podejście minimalizuje ryzyko błędów logicznych i poprawia czytelność kodu. Regularne stosowanie takich dobrych praktyk zwiększa jakość kodu i ułatwia jego późniejszą konserwację oraz rozwój.

Pytanie 2

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 3

W języku JavaScript można inaczej zapisać instrukcję a++; jako

A. a<<1;
B. a&1;
C. 1+=a;
D. a=a+1;
Odpowiedź 'a=a+1;' jest poprawna, ponieważ dokładnie odzwierciedla działanie inkrementacji w JavaScript. Operacja a++ zwiększa wartość zmiennej a o 1, co można również zapisać jako przypisanie nowej wartości do a, uzyskanej przez dodanie do niej 1. Wartości a nie można zmieniać bezpośrednio bez przypisania nowej wartości, a zapis 'a=a+1;' jasno pokazuje ten proces. W praktycznych zastosowaniach, taka forma może być używana w pętlach lub w sytuacjach, gdy potrzebujemy kontrolować, jak zmienia się wartość zmiennej. Na przykład, w iteracjach przez tablicę, zastosowanie 'a=a+1;' umożliwia elastyczne manipulowanie wartością zmiennej, co jest zgodne z zasadami programowania. Używanie operatorów przypisania, takich jak +=, to dobra praktyka, która poprawia czytelność oraz zrozumienie kodu, zwłaszcza dla mniej doświadczonych programistów, którzy mogą nie znać bardziej zaawansowanych form zapisu.

Pytanie 4

Dany fragment kodu ilustruje składnię danego języka

Ilustracja do pytania
A. PHP
B. C
C. C#
D. JavaScript
Kod przedstawiony w pytaniu jest napisany w języku PHP który jest popularnym językiem skryptowym stosowanym na serwerach do generowania dynamicznych stron internetowych Zaczyna się od znacznika otwierającego '<?php' co jasno wskazuje na PHP W kodzie użyte są funkcje takie jak file_get_contents fopen fwrite i fclose które są typowe dla PHP i służą do manipulacji plikami Funkcja file_get_contents służy do odczytywania zawartości pliku co jest niezbędne do pobrania aktualnej wartości zmiennej Silosc Następnie zmienna ta jest inkrementowana aby zwiększyć jej wartość o jeden co jest powszechnie stosowane w licznikach odwiedzin stron internetowych PHP jako język skryptowy pozwala na łatwe manipulowanie danymi serwera a także na integrację z bazami danych i szeroką gamę funkcji sieciowych i narzędzi co czyni go jednym z najczęściej używanych języków do tworzenia aplikacji webowych Dobrym standardem jest stosowanie PHP w przypadku gdy potrzebne jest dynamiczne generowanie treści oraz zarządzanie danymi użytkowników

Pytanie 5

Jakie jest zadanie funkcji przedstawionej w języku JavaScript?

 function fun1(a, b) {
    if (a % 2 != 0) a++;
    for (n = a; n <= b; n+=2)
        document.write(n);
}
A. wypisanie wszystkich liczb z zakresu od a do b
B. sprawdzenie, czy liczba a jest nieparzysta; w przypadku potwierdzenia, wypisanie jej
C. wypisanie liczb parzystych z zakresu od a do b
D. zwrócenie wartości liczb parzystych od a do b
Odpowiedź "wypisanie liczb parzystych z przedziału od a do b" jest prawidłowa, ponieważ funkcja fun1(a, b) w języku JavaScript ma na celu wyświetlenie wszystkich liczb parzystych w zdefiniowanym zakresie. Funkcja najpierw sprawdza, czy liczba a jest nieparzysta; jeśli tak, to zwiększa ją o 1, co zapewnia, że zaczynamy od najbliższej liczby parzystej. Następnie, za pomocą pętli for, iteruje przez liczby od a do b, zwiększając n o 2 w każdej iteracji. Dzięki temu wypisujemy tylko liczby parzyste. Przykładowo, jeśli a = 3 i b = 9, to funkcja zacznie od 4 i wypisze 4, 6, i 8. Tego typu funkcje są przydatne w różnych kontekstach programistycznych, takich jak generowanie sekwencji liczb dla algorytmów matematycznych, generowanie danych testowych czy też przy pracy z interfejsami użytkownika, gdzie występują interwały liczbowe. Dobrą praktyką jest zawsze jasno określać zakres przetwarzanych danych, co ta funkcja realizuje, zapewniając, że wyniki są zgodne z oczekiwaniami użytkownika.

Pytanie 6

Który sposób na utworzenie tablicy w JavaScript jest niepoprawny pod względem składniowym?

A. var liczby = new Array(1, 2, 3);
B. var liczby = new Array[1, 2, 3];
C. var liczby = [3];
D. var liczby = [1, 2, 3];
Wybranie odpowiedzi, która mówi, że inne zapisy są poprawne, to nie najlepszy wybór. Na początku, niepoprawne jest użycie nawiasów kwadratowych zamiast okrągłych w wywołaniu konstruktora 'Array'. Zapis 'var liczby = new Array[1, 2, 3];' jest po prostu błędny. Zamiast tego powinieneś napisać 'var liczby = new Array(1, 2, 3);'. Co więcej, zapis 'var liczby = [3];' jest jak najbardziej w porządku - tworzy tablicę z jednym elementem, co czasami jest przydatne. A 'var liczby = [1, 2, 3];' to klasyka, bo używa literałów tablicowych, które są łatwiejsze w odbiorze. Pamiętaj, że stosowanie literałów jest zalecane, bo są prostsze i bardziej przejrzyste. Warto zrozumieć różnicę między nawiasami, bo to może ułatwić życie, zwłaszcza przy pisaniu kodu.

Pytanie 7

Wskaż właściwy zapis polecenia napisanego w języku JavaScript?

A. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " + 3.14 )
B. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " . 3.14 )
C. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " 3.14 )
D. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " ; 3.14 )
Odpowiedź ta jest poprawna, ponieważ używa operatora konkatenacji (+) do połączenia tekstu oraz wartości liczbowej 3.14 w jednej instrukcji document.write. Funkcja document.write jest metodą w Javascript, która umożliwia dynamiczne wstawianie treści HTML do dokumentu. W przykładzie, ciąg tekstowy "Liczba ? z dokładnością do 2 miejsc po przecinku ? " jest poprawnie połączony z wartością liczbową, co skutkuje wyświetleniem na stronie rezultatu, który jest czytelny i zrozumiały dla użytkownika. Warto również zauważyć, że w takich sytuacjach stosuje się również metody formatowania liczb, takie jak toFixed() dla uzyskania precyzyjnych wyników, np. (3.14).toFixed(2) zwróci '3.14'. Zgodność z ECMAScript oraz standardami W3C sprawia, że ta konstrukcja jest zarówno praktyczna, jak i zgodna z najlepszymi praktykami programowania w JavaScript.

Pytanie 8

W języku JavaScript zapisano kod, którego wynikiem działania jest?
var osoba=prompt("Podaj imię", "Adam");

A. wyświetlenie okna z polem do edycji, w którym domyślnie znajduje się tekst "Adam"
B. uzyskanie z formularza wyświetlonego na stronie HTML imienia "Adam"
C. pokazanie okna z pustym polem do edycji
D. bezpośrednie przypisanie do zmiennej osoba wartości "Adam"
W kodzie JavaScript zapisano wywołanie funkcji prompt, która jest standardową metodą do interakcji z użytkownikiem poprzez wyświetlenie okna dialogowego. Funkcja ta przyjmuje dwa argumenty: pierwszy to tekst, który będzie wyświetlony jako prośba o dane, a drugi to opcjonalna wartość domyślna, która pojawi się w polu edycyjnym okna dialogowego. W przykładzie użytkownik proszony jest o podanie imienia, a domyślną wartością, która jest predefiniowana w tym przypadku, jest 'Adam'. Działanie tego kodu spowoduje otwarcie okna z polem edycyjnym, w którym już znajduje się 'Adam', co ułatwia użytkownikowi wprowadzenie danych. Ponadto, gdy użytkownik kliknie 'OK' lub 'Anuluj', wynik (czyli wartość wpisana przez użytkownika lub null, jeśli anulował) zostanie przypisany do zmiennej 'osoba'. Warto zaznaczyć, że funkcja prompt jest powszechnie używana w aplikacjach webowych do szybkiego zbierania informacji od użytkowników. Dzięki temu kodowi programiści mogą efektywnie interactować z użytkownikami, co jest zgodne z duchem nowoczesnych aplikacji internetowych opartych na JavaScript.

Pytanie 9

W języku JavaScript następujący zapis: var napis1 = new napisy); ma na celu

A. zadeklarowanie zmiennej napis1 oraz wywołanie funkcji, w której argumentem jest napis1
B. wywołanie metody dla obiektu napisy
C. stworzenie nowej klasy napis1
D. stworzenie instancji obiektu napis1 klasy napisy
W podanym kodzie JavaScript mamy do czynienia z próbą utworzenia obiektu klasy 'napisy'. Operacja 'new' w JavaScript jest używana do instancjowania obiektów z funkcji konstrukcyjnych, które pełnią rolę klas. Przykład działania: jeśli mamy zdefiniowaną funkcję konstrukcyjną 'function napisy() { this.text = ''; }', to użycie 'var napis1 = new napisy();' stworzy nowy obiekt 'napis1', który będzie posiadał właściwość 'text'. Warto zwrócić uwagę, że 'napisy' musi być zdefiniowane jako funkcja konstrukcyjna, aby mogło być użyte w kontekście 'new'. Zrozumienie tego mechanizmu jest kluczowe w programowaniu obiektowym w JavaScript, gdzie klasy i obiekty odgrywają fundamentalną rolę w organizacji kodu. Aby lepiej zrozumieć działanie tego fragmentu, warto zapoznać się z dokumentacją dotyczącą obiektów i funkcji w JavaScript, co znajduje się w standardzie ECMAScript. Przykładowy kod ilustrujący tworzenie obiektu mógłby wyglądać tak: 'var napis1 = new napisy(); console.log(napis1.text);'.

Pytanie 10

Jaką wartość zobaczymy po wykonaniu poniższego kodu JavaScript?

<script>
document.write(Math.round(4.51)+Math.pow(2,3));
</script>
A. 14
B. 11
C. 12
D. 13
W przedstawionym kodzie JavaScript użyto dwóch metod wbudowanych obiektu Math Math.round i Math.pow. Math.round zaokrągla wartość do najbliższej liczby całkowitej. W przypadku liczby 4.51 zostanie to zaokrąglone do 5 ponieważ 0.51 jest bliżej 1 niż 0. Math.pow wykonuje potęgowanie czyli podnosi liczbę do określonej potęgi. W przypadku Math.pow(2 3) mamy do czynienia z potęgowaniem 2 do potęgi 3 co jest równe 8 ponieważ 2 * 2 * 2 = 8. Następnie te dwie wartości są dodawane do siebie co daje 5 + 8 = 13. Wartość 13 jest wyświetlana na stronie za pomocą document.write co jest prostym sposobem na wypisywanie wyników w kontekście przeglądarki. W praktyce jednak korzystanie z document.write jest odradzane na rzecz bardziej nowoczesnych rozwiązań jak manipulacja DOM czy używanie innerHTML. Dzięki tym metodom możemy skutecznie zarządzać i wyświetlać dane na stronach internetowych co jest kluczowe w nowoczesnym tworzeniu stron WWW. Zrozumienie działania takich funkcji wbudowanych pozwala na efektywne rozwiązywanie problemów związanych z obliczeniami w języku JavaScript co jest bardzo przydatne w pracy programisty.

Pytanie 11

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

A. typ_funkcji nazwa_funkcji(argumenty) {instrukcje;}
B. nazwa_funkcji(argumenty) {instrukcje;}
C. new nazwa_funkcji(argumenty) {instrukcje;}
D. function nazwa_funkcji(argumenty) {instrukcje;}
Definicja funkcji w języku JavaScript przy użyciu słowa kluczowego 'function' jest standardowym sposobem deklaracji funkcji. Poprawny zapis 'function nazwa_funkcji(argumenty) {instrukcje;}' jasno wskazuje, że tworzona jest nowa funkcja, której nazwa oraz argumenty są zdefiniowane. Przykładowo, można stworzyć funkcję dodającą dwie liczby: 'function dodaj(a, b) { return a + b; }'. Funkcje w JavaScript mogą być wywoływane w dowolnym miejscu w kodzie, co czyni je niezwykle elastycznymi. Dodatkowo, dzięki temu, że JavaScript obsługuje funkcje jako obiekty pierwszej klasy, można je przekazywać jako argumenty do innych funkcji, przypisywać do zmiennych oraz zwracać z innych funkcji. Warto również zauważyć, że w kontekście dobrych praktyk, używanie funkcji z jasnymi nazwami i dobrze zdefiniowanymi argumentami zwiększa czytelność oraz utrzymanie kodu, co jest istotne w pracy zespołowej oraz przy rozwijaniu większych aplikacji.

Pytanie 12

W języku JavaScript zadeklarowano funkcję.
function absValue(f) {
    return Math.abs(f);
}

A. wypisać wartość bezwzględną z f
B. zwrócić wartość bezwzględną z f
C. zwrócić wartość przeciwną do f
D. wypisać wartość przeciwną do f
To niepoprawna odpowiedź. Funkcja absValue(f) w języku JavaScript została zapisana w taki sposób, że zwraca wartość bezwzględną przekazanego argumentu f, a nie jego wartość przeciwną ani nie wypisuje żadnego wyniku na ekran. Wewnątrz funkcji użyto polecenia return Math.abs(f);, które powoduje zwrócenie liczby zawsze nieujemnej. Metoda Math.abs() automatycznie sprawdza, czy podana liczba jest ujemna, i jeśli tak, zamienia ją na dodatnią, pozostawiając bez zmian liczby dodatnie. Opcja „wypisać wartość przeciwną do f” jest błędna, ponieważ funkcja nie używa instrukcji wypisującej (console.log()), a ponadto nie tworzy liczby przeciwnej (czyli o przeciwnym znaku). Podobnie niepoprawna jest opcja „zwrócić wartość przeciwną do f”, gdyż funkcja nie odwraca znaku liczby poprzez -f, tylko korzysta z wbudowanego mechanizmu obliczania wartości bezwzględnej. Również opcja „wypisać wartość bezwzględną z f” jest błędna, ponieważ działanie return nie powoduje wypisania wartości, lecz jej zwrócenie. Poprawna odpowiedź to „zwrócić wartość bezwzględną z f”. Właśnie to robi funkcja absValue(f) — zwraca wynik obliczeń, który może być dalej użyty w programie, np. do porównań, analiz danych lub obliczeń matematycznych. Rozumienie różnicy między „zwracaniem” a „wypisywaniem” jest bardzo istotne w programowaniu, ponieważ pozwala odróżnić operacje wewnętrzne w kodzie od tych, które mają wpływ na to, co użytkownik zobaczy na ekranie.

Pytanie 13

Jaką wartość zwróci poniższa instrukcja w JavaScript?

document.write(5==='5');
A. true
B. false
C. 1
D. 0
Instrukcja JavaScript użyta w tym przykładzie wykorzystuje operator potrójnego równości === który jest używany do porównywania wartości i typu danych. W przeciwieństwie do podwójnego równości == który porównuje tylko wartości potrójne równości wymaga aby zarówno typ jak i wartość były identyczne. W przedstawionym kodzie porównywana jest liczba 5 z ciągiem znaków '5'. Chociaż mają tę samą widoczną wartość ich typy danych są różne. Liczba jest typem numericznym podczas gdy '5' jest ciągiem znaków. Ponieważ typy danych nie są identyczne operator === zwróci wartość false. Operator potrójnego równości jest preferowany w dobrych praktykach branżowych JavaScript ponieważ eliminuje problemy wynikające z niejawnej konwersji typów co może prowadzić do nieoczekiwanych wyników. Użycie potrójnego równości poprawia czytelność kodu i jego niezawodność ponieważ zmusza programistę do świadomego zwracania uwagi na typy danych co jest szczególnie ważne w złożonych aplikacjach gdzie takie błędy mogą skutkować trudnymi do wykrycia problemami. Praktyka ta jest zalecana w celu utrzymania wysokiej jakości i przewidywalności działania aplikacji webowych.

Pytanie 14

Aby wykorzystać skrypt znajdujący się w pliku przyklad.js, konieczne jest połączenie go ze stroną przy użyciu kodu

A. <script link="przyklad.js"></script>
B. <script>przyklad.js</script>
C. <link rel="script" href="przyklad.js">
D. <script src="przyklad.js"></script>
Odpowiedź <script src="przyklad.js"></script> jest naprawdę na miejscu, bo użycie atrybutu 'src' w znaczniku <script> to taki standardowy sposób dołączania zewnętrznych skryptów JS do HTML-a. Atrybut 'src' mówi przeglądarce, gdzie znaleźć ten skrypt, więc może go załadować i wykonać. Dzięki temu, skrypt z pliku 'przyklad.js' wchodzi w interakcję ze stroną i może dodawać różne funkcje, jak na przykład reagowanie na działania użytkownika czy manipulowanie elementami na stronie. Pamiętaj, że najlepiej dołączać skrypty na końcu dokumentu, zaraz przed </body>, bo wtedy cała zawartość strony ładuje się najpierw. Warto też pomyśleć o atrybucie 'defer' lub 'async', żeby lepiej zoptymalizować ładowanie skryptów i nie blokować renderowania strony. Na przykład, <script src="przyklad.js" defer></script> pozwoli na asynchroniczne ładowanie, co z pewnością poprawia wydajność.

Pytanie 15

Sprawdzanie poprawności wypełnienia formularza, które ma przebiegać po stronie klienta, powinno być wykonane w języku

A. PHP
B. JavaScript
C. CSS
D. Ruby on Rails
Weryfikacja kompletności formularza po stronie przeglądarki jest kluczowym elementem interakcji użytkownika z aplikacją internetową. Do realizacji tego zadania najczęściej wykorzystuje się język JavaScript, który umożliwia dynamiczne manipulowanie strukturą HTML oraz reagowanie na zdarzenia użytkownika, takie jak kliknięcia czy wprowadzanie danych. Przykładem może być zdefiniowanie funkcji, która sprawdza, czy wszystkie wymagane pola formularza zostały uzupełnione przed jego wysłaniem. W tym celu można użyć zdarzenia 'submit', aby przechwycić moment wysłania formularza i przeprowadzić odpowiednie sprawdzenie. Standardy, takie jak W3C, zalecają stosowanie walidacji po stronie klienta, jako sposób na poprawę doświadczeń użytkownika i zmniejszenie obciążenia serwera. Przykład kodu JavaScript do walidacji formularza mógłby wyglądać następująco: function validateForm() { var x = document.forms["myForm"]["fname"].value; if (x == "") { alert("Imię musi być wypełnione"); return false; } }. Takie podejście nie tylko zwiększa użyteczność aplikacji, ale również pozwala na wczesne wykrywanie błędów, co może znacznie poprawić jakość danych przesyłanych do serwera.

Pytanie 16

DOM oferuje funkcje i atrybuty, które w JavaScript umożliwiają

A. wykonywanie operacji na zmiennych przechowujących wartości liczbowe
B. pobieranie i modyfikowanie elementów strony załadowanej w przeglądarce
C. manipulowanie łańcuchami zadeklarowanymi w kodzie
D. przesyłanie danych formularza bezpośrednio do bazy danych
DOM (Document Object Model) to interfejs programistyczny, który umożliwia manipulację strukturą dokumentu HTML lub XML za pomocą języka JavaScript. Odpowiedź dotycząca pobierania i modyfikowania elementów strony jest poprawna, ponieważ DOM dostarcza zestaw metod, takich jak getElementById, getElementsByClassName, czy querySelector, które pozwalają programistom na selekcję, edytowanie, dodawanie lub usuwanie elementów w drzewie DOM. Na przykład, używając metody document.getElementById('example'), możemy uzyskać dostęp do konkretnego elementu na stronie oraz zmienić jego zawartość, styl czy atrybuty. Takie manipulacje są kluczowe w tworzeniu interaktywnych aplikacji webowych, które reagują na działania użytkownika, co jest zgodne z najlepszymi praktykami w zakresie programowania front-end. Zmiany w DOM mogą także wpływać na wydajność strony, dlatego stosowanie odpowiednich metod i technik, takich jak unikanie zbyt częstych reflowów czy repaints, jest niezbędne dla optymalizacji. Warto również zaznaczyć, że stosowanie bibliotek, takich jak jQuery, może uprościć proces manipulacji DOM.

Pytanie 17

W JavaScript zapis a++; można przedstawić w inny sposób jako

A. 1 += a
B. a = a & 1
C. a << 1
D. a = a + 1
Odpowiedź 'a = a + 1;' jest poprawna, ponieważ dokładnie odzwierciedla działanie operatora inkrementacji 'a++;'. Operator '++' w JavaScript zwiększa wartość zmiennej o 1. W przypadku użycia 'a = a + 1;', operacja ta jest explicite zapisana jako przypisanie aktualnej wartości 'a' powiększonej o 1. Taki zapis jest często stosowany w sytuacjach, gdy chcemy lepiej zrozumieć, co się dzieje w kodzie, szczególnie dla początkujących programistów. Przykładowo, jeśli mamy zmienną, która przechowuje liczbę, możemy użyć 'a = a + 1;' w pętli, aby zliczać ilość iteracji. Warto zauważyć, że użycie operatora '++' jest bardziej zwięzłe i często preferowane w profesjonalnym kodzie, jednak zrozumienie, jak działa to na poziomie podstawowym, jest kluczowe. Dobrą praktyką jest dbałość o przejrzystość kodu, zwłaszcza w zespołach, gdzie różne osoby mogą pracować nad tym samym projektem.

Pytanie 18

Jaką instrukcję w JavaScript można uznać za równoważną pod względem funkcjonalności do zaprezentowanej?

Ilustracja do pytania
A. Kod 2
B. Kod 4
C. Kod 3
D. Kod 1
Kod 2 jest poprawny, ponieważ struktura instrukcji warunkowych w JavaScript jest równoważna z wyrażeniem switch przedstawionym w pytaniu. Instrukcja switch pozwala na wykonanie jednej z wielu gałęzi kodu w zależności od wartości wyrażenia, w tym przypadku zmiennej 'dzialanie'. Każdy 'case' w switch odpowiada warunkowi 'if' w strukturze if-else if. W Kodzie 2 każda operacja matematyczna, jak dodawanie czy odejmowanie, jest przypisana do odpowiedniego warunku dzięki zastosowaniu if-else if, co dokładnie odwzorowuje zachowanie switch. Jest to zgodne z dobrą praktyką programistyczną, gdzie wybór między switch a if-else if zależy od przejrzystości i liczby porównywanych przypadków. Kod 2 jest bardziej czytelny, co jest ważne w utrzymywaniu i rozwijaniu kodu produkcyjnego. Praktyczne zastosowanie takiej struktury można znaleźć w budowaniu aplikacji, gdzie decyzje podejmowane są na podstawie wielu możliwych wartości zmiennej.

Pytanie 19

W skrypcie JavaScript zmienne mogą być definiowane

A. w chwili pierwszego użycia zmiennej
B. jedynie wtedy, gdy podamy typ zmiennej oraz jej nazwę
C. zawsze poprzedzone znakiem $ przed nazwą
D. wyłącznie na początku skryptu
W języku JavaScript zmienne mogą być zadeklarowane w momencie ich pierwszego użycia dzięki mechanizmowi hoisting. Oznacza to, że silnik JavaScript przenosi deklaracje zmiennych na początek ich zasięgu, co pozwala na ich użycie w kodzie przed ich faktycznym zadeklarowaniem. Przykładem może być sytuacja, gdy zmienną deklarujemy za pomocą słowa kluczowego 'let' lub 'const'. Chociaż sama deklaracja jest hoistowana, to inicjalizacja zmiennej pozostaje w miejscu, co oznacza, że nie można jej używać przed faktycznym przypisaniem wartości. Dobrą praktyką jest zawsze deklarowanie zmiennych przed ich użyciem, aby uniknąć niejasności i błędów, takich jak ReferenceError. Warto również zauważyć, że JavaScript pozwala na dynamiczne typowanie, więc nie trzeba określać typu zmiennej przy jej deklaracji, co zwiększa elastyczność i uproszcza kod.

Pytanie 20

Co oznacza zapis w obiekcie w języku JavaScript?

x = przedmiot.nazwa();
A. nazwa jest atrybutem klasy przedmiot
B. nazwa jest cechą obiektu przedmiot
C. zmienna x będzie przechowywać rezultat działania funkcji przedmiot
D. zmienna x będzie przechowywać wynik działania metody nazwa
W języku JavaScript wyrażenie przedmiot.nazwa() oznacza wywołanie metody nazwa na obiekcie przedmiot. Wynik tego wywołania jest przypisywany do zmiennej x. Metody są funkcjami zdefiniowanymi wewnątrz obiektu które mogą wykorzystywać jego dane. Przy wywołaniu metody używamy operatora kropki do dostępu do konkretnej funkcji w obiekcie. Taki zapis jest powszechnie stosowany w programowaniu obiektowym i pozwala na wykonywanie operacji zdefiniowanych w kontekście danego obiektu. Dobre praktyki zalecają aby nazewnictwo metod było opisowe co ułatwia rozumienie kodu i jego utrzymanie przez innych programistów. Przykładem może być obiekt samochód mający metodę uruchom która po wywołaniu realizuje logikę uruchomienia samochodu. Warto również zwrócić uwagę na aspekt asynchroniczności który w JavaScript ma duże znaczenie zwłaszcza przy operacjach sieciowych gdzie często stosuje się metody zwracające obietnice. Dzięki temu zapis x = przedmiot.nazwa() jest podstawowym przykładem zastosowania programowania obiektowego w praktyce

Pytanie 21

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

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

Pytanie 22

W kodzie JavaScript aby wywołać okno z polem do wprowadzania danych i przyciskami OK i ANULUJ, należy zastosować metodę

A. confirm();
B. prompt();
C. alert();
D. message();
Prawidłowa metoda to prompt(). W JavaScripcie właśnie prompt() służy do wyświetlenia okna dialogowego z polem tekstowym, w które użytkownik może coś wpisać, oraz z przyciskami OK i Anuluj. Funkcja zwraca napis (string) wpisany przez użytkownika albo null, jeśli użytkownik kliknie Anuluj lub zamknie okno. Typowe użycie wygląda tak: const imie = prompt("Podaj swoje imię:"); if (imie !== null) { console.log("Witaj, " + imie); } Z mojego doświadczenia prompt() jest fajne do szybkich testów, prostych przykładów na lekcji, czy małych zadań domowych, bo nie trzeba tworzyć formularza w HTML. Jednak w profesjonalnych aplikacjach webowych raczej się go unika, bo to okno blokuje działanie całej strony (tzw. modalne, synchroniczne okno dialogowe) i wygląda różnie w zależności od przeglądarki. Zgodnie z dobrymi praktykami UI/UX lepiej budować własne okna dialogowe w HTML/CSS/JS, które są spójne z wyglądem strony. Warto też wiedzieć, że prompt() zawsze zwraca tekst, więc jeśli potrzebujesz liczby, trzeba ją przekonwertować, np. Number(prompt("Podaj wiek:")) albo parseInt(). No i trzeba pamiętać o obsłudze sytuacji, gdy użytkownik kliknie Anuluj – wtedy dostajesz null i dobrze jest to sprawdzić, zanim zaczniesz coś liczyć. Podsumowując: jeśli w pytaniu jest mowa o oknie z polem do wprowadzania danych oraz przyciskami OK i ANULUJ – klasyczne okienko przeglądarki – to w JavaScripcie odpowiada za to właśnie metoda prompt().

Pytanie 23

Skrypt napisany w języku JavaScript wylicza cenę promocyjną dla swetrów w kolorach: zielonym i niebieskim (zmienna kolor) przy zakupach powyżej 200 zł (zmienna zakupy). Warunek do obliczeń powinien być sformułowany za pomocą wyrażenia logicznego?

A. zakupy > 200 && (kolor == 'zielony' || kolor == 'niebieski')
B. zakupy > 200 || kolor == 'zielony' || kolor == 'niebieski'
C. zakupy > 200 && kolor == 'zielony' && kolor == 'niebieski'
D. zakupy > 200 || (kolor == 'zielony' && kolor == 'niebieski')
W analizowanych odpowiedziach istnieje kilka kluczowych błędów logicznych, które prowadzą do niepoprawnych wniosków. W pierwszym przypadku, użycie operatora alternatywy (||) w połączeniu z warunkiem o wartości zakupów nie spełnia wymagań zadania, ponieważ sugeruje, że promocja jest dostępna niezależnie od koloru, co jest sprzeczne z intencją zadania. To błędne podejście prowadzi do wniosku, że każdy zakup powyżej 200 zł, bez względu na kolor, kwalifikuje się do promocji, co jest niepoprawne. Kolejny błąd występuje w drugim podejściu, gdzie zastosowano koniunkcję (&&) dla obu kolorów. Takie sformułowanie wymagałoby, aby sweter był jednocześnie zielony i niebieski, co jest logicznie niemożliwe. Taka konstrukcja nie tylko jest nielogiczna, ale i niepraktyczna, ponieważ nie spełnia podstawowych zasad logiki boolowskiej. Ostatnia niepoprawna odpowiedź wprowadza dodatkową złożoność bez potrzeby, łącząc warunek o wartościach zakupów z wymaganiem o kolorze za pomocą operatora alternatywy (||), co również skutkuje błędnym wnioskiem. Poprawne wyrażenie powinno jasno uwzględniać, że kolor swetra musi być jednym z dwóch dozwolonych wariantów oraz że musi istnieć minimalna wartość zakupów, co jest kluczowe dla prawidłowego obliczenia ceny promocyjnej.

Pytanie 24

W JavaScript poprawnie zdefiniowana zmienna to

A. imię2
B. imie2
C. imię%
D. #imie
Odpowiedź 'imie2' jest prawidłowa, ponieważ spełnia wszystkie zasady dotyczące nazewnictwa zmiennych w języku JavaScript. Zgodnie z tymi zasadami, nazwy zmiennych mogą zaczynać się od litery (a-z, A-Z), znaku podkreślenia (_) lub znaku dolara ($). Następnie, dozwolone są litery, cyfry (0-9), znaki podkreślenia oraz znaki dolara. Nazwa 'imie2' jest zgodna z tymi zasadami, ponieważ zaczyna się od litery, a następnie zawiera cyfrę, co jest akceptowalne. Przykładowo, dobra praktyka w programowaniu polega na nadawaniu zmiennym nazw związanych z ich przeznaczeniem, na przykład 'userAge' dla wieku użytkownika. Warto pamiętać, że unikanie użycia polskich znaków oraz specjalnych symboli w nazwach zmiennych, takich jak znaki procentu czy hashtagi, zwiększa czytelność i przenośność kodu, szczególnie w międzynarodowych projektach. Dobra praktyka sugeruje również używanie camelCase, co ułatwia identyfikację zmiennych w większych projektach.

Pytanie 25

Który z poniższych sposobów wyświetlania tekstu nie jest określony w języku JavaScript?

A. Metoda document.write()
B. Funkcja window.alert()
C. Funkcja MessageBox()
D. Właściwość innerHTML
Funkcja MessageBox() nie istnieje w JavaScript, więc to nie jest dobła odpowiedź, jeśli chodzi o wyświetlanie tekstu. W JavaScript mamy kilka fajnych metod, które można wykorzystać do pokazywania danych na stronie. Na przykład, możesz użyć innerHTML, żeby zmieniać zawartość HTML elementów. Możesz to zrobić tak: document.getElementById('elementId').innerHTML = 'Nowa zawartość';. Inna opcja to window.alert(), która wyświetla okno z komunikatem dla użytkownika, co czasem bywa przydatne. Z kolei, jeśli chcesz coś wypisać na stronie w momencie, gdy się ładuje, to możesz użyć document.write('Hello, World!');, choć to nie jest najlepszy pomysł w nowoczesnym kodowaniu. Warto pamiętać, że wszystkie te metody są częścią ECMAScript i naprawdę często się je stosuje w praktyce programowania.

Pytanie 26

Jakie zadanie wykonuje funkcja napisana w JavaScript?

function fun1(a,b)
{
    if ( a % 2 != 0 ) a++;
    for(n=a; n<=b; n+=2)
        document.write(n);
}
A. sprawdzenie, czy liczba a jest liczbą nieparzystą; jeśli tak, to jej wypisanie
B. wypisanie wszystkich liczb w zakresie od a do b
C. wypisanie liczb parzystych w przedziale od a do b
D. zwrócenie parzystych wartości liczb od a do b
Analiza niepoprawnych odpowiedzi wymaga zrozumienia, dlaczego poszczególne opcje nie pasują do działania funkcji fun1. W pierwszym przypadku, opcja dotycząca sprawdzania, czy liczba a jest nieparzysta i jej wypisywania, nie jest zgodna z logiką funkcji. Chociaż funkcja sprawdza, czy a jest nieparzysta, to nie wypisuje jej, lecz zmienia ją na parzystą, co wskazuje, że jej celem nie jest wypisywanie liczby a, ale przygotowanie jej do dalszej iteracji. Wypisanie wszystkich liczb z przedziału od a do b również nie jest prawidłowe, ponieważ funkcja nie iteruje po wszystkich liczbach, lecz wyłącznie po liczbach parzystych. Warto zauważyć, że funkcja pomija wszystkie liczby nieparzyste, co wyklucza tę opcję. Kolejna możliwa odpowiedź sugeruje zwracanie wartości parzystych liczb od a do b, jednak funkcja nie wykorzystuje żadnej procedury zwracania wartości, a jej konstrukcja wskazuje na bezpośrednie wypisywanie wyników, co wyklucza tę możliwość. Typowy błąd myślowy to niepoprawne rozumienie działania pętli for oraz operacji wypisywania danych w kontekście przeglądarki internetowej, co jest istotne z punktu widzenia dynamicznych aplikacji webowych. Zrozumienie, jak działa operator modulo i jego rola w wyznaczaniu parzystości liczb, jest kluczowe dla poprawnego interpretowania takich fragmentów kodu. Wskazane jest również, aby programiści byli świadomi różnicy między wypisywaniem a zwracaniem wyników, co często prowadzi do nieporozumień w kontekście funkcji i metod w JavaScript i innych językach programowania.

Pytanie 27

Które stwierdzenie na temat funkcji fun1 zapisanej w języku JavaScript jest prawdziwe?

var x = fun1(3, 24, "Mnożymy");

function fun1(a, b, c) {
    return a * b;
}
A. Ma trzy parametry wejściowe, w tym jeden typu napisowego, i zwraca wartość numeryczną.
B. Przyjmuje trzy parametry, lecz nie zwraca wartości.
C. Ma dwa parametry liczbowe i zwraca wartość typu napisowego.
D. Zwraca dwie wartości przechowywane w zmiennych a i b.
Niestety, Twoja odpowiedź jest niepoprawna, ale nie zmartw się - przeanalizujmy to razem. Funkcja w JavaScript nie musi zwracać wartości, ale w przypadku funkcji fun1, zwraca ona wynik mnożenia dwóch pierwszych parametrów, co jest wartością numeryczną. Istotne jest zrozumienie, że funkcje w JavaScript mogą przyjmować dowolną liczbę argumentów, a także różne typy argumentów. Co więcej, zamiast zwracać wiele wartości, funkcje w JavaScript zwykle zwracają jedną wartość lub obiekt zawierający wiele wartości. Z tego powodu, stwierdzenie, że fun1 zwraca dwie wartości przechowywane w zmiennych a i b, jest błędne. Podobnie, twierdzenie, że fun1 nie zwraca żadnej wartości, też jest nieprawdziwe. Wybór odpowiedzi sugerującej, że fun1 ma dwa parametry liczbowe i zwraca wartość typu napisowego, jest również niewłaściwy, ponieważ fun1 przyjmuje trzy parametry, w tym jeden typu napisowego, i zwraca wartość numeryczną. Pamiętaj, że zrozumienie struktury i działania funkcji jest kluczowe dla efektywnego kodowania w JavaScript.

Pytanie 28

W ramce przedstawiono kod JavaScript z błędem logicznym. Program powinien wypisywać informację, czy liczby są sobie równe, czy nie, lecz nie wykonuje tego. Wskaż odpowiedź, która dotyczy błędu.

var x=5;
var y=3;
if(x=y) document.getElementById("demo").innerHTML='zmienne są równe';
else    document.getElementById("demo").innerHTML='zmienne się różnią';
A. Zawartość sekcji if oraz else powinna być zamieniona miejscami
B. W klauzuli if użyto przypisania zamiast porównania
C. Brak średnika przed klauzulą else
D. Zmienne zostały zadeklarowane w niewłaściwy sposób
W analizowanym kodzie JavaScript występuje błąd związany z użyciem operatora przypisania zamiast operatora porównania w klauzuli if. W języku JavaScript do porównania dwóch wartości używa się operatora '===' lub '=='. Operator '=' to operator przypisania, który przypisuje wartość z prawej strony do zmiennej po lewej stronie. W kontekście warunków if, należy użyć operatora porównania, aby ocenić, czy dwie zmienne są równe. W poprawnej wersji kodu, linia if x = y powinna być zmieniona na if (x === y). Dodatkowo, warto pamiętać o umieszczeniu wartości porównawanych w nawiasach, co zwiększa czytelność i poprawność kodu. Przykład prawidłowego kodu to: var x = 5; var y = 3; if (x === y) { document.getElementById('demo').innerHTML = 'zmienne są równe'; } else { document.getElementById('demo').innerHTML = 'zmienne się różnią'; }. Taki zapis zapewnia, że program poprawnie zidentyfikuje różnicę między zmiennymi x i y i odpowiednio wyświetli komunikat.

Pytanie 29

W języku JavaScript, aby zmienić wartość atrybutu elementu HTML, po uzyskaniu obiektu za pomocą metody getElementById, należy zastosować

A. pole innerHTML
B. pole attribute i podać nazwę atrybutu
C. metodę setAttribute
D. metodę getAttribute
Metoda setAttribute w JavaScript jest kluczowym narzędziem do modyfikacji atrybutów elementów DOM. Po uzyskaniu referencji do elementu za pomocą metody getElementById, możemy wykorzystać setAttribute do ustawienia lub zmiany wartości dowolnego atrybutu HTML. Na przykład, aby zmienić atrybut 'src' obrazka, można użyć następującego kodu: const img = document.getElementById('myImage'); img.setAttribute('src', 'newImage.png');. Takie podejście jest zgodne z najlepszymi praktykami, zapewniając elastyczność i kontrolę nad elementami DOM. Metoda ta przyjmuje dwa argumenty: nazwę atrybutu oraz jego nową wartość. Warto pamiętać, że setAttribute działa nie tylko z atrybutami standardowymi, ale również z niestandardowymi i danymi atrybutami, co pozwala na dynamiczne rozszerzanie możliwości HTML. Dobre praktyki zalecają również użycie setAttribute, gdy chcemy zapewnić pełną zgodność z HTML5 i zachować semantykę dokumentu, co jest kluczowe dla dostępności i SEO.

Pytanie 30

O obiekcie zdefiniowanym w języku JavaScript można stwierdzić, że zawiera

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: functon() { … }
}
A. dwie metody oraz jedną właściwość
B. trzy właściwości
C. dwie właściwości oraz jedną metodę
D. trzy metody
Odpowiedź, że obiekt w JavaScript ma dwie właściwości i jedną metodę, jest poprawna. Przykład obiektu `obiekt1` zawiera dwie właściwości: `x` i `y`, które są liczbowymi wartościami. Dodatkowo, metoda `wsp` jest poprawnie zdefiniowana jako funkcja, co czyni ją metodą obiektu. W praktyce obiekty w JavaScript służą do grupowania danych i funkcji, co jest przydatne w programowaniu obiektowym. Wprowadzenie do obiektów i ich właściwości oraz metod jest kluczowym elementem zrozumienia, jak JavaScript operuje na danych. Standardowe praktyki zalecają, aby metody były używane do definiowania zachowań obiektów, co jest zgodne z zasadami programowania zorientowanego obiektowo, gdzie obiekt jest zbiorem właściwości i metod, które operują na tych właściwościach. W kontekście dbałości o czystość kodu, warto zwrócić uwagę na stosowanie dobrej nazewnictwa dla metod i właściwości, co zwiększa czytelność i zrozumienie kodu. Przykładowo, jeśli `wsp` miała by reprezentować funkcję obliczającą współrzędne, dobrze by było, aby jej nazwa była bardziej opisowa, na przykład `obliczWspolrzedne`.

Pytanie 31

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

Tablica['technik'] = 'informatyk';
A. statycznej.
B. numerycznej.
C. wielowymiarowej.
D. asocjacyjnej.
Poprawna odpowiedź to 'asocjacyjna'. W języku JavaScript, tablice asocjacyjne są strukturami danych, które używają kluczy zamiast indeksów numerycznych. Kluczem może być dowolny ciąg znaków, co oznacza, że elementy tablicy są identyfikowane za pomocą unikalnych kluczy. W praktyce, gdy używamy tablicy asocjacyjnej, przypisujemy wartość do określonego klucza, jak w przedstawionym przykładzie, gdzie wartość 'informatyk' przypisana jest do klucza 'technik'. Jest to często stosowane w praktyce, ponieważ pozwala na bardziej intuicyjne i zrozumiałe indeksowanie danych. Ważne jest jednak, aby pamiętać, że mimo iż tablice asocjacyjne są bardzo użyteczne, nie są one oficjalnie uznawane przez specyfikację języka JavaScript, co oznacza, że różne środowiska mogą je obsługiwać w różny sposób.

Pytanie 32

Co można powiedzieć o wyświetlonym przez witrynę tekście "test kolorów"?

<p id="p1" style="color:blue;">test kolorów</p>
<button type="button"
  onclick="document.getElementById('p1').style.color='red'">
  test</button>
A. Po wciśnięciu przycisku test kolor tekstu jest niebieski.
B. Wciskanie przycisku test sprawia, że kolor tekstu jest na przemian niebieski i czerwony.
C. Po wciśnięciu przycisku test kolor tekstu jest czerwony.
D. Zaraz po załadowaniu witryny kolor tekstu jest czerwony.
Zauważyłem, że w kodzie HTML kolor tekstu na początku jest niebieski. Jest to ustawione w atrybucie style dla elementu o id='p1'. Po kliknięciu w przycisk, uruchamia się funkcja JavaScript, która zmienia kolor na czerwony. Ta funkcja jest przypisana w atrybucie onclick. Takie podejście to świetny sposób na interakcję użytkownika z witryną, korzystając ze skryptów JavaScript. Myślę, że to bardzo dobry przykład, który pokazuje, jak można robić interaktywne elementy na stronach. Wiedza na ten temat może pomóc lepiej zrozumieć, jak działają strony internetowe i co można zrobić z JavaScriptem.

Pytanie 33

Kod umieszczony w ramce spowoduje wyświetlenie liczb

Ilustracja do pytania
A. 1 3 5 7 9
B. 2 4 6 8 10
C. 1 2 3 4 5 6 7 8 9 10
D. 2 4 6 8
Analizując błędne odpowiedzi można zauważyć że nie uwzględniają one poprawnego działania instrukcji continue w kodzie PHP. Ta instrukcja pomija pozostałe kroki bieżącej iteracji pętli jeśli warunek jest spełniony. Pierwsza odpowiedź 2 4 6 8 nie uwzględnia liczby 10 która także spełnia warunek parzystości i powinna być wypisana co jest błędne w kontekście działania pętli do wartości 10 włącznie. Druga propozycja 1 3 5 7 9 jest wynikiem niepoprawnego zrozumienia działania operatora modułu i instrukcji continue które eliminują liczby nieparzyste z wyjścia. Wyświetlenie tylko nieparzystych liczb oznaczałoby brak zastosowania instrukcji continue lub jej odwrotność co jest sprzeczne z kodem. Ostatnia propozycja 1 2 3 4 5 6 7 8 9 10 zakłada że wszystkie liczby od 1 do 10 są wypisywane co ignoruje kluczowy wpływ instrukcji continue na przebieg pętli. Taki wynik mógłby wskazywać na brak warunku eliminującego liczby nieparzyste co jest błędne w kontekście kodu. Typowym błędem jest tu niepoprawne rozumienie działania instrukcji sterujących jak continue które pełnią kluczową rolę w przepływie sterowania w pętlach programistycznych i powinny być zawsze dokładnie analizowane aby uniknąć błędnych wniosków i nieoczekiwanych wyników w programach. Operator modulo to również istotny element w zrozumieniu działania kodu służący do łatwego sprawdzania podzielności i warunków logicznych co jest powszechnie stosowane w wielu językach programowania do optymalizacji i filtrowania danych. Kod ilustruje również jak za pomocą prostych warunków można efektywnie zarządzać dużymi zbiorami danych w aplikacjach co jest kluczowe w optymalizacji algorytmów i poprawie wydajności systemów informatycznych.

Pytanie 34

Po wykonaniu instrukcji języka JavaScript  x = Math.ceil(2.4); wartość zmiennej x będzie wynosić

A. 3
B. 2
C. 4
D. 8
W tym przykładzie kluczowe jest zrozumienie, co dokładnie robi funkcja Math.ceil() w JavaScript. Ta funkcja zawsze zaokrągla liczbę w górę do najbliższej liczby całkowitej, i to niezależnie od tego, jak mała jest część ułamkowa. Dla wartości 2.4 najbliższa liczba całkowita „w górę” to 3, więc po wykonaniu instrukcji x = Math.ceil(2.4); zmienna x przyjmie wartość 3. Nie interesuje nas tu klasyczne zaokrąglanie matematyczne do „najbliższej” liczby, tylko zawsze w stronę dodatniej nieskończoności. W standardzie ECMAScript Math.ceil() jest jedną z podstawowych funkcji do pracy z liczbami, obok Math.floor() (zaokrąglenie w dół) i Math.round() (zaokrąglenie do najbliższej liczby całkowitej). Dla porównania: Math.floor(2.4) da 2, Math.round(2.4) też da 2, a tylko Math.ceil(2.4) zwróci 3. W praktyce webowej takie funkcje są często używane np. przy dzieleniu elementów na strony (paginacja), liczeniu ilości stron w wynikach wyszukiwania, obliczaniu liczby wierszy w siatce (grid), czy przy przeliczaniu miejsc w koszyku, kiedy musisz zawsze „doliczyć” pełną jednostkę. Moim zdaniem warto od razu wyrobić sobie nawyk, żeby przy liczbach zmiennoprzecinkowych w JavaScript pamiętać o różnicach między ceil, floor i round, bo to są podstawowe narzędzia przy każdym kalkulatorze, module cenowym, przeliczaniu czasu trwania, dzieleniu zadań na porcje itd. Dobra praktyka jest też taka, żeby zawsze jasno nazywać zmienne, np. totalPages = Math.ceil(itemsCount / itemsPerPage); – od razu widać, że chodzi o zaokrąglenie w górę. Podsumowując: poprawna odpowiedź to 3, bo Math.ceil() zawsze przesuwa wynik do najbliższej większej lub równej liczby całkowitej. Dla 2.4 jest to właśnie 3.

Pytanie 35

Kod JavaScript uruchomiony w wyniku kliknięcia przycisku ma na celu <img id="i1" src="obraz1.gif"> <button onclick="document.getElementById('i1').src='obraz2.gif'"> test</button>

A. ukryć obraz2.gif
B. zamienić obraz1.gif na obraz2.gif
C. zmienić styl obrazu o id równym i1
D. wyświetlić obraz2.gif obok obraz1.gif
Odpowiedź 'zamienić obraz1.gif na obraz2.gif' jest poprawna, ponieważ kod JavaScript w przycisku jest odpowiedzialny za zmianę źródła obrazu. W momencie kliknięcia przycisku, funkcja `document.getElementById('i1').src='obraz2.gif'` przypisuje nowe źródło do elementu o identyfikatorze 'i1', co efektywnie powoduje wyświetlenie obraz2.gif zamiast obraz1.gif. Tego typu manipulacje DOM są powszechnie stosowane w interaktywnych aplikacjach webowych, gdzie użytkownik wchodzi w interakcję z różnymi elementami. Przykładem zastosowania tej techniki może być tworzenie galerii zdjęć, gdzie użytkownik klika na miniaturkę, a główny obrazek zostaje zmieniony na wybrane zdjęcie. Warto również zauważyć, że ta zmiana jest realizowana bez potrzeby reładowania strony, co znacząco poprawia doświadczenie użytkownika. Takie podejście jest zgodne z dobrymi praktykami w zakresie tworzenia dynamicznych interfejsów użytkownika.

Pytanie 36

DOM oferuje metody i właściwości, które w języku JavaScript umożliwiają

A. manipulowanie łańcuchami zadeklarowanymi w kodzie
B. przeprowadzanie operacji na zmiennych przechowujących liczby
C. przesyłanie danych formularza bezpośrednio do bazy danych
D. pobieranie oraz modyfikowanie elementów strony widocznej w przeglądarce
Zarówno wysyłanie danych formularza bezpośrednio do bazy danych, jak i manipulowanie zadeklarowanymi w kodzie łańcuchami są podejściami, które mogą być mylące w kontekście funkcji DOM. Przede wszystkim, DOM nie jest odpowiedzialny za interakcję z bazami danych. Wysyłanie danych formularza do bazy danych odbywa się zazwyczaj poprzez technologię backendową, taką jak PHP, Node.js czy Python, która przetwarza dane po stronie serwera. Użytkownik nie może bezpośrednio łączyć się z bazą danych z poziomu przeglądarki, co jest kluczowym aspektem bezpieczeństwa aplikacji internetowych. Ponadto, manipulacja łańcuchami w kontekście DOM również nie jest jego funkcją. DOM jest skoncentrowany na reprezentacji strukturalnej dokumentu, a nie na operacjach na danych. Takie operacje powinny być realizowane w kontekście zmiennych JavaScript, a nie za pośrednictwem DOM. Zrozumienie różnicy między tymi technologiami jest fundamentalne, aby uniknąć nieporozumień w programowaniu oraz zapewnić poprawne funkcjonowanie aplikacji. Typowe błędy myślowe obejmują mylenie pojęć związanych z front-endem i back-endem, co może prowadzić do błędnych wniosków na temat architektury aplikacji. Kluczowe jest, aby programiści zdawali sobie sprawę, że każdy komponent aplikacji ma swoje specyficzne zadania i odpowiedzialności.

Pytanie 37

Algorytm przedstawiony na rysunku można zapisać w języku JavaScript za pomocą instrukcji

A. for(i = 0; i > 10; i++)

B. var i = 0;
   while(i <= 10)
     i += 2;

C. var i = 0;
   do
     i++;
   while(i > 10);

D. var i = 0;
   do
     i = i + 2;
   while(i < 10);
Ilustracja do pytania
A. C.
B. A.
C. D.
D. B.
Dobrze! Wybrałeś prawidłową odpowiedź B. Biorąc pod uwagę wykres przepływu, zmienna 'i' jest inicjalizowana wartością 0 i następnie w pętli zwiększana o 2, dopóki jej wartość nie przekroczy 10. Wprowadzona instrukcja w JavaScript (var i = 0; while(i <= 10) { i += 2; }) idealnie odzwierciedla proces przedstawiony na diagramie. Inicjalizacja zmiennej jest ważnym krokiem w programowaniu, który pozwala na użycie zmiennej w kodzie, a pętla 'while' jest często stosowana do wykonywania części kodu wielokrotnie do momentu, aż warunek przestanie być spełniony. W tym przypadku, warunkiem jest 'i' mniejsze lub równe 10, a kod wewnątrz pętli zwiększa wartość 'i' o 2 za każdym razem, gdy jest wykonywany. Jest to typowy przykład użycia pętli i operatorów w języku JavaScript.

Pytanie 38

W języku JavaScript, aby w jednym poleceniu zweryfikować, czy dany ciąg tekstowy zawiera inny ciąg, można zastosować metodę

A. valueOf()
B. repeat()
C. substr()
D. includes()
Metoda includes() w JavaScript służy do sprawdzenia, czy dany ciąg znaków zawiera określony podciąg. Jest to niezwykle przydatne narzędzie, które pozwala na szybkie weryfikowanie zawartości zmiennych tekstowych. Przykład zastosowania to: let str = 'JavaScript jest świetny'; console.log(str.includes('świe')); // true. Warto zwrócić uwagę, że includes() jest metodą case-sensitive, co oznacza, że wielkość liter ma znaczenie w procesie wyszukiwania. Dobrą praktyką jest korzystanie z tej metody w sytuacjach, gdzie chcemy szybko i efektywnie analizować tekst, na przykład podczas walidacji danych wejściowych w formularzach. Ponadto, jest ona zgodna z ES6, co sprawia, że jest szeroko wspierana w nowoczesnych przeglądarkach oraz środowiskach JavaScript. Zastąpienie starszych metod, takich jak indexOf(), które zwracałoby pozycję podciągu, co wymagałoby dodatkowych operacji logicznych do weryfikacji, czyni includes() bardziej eleganckim i przejrzystym rozwiązaniem.

Pytanie 39

Instrukcją równoważną funkcjonalnie do przedstawionej instrukcji JavaScript jest

for (i = 0; i < 100; i += 10)
  document.write(i + ' ');
Kod 1.
while (i < 10) {
  document.write(i + ' ');
  i += 10;
}
Kod 2.
while (i < 100)
  document.write(i + ' ');
Kod 3.
i = 0;
while (i < 100) {
  document.write(i + ' ');
  i += 10;
}
Kod 4.
i = 0;
while (i < 10) {
  document.write(i + ' ');
  i++;
}
A. Kod 4.
B. Kod 3.
C. Kod 1.
D. Kod 2.
Gratulacje! Wybrałeś poprawną odpowiedź, która jest Kodem 3. Pętla for prezentowana na obrazku inicjuje zmienną i na 0, a następnie sprawdza warunek i < 100, wykonuje instrukcje w pętli for i zwiększa i o 10 za każdą iteracją. To jest standardowe zachowanie dla pętli for w języku programowania JavaScript. Kod 3 jest równoważny funkcjonalnie z pętlą for, ponieważ również inicjuje zmienną i na 0, a następnie w pętli while sprawdza warunek (i < 100), wykonuje instrukcje w pętli i zwiększa i o 10 w każdej iteracji. Zrozumienie różnych rodzajów pętli i ich równoważności jest kluczowe dla skutecznego programowania, ponieważ pozwala na optymalizację kodu i poprawę jego czytelności. Dobrą praktyką jest zrozumienie, kiedy używać różnych typów pętli w zależności od specyficznych wymagań danego problemu programistycznego.

Pytanie 40

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

var str1 = "JavaScript";
var str2 = str1.substring(2,6);
A. vaSc
B. avaS
C. nvaScr
D. vaScri
Wykorzystując metodę substring w JavaScript możemy wyodrębnić fragmenty łańcucha znaków bazując na indeksach początkowym i końcowym. Indeksowanie w JavaScript zaczyna się od zera co oznacza że pierwszy znak ma indeks 0 drugi 1 i tak dalej. W przypadku zmiennej str1 przechowującej łańcuch JavaScript wywołanie str1.substring(2 6) zwraca fragment zaczynający się od znaku o indeksie 2 do znaku o indeksie 5 włącznie. Oznacza to że metoda wybiera znaki od trzeciego do szóstego nie wliczając znaku o indeksie 6. W praktyce oznacza to że z napisu JavaScript wybierane są znaki aScr co tworzy łańcuch vaSc. Zrozumienie działania metody substring jest kluczowe przy pracy z łańcuchami znaków w JavaScript. Jest to standardowa metoda używana powszechnie do manipulacji tekstem co ma zastosowanie w wielu dziedzinach programowania frontendowego i backendowego. Ważne jest aby pamiętać o zeroindeksowaniu co pozwala uniknąć typowych błędów związanych z nieprawidłowym określeniem zakresu znaków.