Zrzut ekranu z programu Scratch, przedstawiający dostępne operatory arytmetyczne i niektóre funkcje np. podłoga, sufit, pierwiastek kwadratowy
Zrzut ekranu z programu Scratch, przedstawiający dostępne operatory arytmetyczne i niektóre funkcje np. podłoga, sufit, pierwiastek kwadratowy
Działania matematyczne w Scratch
Zasoby własne ZPE
bg‑gray4
Treści zawarte w tym e‑materiale wykraczają poza podstawę programową dla klas IV‑VI. Jeśli jednak:
chcesz dowiedzieć się więcej i poznać różne wersje algorytmu Euklidesa, który służy do obliczania NWD (największego wspólnego dzielnika) dwóch liczb naturalnych, wraz z przykładami wykorzystania,
zachęcamy Cię do zapoznania się z tym e‑materiałem.
Na poprzedniej stronie podano, że algorytm Euklidesa to metoda obliczania największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. Ma on kilka wersji. W tym materiale pokażemy różnice między tymi wersjami. Na początku przyjrzyjmy się działaniu tego algorytmu w wersji z odejmowaniem obliczając NWD liczb 256 i 48.
Tabela z obliczeniami NWD liczb 256 i 48 z zastosowaniem operacji odejmowania.
a
b
256
48
256 - 48 = 208
48
208 - 48 = 160
48
160 - 48 = 112
48
112 - 48 = 64
48
64 - 48 = 16
48
16
48 - 16 = 32
16
32 - 16 = 16
16
16
Zwróć uwagę, że jeżeli jedna liczba jest dużo większa od drugiej, to wielokrotnie będzie następowało odejmowanie od niej tej samej mniejszej liczby. Takie wielokrotne odejmowanie można zastąpić operacją moduloiuak7gU6CL_d715e232modulo, czyli obilczanie reszy dzielenia dwóch liczb całkowitych.
Ważne!
Wynikiem jest , ponieważ 256 dzielone przez to 5, reszty .
Na przykład dla i otrzymujemy:
Tabela z obliczeniami NWD liczb 256 i 48 z zastosowaniem operacji modulo
a
b
256
48
256 : 48 = 5 reszta 16
(256 mod 48 = 16)
48
16
48 : 16 = 3 reszta 0
48 mod 16 = 0
Z tabeli odczytujemy, że , więc .
Zwróć uwagę, że zastępując odejmowanie operacją reszty z dzielenia zmienia się warunek końca powtarzania: jedna z wartości musi osiągnąć wartość .
Teraz zapoznaj się z innym zapisem:
Tabela z obliczeniami NWD liczb 256 i 48 z zastosowaniem operacji modulo w wersji z trzema zmiennymi
a
operator
b
równa się
wynik (reszta)
256
mod
48
=
16
48
mod
16
=
0
Z tabeli odczytujemy, że i .
Ćwiczenie 1
Wykorzysataj algorytm Euklidesa z wykorzystaniem reszty z dzielenia (zastosowaniem operacji modulo) do obliczania NWD liczb oraz . Zapisz swoje obliczenia w tabeli. Odczytaj NWD.
Przyjrzy się tabelom umieszczonym nad ćwiczeniem i postępuj analogiczne. Samodzielnie możesz zdecydować, czy chcesz użyć dwóch czy trzech zmiennych.
Tabela z przykładem obliczania NWD liczb 76 i 48 z resztą dzielenia (wersja z dwoma zmiennymi)
a
b
76
48
76 : 48 = 1 reszta 28
(76 mod 48 = 28)
48
28
48 : 28 = 1 reszta 20
(48 mod 28 = 20)
28 : 20 = 1 reszta 8
(28 mod 20 = 8)
20
8
20 : 8 = 2 reszta 4
(20 mod 8 = 4)
8 : 4 = 2 reszta 0
(8 mod 4 = 0)
4
Z tabeli odczytujemy: , więc
Rozwiązanie z wykorzystaniem modulo (wersja ze trzema zmiennymi)
a
operator
b
równa się
wynik (reszta)
76
mod
48
=
28
48
mod
28
=
20
28
mod
20
=
8
20
mod
8
=
4
8
mod
4
=
0
Z tabeli odczytujemy: i
Ćwiczenie 2
Ułóż w postaci listy kroków algorytm Euklidesa znajdowania największego wspólnego dzielnika dwóch liczb całkowitych dodatnich (z wykorzystaniem reszty z dzielenia). Zapisz dwie wersje z dwoma zmiennymi a, b oraz wersję ze zmienną pomocniczą reszta.
Dokładnie prześledź przykłady działania algorytmu znajdujące się nad ćwiczeniami.
Warunkiem jest, że jedna z wartości musi osiągnąć wartość 0.
W wersji z dwoma zmiennymi, podobnie jak w wersji z odejmowaniem, należy porównać dwie liczby, a większą z nich zastąpić wynikiem operacji modulo. Ponieważ nie wiemy, która ze zmiennych przyjmie wartość zero i zakończy działanie algorytmu, możemy przyjąć, że największym wspólnym dzielnikiem będzie suma dwóch zmiennych.
Pomocniczą zmienną w drugiej wersji jest reszta, której należy przypisać wynik równania modulo. Wówczas większa wartość będzie przyjmować wartość mniejszej, a mniejsza wartość reszty.
Specyfikacja problemu: Dane: i – liczby całkowite dodatnie. Wynik: – największy wspólny dzielnik liczb i .
Powtarzaj, aż lub : 1.1. Jeżeli to: ⠀ 1.1.1. Przypisz a wartość . w przeciwnym przypadku: ⠀ 1.1.2. Przypisz wartość .
Przypisz wartość .
Wprowadzając pomocniczą zmienną można zapisać algorytm trochę prościej, bez użycia instrukcji warunkowej.
Powtarzaj aż . 1.1. Przypisz zmiennej wartość . 1.2. Przypisz wartość . 1.3. Przypisz wartość .
Przypisz wartość .
Ćwiczenie 3
Stwórz własny blok z dwoma parametrami liczbowymi, który będzie realizował jeden z algorytmów wyliczania największego wspólnego dzielnika.
Często bardziej złożony problem warto podzielić na podproblemy i zapisać je w postaci oddzielnych bloków. Poniższa instrukcja pokaże ci, jak stworzyć własny blok w programie Scratch.
W celu utworzenia nowego bloku należy przejść do kategorii Moje bloki.
Następnie naciśnij przycisk Utwórz blok, w polu edycyjnym wpisz jego nazwę. Jeżeli chcesz aby blok miał dodatkowe parametry, zdecyduj czy są one wartościami liczbowymi lub tekstem (dodać je możesz za pomocą przycisku Dodaj dane wejściowe: liczba lub tekst), czy może są one wartościami logicznymi prawda lub fałsz (wtedy wybierz przycisk Dodaj dane wejściowe: Boolean). Po dodaniu odpowiedniej liczby parametrów zatwierdź tworzenie bloku przyciskiem OK.
W obszarze skryptów pojawi się nowy blok, pod który można podczepić inne bloki realizujące rozwiązywany podproblem.
Jeżeli chcesz edytować utworzony blok, dodając np. nowe parametry, kliknij w niego prawym przyciskiem myszy i wybierz z menu kontekstowego przycisk Edytuj.
Przykładowy algorytm wykorzystujący operację reszty z dzielenia.
RJOawIPc93MPv
Skrypt rozpoczyna się blokiem definiuj NWD a b. Następnie dołączono blok ustaw nwd_a na a, po którym dodano blok ustaw nwd_b na b. Dalej znajduje się blok ustaw reszta na zero. Kolejnym blokiem jest blok pętli powtarzaj, aż nwd_b równa się zero. W tym zamieszczono bloki: ustaw reszta na reszta z dzielenia nwd_a przez nwd_b, ustaw nwd_a na nwd_b, ustaw nwd_b na reszta. Poza pętlą umieszczono blok powiedz nwd_a. Na końcu skryptu znajduje się blok zatrzymaj ten skrypt.
Przykładowy algorytm na obliczanie największego wspólnego dzielnika dwóch liczb
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
R9KwdJowPRZOP
Ćwiczenie 3
W jakiej kategorii znajduje się opcja, która umożliwia utworzenie nowego bloku? Możliwe odpowiedzi: 1. Czujniki, 2. Zdarzenia, 3. Wyrażenia, 4. Moje bloki
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Modyfikujemy program: Jaki to ułamek?
Na trzeciej stronie tego materiału tworzyliśmy interaktywną grę, która pomaga zrozumieć koncepcję ułamków zwykłych. Teraz ją udoskonalimy. Zmiana projektu będzie polegała na tym, aby duszek rozpoznawał trzy stany:
Grający udzielił poprawnej odpowiedzi ze skróconym ułamkiem.
Grający udzielił poprawnej odpowiedzi co do wartości ułamka, ale go nie skrócił.
Grający udzielił błędnej odpowiedzi.
Czy grający udzielił prawidłowej odpowiedzi sprawdzisz używając tego samego warunku, co dotychczas.
R5uiKekjSs30N
Przedstawiono zielony blok w języku Scratch. Zawiera on dwa pola do porównania, oddzielone znakiem =. Po lewej stronie równania jest wartość będąca wynikiem działania <licznik przez mianownik>, a po prawej wynik z <licznik_odp przez mianownik_odp>.
Blok z kategorii Wyrażenia, sprawdzający, czy istnieje równość między dwiema stronami równania
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Jeśli przyjmuje on wartość prawda, należy korzystając z bloku obliczającego NWD rozstrzygnąć, czy wyświetlić „Brawo, to jest poprawna odpowiedź!!” (stan 1), czy „Dobrze, ale można skrócić ułamek...” (stan 2).
Ćwiczenie 4
Sformułuj warunek logiczny sprawdzający, czy grający podał jako odpowiedź skrócony ułamek i popraw skrypt.
RusMAP2wAvfnc
Miejsce do zapisania rozwiązania
Notatnik
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Należy obliczyć NWD dla wylosowanych wartości licznika i mianownika, a następnie wykorzystać wynik w warunku logicznym do sprawdzenia, czy podane jako odpowiedzi wartości są równe skróconemu ułamkowi.
Poprawiony skrypt:
RAa4Un02WNvKu
Skrypt z przykładowym rozwiązaniem w języku Scratch. Pierwszy blok to kiedy kliknięto zieloną flagę. Drugi jest blokiem z kategorii Wygląd z wartością Powiedz, jaka część figury jest zamalowana, przez trzy sekundy. Następnie dołączono blok zapytaj Licznik i czekaj z następującym po nim blokiem ustaw licznik_odp na odpowiedź. Bloki piąty i szósty działają podobnie. Blok zapytaj Mianownik i czekaj dołączony jest do poprzedniego, z kolei blok ustaw mianownik_odp na odpowiedź występuje po nim. Następny blok jest blokiem sprawdzenia warunku. Składa się on z dwóch części: prawdziwej dla spełnionego warunku i fałszywej, jeżeli jest on niespełniony. Blok ma wartość jeżeli <licznik przez mianownik równa się licznik_odp przez mianownik_odp>, to, w przeciwnym razie. Pierwsza część warunku składa się z dwóch zagnieżdżonych bloków. Pierwszym z nich jest NWD licznik mianownik, natomiast drugim jest kolejny blok porównania jeżeli <licznik przez nwd_a równa się licznik_odp> i <mianownik przez nwd_a równa się mianownik_odp>, to. W pierwszym miejscu do wprowadzenia warunku dołączono blok powiedz Brawo, to jest poprawna odpowiedź, w drugim powiedz Dobrze, ale można skrócić ułamek. Do poprzedniego bloku sprawdzania warunku, czyli głównego, w przypadku alternatywnym znajduje się blok powiedz Niestety, nie podałeś dobrej odpowiedzi. Skrypt zakończony jest blokiem zatrzymaj ten skrypt.
Skrypt z przykładowym rozwiązaniem
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Ćwiczenie 4
Sformułuj warunek logiczny sprawdzający, czy grający podał jako odpowiedź skrócony ułamek.
Należy obliczyć NWD dla wylosowanych wartości licznika i mianownika, a następnie wykorzystać wynik w warunku logicznym do sprawdzenia, czy podane jako odpowiedzi wartości są równe skróconemu ułamkowi.
Warunek będzie spełnony, jeśli iloraz licznika ułamka przez NWD licznika i mianownika będzie równy wartości licznika podanego przez gracza.
iuak7gU6CL_d715e232
RDlp8Mzh7NbQz
Zrzut ekranu przedstawia zielony blok do tworzenia skryptów w Scratch z kategorii Wyrażenia z komunikatem reszta z dzielenia przez.
Klocek języka Scratch realizujący resztę z dzielenia wybranej przez nas liczby przez z inną przez nas zadeklarowaną
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Przykład skryptu, który korzysta z bloku reszta z dzielenia.
R1G6P61YPHlbN
Przedstawiono skrypt sprawdzający parzystość liczb. Składa się on z bloków: kiedy kliknięto zieloną flagę; zapytaj, podaj liczbę całkowitą, i czekaj; jeżeli reszta z dzielenia odpowiedź przez dwa równa się zero, to; powiedz Podałeś liczbę parzystą; w przeciwnym raziepowiedz Podałeś liczbę nieparzystą; zatrzymaj ten skrypt.
Skrypt sprawdzający parzystość liczb
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
Poniżej znajduje się pole tekstowe przeznaczone do zapisywania notatek. Możesz w nim zapisać wszystkie informacje, które uważasz za potrzebne.
RODPNT7o0mXlx
Pole tekstowe do zapisywania odpowiedzi i notatek.