Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Programowanie i projektowanie obiektowe

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Python 1

Języki i metodyka programowania

Paradygmaty programowania

Technologie informacyjne - wykład 12 -

Zadanie 1. Potęgi (14 pkt)

Python wstęp do programowania dla użytkowników WCSS

Struktura i działanie jednostki centralnej

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Jerzy Nawrocki, Wprowadzenie do informatyki

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Technologie cyfrowe semestr letni 2018/2019

Wstęp do programowania

Technologie cyfrowe semestr letni 2018/2019

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Algorytm. a programowanie -

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Podstawy i języki programowania

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Wstęp do programowania

Język programowania PASCAL

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Wstęp do programowania

Algorytmy i struktury danych

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

Podstawy programowania funkcjonalnego

Języki formalne i techniki translacji

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Definicje. Algorytm to:

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Wykład 0 Informacje Podstawowe

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmika i pseudoprogramowanie

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Wstęp do programowania

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

LISTA 5. C++ PETLE for, while, do while

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

ECDL Podstawy programowania Sylabus - wersja 1.0

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Programowanie komputerów

Języki i paradygmaty programowania. I. Wprowadzenie

Języki programowania zasady ich tworzenia

Java EE produkcja oprogramowania

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python.

Logiczny model komputera i działanie procesora. Część 1.

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wstęp do Informatyki dla bioinformatyków

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Architektura komputerów

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Programowanie w języku Python. Grażyna Koba

Szczegółowy program kursów szkoły programowania Halpress

Wstęp do Informatyki i Programowania

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Wstęp do programowania

Algorytmy od problemu do wyniku

Wstęp do programowania

Magistrala systemowa (System Bus)

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

2.8. Algorytmy, schematy, programy

Zaawansowany kurs języka Python

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Kurs rozszerzony języka Python

Sterowanie pracą programu

Architektura typu Single-Cycle

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Transkrypt:

Wstęp do programowania Wstęp Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 1 / 30

Plan wykładu 1 Wstęp komputery, algorytmy i programy 2 Podstawowe konstrukcje programistyczne 3 Tablice 4 Operacje na plikach, przetwarzanie napisów, wyrażenia regularne 5 Rekurencja 6 Złożoność obliczeniowa, dowodzenie poprawności programu 7 Struktury danych 8 Programowanie dynamiczne 9 Strategia dziel i zwyciężaj 10 Algorytmy zachłanne 11 Klasy złożoności obliczeniowej P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 2 / 30

Strona wykładu http://bioexploratorium.pl/wiki/wstęp_do_programowania 2014z P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 3 / 30

a 1 = 1 a 2 = 1 + 2 a 3 = 1 + 2 + 3... a i = 1 + 2 + 3 + + i P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 4 / 30

a 1 = 1 a 2 = 1 + 2 a 3 = 1 + 2 + 3... a i = 1 + 2 + 3 + + i i a i = i k=1 P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 4 / 30

a 1 = 1 a 2 = 1 + 2 a 3 = 1 + 2 + 3... a i = 1 + 2 + 3 + + i i a i = i k=1 Definicja rekurencyjna a 0 = 0 a i = a i 1 + i P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 4 / 30

Liczby Fibonacci ego 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,... P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 5 / 30

Liczby Fibonacci ego 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,... F 0 = 1 F 1 = 1 F n+1 = F n 1 + F n P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 5 / 30

Liczby Fibonacci ego 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,... F 0 = 1 F 1 = 1 F n+1 = F n 1 + F n Definicja zwarta gdzie: F n = φn ψ n φ ψ φ = 1 + 5, ψ = 1 5 2 2 P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 5 / 30

Algorytm Sposób postępowania prowadzący do pożądanego efektu. Przykłady: 1 Przepisy kucharskie 2 Zapis nutowy muzyki 3 Instrukcje montażu 4 Opis dojazdu P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 6 / 30

Instrukcja szamponu 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 7 / 30

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 7 / 30

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 7 / 30

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 7 / 30

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 7 / 30

Schemat blokowy Nałożyć Głowa brudna szampon Umyć włosy Spłukać Czy głowa czysta? nie tak Koniec P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 8 / 30

Start m i 1 i N nie Zadanie Znaleźć największy wyraz ciągu a 1,..., a N. tak m a i tak nie m a i i i + 1 Koniec P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 9 / 30

Disclaimer Informatyka jest nauką o komputerach w podobnym stopniu, jak astronomia jest nauką o teleskopach. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 10 / 30

