Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /

Podobné dokumenty
Programovací jazyky. Obsah. Proč používáme programovací jazyky? Programovací jazyk

katedra informatiky FEI VŠB-TUO Standardizovaný nástroj pro komunikaci

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Úvod. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Úvod. Co je to programovací jazyk? Proč studovat programovací jazyky? Klasifikace jazyků

doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Úvod. Proč studovat programovací jazyky? Klasifikace jazyků. Co je to programovací jazyk?

Základy programování Programovací jazyky. doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

IB111 Programování a algoritmizace. Programovací jazyky

Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /

Softwarové komponenty a Internet

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Program a životní cyklus programu

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

IB111 Úvod do programování skrze Python Přednáška 13

Algoritmizace. Cíle předmětu

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod. Programovací paradigmata

Jaký programovací jazyk učit jako první a jak ho učit?

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

DTP Základy programování Úvod do předmětu

Skriptovací jazyky. Obsah

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Matematika v programovacích

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programovací jazyky Přehled a vývoj

Programovací jazyk Pascal

11. Přehled prog. jazyků

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Úvod do programování

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

Generování vnitřní reprezentace programu

Programovací jazyk univerzální notace pro zápis algoritmů, implementována.

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

1. Úvod. Podmínky absolvování

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

Úvod do programovacích jazyků (Java)

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Algoritmizace a programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Denotační sémantika. Marek Běhálek

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

IB111 Úvod do programování skrze Python Přednáška 13

1 Webový server, instalace PHP a MySQL 13

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VISUAL BASIC. Přehled témat

ALGORITMIZACE A PROGRAMOVÁNÍ

Maturitní témata Školní rok: 2015/2016

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

1. Webový server, instalace PHP a MySQL 13

První kapitola úvod do problematiky

Sada 1 - Základy programování

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programování - Java. Cvičení č.4

Seznámení s prostředím dot.net Framework

Profilová část maturitní zkoušky 2017/2018

Komponentní technologie

Funkcionální programování. Kristýna Kaslová

1. Úvod. Obsah předmětu =komparativní studie program. jazyků

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Vstupní požadavky, doporučení a metodické pokyny

Programovací jazyk Úvod do programování v C#

Lexikální analýza Teorie programovacích jazyků

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Programovací jazyk C# Úvod do programování v C#

KTE / ZPE Informační technologie

Překladač a jeho struktura

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Úvod do programování v jazyce Java

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

3 KTE / ZPE Informační technologie

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

Martin Hejtmánek hejtmmar

Úvod do programovacích jazyků (Java)

Programovací jazyk C# Úvod do programování v C#

Sada 1 - Základy programování

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

PODPROGRAMY PROCEDURY A FUNKCE

Funkcionální programování

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Transkript:

Programovací jazyky Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz

Obsah Co je to programovací jazyk Překlad a zpracování programu Nástroje pro tvorbu programů Metody popisu programovacích jazyků Typy programovacích jazyků Vývoj programovacích jazyků Studijní program Informační technologie ZPP - Programovací jazyky 2

Programovací jazyk Popis výpočtů, obvykle ve tvaru, jenž umožňuje provedení elektronickým počítačem (program) Standardizovaný nástroj pro komunikaci s počítačem S jakými daty má počítač pracovat? Jak se tato data budou ukládat a přenášet? Které akce a kdy se mají provést? ZPP - Programovací jazyky 3

Proč používáme programovací jazyky? Zjednodušují přenos určitého typu informace Noty v hudbě Matematické formule Elektrotechnická schémata Vyznačují se velkou přesností vyjádření Přirozené jazyky vynechávání, gramatické chyby, víceznačnost Jsou obvykle proveditelné na počítači Značkovací jazyky (HTML) data, ne program Specifikační jazyky (λ-kalkul) teoretický výzkum ZPP - Programovací jazyky 4

