Treści usunięte z lekcji zgodnie z podstawą programową
z 2024 r. sprawdź w e-booku podręcznika na eduranga.pl.

Lekcja usunięta zgodnie z podstawą programową z 2024 r.

Lekcja usunięta zgodnie z podstawą programową z 2024 r.

Ćwiczenie 0

Przeanalizuj i popraw poniższy kod. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile(10) jest 4.
  • Wynikiem funkcji ile(100) jest 7.
def ile(zakres): licznik = 1 while zakres > 0: zakres = zakres // 2 licznik += 1 return licznik print(ile(10)) print(ile(100))
Wynikiem funkcji ile(2) jest 2
testResult = ile(2)==2
2
ile(2)
Wynikiem funkcji ile(22) jest 5
testResult = ile(22)==5
5
ile(22)
Wynikiem funkcji ile(201) jest 8
testResult = ile(201)==8
8
ile(201)
Rozwiąż ćwiczenie

Ćwiczenie 1Pierwiastek kwadratowy

Zdefiniuj funkcję pierwiastek(x, eps), której parametrami są liczba dodatnia większa od liczby 1 lub jej równa oraz mała liczba dodatnia (np. 0,00001), a wynikiem jest z dokładnością eps. Sprawdź działanie skryptu – wyznacz z dokładnością 0,1, 0,01 oraz 0,00001.

# zdefiniuj funkcję def pierwiastek(x, eps): pass # testy
Wynikiem funkcji pierwiastek(4, 0.1) jest 2.0625
testResult = pierwiastek(4, 0.1)==2.0625
2.0625
pierwiastek(4, 0.1)
Wynikiem funkcji pierwiastek(25, 0.01) jest 4.998779296875
testResult = pierwiastek(25, 0.01)==4.998779296875
4.998779296875
pierwiastek(25, 0.01)
Wynikiem funkcji pierwiastek(33, 0.00001) jest 5.744565725326538
testResult = pierwiastek(33, 0.00001)==5.744565725326538
5.744565725326538
pierwiastek(33, 0.00001)
Rozwiąż ćwiczenie

FilmAlgorytmika i programowanie w Pythonie. Fraktale

Film stanowi wprowadzenie do programowania fraktali w Pythonie – w desktopowym edytorze Mu. Omówiono rysowanie krzywej Kocha oraz płatka Kocha.

Ćwiczenie 0

Oto fraktal Cesàro dla stopni iteracji 5 i 3.

Na platformie wolframalpha.com znajdź przykłady innych znanych fraktali (wystarczy wpisać w polu wyszukiwania słowo fractal). Wybierz jeden z nich i zbadaj, jak zmieniają się rysunki w zależności od wartości liczby iteracji.

FilmProgramowanie w Pythonie. Dodatki do gry Wisielec

Film pokazuje, w jaki sposób można dodać do gry Wisielec trzy funkcjonalności: losowanie hasła z listy zapisanej w pliku tekstowym (zadanie 2 w podręczniku), informowanie o zdobytych punktach oraz interakcję
z użytkownikiem (zadanie 3).

Pytania quizowePrzygotowanie gry

Twój wynik to: /3
  • Ile wyniesie nowa wartość zmiennej, jeżeli zmienna proby ma wartość 7 i zostanie wykonana instrukcja proby -= 1?
  • Jak wyodrębnić 'sie' ze zmiennej napis, jeżeli zostało wykonane przypisanie
    napis = "wisielec"?
  • Jaką rolę odgrywa funkcja input w programowaniu?

Ćwiczenie 0

Przeanalizuj tabelę oraz kod, a następnie uzupełnij funkcję bank(kwota) pozwalającą obliczyć procent składany, w którym odsetki doliczane są do kwoty lokaty.

def bank(kwota): procent = 0.1 #po pierwszym roku oszczędzania kwota += kwota * procent #po drugim roku oszczędzania pass #po trzecim roku oszczędzania pass return kwota print(bank(1000))
Wynikiem funkcji bank(1000) jest 1331.0.
testResult = bank(1000)==1331.0
1331.0
bank(1000)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