Jak działa komputer Procesor Wczytuje rozkazy z pamięci i je wykonuje. Pamięć Przechowuje programy i dane. UWAGA: Programy i dane są traktowane tak samo Magistrala Łączy procesor, pamięć i inne elementy komputera. Urządzenia wejścia/wyjścia Procesor komunikuje się z nimi za pośrednictwem magistrali i dodatkowych interfejsów P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 11 / 30

Jak działa komputer ALU jednostka arytmetyczno-logiczna Rejestry A, B, C Rejestry specjalne wskaźnik instrukcji, adresowy, instrukcji Przełączniki 3-stanowe Połączenia pomiędzy dekoderem instrukcji, a ALU, rejestrami i przełącznikami (nieuwidocznione) Magistrala Szyna adresowa, danych i sterująca P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 11 / 30

Rozkazy LOADA mem Load register A from memory address LOADB mem Load register B from memory address CONB con Load a constant value into register B SAVEB mem Save register B to memory address SAVEC mem Save register C to memory address ADD Add A and B and store the result in C SUB Subtract A and B and store the result in C MUL Multiply A and B and store the result in C DIV Divide A and B and store the result in C COM Compare A and B and store the result in test JUMP addr Jump to an address JEQ addr Jump, if equal, to address JNEQ addr Jump, if not equal, to address JG addr Jump, if greater than, to address JGE addr Jump, if greater than or equal, to address JL addr Jump, if less than, to address JLE addr Jump, if less than or equal, to address STOP Stop execution P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 12 / 30

// Assume a is at address 128 // Assume F is at address 129 0 CONB 1 // a=1; 1 SAVEB 128 2 CONB 1 // f=1; 3 SAVEB 129 4 LOADA 128 // if a > 5 then jump to 17 5 CONB 5 6 COM 7 JG 17 8 LOADA 129 // f=f*a; 9 LOADB 128 10 MUL 11 SAVEC 129 12 LOADA 128 // a=a+1; 13 CONB 1 14 ADD 15 SAVEC 128 16 JUMP 4 // loop back to if 17 STOP P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 13 / 30

Opkody LOADA 1 LOADB 2 CONB 3 SAVEB 4 SAVEC 5 ADD 6 SUB 7 MUL 8 DIV 9 COM 10 JUMP 11 JEQ 12 JNEQ 13 JG 14 JGE 15 JL 16 JLE 17 STOP 18 Kod maszynowy 0 3 CONB 1 1 1 2 4 SAVEB 128 3 128 4 3 CONB 1 5 1 6 4 SAVEB 129 7 129 8 1 LOADA 128 9 128 10 3 CONB 5 11 5 12 10 COM 13 14 JG 17 14 31 15 1 LOADA 129 16 129 17 2 LOADB 128 18 128 19 8 MUL 20 5 SAVEC 129 21 129 22 1 LOADA 128 23 128 24 3 CONB 1 25 1 26 6 ADD 27 5 SAVEC 128 28 128 29 11 JUMP 4 30 8 31 18 STOP P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 14 / 30

Paradygmaty programowania Programowanie imperatywne Algol a :=1; f :=1; while a <= 5 do begin f := f a ; a := a + 1 ; end ; P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 15 / 30

Paradygmaty programowania Programowanie funkcyjne Brak skutków ubocznych, stan się nie zmienia. SML l e t fun f a c 0 = 1 f a c n = n f a c ( n 1) in f a c ( 5 ) end ; P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 16 / 30

Paradygmaty programowania Programowanie deklaratywne Programista opisuje pożądany wynik bez precyzowania algorytmu. Prolog f a c t o r i a l ( 0, 1 ). f a c t o r i a l (N, F) : N>0, N1 i s N 1, f a c t o r i a l (N1, F1 ), F i s N F1.? f a c t o r i a l (3,W). W = 6 ; P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 17 / 30

Paradygmaty programowania Programowanie obiektowe Obiekty łączą w sobie dane (stan) i zachowanie (metody). Smalltalk factorial "Answer the factorial of the receiver." self = 0 iftrue: [^ 1]. self > 0 iftrue: [^ self * (self - 1) factorial]. self error: Not valid for negative integers 5 factorial P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 18 / 30

Język programowania 1 Składnia słowa i gramatyka 2 Semantyka znaczenie 3 Typy danych 4 Biblioteki standardowe P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 19 / 30

Kompilować, czy interpretować Języki kompilowane Kod źródłowy jest kompilowany do maszynowego. szybkie podatne na błędy trudno poprawiać zależne od platformy P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 20 / 30

