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: 7 maja 2026 12:28
  • Data zakończenia: 7 maja 2026 12:36

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

W języku JavaScript przedstawiona poniżej definicja jest definicją
var imiona=["Anna", "Jakub", "Iwona", "Krzysztof"];

A. obiektu.
B. kolekcji.
C. klasy.
D. tablicy.
W języku JavaScript definicja var imiona=["Anna", "Jakub", "Iwona", "Krzysztof"]; przedstawia tablicę, która jest jednym z fundamentalnych typów danych w tym języku. Tablice są używane do przechowywania zbiorów danych w sposób uporządkowany. W tym przypadku tablica imiona przechowuje cztery stringi, każdy reprezentujący imię. Wartością dodaną tablicy jest możliwość dostępu do poszczególnych elementów za pomocą indeksów, które zaczynają się od zera. Na przykład, imiona[0] zwróci \"Anna\", a imiona[1] zwróci \"Jakub\". W praktyce tablice są niezwykle przydatne w programowaniu, ponieważ pozwalają na łatwe zarządzanie i manipulację danymi. Dobrą praktyką jest używanie tablic do przechowywania związków danych, co umożliwia ich efektywne przetwarzanie i iterację za pomocą pętli, co zwiększa czytelność i organizację kodu. Warto również zaznaczyć, że tablice w JavaScript są obiektami, co daje dodatkowe możliwości manipulacji, takie jak metody tablicowe (np. push, pop, map, filter) do operacji na zbiorach danych. Poznanie i zrozumienie tablic jest kluczowe dla każdego programisty, ponieważ są one podstawą wielu algorytmów i struktur danych."

Pytanie 2

Jakiego zdarzenia trzeba użyć, aby funkcja JavaScript była uruchamiana za każdym razem, gdy użytkownik wprowadzi jakikolwiek znak do pola tekstowego?

A. onkeydown
B. onmouseout
C. onclick
D. onload
Odpowiedź 'onkeydown' jest w porządku! To zdarzenie działa za każdym razem, gdy ktoś naciska klawisz w polu edycyjnym. Świetnie nadaje się do monitorowania, co użytkownik wpisuje na bieżąco. Na przykład w formularzach można go użyć, żeby od razu sprawdzić, czy dane są poprawne. Dzięki temu użytkownik widzi, czy coś jest nie tak, co ogólnie poprawia użyteczność aplikacji. Poza tym, dobrym pomysłem jest nadawanie zrozumiałych nazw funkcjom, które reagują na te zdarzenia – pomaga to później w utrzymaniu kodu. Można też łączyć onkeydown z onkeyup czy onkeypress, żeby jeszcze lepiej kontrolować wprowadzane dane. To na pewno sprawi, że Twoja aplikacja będzie bardziej interaktywna.

Pytanie 3

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

A. slice()
B. replace()
C. concat()
D. trim()
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 4

Wyrażenie JavaScript:

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

Pytanie 5

W instrukcji warunkowej w języku JavaScript należy zweryfikować sytuację, w której zmienne a i b są większe od zera, przy czym zmienna b nie przekracza wartości 100. Taki warunek powinien być zapisany w następujący sposób:

A. if (a > 0 && b > 0 && b < 100) ...
B. if (a>0 || b> 0 || b > 100) ...
C. if (a>0 || (b> 0 && b<100)) ...
D. if (a > 0 && b > 0 || b > 100) ...
Warunek zapisany jako 'if (a > 0 && b > 0 && b < 100)' jest prawidłowy, ponieważ spełnia wszystkie wymagane kryteria. Składnia tego wyrażenia logicznego wskazuje, że zarówno zmienna 'a' musi być większa od zera, jak i zmienna 'b' musi być większa od zera oraz mniejsza od 100. Użycie operatora '&&' (AND) oznacza, że wszystkie warunki muszą być spełnione, aby blok kodu wewnątrz instrukcji 'if' został wykonany. To jest zgodne z najlepszymi praktykami programowania, które zalecają, aby warunki były wyraźnie zdefiniowane i logicznie powiązane, aby uniknąć nieporozumień i błędów. W praktycznych zastosowaniach, jeśli chcemy np. przyznać użytkownikowi dostęp do systemu tylko wtedy, gdy spełnione są konkretne kryteria, takie podejście zapewnia, że nasze instrukcje są wykonywane tylko w odpowiednich okolicznościach. Dodatkowo, definiując precyzyjnie nasze warunki, zwiększamy czytelność kodu, co jest kluczowe w projektach zespołowych, gdzie wiele osób może pracować nad tym samym kodem.

Pytanie 6

W języku skryptowym JavaScript operatory: || oraz && należą do grupy operatorów

A. logicznych.
B. bitowych.
C. arytmetycznych.
D. przypisania.
Operatory || oraz && w JavaScript to klasyczne operatory logiczne. Działają na wartościach, które można zinterpretować jako prawdę lub fałsz (tzw. wartości truthy i falsy) i zwracają wynik wyrażenia logicznego. && oznacza „i” logiczne – całe wyrażenie jest prawdziwe tylko wtedy, gdy oba operandy są traktowane jako prawdziwe. || oznacza „lub” logiczne – wystarczy, że jeden z operandów jest prawdziwy, żeby całe wyrażenie było uznane za prawdę. W praktyce bardzo często wykorzystuje się je w instrukcjach warunkowych, np.: if (isLoggedIn && isAdmin) { … } albo if (isMobile || isTablet) { … }. W JavaScript te operatory mają jeszcze jedną, moim zdaniem bardzo przydatną cechę: nie zwracają po prostu true/false, tylko konkretną wartość jednego z operandów. Na przykład: const name = userName || "Gość"; – jeśli userName jest wartością „falsy” (np. pusty string, null, undefined), to do name trafi "Gość". To jest tzw. krótkie spięcie (short-circuit evaluation): przy operatorze &&, jeśli pierwszy operand jest falsy, drugi nie jest już w ogóle obliczany; przy ||, jeśli pierwszy jest truthy, drugi też nie jest sprawdzany. W dobrych praktykach front-endu wykorzystuje się to do prostego ustawiania wartości domyślnych, zabezpieczania wywołań funkcji (np. callback && callback()) oraz budowania bardziej czytelnych warunków. Warto też pamiętać o różnicy między operatorami logicznymi (&&, ||, !) a porównania (===, !==), bo to są różne grupy operatorów, chociaż często używa się ich razem w tych samych warunkach. Z mojego doświadczenia, świadome używanie tych operatorów logicznych bardzo upraszcza kod i zmniejsza liczbę if-ów rozrzuconych po skryptach.

