Teoria INF.03
0 / 0
Zanim zaczniesz

Teoria do egzaminu INF.03

Kurs przygotowuje do części pisemnej kwalifikacji INF.03 „Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych”. Przechodzi przez wszystkie działy, z których CKE układa pytania, i w każdym daje do rozwiązania prawdziwe pytania egzaminacyjne z objaśnieniami.

Jak wygląda część pisemna

40 pytańTest jednokrotnego wyboru: cztery odpowiedzi, jedna poprawna.
60 minutŚrednio półtorej minuty na pytanie. Wystarczy, jeśli nie utkniesz na jednym.
Próg 50%Do zdania potrzeba co najmniej 20 poprawnych odpowiedzi.
Na komputerzePytania pojawiają się na ekranie, odpowiedzi zaznacza się myszką.

Wynik części pisemnej to tylko połowa egzaminu. Część praktyczna (strona z HTML, CSS, JavaScriptem, PHP i bazą danych) ma osobny próg 75%. Teoria jednak bardzo pomaga w praktyce: te same znaczniki, właściwości CSS i polecenia SQL pojawiają się w obu częściach.

Z czego są pytania

Na podstawie ponad 2600 pytań z bazy egzaminacyjnej INF.03 widać, które działy pojawiają się najczęściej. Kolejność lekcji odpowiada mniej więcej ich wadze:

DziałLekcjeUdział w pytaniach
HTML i CSS1–6około 1/3
Bazy danych i SQL12–14około 1/4
PHP (także z MySQL)10–11około 1/7
JavaScript9około 1/8
Grafika i multimedia7–8około 1/10
Serwery, CMS, bezpieczeństwo, prawo15–16około 1/10
Algorytmy i podstawy informatyki17około 1/10

Jak korzystać z kursu

  • Przeczytaj lekcję. Ramki „Na egzaminie” pokazują pułapki, na które CKE łapie najczęściej.
  • Odpowiedz na pytania „Sprawdź się”. Są krótkie i dotyczą tylko tej lekcji.
  • Rozwiąż blok „Pytania z egzaminów CKE” na końcu lekcji. Po złej odpowiedzi zobaczysz objaśnienie, dlaczego poprawna jest inna. Możesz próbować do skutku: pytanie zalicza się, gdy trafisz.
  • Postęp widać w górnym pasku i przy każdej lekcji w spisie. Zapisuje się tylko w tej przeglądarce.
  • Na końcu rozwiąż egzamin próbny w pełnej bazie pytań INF.03: 40 losowych pytań, 60 minut.

Wskazówka. Na egzaminie najpierw odpowiedz na pytania, które znasz od razu. Do trudnych wróć na końcu. Nie zostawiaj pustych odpowiedzi, bo za błędną nie ma punktów ujemnych.

Lekcja 1 · HTML

Struktura dokumentu i podstawowe znaczniki

HTML opisuje treść strony: co jest nagłówkiem, co akapitem, co listą. Wygląd to zadanie CSS. Na egzaminie liczy się znajomość szkieletu dokumentu, roli poszczególnych znaczników i zasad poprawnego zapisu.

Szkielet dokumentu HTML5

HTML
<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Opis strony dla wyszukiwarek">
  <title>Tytuł na karcie przeglądarki</title>
  <link rel="stylesheet" href="styl.css">
</head>
<body>
  <h1>Widoczna treść strony</h1>
</body>
</html>
  • <!DOCTYPE html> mówi przeglądarce, że dokument jest w HTML5. To nie jest znacznik, tylko deklaracja typu dokumentu.
  • <head> zawiera informacje o stronie, których nie widać w treści: kodowanie, tytuł, opis, podpięte style i skrypty.
  • <title> wyświetla się na pasku tytułu (karcie) przeglądarki i w wynikach wyszukiwania.
  • <meta charset="UTF-8"> ustawia kodowanie znaków, dzięki czemu polskie litery wyświetlają się poprawnie.
  • <meta name="viewport"> sprawia, że strona dopasowuje się do szerokości ekranu telefonu.
  • <meta name="description"> to opis zawartości strony dla wyszukiwarek, a keywords to słowa kluczowe.

Na egzaminie. Pytanie „którego znacznika nie umieszcza się w <head>” ma zwykle jako odpowiedź znacznik treści, np. <h2>, <p> albo <img>. W sekcji head są tylko title, meta, link, style, script i base.

Znaczniki tekstu

ZnacznikZnaczenieWygląd domyślny
<h1> … <h6>nagłówki od najważniejszego do najmniej ważnegopogrubione, h1 największy
<p>akapitodstępy nad i pod
<br>złamanie linii (bez zamknięcia)nowa linia
<hr>pozioma linia, zmiana tematukreska
<strong> / <b>ważny tekst / tylko pogrubieniepogrubienie
<em> / <i>akcent / tylko kursywakursywa
<u>, <s>, <mark>podkreślenie, przekreślenie, zaznaczeniepodkreślony, przekreślony, żółte tło
<sub>, <sup>indeks dolny (H2O), górny (m2)mniejszy, przesunięty
<blockquote>, <q>cytat blokowy, cytat w tekściewcięcie, cudzysłów
<pre>, <code>tekst sformatowany (zachowuje spacje), kodczcionka o stałej szerokości

Na egzaminie. <strong> wygląda jak <b>, a <em> jak <i>. Różnica jest znaczeniowa: strong i em mówią, że tekst jest ważny, co odczytują czytniki ekranu i wyszukiwarki. Pogrubienie w CSS to font-weight: bold, kursywa to font-style: italic.

Elementy blokowe i liniowe

Elementy blokowe (div, p, h1–h6, ul, table, form, section) zaczynają się od nowej linii i zajmują całą szerokość. Elementy liniowe (span, a, img, strong, em, input) układają się w tekście jeden za drugim. <div> i <span> nic nie znaczą: to pojemniki, do których dopina się styl przez id albo class.

id musi być unikalny, czyli występować w dokumencie tylko raz. class można nadać wielu elementom, a jeden element może mieć kilka klas: class="ramka czerwona".

Znaczniki semantyczne HTML5

<header>nagłówek strony lub sekcji (logo, tytuł)
<nav>menu nawigacyjne
<main>główna, jedyna treść strony
<section>tematyczna część strony
<article>samodzielna treść: wpis, artykuł, komentarz
<aside>treść poboczna, panel boczny
<footer>stopka strony lub sekcji
<figure>, <figcaption>ilustracja z podpisem

Wyglądają jak zwykły div, ale mówią, czym jest dana część strony. Pomaga to wyszukiwarkom i osobom korzystającym z czytników ekranu.

Encje, czyli znaki specjalne

Znaki, które HTML traktuje jako składnię, trzeba zapisać encją: &lt; to <, &gt; to >, &amp; to &, &quot; to cudzysłów, &nbsp; to twarda spacja (nie łamie linii), &copy; to ©.

Walidacja

Walidacja to sprawdzenie zgodności kodu ze standardem, zwykle walidatorem W3C (validator.w3.org). Typowe błędy, które pokazuje:

  • niezamknięty znacznik albo zła kolejność zamykania: <p><b>tekst</p></b> (znaczniki zamyka się w odwrotnej kolejności niż otwiera),
  • brak cudzysłowu zamykającego wartość atrybutu,
  • brak atrybutu alt w <img>,
  • powtórzony id, znacznik blokowy wewnątrz <p>, znacznik w złej sekcji.

Na egzaminie. Walidacja nie sprawdza wyglądu ani działania strony, tylko poprawność zapisu. Do CSS jest osobny walidator, który wyłapie np. brak średnika albo nieistniejącą właściwość.

Który zapis może wystąpić w poprawnym dokumencie HTML tylko jeden raz?

  1. <div class="menu">
  2. <div>
  3. <div id="menu">
  4. <div style="color:red">

Gdzie będzie widoczny tekst zapisany w <title>?

  1. jako największy nagłówek na stronie
  2. na karcie (pasku tytułu) przeglądarki
  3. w stopce strony
  4. nigdzie, to komentarz

Dlaczego zapis <p><b>tekst</p></b> nie przejdzie walidacji?

  1. znacznik <b> nie istnieje w HTML5
  2. <b> nie może być w akapicie
  3. brakuje atrybutu class
  4. znaczniki są zamknięte w złej kolejności
Lekcja 2 · HTML

Odnośniki, obrazy, listy i tabele

Te cztery elementy pojawiają się w każdej stronie z części praktycznej i w wielu pytaniach teoretycznych. Najczęściej trzeba rozpoznać, co wyświetli dany kod.

Odnośniki <a>

HTML
<a href="https://example.com">Strona zewnętrzna</a>
<a href="kontakt.html">Plik w tym samym folderze</a>
<a href="#cennik">Przewiń do elementu o id="cennik"</a>
<a href="mailto:szkola@example.com">Napisz e-mail</a>
<a href="cennik.pdf" target="_blank">Otwórz w nowej karcie</a>
  • href to adres, do którego prowadzi odnośnik. Adres bezwzględny zawiera protokół i domenę, względny jest liczony od bieżącego pliku (../ to folder wyżej).
  • href="#id" przewija stronę do elementu o tym identyfikatorze (kotwica). Sam # przewija na górę strony.
  • target="_blank" otwiera stronę w nowym oknie lub karcie, a _self (domyślnie) w tym samym.
  • rel="nofollow" to informacja dla robotów wyszukiwarek, żeby nie podążały za linkiem.

Obrazy <img>

HTML
<img src="obrazy/pies.jpg" alt="Pies na łące" width="300" height="200">
  • src wskazuje plik graficzny.
  • alt to tekst alternatywny. Wyświetla się, gdy obraz się nie wczyta, i odczytują go czytniki ekranu dla osób niewidomych. Bez niego walidacja zgłasza błąd.
  • title to dymek po najechaniu myszą. To nie to samo co alt.
  • <img> nie ma znacznika zamykającego.

Na egzaminie. „Co się stanie, gdy plik graficzny nie istnieje?” Przeglądarka pokaże w jego miejscu tekst z alt. „Który atrybut uzupełnić, by strona była dostępna dla niewidomych?” Również alt.

