Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

Poniżej przedstawiono fragment kodu w języku PHP. Jakie liczby wypisze ta pętla jako wynik swojego działania?

for ($i = 0; $i <= 20; $i += 4)
echo $i . ' ';
A. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
B. 0,4,8,12,16
C. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
D. 0,4,8,12,16,20
Kiedy patrzymy na ten kod pętli for, musimy zrozumieć, jak działają trzy ważne rzeczy: co się dzieje na początku, jaki jest warunek do dalszego działania i jak zmieniamy naszą zmienną. W tym przypadku pętla zaczyna od 0 i dodaje 4, aż dojdzie do 20. Czasem błędne odpowiedzi wynikają z tego, że nie do końca rozumiemy, jak działa ten warunek, albo z jaką wartością inkrementujemy. Często myślimy, że pętla skończy się przed 20, a to nie jest prawda. Inną pułapką jest zrozumienie, że dodawanie 4 to nie to samo, co branie wszystkich liczb od 0 do 20. Dobrze jest znać zasady działania pętli for, bo to pomaga w rozwiązywaniu problemów w programowaniu i sprawia, że kod działa lepiej. Przy budowaniu takich pętli pamiętajmy o precyzyjnym definiowaniu warunków i tego, jak zmieniamy wartości, bo to ważne dla uzyskania wyników, które chcemy.

Pytanie 2

Jakiego typu zmienną tworzy deklaracja var x = "true"; w języku JavaScript?

A. nieokreślonego (undefined)
B. logicznego (boolean)
C. string (ciąg znaków)
D. liczbowego
Pozostałe typy nie pasują. Gdyby napisano var x = true; (bez cudzysłowów), byłby to typ LOGICZNY - ale cudzysłowy zmieniają to w tekst. Typ liczbowy dotyczy liczb, a undefined oznacza zmienną bez przypisanej wartości. "true" w cudzysłowach to string.

Pytanie 3

W instrukcji warunkowej w języku JavaScript należy zweryfikować sytuację, w której wartość zmiennej a leży w przedziale (0,100), a wartość zmiennej b jest większa od zera. Odpowiedni zapis warunku jest 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 )
Gdy patrzymy na błędne odpowiedzi, to wychodzi na jaw parę rzeczy, które mogą być mylące, jeśli chodzi o operacje logiczne. Na przykład, w tej opcji, gdzie użyto '||' (OR), pojawia się problem, bo warunek 'a > 0 || a < 100 || b < 0' nie trzyma się kupy. Daje nam to możliwość zaakceptowania wartości, które są poza tym, co chcieliśmy. Z kolei w odpowiedzi 'if (a > 0 || a < 100 && b > 0)' mamy mieszankę operatorów, co może wprowadzić chaos. Lepiej się postarać i trzymać się jednego typu operatorów, żeby uniknąć zamieszania. W innej opcji, 'if (a > 0 && a < 100 || b < 0)', znowu pojawia się ten problem z '||', co sprawia, że logika jest niejasna. Jak się pisze kod, dobrze jest być precyzyjnym, by uniknąć takich błędów, które mogą potem skomplikować sprawę.

Pytanie 4

Na podstawie tabeli Towar wykonano poniższe zapytanie SQL. Jaki będzie rezultat tej operacji?

SELECT nazwa_towaru
FROM`Towar`
WHERE cena_katalogowa<65
ORDER BY waga DESC
IDnazwa_towarucena_katalogowawagakolor
1Papier ksero A4112.3biel
2Zeszyt A54.20.13wielokolorowy
3Zeszyt A5 w linie3.50.12niebieski
4Kredki 24 kolory90.3wielokolorowy
5Plecak szkolny65.51.3zielony
A. Zeszyt A5, Zeszyt A5 w linie, Kredki 24 kolory, Papier ksero A4
B. Zeszyt A5 w linie, Zeszyt A5, Kredki 24 kolory, Papier ksero A4
C. Papier ksero A4, Kredki 24 kolory, Zeszyt A5, Zeszyt A5 w linie
D. Papier ksero A4, Kredki 24 kolory, Zeszyt A5 w linie, Zeszyt A5
Patrząc na błędne odpowiedzi, widzę, że poważnym błędem było niezrozumienie klauzuli WHERE oraz ORDER BY. Klauzula WHERE w SQL po prostu wyklucza towary z ceną 65 lub wyższą, co jest kluczowe, bo pozwala filtrować dane. Jak się to zignoruje, to produkt, który nie powinien się tam znaleźć, jak plecak szkolny, mógłby się pojawić. Co więcej, sporo osób myli sortowanie. ORDER BY waga DESC mówi nam, żeby sortować według wagi w kolejności malejącej. Niektórzy źle to interpretują, myśląc, że to jest w porządku rosnącym, albo całkowicie lekceważą wagę w sortowaniu. Wiedza o tym, jak działają te klauzule, jest ważna, gdy się pracuje z SQL. Trzeba zrozumieć, jak działa filtrowanie i sortowanie, bo to jest bazą pracy analityka danych i specjalisty od baz danych. W projektowaniu zapytań SQL każdy element powinien mieć swój cel i być dobrze zrozumiany, żeby pasował do logiki biznesowej i wymagań analizy danych.

Pytanie 5

Z tabel Klienci oraz Uslugi należy wyodrębnić tylko imiona klientów oraz odpowiadające im nazwy usług, które kosztują więcej niż 10 zł. Kwerenda uzyskująca te informacje ma formę

Ilustracja do pytania
A. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = klienci.id
B. SELECT imie, nazwa FROM klienci, uslugi WHERE cena < 10
C. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id
D. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id WHERE cena > 10
Pozostałe odpowiedzi zawierają istotne błędy w składni SQL oraz w interpretacji relacji między tabelami w bazie danych. Odpowiedź używająca WHERE cena < 10 jest błędna, ponieważ warunek ten wybiera usługi tańsze niż 10 zł, co jest sprzeczne z wymogami zadania. Innym błędem jest użycie niepoprawnego połączenia ON bez odpowiedniego dopasowania kluczy. Użycie klauzuli JOIN bez precyzyjnego określenia relacji, jak w przypadku ON uslugi.id = klienci.id, nie odzwierciedla rzeczywistego związku danych, co prowadzi do błędów logicznych w wynikach. Prawidłowe korzystanie z JOIN wymaga zrozumienia struktury bazy danych oraz relacji między tabelami. Właściwe połączanie tabel z wykorzystaniem klucza obcego jest kluczową praktyką, która zapewnia integralność danych i optymalizację zapytań. Ponadto, brak zastosowania warunków filtracyjnych lub nieodpowiednie ich użycie prowadzi do zwracania niekompletnych lub niepoprawnych danych. Wiedza o strukturze bazy danych oraz umiejętność stosowania poprawnych zapytań SQL są niezbędne dla osób zajmujących się projektowaniem i zarządzaniem bazami danych. Praktyczne doświadczenie w stosowaniu tych umiejętności jest kluczowe dla zapewnienia skuteczności oraz wydajności operacji w bazach danych. Poprawne zapytania są podstawą każdej operacji bazodanowej, zarówno w kontekście codziennych operacji, jak i skomplikowanych analiz danych.

