rozdział 1: PROGRAMOWANIE



Podobne dokumenty
rozdział 1: PROGRAMOWANIE

rozdział 1: PROGRAMOWANIE

Programowanie komputerów

Wstęp do Informatyki dla bioinformatyków

Java EE produkcja oprogramowania

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

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

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

Języki programowania zasady ich tworzenia

Programowanie w języku Python. Grażyna Koba

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Języki i metodyka programowania

Podstawy programowania

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

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

Programowanie w języku C++ Grażyna Koba

Algorytm. Krótka historia algorytmów

Translacja wprowadzenie

Podstawy programowania wykład

Programowanie w C. dr inż. Stanisław Wszelak

Podstawy Informatyki Języki programowania

Programowanie I. Wprowadzenie. Proces programowania

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

Tworzenie oprogramowania

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

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

Michał Olejnik. 22 grudnia 2009

Paradygmaty programowania

Zapisywanie algorytmów w języku programowania

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

Algorytm. Krótka historia algorytmów

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Wprowadzenie do programowania

Technologie Informacyjne

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

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Java jako język programowania

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

Informatyka I. dr inż. Andrzej Czerepicki.

O programowaniu komputerów

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

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

Wstęp do programowania

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

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

Metody Kompilacji Wykład 1 Wstęp

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

KARTA KURSU. Wstęp do programowania

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Podstawy programowania w C++

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Technologie informacyjne - wykład 12 -

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

Historia modeli programowania

Środowiska i platformy programistyczne

Algorytmika i programowanie usystematyzowanie wiadomości

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawy Informatyki Języki programowania c.d.

Podstawy Programowania. Wykład 1

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Metodologie programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Ryszard Myhan. Wykład 1: Języki programowania

Technologia informacyjna

Zapisywanie algorytmów w języku programowania wysokiego poziomu

Modelowanie i Programowanie Obiektowe

Programowanie RAD Delphi

Programista samouk : profesjonalny przewodnik do samodzielnej nauki kodowania / Cory Althoff. Gliwice, copyright Spis treści

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

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!

Wykład Ćwiczenia Laboratorium Projekt Seminarium

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.


Algorytm. a programowanie -

ALGORYTMY I PROGRAMY

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Programowanie obiektowe - 1.

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Cel stosowania metod i środków informatyki

Algorytmy od problemu do wyniku

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

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Wprowadzenie do inżynierii przetwarzania informacji

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawy programowania. Wprowadzenie

Architektura komputerów

Podstawy programowania w Pythonie

Informatyka. Michał Rad

Systemy operacyjne III

Podstawy Programowania Algorytmy i programowanie

Transkrypt:

rozdział 1: PROGRAMOWANIE ostatnia modyfikacja: 13.12.15

mgr inż. Sławomir Wernikowski swernikowski@zut.edu.pl http://detox.wi.zut.edu.pl/sw

Michael Dawson Python dla każdego Helion, 2014

Mark Lutz Python, wprowadzenie Helion, 2011

Historia programowania w pigułce

Charles Babbage 1791-1871 matematyk astronom mechanik konstruktor maszyna różnicowa (porzucona) maszyna analityczna (nigdy nie zrealizowana)

maszyna analityczna Babbage'a napęd: parowy nośnik danych: karta perforowana pamięć (store) procesor (mill) potrafiła(by) realizować: instrukcje warunkowe pętle była(by) pierwszym programowalnym urządzeniem w historii ludzkości od roku 2011 grupa entuzjastów rekonstruuje maszynę Babbage'a pod patranotem Science Museum w Londynie

Ada Lovelace Byron 1815-1852 córka Lorda Byrona matematyczka pierwsza programistka (sic!) patronka języka programowania Ada użyta niecnie przez firmę Microsoft

Herman Hollerith 1860-1929 wynalazca, inżynier maszyna dla spisu powszechnego 1890 opatentował kartę perforowaną 1896 założył Tabulating Machine Company 1924 TMC przekształca się w International Business Machines

Alan Turing 1912-1954 syn indyjskich emigrantów matematyk maszyna Turinga i algorytm projekt komputera w oparciu o prace Babbage'a bomba Turinga i Bletchley test Turinga

Grace Hopper 1906-1992 oficer, a później kontradmirał US Navy współautorka pierwszych języków programowania wprowadziła nowe znaczenie słowa bug jako błędu w kodzie komputerowym

Dennis Ritchie 1941-2011 współtwórca systemu operacyjnego Unix twórca języka programowania C

Richard Stallman 1953 twórca ruchu GNU i Fundacji Wolnego Oprogramowania współautor wielu fundamentalnych programów narzędziowych postać niesłychanie kontrowersyjna

Linus Torvalds 1969 twórca pierwszego jądra Linux koordynator rozwoju jądra Linux