Listy

HTML
<ol>                    <!-- numerowana: 1. 2. 3. -->
  <li>punkt 1</li>
  <li>punkt 2
    <ul>                <!-- zagnieżdżona punktowana -->
      <li>podpunkt</li>
    </ul>
  </li>
</ol>
<dl>                    <!-- lista definicji -->
  <dt>HTML</dt>  <dd>język znaczników</dd>
</dl>

<ol> to lista uporządkowana (numerowana), <ul> nieuporządkowana (punktowana), <li> to element każdej z nich. Lista zagnieżdżona musi być wewnątrz <li>. Atrybut type w ol zmienia numerację (A, a, I, i), a start ustawia numer pierwszego punktu.

Tabele

HTML
<table border="1">
  <tr><th>Imię</th><th>Wynik</th></tr>
  <tr><td>Ala</td><td rowspan="2">zdane</td></tr>
  <tr><td>Ola</td></tr>
  <tr><td colspan="2">Komórka na dwie kolumny</td></tr>
</table>
  • <tr> to wiersz, <td> komórka, <th> komórka nagłówkowa (domyślnie pogrubiona i wyśrodkowana).
  • colspan łączy komórki w poziomie (zajmuje kilka kolumn), rowspan w pionie (kilka wierszy).
  • Liczba kolumn to liczba komórek w wierszu, licząc colspan. Liczba wierszy to liczba <tr>.
  • <caption> to podpis tabeli, a <thead>, <tbody> i <tfoot> grupują wiersze.

Na egzaminie. Przy rysunku tabeli policz najpierw kolumny w najszerszym wierszu. Komórka z rowspan="2" „zabiera” miejsce w następnym wierszu, więc ten wiersz ma o jedną <td> mniej.

Jaki atrybut dodać do <a>, aby strona otworzyła się w nowej karcie?

  1. target="_blank"
  2. target="_self"
  3. rel="new"
  4. href="new"

Atrybut colspan="3" w komórce tabeli sprawi, że komórka

  1. zajmie trzy wiersze
  2. będzie miała obramowanie 3 px
  3. zajmie trzy kolumny
  4. będzie trzecią kolumną
Lekcja 3 · HTML

Formularze

Formularz zbiera dane od użytkownika i wysyła je do skryptu na serwerze, najczęściej w PHP. Na egzaminie trzeba znać typy pól, rolę atrybutów i różnicę między GET a POST.

Budowa formularza

HTML
<form action="zapisz.php" method="post">
  <label for="imie">Imię:</label>
  <input type="text" id="imie" name="imie" placeholder="np. Jan" required>
  <input type="password" name="haslo" maxlength="20">
  <input type="number" name="wiek" min="1" max="120">
  <input type="radio" name="plec" value="k"> K
  <input type="radio" name="plec" value="m"> M
  <input type="checkbox" name="zgoda" checked> Zgoda
  <select name="miasto">
    <option value="plock" selected>Płock</option>
    <option value="torun">Toruń</option>
  </select>
  <textarea name="uwagi" rows="4" cols="40"></textarea>
  <input type="submit" value="Wyślij">  <input type="reset" value="Wyczyść">
</form>

Atrybuty, o które pyta CKE

AtrybutDo czego służy
actionadres skryptu, który odbierze dane (np. zapisz.php)
methodsposób wysłania: get albo post
namenazwa pola. Pod tą nazwą dane trafią do serwera, np. $_POST['imie']
valuewartość domyślna pola albo napis na przycisku
placeholderszary podpowiadający tekst w pustym polu, znika po wpisaniu
requiredpole obowiązkowe: formularz się nie wyśle, gdy jest puste
maxlength, sizenajwiększa liczba znaków / widoczna szerokość pola
min, max, stepzakres i krok dla number, range, date
patternwyrażenie regularne, które musi pasować do wpisanej wartości
checked, selectedzaznaczenie domyślne pola wyboru / opcji listy
disabled, readonlypole nieaktywne (nie wysyła się) / tylko do odczytu

Przyciski radio z tym samym name tworzą grupę, w której można zaznaczyć tylko jeden. checkbox pozwala zaznaczyć dowolnie wiele. Typ password ukrywa wpisywane znaki kropkami. HTML5 dodał też typy email, number, date, color, range, url, tel, które same sprawdzają format.

GET czy POST

GETDane doklejone do adresu: formularz.php?imie=Jan&wiek=17. Widać je, można dodać do zakładek, długość adresu jest ograniczona. W PHP: $_GET.
POSTDane w treści żądania HTTP, niewidoczne w adresie. Do haseł, dużych danych i plików. W PHP: $_POST.

Na egzaminie. Jeśli w pytaniu widać adres ze znakiem ? i parami nazwa=wartość, formularz użył metody GET. POST nie jest sam w sobie szyfrowany. Największe bezpieczeństwo daje POST przez HTTPS.

Walidacja danych

Walidacja to sprawdzenie, czy wpisane dane spełniają reguły: pole niepuste, poprawny e-mail, liczba w zakresie. Po stronie klienta robi to HTML5 (required, pattern, typy pól) albo JavaScript, zanim dane wyjdą z przeglądarki. Po stronie serwera robi to PHP. Serwer zawsze musi sprawdzić dane jeszcze raz, bo kontrolę w przeglądarce łatwo obejść.

Po wysłaniu formularza w pasku adresu widać wynik.php?imie=Ala&klasa=3. Jakiej metody użyto?

  1. POST
  2. GET
  3. PUT
  4. SEND

Który atrybut pola decyduje o tym, pod jaką nazwą PHP odczyta jego wartość?

  1. id
  2. value
  3. type
  4. name
Lekcja 4 · CSS

Selektory, kaskada i sposoby dołączania stylów

CSS (kaskadowe arkusze stylów) oddziela wygląd strony od jej treści. Jedna reguła może zmienić wygląd wszystkich akapitów w całym serwisie. Najwięcej pytań z CSS dotyczy tego, który element zostanie sformatowany danym selektorem.

Budowa reguły

CSS
h1 { color: blue; font-size: 24px; }
/* selektor { właściwość: wartość; właściwość: wartość; } */

h1 to selektor, color to właściwość, blue to wartość, a całość w nawiasach klamrowych to blok deklaracji. Komentarz w CSS zapisuje się tylko jako /* … */.

Trzy sposoby dołączenia stylów

SposóbZapisZasięg
zewnętrzny arkusz<link rel="stylesheet" href="styl.css"> w <head>wiele stron naraz
wewnętrzny (osadzony)<style> p { … } </style> w <head>jedna strona
lokalny (liniowy)<p style="color: red">jeden element

Selektory

SelektorCo wybiera
pwszystkie akapity (selektor znacznika)
.tekstelementy z class="tekst" (kropka = klasa)
#menuelement z id="menu" (krzyżyk = identyfikator)
p.teksttylko akapity z klasą tekst
h1, h2h1 oraz h2 (przecinek grupuje)
div pakapity gdziekolwiek wewnątrz div (potomkowie)
div > pakapity będące bezpośrednimi dziećmi div
h1 + pakapit stojący zaraz po h1
input[type=number]elementy z atrybutem o danej wartości
*wszystkie elementy

Pseudoklasy i pseudoelementy

ZapisKiedy działa
a:link / a:visitedlink jeszcze nieodwiedzony / już odwiedzony
:hovergdy kursor myszy jest nad elementem
:activew chwili kliknięcia
:focusgdy pole jest aktywne (kliknięte, kursor w środku)
:first-child, :last-childpierwszy / ostatni element wśród rodzeństwa
:nth-child(even), (odd), (3)parzyste / nieparzyste / trzecie dziecko, np. wiersze tabeli
::first-letterpierwsza litera elementu
::first-linepierwsza linia tekstu elementu
::before, ::afterwstawka przed / po treści (z właściwością content)

Na egzaminie. h1::first-letter { color: red } koloruje tylko pierwszą literę każdego nagłówka h1. p::first-line dotyczy pierwszej linii każdego akapitu. Kolejność reguł dla linków zapamiętaj jako LoVe HAte: :link, :visited, :hover, :active.

Kaskada i dziedziczenie

Gdy kilka reguł ustawia tę samą właściwość tego samego elementu, wygrywa:

  1. reguła z !important,
  2. styl o wyższej specyficzności: lokalny style="" > #id > .klasa i pseudoklasy > znacznik,
  3. przy równej specyficzności reguła zapisana później.

Część właściwości jest dziedziczona przez elementy wewnątrz: color, font-*, text-align, line-height. Właściwości pudełka (margin, padding, border, width, background) nie są dziedziczone. Dlatego styl czcionki ustawiony dla body obowiązuje w całym dokumencie.

Który selektor sformatuje jednocześnie akapity z klasą tekst i element o identyfikatorze obrazki?

  1. p#tekst .obrazki
  2. p.tekst, #obrazki
  3. .tekst #obrazki
  4. #tekst, p.obrazki

