R1zBjRDHKkAtJ
Obraz zawiera poukładanie klocki z nadrukowanymi liczbami. Grafika dekoracyjna.

Wyodrębnianie cyfr z danej liczby

Źródło: Susan Holt Simpson, dostępny w internecie: unsplash.com [dostęp 2.04.2024], domena publiczna.

pozycyjnym systemiepozycyjny system liczbowypozycyjnym systemie liczbowym ta sama cyfra może odpowiadać za różne wartości. Zależy to od pozycji, na której się znajduje.

W systemie dziesiętnym do zapisu dowolnej liczby wykorzystujemy 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Umiejętność wyodrębniania kolejnych cyfr liczby może być przydatna podczas rozwiązywania problemów algorytmicznych badających własności liczb.

  1. Interaktywna treść merytorycznaInteraktywna treść merytoryczna

  2. MultimediumMultimedium

  3. Zestaw ćwiczeń interaktywnychZestaw ćwiczeń interaktywnych

  4. SłownikSłownik

  5. BibliografiaBibliografia

Aby zrozumieć poruszane w tym materiale zagadnienia, przypomnij sobie:
  • ogólne zasady tworzenia programów w języku ScratchScratchScratch;

  • zasady dzielenia całkowitegodzielenie całkowitedzielenia całkowitego;

  • zasady obliczania reszty z dzielenia (znajdziesz je w e‑materiale dotyczącym dzielenia z resztąD1AbSnT82dzielenia z resztą),

  • algorytm wyodrębniania cyfr z danej liczby zapisany w językach Python oraz Blockly; zaprezentowany zostałe w e‑materiale Scratch (Blockly)PZwwVnJG7Scratch (Blockly).

Twoje cele
  • Zapoznasz się z algorytmem wyodrębniania cyfr liczby.

  • Korzystając z języka ScratchScratchScratch, zapiszesz program, w którym wykorzystasz algorytm wyodrębniania cyfr liczby.

  • Wymienisz różnice między cyfrą najmniej i najbardziej znaczącą.

1

Problem

Dana jest liczba naturalna. Wyodrębnij jej cyfry i wypisz je na ekranie, zaczynając od cyfry jedności (tzw. najmniej znaczącej cyfry).

Specyfikacja problemu:

Dane:

  • a – liczba naturalna

Wynik:

  • kolejne cyfry liczby; na początku powinna znajdować się najmniej znacząca cyfra

Analiza problemu

Najmniej znaczącą cyfrę danej liczby naturalnej otrzymamy, obliczając resztę z dzielenia tej liczby przez liczbę 10. Jeżeli w kolejnym kroku podzielimy tę liczbę całkowicie przez 10, to otrzymamy liczbę 10 razy mniejszą (usuniemy cyfrę jedności, a cyfra dziesiątek pierwotnej liczby stanie się cyfrą jedności). Obliczając resztę z dzielenia przez 10 tak powstałej liczby otrzymamy kolejną najmniej znaczącą cyfrę. W ten sposób możemy wyodrębnić wszystkie cyfry.

Przykład 1

Schemat blokowy algorytmualgorytmalgorytmu wyodrębniania cyfr liczby naturalnej.

RzYdhl9DLBmMK
Schemat blokowy przedstawia działanie algorytmu wyodrębniania cyfr liczby naturalnej.

W schemacie wykorzystaliśmy operatory div oraz mod.

Operator div to operator dzielenia całkowitego.

Operator mod to operatora obliczania reszty z dzielenia (modulo).

Przeanalizujmy algorytmalgorytmalgorytm zapisany za pomocą schematu blokowego i wykonajmy przykładowe obliczenia dla liczby 8394:

  1. Wczytujemy liczbę naturalną a.

  2. Przypisujemy do liczby b wartość liczby a.

  3. Obliczamy wartość reszty z dzielenia liczby b przez 10. Obliczoną wartość przypisujemy do p.

  4. Wypisujemy wartość p.

  5. Dzielimy bez reszty b przez 10. Wynik przypisujemy do zmiennej q.

  6. Sprawdzamy, czy q jest większe niż 0.

  7. Jeśli tak, przypisujemy b wartość q i wracamy do kroku 3. Jeśli nie, przechodzimy do kroku 8.

  8. Kończymy działanie algorymtu.

