Základy informatiky programovací prostředky

Slides:



Advertisements
Podobné prezentace
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Advertisements

VÝVOJ PROGRAMOVACÍCH JAZYKŮ PERSPEKTIVY ELEKTRONIKY 3. Celostátní seminář, 18. března 2003 Ing. Pavel Pokorný UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ Fakulta technologická.
Historie programování
Operační systémy jednouživatelské, jednoúlohové - MS DOS (výjimka pro PRINT) jednouživatelské, víceúlohové - MS Windows víceživatelské, víceúlohové - Unixy.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
ALGO – Algoritmizace 1. cvičení
Základy informatiky programovací prostředky
JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.
C# pro začátečníky Mgr. Jaromír Osčádal
Algoritmizace a programování
Programování v C++ Cvičení.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Základy informatiky programovací prostředky
Algoritmizace a programování
Seminář – Základy programování
Algoritmizace.
25. ALGORITMIZACE A PROGRAMOVÁNÍ
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Algoritmizace a základy programování
Základy algoritmizace a programování
13AMP 9. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled ADA ADA Java Java.
Sémantická analýza Jakub Yaghob
Systémy pro podporu managementu 2
Základy programování a programovací jazyky
Obchodní akademie, Náchod, Denisovo nábřeží 673
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
Počítače a programování 1
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Informatika I 1. přednáška
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Dokumentace informačního systému
Systémy pro podporu managementu 2 Inteligentní systémy pro podporu rozhodování 1 (DSS a znalostní systémy)
Algoritmizace a programování Vývojové diagramy - 03
uložené procedury (stored procedures) triggery, sekvence, pohledy, funkce, parametrické dotazy (prepared statements) komplexní agregace a SQL dotazy jiné.
Algoritmizace a programování Algoritmizace – základní pojmy - 01
Vytváření a realizace algoritmů Algoritmy a datové struktury
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Algoritmus a jeho vlastnosti
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
1 Programování a p. jazyky Postup při tvorbě programu (systému) –strategie –analýza ( konceptuální modely) Datová Procesní –návrh (i/o, výjimky, algoritmus)
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Programování POCSI. Programovani/POCSI2 Základní pojmy Akce - děj nad objekty, mající začátek a konec, a mající přesně definovaný účinek. Příkaz - popis.
doc. RNDr. Zdeněk Botek, CSc.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Visual Basic - programování
Visual Basic Úvod do programování. Co je to program  Program je řada příkazů, které určují počítači, co má provádět, jak má zacházet s vloženými daty.
IB111 Programování a algoritmizace
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Informatika (1) Počítač - základní pojmy HW a SW4 OS MS-DOS, Windows 95, 982 Org. souborů na disku, operační paměť2 Aplikace Malování, Word8 Základy programování.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Překladače Vnitřní struktura překladače © Milan Keršláger
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 4: Programovací jazyk C Bc. Radek Libovický.
Základy programování mikropočítačů První program v jazyce symbolických adres.
CZ.1.07/1.5.00/ Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/ Střední odborná škola elektrotechnická, Centrum odborné přípravy.
Programovací jazyky OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah:
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Překladače 6. Sémantická analýza
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Výukový materiál zpracován v rámci projektu
Algoritmizace – základní pojmy
Dobývání znalostí z databází znalosti
Překladače 3. Zápis programu
Překladače Syntaktická analýza
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Překladače 3. Zápis programu
Geografické informační systémy
Podprogramy.
Překladače 6. Sémantická analýza
Úvod do programovania Ing. Eva Gabonayová 2012.
Transkript prezentace:

Základy informatiky programovací prostředky Ing. Roman Danel, Ph.D. roman.danel@vsb.cz Institut ekonomiky a systémů řízení Hornicko – geologická fakulta

Obsah Algoritmus Programovací jazyky CASE nástroje

Algoritmus Návod či postup jak vyřešit určitou úlohu Např. kuchyňský recept

Vlastnosti algoritmů Konečnost (finitnost) Obecnost Determinovanost Resultativnost (výstup) Elementárnost

