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: 18 kwietnia 2026 12:48
  • Data zakończenia: 18 kwietnia 2026 13:19

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Jakie metody są związane z predefiniowanym obiektem Date w języku JavaScript?

A. concat() oraz pop()
B. getMonth() oraz getDay()
C. row()
D. fromCodePoint()
W języku JavaScript obiekt Date jest predefiniowanym obiektem, który umożliwia operacje związane z datami i czasem. Metody getMonth() oraz getDay() są kluczowymi funkcjami, które pozwalają na uzyskanie informacji o dacie. Metoda getMonth() zwraca miesiąc danej daty, przy czym wartości są indeksowane od 0 (styczeń) do 11 (grudzień). Z kolei metoda getDay() zwraca dzień tygodnia, gdzie wartości wynoszą od 0 (niedziela) do 6 (sobota). Przykładowe użycie tych metod może wyglądać następująco: var date = new Date('2023-10-05'); var month = date.getMonth(); var day = date.getDay(); console.log(month); // 9, console.log(day); // 4. Zgodnie z dokumentacją ECMAScript, obiekt Date i jego metody są standardem w JavaScript, co czyni je niezbędnymi w programowaniu webowym oraz aplikacjach. Dzięki tym metodom programiści mogą efektywnie zarządzać datami w różnych kontekstach, od planowania wydarzeń po analizy czasowe.

Pytanie 2

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia klienta z serwerem oraz umożliwia wymianę danych bez konieczności przeładowania całej strony WWW?

A. XML
B. VBScript
C. PHP
D. AJAX
AJAX, czyli Asynchronous JavaScript and XML, to technika umożliwiająca asynchroniczną komunikację pomiędzy klientem a serwerem bez potrzeby przeładowania całej strony WWW. Umożliwia to tworzenie bardziej responsywnych i interaktywnych aplikacji internetowych. Przykładem zastosowania AJAX może być formularz kontaktowy, który po wypełnieniu wysyła dane do serwera i otrzymuje odpowiedź bez odświeżania całej strony, co poprawia doświadczenie użytkownika. Technologia ta wykorzystuje XMLHttpRequest lub Fetch API do przesyłania i odbierania danych w formacie JSON, co jest bardziej efektywne niż tradycyjne metody. AJAX jest szeroko stosowany w aplikacjach typu single-page, gdzie szybkość i wydajność są kluczowe. Warto również zwrócić uwagę na bezpieczeństwo przy korzystaniu z AJAX, takie jak walidacja danych wejściowych oraz ochrona przed atakami XSS i CSRF, które są standardami w branży.

Pytanie 3

Aby właściwie skomentować podaną linię kodu w JavaScript, należy po znakach // wpisać opis

document.getElementById("napis").innerHTML = Date(); //
A. nieprawidłowe dane
B. wyświetlenie tekstu "Date()" w znaczniku o id = napis
C. zmiana stylu atrybutu innerHTML
D. wyświetlenie daty i czasu w znaczniku o id = napis
Kod JavaScript document.getElementById('napis').innerHTML=Date(); służy do dynamicznego umieszczania aktualnej daty i czasu w elemencie HTML o podanym id napis. Funkcja Date() bez argumentów zwraca obiekt reprezentujący bieżącą datę i czas w formie czytelnej dla człowieka. Użycie innerHTML pozwala na modyfikację zawartości HTML elementu, co jest wykorzystywane w wielu aplikacjach internetowych do dynamicznej aktualizacji wyświetlanych danych. Przykładem praktycznego zastosowania może być wyświetlanie aktualnego czasu na stronie głównej lub w aplikacjach pogodowych. Zgodnie z dobrymi praktykami, należy jednak pamiętać, że innerHTML zastępuje całą zawartość wewnętrzną elementu, co może prowadzić do utraty danych, jeśli nie jest używane ostrożnie. Ważne jest również, aby pamiętać o zasadach bezpieczeństwa dotyczących manipulacji DOM, aby unikać luk umożliwiających ataki XSS. Dlatego też warto stosować się do zasady minimalizmu zmian w DOM oraz zawsze weryfikować przetwarzane dane.

Pytanie 4

Deklarując var x="true"; w języku JavaScript, jakiego typu zmienną się tworzy?

A. nieokreślonym (undefined)
B. string (ciąg znaków)
C. liczbowym
D. logicznym
W kontekście deklaracji var x="true"; niepoprawne odpowiedzi opierają się na nieporozumieniu dotyczącym typów danych w JavaScript. Zmienna logiczna, która jest jednym z typów boolean, przyjmuje jedynie dwie wartości: true lub false. Wartość "true" nie jest interpretowana jako wartość logiczna, ale jako tekst, co sprawia, że uznawanie jej za zmienną logiczną jest błędne. W JavaScript nie możemy przypisać stringa do typu boolean i oczekiwać, że uzyskamy wynik logiczny; w tej sytuacji wynik będzie zawsze tekstem. Kolejną niepoprawną odpowiedzią jest uznanie zmiennej za liczbową. Typ liczbowy w JavaScript odnosi się do wartości numerycznych, zarówno całkowitych jak i zmiennoprzecinkowych. Wartość "true" nie może być interpretowana jako liczba, ponieważ jest to ciąg znaków. Typ liczbowy wymaga, aby wartość była zapisana w formacie numerycznym, co w przypadku "true" nie ma miejsca. Ostatnią niepoprawną odpowiedzią jest stwierdzenie, że zmienna ma typ nieokreślony (undefined). W JavaScript typ undefined oznacza, że zmienna została zadeklarowana, ale nie przypisano jej żadnej wartości. W przypadku var x="true"; zmienna została zadeklarowana i przypisano jej wartość, więc nie można jej uznać za undefined. Dlatego wszystkie trzy niepoprawne odpowiedzi są wynikiem nieprawidłowego rozumienia typów danych oraz ich interpretacji w JavaScript.

Pytanie 5

W JavaScript zdarzenie onKeydown zostanie wywołane, gdy klawisz

A. klawiatury został naciśnięty
B. klawiatury został zwolniony
C. myszki został naciśnięty
D. myszki został zwolniony
Zdarzenie onKeydown w JavaScript jest wywoływane, gdy użytkownik naciśnie klawisz na klawiaturze. To fundamentalne zdarzenie jest często wykorzystywane w aplikacjach webowych do obsługi interakcji użytkowników, takich jak wprowadzanie danych czy nawigacja po formularzach. W momencie naciśnięcia klawisza, przeglądarka emituje to zdarzenie, co pozwala programistom na reagowanie na konkretne akcje. Na przykład, jeśli chcemy stworzyć prostą grę opartą na ruchu postaci, możemy wykorzystać onKeydown do wykrywania klawiszy strzałek i poruszania postacią w odpowiednich kierunkach. Warto również zauważyć, że onKeydown różni się od onKeyup, które jest wywoływane, gdy klawisz jest zwolniony, co ma znaczenie w przypadku obsługi sekwencji klawiszy oraz klawiszy modyfikujących, takich jak Shift czy Ctrl. Zrozumienie tych różnic jest kluczowe dla tworzenia responsywnych i interaktywnych aplikacji webowych, zgodnych z najlepszymi praktykami programowania.

Pytanie 6

Aby zrealizować podane czynności w JavaScript, należy w znaczniku <script> umieścić poniższy kod

  1. Wyświetlić okno do wpisania wartości z poleceniem "Podaj kwalifikacje: ", następnie po zatwierdzeniu
  2. Umieścić napis na stronie internetowej, gdzie w miejscu kropek znajduje się wartość pobrana z okna "Kwalifikacja: ..."
