• Nie Znaleziono Wyników

Programowanie proceduralne

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie proceduralne"

Copied!
53
0
0

Pełen tekst

(1)

Programowanie proceduralne

INP001210WL

rok akademicki 2019/20 semestr letni

Wykład 1

Karol Tarnowski

karol.tarnowski@pwr.edu.pl

L-1 p. 220

(2)

• Co to jest algorytm?

• Co to jest program?

• Funkcje – powtórzenie

– definiowanie i wywoływanie – funkcja main()

– zmienne lokalne

– przekazywanie argumentów – zwracanie wartości

Plan prezentacji (1)

(3)

• Funkcje rekurencyjne

– Co to jest rekurencja?

– Warunek stopu

– Przykłady algorytmów rekurencyjnych

Plan prezentacji (2)

(4)

• Algorytm jest przepisem opisującym krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu

• Algorytmika to dziedzina zajmująca się algorytmami i ich właściwościami

Co to jest algorytm?

M. M. Sysło, Algorytmy, WSiP, 2002

(5)

• Słowo algorytm wywodzi się od nazwiska arabskiego

matematyka i astronoma.

Muhammad ibn Musa al-

Chuwarizmi żył na przełomie VIII i IX wieku, jest uznawany za prekursora metod

obliczeniowych w matematyce

Algorytm

M. M. Sysło, Algorytmy, WSiP, 2002

https://pl.wikipedia.org/wiki/

Muhammad_ibn_Musa_al- Chuwarizmi

(6)

Przykład algorytmu

https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

(7)

Przykład algorytmu

https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

(8)

Przykład algorytmu

https://www.kwestiasmaku.com/przepis/kakaowe-ciasto-bez-pieczenia

(9)

• Algorytm wyznaczania największego

wspólnego dzielnika dwóch dodatnich liczb całkowitych został sformułowany

w IV w. p.n.e. przez Euklidesa

Algorytm Euklidesa

(10)

• Program to lista szczegółowych instrukcji przekazywanych komputerowi do realizacji określonych zadań

Co to jest program?

(11)

Składniki

Przepis

Kucharz i kuchnia Danie

Gotowanie

Dane

Program

Komputer

Wynik

Informatyka

Program i przepis a algorytm

(12)

Korzyści z dzielenia programu na funkcje:

• czytelniejszy kod

• wielokrotne wykorzystanie kodu

• lepsze testowanie (łatwiej testować podzadanie umieszczone w osobnej funkcji)

• szybsze tworzenie oprogramowania

• łatwiejsza praca w zespołach

Funkcje – powtórzenie

(13)

• Ogólny schemat definicji funkcji def nazwa_funkcji():

polecenie polecenie itd.

Funkcje – powtórzenie

Definiowanie i wywoływanie

nagłówek funkcji

blok poleceń

(14)

• Przykładowa definicja funkcji def message():

print('Jestem Artur,')

print('król Brytyjczyków.')

Funkcje – powtórzenie

Definiowanie i wywoływanie

nagłówek funkcji

blok

poleceń

(15)

• Wywołanie funkcji message()

Funkcje – powtórzenie

Definiowanie i wywoływanie

(16)

Funkcje – powtórzenie

Definiowanie i wywoływanie

(17)

Funkcje – powtórzenie

Definiowanie i wywoływanie

(18)

• Każdy wiersz bloku musi być wcięty

• Ostatni wcięty wiersz jest ostatnim blokiem kodu

Funkcje – powtórzenie

Wcięcia

(19)

• Tworzenie funkcji głównej nie jest wymogiem Pythona

• Tworzenie funkcji głównej jest konwencją, ale wykorzystywanie konwencji zwiększa czytelność kodu

Funkcje – powtórzenie

main()

(20)

Funkcje – powtórzenie

main()

(21)

Funkcje – powtórzenie

Zmienne lokalne

(22)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

(23)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

13

value

(24)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

13 value

number

(25)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

13 value

number

26

result

(26)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

(27)

Funkcje – powtórzenie

Przekazywanie argumentów do funkcji

12 num1

45

num2

(28)

Funkcje – powtórzenie

Zmiana argumentu funkcji

(29)

