CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá
AULA 05 Entrada de dados Leia scanf
Entrada dos dados Entrada de dados compreende a operação realizada pelo usuário do programa de fornecer o conteúdo de uma informação ao computador e este armazenar esta informação numa variável. Os dispositivos disponíveis para a execução desta tarefa são: o teclado, um arquivo.
Embora a operação de atribuição tenha a mesma função, ela é operacionalmente diferente da entrada de dados, pois enquanto a atribuição, atribui um valor fixo e conhecido no programa, a entrada de dados permite ao usuário fornecer qualquer valor à variável em tempo de execução do programa. Para valores conhecidos e constantes, utiliza-se atribuição; Para valores não conhecidos a priori, utiliza-se entrada de dados.
Em linguagem algorítmica tem-se: leia ( informação ) Esta informação deve ser o nome de uma variável, onde o valor fornecido pelo usuário do programa vai ser armazenado.
Exemplo 8 inteiro soma_valor, media_idades leia ( soma_valor ) leia ( media_idades )
Ou ainda: leia ( soma_valor, media_idades )
Ou ainda, com identificação da entrada para o usuário: imprima ( entre com a soma dos valores ) leia ( soma_valor ) imprima ( entre com a media das idades ) leia ( media_idades )
Exemplo 9 inteiro a, b, c a 20 b 10 c a + b imprima ( c )
Saída visualizada 30
Exemplo 10 inteiro a, b, c a 20 b 10 c a + b imprima ( a =, a ) imprima ( b =, b ) imprima ( c =, c )
Saída visualizada a = 10 b = 20 c = 30
Exemplo 11 real x, y, pi pi 3.14159 x pi / 2 y sen(x) imprima ( y )
Saída visualizada 1.0
Exemplo 11 inteiro a, b, c imprima ( entre com o valor de a ) leia ( a ) imprima ( entre com o valor de b ) leia ( b ) c a + b imprima ( Valores Lidos: ) imprima ( a =, a ) imprima ( b =, b ) imprima ( Soma dos valores lidos: ) imprima ( c =, c )
entre com o valor de a Saída visualizada neste ponto o usuário digita um valor entre com o valor de b neste ponto o usuário digita um valor Valores lidos: a =... b =... Soma dos valores lidos: c =...
Operações Especiais variável variável (operador) valor
Exemplo 12 inteiro a, b a 10 imprima ( a =, a ) a a + 2 imprima ( a =, a )
Saída visualizada a = 10 a = 12
Observações É necessário neste caso um valor inicial para a variável É chamada de acumulador Quando o valor de adição é igual a hum, é chamada somador
Exemplo 13 Calcular o resto da divisão entre dois valores numéricos dados
inteiro a, b, resto_ab imprima ( entre com o valor de a ) leia ( a ) imprima ( entre com o valor de b ) leia ( b ) resto_ab resto ( a, b ) imprima ( Valores Lidos: ) imprima ( a =, a ) imprima ( b =, b ) imprima ( Resto da divisão dos valores lidos =, resto_ab )
entre com o valor de a Saída visualizada neste ponto o usuário digita um valor entre com o valor de b neste ponto o usuário digita um valor Valores lidos: a =... b =... Resto da divisão dos valores lidos =...
Exemplo 14 Dados os 3 dígitos de um número inteiro, fazer um algoritmo para construir outro numero constituído de 4 dígitos, de acordo com as seguintes regras: Os 2 primeiros dígitos, contados da esquerda para a direita são iguais aos dígitos dados; O terceiro dígito é obtido através do resto da divisão entre a soma dos 3 dígitos dados por 3
O quarto dígito é o chamado dígito de controle e é calculado da seguinte forma: Primeiro digito dado somado ao segundo digito dado multiplicado por 3; tudo isto somado ao terceiro digito calculado multiplicado por 5; O digito de controle é obtido calculando o resto da soma anterior por 7
inteiro dig_dado1, dig_dado2, dig_dado3 inteiro dig_novo1, dig_novo2, dig_novo3, dig_novo4 inteiro auxiliar, soma_digitos imprima ( entre com os 3 digitos ) leia ( dig_dado1, dig_dado2, dig_dado3 ) dig_novo1 dig_dado1 dig_novo2 dig_dado2 soma_digitos dig_dado1 + dig_dado2 + dig_dado3 dig_novo3 resto ( soma_digitos, 3 )
auxiliar dig_dado1 + ( dig_dados2 * 3 ) auxiliar auxiliar + ( dig_novo3 * 5 ) dig_novo4 resto ( auxiliar, 7 ) imprima ( numero dado:, dig_dado1, dig_dado2, dig_dado3 ) imprima ( numero obtido:, dig_novo1, dig_novo2, dig_novo3, dig_novo4 )
Entrada de Dados A entrada de dados pode ser feita de duas formas: via teclado do computador Neste caso o usuário do programa digita os dados necessários ao programa no momento em que este os solicita ( programa interativo ); - assunto desta aula via arquivo de dados Neste caso o usuário monta, através de editor de texto, um arquivo contendo os dados necessários ao programa, que os lê diretamente sem a intervenção do usuário; - assunto de uma próxima aula
Entrada de dados via teclado entrada simples algoritmo: leia ( x ) em linguagem C: scanf ( %d, &x );
Considerações Aqui não é usado o caractere especial \n como na saída de dados; Observar a utilização dos códigos de formatos; É obrigatório para todos os tipos, exceto cadeia, a utilização do sinal & antes do nome da variável de entrada;
Execução da entrada de dados scanf ( %d, &x ); Esta declaração indica ao programa que este deve esperar pela digitação pelo usuário, de um valor numérico inteiro que irá ser armazenado na variável x, logo após o usuário digitar o comando Enter do teclado, indicando assim o envio da informação ao computador; Biblioteca: stdio.h
# include <stdio.h> Exemplo 1 int main ( ) { // definicao das variaveis int x; // entrada dos dados printf ( entre com um valor numerico\n ); scanf ( %d, &x ); // saida dos resultados printf ( valor lido para x = %5d\n, x ); } return 0;
Considerações Observar a necessidade de uma instrução que indica a interação entre o usuário e o programa: printf ( entre com um valor numerico\n ); Sem ela, o usuário não saberia o que fazer quando o programa estivesse sendo executado; O usuário é responsável pelo conhecimento antecipado do tipo da variável que está sendo inserida, caso contrário, a inserção de variáveis diferentes dos tipos definidos para elas, causam erros na execução do programa;
Deve-se formatar de forma mais simples possível os dados de entrada, caso contrário, o usuário terá muito trabalho digitando os dados num formato complexo. Uma vez armazenado na memória a informação é tratada normalmente como já visto anteriormente, quando foi apresentado a atribuição de valores; Desta forma, a impressão da variável pode ser feita conforme a necessidade do programa, independentemente da forma da entrada da mesma. Observe no exemplo anterior, que a variável x tem o formato %d na entrada e %5d na saída.
Exemplo 2 int x, y; float a, b, c; char p; scanf ( %d %f %d %c, &y, &b, &x, &p ); Antes do %c, sempre tem espaço em branco
Considerações 1. Neste caso, são esperados 4 valores na entrada de dados; 3. Portanto, o usuário deve digitar os dados na ordem em que eles são solicitados; 5. Observar que as variáveis devem corresponder aos respectivos formatos;
4. Os dados podem ser digitados na mesma linha, separados por um ou mais espaços em branco, e após a digitação dos mesmos, digita-se o comando Enter do teclado; 9. Os dados podem ser também fornecidos, na ordem solicitada, digitando-se separadamente cada um deles, seguidos do comando Enter do teclado;
Alternativa int x, y; float a, b, c; char p; scanf ( %d, &y ); scanf ( %f, &b ); scanf ( %d, &x ); scanf ( %c, &p ); Lembre-se de colocar o espaço em branco
Considerações Aqui são válidas todas as considerações do exemplo anterior, exceto a quarta, pois como se tem 4 comandos de scanf, obrigatoriamente tem-se 4 entradas separadas. Ou seja, neste exemplo, obrigatoriamente a forma de entrada tem que ser aquela especificada na quinta consideração anterior.
Entrada de dados para Cadeia char titulo[30]; scanf ( %s, titulo ); Observar que neste caso, o nome da variável não é antecedido pelo símbolo & como nos casos anteriores. todas as observações anteriores são válidas para este caso;
Neste caso é esperado que o usuário digite uma cadeia ( alfanumérica ) e após isto digite o comando Enter do teclado; Se tiver mais de uma variável no comando de entrada, os valores devem ser digitados da mesma forma que os casos anteriores, ou seja: Se na mesma linha, os dados deverão ser separados por um ou mais espaços em branco; no final do comando digitar Enter Se em linhas diferentes, cada dado é digitado na sua respectiva linha, e após o término da mesma, digitar o comando Enter
Observar também que o código de formato %s na entrada de dados indica que o valor alfanumérico a ser digitado não tem espaços em branco. Portanto, no programa anterior são válidos os seguintes valores para a variável titulo: Efei Casa Universidade
No entanto, se for necessário o armazenamento de um valor alfanumérico que tenha espaços em branco em seu conteúdo, como por exemplo: Universidade Federal de Itajuba é necessário trocar-se o código de formato %s, na entrada de dados, pelo código %[^\n] na saída, independentemente da forma de entrada, uma cadeia só pode ser impressa, com o formato %s.
Exemplo 3 char primeiro_nome[15], sobrenome[30]; printf ( entre com seu primeiro nome\n ); scanf ( %s, primeiro_nome ); printf ( entre com seu sobrenome completo \n ); scanf ( %[^\n], sobrenome ); ( observar um espaço em branco antes do sinal de % ) printf ( nome completo: %s %s\n, primeiro_nome, sobrenome );
Exemplo de dados Suponha que o usuário entre com os seguintes valores respectivamente para as variáveis primeiro_nome e nome: RONALDO BUENO MARCONDES PORTELA Neste caso, a impressão teria o seguinte aspecto: nome completo: RONALDO BUENO MARCONDES PORTELA
O que faz o scanf? Dado os scanfs a seguir, estude o que eles irão fazer: scanf ( %d.%d, &m, &n); scanf ( %d/%d/%d, &dia, &mes, &ano); scanf ( %d.%d.%d-%d, &cpf1, &cpf2, &cpf3, &cpf4); scanf("%[^,],%[^,]",str1,str2);
Estudo Visite os sites: https://www.tutorialspoint.com/c_standard_library/c_func tion_scanf.htm http://www.cplusplus.com/reference/cstdio/scanf/ http://homepages.dcc.ufmg.br/~rodolfo/aedsi-2-10/printf_s canf/printfscanf.html
Treinamento Extremamente Básico Leia 2 valores inteiros e armazene-os nas variáveis A e B. Efetue a soma de A e B atribuindo o seu resultado na variável X. Imprima X conforme exemplo apresentado abaixo. Não apresente mensagem alguma além daquilo que está sendo especificado e não esqueça de imprimir o fim de linha após o resultado, caso contrário, você receberá "Presentation Error". https://www.urionlinejudge.com.br/judge/pt/problems/vie w/1001
Treinamento Entrada A entrada contém 2 valores inteiros.
Treinamento Saída Imprima a variável X conforme exemplo abaixo, com um espaço em branco antes e depois da igualdade.
Treinamento Exemplos Entrada 10 9-10 4 15-7 Entrada X = 19 X = -6 X = 8