Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Podobné dokumenty
Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Soubor jako posloupnost bytů

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

- jak udělat konstantu long int: L long velka = 78L;

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Práce se soubory. Základy programování 2 Tomáš Kühr

Programovací jazyk Haskell

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Parsování v Haskellu, knihovna Parsec

Funkcionální programování. Kristýna Kaslová

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

IB015 Neimperativní programování. Seznamy, Typy a Rekurze. Jiří Barnat Libor Škarvada

PROGRAMOVÁNÍ V SHELLU

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Šifrování/Dešifrování s použitím hesla

Standardní algoritmy vyhledávací.

KTE / ZPE Informační technologie

Implementace LL(1) překladů

Základy programování (IZP)

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Základy programování (IZP)

Vstup a výstup datové proudy v C

Úvod do programování - Java. Cvičení č.4

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

VISUAL BASIC. Práce se soubory

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programovací í jazyk Haskell

Zápis programu v jazyce C#

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

6. Příkazy a řídící struktury v Javě

1. Téma 12 - Textové soubory a výjimky

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Základy PERLu snadno a rychle

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

10 Algoritmizace Příklad 2 Word 2007/ VBA

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Textové soubory. alg9 1

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Programovací jazyk Pascal

Konečný automat. Jan Kybic.

Prostory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...

Algoritmizace a programování

Úvod do programování 6. hodina

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Konstruktory a destruktory

Základy programování (IZP)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programování v Pythonu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Operační systémy. Cvičení 4: Programování v C pod Unixem

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Algoritmus. Algoritmus je posloupnost kroků, které jsou potřeba k vyřešení problému.

Basic256 - úvod do programování Příklady. ing. petr polách

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. November 16, 2017

První kapitola úvod do problematiky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Vstupní a vstupní proudy v C++

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Práce se soubory. Úvod do programování 2 Tomáš Kühr

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Úvod do programovacích jazyků (Java)

Programování v C++ 1, 5. cvičení

Úvod do programovacích jazyků (Java)

Programy v prostředí operačního systému

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Úvod do Operačních Systémů

17. Projekt Trojúhelníky

Datové struktury. alg12 1

C2110 Operační systém UNIX a základy programování

Programování v Javě I. Leden 2008

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++

Proměnné a parametry. predn_08.odt :00:38 1

Konstruktory překladačů

Jazyk C++, některá rozšíření oproti C

Programování v Javě I. Únor 2009

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

11b Další příklady operací vstupu a výstupu (úvod viz 10)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Standardní vstup a výstup

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Transkript:

Motivace Vstup a výstup Ing. Lumír Návrat katedra informatiky, A-1018 59 732 3252 Načtení čísla val :: Int val = 42 function :: Int -> Int function = val + n inputint :: Int inputdiff = inputint - inputint Motivace Komunikace s okolním světem printastring :: RealWorld -> String -> RealWorld readastring :: RealWorld -> (RealWorld, String) main rw = let rw = printastring rw "Please enter your name: " (rw,name) = readastring rw in printastring rw ("Hello, " ++ name ++ ", how are you?") Minimální komunikace Zobrazení řetězce na obrazovku Načtení řetězce z klávesnice Zápis dat do souboru Načtení dat ze souboru => v Haskellu modul IO.hs Problém!!! FLP - Vstup a výstup 3

Akce ve funkcionálním programu Imperativní jazyky program tvořen posloupností akcí čtení a nastavování globálních proměnných čtení a zápis souborů Haskell oddělení akcí od čistě funkcionálního kódu monadické operátory akce je funkce, jejíž výsledek je typu (IO a) Příklady akcí Čtení a výpis znaku getchar :: IO Char putchar :: Char -> IO () Převod hodnoty na akci return :: a -> IO a Test odpovědi y/n posloupnost akcí ready :: IO Bool ready = do c <- getchar return (c == y ) FLP - Vstup a výstup 5 FLP - Vstup a výstup 6 do Notace Flexibilní mechanismus podporující Sekvenční přístup k I/O programům Zachycování hodnot vrácených z IO akcí a předání do akcí následujících v programu Základem je operace (>>=) (>>=) :: IO a -> (a-> IO b) -> IO b Cyklus while Požadavek opakování IO operací while :: IO Bool -> IO () -> IO () while test action = do res <- test if res then do action while test action else return () IO a a IO b IO IO b