Pytanie 6

Wykonano następującą kwerendę SQL na tabeli dania, której wiersze zostały pokazane na obrazie:

SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5;
Ile wierszy wybierze ta kwerenda?

idtypnazwacena
11Gazpacho20
21Krem z warzyw25
31Gulaszowa ostra30
42Kaczka i owoc30
52Kurczak pieczony40
62wieprzowy przysmak35
72Mintaj w panierce30
82Alle kotlet30
93Owoce morza20
103Grzybki, warzywka, sos15
113Orzechy i chipsy10
123Tatar i jajo15
133Bukiet warzyw10
A. 5
B. 13
C. 8
D. 2
Niestety, Twoja odpowiedź jest nieprawidłowa. Kwerenda SELECT w SQL służy do wybierania wierszy z tabeli, które spełniają określone kryteria. W tym przypadku, kwerenda wybrała 2 wiersze, a nie 8, 5, czy 13. Błędne odpowiedzi w tym pytaniu mogą wynikać z niewłaściwego zrozumienia działania kwerendy SELECT. Zrozumienie, jakie dane zostaną wybrane przez daną kwerendę, jest kluczowe dla efektywnej pracy z bazami danych. Mogło to na przykład oznaczać wybranie informacji o zbyt wielu klientach, co mogłoby spowodować przekroczenie limitu zasobów lub zwrócenie niepotrzebnych danych. Dlatego ważne jest, aby dobrze zrozumieć, jakie kryteria określamy w kwerendzie i jakie konkretnie dane chcemy uzyskać. W SQL mamy wiele możliwości filtrowania i sortowania danych, a błąd w jednym z tych aspektów może prowadzić do nieefektywnego zarządzania informacjami. Dlatego szczegółowe zrozumienie kwerend SQL jest kluczowe dla każdej osoby pracującej z danymi.

Pytanie 7

W dokumencie zdefiniowano akapit <p id="jeden">Kwalifikacja INF.03</p>. Która instrukcja JavaScript zmieni kolor tekstu tego akapitu na niebieski?

A.
document.getElementById("jeden").color = "blue";
B.
document.getElementById("jeden").style.background-color = "blue";
C.
document.getElementById("jeden").style.color = "blue";
D.
document.getElementById("jeden").background-color = "blue";
Kolor tekstu zmienia się przez właściwość style.color, a element pobiera getElementById: document.getElementById("jeden").style.color = "blue";. Dlatego poprawna jest ta instrukcja.

Pytanie 8

Co robi funkcja napisana w języku JavaScript?

function fun1(f)
{
  if(f < 0)
    f = f * (-1);
  return f;
}
A. zwrócenie wartości bezwzględnej z f
B. zwrócenie wartości odwrotnej do f
C. wypisanie wartości odwrotnej do f
D. wypisanie wartości bezwzględnej z f
Funkcja, którą podałeś w JavaScript, ma za zadanie zwrócić wartość bezwzględną z podanego argumentu f. Sprawdza, czy f jest mniejsze od zera, a jeśli tak, to mnoży je przez -1, co w praktyce oznacza, że zmienia znak liczby na dodatni. Jeśli wartość jest już dodatnia, to nic się nie dzieje. To wszystko jest zgodne z tym, jak definiujemy wartość bezwzględną, bo ta zawsze jest równa lub większa od zera. Z mojego doświadczenia, wartości bezwzględne są przydatne w różnych dziedzinach, jak matematyka czy analiza danych, gdzie zależy nam na wartościach liczbowych bez względu na to, czy są dodatnie, czy ujemne. Warto też wspomnieć, że JavaScript ma wbudowaną funkcję Math.abs(), która robi to samo i jest to naprawdę dobry wybór, bo ułatwia zrozumienie kodu i zmniejsza ryzyko błędów. Tworzenie takiej funkcji, jak w Twoim zadaniu, to świetny sposób na lepsze poznanie działania języka i manipulowania danymi.

Pytanie 9

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

A. <script>przyklad.js</script>
B. <link rel="script" href="przyklad.js">
C. <script src="przyklad.js"></script>
D. <script link="przyklad.js"></script>
No, odpowiedzi bez atrybutu 'src' są nie na miejscu, bo nie spełniają standardów HTML dołączania skryptów. W pierwszej odpowiedzi, w <script>przyklad.js</script>, użycie tego zapisu jest błędne, bo tag <script> musi mieć 'src', żeby pokazać, gdzie skrypt się znajduje. Po prostu dodanie samej nazwy pliku w środku znacznika nic nie zdziała, bo przeglądarka go nie załaduje. W drugiej odpowiedzi, <script link="przyklad.js"></script>, to też nie jest zgodne z HTML, bo 'link' nie istnieje w kontekście skryptów; powinno być tylko 'src'. Odpowiedź <link rel="script" href="przyklad.js"> jest całkiem myląca, bo <link> zazwyczaj służy do CSS, a nie do JavaScriptu. Nawet jeśli 'rel' można użyć, to nie ma sensu w kontekście skryptów JS. To może prowadzić do tego, że deweloperzy nie zrozumieją, jak poprawnie dodawać zasoby do HTML-a, a to może w przyszłości rodzić problemy z wydajnością i działaniem strony. Zrozumienie i stosowanie standardów HTML jest mega ważne przy projektach webowych, bo wpływa na jakość kodu i jego przyszłą obsługę.

Pytanie 10

Który program przekształca kod źródłowy napisany w danym języku programowania na język zrozumiały dla komputera?

A. debugger
B. środowisko programistyczne (IDE)
C. kompilator
D. edytor kodu źródłowego
Pozostałe odpowiedzi nie tłumaczą kodu na język maszynowy. Debugger służy do analizy działającego programu i wyszukiwania przyczyn błędów - nie zajmuje się przekładem kodu. Edytor kodu źródłowego to narzędzie do pisania i formatowania kodu (z podświetlaniem składni), ale samo nie przetwarza go na postać wykonywalną. Środowisko programistyczne (IDE) łączy wiele narzędzi w jednym, jednak właściwą kompilację wykonuje dopiero wbudowany w nie kompilator. Tłumaczenie kodu źródłowego na język komputera to zadanie kompilatora, dlatego ta odpowiedź jest poprawna.

