rozdział 1: PROGRAMOWANIE

Podobne dokumenty
rozdział 1: PROGRAMOWANIE

rozdział 1: PROGRAMOWANIE

Programowanie komputerów

Java EE produkcja oprogramowania

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

Wstęp do Informatyki dla bioinformatyków

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Języki programowania zasady ich tworzenia

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

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

Programowanie w języku Python. Grażyna Koba

Tworzenie oprogramowania

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

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

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

Translacja wprowadzenie

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

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

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

Michał Olejnik. 22 grudnia 2009

Podstawy Informatyki Języki programowania

Języki i metodyka programowania

Algorytm. Krótka historia algorytmów

Podstawy programowania

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

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

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

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

Podstawy programowania wykład

Java jako język programowania

Informatyka I. dr inż. Andrzej Czerepicki.

Technologie Informacyjne

Podstawy programowania w C++

Zapisywanie algorytmów w języku programowania

Programowanie I. Wprowadzenie. Proces programowania

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

Metody Kompilacji Wykład 1 Wstęp

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

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

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

Algorytm. Krótka historia algorytmów

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

Podstawy Informatyki Języki programowania c.d.

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

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

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

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

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

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

Wprowadzenie do programowania

Środowiska i platformy programistyczne

Podstawy Programowania. Wykład 1

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

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

Informatyka. Michał Rad

Paradygmaty programowania

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

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

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Wstęp do Informatyki. Klasyfikacja oprogramowania

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

KONSTRUKCJA KOMPILATORÓW

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

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

Geneza powstania języka C++

ALGORYTMY I PROGRAMY

Algorytmy od problemu do wyniku

TRANSLACJA I TRANSLATORY

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

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

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

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

Wstęp do programowania

Podstawy programowania w języku C

Technologie informacyjne - wykład 12 -

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Geneza powstania języka C++

Wykład pierwszy Rys historyczny rozwoju sprzętu komputerowego

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

Systemy operacyjne III

Systemy operacyjne i sieci komputerowe Szymon Wilk System operacyjny 1

Podstawy programowania. Wprowadzenie

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Programowanie obiektowe

Algorytmika i programowanie usystematyzowanie wiadomości

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa

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

Bezpieczeństwo systemów komputerowych

Programowanie RAD Delphi

Utworzenie pliku. Dowiesz się:

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

Podstawy technik wytwarzania PTWII - projektowanie. Ćwiczenie 4. Instrukcja laboratoryjna

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

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

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

PyPy's Approach to Virtual Machine Construction

Transkrypt:

rozdział 1: PROGRAMOWANIE ostatnia modyfikacja: 29.04.17

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

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 niecnie wykorzystana 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

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 tylko profesja to także 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 kombinacji 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, a słowo ndzjkqwiskj nie jest poprawne leksykalnie w żadnym języku)

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 takich 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: zwykle 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...

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

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

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 programowania jak wyjść z tego impasu?

rozwiązanie: przetłumaczyć (oczywiście automatycznie) program z języka programowania 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 offline

interpreter tłumacz, który tłumaczy wypowiedzi z jednych języków na inne, robiąc to na żywo, symultanicznie, 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.py,.pyw język C język C++ język C# 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