Programas Interativos

Tamanho: px
Começar a partir da página:

Download "Programas Interativos"

Transcrição

1 Programação Funcional Capítulo 8 Programas Interativos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto /73

2 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 2/73

3 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 3/73

4 Programas interativos Programas interativos podem: exibir mensagens para o usuário obter valores informados pelo usuário De forma geral um programa poderá trocar informações com o restante do sistema computacional para obter dados do sistema computacional gravar dados no sistema computacional Em linguagens imperativas as operações de entrada e saída produzem efeitos colaterais, refletidos na atualização de variáveis globais que representam o estado do sistema de computação. 4/73

5 Exemplo de programa interativo em C Programa que obtém dois caracteres digitados pelo usuário e exibi-os em maiúsculas na tela: #include <stdio.h> #include <ctype.h> int main(void) { } char x = getchar(); char y = getchar(); printf("%c%c\n", toupper(x), toupper(y)); return 0; Supondo que o usuário informe os caracteres A e b, a execução do programa produzirá a seguinte interação: Ab AB 5/73

6 Exemplo de programa interativo em C (cont.) A aplicação de função getchar() retorna valores diferentes mesmo quando chamada com os mesmos argumentos (nenhum argumento, neste caso). A primeira chamada retorna A e a segunda chamada retorna b. Isto acontece porque getchar() utiliza uma variável global representando o dispositivo de entrada padrão (stdin). Durante a chamada da função esta variável é atualizada (efeito colateral), removendo o próximo caracter disponível na entrada e retornando-o como resultado. Assim, quando a função getchar() é chamada novamente, o próximo caracter disponível na entrada padrão é o segundo caracter digitado pelo usuário. Esta informação está na variável global que representa o dispositivo de entrada padrão (stdin). 6/73

7 Linguagens puras Em linguagens puras o valor retornado por uma função depende única e exclusivamente dos seus argumentos. Portanto toda vez que uma função é aplicada em um dado argumento, o resultado é o mesmo. Assim não é possível implementar uma função que lê um caracter da mesma maneira que em linguagens impuras, como C. Exemplo: let x = getchar () in... y = getchar () Em uma linguagem pura os valores de x e y serão iguais, uma vez que são definidos aplicando a função getchar ao mesmo argumento. 7/73

8 O mundo Para interagir com o usuário, precisamos de uma representação do sistema de computação onde o programa está sendo executado: o mundo (world). O mundo é formado por todas as informações no contexto de execução da alicação, incluindo: dispositivo de entrada padrão (o teclado) dispositivo de saída padrão (a tela) sistema de arquivos (arquivos em disco) conexões de rede gerador de números pseudo-aleatórios (usa uma semente que depende do sistema, como por exemplo o horário atual) 8/73

9 Modificando o mundo Em linguagens impuras o mundo (ou parte dele) corresponde a uma variável global atualizável. Uma função impura que interage com o mundo pode alterar esta variável, de foma que uma aplicação posterior da função ao mesmo argumento pode retornar um valor diferente. Em uma linguagem pura não há a possibilidade de alterar uma variável. Uma função pura que interage com o mundo tem um argumento e um resultado adicionais que representam o mundo antes e o mundo depois da interação. 9/73

10 Ações de entrada e saída Uma ação de entrada e saída (E/S) é um valor que representa uma interação com o mundo. Uma ação de E/S pode ser executada para interagir com o mundo e retornar um valor obtido através desta interação. Em Haskell IO a é o tipo das ações de entrada e saída que interagem com o mundo e retornam um valor do tipo a. IO a é um tipo abstrato, logo sua representação não está disponível nos programas. Haskell provê: algumas ações de entrada e saída primitivas, e um mecanismo para combinar ações de entrada e saída. 10/73

11 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 11/73

12 A função putchar putchar :: Char -> IO () putchar é uma função que recebe um caracter e resulta em uma ação de E/S que, quando executada, interage com o mundo inserindo o caracter na saída padrão e retorna a tupla vazia (). Quando executada, a ação putchar x apenas insere x na saída padrão e não há nenhum valor interessante para ser retornado. Como toda ação deve retornar um valor quando executada, a tupla vazia () é usada. Exemplo: O valor da expressão putchar H é uma ação de E/S que, quando executada, interage com o mundo inserindo o caracter H na saída padrão e retorna (). 12/73

13 A função putstr putstr :: String -> IO () A função putstr recebe uma string e resulta em uma ação de E/S que, quando executada, interage com o mundo inserindo a string na saída padrão e retorna a tupla vazia. 13/73

14 A função putstrln putstrln :: String -> IO () A função putstrln recebe uma string e resulta em uma ação de E/S que, quando executada, interage com o mundo inserindo a string seguida do caracter \n na saída padrão e retorna a tupla vazia. 14/73

15 A função print print :: Show a => a -> IO () A função print recebe um valor e resulta em uma ação de E/S que, quando executada, insere na saída padrão o valor convertido para string, seguido de mudança de linha, e retorna a tupla vazia. A conversão para string é feita usando a função show :: Show a => a -> String. Portanto o tipo do valor deve ser instância da classe Show. 15/73

16 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 16/73