Inna twarz Linusa

Programowanie to nie profesja to styl życia Niektórzy twierdzą, że również diagnoza psychiatryczna.

Zadajmy dramatyczne pytanie: Co to jest język?

Język to środek utrwalania i wyrażania myśli.

Pora więc zadać pytanie: Co to jest język programowania?

Język programowania to język służący sformalizonej reprezentacji algorytmów.

Z czego składa się każdy język? alfabet zbiór symboli dopuszczalnych w danym języku (np. alfabet łaciński w języku angielskim, cyrylica w rosyjskim, kropki i kreski w języku telegraficznym, etc)

leksyka (słownik) zbiór takich złożeń znaków z alfabetu, który w danym języku na przypisane znaczenie (np. słowo spacer jest poprawne leksykalnie w języku angielskim i polskim, chociaż oznacza coś innego)

syntaktyka (składnia) zbiór takich złożeń elementów słownika, które są formalnie poprawne w danym języku (np. polskie wyrażenie Programista zjadł bułkę jest poprawne składniowo, a Programistą zjedli bułko nie)

semantyka zbiór wyrażeń poprawnych składniowo, które mają przypisane znaczenie (innymi słowy, mają sens) (np. polskie wyrażenie Programista zjadł bułkę jest poprawne semantycznie, a Bułka zjadła programistę niekoniecznie)

Co to jest program?

Program to napis w języku programowania.

Jak czyta się program? zwyczajowo program czyta się i wykonuje: od lewej do prawej od góry do dołu czyli: to, co jest po prawej, wykona się po tym, co jest po lewej to, co jest niżej, wykona się po tym, co jest wyżej uwaga są wyjątki!

Dygresja nr 1:

Dygresja nr 2:

Program, aby być poprawnym, musi: używać znaków ze swojego alfabetu spełniać wymagania leksyki języka zawierać konstrukcje poprawne składniowo być w zgodzie z wymaganiami semantyki języka robić to, co zamierzono

Programista otrzymał zadanie napisania programu, który mnoży liczby a i b, a wynik przechowuje w c. Programista napisał: c = a + b Powyższy program jest poprawny, bo: używa właściwego alfabetu nie zawiera błędów leksykalnych, składniowych i semantycznych Powyższy program nie jest poprawny, bo: nie robi tego, co założono

Nie do końca precyzyjna, ale obrazowa klasyfikacja języków programowania

niskiego poziomu maszynowe assemblery wysokiego poziomu imperatywne proceduralne obiektowe... nieimperatywne logiczne funkcyjne (funkcjonalne)...

języki maszynowe ciągi bitów, interpretowane przez sprzęt (procesor) jako instrukcje do wykonania niemal kompletnie nieczytelne dla człowieka w praktyce każda rodzina procesorów ma inny język maszynowy alfabetem języka maszynowego jest tzn. lista rozkazów

assembler inny sposób zapisu języka maszynowego, posługujący się alfabetem zrozumiałym dla ludzi instrukcje maszynowe są w nim zapisywane jako pojedyncze słowa bądź skróty w assemblerze zapisuje się szczególnie krytyczne fragmenty kodu np. w systemach operacyjnych programowanie w assemblerze wymaga dokładnej wiedzy o konstrukcji procesora

przykład fragmentu programu w assemblerze (bardzo akademicki) mov add mov ax,[a] ax,[b] [c],ax

języki imperatywne od łacińskiego imperativus - rozkazujący zawierają ciągi precyzyjne ciągi instrukcji, które wykonywane są przez komputer w określonej i przewidywalnej kolejności przytłaczająca większość obecnie używanych języków programowania to języki imperatywne

języki nieimperatywne zamiast kolejno wykonywanych instrukcji zawierają luźno powiązane recepty na rozwiązywanie problemów elementarnych wykonanie takiego programu polega na dopasowywaniu tych recept do problemu i szukania ścieżki, która doprowadzi do rozwiązania

Prolog logiczny język nieimperatywny mezczyzna(adam). mezczyzna(adam). mezczyzna(bogdan). mezczyzna(bogdan). kobieta(anna). kobieta(anna). kobieta(marta). kobieta(marta). malzenstwo(adam,anna). malzenstwo(adam,anna). maz(x) maz(x) ::- mezczyzna(x), mezczyzna(x), malzenstwo(x,_). malzenstwo(x,_). zona(x) zona(x) ::- kobieta(x), kobieta(x), malzenstwo(_,x). malzenstwo(_,x). dziecko(adam,anna,marta). dziecko(adam,anna,marta). dziecko(adam,anna,bogdan). dziecko(adam,anna,bogdan). rodzenstwo(x,y) rodzenstwo(x,y) ::- dziecko(a,b,x), dziecko(a,b,x), dziecko(a,b,y), dziecko(a,b,y), XX \== \== Y. Y.

