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: 1 sierpnia 2026 17:46
  • Data zakończenia: 1 sierpnia 2026 17:58

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Jakie zapytanie SQL umożliwi wyszukanie z podanej tabeli tylko imion i nazwisk pacjentów, którzy przyszli na świat przed rokiem 2002?

Ilustracja do pytania
A. SELECT * FROM Pacjenci WHERE rok_urodzenia <= 2002
B. SELECT imie, nazwisko FROM Pacjenci WHERE data_ostatniej_wizyty < 2002
C. SELECT * FROM Pacjenci WHERE rok_urodzenia LIKE 2002
D. SELECT imie, nazwisko FROM Pacjenci WHERE rok_urodzenia < 2002
To zapytanie SQL, które napisałeś, czyli SELECT imie, nazwisko FROM Pacjenci WHERE rok_urodzenia < 2002, jest całkiem trafione. Po pierwsze, używasz operatora SELECT, żeby wskazać, jakie kolumny chcesz zwrócić - czyli imię i nazwisko. To jest dokładnie to, co było potrzebne. Po drugie, warunek WHERE z rokiem urodzenia zapewnia, że do wyników dostają się tylko pacjenci, którzy przyszli na świat przed 2002 rokiem. No i to jest ważne, bo masz tutaj operator mniejszości <, który wyklucza sam rok 2002. Takie podejście jest super przydatne w bazach danych, bo pozwala na filtrowanie informacji w oparciu o lata, co często wykorzystuje się w raportach i analizach. Generalnie, dobre praktyki w SQL mówią, że warto precyzyjnie określać, jakie kolumny chcesz uwzględnić, bo to pomaga odciążyć system i zrobione zapytanie będzie działać wydajniej. Twoje zapytanie nie tylko spełnia wymagania, ale także jest optymalne, co jest naprawdę istotne w pracy z bazami danych.

Pytanie 2

Jaki typ relacji powstaje, gdy połączymy dwie tabele przez ich KLUCZE GŁÓWNE?

A. jeden do wielu
B. jeden do jednego
C. wiele do wielu
D. wiele do jednego
Gdy dwie tabele łączymy przez ich KLUCZE GŁÓWNE (oba unikalne), każdemu rekordowi jednej odpowiada dokładnie jeden rekord drugiej - to relacja JEDEN DO JEDNEGO (1:1). Stosuje się ją np. do rozdzielenia rzadko używanych pól. Zapamiętaj: dwa klucze główne naprzeciw siebie = 1:1.

Pytanie 3

Uprawnienia obiektowe przyznawane użytkownikom serwera bazy danych mogą umożliwiać lub ograniczać

A. przechodzić uprawnienia
B. zmieniać role i konta użytkowników
C. wykonywać polecenia, takie jak tworzenie kopii zapasowej
D. realizować operacje na bazie, takie jak wstawianie lub modyfikowanie danych
Uprawnienia obiektowe w kontekście baz danych pozwalają na kontrolowanie dostępu do różnych zasobów, takich jak tabele, widoki czy procedury składowane. Odpowiedź dotycząca wykonywania operacji na bazie, takich jak wstawianie czy modyfikowanie danych, jest prawidłowa, ponieważ uprawnienia te bezpośrednio wpływają na możliwości użytkownika w zakresie manipulacji danymi. Przykładowo, jeśli użytkownik posiada uprawnienie do INSERT, może dodawać nowe rekordy do tabeli, natomiast uprawnienie UPDATE pozwala na zmianę istniejących danych. Takie zarządzanie uprawnieniami jest kluczowe w kontekście bezpieczeństwa danych oraz zapewnienia integralności systemu, ponieważ pozwala na ograniczenie dostępu tylko do tych operacji, które są niezbędne dla danego użytkownika. W praktyce administratorzy baz danych stosują zasady minimalnych uprawnień, przyznając użytkownikom tylko te uprawnienia, które są niezbędne do wykonywania ich pracy, co jest zgodne z najlepszymi praktykami w zakresie zarządzania bezpieczeństwem baz danych.

Pytanie 4

Co powinno znaleźć się w dokumentacji UŻYTKOWNIKA aplikacji?

A. opis algorytmów zastosowanych w kodzie
B. opis użytych technologii i bibliotek
C. instrukcja obsługi funkcji systemu
D. szczegółowy opis kodu źródłowego
Dokumentacja UŻYTKOWNIKA jest pisana dla osoby obsługującej program, więc zawiera instrukcję obsługi jego funkcji - jak wykonać typowe zadania, krok po kroku, bez wnikania w kod. Dlatego znajdzie się w niej instrukcja obsługi funkcji systemu.

Pytanie 5

Fragment kodu powyżej został napisany w języku JavaScript. Co należy umieścić w miejsce kropek, aby program przypisywał wartość 1 co trzeciemu elementowi w tablicy?

for (i = 0; i < T.length; ...)
{
    T[i] = 1;
}
A. i = 3
B. i =+ 3
C. i += 3
D. i ++ 3
Inne odpowiedzi wynikają z nieprawidłowego zrozumienia mechaniki inkrementacji w pętli for w JavaScript. Wyrażenie i ++ 3 sugeruje błąd składniowy i logiczny. Operator ++ służy do zwiększenia wartości zmiennej o 1 i nie jest poprawnie użyty w połączeniu z innym operatorem lub liczbą. Takie połączenie może prowadzić do nieprzewidywalnych rezultatów i niespójności w kodzie. Natomiast i = 3 to przypisanie które ustawia wartość i na 3 na początku każdej iteracji resetując pętlę i uniemożliwiając jej poprawne działanie. Taka konstrukcja powodowałaby nieskończone zapętlenie ponieważ warunek końcowy pętli nigdy nie mógłby zostać spełniony. Z kolei i =+ 3 to błędna składnia ponieważ operator += jest połączony z plusem co prowadzi do błędów interpretacji przez kompilator. Zamiana kolejności lub dodanie niepotrzebnych znaków zmienia całkowicie logikę operacji prowadząc do nieoczekiwanych rezultatów. Zrozumienie poprawnego użycia operatorów inkrementacji i przypisania jest kluczowe w programowaniu w JavaScript ponieważ umożliwia to pisanie efektywnego i wydajnego kodu. Takie błędy są częste u początkujących którzy często mylą różne operatory przypisania i inkrementacji dlatego ważne jest ćwiczenie poprawnych konstrukcji składniowych podczas nauki programowania. Częste ćwiczenie i testowanie kodu w różnych scenariuszach pozwala na lepsze zrozumienie tych mechanizmów i uniknięcie typowych pułapek związanych z nieprawidłowym użyciem operatorów.

