Algorytmy w Pythonie i językach wizualnych

Algorytmy odgrywają kluczową rolę w przetwarzaniu liczb i danych, a ich zapis zależy od wybranego języka programowania. W Pythonie wykorzystuje się do tego funkcje i operacje na listach, natomiast w językach wizualnych algorytmy przedstawia się w formie schematów blokowych. Niezależnie od metody, można za ich pomocą rozwiązywać różne problemy, takie jak znajdowanie największego wspólnego dzielnika, analiza podzielności liczb, wyodrębnianie cyfr czy sortowanie danych. Każde podejście ma swoje zalety i pozwala lepiej zrozumieć sposób działania algorytmów w różnych środowiskach programistycznych.

  1. Przykład realizacji

  1. Scratch

2. Python

Ćwiczenie 5. W środowisku programowania Baltie lub Scratch tworzymy program obliczający resztę z dzielenia

  1. W wybranym środowisku programowania utwórz program obliczający resztę z dzielenia liczby naturalnej a przez liczbę naturalną b i wyświetlający wynik (wartość zmiennej reszta) na ekranie. Liczby a i b należy wprowadzać z klawiatury.
  2. Zapisz program w pliku pod nazwą Reszta.

Ćwiczenie 6. W języku Python piszemy program obliczający resztę z dzielenia

  1. Napisz program w języku Python, obliczający resztę z dzielenia liczby naturalnej a przez liczbę naturalną b i wyświetlający wynik (wartość zmiennej reszta) na ekranie. Liczby a i b należy wprowadzać z klawiatury.
  2. Zapisz program w pliku pod nazwą Reszta.
  3. Porównaj programy utworzone w środowisku programowania Baltie i języku Python (lub w języku Scratch i języku Python). Co zauważasz?

Ćwiczenie 7. Analizujemy listę kroków algorytmu badania podzielności liczb naturalnych

  1. Zapoznaj się z listą kroków algorytmu badania podzielności liczb.
  2. Wykonaj algorytm badania podzielności dla kilku par liczb.

Ćwiczenie 8. W środowisku programowania Baltie lub Scratch tworzymy program realizujący algorytm badania podzielności liczb naturalnych

  1. Otwórz program Reszta zapisany w ćwiczeniu 5. Zmodyfikuj go, aby realizował algorytm badania podzielności liczb zgodnie z podaną listą kroków. Jaką instrukcję zastosujesz, aby zrealizować punkt 5. listy kroków? Uzasadnij odpowiedź.
  2. Zapisz program w pliku pod nazwą Podzielność.
  3. Uruchom program i sprawdź jego działanie dla kilku różnych par liczb. Zakładamy, że wprowadzamy prawidłowe dane, czyli dzielna i dzielnik to liczby naturalne i dzielnik jest różny od zera.

Ćwiczenie 9. W języku Python zapisujemy algorytm badania podzielności liczb naturalnych

  1. Otwórz program Reszta zapisany w ćwiczeniu 6. Zmodyfikuj go, aby realizował algorytm badania podzielności liczb zgodnie z podaną listą kroków. Jaką instrukcję zastosujesz, aby zrealizować punkt 5. listy kroków? Uzasadnij odpowiedź.
  2. Zapisz program w pliku pod nazwą Podzielność.
  3. Uruchom program i sprawdź jego działanie dla kilku różnych par liczb. Zakładamy, że wprowadzamy prawidłowe dane, czyli dzielna i dzielnik to liczby naturalne i dzielnik jest różny od zera.
  4. Porównaj programy utworzone w środowisku programowania Baltie i języku Python (lub w języku Scratch i języku Python). Co zauważasz?

Ćwiczenie 10. Modyfikujemy program

  1. Zmodyfikuj program zapisany w ćwiczeniu 9, aby sprawdzał podzielność liczb tylko dla dzielnika b różnego od zera. W przypadku gdy dzielnik b jest równy zero – wyświetl komunikat „Nie wolno dzielić przez zero”.

Ćwiczenie 11. Sprawdzamy działanie algorytmu Euklidesa w wersji z dzieleniem

Sprawdź działanie algorytmu Euklidesa w wersji z dzieleniem i wyznacz NWD dla liczb:
a = 56 i b = 6 oraz a = 24 i b = 16. Skorzystaj z podanej listy kroków.

W algorytmie powtarzamy polecenia, dopóki liczba b jest różna od zera, dlatego w programach wykorzystamy odpowiednią instrukcję iteracyjną. W języku Scratch zastosujemy polecenie powtarzaj aż, a w środowiskach programowania Baltie oraz Python – instrukcję while.


Ćwiczenie 12. W środowisku programowania Baltie lub Scratch tworzymy program realizujący algorytm Euklidesa w wersji z dzieleniem

  1. Umieść w obszarze roboczym polecenia pokazane na rysunku (patrz rysunek). Uzupełnij je o polecenia wprowadzania z klawiatury danych a i b oraz wyprowadzania wyniku NWD, a także dodaj kroki wykonujące dzielenie i obliczenie reszty z dzielenia.
  2. Zapisz program w pliku pod nazwą Euklides_dzielenie.

Wskazówka: W programie należy zastosować zmienne, właściwe wyniki i napisy możesz wzorować na programie realizującym algorytm Euklidesa w wersji z odejmowaniem (patrz rysunek).