17 A ação getchar getchar :: IO Char A ação de E/S getchar, quando executada, interage com o mundo extraindo o próximo caracter disponível da entrada padrão e retorna este caracter. A ação getchar levanta uma exceção (que pode ser identificada pelo predicado iseoferror do módulo IO) se for encontrado fim de arquivo. 17/73

18 A ação getline getline :: IO String A ação de E/S getline, quando executada, interage com o mundo extraindo a próxima linha disponível na entrada padrão e retorna esta linha. A ação getline pode falhar com uma exceção se encontrar o fim de arquivo ao ler o primeiro caracter. 18/73

19 A ação getcontents getcontents :: IO String A ação de E/S getcontents, quando executada, interage com o mundo extraindo todos os caracteres da entrada padrão e retorna a string formada pelos caracteres. 19/73

20 A ação readln readln :: Read a => IO a A ação de E/S readln, quando executada, interage com o mundo extraindo a próxima linha disponível na entrada padrão e retorna um valor obtido dessa string. A conversão da string para o valor é feita usando uma função similar à função read, com a diferença de que se a conversão falhar o programa não termina, mas uma exceção é levantada no sistema de E/S. Portanto o tipo do valor deve ser instância da classe Read. 20/73

21 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 21/73

22 Programa em Haskell Quando uma ação de E/S é executada? Um programa em Haskell é uma ação de E/S. Executar o programa implica em executar a ação de E/S que o constitui. Um programa é organizado como uma coleção de módulos. Um dos módulos deve ser chamado Main e deve exportar a variável main, do tipo IO t, para algum t. Quando o programa é executado, a ação main é executada, e o seu resultado (do tipo t) é descartado. 22/73

23 Exemplo de programa em Haskell Exibir um caracter. module Main (main) where main :: IO () main = putchar A Quando o programa é executado: 1. main recebe (automaticamente) como argumento o mundo existente antes de sua execução, 2. realiza ações de entrada e saída 3. resultando em uma tupla vazia (nenhum valor interessante é produzido), e 4. produzindo um novo mundo que reflete o efeito das ações de entrada e saída realizadas. 23/73

24 Preparando e executando um programa em Haskell 1. Grave o código fonte do programa em um arquivo texto, digamos putchar-a.hs 2. Compile o programa (por exemplo usando o Glasgow Haskell Compiler em um terminal): $ ghc --make putchar-a [1 of 1] Compiling Main ( putchar-a.hs, putchar-a.o ) Linking putchar-a Execute o programa já compilado: $./putchar-a A 24/73

25 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 25/73

26 Sequenciamento de ações Sendo IO a um tipo abstrato, como poderíamos combinar duas ações em sequência? Exemplo: como exibir os caracteres A e B em sequência? Haskell tem uma forma de expressão (expressão do) que permite combinar ações de entrada e saída a serem executadas em sequência. Exemplo: do { putchar A ; putchar B } 26/73

27 Expressão do Uma expressão do permite combinar vários ações de E/S de forma sequencial. Uma expressão do é da forma do { comando 1 ;...; comando n ; expressao } com n 0. expressão é uma ação de E/S. Cada comando i pode ser da forma: expressao uma ação de E/S cujo retorno é ignorado padrao <- expressao uma ação de E/S cujo retorno é casado com o padrão indicado. O escopo das variáveis introduzidas no casamento de padrão estende-se até o final da expressão do. Se o casamento falhar, toda a ação falha. let declaracoes permite fazer declarações cujo escopo se estende até o final da expressão do. É semelhante à expressão let declaracoes in expressao porém sem a expressão. 27/73

28 Expressão do (cont.) O valor da expressão do é uma ação de E/S formada pela combinação sequencial das ações de E/S que a compõem. Quando a expressão do é executada, as ações que a compõem são executadas em sequência, e o valor retornado pela expressão do é o valor retornado pela última ação. 28/73

29 Exemplo de expressão do Exibe três caracteres na saída padrão. module Main (main) where main :: IO () main = do { putchar F ; putchar i ; putchar m } 29/73

30 Exemplo de expressão do (cont.) Exibe três caracteres na saída padrão. module Main (main) where main :: IO () main = do { putchar F ; putchar i ; putchar m } 30/73

31 Regra de layout com a expressão do A expressão do pode usar a regra de layout da mesma maneira que let, where e case. Assim as chaves { e } e os pontos-e-vírgula ; podem ser omitidos, sendo substituídos por uso de indentação adequada. Neste caso, cada comando que compõe a expressão do deve começar na mesma coluna e, se continuar em linhas subsequentes, deve sempre ocupar as colunas à direita da coluna onde iniciou. 31/73

32 Regra de layout com a expressão do (cont.) Exemplo: Exibe três caracteres na saída padrão. module Main (main) where main :: IO () main = do putchar F putchar i putchar m 32/73

33 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 33/73

34 Exemplo: ler um caracter Obter um caracter da entrada padrão. module Main (main) where main :: IO Char main = getchar 34/73

35 Exemplo: ler e exibir um caracter Obter um caracter da entrada padrão e exibi-lo na saída padrão. module Main (main) where main :: IO () main = do caracter <- getchar putchar caracter 35/73

36 Exemplo: ler e exibir um caracter (v2) Ler um caracter e exibi-lo em minúsculo e em maiúsculo. module Main (main) where import Data.Char (tolower, toupper) main :: IO () main = do letra <- getchar putchar (tolower letra) putchar (toupper letra) 36/73