Pytanie 6

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

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

Pytanie 7

Wskaż, na czym polega błąd w kodzie napisanym w języku C++.

char str1[30] = 'Ala ma kota'; printf("%s", str1);
A. Napis powinien być umieszczony w cudzysłowach.
B. W funkcji printf nie można używać formatowania %s.
C. Napis powinien mieć dokładnie 30 znaków.
D. Do funkcji printf przekazano zbyt mało argumentów.
Podawanie błędnych informacji na temat inicjalizacji łańcucha znaków w C++ może prowadzić do poważnych nieporozumień. Wskazanie, że napis powinien mieć dokładnie 30 znaków, nie jest zasadniczo poprawne, ponieważ tablice w C++ mogą mieć zmienną długość. Ważne jest, aby łańcuch znaków był odpowiednio długi, jednak nie istnieje wymóg, aby dokładnie wypełniał całą tablicę. Mówiąc o długości, istotniejsze jest, aby nie przekraczać rozmiaru tablicy, aby uniknąć błędów pamięci. Poza tym, stwierdzenie, że do funkcji printf przekazano zbyt mało argumentów, jest mylące; w tym przypadku argumenty są poprawne, ponieważ przekazujemy jedynie jeden wskaźnik do łańcucha, co jest zgodne z formatem funkcji printf. Dodatkowo, twierdzenie, że w printf nie można stosować formatowania %s, jest całkowicie błędne. Format %s jest standardowym sposobem na wyświetlanie łańcuchów znaków w C++, co jest zgodne z dokumentacją i najlepszymi praktykami w programowaniu. Stosowanie tego formatu jest kluczowe w przypadku pracy z tekstem, a zrozumienie tej zasady jest fundamentem w nauce języka C++. Warto zatem pamiętać o właściwej inicjalizacji łańcuchów oraz o tym, jak korzystać z funkcji wejścia/wyjścia, aby unikać typowych błędów w kodzie.

Pytanie 8

Programista stworzył w języku C++ pętlę mającą na celu obliczenie wartości 5! (5! = 1 * 2 * 3 * 4 * 5). Niestety, popełnił błąd logiczny, gdyż

int a = 1; 
for (int i=1; i < 5; i++)
{
a = a * i;
}
cout << a;
A. W drugim parametrze pętli powinno być porównanie i < 6 zamiast i < 5.
B. Parametr i pętli powinien być rozpoczęty od wartości 0 zamiast 1.
C. Parametr i pętli powinien być zmniejszany zamiast zwiększany.
D. Zmienna a powinna być inicjowana wartością 0 zamiast 1.
W poprawnej odpowiedzi wskazano, że w drugim parametrze pętli powinno być porównanie i < 6 zamiast i < 5. W kontekście obliczania silni 5! (czyli 5*4*3*2*1), pętla for powinna iterować od 1 do 5, co oznacza, że końcowy warunek pętli powinien uwzględniać 5. W przeciwnym razie, ostatnia iteracja, w której i wynosi 5, nie będzie wykonana, co skutkuje błędnym wynikiem. Prawidłowa pętla powinna wyglądać tak: for (int i=1; i <= 5; i++) lub for (int i=1; i < 6; i++). Takie podejście jest zgodne z zasadami programowania, które zalecają, aby końcowy warunek pętli obejmował ostatnią wartość, która ma być przetwarzana. Dobrą praktyką w programowaniu jest również przemyślenie granic pętli, aby zapewnić, że wszystkie wymagane wartości są uwzględniane w obliczeniach, co jest kluczowe w takich obliczeniach matematycznych jak silnia.

Pytanie 9

Które stwierdzenie dotyczące klucza głównego (podstawowego) jest prawdziwe?

A. jest unikalny w obrębie tabeli
B. dla danych osobowych może to być pole nazwisko
C. może przyjmować wyłącznie wartości liczbowe
D. składa się tylko z jednego pola
Klucz główny musi być UNIKALNY w obrębie tabeli - jego wartości nie mogą się powtarzać, bo jednoznacznie identyfikują każdy wiersz. Dlatego prawdziwe jest, że klucz główny jest unikalny w obrębie tabeli.

Pytanie 10

Skrypt strony internetowej stworzony w PHP

A. jest realizowany po stronie klienta
B. jest przetwarzany na tych samych zasadach co JavaScript
C. jest realizowany po stronie serwera
D. może być uruchomiony bez wsparcia serwera WWW
Kod strony WWW napisanej w języku PHP jest wykonywany po stronie serwera, co oznacza, że cały proces przetwarzania kodu zachodzi na serwerze, zanim strona zostanie wysłana do przeglądarki użytkownika. PHP jest językiem skryptowym, który generuje dynamiczne treści oraz może wchodzić w interakcje z bazami danych, co czyni go niezwykle efektywnym narzędziem do tworzenia aplikacji webowych. Przykładowo, gdy użytkownik wysyła formularz, skrypt PHP na serwerze może przetworzyć dane, a następnie wygenerować odpowiednią stronę HTML, która jest następnie przesyłana do klienta. Dodatkowo, PHP wspiera różne standardy, takie jak RESTful API, co pozwala na łatwe integrowanie z innymi systemami oraz aplikacjami. Warto także zauważyć, że PHP ma szeroką gamę frameworków, takich jak Laravel czy Symfony, które jeszcze bardziej ułatwiają rozwój aplikacji webowych poprzez dostarczanie gotowych rozwiązań oraz najlepszych praktyk. Z tego względu, znajomość PHP oraz jego działania po stronie serwera jest kluczowa dla każdego dewelopera webowego, który pragnie tworzyć nowoczesne i efektywne aplikacje.