Pytanie 11

Język JavaScrypt umożliwia obsługę

A. wysyłania ciastek z identycznymi informacjami do wielu klientów strony
B. funkcji wirtualnych
C. klas abstrakcyjnych
D. obiektów DOM
Obsługa funkcji wirtualnych nie jest częścią języka JavaScript, ponieważ ten język nie obsługuje typów i mechanizmów programowania obiektowego w sposób, w jaki robią to inne języki, takie jak C++ czy Java. JavaScript nie posiada koncepcji 'wirtualnych funkcji', które są charakterystyczne dla języków, które implementują mechanizmy dziedziczenia oparte na klasach. W JavaScript, programowanie obiektowe opiera się na prototypach, co oznacza, że obiekty mogą dziedziczyć właściwości i metody bez użycia wirtualnych funkcji, co czyni to pojęcie nieadekwatnym w kontekście tego języka. Ponadto, klasa abstrakcyjna jest także pojęciem, które jest źle zrozumiane w kontekście JavaScript. W rzeczywistości, JavaScript nie wspiera klas abstrakcyjnych w tradycyjnym sensie znanym z języków statycznie typowanych. Wprowadzenie klas w ECMAScript 6 dodało nową składnię, ale nie zmieniło fundamentalnej natury języka. JavaScript nie wymusza implementacji metod w klasach pochodnych, co jest kluczowym aspektem klas abstrakcyjnych. Wreszcie, kwestia wysyłania ciastek z tą samą informacją do wielu klientów stron internetowych odnosi się bardziej do mechanizmów serwerowych i zarządzania sesjami niż do samego języka JavaScript. JavaScript działa głównie po stronie klienta, a ciasteczka są zarządzane przez przeglądarki internetowe, gdzie mogą być ustalane przez skrypty, ale samo wysyłanie ciasteczek do klientów nie jest bezpośrednio związane z jego funkcjonalnością. Te aspekty techniczne ukazują, dlaczego podane odpowiedzi nie są poprawne w kontekście pytania o obsługę JavaScript.

Pytanie 12

Aby wstawić w napisie (zmiennej typu string) złamanie linii, należy użyć znaku:

A.
\n
B.
\t
C.
\b
D.
\\
Sekwencja \n to tak zwany znak nowej linii (newline). W napisie ukośnik wsteczny rozpoczyna sekwencję sterującą, a litera po nim określa jej znaczenie - \n oznacza przejście do nowej linii. Dzięki temu można formatować wieloliniowy tekst zapisany w jednej zmiennej, bez fizycznego entera w kodzie. To powszechna konwencja w wielu językach (m.in. JavaScript, PHP, C). Dlatego do złamania linii w napisie służy właśnie \n.

Pytanie 13

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

A. teksturowanie
B. renderowanie
C. rasteryzacja
D. mapowanie
Renderowanie to proces przekształcenia opisu dokumentu (np. kodu HTML i CSS, modelu 3D czy pliku) w gotową, widoczną postać odpowiednią dla danego środowiska. W przeglądarce silnik renderujący zamienia znaczniki i style w faktyczny obraz strony, układając tekst, kolory i elementy. W grafice 3D renderowanie generuje obraz sceny na podstawie modeli, świateł i materiałów. Dlatego proces przedstawienia informacji z dokumentu we właściwej formie to renderowanie.

Pytanie 14

W którym znaczniku HTML5 stosuje się atrybut action?

A.
<form>
B.
<head>
C.
<body>
D.
<code>
Atrybut action określa adres (URL), pod który trafią dane po zatwierdzeniu formularza, dlatego należy do znacznika <form>. Razem z atrybutem method (GET lub POST) definiuje, dokąd i jak wysłać dane. Dlatego action stosuje się w <form>.

Pytanie 15

Jaką wartość zwróci zapytanie z ramki wykonane na pokazanej tabeli?

SELECT COUNT(DISTINCT wykonawca) FROM muzyka;
Ilustracja do pytania
A. 4
B. 3
C. 0
D. 1
Przy analizie zapytania SQL SELECT COUNTDISTINCT wykonawca) FROM muzyka; kluczowe jest zrozumienie funkcji COUNTDISTINCT. Ta funkcja zlicza unikalne wartości w określonej kolumnie co oznacza że nie uwzględnia powtórzeń. W analizowanym przypadku jesteśmy zainteresowani unikalnymi wykonawcami. Tabela zawiera czterech wykonawców ale Czesław Niemen pojawia się dwukrotnie co prowadzi do trzech unikalnych wpisów: Czesław Niemen Stan Borys i Mikołaj Czechowski. Częstym błędem jest nieuwzględnianie powtórzeń co prowadzi do błędnego założenia że liczba unikalnych wpisów jest równa ogólnej liczbie rekordów. Innym powszechnym nieporozumieniem jest różnica między funkcją COUNT a COUNTDISTINCT. Funkcja COUNT zlicza wszystkie wystąpienia w kolumnie niezależnie od powtórzeń co w tym przypadku dałoby wynik 4. Zrozumienie tych subtelności jest kluczowe dla poprawnego analizowania danych i tworzenia precyzyjnych raportów. Poprawne użycie COUNTDISTINCT odzwierciedla również dobrą praktykę w optymalizacji zapytań SQL szczególnie w kontekście dużych zbiorów danych gdzie wydajność jest kluczowa.

Pytanie 16

Kod

SELECT imie, pesel, wiek FROM dane WHERE wiek IN (18,30)
wybiera
A. imiona, numery PESEL oraz wiek osób, które mają więcej niż 30 lat
B. imiona, numery PESEL oraz wiek osób mieszczących się w przedziale od 18 do 30 lat
C. imiona, numery PESEL oraz wiek osób w wieku dokładnie 18 lub 30 lat
D. imiona, nazwiska oraz numery PESEL osób, które mają mniej niż 18 lat
W podejściu zawartym w niepoprawnych odpowiedziach występuje kilka kluczowych nieporozumień dotyczących interpretacji zapytań SQL i zasad działania operatora `IN`. Wybór danych na podstawie wieku poniżej 18 lat jest błędny, ponieważ zapytanie nie uwzględnia wieku poniżej tej granicy, a zatem nie może zwracać rekordów dla tej grupy wiekowej. Takie wnioski mogą wynikać z mylnej interpretacji operatora `IN`, który nie działa na zasadzie zakresu, lecz na precyzyjnych wartościach. Przyjmowanie, że zapytanie obejmuje osoby powyżej 30 lat jest również niepoprawne, ponieważ zapytanie nie zawiera takich warunków, co dowodzi braku zrozumienia filtracji danych. Kolejny typowy błąd poznawczy to mylenie pojęcia 'przedziału' z konkretnymi wartościami. W SQL, kiedy chcemy odwołać się do przedziału, stosuje się operator `BETWEEN`, co różni się od zastosowania `IN`. Zrozumienie tych podstawowych różnic jest kluczowe w pracy z bazami danych. Aby skutecznie budować zapytania SQL, ważne jest zrozumienie, jakie operatory są odpowiednie do konkretnych zadań oraz jakie są ich ograniczenia. Niewłaściwe interpretowanie wyników zapytań może prowadzić do błędnych wniosków i decyzji, co podkreśla znaczenie staranności w analizie danych.

