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

Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

Programovací jazykyIng. Marek Běhálek

Katedra informatiky FEI VŠB-TUOA-1018 / 597 324 251

http://www.cs.vsb.cz/[email protected]

Page 2: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 2

Obsah

Co je to programovací jazykPřeklad a zpracování programuNástroje pro tvorbu programůMetody popisu programovacích jazykůTypy programovacích jazykůVývoj programovacích jazykůStudijní program „Informační technologie“

Page 3: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 3

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?

Page 4: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 4

Proč používáme programovací jazyky?

Zjednodušují přenos určitého typu informaceNoty v hudběMatematické formuleElektrotechnická 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čiZnačkovací jazyky (HTML) – data, ne programSpecifikační jazyky (λ-kalkul) – teoretický výzkum

Page 5: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 5

Životní cyklus softwarového produktu

Rozhodnutí o vytvoření produktuSpecifikace požadavkůAnalýza a návrh aplikaceImplementaceTestování a laděníDokumentaceInstalaceMarketing, prodej a podporaÚdržbaUkončení prodeje a podpory

Page 6: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 6

Překlad a zpracování programu

Zdrojový text programu

Překlad asestavení Testování

Chyby při překladu

Neúspěšné testy

Provoz

Chyby za provozu

Ladění

Page 7: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 7

Nástroje pro tvorbu programůEditorPřekladač / interpret x zpětný překladačSpojovací programSpráva verzíNástroje pro sestavení projektuTestovací nástroje, generátory testůLadicí programyNástroje pro ladění výkonuNástroje pro tvorbu dokumentaceTvorba instalačních balíkůDalší nástroje:

Internacionalizace (i18n)...

Page 8: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 8

Integrovaná vývojováprostředí (IDE)

Poskytují více uvedených funkcí současně

Prostředí orientovaná na určitý jazykBorland Pascal, C++, JBuilder, C#BuilderSharpDeveloper, JCreator, NetBeans

Univerzální prostředíEclipse (Java, C++, C#, …)MS Visual Studio (C++, C#, Jscript, VB, …)

Page 9: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 9

Eclipse

Page 10: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 10

JBuilder

Page 11: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 11

MS VisualStudio

Page 12: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 12

Překladač

Analýza zdrojového textu, vyhledání chybZákladní stavební prvky – identifikátory, čísla, řetězce, operátory, oddělovače, …Programové konstrukce – deklarace, příkazy, výrazyKontextové vazby – definice/užití, datové typy

Syntéza cílového programu / InterpretaceStrojový jazyk (nebo JSI)Jazyk virtuálního procesoru (JVM, CLR)

Page 13: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 13

Typy překladače

Kompilační překladač

Interpretační překladač

Page 14: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 14

PřekladačInkrementální překlad

Umožňuje po drobné opravě přeložit jen změněnou částMožnost provádění drobných změn během laděníprogramu

Just-in-time překladGenerování instrukcí virtuálního procesoru (Java VM - .class, .NET CLR – jazyk IL)Překlad až v okamžiku volání podprogramuOptimalizace podle konkrétního procesoru

Page 15: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 15

Překlad C++

Page 16: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 16

Popis programovacího jazyka

Syntaxe - struktura jazykových konstrukcíTextové jazyky (C, Pascal, Java)Grafické jazyky (vývojové diagramy, UML)

a > 10

x := x + 5

if a > 10 then beginx := x + 5;

end

ano

ne

Page 17: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 17

Popis programovacího jazykaSémantika – význam jazykových konstrukcí

Statická sémantika – v době překladuDynamická 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.

Page 18: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 18

Metody popisu syntaxe

Syntaktický diagram

Gramatikapříkaz → if podmínka then příkaz zbytekzbytek → else příkaz

| ε

if podmínka then příkaz else příkaz

Page 19: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 19

Metody popisu sémantikySlovní popis

Nepřesný

Formální popisOperační sémantika

Význam konstrukce popíšeme pomocí jednodušších operací

Denotační sémantikaVýznam konstrukce popíšeme pomocí funkcí

Axiomatická sémantika

Page 20: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 20

Typy programovacích jazykůImperativní jazyky

Posloupnost příkazů měnících stav výpočtuMožnost opakovaného přiřazení do proměnné

Deklarativní jazykyPosloupnost podmínekPočítač musí najít postup, jak je dodržet

Funkcionální jazyky – ML, Haskell, LISPLogické jazyky – PROLOG, CLP, Gödel, MercuryDotazovací jazyky - SQL

Page 21: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 21

Vývoj programovacích jazykůStrojové jazyky

Posloupnost instrukcí v číselném tvaruJazyky symbolických instrukcí / adres

Pojmenované instrukcePojmenované adresy – proměnné, návěští skokůMakrodefinice

AutokódySložitější příkazyPříklad: MAT (Minsk autokód – CTI, PIS, JDI NA, …)

Vyšší programovací jazyky

Page 22: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 22

Vývoj přístupů k tvorběprogramů (1)

Monolitické programyupřednostnění úspornosti kódu na úkor srozumitelnosti a přehlednosti

Strukturované metodyhierarchie, abstrakcedynamické knihovny (DLL)vzdálené volání procedur (RPC)modulární programování (Modula-2)

Page 23: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 23

Vývoj přístupů k tvorběprogramů (2)

Objektově orientované technologiezapouzdření – „černá skříňka“děděnípolymorfismusznovupoužitelnost

Komponentní technologierozhranístandardy

Page 24: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 24

První programovací jazykykolem 1946 Konrad Zuse – Plankalkul

použit také pro šachyrukopis publikován až v roce 1972, nebyl nikdy implementován

1949 John Mauchly - Short Codeprvní 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 Hopperprosazovala vytvoření vyšších jazykůpracovala na návrhu prvního překladačezavedla pojem "počítačový virus"

Page 25: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 25

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ě

V současnosti stále nejpoužívanější jazyk v oblasti vědeckotechnických výpočtů! (ISO: 1997)

Page 26: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 26

FORTRANCC Vypocet funkce faktorialC

INTEGER FUNCTION FACT(N)IMPLICIT NONEINTEGER N, I, FF = 1DO 10 I = 1,N

F = F * I10 CONTINUE

FACT = FEND

PROGRAM P1IMPLICIT NONEINTEGER N, F, FACTREAD(*,*) NF = FACT(N)WRITE(*,*) "Fact = ", FEND

Page 27: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 27

LISP (1958-59)

LISt Processing - John McCarthy, M. I. T.první funkcionální jazyk - implementace lambda-kalkulumožnost imperativního stylu programování

dosud se používá i jako skriptovací jazyk v aplikacích (AutoCAD, emacs, …)

Page 28: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 28

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)