Pytanie 7

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

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: functon() { … }
}
A. trzy metody
B. trzy właściwości
C. dwie metody oraz jedną właściwość
D. dwie właściwości oraz jedną metodę
Analizując niepoprawne odpowiedzi, można zauważyć typowe błędy w zrozumieniu struktury obiektów w JavaScript. Odpowiedzi sugerujące, że obiekt ma trzy właściwości lub trzy metody, zbudowane są na błędnych założeniach dotyczących struktury obiektu. Obiekt `obiekt1` wyraźnie definiuje tylko dwie właściwości: `x` i `y`, co jest kluczowe dla zrozumienia, czym są właściwości w kontekście obiektów. Właściwości są to dane przechowywane w obiekcie, podczas gdy metody to funkcje przynależące do obiektu. Stwierdzenie, że obiekt ma trzy metody, błędnie interpretuje funkcję `wsp` jako wiele metod, podczas gdy w rzeczywistości jest to tylko jedna funkcja, a więc jedna metoda. Takie nieporozumienia mogą prowadzić do trudności w projektowaniu obiektów oraz ich późniejszym użytkowaniu. W praktyce, umiejętność prawidłowego identyfikowania właściwości i metod obiektów jest istotna w kontekście programowania obiektowego, które jest kluczowym paradygmatem w JavaScript. Niezrozumienie tych podstaw może skutkować błędami w kodzie, które są trudne do zdiagnozowania, zwłaszcza w większych projektach, gdzie struktura obiektów może być złożona. W związku z tym, zaleca się dokładne zapoznanie się z zasadami definiowania obiektów oraz ich składników, aby uniknąć takich nieporozumień w przyszłości.

Pytanie 8

W skrypcie JavaScript deklaracja zmiennych ma miejsce

A. zawsze z poprzedzającym nazwą znakiem $
B. w chwili pierwszego użycia zmiennej
C. wyłącznie na początku skryptu
D. tylko gdy określimy typ zmiennej oraz jej nazwę
Wybór błędnych odpowiedzi wynika z nieporozumienia dotyczącego zasad deklaracji zmiennych w JavaScript. Wiele osób ma tendencję do myślenia, że zmienne muszą być deklarowane na początku skryptu, co jest niezgodne z elastycznością, jaką oferuje ten język. Deklaracja tylko na początku skryptu ogranicza kreatywność i elastyczność programisty, ponieważ w praktyce można tworzyć zmienne w dowolnym momencie, w zależności od logiki programu. Innym błędnym przekonaniem jest konieczność podawania typu zmiennej przed jej nazwą. W przeciwieństwie do języków silnie typowanych, takich jak Java czy C#, JavaScript jest językiem słabo typowanym, co oznacza, że typ zmiennej jest określany dynamicznie w momencie przypisania wartości. Przykładowo, można zdefiniować zmienną jako liczbę, a następnie przypisać do niej wartość typu tekstowego bez żadnych problemów. Kolejną mylną zasadą jest stwierdzenie, że każda zmienna musi zaczynać się od znaku $. W rzeczywistości, znaki te (jak $ i _) są dozwolone jako pierwsze znaki identyfikatorów, ale nie są wymagane. Takie nieporozumienia mogą prowadzić do nieefektywnego pisania kodu oraz wprowadzania niezamierzonych błędów. Zrozumienie tych zasad jest kluczowe dla prawidłowego korzystania z JavaScript, co pozwala na tworzenie lepszych, bardziej efektywnych aplikacji oraz unikanie typowych błędów i pułapek w programowaniu.

Pytanie 9

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. bezpośrednie przypisanie do zmiennej osoba wartości "Adam"
C. pokazanie okna z pustym polem do edycji
D. uzyskanie z formularza wyświetlonego na stronie HTML imienia "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 10

Zapis przedstawiony w języku JavaScript oznacza, że

x = przedmiot.nazwa();
A. zmienna x będzie przechowywać wynik działania metody nazwa.
B. zmienna x będzie przechowywać wynik działania funkcji przedmiot.
C. nazwa to właściwość obiektu przedmiot.
D. nazwa to pole klasy przedmiot.
Rozważając inne proponowane odpowiedzi, należy zrozumieć, że język JavaScript często wykorzystuje programowanie obiektowe, gdzie właściwości i metody obiektów różnią się w użyciu. Pierwsza opcja sugeruje, że nazwa jest właściwością obiektu przedmiot, co jest błędne w kontekście przedstawionego kodu, ponieważ użyto nawiasów okrągłych, co jednoznacznie wskazuje na wywołanie metody, a nie na odwołanie się do właściwości. Druga opcja mówi o nazwie jako polu klasy przedmiot, co jest mylące, ponieważ w JavaScript nie istnieje formalny podział na pola i metody w taki sposób, jak w statycznie typowanych językach jak Java czy C++. JavaScript, jako język dynamiczny, używa właściwości obiektu do przechowywania zarówno danych, jak i funkcji. Czwarta propozycja, że zmienna x będzie przechowywać wynik działania funkcji przedmiot, również jest błędna, ponieważ w kodzie widzimy wywołanie metody nazwa() na obiekcie przedmiot, a nie wywołanie funkcji przedmiot. Typowe błędy myślowe mogą wynikać z niewłaściwego rozróżnienia między funkcjami i metodami, czy też z niepoprawnego przypisywania ról poszczególnym elementom składni w dynamicznie typowanych językach, co prowadzi do nieporozumień w kontekście konwencji programistycznych stosowanych w JavaScript.

Pytanie 11