37 Exemplo: saudação Ler o nome do usuário e exibir uma saudação. module Main (main) where main :: IO () main = do putstrln "Qual é o seu nome? " nome <- getline putstr nome putstrln ", seja bem vindo(a)!" 37/73

38 Exercícios Exercício 1 Escreva um programa em Haskell que solicita ao usuário para digitar uma frase, lê a frase (uma linha) da entrada padrão e testa se a string lida é uma palíndrome, exibindo uma mensagem apropriada. 38/73

39 Exemplo: soma de dois números Ler dois números e exibir a soma dos mesmos. module Main (main) where main :: IO () main = do putstrln "Digite um número: " s1 <- getline putstrln "Digite outro número: " s2 <- getline putstr "Soma dos números digitados: " putstrln (show (read s1 + read s2)) 39/73

40 Exemplo: soma de dois números (v2) Ler dois números e exibir a soma dos mesmos. module Main (main) where main :: IO () main = do putstrln "Digite um número: " n1 <- readln putstrln "Digite outro número: " n2 <- readln putstr "Soma dos números digitados: " putstrln (show (n1 + n2)) 40/73

41 Exercícios Exercício 2 Escreva um programa que solicita ao usuário três números em ponto flutuante, lê os números, e calcula e exibe o produto dos números. 41/73

42 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 42/73

43 Exemplo: Soma de dois números Ler dois números e exibir a soma dos mesmos. module Main (main) where main :: IO () main = do putstr "Digite um número: " s1 <- getline putstr "Digite outro número: " s2 <- getline putstr "Soma dos números digitados: " putstrln (show (read s1 + read s2)) Execução do programa onde o usuário informa os números 34 e 17: Digite um número: Digite outro número: Soma dos números digitados: 51 O que aconteceu de errado? 43/73

44 Saída bufferizada A saída para o dispositivo padrão de saída é bufferizada: o sistema operacional mantém uma área da memória (buffer) onde armazena os caracteres a serem enviados para o dispositivo de saída. Geralmente os caracteres enviados para a saída padrão somente são transferidos para o dispositivo de saída quando o buffer estiver cheio. Este mecanismo reduz o número de acesso aos dispositivos de saída (que são muito mais lentos que o processador), melhorando o desempenho da aplicação. Por este motivo as mensagens não aparecem imediatamente quando o programa anterior é executado. 44/73

45 Esvaziamento do buffer de saída A função hflush (definida no módulo System.IO) recebe um manipulador de arquivo (handle) e resulta em uma ação de E/S que, quando executada, faz com que os itens armazenados no buffer de saída do manipulador sejam enviados imediatamente para a saída. hflush :: Handle -> IO () O tipo Handle (definido no módulo System.IO) é um tipo abstrato que representa um dispositivo de E/S internamente para o Haskell. O módulo System.IO define variáveis que representam alguns dispositivos padrões: stdin :: Handle -- entrada padrão stdout :: Handle stderr :: Handle -- saída padrão -- saída de erro padrão 45/73

46 Exemplo: Soma de dois números Ler dois números e exibir a soma dos mesmos. module Main (main) where import System.IO (stdout, hflush) main :: IO () main = do putstr "Digite um número: " hflush stdout s1 <- getline putstr "Digite outro número: " hflush stdout s2 <- getline putstr "Soma dos números digitados: " putstrln (show (read s1 + read s2)) Execução do programa onde o usuário informa os números 34 e 17: Digite um número: 34 Digite outro número: 17 Soma dos números digitados: 51 46/73

47 Modos de bufferização A função hsetbuffering (definida no módulo System.IO) pode ser utilizada para configurar o modo de bufferização de um dispositivo. hsetbuffering :: Handle -> BufferMode -> IO () O tipo BufferMode (definido no módulo System.IO) representa um modo de bufferização: sem buferização: NoBuffering buferização por linha: LineBuffering buferização por bloco: BlockBuffering Normalmente a saída para o dispositivo padrão é feita com buferização por linha. 47/73

48 Modos de bufferização (cont.) A expressão hsetbuffering hdl mode é uma ação que, quando executada, configura o modo de bufferização para o handler hdl. Então podemos corrigir o problema no exemplo dado anteriormente adicionando a ação hsetbuffering stdout NoBuffering no começo da sequência de ações. 48/73

49 Exemplo: Soma de dois números Ler dois números e exibir a soma dos mesmos. module Main (main) where import System.IO (stdout, hsetbuffering, BufferMode(NoBuffering)) main :: IO () main = do hsetbuffering stdout NoBuffering putstr "Digite um número: " s1 <- getline putstr "Digite outro número: " s2 <- getline putstr "Soma dos números digitados: " putstrln (show (read s1 + read s2)) Execução do programa onde o usuário informa os números 34 e 17: Digite um número: 34 Digite outro número: 17 Soma dos números digitados: 51 49/73

50 Exercícios Exercício 3 Escreva um programa em Haskell que solicita ao usuário uma temperatura na escala Fahrenheit, lê esta temperatura, converte-a para a escala Celsius, e exibe o resultado. Para fazer a conversão, defina uma função celsius :: Double -> Double que recebe a temperatura na escala Fahrenheit e resulta na temperatura correspondente na escala Celsius. Use a seguinte equação para a conversão: C = 5 (F 32) 9 onde F é a temperatura na escala Fahrenheit e C é a temperatura na escala Celsius. Use a função celsius na definição de main. A digitação da temperatura em Fahrenheit deve ser feita na mesma linha onde é exibida a mensagem que a solicita. 50/73