System Lindenmayera, zwany w skrócie L-systemem, to zestaw reguł służący do generowania graficznych struktur o budowie fraktalnej. Węgierski biolog Aristid Lindenmayer stworzył go w 1968 r. w celu modelowania za jego pomocą zachowania komórek roślin. Każdy symbol w L-systemie jest w takim modelu interpretowany jako określona sekwencja ruchów żółwia. W poniższej tabeli zawarto podstawowe polecenia, które można wykorzystać do generowania fraktali.Rysowanie polega na podawaniu kolejnych poleceń. Pierwsza kreska jest pionowa. W przypadku kwadratu (bok = d, kąt = 90°) ruchy żółwia można zapisać następująco: F+F+F+F. Zapis pozwalający narysować trójkąt równoboczny (bok = d, kąt = 60°) to: F++F++F.

Skorzystaj z podstawowych poleceń generowania fraktali i napisz na kartce polecenia pozwalające narysować poniższe motywy.

Ćwiczenie dodatkowe 2

Skorzystaj z informacji w ćwiczeniu dodatkowym 1 i zdefiniuj na kartce symbol startowy oraz regułę rysowania krzywych Kocha.

Ćwiczenie 2Dowolny pierwiastek

Zdefiniuj funkcję pierwiastek(x, n, eps), której parametrami są liczba dodatnia większa od liczby 1 lub jej równa, stopień pierwiastka oraz mała liczba dodatnia (np. 0,00001), a wynikiem jest z dokładnością eps. Sprawdź działanie skryptu – wyznacz pierwiastek liczby 2 stopnia 2, 3 i 4 z dokładnością 0,1, 0,01 oraz 0,001.

Wskazówka: zmodyfikuj algorytm z ćwiczenia 1 – dodaj dodatkowy parametr n i podnieś c do n-tej potęgi.

# zdefiniuj funkcję def pierwiastek(x, n, eps): pass # testy
Wynikiem funkcji pierwiastek(4, 2, 0.1) jest 2.0625
testResult = pierwiastek(4, 2, 0.1)==2.0625
2.0625
pierwiastek(4, 2, 0.1)
Wynikiem funkcji pierwiastek(25, 3, 0.01) jest 2.923583984375
testResult = pierwiastek(25, 3, 0.01)==2.923583984375
2.923583984375
pierwiastek(25, 3, 0.01)
Wynikiem funkcji pierwiastek(1, 4, 0.0001) jest 0.99993896484375
testResult = pierwiastek(1, 4, 0.0001)==0.99993896484375
0.99993896484375
pierwiastek(1, 4, 0.0001)
Rozwiąż ćwiczenie

FilmyProgramowanie w Pythonie – filmy powtórzeniowe

Filmy

PrezentacjaPython – powtórzenie

Prezentacja przedstawia najważniejsze konstrukcje stosowane w języku Python.

PlanszaPython – podstawowe polecenia

Plansza zawiera podstawowe operatory działań i porównania oraz polecenia.

Film 1Pozycyjne systemy liczbowe. System binarny

Film prezentuje sposób zapisywania liczb binarnych oraz algorytmy przeliczania liczb z systemu dwójkowego na dziesiątkowy i odwrotnie.

Film 2Programowanie w Pythonie. System binarny i system dziesiątkowy

Film prezentuje implementację algorytmu zamiany liczby dwójkowej na liczbę dziesiątkową i odwrotnie.

Ćwiczenie 0

W edytorze zakodowano w języku Python algorytm wypisywania od końca cyfr danej liczby. Porównaj ten algorytm z zamieszczonym poniżej algorytmem zamiany liczby zapisanej w systemie dziesiątkowym na liczbę zapisaną w systemie dwójkowym.

  1. Podaj liczbę w systemie dziesiątkowym.
  2. Jeżeli liczba jest równa 0, to wypisz 0 i zakończ działanie algorytmu.
  3. Przypisz do zmiennej pom (zapamiętywane kolejne cyfry) napis pusty.
  4. Dopóki liczba > 0, wykonuj:
    • dopisz do pom wartość liczba % 2;
    • przypisz do liczba wartość liczba // 2.
  5. Wypisz pom.
def cyfry(liczba): while liczba > 0: print(liczba % 10) liczba = liczba // 10 cyfry(1234) print() cyfry(243452141) print()
Rozwiąż ćwiczenie

Ćwiczenie 1Z systemu dwójkowego na dziesiątkowy

Zdefiniuj funkcję na10(dana), której parametrem jest liczba binarna w postaci napisu, a wynikiem – odpowiadająca jej liczba w systemie dziesiątkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na10("101010") jest 42.
  • Wynikiem funkcji na10("110101") jest 53.