A. A << prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
B. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: ".A)
C. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
D. A = alert("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
Odpowiedź 1 jest prawidłowa, ponieważ w JavaScript funkcja prompt() służy do wyświetlenia okna dialogowego z poleceniem dla użytkownika, aby wprowadził tekst. Po wpisaniu wartości przez użytkownika i zatwierdzeniu, tekst jest przypisywany do zmiennej A. Następnie funkcja document.write() umożliwia dynamiczne dodanie tego tekstu do dokumentu HTML. Poprawne użycie obu tych funkcji spełnia wymagania zadania – najpierw otwieramy okno dialogowe, a potem umieszczamy wprowadzone dane na stronie. Stosowanie prompt() i document.write() jest często wykorzystywane w aplikacjach webowych do interakcji z użytkownikiem w sposób bezpośredni. Mimo że bardziej nowoczesne metody, takie jak manipulacja DOM za pomocą innerHTML czy użycie frameworków JavaScript, oferują większe możliwości, prompt() i document.write() pozostają prostymi narzędziami do szybkiej prezentacji wyników na stronie. Warto jednak pamiętać, że nadmierne użycie document.write() może prowadzić do nadpisania istniejących treści w dokumencie, co nie jest optymalną praktyką w złożonych aplikacjach webowych.

Pytanie 7

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

Tablica['technik'] = 'informatyk';
A. numerycznej.
B. wielowymiarowej.
C. statycznej.
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 8

Co robi funkcja przedstawiona w kodzie JavaScript?

function tekst() {
var h = location.hostname;
document.getElementById("info").innerHTML = h;
}
A. umożliwić przejście do wskazanej lokalizacji hosta
B. wyświetlić w elemencie o id = "info" adres hosta wskazany przez pierwszy odnośnik
C. wyświetlić w elemencie o id = "info" nazwę hosta, z którego pochodzi wyświetlona strona
D. pokazać na przycisku lokalizację hosta, a po jego naciśnięciu umożliwić przejście do określonej lokalizacji
Nieprawidłowe odpowiedzi wynikają z błędnego zrozumienia działania obiektu Location oraz manipulacji DOM w JavaScript. Jedna z odpowiedzi sugeruje, że funkcja umożliwia przejście do wskazanej lokalizacji hosta, co nie jest zgodne z działaniem location.hostname. Metoda ta jedynie pobiera nazwę hosta, nie wykonuje żadnych operacji nawigacyjnych. Innym błędnym założeniem jest twierdzenie, że funkcja wyświetla adres hosta wskazany pierwszym odnośnikiem. W rzeczywistości, location.hostname zwraca nazwę hosta aktualnej strony, a nie żadnego odnośnika w dokumencie. Kolejna błędna odpowiedź dotyczy umieszczenia tej nazwy na przycisku. Kod wyraźnie pokazuje, że manipulacja dotyczy elementu o id info, a nie przycisku, nie ma więc nic wspólnego z interakcją użytkownika poprzez kliknięcie. Takie nieporozumienia mogą wynikać z niedostatecznej znajomości specyfikacji obiektu Location oraz technik manipulacji DOM w JavaScript, co jest kluczowe dla efektywnego tworzenia dynamicznych i responsywnych stron internetowych. Poprawne zrozumienie pozwala tworzyć aplikacje, które są zarówno funkcjonalne, jak i bezpieczne dla użytkowników, co jest istotne w kontekście współczesnych standardów webowych.

Pytanie 9

Wskaż właściwy sposób zapisu instrukcji 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 );
W analizowanych odpowiedziach pojawiają się różne błędy związane z używaniem operatorów oraz składnią języka JavaScript. Przede wszystkim, w żadnej z niepoprawnych wersji nie zastosowano właściwego operatora konkatenacji. Operator '+', który jest kluczowy dla łączenia stringów i wartości liczbowych, został pominięty lub źle użyty. W pierwszej z analizowanych odpowiedzi brak jest operatora, co skutkuje błędnym zrozumieniem, że można po prostu umieścić tekst i liczbę obok siebie bez wyraźnego połączenia. Kolejna odpowiedź używa nieprawidłowego znaku '.' do próby konkatenacji, co jest zupełnie niezgodne z składnią JavaScript. Taki błąd wskazuje na nieporozumienie co do zasad działania języka, ponieważ operator '.' jest używany do dostępu do właściwości obiektów, a nie do łączenia wartości. W jeszcze jednej odpowiedzi zastosowano średnik w miejscu, gdzie oczekiwano operatora, co również prowadzi do błędu składniowego. Te błędy pokazują, że kluczowe jest zrozumienie struktury i składni języka, a także znajomość dostępnych operatorów. Użycie 'document.write' jest często źródłem problemów, ponieważ umieszczanie go w niewłaściwych miejscach kodu może prowadzić do nadpisania całej zawartości strony, co jest szczególnie problematyczne w przypadku dynamicznych aplikacji. Warto też pamiętać o konwencjach i dobrych praktykach związanych z programowaniem, które zalecają unikanie 'document.write' na rzecz bardziej nowoczesnych metod manipulacji DOM.

Pytanie 10

W języku JavaScript, deklaracja: ```var x=true;``` sprawia, że zmienna x ma typ

A. numeryczny
B. enumeracyjny
C. łańcuch znaków
D. logiczy
Zmienna x w JavaScript, która została zadeklarowana jako 'var x=true;', to typ logiczny, czyli boolean. W tym języku mamy dwie możliwe wartości: true (prawda) i false (fałsz). Ten typ jest naprawdę ważny, zwłaszcza gdy mówimy o warunkach w programach, bo to właśnie one są bazą dla programowania strukturalnego i obiektowego. Kiedy piszesz instrukcje if albo pętle, typ logiczny odgrywa kluczową rolę w tym, co się dzieje w programie. Fajnie jest korzystać z zmiennych logicznych, by kontrolować, co się dzieje w kodzie, a także sprawiać, że warunki są czytelniejsze. Ciekawe jest też to, że w JavaScript inne typy, jak liczby czy ciągi znaków, mogą być używane w kontekście wartości prawdziwych i fałszywych. To czyni typ logiczny bardzo elastycznym i wszechstronnym. Im lepiej rozumiesz ten typ, tym lepiej potrafisz tworzyć dynamiczne aplikacje, które dobrze reagują na różne sytuacje.

Pytanie 11

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

A. replace()
B. trim()
C. split()
D. slice()
Metoda split() w języku JavaScript jest niezwykle użyteczna do dzielenia łańcucha tekstowego na elementy tablicy na podstawie określonego separatora. Gdy weźmiemy pod uwagę kontekst przetwarzania tekstu, na przykład możemy mieć ciąg znaków reprezentujący listę imion oddzielonych przecinkami, taki jak "Jan,Kasia,Piotr". Używając funkcji split(',', 2), możemy uzyskać tablicę ['Jan', 'Kasia'], co pozwala nam na łatwe manipulowanie i przetwarzanie tych danych. Metoda ta jest zgodna z zasadami programowania funkcyjnego, umożliwiając praktyczne podejście do przetwarzania danych. Warto również zauważyć, że split() może być wykorzystywana w różnorodnych kontekstach, takich jak praca z danymi z formularzy, analizowanie tekstów czy rozdzielanie argumentów w funkcjach. Stosując tę metodę, programiści powinni pamiętać o dobrych praktykach, takich jak walidacja danych wejściowych oraz zarządzanie sytuacjami, gdy ciąg wejściowy jest pusty lub nie zawiera separatora, co można osiągnąć poprzez dodatkowe sprawdzenia. W kontekście nowoczesnych aplikacji webowych, efektywne zarządzanie danymi tekstowymi jest kluczowe dla optymalizacji wydajności oraz poprawy UX, co czyni metodę split() fundamentalnym narzędziem w arsenale programisty JavaScript.

