Vstup a výstup Ing. Lumír Návrat  katedra informatiky, A-1018  59 732 3252.

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Pro začátek něco lehčího
Programování v C jazyku - SEMINÁŘ
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Vstup a výstup doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Uživatelem definované typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
VISUAL BASIC Práce se soubory.
Algoritmy I. Cvičení č. 10.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
Programování v C++ Cvičení.
Algoritmy I Cvičení č. 3.
Programovací jazyk Haskell Ing. Lumír Návrat  katedra informatiky, A 1018 
Materiály k přednášce Úvod do programování Ondřej Čepek.
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
KIV/PPA1 cvičení 11 Cvičící: Pavel Bžoch. Osnova cvičení Souborový vstup a výstup Práce s textovými soubory.
Struktury, qsort, mergesort BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií.
Informatika I 3. přednáška
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
PRÁCE S PROUDY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Práce se soubory Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak ukládat data je použití databáze. Soubory se.
Současný svět Projekt č. CZ /3. 1
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Cvičení.
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,
Vstupy a výstupy znaků a) Terminálový vstup a výstup ( getchar(), putchar() ) Přečtěte znak pomocí systémové funkce getchar() a vypište ho pomocí putchar().
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
Abstraktní datové typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Příklady v jazyku C – část 4
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
C – cyklus while Mgr. Lenka Švancarová.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Napište program v C pro výpočet plochy obdélníka se stranami A=3 a B=2. Výsledek vytiskněte s patřičným komentářem na obrazovku formátovým příkazem printf.
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.
Programovací jazyk Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
KIV/PPA1 cvičení 9 Cvičící: Pavel Bžoch. Osnova cvičení Třída String a její metody –Řetězce a operace s nimi.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Problémy s češtinou České znaky se standardně nepovažují za alfanumerické znaky (\w) Vadí to při třídění vyhodnocování regulárních výrazů Je třeba použít.
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
Příklady v jazyku C – část 2
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Úvod do UNIXu (6th round)
Sed O co jde Regulární výrazy Příkazy Adresování Příklady Michal Trs,
Počítače a programování 2
Úvod do Pythonu – IO operace se soubory.
Výukový materiál zpracován v rámci projektu
Algoritmizace a programování
Jakub Brodský Ondřej Radosta
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
TNPW1 JavaScript Ing. Jiří Štěpánek.
Databázové systémy a SQL
Programovací jazyk Haskell
program TextovySoubor;
Opakování ze 3. cvičení deklarace proměnných výpis na monitor (výstup)
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Vstup a výstup Ing. Lumír Návrat  katedra informatiky, A-1018 

Motivace  Načtení čísla val :: Int val = 42 function :: Int -> Int function = val + n inputInt :: Int inputDiff = inputInt - inputInt

 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?") Motivace FLP - Vstup a výstup3 main rW = let rW’ = printAString rW "Please enter your name: " (rW’’,name) = readAString rW’ in printAString rW’ ("Hello, " ++ name ++ ", how are you?") Problém!!!

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

FLP - Vstup a výstup5 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)

FLP - Vstup a výstup6 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’)

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 IO a a IO b IO 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 ()

FLP - Vstup a výstup9 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 ()

FLP - Vstup a výstup10 Č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ýstup11 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)

FLP - Vstup a výstup12 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ýstup13 Zpracování výjimek  Generování výjimky – funkce fail fail :: IOError -> IO a  typ výsledku se přizpůsobí kontextu  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ýstup14 Čtení znaku + výjimky  S ignorováním všech výjimek getChar’ = getChar `catch` ( \ _ -> return ‘\n’ )  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ýstup15 Č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  Pokud se dostaneme na konec souboru, vracíme znak konce řádku  Ostatní výjimky se předávají dále

FLP - Vstup a výstup16 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 ()

FLP - Vstup a výstup17 Č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

FLP - Vstup a výstup18 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ýstup19 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 do putStr (“Open error\n”) opf prompt mode)

FLP - Vstup a výstup20 Ú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