51 Exemplo: peso ideal Escrever um programa em Haskell que recebe a altura e o sexo de uma pessoa e calcula e mostra o seu peso ideal, utilizando as fórmulas constantes na tabela a seguir. onde h é a altura da pessoa. sexo peso ideal masculino 72.7 h 58 feminino 62.1 h /73

52 Exemplo: peso ideal (cont.) module Main (main) where import System.IO (stdout, hsetbuffering, BufferMode(NoBuffering)) import Data.Char (toupper) main :: IO () main = do hsetbuffering stdout NoBuffering putstr "Altura: " h <- readln putstr "Sexo (f/m): " s <- getline case toupper (head s) of F -> putstrln ("Peso ideal: " ++ show (62.1 * h )) M -> putstrln ("Peso ideal: " ++ show (72.7 * h - 58)) _ -> putstrln "Sexo inválido" 52/73

53 Exemplo: média de 3 notas Faça um programa que receba três notas de um aluno, e calcule e mostre a média aritmética das notas e a situação do aluno, dada pela tabela a seguir. média das notas menor que 3 entre 3 (inclusive) e 7 acima de 7 (inclusive) situação reprovado exame especial aprovado 53/73

54 Exemplo: média de 3 notas (cont.) module Main (main) where import System.IO (stdout, hsetbuffering, BufferMode(NoBuffering)) prompt :: Read a => String -> IO a prompt msg = do putstr msg readln main :: IO () main = do hsetbuffering stdout NoBuffering n1 <- prompt "Nota 1: " n2 <- prompt "Nota 2: " n3 <- prompt "Nota 3: " let media = (n1 + n2 + n3)/3 putstrln ("Média: " ++ show media) putstr "Situação: " if media < 3 then putstrln "reprovado" else if media < 7 then putstrln "exame especial" else putstrln "aprovado" 54/73

55 Exemplo: raízes da equação do segundo grau Faça um programa que leia os coeficientes de uma equação do segundo grau e calcule e mostre suas raízes reais, caso existam. 55/73

56 Exemplo: raízes da equação do segundo grau (cont.) module Main (main) where import System.IO (stdout, hsetbuffering, BufferMode(NoBuffering)) raizes2grau a b c d > 0 = [ (-b + sqrt d)/(2*a), (-b - sqrt d)/(2*a) ] d == 0 = [ -b/(2*a) ] otherwise = [ ] where d = b^2-4*a*c prompt mensagem = do { putstr mensagem; readln } main = do hsetbuffering stdout NoBuffering putstrln "Cálculo das raízes da equação do segundo grau" putstrln "a x^2 + b x + c = 0" a <- prompt "Coeficiente a: " b <- prompt "Coeficiente b: " c <- prompt "Coeficiente c: " case raizes2grau a b c of [r1,r2] -> putstrln ("Raízes: " ++ show r1 ++ " e " ++ show r2) [r] -> putstrln ("Raíz: " ++ show r) [] -> putstrln "Não há raízes reais" 56/73

57 Exercícios Exercício 4 A prefeitura de Contagem abriu uma linha de crédito para os funcionários estatutários. O valor máximo da prestação não poderá ultrapassar 30% do salário bruto. Fazer um programa que permita entrar com o salário bruto e o valor da prestação, e informar se o empréstimo pode ou não ser concedido. Exercício 5 Crie um programa que leia a idade de uma pessoa e informe a sua classe eleitoral: não eleitor: abaixo de 16 anos; eleitor obrigatório: entre 18 (inclusive) e 65 anos; eleitor facultativo: de 16 até 18 anos e acima de 65 anos (inclusive). 57/73

58 Exercícios (cont.) Exercício 6 Faça um programa que apresente o menu a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários para executar a operação, e mostre o resultado Opções: Imposto 2. Novo salário 3. Classificação Digite a opção desejada: Verifique a possibilidade de opção inválida. Na opção 1 receba o salário de um funcionário, calcule e mostre o valor do imposto sobre o salário usando as regras a seguir: 58/73

59 Exercícios (cont.) salário taxa de imposto Abaixo de R$500,00 5% De R$500,00 a R$850,00 15% Acima de R$850,00 10% Na opção 2 receba o salário de um funcionário, calcule e mostre o valor do novo salário, usando as regras a seguir: salário Acima de R$1.500,00 De R$750,00 (inclusive) a R$1.500,00 (inclusive) De R$450,00 (inclusive) a R$750,00 Abaixo de R$450,00 aumento R$25,00 R$50,00 R$75,00 R$100,00 Na opção 3 receba o salário de um funcionário e mostre sua classificação usando a tabela a seguir: salário Até R$750,00 (inclusive) Acima de R$750,00 classificação mal remunerado bem remunerado 59/73

60 Tópicos 1 Interação com o mundo 2 Ações de saída padrão 3 Ações de entrada padrão 4 Programa em Haskell 5 Combinando ações de entrada e saída 6 Exemplos de programas interativos 7 Saída bufferizada 8 A função return 60/73

