Překladače 3. Zápis programu

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Přednáška č. 3 Normalizace dat, Datová a funkční analýza
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ý.
Algoritmizace Vývojové diagramy.
Typy programů operační systémy programy pro práci se soubory
ALGO – Algoritmizace 1. cvičení
C# pro začátečníky Mgr. Jaromír Osčádal
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Operační systém Adam Greguš, 4.A.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Programování PA - 2.
Generování mezikódu Jakub Yaghob
Algoritmizace a 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í.
Algoritmus po krocích rozepsaný návod k nějaké činnosti
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Algoritmizace a základy programování
Základy algoritmizace a programování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
PHP – Základy programování
Operační systémy.
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
Maturitní okruh 22: Úvod do HTML. Značkovací a klasické jazyky Klasické: převládá strukturovaný text (programovací kód), skripty jsou prováděny na straně.
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Dokumentace informačního systému
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Algoritmizace a programování Algoritmizace – základní pojmy - 01
Vytváření a realizace algoritmů Algoritmy a datové struktury
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Elektrotechnika Mikroprocesorová technika
Algebra v informatice Antonín Jančařík.
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.
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
OPERAČNÍ SYSTÉMY.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
doc. RNDr. Zdeněk Botek, CSc.
Visual Basic - programování
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Ú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
Základy programování mikropočítačů První program v jazyce symbolických adres.
Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah:
Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp:// Obsah: ● jádro,
Překladače Operační paměť © Milan Keršláger
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Algoritmizace – základní pojmy
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Základní pojmy v automatizační technice
Operační systémy Vývoj počítačů
Překladače 3. Zápis programu
UNIX 10. Procesy © Milan Keršláger
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.
Počítačová bezpečnost 2. Bezpečnost v OS
Název školy: ZŠ Bor, okres Tachov, příspěvková organizace
Vytváření dokumentace algoritmů
Operační systémy Vnitřní struktura překladače
Operační systémy 9. Spolupráce mezi procesy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Databázové systémy a SQL
1. ročník oboru Mechanik opravář motorových vozidel
Překladače Zápis programu
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Podprogramy.
UNIX 10. Procesy Obsah: algoritmus, program, proces, thread
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Transkript prezentace:

Překladače 3. Zápis programu Obsah: algoritmus, program, proces, thread styl zápisu programu, dokumentace strukturované programování, vývojový diagram řídící struktury, klíčová slova podprogramy, funkce, předávání parametrů knihovní funkce, typy knihoven © Milan Keršláger http://www.pslib.cz/ke/slajdy 3.3.2011 http://creativecommons.org/licenses/by-nc-nd/3.0/

Vznik programu algoritmus zápis postupu pro vyřešení úlohy program zápis algoritmu v nějakém programovacím jazyce proces spuštěný program thread (vlákno) odlehčený proces (proces má jeden či více vláken)

Algoritmus Al-Chorezmí perský matematik – algebra – algoritmy výpočtů 1145 přeloženo do latiny (Algorithmi...) původně návody, jak pracovat s čísly (včetně nuly) vlastnosti algoritmů konečnost obecnost (hromadnost) determinovanost stejné vstupy produkují stejné výsledky výstup (resultativnost)

Program realizace algoritmu v programovacím jazyce tomu však nerozumí procesor (CPU) nutný převod z prog. jazyka do instrukcí CPU překladač – kód vytvořen předem interpret – kód vytvářen průběžně za běhu souhrnně označováno jako software systémový zajišťuje chod počítače (režie chodu počítače) aplikační software konkrétní užitečná činnost (vlastní činnost)

Proces spuštěný program jeden program lze spustit vícekrát s různými daty umístěn v operační paměti počítače je prováděn procesorem proces se skládá z: vlastního kódu programu proměnlivých dat typicky v OS prováděno více procesů zároveň multitasking – rychlé střídání procesů na CPU

Thread (vlákno) odlehčený proces nižší režie při změně kontextu (střídání procesů na CPU) sdílí společný paměťový prostor stejná oprávnění, otevřené soubory, proměnné prostředí, ... rychlé vytváření a rušení vlákna efektivnější sdílení dat, synchronizace za cenu komplikací (tzv. souběh) využití v masivním paralelismu oblíbené ve Windows klasické procesy mají obrovskou režii problém bezpečnosti → webový prohlížeč s taby, Flash

