Haskell Paralelo (e entrada e saída de dados)
|
|
- Emanuel Furtado Mangueira
- 6 Há anos
- Visualizações:
Transcrição
1 Haskell Paralelo (e entrada e saída de dados) Prof. Fabrício Olivetti de França Universidade Federal do ABC
2 Entrada e Saída de dados
3 Imprimindo na tela Nós já conhecemos o comando print, que imprime qualquer valor na tela. Um comando menos genérico é o putstrln.
4 GHCI Imprimindo na tela Prelude> :t putstrln putstrln :: String -> IO () Ele recebe uma String e retorna um IO ()?
5 Imprimindo na tela IO é o envelope da classe de entrada e saída de dados (Point, Just, ). () representa uma unit, ou uma tupla sem elementos. Vamos convencionar que IO é uma ação e IO () é uma ação que é executada e não retorna nada.
6 Imprimindo na tela Da mesma forma temos a função getline. main = do putstrln "Please enter your name:" name <- getline putstrln ("Hello, " ++ name ++ ", how are you?") Ela espera por uma ação do usuário e armazena em name.
7 GHCI Imprimindo na tela Prelude> :t getline getline :: IO String Diferente do que vimos até então, ela não recebe parâmetros de entrada, apenas retorna uma String envolvida em IO.
8 Ações Essas funções que recebem ou retornam IO são chamadas de ações pois queremos que sejam executadas no instante em que a chamamos. O retorno de um IO não pode ser previsto em tempo de compilação, não sabemos o que vai acontecer.
9 Ações Considere a sequência: x <- getline y <- getline e: x = 13 y = 15
10 Ações Na segunda sequência, não importa a ordem de operação, mas na primeira a ordem importa. O operador <- executa a ação naquele instante, garantindo a coerência do programa, e remove o envelope da ação.
11 Blocos "do" Toda vez que precisamos executar sequências de operações (de modo imperativo), utilizamos um bloco do: do nome <- getline putstrln nome
12 Blocos "do" O bloco do não pode terminar com uma operação <-, pois deve terminar com uma instrução pura. do nome <- getline putstrln nome
13 Purificando Não se esqueça de que, se formos utilizar os valores provenientes do envelope IO, temos que purificá-los! do linha <- getline let x = read linha :: Integer -- converte em int, se possível print (funcaopura x)
14 Lendo arquivos Imagine o seguinte arquivo de dados, exemplodata.txt:
15 Lendo arquivos Queremos ler seu conteúdo e transformar em uma lista de listas: [ [1.2, 3.5, 2.3], [4.1, 2.1, 3.4], ]
16 Lendo arquivos readfile :: FilePath -> IO String Lê o arquivo em FilePath e retorna ele como string (envolvido em um IO). file <- readfile "arquivo" file se torna uma String com o conteúdo do arquivo.
17 Lendo arquivos Vamos criar uma função parsefile que fará a conversão, a assinatura dela deve ser: parsefile :: String -> [Double]
18 Lendo arquivos Queremos que cada linha do arquivo seja uma lista de Doubles: parsefile :: String -> [Double] parsefile file = map parseline (lines file)
19 GHC Lendo arquivos A função parseline converte cada palavra da linha em um Double: parsefile :: String -> [Double] parsefile file = map parseline (lines file) where parseline l = map todouble (words l) todouble w = read w :: Double
20 Avaliação preguiçosa
21 Quero evitar a fadiga Vamos verificar como a avaliação preguiçosa funciona no Haskell. Para isso utilizaremos a função sprint no ghci que mostra o estado atual da variável.
22 GHCI Quero evitar a fadiga Prelude> :set -XMonomorphismRestriction Prelude> x = Prelude> :sprint x x = _
23 GHCI Quero evitar a fadiga Prelude> x = Prelude> :sprint x x = _ Prelude> x 3 Prelude> :sprint x x = 3
24 Quero evitar a fadiga O valor de x é computado apenas quando requisitamos seu valor!
25 Quero evitar a fadiga Prelude> x = Prelude> y = x * 3 Prelude> :sprint x x = _ Prelude> :sprint y y = _
26 Quero evitar a fadiga Prelude> x = Prelude> y = x * 3 Prelude> :sprint x x = _ Prelude> :sprint y y = _ Prelude> y 6 Prelude> :sprint x x = 2
27 Eu quero agora! A função seq recebe dois parâmetros, avalia o primeiro e retorna o segundo.
28 Eu quero agora! Prelude> x = Prelude> y = 2 * 3 Prelude> :sprint x x = _ Prelude> :sprint y y = _ Prelude> seq x y 6 Prelude> :sprint x x = 2
29 Quero evitar a fadiga Prelude> let l = map (+1) [1..10] :: [Int] Prelude> :sprint l l = _ Prelude> seq l () Prelude> :sprint l l = _ : _ Prelude> length l Prelude> :sprint l l = [_,_,_,_,_,_,_,_,_,_] Prelude> sum l Prelude> :sprint l l = [2,3,4,5,6,7,8,9,10,11]
30 Paralelismo: Anotação Simples
31 O óbvio Considere a implementaçõa ingênua de fibonacci: fib 0 = 0 fib 1 = 1 fib 2 = 1 fib n = (fib n - 1) + (fib n - 2) Um ponto óbvio para paralelizar: enquanto uma thread trabalha no (n-1) outra no (n-2).
32 GHC Anotando paralelismo import Control.Parallel fib :: Integer -> Integer fib 0 = 0 fib 1 = 1 fib n = n1 `par` (n1 + n2) where n1 = fib (n - 1) n2 = fib (n - 2) main = do print (fib 36)
33 Anotando paralelismo A função par indica para criar um spark para o primeiro argumento e executar o segundo argumento. par x (x+y) cria uma thread para calcular x e calcula x+y em paralelo.
34 Spark Um spark é uma possibilidade de se tornar uma thread. Se o programa julgar necessário transforma em thread.
35 Anotando paralelismo Compile com: ghc -o nome nome.hs -threaded -eventlog -rtsopts Execute com:./nome +RTS -N1 -s -ls -M2g
36 Anotando paralelismo -threaded: compile com suporte a multithreading -eventlog: permite criar um log do uso de threads -rtsopts: embute opções no seu programa +RTS: flag para indicar opções embutidas -Nx: quantas threads usar -s: estatísticas de execução -ls: gera log para o threadscope -M2g: limita o uso de memória em 2GB
37 Fibonacci Com 1 thread: Total time 2.591s ( 2.620s elapsed) Com 2 threads: Total time 2.749s ( 1.388s elapsed) O valor entre parênteses é o tempo real.
38 GHC Anotando paralelismo import Control.Parallel fib :: Integer -> Integer fib 0 = 0 fib 1 = 1 fib n = n1 `par` (n2 + n1) where n1 = fib (n - 1) n2 = fib (n - 2) main = do print (fib 36)
39 Fibonacci Com 1 thread: Total time 2.518s ( 2.541s elapsed) Com 2 threads: Total time 4.475s ( 2.841s elapsed) O que houve??
40 Fibonacci No ghc o operador + avalia o operando da direita primeiro. Enquanto uma thread avaliava n1 a principal avaliava também n1.
41 GHC Anotando paralelismo import Control.Parallel fib :: Integer -> Integer fib 0 = 0 fib 1 = 1 fib n = n1 `par` n2 `pseq` (n2 + n1) where n1 = fib (n - 1) n2 = fib (n - 2) main = do print (fib 36)
42 Fibonacci pseq funciona como seq, porém aguarda que as threads terminem antes de continuar.
43 Fibonacci Com 1 thread: Total time 2.845s ( 2.872s elapsed) Com 2 threads: Total time 2.995s ( 1.523s elapsed) Com o sincronismo, perdemos um tantinho de tempo, mas temos o paralelismo garantido.
44 Threadscope
45 Avaliando o paralelismo Para avaliarmos se nossa estratégia de paralelismo está funcionando, temos a ferramenta threadscope: $ cabal install threadscope
46 Fibonacci $ threadscope FibParSeq.eventlog
47 Fibonacci $ threadscope FibParSeq.eventlog # de threads Atividade thread 1 Atividade thread 2
48 Fibonacci $ threadscope FibParSeq.eventlog
49 Vida de um spark
50 duds e fizzles dud: já foi avaliado antes de virar uma thread fizzle: já foi avaliado por outra thread
51 Vida de um spark Sinais de problemas: - Poucos sparks, pode ser paralelizado ainda mais - Muitos sparks, paralelizando demais - Muitos duds e fizzles, estratégia não otimizada.
52 Threadscope Em breve veremos como usar o threadscope para melhorar nosso paralelismo.
53 Estratégias
54 Estratégias de Paralelismo Forma genérica de anotar os pontos a serem paralelizados. Permite aplicar paralelismo em tipos compostos.
55 Estratégias de Paralelismo map (+ 2) lista como paralelizar usando `par`?
56 Estratégias de Paralelismo print (fib 35, fib 36) como paralelizar usando `par`?
57 Estratégias de Paralelismo (fib 35) `par` fib 36 `pseq` (fib 35, fib 36) feio!
58 Funções paralelas type Strategy a = a -> Eval a parpair :: Strategy (a,b) parpair (a,b) = do a' <- rpar a b' <- rpar b return (a',b')
59 Funções paralelas Tipo Strategy de um tipo qualquer a é uma função que recebe a e retorna a envelopado no tipo Eval. O tipo Eval é um tipo que define o que e como deve ser avaliado.
60 Funções paralelas rpar é uma função que retorna uma ação envelopada em Eval (lembram de IO?). Nesse caso precisamos utilizar a função return que envolve a tupla envelopada em Eval.
61 Funções paralelas runeval (parpair (fib 35, fib 36)) runeval executa a ação e retorna o valor fora do envelope Eval.
62 Funções paralelas using :: a -> Strategy a -> a x `using` s = runeval (s x)
63 Funções paralelas (fib 35, fib 36) `using` parpair Bonito! :)
64 parlist, rseq, rdeepseq parlist - paraleliza o processamento de uma lista, requer uma outra estratégia a ser aplicada em cada elemento. rseq - força a avaliação de uma expressão dentro daquele spark. rdeepseq - força avaliação da expressão até o fim.
65 Exemplo
66 GHC Média mean :: [[Double]] -> [Double] mean l = map mean' l `using` parlist rseq where mean' l' = (sum l') / (fromintegral $ length l') Cada elemento de l cria um spark que será avaliado via rseq.
67 threadscope Total time 1.381s ( 1.255s elapsed) Por que um core fez o dobro do trabalho?
68 threadscope Começamos a criar sparks muito rapidamente! Não deu tempo de aproveitá-los!
69 threadscope Com o pool cheio, não deu tempo de enviar para o outro core! Então ficaram no core mestre.
70 GHC Média mean :: [[Double]] -> [Double] mean l = map mean' l where mean' l' = (sum l') / (fromintegral $ length l') Vamos tirar a estratégia...
71 GHC Média meanpar :: [[Double]] -> [Double] meanpar l = concat lists where lists = map mean chunks `using` parlist rseq chunks = chunksof 1000 l Agora dividimos a lista em pedaços de 1000 elementos e paralelizamos nesses pedaços.
72 threadscope Total time 1.289s ( 1.215s elapsed) Não tem mais overflow! Mas...
73 threadscope A aplicação da função mean foi preguiçosa, os sparks faziam apenas a promessa e retornavam!
74 GHC Média meanpar :: [[Double]] -> [Double] meanpar l = concat lists where lists = map mean chunks `using` parlist rdeepseq chunks = chunksof 1000 l Vamos usar a estratégia rdeepseq.
75 threadscope Total time 1.303s ( 0.749s elapsed) :)
76 threadscope E sem overflow!!
Programação Paralela. com Haskell. Fabrício Olivetti de França. Universidade Federal do ABC
Programação Paralela com Haskell Fabrício Olivetti de França Universidade Federal do ABC Trabalhando com Vetores e Matrizes Vetores Em muitos algoritmos de Mineração de Dados, trabalharemos com vetores
Paradigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 02 de Agosto de 2018 1 Programação Paralela e Concorrente em Haskell 2 Paralelismo vs Concorrência Um programa paralelo é aquele que usa diversos recursos
Pré-processamento de Dados
Pré-processamento de Dados Fabrício Olivetti de França Universidade Federal do ABC Pré-Processamento dos Dados Tópicos 1. Pré-Processamento dos Dados 2. Conceitos Básicos 3. Representação Textual 4. Padrões
Programação Funcional 9 a Aula Programas interativos
Programação Funcional 9 a Aula Programas interativos Pedro Vasconcelos DCC/FCUP 2014 Motivação Até agora apenas escrevemos programas que efetuam computação pura, i.e., transformações funcionais entre valores.
Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves
Linguagens de Programação Programação Funcional e Haskell Programação Interativa Thiago Alves 1 Introdução Vimos como Haskell pode ser usado para escrever programas batch que recebem todas suas entradas
Sumarizando Dados. Fabrício Olivetti de França. Universidade Federal do ABC
Sumarizando Dados Fabrício Olivetti de França Universidade Federal do ABC Sumarizando os dados Sumarização Antes de extrair informações da base de dados, é importante entender seu conteúdo. Sumarização:
MapReduce Mapeando e reduzindo
MapReduce Mapeando e reduzindo Prof. Fabrício Olivetti de França Universidade Federal do ABC Motivação Vimos até então que nosso maior problema é a quantidade de dados. O processamento não pode ser distribuído
Paradigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 05 de Junho de 2018 1 Paradigmas de Programação 2 Paradigmas de Programação Haskell 3 Haskell Surgiu em 1990 com o objetivo de ser a primeira linguagem
Programação Funcional. Capítulo 13. Mônadas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2012.
Programação Funcional Capítulo 13 Mônadas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/31 1 Mônadas 2 Entrada e saída 3 Expressão do 4 Computações que podem
Linguagens de Programação
Linguagens de Programação Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões abaixo
Números Aleatórios Argumentos da Linha de Comando Arquivos
Programação Funcional Capítulo 9 Números Aleatórios Argumentos da Linha de Comando Arquivos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/22 1 Números aleatórios
Simulação de Caixa Automático
Programação Funcional UFOP DECOM 2014.1 Trabalho 1 Simulação de Caixa Automático Sumário Resumo Com esta atividade pretende-se explorar a construção de programas interativos usando ações de entrada e saída
Haskell. Allek Cezana Rajab Henrique Bertolo Selga João Paulo Coelho
Haskell Allek Cezana Rajab Henrique Bertolo Selga João Paulo Coelho Índice 1) Introdução/Histórico 2) Programação Funcional 3) Requerimentos/Instalação 4) Tutorial Básico 5) Características Gerais da LP
LINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Paradigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.
MC-102 Aula 02 Shell Interativa, Programa Básico, Variáveis, Atribuições, Tipos Simples. Instituto de Computação Unicamp
MC-102 Aula 02 Shell Interativa, Programa Básico, Variáveis, Atribuições, Tipos Simples Instituto de Computação Unicamp 2016 Roteiro 1 Shell Interativa 2 Estrutura de um Programa em Python 3 Variáveis
Entrada e Saída de Dados
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO PET - Engenharia de Computação Entrada e Saída de Dados Programação 1 Vitória, 28 de Maio de 2010 Ivan de Oliveira Nunes Engenharia de Computação
Programação Funcional BCC222. Aulas 17,18. IO e Mônadas
Programação Funcional BCC222 Aulas 17,18 IO e Mônadas Lucília Camarão de Figueiredo Departamento de Ciência da Computação Universidade Federal de Ouro Preto Parte I O problema Corpo e Mente O problema
Linguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões
Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes
Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2012 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:
Programação Funcional. Aula 7. Entrada e Saída. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto /86 ...
Programação Funcional Aula 7 Entrada e Saída José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/86 1 Interação com o mundo 2 Operações de entrada e saída em Haskell
Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes
Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2014 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:
Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29
Computação 1 - Python Aula 11 - Teórica Interação com o usuário e programa principal 1/ 29 print: Usado para imprimir informações na tela. >>> print "Qual o seu nome?" Qual o seu nome? # Função que soma
Lambda Cálculo e Programação Funcional. Programação Funcional Bacharelado em Sistemas de Informação Maio
Lambda Cálculo e Programação Funcional Programação Funcional Bacharelado em Sistemas de Informação Maio - 2009 Alonzo Church (1903 1995) Professor em Princeton, EUA (1929 1967) e UCLA (1967 1990) Inventou
Organização de programas em Python. Vanessa Braganholo
Organização de programas em Python Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Python! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem
Aula 4: Introdução à Linguagem C++
CI208 - Programação de Computadores Aula 4: Introdução à Linguagem C++ Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas
Programas Interativos
Programação Funcional Capítulo 8 Programas Interativos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/73 1 Interação com o mundo 2 Ações de saída padrão 3
Laboratório de Programação 1 Aula 04
Laboratório de Programação 1 Aula 04 Mário Hozano professor@hozano.com Ciência da Computação UFAL - Arapiraca Relembrando a aula anterior... O que são valores, tipos e variáveis? Descreva os tipos int,
Aula 02. Prof. Diemesleno Souza Carvalho
Programação Orientada a Objetos II Aula 02 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... - O que é C# e.net - Um
LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Entrada e saída. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá
Entrada e saída Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Programação Funcional
Programação Funcional com Haskell Fabrício Olivetti de França Universidade Federal do ABC Paradigma Funcional Paradigmas Em muitos cursos de Computação e Engenharia iniciam com paradigma imperativo. Exemplo
Programação Funcional. Capítulo 21. Parsers. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2018.
Programação Funcional Capítulo 21 Parsers José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2018.2 1/51 1 Parsers 2 Definindo um tipo para parsers 3 Parsers básicos 4
Programas Interativos
Programação Funcional Capítulo 7 Programas Interativos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.2 1/75 1 Interação com o mundo 2 Ações de saída padrão 3
Programas Interativos
Programação Funcional DECOM UFOP 2012-1 Aula prática Capítulo 8 Prof. José Romildo Malaquias Programas Interativos Resumo Nesta aula pretende-se explorar construção de programas interativos usando ações
Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs
Layout Ao contrário de quase todas as linguagens de programação, o Haskell não necessita de marcas para delimitar as diversas declarações que constituem um programa. Em Haskell a identação do texto (isto
Leituras de valores numéricos
DIM0425 - Conceitos e Técnicas de Programação Leituras de valores numéricos 1 Leitura de valores numéricos em uma linha só... São dois comandos: read_int() read_float() Erro de execução quando não é digitado
Programação Funcional Aulas 9, 10 & 11
Programação Funcional Aulas 9, 10 & 11 Sandra Alves DCC/FCUP 2015/16 1 Programas interativos Motivação Até agora apenas escrevemos programas que efetuam computação pura, i.e., transformações funcionais
Aula Prática 2. Paradigmas da Programação I / Programação Funcional
Aula Prática 2 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se introduzir os conceitos seguintes: valores e expressões; tipos básicos e tipos compostos;
Programação Funcional em Haskell
Funções Genéricas sobre Listas Junho - 2009 1 Funções Genéricas 2 Introdução Em Haskell, como em qualquer linguagem funcional, funções são objetos de primeira classe, em que funções não avaliadas podem
Computação 1 - Python Aula 12 - Teórica: Interação com o usuário e programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 25
Computação 1 - Python Aula 12 - Teórica: Interação com o usuário e programa principal 1/ 25 print: Usado para imprimir informações na tela. >>> print "Qual o seu nome?" Qual o seu nome? # Função que soma
Aula prática 2. Definindo Funções. Resumo Vamos aprender nesta aula a fazer nossas primeiras definições de função. 1 Scripts 1.
Programação Funcional UFOP DECOM 2014.1 Aula prática 2 Definindo Funções Sumário Resumo Vamos aprender nesta aula a fazer nossas primeiras definições de função. 1 Scripts 1 2 Comentários 2 3 Regra de layout
Paradigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 07 de Junho de 2018 1 Paradigmas de Programação 2 Paradigmas de Programação Definição: estilo de programação, a forma como você descreve a solução
Programação Funcional
Programação Funcional Capítulo 2 Primeiros Passos José Romildo Malaquias 2012.1 Departamento de Computação Universidade Federal de Ouro Preto 1 / 39 1 Glasgow Haskell Compiler 2 O módulo Prelude 3 Aplicação
Linguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser
INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++ Profª ª Danielle Casillo LAÇOS Laços são comandos da linguagem
INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Pré-processamento dos Dados e Análise Exploratória
Pré-processamento dos Dados e Análise Exploratória Prof. Fabrício Olivetti de França Universidade Federal do ABC Processando os dados Data Sets Conjunto de objetos de dados. Objeto de dados é uma entidade:
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL
Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL Sobre a Linguagem Haskell Inicialmente temos no trabalho o uso da versão
Linguagem C ponteiros
Linguagem C ponteiros IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Aula
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012 Operações básicas + - / * ** ou pow(a,b) % = ==,!=, , = or, and, not Valor dos operadores 10/3 10.0/3 10/3.0 10%3
Ambiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
OpenMP. Slides baseados em tutorial de Tim Mattson da Intel
OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas
3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
Introdução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC
Introdução ao Python Prof. Fabrício Olivetti de França Universidade Federal do ABC Python Linguagem interpretada criada em 1991 Objetivos: enfatizar a legibilidade do código e, encurtar o tamanho dos códigos.
Programação Básica. Estrutura de um algoritmo
Programação Básica Estrutura de um algoritmo Código-fonte Como vimos na aula anterior um algoritmo pode ser representado usando um fluxograma Um algoritmo pode também ser representado usando texto Esse
Regressão. Prof. Fabrício Olivetti de França Universidade Federal do ABC
Regressão Prof. Fabrício Olivetti de França Universidade Federal do ABC Aprendendo com Exemplos Uma das formas de aprendizado de máquina é definido como: Dado um conjunto de exemplos X, com cada x sendo
Computação 1. Aula 11 Teórica professor: Leonardo Carvalho
Computação 1 Aula 11 Teórica professor: Leonardo Carvalho Últimos assuntos do curso! 2 Comunicação com o usuário 3 Comunicação com o usuário Como fazer o programa informar ou perguntar coisas ao usuário?
Programação Funcional. Capítulo 13. Mônadas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2013.
Programação Funcional Capítulo 13 Mônadas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2013.1 1/42 1 Mônadas 2 Entrada e saída 3 Expressão do 4 Computações que podem
FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
Aula 28: Arquivos de texto
Aula 28: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides de Guillermo Cámara-Chávez Aulas anteriores Memória Ponteiro Utilização
4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU
Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito
Algoritmos e Programação
Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes marinagomes@unipampa.edu.br 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for
Introdução à Programação uma Abordagem Funcional
Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres boeres@inf.ufes.br CT VII - Sala 34 Departamento de Informática Centro Tecnológico
INSTRUÇÕES DE REPETIÇÃO
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 6 INSTRUÇÕES DE REPETIÇÃO As instruções de repetição permitem fazer com que a execução de uma
Lista de Exercício de Linguagens de Programação Prog. Funcional
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE CIÊNCIA E TECNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO Lista de Exercício de Linguagens de Programação Prog. Funcional 1) Construa uma função del_posicao_n ::
INFORMÁTICA PARA ENGENHARIA MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO
INFORMÁTICA PARA ENGENHARIA MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO Prof. Dr. Daniel Caetano 2019-1 Objetivos O que são módulos Entender a utilidade das funções Compreender o escopo das variáveis Capacitar
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Funções de Ordem Superior
Programação Funcional UFOP DECOM 2014.1 Aula prática 15 Funções de Ordem Superior Sumário Resumo Uma função é conhecida como função de ordem superior quando ela tem uma função como argumento ou resulta
Expressão Condicional
Programação Funcional UFOP DECOM 2014.1 Aula prática 4 Expressão Condicional Resumo Expressões condicionais permitem a escolha entre duas alternativas na obtenção do valor da expressão, com base em uma
Aula 4 Introdução ao C
Considere o nosso MSC. O Processador Central, entende o conjunto de instruções, leia, imprima, atribuição e condicional e com ela resolvemos vários problemas, construindo vários algoritmos. As instruções
AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa
AULA 2: INTRODUÇÃO A PYTHON Luís Feliphe Silva Costa Sumário Variáveis simples Entrada e Saída de dados Operadores Estruturas Condicionais Estruturas de repetição Funções Tratamento de erros Variáveis
Algoritmos e Programação
Algoritmos e Programação Aula 2 Elementos fundamentais de Algoritmos, Conceitos de Variáveis Profa. Marina Gomes marinagomes@unipampa.edu.br 21/03/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje
MCG126 Programação de Computadores II
MCG126 Programação de Computadores II Turmas: A e B Professor: Isac Mendes Lacerda (Material original cedido gentilmente pela professora Janaína Gomide) 1 Bibliografia 2 Bibliografia Introdução à Programação
MC-102 Aula 24 Arquivos em C e Parâmetros do Programa
MC-102 Aula 24 Arquivos em C e Parâmetros do Programa Instituto de Computação Unicamp 3 de Novembro de 2016 Roteiro 1 Arquivos Introdução a Arquivos em C Nomes e Extensões Tipos de Arquivos Caminhos Absolutos
Introdução à Ciência da Computação Disciplina:
Introdução à Ciência da Computação Disciplina: 113913 Prof. Edison Ishikawa Python 3.0 Capítulo 3 Funções Sumário Chamadas de funções Conversão entre tipos Coerção entre tipos Funções matemáticas Composição
Entrada e Saída em Haskell Tutorial
Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Prof. Lucília Figueiredo Entrada e Saída em Haskell Tutorial Elton M. Cardoso Lucília Figueiredo 30 de Junho de 2005
Programação de Computadores
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Programação de Computadores Primeiro programa Copyright 2012 IFRN O que veremos hoje? Sequenciamento de instruções Mostrando valores
Haddop, MapReduce e Spark
Haddop, MapReduce e Spark Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Conceitos Básicos 2. MapReduce 3. Spark 4. Transformações Básicas 5. Ações Básicas 1 Conceitos Básicos Hadoop
Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas
Programação Funcional 4 a Aula Listas Pedro Vasconcelos DCC/FCUP 2014 Listas Listas são coleções de elementos: em que a ordem é significativa; possivelmente com elementos repetidos. Listas em Haskell Uma
Linguagens de Programação Aula 13
Linguagens de Programação Aula 13 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Suporte para a programação orientada a objetos 2 Na aula de hoje Programação Funcional Linguagem Haskell 3 Roteiro
Algoritmos de Regressão
Algoritmos de Regressão com Big Data Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Regressão Linear 2. Ordinary Least Square 3. Gradiente Descendente 4. Overfitting 5. Variáveis Não-Lineares
Linguagem C: Introdução
Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais
Introdução à Programação
Introdução à Programação Aula 05 Estruturas Condicionais Edirlei Soares de Lima Tomada de Decisão Até o momento, todas as instruções dos nossos programas eram executadas sequencialmente.
Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.
Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre@ifc-araquari.edu.br marcoandre@gmail.com marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma
TCC 00308: Programação de Computadores I Organização de programas em Python
TCC 00308: Programação de Computadores I 2017.1 Organização de programas em Python Vamos programar em Python! Como um programa é organizado? Quais são os tipos de dados disponíveis? Como variáveis podem
Linguagem C. Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973.
Aula 2 05/03/2015 Linguagem C Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973. Um programa em C é Texto que segue as regras formais
Aula 10: Funções (Parte III)
Aula 10: Funções (Parte III) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Funções Ponteiros
Introdução à OpenMP (Dia 1) Prof. Guido Araujo
Introdução à OpenMP (Dia ) Prof. Guido Araujo www.ic.unicamp.br/~guido Roteiro Escrevendo programas usando OpenMP Usando OpenMP para paralelizar laços seriais com pequenas mudanças no código fonte Explorar
Introdução à Linguagem Lua Variáveis e Expressões
Introdução a Programação em Lua Introdução à Linguagem Lua Variáveis e Expressões 1 Tópicos Principais Programando em Lua Funções Variáveis Operadores e Expressões Entrada e Saída Exemplos 2 Programando
Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius
Aula 3. Objetivos Sequências de escapes ; Um aplicativo que adiciona inteiro; Aritmética.
Objetivos Sequências de escapes ; Um aplicativo que adiciona inteiro; Aritmética. Sequências de escape \n Nova linha. Posiciona o cursor de tela no início da próxima linha. \t Tabulação horizontal. Move
Introdução a Programação de Jogos
Introdução a Programação de Jogos Aula 06 Estruturas Condicionais Edirlei Soares de Lima Tomada de Decisão Até o momento, todas as instruções dos nossos programas eram executadas