# zdefiniuj funkcję def na10(dana): pass # testy print(na10("101010")) print(na10("110101"))
Wynikiem funkcji na10("1001") jest 9
testResult = na10("1001") ==9
9
na10("1001")
Wynikiem funkcji na10("10011") jest 19
testResult = na10("10011") ==19
19
na10("10011")
Wynikiem funkcji na10("1111100111") jest 999
testResult = na10("1111100111") ==999
999
na10("1111100111")
Rozwiąż ćwiczenie

Ćwiczenie 2Z systemu dziesiątkowego na dwójkowy

Zdefiniuj funkcję na2(liczba), której parametrem jest liczba dziesiętna, a wynikiem – odpowiadająca jej liczba zapisana jako napis w systemie dwójkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na2(42) jest "101010".
  • Wynikiem funkcji na2(53) jest "110101".
# zdefiniuj funkcję def na2(liczba): pass # testy print(na2(42)) print(na2(53))
Wynikiem funkcji na2(9) jest 1001.
testResult = na2(9)=='1001'
1001
na2(9)
Wynikiem funkcji na2(19) jest 10011.
testResult = na2(19)=='10011'
10011
na2(19)
Wynikiem funkcji na2(999) jest 1111100111.
testResult = na2(999)=='1111100111'
1111100111
na2(999)
Rozwiąż ćwiczenie

Ćwiczenie 3Z systemu ósemkowego na dziesiątkowy

Zdefiniuj funkcję na10(dana), której parametrem jest liczba zapisana w systemie ósemkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie dziesiątkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na10("174") jest 124.
  • Wynikiem funkcji na10("362374") jest 124156.
# zdefiniuj funkcję def na10(dana): pass # testy print(na10("174")) print(na10("362374"))
Wynikiem funkcji na10("11") jest 9.
testResult = na10("11")==9
9
na10("11")
Wynikiem funkcji na10("23") jest 19.
testResult = na10("23")==19
19
na10("23")
Wynikiem funkcji na10("1747") jest 999.
testResult = na10("1747")==999
999
na10("1747")
Rozwiąż ćwiczenie

Ćwiczenie 4Z systemu dziesiątkowego na ósemkowy

Zdefiniuj funkcję na8(liczba), której parametrem jest liczba dziesiętna, a wynikiem – odpowiadająca jej liczba zapisana w systemie ósemkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na8(124) jest "174".
  • Wynikiem funkcji na8(124156) jest "362374".
# zdefiniuj funkcję def na8(liczba): pass # testy print(na8(124)) print(na8(124156))
Wynikiem funkcji na8(9) jest 11.
testResult = na8(9)=='11'
11
na8(9)
Wynikiem funkcji na8(19) jest 23.
testResult = na8(19)=='23'
23
na8(19)
Wynikiem funkcji na8(999) jest 1747.
testResult = na8(999)=='1747'
1747
na8(999)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Obrazki można zapisać za pomocą zer i jedynek jako napis złożony ze słów, np. litera H to „010000010”. Negatyw obrazka to napis z zerami pozamienianymi na jedynki i jedynkami pozamienianymi na zera,
czyli „101111101”.

Napisz funkcję negatyw(kod), której wynikiem będzie kod negatywu danego obrazka. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji negatyw("010000010") jest "101111101".
  • Wynikiem funkcji negatyw("101111101") jest "010000010".
# zdefiniuj funkcję def negatyw(kod): pass # testy
Wynikiem funkcji negatyw("1001") jest 0110.
testResult = negatyw("1001")=="0110"
0110
negatyw("1001")
Wynikiem funkcji negatyw("10011") jest 01100.
testResult = negatyw("10011")=="01100"
01100
negatyw("10011")
Wynikiem funkcji negatyw("1111100111") jest 0000011000.
testResult = negatyw("1111100111")=="0000011000"
0000011000
negatyw("1111100111")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Napisz funkcję wieksza(liczba1, liczba2), której wynikiem jest większa z liczb podanych jako parametr lub dowolna z nich, gdy liczby są równe. Liczby są zapisane w systemie dwójkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji wieksza("101","11") jest "101".
  • Wynikiem funkcji wieksza("101","1111") jest "1111".
