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: 8 czerwca 2026 23:56
  • Data zakończenia: 9 czerwca 2026 00:22

Egzamin zdany!

Wynik: 35/40 punktów (87,5%)

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

Wskaż zapytanie, w którym dane są uporządkowane.

A. SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10;
B. SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;
C. SELECT DISTINCT produkt, cena FROM artykuly;
D. SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2;
Odpowiedź wskazująca na zapytanie "SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;" jest prawidłowa, ponieważ zawiera klauzulę ORDER BY, która służy do sortowania rekordów w wynikach zapytania. W tym przypadku dane są sortowane według kolumny 'wiek', co pozwala na uzyskanie uporządkowanej listy mieszkańców, którzy mają więcej niż 18 lat. Sortowanie danych jest kluczowym aspektem w zarządzaniu bazami danych, umożliwiającym łatwiejsze wyszukiwanie oraz analizę informacji. Przykładem zastosowania może być generowanie raportów, gdzie istotne jest uporządkowanie danych, na przykład według wieku, aby zobaczyć, jak rozkłada się wiek mieszkańców w danej grupie. Dodatkowo, stosowanie sortowania zgodnie z przyjętymi standardami SQL zwiększa czytelność oraz efektywność zapytań, a także ułatwia rozwiązywanie problemów związanych z przetwarzaniem danych.

Pytanie 2

Tabele: Studenci, Zapisy, Zajecia są powiązane relacją. Aby wybrać jedynie nazwiska studentów oraz odpowiadające im idZajecia dla studentów z grupy 15, należy wydać kwerendę

Ilustracja do pytania
A. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idZajecia WHERE grupa = 15;
B. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy WHERE grupa= 15;
C. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy ON Studenci.id = Zapisy.idStudenta;
D. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idStudenta WHERE grupa = 15;
Ta odpowiedź jest dokładnie tym, czego oczekuje się w praktycznej pracy z relacyjnymi bazami danych. Kluczowe jest tutaj poprawne połączenie tabeli Studenci z tabelą Zapisy na podstawie klucza głównego Studenci.id oraz obcego Zapisy.idStudenta. To klasyczna sytuacja, gdzie chcemy wydobyć informacje z dwóch tabel powiązanych relacją jeden-do-wielu. Dzięki użyciu JOIN oraz warunku ON określającego relację, uzyskujemy możliwość pobrania nazwisk studentów i odpowiadających im identyfikatorów zajęć. Warunek WHERE ogranicza wynik do studentów z konkretnej grupy, co jest bardzo częstym wymaganiem biznesowym np. przy generowaniu list obecności czy analizie frekwencji. Takie podejście jest czytelne, zgodne ze składnią SQL ANSI i pozwala uniknąć nieporozumień przy większych kwerendach. Moim zdaniem warto pamiętać, że stosowanie jawnych JOIN-ów zamiast łączenia 'po przecinku' czy w warunku WHERE, ułatwia późniejszą rozbudowę zapytań oraz ogranicza ryzyko tzw. 'kartesjańskiego koszmaru', czyli niekontrolowanego zwielokrotnienia rekordów. Warto też wiedzieć, że zapis ten jest optymalny wydajnościowo, bo wykorzystuje istniejące klucze i indeksy – a to podstawa dobrych praktyk w pracy z bazami danych. Generalnie, jak się opanuje ten schemat, to potem większość operacji na relacyjnych bazach danych jest dużo łatwiejsza.

Pytanie 3

Aby stworzyć poprawną kopię zapasową bazy danych, która będzie mogła zostać później przywrócona, należy najpierw sprawdzić

A. możliwość udostępnienia bazy danych
B. spójność bazy
C. uprawnienia dostępu do serwera bazy danych
D. poprawność składni zapytań
Spójność bazy danych jest kluczowym elementem, który należy sprawdzić przed wykonaniem kopii bezpieczeństwa, ponieważ zapewnia, że wszystkie dane są zgodne i nie zawierają błędów. Spójność oznacza, że wszelkie reguły i ograniczenia, takie jak klucze główne, klucze obce oraz unikalne indeksy, są spełnione. W przypadku naruszenia spójności, kopia bazy danych mogłaby zawierać uszkodzone lub niekompletne dane, co mogłoby uniemożliwić jej prawidłowe odtworzenie w przyszłości. Przykładem może być sytuacja, gdy mamy tabelę zamówień, która odwołuje się do tabeli klientów. Jeśli rekord klienta został usunięty, a zamówienia pozostają, to mamy do czynienia z naruszeniem spójności. Standardy, takie jak ACID (Atomicity, Consistency, Isolation, Durability), podkreślają znaczenie spójności w zarządzaniu bazami danych, co czyni ją niezbędnym krokiem w procesie tworzenia kopii zapasowych.

Pytanie 4

Który ze znaczników HTML NIE służy do formatowania tekstu?

A. <sub>
B. <em>
C. <strong>
D. <div>
Znacznik <div> to uniwersalny pojemnik blokowy - grupuje elementy w sekcję, którą można wspólnie ostylować czy spozycjonować, ale sam w żaden sposób nie zmienia wyglądu tekstu. Pozostałe znaczniki dotyczą właśnie formatowania treści: <em> i <strong> nadają tekstowi znaczenie (i domyślnie kursywę oraz pogrubienie), a <sub> tworzy indeks dolny. Dlatego do formatowania tekstu NIE służy <div>.

Pytanie 5

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

A. console.count()
B. console.log()
C. console.warn()
D. console.error()
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 6

Co oznacza akronim ACID w kontekście transakcji bazodanowych?

A. atomic, consistent, iss, dependable
B. atomic, consistent, isolated, durable
C. atomic, constraint, isolated, dependable
D. atomic, comming, is, do
ACID to cztery właściwości poprawnej transakcji bazodanowej: Atomicity (atomowość - transakcja wykonuje się w całości albo wcale), Consistency (spójność - baza przechodzi z jednego poprawnego stanu w drugi), Isolation (izolacja - równoległe transakcje nie zakłócają się wzajemnie) i Durability (trwałość - zatwierdzone zmiany przetrwają nawet awarię). Dlatego ACID to atomic, consistent, isolated, durable.

Pytanie 7

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

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

Pytanie 8