Page 29: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 29

Algol 60 (1958-60)

Algorithmic Language - J. Backus, P. Naurbloková struktura, složené příkazy, rekurzesyntax 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ů

Page 30: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 30

ALGOL 60begin

integer N;ReadInt(N);

beginreal array Data[1:N];real sum, avg;integer i;sum:=0;for i:=1 step 1 until N dobegin 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)

endend

Page 31: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 31

COBOL (1960)COmmon Business Oriented Language

pro vytváření rozsáhlých programů k vládním a obchodním účelůmformalizovaný anglický text, čitelný pro manažeryzavedl propracované záznamové strukturyvytvoř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)

Page 32: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 32

COBOLIDENTIFICATION 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 Num1DISPLAY "Enter Second Number : "ACCEPT Num2DISPLAY "Enter operator (+ or *) : "ACCEPT OperatorIF Operator = "+" THEN

ADD Num1, Num2 GIVING ResultEND-IFIF Operator = "*" THEN

MULTIPLY Num1 BY Num2 GIVING ResultEND-IFDISPLAY "Result is = ", Result

END-PERFORM.STOP RUN.

Page 33: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 33

BASIC (1964)Beginners All-Purpose Symbolic Instruction Code

John G. Kemeny, Thomas E. Kurz, DartmouthUniversityprvní implementace je kompilátor (1. 5. 1964 04:00)1975 Tiny BASIC běží na mikropočítači s 2KB RAM1977 Bill Gates, Paul Allen – Altair BASIC

1991 - VisualBasic, VBA, VBScript2003 - VB.NET

Page 34: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 34

Pascal (1968-71)Niklaus Wirth, ETH Zurichjednoduchý 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

Page 35: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 35

Další jazyky

1980-83 Ada1972 C1972 Smalltalk1982-85 C++1994-95 Java2000-02 C#

Page 36: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 36

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

}}

Page 37: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 37

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

Page 38: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 38

PHP// připojení k serveru a výběr databázemysql_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";

Page 39: Ing. Marek Běhálek Katedra informatiky FEI VŠB …wiki.cs.vsb.cz/images/5/5e/Progjaz-2006.pdfzMatematické formule zElektrotechnická schémata zVyznačují se velkou přesností

ZPP - Programovací jazyky 39

Studijní program „Informační technologie“

Úvod do programování (Java)Programování v C/C++Programování v C#Programovací technikyProgramovací jazyky a překladačeSeminář z programování

Funkcionální a logické programování