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



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

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

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?

Ú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ů

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

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)

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

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

Skriptovací jazyky. Obsah

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

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

Generování vnitřní reprezentace programu

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

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

Úvod do jazyka C. Proč jazyk C

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í

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

IB111 Programování a algoritmizace. Programovací jazyky

Algoritmizace. Cíle předmětu

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

Informatika Algoritmy

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

Program a životní cyklus programu

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);

Abstraktní datové typy: zásobník

1 Úvod do kompilátorů

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

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

Úvod do programování

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

Úvod do programování v jazyce Java

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

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

PREPROCESOR POKRAČOVÁNÍ

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

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.

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

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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

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

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

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

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

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Programování - úvod. Programování. Proces programování. Vlastnosti dobrého programu: Kapitola seznamuje se základními pojmy programování.

Programovací jazyky Přehled a vývoj

Přehled probírané látky

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

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

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

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

Úvod do programovacích jazyků (Java)

Komponentní technologie

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Interpret jazyka IFJ2011

Úvod do programovacích jazyků (Java)

3 KTE / ZPE Informační technologie

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

Basic256 - úvod do programování Příklady. ing. petr polách

Principy objektově orientovaného programování

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

První kapitola úvod do problematiky

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Programovací jazyk Pascal

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

Informační systémy 2008/2009. Radim Farana. Obsah. Aktivní serverové stránky ASP. Active Server Pages. Activex Data Objects. LDAP database.

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

Softwarové komponenty a Internet

Paradigmata programování II Korutiny a nedeterminismus

Zápis programu v jazyce C#

Algoritmizace a programování

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

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

Sazba zdrojových kódů (balíček listings)

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

Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

KTE / ZPE Informační technologie

Komponenty v.net. Obsah přednášky

Schopnosti překladačů vybraných objektově orientovaných jazyků

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

JAK SE STALO, ŽE PROGRAMOVACÍ JAZYK COBOL PŘEŽIL ROK 2000

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

GENEROVÁNI KÓDU jazyk Mila

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

Algoritmy a jejich znázorňování.

Struktura programu v době běhu

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI

Paradigmata programování II Přednáška 1: Vedlejší efekt

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

5 Rekurze a zásobník. Rekurzivní volání metody

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

Úvod. Programovací paradigmata

Transkript:

Obsah Programovací jazyky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz 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? 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 3 ZPP - Programovací jazyky 4 1

Překlad a zpracování programu Nástroje pro tvorbu programů Zdrojový text programu Chyby při překladu Ladění Překlad a sestavení Neúspěšné testy Testování Provoz Chyby za provozu Editor Překladač / interpret x zpětný překladač Spojovací program (linker) Správa verzí CVS, Subversion, Ladicí program (debugger) Nástroje pro ladění výkonu (profiler) Testovací nástroje, generátory testů Generátor instalačních balíků Nástroje pro internacionalizaci (i18n) ZPP - Programovací jazyky 5 ZPP - Programovací jazyky 6 Integrovaná vývojová prostředí (IDE) Eclipse 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 7 ZPP - Programovací jazyky 8 2

JBuilder MS Visual Studio ZPP - Programovací jazyky 9 ZPP - Programovací jazyky 10 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) 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 11 ZPP - Programovací jazyky 12 3

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 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 13 ZPP - Programovací jazyky 14 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 ε 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í ZPP - Programovací jazyky 15 ZPP - Programovací jazyky 16 4

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 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 17 ZPP - Programovací jazyky 18 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 19 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 20 5

FORTRAN LISP (1958-59) 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 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 21 ZPP - Programovací jazyky 22 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) 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 23 ZPP - Programovací jazyky 24 6

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 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 25 ZPP - Programovací jazyky 26 COBOL BASIC (1964) 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. 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 27 ZPP - Programovací jazyky 28 7

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 Další jazyky 1980-83 Ada 1972 C 1972 Smalltalk 1982-85 C++ 1994-95 Java 2000-02 C# ZPP - Programovací jazyky 29 ZPP - Programovací jazyky 30 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); } } 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 31 ZPP - Programovací jazyky 32 8

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"; 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 33 ZPP - Programovací jazyky 34 9