Spis treści

Wprowadzenie

Przeczytaj

Prezentacja multimedialna

Sprawdź się

Dla nauczyciela

Kompresja danych – zadania maturalne

Źródło: Life-Of-Pix, domena publiczna.

Kompresja danych to zagadnienie, z którym spotykamy się na co dzień, np. kiedy przesyłamy zdjęcia, filmy czy nagrania audio w internecie. Z e-materiałów dotyczących kompresji danych wiemy już, kiedy się ją stosuje, na czym ona polega, czym jest współczynnik kompresji, a także czym różni się kompresja stratna od bezstratnej. W tym e-materiale skupimy się na rozwiązywaniu zadań maturalnych dotyczących tych zagadnień.

Więcej informacji dotyczących kompresji danych znajdziesz w pozostałych materiałach z serii:

- Kompresja danychOtwiera się w nowym oknie,

- Współczynnik kompresji danychOtwiera się w nowym oknie,

- Kompresja stratna i bezstratnaOtwiera się w nowym oknie,

- Kompresja multimediówOtwiera się w nowym oknie.

Twoje cele

- Skompresujesz bezstratnie kilka wybranych plików.

- Rozwiążesz zadanie typu maturalnego związane z kompresją i odkodowywaniem danych.

- Zdekompresujesz kilka wybranych plików.

Przeczytaj

Informacje wstępne

W trakcie lekcji poświęconych kompresji ustaliliśmy, że jej podstawą jest zmiana sposobu kodowania, czyli zmiana sposobu zapisu informacji.

Przykładowo, zapisanie liczb w systemie rzymskim w wielu przypadkach spowoduje zwiększenie liczby znaków potrzebnych do zapisu danej liczby. Liczba „2020”, mogłaby zostać zapisana jako: MMXX.

Natomiast liczba „8” zostałaby zapisana jako VIII.

W pierwszym przypadku nie ma różnicy, a w drugim przypadku liczba znaków jest już różna.

W zdecydowanej większości przypadków korzystanie z systemu rzymskiego spowoduje zwiększenie liczby wymaganych znaków. O ile liczba „2020” dała się w sposób bezstratny konwertować, o tyle już liczba “2222” w systemie rzymskim prezentuje się następująco: MMCCXXII, co jest już wyraźnie dłuższym zestawem znaków.

Przykładowe zadanie typu maturalnego

Zadanie 1

W pewnym zakładzie obliczeniowym są przechowywane dane zapisane w postaci łańcuchów znaków. Metoda ta nie jest optymalna, ale ze względu na specyfikę działania tego konkretnego zakładu – konieczna. Zakład chce jednak zmniejszyć objętość plików, które muszą przechowywać, ale sposób kompresji powinien być w dalszym ciągu łatwo dekodowalny przez człowieka.

Przykładowe dane wejściowe:

1

5000, 2424222, 400, 562, 1245,

Podpunkt 1

Napisz program, w wybranym języku programowania, pseudokodzie lub w postaci listy kroków, który na podstawie dostarczonego pliku utworzy pseudoskompresowane pliki tekstowe, w których znajdą się informacje na temat powtarzających się pojedynczych liczb.

Specyfikacja:

Dane:

- dane – ciąg znaków, zawierający w sumie 119749 różnych znaków i przecinki; są w nim zapisane liczby

Wynik:

Pseudozakodowany plik, w którym poszczególne powtarzające się liczby zostały zapisane jako: “NxL”, gdzie N to liczba powtórzeń danej cyfry, a L to cyfra. Między poszczególnymi liczbami powinny znajdować się również przecinki je oddzielające.

Poprawny wynik dla przykładowych danych wejściowych:

1x5 3x0, 1x2, 1x4 1x2, 1x4 3x2, 1x4 2x0, 1x5 1x6 1x2, 1x1 1x2 1x4 1x5,

Przedstawimy rozwiązanie w postaci pseudokodu. Załóżmy, że informacje z pliku zapisaliśmy w tablicy dwuwymiarowej. Pamiętaj jednak, że pisząc własny program, musisz zadbać o prawidłowe wczytanie danych z pliku.

Rozwiązanie:

W rozwiązaniu tym będziemy zliczać wystąpienia identycznych znaków występujących po sobie i po wystąpieniu innego znaku od razu będziemy dopisywać odpowiednie informacje do końca nowo utworzonego ciągu znaków.

1

wczytaj dane

2

znak := dane[0]