61 A função return return :: a -> IO a Às vezes é necessário escrever uma ação de E/S que não faz nenhuma interação com o mundo e retorna um valor previamante especificado. A função return recebe um valor e resulta em uma ação de E/S que não interage com o mundo e retorna o valor. 61/73

62 Exemplo: exibir uma sequência Faça um programa que exiba todos os números naturais pares menores ou iguais a /73

63 Exemplo: exibir uma sequência (cont.) module Main (main) where mostralista :: Show a => [a] -> IO () mostralista xs null xs = return () otherwise = do putstrln (show (head xs)) mostralista (tail xs) main :: IO () main = mostralista [0,2..30] 63/73

64 Exemplo: somar uma sequência Escreva um programa que repetidamente lê uma sequência de números (um por linha) até encontrar o valor zero, e mostra a soma dos números lidos. 64/73

65 Exemplo: somar uma sequência (cont.) -- solução sem recursividade de cauda module Main (main) where main = do putstrln "Digite uma sequência de números (um por linha)" putstrln "Para terminar digite o valor zero" soma <- leresomar putstr "A soma dos números digitados é " putstrln (show soma) leresomar = do n <- readln if n == 0 then return 0 else do somaresto <- leresomar return (n + somaresto) 65/73

66 Exemplo: somar uma sequência (cont.) -- solução com recursividade de cauda module Main (main) where main = do putstrln "Digite uma sequência de números (um por linha)" putstrln "Para terminar digite o valor zero" soma <- leresomar 0 putstr "A soma dos números digitados é " putstrln (show soma) leresomar total = do n <- readln if n == 0 then return total else leresomar (total + n) 66/73

67 Exemplo: somar uma sequência (cont.) -- solução que separa a leitura do processamento -- sem recursividade de cauda module Main (main) where main = do putstrln "Digite uma sequência de números (um por linha)" putstrln "Para terminar digite o valor zero" lista <- lerlista putstr "A soma dos números digitados é " putstrln (show (sum lista)) lerlista = do x <- readln if x == 0 then return [] else do resto <- lerlista return (x:resto) 67/73

68 Exemplo: somar uma sequência (cont.) -- solução que separa a leitura do processamento -- com recursividade de cauda module Main (main) where main = do putstrln "Digite uma sequência de números (um por linha)" putstrln "Para terminar digite o valor zero" lista <- lerlista [] putstr "A soma dos números digitados é " putstrln (show (sum lista)) lerlista xs = do x <- readln if x == 0 then return (reverse xs) else lerlista (x:xs) 68/73

69 Exercícios Exercício 7 Faça um programa que leia um número natural n, e então leia outros n números e calcule e exiba a soma destes números. Exercício 8 Faça um programa que leia uma seqüência de números não negativos e determine a média aritmética destes números. A entrada dos números deve ser encerrada com um número inválido (negativo). 69/73

70 Exercícios (cont.) Exercício 9 Um funcionário de uma empresa recebe aumento salarial anualmente. O primeiro aumento é de 1,5% sobre seu salário inicial. Os aumentos subsequentes sempre correspondem ao dobro do percentual de aumento do ano anterior. Faça uma aplicação onde o usuário deve informar o salário inicial do funcionário, o ano de contratação e o ano atual, e calcula e exibe o seu salário atual. 70/73

71 Exercícios (cont.) Exercício 10 Faça uma aplicação para fechamento das notas de uma disciplina. Cada aluno recebe três notas nas atividades desenvolvidas. O usuário deverá informar a quantidade de alunos na turma, e em seguida as notas de cada aluno. Calcule e exiba: a média aritmética das três notas de cada aluno, a situação do aluno, dada pela tabela seguinte a média da turma média aritmética até 3 entre 3 (inclusive) e 7 acima de 7 (inclusive) o percentual de alunos aprovados o percentual de alunos em exame especial o percentual de alunos reprovados situação reprovado exame especial aprovado 71/73

72 Exercícios (cont.) Exercício 11 Faça um programa para corrigir provas de múltipla escolha que foram aplicadas em uma turma de alunos. O usuário deverá informar: o gabarito (as respostas corretas de cada questão) da prova a matrícula e as respostas de cada aluno da turma As notas devem ser normalizadas na faixa de zero a dez. Assim para calcular a nota obtida em uma prova, divida a soma dos pontos obtidos (um ponto para cada resposta correta) pelo número de questões na prova, e multiplique o resulado por dez. Calcule e mostre: 1. a matrícula e a nota de cada aluno 2. a taxa (em porcentagem) de aprovação, sabendo-se que a nota mínima para aprovação é sete. 72/73

73 Fim 73/73

Programas Interativos

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

Leia mais

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 /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

Leia mais

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. 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

Leia mais

Programas Interativos

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

Leia mais

Simulação de Caixa Automático

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

Leia mais

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 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

Leia mais

Programação Funcional 9 a Aula Programas interativos

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.

Leia mais

Entrada e Saída em Haskell Tutorial

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

Leia mais

Expressão Condicional

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

Leia mais

3.1 - Funções para manipular dados de entrada e saída padrão

3.1 - Funções para manipular dados de entrada e saída padrão 1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado

Leia mais

Comandos de desvio de fluxo. Expressões lógicas.

Comandos de desvio de fluxo. Expressões lógicas. Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 Semana 03: Comandos de desvio de fluxo. Expressões lógicas. Aula #7 22/03/2012