Jakiej opcji w edytorze grafiki rastrowej należy użyć, aby przygotować obraz do wyświetlenia na stronie w taki sposób, aby widoczna była tylko część znajdująca się w obrębie ramki?

Ilustracja do pytania
A. Odbicie
B. Kadrowanie
C. Skalowanie
D. Perspektywa
Kadrowanie to proces polegający na usuwaniu niechcianych części obrazu w celu skupienia uwagi na jego istotnych elementach. W kontekście przygotowywania rysunku do wyświetlenia na stronie internetowej, kadrowanie pozwala na wyeksponowanie tylko tych fragmentów grafiki, które mają być widoczne dla odbiorcy, jednocześnie usuwając zbędne tło czy elementy. Jest to technika szeroko stosowana w branży graficznej i fotograficznej, gdzie precyzyjne dostosowanie kompozycji wizualnej ma kluczowe znaczenie dla estetyki oraz komunikacji wizualnej. Kadrowanie wspiera także optymalizację plików graficznych, redukując ich rozmiar i poprawiając czas ładowania strony. W edytorach grafiki rastrowej, takich jak Adobe Photoshop czy GIMP, kadrowanie jest intuicyjnym narzędziem, które pozwala na szybkie i efektywne dostosowanie kadru do wymogów projektu. Dobre praktyki branżowe zalecają regularne kadrowanie w celu zwiększenia czytelności i nadania profesjonalnego wyglądu materiałom wizualnym. Poprawnie wykadrowany obraz nie tylko poprawia estetykę, ale również może wpłynąć na przekaz oraz zaangażowanie użytkowników. Wybór właściwych proporcji i skali podczas kadrowania jest istotny dla uzyskania spójnego i harmonijnego efektu końcowego, który będzie zgodny z założeniami projektu oraz oczekiwaniami odbiorcy.

Pytanie 9

Jak czyta się po angielsku znak @?

A. monkey
B. on
C. ape
D. at
Znak @ czyta się po angielsku „at” (czyli „przy/na”) - stąd w adresach e-mail jan@firma.pl mówi się „jan AT firma”. Po polsku popularnie nazywa się go „małpą”. Dlatego po angielsku to „at”.

Pytanie 10

Tworząc tabelę produkty, dla pola „cena” (kwota z groszami) najlepszy typ danych to:

A.
TINYTEXT
B.
ENUM
C.
DECIMAL(10, 2)
D.
INTEGER(11)
Pozostałe typy nie nadają się do dokładnej kwoty. ENUM pozwala wybrać jedną z wcześniej zdefiniowanych wartości tekstowych - nie służy do liczb ani cen. INTEGER przechowuje wyłącznie liczby całkowite, więc nie zapisze groszy (części po przecinku). TINYTEXT to typ tekstowy - kwota zapisana jako tekst utrudniałaby obliczenia i sortowanie po wartości. Dokładną cenę z groszami przechowuje DECIMAL(10, 2), dlatego ta odpowiedź jest poprawna.

Pytanie 11

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

A. metody window.alert()
B. własności innerHTML
C. metody document.write()
D. funkcji MessageBox()
W kontekście JavaScriptu w przeglądarce kluczowe jest rozumienie, jakie dokładnie narzędzia udostępnia środowisko uruchomieniowe, a jakie pochodzą z innych technologii czy języków. Częsty błąd polega na mieszaniu pojęć z różnych platform: ktoś programował kiedyś w C#, Delphi czy nawet w jakimś starszym systemie okienkowym i automatycznie zakłada, że funkcja MessageBox() będzie także dostępna w JavaScripcie. Tymczasem standardowe API przeglądarki definiuje inne mechanizmy do wyświetlania komunikatów.

Właściwość innerHTML jest elementem DOM i absolutnie można za jej pomocą „wypisać” tekst na stronie. W praktyce sprowadza się to do modyfikacji zawartości konkretnego elementu HTML. Jeśli pobierzemy np. paragraf przez document.getElementById i ustawimy jego innerHTML na jakiś tekst, to użytkownik od razu zobaczy tę zmianę. Część osób myśli, że to coś „bardziej zaawansowanego” i nie traktuje tego jako zwykłego wypisywania, ale w realnych projektach właśnie tak się pokazuje dane: wyniki obliczeń, komunikaty, odpowiedzi z serwera itp.

Metoda window.alert() jest prostym, ale w pełni poprawnym sposobem wyświetlania tekstu. Nie umieszcza treści w strukturze HTML, tylko pokazuje systemowe okienko dialogowe. Nadal jednak jest to forma prezentacji tekstu użytkownikowi, więc jak najbardziej spełnia definicję „wypisania tekstu” w kontekście zadania. Błędne przekonanie, że „prawdziwe” wypisywanie to tylko coś, co pojawia się w treści strony, jest po prostu zbyt wąskim podejściem.

Document.write() z kolei jest mechanizmem historycznym, ale technicznie pozwala wstrzyknąć tekst do dokumentu podczas jego ładowania. W wielu nowych materiałach odradza się jego używanie, ponieważ utrudnia utrzymanie kodu i może nadpisać zawartość strony po załadowaniu, jednak to nie zmienia faktu, że tekst jest nim realnie wypisywany. Mylenie „złej praktyki” z „brakiem możliwości” to kolejny typowy błąd.

Funkcja MessageBox() nie jest częścią standardowego API JavaScriptu w przeglądarce. Jeżeli nie zdefiniujemy jej sami w kodzie, interpreter zgłosi błąd. Właśnie dlatego to ona jest jedynym poprawnym wyborem jako mechanizm, którego nie da się użyć do wypisania tekstu w typowym środowisku webowym. Dobrą praktyką jest zawsze sprawdzanie dokumentacji konkretnego języka i platformy, a nie opieranie się na intuicji wyniesionej z innych technologii.

Pytanie 12

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

A. Inwersja.
B. Barwienie.
C. Progowanie.
D. Krzywe.
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 13

Rodzaj zmiennej w języku JavaScript