Styl zápisu programu poprvé v 70. letech 19. stol. pro jazyk Fortran pravidla grafické úpravy zdrojového kódu nemají vliv na funkci programu usnadňují orientaci v kódu a jeho pochopení jsou různá (nejen dle jazyka, ale i dle programátora) využívá různé techniky bílé znaky (mezery, tabelátory, přechod na nový řádek) odsazování, oddělení identifikátorů, klíčových slov... psaní velkých písmen, styl zápisu názvů (fce, proměnné) komentáře, vyloučení GOTO, popisné názvy atd.

Příklad stylu if (a>b) then {c=1;b=12} else c=10; for(i=1,i<c,i++) {sum=sum+i;printf(“i: %d“, i)} if (a>b) then { c=1; b=12; } else c=10; for (i=1,i<c,i++) sum=sum+i; printf(“i: %d“, i)

Komentáře součást zdrojového kódu slouží jen pro programátora nemají vliv na funkci programu lze z nich automaticky generovat dokumentaci popisy činnosti funkcí, typů parametrů, ... nepopisují co, ale proč se tak děje samotnou činnost popisuje kód folklór RTFM (Manual, Source, Binary, FAQ), dnes UTFG UTSL (Use the Source Luke), dnes STFW

Dokumentace programů nejneoblíbenější činnost programátora viz UTFS u větších projektů nutnost ISO 9001, (formální) audity kódu UNIX je tzv. open system vše je plně dokumentováno včetně technických podrobností popularizováno na počátku 80. let 20 století v 90. letech trumfnuto „open source software“

Strukturované programování 1968 – Edsger W. Dijkstra jeden ze způsobů imperativního programování tj. přesný popis posloupnosti kroků výpočtu odstraňuje GOTO

Vývojový diagram

Řídící struktury základní kameny strukturovaného programování 70. léta 20. stol (ALGOL, Pascal, Ada, ...) tzv. strukturované příkazy vyšších jazyků samy nic nevykonávají, ale zajišťují: vytvoření posloupnosti příkazů (tzv. blok) cyklus (opakování posloupnosti) větvení programu (podmínka) souvisí s Turing-kompletním počítačem počítač Z3 z roku 1941 neměl podmínku → smyčky

Klíčová slova součást programovacího jazyka mají specifický význam často vyhrazená slova nesmí být názvem proměnné, funkce některé jazyky nejsou tak striktní např. PostScript specifikum některých jazyků (např. C) klíčová slova vytlačena do názvů funkcí printf(„Ahoj světe“);

Podprogramy využívají zásobník (adresa návratu) využití v rekurzi funkce přebírá parametry, vrací výsledek v objektovém programování: funkce náležející třídě se nazývá metoda procedury jako funkce, ale nic nevrací v jazyce C neexistují (vše je funkce) např. I/O instrukce, modifikace dat v paměti inlining – vkládání funkcí do kódu (rychlost)

Předávání parametrů hodnotou před vyvoláním výraz vyhodnocen a výsledek předán odkazem předáváme ukazatel nebo referenci na proměnnou jménem výraz se nevyhodnocuje, ale předá se celý převzato z matematických zápisů dnes to využívají makra

Koprogram poprvé v roce 1963 (anglicky „coroutine“) umožňují více vstupních bodů pozastavení a obnovení výpočtu v různých místech usnadňují využití multitaskingu nevyužívají zásobník příkaz yeld další volání → pokračuje se za yeld, ne od začátku částečná obdoba příkazu GOTO narušuje strukturované programování nicméně zjednodušuje zápis (ve spec. případech)

Metody objektově orientované programování podobné funkcím mohou pracovat s daty třídy nebo objektu z vnějšku nejsou viditelné tzv. zapouzdření (encapsulation) vyčleněné metody → rozhraní objektu je dovoleno s nimi pracovat i jiné objekty různé typy metod statické, konečné, abstraktní (virtuální), speciální přetěžování metod, modifikátory přístupu

Knihovní funkce soustředění funkcí do knihovny snaha o opakované použití kódu první úspěšný pokrok v Pascalu tzv. unity v jazyce C je standardní knihovna (libc) zjednodušuje jazyk, standardizuje šířeji jazyk nemusí být klíčová slova pro I/O apod. problém API, ABI, chyb v knihovních funkcích rozhraní se může měnit

Typy knihoven statické knihovny soubory s příponou .a knihovna se po překladu „přilepí“ k programu obstarává tzv. linker dynamické knihovny soubory s příponou .so (ve Windows DLL) program obsahuje jen seznam knihoven a funkcí při spuštění musí loader zavést též knihovnu bez knihovny program nefunguje knihovna v paměti sdílena mezi více procesy

Dynamic loading knihovna se zavádí až za běhu programu pomocí speciální funkce nezajišťuje OS, ale sám program rozhoduje programátor modularizace programů problém: co když se knihovna změní za běhu programu?