• Nenhum resultado encontrado

Entrada de Dados na Linguagem C. Professor Adolfo Neto DAINF UTFPR Agosto de 2008

N/A
N/A
Protected

Academic year: 2021

Share "Entrada de Dados na Linguagem C. Professor Adolfo Neto DAINF UTFPR Agosto de 2008"

Copied!
25
0
0

Texto

(1)

   

Entrada de Dados na Linguagem C

Professor Adolfo Neto DAINF ­ UTFPR

(2)

Objetivos

Ao final desta aula o aluno será capaz de 

escrever programas em C utilizando a função 

SCANF para entrada de dados.

(3)

   

Roteiro

1)

A função SCANF(): definição e forma geral

2)

Lendo Valores Inteiros em Variáveis

3)

Lendo int, float e double com Scanf() 

4)

Usando Caracteres em Scanf() que Serão

Descartados

5)

Lendo String de Caracteres

6)

Formatando a Entrada de Scanf()

7)

Determinando o Número Máximo de Caracteres a

ser Lido

(4)

A Função SCANF()

● A função scanf( ) é uma das funções de entrada de dados da 

Linguagem  C  que  pode  ser  usada  para  ler  virtualmente  qualquer tipo de dado inserido por meio do teclado.

● Freqüentemente  ela  é  usada  para  a  entrada  de  números 

inteiros ou de ponto flutuante. 

● A forma geral da função scanf( ) é:

(5)

   

A Função SCANF()

● Os especificadores de  formato de  entrada  são precedidos por 

um sinal  %  e dizem à função  scanf(  ) qual tipo de dado deve  ser lido em seguida.

(6)

A Função SCANF()

● Os caracteres de conversão d, i, o, u e x podem ser precedidos 

por h para indicarem que um apontador para short ao invés de  int  aparece  na  lista  de  argumentos,  ou  por  l  (letra  ele)  para  indicar  que  um  apontador  para  long  aparece  na  lista  de  argumentos. 

● Semelhantemente, os caracteres de conversão e, f e g podem 

ser  precedidos  por  l  (letra  ele)  para  indicarem  que  um  apontador  para  double  ao  invés  de  float  está  na  lista  de  argumentos.

(7)

   

A Função SCANF()

● A  cadeia  de  formato  geralmente  contém  especificações  de 

conversão,  que  são  usadas  para  controlar  a  conversão  da  entrada. 

● A cadeia de formato pode conter:

– espaços, tabulações e novas linhas, que serão ignorados;

– caracteres  comuns  (não  %),  que  devem  combinar  com  o 

próximo caractere não­espaço do fluxo de entrada;

– especificações  de  conversão,  consistindo  no  caractere  %, 

um  caractere  *  opcional  de  supressão  de  atribuição,  um  número  opcional  especificando  um  tamanho  máximo  do  campo, um h ou l opcional indicando o tamanho do destino,  e um caractere de conversão.

(8)

#include <stdio.h> main(void)      {        int count;        /* Obs.: O espaço foi removido */        scanf("%d", &count);        printf("%d\n",count);      } Lendo Valores Inteiros em Variáveis

(9)

    #include <stdio.h> #include <stdlib.h> main(){     int i;     printf("Digite um numero inteiro:");     scanf("%d",&i);     printf("%d\n",i);     float j;     printf("Digite um numero real:");     scanf("%f",&j);     printf("%f\n",j);     double k;     printf("Digite um numero real:");     scanf("%lf",&k);     printf("%f\n",k); } Lendo int, float e double com Scanf()

(10)

#include <stdio.h> main()      {         int a,b=­1;          printf("Digite dois numeros separados por uma virgula:");          scanf("%d,%d", &a, &b);          printf("Numeros digitados: %d e %d",a,b);          /* Verifique o que acontece se voce NAO digitar uma virgula!!! */      } Usando Caracteres em Scanf() que Serão Descartados

(11)

    #include <stdio.h> main(void)      {        char nome[40];        scanf("%s", nome);        /* Experimente digitar só um nome e mais de um nome */        printf("%s", nome);      } Lendo String de Caracteres

(12)

Formatando a Entrada de Scanf()

● Os  itens  de  dados  de  entrada  devem  ser  separados  por 

espaços, tabulações ou novas linhas. 

● Pontuações  como  vírgula,  ponto­e­vírgula  e  semelhantes  não 

contam como operadores. 

● Isso significa que scanf(“%d%d”, &r, &c); aceitará uma entrada 

dos números 10 20, mas falhará com 10,20.

● Como  na  função  printf(  ),  os  códigos  de  formato  da  função 

scanf( ) devem ser correspondidos na ordem com as variáveis  que estão recebendo a entrada na lista de argumento.

(13)

   

Formatando a Entrada de Scanf()

● Um * colocado depois do % e antes do código de formato lerá 

um  dado  de  um  tipo  especificado,  mas  suprimirá  a  sua  atribuição. 

● Assim,  scanf(“%d%*c%d”,  &x,  &y);  dando­se  a  entrada  10/20, 

colocará o valor 10 em x descartando o sinal de divisão, e dará  a y o valor 20.

● Ainda  que  espaços,  tabulações  e  novas  linhas  sejam  usados 

como separadores de campos, quando da leitura de um único  caractere,  esses  últimos  são  lidos  como  qualquer  outro  caractere. 

● Por exemplo, com uma entrada de “x y”; scanf(“%c%c%c”, &a, 

&b, &c); retornará com o caractere “x” em a, um espaço em b e  o caractere “y” em c.

(14)

#include <stdio.h> main(void)       {         char str[40];         /* Experimente digitar o alfabeto inteiro para ver o que acontece */         scanf("%20s", str);         printf("%s",str);       } Determinando o Número Máximo de Caracteres a ser Lido 