Ćwiczenie 13. W Pythonie zapisujemy algorytm Euklidesa w wersji z dzieleniem

  1. Napisz w edytorze kodu źródłowego instrukcje pokazane na rysunku (patrz rysunek). Uzupełnij je o polecenia wprowadzania z klawiatury danych a i b oraz wyprowadzania wyniku NWD, a także dodaj kroki wykonujące dzielenie i obliczenie reszty z dzielenia.
  2. Przetestuj działanie programu w środowisku programowania.
  3. Porównaj program napisany w wybranym środowisku z wersją w Baltie. Czym różni się algorytm Euklidesa? Co zauważasz?

Wskazówka: W programie należy wstawić zmienną, właściwe wyniki i napisy możesz wzorować na programie realizującym algorytm Euklidesa w wersji z odejmowaniem (patrz rysunek).

# algorytm Euklidesa z dzieleniem
def nwd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

# testy z treści
print("NWD(56, 6) =", nwd(56, 6))      # wynik: 2
print("NWD(24, 16) =", nwd(24, 16))    # wynik: 8

# wersja z wejściem z klawiatury (do ćwiczenia 12 i 13)
a = int(input("Podaj liczbę a: "))
b = int(input("Podaj liczbę b: "))
print("Największy wspólny dzielnik to:", nwd(a, b))

Ćwiczenie 14. Piszemy specyfikację zadania i listę kroków algorytmu wyodrębniania cyfr danej liczby

  1. Zapoznaj się z opisem algorytmu wyodrębniania cyfr danej liczby i z podanym przykładem wykonania algorytmu. Wykonaj algorytm dla liczby 8945.
  2. Zapisz w zeszycie przedmiotowym specyfikację zadania i listę kroków tego algorytmu.

Wskazówka: Wzoruj się na zapisie specyfikacji zadań i na listach kroków innych algorytmów opisanych w tym temacie.

  • Dane: liczba naturalna, np. 8945
  • Wynik: kolejne cyfry liczby, od ostatniej do pierwszej
  • Opis kroków:
    1. Wczytaj liczbę.
    2. Dopóki liczba > 0:
      • Wyznacz ostatnią cyfrę (reszta z dzielenia przez 10).
      • Wypisz cyfrę.
      • Podziel liczbę całkowicie przez 10.

Ćwiczenie 15. W środowisku programowania Baltie lub Scratch tworzymy program realizujący algorytm wyodrębniania cyfr danej liczby

  1. Umieść w obszarze roboczym polecenia pokazane na rysunku (patrz rysunek).
  2. Zapisz program w pliku pod nazwą Cyfry.
  3. Uruchom program i sprawdź jego działanie dla różnych danych.
  4. Objaśnij działanie programu, m.in. uzasadnij użycie poszczególnych poleceń.
  5. Odpowiedz na pytania:
    – Ile razy powtarzają się polecenia umieszczone w pętli dla liczby trzycyfrowej,
    a ile – dla jednocyfrowej?
    – Dla jakiej wartości zmiennej kończą się obliczenia?

Ćwiczenie 16. Zapisujemy w języku Python algorytm wyodrębniania cyfr danej liczby

  1. Programy pokazane na rysunkach realizują algorytm wyodrębniania cyfr danej liczby, zaczynając od ostatniej cyfry (cyfry jedności). Przepisz wybrany program i zapisz go w pliku pod nazwą Cyfry.
  2. Uruchom kilkakrotnie program, by go przetestować dla różnych wartości zmiennej liczba.
  3. Objaśnij działanie programu, m.in. użycie poszczególnych instrukcji. Porównaj sposób utworzenia programu w środowisku programowania Baltie i w języku Python. Co zauważasz?
# Wyodrębnianie cyfr liczby od końca
liczba = int(input("Podaj liczbę: "))

while liczba > 0:
    cyfra = liczba % 10
    print("Cyfra:", cyfra)
    liczba = liczba // 10

  • Pętla działa tyle razy, ile cyfr ma liczba.
  • Dla liczby trzycyfrowej – 3 iteracje, dla jednocyfrowej – 1.
  • Pętla kończy się, gdy liczba == 0.

Ćwiczenie 17. Modyfikujemy program

  1. Zmodyfikuj program zapisany w ćwiczeniu 16, aby wyodrębniał cyfry dziesięciu liczb wprowadzanych z klawiatury i wyświetlał kolejne wyniki na ekranie. Zapisz program w pliku pod nazwą Cyfry_10.
  2. Odpowiedz na pytanie: Ile razy powtarzają się polecenia w pętli do … while lub while dla liczby trzycyfrowej, a ile razy – dla jednocyfrowej? Uzasadnij odpowiedź.

Python
Zamień instrukcję:
liczba = (liczba - cyfra) // 10
na:
liczba = liczba // 10

Czy zmieniło się działanie programu? Uzasadnij odpowiedź.

for i in range(10):
liczba = int(input(f"\nPodaj liczbę #{i+1}: "))
print("Cyfry (od końca):")
while liczba > 0:
cyfra = liczba % 10
print(cyfra)
# wersja pierwotna:
# liczba = (liczba - cyfra) // 10
# wersja uproszczona:
liczba = liczba // 10
  • Dla liczby trzycyfrowej pętla wykona się 3 razy, dla jednocyfrowej 1 raz.
  • Zamiana liczba = (liczba - cyfra) // 10 na liczba = liczba // 10 nie zmienia działania programu, bo liczba % 10 to właśnie cyfra.

Opublikowano

w

przez

Tagi: