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: 28 kwietnia 2026 17:14
  • Data zakończenia: 28 kwietnia 2026 17:16

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

Aby poprawić prędkość ładowania strony z grafiką o wymiarach 2000 px na 760 px, konieczne jest zmniejszenie rozmiarów grafiki?

A. za pomocą właściwości CSS, podając rozmiar w pikselach
B. za pomocą atrybutów HTML
C. za pomocą właściwości CSS, podając rozmiar w procentach
D. w programie graficznym
Wykorzystywanie atrybutów HTML do zmiany rozmiarów grafiki może wydawać się prostym rozwiązaniem, jednak nie jest ono najlepszym podejściem do optymalizacji wydajności strony. Atrybuty 'width' i 'height' w tagu <img> jedynie modyfikują sposób wyświetlania obrazu na stronie, a nie jego rzeczywisty rozmiar pliku. Taki zabieg nie zmniejsza wagi samego pliku graficznego, co może prowadzić do dłuższego czasu ładowania strony. Również definiowanie rozmiaru grafiki za pomocą właściwości CSS, zarówno w pikselach, jak i procentach, jest niewłaściwą metodą w kontekście optymalizacji. Choć zmniejszają one wizualny rozmiar obrazu, nie wpływają na jego rzeczywistą wagę, co prowadzi do nieefektywnego zarządzania zasobami. W praktyce, wprowadzenie dużych plików graficznych na stronę bez ich uprzedniej optymalizacji, może skutkować nie tylko dłuższym czasem ładowania, ale również negatywnie wpłynąć na doświadczenie użytkownika oraz pozycjonowanie w wyszukiwarkach. Warto zatem zainwestować czas w odpowiednią obróbkę graficzną przed publikacją, aby uniknąć takich problemów.

Pytanie 2

W HTML atrybut alt w tagu img służy do określenia

A. tekstu, który pojawi się, gdy obrazek nie może być załadowany
B. właściwości grafiki, takie jak rozmiar, ramka, wyrównanie
C. lokalizacji i nazwy pliku źródłowego obrazu
D. napisu, który będzie widoczny pod obrazem
Odpowiedź, która wskazuje, że atrybut alt znacznika img w języku HTML definiuje tekst, który będzie wyświetlony, jeśli grafika nie może być poprawnie załadowana, jest całkowicie poprawna. Atrybut alt jest kluczowym elementem dostępności w sieci, ponieważ dostarcza użytkownikom alternatywne informacje o zawartości obrazu, co jest szczególnie ważne dla osób korzystających z czytników ekranu. Na przykład, jeśli zdjęcie w artykule nie jest dostępne z powodu problemów z łączem internetowym, atrybut alt zapewnia kontekst, dzięki czemu użytkownik jest informowany o tym, co miało być przedstawione. Dobre praktyki zalecają, aby tekst w atrybucie alt był zwięzły, ale jednocześnie dostarczał wystarczających informacji o obrazie. Warto również zauważyć, że stosowanie atrybutu alt wspiera SEO (optymalizację pod kątem wyszukiwarek), ponieważ wyszukiwarki mogą używać tych informacji do indeksowania treści. Przykład: <img src='example.jpg' alt='Zdjęcie pięknego krajobrazu górskiego'>.

Pytanie 3

Program napisany w języku PHP ma na celu wyliczenie średniej pozytywnych ocen ucznia w zakresie od 2 do 6. Warunek doboru ocen w pętli obliczającej średnią powinien zawierać wyrażenie logiczne

A. $ocena > 2 and $ocena < 6
B. $ocena >= 2 and $ocena <= 6
C. $ocena >= 2 or $ocena <= 6
D. $ocena > 2 or $ocena < 6
Analizując pozostałe odpowiedzi, zauważamy, że każda z nich zawiera błędne założenia dotyczące zakresu ocen, jakie należy uwzględnić w obliczeniach. Opcje zawierające operator 'or' wprowadzają zamieszanie, ponieważ nie dostarczają odpowiednich ograniczeń dla ocen. Na przykład, warunek '$ocena > 2 or $ocena < 6' pozwala na przyjęcie ocen poniżej 2 oraz powyżej 6, co jest sprzeczne z założeniem, że analiza ma dotyczyć tylko ocen w przedziale od 2 do 6. Takie podejście może prowadzić do sytuacji, w której średnie obliczenia będą oparte na błędnych danych, co z kolei wpłynie negatywnie na ocenę ucznia. Podobnie, warunek '$ocena >= 2 or $ocena <= 6' również nie jest odpowiedni, ponieważ również nie koncentruje się na wąskim zakresie wartości, co w rezultacie skutkuje włączeniem ocen niepożądanych. W programowaniu istotne jest, aby stosować jasne i precyzyjne warunki, które nie będą prowadzić do niejednoznaczności. Stosowanie błędnych operatorów logicznych prowadzi do logicznych pułapek, w których programista myśli, że jego kod działa zgodnie z zamierzeniem, podczas gdy w rzeczywistości generuje on niepoprawne wyniki. Przykładowo, jeśli do analizy zostaną uwzględnione oceny spoza dozwolonego zakresu, średnia ocen może być zawyżona lub zaniżona, co jest niezgodne z celem analizy. Dlatego ważne jest, aby w każdej iteracji korzystać z precyzyjnych warunków, które ograniczają wartości do odpowiedniego zakresu.

Pytanie 4

Jakie wartości zostaną wypisane po wykonaniu poniższego skryptu?

var x = 1;
var y;
/*0*/ ++y;
/*1*/ document.write(++x);
/*2*/ document.write(" ");
/*3*/ document.write(x--);
/*4*/ document.write(" ");
/*5*/ document.write(x);
A. 2 1 1
B. 2 2 1
C. 1 2 1
D. 1 2 2
Analizując wyniki działania skryptu, warto zwrócić uwagę na różnice wynikające z użycia operatorów preinkrementacji i postdekrementacji. Wiele osób mylnie interpretuje, jak te operatory wpływają na zmienną w danej kolejności operacji. Preinkrementacja (++x) zwiększa wartość zmiennej o 1 przed jej użyciem w wyrażeniu, co oznacza, że każda operacja wykonywana później będzie bazować na już zwiększonej wartości. Z kolei postdekrementacja (x--) najpierw używa bieżącej wartości zmiennej, a dopiero potem ją zmniejsza, co może prowadzić do błędnych założeń, jeśli nie jest się świadomym tej różnicy. Częstym błędem jest założenie, że obie operacje działają jednocześnie, co nie jest prawdą. Różnica ta jest kluczowa, ponieważ ma znaczący wpływ na kolejność wykonania operacji i rezultat końcowy. Przy programowaniu w JavaScript należy zatem nie tylko znać różnice między tymi operatorami, ale także dokładnie rozumieć, jak wpływają one na przepływ sterowania w kodzie. Znajomość tego mechanizmu pozwala unikać typowych błędów, które prowadzą do nieoczekiwanych wyników i problemów z debugowaniem kodu. Jest to nieodzowna wiedza w inżynierii oprogramowania, szczególnie przy optymalizacji i pisaniu efektywnego kodu.

Pytanie 5

Opracowanie logicznego układu strony internetowej wiąże się z

A. określeniem zawartości strony.
B. zdefiniowaniem adresów URL dla podstron strony.
C. umiejscowieniem elementów w konkretnych punktach strony.
D. stworzeniem zbioru grafik dla strony.
Zdefiniowanie treści witryny to proces, który dotyczy stworzenia zawartości, ale nie ma bezpośredniego związku z logicznym układem witryny. Treść jest ważnym aspektem, ale sama w sobie nie definiuje, jak użytkownicy będą się poruszać po stronie, ani nie wpływa na jej strukturalne rozmieszczenie. Opracowanie zestawu grafik dla witryny jest kluczowe dla estetyki, ale to nie elementy wizualne decydują o organizacji treści. Grafiki powinny wspierać rozmieszczenie elementów, a nie go definiować. Ustalanie adresów URL dla podstron witryny, choć istotne dla SEO i nawigacji, również nie odnosi się bezpośrednio do logicznego układu witryny. Adresy URL są technicznymi identyfikatorami zasobów, ale ich struktura nie ma wpływu na to, jak elementy są rozmieszczone w kontekście wizualnym i funkcjonalnym witryny. Właściwe podejście do projektowania witryny wymaga zrozumienia, że wszystkie aspekty muszą współgrać ze sobą, ale to właśnie rozmieszczenie elementów w przestrzeni decyduje o jej użyteczności.