Leia mais

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. 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

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

Funções de Ordem Superior

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

Leia mais

Linguagem C. André Tavares da Silva.

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

Leia mais

Números Aleatórios Argumentos da Linha de Comando Arquivos

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

Leia mais

Estrutura de Seleção Múltipla Switch

Estrutura de Seleção Múltipla Switch Estrutura de Seleção Múltipla Switch Disciplina: Algoritmos e Programação Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé Email: lucianobrum18@gmail.com Horários de atendimento:

Leia mais

1ª Lista de Exercícios

1ª Lista de Exercícios Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule

Leia mais

Características da Linguagem C

Características da Linguagem C Características da Linguagem C Na aula passada, foi implementado o exemplo utilizado do reajuste salarial O resultado impresso pode ser visualizado da seguinte forma: Características da Linguagem C Introdução

Leia mais

Ambiente de desenvolvimento

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

Leia mais

PROGRAMAÇÃO em C. Vitor Valerio de Souza Campos

PROGRAMAÇÃO em C. Vitor Valerio de Souza Campos PROGRAMAÇÃO em C Vitor Valerio de Souza Campos Algoritmos x Programação Algoritmo é um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito (Orth, 2001). Programa

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Introdução à Programação

Introdução à Programação Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 5 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/63 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

Exercícios: Vetores e Matrizes

Exercícios: Vetores e Matrizes Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Faça um programa que possua um vetor

Leia mais

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. 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

Leia mais

Agenda. Programação estruturada. Sequência. Decisão: Desvio de fluxo INTRODUÇÃO. Expressões lógicas.

Agenda. Programação estruturada. Sequência. Decisão: Desvio de fluxo INTRODUÇÃO. Expressões lógicas. Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 Semana 03.. Material Didático Unificado. Aga ; ; 1 2 Programação estruturada

Leia mais

Comandos de desvio de fluxo. Expressões lógicas.

Comandos de desvio de fluxo. Expressões lógicas. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 2012/01 Semana 03 Comandos de desvio de fluxo. Expressões lógicas.

Leia mais

LISTA DE EXERCÍCIOS: 1ª Unidade

LISTA DE EXERCÍCIOS: 1ª Unidade LISTA DE EXERCÍCIOS: 1ª Unidade 1) Dado o trecho de código a seguir, qual será a saída se as entradas forem, respectivamente: A) 0 e 1 B) 2 e 3 C) 1 e 1 #include int main(){ float num1, num2;

Leia mais

Exercícios Repetição

Exercícios Repetição Curso de Engenharia de Controle e Automação Disciplina: Informática para a Automação Professor: Marcelo Cendron Exercícios Repetição 1.1 8.3 Exercícios 1. Faça um programa utilizando o comando while, que

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 6 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.2 1/66 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

Exercícios de Repetição

Exercícios de Repetição Exercícios de Repetição 1. Implemente um trecho de código no método main que faz a leitura de 10 idades de nadadores, uma idade por vez, e a cada idade lida escreva na tela a categoria em que o nadador

Leia mais

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 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

Leia mais

Programação Funcional Aulas 9, 10 & 11

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

Leia mais

3ª Lista de Exercícios de Programação I

3ª Lista de Exercícios de Programação I 3ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C, apoiadas por representação em algoritmo para planejamento. 1. Desenvolva um programa que leia dois valores a

Leia mais

LISTA DE EXERCÍCIOS - ro. 04

LISTA DE EXERCÍCIOS - ro. 04 USP ICMC SSC SSC0100 - Introdução à Ciência da Computação I (Prática) Professor responsável: Fernando Santos Osório Semestre: 2009/1 Horário: Terça 14h20 (Turma A2) E-mail: fosorio.at. icmc.usp.br fosorio.at.

Leia mais

CADERNO DE EXERCÍCIOS ALGORITMOS

CADERNO DE EXERCÍCIOS ALGORITMOS J. EXERCÍCIOS SOBRE MODULARIZAÇÃO 77. Faça uma função que recebe um número inteiro por parâmetro e retorna verdadeiro se ele for par e falso se for ímpar. 78. Escreva um programa que leia o raio de um

Leia mais

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores 1- Faça um programa que preencha um vetor com seis elementos numéricos inteiros, calcule e mostre: a.

Leia mais

Sintaxe. Observações: #include <stdio.h> #include <conio.h> void main ( ) { int num, dobro; clrscr ( ); printf ( Digite i um número: );

Sintaxe. Observações: #include <stdio.h> #include <conio.h> void main ( ) { int num, dobro; clrscr ( ); printf ( Digite i um número: ); scanf ( ) 1 Sintaxe scanf ( expr. de controle, lista de argumentos ); Observações: A expressão de controle deve conter a formatação do tipo de variável a ser lida. scanf ( %f f, &num ); A lista de argumentos

Leia mais

PROGRAMAÇÃO COMPUTACIONAL

PROGRAMAÇÃO COMPUTACIONAL PROGRAMAÇÃO COMPUTACIONAL LINGUAGEM C/C++ REVISÃO 1 ANDRÉ LUÍS DUARTE Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef

Leia mais

Programação Básica. Estrutura de um algoritmo

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