Co zrobi reguła tr:nth-child(even) { background: #eee; }?

  1. zabarwi tło parzystych wierszy tabeli
  2. zabarwi tło wszystkich wierszy
  3. zabarwi tło pierwszego wiersza
  4. zabarwi tło wiersza po najechaniu myszą

Akapit ma class="info" id="wazny". Reguły: p { color: black }, #wazny { color: red }, .info { color: green }. Jakiego koloru będzie tekst?

  1. czarnego
  2. zielonego
  3. czerwonego
  4. domyślnego
Lekcja 5 · CSS

Tekst, kolory, jednostki i tło

To najliczniejsza grupa pytań z CSS. Trzeba rozpoznać, co robi właściwość, przeliczyć kolor między zapisami i wiedzieć, która jednostka jest względna.

Czcionka i tekst

WłaściwośćPrzykładEfekt
font-familyArial, sans-serifkrój czcionki, kolejne to zapasowe
font-size16px, 1.2emrozmiar
font-weightbold, 700pogrubienie
font-styleitalicpochylenie (kursywa)
font-variantsmall-capskapitaliki
colornavykolor tekstu
text-aligncenter, justifywyrównanie w poziomie
text-decorationunderline, none, line-throughpodkreślenie (none usuwa je z linków)
text-transformuppercase, capitalizewielkie litery / wielka pierwsza litera słów
text-indent20pxwcięcie pierwszej linii
line-height1.5interlinia (wysokość wiersza)
letter-spacing, word-spacing2pxodstęp między literami / słowami
text-shadow2px 2px 3px graycień tekstu

Na egzaminie. color zmienia kolor tekstu, a nie tła. Tło to background-color. Pytania często mieszają te dwie właściwości w odpowiedziach.

Zapis kolorów

Na ekranie kolor to mieszanina trzech składowych: czerwonej (R), zielonej (G) i niebieskiej (B), każda od 0 do 255. Ten sam kolor można zapisać na kilka sposobów:

ZapisCzerwonyBiałyPomarańczowy
nazwaredwhiteorange
szesnastkowo#FF0000 lub #F00#FFFFFF#FF8010
rgb()rgb(255, 0, 0)rgb(255, 255, 255)rgb(255, 128, 16)
z przezroczystościąrgba(255, 0, 0, 0.5) – czwarta liczba to krycie od 0 (przezroczysty) do 1

Przeliczanie szesnastkowe ↔ dziesiętne

Zapis #RRGGBB to trzy liczby dwucyfrowe w systemie szesnastkowym (cyfry 0–9 i A–F, gdzie A=10 … F=15). Każdą parę przelicza się osobno: pierwsza cyfra × 16 + druga cyfra.

  • #11FE07: 11 = 1·16+1 = 17, FE = 15·16+14 = 254, 07 = 7 → rgb(17, 254, 7)
  • rgb(255, 16, 8): 255 = 15·16+15 = FF, 16 = 1·16+0 = 10, 8 = 08 → #FF1008
  • #00FF00 = rgb(0, 255, 0) to zielony, #000000 czarny, a równe składowe (np. #808080) dają szarość.

Na egzaminie. Wystarczy sprawdzić jedną składową, która różni się między odpowiedziami. Przydatne pary: 10 = 0A, 16 = 10, 128 = 80, 200 = C8, 255 = FF.

Jednostki

Bezwzględnepx (piksel), pt (punkt drukarski), cm, mm. Nie zależą od innych elementów.
Względneem (względem czcionki rodzica), rem (względem czcionki elementu html), % (względem rodzica), vw/vh (1% szerokości/wysokości okna).

Tło i listy

CSS
body {
  background-color: #EEE;
  background-image: url("tlo.png");
  background-repeat: repeat-y;      /* powtarzaj w pionie; repeat-x w poziomie, no-repeat raz */
  background-position: top right;
  background-attachment: fixed;     /* tło stoi w miejscu przy przewijaniu; scroll przewija się z treścią */
  background-size: cover;
}
ul { list-style-type: square; }     /* disc, circle, square, none; dla ol: decimal, lower-alpha, upper-roman */
ul { list-style-image: url("punkt.png"); }   /* własny obrazek jako punktor */

Któremu zapisowi odpowiada kolor #7F00FF?

  1. rgb(127, 255, 0)
  2. rgb(112, 0, 255)
  3. rgb(255, 0, 127)
  4. rgb(127, 0, 255)

Która jednostka rozmiaru w CSS jest względna?

  1. em
  2. px
  3. pt
  4. cm
Lekcja 6 · CSS

Model pudełkowy, pozycjonowanie i strona responsywna

Każdy element strony to prostokąt z treścią, wypełnieniem, ramką i marginesem. Pytania sprawdzają, co oznaczają skrócone zapisy marginesów, ile wynosi szerokość elementu i jak działają float oraz position.

Model pudełkowy

margin (margines zewnętrzny, przezroczysty)
border (ramka)
padding (margines wewnętrzny, ma kolor tła)
treść: width × height

padding to odstęp wewnątrz ramki, między treścią a ramką. margin to odstęp na zewnątrz ramki, od sąsiednich elementów. Przy domyślnym box-sizing: content-box rzeczywista szerokość elementu to:

width + padding lewy i prawy + border lewy i prawy (+ margines, jeśli liczysz zajęte miejsce)

Przykład: width: 500px; padding: 20px; border: 10px solid; daje 500 + 2·20 + 2·10 = 560 px. Z box-sizing: border-box padding i ramka mieszczą się w podanym width.

Skrócone zapisy: kolejność zgodnie z ruchem wskazówek zegara

ZapisZnaczenie
margin: 10px;wszystkie cztery strony 10px
margin: 10px 20px;góra i dół 10px, prawo i lewo 20px
margin: 10px 20px 30px;góra 10, prawo i lewo 20, dół 30
padding: 50px 20px 40px 30px;góra 50, prawo 20, dół 40, lewo 30
margin: 0 auto;wyśrodkowanie bloku o ustalonej szerokości
border: 2px dotted gray;grubość, styl (solid, dashed, dotted, double), kolor
border-color: red blue green yellow;góra czerwona, prawa niebieska, dół zielony, lewa żółta
border-radius: 20px;zaokrąglone rogi (50% daje koło)

Na egzaminie. Kolejność to zawsze góra, prawo, dół, lewo (jak wskazówki zegara od godziny 12). Najczęstsza pułapka to zamiana prawego z dolnym. Pojedyncza strona to margin-top, padding-left itd.

display, float, position

WłaściwośćWartości i działanie
displayblock, inline, inline-block, none (element znika i nie zajmuje miejsca), flex, grid
visibility: hiddenelement niewidoczny, ale zajmuje miejsce
floatleft / right: blok przesuwa się do krawędzi, a inne elementy opływają go z drugiej strony (np. tekst wokół obrazka). clear: both kończy opływanie.
positionstatic (domyślnie), relative (przesunięcie względem własnego miejsca), absolute (względem najbliższego pozycjonowanego przodka), fixed (względem okna, nie przewija się), sticky
top, left, …, z-indexprzesunięcie elementu pozycjonowanego; z-index: kto jest na wierzchu (większy wyżej)
overflowhidden, scroll, auto: co zrobić z treścią, która się nie mieści

Flexbox (display: flex) układa dzieci w rzędzie lub kolumnie (flex-direction), wyrównuje je (justify-content w osi głównej, align-items w poprzecznej) i pozwala im się zawijać (flex-wrap).

Strona responsywna (RWD)

CSS
@media (max-width: 600px) {
  nav, main { width: 100%; float: none; }   /* na wąskim ekranie bloki jeden pod drugim */
}

Zapytanie @media stosuje reguły tylko wtedy, gdy spełniony jest warunek, np. szerokość ekranu do 600 px. Razem z <meta name="viewport"> i szerokościami w procentach daje stronę, która dopasowuje się do telefonu, tabletu i komputera.

Ile wynosi prawy margines wewnętrzny przy padding: 5px 10px 15px 20px;?

  1. 5px
  2. 15px
  3. 10px
  4. 20px

Jaką szerokość zajmie na ekranie blok: width: 400px; padding: 10px; border: 5px solid; (bez marginesów, box-sizing domyślny)?

  1. 400 px
  2. 430 px
  3. 415 px
  4. 420 px

Która deklaracja ukrywa element tak, że nie zajmuje on miejsca na stronie?

  1. display: none;
  2. visibility: hidden;
  3. opacity: 0;
  4. color: transparent;
Lekcja 7 · Grafika

Grafika: modele barw, formaty i obróbka

Pytania z grafiki dotyczą różnicy między grafiką rastrową a wektorową, modeli barw, formatów plików i narzędzi edytorów takich jak GIMP czy Photoshop.

Rastrowa czy wektorowa

Rastrowa (bitmapa)Obraz to siatka pikseli. Przy powiększaniu traci jakość (widać „schodki”). Dobra do zdjęć. Formaty: JPG, PNG, GIF, BMP, TIFF, WebP. Programy: GIMP, Photoshop, Paint.
WektorowaObraz opisany figurami geometrycznymi i wzorami (linie, krzywe Béziera, wypełnienia). Skaluje się bez utraty jakości, plik jest mały. Dobra do logo, ikon, schematów. Formaty: SVG, AI, CDR, EPS. Programy: Inkscape, CorelDRAW, Illustrator.

W programach wektorowych kształty łączy się operacjami logicznymi: suma (połączenie dwóch figur w jedną), różnica (wycięcie jednej z drugiej), część wspólna (iloczyn) i wykluczenie.

Modele barw

ModelSkładoweGdzie
RGBczerwony, zielony, niebieski; mieszanie addytywne (suma daje biel)monitory, ekrany, strony WWW
CMYKcyjan (turkusowy), magenta (purpurowy), żółty, czarny (K); mieszanie subtraktywnedruk
HSV / HSBbarwa (odcień), nasycenie, jasność; przedstawiany jako stożekwybór koloru w edytorach
HSLbarwa, nasycenie, jasność (lightness)CSS: hsl(120, 100%, 50%)
Labjasność i dwie osie barw; niezależny od urządzeniakonwersje między urządzeniami

Na egzaminie. Ekran → RGB, druk → CMYK, stożek „barwa, nasycenie, jasność” → HSV. Przeliczanie rgb() na zapis szesnastkowy znajdziesz w lekcji 5.

Rozdzielczość i głębia koloru

  • Rozdzielczość obrazu to liczba pikseli w poziomie i pionie, np. Full HD = 1920 × 1080, HD = 1280 × 720, 4K = 3840 × 2160.
  • DPI / PPI (punkty / piksele na cal) to gęstość. Do druku stosuje się zwykle 300 dpi, do ekranu ok. 72–96 ppi.
  • Głębia koloru to liczba bitów na piksel: 1 bit = 2 kolory, 8 bitów = 256 kolorów (np. GIF), 24 bity = ok. 16,7 mln kolorów (true color), 32 bity = 24 bity koloru + 8 bitów kanału alfa.
  • Kanał alfa przechowuje przezroczystość każdego piksela. Ma go PNG (i GIF w uproszczonej formie: piksel albo całkiem przezroczysty, albo nie). JPG nie obsługuje przezroczystości.

Formaty plików graficznych

FormatKompresjaCechy
JPG (JPEG)stratnazdjęcia, 16,7 mln kolorów, bez przezroczystości, stopień kompresji do wyboru
PNGbezstratnaprzezroczystość (kanał alfa), grafika na strony
GIFbezstratna (LZW)max 256 kolorów, prosta animacja, przezroczystość jednego koloru
BMPzwykle brakduże pliki, grafika Windows
TIFFbezstratna lub brakdruk, skanowanie, wiele warstw
WebPstratna lub bezstratnanowoczesny format na strony, mniejsze pliki
SVG—grafika wektorowa zapisana w XML, skaluje się bez utraty jakości
PSD, XCF—pliki robocze Photoshopa / GIMP-a z warstwami

Kompresja stratna usuwa część informacji (plik mniejszy, jakość gorsza i nie da się jej odzyskać). Bezstratna pozwala odtworzyć dane co do bitu.

Narzędzia i operacje w edytorach rastrowych

Narzędzie / operacjaDziałanie
kadrowaniewycięcie fragmentu obrazu, usunięcie zbędnych brzegów
skalowaniezmiana rozmiaru w pikselach (powiększanie bitmapy pogarsza jakość)
różdżkazaznaczenie obszaru o podobnym kolorze
lassozaznaczenie odręczne lub wielokątne
stempel (klonowanie)kopiowanie fragmentu obrazu w inne miejsce, retusz
rozmycie Gaussazmiękczenie obrazu, usunięcie szczegółów
wyostrzanie, maska wyostrzającapodkreślenie krawędzi
warstwyniezależne poziomy obrazu, które można edytować osobno
histogram, poziomy, krzywerozkład jasności pikseli, korekta jasności i kontrastu
desaturacjausunięcie kolorów (odcienie szarości)

W jakim formacie zapisać logo z półprzezroczystym cieniem, aby na stronie było widać tło pod cieniem?

  1. JPG
  2. PNG
  3. BMP
  4. GIF

Który format pozwala dowolnie powiększyć logo bez utraty jakości?

  1. JPG
  2. BMP
  3. PNG
  4. SVG
Lekcja 8 · Multimedia

Dźwięk, wideo i animacja

Ta część sprawdza podstawy fizyki dźwięku, cyfrowego zapisu dźwięku i obrazu ruchomego, formaty plików i znaczniki HTML5 <audio> i <video>.

Dźwięk

  • Wysokość dźwięku zależy od częstotliwości drgań (Hz). Człowiek słyszy ok. 20 Hz – 20 kHz.
  • Głośność zależy od amplitudy drgań i mierzy się ją w decybelach (dB).
  • Barwa zależy od składu harmonicznych, dzięki niej odróżniamy instrumenty.

Zamiana dźwięku analogowego na cyfrowy to próbkowanie (pomiar fali wiele razy na sekundę) i kwantyzacja (zapis każdej próbki liczbą o określonej liczbie bitów).

Częstotliwość próbkowaniaLiczba próbek na sekundę. Jakość CD to 44,1 kHz, wideo 48 kHz. Większa częstotliwość = wierniejszy dźwięk i większy plik.
Rozdzielczość bitowaLiczba bitów na próbkę, np. 16 bitów (CD) albo 24 bity. Większa = mniejszy szum kwantyzacji.
Przepływność (bitrate)Ilość danych na sekundę, np. MP3 128 kb/s albo 320 kb/s. Wyższa = lepsza jakość, większy plik.
KanałyMono (1), stereo (2), dźwięk przestrzenny 5.1.

Rozmiar nieskompresowanego dźwięku: częstotliwość × bity × kanały × czas. Minuta jakości CD: 44 100 · 16 · 2 · 60 = 84 672 000 bitów ≈ 10 MB.

Format dźwiękuKompresja
WAV, AIFFzwykle bez kompresji (duże pliki)
FLAC, ALACbezstratna
MP3, AAC, OGG (Vorbis), WMA, Opusstratna (małe pliki)
MIDInie zawiera dźwięku, tylko instrukcje: jaka nuta, jak długo, jakim instrumentem

Edytor dźwięku to np. Audacity (bezpłatny). Typowe operacje: przycinanie, normalizacja (ustawienie głośności na zadany poziom), odszumianie, wyciszanie (fade in / fade out), zmiana tempa i wysokości, efekty echa.

Wideo i animacja

  • Ruch powstaje z szybko wyświetlanych klatek. Obraz wydaje się płynny od ok. 24–30 klatek na sekundę (fps). Kino używa 24 fps, telewizja 25 lub 30.
  • Kontener (MP4, AVI, MKV, MOV, WebM, OGG) przechowuje obraz, dźwięk i napisy. Kodek (H.264, H.265/HEVC, VP9, AV1) kompresuje sam obraz.
  • Prostą animację zapisze GIF (wiele klatek w jednym pliku, bez dźwięku). Animacje na stronach robi się dziś w CSS (@keyframes, transition) albo JavaScripcie.
  • Montaż wideo: Shotcut, OpenShot, DaVinci Resolve, Adobe Premiere.

Multimedia na stronie

HTML
<video width="640" controls autoplay muted loop poster="kadr.jpg">
  <source src="film.mp4" type="video/mp4">
  <source src="film.webm" type="video/webm">
  Twoja przeglądarka nie obsługuje wideo.
</video>
<audio src="muzyka.mp3" controls></audio>
  • controls pokazuje przyciski odtwarzania, autoplay odtwarza od razu, muted wycisza, loop powtarza, poster to obraz przed startem.
  • Kilka <source> pozwala podać ten sam film w różnych formatach. Przeglądarka weźmie pierwszy, który umie odtworzyć. Tekst wewnątrz znacznika zobaczą tylko przeglądarki bez obsługi HTML5.
  • Formaty wideo w HTML5: MP4, WebM, Ogg. Formaty audio: MP3, WAV, Ogg.
  • Starsze sposoby osadzania to <embed> i <object> (np. animacje Flash .swf, dziś nieobsługiwane).

Od czego zależy wysokość dźwięku?

  1. od amplitudy drgań
  2. od liczby kanałów
  3. od częstotliwości drgań
  4. od przepływności

Który atrybut znacznika <video> wycisza dźwięk filmu?

  1. muted
  2. silent
  3. volume="0"
  4. controls
Lekcja 9 · JavaScript

JavaScript: składnia, DOM i zdarzenia

JavaScript działa w przeglądarce (po stronie klienta) i ożywia stronę: reaguje na kliknięcia, zmienia treść i style, sprawdza formularze. Pytania pokazują krótki kod i pytają, co wypisze albo co zmieni na stronie.

Zmienne i typy

JavaScript
let wiek = 17;               // number (liczby całkowite i ułamki to ten sam typ)
const imie = "Ala";          // string; const nie da się przypisać ponownie
var zdane = true;            // boolean; var to starszy sposób deklaracji
let lista = [3, 5, 8];       // tablica, indeksy od 0: lista[0] to 3
let osoba = { imie: "Ala", wiek: 17 };   // obiekt: osoba.imie
typeof wiek                  // "number"

JavaScript ma typowanie dynamiczne: typ zależy od przypisanej wartości. Wartość z pola formularza jest zawsze tekstem, więc przed liczeniem trzeba ją zamienić: parseInt("12") daje liczbę całkowitą 12, parseFloat("3.5") liczbę rzeczywistą, a Number() dowolną liczbę.

Operatory

OperatorZnaczeniePrzykład
+dodawanie albo łączenie tekstów"2" + 3 → "23"
%reszta z dzielenia7 % 3 → 1
== / ===równe co do wartości / wartości i typu5 == "5" → true, 5 === "5" → false
!=, !==różne
&&, ||, !i, lub, niex > 0 && x < 10
++, +=zwiększenie o 1 / o wartośći++ to to samo co i += 1

Na egzaminie. Pojedynczy = to przypisanie, nie porównanie. if (x = 5) przypisuje 5 i warunek jest zawsze prawdziwy. To częsty „błąd logiczny” w pytaniach.

Instrukcje sterujące

JavaScript
if (ocena >= 2) { wynik = "zdane"; } else { wynik = "niezdane"; }
for (let i = 0; i < 5; i++) { suma += i; }        // 5 obrotów: i = 0, 1, 2, 3, 4
while (n > 0) { n--; }
do { … } while (warunek);                            // wykona się co najmniej raz
switch (dzien) { case 1: … break; default: … }
function pole(a, b) { return a * b; }                 // funkcja z wynikiem

Okna dialogowe i wypisywanie

  • alert("tekst") – okno z komunikatem i przyciskiem OK.
  • prompt("Podaj imię", "Jan") – okno z polem do wpisania; zwraca wpisany tekst, drugi argument to wartość domyślna.
  • confirm("Na pewno?") – okno OK / Anuluj; zwraca true albo false.
  • document.write("tekst") – wpisuje tekst do dokumentu, console.log() – wypisuje w konsoli przeglądarki (F12).

MessageBox(), echo czy print() nie są funkcjami JavaScriptu w przeglądarce.

DOM, czyli zmiany na stronie

JavaScript
let el = document.getElementById("wynik");    // element o id="wynik"
el.innerHTML = "<b>Gotowe</b>";              // zmiana zawartości (z interpretacją znaczników)
el.style.color = "red";                       // zmiana stylu: właściwości CSS z myślnikiem piszemy camelCase
el.style.backgroundColor = "yellow";
document.getElementById("pole").value;        // wartość pola formularza (tekst)
document.getElementById("obraz").src = "b.png";   // podmiana obrazka
document.querySelector(".menu");              // pierwszy element pasujący do selektora CSS

Zdarzenia

ZdarzenieKiedy zachodzi
onclickkliknięcie
onloadwczytanie strony lub obrazu
onmouseover / onmouseoutnajechanie / zjechanie kursorem
onkeydown, onkeyupnaciśnięcie / puszczenie klawisza
onchange, oninputzmiana wartości pola
onsubmitwysyłanie formularza (np. walidacja przed wysłaniem)
onfocus, onblurwejście do pola / wyjście z pola
HTML + JavaScript
<button onclick="policz()">Oblicz</button>
<!-- albo w skrypcie: -->
document.getElementById("btn").addEventListener("click", policz);

Napisy, tablice, Math, Date

  • tekst.length – długość; tekst.substring(2, 6) – znaki od indeksu 2 do 5; toUpperCase(), indexOf("a"), split(","), replace("a", "b").
  • tab.push(x) dodaje na końcu, tab.pop() usuwa ostatni, tab.length to liczba elementów, tab.sort() sortuje.
  • Math.random() – liczba z przedziału [0, 1); Math.floor() zaokrągla w dół, Math.round() do najbliższej, Math.ceil() w górę; Math.max(), Math.pow(), Math.sqrt().
  • new Date() – bieżąca data; getFullYear(), getMonth() (miesiące od 0), getDate(), getDay() (0 = niedziela).

Jaką wartość będzie miała zmienna x po wykonaniu let x = "5" + 2;?

  1. 7
  2. "52"
  3. NaN
  4. błąd

Który zapis wstawia tekst „OK” do elementu <p id="info">?

  1. document.info.text = "OK";
  2. getElement("info") = "OK";
  3. document.write("#info", "OK");
  4. document.getElementById("info").innerHTML = "OK";

Jaki jest wynik porównania 5 === "5"?

  1. false
  2. true
  3. "5"
  4. undefined
Lekcja 10 · PHP

PHP: język po stronie serwera

Skrypt PHP wykonuje się na serwerze, a do przeglądarki trafia już tylko wynik w postaci HTML. Dlatego użytkownik nie widzi kodu PHP w źródle strony. Pytania dotyczą składni, tablic, pętli, funkcji wbudowanych i danych z formularzy.

Składnia

PHP
<?php
  $imie = "Ala";               // zmienna zaczyna się od $
  $wiek = 17;
  echo "Cześć, $imie!";        // w cudzysłowie podwójnym zmienna jest podstawiana
  echo 'Cześć, $imie!';        // w pojedynczym nie: wypisze dosłownie $imie
  echo "Masz " . $wiek . " lat";   // kropka łączy teksty (konkatenacja)
  # komentarz jednoliniowy, /* komentarz blokowy */
?>
  • Każda instrukcja kończy się średnikiem. Nazwy zmiennych rozróżniają wielkość liter.
  • Typy: int (całkowite), float (zmiennoprzecinkowe), string, bool, array, null. Typ zależy od wartości (typowanie dynamiczne).
  • Wypisywanie: echo, print, printf(); podgląd zmiennej: var_dump(), print_r().
  • phpinfo(); wypisuje pełną konfigurację PHP na serwerze.
  • include / require dołączają inny plik. Przy braku pliku include tylko ostrzega, require przerywa skrypt.

Na egzaminie. Łączenie tekstów w PHP to kropka (.), a w JavaScripcie plus. Operator .= dokleja tekst do zmiennej.

Tablice

PHP
$liczby = array(4, 7, 9);          // lub [4, 7, 9]; indeksy od 0
echo $liczby[1];                     // 7
$osoba = array("imie" => "Jan", "wiek" => 30);   // tablica asocjacyjna: klucz => wartość
echo $osoba["imie"];                 // Jan
foreach ($osoba as $klucz => $wartosc) { echo "$klucz: $wartosc<br>"; }
count($liczby);                      // liczba elementów: 3

Sortowanie: sort() rosnąco według wartości, rsort() malejąco, asort() według wartości z zachowaniem kluczy, ksort() według kluczy.

Pętle i warunki

PHP
for ($i = 1; $i <= 5; $i++) { echo $i; }     // 12345
while ($x < 10) { $x += 3; }
foreach ($tablica as $element) { … }          // każdy element tablicy po kolei
if ($a > 0 && $a < 10) { … } elseif ($a == 0) { … } else { … }

Funkcje wbudowane, o które pyta CKE

FunkcjaDziałanie
strlen($s)długość napisu
substr($s, 2, 3)3 znaki od indeksu 2
str_replace("kota", "psa", $s)zamiana: szukane, nowe, w czym
strtoupper(), strtolower(), ucfirst()wielkie / małe litery / pierwsza wielka
strpos($s, "a"), strstr()pozycja / fragment od wystąpienia
trim()usuwa spacje z początku i końca
explode(",", $s) / implode(",", $t)napis → tablica / tablica → napis
rand(1, 6)losowa liczba całkowita z zakresu
date("Y-m-d H:i")bieżąca data i czas (Y = rok, m = miesiąc, d = dzień, l = nazwa dnia, F = nazwa miesiąca)
isset($x), empty($x)czy zmienna istnieje / czy jest pusta
is_int(), is_float(), is_numeric()sprawdzanie typu

Dane z formularza, sesje, ciasteczka

  • $_GET['pole'] i $_POST['pole'] – dane z formularza wysłanego odpowiednią metodą; $_REQUEST – z obu.
  • $_SESSION – dane zapamiętane na serwerze dla jednego użytkownika między stronami. Wymaga session_start(); na początku skryptu, kończy się session_destroy().
  • setcookie("nazwa", "wartosc", time() + 3600); – ciasteczko zapisane w przeglądarce (tu na godzinę); odczyt przez $_COOKIE['nazwa'].
  • $_SERVER – informacje o serwerze i żądaniu, $_FILES – przesłane pliki.

Jak połączyć w PHP tekst „Wynik: ” z wartością zmiennej $x?

  1. "Wynik: " + $x
  2. "Wynik: " & $x
  3. "Wynik: " . $x
  4. concat("Wynik: ", x)

Ile razy wykona się pętla for ($i = 0; $i < 10; $i += 2)?

  1. 10
  2. 5
  3. 4
  4. 6

Gdzie są przechowywane dane zapisane w $_SESSION?

  1. na serwerze
  2. w ciasteczku w przeglądarce
  3. w adresie URL
  4. w bazie danych MySQL
Lekcja 11 · PHP + MySQL

Połączenie PHP z bazą danych

W części praktycznej strona prawie zawsze pobiera dane z bazy. Pytania teoretyczne sprawdzają kolejność kroków i rolę funkcji z biblioteki mysqli.

Cztery kroki

PHP
<?php
// 1. połączenie: serwer, użytkownik, hasło, nazwa bazy
$polaczenie = mysqli_connect("localhost", "root", "", "szkola");
if (!$polaczenie) { die("Błąd połączenia z serwerem SQL"); }

// 2. wysłanie zapytania
$wynik = mysqli_query($polaczenie, "SELECT imie, nazwisko FROM uczniowie");

// 3. odczyt wyniku wiersz po wierszu
while ($wiersz = mysqli_fetch_array($wynik)) {
    echo $wiersz["imie"] . " " . $wiersz[1] . "<br>";
}

// 4. zamknięcie połączenia
mysqli_close($polaczenie);
?>

Funkcje mysqli

FunkcjaCo robi / co zwraca
mysqli_connect(serwer, user, hasło, baza)nawiązuje połączenie; zwraca uchwyt albo false
mysqli_connect_errno(), mysqli_connect_error()numer / opis błędu połączenia
mysqli_select_db($p, "baza")wybiera bazę, jeśli nie podano jej przy łączeniu
mysqli_query($p, $sql)wykonuje zapytanie. Dla SELECT zwraca zbiór wyników, dla INSERT/UPDATE/DELETE true/false
mysqli_fetch_row($w)kolejny wiersz jako tablica numeryczna: $r[0], $r[1]
mysqli_fetch_assoc($w)wiersz jako tablica asocjacyjna: $r["imie"]
mysqli_fetch_array($w)wiersz z oboma rodzajami indeksów
mysqli_num_rows($w)liczba wierszy w wyniku SELECT
mysqli_affected_rows($p)liczba wierszy zmienionych przez INSERT/UPDATE/DELETE
mysqli_error($p)opis ostatniego błędu zapytania
mysqli_real_escape_string($p, $s)zabezpiecza tekst przed wstawieniem do zapytania (ochrona przed SQL injection)
mysqli_close($p)zamyka połączenie

Funkcje z przedrostkiem mysql_ (bez „i”) to stara, usunięta z PHP 7 biblioteka. Mogą pojawić się w starszych pytaniach: mysql_fetch_row działa tak samo jak mysqli_fetch_row. Nowocześniejszą alternatywą jest PDO.

Na egzaminie. mysqli_num_rows() ma sens tylko po SELECT, bo liczy wiersze wyniku. Po INSERT, UPDATE czy DELETE liczbę zmienionych wierszy daje mysqli_affected_rows(). W mysqli pierwszym argumentem mysqli_query jest połączenie, a drugim zapytanie.

Wstawianie danych z formularza

PHP
$imie = $_POST["imie"];
$sql = "INSERT INTO uczniowie (imie, klasa) VALUES ('$imie', '3A')";
mysqli_query($polaczenie, $sql);

Teksty w zapytaniu SQL muszą być w apostrofach. Wstawianie danych od użytkownika wprost do zapytania grozi atakiem SQL injection. Zabezpiecza przed nim mysqli_real_escape_string() albo zapytania przygotowane (mysqli_prepare, PDO). Więcej w lekcji 16.

Co zwraca mysqli_num_rows($wynik)?

  1. liczbę kolumn tabeli
  2. numer ostatnio dodanego rekordu
  3. liczbę zmienionych rekordów
  4. liczbę wierszy w wyniku zapytania SELECT

Wiersz pobrano funkcją $r = mysqli_fetch_row($wynik). Jak odczytać pierwszą kolumnę?

  1. $r["1"]
  2. $r[0]
  3. $r->first
  4. $r[1]
Lekcja 12 · Bazy danych

Relacyjne bazy danych: pojęcia, klucze, normalizacja

Zanim napiszesz zapytanie, musisz wiedzieć, jak baza jest zbudowana. Pytania z teorii dotyczą słownictwa (krotka, encja, atrybut), kluczy, rodzajów relacji, normalizacji i transakcji.

Słownik

PojęcieZnaczenie
tabela (relacja)zbiór danych o jednym rodzaju obiektów, np. uczniowie
rekord, wiersz, krotkadane jednego obiektu (jeden wiersz tabeli bez nagłówka)
pole, kolumna, atrybutjedna cecha, np. nazwisko; ma nazwę i typ
encjaobiekt w modelu bazy (na diagramie ERD): czytelnik, książka, wypożyczenie
dziedzinazbiór dopuszczalnych wartości atrybutu
SZBD (DBMS)system zarządzania bazą danych: MySQL, MariaDB, PostgreSQL, MS SQL Server, Oracle, SQLite

Klucze

  • Klucz główny (podstawowy, PRIMARY KEY) jednoznacznie identyfikuje rekord: jest unikalny i nie może być pusty (NULL). Tabela ma jeden klucz główny, ale może on składać się z kilku pól (klucz złożony).
  • Klucz główny często ma atrybut AUTO_INCREMENT: przy dodawaniu rekordu baza sama nadaje kolejną liczbę.
  • Klucz obcy (FOREIGN KEY) to pole wskazujące na klucz główny w innej tabeli. Tworzy relację i pilnuje integralności referencyjnej: nie wstawisz wypożyczenia czytelnika, którego nie ma.
  • Klucz kandydujący to każde pole (zestaw pól), które mogłoby być kluczem głównym; indeks przyspiesza wyszukiwanie po danym polu.

Relacje między tabelami

1 : 1Jednemu rekordowi odpowiada dokładnie jeden: osoba – dowód osobisty.
1 : n (jeden do wielu)Najczęstsza: jeden reżyser – wiele filmów. Klucz obcy jest po stronie „wielu” (w tabeli filmy).
n : m (wiele do wielu)Uczniowie – przedmioty. Realizuje się ją tabelą pośredniczącą z dwoma kluczami obcymi.

Normalizacja

Normalizacja to dzielenie tabel tak, aby usunąć redundancję (powtarzanie tych samych danych) i anomalie przy dodawaniu, zmianie i usuwaniu danych.

  1. 1NF – każde pole zawiera jedną, niepodzielną wartość (nie „Jan, Anna” w jednej komórce), wiersze się nie powtarzają, jest klucz główny.
  2. 2NF – 1NF i każde pole niekluczowe zależy od całego klucza głównego, a nie od jego części.
  3. 3NF – 2NF i pola niekluczowe nie zależą od siebie nawzajem (brak zależności przechodnich), np. nazwa miasta nie zależy od kodu pocztowego w tej samej tabeli.

Transakcje i ACID

Transakcja to grupa operacji wykonywana w całości albo wcale, np. przelew: odjęcie z jednego konta i dodanie do drugiego. Polecenia: START TRANSACTION, COMMIT (zatwierdź), ROLLBACK (wycofaj). Cechy ACID:

A – atomowośćwszystko albo nic
C – spójnośćbaza przechodzi z jednego poprawnego stanu w drugi
I – izolacjarównoległe transakcje sobie nie przeszkadzają
D – trwałośćzatwierdzone zmiany przetrwają nawet awarię

Typy danych w MySQL

TypPrzeznaczenie
INT, TINYINT, BIGINTliczby całkowite różnych zakresów
DECIMAL(10,2)liczby dokładne, np. kwoty z groszami (10 cyfr, 2 po przecinku)
FLOAT, DOUBLEliczby zmiennoprzecinkowe (przybliżone)
CHAR(n) / VARCHAR(n)tekst stałej długości / zmiennej długości do n znaków
TEXTdługi tekst
DATE, TIME, DATETIME, YEARdata, czas, data z czasem, rok
BOOLEANprawda/fałsz (w MySQL to TINYINT(1))
ENUM('a','b')jedna wartość z listy
BLOBdane binarne: obrazy, pliki

Czym w relacyjnej bazie danych jest krotka?

  1. kolumną tabeli
  2. kluczem obcym
  3. wierszem tabeli
  4. całą bazą

Jak w bazie relacyjnej zapisać relację wiele do wielu (uczniowie – koła zainteresowań)?

  1. tabelą pośredniczącą z dwoma kluczami obcymi
  2. kluczem obcym w tabeli uczniowie
  3. wpisaniem kilku kół w jednym polu
  4. jedną tabelą z kluczem złożonym z nazwisk

Które zdanie o kluczu głównym jest prawdziwe?

  1. może zawierać powtarzające się wartości
  2. może być pusty (NULL)
  3. musi być typu tekstowego
  4. jednoznacznie identyfikuje każdy rekord
Lekcja 13 · SQL

Zapytania wybierające: SELECT

SELECT to najczęstsze polecenie na egzaminie, w teorii i w praktyce. Pytania pokazują tabelę z kilkoma rekordami i zapytanie, a ty masz wskazać wynik. Rób to krok po kroku, w kolejności, w jakiej wykonuje się zapytanie.

Budowa zapytania

SQL
SELECT kolumny               -- 5. co pokazać
FROM tabela                  -- 1. z jakiej tabeli
WHERE warunek                -- 2. które wiersze
GROUP BY kolumna             -- 3. grupowanie
HAVING warunek_na_grupach    -- 4. które grupy
ORDER BY kolumna ASC|DESC    -- 6. sortowanie (ASC rosnąco – domyślnie, DESC malejąco)
LIMIT 3;                     -- 7. ile wierszy
  • SELECT * – wszystkie kolumny; SELECT DISTINCT miasto – bez powtórzeń.
  • SELECT cena * 1.23 AS brutto – wyliczona kolumna z nazwą (alias).
  • Teksty i daty zapisuje się w apostrofach: WHERE miasto = 'Płock', WHERE data > '2024-01-01'.

Warunki w WHERE

ZapisZnaczenie
=, <> (lub !=), >, <=porównania
AND, OR, NOTłączenie warunków (AND ma pierwszeństwo przed OR, w razie wątpliwości użyj nawiasów)
BETWEEN 10 AND 20od 10 do 20 włącznie
IN ('Płock', 'Toruń')jedna z wartości z listy
IS NULL, IS NOT NULLpole puste / niepuste (nie = NULL!)
LIKE 'Kr%'% – dowolny ciąg znaków (także pusty)
LIKE '_e%'_ – dokładnie jeden znak: druga litera to „e”

Na egzaminie. LIKE '%a' to tekst kończący się na „a”, 'a%' zaczynający się od „a”, '%a%' zawierający „a” gdziekolwiek. W MySQL LIKE zwykle nie rozróżnia wielkości liter, więc '%kr%' pasuje też do „Krystyna”.

Funkcje agregujące i grupowanie

SQL
SELECT COUNT(*) FROM uczniowie;                    -- liczba wierszy
SELECT AVG(ocena), MAX(ocena), MIN(ocena), SUM(punkty) FROM wyniki;
SELECT klasa, COUNT(*) AS ilu FROM uczniowie GROUP BY klasa;            -- liczba uczniów w każdej klasie
SELECT klasa, AVG(ocena) FROM oceny GROUP BY klasa HAVING AVG(ocena) > 4;   -- tylko klasy ze średnią powyżej 4
  • COUNT(*) liczy wiersze, COUNT(pole) liczy tylko wiersze z niepustym polem.
  • WHERE filtruje wiersze przed grupowaniem, HAVING filtruje grupy po grupowaniu (można w nim użyć funkcji agregujących).
  • Funkcje działające na pojedynczych wartościach: UPPER(), LOWER(), LENGTH(), CONCAT(), ROUND(), YEAR(), NOW().

Łączenie tabel: JOIN

SQL
SELECT filmy.tytul, rezyserzy.nazwisko
FROM filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id;
  • Warunek ON łączy klucz obcy jednej tabeli z kluczem głównym drugiej.
  • JOIN (= INNER JOIN) zwraca tylko pary, które do siebie pasują.
  • LEFT JOIN zwraca wszystkie wiersze lewej tabeli, także bez pary (wtedy pola prawej to NULL). RIGHT JOIN odwrotnie.
  • Starszy zapis bez JOIN: FROM filmy, rezyserzy WHERE filmy.rezyserID = rezyserzy.id.

Podzbiory języka SQL: DQL – zapytania (SELECT), DML – zmiana danych (INSERT, UPDATE, DELETE), DDL – struktura (CREATE, ALTER, DROP), DCL – uprawnienia (GRANT, REVOKE).

W algebrze relacji: selekcja to wybór wierszy (WHERE), projekcja to wybór kolumn (lista po SELECT), złączenie to JOIN.

Które nazwisko spełnia warunek nazwisko LIKE '_a%'?

  1. Adamski
  2. Nawrocki
  3. Kowalska
  4. Zieliński

Której klauzuli użyć, aby pokazać tylko klasy, w których liczba uczniów przekracza 25?

  1. WHERE COUNT(*) > 25
  2. ORDER BY COUNT(*) > 25
  3. HAVING COUNT(*) > 25
  4. LIMIT 25

Tabela ma ceny 5, 10, 15, 20, 25. Ile rekordów zwróci WHERE cena BETWEEN 10 AND 20?

  1. 3
  2. 1
  3. 2
  4. 4
Lekcja 14 · SQL

Zmiana danych, struktura tabel i uprawnienia

Poza SELECT egzamin sprawdza polecenia, które zmieniają dane (DML), strukturę bazy (DDL) i uprawnienia użytkowników (DCL), a także kopie zapasowe i phpMyAdmin.

Zmiana danych (DML)

SQL
INSERT INTO uczniowie (imie, nazwisko, klasa) VALUES ('Jan', 'Nowak', '3A');
UPDATE produkty SET cena = cena * 0.9 WHERE kategoria = 'AGD';   -- obniżka o 10%
DELETE FROM mieszkancy WHERE status = 1;

Na egzaminie. UPDATE i DELETE bez WHERE zmieniają albo usuwają wszystkie rekordy tabeli. DELETE usuwa rekordy, a tabela zostaje. DROP TABLE usuwa całą tabelę ze strukturą, a TRUNCATE usuwa wszystkie rekordy naraz.

Struktura (DDL)

SQL
CREATE DATABASE szkola;
CREATE TABLE ksiazki (
  id INT PRIMARY KEY AUTO_INCREMENT,
  tytul VARCHAR(100) NOT NULL,
  cena DECIMAL(6,2) DEFAULT 0,
  autor INT,
  FOREIGN KEY (autor) REFERENCES autorzy(id)
);
ALTER TABLE ksiazki ADD rok YEAR;                 -- nowa kolumna
ALTER TABLE ksiazki MODIFY cena FLOAT;            -- zmiana typu kolumny
ALTER TABLE ksiazki CHANGE rok rok_wydania YEAR;  -- zmiana nazwy (i typu)
ALTER TABLE ksiazki DROP COLUMN rok_wydania;      -- usunięcie kolumny
ALTER TABLE uczniowie ADD PRIMARY KEY (id);
DROP TABLE ksiazki;                               -- usunięcie tabeli
CREATE VIEW tanie AS SELECT * FROM ksiazki WHERE cena < 20;   -- widok, czyli zapisane zapytanie
KlauzulaZnaczenie
PRIMARY KEYklucz główny: unikalny i niepusty
AUTO_INCREMENTkolejne liczby nadawane automatycznie
NOT NULLpole musi mieć wartość
UNIQUEwartości nie mogą się powtarzać (ale mogą być puste)
DEFAULT xwartość domyślna, gdy jej nie podano
FOREIGN KEY … REFERENCESklucz obcy wskazujący inną tabelę
CHECK (cena > 0)warunek, który musi spełniać wartość

Użytkownicy i uprawnienia (DCL)

SQL
CREATE USER 'adam'@'localhost' IDENTIFIED BY 'Haslo1!';
GRANT SELECT, INSERT, UPDATE ON sklep.klienci TO 'adam'@'localhost';
GRANT ALL PRIVILEGES ON sklep.* TO 'admin'@'localhost' WITH GRANT OPTION;
REVOKE DELETE, UPDATE ON sklep.klienci FROM 'adam'@'localhost';
SHOW GRANTS FOR 'adam'@'localhost';
DROP USER 'adam'@'localhost';
  • GRANT nadaje, REVOKE … FROM odbiera uprawnienia.
  • sklep.* to wszystkie tabele bazy sklep, *.* to wszystkie bazy.
  • WITH GRANT OPTION pozwala użytkownikowi przekazywać swoje uprawnienia innym.
  • Uprawnienia do danych: SELECT, INSERT, UPDATE, DELETE. Do struktury: CREATE, ALTER, DROP, INDEX. Administracyjne: CREATE USER, GRANT OPTION.
  • Role (CREATE ROLE) grupują uprawnienia, które potem nadaje się wielu użytkownikom naraz.

Na egzaminie. Przy kilku poleceniach GRANT i REVOKE dla kilku osób rozpisz sobie małą tabelkę: kto, jakie prawo, na jakiej tabeli. Pamiętaj, że REVOKE odbiera tylko wymienione uprawnienia, a reszta zostaje.

Kopie zapasowe i phpMyAdmin

  • phpMyAdmin to aplikacja WWW do zarządzania MySQL/MariaDB, wbudowana w pakiet XAMPP. Pozwala tworzyć tabele, pisać zapytania, eksportować bazę do pliku .sql (kopia zapasowa) i importować ją z powrotem.
  • Z wiersza poleceń kopię robi mysqldump -u root -p szkola > kopia.sql.
  • Przed kopią warto sprawdzić spójność bazy. Kopię trzeba przechowywać poza serwerem i co jakiś czas sprawdzać, czy da się ją odtworzyć.

Które polecenie podniesie cenę wszystkich produktów z kategorii „gry” o 5 zł?

  1. INSERT INTO produkty (cena) VALUES (cena + 5) WHERE kategoria = 'gry';
  2. ALTER TABLE produkty SET cena = cena + 5;
  3. UPDATE produkty SET cena = cena + 5;
  4. UPDATE produkty SET cena = cena + 5 WHERE kategoria = 'gry';

Którym poleceniem odebrać użytkownikowi prawo usuwania rekordów?

  1. GRANT NO DELETE ON baza.* TO 'jan'@'localhost';
  2. REVOKE DELETE ON baza.* FROM 'jan'@'localhost';
  3. DROP DELETE FROM 'jan'@'localhost';
  4. DELETE GRANT FROM 'jan'@'localhost';
Lekcja 15 · Serwer i sieć

Jak strona trafia do przeglądarki. Systemy CMS

Ta lekcja porządkuje to, co dzieje się między serwerem a przeglądarką: protokoły, porty, domeny, podział na stronę klienta i serwera, a także systemy zarządzania treścią.

Klient i serwer

Po stronie klienta (front-end)Wykonuje przeglądarka: HTML, CSS, JavaScript. Użytkownik może podejrzeć ten kod.
Po stronie serwera (back-end)Wykonuje serwer: PHP, Python, Java, C#, Ruby, Node.js oraz bazy danych. Do przeglądarki trafia tylko wynik.

Typowy zestaw do uruchomienia strony z PHP to serwer WWW Apache + PHP + MySQL/MariaDB. Pakiet XAMPP instaluje je razem (plus phpMyAdmin), WAMP i LAMP to podobne zestawy na Windows i Linux. Inne serwery WWW: nginx, Microsoft IIS.

Protokoły i porty

ProtokółDo czegoPort
HTTPprzesyłanie stron WWW80
HTTPSHTTP szyfrowany protokołem TLS (SSL); kłódka w pasku adresu443
FTPprzesyłanie plików, np. publikacja strony na serwerze21 (i 20)
SFTP / FTPSszyfrowane przesyłanie plików22 / 990
SSHbezpieczne zdalne logowanie do serwera22
DNSzamiana nazwy domeny na adres IP53
SMTP / POP3 / IMAPwysyłanie / odbieranie poczty25 / 110 / 143
MySQLpołączenie z serwerem bazy3306

W pliku konfiguracyjnym Apache httpd.conf linia Listen 80 ustawia port, na którym serwer nasłuchuje. Program do FTP to np. FileZilla: łączy się z serwerem (adres, login, hasło) i kopiuje pliki strony do katalogu publicznego (np. public_html, htdocs).

Adres strony

https://www.zstplock.pl:443/materialy/index.html?id=5#sekcja to: protokół, nazwa domeny (www to subdomena, .pl domena najwyższego poziomu), port, ścieżka do pliku, parametry zapytania (GET) i kotwica. Domenę kupuje się u rejestratora, a DNS kieruje ją na adres IP serwera hostingowego. Parkowanie domeny to skierowanie jej na tymczasową stronę, zanim powstanie właściwa.

Kody odpowiedzi HTTP

KodZnaczenie
200 OKwszystko w porządku
301 / 302przekierowanie stałe / tymczasowe
403 Forbiddenbrak dostępu
404 Not Foundzasób nie istnieje (zły adres)
500 Internal Server Errorbłąd po stronie serwera, np. w skrypcie

Ciasteczka i sesje

HTTP jest bezstanowy: serwer nie pamięta poprzednich żądań. Do zapamiętywania stanu służą ciasteczka (małe pliki tekstowe zapisane w przeglądarce, np. zapamiętanie głosu w ankiecie, wybranego języka, zawartości koszyka) i sesje (dane na serwerze, a w ciasteczku tylko ich identyfikator).

Systemy CMS

CMS (Content Management System, system zarządzania treścią) pozwala prowadzić stronę bez programowania. Treść przechowuje w bazie danych, a wygląd określa szablon (motyw). Przykłady: WordPress, Joomla!, Drupal, PrestaShop i Magento (sklepy). Apache, XAMPP, Flash czy Photoshop nie są systemami CMS.

PojęcieZnaczenie
motyw / szablonwygląd całej strony
wtyczka (plugin) / rozszerzeniedodatkowa funkcja, np. formularz, galeria, SEO
widżet / modułblok treści w wybranym miejscu szablonu, np. kalendarz w panelu bocznym
wpis / stronaw WordPressie: treść chronologiczna z kategoriami / treść stała, np. „Kontakt”
panel administracyjnyzaplecze do zarządzania (w WordPressie /wp-admin)
role użytkownikównp. administrator, redaktor, autor, subskrybent

Instalacja CMS: utwórz bazę danych i jej użytkownika, wgraj pliki na serwer (FTP), uruchom instalator w przeglądarce i podaj dane połączenia z bazą.

Które oprogramowanie nie jest systemem CMS?

  1. WordPress
  2. Joomla!
  3. Apache
  4. Drupal

Jaki kod HTTP zwróci serwer, gdy użytkownik wpisze adres nieistniejącej strony?

  1. 404
  2. 200
  3. 500
  4. 301

Co z wymienionych działa po stronie klienta?

  1. PHP
  2. MySQL
  3. Apache
  4. CSS
Lekcja 16 · Bezpieczeństwo i prawo

Bezpieczeństwo, prawo autorskie, dostępność i SEO

Kilka pytań w każdym arkuszu dotyczy ochrony strony i bazy, licencji oprogramowania, dostępności dla osób z niepełnosprawnościami, pozycjonowania i BHP przy komputerze.

Typowe ataki i obrona

AtakNa czym polegaOchrona
SQL injectionw polu formularza wpisuje się fragment SQL, np. ' OR '1'='1, który zmienia zapytaniezapytania przygotowane, mysqli_real_escape_string(), sprawdzanie danych
XSSwstrzyknięcie skryptu JavaScript, który wykona się u innych użytkownikówhtmlspecialchars() przy wypisywaniu danych od użytkowników
łamanie haseł (brute force, słownikowy)próbowanie wielu hasełsilne hasła, limit prób, CAPTCHA, dwuetapowe logowanie
podsłuch transmisjiprzechwycenie danych w sieciHTTPS (TLS), SFTP zamiast FTP
DoS / DDoSprzeciążenie serwera masą żądańzapora, filtrowanie ruchu
  • Haseł nie zapisuje się w bazie otwartym tekstem, tylko jako skrót (hash): w PHP password_hash() i password_verify(). Funkcje md5() i sha1() są dziś uważane za za słabe do haseł.
  • Certyfikat SSL/TLS potwierdza tożsamość właściciela witryny i pozwala szyfrować połączenie (HTTPS, kłódka w pasku adresu).
  • Ochrona serwera bazy: silne hasła, osobny użytkownik z najmniejszymi potrzebnymi uprawnieniami dla aplikacji, aktualizacje, zapora, kopie zapasowe. Defragmentacja dysku nie ma nic wspólnego z bezpieczeństwem.

Prawo autorskie i licencje

LicencjaCo wolno
freewareużywać za darmo, bez dostępu do kodu i bez zmian
sharewareużywać za darmo przez okres próbny lub z ograniczeniami, potem trzeba zapłacić
trial / demowersja próbna z ograniczonym czasem lub funkcjami
GNU GPL (open source)używać, poznawać kod, zmieniać i rozpowszechniać, ale zmienioną wersję też trzeba udostępnić na GPL
MIT, BSDprawie wszystko, także w programach zamkniętych, z zachowaniem informacji o autorze
adwaredarmowy, ale wyświetla reklamy
OEM / BOXlicencja przypisana do komputera / w pudełku, przenośna
Creative Commonsdla utworów (zdjęcia, teksty): BY – podaj autora, NC – nie komercyjnie, ND – bez zmian, SA – na tych samych warunkach

Autorskie prawa osobiste (np. do autorstwa) są bezterminowe i nie można ich przenieść. Prawa majątkowe (do zarabiania na utworze) można sprzedać, wygasają 70 lat po śmierci autora. Z cudzych zdjęć i czcionek na stronie wolno korzystać tylko zgodnie z ich licencją.

Dostępność (WCAG)

  • Wytyczne WCAG opisują, jak tworzyć strony dostępne dla osób z niepełnosprawnościami (poziomy A, AA, AAA). Instytucje publiczne w Polsce muszą spełniać WCAG 2.1 na poziomie AA.
  • Opisuj obrazy w alt, używaj nagłówków w kolejności i znaczników semantycznych, zapewnij kontrast tekstu do tła co najmniej 4,5:1 (dla dużego tekstu 3:1), obsługę klawiaturą i podpisy do filmów.
  • Nie przekazuj informacji wyłącznie kolorem, podpisuj pola formularzy (<label>).

SEO, czyli pozycjonowanie

SEO to działania, które poprawiają pozycję strony w wynikach wyszukiwarki: trafny <title> i meta description, nagłówki h1–h6 ze słowami kluczowymi, przyjazne adresy, tekst alternatywny obrazów, szybkie ładowanie, wersja mobilna, linki z innych stron. Plik robots.txt mówi robotom, czego nie indeksować, a sitemap.xml wymienia podstrony do zaindeksowania.

BHP przy komputerze

  • Górna krawędź ekranu na wysokości oczu lub nieco niżej, odległość 40–75 cm, ekran prostopadle do okna (bez odbić).
  • Po każdej godzinie pracy przy monitorze co najmniej 5 minut przerwy wliczanej do czasu pracy.
  • Szkolenie okresowe BHP pracowników inżynieryjno-technicznych powtarza się co 5 lat, a na stanowiskach administracyjno-biurowych co 6 lat.

Atak, w którym w pole logowania wpisuje się ' OR '1'='1, to

  1. XSS
  2. SQL injection
  3. DDoS
  4. phishing

Program można bezpłatnie używać przez 30 dni, potem trzeba go kupić. To licencja

  1. freeware
  2. GNU GPL
  3. public domain
  4. shareware
Lekcja 17 · Podstawy informatyki

Algorytmy, typy danych i systemy liczbowe

Pytania z tej części są ogólne: jak zapisać algorytm, co oblicza podany fragment kodu, jaki typ danych wybrać i jak przeliczać liczby między systemami.

Zapis algorytmu

Algorytm to skończony ciąg kroków prowadzący do rozwiązania. Zapisuje się go listą kroków, pseudokodem albo schematem blokowym:

BlokKształtZnaczenie
początek / koniecowal (elipsa)start i stop algorytmu
operacyjnyprostokątobliczenie, przypisanie, np. s ← s + i
decyzyjny (warunkowy)rombwarunek z dwoma wyjściami: TAK / NIE
wejścia / wyjściarównoległobokwczytanie danych, wypisanie wyniku
wywołanie podprogramuprostokąt z podwójnymi bokamiużycie funkcji
łącznikkółkopołączenie części schematu

Pętla w schemacie to romb, z którego strzałka wraca do wcześniejszego bloku. Aby znaleźć największą z trzech liczb, wystarczą dwa porównania (dwa bloki decyzyjne).

Jak czytać kod w pytaniu

Gdy pytanie pyta „co oblicza algorytm”, rozpisz w tabelce wartości zmiennych w kolejnych obrotach pętli. Typowe wzorce:

pseudokod / JavaScript / PHP
s = 0; for (i = 0; i < n; i++) s += t[i];          // suma elementów; s / n to średnia
s = 0; for (i = 0; i < n; i += 2) s += t[i];       // suma co drugiego elementu (indeksy parzyste)
m = t[0]; for (i = 1; i < n; i++) if (t[i] < m) m = t[i];   // minimum
if (x % 2 == 0) …                                  // liczba parzysta
while (n > 0) { s += n % 10; n = Math.floor(n / 10); }   // suma cyfr

Złożoność i klasyczne algorytmy

  • Złożoność obliczeniowa mówi, jak rośnie liczba operacji z rozmiarem danych n. Szukanie minimum albo przejście tablicy: O(n). Wyszukiwanie binarne w posortowanej tablicy: O(log n). Sortowanie bąbelkowe i przez wybieranie: O(n²). Sortowanie szybkie i przez scalanie: średnio O(n log n).
  • Wyszukiwanie liniowe sprawdza elementy po kolei. Binarne (połówkowe) dzieli posortowany zbiór na pół przy każdym kroku.
  • Rekurencja to wywołanie funkcji przez samą siebie (np. silnia: n! = n · (n−1)!), musi mieć warunek zakończenia. Iteracja to powtarzanie w pętli.

Typy danych i języki

  • Proste: całkowity (int, integer), zmiennoprzecinkowy (float, double, real – liczby z ułamkiem, np. 2.4), logiczny (bool: true/false), znakowy (char) i tekstowy (string).
  • Złożone: tablica (elementy tego samego typu z indeksami), tablica asocjacyjna (klucz → wartość), struktura / rekord, klasa / obiekt.
  • W programowaniu obiektowym: klasa to wzorzec, obiekt to jej egzemplarz, pola przechowują dane, metody to funkcje klasy. Modyfikatory dostępu: public (dostęp z zewnątrz), private (tylko w klasie), protected (w klasie i klasach pochodnych).
  • Kompilator tłumaczy cały program na kod maszynowy przed uruchomieniem (C++, C#). Interpreter wykonuje kod linijka po linijce (PHP, JavaScript, Python).

Systemy liczbowe

DziesiętnieDwójkowoSzesnastkowo
51015
101010A
151111F
161 000010
2551111 1111FF
  • Dwójkowy → dziesiętny: dodaj potęgi dwójki tam, gdzie stoi 1. 1011₂ = 8 + 0 + 2 + 1 = 11.
  • Dziesiętny → dwójkowy: dziel przez 2 i zapisuj reszty od końca. 13 → 1101₂.
  • Dwójkowy ↔ szesnastkowy: każde 4 bity to jedna cyfra szesnastkowa. 1010 1111₂ = AF₁₆.
  • System ósemkowy: każde 3 bity to jedna cyfra (0–7).

Bit to 0 lub 1, bajt to 8 bitów i przyjmuje 256 wartości (0–255). 1 KB = 1024 B (ściśle KiB; w układzie SI 1 kB = 1000 B). Kodowanie znaków: ASCII (7 bitów, 128 znaków, bez polskich liter), ISO-8859-2 i Windows-1250 (polskie znaki w 8 bitach), Unicode / UTF-8 (wszystkie alfabety, standard stron WWW).

Ile wynosi dziesiętnie liczba 101011₂?

  1. 53
  2. 45
  3. 43
  4. 23

Jakim kształtem w schemacie blokowym oznacza się warunek?

  1. rombem
  2. prostokątem
  3. równoległobokiem
  4. owalem

Jaka jest złożoność obliczeniowa szukania najmniejszego elementu w nieuporządkowanej tablicy n liczb?

  1. O(1)
  2. O(n)
  3. O(n²)
  4. O(log n)
Na koniec

Egzamin próbny i plan powtórki

Masz za sobą wszystkie działy. Teraz sprawdź się tak, jak na prawdziwym egzaminie: 40 losowych pytań z całej bazy, 60 minut, próg 50%.

Rozpocznij egzamin próbny →

Egzamin otworzy się w pełnej bazie pytań INF.03 (ponad 2600 pytań z objaśnieniami). Błędnie rozwiązane pytania trafią tam do zakładki „Do powtórki”.

Jak powtarzać

  1. Rozwiąż egzamin próbny bez zaglądania do notatek.
  2. Przy każdym błędzie przeczytaj objaśnienie i wróć do lekcji z tego działu.
  3. Po kilku dniach przerób zakładkę „Do powtórki”, aż będzie pusta.
  4. Powtórz egzamin. Celuj w 30+ punktów, a nie w 20, bo na egzaminie dochodzi stres.

Ściąga z najczęstszych pułapek

TematZapamiętaj
marginesy CSSkolejność: góra, prawo, dół, lewo
padding a marginpadding wewnątrz ramki, margin na zewnątrz
szerokość blokuwidth + 2·padding + 2·border
kolor szesnastkowopara cyfr = pierwsza·16 + druga; FF = 255
. i # w CSSkropka = klasa, krzyżyk = id
łączenie tekstówPHP: kropka, JavaScript: plus
== i ====== porównuje też typ
GET i POSTGET w adresie URL, POST w treści żądania
LIKE% dowolny ciąg, _ jeden znak
WHERE i HAVINGWHERE na wierszach, HAVING na grupach
DELETE, DROPDELETE usuwa rekordy, DROP całą tabelę
GRANT, REVOKEGRANT … TO, REVOKE … FROM
num_rows, affected_rowspierwsze po SELECT, drugie po INSERT/UPDATE/DELETE
RGB, CMYKRGB ekran, CMYK druk
przezroczystośćPNG (kanał alfa); JPG jej nie ma
portyHTTP 80, HTTPS 443, FTP 21, SSH 22, MySQL 3306
klient i serwerHTML, CSS, JS w przeglądarce; PHP i SQL na serwerze