Pytanie 6

Który z przedstawionych kodów XHTML sformatuje tekst według podanego wzorca?
Ala ma kota
a kot ma Alę

A. <p>Ala ma <b>kota<br> a <i>kot</i> ma Alę</p>
B. <p>Ala ma <b>kota</b><br> a <b>kot</b> ma Alę</p>
C. <p>Ala ma <b>kota</b><br> a <i>kot</i> ma Alę</p>
D. <p>Ala ma <b>kota</i><br> a <b>kot</b> ma Alę</p>
W pozostałych odpowiedziach występują różne błędy, które wpływają na ich poprawność. W pierwszym przypadku zamknięcie tagu <b> jest poprawne, jednak brak jest prawidłowego zakończenia tagu <i>, co powoduje, że kod nie jest zgodny z zasadami XHTML. Poprawne zamykanie tagów jest kluczowe, ponieważ XHTML jest bardziej restrykcyjny niż HTML, a niepoprawne zamknięcie tagu powoduje błędne renderowanie. W drugiej analizowanej opcji, również występuje niepoprawne zamknięcie tagu <b>, gdzie użyto <i> zamiast <b>, co wprowadza zamieszanie w semantyce tekstu. W przypadku dokumentów XHTML, każdy otwarty tag musi mieć swoje odpowiadające zamknięcie, co nie zostało spełnione. W trzeciej opcji pojawia się błąd z brakiem zamknięcia tagu <p>, co jest fundamentalnym błędem strukturalnym. Nieprawidłowe zagnieżdżenie i brak zamknięcia tagów prowadzi do sytuacji, w której przeglądarki internetowe mogą niepoprawnie interpretować kod, co wpływa na ostateczny wygląd strony. W każdej z tych nieprawidłowych odpowiedzi brakuje elementarnej dbałości o zgodność z zasadami XHTML, co jest niezbędne dla uzyskania wiarygodności i prawidłowego funkcjonowania dokumentów internetowych.

Pytanie 7

Wskaż, które z poniższych zdań jest prawdziwe w odniesieniu do definicji stylu: ``````

A. Odnośnik będzie napisany czcionką o rozmiarze 14 punktów
B. Zdefiniowano dwie klasy
C. Akapit będzie przekształcany na małe litery
D. Jest to styl zasięg lokalny
W tym kodzie CSS masz zdefiniowane dwie klasy: 'niebieski' i 'czerwony', które są przypisane do elementów TD. To super, bo te klasy zmieniają kolor tekstu w tabeli, a to jest zgodne z tym, jak działają kaskadowe arkusze stylów (CSS). Klasa 'niebieski' ustawia tekst na niebiesko, a 'czerwony' na czerwono. Dzięki takim klasom można zaoszczędzić sporo czasu, bo używasz tych samych stylów w różnych miejscach w HTML. Widać, że pomyślałeś o organizacji swojego kodu. Dodatkowo, masz też style dla elementów P i A — P jest niebieski i ma czcionkę 14 punktów w kursywie, a A ma większą 16-punktową czcionkę. To pokazuje, jak elastyczne jest CSS w stylizacji różnych elementów. Fajnie, że trzymasz się dobrych praktyk w programowaniu, bo to naprawdę ułatwia późniejsze modyfikacje.

Pytanie 8

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. td, th { background-color: Pink; }
B. tr:active { background-color: Pink; }
C. tr:hover { background-color: Pink; }
D. tr { background-color: Pink; }
W tym zadaniu chodzi o zrozumienie, jak działają selektory CSS oraz pseudo-klasy odpowiedzialne za interakcję z użytkownikiem. Jeśli efekt ma pojawiać się tylko wtedy, gdy użytkownik najedzie myszką na wiersz tabeli, to zwykłe ustawienie background-color bez pseudo-klasy nie spełni tego warunku. Deklaracja tr { background-color: Pink; } oznaczałaby, że wszystkie wiersze tabeli są cały czas różowe, niezależnie od tego, czy ktoś na nie najedzie, czy nie. To jest po prostu styl statyczny, bez żadnej reakcji na zdarzenia. Podobnie zapis td, th { background-color: Pink; } ustawia tło dla wszystkich komórek tabeli (zarówno nagłówkowych th, jak i zwykłych td) w sposób stały. Moim zdaniem to dość częsty błąd: ktoś kojarzy tabelę z komórkami i intuicyjnie styluje td/th, ale zapomina, że w pytaniu chodzi o efekt dynamiczny „po najechaniu”. W rezultacie otrzymujemy tabelę pokolorowaną na stałe, bez jakiejkolwiek interakcji, co jest sprzeczne z założeniem zadania i z typowym zachowaniem tabel w nowoczesnych interfejsach. Ciekawsza jest kwestia selektora tr:active { background-color: Pink; }. Pseudo-klasa :active oznacza element w momencie „aktywacji”, czyli najczęściej w chwili klikania (przytrzymania przycisku myszy). Efekt trwa bardzo krótko, tylko w czasie samego kliknięcia. To zupełnie inny scenariusz niż wygodne podświetlenie wiersza, które ma się utrzymywać, dopóki kursor jest nad elementem. Użycie :active prowadzi do efektu, który miga na ułamek sekundy i z punktu widzenia ergonomii jest praktycznie bezużyteczny w kontekście podświetlania wierszy. Typowy błąd myślowy przy takich pytaniach polega na myleniu różnych pseudo-klas: :hover, :active, :focus. W webdevie przyjęło się, że :hover służy do reakcji na najechanie myszką, :active do krótkiej reakcji na kliknięcie, a :focus do zaznaczenia elementu, który ma aktualnie fokus klawiatury. Standardy CSS i dobre praktyki projektowania interfejsów jasno wskazują, że do efektu „podświetl wiersz, gdy nad nim jestem” należy użyć właśnie :hover na odpowiednim elemencie, czyli w tym przypadku tr. Wszystkie pozostałe odpowiedzi ignorują tę zasadę albo stosują nie tę pseudo-klasę, co trzeba, przez co nie odzwierciedlają poprawnie zachowania pokazanego w materiale wideo.

Pytanie 9

W zaprezentowanym schemacie bazy danych o nazwie biblioteka, składniki: czytelnik, wypożyczenie oraz książka są

Ilustracja do pytania
A. atrybutami
B. krotkami
C. polami
D. encjami
W kontekście modelowania danych w relacyjnych bazach danych istotne jest rozróżnienie między encjami a innymi pojęciami. Pola w bazach danych zazwyczaj odnoszą się do pojedynczych jednostek danych w obrębie kolumn tabeli reprezentujących atrybuty encji. Atrybuty to cechy opisujące encje takie jak imię czy nazwisko w przypadku encji czytelnik. Natomiast krotki często określają pojedynczy rekord czyli wiersz w tabeli który jest instancją encji. Błędne jest przypisywanie czytelnik wypozyczenie i ksiazka do kategorii pól ponieważ w modelowaniu danych pola są najmniejszymi jednostkami danych które nie reprezentują obiektów realnego świata lecz ich właściwości. Podobnie błędem jest klasyfikowanie ich jako atrybuty ponieważ atrybuty opisują encje a nie są nimi. Traktowanie tych elementów jako krotek również jest nieprawidłowe gdyż krotki to konkretne instancje danych a nie typy obiektów które chcemy modelować. Typowy błąd myślowy polega na myleniu poziomu abstrakcji czyli traktowaniu encji które są wysokopoziomowymi konceptami jak atrybuty czy krotki które są bardziej szczegółowymi jednostkami w strukturze danych. Zrozumienie tych różnic jest kluczowe dla efektywnego projektowania i implementacji baz danych oraz uniknięcia problemów związanych z redundancją czy nieefektywnością w przetwarzaniu informacji

Pytanie 10

Tabela gory zawiera dane o polskich wzniesieniach oraz łańcuchach górskich, w których te wzniesienia się znajdują. Aby uzyskać Koronę Gór Polskich, czyli najwyższe wzniesienie w każdym z łańcuchów górskich, należy wykonać kwerendę