Pytanie 12

W jakim formacie będzie wyświetlana data po uruchomieniu przedstawionego kodu?

<?php
  echo date'l, dS F Y');
?>
A. 10, poniedziałek lipca 2017
B. Poniedziałek, 10 lipca 2017
C. Poniedziałek, 10th lipca 17
D. Poniedziałek, 10th lipca 2017
Przy analizie podanego kodu PHP, kluczowym elementem jest sposób, w jaki funkcja date() interpretuje format daty. W kodzie występuje błąd składniowy, ponieważ użycie funkcji date() powinno być w postaci date('format'). Zakładając, że błąd zostanie naprawiony na date('I, dS F Y'), funkcja ta zwraca datę w określonym formacie. 'I' oznacza pełną nazwę dnia tygodnia, 'dS' to dzień miesiąca z odpowiednim suffix, 'F' to pełna nazwa miesiąca, a 'Y' to rok w formacie czterocyfrowym. Przykładowe wyjście dla daty 10 lipca 2017 roku będzie wyglądać tak: 'Monday, 10th July 2017'. Użycie 'dS' generuje dodatek 'th' dla dni 10, 11 i 12 oraz 'st', 'nd', 'rd' dla innych dni, co jest zgodne z konwencją zapisu dat w języku angielskim. Warto podkreślić, że PHP korzysta z własnej biblioteki do zarządzania datami i czasem, co zapewnia dużą elastyczność w formatowaniu dat. Przykłady zastosowania tej funkcji można znaleźć w dokumentacji PHP, co czyni ją niezbędnym narzędziem w codziennym programowaniu.

Pytanie 13

Aby zrealizować opisane czynności w JavaScript, konieczne jest umieszczenie poniższego kodu w znaczniku <script>

Ilustracja do pytania
A. A << prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: "+A)
B. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: ".A)
C. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: "+A)
D. A = alert("Podaj kwalifikację: "); document.write("Kwalifikacja: "+A)
W JavaScript użycie funkcji prompt() pozwala na wyświetlenie okna dialogowego, które umożliwia użytkownikowi wprowadzenie danych. W przypadku poprawnej odpowiedzi kod A = prompt('Podaj kwalifikację: '); document.write('Kwalifikacja: '+A); realizuje dokładnie te kroki. Funkcja prompt() czeka na wprowadzenie danych przez użytkownika i zwraca wprowadzaną wartość, która jest następnie przypisywana do zmiennej A. Następnie document.write() jest używane do bezpośredniego wstawienia zawartości zmiennej A na stronę internetową w połączeniu z tekstem 'Kwalifikacja: '. To podejście jest zgodne z dobrymi praktykami tworzenia aplikacji internetowych, gdzie dynamiczne wprowadzanie danych przez użytkownika i ich wyświetlanie jest kluczowe. Używanie prompt() jest powszechne w prostych aplikacjach do interakcji z użytkownikiem, lecz w bardziej zaawansowanych projektach zaleca się korzystanie z bardziej zaawansowanych metod jak formularze HTML czy asynchroniczne żądania sieciowe. Niemniej jednak, zrozumienie działania prompt() oraz document.write() jest podstawowe dla tworzenia dynamicznych stron WWW i stanowi fundament dalszej nauki w JavaScript.

Pytanie 14

Instrukcja JavaScript: document.write5==='5'); co zostanie wyświetlone?

A. 0
B. 1
C. true
D. false
W analizowanym wyrażeniu JavaScript, 'document.write5==='5');', kod ten zawiera błąd składniowy, a także logiczny. Przede wszystkim, użycie 'document.write5' jest niepoprawne, ponieważ 'write' to metoda obiektu 'document', a '5' nie jest częścią tej metody. Poprawna forma powinna wyglądać jak 'document.write(5 === '5');'. W tej poprawionej wersji sprawdzamy, czy liczba 5 jest równa stringowi '5'. W JavaScript operator '===' sprawdza zarówno wartość, jak i typ operandów. W tym przypadku, liczba 5 jest typu number, a '5' jest typu string. Ponieważ typy są różne, wynik porównania będzie 'false'. Przy użyciu operatora '==' wynik byłby 'true', ponieważ operator ten nie sprawdza typów, ale w tym przypadku używamy operatora '===', więc wynik to 'false'. Przykład: '5 === '5'' zwraca 'false', co oznacza, że operacja nie jest prawdziwa. W kontekście standardów ECMAScript, porównania z użyciem '===' są zalecane, aby unikać niejasności i błędów typów.

Pytanie 15

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

A. slice()
B. concat()
C. replace()
D. trim()
Wybór innych metod do manipulacji ciągami tekstowymi sugeruje niezrozumienie ich właściwości. Metoda trim() służy do usuwania białych znaków z początku i końca napisu, co nie ma nic wspólnego z wydobywaniem fragmentów. Użytkownicy mogą mylnie sądzić, że trim() jest przydatna do ekstrakcji, jednak jej zastosowanie jest zupełnie inne i polega na oczyszczaniu danych. Metoda concat() łączy dwa lub więcej ciągów tekstowych, co również nie odpowiada na potrzebę wydobywania podciągu. Zrozumienie, że concat() nie jest odpowiedzią na pytanie o wydobycie fragmentu, jest kluczowe dla efektywnego korzystania z języka JavaScript. Z kolei replace() służy do zamiany określonego fragmentu tekstu na inny, co może wprowadzać w błąd, gdyż nie wydobywa fragmentów, lecz je modyfikuje. Użytkownicy mogą mylić te metody, nie dostrzegając różnic między modyfikacją a wydobywaniem, co jest istotne w kontekście manipulacji danymi. Ważne jest, aby rozumieć specyfikę każdej metody oraz jej zastosowanie w codziennym programowaniu, co pozwala na efektywniejsze i bardziej precyzyjne pisanie kodu w JavaScript.

Pytanie 16

Jaką instrukcją można zastąpić poniższy kod JavaScript, pełniącą tę samą funkcję?

for (i = 0; i < 100; i += 10)
  document.write(i + ' ');
while (i < 10) {
  document.write(i + ' ');
  i += 10;
}

Kod 1.
while (i < 100) {
  document.write(i + ' ');
}

Kod 2.
i = 0;
while (i < 100) {
  document.write(i + ' ');
  i += 10;
}

Kod 3.
i = 0;
while (i < 10) {
  document.write(i + ' ');
  i++;
}

Kod 4.
A. Kod 4
B. Kod 2
C. Kod 1
D. Kod 3
Odpowiedź Kod 3 jest prawidłowa ponieważ instrukcja while w tej formie jest równoważna z podaną pętlą for. W obu przypadkach pętla inicjuje zmienną i na wartości 0 i zwiększa ją o 10 w każdej iteracji aż do osiągnięcia wartości mniejszej niż 100. Pętla for jest skondensowaną formą pętli while i zapewnia bardziej czytelny zapis gdy wszystkie elementy inicjalizacja warunek i inkrementacja są blisko siebie. Taka konstrukcja jest używana w wielu językach programowania zorientowanych obiektowo takich jak JavaScript czy Java. W praktyce pętle te są używane do iteracji przez listy tablice lub do wykonywania powtarzalnych zadań w kodzie. Dobre praktyki zalecają wybór pętli for gdy zakres iteracji jest znany z góry co poprawia czytelność i utrzymanie kodu. Zrozumienie jak pętla while może być przekształcona w pętlę for i odwrotnie jest podstawową umiejętnością w programowaniu co pozwala na elastyczność w pisaniu kodu i lepsze dostosowanie do specyficznych potrzeb aplikacji.