Jak można opisać przedstawiony obiekt w JavaScript?

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: function() { ... }
}
A. dwiema metodami i jedną właściwością
B. trzema metodami
C. trzema właściwościami
D. dwiema właściwościami i jedną metodą
W języku JavaScript obiekty są fundamentalną częścią języka, umożliwiającą przechowywanie i manipulowanie danymi w sposób bardziej uporządkowany. W podanym przykładzie obiekt zawiera dwie właściwości z wartościami liczbowymi oraz jedną metodę. Częstym błędem jest mylenie właściwości z metodami. Właściwość to statyczna wartość przypisana do klucza, natomiast metoda to funkcja przypisana do klucza, którą można wywołać. Niewłaściwe zrozumienie tej różnicy może prowadzić do błędnego interpretowania struktury obiektu. Zrozumienie poprawnego rozróżniania między właściwościami a metodami jest kluczowe w programowaniu obiektowym, które kładzie nacisk na modularność i wielokrotne używanie kodu. Programiści muszą również pamiętać, że struktura obiektu w JavaScript pozwala na dynamiczne dodawanie nowych właściwości i metod, co czyni ten język elastycznym i potężnym narzędziem w tworzeniu dynamicznych aplikacji internetowych. Błędem jest przypuszczanie, że każda deklaracja w obiekcie jest metodą, co może wynikać z niezrozumienia, że metody muszą zawierać fragment funkcji. Właściwe rozpoznanie tych elementów jest niezbędne do efektywnego wykorzystania zasad programowania obiektowego oraz tworzenia bardziej złożonych i skalowalnych aplikacji.

Pytanie 12

Liczba 0x142, przedstawiona w kodzie JavaScript, przyjmuje formę

A. szesnastkową
B. ósemkową
C. dziesiętną
D. dwójkową
Liczba 0x142 jest zapisana w systemie szesnastkowym, co oznacza, że jest reprezentowana w bazie 16. W systemie szesnastkowym posługujemy się cyframi od 0 do 9 oraz literami od A do F, gdzie A odpowiada 10, B to 11, C to 12, D to 13, E to 14, a F to 15 w systemie dziesiętnym. Przykład zastosowania tego systemu można zauważyć w programowaniu oraz w różnych standardach, takich jak HTML, gdzie kolory są często reprezentowane w formacie szesnastkowym, np. #FFFFFF dla bieli. Można także spotkać się z systemem szesnastkowym w adresacji pamięci oraz w reprezentacji liczb dużych, co jest szczególnie przydatne w kontekście programowania niskopoziomowego i systemów wbudowanych. Zrozumienie różnych systemów liczbowych, w tym szesnastkowego, jest niezbędne dla każdego programisty, szczególnie podczas pracy z danymi binarnymi, hex i podczas obliczeń niskopoziomowych.

Pytanie 13

W języku JavaScript, aby zweryfikować, czy liczba leży w zakresie 100,200>, należy użyć:

A. if(liczba<100 && liczba<=200)
B. if(liczba>100 && liczba <=200)
C. if(liczba<100 || liczba>=200)
D. if (liczba>100 || liczba<=200)
Aby sprawdzić, czy liczba znajduje się w przedziale od 100 do 200 włącznie w języku JavaScript, należy użyć operatora logicznego AND (&&). Wyrażenie if(liczba > 100 && liczba <= 200) oznacza, że liczba musi być większa niż 100 oraz jednocześnie mniejsza lub równa 200. Przykład: jeśli mamy liczby 150 i 250, to 150 spełnia warunki tego warunku (jest większa od 100 i mniejsza lub równa 200), podczas gdy 250 nie spełnia (jest większa od 200). Kluczowe jest zrozumienie operatorów porównania oraz logicznych w JavaScript. Zgodnie z ECMAScript, językiem, na którym oparty jest JavaScript, użycie operatora AND w tym kontekście jest standardowym podejściem do określenia, czy wartość znajduje się w danym przedziale. Poprawne użycie tych operatorów jest istotne dla logiki programów oraz dostosowywania warunków do różnych sytuacji, co jest niezbędne w codziennej pracy programisty.

Pytanie 14

Fragmenty kodu JavaScript w dokumencie HTML mogą być umieszczone

A. zarówno w sekcji <head>, jak i <body>, w znaczniku <script>
B. wyłącznie w sekcji <body>, w znaczniku <java>
C. wyłącznie w sekcji <head>, w znaczniku <script>
D. zarówno w sekcji <head>, jak i <body>, w znaczniku <java>
Wstawianie kodu JavaScript w dokumenty HTML to naprawdę istotna sprawa. Dzięki temu możemy dodawać różne interaktywne funkcje do naszych stron. Warto wiedzieć, że umiejscowienie tego kodu ma ogromne znaczenie dla tego, jak szybko strona się ładowała. Możemy wstawić skrypty w sekcji <head> albo w <body>, ale zawsze muszą być w znaczniku <script>. Kiedy wrzucamy kod do <head>, skrypty ładują się przed resztą zawartości, co może trochę spowolnić ładowanie strony, bo przeglądarka musi najpierw załadować skrypty. Z drugiej strony, jeśli wstawimy je na dole w <body>, strona ładowana jest szybciej, bo najpierw widzimy zawartość, co jest lepsze dla użytkownika. Dobrze też korzystać z atrybutów async lub defer, żeby poprawić wydajność ładowania. Zgodnie z wytycznymi W3C, używanie znacznika <script> to najlepszy sposób na zapewnienie, że wszystko działa, a skrypty są kompatybilne z przeglądarkami. Można to zobaczyć na przykład, gdy chcemy użyć biblioteki jQuery lub dodać jakieś interaktywne elementy na stronie.

Pytanie 15

W JavaScript, wynik operacji przyjmuje wartość NaN, gdy skrypt usiłuje przeprowadzić

A. funkcję parseInt zamiast parseFloat na zmiennej numerycznej
B. operację arytmetyczną, a zawartość zmiennej była tekstem
C. funkcję, która sprawdza długość stringa, a zawartość zmiennej była liczba
D. operację arytmetyczną na dwóch dodatnich zmiennych liczbowych
W pytaniu zwrócono uwagę na różne operacje, które mogą prowadzić do uzyskania wartości NaN w JavaScript. Jednak nie wszystkie wymienione przypadki są związane z generowaniem tej wartości. Przykładowo, korzystanie z parseFloat zamiast parseInt przy konwersji zmiennych liczbowych nie ma wpływu na wynik operacji arytmetycznych i nie prowadzi do NaN. Funkcja parseFloat konwertuje ciąg znaków na liczbę zmiennoprzecinkową, podczas gdy parseInt konwertuje na liczbę całkowitą. W obu przypadkach, jeśli ciąg jest odpowiedni, wynik zawsze będzie liczbą, a nie NaN. Kolejną sytuacją jest sprawdzanie długości napisu; jeśli zmienna jest liczbą, operacje związane z długością nie wpływają na typ danych, więc nie powinny generować NaN. Trzeci przypadek, czyli działanie arytmetyczne na dwóch zmiennych liczbowych dodatnich, również nie prowadzi do uzyskania NaN, ponieważ operacje są poprawnie wykonywane. Zrozumienie tych koncepcji jest niezwykle ważne, aby unikać typowych błędów i nieporozumień, które mogą wystąpić w kodzie. Kluczowym zagadnieniem w programowaniu w JavaScript jest zarządzanie typami danych, a ich niewłaściwe użycie może prowadzić do trudnych do zdiagnozowania błędów w aplikacjach.