A. SELECT pasmo, szczyt, wysokosc FROM gory
B. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo
C. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory
D. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc
W analizowanym pytaniu, wszystkie pozostałe zapytania nie są w stanie dostarczyć wymaganych informacji o najwyższych szczytach górskich w każdym paśmie. Pierwsza odpowiedź, SELECT pasmo, szczyt, wysokosc FROM gory; po prostu wyświetli wszystkie kolumny bez jakiejkolwiek agregacji, co prowadzi do nieprzydatnych wyników, gdyż nie wskazuje na najwyższe szczyty, które nas interesują. Druga odpowiedź, SELECT pasmo, szczyt, MAX(wysokosc) FROM gory;, jest błędna, ponieważ nie zawiera klauzuli GROUP BY. Bez niej, zapytanie zwróci jedynie najwyższą wysokość w całej tabeli, a nie w podziale na poszczególne pasma, co jest kluczowym elementem naszego zapytania. Trzecia opcja, SELECT pasmo, szczyt FROM gory GROUP BY wysokosc;, jest również niepoprawna, gdyż grupowanie według wysokości nie ma sensu w kontekście poszukiwania najwyższych szczytów w ramach pasm. Takie podejście prowadziłoby do niejednoznacznych wyników, ponieważ w każdym paśmie mogłoby być wiele szczytów o różnych wysokościach, a nie ma możliwości zidentyfikować najwyższego szczytu. Ustalanie grupy na podstawie niewłaściwego kryterium, jak w tym przypadku, często prowadzi do błędnych wniosków i jest typowym błędem myślowym, który należy unikać podczas pracy z danymi. Kluczowym wymogiem w takich zapytaniach jest zrozumienie, jakie kryteria powinny być zastosowane do grupowania danych oraz odpowiednie wykorzystanie funkcji agregujących w kontekście danego problemu.

Pytanie 11

Na podstawie przydzielenia wartości do zmiennych w języku PHP można zauważyć, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. zmienna1 i zmienna2 mają ten sam typ.
B. zmienna2 i zmienna3 mają ten sam typ.
C. wszystkie zmienne mają ten sam typ.
D. zmienna1 i zmienna3 mają ten sam typ.
Nie do końca to jest dobre, co mówisz, bo $zmienna1 to liczba całkowita (integer), a $zmienna2 to string. Typy danych w PHP mają znaczenie, bo różnie się zachowują w trakcie działania. Liczby są liczone, a teksty traktowane jako znaki. Mimo że obie pokazują "15", to ich typy są inne, co może prowadzić do błędów. Z $zmienna1 i $zmienna3 też jest nieciekawie, bo mimo że to liczby, to jednak typy się różnią - $zmienna1 to integer, a $zmienna3 to string. Często można się w tym pogubić, zakładając, że mając te same wartości, są też tego samego typu. Jak mówisz, że trzy zmienne są takie same, to pokazujesz, że nie do końca masz jasność co do typów w PHP. Pamiętaj, żeby zwracać uwagę na rzutowanie typów, bo niedopatrzenia mogą skutkować problemami w kodzie. Rekomenduję, żeby programiści regularnie sięgać do dokumentacji i używać dobrych praktyk, by lepiej ogarnąć temat typów danych w swoich projektach.

Pytanie 12

Jaki styl CSS umożliwi ustawienie tekstu do prawej strony?

A. <p style="position: right">tekst</p>
B. <p style="font: right">tekst</p>
C. <p style="align: right">tekst</p>
D. <p style="text-align: right">tekst</p>
Wybór niewłaściwych stylów CSS do wyrównania tekstu może prowadzić do nieczytelnych lub źle ułożonych treści na stronie. W pierwszej z niepoprawnych odpowiedzi sugeruje się użycie 'font: right', co jest kompletnie błędne, ponieważ 'font' jest właściwością, która służy do definiowania stylu czcionki, rozmiaru i wagi tekstu, a nie do wyrównania go. Takie użycie 'font' nie przyniesie żadnego efektu wyrównania tekstu i jest błędne z punktu widzenia składni CSS. W drugiej odpowiedzi jednako błędnie użyto 'align: right'. Warto zauważyć, że 'align' to atrybut HTML, który nie jest obsługiwany w CSS. CSS nie uznaje 'align' jako właściwości, więc ta odpowiedź jest nieprawidłowa. Ostatnia z błędnych odpowiedzi, 'position: right', sugeruje, że właściwość 'position' może być użyta do wyrównania tekstu. W rzeczywistości, 'position' jest właściwością, która określa sposób rozmieszczania elementu na stronie, jak 'static', 'relative', 'absolute' lub 'fixed', a nie do wyrównania zawartości tekstowej. Dlatego żadna z wymienionych odpowiedzi nie spełnia wymogów prawidłowego wyrównania tekstu do prawej strony w CSS.

Pytanie 13

W jaki sposób można ocenić normalizację przedstawionej tabeli?

FirmaAdres
Forbotul. Krótka 11, 22-222 Warszawa
Marbotul. Długa 5, 33-333 Warszawa
A. Tabela znajduje się w pierwszej postaci normalnej
B. Tabela znajduje się w drugiej postaci normalnej
C. Tabela nie została znormalizowana
D. Tabela jest w trzeciej postaci normalnej
Pierwsza postać normalna wymaga aby wszystkie wartości atrybutów w rekordzie były atomowe czyli nieredukowalne Tabela przedstawiona w zadaniu nie spełnia tego wymogu ponieważ adresy nie są rozbite na osobne elementy takie jak ulica miasto i kod pocztowy co uniemożliwia bardziej złożoną manipulację danymi oraz precyzyjne wyszukiwanie Druga postać normalna wymaga aby wszystkie atrybuty nie będące częścią klucza głównego były w pełni funkcjonalnie zależne od całego klucza Tabela z pytania nie spełnia tych kryteriów ponieważ istnieje redundancja i brak wyraźnej struktury Klucz główny w dobrze zaprojektowanej tabeli bazy danych powinien jednoznacznie identyfikować każdy wiersz co nie jest widoczne w tej strukturze Trzecia postać normalna idzie krok dalej eliminując zależności przechodnie między atrybutami co w przypadku tej tabeli również nie ma zastosowania Problemem tutaj jest brak rozdzielenia danych na mniejsze tabele co prowadzi do redundancji i potencjalnych błędów przy aktualizacji danych często określanych jako anomaly W dobrze znormalizowanej bazie danych oddzielenie informacji takich jak dane adresowe umożliwia lepszą organizację danych ich spójność oraz zwiększa efektywność operacji na bazie danych

Pytanie 14

Na podstawie przedstawionego kodu w języku JavaScript można powiedzieć, że alert nie zostanie wyświetlony, ponieważ

var x = 10;
switch(x) {
    case "10": alert("Test instrukcji switch");
}
A. W instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x.
B. Nie zastosowano instrukcji break.
C. Nie zastosowano wyrażenia default.
D. Wartość zmiennej x nie została zdefiniowana przed instrukcją switch.
Super, twoja odpowiedź jest prawidłowa! Wybierając odpowiedź 'w instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x', zrozumiałeś istotny punkt w porównywaniu wartości w JavaScript. W przeciwieństwie do wielu innych języków, porównania w JavaScript są typowo 'strict comparison'. Oznacza to, że pod uwagę brane są zarówno wartość, jak i typ danych. W naszym przypadku, zmienna x jest liczbą 10, podczas gdy w instrukcji case porównywana jest z ciągiem znaków '10'. Mimo, że obie reprezentują tę samą wartość, są różnymi typami danych. Dlatego też warunek nie jest spełniony i alert nie zostanie wyświetlony. To jest bardzo ważne do zapamiętania podczas pracy z JavaScript, ponieważ może prowadzić do nieoczekiwanych wyników. Pamiętaj zawsze o typach danych podczas korzystania z instrukcji switch i case w JavaScript.

Pytanie 15

Przedstawiony algorytm umożliwia wyliczenie