A. ma miejsce poprzez przypisanie wartości.
B. nie istnieje.
C. jest tylko jeden rodzaj.
D. musi być zadeklarowany na początku skryptu.
W języku JavaScript typ zmiennej jest dynamicznie określany na podstawie wartości przypisanej do tej zmiennej. Oznacza to, że nie ma potrzeby deklarowania typu zmiennej przed jej użyciem. Na przykład, możemy stworzyć zmienną 'x' i przypisać jej wartość liczbową: 'let x = 10;'. W późniejszym czasie możemy przypisać do niej wartość tekstową: 'x = 'Hello!';' bez jakichkolwiek błędów. To zjawisko wpisuje się w koncepcję typowania dynamicznego, która jest cechą języków takich jak JavaScript. Dzięki temu programiści mogą pisać bardziej elastyczny kod, co jest szczególnie przydatne w projektach, gdzie wymagania mogą się szybko zmieniać. Praktyczne zastosowanie tego podejścia w JavaScript pozwala na tworzenie funkcji, które mogą przyjmować różne typy danych, co zwiększa ich uniwersalność i użyteczność. Warto również zauważyć, że dobrym zwyczajem jest stosowanie odpowiednich konwencji nazw zmiennych oraz ich dokumentowanie, aby zwiększyć czytelność kodu w projektach zespołowych.

Pytanie 14

Aby pobrać dane (rekordy) z tabeli w bazie danych, należy użyć polecenia:

A.
CREATE
B.
SELECT
C.
INSERT
D.
GRANT
Do pobierania danych z tabel służy polecenie SELECT. Wskazuje się w nim kolumny i tabelę, a opcjonalnie warunki (WHERE), sortowanie (ORDER BY) czy złączenia. Przykładowo SELECT imie, nazwisko FROM klienci zwróci wybrane kolumny wszystkich klientów. To najczęściej używane zapytanie w pracy z bazą. Dlatego do odczytu rekordów z tabeli stosuje się SELECT.

Pytanie 15

W języku CSS zdefiniowano style dla znacznika h1 zgodnie z podanym wzorem. Przy założeniu, że żadne inne style nie są zastosowane do znacznika h1, wskaż właściwy sposób stylizacji tego elementu

Ilustracja do pytania
A. D
B. B
C. A
D. C
Odpowiedź C jest prawidłowa, ponieważ zastosowane style CSS poprawnie odzwierciedlają zasady formatowania zdefiniowane w pytaniu. Styl font-style: oblique; powoduje, że tekst jest pochylony, ale nie jest to zwykła kursywa używana w normalnym tekście. Oblique jest bardziej subtelne i mniej formalne. Font-variant: small-caps; przekształca małe litery w małe kapitaliki, co nadaje tekstowi bardziej formalny i elegancki wygląd. Jest to użyteczne w nagłówkach, które często wymagają wyrazistości i czytelności. Text-align: right; wyrównuje tekst do prawej, co może być stosowane do tworzenia asymetrycznych, nowoczesnych projektów stron internetowych. Takie formatowanie stosowane jest dla zwiększenia czytelności lub dostosowania tekstu do innych elementów strony. Właściwe stosowanie CSS pozwala na pełne kontrolowanie wyglądu i prezentacji treści, co jest kluczowe w profesjonalnym tworzeniu stron internetowych. Przykładowo, użycie oblique i small-caps może być stosowane w projektach graficznych, takich jak logotypy, gdzie pożądany jest specyficzny styl wizualny. Dobre praktyki w CSS to unikanie nadmiernego użycia stylów, które mogą wpłynąć negatywnie na dostępność i użyteczność strony. W tym kontekście, wybrane style są skutecznie zastosowane, zapewniając zarówno estetykę, jak i funkcjonalność.

Pytanie 16

Które zdarzenie JavaScript zachodzi, gdy kursor myszy znajdzie się nad elementem, do którego jest przypisane?

A.
onmouseup
B.
onmousedown
C.
onmouseover
D.
onmouseout
Zdarzenie onmouseover jest wyzwalane w chwili, gdy kursor myszy najedzie na element, do którego je przypisano - wykorzystuje się je np. do podświetlania elementów czy wyświetlania podpowiedzi. Parą do niego jest onmouseout, zachodzące przy opuszczeniu elementu. Inne zdarzenia myszy dotyczą klikania: onmousedown (naciśnięcie) i onmouseup (zwolnienie). Dlatego najechanie kursorem obsługuje onmouseover.

Pytanie 17

W językach programowania o układzie strukturalnym, aby przechować dane o 50 uczniach (ich imionach, nazwiskach oraz średniej ocen), konieczne jest zastosowanie

A. tablicy z 50 elementami o składowych strukturalnych
B. struktury z 50 elementami o składowych typu tablicowego
C. tablicy z 50 elementami o składowych typu łańcuchowego
D. klasy z 50 elementami typu tablicowego
Wybór tablicy 50 elementów o składowych strukturalnych jest prawidłowy ze względu na potrzebę przechowywania złożonych danych o uczniach. W tym przypadku, każdy element tablicy powinien reprezentować jednego ucznia i zawierać jego imię, nazwisko oraz średnią ocen. Struktura danych, taka jak struktura, pozwala na grupowanie różnych typów danych w jeden obiekt, co jest zgodne z dobrymi praktykami programowania w językach strukturalnych. Przykładowo, w języku C można zadeklarować strukturę dla ucznia w następujący sposób: `struct Uczen { char imie[50]; char nazwisko[50]; float srednia; };`. Następnie można utworzyć tablicę 50 elementów tej struktury: `struct Uczen uczniowie[50];`. Stosowanie struktur w tym kontekście ułatwia zarządzanie danymi i zwiększa czytelność kodu, co jest szczególnie ważne w przypadku projektów wymagających łatwego dostępu do różnych atrybutów obiektów. Używanie dobrze zdefiniowanych struktur danych jest zgodne z zasadami programowania obiektowego, nawet w językach proceduralnych, i przyczynia się do lepszej organizacji kodu oraz jego skalowalności.

Pytanie 18

W bazie danych znajduje się tabela ksiazki, która zawiera pola: tytul, id_autora, data_wypoz oraz id_czytelnika. Co dzień generowany jest raport dotyczący książek wypożyczonych w danym dniu, który prezentuje tylko tytuły książek. Która z poniższych kwerend SQL będzie odpowiednia do utworzenia tego raportu?

A. SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE()
B. SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATE_NT_E()
C. SELECT * FROM ksiazki
D. SELECT tytul FROM ksiazki
Wybrana kwerenda SQL, czyli 'SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE();', jest poprawna, ponieważ precyzyjnie spełnia wymagania zadania. Kwerenda ta wybiera jedynie tytuły książek z tabeli 'ksiazki', które zostały wypożyczone w dniu, który odpowiada bieżącej dacie. Funkcja 'CURRENT_DATE()' zwraca datę systemową w formacie YYYY-MM-DD, co pozwala na prawidłowe porównanie z polem 'data_wypoz'. Takie podejście jest zgodne z dobrymi praktykami w zakresie analizy baz danych, gdzie minimalizowanie liczby zwracanych danych do niezbędnego minimum znacząco poprawia wydajność zapytań. W praktyce, taka kwerenda może być przydatna w systemach bibliotek, które generują codzienne raporty wypożyczeń, umożliwiając bibliotekarzom szybki dostęp do informacji o książkach, które były popularne danego dnia. Warto także pamiętać o możliwości używania dodatkowych filtrów, na przykład według konkretnego czytelnika, co zwiększa funkcjonalność raportu.

Pytanie 19

Poniższy fragment kodu w PHP wyświetli

$n = '[email protected]';
$dl = strlen($n);
$i = 0;
while($i < $dl && $n[$i] != '@')
{
    echo $n[$i];
    $i++;
}
A. samą nazwę domeny, czyli "host.pl"
B. nazwa konta z symbolem @, czyli "adres@"
C. cały adres e-mail, czyli "[email protected]"
D. tylko nazwę konta, czyli "adres"
Powyższy fragment kodu w języku PHP ma za zadanie wyodrębnić i wypisać nazwę konta z adresu e-mail. Kod definiuje ciąg znaków zawierający pełny adres e-mail i używa pętli while do iteracji przez każdy znak tego ciągu aż do napotkania znaku '@'. Pętla while działa, dopóki indeks i jest mniejszy niż długość ciągu $n oraz bieżący znak $n[$i] nie jest '@'. W każdej iteracji echo wypisuje bieżący znak, a zmienna i jest inkrementowana. Dzięki temu kod wypisuje wszystkie znaki przed '@', co w tym przypadku jest nazwą konta 'adres'. Takie podejście jest powszechnie stosowane w podstawowym przetwarzaniu tekstu, gdzie potrzebna jest iteracja przez ciąg znaków. W praktyce, w aplikacjach webowych, takie operacje są często wykonywane na danych wejściowych użytkownika, aby wyodrębnić specyficzne części danych, takie jak nazwa użytkownika z e-maila. Jest to również zgodne z zasadami przetwarzania stringów w PHP, gdzie manipulacja tekstem odbywa się z wykorzystaniem indeksów i pętli.

Pytanie 20

W języku JavaScript wartość typu boolean może być przedstawiana przez

A. 45.3
B. true
C. null
D. –20
Typ boolean w języku JavaScript jest jednym z podstawowych typów danych, reprezentującym jedynie dwie możliwe wartości: true (prawda) oraz false (fałsz). Typ ten jest kluczowy w programowaniu, umożliwiając tworzenie warunków oraz podejmowanie decyzji w kodzie. W praktyce, boolean jest wykorzystywany w instrukcjach warunkowych, takich jak if, gdzie wyrażenia zwracające wartość logiczną decydują o dalszym przebiegu programu. Na przykład, wyrażenie 'if (x > 10)' zwraca true, jeśli x jest większe od 10, i false w przeciwnym razie. JavaScript, zgodnie ze specyfikacją ECMA-262, nie tylko definiuje typ boolean, ale również określa sposób konwersji innych typów danych na boolean. Funkcje takie jak Boolean() oraz operatory logiczne (&&, ||, !) są używane do uzyskania wartości boolean z innych typów. Warto również zauważyć, że JavaScript stosuje tzw. "truthy" i "falsy" wartości, co oznacza, że niemal każdy typ danych może być interpretowany jako boolean w kontekście warunków, jednak tylko true i false są typowymi wartościami tego typu. Zrozumienie działania typu boolean jest fundamentalne dla programistów, umożliwiając skuteczne kontrolowanie przepływu programu oraz implementację logiki decyzyjnej."

Pytanie 21

Jaką wartość zwróci ten algorytm?

Z = 0
N = 1
dopóki Z < 3:
    N = N * 2 + 1
    Z = Z + 1
wypisz N
A. 3
B. 7
C. 15
D. 5
Zrozumienie działania tego algorytmu jest kluczowe dla programowania i matematyki obliczeniowej. Algorytm ten wykorzystuje pętlę 'dopóki', która wykonuje operacje na dwóch zmiennych: Z i N. Na początku Z jest równe 0, a N jest równe 1. Pętla trwa dopóki Z jest mniejsze od 3. W każdej iteracji pętli zmienna N jest aktualizowana zgodnie z wyrażeniem N = N * 2 + 1 oraz Z jest zwiększane o 1. Przy pierwszej iteracji Z wynosi 0, więc N staje się 1 * 2 + 1 = 3, a Z zostaje zwiększone do 1. W drugiej iteracji Z wynosi 1, więc N staje się 3 * 2 + 1 = 7, a Z wynosi 2. W trzeciej iteracji Z wynosi 2, dlatego N staje się 7 * 2 + 1 = 15, a Z zostaje zwiększone do 3, co kończy pętlę. W rezultacie, gdy algorytm kończy działanie, zmienna N ma wartość 15, która zostaje wypisana. To podejście jest zgodne z dobrymi praktykami w pisaniu algorytmów, gdzie dbałość o zrozumienie pętli i operacji na zmiennych jest fundamentalna dla tworzenia wydajnych programów.

Pytanie 22

Kolor zapisany w notacji szesnastkowej #0000FF to:

A. czerwony
B. zielony
C. niebieski
D. czarny
Zapis szesnastkowy koloru ma postać #RRGGBB, gdzie każda para cyfr (00-FF) to składowa: czerwona, zielona i niebieska. W #0000FF składowe R i G są zerowe (00), a niebieska maksymalna (FF = 255), więc powstaje czysty niebieski. To odpowiednik zapisu rgb(0, 0, 255). Znajomość skrajnych wartości (00 i FF) pozwala szybko rozpoznać kolory podstawowe. Dlatego #0000FF to niebieski.