Leia mais

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Passo-a-passo para desenvolver um Programa usando a Linguagem Python Cursos: Engenharia de Produção / Tecnólogo em Gestão da Qualidade Disciplina: Informática Professora: Flávia Pereira de Carvalho Passo-a-passo para desenvolver um Programa usando a Linguagem Python 1)

Leia mais

Linguagem C (repetição)

Linguagem C (repetição) Linguagem C (repetição) André Tavares da Silva andre.silva@udesc.br Exercício Escrever um programa que conte (mostre na tela) os números de 1 a 100. Comandos aprendidos até o momento: printf, scanf, getchar,

Leia mais

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

Introdução à Ciência da Computação SCC0120 Prof. Zhao Liang. Aula de Laboratório 1: Operadores, comandos básicos e comando IF 27/03/2012

Introdução à Ciência da Computação SCC0120 Prof. Zhao Liang. Aula de Laboratório 1: Operadores, comandos básicos e comando IF 27/03/2012 Introdução à Ciência da Computação SCC0120 Prof. Zhao Liang Aula de Laboratório 1: Operadores, comandos básicos e comando IF 27/03/2012 PARTE 1: OPERADORES E COMANDOS BÁSICOS EXEMPLO 1.1: Programa que

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional

Leia mais

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

Leia mais

Algoritmos e Programação

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;

Leia mais

Programação I PRG Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral

Programação I PRG Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral Programação I PRG29002 Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral 2016-1 Revisão da aula anterior Linguagens compiladas vs interpretadas Para que servem as bibliotecas? O que

Leia mais

Programação Computacional C/C++

Programação Computacional C/C++ exatasfepi.com.br Programação Computacional C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13 Conceitos Fundamentos Estrutura sequencial Estruturas

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo

Leia mais

LISTA DE EXERCÍCIOS: 1ª Unidade

LISTA DE EXERCÍCIOS: 1ª Unidade LISTA DE EXERCÍCIOS: 1ª Unidade 1) Dado o trecho de código a seguir, qual será a saída se as entradas forem, respectivamente: A) 0 e 1 B) 2 e 3 C) 1 e 1 Program Numeros; var num1, num2: real; begin writeln('digite

Leia mais

Linguagem C: Introdução

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

Leia mais

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO.

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO. Exercícios 65 ao 72 - Estrutura de Repetição: Enquanto 65) Escreva um algoritmo para ler um valor entre 1 (inclusive) e 10 (inclusive). Se o valor lido não estiver entre 1 (inclusive) e 10 (inclusive),

Leia mais

Algoritmos e Lógica de Programação. Prof. Marcos Antonio Estremoe. 1 - Faça um programa que imprima a frase: Bem Vindo à Engenharia Firb 2014.

Algoritmos e Lógica de Programação. Prof. Marcos Antonio Estremoe. 1 - Faça um programa que imprima a frase: Bem Vindo à Engenharia Firb 2014. Algoritmos e Lógica de Programação Prof. Marcos Antonio Estremoe 1 - Faça um programa que imprima a frase: Bem Vindo à Engenharia Firb 2014. 2 - Faça um programa que imprima a palavra Bem Vindo à Engenharia

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Linguagem e Ambiente Scratch. Introdução à Laboratório Prof.Alfredo Parteli Gomes

Linguagem e Ambiente Scratch. Introdução à Laboratório Prof.Alfredo Parteli Gomes Linguagem e Ambiente Scratch Introdução à Laboratório Prof.Alfredo Parteli Gomes Scratch Linguagem de programação que visa facilitar a criação de histórias interativas, jogos e animações Informações e

Leia mais

4ª Lista de Exercícios de Programação I

4ª Lista de Exercícios de Programação I 4ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um algoritmo que leia 10 valores inteiros armazenando-os em um vetor e depois calcule a soma dos valores

Leia mais

1 ESTRUTURA SEQUENCIAL

1 ESTRUTURA SEQUENCIAL Noções de Programação de Computadores Prof. Eduardo 1 1 ESTRUTURA SEQUENCIAL algoritmo Nome_do_algoritmo declaração de variáveis variáveis inicio bloco de comandos; fim_algoritmo 1.1 Declaração de variáveis

Leia mais

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes CI208 - Programação de Computadores Aula 12: Funções Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática

Leia mais

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Até o momento da disciplina vimos comandos de entrada, processamento e saída