Pytanie 11

Aby sprawdzić ustawienia konfiguracji PHP (z pliku php.ini), można uruchomić skrypt zawierający wywołanie:

A.
phpcredits()
B.
phpinfo()
C.
phpversion()
D.
ini_set()
Funkcja phpinfo() generuje stronę z pełną informacją o konfiguracji PHP: wartości dyrektyw z pliku php.ini, załadowane rozszerzenia, wersję, ścieżki i zmienne środowiskowe. Wystarczy uruchomić skrypt <?php phpinfo(); ?>, by sprawdzić, jak skonfigurowany jest serwer. Dlatego do podejrzenia ustawień PHP służy phpinfo().

Pytanie 12

Który z poniższych kodów HTML spowoduje taki sam efekt formatowania jak na zaprezentowanym rysunku?

Ilustracja do pytania
A. <p>W tym <i>paragrafie <b>zobaczysz</b> sposoby formatowania </i> tekstu w HTML</p>
B. <p>W tym <i>paragrafie zobaczysz sposoby formatowania</i> tekstu w HTML</p>
C. <p>W tym <i>paragrafie </i><b>zobaczysz</b><i> sposoby formatowania</i> tekstu w HTML</p>
D. <p>W tym <b>paragrafie <i>zobaczysz</i> sposoby formatowania</b> tekstu w HTML</p>
W błędnych odpowiedziach chodzi głównie o to, że znaczników HTML używasz niepoprawnie, przez co efekt wygląda inaczej niż na obrazku. Tag <i> ma być do kursywy, a <b> do pogrubienia. Trzeba zrozumieć, jak te znaczniki współdziałają, żeby uzyskać zamierzony efekt. Często ludzie mylą kolejność lub używają tylko jednego z nich, co psuje całe formatowanie. No i nie zapominaj, że czasem może być trudno zrozumieć, jak znacznik w HTML wpływa na inne. Każdy z nich ma swoją rolę, więc warto wiedzieć, co robi. W kontekście semantycznego HTML, dobrze jest używać odpowiednich znaczników nie tylko dla stylu, ale też dla poprawnej struktury. Chociaż najlepiej jest używać CSS do rozdzielenia stylów od treści, to w niektórych przypadkach, tak jak w tym, proste znaczniki HTML też mają swoje miejsce. Wiedza o tym, jak poprawnie używać znaczników, jest niezbędna do budowania ładnych i uporządkowanych stron oraz aplikacji internetowych.

Pytanie 13

W języku PHP przypisano zmiennej $a wartość 1. Porównanie $a === $b zwraca true, gdy zmienna $b ma przypisaną wartość

A. '1' lub "1"
B. *1
C. '1'
D. 1 lub '1'
Zmienna $a, zainicjowana wartością 1, jest typu integer i porównując ją z inną zmienną $b za pomocą operatora identyczności (===), należy zwrócić szczególną uwagę na typ i wartość obu zmiennych. Wiele osób myli operator porównania identyczności z operatorem równości (==), który nie wymaga, aby typy były zgodne. Z tego powodu odpowiedzi takie jak 1 lub '1' mogą wydawać się poprawne, jednak w przypadku porównania identyczności, istotne jest, aby zmienne były tego samego typu. Odpowiedź, która sugeruje wartość 1, jest błędna, ponieważ porównuje wartość integer z potencjalnie innym typem bez uwzględnienia konwersji typów, co prowadzi do niejednoznaczności. Z kolei odpowiedź sugerująca wartość '1' nie do końca zdaje sobie sprawę, że chociaż string '1' jest zgodny w kontekście równości, nie spełnia warunków identyczności w dosłownym sensie, gdyż typy są różne. Typowe błędy myślowe prowadzące do takich nieprawidłowych wniosków często wynikają z założenia, że PHP automatycznie wykonuje konwersje typów, co nie zawsze jest pożądane. Dla programistów istotne jest zrozumienie różnic między typami oraz kiedy stosować odpowiednie operatory, aby zapewnić poprawność logiki aplikacji i uniknąć potencjalnych błędów, które mogą prowadzić do trudnych do zdiagnozowania problemów w przyszłości.

Pytanie 14

Który z poniższych fragmentów kodu HTML sformatuje tekst zgodnie z wymaganiami? (zauważ, że słowo "stacji" jest wyświetlane w większej czcionce niż pozostałe słowa w tej linii)

Ilustracja do pytania
A. Odpowiedź 3: C
B. Odpowiedź 1: A
C. Odpowiedź 4: D
D. Odpowiedź 2: B
Pozostałe odpowiedzi zawierają błędy w składni HTML lub zastosowane znaczniki nie spełniają wymagań zadania. W odpowiedzi A użyto znacznika big tylko dla pierwszego słowa stacji co powoduje że lokomotywa pozostaje w domyślnym rozmiarze czcionki. Odpowiedź C zawiera błąd składniowy ponieważ zamyka znacznik h1 używając p co jest niepoprawne w standardowej specyfikacji HTML. Taki błąd może prowadzić do nieprzewidywalnych rezultatów w wyświetlaniu treści przez różne przeglądarki. W odpowiedzi D zastosowano kombinację znaczników small i h1 co jest niezgodne z semantyką HTML ponieważ znacznik small jest używany do zmniejszania rozmiaru tekstu a nie zwiększania. Ponadto użycie h1 zagnieżdżonego wewnątrz small jest niezgodne z zasadami semantycznego HTML co może negatywnie wpływać na dostępność i SEO strony. Przy projektowaniu stron internetowych ważne jest by stosować właściwe znaczniki zgodnie z ich przeznaczeniem co zwiększa kompatybilność i poprawność kodu oraz ułatwia jego dalsze utrzymanie i rozwój. Użycie CSS do zarządzania stylami jest zalecane jako nowoczesne i elastyczne rozwiązanie w porównaniu do starszych metod formatowania tekstu w HTML.

Pytanie 15

Jakim rodzajem instrukcji jest w PHP konstrukcja foreach?