Životní cyklus softwarového produktu Rozhodnutí o vytvoření produktu Specifikace požadavků Analýza a návrh aplikace Implementace Testování a ladění Dokumentace Instalace Marketing, prodej a podpora Údržba Ukončení prodeje a podpory ZPP - Programovací jazyky 5

Překlad a zpracování programu Ladění Neúspěšné testy Zdrojový text programu Překlad a sestavení Testování Provoz Chyby při překladu Chyby za provozu ZPP - Programovací jazyky 6

Nástroje pro tvorbu programů Editor Překladač / interpret x zpětný překladač Spojovací program Správa verzí Nástroje pro sestavení projektu Testovací nástroje, generátory testů Ladicí programy Nástroje pro ladění výkonu Nástroje pro tvorbu dokumentace Tvorba instalačních balíků Další nástroje: Internacionalizace (i18n)... ZPP - Programovací jazyky 7

Integrovaná vývojová prostředí (IDE) Poskytují více uvedených funkcí současně Prostředí orientovaná na určitý jazyk Borland Pascal, C++, JBuilder, C#Builder SharpDeveloper, JCreator, NetBeans Univerzální prostředí Eclipse (Java, C++, C#, ) MS Visual Studio (C++, C#, Jscript, VB, ) ZPP - Programovací jazyky 8

Eclipse ZPP - Programovací jazyky 9

JBuilder ZPP - Programovací jazyky 10

MS Visual Studio ZPP - Programovací jazyky 11

Překladač Analýza zdrojového textu, vyhledání chyb Základní stavební prvky identifikátory, čísla, řetězce, operátory, oddělovače, Programové konstrukce deklarace, příkazy, výrazy Kontextové vazby definice/užití, datové typy Syntéza cílového programu / Interpretace Strojový jazyk (nebo JSI) Jazyk virtuálního procesoru (JVM, CLR) ZPP - Programovací jazyky 12

Typy překladače Kompilační překladač Interpretační překladač ZPP - Programovací jazyky 13

Překladač Inkrementální překlad Umožňuje po drobné opravě přeložit jen změněnou část Možnost provádění drobných změn během ladění programu Just-in-time překlad Generování instrukcí virtuálního procesoru (Java VM -.class,.net CLR jazyk IL) Překlad až v okamžiku volání podprogramu Optimalizace podle konkrétního procesoru ZPP - Programovací jazyky 14

Překlad C++ ZPP - Programovací jazyky 15

Popis programovacího jazyka Syntaxe - struktura jazykových konstrukcí Textové jazyky (C, Pascal, Java) Grafické jazyky (vývojové diagramy, UML) ano a > 10 x := x + 5 ne if a > 10 then begin x := x + 5; end ZPP - Programovací jazyky 16

Popis programovacího jazyka Sémantika význam jazykových konstrukcí Statická sémantika v době překladu Dynamická sémantika v době běhu Příklad: Co znamená X + 1? X je celé číslo: Přičti k hodnotě proměnné X jedničku. X je řetězec: Převeď konstantu 1 na řetězec a připoj na konec řetězce uloženého v proměnné X. X je objekt: Zavolej metodu "operator + s parametrem 1. X je reálné číslo: Převeď 1 na reálné číslo 1.0 a přičti k hodnotě proměnné X. ZPP - Programovací jazyky 17

Metody popisu syntaxe Syntaktický diagram if podmínka then příkaz else příkaz Gramatika příkaz if podmínka then příkaz zbytek zbytek else příkaz ε ZPP - Programovací jazyky 18

Metody popisu sémantiky Slovní popis Nepřesný Formální popis Operační sémantika Význam konstrukce popíšeme pomocí jednodušších operací Denotační sémantika Význam konstrukce popíšeme pomocí funkcí Axiomatická sémantika ZPP - Programovací jazyky 19

