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ý.
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
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ě.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
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
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.
doc. RNDr. Zdeněk Botek, CSc.
Visual Basic - 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
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
Překladače 6. Sémantická analýza
SOFTWARE Operační systémy.
Programování mikropočítačů Platforma Arduino
Moduly.
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čů
UNIX 10. Procesy © Milan Keršláger
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.
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ů
Překladače 3. Zápis programu
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.
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: 
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 13. 3. 2013 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 dělení problému na menší problémy menší problémy se snadněji řeší menší problémy lze řešit odděleně (i paralelně v týmu) před programováním proběhne rozbor řešení návrh algoritmu, datové struktury použitý programovací jazyk, knihovny, ...

Struktogram

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) lokální proměnné, využití v rekurzi, problém přetečení 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émy s knihovnami problém API změna funkcí či parametrů, které voláme problém ABI vytváří překladač důležitá je kompatibilita programu a užívaných knihoven v Linuxu se mění, ve Windows svázáno s verzí chyby v knihovních funkcích verzování knihoven (vnitřní údaj, vnější → jméno) aktualizace, patchlevel

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?