A. wyboru, dla elementów tablicy
B. pętli, niezależnie od typu zmiennej
C. pętli, wyłącznie dla elementów tablicy
D. warunkową, niezależnie od typu zmiennej
foreach nie jest instrukcją WYBORU ani WARUNKOWĄ - to pętla. Nie działa też na „dowolnym typie zmiennej”, lecz konkretnie na tablicach i obiektach. foreach to pętla wyłącznie dla elementów tablicy.

Pytanie 16

Jakie oznaczenie powinno się zastosować, aby umieścić film na stronie internetowej?

A. <movie>
B. <video>
C. <audio>
D. <media>
Znacznik <video> jest właściwym elementem HTML używanym do osadzania filmów na stronach internetowych. Jest on częścią standardu HTML5, który wprowadził nowoczesne podejścia do multimediów w sieci. Umożliwia on nie tylko osadzanie wideo, ale także dostosowywanie jego odtwarzania, takie jak automatyczne odtwarzanie, powtarzanie oraz kontrolowanie głośności. Przykład użycia znacznika <video>: <video src='film.mp4' controls>Odtwarzacz wideo</video>. Warto również dodać atrybuty, takie jak 'controls', które dodają przyciski do odtwarzania, pauzowania i regulacji głośności, co znacząco poprawia użyteczność dla użytkowników. Dobrą praktyką jest również używanie atrybutu 'poster' do określenia miniatury, która będzie wyświetlana przed rozpoczęciem odtwarzania, co przyciąga uwagę i zwiększa estetykę strony. Znacznik <video> wspiera różne formaty plików, takie jak MP4, WebM i Ogg, co zapewnia szeroką kompatybilność z różnymi przeglądarkami internetowymi, co jest kluczowe w dzisiejszym zróżnicowanym środowisku online.

Pytanie 17

Które polecenie SQL zmieni w tabeli tab, w kolumnie kol, wartość „Ania” na „Zosia”?

A.
ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia';
B.
UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania';
C.
ALTER TABLE tab CHANGE kol = 'Zosia' kol = 'Ania';
D.
UPDATE tab SET kol = 'Ania' WHERE kol = 'Zosia';
Pozostałe zapisy zawodzą. Wariant z SET kol = 'Ania' WHERE kol = 'Zosia' działa odwrotnie. Polecenia ALTER TABLE ... CHANGE zmieniają STRUKTURĘ tabeli (definicję kolumny), a nie zapisane w niej dane. Zmianę wartości daje UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania';.

Pytanie 18

Którą funkcję z menu Kolory programu GIMP użyto, w celu uzyskania efektu przedstawionego w filmie?

A. Krzywe.
B. Inwersja.
C. Barwienie.
D. Progowanie.
Prawidłowo wskazana funkcja to „Progowanie”, bo dokładnie ona zamienia obraz kolorowy lub w odcieniach szarości na obraz dwuwartościowy: piksel jest albo czarny, albo biały, w zależności od tego, czy jego jasność przekracza ustawiony próg. W GIMP-ie znajdziesz ją w menu Kolory → Progowanie. Suwakami ustalasz zakres poziomów jasności, które mają zostać potraktowane jako „białe”, a wszystko poza tym zakresem staje się „czarne”. Efekt, który się wtedy uzyskuje, jest bardzo charakterystyczny: mocno kontrastowy, bez półtonów, coś w stylu skanu czarno-białego lub grafiki do druku na ploterze tnącym. Z mojego doświadczenia progowanie świetnie nadaje się do przygotowania logotypów, szkiców technicznych, schematów, a także do wyciągania konturów z lekko rozmytych zdjęć. Często używa się go też przed wektoryzacją, żeby program śledzący krawędzie miał wyraźne granice między czernią a bielą. W pracy z grafiką na potrzeby stron WWW próg bywa stosowany np. przy tworzeniu prostych ikon, piktogramów albo masek (maski przezroczystości można przygotować właśnie na bazie obrazu progowanego). Dobrą praktyką jest najpierw sprowadzenie obrazu do odcieni szarości i dopiero potem użycie progowania, bo wtedy masz większą kontrolę nad tym, jak rozkłada się jasność i gdzie wypadnie granica progu. Warto też pamiętać, że progowanie jest operacją destrukcyjną – traci się informacje o półtonach – więc najlepiej pracować na kopii warstwy, żeby w razie czego móc wrócić do oryginału i poprawić ustawienia progu.

Pytanie 19

W języku HTML zapisano formularz. Który z efektów działania kodu będzie wyświetlony przez przeglądarkę zakładając, że w drugie pole użytkownik wpisał wartość "ala ma kota"?

<form>
  <select>
    <option value="v1">Kraków</option>
    <option value="v2">Poznań</option>
    <option value="v3">Szczecin</option>
  </select> <br>
  <input type="password" />
</form>


Kraków
Poznań
Szczecin
Efekt 1

Efekt 2

Efekt 3
Kraków
Poznań
Szczecin
Efekt 4
A. Efekt 3.
B. Efekt 1.
C. Efekt 2.
D. Efekt 4.
Odpowiedź 'Efekt 2' jest poprawna, ponieważ odpowiada ona opisowi działania kodu HTML formularza. W kodzie HTML formularza, mamy pole wyboru miasta z opcjami 'Kraków', 'Poznań', 'Szczecin', a także pole hasła. W momencie, kiedy użytkownik wpisuje do pola hasła wartość 'ala ma kota', przeglądarka reprezentuje te dane jako ciąg znaków zastępczych, czyli kropeczki. Efekt 2 pokazuje rozwinięte menu wyboru z zaznaczonym 'Kraków' oraz pole hasła z kropeczkami, co jest zgodne z opisanym działaniem formularza przy wpisaniu 'ala ma kota' do pola hasła. Jest to zgodne ze standardami tworzenia formularzy w HTML, gdzie pola hasła są zazwyczaj reprezentowane jako kropeczki dla poprawienia bezpieczeństwa danych użytkownika. Dodatkowo, HTML pozwala na tworzenie różnego rodzaju pól formularzu, które mogą przyjmować różne wartości, co daje duże możliwości personalizacji formularza.

Pytanie 20

Ile razy zostanie wykonana pętla przedstawiona w kodzie PHP?