3

i := 0

4

licznik := 0

5

dla wszystkich znaków w dane:

6

jeżeli dane[i] == znak:

7

licznik := licznik+1

8

w przeciwnym wypadku jeżeli czyJestCyfrą(znak):

9

wyjsciowyCiagZnakow := wyjsciowyCiagZnakow + " " + licznik + "x" + znak

10

licznik := 1

11

znak = dane[i]

12

w przeciwnym wypadku:

13

wyjsciowyCiagZnakow := wyjsciowyCiagZnakow + " " + licznik + "x" + znak

14

wyjsciowyCiagZnakow := wyjsciowyCiagZnakow + znak

15

licznik := 1

16

i := i + 1

17

zwroc wyjsciowyCiagZnakow

Podpunkt 2

Napisz program w wybranym języku programowania, pseudokodzie lub w postaci listy kroków, który przekoduje wynik z poprzedniego podpunktu tak, żeby odtworzyć dane wejściowe.

Specyfikacja:

Dane:

- wejsciowyCiagZnakow – ciąg znaków, w którym zakodowano n różnych liczb, w ten sposób, że np. liczba 100334440 zostałaby zakodowana jako: “1x1 2x0 2x3 3x4 1x0,”.

Wynik:

Ciąg znaków utworzony na podstawie zakodowanej wersji, w postaci:

100334440, .....

Rozwiązanie:

W poprzednim podpunkcie zakodowaliśmy dane, w tym podpunkcie wykonujemy operację odwrotną.

1

wczytaj wejsciowyCiagZnakow

2

liczba := wejsciowyCiagZnakow[0]

3

i := 0

4

czyTrafionoNaX := fałsz

5

wyjsciowyCiagZnakow := ""

6

dla wszystkich znaków w wejsciowyCiagZnakow:

7

jeżeli czyJestCyfrą(wejsciowyCiagZnakow[i]) i czyTrafionoNaX == fałsz:

8

liczba := liczba*10 + wejsciowyCiagZnakow[i]

9

w przeciwnym wypadku, jeżeli wejsciowyCiagZnakow[i] == x:

10

czyTrafionoNaX := prawda

11

w przeciwnym wypadku, jeżeli czyJestCyfrą(wejsciowyCiagZnakow[i]):

12

dla j = 0, 1, 2 ... liczba-1 wykonuj:

13

wyjsciowyCiagZnakow := wyjsciowyCiagZnakow + wejsciowyCiagZnakow[i-1]

14

w przeciwnym wypadku:

15

wyjsciowyCiagZnakow := wejsciowyCiagZnakow[i]

16

zwroc wyjsciowyCiagZnakow := ""

Słownik

kod

ciąg jednoznacznie identyfikowalnych kombinacji znaków i symboli, dzięki którym możemy odczytać informację w sposób jednoznaczny

kompresja

proces polegający na zmianie sposobu zapisu informacji w ten sposób, aby zmniejszyć redundancję oraz objętość zbioru

plik

uporządkowany zbiór danych o skończonej długości stanowiący dla użytkownika systemu operacyjnego całość;  może również posiadać atrybuty lub inne cechy, takie jak uprawnienia, czy nazwa, które dodatkowo go charakteryzują; możliwy zestaw cech i atrybutów zależy od konkretnego systemu

Prezentacja multimedialna

Zadanie 2.

Zadanie utworzone na podstawie zadania 32 ze zbioru zadań do informatyki autorstwa CKE.

W zakładzie obliczeniowym doszło do rewolucji, gdy okazało się, że zmiana kodowania z poprzedniego zadania spowodowała jedynie zwiększenie rozmiaru plików, zamiast ich kompresji. Dlatego też postanowiono ponownie zmienić sposób zapisu informacji. Teraz dwukrotnie powtarzające się ciągi cyfr będą zastępowane pojedynczym wystąpieniem. Przykładowo, liczba: 11111111 mogłaby zostać skompresowana do formy (1111), lub (11)(11) lub dowolnej innej, z której po dekompresji otrzymalibyśmy wejściową liczbę.

Przykładowo, dla liczb:

1

55, 555, 443, 213, 12110397, 111122223333, 111122223333111122223333

2

powinniśmy uzyskać ciągi:

1

(5), (5)5, (4)3, 213, 12(1)0397, (11)(22)(33), (111122223333)

2

Podpunkt 1