Ilustracja do pytania
A. najmniejszego wspólnego dzielnika dla n kolejnych liczb a.
B. średniej arytmetycznej n liczb a wprowadzonych przez użytkownika.
C. reszty z dzielenia kolejnych liczb a przez liczbę n.
D. średniej geometrycznej n liczb a wprowadzonych przez użytkownika.
Na diagramie widać dość typowy schemat algorytmu: wczytanie n, zainicjowanie zmiennych, pętla z licznikiem i i na końcu pojedyncza operacja dzielenia. Taki układ często myli osoby początkujące, bo łatwo go skojarzyć z innymi pojęciami matematycznymi. Warto więc spokojnie prześledzić logikę. Najpierw ustalana jest liczba elementów n. Potem zmienna Wynik jest ustawiana na 0, a i na 0, więc mamy klasyczne przygotowanie do sumowania w pętli. Warunek i < n powoduje, że ciało pętli wykona się dokładnie n razy. W każdej iteracji wczytywana jest jedna liczba a, a następnie Wynik = Wynik + a. To jest zwykłe sumowanie wszystkich podanych wartości. Dopiero po wyjściu z pętli następuje pojedyncza operacja Wynik = Wynik / n. To wyklucza interpretację w stylu „reszta z dzielenia” lub „najmniejszy wspólny dzielnik”, bo w algorytmie nie ma ani operatora modulo, ani żadnej logiki opartej na dzielnikach, porównywaniu reszt, iteracyjnej redukcji NWD itp. Dla średniej geometrycznej potrzebne byłoby mnożenie wszystkich wartości, a na końcu pierwiastek n-tego stopnia. Tutaj nie ma ani mnożenia w pętli, ani pierwiastkowania, więc średnia geometryczna odpada. Typowym błędem myślowym jest patrzenie tylko na końcowe dzielenie przez n i dopowiadanie sobie różnych znaczeń: że to reszta, że to jakiś „wspólny dzielnik” albo inna bardziej skomplikowana operacja. Tymczasem według dobrych praktyk analizy algorytmów trzeba zawsze prześledzić pełny przebieg: co się dzieje z każdą zmienną w każdej iteracji pętli. Wtedy widać jasno, że algorytm realizuje sumę n wczytanych liczb i na końcu dzieli tę sumę przez n, czyli liczy zwykłą średnią arytmetyczną. W kontekście podstaw informatyki to klasyczny wzorzec: inicjalizacja, pętla z akumulacją, przetworzenie wyniku po zakończeniu pętli.

Pytanie 16

W PHP, aby połączyć się z bazą danych MySQL przy użyciu biblioteki mysqli, w zapisie zamieszczonym poniżej, w miejscu litery 'c' powinno się wpisać

Ilustracja do pytania
A. hasło użytkownika
B. nazwę użytkownika
C. lokalizację serwera bazy danych
D. nazwę bazy danych
Rozważając, co powinno znajdować się na miejscu oznaczonym literą 'c', należy zrozumieć, jak działa funkcja mysqli w PHP. Pierwszym argumentem jest lokalizacja serwera bazy danych, często jest to 'localhost' dla lokalnych połączeń, co może prowadzić do błędnego założenia, że to właśnie ten parametr znajduje się pod literą 'c'. Drugi parametr powinien być nazwą użytkownika bazy danych, co w kontekście bezpieczeństwa jest elementem, na który zawsze trzeba zwracać uwagę. Hasło użytkownika znajduje się na trzeciej pozycji i jest kluczowe dla zapewnienia, że tylko uprawnione osoby mogą uzyskać dostęp do bazy. Czwarty parametr to nazwa bazy danych, która jest niezbędna do określenia, z którą bazą chcemy pracować w ramach danego połączenia. Często błędnie przyjmuje się, że nazwa bazy powinna być na pierwszym miejscu, co wynika z zamieszania co do struktury danych wejściowych. Warto dodać, że lokalizacja serwera, choć czasem zaniedbywana, jest kluczowa w środowiskach rozproszonych, gdzie połączenia mogą być nawiązywane z różnych serwerów lub maszyn wirtualnych. Każdy z tych elementów jest istotny i musi być poprawnie zidentyfikowany, aby połączenie z bazą danych było skuteczne i bezpieczne. Praktyczne umiejętności w tej dziedzinie są kluczowe, zwłaszcza przy projektowaniu i wdrażaniu aplikacji działających w profesjonalnym środowisku produkcyjnym.

Pytanie 17

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

<script>
  var x = 10;
  x++;
  console.log(x);
</script>
A. Będzie równa 10 i zostanie wypisana w dokumencie HTML
B. Będzie równa 11 i zostanie wypisana w konsoli przeglądarki internetowej
C. Będzie równa 11 i zostanie wypisana w oknie popup
D. Będzie równa 10 i zostanie wypisana w głównym oknie przeglądarki internetowej
Rozważając fragment kodu należy zwrócić uwagę na zastosowanie operatora postinkrementacyjnego x++ który zwiększa wartość zmiennej x o 1. Z tego powodu wszelkie odpowiedzi sugerujące że x pozostanie równy 10 są błędne. Częstym błędem jest myślenie że operacja x++ nie wpływa natychmiastowo na wartość zmiennej jednak w rzeczywistości po jej wykonaniu x zostaje zwiększone do 11. Kolejnym aspektem do rozważenia jest sposób wyświetlania wartości zmiennej. Console.log jest powszechnie używanym narzędziem do wyświetlania informacji w konsoli przeglądarki co odróżnia go od metod takich jak alert które wyświetlają informacje w oknach popup. Dlatego odpowiedzi sugerujące użycie okna popup również są nieprawidłowe. Ważne jest zrozumienie że console.log nie wpływa na wizualną część dokumentu HTML i nie zmienia jego zawartości co błędnie sugerują odpowiedzi przewidujące wyświetlenie w dokumencie HTML. Zrozumienie różnic w działaniu różnych metod wyjścia w JavaScript jest kluczowe dla debugowania i tworzenia aplikacji webowych. Typowym błędem jest również przypuszczenie że console.log ma bezpośredni wpływ na użytkownika końcowego podczas gdy jego głównym celem jest wspieranie deweloperów w analizie i rozwoju aplikacji. Aby uniknąć tych nieporozumień warto zgłębić dokumentację funkcji oraz praktyki debugowania w JavaScript co pozwala na bardziej efektywne wykorzystanie dostępnych narzędzi w pracy z kodem.

Pytanie 18

Po wykonaniu kodu PHP zostanie wyświetlona obecna data, zawierająca jedynie

echo date("Y");
A. rok
B. dzień
C. miesiąc i rok
D. dzień oraz miesiąc
Funkcja date w PHP jest super przydatna, bo pozwala na ładne formatowanie daty i godziny. Jak podasz argument Y, to dostaniesz czterocyfrowy rok, co jest zgodne z ISO 8601. To ważne, bo w różnych systemach, jak bazy danych czy księgowość, musisz mieć jasność, który rok jest właściwy. W PHP sporo osób korzysta z tej funkcji, żeby dynamicznie wyciągać datę – to świetne, zwłaszcza gdy tworzysz raporty czy logujesz różne zdarzenia w aplikacjach webowych. Warto też pamiętać, że date Y to tylko jedna z wielu opcji, jakie masz w PHP. Programiści mają dużą swobodę w dobieraniu formatu daty, co daje im możliwość dostosowania wszystkiego do potrzeb projektu. A dobrze sformatowane daty są nie tylko zgodne ze standardami, ale też ułatwiają życie użytkownikom końcowym, bo są jasne i jednoznaczne.

Pytanie 19

Które zdarzenie języka JavaScript jest wyzwalane w momencie, gdy kursor myszy znajduje się na elemencie do którego jest przypisane?

A. onmouseover
B. onmouseout
C. onmouseup
D. onmousedown
W tym pytaniu łatwo się pomylić, bo wszystkie wymienione zdarzenia są związane z myszką, ale każde z nich opisuje inny, dość precyzyjny moment interakcji użytkownika z elementem. Kluczowe jest zrozumienie, że pytanie dotyczy sytuacji, gdy kursor *znajduje się na elemencie*, czyli w praktyce momentu wejścia kursora w obszar tego elementu. Właśnie to zachowanie reprezentuje onmouseover. Zdarzenie onmouseup dotyczy chwili, gdy użytkownik puszcza (zwalnia) przycisk myszy. Nie ma znaczenia samo położenie kursora nad elementem, tylko to, że wcześniej przycisk został wciśnięty i teraz jest puszczany. Typowo wykorzystuje się je przy obsłudze drag & drop, przycisków, elementów interaktywnych, ale nie do reagowania na samo najechanie kursorem. Mylenie onmouseup z onmouseover wynika często z założenia, że „skoro klikam na elemencie, to pewnie chodzi o mysz nad elementem”, ale technicznie są to dwa różne etapy akcji. Z kolei onmouseout jest w pewnym sensie odwrotnością onmouseover. Wyzwala się wtedy, gdy kursor opuszcza obszar elementu, czyli przestaje się nad nim znajdować. Używa się go chociażby do cofania efektów stworzonych przy onmouseover, np. przywracania koloru, ukrywania dymka z podpowiedzią. Jeśli więc szukamy momentu, w którym kursor jest już nad elementem, to onmouseout opisuje raczej sytuację, kiedy z tego elementu „schodzimy”. Zdarzenie onmousedown uruchamia się przy wciśnięciu przycisku myszy, w chwili naciśnięcia, a nie najechania. Jest to ważne w interakcjach typu rysowanie na canvasie, łapanie suwaka, obsługa własnych kontrolek. W praktyce, jeżeli ktoś kojarzy wszystkie te zdarzenia jedynie ogólnie jako „coś od myszy”, to łatwo wrzucić je do jednego worka i strzelać odpowiedzi, ale według specyfikacji DOM Events każde z nich ma ściśle zdefiniowaną rolę. W kontekście pytania tylko onmouseover opisuje wejście kursora w obszar elementu i utrzymywanie się nad nim, więc właśnie ono jest poprawnym wyborem.