Pytanie 16

W języku JavaScript zapis ```x = przedmiot.nazwa();``` oznacza, że

A. zmienna x będzie przechowywać wynik działania funkcji przedmiot.
B. nazwa jest właściwością obiektu przedmiot.
C. nazwa jest polem klasy przedmiot.
D. zmienna x będzie przechowywać wynik działania metody nazwa.
Twoja odpowiedź jest niepoprawna. Wybierając opcję, że 'nazwa jest właściwością obiektu przedmiot' możesz mylić funkcje i właściwości. Właściwości to wartości przechowywane w obiekcie, natomiast metody to funkcje związane z obiektem. Jeśli zapis jest w formie 'przedmiot.nazwa();', to 'nazwa' jest metodą, a nie właściwością obiektu. Druga niepoprawna odpowiedź, 'nazwa jest polem klasy przedmiot', sugeruje, że JavaScript jest językiem typu klasowego, jak Java czy C#. W rzeczywistości, JavaScript jest językiem prototypowym, co oznacza, że nie ma klas. Zamiast tego, obiekty dziedziczą bezpośrednio od innych obiektów. Ostatnia niepoprawna odpowiedź, 'zmienna x będzie przechowywać wynik działania funkcji przedmiot', prawdopodobnie wynika z niezrozumienia różnicy między metodami a wolno stojącymi funkcjami. W JavaScript, funkcje są 'wolno stojące', co oznacza, że nie są związane z żadnym obiektem, podczas gdy metody są funkcjami zdefiniowanymi na obiekcie.

Pytanie 17

Warunek zapisany w JavaScript będzie prawdziwy, gdy zmienna x posiada

Ilustracja do pytania
A. wartość, która nie jest liczbą
B. dowolną dodatnią wartość liczbową
C. pusty ciąg znaków
D. dowolną całkowitą wartość liczbową
W JavaScript warunek zapisany jako if (!isNaN(x) && x > 0) sprawdza dwie rzeczy jednocześnie. Po pierwsze, użycie funkcji isNaN(x) w negacji oznacza, że zmienna x musi być wartością liczbową. Funkcja isNaN() zwraca true, jeśli wartość nie jest liczbą, więc jego negacja wymaga, aby x było liczbą. Po drugie, x > 0 wymaga, aby liczba była większa od zera, czyli dodatnia. To sprawia, że warunek jest prawdziwy tylko wtedy, gdy x jest dowolną dodatnią wartością liczbową. W praktyce takie sprawdzenie jest używane na przykład w walidacji danych wejściowych, kiedy chcemy upewnić się, że użytkownik podał poprawną wartość liczbową, która ma znaczenie w kontekście aplikacji, na przykład w przypadku formularzy zamówień, gdzie cena produktu musi być dodatnia. Użycie takich warunków odzwierciedla dobre praktyki programistyczne, gdzie walidacja i sprawdzanie poprawności danych są kluczowe dla stabilności i bezpieczeństwa aplikacji. Podsumowując, poprawne rozumienie i implementacja takiego warunku pomaga unikać błędów logicznych i zapewnia, że aplikacja działa zgodnie z oczekiwaniami.

Pytanie 18

W języku JavaScript stworzono zmienną i, która będzie przechowywać wynik dzielenia równy 1, to

A. var i=Number(3/2)
B. var i=3/2
C. var i=parseInt(3/2)
D. var i=parseFloat(3/2)
Wybór 'var i=parseInt(3/2);' jest właściwy, ponieważ funkcja parseInt służy do konwersji wartości liczbowych na liczby całkowite. W tym przypadku, wyrażenie 3/2 zwraca wartość 1.5, a funkcja parseInt zamienia tę wartość na 1, co jest zgodne z oczekiwanym wynikiem. Warto zauważyć, że parseInt zawsze zwraca najbliższą liczbę całkowitą, zaokrąglając w dół, co czyni ją idealnym narzędziem do realizacji tego celu. W JavaScript istnieje wiele sposobów na konwersję wartości liczbowych, a parseInt jest jednym z najczęściej używanych, gdyż pozwala na przetwarzanie tekstów i liczb w zrozumiały sposób. Przykładowo, jeśli mamy stringa '10.5', użycie parseInt('10.5') da wynik 10. Odniesienie do standardów JavaScript w kontekście konwersji typów można znaleźć w dokumentacji ECMAScript, która definiuje zasady działania funkcji konwertujących. Dobrą praktyką jest również zwrócenie uwagi na radzenie sobie z typami danych w JavaScript, aby uniknąć nieporozumień w przyszłości.

Pytanie 19

Jakie będzie wyjście programu napisanego w języku JavaScript, umieszczonego w ramce, po podaniu wartości 5 na wejściu?

Ilustracja do pytania
A. 125
B. 60
C. 120
D. 625
Program przedstawiony w pytaniu służy do obliczenia silni liczby n wprowadzonej przez użytkownika. Zrozumienie, dlaczego wynik wynosi 120, a inne odpowiedzi są błędne, wymaga dokładnego prześledzenia, jak działa silnia i jak przebiega obliczenie w pętli for. Silnia liczby n, zapisywana jako n!, to iloczyn wszystkich liczb od 1 do n. Dla wartości 5, program oblicza 5! jako 5*4*3*2*1, co daje 120. Błędne odpowiedzi wynikają zazwyczaj z niepoprawnego zrozumienia zasady działania pętli oraz operacji matematycznych. Na przykład, wynik 60 mógłby sugerować niepełne wykonanie iteracji, na przykład jeśli pętla kończyłaby się wcześniej, ale kod jasno określa, że iteruje od n do 2. Wynik 125 mógłby być wynikiem błędnego użycia operatorów matematycznych, np. dodawania zamiast mnożenia. Odpowiedź 625 mogłaby sugerować niepoprawną interpretację, gdzie liczba 5 zostałaby błędnie pomnożona przez samą siebie pięciokrotnie, co nie dotyczy silni. Takie błędy są powszechne w kontekście programowania, gdzie operatory i zakresy iteracji muszą być prawidłowo zrozumiane i zastosowane. Rozumienie poprawnego działania pętli for oraz operatora *= jest kluczowe dla uniknięcia takich błędów i poprawnego implementowania algorytmów matematycznych w kodzie. Praktyka i analiza przykładowych problemów mogą znacznie poprawić zdolność do pisania skutecznego i bezbłędnego kodu.