Pytanie 17

W JavaScript utworzono obiekt. Jak zmienić wartość właściwości x tego obiektu w dalszej części kodu?

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: function() { … }
}
A. obiekt1.x = …
B. x = …
C. obiekt1::x = …
D. wsp.x = …
JavaScript to fajny język, który pozwala na pracę z obiektami, a właściwie to obiekty są jego podstawą. Chodzi o to, że można w nich przechowywać różne dane w formie par klucz-wartość. Gdy chcesz zmienić jakąś właściwość obiektu, używasz notacji kropkowej. To z pozoru proste, ale bardzo praktyczne. Po prostu wpisujesz nazwę obiektu, kropkę i nazwę właściwości, którą chcesz edytować. Na przykład mamy obiekt o nazwie obiekt1 i właściwość x. Żeby zmienić wartość x, piszesz obiekt1.x, a potem przypisujesz nową wartość. To wszystko jest zgodne z zasadami ECMAScript, które mówią, jak powinno się pracować z obiektami w JavaScript. Takie podejście jest nie tylko jasne, ale również umożliwia szybkie wskazanie, co dokładnie zmieniasz. W praktyce fajnie jest pokazać to na przykładzie, jak np. chcesz zaktualizować imię użytkownika w obiekcie, to robisz coś takiego: user.name = 'Jan'.

Pytanie 18

W języku JavaScript funkcja getElementById odnosi się do

A. zmiennej numerycznej
B. elementu HTML z podanym id
C. klasy zdefiniowanej w CSS
D. elementu HTML z określoną nazwą klasy
Metoda getElementById w języku JavaScript jest kluczowym narzędziem do manipulacji DOM (Document Object Model), które pozwala deweloperom na łatwe odwoływanie się do konkretnych elementów HTML za pomocą ich atrybutu id. Dzięki temu, możemy dynamicznie zmieniać treść, style lub atrybuty tych elementów, co jest niezwykle przydatne w tworzeniu interaktywnych stron internetowych. Na przykład, jeśli mamy element HTML z atrybutem id='header', możemy użyć `document.getElementById('header')` do uzyskania do niego dostępu. To podejście jest zgodne z zasadami poprawnej struktury HTML, gdzie atrybut id powinien być unikalny w obrębie dokumentu. Rekomendowane jest, aby id było zrozumiałe i jasno określało zawartość elementu, co ułatwia późniejszą nawigację i skrypty, a także poprawia dostępność strony. W praktyce, korzystając z getElementById, możemy na przykład zmieniać tekst nagłówka: `document.getElementById('header').innerText = 'Nowy nagłówek';`.

Pytanie 19

Jak wygląda instrukcja przypisania wartości do elementu tablicy w języku JavaScript względem tablicy? ```Tablica['technik'] = 'informatyk';```

A. asocjacyjnej
B. numerycznej
C. wielowymiarowej
D. statycznej
W języku JavaScript tablice mogą być traktowane jako obiekty, a więc wykazują cechy struktur asocjacyjnych. Przypisując wartość do tablicy za pomocą notacji z nawiasami kwadratowymi, jak w przykładzie 'Tablica[\'technik\'] = \'informatyk\';', tworzymy nowy element o kluczu 'technik', co jest charakterystyczne dla obiektów asocjacyjnych. W JavaScript tablice są dynamiczne, co oznacza, że możemy dodawać elementy w dowolny sposób, a ich rozmiar nie jest ustalony z góry. Standard ECMAScript definiuje tablice jako obiekty, gdzie klucze są indeksami liczb całkowitych, ale można również używać stringów jako kluczy, co czyni tablice asocjacyjnymi. Przykładem może być obiekt, który przechowuje różne informacje, a elementy są dostępne zarówno za pomocą indeksów numerycznych, jak i stringów. Warto zaznaczyć, że użycie tablicy jako obiektu asocjacyjnego może być praktyczne w wielu zastosowaniach, np. w przechowywaniu konfiguracji czy zestawów danych. Dobrą praktyką jest jednak ograniczać użycie takich technik dla przejrzystości kodu."

Pytanie 20

W języku JavaScript właściwie zdefiniowana zmienna to

A. imię2
B. imie2
C. imię%
D. #imie
Niepoprawne odpowiedzi wynikają z naruszenia zasad dotyczących tworzenia identyfikatorów w języku JavaScript. Przykładem jest odpowiedź zawierająca znak '#', który nie jest dozwolony na początku identyfikatora. Identyfikatory muszą zaczynać się od litery, znaku podkreślenia lub znaku dolara, co wyklucza użycie symboli takich jak '#'. Ponadto, w JavaScript nie można stosować znaków specjalnych, takich jak '%', co czyni inną odpowiedź niepoprawną. Znak '%' nie jest zgodny z zasadami nazewnictwa zmiennych, co prowadzi do błędów składniowych w kodzie. Odpowiedź z 'imię2' wprowadza dodatkowe problemy, gdyż użycie polskich znaków, takich jak 'ń', nie jest zalecane w identyfikatorach w JavaScript. Choć w niektórych środowiskach można to zrobić, standardy ECMAScript sugerują unikanie znaków diakrytycznych, co zwiększa przejrzystość i uniwersalność kodu. Dlatego zaleca się stosowanie prostych liter łacińskich oraz cyfr, aby zapewnić szeroką kompatybilność i uniknąć potencjalnych problemów podczas przenoszenia kodu pomiędzy różnymi systemami.

Pytanie 21

Fragment kodu HTML z JavaScript spowoduje, że po kliknięciu przycisku

<img src="obraz1.png">
<img src="obraz2.png" id="id1">
<button onclick="document.getElementById('id1').style.display='none'">Przycisk</button>
A. obraz1.png zastąpi obraz2.png
B. obraz2.png zastąpi obraz1.png
C. obraz2.png zostanie schowany
D. obraz1.png zostanie schowany
Niepoprawne odpowiedzi wynikają z błędnego zrozumienia działania mechanizmu manipulacji DOM przy użyciu JavaScript. Pierwszym potencjalnym błędem jest założenie, że obraz1.png zostanie ukryty. Kod JavaScript wyraźnie odnosi się do elementu o id 'id1', co jednoznacznie wskazuje na obraz2.png. Tym samym jakiekolwiek operacje związane z obraz1.png są wykluczone, ponieważ ten obraz nie posiada przypisanego identyfikatora, który mógłby być użyty w skrypcie. Kolejne błędne założenie dotyczy zastąpienia jednego obrazu drugim. Aby taka operacja miała miejsce, kod musiałby modyfikować atrybut src jednego z elementów img, co w tym przypadku nie występuje. W obecnym fragmencie kodu zmiana atrybutu src nie jest implementowana, co rzutuje na to, że żaden obraz nie zostanie zamieniony. Typowy błąd logiczny polega tutaj na pomyleniu ukrywania elementu z jego modyfikacją lub zamianą. Błędne rozumienie również może wywodzić się z zakładania, że zmiana widoczności elementu automatycznie implikuje jego fizyczną zamianę, co nie jest prawdą w kontekście manipulacji DOM. Użytkownik powinien nauczyć się rozróżniać te operacje, aby unikać podobnych nieporozumień. Prawidłowe zrozumienie tych mechanizmów pozwala na efektywne projektowanie dynamicznych interfejsów użytkownika, które są zarówno funkcjonalne, jak i estetyczne. W rzeczywistości, operacje na DOM, takie jak ukrywanie elementów, są podstawą nowoczesnego web designu i powinny być dobrze zrozumiane przez każdego programistę webowego.

Pytanie 22