Pytanie 20

Który paragraf w przedstawionym kodzie zostanie wyświetlony czcionką o kolorze niebieskim?

<!DOCTYPE html>
<html>
<head>
<style>
div~p { color: blue; }
</style>
</head>
<body>
  <div>
    <p>pierwszy paragraf</p>
      <div>
        <p>drugi paragraf</p>
        <p>trzeci paragraf</p>
      </div>
    <p>czwarty paragraf</p>
  </div>
</body>
</html>
A. Czwarty.
B. Drugi.
C. Pierwszy.
D. Trzeci.
Źródłem problemu w tym zadaniu jest zrozumienie, jak dokładnie działa selektor `div~p`. Na pierwszy rzut oka wiele osób patrzy po prostu na kolejność paragrafów w kodzie i zakłada, że skoro wewnątrz diva są kolejne `<p>`, to one wszystkie będą niebieskie. To jest typowe mieszanie działania selektora rodzeństwa z selektorem potomków. Zapis `div p` rzeczywiście oznaczałby „każdy paragraf znajdujący się gdziekolwiek wewnątrz diva”, ale w pytaniu użyto operatora tyldy `~`, który ma inne znaczenie. Selektor `div~p` wskazuje elementy `<p>`, które są rodzeństwem elementu `<div>`, czyli mają tego samego rodzica w drzewie DOM, i jednocześnie występują po nim w kodzie. To oznacza, że przeglądarka w ogóle nie patrzy na paragrafy zagnieżdżone głębiej, np. w dodatkowym `<div>` w środku. One nie są rodzeństwem, tylko potomkami, więc selektor ich nie obejmuje. Częsty błąd polega też na myleniu selektora `div~p` z `div+p`. Ten drugi wybiera wyłącznie pierwszy paragraf bezpośrednio po divie na tym samym poziomie, natomiast `~` obejmuje wszystkie późniejsze rodzeństwa danego typu. W tym przykładzie jedynym `<p>`, który jest na tym samym poziomie co zewnętrzny `<div>` i stoi po nim, jest „czwarty paragraf”. Pozostałe, mimo że wizualnie znajdują się „w środku” tego diva, nie są rodzeństwem, tylko są bardziej zagnieżdżone. Z mojego doświadczenia wynika, że dopóki nie narysuje się sobie drzewa DOM albo nie podejrzy struktury w DevTools, bardzo łatwo o takie pomyłki. Dobra praktyka w CSS to zawsze myśleć o relacjach: rodzic–dziecko, rodzeństwo, potomek, a dopiero potem o kolejności w kodzie. Dzięki temu selektory są pisane świadomie, bardziej precyzyjnie i nie powodują niespodziewanych efektów w większych projektach.

Pytanie 21

Globalne zmienne do przechowywania informacji o ciasteczkach oraz sesjach: $_COOKIE oraz $_SESSION stanowią część języka

A. Perl
B. JavaScript
C. C#
D. PHP
Odpowiedzi C# i JavaScript są niewłaściwe, ponieważ te języki programowania nie posiadają natywnej obsługi dla $_COOKIE oraz $_SESSION, które są specyficzne dla PHP. C# jest językiem wykorzystywanym głównie w kontekście aplikacji webowych ASP.NET, gdzie zarządzanie stanem sesji odbywa się w zupełnie inny sposób, zazwyczaj przy użyciu obiektów typu SessionState, które są zintegrowane z serwerem. Użycie ciasteczek w C# wymaga od programisty ręcznego zarządzania headerami HTTP i cookie, co może być bardziej złożone i wymagające. Z kolei JavaScript, będący językiem skryptowym działającym po stronie klienta, nie ma bezpośredniego dostępu do sesji serwera ani nie operuje na $_COOKIE, które są mechanizmem PHP. JavaScript może korzystać z ciasteczek, ale jego zastosowanie w zakresie utrzymywania sesji jest ograniczone, ponieważ nie oferuje on zarządzania stanem aplikacji na poziomie serwera. W rzeczywistości, programiści mogą mylić rolę ciasteczek i sesji, sądząc, że oba mechanizmy są identyczne, podczas gdy różnią się one w kontekście przechowywania i bezpieczeństwa danych. Właściwe zrozumienie tych różnic jest kluczowe dla efektywnego projektowania aplikacji webowych, dlatego ważne jest, aby odnosić się do odpowiednich dokumentacji i standardów dla każdego z używanych języków.

Pytanie 22

Podany poniżej kod źródłowy w języku C++ ma na celu wypisywanie dla wprowadzonych dowolnych liczb całkowitych różniących się od zera:

int main(){
    int liczba;
    cin >> liczba;
    while (liczba != 0)
    {
        if ((liczba % 2) == 0)
            cout << liczba << endl;
        cin >> liczba;
    }
    return 0;
}
A. tylko liczby nieparzyste
B. jedynie liczby parzyste
C. liczby pierwsze
D. wszystkie liczby
Kod źródłowy napisany w języku C++ ma na celu wypisywanie tylko liczb parzystych. Funkcja main() wczytuje liczbę całkowitą za pomocą cin, a następnie wchodzi w pętlę while, która trwa tak długo, jak długo wczytana liczba nie jest równa zero. Wewnątrz pętli, zastosowano sprawdzenie warunku, który definiuje, czy liczba jest parzysta, poprzez operator modulo: (liczba % 2) == 0. Jeśli wynik tego działania jest równy zero, liczba jest parzysta i zostaje wypisana na ekranie. Wszelkie inne liczby (nieparzyste) nie są wyświetlane. Przykładem praktycznego zastosowania tego kodu może być program do analizy danych liczbowych, gdzie chcemy zebrać tylko liczby parzyste do dalszej obróbki, na przykład w statystyce lub w aplikacjach finansowych. Praktyczne podejście do programowania w C++ wymaga znajomości takich konstrukcji jak pętle i warunki, co jest zgodne z najlepszymi praktykami inżynieryjnymi w branży oprogramowania.

Pytanie 23

Aby strona internetowa skutecznie dopasowywała się do urządzeń mobilnych, należy ustalić rozmiar czcionki

A. w pikselach
B. w procentach
C. w milimetrach
D. tylko znacznikami big i small
Definiowanie wielkości czcionki w pikselach może prowadzić do sztywnych układów, które nie skalują się prawidłowo na różnych urządzeniach. Piksele są jednostką stałą, co oznacza, że niezależnie od rozmiaru ekranu, czcionka zawsze będzie miała tę samą wielkość. To podejście może skutkować trudnościami w odczycie tekstu na mniejszych ekranach, co jest sprzeczne z zasadami projektowania responsywnego. Kolejna jednostka, czyli milimetry, również nie jest praktycznym rozwiązaniem, gdyż nie uwzględnia różnic w rozdzielczości ekranów oraz ich fizycznych rozmiarów. Wygląd witryny może znacznie różnić się w zależności od urządzenia, co komplikuje doświadczenie użytkownika. Użycie znaczników big i small jest całkowicie przestarzałą metodą, która nie tylko ogranicza kontrolę nad rozmiarem tekstu, ale także nie jest zgodna z nowoczesnymi standardami HTML i CSS. Współczesne podejścia do projektowania stron internetowych kładą nacisk na semantykę i dostępność, a te tagi nie wspierają tych celów. Dlatego poprawne podejście polegające na zastosowaniu procentów, względnych jednostek, takich jak em lub rem, jest znacznie bardziej efektywne w kontekście tworzenia elastycznych, responsywnych i dostępnych projektów webowych.

Pytanie 24