Funkcje – powtórzenie

Zmiana argumentu funkcji

99

value

(30)

Funkcje – powtórzenie

Zmiana argumentu funkcji

99 value

arg

(31)

Funkcje – powtórzenie

Zmiana argumentu funkcji

99 value

arg 0

(32)

Funkcje – powtórzenie

Argumenty nazwane

(33)

Funkcje – powtórzenie

Funkcje zwracające wartość

• Ogólna postać funkcji zwracającej wartość

def nazwa_funkcji():

polecenie polecenie polecenie itd.

return wyrażenie

(34)

Funkcje – powtórzenie

Funkcje zwracające wartość

(35)

Funkcje – powtórzenie

Funkcje zwracające wartość

(36)

Funkcje rekurencyjne

• Rekurencją nazywamy odwoływanie się funkcji do samej siebie

• Rekurencję można wykorzystać do rozwiązywania

problemów, które można podzielić na mniejsze

wersje tego samego problemu

(37)

Funkcje rekurencyjne

(38)

Funkcje rekurencyjne

• Istotnym zagadnieniem przy wykorzystaniu

rekurencji jest warunek stopu

(39)

Funkcje rekurencyjne

(40)

Funkcje rekurencyjne

(41)

Funkcje rekurencyjne

wywołanie fukcji main()

wywołanie fukcji message(5) wyświetlenie komunikatu

wywołanie fukcji message(4) wyświetlenie komunikatu

wywołanie fukcji message(3) wyświetlenie komunikatu

wywołanie fukcji message(2) wyświetlenie komunikatu

wywołanie fukcji message(1) wyświetlenie komunikatu

wywołanie fukcji message(0) funkcja nic nie robi

(42)

Funkcje rekurencyjne

(43)

Funkcje rekurencyjne

(44)

Funkcje rekurencyjne

(45)

Funkcje rekurencyjne

(46)

Funkcje rekurencyjne

Silnia

1dla 0,

! 1 ! dla 0.

n n

n n n

 

     

! 1 2 3

n      n

(47)

Funkcje rekurencyjne

Silnia

(48)

• Algorytm Euklidesa wyznaczania największego wspólnego dzielnika

• Potęgowanie rekurencyjne

• Wyznaczania elementów ciągu Fibonacciego

Algorytmy rekurencyjne

(49)

zakładając, że m ≤ n

Algorytm Euklidesa

   ,dla m 0,

NWD ,

NWD mod , , dla 0.

m n n

n m m m

 

   

(50)

Obliczanie potęgi

 

 

 

2 2

1 2 2

, dla 1

, parzyste

, nieparzyste

m m

m

x m

x x m

x

x m

 

 

  

  

(51)

Ciąg Fibonacciego

     

0 dla 0,

1 dla 1,

1 2 dla 1.

n

F n n

F n F n n

 

   

    

(52)

F(5)

F(4)

F(3) F(2) F(1) F(1) F(0)

F(2) F(1) F(0) F(3) F(2) F(1)

F(1) F(0)

Ciąg Fibonacciego

Wywołania rekurencyjne

(53)

• Co to jest algorytm?

• Co to jest program?

• Funkcje – powtórzenie

• Funkcje rekurencyjne

Podsumowanie

Cytaty

Powiązane dokumenty

• Operator in (not in) można wykorzystać do sprawdzenia, czy wskazany ciąg zawiera się (nie zawiera się) w innym. ciag_tekstowy1

rok akademicki 2019/20 semestr letni..

• Funkcje wywołuje się pisząc jej nazwę oraz nawiasy klamrowe z argumentami przekazywanymi do funkcji.

• Podstawowym sposobem przekazywania zmiennych do funkcji jest przekazywanie przez wartość – funkcja nie zmieni.

Jeśli element wskazywany przez indeks jest większy od maksimum, to przypisz maksimum wartość elementu wskazywanego przez indeks 5.. • Przypisz maksimum_indeks

• Dostęp do struktur wskazywanych przez wskaźnik uzyskuje się operatorem ->.

rok akademicki 2017/18 semestr letni.

• Podstawowym sposobem przekazywania zmiennych do funkcji jest przekazywanie przez wartość – funkcja nie zmieni.