Podaj zapis w języku JavaScript, który sprawdzi, czy spełniony jest przynajmniej jeden z następujących warunków: 1) dowolna liczba naturalna 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)
W analizowanych odpowiedziach pojawia się kilka koncepcji, które prowadzą do niepoprawnych wyników. Wyrażenie ((a>99) && (a<1000)) && (b<0) wymaga, aby obie części były spełnione jednocześnie, co jest sprzeczne z założeniem, że wystarczy spełnienie jednego z warunków. To podejście zakłada, że zarówno liczba a musi być trzycyfrowa, jak i liczba b musi być ujemna, co jest zbyt restrykcyjne i nie odzwierciedla wymaganego warunku. Kolejne błędne podejście to ((a>99) || (a<1000)) && (b<0), które również jest niepoprawne, ponieważ pierwsza część tego wyrażenia jest błędnie skonstruowana - naturalna liczba a może być dowolną liczbą, a więc nie ma sensu porównywać jej do wartości mniejszej od 1000, co zawsze będzie prawdziwe dla liczby a większej od 99. Ostatnia z analizowanych opcji - ((a>99) || (a<1000)) || (b<0) - również zawiera błąd, ponieważ pierwsza część implikuje, że każda liczba a, która jest większa niż 99, jest spełniona, co nie jest zgodne z definicją liczby trzycyfrowej. W związku z tym, najczęstsze błędy polegają na nieprawidłowym zastosowaniu operatorów logicznych oraz nieścisłościach w definiowaniu zakresu liczb, co prowadzi do niespójności w logice warunków. Kluczowe jest, aby dokładnie zrozumieć, co każdy fragment kodu ma na celu, aby uniknąć takich pomyłek.

Pytanie 23

W języku JavaScript rezultat działania instrukcji zmienna1 –= 1; będzie identyczny jak wynik instrukcji

A. zmienia1 = zmienna1 - 0;
B. zmienna1––;
C. zmienna1++;
D. zmienna1 === zmienna1 - 1;
Instrukcja 'zmienna1 -= 1;' w języku JavaScript jest skróconą formą zapisu, która oblicza nową wartość zmiennej 'zmienna1', odejmując od niej 1. Działa to na zasadzie równania, gdzie zmienna zostaje zaktualizowana do nowej wartości. Z kolei zapis 'zmienna1--;' również dokonuje dekrementacji zmiennej 'zmienna1' o 1, ale w formie operatora post-dekrementacji. W praktyce oznacza to, że obie instrukcje mają ten sam efekt końcowy, czyli zmiana wartości 'zmienna1' o 1 w dół. Przykładowo, jeżeli 'zmienna1' wynosi 5 przed wykonaniem powyższych operacji, to po ich wykonaniu jej wartość wyniesie 4. Takie skrócone formy zapisu są powszechną praktyką w programowaniu, ponieważ umożliwiają bardziej zwięzłe i czytelne przedstawienie operacji na zmiennych, co jest zgodne z zasadami czystego kodu. Używanie operatorów skróconych, takich jak '+=' i '-=', jest zalecane, ponieważ poprawia czytelność i zrozumiałość kodu.

Pytanie 24

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

A. uzyskanie z formularza wyświetlonego na stronie HTML imienia "Adam"
B. pokazanie okna z pustym polem do edycji
C. wyświetlenie okna z polem do edycji, w którym domyślnie znajduje się tekst "Adam"
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 25

Wskaż konstrukcję pętli w języku JavaScript, która wyświetli sześć kolejnych liczb parzystych

A. for(i=2;i<12;i+=2) {document.write(i);}
B. for(i=2;i<=12;i+=2) {document.write(i);}
C. for(i=2;i<12;i++) {i++; document.write(i);}
D. for(i=2;i<=12;i++) {i=i+2; document.write(i);}
Prawidłowe zrozumienie działania pętli for w JavaScript jest kluczowe dla tworzenia efektywnych skryptów. Odpowiedzi, które nie są poprawne, najczęściej wynikają z nieporozumień dotyczących sposobu działania inkrementacji oraz warunków zakończenia pętli. Przykładowo, konstrukcja for(i=2;i<12;i+=2) nie osiągnie ostatniej liczby parzystej 12, co skutkuje wyświetleniem jedynie 2, 4, 6, 8 i 10, a więc pięciu liczb parzystych. Zrozumienie granic pętli jest istotne, aby uzyskać oczekiwane rezultaty. Inne podejście, czyli for(i=2;i<12;i++) {i++; document.write(i);}, wprowadza dodatkowe zwiększenie zmiennej i wewnątrz pętli, co może prowadzić do nieoczekiwanych rezultatów - w tym przypadku, liczenie kończy się na 12, ale tylko wartości nieparzyste będą drukowane, czyli 3, 5, 7, 9, 11, co jest błędne w kontekście zadania. W kontekście innej odpowiedzi, for(i=2;i<=12;i++) {i=i+2; document.write(i);}, również nie działa zgodnie z zamierzeniem, ponieważ zaczyna od 2 i natychmiast zwiększa liczbę do 4, co prowadzi do pominięcia liczby 2 w wyniku końcowym. Dokładne zrozumienie działania pętli i jej konstrukcji jest kluczowe do uniknięcia takich błędów. W programowaniu ważne jest stosowanie jasnych i prostych konstrukcji, które są łatwe do zrozumienia, co pomaga nie tylko w pracy nad bieżącym projektem, ale również w późniejszej konserwacji oraz w pracy zespołowej.

Pytanie 26

Rodzaj zmiennej w języku JavaScript

A. musi być zadeklarowany na początku skryptu.
B. nie istnieje.
C. jest tylko jeden rodzaj.
D. ma miejsce poprzez przypisanie wartości.
Wiele osób uważa, że typ zmiennej w JavaScript powinien być z góry zadeklarowany, co jest niezgodne z jego zasadami działania. Twierdzenie, że typ zmiennej 'nie występuje', jest mylne, ponieważ każda wartość przypisana do zmiennej ma swój typ, nawet jeśli nie jest to jawnie określone. Ignorowanie tego faktu prowadzi do nieporozumień i błędów w kodzie. Kolejne nieprecyzyjne stwierdzenie, że 'jest tylko jeden' typ zmiennej, pomija kluczową cechę JavaScript jako języka dynamicznego, który obsługuje wiele typów, takich jak liczby, stringi, obiekty i tablice. Typy te mogą zmieniać się w trakcie działania programu, co czyni język bardzo elastycznym. Z kolei przekonanie, że zmienne muszą być zadeklarowane na początku skryptu, jest również błędne, ponieważ JavaScript pozwala na przypisywanie wartości do zmiennych w dowolnym miejscu w kodzie, co zwiększa jego dynamikę. Takie myślenie może prowadzić do nieefektywnego kodu, który jest trudniejszy w utrzymaniu oraz rozwijaniu. Ważne jest, aby zrozumieć zasady działające w tym języku, aby unikać typowych pułapek związanych z typowaniem zmiennych oraz właściwie wykorzystać zalety, jakie oferuje JavaScript.

Pytanie 27

W języku JavaScript potrzebne jest odwołanie się do elementu znajdującego się w pierwszym paragrafie danego fragmentu kodu HTML. Można to osiągnąć przy użyciu funkcji