Na zakończenie dnia w systemie zarządzania magazynem sklepu spożywczego generowany jest raport, który przedstawia produkty oraz ich dostawców, dla których ilość na stanie jest mniejsza niż 10 sztuk. Do stworzenia tego raportu zastosowano kwerendę

A. CHECK TABLE
B. INSERT INTO
C. SELECT
D. UPDATE
Odpowiedzi takie jak CHECK TABLE, UPDATE i INSERT INTO są niewłaściwe w kontekście opisywanego raportu. CHECK TABLE jest komendą używaną do sprawdzania integralności tabel w bazie danych, ale nie ma zastosowania w kontekście generowania raportów. Nie umożliwia ona pobierania danych ani ich analizowania, co jest kluczowe w przypadku raportowania stanów magazynowych. Z kolei UPDATE to polecenie, które służy do modyfikowania istniejących rekordów w bazie danych. Chociaż może być użyteczne w sytuacjach, gdy chcemy zaktualizować ilość produktów w magazynie, nie ma zastosowania w kontekście generowania raportu, ponieważ nie jest to operacja mająca na celu odczyt danych. Tak samo INSERT INTO jest używane do dodawania nowych rekordów do tabeli. W przypadku raportu, którego celem jest analizy danych, to podejście nie jest ani odpowiednie, ani praktyczne. Typowym błędem w myśleniu jest mylenie operacji manipulacji danymi z operacjami odczytu. W kontekście efektywnego zarządzania bazami danych, kluczowe jest zrozumienie, że każda z tych kwerend ma swoje specyficzne zastosowania, a w przypadku raportowania stanów magazynowych jedynie kwerenda SELECT jest odpowiednia, ponieważ umożliwia wydobycie i analizę danych zgodnie z zdefiniowanymi kryteriami.

Pytanie 25

Portal internetowy dysponuje bardzo złożonym systemem stylów, który obejmuje style zewnętrzne, wewnętrzne oraz lokalne. Jak można zagwarantować, że określona cecha zdefiniowana w zewnętrznym stylu jest zawsze stosowana do elementu HTML, niezależnie od bardziej priorytetowych stylów?

A. jako pseudoklasę :active
B. jako selektor potomka
C. przy pomocy pseudoelementu ::after
D. przy pomocy reguły !important
Zdefiniowanie cechy za pomocą selektora potomka, pseudoklasy :active lub pseudoelementu ::after to podejścia, które nie spełniają wymaganego celu w kontekście priorytetyzacji stylów CSS. Selektor potomka odnosi się do elementów, które są zagnieżdżone wewnątrz innych elementów i nie zapewnia on wyższego priorytetu. Na przykład, jeśli mamy regułę `div p { color: blue; }`, a później w innym miejscu `p { color: red; }`, kolor tekstu w elemencie <p> będzie czerwony, niezależnie od tego, że jest on dzieckiem <div>. Pseudoklasa :active dotyczy stanu interakcji z elementem, jak naciśnięcie przycisku. Nie można jej używać do stawiania stylów jako domyślnych, ponieważ działa tylko w momencie aktywacji, co nie spełnia wymogu stałego przypisania stylu. Pseudoelement ::after służy do dodawania treści po elemencie, ale również nie wpływa na priorytet wyświetlania stylów. Użycie tych metod w kontekście prób ustalenia stałych cech stylów może prowadzić do nieporozumień i błędów w kodzie, ponieważ nie zapewniają one odpowiedniej kontroli nad priorytetami, co jest kluczowe w projektowaniu stylów CSS. W praktyce, aby uniknąć konfliktów i nieprzewidywalnych rezultatów, zaleca się odpowiednie planowanie struktury styli oraz przejrzystość w używaniu reguły !important tylko tam, gdzie to absolutnie konieczne.

Pytanie 26

Jakim protokołem można bezpiecznie przesłać pliki strony internetowej na serwer WWW?

A. IMAP
B. POP3
C. Telnet
D. SFTP
POP3, czyli Post Office Protocol Version 3, to protokół do odbierania maili, ale nie za bardzo nadaje się do przesyłania plików. Głównie synchronizuje wiadomości z lokalnym klientem poczty. Więc jak chcesz przesyłać pliki na stronę, to nie jest dobry wybór. Z kolei Telnet to protokół, który pozwala na zdalne logowanie do systemów, ale nie ma żadnego szyfrowania. Przez to łatwo można przechwycić dane, a to nie jest zbyt bezpieczne, zwłaszcza jak są tam wrażliwe informacje. IMAP, czyli Internet Message Access Protocol, służy do zarządzania mailami na serwerze, ale też nie do przesyłania plików. Tak samo jak POP3, jest tylko do e-maili. Telnet natomiast się nie nadaje do bezpiecznego przesyłania plików, bo nie zapewnia odpowiednich zabezpieczeń.

Pytanie 27

Jakie jest poprawne zapisanie tagu HTML?