Pytanie 23

Która praktyka ZWIĘKSZA czytelność kodu źródłowego?

A. nadawanie zmiennym jednoliterowych nazw
B. pisanie jak najdłuższych linii w jednym wierszu
C. stosowanie wcięć i opisowych nazw zmiennych
D. unikanie jakichkolwiek komentarzy
Czytelność kodu najbardziej poprawiają WCIĘCIA (pokazujące strukturę bloków) oraz OPISOWE nazwy zmiennych i funkcji, z których od razu wynika ich rola. Dzięki temu kod łatwiej zrozumieć i utrzymać. Dlatego czytelność zwiększa stosowanie wcięć i opisowych nazw.

Pytanie 24

Tablica tab[] jest wypełniona losowymi liczbami całkowitymi. Jaka będzie wartość zmiennej zm2 po wykonaniu poniższego fragmentu kodu?

int tab[10];
int zm1 = 0;
double zm2 = 0;

for (int i=0; i < 10; i++)
{
    zm1 = zm1 + tab[i];
}
zm2 = zm1 / 10;
A. Suma liczb od 1 do 10
B. Średnia geometryczna liczb od 0 do 9
C. Suma elementów z tablicy
D. Średnia arytmetyczna liczb z tablicy
W tym kodzie fajnie widać, jak oblicza się średnią arytmetyczną z liczb w tablicy tab[]. Na początku ustawiamy zmienne zm1 i zm2 na 0, co jest spoko, bo potem w pętli for dodajemy wszystkie liczby z tablicy do zm1. Gdy pętla się kończy, zm1 zbiera całą sumę liczb, a żeby dostać średnią, dzielimy ją przez 10, bo tyle mamy elementów. Wynik przypisujemy do zm2. To bardzo przydatny proces w programowaniu – średnie są często używane w analizie danych czy obliczeniach wyników. Pamiętaj jednak, żeby nie zapomnieć o możliwych błędach dzielenia przez zero. Dobrze jest sprawdzić, czy tablica nie jest pusta, aby uniknąć kłopotów. I jeszcze jedna rzecz – używanie typu double dla zmiennej zm2 to dobry pomysł, żeby średnia była dokładna, zwłaszcza gdy mowa o liczbach, które nie są całkowite. To wszystko jest zgodne z dobrymi praktykami w IT.

Pytanie 25

Jaką wartość zwróci funkcja napisana w języku C++, gdy jej argumentami są a = 4 i b = 3?

long int fun1(int a, int b) {
    long int wynik = 1;
    for (int i = 0; i < b; i++)
        wynik *= a;
    return wynik;
}
A. 64
B. 16
C. 1
D. 12
Funkcja fun1 jest przykładem implementacji potęgowania w języku C++. Przyjmuje dwa argumenty: a i b, gdzie a to podstawa, a b to wykładnik. W zmiennej wynik początkowo ustalamy wartość 1. W pętli for, która wykonuje się b razy, wartość a jest mnożona przez wynik. W przypadku przekazania a = 4 oraz b = 3, pętla wykonuje się trzy razy. Przy pierwszym przejściu wynik to 1 * 4 = 4, przy drugim 4 * 4 = 16, a przy trzecim 16 * 4 = 64. W rezultacie funkcja zwraca 64, co odpowiada 4^3. Takie podejście jest typowe w programowaniu, gdzie operacje są wykonywane w pętli, co jest zgodne z zasadami efektywności i prostoty kodu. W praktycznych zastosowaniach, takie funkcje są często wykorzystywane w algorytmach matematycznych, w modelowaniu zjawisk fizycznych czy w obliczeniach finansowych, gdzie potęgowanie jest niezbędne. Zrozumienie tego mechanizmu umożliwia kreatywne rozwiązywanie problemów programistycznych oraz pisanie bardziej zaawansowanych aplikacji.

Pytanie 26

Jakie zapytanie należy użyć, aby wyświetlić tylko imię, nazwisko oraz ulicę wszystkich mieszkańców?

Ilustracja do pytania
A. SELECT * FROM Mieszkancy, Adresy ON Mieszkancy.id = Adresy.id
B. SELECT imie, nazwisko, ulica FROM Mieszkancy JOIN Adresy ON Mieszkancy.Adresy_id = Adresy.id
C. SELECT imie, nazwisko, ulica FROM Mieszkancy, Adresy ON Mieszkancy.Adresy_id = Adresy.id
D. SELECT * FROM Mieszkancy JOIN Adresy ON Adresy.id = Mieszkancy.Adresy.id
Odpowiedź SELECT imie nazwisko ulica FROM Mieszkancy JOIN Adresy ON Mieszkancy.Adresy_id = Adresy.id jest trafna, bo korzysta z dobrej składni dołączenia tabel w SQL. Dzięki temu wyciągasz tylko te kolumny, które są Ci potrzebne. W tym przypadku, używając JOIN, łączysz tabele Mieszkancy i Adresy na podstawie odpowiednich kluczy, co dobrze odpowiada zasadom baz danych. Klucz obcy Adresy_id w tabeli Mieszkancy wskazuje na id w tabeli Adresy, co jest super ważne, bo zapewnia, że dane są spójne. To zapytanie pokazuje, jak optymalizować SQL, bo ogranicza wybór do niezbędnych kolumn (imie, nazwisko, ulica), co zmniejsza obciążenie bazy i przyspiesza wyrzucanie wyników. W praktyce takie podejście jest fajne do efektywnego zarządzania danymi w relacyjnych bazach. Dobrze jest mieć w głowie, jak używać JOIN oraz wybierać konkretne kolumny, bo to naprawdę pomaga w pisaniu bardziej zrozumiałych i wydajnych zapytań, co jest przydatne w pracy zawodowej.

Pytanie 27