<body>
<p>pierwszy paragraf</p>
<p>drugi paragraf</p>
<p>trzeci paragraf</p>
A. getElementsByTagName('p')[0]
B. getElement('p')
C. getElementsByClassName('p.1')[0]
D. getElementById('p1')
Metoda getElementsByClassName("p.1")[0]; jest niepoprawna, ponieważ jej użycie zakłada, że w dokumencie HTML występuje element z klasą "p.1", a w podanym fragmencie HTML nie ma żadnego elementu, który spełniałby ten warunek. Klasy w HTML definiuje się za pomocą atrybutu class, a nie poprzez dotację z kropką w nazwie. W przypadku użycia getElementById("p1");, ta metoda zakłada, że istnieje element z unikalnym identyfikatorem "p1". W przedstawionym fragmencie również tego identyfikatora nie ma, co czyni tę odpowiedź błędną. Metoda getElement("p"); jest nieprawidłowa, ponieważ takiej metody nie ma w standardowym obiekcie document w JavaScript. Programista, zamiast tego, powinien użyć getElementById lub getElementsByTagName. Użycie getElementsByTagName jest najlepszą praktyką, ponieważ pozwala na selekcję wszystkich elementów danego typu. Często mylące są koncepcje związane z selekcją elementów; kluczowe jest zrozumienie, że metody JavaScript są czułe na typy i struktury dokumentu. Dlatego ważne jest, aby dokładnie wiedzieć, jakie elementy chcemy wybrać i jakie metody są do tego dostępne w standardzie DOM.

Pytanie 28

W języku JavaScript zamieszczony poniżej fragment funkcji ma na celu

wynik = 0;
for (i = 0; i < tab.length; i++) {
wynik += tab[i];
}
A. wprowadzenie do każdego elementu tablicy bieżącej wartości zmiennej i
B. wyświetlenie wszystkich elementów tablicy
C. dodanie stałej wartości do każdego elementu tablicy
D. policzenie sumy wszystkich elementów tablicy
Podany fragment kodu w języku JavaScript pokazuje klasyczną strukturę pętli for, która pozwala na przejście przez wszystkie elementy tablicy i wykonanie na nich określonych operacji. W tym przypadku celem pętli jest zsumowanie wszystkich elementów tablicy. Zmienna wynik jest inicjalizowana wartością 0, co jest dobrą praktyką programistyczną, aby zapewnić prawidłowe działanie sumowania. Pętla iteruje przez każdy element tablicy tab przy pomocy zmiennej i, która pełni rolę indeksu. Przy każdej iteracji do zmiennej wynik dodawana jest wartość bieżącego elementu tablicy tab[i]. Po zakończeniu pętli zmienna wynik będzie zawierać sumę wszystkich elementów tablicy. Takie podejście jest podstawą wielu algorytmów przetwarzających dane tablicowe i ilustruje ważny koncept iteracyjnego przetwarzania danych. Warto również wspomnieć, że takie podstawowe operacje jak to sumowanie mogą być zastosowane w wielu dziedzinach takich jak analiza danych obliczenia statystyczne czy przetwarzanie dużych zbiorów danych w systemach komputerowych co czyni je niezwykle wartościowymi w praktyce zawodowej

Pytanie 29

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. D.
B. A.
C. B.
D. C.
Niestety, wybrana odpowiedź nie jest poprawna. Przeanalizujmy błędy w pozostałych odpowiedziach. Wszystkie niepoprawne odpowiedzi nie odzwierciedlają prawidłowo logiki przedstawionej na diagramie przepływu. Mogą nie inicjalizować zmiennej 'i' na 0, nie zwiększać jej wartości o 2 za każdym obrotem pętli lub nie sprawdzać, czy 'i' jest mniejsze lub równe 10. Takie błędy są często wynikiem niezrozumienia działania pętli i operatorów w języku JavaScript. Pętla 'while' powinna wykonywać określony kod, dopóki jej warunek jest spełniony. Operator '+=' to skrócona forma zapisu operacji dodawania i przypisania. Jeśli zmienna 'i' jest zwiększana o 2, powinniśmy użyć 'i += 2', a nie 'i++' lub 'i--', które odpowiednio zwiększają lub zmniejszają wartość 'i' o 1. Ważne jest, aby zrozumieć znaczenie i zastosowanie różnych operatorów i instrukcji w języku JavaScript, aby prawidłowo odwzorować algorytmy na kod.

Pytanie 30

W instrukcji warunkowej języka JavaScript należy zweryfikować sytuację, w której wartość zmiennej a mieści się w zakresie (0, 100), a wartość zmiennej b jest większa od zera. Taki warunek można zapisać w sposób następujący

A. if ((a>0 || a<100) && b>0)
B. if (a>0 || a<100 || b<0)
C. if ((a>0 && a<100) || b<0)
D. if (a>0 && a<100 && b>0)
Wybór odpowiedzi 'if (a>0 && a<100 && b>0)' jest prawidłowy, ponieważ precyzyjnie spełnia określone wymagania zawarte w pytaniu. Warunek ten sprawdza, czy zmienna 'a' mieści się w przedziale od 0 do 100 (wyłączając 0 i 100), a także potwierdza, że zmienna 'b' jest większa od zera. Operator '&&' (AND) jest kluczowy w tym przypadku, ponieważ wymaga spełnienia wszystkich zdefiniowanych warunków jednocześnie. Przykładowo, jeśli mamy zmienne 'a' równe 50 i 'b' równe 10, to warunek zostanie spełniony i kod wewnątrz instrukcji 'if' zostanie wykonany. Zastosowanie takich warunków jest powszechne w programowaniu, zwłaszcza w sytuacjach wymagających walidacji danych, gdzie musimy upewnić się, że wszystkie kryteria są spełnione przed kontynuowaniem dalszych operacji. Standardy kodowania zalecają wykorzystanie prostych i jednoznacznych instrukcji warunkowych, co przyczynia się do lepszej przejrzystości i utrzymywalności kodu. Stosując odpowiednią logikę w warunkach, minimalizujemy ryzyko wystąpienia błędów w logice aplikacji.

Pytanie 31

Kod JavaScript ma za zadanie szukanie wartości maksymalnej w tablicy. Wskaż błąd występujący w skrypcie.

14      max = tablica[0];
15      for (j == 1; j < 9; j++) {
16          if (max <= tablica[j]) {
17              max = tablica[j];
18          };
19      };
20      document.write("Największy element tablicy to: " + max);
A. Warunek w linii 16 powinien być odwrócony.
B. Zmienna max ma niewłaściwie przypisaną wartość w linii 14.
C. Zastosowano operator porównania zamiast przypisania w linii 15.
D. Kod zapisany w linii 20 ma nieprawidłową składnię.
W tym fragmencie kodu kluczowy problem faktycznie leży w linii 15, gdzie użyto operatora porównania `==` zamiast operatora przypisania `=`. W pętli `for` pierwsza część ma inicjalizować zmienną sterującą, czyli w JavaScripcie poprawny zapis to `for (j = 1; j < 9; j++) { ... }`. Konstrukcja `j == 1` nie ustawia wartości zmiennej, tylko porównuje bieżącą wartość `j` z liczbą 1 i zwraca wynik logiczny `true` lub `false`. W efekcie interpreter próbuje potraktować wynik porównania jako wyrażenie inicjalizujące, co jest po prostu błędem składniowym i skrypt się nie wykona. Z mojego doświadczenia to bardzo częsty błąd: programista myśli o „ustawieniu” wartości i z przyzwyczajenia wpisuje podwójny znak równości. Dlatego w językach takich jak JavaScript, C, Java trzeba mocno pilnować rozróżnienia: `=` oznacza przypisanie, `==` porównanie wartości (a `===` porównanie wartości i typu). Cała reszta algorytmu wyszukiwania maksimum jest w porządku: najpierw przypisujemy do `max` pierwszy element tablicy, potem w pętli przechodzimy kolejne elementy i jeśli aktualny element jest większy lub równy `max`, to aktualizujemy zmienną `max`. Taki schemat jest klasycznym algorytmem liniowego wyszukiwania wartości maksymalnej. W praktyce, gdy piszesz kod produkcyjny, warto dodatkowo zadbać o deklarację zmiennych (`let j = 1;`, `let max = tablica[0];`) oraz używać długości tablicy (`j < tablica.length`) zamiast stałej liczby 9, żeby kod był odporny na zmiany i łatwiejszy w utrzymaniu. W narzędziach typu ESLint często jest też reguła wychwytująca przypadkowe użycie `==` tam, gdzie spodziewane jest `=`, właśnie po to, żeby unikać takich subtelnych, ale groźnych pomyłek.