for($i = 0; $i < 25; $i += 5) { ...... }
A. 25
B. 5
C. 0
D. 26
Pętla for w PHP, zdefiniowana jako for($i = 0; $i < 25; $i += 5), będzie wykonywana do momentu, gdy warunek $i < 25 będzie spełniony. Początkowa wartość $i to 0, a w każdej iteracji zwiększamy $i o 5. Wartości $i w kolejnych iteracjach będą wynosiły: 0, 5, 10, 15, 20. Po piątej iteracji, gdy $i osiągnie wartość 25, warunek $i < 25 przestanie być spełniony, co zakończy działanie pętli. W sumie, pętla wykona się dokładnie pięć razy. Zrozumienie działania pętli for jest kluczowe w programowaniu, ponieważ pozwala na automatyzację wielu zadań, co jest niezbędne w tworzeniu efektywnych i zoptymalizowanych aplikacji. Przykłady zastosowania to iteracja przez elementy tablic, generowanie numerów identyfikacyjnych czy przetwarzanie danych w bazach.

Pytanie 21

Aby naprawić uszkodzoną tabelę w bazie MySQL, należy wykonać polecenie:

A.
CHECK TABLE
B.
RESOLVE TABLE
C.
FIX TABLE
D.
REPAIR TABLE
Uszkodzoną tabelę w MySQL naprawia polecenie REPAIR TABLE, po którym podaje się nazwę tabeli, na przykład REPAIR TABLE klienci. Próbuje ono odbudować strukturę i indeksy tabeli, gdy ulegnie ona uszkodzeniu, np. po nagłym wyłączeniu serwera. Pokrewne CHECK TABLE służy do wcześniejszego wykrycia problemu. Do samej naprawy używa się jednak REPAIR TABLE.

Pytanie 22

Która kolejność stylów CSS jest poprawna pod względem priorytetu (od najwyższego)?

A. rozciąganie stylu → zewnętrzny → lokalny
B. wewnętrzny → zewnętrzny → rozciąganie stylu
C. zewnętrzny → wydzielone bloki → lokalny
D. lokalny → wewnętrzny → zewnętrzny
Przy kaskadzie CSS najwyższy priorytet ma styl LOKALNY (inline, w atrybucie style), potem WEWNĘTRZNY (w <style> w nagłówku), a najniższy ZEWNĘTRZNY (dołączony plik CSS). Dlatego kolejność to: lokalny, wewnętrzny, zewnętrzny.

Pytanie 23

W JavaScript funkcja document.getElementById(id) ma na celu

A. umieścić tekst o treści ’id’ na stronie internetowej
B. pobrać wartości z formularza i przypisać je do zmiennej id
C. zwrócić referencję do pierwszego elementu HTML o wskazanym id
D. zweryfikować poprawność formularza o identyfikatorze id
Fajnie, że zwróciłeś uwagę na metodę document.getElementById(id). To naprawdę ważne narzędzie w JavaScript, jeśli chodzi o pracę z DOM. Dzięki niej możesz łatwo znaleźć element HTML, który ma konkretny identyfikator, co jest super przydatne, gdy chcesz coś zmienić na stronie. Na przykład, żeby zmienić tekst nagłówka, używasz: document.getElementById('header').innerText = 'Nowy tekst nagłówka'. Warto pamiętać, żeby identyfikatory były unikalne, bo to potem ułatwia odnajdywanie i manipulację tymi elementami. Unikaj też zbyt ogólnych nazw, bo to może prowadzić do zamieszania. Metoda ta jest naprawdę szeroko stosowana w nowoczesnym programowaniu stron internetowych, co czyni strony bardziej interaktywnymi i dynamicznymi.

Pytanie 24

W języku HTML w celu określenia słów kluczowych dla danej strony, należy zastosować następujący zapis

A. <meta name="keywords" = "psy, koty, gryzonie">
B. <meta name="keywords" content="psy, koty, gryzonie">
C. <meta name="description" content="psy, koty, gryzonie">
D. <meta keywords="psy, koty, gryzonie">
Poprawna odpowiedź to <meta name="keywords" content="psy, koty, gryzonie">, ponieważ jest to zgodne z aktualnymi standardami HTML i poprawną składnią. Element <meta> jest używany do dostarczania metadanych, które nie są wyświetlane bezpośrednio na stronie, ale mają kluczowe znaczenie dla wyszukiwarek internetowych i innych aplikacji. Atrybut 'name' definiuje typ metadanych, a 'content' zawiera konkretne informacje, w tym przypadku słowa kluczowe, które mają być używane przez wyszukiwarki do indeksowania strony. Przykład zastosowania tego elementu w kodzie HTML wyglądałby następująco: <head><meta name="keywords" content="psy, koty, gryzonie"></head>. Warto zauważyć, że chociaż atrybut 'keywords' nie jest już tak istotny jak kiedyś ze względu na zmiany w algorytmach wyszukiwarek, to jego poprawne zdefiniowanie wciąż pokazuje dbałość o standardy HTML. Dobrą praktyką jest aktualizowanie i dostosowywanie metadanych do aktualnych trendów SEO, co może zwiększyć widoczność strony w wynikach wyszukiwania.

Pytanie 25

Do graficznego (wizualnego) tworzenia stron internetowych należy wykorzystać:

A. program typu WYSIWYG
B. przeglądarkę internetową
C. edytor CSS
D. program MS Office Picture Manager
Do wizualnego tworzenia stron służy program typu WYSIWYG (ang. What You See Is What You Get - „co widzisz, to otrzymasz”). Stronę składa się w nim graficznie - przeciągając elementy i formatując je jak w edytorze tekstu - a narzędzie samo generuje w tle kod HTML i CSS. Tak działają m.in. kreatory stron czy wizualne edytory w systemach CMS (np. WordPress). Ułatwia to pracę osobom mniej zaawansowanym, choć kontrolę nad szczegółami daje dopiero ręczne pisanie kodu. Dlatego do graficznego tworzenia stron używa się programu typu WYSIWYG.

Pytanie 26

Jakie działanie wykonuje poniższy fragment kodu w języku JavaScript? n = "Napis1"; s = n.length;