Pytanie 17

Jakie zadania programistyczne mogą być realizowane wyłącznie po stronie klienta w przeglądarce?

A. Weryfikacja hasła użytkownika w bazie danych powiązanej z aplikacją internetową
B. Bezpieczne wyświetlenie spersonalizowanej treści strony na podstawie uprawnień użytkownika aplikacji
C. Zapis danych z formularza w bazie danych związanej z aplikacją internetową
D. Weryfikacja danych wprowadzanych do pola tekstowego w czasie rzeczywistym
Sprawdzanie danych wpisywanych do pola tekstowego w czasie rzeczywistym jest zadaniem, które można wykonać wyłącznie po stronie klienta, korzystając z technologii takich jak JavaScript. Przykładem może być walidacja formularzy, gdzie użytkownik otrzymuje natychmiastową informację zwrotną na temat poprawności danych, zanim jeszcze wyśle formularz. Dzięki temu można zredukować ilość błędów i poprawić doświadczenia użytkownika. Zastosowanie tego typu walidacji jest zgodne z dobrymi praktykami, ponieważ pozwala na szybszą interakcję bez konieczności komunikacji z serwerem, co z kolei zmniejsza obciążenie serwera i przyspiesza czas ładowania strony. Warto również zwrócić uwagę na standardy dostępności, aby zapewnić, że walidacja jest wykonalna także dla osób używających technologii asystujących. Dobrze zaprojektowane formularze z walidacją po stronie klienta są bardziej przyjazne i funkcjonalne, co przekłada się na wyższe wskaźniki konwersji w aplikacjach internetowych.

Pytanie 18

Rezultatem wykonania podanego zapytania SQL jest

SELECT count(*) FROM Uczniowie WHERE srednia = 5;
A. Średnia ocen wszystkich uczniów.
B. Całkowita liczba uczniów.
C. Suma ocen uczniów, których średnia ocen wynosi 5.
D. Liczba uczniów, którzy mają średnią ocen równą 5.
Zapytanie SQL, które zostało przedstawione, używa funkcji `COUNT(*)` w celu zliczenia wszystkich wierszy w tabeli `Uczniowie`, które spełniają określone kryterium w klauzuli `WHERE`. W tym przypadku kryterium to jest `srednia = 5`. Oznacza to, że zapytanie zlicza wszystkich uczniów, których średnia ocen wynosi dokładnie 5. Takie użycie `COUNT(*)` jest zgodne ze standardami SQL, gdzie funkcja ta służy do zliczania wszystkich wierszy w zbiorze wyników, które spełniają dane warunki. W praktyce, uzyskanie liczby uczniów z określoną średnią może być przydatne w analizie statystycznej lub raportowaniu wyników akademickich. Zrozumienie, jak korzystać z `COUNT(*)` w połączeniu z różnymi warunkami `WHERE`, jest kluczowe dla efektywnego zarządzania i analizowania danych w bazach danych SQL. Dzięki temu można wydobywać konkretne informacje, które wspierają podejmowanie decyzji w edukacji i zarządzaniu danymi.

Pytanie 19

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

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

Pytanie 20

Po wykonaniu poniższego kodu PHP, w zmiennej $napis znajduje się tekst:

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. gramo
B. gr
C. ogram
D. og
Odpowiedź 'gramo' jest poprawna, ponieważ funkcja substr() w PHP służy do wyodrębnienia podciągu z łańcucha znaków. W przedstawionym kodzie, oryginalna wartość zmiennej $napis to 'Programowanie w PHP'. Funkcja substr() przyjmuje trzy argumenty: pierwszy to łańcuch źródłowy, drugi to indeks początkowy (rozpoczynając od 0), a trzeci to długość podciągu, który ma zostać wyodrębniony. W naszym przykładzie, funkcja substr($napis, 3, 5) zaczyna od indeksu 3, co odpowiada literze 'g' w słowie 'Programowanie', a następnie pobiera kolejnych 5 znaków. Ostatecznie wyodrębniony podciąg to 'gramo', obejmujący znaki g, r, a, m, o. Przykład zastosowania: możemy użyć tej funkcji do wyodrębnienia konkretnej części tekstu, na przykład w przypadku przetwarzania danych lub generowania dynamicznej zawartości na stronach internetowych.

Pytanie 21

Jaką metodę używa się w języku PHP do tworzenia komentarza obejmującego więcej niż jedną linijkę?

A. <!-- -->
B. //
C. /* */
D. #
W języku PHP, użycie bloków komentarzy za pomocą składni /* */ jest standardowym sposobem na zapisanie wielolinijnych komentarzy. Ta metoda pozwala na umieszczanie tekstu komentarza w wielu liniach, co jest szczególnie przydatne w przypadku dłuższych objaśnień kodu. Komentarze pozwalają programistom na dokumentowanie funkcji, metod lub fragmentów kodu, co znacznie zwiększa przejrzystość i zrozumiałość kodu dla innych deweloperów. Przykładowo, można ich używać w następujący sposób:

/*
To jest komentarz, który
może zajmować wiele linii.
Możesz go używać do
szczegółowego opisu
funkcji lub zmiennych.
*/

Praktyka korzystania z opisowych komentarzy jest zgodna z najlepszymi standardami programowania, ponieważ zwiększa czytelność i ułatwia pracę w zespołach. Komentarze są nieocenione w trakcie konserwacji kodu, ponieważ pozwalają na szybsze zrozumienie intencji autora, a także na łatwiejsze wprowadzenie zmian w przyszłości. Warto również pamiętać, że komentarze nie wpływają na wydajność aplikacji, ponieważ są ignorowane przez interpreter PHP w trakcie wykonywania skryptu.

Pytanie 22

Które z poniższych poleceń JavaScript zmieni kolor tekstu na niebieski w paragrafie oznaczonym w HTML?