Pytanie 32

W przedstawionym kodzie JavaScript linie zostały ponumerowane dla wygody. Kod ten zawiera błąd, ponieważ po jego uruchomieniu nie wyświetla się żaden komunikat. Aby usunąć ten błąd, należy

1  if(a < b)
2      document.write(a);
3      document.write("jest mniejsze");
4  else
5      document.write(b);
6      document.write("jest mniejsze");
A. umieścić znaki $ przed nazwami zmiennych
B. dodać nawiasy klamrowe do sekcji if i else
C. w liniach 2 i 5 zmienne a i b umieścić w cudzysłowie
D. w liniach 3 i 6 zastąpić znaki cudzysłowu apostrofami, np. 'jest mniejsze'
Odpowiedź zakłada wstawienie nawiasów klamrowych do sekcji if oraz else co jest kluczowym elementem praktyki programowania w JavaScript. Nawiasy klamrowe zapewniają prawidłowe wykonanie bloku kodu w przypadku warunków jeśli i else co jest standardową praktyką w większości języków programowania. Nawet jeśli blok kodu zawiera tylko jedną linię dodanie nawiasów klamrowych zwiększa czytelność kodu i ułatwia jego przyszłą edycję. Użycie nawiasów klamrowych jest również kluczowe gdyż zapobiega błędom logicznym i nieoczekiwanym zachowaniom programu. W implementacji systemów produkcyjnych oraz podczas pracy z zespołem przestrzeganie takich standardów jest niezmiernie ważne ponieważ zapewnia spójność kodu i ułatwia jego zrozumienie przez innych programistów. Przykładowo dodanie nawiasów klamrowych do instrukcji if w kodzie który jest często aktualizowany minimalizuje ryzyko wprowadzenia błędów. Programiści zawsze powinni dążyć do pisania kodu który jest łatwy do zrozumienia utrzymania i modyfikacji co jest jednym z fundamentów inżynierii oprogramowania.

Pytanie 33

W języku JavaScript, aby zmodyfikować wartość atrybutu znacznika HTML, po uzyskaniu obiektu przez metodę getElementById, należy zastosować

A. metody setAttribute
B. metody getAttribute
C. pola attribute i podać nazwę atrybutu
D. pola innerHTML
Wybór odpowiedzi, która sugeruje użycie pola innerHTML do zmiany atrybutów, jest nieprawidłowy, ponieważ pole to służy do manipulacji zawartością HTML wewnątrz danego elementu, a nie do zmiany jego atrybutów. Na przykład, użycie innerHTML do wstawienia nowej zawartości do elementu mogłoby spowodować nadpisanie wszystkich jego atrybutów i potencjalnie prowadzić do błędów, jeżeli nie zostaną zachowane pierwotne atrybuty. Z drugiej strony, metoda getAttribute tylko odczytuje wartość atrybutu, nie pozwala na jego modyfikację, co czyni ją niewłaściwym wyborem w kontekście zmiany wartości atrybutu. Z kolei pole attribute nie istnieje w kontekście HTML DOM jako typ właściwości, co prowadzi do nieporozumień w interpretacji. Zrozumienie tych różnic jest kluczowe dla efektywnego zarządzania elementami DOM w JavaScript. Powszechny błąd polega na myleniu funkcji związanych z manipulowaniem zawartością i atrybutami, co może prowadzić do nieefektywnego i trudnego do debugowania kodu. Kluczowym aspektem programowania w JavaScript jest znajomość metod i właściwości dostępnych w obiektach DOM oraz umiejętność ich poprawnej aplikacji w zależności od kontekstu operacji.

Pytanie 34

Liczba 0x142, przedstawiona w skrypcie JavaScript, jest zapisywana w postaci

A. ósemkowej
B. dziesiętnej
C. dwójkowej
D. szesnastkowej
Liczba 0x142 jest zapisana w formacie szesnastkowym, co oznacza, że jest to reprezentacja liczby w systemie liczbowym o podstawie 16. W systemie szesnastkowym używa się cyfr od 0 do 9 oraz liter od A do F, gdzie A reprezentuje 10, B 11, C 12, D 13, E 14, a F 15. Aby przekonwertować tę liczbę na bardziej powszechny system dziesiętny, można zastosować wzór: 1*16^2 + 4*16^1 + 2*16^0, co daje wynik 256 + 64 + 2 = 322. W JavaScript, liczby szesnastkowe są często używane w kontekście kolorów (np. #FF5733) czy adresów pamięci. Użycie prefiksu '0x' jest standardową konwencją w wielu językach programowania do wskazania, że dana liczba jest zapisana w systemie szesnastkowym. Przykładem zastosowania może być definicja kolorów w CSS, gdzie zapis szesnastkowy jest powszechnie stosowany do określenia wartości RGB.

Pytanie 35

W języku JavaScript funkcja matematyczna Math.pow() jest wykorzystywana do obliczania

A. przybliżonej wartości liczby
B. pierwiastka kwadratowego z liczby
C. potęgi liczby
D. bezwzględnej wartości liczby
Funkcja Math.pow() w języku JavaScript służy do obliczania potęgi liczby, co oznacza, że zwraca wynik mnożenia danej liczby przez siebie określoną liczbę razy. Jej składnia to Math.pow(base, exponent), gdzie 'base' to liczba, którą chcemy podnieść do potęgi, a 'exponent' to wykładnik potęgi. Przykładowo, Math.pow(2, 3) zwróci 8, ponieważ 2^3=2*2*2=8. Użycie tej funkcji jest niezwykle powszechne w programowaniu, zwłaszcza w obliczeniach matematycznych, grafice komputerowej oraz w algorytmach naukowych. Zastosowanie Math.pow() jest zgodne z najlepszymi praktykami, ponieważ pozwala na klarowność i czytelność kodu. Warto dodać, że w ES6 możemy również używać operatora potęgowania **, co jest syntaktycznie prostsze i bardziej intuicyjne, np. 2 ** 3 również da nam 8.

Pytanie 36

W JavaScript metoda getElementById odnosi się do

A. znacznika HTML o wskazanym id
B. zmiennej numerycznej
C. klasy zdefiniowanej w CSS
D. znacznika HTML o podanej nazwie klasy
Metoda getElementById w JavaScript jest kluczowym narzędziem do interakcji z modelowaniem DOM (Document Object Model). Służy do uzyskiwania dostępu do pojedynczego elementu HTML na podstawie jego atrybutu id, co jest zgodne z zasadą unikalności identyfikatorów w dokumencie HTML. Dzięki temu programiści mogą stosunkowo łatwo manipulować pojedynczymi elementami, co jest istotne w dynamicznych aplikacjach internetowych. Przykładem zastosowania tej metody może być zmiana tekstu w elemencie <h1>, gdzie używamy getElementById('myHeader').innerHTML = 'Nowy nagłówek';. Zgodnie z dobrymi praktykami, powinno się unikać używania zduplikowanych id w dokumencie, aby zapewnić, że metoda ta zawsze zwraca jeden, a nie wiele elementów. Warto również pamiętać, że w przypadku braku elementu o podanym id, metoda zwróci null, co powinno być uwzględnione w logice aplikacji, aby uniknąć błędów. Użycie tej metody jest standardem w programowaniu JavaScript i stanowi fundament dla wielu bardziej zaawansowanych technik manipulacji DOM.

Pytanie 37

document.getElementById("napis").innerHTML = Date); // Aby poprawnie skomentować podaną linijkę kodu w języku JavaScript, należy dodać komentarz po znakach //

