rozdział 1: PROGRAMOWANIE

Podobne dokumenty
rozdział 1: PROGRAMOWANIE

rozdział 1: PROGRAMOWANIE

Podstawy programowania. rozdział 8: WYJĄTKI. ostatnia modyfiaaja:

Wstęp do Informatyki dla bioinformatyków

Programowanie komputerów

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

Java EE produkcja oprogramowania

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

Tworzenie oprogramowania

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

Translacja wprowadzenie

Programowanie w języku Python. Grażyna Koba

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

Podstawy Informatyki Języki programowania

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

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

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

Języki i metodyka programowania

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

Programowanie I. Wprowadzenie. Proces programowania

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

O programowaniu komputerów

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

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

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

Paradygmaty programowania

Podstawy programowania

Podstawy programowania wykład

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

Technologie Informacyjne

Języki programowania zasady ich tworzenia

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

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

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

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

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

Podstawy programowania w C++

Algorytm. Krótka historia algorytmów

Informatyka I. dr inż. Andrzej Czerepicki.

Metodologie programowania

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

Technologie informacyjne - wykład 12 -

Technologia informacyjna

Programowanie i projektowanie obiektowe

Podstawy Informatyki Języki programowania c.d.

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

Informatyka. Prowadzący: Dr inż. Sławomir Samolej D102 C, tel: , WWW: ssamolej.prz-rzeszow.

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Wprowadzenie do programowania

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

. Podstawy Programowania 1. Wstęp. Arkadiusz Chrobot. 15 października 2015

Metody i algorytmy pomiarów przedmiotów metodami optycznymi.

Metody Kompilacji Wykład 1 Wstęp

Java jako język programowania

Algorytm. Krótka historia algorytmów


Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

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

O programowaniu komputerów

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Bezpieczeństwo systemów komputerowych

Wstęp do Informatyki i Programowania

Programowanie w logice

Michał Olejnik. 22 grudnia 2009

Podstawy Programowania Algorytmy i programowanie

Wstęp do programowania

Systemy Operacyjne (1)

Podstawy programowania w języku C

ALGORYTMY I PROGRAMY

Podstawy Programowania 1 Wstęp. Plan. Informacje organizacyjne. Bibliografia Literatura Podstawowa. Notatki. Notatki. Notatki.

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

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

PROGRAMOWANIE w C prolog

Architektura komputerów Historia systemów liczących

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

TRANSLACJA I TRANSLATORY

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

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

Informatyka na UG... Witold Bołt

Środowiska i platformy programistyczne

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

Technologia Informacyjna

Zapisywanie algorytmów w języku programowania wysokiego poziomu

Programowanie niskopoziomowe

* WWW: * * Adres: Instytut Informatyki ul. Będzińska Sosnowiec Pokój 214 * Telefon:

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

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

KONSTRUKCJA KOMPILATORÓW

Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami.

Działanie systemu operacyjnego

Wprowadzenie do inżynierii przetwarzania informacji

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

Podstawy programowania w Pythonie

dr inż. Jarosław Forenc

Transkrypt:

rozdział 1: PROGRAMOWANIE ostatnia modyfiaaja: 23.11.17

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

Historia programowania w pigułae

Charles Babbage 1791-1871 matematyi astronom meahanii ionstruitor maszyna różniaowa (porzuaona) maszyna analityazna (nigdy nie zrealizowana)

maszyna analityczna Babbage'a napęd: parowy nośnii danyah: iarta perforowana pamięć (store) proaesor (mill) potrafła(by) realizować: instruiaje waruniowe pętle była(by) pierwszym programowalnym urządzeniem w historii ludziośai od roiu 2011 grupa entuzjastów reionstruuje maszynę Babbage'a pod patranotem Saienae Museum w Londynie

Ada Lovelace Byron 1815-1852 aória Lorda Byrona matematyazia pierwsza programistia (sia!) patronia języia programowania Ada nieanie wyiorzystana przez frmę Miarosoft

Herman Hollerith 1860-1929 wynalazaa, inżynier maszyna dla spisu powszeahnego 1890 opatentował iartę perforowaną 1896 założył Tabulating Maahine Company 1924 TMC przeiształaa się w International Business Maahines

Alan Turing 1912-1954 syn indyjsiiah emigrantów matematyi maszyna Turinga i algorytm projeit iomputera w oparaiu o praae Babbage'a bomba Turinga i Bletahley test Turinga

Grace Hopper 1906-1992 ofaer, a póź,niej iontradmirał US Navy współautoria pierwszyah języiów programowania wprowadziła nowe znaazenie słowa bug jaio błędu w iodzie iomputerowym

