Input/Output em Haskell

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Haskell The Craft of Functional Programming Simom Thompson Capítulo 14
Programação em Java Prof. Maurício Braga
Um programa em C Bibliotecas Variáveis globais
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Shell Script Professor: João Paulo
Introdução à Computação - Jorge Macêdo
Introdução à Programação
Prof. Luis Otavio Alvares
LINGUAGEM C.
Introdução à Linguagem C
LINGUAGEM ESTRUTURADA TURBO C
Universidade Federal do Espírito Santo
PROGRAMAÇÃO ou LINGUAGEM C?
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
PROGRAMAÇÃO ou LINGUAGEM C?
Apresentação da linguagem Python
Vetores, Matrizes e Funções
Linguagem C Estruturas de Seleção.
Linguagem C Strings.
Linguagem C Estruturas de Sequências
Estruturas de Decisão Permitir testes para decidir acções alternativas: if if - else switch (?:) Operador Condicional MF.
Revisão da Linguagem C.
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
CAPÍTULO 05 Listas.
Unidade I: “Dê um mergulho rápido”
PROGRAMAÇÃO ESTRUTURADA II
Denise Guliato Faculdade de Computação – UFU
Tipos Abstratos de Dados
1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa.
Programação II Estruturas de Dados Aula 02 - continuação
Seminário 1: Revisão de C
DAVID ANDERSON CARDOSO DANTAS
Denise Guliato Faculdade de Computação – UFU
Programação de Computadores
Haskell Programação Funcional
Centro de Informática – UFPE
Computação Eletrônica
Programação em C++ Compiladores
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
Técnicas de Programação I Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Introdução à programaçao em PERL Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
3. Introdução à Linguagem C
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Introdução à Linguagem C
Programação Funcional
Prof. Alessandro Gonçalves
Revisão Luis Antonio Tavares
Programação de Computadores I – Arquivos
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Programação Funcional 9a. Seção de Slides Entradas e Saídas, Sequência de Ações em Haskell (Estudo de Casos)
Funções como Valor ©André Santos e Marcelo d’Amorim.
Haskell Programação Funcional Diego Lima Rubem Moreira.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Algoritmo e Programação
Profa. Maria Augusta Constante Puget
Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
JAVASCRIPT Programação Web. O que é  E uma linguagem interpretada que e executada na maquina do cliente  Não esta associada ao framework java  Não.
Linguaguem de Programação II
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Recursividade, Entrada pelo teclado e Funções com retorno Dilvan Moreira.
Transcrição da apresentação:

Input/Output em Haskell

O tipo IO t As expressões do tipo IO t irão realizar alguma operação de entrada/saída e retornarão um valor do tipo t. getLine :: IO String Lê uma linha da entrada. putStr :: String -> IO () Escreve uma String na tela. O resultado desta interação tem tipo ( ), que é uma tupla vazia. Neste caso significa dizer que a função não retorna nenhum resultado interessante, apenas faz I/O.

O tipo IO t getChar :: IO Char Lê um caracter do teclado. putStrLn :: String -> IO () É um caso especial da função putStr, que insere um enter no final.

A operação ‘then’ (>>=) :: IO t -> (t -> IO u) -> IO u A operação ‘then’, simbolizada por >>= dá seqüência a duas operações, uma após a outra. (>>=) :: IO t -> (t -> IO u) -> IO u Esta operação combina um IO t com uma função que pega o resultado dessa expressão (do tipo t) e retorna algo de tipo IO u. IO t t u IO Nós podemos combinar as expressões, passando o resultado da primeira como primeiro argumento da segunda. IO t u IO u

Exemplo main :: IO() main = putStr "Digite seu nome:" >> getLine >>= \ st -> putStr "O seu nome ao contrario e':" >> putStr (reverse st)

Outras Iterações return :: t -> IO t Simplesmente retorna um valor do tipo IO t (converte do tipo t para o tipo IO t). (>>) :: IO t -> IO u -> IO u igual ao >>=, mas ignora o resultado da primeira para a segunda interação.

As funções de iteração do tipo IO t getLine :: IO String getChar :: IO Char putStr :: String -> IO () putStrLn :: String -> IO () (>>=) :: IO t -> (t -> IO u) -> IO u] (>>) :: IO t -> -> IO u -> IO u return :: t -> IO t

Arquivos type NomeArquivo = String Leitura de arquivos: type NomeArquivo = String readFile :: NomeArquivo -> IO String Escrever em arquivos: writeFile :: NomeArquivo -> String -> IO ()

Exemplo main :: IO () main = putStrLn ”Escrevendo no arquivo teste.txt" >> writeFile "teste.txt" (listIntToString [4,5,11,23]) >> putStrLn ”Lendo o arquivo teste.txt" >> readFile "teste.txt" >>= \x -> -- x e’ uma string! putStrLn x >> putStrLn ”Soma da lista do arquivo teste.txt e’:" >> putStrLn (show (sum (stringToListInt x))) listIntToString :: [Int] -> String listIntToString [] = "F" -- fim! listIntToString (x:xs) = show x ++ " " ++ listIntToString xs

Continuação... stringToListInt :: String -> [Int] stringToListInt "F" = [] stringToListInt xs = [(stringToInt 0 (takeWhile (/= ' ') xs))] ++(stringToListInt (tail (dropWhile (/= ' ') xs))) -- o tail acima tira o espaco em branco entre os inteiros. -- senao o programa entra em loop! stringToInt :: Int -> String -> Int stringToInt accum [] = accum stringToInt accum (x:xs) = stringToInt (accum*10 + ord x - ord '0') xs

Exemplo de Projeto doisJog :: Window -> Tabuleiro -> Vez -> IO () doisJog w tb v = clearWindow w >> draw w (overMany ((quadrados w tb 120) ++ divisoes ++ tabuleiro ++ botaoSair ++ botaoNovo ++ background)) >> mostraVez w v >> casaEscolhida w tb >>= \ casa -> verClique casa >>= \ click -> case click of "S" -> closeWindow w "N" -> main

Continuação _ -> if (coordValida casa tb) then marca w casa v >> colocaPeca1 casa tb v >>= \ newtab -> if (perdeu v newtab) then if v==Vermelha then fim w "O vermelho ganhou!" else fim w "O cinza ganhou!" doisJog w newtab (trocaVez v) doisJog w tb v