(15)

    Determinando o Número Máximo de Caracteres a ser Lido Se o apontador de entrada é maior do que 20 caracteres,  uma chamada subseqüente para entrada começará onde  ela pára. Por exemplo, se for digitado  ABCDEFGHIJKLMNOPQRSTUVWXYZ em resposta à  chamada scanf( ), nesse exemplo, somente os 20 primeiros  caracteres, até o “T”, serão colocados em str por causa do  especificador de tamanho máximo. 

(16)

Determinando o Número Máximo de Caracteres a ser Lido Isso significa que os caracteres restantes “UVWXYZ” não  são usados. Se uma outra chamada à função scanf( ) é  feita, tal como scanf(“%s”, str); então “UVWXYZ” é  colocado em str. A entrada para o campo pode ser terminada, antes que o  campo de comprimento máximo seja alcançado, se um  caractere de espaço em branco é encontrado. Nesse caso, a função scanf( ) move­se para o próximo 

(17)

    Lendo Somente Caracteres Pré­DeterminadosA função scanf( ) inclui também uma característica muito  poderosa chamada scanset. Um scanset define uma lista de caracteres que serão  correspondidos por scanf(). A função scanf( ) continuará a ler caracteres enquanto eles  estiverem no scanset. Assim que um caractere entrado não corresponder a  qualquer um do scanset, a função scanf( ) segue para o  próximo especificador de formato (se existir). 

(18)

Lendo Somente Caracteres Pré­Determinados Um scanset é definido colocando­se uma lista de caracteres  que quer­se que seja examinada entre chaves. A chave inicial  deve ser prefixada por um sinal de porcentagem. Por exemplo, este scanset diz à função scanf( ) para ler  somente os dígitos de 0 a 9: %[1234567890].O argumento correspondente a scanset deve ser uma variável  string.Após retornar de função scanf( ), a variável conterá uma 

(19)

    #include <stdio.h> #include <conio.h> main()      {         char s1[80], s2[80];     /* Pode­se testar esse programa usando a entrada “123456789abcdefg987654” seguida por um  retorno de carro. O programa exibirá, então: 123456789| |abcdefg987654. Uma vez que “a” não  faz parte do scanset, a função scanf( ) pára de ler os caracteres em s1 quando ele é encontrado  e os caracteres restantes são colocados em s2. */         scanf ("%[1234567890]%s", s1, s2);         printf ("\n%s| |%s", s1, s2);         getch();      } Lendo Somente Caracteres Pré­Determinados

(20)

Lendo Somente Caracteres Pré­Determinados Você pode especificar um intervalo dentro de um scanset  usando um hífen. Por exemplo, isto diz à função scanf( ) para aceitar os  caracteres de A a Z: %[A­Z]Pode­se especificar mais de um intervalo dentro de um  scanset. 

(21)

    #include <stdio.h> #include <conio.h> main()      {        char str[80];        printf ("Informe digitos e letras: ");        /* Pode­se especificar um conjunto invertido se o primeiro caractere é um ^.        Quando está presente, o ^ instrui a função scanf( ) a aceitar quaisquer caracteres que não        estão definidos no scanset.         Um ponto importante a lembrar é que o scanset difere letras minúsculas de maiúsculas.         Portanto, se quiser examinar tanto letras maiúsculas como minúsculas, deve especificá­las         individualmente.        Experimente digitar um caractere especial no meio da string         */        scanf ("%78[a­z0­9]", str);        printf ("\n%s", str);        getch();      } Lendo Somente Caracteres Pré­Determinados

(22)

Exercícios

(Lista 1, Ex 1) 

Escrever um algoritmo que leia a matricula de um

 

 

 

 

   

   

funcionário, o número de horas trabalhadas no

 

   

   

 

   

mês, o valor que recebe por hora e calcule o seu

   

 

 

 

 

   

   

salário mensal.

 

 

Obs.: 

Matrícula: tipo long int

Numero de horas: int

Valor por hora: float

(23)

   

Exercícios

(Lista 1, Ex 2) 

Escrever um algoritmo que leia 3 valores (a, b e c) e calcule:        

a) A área do triângulo que tem a por base e b por altura       

b) A área do círculo de raio c         

c) A área do trapézio que tem a e b por base e c por altura         

d) A área do quadrado de lado b       

Após calcular, deverá escrever os valores calculados. Obs.: todos os valores do tipo double

(24)

REFERÊNCIAS

http://www.dee.feis.unesp.br/graduacao/discipli

(25)

   

FIM

Referências

Documentos relacionados

Acidente de Trabalho é o que ocorre pelo exercício do trabalho a serviço da empresa, provocando lesão corporal ou perturbação funcional que cause a morte, a perda ou

No sentido de reverter tal situação, a realização deste trabalho elaborado na disciplina de Prática enquanto Componente Curricular V (PeCC V), buscou proporcionar as

A clínica gestáltica tem o intuito de desenvolver um trabalho baseado na relação dialógica, que facilita o processo de autorregulação e ajustamento criativo para as pessoas.. Tais

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

Entendendo a relevância do trabalho realizado no PSE para a consolidação e superação de adversidades das prá cas intersetoriais e da promoção da saúde no ambiente

Por isso, respondendo a Heurgon acerca de sua tese, Le Goff sinalizou que em função de suas leituras, havia conquistado certa familiaridade com o conjunto da Idade Média,

Neste capítulo, será apresentada a Gestão Pública no município de Telêmaco Borba e a Instituição Privada de Ensino, onde será descrito como ocorre à relação entre

Objetivou-se com este estudo avaliar a qualidade de leite pasteurizado com inspeção estadual pela pesquisa de estafilococos coagulase positiva, sua