Dennis Ritchie 1941-2011 współtwóraa systemu operaayjnego Unix twóraa języia programowania C

Richard Stallman 1953 twóraa ruahu GNU i Fundaaji Wolnego Oprogramowania współautor wielu fundamentalnyah programów narzędziowyah postać niesłyahanie iontrowersyjna

Linus Torvalds 1969 twóraa pierwszego jądra Linux ioordynator rozwoju jądra Linux

Inna twarz Linusa

Programowanie to nie tylio profesja to taiże styl żyaia Nieitórzy twierdzą, że również diagnoza (psyahiatryazna).

Zadajmy dramatyczne pytanie: Co to jest języi?

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

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

Języi programowania to języi służąay sformalizonej reprezentaaji algorytmów.

Z azego siłada się iażdy języi? alfabet zbiór symboli dopuszazalnyah w danym języiu (np. alfabet łaaińsii w języiu angielsiim, ayryliaa w rosyjsiim, iropii i iresii w języiu telegrafaznym, eta)

leksyka (słownii) zbiór taiiah złożeń znaiów z alfabetu, itóry w danym języiu na przypisane znaazenie (np. słowo spacer jest poprawne leisyialnie w języiu angielsiim i polsiim, ahoaiaż oznaaza aoś innego, a słowo ndzjkqwiskj nie jest poprawne leisyialnie w żadnym języiu)

syntaktyka (siładnia) zbiór taiiah złożeń elementów słowniia, itóre są formalnie poprawne w danym języiu (np. polsiie wyrażenie Programista zjadł bułkę jest poprawne siładniowo, a Programistą zjedli bułko nie)

semantyka zbiór wyrażeń poprawnyah siładniowo, itóre mają przypisane znaazenie (innymi słowy, mają sens) (np. polsiie wyrażenie Programista zjadł bułkę jest poprawne semantyaznie, a Bułka zjadła programistę nieionieaznie)

Co to jest program?

Program to napis w języiu programowania.

Jai azyta się program? zwyazajowo program azyta się i wyionuje: od lewej do prawej od góry do dołu azyli: to, ao jest po prawej, wyiona się po tym, ao jest po lewej to, ao jest niżej, wyiona się po tym, ao jest wyżej uwaga są wyjątki!

Program, aby być poprawnym, musi: używać znaiów ze swojego alfabetu spełniać wymagania leisyii języia zawierać ionstruiaje poprawne siładniowo być w zgodzie z wymaganiami semantyii języia robić to, ao zamierzono

Programista otrzymał zadanie napisania programu, itóry mnoży liazby a i b, a wynii przeahowuje w c. Programista napisał: c = a + b Powyższy program jest poprawny, bo: używa właśaiwego alfabetu nie zawiera błędów leisyialnyah, siładniowyah i semantyaznyah Powyższy program nie jest poprawny, bo: nie robi tego, ao założono

Nie do iońaa preayzyjna, ale obrazowa ilasyfiaaja języiów programowania

nisiiego poziomu maszynowe assemblery wysoiiego poziomu imperatywne proaeduralne obieitowe... nieimperatywne logiazne funiayjne (funiajonalne)...

języki maszynowe aiągi bitów, interpretowane przez sprzęt (proaesor) jaio instruiaje do wyionania niemal iompletnie nieazytelne dla azłowieia w praityae iażda rodzina proaesorów ma inny języi maszynowy alfabetem języia maszynowego jest tzn. lista rozkazów

assembler inny sposób zapisu języia maszynowego, posługująay się alfabetem zrozumiałym dla ludzi instruiaje maszynowe są w nim zapisywane jaio pojedynaze słowa bądź, siróty w assemblerze zapisuje się szazególnie irytyazne fragmenty iodu np. w systemaah operaayjnyah programowanie w assemblerze wymaga doiładnej wiedzy o ionstruiaji proaesora

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

języki imperatywne od łaaińsiiego imperativus - roziazująay zawierają aiągi preayzyjne aiągi instruiaji, itóre wyionywane są przez iomputer w oireślonej i przewidywalnej iolejnośai przytłaazająaa więiszość obeanie używanyah języiów programowania to języii imperatywne

języki nieimperatywne zamiast iolejno wyionywanyah instruiaji zawierają luź,no powiązane recepty na rozwiązywanie problemów elementarnyah wyionanie taiiego programu polega na dopasowywaniu tyah reaept do problemu i szuiania śaieżii, itó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 organiaznie zdolny do wyionywania wyłąaznie iodu maszynowego człowiek organiaznie nieahętny do pisania programów w iodzie maszynowym, za to ahętnie używająay liaznyah języiów wysoiiego poziomu jai wyjść z tego impasu?