wracamy do języków imperatywnych komputer organicznie zdolny do wykonywania wyłącznie kodu maszynowego człowiek organicznie niechętny do pisania programów w kodzie maszynowym, za to chętnie używający licznych języków wysokiego poziomu jak wyjść z tego impasu?

rozwiązanie: przetłumaczyć (oczywiście automatycznie) program z języka wysokiego poziomu na kod maszynowy jeżeli takie tłumaczenie będzie szybkie i wygodne, będziemy mogli zapomnieć o programowaniu w językach maszynowych (niestety, nie zawsze będzie to możliwe...)

tłumaczenie takie obejmuje kolejno analizę leksykalna analizę składniową analizę semantyczną i w końcu finalny przekład na język maszynowy każda z powyższych faz może zakończyć się wykryciem błędu i przerwaniem tłumaczenia

dygresja lingwistyczna: polskie słowo tłumacz ma dwa angielskie odpowiedniki: translator interpreter

translator tłumacz, który tłumaczy dzieła z jednego języka na inny, robiąc to w swoim tempie, przy wygodnym biurku, w domowym zaciszu, popijając wyborną kawę i w swoim tempie (limitowanym zapewne umową z wydawcą) możemy powiedzieć, że translator tłumaczy off-line

interpreter tłumacz, który wypowiedzi z jednych języków na inne, robiąc to na żywo, w obecności autorów tych wypowiedzi i działając pod presją czasu, bez zbędnej zwłoki możemy powiedzieć, że interpreter tłumaczy on-line

w świecie komputerów istnieje dokładnie taki sam podział program zapisany w języku wysokiego poziomu może zostać wykonany przez komputer dwiema drogami: translacji interpretacji

translacja (zwana też kompilacją): plik zawierający program w języku wysokiego poziomu tłumaczy się na kod maszynowy i wynik tłumaczenia umieszcza się w innym pliku taki przetłumaczony plik można następnie uruchamiać dowolnie wiele razy program wykonujący takie tłumaczenie nazywa się kompilatorem kompilator dąży do odnalezienia w źródle wszystkich błędów i jeśli ich nie ma, dokonuje przekładu

zauważ! kompilator jest potrzebny, aby przetłumaczyć program, ale nie jest już potrzebny, aby go wykonać

interpretacja: plik zawierający program w języku wysokiego poziomu jest tłumaczony (interpretowany) zawsze wtedy, kiedy jest uruchamiany wynik tłumaczenia nie jest nigdzie zapamiętywany interpreter zatrzymuje się na pierwszym znalezionym błędzie i odmawia dalszej pracy

zauważ! interpreter jest potrzebny zawsze wtedy, gdy chcemy wykonać program, ponieważ w tym przypadku tłumaczenie i wykonanie kodu są ze sobą związane nierozerwalnie

ważne! języki programowania są z założenia projektowane tak, aby napisane w nich programy były albo kompilowane, albo interpretowane

języki kompilowane: C/C++ C# Java Pascal Fortran i wiele, wiele innych

języki interpretowane: Perl Python JavaScript Ruby Basic i wiele, wiele innych

kompilacja: zalety uzyskany przetłumaczony kod jest z reguły bardzo szybki i zwięzły wady kompilacja może być czasochłonna, a więc czas od napisania programu do chwili uruchomienia może być znaczny

interpretacja: zalety program można uruchomić niezwłocznie po jego napisaniu wady kod interpretowany nigdy nie będzie tak wydajny jak skompilowany

co to jest kod źródłowy (ang. source code)? tekst programu zapisany w pliku przeznaczony do kompilacji albo intrepretacji nazwa takiego pliku jest w zasadzie dowolna, ale przyjęte jest, aby rozszerzenie wskazywało na język, który został użyty do napisania programu

konwencje nazewnicze:.c.cpp,.cxx.cs.pl.py,.pyw język C język C++ język C# język Perl język Python i wiele, wiele innych

czym pisać kod źródłowy? nie wolno go pisać w edytorach, które potrafią formatować tekst - czyli takie narzędzia jak MSWord czy LibreOffice Writer są kategorycznie wykluczone! należy go pisać w edytorach, które obrabiają surowy tekst, bez jakichkolwiek dekoracji czyli Notatnik z MSWindows jest jak najbardziej OK

czym pisać kod źródłowy? istnieją specjalizowane edytory dla programistów, zawierające szereg pożytecznych funkcjonalności,np. Notepad++ (wolne oprogramowania) istnieją specjalizowane środowiska (tzw. IDE Integrated Development Enviroment), które oprócz edytora mogą zawierać dodatkowe narzędzia, np. zintegrowany z edytorem kompilator, np. MSVisualStudio czy Eclipse