Napisz program, w wybranym języku programowania, pseudokodzie lub w postaci listy kroków,  który, mając na wejściu skompresowany napis zapisany w tablicy, wypisze na wyjściu kolejne cyfry.

Specyfikacja:

Dane:

- n – dodatnia liczba całkowita

- liczby[1..n] – tablica skompresowanych liczb, metodą opisaną wcześniej

Wynik:

Zdekompresowana wartość liczbowa.

Polecenie 1

Zapoznaj się z prezentacją przedstawiającą rozwiązanie zapisane za pomocą pseudokodu. Następnie zaimplementuj algorytm w wybranym języku programowania.

- Na egzaminie maturalnym możesz spotkać się z wieloma typami zadań otwartych, np. zadaniami z luką, zadaniami krótkiej odpowiedzi oraz zadaniami rozszerzonej odpowiedzi. Poniżej znajduje się przykładowe rozwiązanie zadania rozszerzonej odpowiedzi.

Źródło: Pixabay, CC0.

Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:13

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

W zadaniu tym występuje charakterystyczny wzorzec. Musimy odnaleźć wszystkie cyfry znajdujące się w nawiasie, a następnie wypisać je dwukrotnie na wyjście.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:28

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Załóżmy, że naszym ciągiem do zdekompresowania jest 12(1)0(39). Poprawnym wynikiem byłoby w tym przypadku 121103939.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:12

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Zaczynamy więc analizę naszej liczby – pierwszym znakiem jest „1”, więc dopisujemy 1 do ciągu wyjściowego.

Ciąg wyjściowy: 1

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:16

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Przechodzimy do kolejnego znaku, którym ponownie jest liczba. Tym razem jest to 2, więc też wypisujemy tę cyfrę tylko jeden raz na wyjście tak jak w poprzednim przypadku.

Ciąg wyjściowy: 12.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:39

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Kolejnym znakiem, na jaki trafimy, będzie tym razem „(”, tego znaku nie dopisujemy do ciągu wyjściowego, jednakże sygnalizuje on nam, że kolejne cyfry, aż do pojawienia się znaku „)” będą musiały być podwojone. Nie możemy jednak po prostu w trakcie odczytu dopisać ich dwukrotnie na wyjście. Musimy utworzyć dodatkowy ciąg znaków, do którego kolejne cyfry spomiędzy nawiasów będziemy dopisywać, a dopiero ciąg uzyskany w taki sposób będziemy dopisywać do ciągu wyjściowego.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:23

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Uzasadnienie tego jest takie, że jeżeli byśmy dopisywali od razu, zamiast przez kolejny ciąg, to przykładowo ciąg (121) zamiast do 121121 zdekodowalibyśmy do 112211.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:14

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Następnym znakiem w naszym przykładzie jest 1, które jak przed chwilą omawialiśmy, dopisujemy do ciągu pomocniczego.

Ciąg pomocniczy: 1

Ciąg wyjściowy: 12

- play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:37

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Kolejnym znakiem jest „)”, oznacza to, że ciąg pomocniczy dopisujemy do ciągu wyjściowego dwa razy, a następnie zerujemy ciąg pomocniczy. W tym konkretnym przypadku akurat dopisanie dwukrotne jedynki do ciągu wyjściowego nic by nie zmieniło, ale z racji tego, że układamy algorytm, to powinniśmy tworzyć go w sposób jak najbardziej ogólny, tak żeby nie zagłębiać się w niepotrzebne szczegóły.

Ciąg wyjściowy: 1211

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:11

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Kolejną liczbą jest 0, które dopisujemy do ciągu wyjściowego.

Ciąg wyjściowy: 12110

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:11

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Następnie napotykamy ponownie otwarcie nawiasu, więc wszystkie cyfry do napotkania nawiasu zamykającego musimy umieszczać w ciągu pomocniczym.

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:15

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Napotkaną liczbę „3”, zgodnie z tym, co wspominaliśmy wcześniej, umieszczamy w ciągu pomocniczym.

Ciąg pomocniczy: 3

Ciąg wyjściowy: 12110

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:16

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Napotykamy ponownie cyfrę, więc tak jak w poprzednim kroku dodajemy ją do ciągu pomocniczego.

Ciąg pomocniczy: 39

Ciąg wyjściowy: 12110

- Nagranie głosowe

play_circle_outlineOdtwórz/Zatrzymaj  00:00

Szukaj

00:22

volume_upWycisz dźwięk

Głośność

Materiał audio dostępny pod adresem:

