Wstęp do programowania Wykład 1

Slides:



Advertisements
Podobne prezentacje
Wstęp do Informatyki, część 1
Advertisements

Programowanie w PMC.
Sortowanie przez scalanie
Instrukcje - wprowadzenie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Wstęp do Informatyki, WSZ, część 1
Programowanie w języku C++. Jak napisać prosty program obliczeniowy lub grę komputerową? Zbigniew Nagórny Pracownia Komputerowa Wyższa Szkoła Humanistyczno-Przyrodnicza.
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Programowanie I Rekurencja.
Techniki konstrukcji algorytmów
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
Informatyka Stosowana
Teoretyczne podstawy informatyki
Złożoność obliczeniowa
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Praktyka Programowania Semestr I: –wykład - 1 godz. –laboratorium - 1 godz. –projekt - 1 godz.
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Algorytmy i struktury danych
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
Programowanie współbieżne
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
Podstawy Informatyki zajęcia dla Studentów I-go roku studiów na Wydziale Fizyki i Informatyki Stosowanej AGH Dr inż. Piotr Gronek Zakład Informatyki Stosowanej.
ALGORYTMY.
Algorytmy.
„Język programowania”
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Prowadzący: Dr inż. Jerzy Szczygieł
Algorytmy i struktury danych
Informatyka I - Wykład ANSI C
Język programowania Rozwijanie zdolności logicznego
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Maszyna wirtualna ang. virtual machine, VM.
KLASYFIKACJA TRÓJKĄTÓW
Opracowała: Iwona Kowalik
Podstawy programowania
Algorytmika.
C++.
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Obliczalność czyli co da się policzyć i jak Nieobliczalność Model obliczeń :maszyna Turinga dr Kamila Barylska.
Algorytmy- Wprowadzenie do programowania
opracowała: Anna Mikuć
Algorytmy.
Złożoność obliczeniowa algorytmów
Algorytmy – wprowadzenie
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Podstawy programowania
Wstęp do interpretacji algorytmów
K URS JĘZYKA C++ – ORGANIZACJA ZAJĘĆ ( ) Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Programujemy figury o równych bokach
Matematyka przed egzaminem czyli samouczek dla każdego
Kurs języka C++ – organizacja zajęć ( )
Efektywność algorytmów
Rzecz o matematycznych początkach informatyki
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

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

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.

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

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

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ź.

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

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

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

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

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

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

Poprawność urządzenia

Poprawność urządzenia

Algorytm Euklidesa

Algorytm, obliczenie, język programowania, program

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.

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).

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.

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.)

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ą.