Upload
phunghuong
View
214
Download
0
Embed Size (px)
Citation preview
CCO 016 / COM 110Fundamentos de Fundamentos de
ProgramaçãoProgramação
Universidade Federal de Itajubá
Prof. Roberto Affonso da Costa Junior
Entrada dos dadosEntrada 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.
• 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 10Exemplo 10
inteiro a, b, c
a ← 20
b ← 10
c ← a + b
imprima ( “a = “, a )
imprima ( “b = “, b )
imprima ( “c = “, c )
Exemplo 11Exemplo 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 )
Saída visualizadaSaída visualizada
entre com o valor de a 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 = ........
ObservaçõesObservaçõ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
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 )
Saída visualizadaSaída visualizada
entre com o valor de a 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 14Exemplo 14Dados 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 multipli-cado 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 DadosEntrada 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 tecladoEntrada de dados via teclado
● entrada simples
algoritmo:
leia ( x )
em linguagem C:
scanf ( “%d”, &x );
ConsideraçõesConsideraçõ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 dadosExecuçã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
Exemplo 1Exemplo 1# include <stdio.h>
int main ( ) {
// definicao das variaveisint x;
// entrada dos dados printf ( “entre com um valor numerico\n” );
scanf ( “%d”, &x );
// saida dos resultadosprintf ( “valor lido para x = %5d\n”, x );
return 0;}
ConsideraçõesConsideraçõ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 2Exemplo 2
int x, y;
float a, b, c;
char p;
scanf ( “%d %f %d %c”, &y, &b, &x, &p );
Antes do %c, sempretem espaço em branco
ConsideraçõesConsiderações1. 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;
AlternativaAlternativa
int x, y; float a, b, c; char p;
scanf ( “%d”, &y ); scanf ( “%f”, &b ); scanf ( “%d”, &x ); scanf ( “ %c”, &p );
Lembre-se de colocaro espaço em branco
ConsideraçõesConsideraçõ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 CadeiaEntrada 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 3Exemplo 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 dadosExemplo 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?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);
44
ExercíciosExercícios
• https://www.urionlinejudge.com.br/judge/en/login
– URI 1957, 2757 a 2766, menos o 2760 (está errado)
EstudoEstudo
Visite os sites:
https://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm
http://www.cplusplus.com/reference/cstdio/scanf/
http://homepages.dcc.ufmg.br/~rodolfo/aedsi-2-10/printf_scanf/printfscanf.html
TreinamentoTreinamento
Extremamente BásicoExtremamente BásicoLeia 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/view/1001
TreinamentoTreinamento
Saída
Imprima a variável X conforme exemplo abaixo, com um espaço em branco antes e depois da igualdade.