Dla jakich nazwisk użyta w zapytaniu klauzula LIKE jest poprawna?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Krzysztof, Krystyna, Romuald
B. Arleta, Krzysztof, Krystyna, Tristan
C. Gerald, Jarosław, Marek, Tamara
D. Rafał, Rebeka, Renata, Roksana
Prawidłowa odpowiedź Arleta Krzysztof Krystyna Tristan jest zgodna z klauzulą LIKE w języku SQL która pozwala na wyszukiwanie wzorców w danych tekstowych W zapytaniu użyto wzorca '_r%' gdzie podkreślenie oznacza dowolny pojedynczy znak a procent dowolną liczbę znaków W tym przypadku imiona muszą mieć 'r' jako drugi znak co jest spełnione dla Arleta Krzysztof Krystyna i Tristan Klauzula LIKE jest często używana w aplikacjach bazodanowych do filtrowania danych tekstowych na przykład w systemach zarządzania klientami gdzie można wyszukiwać nazwiska klientów zaczynające się na określoną literę Dobre praktyki zalecają ostrożne używanie wzorców które mogą prowadzić do pełnych skanów tabel co wpływa na wydajność Indeksowanie kolumn może poprawić szybkość zapytań LIKE jednak należy unikać wzorców zaczynających się od symbolu procenta gdyż pomijają indeksy Warto zrozumieć że LIKE jest potężnym narzędziem w SQL które może znacznie ułatwić pracę z tekstem jednak wymaga ono przemyślanego użycia by nie pogorszyć wydajności bazy danych

Pytanie 28

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

A. <p class="akapit">akapit4</p>
B. <p id="akapit">akapit2</p>
C. <p>akapit</p>
D. <p href="/akapit">akapit3</p>
Metoda getElementsByClassName('akapit') w JavaScript jest metodą DOM, która zwraca kolekcję wszystkich elementów w dokumencie HTML, które mają przypisaną określoną klasę. W tym przypadku interesuje nas klasa 'akapit'. Poprawna odpowiedź to <p class="akapit">akapit4</p>, ponieważ ten akapit ma atrybut class ustawiony na 'akapit'. Zastosowanie klasy w HTML jest zgodne z najlepszymi praktykami programistycznymi, ponieważ pozwala na łatwe stylowanie i manipulowanie grupą elementów za pomocą CSS i JavaScript. Na przykład, jeśli chcemy zmienić kolor tekstu wszystkich akapitów z klasą 'akapit', możemy to zrobić jednym poleceniem w CSS: .akapit { color: red; }. Ponadto, metoda getElementsByClassName zwraca tzw. HTMLCollection, co oznacza, że możemy iterować po tej kolekcji i modyfikować jej elementy. Użycie klas w ten sposób wspiera zasadę separacji treści od prezentacji, co jest kluczowe w nowoczesnym podejściu do tworzenia stron internetowych.

Pytanie 29

W języku PHP wykorzystano funkcję

is_float()
. Które z poniższych wywołań tej funkcji zwróci rezultat true?
A. is_float(NULL)
B. is_float(334)
C. is_float(3.34)
D. is_float('3,34')
Zrozumienie, co dokładnie zwraca funkcja is_float(), jest bardzo ważne, jeśli chce się dobrze pracować z typami danych w PHP. Na przykład, jak wpiszesz is_float(334), to dostaniesz false, bo 334 to liczba całkowita, a nie zmiennoprzecinkowa. To może być mylące, bo nie każdy wie, że float to coś konkretnego. Podobnie jest z is_float(NULL) - zwraca false, bo NULL to jakby brak wartości, a nie liczba. Jeszcze jedno – jakbyś wywołał is_float('3,34'), to też dostaniesz false, bo PHP nie rozpozna tego jako float; to traktuje jako tekst. PHP nie konwertuje automatycznie tekstu na float, zwłaszcza jak używasz przecinka, zamiast kropki. Te błędy często biorą się stąd, że ludzie myślą, że PHP sam zrozumie, co mają na myśli. Dlatego warto ogarnąć, jak działa typowanie w PHP i jak używać funkcji tych sprawdzających typy, jak is_float(). Dzięki temu twój kod będzie bardziej stabilny i unikniesz błędów przy jego działaniu.

Pytanie 30

Którą funkcją PHP zamienić "ala ma psa" na "ALA MA PSA"?

A.
ucfirst("ala ma psa");
B.
strtolower("ala ma psa");
C.
strtoupper("ala ma psa");
D.
strstr("ala ma psa");
Aby zamienić wszystkie litery napisu na WIELKIE, używa się strtoupper(), więc strtoupper("ala ma psa") zwróci „ALA MA PSA”. Funkcja przetwarza cały ciąg, a nie tylko pierwszą literę. Dlatego poprawna jest strtoupper().

Pytanie 31

Jakie środowisko jest wymagane do uruchomienia systemu CMS Joomla! (domyślna konfiguracja)?

A. Python i MySQL
B. IIS, Perl i MySQL
C. Apache, PHP i MySQL
D. C++ i MySQL
Joomla! w domyślnej konfiguracji to aplikacja PHP korzystająca z bazy MySQL, uruchamiana na serwerze Apache - czyli klasyczny stos Apache + PHP + MySQL (LAMP/WAMP). Dlatego wymagane jest środowisko Apache, PHP i MySQL.

Pytanie 32

Jaki będzie efekt wykonania poniższego kodu JavaScript?

var akapit = document.createElement("p");
document.body.appendChild(akapit);
A. Pokazanie okna dialogowego z napisem akapit
B. Wstawienie akapitu na szczycie strony
C. Dodanie akapitu na końcu strony
D. Skasowanie akapitu ze strony
Zrozumienie dlaczego niektóre odpowiedzi są błędne wymaga analizy działania metod JavaScriptowych w kontekście modelu DOM. Pierwsza odpowiedź wskazuje na usunięcie akapitu ze strony co nie jest zgodne z działaniem zaprezentowanego kodu ponieważ metoda document.createElement tworzy nowy element a nie usuwa istniejący. Usunięcie elementu zamiast tego można osiągnąć za pomocą metody removeChild która wymaga wskazania konkretnego elementu do usunięcia. Druga odpowiedź sugeruje dodanie akapitu na początku strony co również jest niepoprawne. Metoda appendChild zawsze dodaje element na koniec wskazanego rodzica czyli w tym przypadku dokumentu body. Aby dodać element na początku strony należałoby użyć metody insertBefore w połączeniu z odwołaniem do pierwszego dziecka body. Trzecia odpowiedź mówi o wyświetleniu okna dialogowego co jest błędem konceptualnym gdyż omawiany kod nie zawiera żadnej funkcji wyświetlającej alert czy prompt. Tworzenie i manipulowanie elementami DOM nie wpływa bezpośrednio na interakcje dialogowe z użytkownikiem. Aby wyświetlić okno dialogowe używa się zazwyczaj metod takich jak alert confirm czy prompt co nie ma miejsca w podanym fragmencie kodu. Analizując te odpowiedzi zauważamy że błędne rozumowanie może wynikać z mylenia funkcji manipulujących DOM z elementami interfejsu użytkownika co jest częstym błędem wśród początkujących programistów. Znajomość specyfiki oraz kontekstu użycia poszczególnych metod jest kluczowa dla poprawnego kodowania w JavaScript i efektywnego zarządzania treścią na stronie internetowej.