# zdefiniuj funkcję def wieksza(liczba1, liczba2): pass # testy
Wynikiem funkcji wieksza("101", "110") jest 110.
testResult = wieksza("101", "110")=="110"
110
wieksza("101", "110")
Wynikiem funkcji wieksza("1011", "1011") jest liczby są równe.
testResult = wieksza("1011", "1011")=="1011"
1011
wieksza("1011", "1011")
Wynikiem funkcji wieksza("110", "101") jest 110.
testResult = wieksza("110", "101")=="110"
110
wieksza("110", "101")
Rozwiąż ćwiczenie

Zadanie 1Bintooct

Napisz funkcję bintooct(dana), której parametrem jest liczba zapisana w systemie dwójkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie ósemkowym. Postaraj się wykorzystać fakt, że 8 jest potęgą dwójki. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji bintooct("101010") jest "52".
  • Wynikiem funkcji bintooct("110101") jest "65".
# zdefiniuj funkcję def bintooct(dana): pass # testy
Wynikiem funkcji bintooct("1001") jest 11.
testResult = bintooct("1001")=="11"
11
bintooct("1001")
Wynikiem funkcji bintooct("10011") jest 23.
testResult = bintooct("10011")=="23"
23
bintooct("10011")
Wynikiem funkcji bintooct("1111100111") jest 1747.
testResult = bintooct("1111100111")=="1747"
1747
bintooct("1111100111")
Rozwiąż ćwiczenie

Zadanie 2Octtobin

Napisz funkcję octtobin(dana), której parametrem jest liczba zapisana w systemie ósemkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie dwójkowym. Postaraj się wykorzystać fakt, że 8 jest potęgą dwójki. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji octtobin("52") jest "101010".
  • Wynikiem funkcji octtobin("65") jest "110101".
# zdefiniuj funkcję def octtobin(dana): pass # testy
Wynikiem funkcji octtobin("11") jest 1001.
testResult = octtobin("11")=="1001"
1001
octtobin("11")
Wynikiem funkcji octtobin("23") jest 10011.
testResult = octtobin("23")=="10011"
10011
octtobin("23")
Wynikiem funkcji octtobin("1747") jest 1111100111.
testResult = octtobin("1747")=="1111100111"
1111100111
octtobin("1747")
Rozwiąż ćwiczenie

Ćwiczenie 3Miejsce zerowe funkcji

Napisz program, za pomocą którego znajdziesz miejsce zerowe funkcji określonej wzorem f (x) = 2x3x – 5
w przedziale 〈0, 100〉 z dokładnością 0,001. Wykorzystaj algorytm połowienia.

def f(x): return 2 * x ** 3 - x - 5 # zdefiniuj funkcję def miejsce_zerowe(eps): pass # testy
Wynikiem funkcji miejsce_zerowe(0.001) jest 1.479339599609375.
testResult = miejsce_zerowe(0.001)==1.479339599609375
1.479339599609375
miejsce_zerowe(0.001)
Rozwiąż ćwiczenie

Ćwiczenie 4Funkcja malejąca w przedziale

Napisz program, za pomocą którego znajdziesz miejsce zerowe funkcji określonej wzorem f(x) = – 1/4x2 + x + 2 w przedziale 〈2, 10〉 z dokładnością 0,001. Wykorzystaj algorytm połowienia. Wyznacz też miejsce zerowe przez obliczenie wyróżnika i porównaj oba wyniki. Możesz też poszukać drugiego miejsca zerowego w innym przedziale.

def f(x): return -1/4 * x ** 2 + x + 2 # zdefiniuj funkcję def miejsce_zerowe(eps): pass # testy
Wynikiem funkcji miejsce_zerowe(0.001) jest 5.4638671875.
testResult = miejsce_zerowe(0.001)==5.4638671875
5.4638671875
miejsce_zerowe(0.001)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zmień kod z ćwiczenia 3 tak, aby badał miejsce zerowe podanej funkcji dla dowolnego zakresu <a, b>
z dowolną dokładnością eps. Sprawdź działanie funkcji dla różnych parametrów.

def f(x): return 2 * x ** 3 - x - 5 # zdefiniuj funkcję # testy
Wynikiem funkcji miejsce_zerowe(2, 10, 0.001) jest 2.0009765625
testResult = miejsce_zerowe(2, 10, 0.001)==2.0009765625
2.0009765625
miejsce_zerowe(2, 10, 0.001)
Wynikiem funkcji miejsce_zerowe(-9, -1, 0.1) jest -1.0625
testResult = miejsce_zerowe(-9, -1, 0.1)==-1.0625
-1.0625
miejsce_zerowe(-9, -1, 0.1)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zmień kod z ćwiczenia 4 tak, aby badał miejsce zerowe podanej funkcji dla dowolnego zakresu <a, b>
z dowolną dokładnością eps. Sprawdź działanie funkcji dla różnych parametrów.