<p id="jeden">Kwalifikacja EE.01</p>
A. document.getElementById("jeden").color = "blue";
B. document.getElementById("jeden").style.color = "blue";
C. document.getElementById("jeden").style.background-color = "blue";
D. document.getElementById("jeden").background-color = "blue";
W analizowanym pytaniu tylko jedna odpowiedź poprawnie odnosi się do zmiany koloru tekstu w elemencie HTML. Wielu początkujących programistów popełnia błędy związane z nieznajomością struktury obiektowej Document Object Model czyli DOM. Użycie właściwości background-color w odpowiedzi pierwszej i czwartej wskazuje na próbę zmiany tła a nie koloru tekstu. Właściwość style.backgroundColor jest stosowana do zmiany tła elementu a nie tekstu w nim zawartego. Rozróżnienie tych dwóch właściwości jest kluczowe w stylowaniu elementów HTML. Odpowiedź trzecia document.getElementById("jeden").color = "blue"; błędnie zakłada że property color jest bezpośrednio dostępne na poziomie elementu co nie jest prawdą. Właściwości stylów CSS są dostępne w obiekcie style związanym z elementem. Typowym błędem myślowym jest założenie że właściwości CSS można stosować bezpośrednio jako właściwości obiektów DOM co prowadzi do niespójności i błędów w kodzie. Zrozumienie jak obiekt style działa w kontekście DOM pozwala uniknąć takich pomyłek. Ważne jest aby pamiętać że JavaScript umożliwia dynamiczne manipulowanie stylami ale wymaga to poprawnego odwołania się do właściwości stylu poprzez obiekt style co jest często mylone przez początkujących. Poprawne użycie składni JavaScript w kontekście DOM jest kluczowe dla dynamicznego i responsywnego programowania webowego. Przy projektowaniu aplikacji webowych kluczowe jest również przestrzeganie zasad oddzielania logiki biznesowej od prezentacji co zapewnia lepszą czytelność i utrzymanie kodu. Stąd wiedza o poprawnym użyciu stylów w JavaScript jest nie tylko przydatna ale również konieczna dla efektywnego tworzenia aplikacji.

Pytanie 23

Wskaż pętlę w języku JavaScript, która wypisze sześć kolejnych liczb parzystych.

A. for(i=2;i<12;i+=2) {document.write(i);}
B. for(i=2;i<12;i++) {i++; document.write(i);}
C. for(i=2;i<=12;i++) {i=i+2; document.write(i);}
D. for(i=2;i<=12;i+=2) {document.write(i);}
Pierwsza z analizowanych pętli, która przyjmuje formę for(i=2;i<12;i+=2) {document.write(i);}, jest niepoprawna, ponieważ wyświetli jedynie liczby parzyste od 2 do 10. Warunek końcowy pętli jest ustawiony na i<12, co oznacza, że pętla zakończy się przed wyświetleniem liczby 12, co skutkuje pominięciem ostatniej liczby parzystej w tym zakresie. Kolejna pętla to for(i=2;i<12;i++) {i++; document.write(i);}, która jest problematyczna ze względu na modyfikację zmiennej i w samym ciele pętli. Przy każdym przebiegu pętli wartość i zwiększa się o 1, a następnie jeszcze raz o 1 w document.write(i), co prowadzi do pominięcia co drugiej liczby. Efektem tej pętli będzie wyświetlenie liczb 3, 5, 7, 9, 11, co zupełnie odbiega od założonego celu. Ostatnia z rozważanych pętli, for(i=2;i<=12;i++) {i=i+2; document.write(i);}, również nie spełnia założeń, ponieważ inkrementuje zmienną i w sposób, który jest niezgodny z zamierzeniem wyświetlenia kolejnych liczb parzystych. Po pierwszym przebiegu pętli, wartość i wzrasta do 3, przez co wyświetlana jest liczba 3 oraz każda kolejna liczba jest pomijana. Efektem końcowym będzie wyświetlenie liczb 3, 5, 7, 9, 11, co również jest sprzeczne z wymaganym rezultatem. Każda z tych pętli pokazuje, jak ważne jest zrozumienie działania konstrukcji pętli oraz odpowiedniego ustalania warunków i inkrementacji w kontekście programowania w JavaScript.

Pytanie 24

W kodzie HTML zdefiniowano formularz, który wysyła dane do pliku formularz.php. Po naciśnięciu przycisku typu submit przeglądarka przechodzi do poniższego adresu:

../formularz.php?imie=Anna&nazwisko=Kowalska
Na podstawie podanego adresu można stwierdzić, że dane do pliku formularz.php zostały przesłane metodą:
A. COOKIE
B. POST
C. SESSION
D. GET
Twoja odpowiedź jest prawidłowa. Dane do pliku formularz.php zostały przesłane metodą GET, co można stwierdzić na podstawie adresu URL, który zawiera parametry (imię=Anna&nazwisko=Kowalska) przekazane po znaku zapytania (?). W metodzie GET, parametry są dołączane do adresu URL i są widoczne w pasku adresu przeglądarki. Jest to uniwersalny sposób przesyłania danych, który jest zgodny ze standardem HTTP i jest szeroko stosowany w praktyce. Metoda GET jest najprostszym sposobem przesyłania danych, ale ze względu na widoczność parametrów w adresie URL, nie jest zalecana do przesyłania ważnych informacji, takich jak hasła. W praktyce, metoda GET jest często stosowana do przekazywania informacji niezbędnych do wygenerowania konkretnej strony, takich jak identyfikatory zasobów lub parametry filtrowania.

Pytanie 25

W zaprezentowanym fragmencie zapytania SQL, instrukcja SELECT ma za zadanie zwrócić

SELECT COUNT(wartosc) FROM ...
A. średniej wartości tabeli
B. średniej w kolumnie wartosc
C. suma w kolumnie wartosc
D. liczby rekordów
W przypadku języka SQL, funkcja SELECT służy do wybierania danych z bazy i często jest mylona ze sposobem podsumowywania danych. Odpowiedzi wskazujące na obliczanie średniej w tabeli lub w kolumnie są błędne, ponieważ średnia (AVG) jest obliczana zupełnie inną funkcją. Select średniej w kolumnie wymaga użycia AVG zamiast COUNT. To powszechny błąd, wynikający z niepełnego zrozumienia różnicy między różnymi funkcjami agregującymi. Z kolei zrozumienie dlaczego odpowiedź dotycząca sumy w kolumnie jest błędna wiąże się z innym typowym nieporozumieniem w SQL. SUM służy do dodawania wartości liczbowych w kolumnie, jednak COUNT skupia się na liczbie wierszy, co oznacza, że jego celem nie jest sumowanie wartości, lecz ich zliczanie. W tej sytuacji pytanie dotyczyło liczby niepustych wartości w kolumnie wartosc, a nie sumy tych wartości. Takie błędy często wynikają z mylnego postrzegania funkcji jako wzajemnie zamiennych, podczas gdy każda z nich ma specyficzne zastosowanie i wynika z niej inna logika działania. Warto zatem skupić się na zrozumieniu przeznaczenia i użycia każdej z funkcji agregujących osobno, co pozwoli uniknąć takich nieporozumień w przyszłości. Ważne jest, aby pamiętać o tych różnicach i stosować odpowiednie funkcje zgodnie z potrzebami analizy danych. Poprawne użycie funkcji COUNT pozwala na efektywne zliczanie wartości i jest fundamentalne dla prawidłowego przetwarzania danych w SQL.