Složitost algoritmu Algoritmická analýza Teorie složitosti Konečnost algoritmu

Druhy algoritmů Rekurzivní „hladové“ Dynamické programování „rozděl a panuj“ Pravděpodobnostní Genetické (evoluční) Heuristický

Příklady známých algoritmů Eratosthenovo síto Euklidův algoritmus Algoritmus de Casteljau Bellman-Fordův algortimus

Programovací jazyky Prostředek pro zápis algoritmů, jenž mohou být prováděny na počítači Zápis algoritmu v programovacím jazyku se nazývá program Programovací jazyk – soubor pravidel pro zápis algoritmu Programovací jazyk má svoji syntaxi a sémantiku (množina slov)

Členění jazyků dle míry abstrakce Nižší – závislé na HW - assembler Vyšší – nezávislé na HW

Dle způsobu překladu a spuštění Interpretované Interpretace Překlad do pseudokódu a jeho interpretace JIT interpretace Kompilované Co je to kompilace? - převod programu zapsaného v programovacím jazyce do strojového kódu Co je to překladač (linker)? – sestavení spustitelného programu z modulu vytvořeného kompilátorem, připojením potřebných knihovních modulů JIT (Just In Time) – techniky překladu pro urychlení běhu interpretovaných programů

JIT kompilace Druhy JIT kompilátorů: Překlad v době instalace Opravdový JIT (před spuštěním překlad a optimalizace) Ekonomický JIT Používané techniky optimalizace – odstranění mrtvého kódu, vkládání těl metod, rozbalení smyček, odstraněné shodných podvýrazů

Linker Jeden nebo více objektových souborů vygenerovaných překladačem spojí do jediného spustitelného souboru Sdílené knihovny – dynamické sestavování až po spuštění programu

Program a instrukce Program – posloupnost příkazů popisující nějakou činnost Zdrojový text programu – algoritmus zapsaný v programovacím jazyku Strojový kód – instrukce srozumitelné pro daný stroj Instrukce – nejzákladnější příkaz, kterému rozumí CPU Instrukční sada – soubor instrukcí, kterému rozumí dané CPU

Jazyk symbolických adres Nízkoúrovňový Vznik v 50. letech – druhá generace „assembler“ (z anglického assembly language) Assembler je technicky překladač jazyka symbolických adres Symbolická reprezentace strojových instrukcí

Prvky jazyka symbolických adres Překladové direktivy Instrukce Definice obsahu paměti Návěstí Makro Podmínkové bloky Definice překladových symbolů

Vyšší programovací jazyky Procedurální - strukturované Neprocedurální (deklarativní) - SQL Funkcionální - LISP Objektově orientované – SmallTalk, C++, Java Logické - Prolog Značkové – HTML, XML Skriptovací – JavaScript, PHP, Perl

Procedurální jazyky Fortran - 1954 Algol - 1958 Cobol – 1960 PL/1 (Fortran+Algol+Cobol) Basic – 1964 Algol68 C Dbase, Clipper , FoxPro Který jazyk je CASE sensitivní? Co to znamená?

Fortran John Bakus, IBM 1954 Fortran přinesl: Pojmenování proměnných Složené výrazy podprogramy

Deklarativní Založeno na popisu cíle – přesný algoritmus je záležitostí překladače SQL Je-li použita rekurze – nároky na programátora co se týče představy jak program bude fungovat

Funkcionální LISP, APL, Erlang, Haskell, Oz, Scheme Zachází s výpočtem jako s vyhodnocením matematických funkcí Aplikace je složena z funkcí, na rozdíl od procedurálního programování zaměřeného na změny stavu Využití teorie rekurzivních funkcí Umělá inteligence

Objektově orientované SmallTalk – 1970 program je množina objektů, které prováděním svých metod reagují na došlé zprávy C++ - 1983 Java 1990 není čistě objektový, nezávislý na HW MS Visual Basic událostně řízený

Logické programování Prolog, Absys, Planner Definují se pravidla Interpret některé skutečnosti dokáže odvodit ze známých skutečností a pravidel