def f(x): return -1/4 * x ** 2 + x + 2 # zdefiniuj funkcję # testy
Wynikiem funkcji miejsce_zerowe(2, 10, 0.001) jest 5.4638671875.
testResult = miejsce_zerowe(2, 10, 0.001)==5.4638671875
5.4638671875
miejsce_zerowe(2, 10, 0.001)
Wynikiem funkcji miejsce_zerowe(-5, 5, 0.1) jest 4.921875
testResult = miejsce_zerowe(-5, 5, 0.1)==4.921875
4.921875
miejsce_zerowe(-5, 5, 0.1)
Rozwiąż ćwiczenie

Zadanie 1Porównywanie ilorazów

Napisz funkcję porownaj(l1, m1, l2, m2), której wynikiem dla danych dwóch liczb l1/m1 oraz l2/m2 będzie 0 – gdy liczby są równe, 1 – gdy pierwsza liczba jest większa od drugiej, lub 2 – gdy druga liczba jest większa od pierwszej. Sprawdź działanie funkcji dla różnych parametrów.

# zdefiniuj funkcję def porownaj(l1, m1, l2, m2): pass # testy
Wynikiem funkcji porownaj(2, 4, 6, 12) jest 0.
testResult = porownaj(2, 4, 6, 12)==0
0
porownaj(2, 4, 6, 12)
Wynikiem funkcji porownaj(4, 4, 99, 100) jest 1.
testResult = porownaj(4, 4, 99, 100)==1
1
porownaj(4, 4, 99, 100)
Wynikiem funkcji porownaj(1, 4, 4, 12) jest 2.
testResult = porownaj(1, 4, 4, 12)==2
2
porownaj(1, 4, 4, 12)
Rozwiąż ćwiczenie

Zadanie 2Szukanie pierwiastka

Napisz program, za pomocą którego znajdziesz  z dokładnością eps i wyznaczysz liczbę kroków potrzebnych, aby otrzymać żądane przybliżenie. Sprawdź działanie funkcji dla  oraz dokładności 0,1, 0,01, 0,001 i 0,0001.

# zdefiniuj funkcję def pierwiastek_ile(x, eps): a = 0 b = x ile = 0 pass # testy
Wynikiem funkcji pierwiastek(2, 0.2) jest 1.375, 4
testResult = pierwiastek(2, 0.2)==1.375, 4
1.375, 4
pierwiastek(2, 0.2)
Wynikiem funkcji pierwiastek(2, 0.02) jest 1.421875, 7
testResult = pierwiastek(2, 0.02)==1.421875, 7
1.421875, 7
pierwiastek(2, 0.02)
Wynikiem funkcji pierwiastek(2, 0.002) jest 1.416015625, 10
testResult = pierwiastek(2, 0.002)==1.416015625, 10
1.416015625, 10
pierwiastek(2, 0.002)
Rozwiąż ćwiczenie

Zadanie 4Metoda Newtona-Raphsona

Innym algorytmem obliczania pierwiastka jest metoda Newtona-Raphsona. Znajdź informacje o tej metodzie i jej zastosowaniach, a następnie zaimplementuj ją do obliczania pierwiastka kwadratowego z liczby i sprawdź, czy jest wydajniejsza od metody połowienia. 

Wskazówka

Znajdowanie pierwiastka kwadratowego można sprowadzić do szukania długości boku kwadratu o zadanym polu.

Szukany jest , czyli bok kwadratu o polu a. Jeżeli zacząć od prostokąta o bokach x i a/x, gdzie za x można przyjąć np. 1, to obliczanie kolejnych przybliżeń x pozwoli znaleźć szukany pierwiastek.

Dokładność można zweryfikować przez wyznaczenie różnicy długości boków prostokąta x a/x.

 