Prześledźmy działanie algorytmu dla a = 8394.

 Krok

a

b

p

q

 0

 8394

a = 8394

 8394 mod 10 = 4

 8394 div 10 = 839 

 1

 8394

q = 839

 839 mod 10 = 9

 839 div 10 = 83

 2

 8394

q = 83

 83 mod 10 = 3

 83 div 10 = 8

 3

 8394

q = 8

 8 mod 10 = 8

 8 div 10 = 0

 4

 8394

q = 0

Wypisane cyfry to: 4 9 3 8.

Przykład 2

Przykładowy program w języku ScratchScratchScratch, który rozwiązuje problem wyodrębniania cyfr liczby podanej przez użytkownika

R1YsrpWeASMsQ
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.

Opis schematu blokowego programu:

Program rozpoczyna się od bloku 'kiedy kliknięto zieloną flagę' na pomarańczowym tle. Kolejne bloki tworzą program, który prosi użytkownika o podanie liczby naturalnej, a następnie wykonuje na niej operacje matematyczne. Program wyświetla wprowadzoną liczbę, po czym w pętli (działającej dopóki liczba nie osiągnie zera) wyznacza cyfrę jedności jako resztę z dzielenia przez 10, wyświetla tę cyfrę, a następnie dzieli liczbę przez 10. Widoczne są kolorowe bloki funkcyjne: pomarańczowe (sterujące), zielone (operacyjne) i fioletowe (wyjściowe). Kod demonstruje algorytm wyodrębniania kolejnych cyfr z liczby naturalnej za pomocą operacji dzielenia i reszty z dzielenia. Program kończy się wyświetleniem napisu 'Koniec'

Ważne!

W języku Scratch nie ma bloku dopóki. W przypadku zaprezentowanego algorytmu zastosujemy konstrukcję powtarzaj aż z warunkiem liczba równe 0. Da to taki sam efekt.

W języku Scratch dzielenie całkowite realizujemy za pomocą następującej konstrukcji:

R1FbnNzjzQAXj
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.

Inna możliwość to zastosowanie konkretnego bloku odpowiedzialnego za obliczenie podłogi (blok odpowiada operacji liczba div 10):

RKC3ybd3DbBV5
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.

W języku Python pętlę dopóki realizujemy za pomocą następującej konstrukcji:

Linia 1. while liczba zamknij nawias ostrokątny 0 dwukropek kratka dopóki liczba zamknij nawias ostrokątny 0. Linia 2. kratka blok kodu wewnątrz pętli. Linia 3. liczba znak równości liczba prawy ukośnik prawy ukośnik 10 kratka dzielenie całkowite otwórz nawias okrągły div zamknij nawias okrągły.

Zapoznaj się z filmem, który demonstruje działanie programu dla liczby podanej przez użytkownika:

R14O0qQYxFrHn
Animacja prezentuje działanie programu z zastosowaniem algorytmu wyodrębniania

Program zapisany w języku Scratch 3:

R1HBwe94pAq90

Plik do pobrania z przygotowanym programem.

Plik ZIP o rozmiarze 42.13 KB w języku polskim

Kod w języku Python:

Linia 1. liczba znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę naturalną dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. print otwórz nawias okrągły cudzysłów Podana przez użytkownika liczba to dwukropek cudzysłów przecinek liczba zamknij nawias okrągły. Linia 3. while liczba zamknij nawias ostrokątny 0 dwukropek. Linia 4. cyfra znak równości int otwórz nawias okrągły liczba procent 10 zamknij nawias okrągły. Linia 5. print otwórz nawias okrągły cudzysłów Reszta z dzielenia liczby cudzysłów przecinek liczba przecinek cudzysłów przez 10 to kolejna cyfra dwukropek cudzysłów przecinek cyfra zamknij nawias okrągły. Linia 6. liczba znak równości int otwórz nawias okrągły otwórz nawias okrągły liczba minus cyfra zamknij nawias okrągły prawy ukośnik 10 zamknij nawias okrągły. Linia 7. print otwórz nawias okrągły cudzysłów Wynik dzielenia liczby przez 10 dwukropek cudzysłów przecinek liczba zamknij nawias okrągły.
Ważne!