Typy programovacích jazyků Imperativní jazyky Posloupnost příkazů měnících stav výpočtu Možnost opakovaného přiřazení do proměnné Deklarativní jazyky Posloupnost podmínek Počítač musí najít postup, jak je dodržet Funkcionální jazyky ML, Haskell, LISP Logické jazyky PROLOG, CLP, Gödel, Mercury Dotazovací jazyky - SQL ZPP - Programovací jazyky 20

Vývoj programovacích jazyků Strojové jazyky Posloupnost instrukcí v číselném tvaru Jazyky symbolických instrukcí / adres Pojmenované instrukce Pojmenované adresy proměnné, návěští skoků Makrodefinice Autokódy Složitější příkazy Příklad: MAT (Minsk autokód CTI, PIS, JDI NA, ) Vyšší programovací jazyky ZPP - Programovací jazyky 21

Vývoj přístupů k tvorbě programů (1) Monolitické programy upřednostnění úspornosti kódu na úkor srozumitelnosti a přehlednosti Strukturované metody hierarchie, abstrakce dynamické knihovny (DLL) vzdálené volání procedur (RPC) modulární programování (Modula-2) ZPP - Programovací jazyky 22

Vývoj přístupů k tvorbě programů (2) Objektově orientované technologie zapouzdření černá skříňka dědění polymorfismus znovupoužitelnost Komponentní technologie rozhraní standardy ZPP - Programovací jazyky 23

První programovací jazyky kolem 1946 Konrad Zuse Plankalkul použit také pro šachy rukopis publikován až v roce 1972, nebyl nikdy implementován 1949 John Mauchly - Short Code první počítačový jazyk skutečně použitý na elektronickém zařízení určen pro zadávání rovnic "ručně kompilovaný" jazyk 1951 Grace Murray Hopper prosazovala vytvoření vyšších jazyků pracovala na návrhu prvního překladače zavedla pojem "počítačový virus" ZPP - Programovací jazyky 24

FORTRAN (1954-57) FORmula TRANslator - John Backus, IBM problémově orientovaný, strojově značně nezávislý, optimalizace (nutná v konkurenci s JSI) realizace překladače si vyžádala 18 člověkoroků - jeden z největších projektů v té době Vsoučasnosti stále nejpoužívanější jazyk v oblasti vědeckotechnických výpočtů! (ISO: 1997) ZPP - Programovací jazyky 25

FORTRAN C C Vypocet funkce faktorial C INTEGER FUNCTION FACT(N) IMPLICIT NONE INTEGER N, I, F F = 1 DO 10 I = 1,N F = F * I 10 CONTINUE FACT = F END PROGRAM P1 IMPLICIT NONE INTEGER N, F, FACT READ(*,*) N F = FACT(N) WRITE(*,*) "Fact = ", F END ZPP - Programovací jazyky 26

LISP (1958-59) LISt Processing - John McCarthy, M. I. T. první funkcionální jazyk - implementace lambda-kalkulu možnost imperativního stylu programování dosud se používá i jako skriptovací jazyk v aplikacích (AutoCAD, emacs, ) ZPP - Programovací jazyky 27

LISP (defun quicksort (vec l r) (let ((i l) (j r) (p (svref vec (round (+ l r) 2)))) (while (<= i j) (while (< (svref vec i) p) (incf i)) (while (> (svref vec j) p) (decf j)) (when (<= i j) (rotatef (svref vec i) (svref vec j)) (incf i) (decf j))) (if (> (- j l) 1) (quicksort vec l j)) (if (> (- r i) 1) (quicksort vec i r))) vec) ZPP - Programovací jazyky 28

Algol 60 (1958-60) Algorithmic Language - J. Backus, P. Naur bloková struktura, složené příkazy, rekurze syntax poprvé popsána formálně gramatikou (BNF) koncem 60. let se stal nejpopulárnějším jazykem v Evropě např. i ve výuce základ mnoha dalších programovacích jazyků ZPP - Programovací jazyky 29

