1 / 28

Operační systémy jednouživatelské, jednoúlohové - MS DOS (výjimka pro PRINT)

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 (Linux). Unix. Koncepce systému (převážně v C jazyku) - jádro

iliana
Download Presentation

Operační systémy jednouživatelské, jednoúlohové - MS DOS (výjimka pro PRINT)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 (Linux)

  2. Unix • Koncepce systému (převážně v C jazyku) • - jádro • - služby (mail, ftp, telnet, X11, nfs, gopher, vi, tex) - dnes i v jiných operačních systémech • login, logout (Ctrl D)

  3. Příkazy Unixu • man - nápověda k příkazům, • cp - kopírování souborů, • cd, • mkdir, • rmdir, • ls - výpis obsahu adresáře, • ps - výpis běžících procesů, • kill - zrušení procesu, • chown - změna vlastníka souboru • passwd • who

  4. Systém souborů Unixu • Součástí jména souboru může být i tečka, malá, velká písmena • jedna adresářová struktura - svazek příkaz mount • vlastník souboru může patřit do skupiny vlastníků • právo zápisu i mazání (w - write) • právo čtení (r - read) • právo spouštění (x - execute) (otvírání adresáře) • nastavení sobě, skupině, ostatním • práva rwx r-x r-- (754) (111 101 100) - vlastník čtení, zápis, spouštění (rwx), skupina čtení, spouštění (r-x), ostatní čtení (r--)

  5. Základní struktura svazku • kořenový adresář /, obsahuje podadresáře • - /bin - adresář s programy (příkazy) OS • - /dev adresář s ovladači periferních zařízení • - /usr - adresář s uživatelským software • - /home adresář pro domácí adresáře uživatelů • Administrace systému Unix • jeden správce systému - root • mount propojení cizích adresářů nebo zařízení do adresářového stromu místního systému • unmount - odpojení • shutdown ukončení práce operačního systému

  6. Základy programování a programovací jazyky • vývoj software pro tzv. běžného uživatele (např. program pro účetnictví) a s jejichž produkty se můžeme setkat v obchodech s výpočetní technikou. • software přímo na míru zákazníkovi, software specializovaný na konkrétní problém, např. bankovní systém, řídící a monitorovací systém teplárny, řídící systém velké firmy atd. • Na komerčních aplikacích se dnes podílí celý tým programátorů pod vedením vedoucího projektu. Každý přitom vyvíjí určitou část aplikace. Prvky programu vytvořené programátory zvlášť umožňují tzv. strukturalizaci programu. Zvlášť vytvořené části mohou být buď podprogramy, makra, nebo jsou dodávané ve formě tzv. standardních knihoven, nebo jsou součástí určitých programovacích jazyků. • Mění se zejména metodika návrhu programů. Doposud nejčastěji používaná technologie strukturovaného programování, která na dlouhou dobu ovlivnila programovou tvorbu se zaměřuje hlavně na funkční rozklad, dekompozici úlohy. V současné době rychle se šířící objektově orientované programování začíná od datových struktur s nimiž má program manipulovat.

  7. Postup při tvorbě programu • Při tvorbě softwaru lze rozlišit následující jednotlivé kroky: • formulace úlohy • záznam algoritmu na disk • překlad zdrojového programu • spojování (sestavování) • zkušební provoz programu • tvorba dokumentace • rutinní provoz a údržba programu

  8. Formulace úlohy - požadavek na její funkci, algoritmizace • analýza problému a na jejím základě projekt. Při analýze se stanoví: • cíl řešení, tj. požadované výstupní informace, jejich struktura a formát • vstupní data, ze kterých budou výstupy odvozeny, jejich struktura, formát a množiny přípustných hodnot • specifikují se výjimečné situace a reakce na ně (např. ošetření chyb ve vstupních datech) • navrhne se hrubý algoritmu řešení, v případě složitějšího problému jeho dekompozice na problémy dílčí • Algoritmus - definice, vlastnosti, způsoby záznamu • Algoritmus je úplný a přesný předpis konečného počtu kroků, které vedou od měnitelných vstupních údajů k požadovaným výsledkům. Je třeba vždy rozlišovat dva aspekty - data, která algoritmus zpracovává a operace s nimi. Algoritmus by měl splňovat následující tři klasicky uváděné vlastnosti: • hromadnost - tj. platnost pro celou třídu úloh stejného typu, lišících se vstupními údaji • rezultativnost - pro přípustné vstupní údaje a po určitém počtu kroků se vždy dospěje k výsledku • determinovanost - v každém bodě úlohy musí být vždy jasný další postup

  9. Způsoby vyjádření algoritmu: • slovní vyjádření postupu řešení • grafické vyjádření • Graficky se algoritmus řešení vyjadřuje např. formou vývojových diagramů, které používají určitých značek pro základní typy příkazů. Do značek se slovně nebo symbolicky zapisují požadované operace. Vývojové diagramy mohou být hrubé nebo podrobné. • Jiný způsobgrafického záznamu algoritmu jsou tzv. HIPO diagramy (Hierarchy plus Input-Process-Output) IBM,  formalizuje projektování a dokumentaci rozsáhlejších programových systémů. • rozhodovací tabulky - pro úlohy s velkým počtem podmínek (rozhodování) • strojový kód - strojové instrukce konkrétního procesoru • pseudokód - abstraktní jazyk, který má podobnou syntaxi příkazů jako vyšší programovací jazyk, syntaxe může být i volnější podle potřeby uživatele, snadno se pak přepisuje do konkrétního vyššího jazyka • programovací jazyk - program zapsaný v této podobě se nazývá zdrojový program (source program)

  10. Záznam algoritmu na disk • Druhým krokem je záznam algoritmu řešení - ve vhodném programovacím jazyce - a jeho zápis prostřednictvím editoru na disk. Jak už bylo řečeno vzniká zdrojový program (angl. source program, synonyma: zdrojový text, zdrojový kód) • Překlad zdrojového programu, překladače • Po překladu zdrojového progamu překladačem příslušného jazyka, vzniká tzv. relativní modul (object program), kde ještě není definitivně rozhodnuto o jeho umístění v paměti. • Při překladu se vypisují zjištěné syntaktické chyby v programu, které je nutné opravit. Proces, při kterém odstraňujeme chyby se nazývá ladění programu. • Jsou dva typy překladačů - kompilátory a interprety.

  11. Kompilátor přeloží celý program najednou, po odstranění chyb je pak cílový program k dispozici. Obtížnější je v takovém případě provádění oprav - znovu za pomoci textového editoru, znovu překlad. • Překlad je obvykle několikaprůchodový. Při prvním průchodu se program analyzuje,a to jak lexikálně, tak sémanticky. Ve druhém průchodu následuje optimalizace vzniklého mezikódu, ve třetím průchodu se generuje cílový program - object program - který nelze obvykle hned spustit (relativní modul). Zpracovává se dále programem Linker, který umožňuje spolupráci s knihovnami a umisťuje program do paměti - viz dále spojování. Při zavedení programu se musí již spolupracovat s operačním systémem počítače. • Interpret překládá zdrojový program při každém jeho použití (spuštění). Je v operační paměti současně s prováděným zdrojovým programem. Každá instrukce je po přeložení provedena. Provádění interpretovaného programu trvá déle. Výhody interpretu jsou zřejmé při opravování chyb. Nejčastěji interpretovaným jazykem je Basic.

  12. Spojování • Spojováním (angl. link, synonyma: sestavování, linkování) přeloženého modulu s dalšími moduly z programové knihovny, vzniká  absolutní modul schopný spuštění • Zkušební provoz programu • Zkušební provoz probíhá nejdříve na testovacích datech. U složitějších programových balíků (systémů) obvykle softwarové firmy nechávají svým uživatelům otestovat tzv. beta verzi programu a vezmou v úvahu jejich připomínky. • Tvorba dokumentace • Součástí programu je i dokumentace, která  může být technická (popis funkcí programu) nebo uživatelská (manuál, návod jak program používat). Součástí aplikačního programu je i rozsáhlý soubor nápovědy (helpu). Potom je aplikace nahrána na instalační diskety nebo vypálena do instalačního CD. • Rutinní provoz a údržba programu

  13. Vývoj programovacích jazyků • Programovací jazyky se dělí z hlediska vývoje na: • strojový kód • jazyky nižší úrovně, tzv. strojově orientované jazyky • jazyky vyšší úrovně, problémově orientované jazyky. • objektově orientované jazyky • Někdy se tyto jazyky zařazují do tzv. generací s intervalem obměny asi deset let. První generace programování ve strojových kódech, druhá generace programovací jazyky vyšší úrovně jako Fortran, Cobol. Třetí generace další rozvoj jazyků vyšší úrovně a zavedení koncepce stukturovaného programování, abstraktních typů dat (viz kapitola o datových strukturách), atd. Současnost objektově orientované jazyky, práce s bázemi znalostí, představuje čtvrtou generaci jazyků - 4GL.

  14. Strojový kód • Instrukce programu zapsaného ve strojovém kódu jsou numericky kódované, tvoří je posloupnosti nul a jedniček. • Programování ve strojovém kódu vyžaduje takřka detailní znalost daného hardwaru, se kterým je spjat. Obtížně se hledají chyby. Přesto se v něm programuje,a to zejména ty části programu, které vyžadují rychlost. Uplatňuje se při tvorbě ovladačů, rezidentních programů, procedur ovládajících grafiku. • Jazyky nižší úrovně, tzv. strojově orientované jazyky (jazyky symbolických adres). • Je zde již symbolický kódovací systém - instrukce jsou vyjádřeny zkratkami a adresy nahrazeny symboly. Instrukce se pořád ještě rovnají strojovým instrukcím. Příkladem jsou tzv. assemblery. Každý procesor má v podstatě svůj vlastní assembler. Programování v něm je pomalé a vyžaduje též detailní znalost mikroprocesoru. Assemblery se používají při návrhu hardware počítače pro napsání základního ovládacího programu.

  15. Jazyky vyšší úrovně, problémově orientované jazyky. • Jsou méně závislé na technických vlastnostech mikroprocesoru. Tyto vyšší jazyky umožnily tzv. programovou kompatibilitu, přenositelnost programů a jejich nezávislost na konkrétním počítači. Je možné je dále rozdělit na skupiny: • jazyky pro vědecko technické výpočty - typickým zástupcem je Fortran, ve kterém je naprogramována spousta technických úloh • jazyky pro zpracování hromadných dat - pro rozsáhlé mzdové, skladové a jiné agendy např. programovací jazyk Cobol • univerzální jazyky, používané i pro systémové programování - jsou v nich programovány operační systémy, např. Pascal, C jazyk (je v něm programován systém UNIX)

  16. Objektově orientované jazyky • Jsou to jazyky nové generace používané v oblasti umělé inteligence (expertní systémy) - Smalltalk, Lisp, předchůdce těchto jazyků Simula. • Objektově orientované programování mění dosavadní obvyklý způsob návrhu programu. Data a procedury (tj. množina operací, které lze s daty provádět) jsou reprezentovány ve struktuře zvané objekt. Data se nazývají atributy, procedury jsou operace nebo metody. Metody objektů jsou obdobou procedur procedurálního jazyka. Řídí způsob jednání objektu. Data jsou přístupná pouze prostřednictvím procedur z odpovídajícího objektu (ukrytí dat - zapouzdření). Objekty mezi sebou komunikují tím, že si posílají zprávy. Program lze chápat jako posloupnost zasílání zpráv mezi objekty. Programátor si vytvoří katalogy (knihovny) objektů, neboť jednou vytvořený objekt je mnohonásobně použitelný (tzv. softwarové čipy). Programový systém je možné měnit a doplňovat i za chodu. Objekty spadají na základě podobných vlastností do hierarchických skupin - tříd. Objekt je tzv. instance, konkrétní výskyt třídy. Uvnitř hierarchie tříd dědí podtřída metody a proměnné nadtřídy. • Při řešení problému tímto způsobem se začíná od dat - datových struktur, se kterými se bude manipulovat. Jde tedy o dekompozici dat, nikoliv o dekompozici funkcí, jak bývá zvykem v procedurálním programování.

  17. Objektově orientované programování pracuje s pojmy jako je: třída, hierarchie tříd, dědičnost vlastností, polymorfismus atd. • Styk s uživatelem je založený na grafice, oknech, ikonách a práci s myší (tzv. GUI - graphic user interface). • Kdekoliv na síti mohou existovat tzv. distribuované objekty, o kterých nemusíme vědět kde se nacházejí, pod jakým systémem jsou provozovány, ani jaký jazyk byl použit pro jejich implementaci. Klient (rozumí se tím klientský program) k nim přistupuje na základě volání metod z jejich rozhraní, které nabízí seznam služeb poskytovaných objektem. Program pak je možné sestavovat z takovýchto komponent, které v podstatě nemusí být kompletní aplikace. Mají přesně definované rozhraní oddělené od vlastní implementace, tj. od způsobu jak realizují své služby. • Aby takové komponenty mohly spolupracovat, je třeba při jejich tvorbě dodržovat určitá pravidla - standardy (normy). Je možné vysledovat určitou analogii se způsobem výroby počítačů - čipy. • Objektová orientace pronikla i do databází. Místo záznamů do nich ukládáme objekty, které obsahují data, podobně jako záznamy. Databázové systémy mají objektově orientovaný jazyk. Do objektové databáze můžeme uložit instanci (výskyt) kteréhokoliv typu odvozeného od určité třídy (vztah předek - potomek), třeba i třídy, která v době vytvoření databáze ještě neexistovala.

  18. Procedurální a neprocedurální jazyky • Jiné možné dělení programovacích jazyků je na jazyky procedurální a neprocedurální. • Procedurální (imperativní) jazyk má prostředky, příkazy, pro zápis postupu "jak" řešit úlohu. Sem patří Fortran, Cobol, Pascal, Basic. Program musí stanovit jaká akce se má provést (sečítání, výmaz, přesun), dále je určeno pořadí těchto instrukcí, ve kterém se předávají procesoru k provedení a program musí obsahovat též adresy dat, která se mají zpracovat. • Neprocedurální jazyky mají tuto procedurální stránku skrytou v překladači. Řadí se sem Lisp, Prolog, Smalltalk, ale i dotazovací jazyky používané v databázových systémech pro výběr požadovaných vět z databáze. Dotazovací jazyk je např. SQL (Structured Query Language). V těchto jazycích specifikujeme "co" chceme řešit, nikoliv způsob "jak" se bude problém řešit. Cílem neprocedurálního programování je zařazovat do programu co nejméně instrukcí a nechat jich co nejvíce generovat systémovými programy.

  19. BASIC prošel velkým vývojem, od verzí pro osmibitové počítače až po mocný objektově orientovaný jazyk, který dnes Microsoft implementuje do svých aplikací, jako je Word nebo Access (Visual Basic for Application). • Pascal byl navržen jako jazyk pro výuku programování. Dnes z něho firma Borland udělala jazyk vhodný jak pro výuku, tak pro vývoj profesionálních aplikací. Stal se z něho vývojem též objektový jazyk s rozsáhlými knihovnami. Byly do něj implementovány Turbo Vision, což jsou zjednodušeně řečeno, jakási dosovská okna. • C jazyk několik implementací tohoto jazyka: • C++ firmy Borland, verze C++ 5.0, je to celý integrovaný balík, který obsahuje část určenou pro vývoj internetovských aplikací v jazyce JAVA. • Visual C++ firmy Microsoft - pro vývoj Windowsovských aplikací včetně visuálního programování, které umožňuje rychlý vývoj aplikací. • JAVA vznikla v Sun Microsystem. Je to objektově orientovaný jazyk pro vývoj aplikací pro Internet. Vychází z C jazyka. Je platformově nezávislá. Přeloží se do mezikódu nezávislého na stroji, ten se dopraví po Internetu do počítače uživatele a zde se teprve přeloží. Uživatel Javy musí mít interpret Javy závislý na platformě, kterou používá. Moduly Java - tzv. applety - se provedou uvnitř prohlížeče. Program Java je objekt, který se skládá opět z objektů

  20. Zásady strukturovaného programování • Program má být srozumitelný a modifikovatelný, k čemuž přispívá dodržování následujících zásad: • 1. Při návrhu programu se postupuje "shora dolů" tj. od nejabstraktnější hladiny, bereme-li v úvahu funkci budoucího programu. Následuje dekompozice na části a jejich další dílčí části (moduly). klasické procedurální programování. • 2. Moduly, ze kterých je program sestaven, jsou relativně samostatné. Jsou propojeny tím, že se navzájem volají (jako celky) a předávají si data. Odpovídají jim podprogramy. Různé jazyky mají různé možnosti jak moduly tvořit. Do podprogramu nelze vstupovat na více místech, platí zásada jediného vstupu a jediného výstupu. • 3. Moduly mají hierarchickou strukturu a platí, že modul vyšší úrovně by měl volat jen moduly nižších úrovní. Po provedení funkce volaného modulu pokračuje v činnosti modul volající (např. hlavní program). • 4. Je snaha vyhýbat se příkazům skoku, které zvyšují nepřehlednost programu. • 5.zápis programu = jen určité konstrukce, tzv. řídící struktury, tři základní typy strukturovaných příkazů, pomocí nichž lze zapsat každý program: sekvence, větvení a cyklus. Každý z nich může být složen opět z jiných těchto základních struktur

  21. Řídící struktury, jejich grafické vyjádření a zápis v pseudokódusekvence příkazů • Každá struktura může být dále složena ze základních struktur. • a, b, c reprezentuje příkazy, které mohou být i složené

  22. větvení úplné • IF podmínka • THEN • a • ELSE • b • ENDIF

  23. Klíčová slova jazyka jsou zapsána velkými písmeny. Tzv. odsazování umožňuje lepší průhlednost příkazu. • Podmínky se zapisují jako relační výrazy, kdy se porovnávají dvě číselné hodnoty a výsledkem je hodnota logická, nebo jako logické výrazy kdy se pracuje čistě jen s logickými hodnotami (pravda, nepravda). • Příklad relačního výrazu: A>B, A>=150 a další možné 4 typy porovnávání vyjádřené znaménky <, <=, =, <> (nerovno). • V logických výrazech se kromě uvedených relačních operací, které mají též logickou hodnotu, používají operace jako logický součin, logický součet a negace. Podmínky se tedy mohou v těchto výrazech skládat a lze testovat zda platí zároveň(součin) nebo alespoň jedna z nich (součet).

  24. větvení neúplné • IF podmínka • THEN • a • ENDIF

  25. přepínač (vícenásobné větvení) • DO CASE • CASE K=1 • a • CASE K=2 • b • CASE...... • .......... • ENDCASE

  26. cykly - cyklus řízený podmínkou, která  se testuje před případným opakováním příkazů cyklu • DOWHILE podmínka • a • ENDDO

  27. - cyklus řízený podmínkou, která se testuje až po prvním provedení ( a případně každém dalším provedení) příkazů a v cyklu • DOUNTIL podmínka • a • ENDDO

  28. cyklus řízený tzv. indexem (řídící proměnnou cyklu) • DO I=J TO K BY L • a • ENDDO • I řídící proměnná  cyklu • J dolní mez (počáteční hodnota řídící proměnné) • K horní mez (konečná hodnota řídící proměnné, pro kterou se ještě příkazy provedou) • L krok, tj. hodnota, o kterou se automaticky zvyšuje řídící proměnná  po každém opakování příkazů a • Zde je předem známý počet průchodů cyklem, počet opakování příkazu (příkazů) a.

More Related