Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wstęp do programowania Wykład 1

Podobne prezentacje


Prezentacja na temat: "Wstęp do programowania Wykład 1"— Zapis prezentacji:

1 Wstęp do programowania Wykład 1
Algorytm, obliczenie, program

2 Literatura D. Harel, Y. Feldman. Rzecz o istocie informatyki. Algorytmika. WNT, 2008. I. Bentley. Perełki oprogramowania. Helion 2011. L. Banachowski, K. Diks, W. Rytter. Algorytmy i struktury danych. WNT, 2006. W. Rychlicki. Od matematyki do programowania. Helion, 2011. B. W. Kernighan, D. M. Ritchie. Język ANSI C. Programowanie. Helion, 2010. D. Griffiths, D. Griffiths. Rusz głową! C. Helion, 2013. S. Oualline. Język C. Programowanie. Helion, 2003. S. Prata. Język C. Szkoła programowania. Helion, 2006. N. Wirth. Wstęp do programowania systematycznego. WNT, 1999.

3 Plan wykładu Algorytm, obliczenie, program
Program w C= dane + instrukcje Proste przykłady, tablice Złożoność obliczeniowa Procedury i funkcje Struktury i pliki Programowanie współbieżne, równoległe i rozproszone Formalne metody dowodzenia programów Elementy inżynierii oprogramowania Zmienne dynamiczne, listy

4 Maszyna licząca NWD(111,259) NWD(111,259)= NWD(111,259)= 37

5 Zalety i wady maszyny NWD(111,259)
Prostota urządzenia. Wady: Bardzo wąska dziedzina zastosowania. Brak metody weryfikacji, że urządzenie zwraca właściwą odpowiedź.

6 Wersja ulepszona 1 2 3 4 5 6 7 8 9 10 11 1 1 2 3 4 5 6 7 8 9 10 11 2 3 4 5 6 7 8 9 10 11

7 Metoda ogólna Algorytm y x Znaleźć NWD(A,B)
Połóż żeton w punkcie x=A, y=B. Dopóki żeton nie znajdzie się na prostej wynikowej wykonuj: weź pod uwagę najmniejszy równoramienny trójkąt prostokątny z wierzchołkiem kąta prostego w punkcie zajmowanym przez żeton i jednym z kątów ostrych (albo poniżej żetonu albo na lewo od niego) leżącym na osi. (Ponieważ żeton nie leży na prostej wynikowej, tylko jeden z kątów ostrych będzie leżał na osi.) Żeton przesuwamy do punktu wyznaczonego przez nie leżący na osi wierzchołek kąta ostrego w naszym trójkącie. Rzędna (odcięta) żetonu jest poszukiwanym wynikiem. y 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 x

8 Przykład y 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 x

9 Przykład y 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 x

10 Przykład y 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 x

11 Przykład y 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 x

12 Poprawność urządzenia

13 Poprawność urządzenia

14 Algorytm Euklidesa

15 Algorytm, obliczenie, język programowania, program

16 Algorytm rekurencyjny
Algorytm, który odwołuje się do siebie. Silnia 0!=1 n!= 1*2*…*n, dla n>0. Silnia rekurencyjnie n!=n*(n-1)!, dla n>0. Rekurencyjna wersja algorytmu Euklidesa NWD(0,B)=B NWD(A,B)=NWD(B mod A, A), dla A>0.

17 Problem stopu Czy dany algorytm kończy się dla wszystkich danych wejściowych? Wczytaj x; dopóki x≠1 wykonuj jeśli x parzyste to x=x/2 wpp x=3*x+1; Nie wiemy, czy powyższy algorytm się kończy (hipoteza Collatza z teorii liczb).

18 Rozstrzygalność Problemy rozstrzygalne:
Istnieje algorytm rozwiązujący problem. (Algorytm musi być konstruktywny, tzn. wszystkie jego kroki muszą być elementami pewnego dobrze określonego zbioru.) Problemy łatwo obliczalne Problemy trudno obliczalne (dokładniej potem) Problemy nierozstrzygalne: Nie istnieje algorytm, który rozwiązuje problem.

19 Poziomy języków programowania
Języki maszynowe Programy w tych językach to ciągi zer i jedynek. Komputery realizują programy tylko w tych językach, ale ludzie w nich nie programują. Assemblery Tzw. języki niskiego poziomu. Każda platforma sprzętowa posiada swój assembler oraz oprogramowanie tłumaczące program w assemblerze na program w języku maszynowym. Kiedyś programowano w assemblerach, dziś prawie nie. Wiąże się to z ogromnym przyspieszeniem sprzętowym. (Assemblery były głównie używane, aby zwiększyć efektywność oprogramowania.)

20 Poziomy języków programowania
Języki wysokiego poziomu. Obecnie programuje się praktycznie tylko w tych językach. Są wygodniejsze i prowadzą do czytelniejszych programów. Problem polega na tym, że komputery „nie potrafią” wykonywać programów w językach wysokiego poziomu. Aby to było możliwe, musimy dostarczyć odpowiedniego oprogramowania. Kompilatory. Tłumaczą program napisany w języku wysokiego programu na assembler. Interpretery. Analizują kod programu napisanego w języku wysokiego poziomu i go wykonują.


Pobierz ppt "Wstęp do programowania Wykład 1"

Podobne prezentacje


Reklamy Google