<a href="#hobby">przejdź</a>
A. jest błędny, użyto niewłaściwego znaku # w atrybucie href
B. jest prawidłowy, po kliknięciu w odnośnik otworzy się strona pod adresem "hobby"
C. jest błędny, w atrybucie href powinien być podany adres URL
D. jest poprawny, po kliknięciu w odnośnik strona zostanie przewinięta do elementu o nazwie "hobby"
W znaczniku HTML a z atrybutem href='#hobby' zastosowano tzw. kotwicę fragmentu strony. Jest to popularna technika używana do bezpośredniego przenoszenia użytkownika do określonej części strony internetowej. Znak hash (#) wskazuje, że link odwołuje się do elementu o identyfikatorze hobby w obrębie tej samej strony. Tego rodzaju odnośniki są szeroko stosowane w długich dokumentach gdzie szybka nawigacja między sekcjami poprawia doświadczenie użytkownika. Aby kod działał poprawnie na stronie musi istnieć element z atrybutem id='hobby'. To działanie jest zgodne ze standardami HTML i jest zalecane w projektowaniu dostępnych i przyjaznych dla użytkownika aplikacji internetowych. Warto także pamiętać o stosowaniu opisowych identyfikatorów co ułatwia czytelność kodu i jego późniejsze utrzymanie. Praktyka ta jest zgodna z najlepszymi praktykami w zakresie użyteczności i dostępności stron internetowych co może również wpłynąć pozytywnie na SEO poprzez poprawę struktury strony.

Pytanie 28

Czym w relacyjnej bazie danych jest odpowiednik encji?

A. kolumna
B. tabela
C. atrybut
D. wiersz
Tabela w relacyjnej bazie danych to coś jak podstawowy budulec, który reprezentuje encję, czyli po prostu zestaw danych związanych z jakimś tematem. Każda tabela ma wiersze i kolumny. Wiersze są jak indywidualne rekordy, a kolumny to różne atrybuty, które mówią nam coś o tych rekordach. Weźmy na przykład tabelę 'Klienci' – tam znajdziesz kolumny jak 'ID', 'Imię', 'Nazwisko' i 'Adres'. Dzięki tabelom relacyjne bazy danych są w stanie spełniać normy ACID, czyli zapewniają atomowość, spójność, izolację i trwałość, co jest mega ważne dla integralności danych. Z praktyki wiem, że warto nauczyć się, jak definiować tabele, żeby skutecznie przechowywać i zarządzać danymi, bo to ma duży wpływ na to, jak szybko działają zapytania. Dlatego zrozumienie struktury tabeli i jej roli w bazach danych jest kluczowe dla każdego, kto się tym zajmuje.

Pytanie 29

W algorytmie jeden z bloków zawiera akcję „Wypisz liczbę”. Jaki kształt może mieć ta akcja?

Ilustracja do pytania
A. Kształt 1
B. Kształt 4
C. Kształt 2
D. Kształt 3
W algorytmach i schematach blokowych każdy kształt ma swoje specyficzne zastosowanie i znaczenie, co jest kluczowe dla zrozumienia i projektowania schematów przepływu. Użycie nieodpowiedniego kształtu może prowadzić do nieporozumień i błędnej interpretacji działania algorytmu. Prostokąt, często wybierany przez początkujących, jest symbolem operacji obliczeniowej, a nie wypisywania danych. Użycie go zamiast równoległoboku może sugerować, że w danym miejscu algorytm wykonuje przetwarzanie danych, co wprowadza w błąd. Romb, z kolei, jest używany do reprezentowania decyzji, czyli punktu, w którym algorytm wybiera jedną z kilku możliwych ścieżek na podstawie określonego warunku. Użycie rombu do opisania operacji wypisywania mogłoby sugerować, że wybieramy między różnymi możliwościami wyjścia danych, co byłoby błędne. Zastosowanie specjalnych kształtów, takich jak trapez, też jest nietypowe i nie znalazło umocowania w standardach. Właściwe użycie symboli to część dobrych praktyk w projektowaniu schematów, co ułatwia współpracę i zrozumienie pomiędzy programistami oraz ułatwia rozpoznanie błędów we wczesnym etapie projektowania. Zrozumienie tego aspektu pozwala na poprawę jakości tworzonych algorytmów i ich zgodności z ogólnymi standardami branżowymi ISO/IEC 19515:2017.

Pytanie 30

Jaki zestaw terminów określa interfejs użytkownika witryny internetowej?

A. Przyciski, menu, interakcja użytkownika z aplikacją
B. Szkic strony, diagram witryny, diagram przepływu informacji
C. Obróbka danych, system zarządzania treścią, projektowanie informacji
D. Przesyłanie zapytań do bazy, skrypty PHP
Interfejs użytkownika (UI) strony internetowej to kluczowy element, który odpowiada za interakcję użytkownika z aplikacją internetową. W jego skład wchodzą różnorodne elementy, takie jak przyciski, menu, formularze, ikony oraz inne komponenty, które umożliwiają użytkownikowi nawigację, wprowadzanie danych oraz podejmowanie akcji. Zastosowanie standardów projektowania, takich jak Material Design czy Human Interface Guidelines, pozwala na tworzenie intuicyjnych i estetycznych interfejsów, co zwiększa użyteczność strony. Przykładowo, przycisk „Zatwierdź” umieszczony w formularzu powinien być wyraźnie oznaczony i łatwo dostępny, aby użytkownicy mogli szybko zakończyć proces rejestracji lub zakupu. Dobre praktyki w zakresie projektowania UI obejmują także responsywność, co oznacza, że interfejs powinien dostosowywać się do różnych rozmiarów ekranów, zapewniając optymalne wrażenia użytkownika na urządzeniach mobilnych oraz desktopowych. Interakcja użytkownika z aplikacją jest kluczowym aspektem, a właściwie zaprojektowany interfejs wpływa na satysfakcję użytkowników oraz ich skłonność do powrotu na stronę.

Pytanie 31

O obiekcie przedstawionym w JavaScript można powiedzieć, że posiada

var obiekt1 = {
    x: 0,
    y: 0,
    wsp: function() { [...] }
}
A. trzema właściwościami
B. trzema metodami
C. dwoma metodami oraz jedną właściwością
D. dwoma właściwościami oraz jedną metodą
Obiekt w języku JavaScript, taki jak przedstawiony na obrazku, składa się z par klucz-wartość zwanych właściwościami. W tym przypadku mamy dwie właściwości x i y, które są przypisane wartości 0. Właściwości te przechowują dane i mogą być dowolnego typu, jak liczby, ciągi znaków czy inne obiekty. Trzecim elementem obiektu jest wsp, który jest przypisany funkcji, co czyni go metodą obiektu. Metoda w JavaScript jest funkcją przypisaną jako wartość właściwości, która może być wywoływana na obiekcie. Tego rodzaju struktura pozwala na efektywne organizowanie kodu i jest często stosowana w programowaniu obiektowym w JavaScript. Dzięki metodom można dynamicznie manipulować danymi wewnątrz obiektu. Takie podejście jest zgodne z zasadami hermetyzacji, które są częścią paradygmatu programowania obiektowego, zwiększając czytelność i utrzymanie kodu. W praktyce, znajomość właściwości i metod obiektów JavaScript jest kluczowa dla tworzenia dynamicznych i interaktywnych aplikacji webowych.

Pytanie 32

Hermetyzacja to zasada programowania obiektowego, która mówi, że

A. typy pól w klasach/obiektach mogą być zmieniane w sposób dynamiczny w zależności od przypisywanych danych
B. klasy/obiekty mogą dzielić się funkcjonalnością
C. pola i metody dostępne tylko dla konkretnej klasy/obiektu mają zasięg ograniczony do private lub protected
D. klasy/obiekty mogą definiować metody wirtualne, które są realizowane w klasach/obiektach pochodnych
Odpowiedzi sugerujące różne interpretacje hermetyzacji w programowaniu obiektowym zakładają błędne zrozumienie tej zasady. Wskazanie, że klasy mogą mieć metody wirtualne, które są implementowane w pochodnych klasach, odnosi się do polimorfizmu, a nie hermetyzacji. Polimorfizm pozwala na zdefiniowanie metod w klasie bazowej, które mogą być nadpisywane w klasach pochodnych, ale nie ma związku z ograniczeniem dostępu do danych. Z kolei twierdzenie, że typy pól w klasach mogą być dynamicznie zmieniane, wskazuje na nieporozumienie dotyczące typów statycznych i dynamicznych w kontekście języków programowania, gdzie typy pól są zazwyczaj ustalane w momencie kompilacji. Ponadto, stwierdzenie, że klasy mogą współdzielić ze sobą funkcjonalność, odnosi się do dziedziczenia oraz kompozycji, które są osobnymi konceptami w programowaniu obiektowym. W rzeczywistości, hermetyzacja jest bardziej związana z ochroną danych i zapewnieniem, że wewnętrzna logika klasy pozostaje nietknięta przez nieautoryzowane modyfikacje. Te nieporozumienia mogą prowadzić do istotnych problemów w architekturze aplikacji, gdzie niezrozumienie hermetyzacji skutkuje nadmiernym uzależnieniem od zewnętrznych interakcji oraz zwiększoną złożonością kodu. Zrozumienie hermetyzacji jest kluczowe, aby tworzyć kod, który jest nie tylko bardziej odporny na błędy, ale również łatwiejszy do utrzymania i rozwijania.

Pytanie 33

Wskaź poprawną formę kodowania polskich znaków w pliku HTML?

A. <meta "content=UTF-8">
B. <meta char set= "UTF-8">
C. <meta charset="UTF-8">
D. <meta content='UTF8'>
Widzę, że wybrałeś niepoprawną odpowiedź. Może to być przez jakieś niejasności związane z deklaracją kodowania w HTML. Odpowiedzi takie jak <meta content='UTF8'> czy <meta "content=UTF-8"> są błędne, bo nie trzymają się właściwego formatu HTML. Pierwsza z tych opcji nie ma poprawnego atrybutu 'charset' i brakuje jej myślnika w kodowaniu. Druga też ma problem, bo nie stosuje zasad dotyczących cudzysłowów i źle używa atrybutów, co może prowadzić do złego parsowania przez przeglądarki. Jeszcze w odpowiedzi <meta char set="UTF-8"> jest błąd w nazwie atrybutu; 'char set' powinno być razem jako 'charset'. Takie detale mogą powodować problemy z wyświetlaniem treści, zwłaszcza gdy strona zawiera znaki spoza podstawowego zestawu ASCII. Często ludzie nie zdają sobie sprawy, że złe kodowanie może prowadzić do nieczytelnym znaków i problemów z wyświetlaniem. Dlatego ważne jest, żeby poprawnie ustawić charset w nagłówku HTML, żeby treści były dobrze interpretowane na różnych urządzeniach i przeglądarkach, co teraz jest kluczowe, biorąc pod uwagę globalizację i różnorodność językową.

Pytanie 34

Jakie oprogramowanie NIE JEST systemem do zarządzania treścią (CMS)?

A. Apache
B. WordPress
C. Joomla
D. Mambo
Joomla, WordPress i Mambo to systemy zarządzania treścią, które umożliwiają użytkownikom tworzenie oraz zarządzanie treściami na stronach internetowych. Każdy z tych CMS-ów ma swoje unikalne cechy, które przyciągają różne grupy użytkowników. Na przykład, Joomla jest często wybierana do bardziej złożonych projektów, które wymagają zaawansowanego zarządzania użytkownikami i treściami, podczas gdy WordPress jest szczególnie popularny wśród blogerów i małych firm ze względu na swoją prostotę i bogaty ekosystem wtyczek. Mambo, z kolei, był jednym z pierwszych systemów CMS, który zyskał popularność, jednakże jego rozwój został w pewnym momencie wstrzymany. Wybór jednego z tych systemów jako niewłaściwego może wynikać z nieporozumienia dotyczącego funkcji i zastosowania tych narzędzi. Często użytkownicy mylą rolę serwera, który hostuje aplikację, z rolą samej aplikacji. Zrozumienie, że Apache jest serwerem, a nie systemem zarządzania treścią, jest kluczowe. W kontekście projektowania i wdrażania rozwiązań internetowych, ważne jest, aby dostrzegać różnice między infrastrukturą a aplikacjami, które na niej działają. Właściwe zrozumienie tych konceptów pozwala na lepsze projektowanie architektury systemów oraz lepsze dostosowanie narzędzi do konkretnych potrzeb projektu.

Pytanie 35

Funkcja, która wywołuje samą siebie to

A. rekurencja
B. dziedziczenie
C. iteracja
D. hermetyzacja
Rekurencja to technika programistyczna, w której funkcja wywołuje samą siebie w celu rozwiązania problemu. Jest to szczególnie użyteczne w sytuacjach, gdy problem można podzielić na mniejsze, podobne podproblemy. Przykładem rekurencji może być obliczanie silni liczby. Silnia n (n!) jest definiowana jako n * (n-1)!, co oznacza, że obliczenie silni dla n wymaga obliczenia silni dla n-1, aż do osiągnięcia podstawowego przypadku, którym jest 0! = 1. Rekurencja ma zastosowanie w wielu algorytmach, w tym w wyszukiwaniu binarnym, sortowaniu przez scalanie oraz w rozwiązywaniu problemów związanych z drzewami, takich jak przechodzenie przez struktury drzewiaste. Ważne jest, aby prawidłowo zdefiniować warunki zakończenia rekurencji, aby uniknąć nieskończonego wywoływania funkcji, co prowadzi do przekroczenia limitu stosu. Rekurencja jest często stosowana w językach programowania takich jak Python, Java i C++, a jej zrozumienie jest kluczowe dla każdego programisty, który chce efektywnie rozwiązywać złożone problemy.

Pytanie 36

Podczas testowania skryptu JavaScript można w konsoli wyświetlać obecnie przechowywane wartości zmiennych przy użyciu funkcji

A. console.log()
B. console.error()
C. console.count()
D. console.warn()
Funkcja console.log() jest najczęściej używaną metodą do wyświetlania informacji w konsoli JavaScript. Umożliwia ona programistom monitorowanie wartości zmiennych w czasie rzeczywistym, co jest niezwykle pomocne podczas debugowania aplikacji. Używając console.log(), można łatwo wprowadzić komunikaty do konsoli, co pozwala na śledzenie zachowań aplikacji oraz identyfikację potencjalnych problemów. Przykładowo, jeśli mamy zmienną 'x' i chcemy zobaczyć jej wartość, wystarczy wpisać console.log(x). Dobre praktyki inżynierii oprogramowania sugerują, aby używać tego narzędzia do logowania istotnych informacji, w tym danych wejściowych oraz wyników operacji, co ułatwia późniejszą analizę i utrzymanie kodu. Ponadto, console.log() jest częścią standardu Web API, co potwierdza jego znaczenie i powszechność w branży. Warto też pamiętać, że nadmierne logowanie może prowadzić do zagracenia konsoli, dlatego kluczowe jest stosowanie tej funkcji w umiarkowany sposób, szczególnie w środowisku produkcyjnym.

Pytanie 37

Które z wymienionych stwierdzeń na temat zasad programowania w PHP jest prawdziwe?

A. W nazwach zmiennych wielkość liter nie ma znaczenia
B. Nazwy zmiennych poprzedza znak !
C. Zmienna deklarowana jest po słowie var
D. Jest to język z ograniczoną kontrolą typów
Wszystkie podane odpowiedzi są błędne z perspektywy zasad programowania w PHP. Pierwsza niepoprawna informacja sugeruje, że nazwy zmiennych w PHP są poprzedzane znakiem '!'. W rzeczywistości, w PHP zmienne zaczynają się od znaku '$', a nie '!'. To kluczowa zasada, która odróżnia zmienne od innych typów danych w języku. Kolejna informacja, która mówi, że deklaracja zmiennych następuje po słowie 'var', również jest mylna. W PHP nie ma takiej potrzeby; zmienne są automatycznie deklarowane w momencie przypisania im wartości, co sprawia, że użycie słowa kluczowego 'var' jest zbędne. Ostatnia błędna odpowiedź dotyczy kwestii rozróżniania wielkości liter w nazwach zmiennych. W PHP, zmienne są rozróżniane pod względem wielkości liter, co oznacza, że '$Zmienna' i '$zmienna' będą traktowane jako dwie różne zmienne. Ta cecha języka wymaga od programistów staranności w nazewnictwie, aby unikać nieporozumień i błędów w kodzie. W związku z tym, zrozumienie poprawnych zasad dotyczących deklaracji zmiennych i ich typów jest kluczowe dla efektywnego programowania w PHP.

Pytanie 38

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 FROM Pacjenci WHERE wiek < 18 OR lekarz_id = 6;
B. SELECT imie, nazwisko WHERE wiek < 18 AND lekarz_id = 6;
C. SELECT imie, nazwisko FROM Pacjenci WHERE wiek < 18 AND lekarz_id = 6;
D. SELECT imie, nazwisko 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 39

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 AS SELECT * 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 FROM Pracownicy WHERE dzial=2
Pozostałe odpowiedzi są błędne z różnych powodów. Przede wszystkim, brak słowa kluczowego 'AS' w odpowiedziach, które twierdzą, że mają na celu stworzenie widoku, skutkuje nieprawidłową składnią. W SQL, podczas definiowania widoku, kluczowe jest użycie 'AS' po nazwie widoku, aby określić, że następujące zapytanie jest definicją źródła danych tego widoku. Ponadto, użycie słowa kluczowego 'VIEW' bez 'CREATE' jest niepoprawne, ponieważ struktura SQL wymaga, aby przed utworzeniem widoku zawsze były używane polecenia 'CREATE VIEW'. Również pominięcie 'SELECT *' w kontekście tworzenia widoku ogranicza elastyczność, ponieważ pozwala na wybranie tylko niektórych kolumn z tabeli, co nie jest zgodne z wymaganiami przedstawionymi w pytaniu. Zrozumienie tych zasad jest kluczowe, aby uniknąć typowych pułapek w pracy z SQL, a także pozwala na tworzenie bardziej złożonych i wydajnych strukturyzacji danych. Użycie nieprawidłowej składni może prowadzić do błędów wykonania, co w praktyce może skutkować zamieszaniem i wydłużonym czasem reakcji na wyciąganie danych. Dlatego kluczowe jest przestrzeganie standardów i dobrych praktyk w pisaniu zapytań SQL.

Pytanie 40

Wskaż właściwy sposób zapisu instrukcji w języku JavaScript.

A. document.write("Liczba π z dokładnością do 2 miejsc po przecinku ≈ " . 3.14 );
B. document.write("Liczba π z dokładnością do 2 miejsc po przecinku ≈ " + 3.14 );
C. document.write("Liczba π z dokładnością do 2 miejsc po przecinku ≈ " 3.14 );
D. document.write("Liczba π z dokładnością do 2 miejsc po przecinku ≈ " ; 3.14 );
Poprawna odpowiedź to 'document.write("Liczba π z dokładnością do 2 miejsc po przecinku ≈ " + 3.14);'. Ta instrukcja w języku JavaScript umożliwia wyświetlenie tekstu oraz wartości liczbowej na stronie internetowej. Kluczowym elementem jest operator konkatenacji '+', który służy do łączenia ze sobą dwóch lub więcej stringów. W tym przypadku łączymy tekst z wartością liczby π. Użycie podwójnych cudzysłowów do otoczenia tekstu jest poprawne, a znaki ucieczki (backslash) przed cudzysłowami wewnętrznymi zapewniają, że JavaScript prawidłowo interpretuje je jako część tekstu, a nie zakończenie stringa. W praktyce często korzysta się z tego typu zapisów do dynamicznego generowania treści na stronach internetowych, co jest zgodne z zasadami programowania obiektowego oraz dobrymi praktykami w zakresie czytelności kodu. Warto również zauważyć, że 'document.write' jest funkcją, którą należy stosować ostrożnie, gdyż może nadpisywać istniejącą zawartość strony, jeśli użyta zostanie po załadowaniu DOM. Dlatego w nowoczesnych aplikacjach webowych preferowane są inne metody, takie jak manipulacja DOM poprzez metody 'appendChild' lub 'innerHTML'.