# zdefiniuj funkcję def newton_raphson(a, eps): pass # testy
Wynikiem funkcji newton_raphson(2, 0.1) jest 1.4166666666666665.
testResult = newton_raphson(2, 0.1)==1.4166666666666665
1.4166666666666665
newton_raphson(2, 0.1)
Wynikiem funkcji newton_raphson(2, 0.01) jest 1.4166666666666665.
testResult = newton_raphson(2, 0.01)==1.4166666666666665
1.4166666666666665
newton_raphson(2, 0.01)
Wynikiem funkcji newton_raphson(2, 0.001) jest 1.4142156862745097.
testResult = newton_raphson(2, 0.001)==1.4142156862745097
1.4142156862745097
newton_raphson(2, 0.001)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Skorzystaj z informacji w ćwiczeniu dodatkowym 1 i zdefiniuj na kartce symbol startowy oraz regułę rysowania płatka Kocha.

Ćwiczenie dodatkowe 4

Przyjmij poniższe założenia i wygeneruj kolejne stopnie pentadendrytu. Przedstaw je w postaci rysunków na kolejnych slajdach prezentacji.

symbol startowy: F
reguła: F: F+F-F–F+F+F
kąt: 72 stopnie

Ćwiczenie dodatkowe 5

Portal www.alife.pl poświęcony projektom z pogranicza informatyki, biologii, fizyki i sztuki zawiera również dział poświęcony L-systemom www.alife.pl/lsyst/p. Interfejs, dzięki któremu można generować fraktale z użyciem L-systemów, znajduje się pod adresem www.alife.pl/files/lsyst/d/js/lsystem.html?lang=pl. Przyjrzyj się fraktalom przedstawiającym rośliny. Poeksperymentuj, znajdź swoją roślinę i zapisz rysunek.

Ćwiczenie dodatkowe 6

Wyszukaj fraktale na portalu dla artystów deviantart.com. Wymyśl zastosowanie dla pięciu z nich, a następnie opracuj tabelę zawierającą rysunek fraktala, autora grafiki, link do obrazu oraz krótki opis prezentujący możliwe zastosowanie.

Ćwiczenie dodatkowe 7

Przygotuj infografikę pokazującą przykłady fraktali w naturze.

Pytania quizoweFraktale

Twój wynik to: /3
  • Jak tworzona jest krzywa Kocha o wyższym stopniu?
  • Czym charakteryzują się fraktale?
  • Czym charakteryzują się drzewa binarne?

Ćwiczenie 1Silnia rekurencyjnie

Zdefiniuj funkcję rekurencyjną silnia(n), której argumentem jest liczba nieujemna n, a wynikiem – obliczona silnia podanej liczby n. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji silnia(3) jest 6.
  • Wynikiem funkcji silnia(9) jest 362880.
# zdefiniuj funkcję def silnia(n): pass # testy print(silnia(3)) print(silnia(9))
Wynikiem funkcji silnia(1) jest 1.
testResult = silnia(1)==1
1
silnia(1)
Wynikiem funkcji silnia(7) jest 5040.
testResult = silnia(7)==5040
5040
silnia(7)
Wynikiem funkcji silnia(20) jest 2432902008176640000.
testResult = silnia(20)==2432902008176640000
2432902008176640000
silnia(20)
Rozwiąż ćwiczenie

Ćwiczenie 2Silnia iteracyjnie

Zdefiniuj funkcję iteracyjną silnia2(n), której argumentem jest liczba nieujemna n, a wynikiem – obliczona silnia podanej liczby n. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji silnia2(3) jest 6.
  • Wynikiem funkcji silnia2(9) jest 362880.
# zdefiniuj funkcję def silnia2(n): pass # testy print(silnia2(3)) print(silnia2(9))
Wynikiem funkcji silnia2(1) jest 1.
testResult = silnia2(1)==1
1
silnia2(1)
Wynikiem funkcji silnia2(7) jest 5040.
testResult = silnia2(7)==5040
5040
silnia2(7)
Wynikiem funkcji silnia(20) jest 2432902008176640000.
testResult = silnia2(20)==2432902008176640000
2432902008176640000
silnia2(20)
Rozwiąż ćwiczenie

Ćwiczenie 3Potęga rekurencyjnie

Zdefiniuj funkcję rekurencyjną potega(a, n), której parametrami są liczba a oraz liczba n, a wynikiem jest obliczona n-ta potęga podanej liczby a. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji potega(2, 3) jest 8.
  • Wynikiem funkcji potega(9, 5) jest 59049.