Pytanie 20

Dane z pola input o typie number zostały zapisane do zmiennej a, a następnie przetworzone w kodzie JavaScript w sposób następujący: ```var x = parseFloata);``` Jakiego typu będzie zmienna x?

A. NaN
B. zmiennoprzecinkowego
C. liczbowego, całkowitego
D. napisowego
Widzisz, zmienna x dostaje wartość z funkcji parseFloat, która zmienia coś z pola input typu number na liczbę zmiennoprzecinkową. To jest dość standardowa funkcja w JavaScript, często używana do zamiany tekstu (czyli stringów) na liczby zmiennoprzecinkowe. Na przykład, jak w polu input masz '123.45', to po napisaniu var x = parseFloat(a);, x stanie się liczbą 123.45. Tylko pamiętaj, że jak przekazany tekst nie może być zmieniony na liczbę, to dostaniesz NaN (czyli Not-a-Number). Ta funkcja jest zgodna z ECMAScript i jest naprawdę przydatna, np. w sytuacjach, gdy trzeba walidować dane, które użytkownicy wprowadzają. Twoja odpowiedź jest na plus, bo korzystając z parseFloat, dostajesz typ zmiennoprzecinkowy, co jest ważne w obliczeniach matematycznych. Zresztą, dokładność w tych wartościach liczbowych jest kluczowa.

Pytanie 21

W języku JavaScript, aby uzyskać podciąg tekstu pomiędzy wskazanymi indeksami, należy skorzystać z metody

A. slice()
B. concat()
C. replace()
D. trim()
Wybór innych metod do manipulacji napisami może wynikać z nieporozumienia dotyczącego ich funkcji. Metoda trim() służy do usuwania białych znaków z początku i końca napisu, co jest przydatne w kontekście walidacji danych wejściowych, ale nie pozwala na wydzielanie fragmentów napisu. Z kolei concat() jest zarezerwowana do łączenia dwóch lub więcej napisów w jeden, co również nie ma związku z wydzielaniem fragmentów. Użytkownicy często mylą concat() z slice(), błędnie sądząc, że obie metody operują na podobnych zasadach, gdyż obydwie dotyczą manipulacji napisami, jednak ich funkcjonalność jest całkowicie różna. Metoda replace() pozwala na zamianę określonych fragmentów tekstu na inne, co jest przydatne w kontekście przetwarzania danych, jednak również nie odpowiada na pytanie o wydzielanie segmentów. Typowe błędy w myśleniu na ten temat mogą wynikać z niepełnego zrozumienia celów tych metod oraz ich zastosowania w praktyce. Aby uniknąć takich nieporozumień, warto zwrócić uwagę na dokumentację JavaScript oraz praktykować ich zastosowanie w różnych scenariuszach, co z pewnością pomoże w zrozumieniu różnicy między tymi metodami.

Pytanie 22

Jaki jest cel zapisu w języku JavaScript?

var napis1 = new napisy();
A. wykonanie metody obiektu napisy
B. stworzenie obiektu napis1 z klasy napisy
C. założenie nowej klasy napis1
D. zainicjowanie zmiennej napis1 oraz wywołanie funkcji, której argumentem jest napis1
Niepoprawne odpowiedzi wynikają z niepełnego zrozumienia procesu tworzenia obiektów w JavaScript. Propozycja zadeklarowania zmiennej i wywołania funkcji z argumentem napis1 nie odpowiada rzeczywistej funkcjonalności przedstawionego kodu. Zadeklarowanie zmiennej w JavaScript jest kluczowym krokiem, ale bez poprawnego użycia słowa kluczowego new oraz odpowiednio zdefiniowanej funkcji lub klasy nie można stworzyć instancji obiektu. Natomiast wywołanie funkcji z argumentem napis1 sugeruje, że mamy do czynienia z operacją na już istniejącym obiekcie, co nie ma miejsca w kontekście inicjalizacji obiektu. Próba wywołania metody obiektu napisy nie jest poprawna, ponieważ najpierw trzeba utworzyć instancję obiektu, a dopiero potem można wywoływać jego metody. Bez tego kroku każda próba pracy z metodami zakończy się błędem. Wreszcie, stworzenie nowej klasy napis1 byłoby sprzeczne z pokazanym kodem, ponieważ żaden element składni nie sugeruje deklaracji klasy. W języku JavaScript klasy są definiowane z użyciem słowa kluczowego class, które w analizowanym kodzie nie występuje. Zrozumienie procesu tworzenia obiektów oraz wykorzystania klas i konstruktorów w JavaScript jest fundamentalne, aby efektywnie pisać oraz zarządzać kodem w tym języku. Poprawne rozpoznanie i stosowanie tych mechanizmów pozwala na tworzenie bardziej złożonych i elastycznych aplikacji.

Pytanie 23

W języku JavaScript trzeba zapisać warunek, który będzie prawdziwy, gdy zmienna a będzie jakąkolwiek liczbą naturalną dodatnią (bez 0) lub zmienna b przyjmie wartość z zamkniętego przedziału od 10 do 100. Wyrażenie logiczne w tym warunku ma formę

A. (a>0) && ((b>=10) && (b<=100))
B. (a>0) && ((b>=10) || (b<=100))
C. (a>0) || ((b>=10) || (b<=100))
D. (a>0) || ((b>=10) && (b<=100))
Pierwsza odpowiedź (a>0) || ((b>=10) || (b<=100)) jest niepoprawna, ponieważ używa operatora || w kontekście sprawdzania wartości zmiennej b w sposób, który nie ogranicza jej do przedziału od 10 do 100. Wyrażenie (b>=10) || (b<=100) oznacza, że b może być mniejsze niż 10, co jest sprzeczne z wymaganiami dotyczącymi przedziału. W związku z tym, ta konstrukcja może dopuścić do sytuacji, w której b ma wartość poniżej 10, co nie jest akceptowalne. Kolejna niepoprawna odpowiedź (a>0) && ((b>=10) || (b<=100)) wymaga, aby obydwa warunki były prawdziwe, co również prowadzi do błędnego sprawdzenia. Operator && wymusza spełnienie obu warunków, a zatem jeśli a jest większe od 0, ale b jest mniejsze niż 10, cała konstrukcja zwróci false, co czyni ją nieodpowiednią dla zadanych wymagań. Ostatnia niepoprawna opcja (a>0) && ((b>=10) && (b<=100)) również jest niewłaściwa, ponieważ zamiast umożliwić elastyczność w spełnianiu warunku, wymaga, aby obydwa warunki były prawdziwe jednocześnie. W kontekście zadania, nie możemy narzucić, aby a i b musiały być prawdziwe w tym samym czasie, co uniemożliwia skuteczne sprawdzenie jednej z opcji, przez co odpowiedź nie spełnia wymagań zadania. W związku z tym, wszystkie te odpowiedzi są niepoprawne w kontekście zadania, które wymaga dwóch odrębnych warunków do spełnienia.

Pytanie 24

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

A. includes()
B. valueOf()
C. substr()
D. repeat()
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 25

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

Pytanie 26

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia między klientem a serwerem oraz umożliwia wymianę danych bez przeładowania całej strony WWW?

A. XML
B. PHP
C. AJAX
D. YBScript
AJAX, czyli Asynchronous JavaScript and XML, to naprawdę fajna technika, która pozwala na komunikację między klientem a serwerem bez konieczności przeładowywania całej strony. To znaczy, że możemy wysyłać i odbierać dane w tle, co jest mega wygodne. Dzięki temu możemy np. aktualizować tylko część strony, kiedy użytkownik coś kliknie. Dużo nowoczesnych aplikacji, jak Gmail, korzysta z AJAX, żeby dynamicznie ładować i wysyłać e-maile. W praktyce, gdy użytkownik wysyła wiadomość, to nie musi czekać, aż załaduje się cała strona, żeby zobaczyć nową treść. AJAX współpracuje z różnymi technologiami, jak JSON, co ułatwia wymianę danych w formacie, który JavaScript bez problemu przetwarza. Generalnie, standardy webowe mówią, że warto korzystać z AJAX, bo poprawia to wydajność i responsywność aplikacji. Dlatego jest to narzędzie, które każdy nowoczesny deweloper stron powinien mieć w swoim arsenale.

Pytanie 27

W JavaScript zdarzenie onKeydown zostanie wywołane, gdy klawisz

A. myszki będzie wciśnięty
B. klawiatury będzie wciśnięty
C. myszki będzie zwolniony
D. klawiatury będzie zwolniony
Odpowiedź, że zdarzenie onKeydown jest wywoływane, gdy klawisz klawiatury został naciśnięty, jest prawidłowa, ponieważ onKeydown jest zdarzeniem, które reaguje na pierwszą interakcję użytkownika z klawiaturą. W praktyce oznacza to, że gdy użytkownik naciśnie dowolny klawisz na klawiaturze, np. literę, cyfrę lub klawisz funkcyjny, zdarzenie onKeydown zostanie wywołane. Jest to kluczowe w kontekście tworzenia interaktywnych aplikacji webowych, ponieważ pozwala programistom na obsługę wejścia użytkownika w czasie rzeczywistym. Na przykład, w aplikacji do edycji tekstu, można wykorzystać onKeydown do aktualizacji zawartości edytora na podstawie wprowadzanego tekstu, co zapewnia płynne doświadczenie użytkownika. Dobrym przykładem zastosowania tego zdarzenia jest również implementacja gier, w których ruchy postaci lub akcje są wykonywane w odpowiedzi na naciśnięcia klawiszy. W standardach W3C dotyczących dostępu i interakcji z użytkownikiem, zdarzenie onKeydown uwzględnia również kwestie dostępności, co jest istotne dla projektowania inkluzywnych aplikacji.

Pytanie 28

W formularzu, wartości z pola input o typie number zostały przypisane do zmiennej a, a następnie przetworzone w skrypcie JavaScript w pokazany sposób. Jaki typ będzie miała zmienna x?

var x = parseInt(a);
A. NaN
B. liczbowy, całkowity
C. napisowy
D. zmiennoprzecinkowy
Funkcja parseInt() w JavaScript jest super przydatna, bo pozwala zamienić ciąg znaków na liczbę całkowitą. Jak masz zmienną a, która bierze dane z inputu typu number, to parseInt() łapie te liczby i wyrzuca wszystko, co nie jest cyfrą. Dzięki temu dostajesz liczby całkowite. Warto wiedzieć, że ta funkcja nie zaokrągla wyników, tylko obcina część dziesiętną. To świetna opcja, gdy potrzebujesz tylko całkowitych wartości. parseInt() dobrze działa w programowaniu – często wykorzystuje się go do walidacji i manipulacji liczbami. Z mojego doświadczenia, kiedy pracujesz z różnymi typami danych, musisz zadbać, żeby przekształcenia były na miejscu, bo to bardzo ważne dla aplikacji. Użycie parseInt() jest zgodne z zasadami ECMAScript, co oznacza, że działa w różnych środowiskach JavaScript. Przykładem dobrego zastosowania są aplikacje webowe, gdzie często potrzebujesz liczb całkowitych, na przykład w kalkulatorach czy formularzach z wyborem ilości produktów.

Pytanie 29

W języku Javascript obiekt typu array jest używany do przechowywania

A. wielu wartości jedynie liczbowych
B. wielu wartości lub metod
C. wielu wartości jedynie tekstowych
D. wielu wartości różnych typów
Obiekt typu array w języku JavaScript jest niezwykle potężnym narzędziem, które pozwala na przechowywanie wielu wartości dowolnego typu w jednej zmiennej. W przeciwieństwie do niektórych innych języków programowania, JavaScript pozwala na umieszczanie w tablicach zarówno liczb, jak i stringów, obiektów, a nawet funkcji. Dzięki temu programiści mogą tworzyć złożone struktury danych, które są elastyczne i dopasowane do ich potrzeb. Przykładem praktycznego zastosowania tablicy może być tworzenie listy użytkowników, gdzie każdy element tablicy może być obiektem użytkownika zawierającym różne właściwości, takie jak imię, nazwisko, adres e-mail itd. Dobrymi praktykami przy korzystaniu z tablic w JavaScript są stosowanie metod takich jak map, filter, reduce, które ułatwiają manipulację danymi oraz dbałość o czytelność kodu, co sprzyja jego późniejszej konserwacji. Warto także pamiętać o tym, że tablice są dynamiczne, co oznacza, że można je modyfikować w trakcie działania programu, co daje dodatkową elastyczność.