Funkce main Představuje hlavní program Akce, která nic nevrací: main :: IO () main = do c <- getchar putchar c 1. Přečte znak a uloží do proměnné c 2. vypíše znak c 3. Vrátí výsledek poslední akce IO () Čtení řádku textu 1. Přečteme první znak. 2. Je-li to konec řádku, vrátíme prázdný řetězec. 3. Jinak přečteme zbytek řádku, spojíme s prvním znakem a vrátíme getline :: IO String getline = do x <- getchar if x== \n then return else do xs <- getline return (x:xs) FLP - Vstup a výstup 9 FLP - Vstup a výstup 10 Výpis řetězce Na všechny znaky řetězce zavoláme funkci putchar, např. map putchar xs Výsledkem je seznam akcí map :: (a -> b) -> [a] -> [b] putchar :: Char -> IO () map putchar s :: [IO ()] Převod na jedinou akci sequence :: [IO()] -> IO () putstr :: String -> IO () putstr s = sequence (map putchar s) Zpracování výjimek Výjimky jsou instance abstraktní třídy IOError Ke každé výjimce XXX existuje funkce isxxx :: IOError -> Bool iseoferror isdoesnotexisterror FLP - Vstup a výstup 11 FLP - Vstup a výstup 12

Zpracování výjimek Generování výjimky funkce fail fail :: IOError -> IO a typ výsledku se přizpůsobí kontextu Čtení znaku + výjimky S ignorováním všech výjimek getchar = getchar `catch` ( \ _ -> return \n ) Zachycení výjimky - funkce catch: catch :: IO a -> (IOError -> IO a) -> IO a 1. prováděná akce 2. obsluha výjimky zavolá se, pokud nastane výjimka; vrátí náhradní výsledek 3. výsledkem je akce z bodu 1 nebo 2 FLP - Vstup a výstup 13 nastane-li chyba (např. konec souboru), vrátí znak konce řádku nerozliší konec souboru od ostatních chyb použití `catch` jako infixového operátoru FLP - Vstup a výstup 14 Čtení znaku + výjimky S rozlišením konce souboru getchar = getchar `catch` eofhandler where eofhandler e = if iseoferror e then return \n else fail e Otevření a uzavření souboru type FilePath = String data IOMode = ReadMode WriteMode AppendMode ReadWriteMode data Handle openfile :: FilePath -> IOMode -> IO Handle hclose :: Handle -> IO () Pokud se dostaneme na konec souboru, vracíme znak konce řádku Ostatní výjimky se předávají dále FLP - Vstup a výstup 15 FLP - Vstup a výstup 16

Čtení ze souboru stdin, stdout, stderr :: Handle hgetchar :: Handle -> IO Char getchar = hgetchar stdin funkce začínající na h dostávají jako první parametr referenci na otevřený soubor, ostatní pracují se standardními soubory hgetcontents :: Handle -> String přečte celý obsah souboru líné vyhodnocení vstup se požaduje až při požadavku na konkrétní hodnotu Příklad import IO main = do hin <- opf From: ReadMode hout <- opf To: WriteMode contents <- hgetcontents hin hputstr hout contents hclose hout putstr Done. opf :: String -> IOMode -> IO Handle opf prompt mode = do putstr prompt name <- getline openfile name mode FLP - Vstup a výstup 17 FLP - Vstup a výstup 18 Příklad Funkce opf se zeptá na jméno souboru a otevře ho v zadaném režimu Pokud se otevření nepodaří, vznikne výjimka opf prompt mode = do putstr prompt name <- getline catch (openfile name mode) (\_ -> do putstr ( Open error\n ) opf prompt mode) Úkol pro cvičení Vytvořte program, který opíše soubor na standardní výstup s očíslovanými řádky. 1) Převod textu na seznam řádků text2lines :: String -> [String] 2) Očíslování řádků numbering :: [String] -> [String] 3) Převod seznamu řádků na text lines2text :: [String] -> String (lines2text. numbering. text2lines) contents FLP - Vstup a výstup 19 FLP - Vstup a výstup 20