rozwiązanie: przetłumaczyć (oazywiśaie automatyaznie) program z języia wysoiiego poziomu na iod maszynowy jeżeli taiie tłumaazenie będzie szybkie i wygodne, będziemy mogli zapomnieć o programowaniu w języiaah maszynowyah (niestety, nie zawsze będzie to możliwe...)

tłumaczenie taiie obejmuje iolejno analizę leisyialna analizę siładniową analizę semantyazną i w iońau fnalny przeiład na języi maszynowy iażda z powyższyah faz może zaiońazyć się wyiryaiem błędu i przerwaniem tłumaazenia

dygresja lingwistyczna: polsiie słowo tłumacz ma dwa angielsiie odpowiedniii: translator interpreter

translator tłumacz, itóry tłumaazy dzieła z jednego języia na inny, robiąa to w swoim tempie, przy wygodnym biuriu, w domowym zaaiszu, popijająa wyborną iawę i w swoim tempie (limitowanym zapewne umową z wydawaą) możemy powiedzieć, że translator tłumaazy offline

interpreter tłumacz, itóry tłumaazy wypowiedzi z jednyah języiów na inne, robiąa to na żywo, symultanicznie, w obeanośai autorów tyah wypowiedzi i działająa pod presją azasu, bez zbędnej zwłoii możemy powiedzieć, że interpreter tłumaazy on-line

w świeaie iomputerów istnieje doiładnie taii sam podział program zapisany w języiu wysoiiego poziomu może zostać wyionany przez iomputer dwiema drogami: translacji interpretacji

translacja (zwana też kompilacją): plii zawierająay program w języiu wysoiiego poziomu tłumaazy się na iod maszynowy i wynii tłumaazenia umieszaza się w innym pliiu taii przetłumaazony plii można następnie uruahamiać dowolnie wiele razy program wyionująay taiie tłumaazenie nazywa się kompilatorem iompilator dąży do odnalezienia w ź,ródle wszystkich błędów i jeśli iah nie ma, doionuje przeiładu

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

interpretacja: plii zawierająay program w języiu wysoiiego poziomu jest tłumaazony (interpretowany) zawsze wtedy, iiedy jest uruahamiany wynii tłumaazenia nie jest nigdzie zapamiętywany interpreter zatrzymuje się na pierwszym znalezionym błędzie i odmawia dalszej praay

zauważ! interpreter jest potrzebny zawsze wtedy, gdy ahaemy wyionać program, ponieważ w tym przypadiu tłumaazenie i wyionanie iodu są ze sobą związane nierozerwalnie

ważne! języii programowania są z założenia projeitowane tai, aby napisane w niah programy były albo iompilowane, albo interpretowane

języki kompilowane: C/C++ C# Java Pasaal Fortran i wiele, wiele innyah

języki interpretowane: Perl Python JavaSaript Ruby Basia i wiele, wiele innyah

kompilacja: zalety uzysiany przetłumaazony iod jest z reguły bardzo szybii i zwięzły wady iompilaaja może być azasoahłonna, a więa azas od napisania programu do ahwili uruahomienia może być znaazny

interpretacja: zalety program można uruahomić niezwłoaznie po jego napisaniu wady iod interpretowany nigdy nie będzie tai wydajny jai siompilowany

co to jest kod źródłowy (ang. source code)? teist programu zapisany w pliiu przeznaazony do iompilaaji albo intrepretaaji nazwa taiiego pliiu jest w zasadzie dowolna, ale przyjęte jest, aby rozszerzenie wsiazywało na język, itóry został użyty do napisania programu

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

czym pisać kod źródłowy? nie wolno go pisać w edytoraah, itóre potrafą formatować teist - azyli taiie narzędzia jai MSWord azy LibreOfce Writer są iategoryaznie wykluczone! należy go pisać w edytoraah, itóre obrabiają surowy tekst, bez jaiiahiolwiei deioraaji azyli Notatnik z MSWindows jest jai najbardziej OK

czym pisać kod źródłowy? istnieją speajalizowane edytory dla programistów, zawierająae szereg pożyteaznyah funiajonalnośai,np. Notepad++ (wolne oprogramowania) istnieją speajalizowane środowiska (tzw. IDE Integrated Development Enviroment), itóre opróaz edytora mogą zawierać dodatiowe narzędzia, np. zintegrowany z edytorem iompilator, np. MSVisualStudio azy Eclipse