Pytanie 33

Z tabeli mieszkańcy należy uzyskać unikalne nazwy miejscowości, do czego konieczne jest użycie wyrażenia SQL z klauzulą

A. CHECK
B. DISTINCT
C. HAVING
D. UNIQUE
Odpowiedź 'DISTINCT' jest poprawna, ponieważ w SQL służy do eliminowania powtórzeń w wynikach zapytań. Użycie klauzuli DISTINCT pozwala na zwrócenie jedynie unikalnych wartości z danej kolumny, co jest idealne w sytuacjach, gdy chcemy uzyskać listę miast, w których mieszkają osoby z tabeli 'mieszkańcy'. Na przykład, zapytanie 'SELECT DISTINCT miasto FROM mieszkańcy;' zwróci wszystkie różne miasta, w których zamieszkują mieszkańcy, eliminując duplikaty. W praktyce, klauzula DISTINCT jest często stosowana w raportach oraz analityce danych, gdzie istotne jest zrozumienie rozkładu unikalnych wartości. Warto również zauważyć, że DISTINCT może być używane w połączeniu z innymi klauzulami SQL, takimi jak WHERE, aby jeszcze bardziej zawęzić wyniki. Przykład użycia: 'SELECT DISTINCT miasto FROM mieszkańcy WHERE kraj = 'Polska';'. Dobrą praktyką jest stosowanie DISTINCT w sytuacjach, gdy zarządzamy dużymi zbiorami danych, aby zapewnić ich przejrzystość i uniknąć nadmiarowych informacji.

Pytanie 34

Jakie typy danych w C++ są używane do reprezentacji liczb rzeczywistych?

A. float oraz long
B. float oraz double
C. double oraz short
D. double oraz bool
Wybierając odpowiedzi takie jak 'double i short', 'double i bool', czy 'float i long', można napotkać na nieporozumienia dotyczące typów danych w C++. Typ 'short' jest typem całkowitym, przeznaczonym do przechowywania liczb całkowitych o mniejszych wartościach, a zatem nie ma zastosowania w kontekście liczb rzeczywistych. Typ 'bool' również nie ma nic wspólnego z liczbami rzeczywistymi, gdyż reprezentuje jedynie wartości logiczne: prawda (true) lub fałsz (false). Z kolei 'long', podobnie jak 'short', jest typem całkowitym, który jest używany do reprezentowania dużych wartości liczbowych, ale także nie mieści się w kategorii liczb rzeczywistych. Zrozumienie, że liczby rzeczywiste w C++ są reprezentowane wyłącznie przez typy 'float' i 'double', jest kluczowe dla efektywnego programowania. Używanie niewłaściwych typów danych może prowadzić do błędów w obliczeniach, takich jak zaokrąglenia, a także do problemów z pamięcią oraz wydajnością aplikacji. Dlatego ważne jest, aby przy wyborze typów danych kierować się ich specyfiką oraz zastosowaniami, co jest zgodne z najlepszymi praktykami programistycznymi.

Pytanie 35

Po zrealizowaniu polecenia SQL użytkownik Ela zyska możliwość wykorzystania poniższych uprawnień:

GRANT SELECT, INSERT, UPDATE, DELETE ON baza1.tab1 TO 'Ela'@'localhost';
A. tylko dodawać oraz zmieniać dane
B. tylko tworzyć i zmieniać strukturę tabeli
C. realizować wszystkie działania na strukturze danych
D. przeprowadzać wszystkie operacje na danych
Poprawna odpowiedź to możliwość wykonywania wszystkich akcji na danych przyznanych przez polecenie GRANT. W kontekście SQL, uprawnienia SELECT, INSERT, UPDATE oraz DELETE dają użytkownikowi pełną kontrolę nad danymi w tabeli. Dzięki uprawnieniu SELECT użytkownik może przeglądać dane, a INSERT umożliwia dodawanie nowych rekordów. Z kolei UPDATE pozwala na modyfikację istniejących danych, natomiast DELETE umożliwia ich usunięcie. Przykładowo, jeśli użytkownik Ela chce prowadzić analizy danych, korzystając z SELECT, a następnie wprowadzać poprawki lub dodawać nowe dane, polecenie to daje jej odpowiednie narzędzia do ich realizacji. W praktyce, wydawanie uprawnień dla użytkowników w bazach danych powinno być zgodne z zasadą minimalnych uprawnień, co oznacza, że użytkownicy powinni otrzymywać tylko te uprawnienia, które są konieczne do wykonywania ich zadań. Dzięki temu zwiększa się bezpieczeństwo bazy danych i zmniejsza ryzyko nieautoryzowanego dostępu.

Pytanie 36

Jednym z typów testów jednostkowych jest analiza tras, która polega na

A. utworzeniu kilku zbiorów danych o zbliżonym sposobie przetwarzania i wykorzystaniu ich do przeprowadzenia testu
B. określeniu punktu startowego i końcowego oraz badaniu dostępnych ścieżek pomiędzy tymi punktami
C. testowaniu wartości granicznych zestawu danych
D. testowaniu obiektów pod kątem inicjalizacji oraz zwolnienia zarezerwowanej pamięci
W analizie ścieżek w testach jednostkowych chodzi o to, by wyznaczyć, skąd zaczyna się działanie programu i gdzie kończy, a następnie sprawdzić, jakie ścieżki można pomiędzy tymi punktami przejść. Dzięki temu można znaleźć wszystkie możliwe drogi, którymi program może podążać. To ważna metoda, bo pozwala ocenić, czy logika w naszym kodzie działa tak, jak powinna oraz czy przetestowaliśmy wszystkie scenariusze, które mogą się zdarzyć. Na przykład, gdy mamy w kodzie dużo warunków i pętli, analiza ścieżek może ujawnić błędy, które nie wyjdą przy zwykłym testowaniu. W inżynierii oprogramowania to jest naprawdę dobra praktyka, bo upewniamy się, że wszystkie ścieżki zostały sprawdzone, co na pewno wpływa na jakość i stabilność naszego programu.