Pytanie 26

Tabela o nazwie naprawy zawiera kolumny: klient, czyNaprawione. Jakie polecenie należy użyć, aby wykasować rekordy, w których pole czyNaprawione ma wartość prawdziwą?

A. DELETE klient FROM naprawy WHERE czyNaprawione = TRUE;
B. DELETE FROM naprawy;
C. DELETE naprawy WHERE czyNaprawione = TRUE;
D. DELETE FROM naprawy WHERE czyNaprawione = TRUE;
W przypadku drugiej odpowiedzi, 'DELETE naprawy WHERE czyNaprawione = TRUE;', brak jest kluczowego słowa 'FROM', co jest niezgodne z syntaksą SQL. W standardzie SQL polecenie DELETE zawsze wymaga określenia tabeli, z której mają zostać usunięte dane, za pomocą słowa kluczowego 'FROM'. Bez tego, zapytanie będzie generować błąd. Kolejna odpowiedź, 'DELETE FROM naprawy;', jest niepoprawna, ponieważ usuwa wszystkie rekordy z tabeli 'naprawy', co zwykle nie jest pożądanym działaniem. To podejście może prowadzić do utraty wszystkich zapisów, co w praktyce jest katastrofalne, jeśli nie wykonano wcześniej kopii zapasowej. Czwarta odpowiedź, 'DELETE klient FROM naprawy WHERE czyNaprawione = TRUE;', błędnie sugeruje, że można wskazać konkretne kolumny do usunięcia, co jest także niezgodne z zasadami SQL. W SQL nie można wskazać pojedynczych kolumn do usunięcia, to całe rekordy są usuwane. Typowe błędy myślowe, które prowadzą do takich nieprawidłowych wniosków, to brak znajomości podstawowych zasad działania zapytań SQL oraz mylenie koncepcji usuwania danych z modyfikowaniem ich zawartości.

Pytanie 27

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

A. pola innerHTML
B. metody getAttribute
C. pola attribute i podać nazwę atrybutu
D. metody setAttribute
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 28

W języku JavaScript, by zmodyfikować wartość atrybutu elementu HTML, po uzyskaniu obiektu za pomocą metody getElementById należy użyć

A. pola attribute oraz wskazać nazwę atrybutu
B. metody setAttribute
C. metody getAttribute
D. pola innerHTML
Wykorzystanie pola innerHTML do zmiany atrybutów elementów HTML może prowadzić do wielu problemów i nieefektywności. Pole to służy do modyfikacji zawartości wewnętrznej elementu, a jego użycie w kontekście zmiany atrybutów nie jest zalecane. Przykładowo, przypisując nową wartość do innerHTML, można przypadkowo nadpisać całą zawartość elementu, co skutkuje utratą innych atrybutów oraz zdarzeń powiązanych z tym elementem. Z kolei metody getAttribute oraz setAttribute mają różne zastosowania: getAttribute odczytuje wartość atrybutu, ale nie zmienia go. Zastosowanie metody attribute, która nie istnieje w standardzie DOM, może prowadzić do nieporozumień i błędów w kodzie. Często błędne podejście do manipulacji atrybutami wynika z braku zrozumienia, jak działa model DOM i jak można go efektywnie wykorzystywać w JavaScript. W praktyce, zamiast używać metod, które nie są przeznaczone do danego zadania, warto sięgnąć po metody dostosowane do manipulacji atrybutami, co zwiększa czytelność i stabilność kodu. W efekcie, zrozumienie różnicy między różnymi metodami i ich zastosowaniem jest kluczowe dla prawidłowego zarządzania elementami na stronie.

Pytanie 29

Tabela podzespoly ma pola: model, producent, typ, cena. Które zapytanie wyświetli modele pamięci RAM firmy Kingston od najtańszej do najdroższej?

A.
SELECT model FROM producent WHERE typ='RAM' OR producent='Kingston' ORDER BY podzespoly ASC;
B.
SELECT model FROM podzespoly WHERE typ='RAM' OR producent='Kingston' ORDER BY cena DESC;
C.
SELECT model FROM podzespoly WHERE typ='RAM' AND producent='Kingston' ORDER BY cena DESC;
D.
SELECT model FROM podzespoly WHERE typ='RAM' AND producent='Kingston' ORDER BY cena ASC;
Pozostałe zapytania zawodzą. OR zwróciłby wszystkie RAM-y oraz wszystkie produkty Kingston (także inne typy), a nie ich część wspólną. Sortowanie malejące (DESC) dałoby kolejność od najdroższej, a FROM producent myli tabelę z kolumną. Poprawne jest połączenie AND z ORDER BY cena rosnąco.

Pytanie 30

W językach programowania strukturalnego do przechowywania danych o 50 uczniach (ich imionach, nazwiskach, średniej ocen) należy zastosować

A. strukturę 50 elementów o składowych tablicowych.
B. tablicę 50 elementów o składowych typu łańcuchowego.
C. klasę 50 elementów typu tablicowego.
D. tablicę 50 elementów o składowych strukturalnych.
Wybór nieodpowiedniej struktury danych w programowaniu może prowadzić do nieefektywnego zarządzania danymi i trudności w ich przetwarzaniu. Propozycja użycia struktury 50 elementów o składowych typu tablicowego z reguły nie jest optymalnym podejściem. Tablice w programowaniu są jednorodne, co oznacza, że przechowują tylko jeden typ danych. W przypadku przechowywania informacji o uczniach, takich jak imiona, nazwiska i średnie ocen, każdy z tych atrybutów powinien być reprezentowany przez różne typy danych (np. łańcuchy dla imion i nazwisk oraz liczby zmiennoprzecinkowe dla ocen). Oparcie się na tablicy elementów o składowych tablicowych prowadziłoby do sytuacji, w której trudno byłoby obsługiwać różne typy danych, co jest niepraktyczne i może prowadzić do wielu błędów. Wybór tablicy 50 elementów o składowych łańcuchowych jest także niewłaściwy, ponieważ ponownie nie umożliwia zarządzania różnorodnymi danymi, a jedynie danymi tekstowymi. Przy tego rodzaju podejściu nie można efektywnie przechowywać i operować na różnych typach danych. Kolejny błąd to korzystanie z klasy 50 elementów typu tablicowego, co nie jest zgodne z założeniami programowania obiektowego, które zaleca modelowanie obiektów jako jednostek zawierających różne atrybuty. Wybierając odpowiednią strukturę danych, programiści powinni zwracać uwagę na złożoność danych oraz na to, jak będą one używane w kodzie, co z kolei wpływa na wydajność oraz czytelność aplikacji.