Leia mais

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. e saída Biblioteca stdio.h Comandos Função scanf() Função gets() Função getchar() Material cedido pelo prof. Daniel Callegari scanf() Rotina de entrada que lê todos os tipos de dados. Protótipo: int scanf(const

Leia mais

Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018.

Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018. 1 INSTRUÇÃO DE SAÍDA Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018 Exercícios 1 Instrução de Saída 1. Implementar um programa

Leia mais

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação Tipos de Dados, Variáveis e Entrada e Saída em C DCC 120 Laboratório de Programação Variáveis Uma variável representa um espaço na memória do computador para armazenar um determinado tipo de dado. Em C,

Leia mais

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Introdução ao SciLab. SciLab O que é? Onde obter o programa: Introdução ao SciLab SciLab O que é? SciLab é uma plataforma interativa para computação numérica composta de uma rica coleção de algoritmos numéricos e de uma linguagem de programação associada. CN04 2010

Leia mais

PROGRAMAÇÃO FUNCIONAL [BCC222] 1 Jogo Adivinha o Número. Teste 4 (2018 1) 23 de maio de 2018 Matrícula: Nome:

PROGRAMAÇÃO FUNCIONAL [BCC222] 1 Jogo Adivinha o Número. Teste 4 (2018 1) 23 de maio de 2018 Matrícula: Nome: PROGRAMAÇÃO FUNCIONAL [BCC222] Teste 4 (2018 1) 23 de maio de 2018 Matrícula: Nome: Departamento de Computação Universidade Federal de Ouro Preto Prof. José Romildo Malaquias 1 Jogo Adivinha o Número Ao

Leia mais

Programação científica C++

Programação científica C++ Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 3 Exercícios Escreva um programa para armazenar o valor 20 em uma variável X e o valor 5 em uma variável Y. A seguir, armazenar a soma do valor

Leia mais

JavaScript (ou JScript)

JavaScript (ou JScript) 1. Introdução JavaScript (ou JScript) Uma linguagem como o JavaScript permite criar interfaces interativas na web (permite a interação do usuário). Para desenvolver web sites interativos precisamos de

Leia mais

Programação Funcional

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

Leia mais

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 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

Leia mais

Expressões Condicionais

Expressões Condicionais Programação Funcional Capítulo 4 Expressões Condicionais José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2013.1 1/38 1 Combinando funções 2 Expressão condicional 3

Leia mais

Expressões Condicionais

Expressões Condicionais Programação Funcional Capítulo 4 Expressões Condicionais José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/39 1 Combinando funções 2 Expressão condicional 3

Leia mais

exatasfepi.com.br Informática C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13

exatasfepi.com.br Informática C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13 exatasfepi.com.br Informática C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13 Conceitos Fundamentos Estrutura sequencial Estruturas de seleção

Leia mais

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória

Leia mais

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP Programação de Computadores 1 Lista 2 Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP 0.1 Vetores e Cadeias de Caracteres 1. Codifique um programa que leia e armazene duas notas de 10 alunos e calcule

Leia mais

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 7 Expressões Lambda José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/64 1 Valores de primeira classe 2 Expressão lambda 3 Aplicação

Leia mais

2ª Lista de Exercícios de Programação I

2ª Lista de Exercícios de Programação I 2ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. 1. Faça um programa que leia um número inteiro maior que zero e informe se é par ou ímpar. * 2. Faça um programa

Leia mais

1ª LISTA DE EXERCÍCIOS

1ª LISTA DE EXERCÍCIOS UNIVERSIDADE SALGADO DE OLIVEIRA CURSO DE SISTEMAS DE INFORMAÇÃO DISCIPLINA: TEORIA DA COMPUTAÇÃO E ALGORITMOS PROF: GIULIANO PRADO DE MORAIS GIGLIO 1ª LISTA DE EXERCÍCIOS 1) Sobre variáveis, responda

Leia mais

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á 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

Leia mais

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU Aula 6 Oficina de Programação Estruturas Condicionais no C Profa. Elaine Faria UFU - 2017 Estrutura Condicional Simples Algoritmo se () entao instrução fimse A instrução só será executada se

Leia mais

LP II Estrutura de Dados

LP II Estrutura de Dados LP II Estrutura de Dados Linguagem C Seleção e Repetição Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Estruturas de Seleção Simples Composta Aninhada Estruturas de

Leia mais

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de

Leia mais

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33

Leia mais

Material sobre Funções AEDS 1

Material sobre Funções AEDS 1 Material sobre Funções AEDS 1 1 Funções - revisão Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada e definem um valor de saída 2 Funções -

Leia mais

SSC 0301 IC para Engenharia Ambiental

SSC 0301 IC para Engenharia Ambiental SSC 0301 IC para Engenharia Ambiental Tipos, variáveis e expressões Prof. Márcio Delamaro e Prof. Jorge Luiz e Silva delamaro@icmc.usp.br; jsilva@icmc.usp.br SSC 0301 IC para Engenharia Ambiental ICMC/USP

Leia mais

Lista de exercícios 1 (Cast)

Lista de exercícios 1 (Cast) Lista de exercícios 1 (Cast) 1)Faça um programa que receba um caractere e retorna o valor decimal equivalente da tabela ascii, usando cast. 2)Faça um programa que receba dois caracteres, some os caracteres

Leia mais

Lista de Exercícios 02

Lista de Exercícios 02 Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Disciplina: BCC201 Introdução a Programação Professores: Túlio A. M. Toffolo e Puca

Leia mais

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Introdução O objetivo desta aula prática é exercitar comandos de entrada e saída simples

Leia mais

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Introdução à Programação. Expressões Booleanas e Comandos Condicionais Introdução à Programação Expressões Booleanas e Comandos Condicionais Comandos Condicionais Misture os ingredientes Unte forma com manteiga Despeje a mistura na forma Algoritmo para preparação de bolo

Leia mais

Entrada e Saída de Dados

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

Leia mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Entrada e saída: escrevendo na tela Veja uma comparação entre um programa Portugol e seu equivalente em C: Inicio Inteiro

Leia mais

Aula 4: Introdução à Linguagem C++

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

Leia mais

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas.

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas. Roteiro 2 Estrutura Sequencial em C/C++ A estrutura sequencial na linguagem C/C++ #include Bloco de comandos; Bibliotecas são arquivos contendo várias funções que podem ser incorporadas

Leia mais