Pytanie 37

char str1[30] = 'Ala ma kota';
printf("%s", str1);
Wskaż, gdzie tkwi błąd w powyższym kodzie napisanym w języku C++?
A. Tekst powinien mieć dokładnie 30 znaków.
B. Do funkcji printf przekazano za mało argumentów.
C. Tekst powinien być zawarty w cudzysłowie.
D. W funkcji printf nie można używać formatowania %s.
Odpowiedź jest poprawna, ponieważ w języku C i C++, napisy muszą być ujęte w podwójne cudzysłowy, aby kompilator mógł je rozpoznać jako literały znakowe. W kodzie, który przedstawiono, użyto pojedynczych cudzysłowów, co jest niezgodne z regułami składniowymi tych języków. Poprawna definicja napisu powinna wyglądać następująco: char str1[30] = \"Ala ma kota\"; Ujęcie napisu w cudzysłowy pozwala na poprawne zainicjowanie tablicy typu char, co jest standardową praktyką w programowaniu w C/C++. Dzięki temu kompilator wie, że wszystkie znaki zawarte w cudzysłowie stanowią część jednego ciągu. Warto również zauważyć, że przy pracy z napisami w C, często używa się funkcji standardowych, takich jak strlen do obliczania długości napisu czy strcpy do kopiowania ciągów. Te funkcje są szeroko stosowane w praktyce i znajomość ich działania jest kluczowa dla efektywnego programowania. "

Pytanie 38

W języku JavaScript, element został uzyskany przy pomocy metody getElementById. Jaką właściwość należy zastosować, aby zmienić zawartość tego elementu?

A. innerHTML
B. HTML
C. Body
D. innerBody
Właściwość innerHTML jest kluczowym elementem w manipulacji DOM (Document Object Model) w JavaScript. Umożliwia ona programistom modyfikację zawartości HTML danego elementu. Po pobraniu elementu za pomocą metody getElementById, można zmienić jego wewnętrzną zawartość, przypisując nowy tekst lub kod HTML do innerHTML. Na przykład, jeśli mamy element o id 'example', jego zawartość można zmienić w ten sposób: document.getElementById('example').innerHTML = '<p>Nowa zawartość</p>'; To podejście jest powszechnie stosowane w dynamicznej aktualizacji treści stron internetowych, co jest szczególnie przydatne w aplikacjach jednostronicowych (SPA) oraz przy tworzeniu interaktywnych komponentów użytkownika. Warto również zauważyć, że używanie innerHTML wiąże się z pewnymi zagrożeniami, takimi jak wstrzykiwanie kodu (XSS), dlatego zawsze powinno się dbać o walidację i sanitację wprowadzanych danych. W praktyce, aby zwiększyć bezpieczeństwo aplikacji, można korzystać z innych metod manipulacji DOM, takich jak textContent lub createElement, które nie interpretują kodu HTML.

Pytanie 39

Jakie uprawnienia posiada użytkownik jan po wykonaniu poniższych poleceń na bazie danych?

GRANT ALL PRIVILEGES ON klienci TO jan;
REVOKE SELECT, INSERT, UPDATE, DELETE ON klienci FROM jan;
A. Będzie miał możliwość zmiany struktury tabeli klienci
B. Będzie miał możliwość wyszukiwania danych w tabeli klienci
C. Będzie miał możliwość wstawiania rekordów do tabeli klienci
D. Będzie miał możliwość usuwania rekordów z tabeli klienci
Odpowiedź jest poprawna, ponieważ po wykonaniu poleceń SQL użytkownik jan ma przyznane wszystkie uprawnienia do tabeli klienci, a następnie odebrano mu konkretne uprawnienia do wykonywania operacji SELECT, INSERT, UPDATE oraz DELETE. Oznacza to, że jedynym uprawnieniem, które pozostaje jemu po tych operacjach, jest możliwość zmiany struktury tabeli, co oznacza operacje takie jak ADD COLUMN czy DROP COLUMN. W praktyce, gdy przyznajemy użytkownikowi rolę, często stosujemy uprawnienia do wykonywania operacji DDL (Data Definition Language), które są niezbędne do modyfikacji schematu bazy danych. Odpowiedzi na pytania dotyczące uprawnień powinny uwzględniać kontekst celów administracyjnych, ponieważ różne role użytkowników mogą mieć różne poziomy dostępu. W związku z tym, zrozumienie systemu uprawnień w kontekście zarządzania bazą danych jest kluczowe, a dobrym standardem jest nadawanie użytkownikom tylko tych uprawnień, które są niezbędne do wykonywania ich zadań.

Pytanie 40

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

A. <?php ini_set(); ?>
B. <?php phpcredits(); ?>
C. <?php phpinfo(); ?>
D. <?php echo phpversion(); ?>
Odpowiedź <?php phpinfo(); ?> jest poprawna, ponieważ funkcja phpinfo() generuje szczegółowy raport na temat konfiguracji PHP, w tym informacje o zainstalowanych rozszerzeniach, wersji PHP, oraz ustawieniach w pliku php.ini. W praktyce, ta funkcja jest niezwykle przydatna przy diagnozowaniu problemów związanych z konfiguracją serwera, ponieważ dostarcza pełen wgląd w aktualne ustawienia środowiska, co pozwala na szybkie zidentyfikowanie ewentualnych niezgodności. Przykładem zastosowania może być sytuacja, w której programista chce sprawdzić, czy określone rozszerzenie PHP jest aktywne lub jakie są wartości domyślne dla różnych dyrektyw, takich jak memory_limit czy upload_max_filesize. Dobrą praktyką w sytuacjach produkcyjnych jest ograniczenie dostępu do skryptów wywołujących phpinfo(), aby nie ujawniać wrażliwych informacji o serwerze osobom nieupoważnionym. Myśląc o bezpieczeństwie aplikacji, warto usunąć takie skrypty po zakończeniu diagnostyki.