Pytanie 30

Skrypt w JavaScript, który obsługuje wynagrodzenia pracowników, powinien stworzyć raport dla tych, którzy są zatrudnieni na umowę o pracę oraz otrzymują wynagrodzenie w przedziale domkniętym od 4000 do
4500 zł. Jaki warunek należy zastosować do wygenerowania raportu?

A. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
B. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
C. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
D. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
Odpowiedź umowa == 'praca' && (pensja >= 4000 && pensja <= 4500) jest poprawna, ponieważ precyzyjnie określa warunki, jakie muszą być spełnione, aby wygenerować raport. Warunek umowa == 'praca' zapewnia, że analizujemy tylko pracowników zatrudnionych na umowę o pracę, co jest kluczowe w kontekście raportowania. Dodatkowo zastosowanie operatora logicznego '&&' w połączeniu z zakresowym sprawdzeniem pensji (pensja >= 4000 && pensja <= 4500) skutkuje tym, że raport zostanie wygenerowany wyłącznie dla pracowników, których pensja mieści się w ścisłym przedziale od 4000 do 4500 zł. To podejście jest zgodne z dobrymi praktykami programistycznymi, gdzie ważne jest, aby warunki były ściśle zdefiniowane, co pozwala uniknąć nieporozumień i błędów w danych. Przykładowo, jeżeli stworzymy funkcję generującą raport, możemy ją łatwo zaimplementować w systemie hr, co pozwoli na automatyzację procesów związanych z płacami oraz raportowaniem, a także zwiększy przejrzystość i precyzję w zarządzaniu danymi finansowymi.

Pytanie 31

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. Przyjmuje trzy parametry, lecz nie zwraca wartości.
B. Ma dwa parametry liczbowe i zwraca wartość typu napisowego.
C. Zwraca dwie wartości przechowywane w zmiennych a i b.
D. Ma trzy parametry wejściowe, w tym jeden typu napisowego, i zwraca wartość numeryczną.
Gratulacje, Twoja odpowiedź jest poprawna. Istotą funkcji w JavaScript jest to, że mogą one przyjmować dowolną liczbę argumentów i mogą zwracać wartość. W przypadku funkcji fun1, przyjmuje ona trzy parametry: a, b, c. Parametr c jest typu napisowego, co jest istotne, ponieważ JavaScript jest językiem słabo typowanym, co oznacza, że możemy przekazywać różne typy zmiennych jako argumenty dla funkcji. Funkcja fun1 zwraca wynik mnożenia dwóch pierwszych parametrów, co jest wartością numeryczną. To jest zgodne z zasadami JavaScript, gdzie funkcje mogą zwracać dowolne wartości - w tym przypadku wartość numeryczną. W praktyce, funkcje takie jak ta mogą być używane w różnych kontekstach, na przykład do manipulacji danymi wejściowymi i zwracania przetworzonych wyników.

Pytanie 32

Która z poniższych opcji najlepiej opisuje przedstawioną definicję w JavaScript?

var imiona = ["Anna", "Jakub", "Iwona", "Krzysztof"];
A. zbioru
B. tablicy
C. obiektu
D. klasy
Definicja przedstawiona na obrazku odpowiada tablicy w języku JavaScript. Tablice w JavaScript są typem obiektu, który pozwala na przechowywanie wielu wartości w jednej zmiennej. W tym przypadku zmienna imiona zawiera listę stringów reprezentujących imiona. Tablice w JavaScript są dynamiczne co oznacza że ich rozmiar można zmieniać podczas działania programu. Dostęp do poszczególnych elementów tablicy uzyskuje się za pomocą indeksów które zaczynają się od zera. Na przykład pierwszy element tej tablicy to imiona[0] czyli Anna. JavaScript oferuje wiele metod do manipulacji tablicami takich jak push do dodawania elementów na końcu tablicy pop do usuwania ostatniego elementu czy map do tworzenia nowej tablicy na podstawie istniejącej poprzez zastosowanie funkcji do każdego elementu. Zrozumienie działania tablic jest kluczowe dla efektywnego programowania w JavaScript ponieważ są one podstawowym narzędziem do przechowywania i zarządzania danymi.

Pytanie 33

Która z komend w języku JavaScript pozwala na zmianę koloru tekstu na niebieski w akapicie określonym w pliku HTML?

A. document.getElementById("jeden").style.color = "blue";
B. document.getElementById("jeden").color = "blue";
C. document.getElementById("jeden").style.background-color = "blue";
D. document.getElementById("jeden").background-color = "blue";
Twoja odpowiedź document.getElementById("jeden").style.color = "blue" jest jak najbardziej trafna. Tu wykorzystujesz metodę document.getElementById, co pozwala na dotarcie do konkretnego elementu HTML, który ma identyfikator "jeden". To akurat odnosi się do tego akapitu <p id="jeden">. Później, używając właściwości style.color, zmieniasz kolor tekstu tego elementu na niebieski. To całkiem standardowy sposób, żeby dynamicznie zmieniać style CSS za pomocą JavaScript. W interaktywnych aplikacjach internetowych tak się często robi, bo zmiany kolorów na stronie są potrzebne, kiedy użytkownik klika w różne rzeczy. Na przykład, w takich aplikacjach zmiany kolorów elementów w odpowiedzi na działania użytkowników są mega ważne. Właściwie, korzystanie z metod DOM (Document Object Model) w taki sposób jest kluczowe dla tworzenia interaktywnych i responsywnych interfejsów, co jest bardzo istotne przy budowaniu stron internetowych.

Pytanie 34

W języku JavaScript trzeba sformułować warunek, który będzie spełniony, gdy zmienna a będzie dowolną liczbą naturalną dodatnią (więcej niż 0) lub gdy zmienna b będzie dowolną liczbą z przedziału domkniętego od 10 do 100. Wyrażenie logiczne w tym warunku powinno mieć postać