Základní prvky programu Přiřazení Cyklus Podmínky pro větvení Nekonečný cyklus: Cyklus programu, který se neustále opakuje Zdánlivě nekonečný cyklus

Co je to proměnná? Úložiště informace – má vyhrazené místo v paměti Proměnná má typ a hodnotu

Co je to rekurze? Recurso = „opět se vracet“ Opakované vnořené volání stejné funkce Typy: Přímá – podprogram volá sám sebe Nepřímá – vzájemné volání podprogramů vytvoří kruh Lineární, stromová

Příklad využití rekurze Výpočet faktoriálu N! = N * (N – 1)! Sub Faktorial(N) ( if N = 0 then Vysledek = 1 else Vysledek = N * Faktorial(N – 1) endif )

Deadlock Úspěšné dokončení první akce je podmíněno dokončením druhé akce, přičemž úspěšné dokončení druhé akce je podmíněno dokončením první akce V počítači zablokování procesů vzájemným křížovým čekáním Podmínky deadlocku - Coffman

C jazyk – příklad „Ahoj světe“ #include <stdio.h> void main() { char* msg=„Hello world!"; puts(msg); }

Totéž v objektovém C++ #include <string.h> #include <stdio.h> class Message // definuj třídu pro zprávu { private: char msg[50]; public: Message(char* s) { strcpy(msg,s); }; void print() puts(msg); void main() m = new Message("Hello World!"); // instance třídy m->print(); // volám metodu print delete m; // uvolňuji paměť }

COBOL IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-PROG. ******************************* ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-PC. OBJECT-COMPUTER. IBM-PC. ******************************** DATA DIVISION. ******************************** PROCEDURE DIVISION. DISPLAY-PARA. DISPLAY "HELLO WORLD FROM COBOL!". END-PARA. STOP RUN.

Basic LET MSG$ = "Hello World" PRINT MSG$;

LISP – funkcionální jazyk ( (setq msg "Hello World") (print 'msg)) LISP = List Processing nebo Lots of Irrelevant Silly Parentheses 

Prolog – logický jazyk Message is "Hello World" Message? Popisuje co se má stát Systém rozhodne, jak se to stane

SmallTalk message := string new: "Hello World". message display.

Skriptovací jazyky Shell UNIX message="Hello World" echo $message Shell MS-DOS SET MSG="Hello World" ECHO %MSG%

CASE nástroje Computer Aided Software Engineering Nástroj k vývoji, modernizaci a údržbě SW Kombinace SW nástrojů a strukturovaných metodologií

Pojmy Metodologie – souhrn definovaných principů a speciálních pojmů, používaných v orientaci v dané oblasti Metodika – uspořádaný, relativně podrobný návod pro uplatnění metodologie Metoda – uplatnění metodiky konkrétním způsobem

Historie CASE 60. léta – Data Flow Diagrams Počátek 80. let počítačová podpora tvorby dokumentace Nástroje pro podporu analýzy a tvorby SW Střed 80. let – tvorba modelů databáze Konec 80.let – automatické generování a sestavování nástrojů Začátek 90. let – inteligentní metodologie řízení tvorby SW

Přínosy použití CASE Eliminace neproduktivního času projektantů Zvýšení kvality SW Urychlení procesu vývoje Jednodušší provádění změn

Typy CASE Upper CASE – globální analýza, plánování Middle CASE – detailní analýza, návrh IS Lower CASE – fyzická (programová) realizace I-CASE (integrovaný CASE) – podporuje všechny životní cykly projektu – včetně generování SW, tvorbu a údržbu dokumentace atd.

Falešné představy o CASE Není to vyšší generace programovacích jazyků Nepředstavují ani nenahrazují metodologii Nezlepší práci vedoucích pracovníků – pouze je nutí k vyšší systematičnosti a pečlivosti Neodstraní zaostávání ve vývoji aplikací Zvýší produktivitu analytiků tím že je zbaví práce s vedením dokumentace, a umožní jim soustředit se na tvůrčí práci