Kontynuacja lekcji o algorytmie Euklidesa. Tym razem mniej ręcznych obliczeń, a więcej pracy z kodem. Uczniowie uruchamiają gotowe programy, zmieniają je, dopisują brakujące fragmenty i obserwują, jak działa pętla, funkcja, warunek oraz operator modulo.
Na tej lekcji pracujemy głównie z Pythonem. Matematyka jest tylko pretekstem do ćwiczenia programowania.
Uczeń powinien umieć:
input(),while,nwd() w innym zadaniu.Kod 1. Najprostsza wersja funkcji obliczającej NWD.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
print(nwd(48, 18))
Po uruchomieniu program powinien wypisać 6.
Zmień kod:
48 i 18 na 36 i 24.56, 42, 100, 25, 14, 15.print(), aby program obliczał dwa przykłady jeden po drugim.Ćwiczenie z lukami: uzupełnij brakujące miejsca.
def nwd(a, b):
while b != 0:
r = a ___ b
a = ___
b = ___
return ___
Kod 2. Program pyta użytkownika o dwie liczby.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
liczba1 = int(input("Podaj pierwszą liczbę: "))
liczba2 = int(input("Podaj drugą liczbę: "))
wynik = nwd(liczba1, liczba2)
print("NWD wynosi:", wynik)
Zmień kod:
input() na własne.Obliczam największy wspólny dzielnik...NWD liczb 48 i 18 wynosi 6.Dodatkowe zadanie: zabezpiecz program przed liczbą zero.
if liczba1 == 0 or liczba2 == 0:
print("Podaj liczby większe od zera.")
else:
wynik = nwd(liczba1, liczba2)
print("NWD wynosi:", wynik)
Wklej ten fragment na końcu programu zamiast zwykłego wywołania funkcji.
Kod 3. Ta wersja pokazuje wartości zmiennych w każdym kroku.
def nwd(a, b):
krok = 1
while b != 0:
print("Krok", krok, ": a =", a, "b =", b)
r = a % b
print("Reszta z dzielenia", a, "przez", b, "to", r)
a = b
b = r
krok = krok + 1
print("Koniec. NWD =", a)
return a
nwd(48, 18)
Zmień kod:
48 i 18.84 i 30.print() i sprawdź, czy program dalej działa.Liczba kroków: ...Program A - NWD trzech liczb.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
x = int(input("Podaj pierwszą liczbę: "))
y = int(input("Podaj drugą liczbę: "))
z = int(input("Podaj trzecią liczbę: "))
wynik = nwd(nwd(x, y), z)
print("NWD trzech liczb wynosi:", wynik)
Zadania: zmień program tak, aby pytał o imię użytkownika i wypisywał: Tomku, wynik to...
Program B - NWW dwóch liczb. NWW można obliczyć za pomocą NWD.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
a = int(input("Podaj a: "))
b = int(input("Podaj b: "))
nww = a * b // nwd(a, b)
print("NWW wynosi:", nww)
Zmień kod: dopisz obok wyniku także obliczone NWD.
Program C - skracanie ułamka.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
licznik = int(input("Podaj licznik: "))
mianownik = int(input("Podaj mianownik: "))
d = nwd(licznik, mianownik)
print("Po skróceniu:", licznik // d, "/", mianownik // d)
Zmień kod: dodaj zabezpieczenie, aby mianownik nie mógł być równy zero.
Mini-projekt 1 - kalkulator NWD w pętli.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
while True:
a = int(input("Podaj a: "))
b = int(input("Podaj b: "))
print("NWD =", nwd(a, b))
dalej = input("Czy chcesz policzyć jeszcze raz? tak/nie: ")
if dalej == "nie":
break
print("Koniec programu.")
Zadania:
nie na koniec.Obliczenie nr 1.Mini-projekt 2 - sprawdzanie, czy liczby są względnie pierwsze.
def nwd(a, b):
while b != 0:
r = a % b
a = b
b = r
return a
a = int(input("Podaj pierwszą liczbę: "))
b = int(input("Podaj drugą liczbę: "))
if nwd(a, b) == 1:
print("Liczby są względnie pierwsze.")
else:
print("Liczby nie są względnie pierwsze.")
Zmień kod: program ma wypisać również wartość NWD.
% w Pythonie?nwd()?return a?