Grafika przedstawia dwa splecione symbole węży. Jeden jest niebieski, a drugi żółty.
Grafika przedstawia dwa splecione symbole węży. Jeden jest niebieski, a drugi żółty.
Stosowanie funkcji w języku Python do realizacji algorytmu Euklidesa z odejmowaniem
Logo języka Python
Źródło: Dnu72, dostępny w internecie: commons.wikimedia.org, licencja: CC BY-SA 4.0.
Algorytm Euklidesa opisuje metodę znajdowania największego wspólnego dzielnika dwóch liczb naturalnych. Nazwa pochodzi od greckiego matematyka Euklidesa, który jako pierwszy opisał algorytm w IV w p.n.e., chociaż nie był jego autorem. Problem wyznaczania NWD rozwiązywany jest na wiele sposobów, w tym materiale wykorzystamy wersję opartą na odejmowaniu.
Przeanalizujesz zapis algorytmu Euklidesa znajdowania NWD opartego na odejmowaniu.
Napiszesz program obliczający NWD dla liczb pobranych od użytkownika.
Zastosujesz instrukcję iteracyjną (pętlę) i instrukcję warunkową.
Zbadasz liczbę operacji potrzebnych do uzyskania wyniku.
1
NWD
Największy wspólny dzielnik (NWD) dwóch dodatnich liczb naturalnych a i b to największa liczba naturalna d, która jest dzielnikiem każdej z nich, czyli dzieli je bez reszty. Przyjmijmy, że będziemy ją oznaczać jako d = NWD(a, b).
NWD ma wiele zastosowań, m.in. pozwala skracać ułamki zwykłe do postaci, w której licznik i mianownik są liczbami względnie pierwszymi, czyli NWD(a, b) = 1.
Algorytm Euklidesa z zastosowaniem odejmowania
Skonstruujemy algorytm, który obliczy największy wspólny dzielnik dwóch dodatnich liczb naturalnych.
Specyfikacja algorytmu:
Dane wejściowe:
a, b – dodatnie liczby naturalne
Wynik:
d - dodatnia liczba naturalna, NWD(a, b)
Do rozwiązania postawionego zadania użyjemy algorytmu Euklidesa w wersji z odejmowaniem.
Przykład 1
Przeanalizujmy wyznaczanie NWD według algorytmu Euklidesa z wykorzystaniem odejmowania dla danych: a = 4, b = 10.
Powtórzenia
a
b
działanie
1
4
10
b = 10 - 4
2
4
6
b = 6 - 4
3
4
2
a = 4 - 2
4
2
2
-
Liczba powtórzeń: 3. Wynik: NWD (4, 10) = 2
Z powyższego przykładu wynika, że dopóki liczby a i b są różne, w każdym powtórzeniu sprawdzamy, która liczba jest większa. Jeżeli a > b, obliczamy a = a - b, w przeciwnym razie wyliczamy b = b - a. Kiedy a i b są równe, wynikiem jest dowolna z tych liczb.
Zapiszmy algorytm w postaci listy kroków:
Wczytaj a, b.
Jeżeli a jest równe b, przejdź do kroku 5.
Jeżeli a > b, zmiennej a przypisz a - b, w przeciwnym razie zmiennej b przypisz b - a.
Przejdź do kroku 2.
Wypisz a i zakończ algorytm.
Przeanalizujmy również schemat blokowy algorytmu:
R7eTw2k5l821C1
Na grafice widoczny jest schemat blokowy ilustruje implementację klasycznego algorytmu Euklidesa służącego do obliczania największego wspólnego dzielnika (NWD). Schemat składa się z: zielonego owalu z napisem start.
Kolejnym elementem jest blok purpurowy równoległobok zawierający instrukcje "Wczytaj liczbę a" oraz "Wczytaj liczbę b".
Główna Pętla Algorytmiczna i Warunki Decyzyjne.
Centralnym elementem schematu jest struktura decyzyjna przedstawiona w formie niebieskiego rombu z warunkiem "Jeżeli a = b". W przypadku gdy wartości zmiennych a i b są równe, algorytm przechodzi do fazy zakończenia poprzez wyprowadzenie wyniku. Alternatywnie, gdy warunек równości nie jest spełniony, następuje przejście do kolejnej fazy przetwarzania danych.
Kolejnym elementem jest niebieski romb, zawiera warunek "Jeżeli a > b" i służy do określenia, która z dwóch zmiennych powinna zostać zmodyfikowana w bieżącej iteracji.
Operacje Arytmetyczne i Modyfikacja Zmiennych
Schemat zawiera dwa prostokątne elementy w kolorze jasnoniebieskim reprezentujące operacje arytmetyczne "a = a - b" oraz "b = b - a".
Gdy warunek a = b zostanie spełniony, algorytm przechodzi do fazy wyprowadzenia wyniku poprzez element "Wypisz a" przedstawiony w formie purpurowego równoległoboku. W tym momencie zmienna a (równa również zmiennej b) zawiera wartość największego wspólnego dzielnika liczb wprowadzonych na początku algorytmu. Wybór wyprowadzenia zmiennej a jest arbitralny, gdyż w stanie końcowym obie zmienne mają identyczną wartość będącą poszukiwanym NWD.
Element końcowy STOP, reprezentowany przez czerwony owal, oznacza formalne zakończenie wykonywania algorytmu.
Schemat blokowy algorytmu
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Z obydwu sposobów zapisu algorytmu wynika, że na początku pobieramy dane wejściowe, czyli dwie dodatnie liczby naturalne. Następnie porównujemy je i większą pomniejszamy o mniejszą. Operacje te powtarzają się, gdy liczby a i b są różne. Kiedy zrównają się, wyprowadzamy wynik, tj. dowolną z tych liczb, i kończymy.
Zapis algorytmu w postaci programu
Napiszemy prosty program, który będzie obliczał NWD według omówionego algorytmu.
Do kodowania użyj dostępnego w swoim środowisku edytora, np. IDLE dołączonego do standardowej instalacji Pythona.
Przykład 2
Kopiujemy poniższy kod, wklejamy do pustego pliku i zapisujemy pod nazwą np. nwd_odejmowanie.py.
Linia 1. kratka pobierz liczbę naturalną a.
Linia 4. kratka pobierz liczbę naturalną b.
Linia 7. kratka pętla obliczająca NWD.
Linia 10. kratka wypisanie wyniku.
Linia 11. print otwórz nawias okrągły cudzysłów NWD otwórz nawias okrągły cudzysłów przecinek a przecinek cudzysłów przecinek cudzysłów przecinek b przecinek cudzysłów zamknij nawias okrągły znak równości cudzysłów przecinek a zamknij nawias okrągły.
# pobierz liczbę naturalną a
# pobierz liczbę naturalną b
# pętla obliczająca NWD
# wypisanie wyniku
print("NWD(", a, ",", b,") = ", a)
Dane
Jak wynika z komentarzy w kodzie programu, na początku musimy pobrać dane, czyli dwie dodatnie liczby naturalne.
1
Polecenie 1
W pliku nwd_odejmowanie.py poniżej odpowiednich komentarzy dodaj instrukcje pobierania z klawiatury dwóch liczb naturalnych i zapamiętywania ich pod nazwami a i b. Użyj funkcji input() i int().
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. kratka pobierz liczbę naturalną a.
Linia 2. a znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę a dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 4. kratka pobierz liczbę naturalną b.
Linia 5. b znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę b dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
# pobierz liczbę naturalną a
a = int(input("Podaj liczbę a: "))
# pobierz liczbę naturalną b
b = int(input("Podaj liczbę b: "))
Pętla
W najważniejszej części algorytmu porównujemy podane liczby, dopóki nie są równe. Warunek ten możemy zapisać jako a != b. Ponieważ nie wiemy, ile trzeba powtórzeń, aby uzyskać wynik, w programie musimy użyć pętli while. Wewnątrz pętli do sprawdzania, która z liczb jest większa, będziemy potrzebowali instrukcji warunkowej if badającej warunek a > b. Do zakodowania operacji zmniejszania większej liczby o mniejszą użyjemy instrukcji przypisania, np. a = a - b.
Polecenie 2
W pliku nwd_odejmowanie.py pod komentarzem pętla obliczająca NWD zapisz:
pętlę, sprawdzającą warunek a != b – użyj instrukcji while,
wewnątrz pętli warunek a > b oraz operacje zmniejszania a = a - b lub b = b - a – użyj instrukcji warunkowej if.
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. while a wykrzyknik znak równości b dwukropek.
Linia 2. if a zamknij nawias ostrokątny b dwukropek.
Linia 3. a znak równości a minus b.
Linia 4. else dwukropek.
Linia 5. b znak równości b minus a.
while a != b:
if a > b:
a = a - b
else:
b = b - a
Cały kod:
Linia 1. kratka pobierz liczbę naturalną a.
Linia 2. a znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę a dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 4. kratka pobierz liczbę naturalną b.
Linia 5. b znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę b dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 8. kratka pętla obliczająca NWD.
Linia 9. while a wykrzyknik znak równości b dwukropek.
Linia 10. if a zamknij nawias ostrokątny b dwukropek.
Linia 11. a znak równości a minus b.
Linia 12. else dwukropek.
Linia 13. b znak równości b minus a.
Linia 15. kratka wypisanie wyniku.
Linia 16. print otwórz nawias okrągły cudzysłów NWD otwórz nawias okrągły cudzysłów przecinek a przecinek cudzysłów przecinek cudzysłów przecinek b przecinek cudzysłów zamknij nawias okrągły znak równości cudzysłów przecinek a zamknij nawias okrągły.
# pobierz liczbę naturalną a
a = int(input("Podaj liczbę a: "))
# pobierz liczbę naturalną b
b = int(input("Podaj liczbę b: "))
# pętla obliczająca NWD
while a != b:
if a > b:
a = a - b
else:
b = b - a
# wypisanie wyniku
print("NWD(", a, ",", b,") = ", a)
Przetestujmy działanie napisanego programu.
1
Polecenie 3
Uruchom program nwd_odejmowanie.py i przetestuj jego działanie dla przykładowych danych:
Linia 1. kratka Pierwszy zestaw danych.
Linia 2. a znak równości 4.
Linia 3. b znak równości 10.
Linia 5. kratka Drugi zestaw danych.
Linia 6. a znak równości 1020.
Linia 7. b znak równości 20.
# Pierwszy zestaw danych
a = 4
b = 10
# Drugi zestaw danych
a = 1020
b = 20
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Oczekiwane komunikaty wyjściowe:
Linia 1. NWD otwórz nawias okrągły a przecinek b zamknij nawias okrągły znak równości 2.
Linia 2. NWD otwórz nawias okrągły a przecinek b zamknij nawias okrągły znak równości 20.
NWD(a, b) = 2
NWD(a, b) = 20
Użycie funkcji
Obliczanie NWD to operacja, którą można w programie wykonywać wielokrotnie, np. gdy umożliwimy użytkownikowi wielokrotne podawanie liczb wejściowych. Kod realizujący tę operację umieścimy więc w funkcjifunkcjafunkcji, która do działania będzie wymagała dwóch parametrówparametry i argumenty funkcjiparametrów, tzn. pobranych liczb.
Polecenie 4
Plik nwd_odejmowanie.py zapisz pod nazwą nwd_odejmowanie_funkcja.py.
Na początku pliku nwd_odejmowanie_funkcja.py umieść definicję funkcji oblicz_nwd().
Linia 1. def oblicz podkreślnik nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 2. kratka kod pętli.
Linia 3. otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny.
def oblicz_nwd(a, b):
# kod pętli
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
W ciele funkcji należy umieścić zasadniczą część algorytmu, czyli pętlę obliczającą NWD.
1
Polecenie 5
W pliku nwd_odejmowanie_funkcja.py w funkcji oblicz_nwd() pod komentarzem kod pętli umieść kod pętli obliczającej NWD.
Wskazówka: zaznacz, wytnij i wklej dotychczasowy kod pętli razem z komentarzem pętla obliczająca NWD. Zwróć uwagę na poprawne wcięcia kodu.
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. def oblicz podkreślnik nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 2. while a wykrzyknik znak równości b dwukropek.
Linia 3. if a zamknij nawias ostrokątny b dwukropek.
Linia 4. a znak równości a minus b.
Linia 5. else dwukropek.
Linia 6. b znak równości b minus a.
def oblicz_nwd(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
Zwracanie wartości z funkcji
Po umieszczeniu pętli wyznaczającej NWD w funkcji musimy zdecydować, co zrobimy z wynikiem jej działania, tzn. ze zmienną a, która zawiera NWD. Moglibyśmy od razu wypisać wynik, ale w funkcjach, które coś obliczają, zazwyczaj się tego nie robi, chyba że testujemy ich działanie. Wynik działania funkcji najczęściej zwracamy do miejsca wywołania po to, żeby go wykorzystać, np. wypisać w terminalu albo użyć w dalszych obliczeniach.
Do zwracania wartości z funkcji używamy instrukcji return wyrażenie. Wyrażeniem może być zmienna, kilka zmiennych czy nawet wynik wywołania innej funkcji. W naszym przypadku wystarczy, że po pętli umieścimy instrukcję return a.
1
Polecenie 6
W pliku nwd_odejmowanie_funkcja.py na końcu funkcji oblicz_nwd() umieść instrukcję zwracającą wynik: return a. Zwróć uwagę na jej wcięcie, powinno odpowiadać pętli while.
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. def oblicz podkreślnik nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 2. while a wykrzyknik znak równości b dwukropek.
Linia 3. if a zamknij nawias ostrokątny b dwukropek.
Linia 4. a znak równości a minus b.
Linia 5. else dwukropek.
Linia 6. b znak równości b minus a.
Linia 7. return a.
def oblicz_nwd(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
return a
Wywołanie funkcji
Wykonywanie naszego programu rozpoczyna się od pobrania dwóch liczb od użytkownika. Po pobraniu tych danych musimy umieścić wywołaniewywołanie funkcjiwywołanie naszej funkcji w postaci oblicz_nwd(a, b). Liczby a i b przekazujemy jako argumenty.
Funkcja oblicz_nwd() zwraca wynik do miejsca wywołania. Możemy go przypisać do zmiennej d, a na koniec wypisać.
1
Polecenie 7
W pliku nwd_odejmowanie_funkcja.py po instrukcjach pobierania danych wejściowych umieść instrukcję przypisania i wywołania funkcji:
Linia 1. d znak równości oblicz podkreślnik nwd otwórz nawias okrągły zamknij nawias okrągły.
d = oblicz_nwd()
Końcową instrukcję print() zastąp kodem:
Linia 1. print otwórz nawias okrągły cudzysłów NWD otwórz nawias okrągły cudzysłów przecinek a przecinek cudzysłów przecinek cudzysłów przecinek b przecinek cudzysłów zamknij nawias okrągły znak równości cudzysłów przecinek d zamknij nawias okrągły.
print("NWD(", a, ",", b,") = ", d)
R6KgkZcjyvCgo
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. def oblicz podkreślnik nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 2. while a wykrzyknik znak równości b dwukropek.
Linia 3. if a zamknij nawias ostrokątny b dwukropek.
Linia 4. a znak równości a minus b.
Linia 5. else dwukropek.
Linia 6. b znak równości b minus a.
Linia 7. return a.
Linia 9. kratka pobierz liczbę naturalną a.
Linia 10. a znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę a dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 12. kratka pobierz liczbę naturalną b.
Linia 13. b znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj liczbę b dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 15. kratka wywołanie funkcji i przypisanie zwróconego wyniku.
Linia 16. d znak równości oblicz podkreślnik nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły.
Linia 18. kratka wypisanie komunikatu dwukropek NWD otwórz nawias okrągły a przecinek b zamknij nawias okrągły znak równości d.
Linia 19. print otwórz nawias okrągły cudzysłów NWD otwórz nawias okrągły cudzysłów przecinek a przecinek cudzysłów przecinek cudzysłów przecinek b przecinek cudzysłów zamknij nawias okrągły znak równości cudzysłów przecinek d zamknij nawias okrągły.
def oblicz_nwd(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
return a
# pobierz liczbę naturalną a
a = int(input("Podaj liczbę a: "))
# pobierz liczbę naturalną b
b = int(input("Podaj liczbę b: "))
# wywołanie funkcji i przypisanie zwróconego wyniku
d = oblicz_nwd(a, b)
# wypisanie komunikatu: NWD( a , b ) = d
print("NWD(", a, ",", b,") = ", d)
Użycie funkcji ma jeszcze jedną zaletę – ułatwia wypisywanie komunikatu końcowego.
Notatnik
RwQTyLx3QQNTf
Miejsce na Twoje notatki: (Uzupełnij).
2
Film
Polecenie 8
Zapoznaj się z animacją, która pokazuje, w jaki sposób możemy uzyskać odpowiedź na pytanie o to, ile trzeba wykonać operacji odejmowania, zanim znajdziemy największy wspólny dzielnik z wykorzystaniem algorytmu Euklidesa.
Uruchom program nwd_odejmowanie_licznik.py i przetestuj jego działanie dla podanych danych:
Linia 1. kratka Pierwszy zestaw danych.
Linia 2. a znak równości 8.
Linia 3. b znak równości 32.
Linia 5. kratka Drugi zestaw danych.
Linia 6. a znak równości 8.
Linia 7. b znak równości 2848.
Linia 9. kratka Trzeci zestaw danych.
Linia 10. a znak równości 2.
Linia 11. b znak równości 10.
Linia 13. kratka Czwarty zestaw danych.
Linia 14. a znak równości 2.
Linia 15. b znak równości 22222.
# Pierwszy zestaw danych
a = 8
b = 32
# Drugi zestaw danych
a = 8
b = 2848
# Trzeci zestaw danych
a = 2
b = 10
# Czwarty zestaw danych
a = 2
b = 22222
RlvYg4byQuiPH
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
Oczekiwane wyniki:
Linia 1. NWD otwórz nawias okrągły 8 przecinek 32 zamknij nawias okrągły znak równości 8.
Linia 2. Liczba operacji znak równości 3.
Linia 4. NWD otwórz nawias okrągły 8 przecinek 2848 zamknij nawias okrągły znak równości 8.
Linia 5. Liczba operacji znak równości 355.
Linia 7. NWD otwórz nawias okrągły 2 przecinek 10 zamknij nawias okrągły znak równości 2.
Linia 8. Liczba operacji znak równości 4.
Linia 10. NWD otwórz nawias okrągły 2 przecinek 22222 zamknij nawias okrągły znak równości 2.
Linia 11. Liczba operacji znak równości 11110.
NWD( 8, 32 ) = 8
Liczba operacji = 3
NWD( 8, 2848 ) = 8
Liczba operacji = 355
NWD( 2, 10 ) = 2
Liczba operacji = 4
NWD( 2, 22222 ) = 2
Liczba operacji = 11110
Z wyników można wywnioskować, że liczba operacji zależy od różnicy danych wejściowych – im większa różnica między dwiema liczbami, tym więcej operacji.
1
Polecenie 10
Do wykonania polecenia wykorzystaj następujące dwa zestawy danych:
Linia 1. kratka Pierwszy zestaw danych.
Linia 2. a znak równości 34.
Linia 3. b znak równości 16.
Linia 5. kratka Drugi zestaw danych.
Linia 6. a znak równości 16.
Linia 7. b znak równości 34.
# Pierwszy zestaw danych
a = 34
b = 16
# Drugi zestaw danych
a = 16
b = 34
R1dQ7DWSQpJk9
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
Oczekiwane wyniki:
Linia 1. NWD otwórz nawias okrągły 34 przecinek 16 zamknij nawias okrągły znak równości 2.
Linia 2. Liczba operacji znak równości 9.
Linia 3. NWD otwórz nawias okrągły 16 przecinek 34 zamknij nawias okrągły znak równości 2.
Linia 4. Liczba operacji znak równości 9.
NWD( 34, 16 ) = 2
Liczba operacji = 9
NWD( 16, 34 ) = 2
Liczba operacji = 9
Wyniki sugerują, że liczba operacji nie zależy od kolejności danych.
Polecenie 11
R1YSudRpoDHj7
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
Wyniki dla przykładowych danych:
Linia 1. kratka Pierwszy zestaw.
Linia 2. a znak równości 28.
Linia 3. b znak równości 4.
Linia 5. kratka Wyniki.
Linia 6. Liczba operacji znak równości 6.
Linia 7. NWD otwórz nawias okrągły 28 przecinek 4 zamknij nawias okrągły znak równości 4.
Linia 9. kratka Drugi zestaw.
Linia 10. a znak równości 4.
Linia 11. b znak równości 28.
Linia 13. kratka Wyniki.
Linia 14. NWD otwórz nawias okrągły 4 przecinek 28 zamknij nawias okrągły znak równości 4.
Linia 15. Liczba operacji znak równości 6.
Linia 17. kratka Trzeci zestaw.
Linia 18. a znak równości 4.
Linia 19. b znak równości 280.
Linia 21. kratka Wyniki.
Linia 22. NWD otwórz nawias okrągły 4 przecinek 280 zamknij nawias okrągły znak równości 4.
Linia 23. Liczba operacji znak równości 69.
# Pierwszy zestaw
a = 28
b = 4
# Wyniki
Liczba operacji = 6
NWD( 28 , 4 ) = 4
# Drugi zestaw
a = 4
b = 28
# Wyniki
NWD( 4, 28 ) = 4
Liczba operacji = 6
# Trzeci zestaw
a = 4
b = 280
# Wyniki
NWD( 4, 280 ) = 4
Liczba operacji = 69
Wyniki potwierdzają, że liczba operacji zależy od różnicy danych wejściowych, ale nie zależy od ich kolejności.
3
Zestaw ćwiczeń interaktywnych
RY9rpifYMr52W
Ćwiczenie 1
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
REjm0EzD1sX4T
Ćwiczenie 2
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
RRvpBsyDPhSUv
Ćwiczenie 3
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
RARugbyugq6pi
Ćwiczenie 4
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
1
Ćwiczenie 5
Rq5QSmwpt0Ywx
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
Dla liczb a = 24, b = 10: 24 10 14 10 4 10 4 6 4 2 2 2
Dla liczb a = 16 i b = 24: 16 24 16 8 8 8
R1VFoXMOoCetq
Ćwiczenie 6
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele ułożone po cztery w dwóch rzędach. Każdy z paneli zawiera treści do połączenia w pary. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele ułożone po cztery w dwóch rzędach. Każdy z paneli zawiera treści do połączenia w pary. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
R1HCfFx0WnV16
Ćwiczenie 7
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
11
Ćwiczenie 8
Wykonaj kolejne ćwiczenia.
R1A9wBV4KXzaF
Źródło: GroMar, licencja: CC BY 3.0.
Poprawny wynik działania programu dla a = 10 i b = 16:
Linia 1. 10 6 kratka wartości zmiennych a i b po 1 iteracji.
Linia 2. 4 6 kratka wartości zmiennych a i b po 2 iteracji.
Linia 3. 4 2 kratka wartości zmiennych a i b po 3 iteracji.
Linia 4. 2 2 kratka wartości zmiennych a i b po 4 iteracji.
Linia 5. 2 kratka wartość NWD otwórz nawias okrągły a przecinek b zamknij nawias okrągły.
10 6 # wartości zmiennych a i b po 1 iteracji
4 6 # wartości zmiennych a i b po 2 iteracji
4 2 # wartości zmiennych a i b po 3 iteracji
2 2 # wartości zmiennych a i b po 4 iteracji
2 # wartość NWD(a, b)
Wzoruj się na kodzie obliczającym i zwracającym NWD(a, b), który omówiony został w materiale.
Ważne!
Odpowiedzi mogą w niewielkim stopniu różnić się od napisanego przez ciebie kodu, zależnie od kolejności definiowania zmiennych i przypisywania.
Krok pierwszy:
Linia 1. def nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 2. pass.
def nwd(a,b):
pass
Krok drugi:
Linia 1. a znak równości 10.
Linia 2. b znak równości 16.
a = 10
b = 16
Krok trzeci:
Linia 1. while a wykrzyknik znak równości b dwukropek.
Linia 2. pass.
while a != b:
pass
Krok czwarty:
Linia 1. if a zamknij nawias ostrokątny b dwukropek.
Linia 2. a znak równości a minus b.
Linia 3. else dwukropek.
Linia 4. b znak równości b minus a.
if a > b:
a = a - b
else:
b = b - a
Krok piąty:
Linia 1. print otwórz nawias okrągły a przecinek b zamknij nawias okrągły.
Linia 3. return a.
print(a, b)
return a
Krok szósty:
Linia 1. print otwórz nawias okrągły nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły zamknij nawias okrągły.
print(nwd(a, b))
Gotowy kod:
Linia 1. a znak równości 10.
Linia 2. b znak równości 16.
Linia 4. def nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek.
Linia 5. while a wykrzyknik znak równości b dwukropek.
Linia 6. if a zamknij nawias ostrokątny b dwukropek.
Linia 7. a znak równości a minus b.
Linia 8. else dwukropek.
Linia 9. b znak równości b minus a.
Linia 10. print otwórz nawias okrągły a przecinek b zamknij nawias okrągły.
Linia 11. return a.
Linia 13. print otwórz nawias okrągły nwd otwórz nawias okrągły a przecinek b zamknij nawias okrągły zamknij nawias okrągły.
a = 10
b = 16
def nwd(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
print(a, b)
return a
print(nwd(a, b))
4
Słownik
funkcja
funkcja
wyodrębniony i nazwany blok kodu zawierający instrukcje wykonujące najczęściej jedno zadanie, w Pythonie rozpoczyna się nagłówkiem: def nazwa_funkcji():
parametry i argumenty funkcji
parametry i argumenty funkcji
parametry to zmienne umieszczane w nawiasach okrągłych po nazwie funkcji, które symbolizują wartości wymagane do jej działania, natomiast argumenty to wartości podawane w nawiasach okrągłych po nazwie funkcji w miejscu jej wywołania
wywołanie funkcji
wywołanie funkcji
uruchomienie funkcji polegające na wpisaniu jej nazwy, nawiasów i podaniu argumentów
5
Bibliografia
Największy wspólny dzielnik https://encyklopedia.pwn.pl/szukaj/najwi%C4%99kszy%20wsp%C3%B3lny%20dzielnik.html [dostęp 2022‑07‑07].