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 14:11
  • Data zakończenia: 12 czerwca 2026 14:20

Egzamin niezdany

Wynik: 13/40 punktów (32,5%)

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

Wypisanie tekstu w języku JavaScript nie jest możliwe przy użyciu

A. funkcji MessageBox()
B. własności innerHTML
C. metody window.alert()
D. metody document.write()
Poprawnie wskazana została funkcja MessageBox(), bo w standardowym JavaScripcie działającym w przeglądarce taka funkcja po prostu nie istnieje. JavaScript udostępnia kilka mechanizmów do wypisywania tekstu, ale są one ściśle określone przez środowisko (głównie DOM i obiekt window), a nie przez jakieś ogólne, „systemowe” funkcje typu MessageBox.

Właściwość innerHTML należy do elementów DOM i służy do modyfikowania ich zawartości HTML. Przykład:

const div = document.getElementById('wynik');
div.innerHTML = 'Witaj w <b>JavaScript</b>';

To jest typowy, zgodny ze standardami sposób dynamicznej zmiany treści na stronie. W praktyce używa się go bardzo często, choć moim zdaniem lepiej w prostych przypadkach stosować textContent, bo jest bezpieczniejsze (nie interpretuje HTML-a, więc mniejsze ryzyko XSS).

Metoda window.alert() jest wbudowaną funkcją interfejsu przeglądarki. Wyświetla prosty modalny komunikat z przyciskiem OK. Przykład:

alert('Komunikat dla użytkownika');

W wielu poradnikach to pierwszy sposób „wypisania” czegokolwiek, bo od razu widać efekt. W profesjonalnych aplikacjach używa się go rzadko, raczej do szybkiego debugowania, bo blokuje interakcję z użytkownikiem.

Metoda document.write() pozwala wpisać tekst bezpośrednio do strumienia dokumentu HTML podczas jego ładowania:

document.write('Hello world');

Historycznie było to popularne, ale w nowoczesnych projektach uważa się to za złą praktykę. Po załadowaniu strony document.write() może nadpisać cały dokument, co jest mocno niepożądane. Lepszym standardem jest manipulacja DOM (np. innerHTML, createElement, appendChild).

Natomiast MessageBox() kojarzy się z funkcjami z innych środowisk (np. WinAPI, C#, VBA), ale w JavaScripcie w przeglądarce taka funkcja nie jest zdefiniowana w żadnym oficjalnym standardzie. Jeśli ktoś jej użyje bez własnej definicji, skończy się to błędem „MessageBox is not defined”. Dlatego właśnie ta odpowiedź jest poprawna – nie da się w czystym, standardowym JS wypisać tekstu przy użyciu funkcji MessageBox(), chyba że samemu ją wcześniej napiszemy, ale to już zupełnie inna historia.

Pytanie 2

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

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. og
B. gramo
C. gr
D. ogram
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 3

Jakie sformułowanie najlepiej opisuje metodę POST do przesyłania formularzy?

A. Dane są przesyłane przez adres URL, co czyni je widocznymi dla użytkownika
B. Jest zalecana, gdy przesyłane są dane poufne, na przykład hasło, numer telefonu lub numer karty kredytowej
C. Może być zarejestrowana jako zakładka w przeglądarce internetowej
D. Ma dodatkowe ograniczenia związane z długością adresu - maksimum 255 znaków
Metoda POST jest jedną z podstawowych metod przesyłania danych w protokole HTTP, której głównym celem jest umożliwienie przesyłania dużych objętości danych, w tym informacji poufnych. Gdy używamy metody POST do wysyłania formularzy, dane nie są widoczne w adresie URL, co czyni tę metodę bardziej odpowiednią do przesyłania wrażliwych informacji, takich jak hasła, numery kart kredytowych czy dane osobowe. W przeciwieństwie do metody GET, która dodaje dane do adresu URL, metoda POST przesyła je w ciele zapytania, co ogranicza ryzyko przypadkowego ujawnienia informacji. Standardy bezpieczeństwa w branży webowej zalecają użycie metody POST do wszelkich operacji, które zmieniają stan serwera, jak dodawanie użytkowników, logowanie czy przesyłanie informacji finansowych. Przykładem może być formularz logowania, w którym dane użytkownika są przesyłane do serwera w sposób niewidoczny dla osób trzecich, co minimalizuje ryzyko przechwycenia tych informacji przez złośliwe oprogramowanie.

Pytanie 4

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

$i = 10; $a = 0;
while ($i) {
  $a = $a + 2;
  $i--;
}
A. 2
B. 10
C. 20
D. 0
Pętla while ($i) powtarza się tak długo, jak warunek w nawiasie jest prawdziwy - a w PHP każda liczba różna od zera znaczy „prawda”, więc pętla działa, dopóki $i nie spadnie do zera. Na starcie $i = 10, a $a = 0. W każdym obrocie ciało pętli najpierw zwiększa $a o 2 (instrukcja $a = $a + 2), a potem $i-- zmniejsza licznik o jeden. Warunek przestaje być spełniony, gdy $i osiągnie 0, więc obrotów jest dokładnie dziesięć - dla $i równego kolejno 10, 9, …, 1. Skoro przy każdym z dziesięciu obrotów dodajemy 2, końcowy wynik to 10 × 2 = 20. Zapamiętaj regułę: liczbę powtórzeń pętli warunkowej wyznacza zmienna sterująca - tu $i maleje o 1, co daje 10 iteracji. Dlatego szukaną wartością jest 20.

Pytanie 5

Kiedy zakończy się wykonanie poniższego fragmentu kodu w języku C/C++, do zmiennej zwanej zmienna2 zostanie przypisane:

...
int zmienna1 = 158;
int *zmienna2 = &zmienna1;
A. przypisana zamieniona na łańcuch wartość przechowywana w zmienna1
B. przypisana ta sama wartość, co przechowywana w zmienna1
C. przypisana liczba w kodzie binarnym odpowiadająca wartości przechowywanej w zmienna1
D. przypisany adres zmiennej o nazwie zmienna1
Wskaźniki w językach C/C++ są jednymi z fundamentalnych koncepcji, które pozwalają na efektywne zarządzanie pamięcią oraz manipulację danymi na niskim poziomie. Błędne rozumienie przypisania wskaźników może prowadzić do nieporozumień. Kiedy przypisujemy zmienną typu wskaźnikowego, jak w int *zmienna2 = &zmienna1, przypisywany jest adres, a nie wartość. Odpowiedzi sugerujące przypisanie bezpośredniej wartości, jej binarnej reprezentacji lub konwersji do łańcucha są niepoprawne, ponieważ ignorują działanie operatora '&' oraz specyfikę wskaźników. Operator '&' zawsze zwraca adres pamięci, co umożliwia wskaźnikowi przechowywanie tego adresu. Pomijanie tego faktu jest częstym błędem, wynikającym z braku zrozumienia mechanizmów pamięci i wskaźników. Zrozumienie różnicy między wskaźnikiem a zwykłą zmienną jest kluczowe. Wskaźniki nie przechowują wartości zmiennych, lecz ich adresy, co pozwala na manipulację danymi w ich oryginalnym miejscu w pamięci. Ignorowanie tego aspektu prowadzi do logicznych błędów w programach i potencjalnych problemów z zarządzaniem pamięcią.

Pytanie 6

Które stwierdzenie o językach jest FAŁSZYWE?

A. PHP służy do tworzenia stron w czasie rzeczywistym
B. SQL jest językiem programowania strukturalnego
C. JavaScript jest językiem skryptowym
D. C++ jest językiem obiektowym
Pozostałe zdania są PRAWDZIWE, więc nie pasują do pytania o fałsz. C++ rzeczywiście jest obiektowy, JavaScript skryptowy, a PHP faktycznie generuje strony dynamicznie. Nieprawdą jest jedynie nazwanie SQL językiem programowania strukturalnego - to deklaratywny język zapytań.

Pytanie 7

Wskaż zapytanie, w którym dane zostały uporządkowane.

A. SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;
B. SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10;
C. SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2;
D. SELECT DISTINCT produkt, cena FROM artykuly;
Pierwsza odpowiedź, SELECT DISTINCT produkt, cena FROM artykuly, nie zawiera klauzuli ORDER BY, co oznacza, że wyniki nie są sortowane. Klauzula DISTINCT służy do usuwania duplikatów z wyników, co jest inną operacją od sortowania. Użytkownicy mogą błędnie myśleć, że DISTINCT automatycznie sortuje wyniki, jednak w rzeczywistości nie ma takiej funkcjonalności w SQL. Druga odpowiedź, SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2, ma na celu obliczenie średniej oceny, co również nie wiąże się z sortowaniem danych. Często zdarza się, że użytkownicy mylą funkcje agregujące, takie jak AVG, z operacjami sortowania. Ostatnia odpowiedź, SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10, ogranicza liczbę zwracanych wyników do 10, ale także nie sortuje ich. Użytkownicy mogą błędnie zrozumieć LIMIT jako mechanizm sortowania, lecz w rzeczywistości jest to ograniczenie liczby wyników. W celu osiągnięcia porządku w wynikach, klauzula ORDER BY jest niezbędna, a jej brak w tych zapytaniach skutkuje losowym uporządkowaniem wyników. Ważne jest, aby zrozumieć różnicę między operacjami agregującymi, filtrowaniem a sortowaniem, by móc efektywnie wykonywać zapytania w SQL.

Pytanie 8

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 9

Jaką wartość zwróci funkcja zoo zdefiniowana w języku C++, wywołana z aktualnym parametrem 3.55

int zao(float x){
    return (x + 0.5);
}
A. 4
B. 3.5
C. 4.05
D. 3
Niestety, wybrana odpowiedź jest niepoprawna. Możliwe, że zapomniano o specyficznych zasadach konwersji typów danych w języku C++. W języku tym, jeśli mamy do czynienia z wartościami zmiennoprzecinkowymi (float) i konwertujemy je do wartości całkowitych (int), część ułamkowa jest zawsze odrzucana. Nie ma tutaj zaokrąglenia do najbliższej liczby całkowitej. Dlatego, nawet jeśli wynik działania wewnątrz funkcji wynosi 4.05, po konwersji do typu int, zostaje z tego tylko 4. To jest typowy błąd, który może prowadzić do nieoczekiwanych wyników, szczególnie w programach, gdzie precyzja obliczeń jest kluczowa. Pamiętaj zawsze o tej specyfice języka C++ i dokładnie określaj typy danych, z którymi pracujesz.

Pytanie 10

Aby przygotować czytelne zestawienie danych z bazy, przeznaczone do wydruku, należy posłużyć się:

A. raportem
B. indeksem
C. kwerendą INSERT
D. formularzem
Pozostałe odpowiedzi dotyczą innych zadań niż prezentacja danych. Formularz to interfejs do wprowadzania i edycji rekordów - pomaga zasilać bazę, ale nie tworzy zestawień do druku. Kwerenda INSERT również służy do zapisu: dodaje nowe wiersze do tabeli, więc nie ma związku z prezentacją. Indeks to mechanizm przyspieszający wyszukiwanie i sortowanie - działa „w tle” i niczego nie wyświetla użytkownikowi. Czytelne zestawienie danych gotowe do wydruku przygotowuje raport, dlatego to on jest poprawną odpowiedzią.

Pytanie 11

Wskaż definicję metody, którą należy wstawić w miejscu kropek, aby na stronie WWW wyświetlił się tekst: Jan Kowalski

<p id="wynik"></p>
<script type="text/javascript">
    var osoba = { nazwisko: "Kowalski", imie: "Jan" };
    …
    document.getElementById("wynik").innerHTML = osoba.dane();
</script>

osoba.dane = function() {
    return this.imie+" "+this.nazwisko;
};                 A.

dane() = function() {
    return this.imie+" "+this.nazwisko;
};                 B.

osoba.dane = function() {
    return imie+" "+nazwisko;
};                 C.

dane() = function {
    this.imie+" "+this.nazwisko;
};                 D.
A. C.
B. A.
C. D.
D. B.
Fajnie, że wybrałeś dobrą odpowiedź! Metoda 'dane' jest powiązana z obiektem 'osoba', co pozwala ci używać słowa kluczowego 'this', żeby odwołać się do 'imię' i 'nazwisko'. To naprawdę ważna zasada w programowaniu obiektowym. 'This' to taki klucz, dzięki któremu możesz wskazać, z którego obiektu korzystasz w danej chwili. W tym przypadku odnosisz się do obiektu 'osoba'. Wyobraź sobie, że tworzysz aplikację i chcesz pokazać informacje o użytkowników, na przykład na stronie profilu. Dzięki metodzie 'dane', która jest częścią obiektu 'osoba', możesz łatwo wyświetlić imię i nazwisko. O to chodzi w programowaniu!

Pytanie 12

Aby zainstalować system CMS Joomla!, potrzebne jest środowisko

A. PHP oraz MySQL
B. Apache oraz PHP
C. IIS, PERL i MySQL
D. Apache, PHP i MySQL
Użytkownicy mogą mieć wątpliwości co do wyboru odpowiednich technologii dla uruchomienia systemu CMS Joomla!. Odpowiedzi sugerujące jedynie Apache i PHP ignorują istotny element, jakim jest baza danych. Brak MySQL w konfiguracji oznacza, że nie byłoby możliwości przechowywania oraz zarządzania danymi, co jest kluczowe w każdej aplikacji webowej. Z kolei odpowiedź zakładająca użycie IIS, PERL i MySQL wprowadza nieprawidłową konfigurację, gdyż IIS jest serwerem stworzonym przez Microsoft, który może być używany z innymi technologiami, ale nie jest standardowym wyborem dla Joomla!. PERL to język programowania, który nie jest powszechnie używany w ekosystemie Joomla! i nie jest wymagany do jej działania. Inną kwestią jest odpowiedź proponująca tylko PHP i MySQL, która również pomija serwer WWW - fundament działania aplikacji webowych. Prawidłowe uruchomienie Joomla! wymaga zintegrowania wszystkich trzech komponentów: serwera, języka skryptowego i bazy danych. Ignorowanie tych zależności prowadzi do błędnego rozumienia architektury aplikacji internetowych, co może w przyszłości skutkować problemami w implementacji oraz działaniu projektów opartych na Joomla!. Właściwe podejście wymaga zrozumienia, że każdy z tych elementów odgrywa kluczową rolę w zapewnieniu stabilności, bezpieczeństwa oraz wydajności aplikacji.

Pytanie 13

W tabeli mieszkancy, która zawiera pola id, imie, nazwisko, ulica, numer oraz czynsz (kwota całkowita), należy uzyskać informacje o osobach zamieszkujących ulicę Mickiewicza pod numerami 71, 72, 80, których czynsz nie przekracza 1000 zł. Klauzula WHERE w zapytaniu powinna wyglądać następująco

A. WHERE ulica = 'Mickiewicza' AND numer IN (71, 72, 80) AND czynsz < 1000
B. WHERE ulica = 'Mickiewicza' AND numer > 70 AND numer < 81 OR czynsz < 1000
C. WHERE ulica = 'Mickiewicza' OR numer IN (71, 72, 80) OR czynsz < 1000
D. WHERE ulica = 'Mickiewicza' AND numer IN (71, 72, 80) OR czynsz < 1000
Kiedy piszemy zapytanie SQL, klauzula WHERE powinna wyglądać tak: 'WHERE ulica = 'Mickiewicza' AND numer IN (71, 72, 80) AND czynsz < 1000'. Dlaczego to działa? Bo ta klauzula jasno określa, że interesują nas tylko mieszkańcy z ulicy Mickiewicza, mający numery 71, 72 lub 80, i którzy płacą czynsz mniejszy niż 1000 zł. Użycie AND sprawia, że wszystkie te warunki muszą być spełnione naraz, co jest naprawdę ważne. Możemy to sobie wyobrazić w kontekście zarządzania nieruchomościami, gdzie chcemy pokazać tylko wybraną grupę mieszkańców, na przykład do analizy ich sytuacji finansowej. I tak na marginesie – w SQL lepiej unikać OR, gdy chcemy dostąpić do jasno określonych danych, ponieważ może to dać nam za dużo wyników lub takie, których nie chcemy.

Pytanie 14

Który z wymienionych frameworków stworzono dla języka PHP?

A. Spring
B. ASP.NET
C. Angular
D. Symfony
Symfony to popularny framework języka PHP - dostarcza gotowy szkielet i komponenty (routing, dostęp do bazy, szablony, bezpieczeństwo), które przyspieszają tworzenie aplikacji webowych po stronie serwera. Z PHP związany jest też framework Laravel (zbudowany zresztą na komponentach Symfony). Framework narzuca strukturę projektu i promuje dobre praktyki. Dlatego frameworkiem dla PHP jest Symfony.

Pytanie 15

Aby zweryfikować konfigurację w pliku php.ini, można uruchomić skrypt PHP, który zawiera zapis

A. <?php ini_set(); ?>
B. <?php phpinfo(); ?>
C. <?php phpcredits(); ?>
D. <?php echo phpversion(); ?>
Wszelkie inne odpowiedzi nie spełniają funkcji dostarczania szczegółowych informacji o konfiguracji PHP w sposób tak kompleksowy jak phpinfo(). Funkcja <?php phpcredits(); ?> dostarcza informacji o autorach PHP oraz licencjach, ale nie ma na celu sprawdzania ustawień konfiguracyjnych. Jest to użyteczne w kontekście edukacyjnym, ale nie w praktyce związanej z konfiguracją. Z kolei <?php ini_set(); ?> jest używana do ustawiania wartości konfiguracyjnych w czasie działania skryptu, a nie do ich podglądania. I choć może być przydatna do dostosowywania środowiska, nie generuje podsumowania obecnych ustawień. Ostatnia odpowiedź, <?php echo phpversion(); ?>, jedynie zwraca wersję PHP, co również jest zbyt ograniczone, aby uzyskać pełny obraz konfiguracyjny. Błędem jest zatem założenie, że wystarczy znać wersję PHP lub autorów, aby prawidłowo skonfigurować środowisko, gdyż kluczowe są szczegóły dotyczące ustawień. Zrozumienie tych różnić jest kluczowe dla efektywnego zarządzania środowiskiem PHP i unikania problemów, które mogą wynikać z nieodpowiednich konfiguracji.

Pytanie 16

Sprawdzenie poprawności pól formularza polega na weryfikacji

A. czy istnieje plik PHP, który przetworzy dane
B. czy użytkownik jest zalogowany
C. który użytkownik wprowadził informacje
D. czy wprowadzone dane spełniają określone reguły
Wiele osób myli walidację pól formularza z innymi procesami związanymi z obsługą danych wejściowych. Przykładowo, założenie, że walidacja dotyczy wyłącznie sprawdzania, czy użytkownik jest zalogowany, jest mylne. Choć logowanie to ważny proces zabezpieczający, nie ma bezpośredniego związku z tym, czy wprowadzone dane są poprawne. Podobnie, twierdzenie, że walidacja polega na identyfikacji użytkownika, jest niepoprawne. Takie pytanie odnosi się do kontroli dostępu i autoryzacji, a nie do samej jakości danych. Identyfikacja użytkownika nie wpływa na to, czy dane są zgodne z wymaganiami formularza. Kolejny błąd polega na myśleniu, że walidacja jest związana z obecnością pliku PHP, który przetwarza dane; jednakże walidacja dotyczy tylko jakości danych, a nie technologii, która je obsługuje. Ponadto, wiele osób nie zdaje sobie sprawy z tego, że walidacja jest istotnym elementem ochrony przed atakami, takimi jak SQL Injection czy Cross-Site Scripting (XSS). Dlatego podstawowe podejścia do walidacji powinny skupiać się na definicji reguł, które dane muszą spełniać, a nie na kontekście użytkownika czy technologii przetwarzającej dane. Zastosowanie właściwych technik walidacji nie tylko zwiększa jakość danych, ale również wzmacnia bezpieczeństwo aplikacji, co jest zgodne z najlepszymi praktykami w obszarze tworzenia oprogramowania.

Pytanie 17

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

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

Pytanie 18

Została zaprezentowana tabela o nazwie konta. Aby obliczyć liczbę rejestracji w poszczególnych latach oraz wyświetlić te wartości razem z rokiem rejestracji, należy wykonać zapytanie

A. ```SELECT rejestracja, COUNT(rejestracja) FROM konta;```
B. ```SELECT COUNT(rejestracja) FROM konta JOIN rejestracja ON id;```
C. ```SELECT rejestracja, COUNT(rejestracja) FROM konta GROUP BY rejestracja;```
D. ```SELECT COUNT(rejestracja) FROM konta GROUP BY rejestracja;```
Rozważając inne odpowiedzi, można zauważyć kilka typowych błędów w rozumieniu operacji SQL. Odpowiedź 'SELECT rejestracja, COUNT(rejestracja) FROM konta;' pomija klauzulę GROUP BY, która jest niezbędna do prawidłowego grupowania wyników po kolumnie 'rejestracja'. Bez niej, zapytanie spowoduje błąd, ponieważ próbuje zliczyć wartości bez określenia, jak je grupować. Takie podejście jest niezgodne z zasadami SQL, które wymagają, aby wszystkie kolumny niewykorzystywane w funkcjach agregujących były zawarte w klauzuli GROUP BY.

W przypadku 'SELECT COUNT(rejestracja) FROM konta GROUP BY rejestracja;', mamy poprawnie użyte GROUP BY, ale brak jest kolumny 'rejestracja' w selekcji, co oznacza, że wyniki wyświetlą tylko liczby bez odpowiadających im lat, co nie spełnia założeń pytania.

Odpowiedź 'SELECT COUNT(rejestracja) FROM konta JOIN rejestracja ON id;' wprowadza dodatkowy błąd związany z niepoprawnym użyciem JOIN. Kolumna 'rejestracja' nie jest tabelą, a próbując połączyć ją z tabelą 'konta' za pomocą JOIN, wprowadza się błędną koncepcję struktury danych. JOIN jest używany do łączenia różnych tabel na podstawie powiązanych kolumn, co w tym przypadku nie ma zastosowania. Takie niezrozumienie składni SQL może prowadzić do błędnych wyników i niepotrzebnego skomplikowania zapytań. Powszechnym błędem w korzystaniu z JOIN jest niepoprawne używanie go do prostych operacji grupowania, które nie wymagają połączenia wielu tabel.

Pytanie 19

Aby wygodnie wprowadzać i edytować dane w bazie danych, można posłużyć się:

A. filtrowaniem
B. kwerendą SELECT
C. raportem
D. formularzem
Trzy pozostałe pojęcia dotyczą oglądania lub wyszukiwania danych, a nie ich zmiany. Raport przygotowuje dane do prezentacji i wydruku w czytelnej formie, ale jest tylko do odczytu. Filtrowanie pozwala zawęzić widok do wierszy spełniających warunek - ułatwia odnalezienie informacji, lecz niczego nie modyfikuje. Kwerenda SELECT pobiera dane z tabel i również ich nie edytuje (do zmian służą INSERT, UPDATE, DELETE). Wygodne wprowadzanie i edycję danych zapewnia formularz, który daje gotowe pola powiązane z kolumnami tabeli.

Pytanie 20

W języku PHP do zmiennej a wprowadzono tekst, w którym wielokrotnie występuje fraza Kowalski. Jakim poleceniem można jednocześnie zamienić wszystkie pojawienia się słowa Kowalski na słowo Nowak w zmiennej a?

A. $a = str_replace('Kowalski', 'Nowak', $a);
B. $a = str_replace('Nowak', 'Kowalski');
C. $a = str_rep('Kowalski', 'Nowak', $a);
D. $a = str_replace('Nowak', 'Kowalski', $a);
Wybór niepoprawnych odpowiedzi wskazuje na niezrozumienie funkcji str_replace w PHP oraz na błędne podejście do wymiany tekstu. Odpowiedź $a = str_replace('Nowak', 'Kowalski'); jest błędna, ponieważ próbuje zamienić 'Nowak' na 'Kowalski', co nie odpowiada zadaniu polegającemu na zamianie 'Kowalski' na 'Nowak'. To pokazuje brak zrozumienia kierunku działania funkcji. Kolejna odpowiedź $a = str_rep('Kowalski', 'Nowak', $a); jest niepoprawna, ponieważ str_rep nie jest właściwą funkcją w PHP. Powoduje to, że kod nie zadziała, co wskazuje na niezrozumienie dokumentacji PHP oraz dostępnych funkcji. Ostatnia niepoprawna odpowiedź $a = str_replace('Nowak', 'Kowalski', $a); zawiera tę samą pomyłkę co pierwsza, gdyż zamiana jest odwrotna do tego, co jest wymagane. Te wybory mogą wynikać z mylnego przekonania, że zamiana tekstu działa w obu kierunkach lub że funkcje mogą być używane z dowolnymi nazwami, co jest nieprawdziwe. W przypadku manipulacji tekstem w PHP, istotne jest zrozumienie dokładnej struktury oraz parametrów funkcji, a także ich funkcjonalności. Dlatego szczególnie ważne jest zapoznanie się z dokumentacją oraz zrozumienie, jak działają funkcje, zanim zostaną zastosowane w praktyce.

Pytanie 21

Jaką integralność określa przytoczona definicja?

Ilustracja do pytania
A. Encji
B. Statyczną
C. Referencyjną
D. Semantyczną
Integralność encji odnosi się do unikalności danych w tabeli poprzez klucze główne. Jest to fundamentalna koncepcja w relacyjnych bazach danych polegająca na tym że każda encja czyli rekord w tabeli musi być jednoznacznie identyfikowalna. Klucz główny zapewnia tę unikalność co jest niezależne od relacji między tabelami opisywanych przez integralność referencyjną. Pojęcie integralności statycznej odnosi się do stanu danych który nie zmienia się w czasie co nie jest bezpośrednio związane z relacjami pomiędzy tabelami. Integralność statyczna może odnosić się do historycznych danych lub archiwów gdzie dane muszą pozostać niezmienne po ich zarejestrowaniu. Podczas gdy integralność referencyjna dotyczy dynamicznych relacji między różnymi zestawami danych integralność statyczna wiąże się z zachowaniem niezmienności danych w obrębie pojedynczego zbioru. Integralność semantyczna odnosi się natomiast do znaczenia i logiki biznesowej danych. Chodzi o zapewnienie że dane w bazie są zgodne z regułami i założeniami biznesowymi. Na przykład data urodzenia nie może być późniejsza niż data zatrudnienia. Chociaż integralność semantyczna jest ważna dla poprawności danych z punktu widzenia aplikacji biznesowej nie opisuje ona relacji między tabelami w taki sposób jak integralność referencyjna. Właściwe rozumienie tych różnych koncepcji jest kluczowe dla projektowania i utrzymania spójnych i niezawodnych systemów baz danych.

Pytanie 22

Zakładając, że zmienna tablicowa $tab jest wypełniona liczbami naturalnymi, wynikiem programu będzie wypisanie

$liczba = $tab[0];
foreach ($tab as $element)
{
    if ($element > $liczba)
        $liczba = $element;
}
echo $liczba;
A. elementu tablicy, który jest równy wartości $tab[0].
B. największego elementu tablicy.
C. najmniejszego elementu tablicy.
D. tych elementów, które są większe od zmiennej $liczba.
Niektóre z błędnych odpowiedzi sugerują, że wynikiem programu będzie wypisanie najmniejszego elementu tablicy, tych elementów, które są większe od zmiennej $liczba, oraz elementu tablicy, który jest równy wartości $tab[0]. Te odpowiedzi są nieprawidłowe, ponieważ nie odzwierciedlają one prawidłowo działania programu. Program nie szuka najmniejszego elementu, ale największego. Nie ma również informacji, że program miałby wypisywać elementy większe od jakiejś konkretnej zmiennej - program porównuje wszystkie elementy tablicy z bieżącą największą znaną wartością, a nie z określoną z góry wartością. Odpowiedź sugerująca, że program wypisze wartość $tab[0] również jest nieprawidłowa, ponieważ wartość $tab[0] jest tylko początkową wartością do porównania, a nie koniecznie największym elementem tablicy.

Pytanie 23

Przedstawiony serwis internetowy służy do walidacji

Ilustracja do pytania
A. bazy danych SQL.
B. arkuszy stylów.
C. skryptów JavaScript.
D. dokumentów HTML.
Wygląda na to, że wybrałeś niepoprawną odpowiedź. Aby poprawnie odpowiedzieć na to pytanie, musisz zrozumieć funkcję różnych technologii internetowych i jak są one walidowane. Dokumenty HTML, bazy danych SQL i skrypty JavaScript są częściami składowymi stron internetowych, ale walidacja każdego z nich wymaga różnych narzędzi. Na przykład, dokumenty HTML są walidowane za pomocą narzędzi takich jak 'HTML Validation Service', podczas gdy bazy danych SQL i skrypty JavaScript są sprawdzane za pomocą różnych narzędzi do debugowania i testowania. Wybranie jednej z tych opcji sugeruje, że nie zrozumiałeś, do czego służy serwis 'CSS Validation Service'. Ten konkretny serwis jest stworzony do walidacji arkuszy stylów CSS, nie do walidacji dokumentów HTML, baz danych SQL czy skryptów JavaScript. Pamiętaj, że każda technologia webowa ma swoje specificzne narzędzia do walidacji, co umożliwia tworzenie zgodnych, efektywnych i bezbłędnych stron internetowych.

Pytanie 24

Pole insert_id zdefiniowane w bibliotece MySQLi języka PHP może być wykorzystane do

A. pobrania najwyższego indeksu bazy, aby po jego zwiększeniu wstawić pod niego dane
B. uzyskania id ostatnio dodanego wiersza
C. uzyskania pierwszego dostępnego indeksu bazy, tak, aby można było pod nim wstawić nowe dane
D. otrzymania kodu błędu, gdy wstawienie wiersza się nie powiodło
Każda z niepoprawnych odpowiedzi zawiera błędne założenia dotyczące funkcji insert_id w kontekście MySQLi. Odpowiedź, która sugeruje, że pole to może być użyte do otrzymania kodu błędu w przypadku niepowodzenia procesu wstawiania wiersza, jest myląca, ponieważ kod błędu jest uzyskiwany za pomocą innych mechanizmów, takich jak mysqli_errno() oraz mysqli_error(). Takie podejście może prowadzić do nieporozumień w zarządzaniu błędami w bazach danych, co jest istotnym aspektem programowania. Ponadto, pomysł, że insert_id może być używany do pobrania najwyższego indeksu bazy, aby po jego inkrementacji wstawić nowe dane jest nieprawidłowy, ponieważ insert_id nie działa w ten sposób; identyfikator jest automatycznie generowany przez bazę danych w momencie dodawania rekordu. Takie podejście może prowadzić do trudności w synchronizacji danych i jest niezgodne z zasadami dobrego projektowania baz danych. Również koncepcja pozyskiwania pierwszego wolnego indeksu jest błędna; w praktyce nie jest zalecane ręczne zarządzanie indeksami, ponieważ może to prowadzić do konfliktów i naruszenia integralności danych. MySQL automatycznie zarządza numerami ID, co jest bardziej efektywne i zmniejsza ryzyko błędów. Wreszcie, stosując te nieprawidłowe koncepcje, programiści mogą napotkać trudności w utrzymaniu kodu i jego rozwoju, co może zwiększyć złożoność aplikacji.

Pytanie 25

<form>
  <input type="email" id="addr" required>
  <input type="submit" value="Zapisz">
</form>
Na podstawie przedstawionego kodu formularza HTML można powiedzieć, że pole edycyjne:
A. wymaga wpisania jedynie znaków alfanumerycznych.
B. może być puste.
C. nie powinno zawierać znaków numerycznych.
D. nie może być puste i wymaga wpisania tekstu ze znakiem @.
Kod formularza, który został pokazany w pytaniu, wykorzystuje dwa mechanizmy walidacji wbudowane w HTML5: typ pola ustawiony na email oraz atrybut required. Jeśli się je dobrze rozumie, to łatwo odrzucić wszystkie błędne interpretacje. Spójrzmy na to bardziej od strony tego, co faktycznie robi przeglądarka.

Pomysł, że pole może być puste, jest sprzeczny z działaniem atrybutu required. Ten atrybut wprost oznacza, że użytkownik musi coś wpisać. Jeżeli zostawi pole puste i kliknie przycisk „Zapisz”, przeglądarka zablokuje wysłanie formularza i wyświetli swój komunikat, np. „Wypełnij to pole”. To nie jest kwestia „dobrej praktyki”, tylko twardej reguły zapisanej w specyfikacji HTML. W praktyce to bardzo przydatne, bo od razu na froncie wymusza uzupełnienie danych.

Stwierdzenie, że pole nie powinno zawierać znaków numerycznych, też jest błędne. Pole typu email dopuszcza cyfry, bo wiele poprawnych adresów e‑mail zawiera liczby, np. [email protected]. Przeglądarka nie ma żadnego zakazu cyfr w takim polu, patrzy tylko na ogólny format adresu.

Nieprawidłowy jest też pogląd, że wymagane są „jedynie znaki alfanumeryczne”. Adres e‑mail zawiera zwykle kropki, znak @, czasem myślniki, podkreślenia i inne dopuszczalne znaki. Gdyby przeglądarka pozwalała tylko na litery i cyfry, większość realnych adresów zostałaby odrzucona. Walidacja typu email jest skoncentrowana na strukturze (część przed @, znak @, część po @), a nie na tak prymitywnym ograniczeniu jak „tylko litery i cyfry”.

Typowy błąd myślowy przy takich pytaniach to mylenie różnych poziomów walidacji: jedni zakładają, że HTML w ogóle nie sprawdza formatu, inni z kolei wyobrażają sobie zbyt restrykcyjne reguły, które w praktyce by uniemożliwiły wpisanie normalnego adresu. Dobrym nawykiem jest patrzenie na to, co gwarantuje przeglądarka: w tym wypadku wymagane jest, żeby pole nie było puste (required) oraz żeby wpisany tekst przypominał adres e‑mail, czyli zawierał m.in. znak @ w odpowiednim miejscu. Wszystkie inne interpretacje wychodzą poza to, co naprawdę wynika z kodu formularza.

Pytanie 26

Jakie oprogramowanie jest potrzebne do uruchomienia skryptu JavaScript działającego na stronie?

A. przeglądarka internetowa
B. serwer WWW
C. serwer MySQL
D. debugger JavaScript
Pozostałe oprogramowanie nie jest konieczne do działania JS w przeglądarce. Serwer WWW i serwer MySQL obsługują stronę i bazę po stronie SERWERA, niezależnie od skryptów klienta. Debugger JS pomaga szukać błędów, ale nie jest wymagany do uruchomienia kodu. Wystarczy przeglądarka internetowa.

Pytanie 27

Jak należy poprawnie udokumentować wzorzec weryfikacji dla pola nazwa w kodzie aplikacji JavaScript?

Ilustracja do pytania
A. /* Pole nazwa może zawierać dowolny ciąg cyfr (z wyłączeniem 0), następnie musi zawierać dużą literę i ciąg minimum dwóch małych liter. */
B. /* Pole nazwa powinno składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużej litery i ciągu małych liter. */
C. /* Pole nazwa musi składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużych liter i dwóch małych liter. */
D. /* Pole nazwa może składać się z dowolnego ciągu cyfr (z wyłączeniem 0), małych i dużych liter. */
Niepoprawne odpowiedzi zakładają niewłaściwą interpretację wymagań dotyczących wzorca walidacji. Pierwsza opcja sugeruje że pole 'nazwa' może składać się z dowolnych cyfr i liter co nie uwzględnia wymogu specyficznej kolejności i liczby znaków co może prowadzić do wprowadzenia nieprawidłowych danych. Taki brak restrykcji mógłby skutkować potencjalnymi lukami w zabezpieczeniach aplikacji. Inna odpowiedź zakłada że po cyfrze musi wystąpić duża litera a następnie ciąg małych liter co nie spełnia wymogu co najmniej dwóch małych liter. Podejście to ignoruje szczegółowe wymagania dotyczące liczby małych liter w końcowej części ciągu. Kolejne błędne założenie mówi o konieczności posiadania dwóch małych liter ale nie wymaga dużej litery co również jest sprzeczne ze wzorcem przedstawionym w zadaniu. Częstym błędem jest nieuwzględnianie pełnej struktury wzorca co powoduje że walidacja jest niekompletna i potencjalnie niewystarczająca do zapewnienia integralności danych. Prawidłowe użycie wyrażeń regularnych wymaga szczegółowego zrozumienia zarówno składni jak i logiki stojącej za walidacją danych aby skutecznie zabezpieczyć aplikację przed nieprawidłowymi wpisami które mogą wpłynąć na jej funkcjonalność i bezpieczeństwo. Zrozumienie zasad poprawnej walidacji jest kluczowym elementem w procesie tworzenia bezpiecznych i niezawodnych aplikacji webowych.

Pytanie 28

Zapytanie z użyciem klauzuli JOIN jest wykorzystywane w celu

A. pozyskania wyników z dwóch tabel, które są ze sobą powiązane
B. uzyskania wyników tylko z jednej tabeli
C. określenia klucza obcego dla tabeli
D. wywołania funkcji agregującej
Kiedy używasz klauzuli JOIN w SQL, to tak naprawdę odblokowujesz potencjał swoich relacyjnych baz danych. Dzięki temu możesz łączyć dane z różnych tabel, co jest mega przydatne, gdy trzeba przeanalizować informacje z wielu źródeł. Na przykład, jeżeli masz dwie tabele – 'Klienci' i 'Zamówienia' – to z pomocą JOIN możesz łatwo stworzyć listę zamówień razem z danymi o klientach. Kluczowe jest to, by wiedzieć, które kolumny chcesz zestawić, bo wtedy otrzymasz jasne i uporządkowane wyniki. Z własnego doświadczenia powiem, że umiejętne korzystanie z JOIN znacznie poprawia szybkość zapytań i ułatwia analizę danych. Tak naprawdę, to dla programistów szansa na pełne wykorzystanie SQL przy tworzeniu różnorodnych raportów. W dzisiejszych czasach, gdy tak dużo danych krąży wokół, znajomość tych technik to must-have.

Pytanie 29

Tabela Pracownicy zawiera informacje o zatrudnionych w różnych działach, co jest określone przez pole liczbowe dzial. Z uwagi na to, że zazwyczaj wykonuje się kwerendy jedynie dla działu równego 2, można uprościć zapytania do tej tabeli, tworząc wirtualną tabelę o nazwie Prac_dzial2 przy użyciu zapytania

A. CREATE VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2
B. VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2
C. VIEW Prac_dzial2 SELECT FROM Pracownicy WHERE dzial=2
D. CREATE VIEW Prac_dzial2 AS SELECT * FROM Pracownicy WHERE dzial=2
Odpowiedź 'CREATE VIEW Prac_dzial2 AS SELECT * FROM Pracownicy WHERE dzial=2;' jest poprawna, ponieważ syntaktycznie i semantycznie odnosi się do standardów SQL używanych do tworzenia widoków. Komenda 'CREATE VIEW' służy do zdefiniowania wirtualnej tabeli, która agreguje dane według określonych kryteriów. W tym przypadku, widok 'Prac_dzial2' wyciąga wszystkie rekordy z tabeli 'Pracownicy', które spełniają warunek, że wartość pola 'dzial' wynosi 2. Używanie widoków jest praktyką zalecaną, ponieważ pozwala na uproszczenie złożonych zapytań oraz zabezpiecza przed niepożądanym dostępem do danych. Dzięki temu, użytkownicy mogą łatwiej filtrować dane, co zwiększa wydajność zapytań i poprawia organizację kodu. Widoki są także korzystne w kontekście zarządzania danymi, ponieważ mogą być zaktualizowane, a ich struktura może być zmieniana w zależności od potrzeb użytkownika, co czyni je elastycznym narzędziem w bazach danych.

Pytanie 30

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

A. imie2
B. #imie
C. imię%
D. imię2
W języku JavaScript, poprawne nadawanie zmiennych jest kluczowym elementem programowania, który opiera się na zdefiniowanych zasadach dotyczących identyfikatorów. Zmienna musi zaczynać się od litery, znaku podkreślenia (_) lub znaku dolara ($), a następnie może zawierać litery, cyfry, znaki podkreślenia oraz znaki dolara. W przypadku odpowiedzi 'imie2', zaczyna się ona od litery i zawiera literę oraz cyfrę, co czyni ją poprawnym identyfikatorem. Zgodnie ze standardem ECMAScript, identyfikatory są rozróżniane na wielkie i małe litery, co oznacza, że 'Imie2' i 'imie2' będą traktowane jako różne zmienne. Praktycznym przykładem poprawnego użycia takiej zmiennej może być zapis: let imie2 = 'Jan'; console.log(imie2);. W wyniku tego, konsola wyświetli 'Jan'. Można również zauważyć, że zgodnie z zasadami, zmienne mogą być oznaczone jako let, const lub var, co dodaje elastyczności podczas deklaracji zmiennych w kodzie JavaScript.

Pytanie 31

Podczas definiowania tabeli produkty należy stworzyć pole cena, które będzie reprezentować wartość produktu. Odpowiedni typ danych dla tego pola to

A. INTEGER(11)
B. TINYTEXT
C. ENUM
D. DECIMAL(10, 2)
Wybór typów danych dla pola przechowującego cenę produktu ma kluczowe znaczenie dla poprawności funkcjonowania bazy danych. INTEGER(11) jest typem, który przechowuje liczby całkowite, co oznacza, że nie może być zastosowany do reprezentacji wartości z miejscami dziesiętnymi, co jest niezbędne w przypadku cen. Użycie INTEGER może prowadzić do poważnych problemów, jak zaokrąglanie cen, co w branży handlowej może skutkować błędnymi transakcjami. TINYTEXT to typ danych przeznaczony do przechowywania tekstu, co czyni go całkowicie nieodpowiednim do reprezentacji wartości liczbowych, a tym bardziej cen. W przypadku zastosowania TINYTEXT w tym kontekście, nie tylko utracimy możliwość przeprowadzania obliczeń na cenach, ale również stworzymy dodatkowe problemy z wydajnością bazy danych, ponieważ operacje na tekstach są znacznie wolniejsze niż na liczbach. Z kolei ENUM, który jest używany do określenia zestawu dozwolonych wartości, nie ma zastosowania w kontekście cen, które mogą się zmieniać i nie są ograniczone do stałego zestawu opcji. Użycie ENUM do reprezentacji cen prowadziłoby do nieefektywności, ponieważ każda zmiana ceny wymagałaby modyfikacji definicji pola. Typowe błędy myślowe prowadzące do takich niepoprawnych wniosków to brak zrozumienia znaczenia precyzyjnego przechowywania danych finansowych oraz nieznajomość dostępnych typów danych i ich zastosowań w kontekście konkretnej aplikacji.

Pytanie 32

Wartość atrybutu w tabeli, który pełni rolę klucza głównego

A. musi być unikalna
B. może przyjmować wartość null (NULL)
C. jest używana do szyfrowania zawartości tabeli
D. nigdy nie jest innego typu niż numeryczny
Rozumienie, co to jest klucz podstawowy, jest mega istotne, zwłaszcza gdy projektujesz bazy danych. Klucz podstawowy nie ma nic wspólnego z tym, jak szyfrujesz dane w tabeli. Szyfrowanie dotyczy bardziej bezpieczeństwa informacji, a klucz podstawowy to sposób na identyfikację rekordów. Warto też wiedzieć, że klucz podstawowy nie musi być zawsze numeryczny. Może być tekstowy czy alfanumeryczny, w zależności od tego, jak go użyjesz. Na przykład, w niektórych systemach identyfikatory mogą być ciągami znaków, co jest ważne, kiedy integrujesz różne systemy. Tak czy siak, klucz podstawowy nigdy nie może mieć wartości pustej (NULL), bo to by wszystko zrujnowało. Jeśli ktoś myśli, że klucz podstawowy może być pusty, to może się narazić na spore kłopoty. Klucz podstawowy to nie tylko identyfikacja, ale też ważny element, który pomaga w normalizacji danych, co z kolei wpływa na ich spójność. Dlatego warto znać te zasady, bo mają duży wpływ na to, jak działają bazy danych.

Pytanie 33

Która funkcja PHP ZWRACA jako wynik połowę kwadratu przekazanej wartości $a?

A.
function licz($a) { return $a/2; }
B.
function licz($a) { return $a*$a/2; }
C.
function licz($a) { echo $a/2; }
D.
function licz($a) { echo $a*$a/2; }
Pozostałe funkcje nie spełniają obu warunków naraz. Warianty z echo tylko WYPISUJĄ wartość na ekran - nie zwracają jej, więc nie da się jej dalej użyć. return $a/2 zwraca poprawnie, ale liczy połowę WARTOŚCI, a nie połowę KWADRATU. Trzeba połączyć return z formułą $a*$a/2.

Pytanie 34

Po uruchomieniu zamieszczonego w ramce skryptu w języku JavaScript, w przeglądarce zostanie wyświetlona wartość:

var a = 5;
var b = a--;
a *= 3;
document.write(a + "," + b);
A. 15,5
B. 12,5
C. 15,4
D. 12,4
W tym skrypcie JavaScript najpierw zmienna a zaczyna z wartością 5. Gdy używasz operatora dekrementacji, czyli a--, to jego wartość zostaje przypisana do zmiennej b, zanim a zostanie zmniejszona. Dlatego b ma wartość 5, a a staje się 4. Potem mamy a *= 3, co znaczy, że mnożymy 4 (aktualną wartość a) przez 3, co daje nam 12. Na końcu, wywołując document.write(a + ',' + b), dostajemy w wyniku 12,5. Zrozumienie tych operatorów w JavaScript jest naprawdę ważne. Operatorzy, jak ++ i --, są powszechnie używani w pętlach, więc znajomość ich działania pomoże ci pisać lepszy i bardziej przejrzysty kod, unikając typowych błędów przy przypisywaniu wartości. Fajnie też wiedzieć, że podobnie działają oni w wielu innych językach programowania, więc ta wiedza jest naprawdę uniwersalna.

Pytanie 35

Mamy do czynienia z tablicą o nazwie tab, która zawiera liczby całkowite różniące się od zera. Zawarty w języku PHP kod ma na celu:

foreach ($tab as &$liczba)
    $liczba = $liczba * (-1);
unset($liczba);
A. zmienić wszystkie elementy tablicy na liczby o przeciwnym znaku
B. przekształcić elementy tablicy na wartości zapisane w zmiennej liczba
C. wyliczenie iloczynu wszystkich wartości w tablicy
D. obliczyć wartość bezwzględną elementów tej tablicy
Analizując przedstawione odpowiedzi, ważne jest zrozumienie, dlaczego pozostałe opcje są nieprawidłowe w kontekście podanego kodu PHP. Pierwsza z nich sugeruje, że kod oblicza iloczyn wszystkich liczb w tablicy. Jednakże, kod ten nie prowadzi do żadnej operacji akumulacji wartości, nie jest stosowana zmienna do przechowywania wyniku, a operacja wykonywana w pętli to jedynie zmiana znaku każdej liczby. Druga odpowiedź, mimo że błędna jako wybór, w rzeczywistości jest poprawną odpowiedzią zgodnie z pytaniem egzaminacyjnym. Trzecia sugeruje, że elementy tablicy zostaną zastąpione wartością przechowywaną w zmiennej liczba. Kod, który by tego dokonywał, musiałby inicjalizować zmienną z konkretną wartością i przypisywać ją każdemu elementowi tablicy, co nie jest realizowane przez przedstawiony fragment kodu. Czwarta odpowiedź mówi o obliczaniu wartości bezwzględnej elementów tablicy. Aby to osiągnąć, w PHP należałoby użyć funkcji abs(), której tutaj nie zastosowano. Typowym błędem prowadzącym do takich niepoprawnych wniosków jest nieprawidłowe zrozumienie działania operatorów i funkcji w kontekście języka PHP. Kluczowe jest, aby rozumieć, że kod bezpośrednio modyfikuje wartości w tablicy przez mnożenie przez -1, a nie wykonuje żadnych innych operacji matematycznych czy przypisania wartości.

Pytanie 36

Które metody są związane z predefiniowanym obiektem Date w języku JavaScript?

A.
row()
B.
fromCodePoint()
C.
concat() oraz pop()
D.
getMonth() oraz getDay()
Obiekt Date w JavaScript przechowuje datę i czas oraz udostępnia metody do ich odczytu i ustawiania. Należą do nich m.in. getMonth() (numer miesiąca, 0-11), getDay() (dzień tygodnia, 0-6), getFullYear(), getHours() czy getTime(). Obiekt tworzy się przez new Date(). Dlatego z obiektem Date związane są getMonth() i getDay().

Pytanie 37

Poniżej przedstawiono sposób obsługi:

<?php
if (!isset($_COOKIE[$nazwa]))
    echo "nie ustawiono!";
else
    echo "ustawiono, wartość: " . $_COOKIE[$nazwa];
?>
A. baz danych
B. zmiennych tekstowych
C. sesji
D. ciasteczek
Analizując przedstawione odpowiedzi, najpierw rozważmy zmienne tekstowe. Kod PHP nie odnosi się bezpośrednio do operacji na zmiennych tekstowych, które zazwyczaj obejmują manipulację ciągami znaków przy użyciu funkcji takich jak strlen czy str_replace. Kod dotyczy mechanizmu przechowywania danych między żądaniami HTTP, co nie jest typowe dla obsługi zmiennych tekstowych. Kolejna opcja to baza danych. Skrypty PHP często współpracują z bazami danych w celu przechowywania i pobierania danych, ale w tym przypadku żadna operacja na bazie danych nie jest wykonywana. Nie ma użytych funkcji typowych dla obsługi baz danych, takich jak mysqli_query czy PDO. Skrypt nie ustanawia połączenia z bazą danych ani nie wykonuje zapytań. Natomiast sesje to mechanizm do przechowywania danych o użytkownikach między żądaniami, ale działa inaczej niż ciasteczka. Sesje zwykle przechowują informacje na serwerze, a jedynie identyfikator sesji jest przechowywany po stronie klienta, często w ciasteczku, ale niekoniecznie. Kod nie wykorzystuje zmiennej $_SESSION, która jest typowa dla obsługi sesji. Każda z tych koncepcji ma swoje zastosowania i ograniczenia, jednak w kontekście przedstawionego kodu kluczowe jest zrozumienie, że podstawową operacją wykonywaną jest manipulacja ciasteczkami, co wyklucza inne podane rozwiązania i wskazuje na prawidłową odpowiedź jako na obsługę ciasteczek w PHP. Kod ilustruje prosty przykład sprawdzania i wyświetlania wartości ciasteczka, co jest podstawowym zastosowaniem tej technologii po stronie klienta.

Pytanie 38

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

A. <p href="/akapit">akapit3</p>
B. <p id="akapit">akapit2</p>
C. <p class="akapit">akapit4</p>
D. <p>akapit</p>
Analizując inne odpowiedzi, można zauważyć kilka technicznych nieporozumień. W przypadku <p>akapit</p>, brak atrybutu class oznacza, że element ten nie jest dostępny dla metody getElementsByClassName, która wymaga specyficznego przypisania klas do elementów. Podobnie, <p href="/akapit">akapit3</p> zawiera atrybut href, który nie ma zastosowania w kontekście akapitu, ponieważ href jest używany głównie w elementach <a> do definiowania linków, a nie w akapitach. Taki błąd może prowadzić do mylnego przekonania, że atrybuty, które nie są związane z klasami, mogą być używane do selekcji elementów. Z kolei <p id="akapit">akapit2</p> ma przypisany atrybut id, co również nie działa w przypadku metody getElementsByClassName, ponieważ ta metoda selekcjonuje elementy na podstawie klas, a nie identyfikatorów. Użycie id jako selektora w JavaScript powinno odbywać się za pomocą metody getElementById, która jest bardziej odpowiednia w tym kontekście. Warto podkreślić, że powszechnym błędem w myśleniu jest mylenie różnych mechanizmów selekcji w JavaScript i przypisywaniu im niewłaściwych atrybutów. Zrozumienie różnic między klasami a identyfikatorami jest kluczowe dla skutecznego zarządzania elementami DOM i tworzenia bardziej przejrzystego kodu.

Pytanie 39

W tabeli o nazwie pracownicy zdefiniowano klucz główny w typie INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT. Dodatkowo zdefiniowane zostały pola imie oraz nazwisko. W przypadku wykonania podanej kwerendy SQL, która dodaje dane i pomija pole klucza, w bazie danych MySQL nastąpi

INSERT INTO pracownicy (imie, nazwisko)
VALUES ('Anna', 'Nowak');
A. błąd związany z niewłaściwą liczbą pól
B. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
C. zignorowanie polecenia, tabela nie ulegnie zmianie
D. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
W kontekście baz danych MySQL wprowadzenie rekordu z pominięciem pola klucza głównego z atrybutem AUTO_INCREMENT nie prowadzi do błędu ani pozostawienia pola z wartością NULL, ponieważ mechanizm AUTO_INCREMENT automatycznie przypisuje kolejną wartość liczbową. Niepoprawne jest myślenie, że pole klucza mogłoby pozostać puste lub z wartością NULL, gdyż oznaczałoby to naruszenie zasady unikalności, co jest sprzeczne z ideą klucza głównego, który musi mieć unikalną wartość. Kolejną błędną koncepcją jest przekonanie, że polecenie SQL mogłoby zostać zignorowane pozostawiając tabelę bez zmian. Taka sytuacja mogłaby mieć miejsce jedynie w przypadku wystąpienia błędu składniowego lub naruszenia spójności danych, ale nie w tym wypadku. Często spotykanym błędem jest też wyobrażenie, że wystąpi błąd nieprawidłowej liczby pól, co miałoby miejsce, gdyby liczba wymienionych pól w instrukcji INSERT nie zgadzała się z liczbą wartości, które chcemy wprowadzić. Prawidłowe zrozumienie mechanizmu AUTO_INCREMENT jest kluczowe, by unikać tych typowych błędów i w pełni korzystać z możliwości, jakie daje ten mechanizm w kontekście automatyzacji i ułatwienia zarządzania kluczami głównymi w bazach danych.

Pytanie 40

Podano tabelę ksiazki z kolumnami: tytul, autor (w formacie tekstowym), cena (w formacie liczbowym). Aby zapytanie SELECT zwracało jedynie tytuły, dla których cena jest niższa niż 50zł, należy użyć:

A. SELECT tytul FROM ksiazki WHERE cena > '50 zł'
B. SELECT ksiazki FROM tytul WHERE cena < '50 zł'
C. SELECT * FROM ksiazki WHERE cena < 50
D. SELECT tytul FROM ksiazki WHERE cena < 50
Odpowiedź 'SELECT tytul FROM ksiazki WHERE cena < 50;' jest poprawna, ponieważ precyzyjnie formułuje zapytanie w języku SQL, które ma na celu wyodrębnienie z tabeli 'ksiazki' tylko tych tytułów, których cena jest niższa niż 50. W tym przypadku użycie operatora porównania '<' skutkuje filtracją danych według określonego kryterium. Jest to zgodne z dobrą praktyką w programowaniu baz danych, ponieważ pozwala uzyskać potrzebne informacje w sposób efektywny i zrozumiały. Przykładem praktycznego zastosowania może być stworzenie raportu dla księgarni, która chce zobaczyć, które książki są w sprzedaży w przystępnej cenie. Zwracając tylko potrzebne kolumny (tytuł), minimalizujesz ilość przesyłanych danych, co jest ważne w kontekście wydajności i szybkości działania aplikacji korzystających z bazy danych. Dodatkowo, unikanie podawania ceny w formacie tekstowym (np. '50 zł') jest zgodne z zasadami dobrego projektowania baz danych, które zalecają stosowanie odpowiednich typów danych, co w tym przypadku oznacza liczbę bez jednostki walutowej.