A. (a > 0) && ((b >= 10) || (b <= 100))
B. (a > 0) && ((b >= 10) && (b <= 100))
C. (a > 0) || ((b >= 10) || (b <= 100))
D. (a > 0) || ((b >= 10) && (b <= 100))
Pierwsza odpowiedź (a > 0) && ((b >= 10) && (b <= 100)) opiera się na błędnym założeniu, że oba warunki muszą być spełnione jednocześnie, co jest sprzeczne z wymaganiami. W kontekście tego pytania, aby warunek był prawdziwy, wystarczy, że przynajmniej jeden z podanych warunków będzie spełniony. To podejście prowadzi do niepotrzebnej ścisłości, ograniczając funkcjonalność programu. Druga odpowiedź (a > 0) && ((b >= 10) || (b <= 100)) również jest myląca; operator logiczny '||' w kontekście zmiennej b sugeruje, że b może być mniejsze niż 10 lub większe niż 100, co nie spełnia wymagań, które określają, że b musi być w przedziale 10-100. Trzecia odpowiedź (a > 0) || ((b >= 10) || (b <= 100)) wprowadza dodatkowe zamieszanie, ponieważ druga część warunku znowu nie wymusza, aby b znajdowało się w odpowiednim zakresie. Przypadki takie jak te wskazują na typowe błędy logiczne, gdzie programiści mogą mylnie interpretować potrzeby warunku, co skutkuje błędami w kodzie. Kluczowe jest zrozumienie, jak działają operatory logiczne oraz jakie są ich konsekwencje w kontekście projektowania warunków. Właściwe użycie operatorów jest fundamentem skutecznego programowania, a unikanie takich pułapek jest kluczowe dla tworzenia stabilnych aplikacji.

Pytanie 35

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. W klauzuli if użyto przypisania zamiast porównania
B. Brak średnika przed klauzulą else
C. Zmienne zostały zadeklarowane w niewłaściwy sposób
D. Zawartość sekcji if oraz else powinna być zamieniona miejscami
W kontekście analizy błędów w kodzie JavaScript, istnieje kilka odpowiedzi, które nie są poprawne. Po pierwsze, stwierdzenie, że zmienne zostały nieprawidłowo zadeklarowane, jest mylące. W rzeczywistości zmienne x i y zostały zadeklarowane poprawnie za pomocą słowa kluczowego var, co jest standardową praktyką w JavaScript. Wartości, które przypisano do tych zmiennych, są również poprawne i zgodne z typem liczbowym. Po drugie, stwierdzenie, że przed klauzulą else nie powinno być średnika, również nie jest adekwatne. W JavaScript średnik jest opcjonalny na końcu instrukcji, a jego brak w tym przypadku nie wpływa na działanie programu. Klauzula else działa prawidłowo, niezależnie od obecności średnika w kodzie. Ponadto, twierdzenie, że instrukcje wewnątrz sekcji if oraz else powinny być zamienione miejscami, jest błędne, ponieważ logika programu nie wymaga takiej zamiany. Program powinien najpierw sprawdzić, czy zmienne są równe, a następnie zareagować w zależności od wyniku tego porównania. Właściwa struktura kontrolna jest kluczowa dla poprawności działania kodu, dlatego zamiana sekcji if i else prowadziłaby do wyświetlania błędnych komunikatów.

Pytanie 36

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

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

Pytanie 37

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. zwrócenie parzystych wartości liczb od a do b
B. wypisanie wszystkich liczb w zakresie od a do b
C. sprawdzenie, czy liczba a jest liczbą nieparzystą; jeśli tak, to jej wypisanie
D. wypisanie liczb parzystych w przedziale 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 38

W JavaScript metoda getElementById odnosi się do

A. zmiennej numerycznej
B. klasy zdefiniowanej w CSS
C. znacznika HTML o wskazanym id
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 39

W skrypcie JavaScript, aby uzyskać dane od użytkownika, można wykorzystać okno wyświetlane przez funkcję

A. alert()
B. confirm()
C. prompt()
D. documet.write()
Funkcja prompt() w JavaScript jest specjalnie zaprojektowana do pobierania danych od użytkownika i wyświetlania okna dialogowego, które pozwala wprowadzić tekst. W przeciwieństwie do alert(), który jedynie wyświetla informacje, prompt() umożliwia użytkownikowi wprowadzenie danych, które mogą być później wykorzystane w kodzie. Na przykład, można zainicjować zmienną i przypisać do niej wartość wprowadzaną przez użytkownika: var imie = prompt('Podaj swoje imię:');. Tego rodzaju interakcje są niezwykle ważne w dynamicznych aplikacjach internetowych, gdzie potrzeba elastyczności i użytkownika jako aktywnego uczestnika w procesie. Dobrą praktyką jest zapewnienie, że zapytania są jasne i zrozumiałe, a także, że walidujemy dane wejściowe, aby uniknąć błędów. Warto również mieć na uwadze, że z uwagi na estetykę i funkcjonalność, w nowoczesnym podejściu do interakcji użytkownika, lepszym rozwiązaniem mogą być formularze HTML z JavaScript, które oferują większą kontrolę nad danymi i lepsze możliwości stylizacji."

Pytanie 40

Jakie wartości zostaną wypisane przez funkcję wypisz(2) zaimplementowaną w JavaScript?

function wypisz(a)
{
    for (var i=1; i<6; i++)
    {
        a++;
        if ((a%2==0)|| (a%3==0))
        document.write(a+" " );
    }
}
A. 6
B. 2 3 4 6
C. 3 4 6 8
D. 3 4 6
Funkcja wypisz w JavaScript działa w ten sposób, że przyjmuje argument a i korzysta z pętli for, która powtarza się pięć razy, zwiększając a o 1 w każdej iteracji. Potem sprawdza, czy a jest podzielne przez 2 lub 3, co znaczy, że liczba musi spełniać jeden z tych warunków, żeby być wypisaną. Kiedy zaczniemy z a=2, po pierwszym obiegu pętli a idzie na 3, a 3 spełnia warunek, więc zostaje wypisana. Potem mamy 4 (4 jest podzielne przez 2) i też jest wypisana, a następnie 5, która nie łapie się w warunek. A potem mamy 6, która już wchodzi, bo 6%2==0 i 6%3==0. W efekcie funkcja wypisuje liczby 3, 4 i 6, co zgadza się z poprawną odpowiedzią 3. Warto też dodać, że korzystanie z document.write jest już trochę passé i lepiej używać innych metod, jak innerHTML, bo to jest bardziej bezpieczne i zgodne z nowoczesnymi standardami webowymi. To pozwala na lepszą manipulację treścią strony, co jest na pewno lepsze w kontekście aplikacji dynamicznych.