Pytanie 31

W języku JavaScript stworzono fragment kodu. Po uruchomieniu skryptu zmienna x

<script>
  var x = 10;
  x++;
  console.log(x);
</script>
A. Będzie równa 11 i zostanie wypisana w oknie popup
B. Będzie równa 10 i zostanie wypisana w dokumencie HTML
C. Będzie równa 10 i zostanie wypisana w głównym oknie przeglądarki internetowej
D. Będzie równa 11 i zostanie wypisana w konsoli przeglądarki internetowej
W zaprezentowanym fragmencie kodu JavaScript zmienna x jest najpierw inicjalizowana wartością 10. Następnie operator inkrementacji x++ zwiększa tę wartość o 1, co skutkuje przypisaniem zmiennej wartości 11. Operator postinkrementacji w JavaScript działa w ten sposób że najpierw zwraca aktualną wartość zmiennej a następnie ją zwiększa. W tym przypadku operacja x++ skutkuje zwiększeniem wartości x do 11. W konsoli przeglądarki wywołanie console.log(x) powoduje wyświetlenie obecnej wartości zmiennej x która wynosi 11. Użycie console.log jest standardową praktyką debugowania w JavaScript i jedną z głównych metod wyświetlania informacji w środowisku przeglądarki. Konsole przeglądarek internetowych są potężnym narzędziem dla deweloperów front-endowych umożliwiającym interaktywną pracę z kodem monitorowanie błędów oraz wydajności aplikacji. Jako najlepsza praktyka zaleca się stosowanie console.log do tymczasowego debugowania i unikanie pozostawiania tych wywołań w produkcyjnych wersjach kodu co może prowadzić do zbędnego obciążenia aplikacji i ujawnienia niepotrzebnych informacji użytkownikom końcowym. Warto również wspomnieć że zmienne deklarowane za pomocą var mają zasięg funkcyjny co oznacza że są dostępne w całej funkcji w której zostały zadeklarowane.

Pytanie 32

Do czego służy w PHP funkcja trim()?

A. do podawania długości tekstu
B. do usuwania białych (lub podanych) znaków z obu końców tekstu
C. do skracania tekstu o podaną liczbę znaków
D. do wyświetlania części wspólnej dwóch tekstów
Pozostałe opisy dotyczą innych funkcji. Długość tekstu zwraca strlen(), a wycinanie fragmentu - substr(). trim() nie „skraca o liczbę znaków” ani nie szuka części wspólnej - usuwa białe (lub podane) znaki z obu końców tekstu.

Pytanie 33

<?php
$dane = fread(fopen("plik.txt", "r"), filesize("plik.txt"));
?>
Przedstawiony kod zapisany w języku PHP ma za zadanie
A. otworzyć plik plik.txt i jako wartość zmiennej dane przypisać rozmiar pliku
B. zmiennej dane przypisać zawartość pliku plik.txt
C. zmiennej dane przypisać wielkość pliku plik.txt
D. zapisać do pliku plik.txt wartość zmiennej dane
Kod z pytania wykorzystuje trzy kluczowe elementy pracy z plikami w PHP: fopen, fread i filesize. Żeby dobrze zrozumieć, dlaczego niektóre interpretacje są błędne, trzeba rozdzielić pojęcia „odczyt” i „zapis” oraz pamiętać, co tak naprawdę zwracają poszczególne funkcje. fopen z parametrem "r" otwiera plik wyłącznie do czytania. W tym trybie nie ma możliwości zapisu danych do pliku, więc każda interpretacja sugerująca, że coś jest zapisywane do pliku, stoi w sprzeczności z dokumentacją PHP. To jest częsty błąd: ktoś widzi funkcję pracującą na plikach i automatycznie myśli o zapisie, a tutaj jest tylko odczyt.
Kolejna mylna ścieżka rozumowania dotyczy funkcji filesize. Ona faktycznie zwraca rozmiar pliku w bajtach, ale w tym kodzie ten rozmiar jest użyty wyłącznie jako argument dla fread, czyli jako informacja: „ile bajtów odczytać”. Zmienna $dane nie dostaje więc wartości rozmiaru pliku, tylko wynik działania fread, czyli tekstową zawartość pliku. Rozmiar pojawia się tu tylko po to, żeby powiedzieć fread, ile danych ma pobrać z uchwytu pliku. To jest subtelna, ale ważna różnica: wartość zwracana przez filesize nie jest przypisywana bezpośrednio do $dane.
Może się też pojawić pokusa, by myśleć, że kod jednocześnie otwiera plik i „przypisuje rozmiar pliku jako wartość zmiennej”. W praktyce mamy dwie operacje: otwarcie pliku (fopen) i odczyt zawartości (fread). Otworzenie pliku nie jest celem samym w sobie, jest tylko krokiem pośrednim, koniecznym do tego, żeby fread mogło pobrać dane. Z mojego doświadczenia wynika, że uczniowie często mieszają: co zwraca uchwyt pliku, co zwraca funkcja odczytu, a co funkcja podająca rozmiar. Tutaj zwracany jest string z treścią pliku, nie liczba bajtów i nie sam uchwyt.
Podsumowując merytorycznie: w tym przykładzie nie zachodzi zapis do pliku, zmienna $dane nie przyjmuje samego rozmiaru pliku, ani też nie jest do niej wprost przypisywana wartość z filesize. Cała logika kodu prowadzi do jednego efektu – odczytania pełnej zawartości pliku plik.txt i umieszczenia jej w zmiennej $dane, co jest poprawną interpretacją zgodną ze standardowym sposobem użycia fopen i fread w PHP.

Pytanie 34

Jakie znaki będą przechowywane w zmiennej $napis po uruchomieniu poniższego kodu PHP?

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. ogram
B. gramo
C. gr
D. og
Gratulacje, dobrze zrozumiałeś działanie funkcji substr w języku PHP. Ta funkcja jest używana do wyodrębnienia części ciągu znaków. W tym przypadku, wyodrębnienia 5 znaków zaczynając od czwartego znaku (indeks 3) w napisie. W rezultacie, otrzymujemy ciąg 'gramo'. Warto zwrócić uwagę, że indeksowanie w PHP (podobnie jak w większości języków programowania) zaczyna się od zera, a nie od jeden. Dlatego 'czwarty' znak ma indeks 3. Używanie funkcji substr jest częstą praktyką przy manipulacji ciągami znaków w PHP, więc zrozumienie jej działania jest bardzo ważne. Przykładowo, jeżeli chcemy wyodrębnić fragment tekstu od pewnego miejsca do końca, możemy tego dokonać nie podając trzeciego parametru funkcji substr.

Pytanie 35

Zadaniem poniższego kodu napisanego w języku C++ jest wypisanie dla podanych dowolnych liczb całkowitych różnych od zera:

int main()
{
    int liczba;
    cin >> liczba;

    while (liczba != 0)
    {
        if ((liczba % 2) == 0)
            cout << liczba << endl;

        cin >> liczba;
    }
    return 0;
}
A. jedynie liczby parzyste
B. wyłącznie liczby nieparzyste
C. wszystkie liczby
D. liczby pierwsze
Kod źródłowy w języku C++ analizuje dane wejściowe i wypisuje jedynie liczby parzyste, co wynika z zastosowania operacji modulo. Mylnym podejściem jest sądzenie, że program wypisze wszystkie liczby, ponieważ warunek w if ogranicza wyjście jedynie do liczb, które przy dzieleniu przez 2 dają resztę 0. To podejście jest często stosowane w sytuacjach, gdzie konieczne jest filtrowanie danych według określonych kategorycznych kryteriów, np. przy oddzielaniu danych na podstawie ich właściwości matematycznych. Zakładanie, że kod wypisze tylko liczby nieparzyste lub liczby pierwsze, jest błędne, ponieważ nie ma dodatkowych warunków weryfikujących te cechy. Liczby nieparzyste miałyby resztę z dzielenia przez 2 równą 1, co nie spełnia warunku if, natomiast liczby pierwsze wymagają bardziej złożonego algorytmu weryfikacji, który badałby podzielność przez wszystkie liczby mniejsze od pierwiastka kwadratowego z danej liczby. Często popełnianym błędem jest niedokładne przeanalizowanie struktury warunkowej i pętli, co prowadzi do błędnych wniosków dotyczących działania programu. Zrozumienie działania operatora modulo i jego zastosowania w kontekście logicznych warunków pozwala na poprawną interpretację funkcji programu i unikanie wspomnianych błędów myślowych.

Pytanie 36

W CSS zastosowano stylowanie elementu listy, przy czym żadne inne style CSS nie zostały ustalone. Użyte stylowanie spowoduje, że

li :hover { color: Maroon; }
A. Kolor Maroon będzie dotyczył co drugiego elementu listy.
B. Po najechaniu kursorem na element listy, kolor tekstu zmieni się na Maroon.
C. Teksty wszystkich elementów, którym nadano id „hover”, będą w kolorze Maroon.
D. Wszystkie teksty elementów listy będą w kolorze Maroon.
Twoja odpowiedź jest na pewno trafna, bo reguła CSS li:hover { color: Maroon; } działa w kontekście pseudo-klasy :hover. To znaczy, że jak najedziesz kursorem na element listy (li), to jego kolor tekstu zmienia się na Maroon. Fajnie, że to wiesz! Takie podejście jest zgodne z zasadami CSS, które pozwalają na dynamiczne zmiany wyglądu elementów, gdy użytkownik z nimi interaguje. Na przykład, jeżeli masz listę z elementami <li>, to najeżdżając na nie, kolor tekstu zmienia się na Maroon. To może naprawdę poprawić użytkowanie strony i wyróżnić ważne elementy w interfejsie. Używanie pseudo-klas, jak :hover, to standard w projektowaniu stron, które są responsywne i interaktywne, co znacznie podnosi komfort przeglądania.

Pytanie 37

W zamieszczonym kodzie PHP, który łączy się z serwerem bazy danych, jakie działania powinny być umieszczone w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost","root","qwerty","baza1");
if ( !$db ) {
...
}
A. Zamknięcie połączenia z bazą danych
B. Zarządzanie błędem połączenia
C. Przetwarzanie danych otrzymanych z bazy
D. Informacja o udanym połączeniu z bazą
W przypadku nawiązywania połączenia z bazą danych kluczowym aspektem jest sprawdzenie czy połączenie zostało nawiązane pomyślnie. W PHP funkcja mysqli_connect() zwraca false w przypadku nieudanego połączenia dlatego pierwszym krokiem po jej użyciu powinno być sprawdzenie czy połączenie zostało zainicjowane poprawnie. W sytuacji gdy połączenie nie powiedzie się należy wykonać odpowiednie czynności obsługi błędu. Najczęściej stosowaną praktyką jest wyświetlenie użytkownikowi komunikatu o błędzie oraz zapisanie szczegółów błędu do logów systemowych co umożliwia późniejszą diagnostykę problemu. Można to zrealizować za pomocą funkcji mysqli_connect_error() która zwraca szczegóły błędu połączenia. Obsługa błędów na tym etapie jest zgodna z dobrymi praktykami programistycznymi i pomaga zapobiegać sytuacjom w których aplikacja działałaby w sposób nieprzewidywalny lub nieefektywny. Prawidłowe zarządzanie błędami połączenia jest niezbędne do tworzenia stabilnych i bezpiecznych aplikacji internetowych. Ponadto pozwala na wczesne wykrycie problemów konfiguracyjnych takich jak nieprawidłowe dane logowania czy brak dostępu do serwera bazy danych.

Pytanie 38

Aby aplikacja PHP mogła nawiązać połączenie z bazą danych, w pierwszej kolejności należy wywołać funkcję:

A.
mysqli_create_db
B.
mysqli_close
C.
mysqli_select_db
D.
mysqli_connect
Pracę z bazą danych w PHP zaczyna się od otwarcia połączenia funkcją mysqli_connect. Przyjmuje ona adres serwera, nazwę użytkownika, hasło i zwykle nazwę bazy, a zwraca uchwyt połączenia używany w dalszych zapytaniach. Dopiero gdy połączenie działa, można wybierać bazę, wykonywać zapytania, a na końcu zamknąć je funkcją mysqli_close. Dlatego pierwszym wywołaniem jest mysqli_connect.

Pytanie 39

W skrypcie PHP, aby zamknąć otwarte wcześniej połączenie z bazą danych, należy wywołać funkcję:

A.
mysqli_close
B.
mysqli_connect
C.
mysqli_query
D.
mysqli_select_db
Pozostałe funkcje dotyczą innych etapów pracy z bazą. mysqli_connect robi coś przeciwnego - otwiera połączenie z serwerem, więc nie może go zamykać. mysqli_select_db służy do wskazania, na której bazie pracujemy po nawiązaniu połączenia. mysqli_query wysyła do bazy zapytanie SQL i zwraca jego wynik, ale połączenia nie kończy. Do zamknięcia aktywnego połączenia i zwolnienia zasobów używa się mysqli_close.

Pytanie 40

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

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