A. wyświetlenie daty oraz czasu w znaczniku o id = napis
B. wyświetlenie ciągu "Date()" w znaczniku o id = napis
C. niepoprawne informacje
D. zmiana właściwości atrybutu innerHTML
W przedstawionej linii kodu JavaScript, 'document.getElementById("napis").innerHTML = Date;', mamy do czynienia z modyfikacją zawartości elementu HTML o identyfikatorze 'napis'. Funkcja 'getElementById' pozwala na selekcję elementu DOM, a atrybut 'innerHTML' umożliwia przypisanie nowej wartości, która będzie wyświetlana w tym elemencie. Wartością, która zostanie przypisana, jest 'Date', a nie 'Date()'. Przy użyciu 'Date' bez nawiasów, odnosi się do obiektu funkcji, a nie do wyniku wykonania tej funkcji, który zwraca aktualną datę i czas. W poprawnej wersji kodu powinno być 'document.getElementById("napis").innerHTML = new Date();', co spowoduje wyświetlenie bieżącej daty i godziny w elemencie o id 'napis'. Takie podejście jest zgodne z aktualnymi standardami ECMAScript, a także jest często wykorzystywane w aplikacjach webowych do dynamicznej aktualizacji treści na stronach internetowych, co zwiększa ich interaktywność i użytkowalność. Dla lepszego zrozumienia, praktycznym przykładem może być użycie tego kodu w aplikacji, która pokazuje czas rzeczywisty na stronie, co jest popularne w wielu projektach webowych.

Pytanie 38

W sklepie z farbami obowiązuje określony sposób obliczania kosztu farby: dla koloru niebieskiego i zielonego przy pojemności 2 litry cena farby wynosi cena bazowa + 20%. Wyrażenie logiczne w języku JavaScript, które weryfikuje tę zasadę, ma formę

A. kolor = 'niebieski' || kolor = 'zielony' && pojemnosc = 2
B. kolor == 'niebieski' && kolor == 'zielony' && pojemnosc == 2
C. (kolor == 'niebieski' || kolor == 'zielony') && pojemnosc == 2
D. (kolor = 'niebieski' || kolor = 'zielony') || pojemnosc = 2
Analizując niepoprawne odpowiedzi, można zauważyć kilka powszechnych błędów, które prowadzą do mylnych wniosków. Przede wszystkim, użycie operatora '=' zamiast '==' jest fundamentalnym błędem w kontekście języka JavaScript. Operator '=' służy do przypisania wartości, podczas gdy '==' jest operatorem porównania, który sprawdza, czy dwie wartości są sobie równe. Zastosowanie '=' w warunkach logicznych prowadzi do nieprawidłowego działania warunków, ponieważ zamiast porównania wykonujemy przypisanie, co zazwyczaj skutkuje zawsze prawdziwym wynikiem. Ponadto, użycie operatora '&&' w przypadku kolorów w odpowiedzi, która stwierdza, że kolor jest jednocześnie 'niebieski' i 'zielony', jest logicznie niemożliwe, ponieważ jedna zmienna nie może przyjmować dwóch różnych wartości jednocześnie. Tego typu niepoprawne podejścia mogą prowadzić do niezamierzonych wyników w kodzie, co jest sprzeczne z podstawowymi zasadami programowania, takimi jak zasada jedności odpowiedzialności. Kluczowe jest również zrozumienie, że warunki powinny być jasno sformułowane, aby kod był zarówno funkcjonalny, jak i łatwy do zrozumienia dla innych programistów. Dobre praktyki programistyczne wskazują na konieczność stosowania dobrze zdefiniowanych i jednoznacznych warunków, co znacznie ułatwia dalszy rozwój i konserwację kodu.

Pytanie 39

Dla dowolnego a w zakresie (0,99), celem funkcji napisanej w JavaScript jest:

function fun1(a)
{
    for(n=a; n<=100; n++)
        document.write(n);
    return n;
}
A. wypisanie wartości z zakresu a..99 i zwrócenie liczby 100
B. wypisanie wartości zmiennej a oraz zwrócenie wartości zmiennej n
C. zwrócenie wartości z zakresu a..99
D. wypisanie wartości z zakresu a...100 i zwrócenie wartości zmiennej n
Odpowiedź numer trzy jest poprawna ponieważ kod funkcji w języku JavaScript zawiera pętlę for która iteruje od wartości a aż do 100 włącznie. W każdym przebiegu pętli wywoływana jest metoda document.write która wypisuje na ekranie bieżącą wartość zmiennej n. Ponieważ pętla kończy się na 100, ostatnia wartość która zostanie wypisana to 100. Dodatkowo zauważmy że po zakończeniu pętli funkcja zwraca wartość zmiennej n, która po zakończeniu pętli będzie równa 101. Jest to typowy wzorzec używany w JavaScript gdzie pętla jest wykorzystywana do iteracji po zbiorze wartości a po jej zakończeniu zwracana jest ostatnia wartość zmiennej sterującej. Praktyczne zastosowanie tej wiedzy obejmuje rozumienie podstawowych mechanizmów iteracji w JavaScript co jest kluczowe w programowaniu. Dobre praktyki wskazują na wyraźne rozdzielenie logiki wyświetlania od logiki zwracania wartości co ułatwia testowanie i utrzymanie kodu. Zwracanie wartości po pętli może być używane w sytuacjach gdy chcemy uzyskać informację o stanie końcowym iteracji co jest częstym scenariuszem w obliczeniach arytmetycznych lub przetwarzaniu danych.

Pytanie 40

W języku JavaScript stworzono funkcję o nazwie liczba_max, która porównuje trzy liczby naturalne przekazane jako argumenty i zwraca największą z nich. Jak powinno wyglądać prawidłowe wywołanie tej funkcji oraz uzyskanie jej wyniku?

A. liczba_max(a,b,c,wynik);
B. var wynik=liczba_max(a,b,c);
C. liczba_max(a,b,c)=wynik;
D. liczba_max(a,b,c);
Odpowiedzi takie jak "liczba_max(a,b,c);" nie są poprawne, ponieważ brak w nich przypisania wyniku funkcji do zmiennej. W języku JavaScript funkcje są wywoływane, ale ich rezultat musi być z miejsca przechowywany, jeśli mamy zamiar go wykorzystać. Prawidłowe wywołanie funkcji powinno zawsze uwzględniać kontekst, w którym wynik ma być użyty. W przypadku "liczba_max(a,b,c,wynik);" występuje nieprawidłowa liczba argumentów, ponieważ funkcja nie wymaga czwartego parametru, co prowadzi do błędów wykonania. Odpowiedź "liczba_max(a,b,c)=wynik;" również nie jest poprawna, ponieważ w JavaScript nie możemy przypisać wartości bezpośrednio do wywołania funkcji. To podejście narusza zasady składniowe języka. W przypadku kiedy spróbujemy zastosować takie zapisy, interpreter języka zgłosi błąd. Warto zauważyć, że błędne myślenie o strukturze funkcji i jej wywołaniu wynika często z nieznajomości podstaw składni oraz koncepcji programowania. Dobre praktyki w programowaniu rekomendują, aby zawsze przy wywołaniu funkcji, której wynik chcemy przechować, użyć operatora przypisania. W przeciwnym wypadku, nie będziemy mogli uzyskać dostępu do wartości, które funkcja generuje.