# zdefiniuj funkcję def potega(a, n): pass # testy print(potega(2, 3)) print(potega(9, 5))
Wynikiem funkcji potega(1, 100) jest 1.
testResult = potega(1, 100)==1
1
potega(1, 100)
Wynikiem funkcji potega(10, 7) jest 10000000.
testResult = potega(10, 7)==10000000
10000000
potega(10, 7)
Wynikiem funkcji potega(12, 3) jest 1728.
testResult = potega(12, 3)==1728
1728
potega(12, 3)
Rozwiąż ćwiczenie

Ćwiczenie 4Rekurencyjny ciąg liczbowy

Pewien ciąg liczb został zdefiniowany rekurencyjnie, tak jak poniżej:

Zdefiniuj funkcję rekurencyjną ciag(n) obliczania n-tego wyrazu tego ciągu. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ciag(5) jest -56.
  • Wynikiem funkcji ciag(8) jest 19012.
# zdefiniuj funkcję def ciag(n): pass # testy print(ciag(5)) print(ciag(8))
Wynikiem funkcji ciag(1) jest 1.
testResult = ciag(1)==1
1
ciag(1)
Wynikiem funkcji ciag(7) jest -2376.
testResult = ciag(7)==-2376
-2376
ciag(7)
Wynikiem funkcji ciag(10) jest 1711044.
testResult = ciag(10)==1711044
1711044
ciag(10)
Rozwiąż ćwiczenie

Ćwiczenie 5Suma cyfr

Zdefiniuj funkcję rekurencyjną suma_cyfr(n), która wyznaczy sumę cyfr liczby podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji suma_cyfr(136) jest 10.
  • Wynikiem funkcji suma_cyfr(19918) jest 28.
# zdefiniuj funkcję def suma_cyfr(n): pass # testy print(suma_cyfr(136)) print(suma_cyfr(19918))
Wynikiem funkcji suma_cyfr(2) jest 2.
testResult = suma_cyfr(2)==2
2
suma_cyfr(2)
Wynikiem funkcji suma_cyfr(22) jest 4.
testResult = suma_cyfr(22)==4
4
suma_cyfr(22)
Wynikiem funkcji suma_cyfr(222222) jest 12.
testResult = suma_cyfr(222222)==12
12
suma_cyfr(222222)
Rozwiąż ćwiczenie

Ćwiczenie 7Ciąg Fibonacciego rekurencyjnie

Zdefiniuj funkcję rekurencyjną fib(n), której parametrem jest liczba n, a wynikiem – n-ta liczba ciągu Fibonacciego. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji fib(4) jest 3.
  • Wynikiem funkcji fib(11) jest 89.
# zdefiniuj funkcję def fib(n): pass # testy print(fib(4)) print(fib(11))
Wynikiem funkcji fib(2) jest 1
testResult = fib(2)==1
1
fib(2)
Wynikiem funkcji fib(12) jest 144
testResult = fib(12)==144
144
fib(12)
Wynikiem funkcji fib(25) jest 75025
testResult = fib(25)==75025
75025
fib(25)
Rozwiąż ćwiczenie

Ćwiczenie 8Ciąg Fibonacciego iteracyjnie

Zdefiniuj funkcję iteracyjną fib2(n), której parametrem jest liczba n, a wynikiem – n-ta liczba ciągu Fibonacciego. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji fib2(4) jest 3.
  • Wynikiem funkcji fib2(11) jest 89.
# zdefiniuj funkcję def fib2(n): pass # testy print(fib2(4)) print(fib2(11))
Wynikiem funkcji fib2(32) jest 2178309.
testResult = fib2(32)==2178309
2178309
fib2(32)
Wynikiem funkcji fib2(37) jest 24157817.
testResult = fib2(37)==24157817
24157817
fib2(37)
Wynikiem funkcji fib2(40) jest 102334155.
testResult = fib2(40)==102334155
102334155
fib2(40)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Kolejne liczby ciągu Lucasa oblicza się w taki sam sposób jak liczby Fibonacciego, z tym że początkowe liczby są równe 2 i 1. Każda kolejna liczba Lucasa jest sumą dwóch poprzednich, a zatem początkowe wartości ciągu Lucasa to: 2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, …

Zdefiniuj rekurencyjną funkcję lucas(n), której wynikiem będzie n-ta liczba Lucasa i przetestuj dla wartości trzeciej i jedenastej z kolei.