A. Przypisuje do zmiennej s część napisu z zmiennej n, o długości określonej przez zmienną length
B. Przypisuje do zmiennej s wartość odpowiadającą długości napisu z zmiennej n
C. Przypisuje wartość zmiennej n do zmiennej s
D. Zwraca długość napisu zawartego w zmiennej n
Fragment skryptu w języku JavaScript, w którym zmienne n i s są definiowane, wykonuje przypisanie wartości długości napisu z zmiennej n do zmiennej s. Metoda length jest właściwością obiektów typu string, która zwraca liczbę znaków w danym napisie. W tym przypadku, jeśli zmienna n zawiera napis "Napis1", to zmienna s po wykonaniu tego skryptu przyjmie wartość 6, ponieważ napis ten składa się z 6 znaków. Praktyczne zastosowanie tej funkcji polega na możliwości dynamicznego określenia długości wprowadzanych danych, co jest kluczowe przy walidacji formularzy, obliczaniu rozmiaru danych czy tworzeniu interfejsów użytkownika. Dobrą praktyką w programowaniu jest zawsze uwzględnienie długości napisu w algorytmach przetwarzania tekstu, aby uniknąć błędów podczas operacji na stringach. Warto również wiedzieć, że w JavaScript właściwość length nie wymaga wywołania metody, co jest zgodne z ogólnym założeniem o uproszczeniu użycia obiektów, a tym samym podnosi czytelność kodu.

Pytanie 27

Które narzędzie edytora grafiki przedstawia rozkład jasności (tonów) pikseli obrazu w postaci wykresu?

A. warstwy
B. kanał alfa
C. kadrowanie
D. histogram
Pozostałe pojęcia dotyczą innych aspektów pracy z obrazem. Warstwy umożliwiają rozdzielenie elementów obrazu i niezależną ich edycję, ale nie analizują jasności. Kanał alfa przechowuje informację o przezroczystości pikseli, a nie o ich jasności. Kadrowanie służy do przycięcia obrazu do wybranego wycinka. Rozkład jasności (tonów) w postaci wykresu przedstawia histogram, dlatego to on jest poprawny.

Pytanie 28

Wskaż prawdziwe stwierdzenie dotyczące polecenia:

CREATE TABLE IF NOT EXISTS adres (ulica VARCHAR(70) CHARACTER SET utf8);
A. Rekordem tabeli nie może być '3 MAJA'.
B. Klauzula CHARACTER SET utf8 jest obowiązkowa.
C. IF NOT EXISTS stosuje się opcjonalnie, aby upewnić się, że w bazie danych nie istnieje już taka tabela.
D. Do tabeli nie można wprowadzać nazw ulic zawierających polskie znaki.
Dobrze, że wybrałeś właściwą odpowiedź! Polecenie CREATE TABLE IF NOT EXISTS jest rzeczywiście używane w SQL, aby stworzyć tabelę tylko wtedy, gdy nie istnieje ona już w bazie danych. To jest bardzo praktyczne narzędzie, które pozwala uniknąć błędów, gdy próbujemy stworzyć tabelę, która już istnieje. Jest to zgodne z dobrymi praktykami zarządzania danymi i jest oparte na standardach SQL. Dodatkowo, warto pamiętać, że klauzula CHARACTER SET utf8, chociaż nie jest obowiązkowa, pozwala na przechowywanie znaków specjalnych, w tym polskich. Jest to ważne, gdy pracujemy z danymi, które zawierają różne zestawy znaków. Dlatego, nawet jeśli nie jest to wymagane, często jest to dobra praktyka. Podobnie, warto pamiętać, że typ danych VARCHAR(70) pozwala na przechowywanie dowolnych ciągów znaków, w tym dat i nazw, więc nie ma żadnych ograniczeń co do tego, jakie informacje mogą być przechowywane w tabeli.

Pytanie 29

Odizolowane środowisko ogólnego przeznaczenia, utworzone na fizycznym serwerze z wykorzystaniem wirtualizacji, to:

A. serwer DHCP
B. serwer aplikacji
C. serwer VPS
D. serwer dedykowany
VPS (Virtual Private Server - wirtualny serwer prywatny) to odizolowane środowisko utworzone na fizycznym serwerze dzięki wirtualizacji: jedna maszyna jest dzielona na wiele niezależnych „serwerów”, z których każdy ma własny system, zasoby i konto administratora. To rozwiązanie tańsze niż serwer dedykowany, a dające więcej swobody niż hosting współdzielony. Stosuje się je m.in. do stron i aplikacji wymagających własnej konfiguracji. Dlatego opisane środowisko to serwer VPS.

Pytanie 30

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

A. zmienna1––;
B. zmienna1++;
C. zmienia1 = zmienna1 - 0;
D. zmienna1 === zmienna1 - 1;
W analizowanych odpowiedziach pojawiają się różne nieprawidłowe koncepcje. Pierwsza z nich, 'zmienna1 === zmienna1 - 1;', jest błędna, ponieważ porównuje dwie wartości, a nie aktualizuje zmiennej. Ten zapis stwierdza, czy 'zmienna1' jest równa 'zmienna1 - 1', co nie ma związku z dekrementacją, a jedynie sprawdza warunek. Kolejna odpowiedź, 'zmienna1++;', jest również niepoprawna. Operator '++' to operator inkrementacji, który zwiększa wartość zmiennej o 1, a więc całkowicie zaprzecza intencji dekrementacji. Zastosowanie tego operatora zamiast dekrementacji prowadziłoby do zwiększenia wartości 'zmienna1', co jest sprzeczne z założeniem pytania. Ostatnia odpowiedź, 'zmienia1 = zmienna1 - 0;', jest błędna z dwóch powodów: użycie 'zmienia1' sugeruje błąd typograficzny, a sama operacja 'zmienna1 - 0' nie wpłynie na wartość zmiennej, co jest niezgodne z zamiarem jej obniżenia. Powszechnym błędem w programowaniu jest mylenie operatorów oraz nieznajomość ich właściwości, co może prowadzić do poważnych błędów w kodzie. Właściwe rozumienie funkcji operatorów przypisania oraz ich skróconych form jest kluczowe dla efektywnego programowania w JavaScript.

Pytanie 31

Ile WARUNKÓW wystarczy, aby znaleźć największą z trzech liczb a, b, c?

A. dwa warunki
B. pięć zmiennych
C. dwie tablice
D. jedna pętla
Aby wyłonić największą z trzech liczb a, b, c, wystarczą DWA porównania: najpierw wybierasz większą z dwóch (np. a i b), a potem porównujesz wynik z trzecią liczbą c. Te dwa warunki w pełni wyznaczają maksimum. Dlatego wystarczają dwa warunki.

Pytanie 32

Określ rezultat działania podanego kodu PHP, przy założeniu, że zmienna tab jest tablicą.

$tab = explode(",", "jelenie,sarny,dziki,lisy,borsuki"); 
echo $tab[1]." ".$tab[2];
A. jelenie sarny
B. sarny dziki
C. lisy borsuki
D. dziki lisy
Wynik wykonania kodu PHP przedstawionego w pytaniu to 'sarny dziki', co odpowiada trzeciej opcji. Analizując kod, najpierw wykorzystujemy funkcję explode, która dzieli ciąg znaków na elementy tablicy, używając przecinka jako separatora. W rezultacie zmienna $tab stanie się tablicą składającą się z pięciu elementów: 'jelenie', 'sarny', 'dziki', 'lisy', 'borsuki'. Następnie w instrukcji echo odwołujemy się do drugiego i trzeciego elementu tablicy, co odpowiada indeksom 1 i 2, ponieważ indeksowanie w PHP zaczyna się od zera. Zatem $tab[1] to 'sarny', a $tab[2] to 'dziki'. W kontekście praktycznym, znajomość pracy z tablicami oraz funkcji do ich manipulacji jest kluczowa w programowaniu w PHP, zwłaszcza przy pracy z danymi w formacie CSV lub innymi formatami wymagającymi podziału ciągów. Opanowanie takich technik jest istotne dla programistów zajmujących się tworzeniem aplikacji webowych, gdzie przetwarzanie danych wejściowych jest na porządku dziennym.

Pytanie 33

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
Odpowiedź jest prawidłowa, ponieważ przedstawiony kod w języku PHP używa pętli foreach do iteracji po tablicy o nazwie tab. Dzięki zastosowaniu operatora & przed nazwą zmiennej $liczba, zmienna ta jest przekazywana przez referencję. Oznacza to, że każda modyfikacja dokonywana na zmiennej $liczba wpływa bezpośrednio na odpowiedni element tablicy. Wewnątrz pętli każda liczba w tablicy jest mnożona przez -1, co skutkuje zmianą jej znaku na przeciwny. W praktyce taka operacja jest powszechnie stosowana, gdy istnieje potrzeba szybkiej zmiany wszystkich wartości w strukturze danych na ich negatywne odpowiedniki, na przykład w algorytmach matematycznych lub finansowych. Istotnym aspektem jest również unikanie modyfikacji oryginalnych danych, co jest kluczowe w procesie przetwarzania danych. Po zakończeniu pętli unset($liczba) usuwa referencję, aby uniknąć niepożądanych efektów ubocznych. Takie podejście jest zgodne z dobrymi praktykami programowania, które kładą nacisk na zarządzanie pamięcią i poprawność danych.

Pytanie 34

Jaką instrukcję algorytmu ilustruje graficzna prezentacja bloku na zamieszczonym rysunku?

Ilustracja do pytania
A. n ← n + 5
B. Wypisz n
C. Wykonaj podprogram sortowania tablicy t
D. n > 20
Każda z niepoprawnych odpowiedzi wynika z błędnego rozpoznania typów bloków w diagramach przepływu. Instrukcje przypisania, takie jak n ← n + 5, są reprezentowane prostokątem i oznaczają operacje przetwarzania danych, gdzie zmienna jest modyfikowana zgodnie z określoną logiką. Ta operacja głównie pojawia się w kontekście pętli lub jako część większej sekwencji działań obliczeniowych, co jest użyteczne w algorytmach obliczeniowych i matematycznych, gdzie często modyfikujemy wartość zmiennych. Kolejny typ instrukcji, taki jak Wypisz n, jest reprezentowany przez blok wyjścia, który jest używany do komunikacji wyników algorytmu na zewnątrz. Jest to częste w raportowaniu lub debugowaniu programów, gdzie wynikiem działania algorytmu jest wyświetlenie informacji użytkownikowi. Podprogramy, takie jak sortowanie tablicy, oznaczają bloki procesów, które są reprezentowane prostokątem z podwójnymi liniami bocznymi i wskazują na wywołanie funkcji lub procedury. Takie konstrukcje są kluczowe w strukturalnym programowaniu, gdzie zadania są dekomponowane na mniejsze, zarządzalne jednostki, co prowadzi do lepszego zrozumienia i utrzymania kodu. Błędne rozpoznanie tych bloków prowadzi do nieprawidłowego zrozumienia struktury algorytmu, co może skutkować jego nieefektywnością lub błędami logicznymi w jego działaniu. Zrozumienie różnic między tymi blokami jest niezbędne do prawidłowego projektowania i implementacji algorytmów, co jest podstawą w wielu dziedzinach informatyki, takich jak inżynieria oprogramowania czy analiza danych. Dzięki temu można tworzyć efektywne i zrozumiałe rozwiązania, które spełniają wymagania użytkowników i normy branżowe.

Pytanie 35

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

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

Pytanie 36

Analizując poniższy kod HTML, jak w przeglądarce zachowa się blok B względem bloku A?

<div>A</div>
<div style="margin-top: 20px">B</div>
A. blok A zostanie przesunięty w lewo o 20 px
B. blok B będzie oddalony od bloku A o 20 px
C. bloki A i B będą nachodzić na siebie
D. zostanie ustawiony dolny margines bloku B
Drugi <div> (blok B) ma w atrybucie style ustawione margin-top: 20px - to margines zewnętrzny po GÓRNEJ stronie. Ponieważ blok B leży pod blokiem A, ten 20-pikselowy margines tworzy odstęp nad B, odsuwając go w dół od A. Dlatego blok B będzie oddalony od bloku A o 20 px.

Pytanie 37

Jak zapisać w JavaScript warunek: a i b są dodatnie, a b jest mniejsze od 100?

A.
if (a > 0 && b > 0 && b < 100)
B.
if (a > 0 || (b > 0 && b < 100))
C.
if (a > 0 || b > 0 || b > 100)
D.
if (a > 0 && b > 0 || b > 100)
Wszystkie trzy żądania muszą być spełnione naraz - a dodatnie, b dodatnie i b mniejsze od 100 - więc łączymy je operatorem &&: if (a > 0 && b > 0 && b < 100). „Dodatnie” to > 0. Dlatego ten warunek jest poprawny.

Pytanie 38

Jaka forma zabezpieczenia dostępu do tabel i kwerend działa w MS Access?

A. przypisanie uprawnień użytkownikom
B. określanie przestrzeni tabel
C. stosowanie makr
D. limity przestrzeni dyskowej
Pozostałe odpowiedzi nie dotyczą ochrony dostępu. Makra automatyzują czynności (np. otwarcie formularza), ale nie bronią danych przed niepowołanymi osobami. Określanie przestrzeni tabel oraz limity przestrzeni dyskowej to kwestie zarządzania miejscem i wydajnością. Bezpieczeństwo obiektów zapewnia przypisanie uprawnień użytkownikom.

Pytanie 39

Tabela Pacjenci ma pola: imie, nazwisko, wiek, lekarz_id. Aby zestawić raport zawierający wyłącznie imiona i nazwiska pacjentów poniżej 18 roku życia, którzy zapisani są do lekarza o id równym 6, można posłużyć się kwerendą SQL

A. SELECT imie, nazwisko WHERE wiek < 18 AND lekarz_id = 6;
B. SELECT imie, nazwisko WHERE wiek < 18 OR lekarz_id = 6;
C. SELECT imie, nazwisko FROM Pacjenci WHERE wiek < 18 AND lekarz_id = 6;
D. SELECT imie, nazwisko FROM Pacjenci WHERE wiek < 18 OR lekarz_id = 6;
W tym zadaniu kluczowe są dwie rzeczy: poprawna składnia SQL i właściwe zrozumienie logiki warunków w klauzuli WHERE. Wiele osób intuicyjnie skupia się tylko na treści pytania i trochę pomija formalne wymagania języka, a to potem mści się w realnych systemach.
Pierwszy typ błędu to pomijanie klauzuli FROM. Instrukcje w stylu SELECT imie, nazwisko WHERE wiek < 18 ... wyglądają na pierwszy rzut oka sensownie, bo jest wybór kolumn i jest warunek, ale w SQL standardowo nie da się filtrować rekordów bez wskazania źródła danych. Serwer bazodanowy musi wiedzieć, z której tabeli pobrać kolumny imie, nazwisko, wiek i lekarz_id. Brak FROM Pacjenci powoduje po prostu błąd składni, a nie „prawie działającą” kwerendę. Z mojego doświadczenia to bardzo typowy błąd osób zaczynających przygodę z SQL: mieszanie logiki „co chcę” z tym „jak to ma być zapisane w języku”.
Drugi, bardziej podstępny problem to mylenie operatorów logicznych AND i OR. W zadaniu chodzi o pacjentów poniżej 18 roku życia, którzy jednocześnie są przypisani do lekarza o id = 6. To jest klasyczny przypadek koniunkcji – oba warunki muszą być spełnione. Użycie OR zamiast AND powoduje zupełnie inne działanie: zapytanie zwróci wszystkich pacjentów młodszych niż 18 lat niezależnie od lekarza, a dodatkowo wszystkich pacjentów lekarza nr 6 w każdym wieku. W praktyce taki raport byłby kompletnie niezgodny z założeniem, a co gorsza, na pierwszy rzut oka mógłby wyglądać „prawie dobrze”, bo część wyników się zgadza.
Warto też zwrócić uwagę na to, że przy prostych warunkach AND/OR bez nawiasów kolejność oceny może być myląca, dlatego dobrą praktyką w bardziej złożonych zapytaniach jest stosowanie nawiasów, np. WHERE (wiek < 18 AND lekarz_id = 6) OR ... itd. Tutaj warunek jest prosty, ale nawyk myślenia o logice boole’owskiej bardzo się przydaje.
Podsumowując, poprawne zapytanie musi mieć: wskazaną tabelę w klauzuli FROM, właściwie dobrane kolumny w SELECT oraz warunek z użyciem AND, który zawęża wynik do rekordów spełniających oba kryteria jednocześnie. Pomyłki w którymkolwiek z tych elementów prowadzą albo do błędu składni, albo – co gorsza – do logicznie błędnych raportów, których użytkownik nie zauważy od razu, a to w systemach produkcyjnych bywa naprawdę groźne.

Pytanie 40

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport pokazujący dane z tabeli, obejmujący tylko komputery z co najmniej 8 GB pamięci oraz procesorem Intel, można wykorzystać kwerendę

A. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec < 8
B. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8;
C. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec >= 8;
D. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec < 8
Wybrana kwerenda SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8; jest prawidłowa, ponieważ precyzyjnie spełnia wymagania dotyczące filtracji danych w tabeli komputery. Użycie operatora AND jest kluczowe w tej sytuacji, ponieważ umożliwia jednoczesne sprawdzenie dwóch warunków: pierwszy warunek wymaga, aby procesor był równy 'Intel', a drugi, aby pamięć RAM była większa lub równa 8 GB. W rezultacie kwerenda zwróci tylko te rekordy, które spełniają oba kryteria, co jest zgodne z założeniem raportu. W praktyce, tego typu kwerendy są niezwykle ważne, szczególnie w kontekście analizy danych, gdzie precyzyjne określenie kryteriów jest kluczowe dla uzyskania wartościowych wyników. Dobre praktyki w tworzeniu zapytań SQL obejmują także wykorzystanie odpowiednich indeksów na kolumnach procesor i pamiec, co może znacznie zwiększyć wydajność zapytań, zwłaszcza w dużych zbiorach danych.