INF.03-06-25.01-SGStyczeń 2025 · 35 kroków · ok. 72 min · 40 kryteriów z klucza
Rozwiązanie krok po kroku: Serwis o systemach liczbowych (Wersja podstawowa)
Rozwiązanie buduje serwis o pozycyjnych systemach liczbowych: baza szachy z zawodnikami szkolnego koła i cztery zapytania - wzorzec daty LIKE, dwa warunki naraz, sortowanie z limitemORDER BY ... LIMIT i różnica datDATEDIFF z aliasem, potem grafika (lustrzane odbicie cyfry 2 z nowym kolorem i przezroczystym tłem) i animacja GIF z szesnastu cyfr szesnastkowych, strona systemy.html z tabelą, listą definicji i kalkulatorem oraz style w styl.css. PHP tu nie ma: skrypt działa w przeglądarce, w JavaScripcie - zamienia liczbę dziesiętną na binarną, dzieli ją na grupy po cztery cyfry i dopisuje oznaczenie systemu w indeksie dolnym.
Kroki idą zdanie po zdaniu za treścią arkusza - przy każdym jest polecenie z arkusza, a kod pokazuje dokładnie te linie, które je spełniają. Skrypt jest pisany według algorytmu z arkusza (K1 - K6), a na końcu pojawia się wersja z prawdziwych projektów: słuchacz zdarzenia, sprawdzenie wpisanej liczby i wbudowane toString(2).
To jest wersja podstawowa. W zakładce „Nowoczesny kod (grid, osobny skrypt)” jest drugi sposób rozwiązania tego samego arkusza: trzy bloki na siatce CSS i skrypt w osobnym pliku z nasłuchiwaniem zdarzenia, sprawdzeniem wpisanej liczby i wynikiem budowanym bez innerHTML - obie wersje są zgodne z kluczem.
Baza, cyfry i tekst słowniczka pochodzą z prawdziwego archiwum pliki14 (załącznik do arkusza, hasło w treści zadania). Zapytania i zrzuty są policzone na MariaDB 10.4 - tej samej, która jest w XAMPP (zapytanie 4 liczy dni do dnia uruchomienia, tutaj 2026-10-02). Kalkulator w podglądzie działa naprawdę - wpisz liczbę i kliknij „Przelicz na binarny”.
Jak liczą się punkty. Klucz ma 40 kryteriów (R.1.1 - R.5.7), każde za 1 punkt. Próg zdania części praktycznej to 75%, czyli 30 punktów - można stracić 10 kryteriów i nadal zdać. Przy każdym kroku jest napisane, które kryteria spełnia; egzaminator ocenia spełnienie kryteriów z klucza, nie zgodność z tym kodem.
Suwak i strzałki obok niego - albo ←→ na klawiaturze - przechodzą krok po kroku; wyjaśnienie, pliki i podgląd zmieniają się razem z krokiem.
Lista „Etap” przenosi od razu do wybranego etapu.
„Rozwiązuję samodzielnie” chowa rozwiązanie kroku - najpierw własna próba, potem odsłonięcie.
„Tryb prezentacji” pokazuje same kroki, bez menu strony - na rzutnik.
Etap 1: Baza danych
Kroki 1-7 · po tym etapie masz 6 z 40 kryteriów (pkt)
Krok 1: Baza danych szachy
Kryteria:
R.1.1 Wykonany import tabeli do bazy danych szachy , co jest udokumentowane w pliku import.png
ok. 2 min
Polecenie z arkusza
Utwórz bazę danych o nazwie szachy, z zestawem polskich znaków (np. utf8_unicode_ci).
Rozpakuj pliki14.7z z pulpitu (hasło Cyf3rki#) do folderu z numerem zdającego: szachy.sql, szesnaście obrazów cyfr (0.png - F.png, w tym 2a.png do przerobienia) i systemy.txt z tekstem słowniczka. W phpMyAdmin: Nowa, nazwa szachy, porównywanie np. utf8_unicode_ci.
Krok 2: Import tabeli z pliku szachy.sql
Kryteria:
R.1.1 Wykonany import tabeli do bazy danych szachy , co jest udokumentowane w pliku import.png
ok. 2 min
Polecenie z arkusza
Do utworzonej bazy zaimportuj tabele z pliku szachy.sql z rozpakowanego archiwum.
Import → szachy.sql. Jedna tabela zawodnicy (94 wiersze): pseudonim, tytuł (dwuliterowy skrót, np. OM, albo pusty), data zdobycia tytułu, ranking i klasa.
Krok 3: Zrzut ekranu import.png
Kryteria:
R.1.1 Wykonany import tabeli do bazy danych szachy , co jest udokumentowane w pliku import.png
ok. 2 min
Polecenie z arkusza
Wykonaj zrzut ekranu po imporcie. Zapisz zrzut w formacie PNG pod nazwą import. Nie kadruj zrzutu. Powinien on obejmować cały ekran monitora, z widocznym paskiem zadań. Na zrzucie powinny być widoczne elementy wskazujące na poprawnie wykonany import tabel.
Print Screen i zapis jako import.png - tu wszystkie zrzuty są w PNG.
Typowe błędy
Wykadrowany zrzut albo zrzut bez paska zadań nie jest oceniany (uwaga w kluczu przy R.1).
Krok 4: Zapytanie 1: tytuły z lipca 2020
Kryteria: ,
R.1.2 Zapisany plik kwerendy.txt zawierający co najmniej jedno zapytanie SQL, wynikające z treści zadania
R.1.3 Wykonane zapytanie 1 wybierające jedynie pseudonimy zawodników, którzy zdobyli tytuł w lipcu 2020 roku. W pliku z kwerendami lub na zrzucie istnieje zapis np.: SELECT pseudonim FROM zawodnicy WHERE data_zdobycia LIKE "2020- 07%";(lub zakres dat ) oraz wynik działania udokumentowany zrzutem, na którym widoczne są dokładnie 3 rekordy z wartościami: Hiikar, BananD, WanHao
ok. 2 min
Polecenie z arkusza
Zapytanie 1: wybierające jedynie pseudonimy zawodników, którzy zdobyli tytuł w lipcu 2020 roku.
Data w MySQL ma postać RRRR-MM-DD, więc „lipiec 2020” to wszystko, co zaczyna się od 2020-07: warunek LIKE "2020-07%". Równoważnie zakres: data_zdobycia BETWEEN "2020-07-01" AND "2020-07-31". Wynik: Hiikar, BananD, WanHao - jak w kluczu. Zapytanie do kwerendy.txt, zrzut kw1.png.
kwerendy.txtTekstnowy plik
-- Zapytanie 1SELECT pseudonim FROM zawodnicy WHERE data_zdobycia LIKE "2020-07%";
Podgląd strony po tym kroku
Krok 5: Zapytanie 2: klasa 3A z tytułem
Kryteria:
R.1.4 Wykonane zapytanie 2 wybierające jedynie pseudonimy i tytuły zawodników z klasy 3A oraz zdobyli dowolny, niepusty tytuł. W pliku z kwerendami lub na zrzucie istnieje zapis np.: SELECT pseudonim, tytul FROM zawodnicy WHERE klasa = "3A" AND tytul != ""; (NULL jest błędem ) oraz wynik działania udokumentowany zrzutem, na którym widoczne są dokładnie 4 rekordy z danymi: Botas Bross, KM; BananD, PM; DavNav, OM; JanNie, OM
ok. 2 min
Polecenie z arkusza
Zapytanie 2: wybierające jedynie pseudonimy i tytuły zawodników z klasy 3A który zdobyli dowolny, niepusty tytuł.
Dwa warunki naraz łączy AND. „Niepusty tytuł” to tytul != "" - w tej bazie zawodnik bez tytułu ma w tym polu pusty napis, a nie NULL (pustych napisów jest 64, wartości NULL - 0). Dlatego klucz uznaje warunek tytul IS NOT NULL za błąd: przepuściłby wszystkich. Wynik: Botas Bross KM, BananD PM, DavNav OM, JanNie OM. Zrzut: kw2.png.
Typowe błędy
tytul IS NOT NULL zwraca też zawodników bez tytułu - puste pole to tu "", nie NULL.
kwerendy.txtTekstzmienione: 3 linie
-- Zapytanie 1SELECT pseudonim FROM zawodnicy WHERE data_zdobycia LIKE "2020-07%";-- Zapytanie 2SELECT pseudonim, tytul FROM zawodnicy WHERE klasa = "3A" AND tytul != "";
Podgląd strony po tym kroku
Krok 6: Zapytanie 3: dziesięciu z najniższym rankingiem
Kryteria:
R.1.5 Wykonane zapytanie 3 wybierające jedynie pseudonim, klasę i ranking dla pierwszych 10 zawodników o najniższej pozycji w rankingu, posortowane malejąco lub rosnąco według rankingu. W pliku z kwerendami lub na zrzucie istnieje zapis np.: SELECT pseudonim, klasa, ranking FROM zawodnicy ORDER BY ranking LIMIT 10; (poprawnie ASC lub DESC ) oraz wynik działania udokumentowany zrzutem, na którym widocznych jest dokładnie 10 rekordów
ok. 2 min
Polecenie z arkusza
Zapytanie 3: wybierające jedynie pseudonim, klasę i ranking dla pierwszych 10 zawodników o najniższej pozycji w rankingu, posortowane według rankingu.
ORDER BY ranking - rosnąco, od najniższej wartości,
LIMIT 10 - tylko dziesięć pierwszych wierszy wyniku.
LIMIT działa na wynik już posortowany, więc kolejność klauzul ma znaczenie: najpierw ORDER BY, potem LIMIT. Klucz przyjmuje sortowanie rosnące i malejące („najniższa pozycja” można czytać dwojako) - ważne, żeby wierszy było dokładnie 10. Zrzut: kw3.png.
kwerendy.txtTekstzmienione: 3 linie
-- Zapytanie 1SELECT pseudonim FROM zawodnicy WHERE data_zdobycia LIKE "2020-07%";-- Zapytanie 2SELECT pseudonim, tytul FROM zawodnicy WHERE klasa = "3A" AND tytul != "";-- Zapytanie 3SELECT pseudonim, klasa, ranking FROM zawodnicy ORDER BY ranking LIMIT 10;
Podgląd strony po tym kroku
Krok 7: Zapytanie 4: ile dni od zdobycia tytułu
Kryteria:
R.1.6 Wykonane zapytanie 4 wybierające dla zawodników z niepustym tytułem jedynie pseudonim i datę zdobycia oraz obliczające ile minęło dni od daty zdobycia tytułu do dnia dzisiejszego. Obliczenie liczby dni jest zapisane pod nazwą kolumny (aliasem) „dni”. W pliku z kwerendami lub na zrzucie istnieje zapis np.: SELECT pseudonim, data_zdobycia, DATEDIFF(CURRENT_DATE(), data_zdobycia) AS dni FROM zawodnicy WHERE tytul != ''; (lub curdate(), now(), poprawne też bez AS ) oraz wynik działania udokumentowany zrzutem, na którym widoczny jest komunikat o wybranych dokładnie 30 rekordach, pierwszy rekord dla Hikar, 2020-07-12, <wartość różnicy dat>. Nie wszystkie rekordy muszą być widoczne
ok. 3 min
Polecenie z arkusza
Zapytanie 4: wybierające dla zawodników z niepustym tytułem jedynie pseudonim i datę zdobycia oraz obliczające ile minęło dni od daty zdobycia tytułu do dnia dzisiejszego. Obliczona liczba dni powinna być zapisana pod nazwą kolumny (aliasem) „dni”.
DATEDIFF(późniejsza, wcześniejsza) zwraca liczbę dni między datami; dzisiejszą datę daje CURDATE() (albo CURRENT_DATE()). Kolejność argumentów ma znaczenie - odwrotna da wynik ujemny. AS dni nadaje kolumnie nazwę. Wynik: 30 wierszy, pierwszy Hiikar, 2020-07-12; liczba dni zależy od dnia uruchomienia - tu 2026-10-02: 2273. Zrzut: kw4.png.
Typowe błędy
DATEDIFF(data_zdobycia, CURDATE()) daje liczby ujemne - pierwszym argumentem jest data późniejsza.
kwerendy.txtTekstzmienione: 3 linie
-- Zapytanie 1SELECT pseudonim FROM zawodnicy WHERE data_zdobycia LIKE "2020-07%";-- Zapytanie 2SELECT pseudonim, tytul FROM zawodnicy WHERE klasa = "3A" AND tytul != "";-- Zapytanie 3SELECT pseudonim, klasa, ranking FROM zawodnicy ORDER BY ranking LIMIT 10;-- Zapytanie 4SELECT pseudonim, data_zdobycia, DATEDIFF(CURDATE(), data_zdobycia) AS dni FROM zawodnicy WHERE tytul != "";
Podgląd strony po tym kroku
Etap 2: Grafika i animacja
Kroki 8-9 · po tym etapie masz 8 z 40 kryteriów (pkt)
R.2.2 Cyfra 2 z pliku 2.png jest koloru niebieskiego, odwrócona w poprawną stronę oraz zapisana z przezroczystym tłem
ok. 5 min
Polecenie z arkusza
Przygotowanie grafiki 2.png: utworzona na bazie grafiki 2a.png, w ten sposób że jest jej lustrzanym odbiciem względem osi pionowej. Kolor czcionki, którą zapisano cyfrę „2”, niebieski (0000FF). Tło przezroczyste. Nazwa grafiki 2.png.
2a.png to czerwona, odwrócona dwójka na żółtym tle. W GIMP-ie:
Obraz → Przekształć → Odbij poziomo - odbicie względem osi pionowej (lewa strona zamienia się z prawą) i cyfra staje się czytelna,
Kolory → Kolor na alfę z kolorem tła (żółty) - tło staje się przezroczyste; warstwa musi mieć kanał alfa (Warstwa → Przezroczystość → Dodaj kanał alfa),
kolor cyfry: Zaznaczenie → Według koloru na cyfrze i wypełnienie kolorem 0000FF,
Klucz sprawdza kolor, kierunek cyfry i przezroczyste tło (R.2.2).
Typowe błędy
Odbij pionowo odbija względem osi poziomej - cyfra stanie „do góry nogami”.
Podgląd strony po tym kroku
Krok 9: Animacja cyfry.gif: 16 klatek po 750 ms
Kryteria:
R.2.1 Utworzony plik cyfry.gif o rozmiarze 200 x 200 px, z przezroczystością, zawierający animację złożoną z kolejnych cyfr szesnastkowych 0 - F, ustawiona jedna klatka na warstwę oraz ustawiony czas wyświetlenia obrazów na 750 ms co jest udokumentowane zrzutem parametry_animacji.png
ok. 5 min
Polecenie z arkusza
Przygotowanie animacji o nazwie cyfry.gif: na animację składają się pliki, kolejno: 0.png, 1.png, 2.png, 3.png, 4.png, 5.png, 6.png, 7.png, 8.png, 9.png, A.png, B.png, C.png, D.png, E.png i F.png. Nie należy zmieniać właściwości grafik: przezroczystości i wymiarów 200 x 200 px. Każdy obraz jest pokazywany w animacji przez 750 ms, jedna klatka na warstwę. Udokumentuj ustawienie parametru za pomocą zrzutu ekranu o nazwie parametry_animacji.png.
Plik → Otwórz jako warstwy - wszystkie szesnaście plików, z nowym 2.png zamiast 2a.png. Najniższa warstwa to pierwsza klatka: 0 na dole, F na górze (w razie potrzeby Warstwa → Stos → Odwróć kolejność warstw). Eksportuj jakocyfry.gif: zaznaczone Jako animację, opóźnienie 750 ms, rozmieszczenie Jedna klatka na warstwę (zastąp). Zrzut okna eksportu z całego ekranu: parametry_animacji.png (R.2.1). Animacja w podglądzie odlicza cyfry 0 - F.
Typowe błędy
Bez trybu „zastąp” klatki nakładają się na siebie - na przezroczystym tle widać wtedy wszystkie cyfry naraz.
Podgląd strony po tym kroku
Etap 3: Strona HTML
Kroki 10-20 · po tym etapie masz 22 z 40 kryteriów (pkt)
Krok 10: Plik systemy.html w HTML5
Kryteria:
R.2.3 Witryna internetowa zapisana w pliku systemy.html oraz zapisany jawnie standard kodowania polskich znaków, deklaracja HTML5 <!DOCTYPE HTML>, zadeklarowany język witryny: polski np. <html lang="pl"> oraz nadany tytuł strony "Systemy liczbowe”. Strona zawiera sekcje head i body
ok. 1 min
Polecenie z arkusza
Cechy witryny: Składa się ze strony o nazwie systemy.html. Zapisana w języku HTML5.
Jedna strona, systemy.html. Skrypt działa w przeglądarce, więc serwer nie jest potrzebny.
R.2.3 Witryna internetowa zapisana w pliku systemy.html oraz zapisany jawnie standard kodowania polskich znaków, deklaracja HTML5 <!DOCTYPE HTML>, zadeklarowany język witryny: polski np. <html lang="pl"> oraz nadany tytuł strony "Systemy liczbowe”. Strona zawiera sekcje head i body
R.2.3 Witryna internetowa zapisana w pliku systemy.html oraz zapisany jawnie standard kodowania polskich znaków, deklaracja HTML5 <!DOCTYPE HTML>, zadeklarowany język witryny: polski np. <html lang="pl"> oraz nadany tytuł strony "Systemy liczbowe”. Strona zawiera sekcje head i body
ok. 1 min
Polecenie z arkusza
Jawnie zastosowany właściwy standard kodowania polskich znaków.
R.2.3 Witryna internetowa zapisana w pliku systemy.html oraz zapisany jawnie standard kodowania polskich znaków, deklaracja HTML5 <!DOCTYPE HTML>, zadeklarowany język witryny: polski np. <html lang="pl"> oraz nadany tytuł strony "Systemy liczbowe”. Strona zawiera sekcje head i body
ok. 1 min
Polecenie z arkusza
Tytuł strony widoczny na karcie przeglądarki: „Systemy liczbowe”.
R.3.2 Strona zawiera działające połączenie z zewnętrznym arkuszem stylów o nazwie styl.css formatowanie CSS pochodzi jedynie z tego arkusza. Uwaga: kryterium to nie jest spełnione również, gdy zdający źle przypisał co najmniej jeden selektor do bloku (np. kropka zamiast #)
ok. 1 min
Polecenie z arkusza
Arkusz stylów w pliku o nazwie styl.css prawidłowo połączony z kodem strony.
R.2.4 Zdefiniowany układ strony dzielący ją na bloki: nagłówkowy, lewy, środkowy, prawy i stopki przy pomocy semantycznych znaczników sekcji języka HTML5 zgodnie z ich znaczeniem, w tym do części nagłówkowej - header, do stopki - footer. Dopuszcza się dodatkowe użycie bloków div lub section
ok. 2 min
Polecenie z arkusza
Podział strony na bloki: nagłówkowy, poniżej trzy bloki umieszczone obok siebie, na dole stopka. Podział zrealizowany za pomocą semantycznych znaczników sekcji języka HTML5 tak, aby po uruchomieniu w przeglądarce wygląd układu bloków był zgodny z ilustracją 3.
<header>, trzy <section> (left, middle, right) i <footer> (R.2.4).
R.2.5 Umieszczone w bloku nagłówkowym <h1>: „Pozycyjne systemy liczbowe”, w bloku prawym <h2>: "Słowniczek" oraz w stopce paragraf z numerem zdającego
R.2.9 W bloku nagłówkowym umieszczona animacja z tekstem alternatywnym "Cyfry szesnastkowe"
ok. 1 min
Polecenie z arkusza
Zawartość bloku nagłówkowego: Animacja cyfry.gif z tekstem alternatywnym „Cyfry szesnastkowe”. Nagłówek pierwszego stopnia o treści „Pozycyjne systemy liczbowe”.
Animowany GIF wstawia się jak zwykły obraz (R.2.9). Na razie ma 200 px - zmniejszy go styl.
R.2.6 W bloku lewym utworzona tabela o 3 kolumnach i 7 wierszach, wyświetlająca w kolumnach cyfry A ÷ F i ich odpowiedniki w kodzie binarnym oraz dziesiętnym. Zastosowane znaczniki <table>, <tr>, <td>
R.2.7 Pierwszy wiersz tabeli zawiera komórki nagłówkowe, zastosowany znacznik <th>
ok. 3 min
Polecenie z arkusza
Zawartość bloku lewego: Tabela o 3 kolumnach i 7 wierszach, której układ oraz zawartość przedstawia ilustracja 4. Pierwszy wiersz składa się z komórek nagłówkowych.
Pierwszy wiersz to <th> (HEX, BIN, DEC), dalej sześć wierszy <td> z cyframi A - F: A = 1010₂ = 10, … F = 1111₂ = 15 (R.2.6, R.2.7).
R.2.10 W bloku środkowym umieszczone pole edycyjne oraz przycisk z napisem "Przelicz na binarny"
R.3.4 Pole edycyjne jest typu numerycznego
R.3.5 Dla pola edycyjnego zapisany atrybut placeholder= "Wpisz liczbę dziesiętną"
R.3.6 Zdefiniowane dla przycisku zdarzenie związane z jego wciśnięciem, które uruchamia funkcję skryptu (obsługa zdarzenia zdefiniowana w HTML np. onClick lub w skrypcie np. addEventListener zmienna.onClick = …)
ok. 3 min
Polecenie z arkusza
Zawartość bloku środkowego: Pole edycyjne przeznaczone do wpisywania liczb, z podpowiedzią: „Wpisz liczbę dziesiętną”. Przycisk o treści „Przelicz na binarny”, jego wciśnięcie uruchamia skrypt. Paragraf o treści: „Brak obliczeń”.
type="number" - pole na liczby (R.3.4); placeholder - szary napis-podpowiedź, który znika po wpisaniu (R.3.5),
przycisk z onclick="convert()" - funkcję napiszesz w części o skrypcie (R.3.6),
akapit result z napisem „Brak obliczeń” - skrypt podmieni go na wynik.
Krok 19: Blok prawy: słowniczek jako lista definicji
Kryteria: , ,
R.2.5 Umieszczone w bloku nagłówkowym <h1>: „Pozycyjne systemy liczbowe”, w bloku prawym <h2>: "Słowniczek" oraz w stopce paragraf z numerem zdającego
R.2.8 W bloku prawym umieszczona jedna lista definicji, zastosowany znacznik <dl>. Lista zawiera 3 terminy zapisane w znaczniku <dt>: "Binarny", "Decymalny" i "Heksadecymalny" oraz ich znaczenie w znaczniku <dd>
R.3.3 Kliknięcie napisu " Heksadecymalny" inicjuje otwarcie strony https://szesnastkowy_system_liczbowy.pl
ok. 3 min
Polecenie z arkusza
Zawartość bloku prawego: Nagłówek drugiego stopnia o treści „Słowniczek”. Lista definicji, zawierająca terminy i ich definicje. Tekst można skopiować z pliku systemy.txt. Termin „Heksadecymalny” w liście definicji jest odnośnikiem prowadzącym do strony internetowej https://szesnastkowy_system_liczbowy.pl.
Lista definicji to <dl>: każdy termin w <dt>, a jego objaśnienie w <dd> tuż pod nim - przeglądarka wcina opis. Tekst kopiujesz z systemy.txt. Termin „Heksadecymalny” owijasz w odnośnik <a>wewnątrz<dt> (R.2.5, R.2.8, R.3.3).
systemy.htmlHTMLzmienione: 9 linii
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> </footer></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 20: Stopka z wyróżnionym autorem
Kryteria: ,
R.2.5 Umieszczone w bloku nagłówkowym <h1>: „Pozycyjne systemy liczbowe”, w bloku prawym <h2>: "Słowniczek" oraz w stopce paragraf z numerem zdającego
R.3.7 Zastosowany znacznik <em> do zapisu numeru zdającego
ok. 1 min
Polecenie z arkusza
Zawartość stopki: Paragraf o treści „Stronę opracował: ”, dalej numer zdającego. Numer jest formatowany semantycznym znacznikiem służącym do uwypuklenia tekstu, poprzez zapisanie go kursywą.
„Semantyczny znacznik uwypuklenia” zapisywany kursywą to <em> (emphasis). <i> też daje kursywę, ale tylko wizualną, bez znaczenia - klucz wymaga <em> (R.3.7). Na egzaminie w <em> wpisujesz swój numer zdającego (PESEL).
systemy.htmlHTMLzmienione: 1 linia
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer></body></html>
Podgląd strony po tym kroku (systemy.html)
Etap 4: Styl CSS
Kroki 21-27 · po tym etapie masz 33 z 40 kryteriów (pkt)
Krok 21: Plik styl.css: czcionka strony
Kryteria:
R.4.1 Ustawiony dla ciała strony lub kontenera całej strony krój czcionki Georgia oraz kolor czcionki biały
ok. 1 min
Polecenie z arkusza
Dla ciała strony: krój czcionki Georgia, biały kolor czcionki.
Na razie biały tekst na białym tle jest niewidoczny - tła dodadzą kolejne reguły (R.4.1).
styl.cssCSSnowy plik
body {font-family: Georgia;color: white;}
Podgląd strony po tym kroku (systemy.html)
Krok 22: Nagłówek i stopka
Kryteria: , ,
R.4.2 Ustawiony kolor tła dla bloku nagłówkowego i stopki #824555, dla bloku lewego #A26475, dla środkowego #824555 oraz dla prawego #A26470
R.4.5 Ustawione marginesy wewnętrzne (padding) 20px dla bloków nagłówkowego i stopki, 5px dla komórki i komórki nagłówkowej tabeli, oraz jedynie górny margines wewnętrzny 20px dla terminu listy definicji
R.4.9 Ustawione wyrównanie tekstu do środka dla bloków nagłówkowego i stopki
ok. 1 min
Polecenie z arkusza
Wspólne dla bloków nagłówkowego i stopki: kolor tła #824555, wyrównanie tekstu do środka, marginesy wewnętrzne 20 px.
Jedna reguła dla dwóch selektorów.
styl.cssCSSzmienione: 5 linii
body {font-family: Georgia;color: white;}header, footer {background-color: #824555;text-align: center;padding: 20px;}
Podgląd strony po tym kroku (systemy.html)
Krok 23: Bloki lewy i środkowy
Kryteria: , ,
R.4.2 Ustawiony kolor tła dla bloku nagłówkowego i stopki #824555, dla bloku lewego #A26475, dla środkowego #824555 oraz dla prawego #A26470
R.4.3 Ustawiona wysokość bloku lewego, środkowego i prawego 350px
R.4.4 Ustawiona szerokość bloku lewego i środkowego 30%, prawego 40% (width lub grid- template-columns lub flex) oraz dla obrazu 50px
ok. 1 min
Polecenie z arkusza
Wspólne bloków lewego i środkowego: szerokość 30%, wysokość 350 px. Dodatkowo kolor tła dla bloku lewego #A26475, dla bloku środkowego #824555.
R.4.5 Ustawione marginesy wewnętrzne (padding) 20px dla bloków nagłówkowego i stopki, 5px dla komórki i komórki nagłówkowej tabeli, oraz jedynie górny margines wewnętrzny 20px dla terminu listy definicji
R.4.6 Ustawione marginesy zewnętrzne (margin) 10px dla selektorów table, p oraz dt
R.4.8 Ustawione obramowanie dla komórki i komórki nagłówkowej tabeli na wartość 3px solid #824555
ok. 2 min
Polecenie z arkusza
Wspólne dla selektorów tabeli, paragrafu oraz terminu listy definicji: marginesy zewnętrzne 10 px. Dodatkowo dla terminu listy definicji: górny margines wewnętrzny 20 px. Wspólne dla komórki i komórki nagłówkowej tabeli: obramowanie linią ciągłą o grubości 3 px, koloru #824555, margines wewnętrzny 5 px.
Selektory znaczników table, p, dt, jak wymaga uwaga arkusza. Ramka 3 px w kolorze nagłówka daje „wytłoczone” komórki z ilustracji 4 (R.4.5, R.4.6, R.4.8).
R.3.1 Układ bloków po uruchomieniu strony w przeglądarce jest zgodny z ilustracją 3 w arkuszu egzaminacyjnym (prawidłowo zastosowano właściwości CSS decydujące o układzie strony, np. float i clear albo display flex albo grid albo position )
ok. 1 min
Polecenie z arkusza
Poniżej trzy bloki umieszczone obok siebie, na dole stopka. Podział zrealizowany tak, aby po uruchomieniu w przeglądarce wygląd układu bloków był zgodny z ilustracją 3.
float: left dla sekcji, clear: both dla stopki (R.3.1).
Kroki 28-33 · po tym etapie masz 40 z 40 kryteriów (pkt)
Krok 28: Funkcja convert
Kryteria:
R.5.1 Skrypt jest napisany w języku JavaScript i zawiera on przynajmniej jedną poprawną składniowo instrukcję wynikającą z treści zadania
ok. 1 min
Polecenie z arkusza
Wykonywany po stronie przeglądarki.
Skrypt na końcu <body>; funkcja o nazwie z onclick: convert (przelicz).
systemy.htmlHTMLzmienione: 4 linie
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() { } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 29: K1 - K2: liczba z pola i pusty wynik
Kryteria:
R.5.2 Skrypt pobiera dane z pola edycyjnego, np. funkcja document.getElementById z parametrem, który zdefiniowany jest w kontrolce jako id
ok. 1 min
Polecenie z arkusza
Wartość, w postaci liczby dziesiętnej, pobraną z pola edycyjnego, przekształca na system binarny.
Kroki K1 i K2 algorytmu z arkusza: odczyt liczby (Number() zamienia tekst z pola na liczbę) i pusty napis na cyfry binarne (R.5.2).
systemy.htmlHTMLzmienione: 2 linie
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let decimal = Number(document.getElementById("decimal").value);let binary = ""; } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 30: K3 - K5: reszty z dzielenia przez 2
Kryteria:
R.5.3 Skrypt przelicza liczbę dziesiętną na binarną
ok. 3 min
Polecenie z arkusza
Przykład algorytmu zamiany liczby dziesiętnej na binarną: K3: B przypisz L mod 2. K4: L = L / 2 (zaokrąglona do niższej całkowitej). K5: Jeśli L = 0 idź do K6; w przeciwnym razie idź do K3.
decimal % 2 - reszta z dzielenia przez 2 (0 albo 1) to kolejna cyfra binarna; dopisujesz ją na koniec napisu,
Math.floor(decimal / 2) - dzielenie z zaokrągleniem w dół (tabela 1 arkusza),
pętla do ... while wykonuje się co najmniej raz - dzięki temu liczba 0 da cyfrę „0” - i powtarza, dopóki liczba nie spadnie do zera.
Dla 537 cyfry wychodzą w kolejności 1, 0, 0, 1, 1, 0, 0, 0, 0, 1 - od najmniej znaczącej (R.5.3).
systemy.htmlHTMLzmienione: 4 linie
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let decimal = Number(document.getElementById("decimal").value);let binary = "";do { binary = binary + (decimal % 2); decimal = Math.floor(decimal / 2); } while (decimal != 0); } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 31: K6: odwrócenie napisu
Kryteria:
R.5.3 Skrypt przelicza liczbę dziesiętną na binarną
ok. 2 min
Polecenie z arkusza
K6: Odwróć napis B tak że ostatnia cyfra staje się pierwszą itd. wypisz B.
Reszty zostały zapisane od końca, więc napis trzeba odwrócić: split("") dzieli go na tablicę znaków, reverse() odwraca tablicę, join("") skleja z powrotem. 537 → 1000011001 (R.5.3).
systemy.htmlHTMLzmienione: 1 linia
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let decimal = Number(document.getElementById("decimal").value);let binary = "";do { binary = binary + (decimal % 2); decimal = Math.floor(decimal / 2); } while (decimal != 0); binary = binary.split("").reverse().join(""); } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 32: Grupy po cztery cyfry od prawej
Kryteria:
R.5.5 Liczba binarna wyświetlana jest w 4-cyfrowych blokach oddzielonych spacją, począwszy od prawej strony
ok. 3 min
Polecenie z arkusza
Liczba binarna jest rozdzielona spacją na części (co cztery cyfry począwszy od prawej strony).
Przepisz cyfry do nowego napisu grouped; przed cyfrą wstaw spację wtedy, gdy liczba cyfr na prawo od niej (binary.length - i) jest wielokrotnością 4. Dzięki temu grupy liczą się od prawej, a niepełna grupa zostaje z lewej: 1000011001 → 10 0001 1001 (R.5.5).
Typowe błędy
Liczenie grup od lewej (i % 4 == 0) daje 1000 0110 01 - klucz wymaga podziału od prawej strony.
systemy.htmlHTMLzmienione: 7 linii
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let decimal = Number(document.getElementById("decimal").value);let binary = "";do { binary = binary + (decimal % 2); decimal = Math.floor(decimal / 2); } while (decimal != 0); binary = binary.split("").reverse().join("");let grouped = "";for (let i = 0; i < binary.length; i++) {if (i > 0 && (binary.length - i) % 4 == 0) { grouped = grouped + " "; } grouped = grouped + binary[i]; } } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Krok 33: Wynik z indeksem dolnym (2)
Kryteria: , ,
R.5.4 Skrypt wyświetla obliczony wynik pod przyciskiem w paragrafie
R.5.6 Na końcu liczby binarnej, w indeksie dolnym, wypisywane jest: "(2)"
R.5.7 W skryptach zastosowana przynajmniej jedna zmienna lub funkcja oraz nazwy wszystkich funkcji i zmiennych są w języku polskim lub angielskim i odzwierciedlają cel zastosowania
ok. 2 min
Polecenie z arkusza
Wyświetla w paragrafie pod przyciskiem obliczoną liczbę binarną. Liczba binarna jest zakończona oznaczeniem kodu w postaci tekstu „(2)”, zapisanym w indeksie dolnym.
Wynik wpisujesz do akapitu result przez innerHTML - tu jest to konieczne, bo dopisujesz znacznik <sub> (indeks dolny). Wpisz w podglądzie 537 i kliknij: „10 0001 1001₍₂₎” - jak na ilustracji 5 (R.5.4, R.5.6, R.5.7).
systemy.htmlHTMLzmienione: 1 linia
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttononclick="convert()">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let decimal = Number(document.getElementById("decimal").value);let binary = "";do { binary = binary + (decimal % 2); decimal = Math.floor(decimal / 2); } while (decimal != 0); binary = binary.split("").reverse().join("");let grouped = "";for (let i = 0; i < binary.length; i++) {if (i > 0 && (binary.length - i) % 4 == 0) { grouped = grouped + " "; } grouped = grouped + binary[i]; }document.getElementById("result").innerHTML = grouped + "<sub>(2)</sub>"; } </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Etap 6: Dobre praktyki (poza kluczem)
Krok 34 · po tym etapie masz 40 z 40 kryteriów (pkt)
Krok 34: toString(2), sprawdzenie liczby i słuchacz zdarzenia
ok. 4 min
Polecenie z arkusza
Przycisk o treści „Przelicz na binarny”, jego wciśnięcie uruchamia skrypt.
Wersja z egzaminu ma dwie słabości. Puste pole daje „0₍₂₎”, a liczba ujemna zawiesza kartę przeglądarki: dla -5 Math.floor(-5 / 2) daje -3, potem -2, -1, -1, -1… - liczba nigdy nie dochodzi do zera i pętla kręci się bez końca (sprawdzone przy testowaniu tego rozwiązania). Dlatego w prawdziwym projekcie:
sprawdzenie - tylko liczba całkowita nieujemna, inaczej komunikat,
decimal.toString(2) - JavaScript zamienia liczbę na zapis binarny sam (algorytm z arkusza warto znać, ale w kodzie produkcyjnym nie piszesz go ręcznie),
grupy po cztery od prawej wyrażeniem regularnym: spacja przed każdą pozycją, za którą do końca zostaje wielokrotność czterech cyfr,
textContent + createElement("sub") zamiast innerHTML i addEventListener zamiast onclick.
Na egzaminie wystarczy wersja wcześniejsza - klucz sprawdza algorytm, podział i indeks dolny, a nie walidację.
systemy.htmlHTMLzmienione: 15 linii
<!DOCTYPE html><htmllang="pl"><head> <metacharset="UTF-8"> <title>Systemy liczbowe</title> <linkrel="stylesheet"href="styl.css"></head><body> <header> <imgsrc="cyfry.gif"alt="Cyfry szesnastkowe"> <h1>Pozycyjne systemy liczbowe</h1> </header> <sectionid="left"> <table> <tr> <th>HEX</th> <th>BIN</th> <th>DEC</th> </tr> <tr> <td>A</td> <td>1010</td> <td>10</td> </tr> <tr> <td>B</td> <td>1011</td> <td>11</td> </tr> <tr> <td>C</td> <td>1100</td> <td>12</td> </tr> <tr> <td>D</td> <td>1101</td> <td>13</td> </tr> <tr> <td>E</td> <td>1110</td> <td>14</td> </tr> <tr> <td>F</td> <td>1111</td> <td>15</td> </tr> </table> </section> <sectionid="middle"> <inputtype="number"id="decimal"placeholder="Wpisz liczbę dziesiętną"> <buttonid="convert">Przelicz na binarny</button> <pid="result">Brak obliczeń</p> </section> <sectionid="right"> <h2>Słowniczek</h2> <dl> <dt>Binarny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 2, a do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.</dd> <dt>Decymalny</dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 10; do zapisu liczb stosuje się 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.</dd> <dt><ahref="https://szesnastkowy_system_liczbowy.pl">Heksadecymalny</a></dt> <dd>pozycyjny system liczbowy, w którym podstawą jest liczba 16. Do zapisu liczb w tym systemie potrzebne jest szesnaście znaków.</dd> </dl> </section> <footer> <p>Stronę opracował: <em>Bartosz Bryniarski</em></p> </footer> <script>function convert() {let value = document.getElementById("decimal").value;let decimal = Number(value);let result = document.getElementById("result");if (value === "" || !Number.isInteger(decimal) || decimal < 0) { result.textContent = "Wpisz liczbę całkowitą nieujemną.";return; }let binary = decimal.toString(2);let grouped = binary.replace(/\B(?=(\d{4})+$)/g, " "); result.textContent = grouped;let sub = document.createElement("sub"); sub.textContent = "(2)"; result.appendChild(sub); }document.getElementById("convert").addEventListener("click", convert); </script></body></html>
Podgląd strony po tym kroku (systemy.html)
Etap 7: Oddanie pracy
Krok 35 · po tym etapie masz 40 z 40 kryteriów (pkt)
Krok 35: Plik przeglądarka.txt i nagranie płyty
ok. 5 min
Polecenie z arkusza
Po zakończeniu pracy utwórz plik tekstowy o nazwie przeglądarka.txt. Zapisz w nim nazwę przeglądarki internetowej, w której weryfikowana była poprawność działania witryny. Nagraj płytę z rezultatami pracy.
W przeglądarka.txt wpisujesz nazwę przeglądarki.
W folderze: systemy.html, styl.css, kwerendy.txt, import.png, kw1.png - kw4.png, 2.png, cyfry.gif, parametry_animacji.png i przeglądarka.txt. Nagraj płytę, sprawdź jej odczyt i opisz ją numerem zdającego.
Symulacja ekranu w przeglądarce - w Android Studio / Visual Studio wygląd może się nieco różnić.
To jedno z możliwych rozwiązań. Egzaminator ocenia spełnienie kryteriów z klucza odpowiedzi, a nie zgodność z tym kodem - inna, poprawna droga też daje punkty.
Autor rozwiązania: Bartosz Bryniarski. Licencja CC BY-NC 4.0 - kopiowanie i przeróbki do celów niekomercyjnych, z podaniem autora i źródła (link do tej strony) (zasady wykorzystania). Treść arkusza i klucza oceniania pochodzi z CKE.