ALGOL 60 begin integer N; ReadInt(N); begin real array Data[1:N]; real sum, avg; integer i; sum:=0; for i:=1 step 1 until N do begin real val; ReadReal(val); Data[i]:=if val<0 then -val else val end; for i:=1 step 1 until N do sum:=sum + Data[i]; avg:=sum/n; PrintReal(avg) end end ZPP - Programovací jazyky 30

COBOL (1960) COmmon Business Oriented Language pro vytváření rozsáhlých programů k vládním a obchodním účelům formalizovaný anglický text, čitelný pro manažery zavedl propracované záznamové struktury vytvořen konferencí CODASYL (Conference of Data Systems and Languages) Dosud se používá zejména ve finančních institucích (ISO:2002, XML 2006) ZPP - Programovací jazyky 31

COBOL IDENTIFICATION DIVISION. PROGRAM-ID. Iter. AUTHOR. Michael Coughlan. DATA DIVISION. WORKING-STORAGE SECTION. 01 Num1 PIC 9 VALUE ZEROS. 01 Num2 PIC 9 VALUE ZEROS. 01 Result PIC 99 VALUE ZEROS. 01 Operator PIC X VALUE SPACE. PROCEDURE DIVISION. Calculator. PERFORM 3 TIMES DISPLAY "Enter First Number : " ACCEPT Num1 DISPLAY "Enter Second Number : " ACCEPT Num2 DISPLAY "Enter operator (+ or *) : " ACCEPT Operator IF Operator = "+" THEN ADD Num1, Num2 GIVING Result END-IF IF Operator = "*" THEN MULTIPLY Num1 BY Num2 GIVING Result END-IF DISPLAY "Result is = ", Result END-PERFORM. STOP RUN. ZPP - Programovací jazyky 32

BASIC (1964) Beginners All-Purpose Symbolic Instruction Code John G. Kemeny, Thomas E. Kurz, Dartmouth University první implementace je kompilátor (1. 5. 1964 04:00) 1975 Tiny BASIC běží na mikropočítači s 2KB RAM 1977 Bill Gates, Paul Allen Altair BASIC 1991 - VisualBasic, VBA, VBScript 2003 - VB.NET ZPP - Programovací jazyky 33

Pascal (1968-71) Niklaus Wirth, ETH Zurich jednoduchý jazyk, určen pro výuku programování P-kód instrukce virtuálního procesoru, specializované procesory pro P-kód Borland Turbo Pascal (Anders Hejlsberg) Borland Delphi -> Kylix ZPP - Programovací jazyky 34

Další jazyky 1980-83 Ada 1972 C 1972 Smalltalk 1982-85 C++ 1994-95 Java 2000-02 C# ZPP - Programovací jazyky 35

C# using System; using System.Windows.Forms; using System.Drawing; public class Sample : Form { [STAThread] public static int Main(string[] args) { Application.Run(new Sample()); return 0; } public Sample() { Button btn = new Button(); btn.text = "OK"; Controls.Add(btn); } } ZPP - Programovací jazyky 36

Skriptovací jazyky Slouží obvykle k rozšíření nějaké aplikace Operační systém sh, command.com WWW server Perl, PHP WWW prohlížeč JavaScript, VBScript ZPP - Programovací jazyky 37

PHP // připojení k serveru a výběr databáze mysql_connect("localhost","uzivatel","heslo"); mysql_select_db("databaze"); // dotaz $h = mysql_query("select * FROM uzivatele WHERE jmeno='$jmeno'"); // vytvoření objektu z výsledného řádku $uz = mysql_fetch_object($h); if(!$uz ) die "Uživatel neexistuje"; if( $uz->heslo!= $heslo ) die "Špatné heslo"; ZPP - Programovací jazyky 38

Studijní program Informační technologie Úvod do programování (Java) Programování v C/C++ Programování v C# Programovací techniky Programovací jazyky a překladače Seminář z programování Funkcionální a logické programování ZPP - Programovací jazyky 39