Você está na página 1de 16

Programação Funcional

Capítulo 10
Números Aleatórios
Argumentos da Linha de Comando
Arquivos

José Romildo Malaquias

Departamento de Computação
Universidade Federal de Ouro Preto

1/16
1 Valores aleatórios

2 Argumentos da linha de comando

3 Arquivos

2/16
Tópicos

1 Valores aleatórios

2 Argumentos da linha de comando

3 Arquivos

3/16
Valores aleatórios

Para gerar um valor pseudo-aleatório em Haskell podemos usar o


módulo System.Random.
Atavés da classe Random é possível obter valores aleatórios de uma
variedade de tipos.
A função randomRIO:
randomRIO :: Random a => (a, a) -> IO a

Esta função recebe um par de valores (inf, sup) e resulta em uma


operação de E/S que, quando executada, obtém do sistema e retorna o
próximo valor aleatório do tipo a, uniformemente distribuído no intervalo
fechado [inf, sup].

4/16
Exemplo: lançamento de dados

lancadados.hs
module Main (main) where

import System.Random (randomRIO)

main :: IO ()
main =
do putStrLn "Lançamento de dois dados"
x <- randomRIO (1,6::Int)
y <- randomRIO (1,6::Int)
putStrLn ("Faces obtidas: " ++ show x ++ " e " ++ show y)

5/16
Exemplo: lançamento de dados (cont.)

Execução do programa:
$ ./lancadados
Lancamento de dois dados
Faces obtidas: 3 e 5

$ ./lancadados
Lancamento de dois dados
Faces obtidas: 4 e 1

6/16
Tópicos

1 Valores aleatórios

2 Argumentos da linha de comando

3 Arquivos

7/16
Argumentos da linha de comando

getArgs :: IO [String]

A ação de E/S getArgs (definida no módulo System.Environment),


quando executada, retorna uma lista formada pelos argumentos da linha
de comando do programa.
getProgName :: IO String

A ação de E/S getProgName (definida no módulo System.Environment),


quando executada, retorna o nome do programa.

8/16
Exemplo: argumentos do programa

args.hs
module Main (main) where

import System.Environment (getArgs, getProgName)

main =
do progName <- getProgName
putStrLn "The program name is:"
putStrLn progName
putStrLn ""
args <- getArgs
putStrLn "The arguments are:"
mapM putStrLn args

9/16
Exemplo: argumentos do programa (cont.)

Execução do programa:
$ ./args a b c -o test
The program name is:
args

The arguments are:


a
b
c
-o
test

10/16
Tópicos

1 Valores aleatórios

2 Argumentos da linha de comando

3 Arquivos

11/16
Arquivos

Haskell possui várias definições para lidar com arquivos.


type FilePath = String

Tipo usado para representar o caminho do arquivo, incluindo o seu nome.


readFile :: FilePath -> IO String

Lê o conteúdo de um arquivo como uma única string.


writeFile :: FilePath -> String -> IO ()

Escreve uma string em um arquivo.


appendFile :: FilePath -> String -> IO ()

Acrescenta uma string no final de um arquivo.

12/16
Exemplo: processar notas em arquivo

Criar um programa para ler de um arquivo os dados dos alunos de uma turma
– o código, o nome, a nota na primeira avaliação, a nota na segunda
avaliação – calcular a média aritmética das notas e determinar a situação de
cada aluno, gravando os resultados em outro arquivo.

13/16
Exemplo: processar notas em arquivo (cont.)

Arquivo de entrada:
1234 Pedro 1.5 1.7
1111 Carla 6.2 7.0
2121 Rafael 8.1 8.8
4321 Ivan 5.0 5.2

14/16
Exemplo: processar notas em arquivo (cont.)

Arquivo de saída:
1234 Pedro 1.5 1.7 1.6 reprovado
1111 Carla 6.2 7.0 6.6 exame especial
2121 Rafael 8.1 8.8 8.45 aprovado
4321 Ivan 5.0 5.2 5.1 exame especial

15/16
Fim

16/16

Você também pode gostar