file:///tmp/puppeteerwHvXx1.html

Spotykamy zamknięcie nawiasu, które jest również ostatnim znakiem w naszym dekompresowanym tekście.

Dodajemy więc dwukrotnie do naszego ciągu wyjściowego ciąg pomocniczy, uzyskując:

Ciąg wyjściowy: 121103939

- Więcej zadań znajdziesz w zbiorze dostępnym na stronie internetowej Okręgowej Komisji Egzaminacyjnej w Warszawie.

Źródło: OKE, oke.waw.pl, tylko do użytku edukacyjnego.

Linia 1. czyWNawiasie dwukropek znak równości falsz Linia 2. ciagPomocniczy dwukropek znak równości cudzysłów cudzysłów Linia 3. ciagWyjsciowy dwukropek znak równości cudzysłów cudzysłów Linia 4. dla i znak równości 1 przecinek 2 przecinek 3 przecinek kropka kropka n wykonuj dwukropek Linia 5. jeżeli liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów otwórz nawias okrągły cudzysłów wykonaj dwukropek Linia 6. czyWNawiasie dwukropek znak równości prawda Linia 7. w przeciwnym razie przecinek jeżeli jestCyfrą otwórz nawias okrągły liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły wykonaj dwukropek Linia 8. jeżeli czyWNawiasie wykonaj dwukropek Linia 9. ciagPomocniczy dwukropek znak równości ciagPomocniczy plus liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy Linia 10. w przeciwnym wypadku wykonaj dwukropek Linia 11. ciagWyjsciowy dwukropek znak równości ciagWyjsciowy plus liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy Linia 12. w przeciwnym razie przecinek jeżeli liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów zamknij nawias okrągły cudzysłów wykonaj dwukropek Linia 13. czyWNawiasie dwukropek znak równości falsz Linia 14. ciagWyjsciowy dwukropek znak równości ciagWyjsciowy plus ciagPomocniczy plus ciagPomocniczy Linia 15. ciagPomocniczy dwukropek znak równości cudzysłów cudzysłów Linia 17. Gdzie dwukropek funkcja jestCyfrą otwórz nawias okrągły zamknij nawias okrągły przecinek sprawdza przecinek czy podany znak jest cyfrą kropka Linia 18. Operacja „ plus ” oznacza w powyższych przypadkach konkatenacje kropka

1

czyWNawiasie := falsz

2

ciagPomocniczy := ""

3

ciagWyjsciowy := ""

4

dla i = 1, 2, 3,.. n wykonuj:

5

jeżeli liczby[i] == "(" wykonaj:

6

czyWNawiasie := prawda

7

w przeciwnym razie, jeżeli jestCyfrą(liczby[i]) wykonaj:

8

jeżeli czyWNawiasie wykonaj:

9

ciagPomocniczy := ciagPomocniczy + liczby[i]

10

w przeciwnym wypadku wykonaj:

11

ciagWyjsciowy := ciagWyjsciowy + liczby[i]

12

w przeciwnym razie, jeżeli liczby[i] == ")" wykonaj:

13

czyWNawiasie := falsz

14

ciagWyjsciowy := ciagWyjsciowy + ciagPomocniczy + ciagPomocniczy

15

ciagPomocniczy := ""

16

17

Gdzie: funkcja jestCyfrą(), sprawdza, czy podany znak jest cyfrą.

18

Operacja „+” oznacza w powyższych przypadkach konkatenacje.

Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Sprawdź się

Pokaż ćwiczenia:

Ćwiczenie 1

Dokończ zdanie.

Dla ciągu: „5, 31, 245, 33356, 355557, 23456”, korzystając z omówionego algorytmu kompresji, moglibyśmy uzyskać ciąg…

Zaznacz prawidłową odpowiedź.

- (5), (3)(1), (2)(4)(5), (3)(3)(5)(6), (3)(5)(5)(5)(5)(7), (2)(3)(4)(5)(6).

- 5, 31, 245, (333)56, 3(5555)7, 23456.

- 5, 31, 245, (33)56, 3(55)(55)7, 23456.

- 5, 31, 245, (3)356, 3(55)7, 23456.

Ćwiczenie 2

Zdekompresuj liczby, które zostały skompresowane zgodnie z metodą używaną w poprzednim poleceniu.

Liczby skompresowane

Liczby zdekompresowane

12(1134)

1211341134

84(1)(44)

123(24)354

1092(1344)43

(44)84(1)

343214

Ćwiczenie 3

Wskaż, czy zastosowana przez nas metoda kompresji może spowodować zwiększenie liczby użytych znaków zamiast jej zmniejszenia.

Zaznacz prawidłową odpowiedź.

- Tak, ponieważ w skrajnym przypadku liczba znaków może zwiększyć się nawet trzykrotnie.

- Nie, ponieważ kompresja zawsze powoduje zmniejszenie kompresowanej wartości.

Ćwiczenie 4

Skompresuj liczby z tabeli w sposób optymalny (to znaczy tak, żeby w jak największym stopniu uniknąć redundancji). Skorzystaj z metody kompresji, jak w dwóch poprzednich poleceniach.

Liczby zdekompresowane

Liczby skompresowana

1211341134

12(1134)

12110397

111112222

9996654

414841

112233445566

Ćwiczenie 5

Wybierz właściwe dokończenia zdania.

Dla ciągu cyfr: 00011123456666...

Zaznacz prawidłowe odpowiedzi.

- fragment „…6666” po kompresji ma taką samą długość jak przed kompresją.

- fragment „000…” po kompresji ma taką samą długość jak przed kompresją.

- liczba użytych znaków po kompresji nie zwiększy się.

- fragment „…111…” po kompresji zwiększył swoją długość.

- liczba użytych znaków po kompresji zwiększy się.

Ćwiczenie 6

Określ, dla ilu powtórzeń liczby z rzędu omówiona wcześniej kompresja rzeczywiście pozwala zmniejszyć rozmiar liczby.

Zaznacz prawidłową odpowiedź.

- dla 3 i więcej powtórzeń

- dla 5 i więcej powtórzeń

- dla 6 i więcej powtórzeń

- dla 4 i więcej powtórzeń

Ćwiczenie 7

Uzupełnij tekst

Dla omówionej metody kompresji charakterystyczne jest, że próbujemy zmniejszyć redundancję przez zapisywanie powtórzonych zlepek    . Metoda ta jednak nie zawsze jest skuteczna, ponieważ w wyniku kompresji pojawiają się dodatkowo     nawiasy, które również wliczamy do długości danej liczby.

Z tego powodu, w przypadku gdy kompresujemy występujące po sobie     cyfry, to liczba się zwiększa, zamiast się zmniejszać.

cztery     ciągów     dwa     dwie     tych samych cyfr     trzy

Ćwiczenie 8

Wskaż, czy dla liczby „99999” kompresja spowoduje zmniejszenie się jej rozmiaru.

Zaznacz prawidłową odpowiedź.

- tak

- nie

Dla nauczyciela

Autor: Maurycy Gast

Przedmiot: Informatyka

Temat: Kompresja danych – zadania maturalne

Grupa docelowa:

Szkoła ponadpodstawowa, liceum ogólnokształcące, technikum

Podstawa programowa:

Treści nauczania – wymagania szczegółowe

I + II. Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:

2) wykorzystuje znane sobie algorytmy przy rozwiązywaniu i programowaniu rozwiązań następujących problemów:

a) rozkładania liczby na czynniki pierwsze,

b) wykonywania działań na liczbach w systemach innych niż dziesiętny,

c) znajdowania w ciągu podciągów o różnorodnych własnościach, np. najdłuższego spójnego podciągu niemalejącego, spójnego podciągu o największej sumie,

d) zamiany wyrażenia na postać w odwrotnej notacji polskiej i obliczanie jego wartości na podstawie tej postaci,

e) badania przecinania się odcinków, przynależności punktu do trójkąta,

f) obliczanie przybliżonej wielkości pola obszarów zamkniętych;

Kształtowane kompetencje kluczowe:

- kompetencje cyfrowe;

- kompetencje osobiste, społeczne i w zakresie umiejętności uczenia się;

- kompetencje matematyczne oraz kompetencje w zakresie nauk przyrodniczych, technologii i inżynierii.

Cele operacyjne (językiem ucznia):

- Skompresujesz bezstratnie kilka wybranych plików.

- Rozwiążesz zadanie typu maturalnego związane z kompresją i odkodowywaniem danych.

- Zdekompresujesz kilka wybranych plików.

Strategie nauczania:

- konstruktywizm;

- konektywizm.

Metody i techniki nauczania:

- dyskusja;

- rozmowa nauczająca z wykorzystaniem multimedium i ćwiczeń interaktywnych;

- ćwiczenia praktyczne.

Formy pracy:

- praca indywidualna;

- praca w parach;

- praca w grupach;

- praca całego zespołu klasowego.

Środki dydaktyczne:

- komputery z głośnikami, słuchawkami i dostępem do internetu;

- zasoby multimedialne zawarte w e-materiale;

- tablica interaktywna/tablica, pisak/kreda;

- oprogramowanie dla języka C++, w tym kompilator GCC/G++ 4.5 (lub nowszej wersji) i Code::Blocks 16.01 (lub nowszej wersji), Orwell Dev-C++ 5.11 (lub nowszej wersji) lub Microsoft Visual Studio;

- oprogramowanie dla języka Java SE 8 (lub nowszej wersji), w tym Eclipse 4.4 (lub nowszej wersji);

- oprogramowanie dla języka Python 3 (lub nowszej wersji), w tym PyCharm lub IDLE.

Przebieg lekcji

Przed lekcją:

1. Przygotowanie do zajęć. Nauczyciel loguje się na platformie i udostępnia e-materiał: „Kompresja danych – zadania maturalne”. Uczniowie zapoznają się z treściami w sekcji „Przeczytaj” w kontekście programowania.

Faza wstępna:

1. Nauczyciel wprowadza uczniów szczegółowo w temat lekcji i jej cele. Może posłużyć się wyświetloną na tablicy zawartością sekcji „Wprowadzenie”.

2. Rozpoznanie wiedzy uczniów. Nauczyciel zadaje uczniom pytanie dotyczące ich aktualnego stanu wiedzy w obszarze poruszanego tematu, opartego o programowanie.

Faza realizacyjna:

1. Praca z tekstem. Nauczyciel wyświetla zawartość sekcji „Przeczytaj”. Na forum klasy uczniowie analizują przedstawione w niej rozwiązania zadanie: „W pewnym zakładzie obliczeniowym są przechowywane dane zapisane w postaci łańcuchów znaków. Metoda ta nie jest optymalna, ale ze względu na specyfikę działania tego konkretnego zakładu – konieczna. Zakład chce jednak zmniejszyć objętość plików, które muszą przechowywać, ale sposób kompresji musi być w dalszym ciągu łatwo dekodowalny przez człowieka.”

2. Praca z multimedium. Nauczyciel wyświetla zawartość sekcji „Prezentacja multimedialna”. Uczniowie wspólnie zapoznają się rozwiązaniem przestawiającym jak napisać program, w wybranym języku programowania, pseudokodzie lub w postaci listy kroków, który mając na wejściu skompresowany napis zapisany w tablicy, wypisze na wyjściu kolejne cyfry.

3. Ćwiczenie umiejętności. Liga zadaniowa - uczniowie wykonują indywidualnie na czas ćwiczenia nr 1-8 z sekcji „Sprawdź się”, a następnie omawiają zadania na forum.

Faza podsumowująca:

1. Na koniec zajęć z programowania nauczyciel prosi uczniów o rozwinięcie zdania: „Na dzisiejszych zajęciach nauczyłam/łem się jak…”.

Praca domowa:

1. Napisz (w postaci listy kroków, schematu blokowego, pseudokodu lub w wybranym języku programowania) algorytm obliczający rozmiar skompresowanego tekstu.

Materiały pomocnicze:

- Oficjalna dokumentacja techniczna dla języka C++.

- Oficjalna dokumentacja techniczna dla kompilatora GCC/G++ 4.5 (lub nowszej wersji).

- Oficjalna dokumentacja techniczna dla oprogramowania Code::Blocks 16.01 (lub nowszej wersji), Orwell Dev-C++ 5.11 (lub nowszej wersji) lub Microsoft Visual Studio.

- Oficjalna dokumentacja techniczna dla języka Java SE 8 (lub nowszej wersji).

- Oficjalna dokumentacja techniczna dla oprogramowania Eclipse 4.4 (lub nowszej wersji).

- Oficjalna dokumentacja techniczna dla języka Python 3 (lub nowszej wersji).

- Oficjalna dokumentacja techniczna dla oprogramowania PyCharm lub IDLE.

Wskazówki metodyczne:

- Uczniowie mogą wykorzystać multimedium w sekcji „Prezentacja multimedialna” do przygotowania się do lekcji powtórkowej.

Table of Contents

Wprowadzenie

Przeczytaj

Prezentacja multimedialna

Sprawdź się

Dla nauczyciela