Kompilować, czy interpretować Języki kompilowane Kod źródłowy jest kompilowany do maszynowego. szybkie podatne na błędy trudno poprawiać zależne od platformy Języki interpretowane Interpreter analizuje kod źródłowy w miarę wykonywania. mało wydajne wygodne niezależne od platformy P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 20 / 30

Zadanie 1 Zapisz wzór rekurencyjny oraz w postaci zwartej dla: 1 sum kwadratów kolejnych liczb naturalnych, 2 sum kolejnych nieparzystych liczb naturalnych, 3 sum kolejnych potęg 2, 4 sumy iloczynów par liczb naturalnych mniejszych od n (dla n > 1). P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 21 / 30

Zadanie 2 Wykonaj schemat blokowy algorytmu, który: 0 Wczytuje liczbę, a następnie ją wypisuje. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 22 / 30

Zadanie 2 Wykonaj schemat blokowy algorytmu, który: 0 Wczytuje liczbę, a następnie ją wypisuje. Start Wczytaj a Wypisz a Koniec P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 22 / 30

Zadanie 2 c.d. Wykonaj schemat blokowy algorytmu, który: 1 Wczytuje dwie liczby i oblicza ich średnią arytmetyczną. 2 Wczytuje liczbę i sprawdza, czy jest dodatnia - algorytm powinien zwrócić odpowiedź TAK albo NIE. 3 Wczytuje dwie liczby i wyznacza najmniejszą z nich. 4 Wczytuje trzy liczby i wyznacza największą z nich. 5 Wczytuje dwie liczby a, n (n N) i oblicza a n. 6 Wczytuje dwie liczby a, n (n Z) i oblicza a n. 7 Wczytuje trzy liczby: a, b, c (a, b, c R) i wyznacza rozwiązania równania kwadratowego ax 2 + bx + c = 0. Wynikiem działania algorytmu powinna być w kolejności: liczba rozwiązań (0, 1, 2), pierwsze rozwiązanie (gdy liczba rozwiązań > 0), drugie rozwiązanie (gdy liczba rozwiązań > 1). P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 23 / 30

Zadanie 3 Opracuj schemat blokowy programu, który zamienia dwie wartości miejscami. Napisz program w kodzie maszynowym, który implementuje ten algorytm. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 24 / 30

Zadanie 4 Przeanalizuj działanie przedstawionego na wykładzie programu w kodzie maszynowym. Zastanów się, w jaki sposób można odczytać zawartość komórki pamięci o dowolnym (obliczonym w programie) adresie. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 25 / 30

Zadanie 5 Opracuj schemat blokowy programu, który w szuka maksymalnego wyrazu w zadanym ciągu liczb (a 1...N ). Napisz program w kodzie maszynowym, który implementuje ten algorytm. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 26 / 30

Na prawdziwym komputerze przypomnienie spraw elementarnych Obsługa Linuxa 1 Praca w terminalu (w shellu) (np. bash). 2 Poruszanie się po drzewie katalogów (zakładanie, kasowanie). 3 Kopiowanie, przenoszenie plików. 4 Uruchamianie programów. 5 Atrybuty plików. UET - Ulubiony Edytor Tekstu 1 Tworzenie plików i ich edycja. 2 Podświetlanie składni. 3 Rozpoznawanie struktury programu. 4 Wykrywanie błędów. P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 27 / 30

Hello world hello.py #!/usr/bin/python print "Hello world" P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 28 / 30

Hello world Uruchamianie pawel@atlas ~/tmp> cat hello.py #!/usr/bin/python print "Hello world" pawel@atlas ~/tmp> python hello.py Hello world pawel@atlas ~/tmp> python./hello.py Hello world pawel@atlas ~/tmp>./hello.py fish: The file./hello.py is not executable by this user pawel@atlas ~/tmp> chmod a+x hello.py pawel@atlas ~/tmp>./hello.py Hello world pawel@atlas ~/tmp> P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 29 / 30

Interpreter Pythona Python pawel@atlas ~> python Python 2.7.8 (default, Jul 13 2014, 17:11:32) [GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> ipython pawel@atlas ~> ipython Python 2.7.8 (default, Jul 13 2014, 17:11:32) Type "copyright", "credits" or "license" for more information. IPython 2.2.0 -- An enhanced Interactive Python.? -> Introduction and overview of IPython s features. %quickref -> Quick reference. help -> Python s own help system. object? -> Details about object, use object?? for extra details. In [1]: P. Daniluk (Wydział Fizyki) WP w. I Jesień 2014 30 / 30