# zdefiniuj funkcję def lucas(n): pass # testy
Wynikiem funkcji lucas(1) jest 2.
testResult = lucas(1)==2
2
lucas(1)
Wynikiem funkcji lucas(10) jest 76.
testResult = lucas(10)==76
76
lucas(10)
Wynikiem funkcji lucas(16) jest 1364.
testResult = lucas(16)==1364
1364
lucas(16)
Rozwiąż ćwiczenie

Zadanie 2Złota proporcja

Wypisz kolejne ilorazy wartości F(n) i F(n – 1) ciągu Fibonacciego dla przedziału od 2 do 20. Jaką widać prawidłowość?

Wskazówka: pierwsze cztery ilorazy to: 1.0, 2.0, 1.5, 1.6666666666666667.

# zdefiniuj funkcję def fib(n): pass # testy
Rozwiąż ćwiczenie

Zadanie 3Fibonacci i króliki

Fibonacci przedstawił zależność znaną obecnie jako ciąg Fibonacciego na przykładzie analizy liczby par królików w stadzie, w którym każda dojrzała para co miesiąc wydaje na świat parę młodych. Króliki osiągają dojrzałość dopiero po miesiącu. Na początku w stadzie żyje jedna para królików. Na koniec każdego miesiąca w stadzie żyje więc tyle par królików, ile w sumie żyło pod koniec dwóch poprzednich miesięcy, np. w miesiącu trzecim liczba par królików wynosi 2, czwartym – 3, w piątym – 5 itd.

Ponieważ króliki umierają, w każdym miesiącu, którego numer jest podzielny przez 7, liczba par królików zmniejsza się o wartość tego numeru. Przyjmij, że umierają króliki najstarsze.

Poniższa tabela przedstawia liczbę par królików w kolejnych miesiącach.

Zdefiniuj funkcję stado(n) obliczania liczby par królików w poszczególnych miesiącach i przetestuj działanie tej funkcji dla trzeciego, siódmego i czternastego miesiąca.

# zdefiniuj funkcję def stado(n): pass # testy
Wynikiem funkcji stado(1) jest 1.
testResult = stado(1)==1
1
stado(1)
Wynikiem funkcji stado(2) jest 1.
testResult = stado(2)==1
1
stado(2)
Wynikiem funkcji stado(12) jest 88.
testResult = stado(12)==88
88
stado(12)
Rozwiąż ćwiczenie

QuizAlgorytmika i programowanie w Pythonie

Twój wynik to: /11
  • Wykonano polecenie x = input() i podano liczbę 3. Co zostanie wypisane po wykonaniu polecenia print(x + x)?
  • Jaka liczba binarna odpowiada liczbie 10 w systemie dziesiątkowym?
  • Liczba o 1 większa niż 110112 niż to
  • Jakie cyfry są używane w systemie ósemkowym?
  • Ile wynosi suma liczb binarnych 110 i 101?
  • Jaką wartość dziesiętną ma liczba binarna 101?
  • Jaką wartość dziesiętną ma liczba ósemkowa 17?
  • Jaką wartość dziesiętną ma największa trzycyfrowa liczba binarna?
  • Poniżej podano liczby zapisane w różnych systemach. Wskaż liczby parzyste.
  • Jaką wartość dziesiętną ma liczba szesnastkowa A?
  • Jakie symbole są używane w systemie szesnastkowym?

Pytania quizowePozycyjne systemy liczbowe

Twój wynik to: /3
  • Jakie znaki są używane w systemie szesnastkowym?
  • Jak przelicza się liczbę z systemu dwójkowego na system dziesiątkowy?
  • Jakimi cyframi kończą się wartości liczb 27 i 42 w reprezentacji dwójkowej?

Pytania quizoweRekurencja i ciąg Fibonacciego

Twój wynik to: /3
  • Czym charakteryzuje się rekurencja?
  • Która z metod obliczania kolejnych elementów ciągu Fibonacciego jest bardziej efektywna: iteracyjna czy rekurencyjna?
  • Jak oblicza się kolejne liczby w ciągu Fibonacciego?

Pytania quizoweMetoda połowienia

Twój wynik to: /3
  • Do czego nie można zastosować metody połowienia?
  • W czym lepsza jest metoda połowienia w porównaniu z wyszukiwaniem liniowym?
  • Jak zachowuje się przedział poszukiwań na każdym etapie metody połowienia?