W e‑materiale Scratch (Blockly)PZwwVnJG7Scratch (Blockly) prezentujemy zapis tego programu w języku Python oraz z wykorzystaniem Blockly.


Pozycyjny system liczbowy

pozycyjnym systemie liczbowympozycyjny system liczbowypozycyjnym systemie liczbowym ta sama cyfra może mieć różne znaczenie, w zależności od pozycji, na której ona stoi.

W codziennym życiu używamy systemu dziesiętnego, który do zapisu dowolnej liczby używa cyfr od 0 do 9. Każda cyfra zajmuje określoną pozycję w liczbie, a jej wartość jest mnożona przez odpowiednią potęgę liczby 10 zależną od jej pozycji. Pozycje są wyznaczane od prawej strony (najmniej znaczącej cyfry liczby) – zaczynamy od potęgi zerowej.

W przypadku liczby 532 zapisanej w sytemie dziesiętnym:

  • cyfra 2 znajduje się na miejscu jedności;

  • cyfra 3 znajduje się na miejscu dziesiątek;

  • cyfra 5 znajduje się na miejscu setek.

Aby obliczyć wartość liczby, sumujemy iloczyny cyfr i odpowiednich potęg liczby 10. W przypadku liczby 532:

5102+3101+2100=500+30+2=532

Wyobraźmy sobie, że zamiast cyfr stosujemy różne symbole, np.:

Cyfra

Oznaczenie

0

czerwone koło

1

zielony kwadrat

2

pomarańczowa gwiazda

3

żołty trójkąt

4

niebieska gwiazdka

5

różowy sześciokąt

6

zielone słoneczko

7

błękitne serce

8

fioletowa chmura

9

fioletowy krzyżyk

Przykład 3

Oto przykładowe znaki od 0 do 9.

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

Liczba 854 zapisana zgodnie z przyjętą konwencją:

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

Liczby 34, 80 oraz 114 zapisane zgodnie z przyjętą konwencją:

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

Notatnik

R10ra6rFdJPYo
Miejsce na Twoje notatki: (Uzupełnij) .
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
2

Prezentacja multimedialna

R10Fglr1jVyTt

Cyfry i liczby

Cyfry to graficzne znaki, przy pomocy których zapisujemy liczby. Używane przez nas w Polsce cyfry to tzw. cyfry arabskie.

Cyfry w systemie dziesiętnym to: 0 1 2 3 4 5 6 7 8 9.

Liczby zbudowane z tych cyfr to np. 83, 985, 94561, 37421904.

RwJstX4zIG0h8
Źródło: Pixabay, domena publiczna.
Rp9rd2GF59sBe

Przykład wykorzystania algorytmu:
weryfikacja numerów PESEL

Numer PESEL to 11‑cyfrowy identyfikator numeryczny jednoznacznie identyfikujący określoną osobę fizyczną.

1,1
RJlrE11Ckmiko
Źródło: Domena Publiczna.

Budowa

Numer PESEL składa się z kilku bloków cyfr:

Zakodowana data urodzenia w formacie rok (dwie ostatnie cyfry) miesiąc (dwie cyfry – jeśli miesiąc oznaczamy liczbą jednocyfrową, umieszczamy przed nim 0) dzień (dwie cyfry – jeśli dzień oznaczamy liczbą jednocyfrową, umieszczamy przed nim 0): 6 cyfr.

Liczba porządkowa: 4 cyfry.

Zakodowana płeć: ostatnia cyfra liczby porządkowej (dziesiąta cyfra numeru PESEL).

Cyfry kontrolna: 1 cyfra.

Przykładowy nr PESEL

07320392154

ENIGMA – niemiecka maszyna szyfrująca

R10kYOJU3mqtm
Film nawiązujący do treści materiału.
R1JDYex2soxBk

Prawo pierwszej cyfry – wykrywanie nadużyć finansowych

R2R99V9Rdhn2v

Media społecznościowe – analiza treści

Analiza sentymentu to ocena emocji kryjących się za treściami internetowymi, niezależnie od tego, czy dotyczą artykułu, opinii czy komentarzy.

RJxp8xrGexX5O
Film nawiązujący do treści materiału

Przykład:

Jeśli wiele postów zawiera liczbę oznaczającą bieżący rok, może to wskazywać na rozmowy na temat aktualnych lub nadchodzących wydarzeń, takich jak wybory czy imprezy sportowe.

R1QM2EoCVeXNj

Algorytm i schemat blokowy – utrwalenie wiedzy

1,1

Krok 1

Pobieramy liczbę a.

Krok 2

Przypisujemy b <-- a.

Krok 3

Obliczamy p <-- b mod 10.

Krok 4

Wypisujemy p – to kolejna cyfra.

Krok 5

Obliczamy q <-- b div 10.

Krok 6

Sprawdzamy, czy q jest większe od 0, jeśli tak to wykonujemy b <-- q i powtarzamy kroki 3 do 5; jeśli q = 0, kończymy działanie algorytmu.

RzYdhl9DLBmMK
Schemat blokowy przedstawia działanie algorytmu wyodrębniania cyfr liczby naturalnej.

Jak stworzyć program w przeglądarce w edytorze Scratch

R1F2CZbfJNF64
Film nawiązujący do treści materiału

Scratch – rozbudowujemy program o opis grup cyfr

Roo5ApGXLPZqe
Film nawiązujący do treści materiału
RSlaN5lKekmYD

Scratch – pełna wersja programu

RMdX4AXAbPzdW
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.
RTukVZZj8ZdFJ

Kod w języku Python

RaWLop5BqPNCr
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.
Linia 1. liczba znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę naturalną dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. Podaj liczbę naturalną dwukropek 82437. Linia 4. while liczba zamknij nawias ostrokątny 0 dwukropek. Linia 5. cyfra znak równości liczba procent 10 kratka modulo przecinek reszta z dzielenia. Linia 6. print otwórz nawias okrągły cudzysłów Najmniej znacząca cyfra liczby cudzysłów przecinek liczba przecinek cudzysłów to dwukropek cudzysłów przecinek cyfra zamknij nawias okrągły. Linia 7. liczba znak równości liczba prawy ukośnik prawy ukośnik 10 kratka dzielenie całkowite.
Głośność lektora
Głośność muzyki

Indeks górny Źródło: Adam Jurkiewicz, licencja: CC BY 3.0. Indeks górny koniec

Polecenie 1
RKfcIoSAlRjqB
Polecenie 2
RkauFS81tl4SO
Polecenie 3

Pobierz program:

R11K3nmyKyr12

Plik z programem do pobrania w języku Scratch.

Spakowany program w języku Scratch
Plik ZIP o rozmiarze 42.37 KB w języku polskim

Program wyodrębnia kolejne cyfry liczby, zaczynając od cyfry jedności.

ROmGJcLw4lGsj
3

Zestaw ćwiczeń interaktywnych

RnVwrlcfMDGO01
Ćwiczenie 1
Cyfra najmniej znacząca w pozycyjnym systemie liczbowym to: Możliwe odpowiedzi: 1. cyfra jedności, a więc ostatnia cyfra liczby, 2. pierwsza cyfra liczby, 3. cyfra o najmniejszej wartości, 4. cyfra o największej wartości
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.

Zapoznaj się z ilustracjami, które przedstawiają dodawanie i odejmowanie pisemne liczb reprezentowanych przez symbole.

Operacja dodawania

R1BofledoDKbj
Źródło: GroMar sp. z o.o., licencja: CC BY-SA 3.0.
Linia 1. 123. Linia 2. plus 456. Linia 3. minus minus minus. Linia 4. 579.

Operacja odejmowania

RLEeZd3SPd1X6
Źródło: GroMar sp. z o.o., licencja: CC BY-SA 3.0.
Linia 1. 479. Linia 2. minus 244. Linia 3. minus minus minus. Linia 4. 235.
RLNbxaV5QMtEI1
Ćwiczenie 2
RAdXIUBIZlJ6o
Ćwiczenie 3
R1MOYtRGesR8I1
Ćwiczenie 4
W e-materiale przedstawiliśmy algorytm wyodrębniania cyfr liczby. Wskaż blok języka Scratch, który został użyty w tym algorytmie, aby otrzymać kolejną cyfrę liczby podanej przez użytkownika.
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.

Poniżej przedstawiono kod źródłowy programu wraz z komentarzem. Zadaniem programu jest rozkładanie liczby na cyfry.

liczba = int(input(„Podaj liczbę naturalną: „))

while liczba > 0:

cyfra = liczba % 10      # modulo, reszta z dzielenia

print(„Najmniej znacząca cyfra liczby”, liczba, „to:”, cyfra)

liczba = liczba // 10    # dzielenie całkowite

liczba = int(input(„Podaj liczbę naturalną: „))

Program prosi użytkownika o podanie liczby naturalnej i zapisuje ją jako liczbę całkowitą do zmiennej liczba.

while liczba > 0:

Rozpoczyna się pętla, która działa tak długo, jak długo liczba jest większa od zera.

cyfra = liczba % 10

Zmienna cyfra otrzymuje wartość ostatniej (najmniej znaczącej) cyfry liczby. Obliczane jest to jako reszta z dzielenia liczby przez 10.

Komentarz po prawej stronie: # modulo, reszta z dzielenia.

print(„Najmniej znacząca cyfra liczby”, liczba, „to:”, cyfra)

Program wyświetla informację o aktualnej wartości liczby i jej najmniej znaczącej cyfrze.

liczba = liczba // 10

Liczba jest dzielona całkowicie przez 10 (usuwanie ostatniej cyfry z  prawej strony) i przypisywana z powrotem do zmiennej liczba.

Komentarz: # dzielenie całkowite.

RoH1nvotDTdn12
Ćwiczenie 5
Ułóż w kolejności kroki, jakie należy wykonać, aby z liczby naturalnej wyodrębnić najmniej znaczącą (a więc ostatnią cyfrę)i wypisać ją na ekranie. Elementy do uszeregowania: 1. resztę z dzielenia całkowitego przez 10 przypisz do zmienna_cyfra, 2. wypisz na ekranie zmienna_cyfra, 3. przypisz liczbę do zmienna_liczba, 4. podziel tą zmienną całkowicie przez 10
Źródło: Adam Jurkiewicz, licencja: CC BY 3.0.
2
Ćwiczenie 6

Pobierz program:

RV6IQvoPG4lmI

Plik do pobrania z kodem programu w środowisku Scratch.

Plik ZIP o rozmiarze 42.27 KB w języku polskim
R17IuI20P0359
d
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
2
Ćwiczenie 7

Pobierz program:

RV6IQvoPG4lmI

Plik do pobrania z kodem programu w środowisku Scratch.

Plik ZIP o rozmiarze 42.27 KB w języku polskim
RrHKhxOvrxJZN
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
3
Ćwiczenie 8
R1Y60jthHCzNp
d
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
3
Ćwiczenie 9
RNbqtzRrXGbXe
Źródło: GroMar Sp. z o.o., licencja: CC BY 3.0.
4

Słownik

algorytm
algorytm

ściśle określony, skończony zestaw instrukcji, który służy do rozwiązania problemu lub wykonania zadania

pozycyjny system liczbowy
pozycyjny system liczbowy

system liczbowy, w którym wartość cyfry zależy od pozycji, na której jest zapisana

Scratch
Scratch

wizualny język programowania stworzony przez Mitchela Resnicka, profesora MIT; pierwsza publiczna wersja została wydana w 2007 roku

dzielenie całkowite
dzielenie całkowite

operacja dzielenia liczb całkowitych polegająca na odrzuceniu części ułamkowej wyniku

5

Bibliografia

  • Sysło M.M., Algorytmy, Helion, Gliwice 2016.

  • Tkaczyk M., Cyfry i liczby, MEiN materiały edukacyjne, Warszawa 2021.