Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 03Linguagem de Programação I - UNIGRAN COMANDOS DE ENTRADA DE DADOS Nesta aula veremos as operações de entrada de dados, via teclado, mais comuns. Estas são operações fundamentais em qualquer linguagem. A entrada de dados é primordial para que haja comunicação entre o usuário e a aplicação. Com uma operação de entrada é possível pedir ao usuário que informe (digite) valores para serem utilizados no programa. As principais funções de entrada, via teclado, são: • scanf • cin • getchar • gets CURIOSIDADE O comando Escreva da linguagem Portugol é uma operação de saída. 59 Linguagem de Programação I - UNIGRAN Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • conhecer os principais comandos de leitura; • identificar o melhor comando para cada tipo de operação realizada; • utilizar esses comandos de maneira eficiente. Seções de estudo • Seção 1 – A função scanf • Seção 2 – O objeto cin • Seção 3 – A função getchar • Seção 4 – A função gets Seção 1 - A função scanf Esta função lê um valor informado via teclado, e este valor é atribuído a uma variável. Os valores a serem lidos, podem ser de qualquer um dos tipos existentes na linguagem C (int, float, char...). scanf é a função é padrão de C para leitura de valores via teclado, e sua sintaxe é muito parecida com a da função printf, exceto pelo uso do operador de endereço "&" antes do nome da variável. Sintaxe: scanf(formato, &variável); • formato (ou formatador): é uma cadeia de caracteres, geralmente delimitada com aspas (""), que especifica o formato da variável que será lida. Usa- se o formatador, para que seja informado para o compilador, o tipo de dado que será lido, para que este reserve memória suficiente para armazenar o dado lido. • &variável: é a variável que será lida, precedida pelo operador de endereço &. Mais a frente conheceremos melhor o operador de endereço, por enquanto, basta saber que seu uso é imprescindível. 60 Linguagem de Programação I - UNIGRAN A função scanf faz parte da biblioteca stdio, portanto, quando utilizar essa função é preciso incluir essa biblioteca, exemplo: #include <cstdio>. a) Lendo um único caracter Podemos usar a função scanf para ler um único caracter, utilizando o formatador "%c". A figura 1.1 representa um programa que faz a leitura de uma variável do tipo char de tamanho 1. Porque foi colocado o printf com uma mensagem antes do scanf? Para informar ao usuário o que ele deve digitar, assim evitamos que aconteçam erros grosseiros, como o usuário informar um texto, onde era para ser informado um número. A figura 1.2 representa a tela de saída do programa 1.1, depois de digitar o valor 'M' e pressionar a tecla ENTER. Código Formato %c Um único caracter (char) %s String (char[N]) %d Um número do Ɵ po int em formato decimal %i Um número inteiro do Ɵ po int %e Um ponto fl utuante do Ɵ po fl oat (notação cienơ fi ca) %f Um ponto fl utuante do Ɵ po fl oat %lf Um ponto fl utuante do Ɵ po double %o Número octal %x Número hexadecimal %p Ponteiro QUADRO 3.1 - Especifi cadores de tipos de dados. Fonte: criação nossa FIGURA 1.1 - Utilização da função scanf para ler uma variável do tipo char Fonte: criação nossa 61 Linguagem de Programação I - UNIGRAN b) Lendo vários caracteres Ler uma cadeia de caracteres com a função scanf é uma tarefa bem simples e parecida com a leitura de um único caracter. Mas existem duas diferenças básicas entre estes dois tipos de leituras: • tipo de formatador que deve ser usado, que ao invés de "%c" usamos "%s", e • quando vamos ler uma string (ou cadeia de caracteres) não é necessário usar o operador de endereço "&" antes do nome da variável. A figura 1.3 representa um programa que faz a leitura de uma cadeia de caracteres. A figura 1.4 representa a tela de saída do programa 1.3 depois que o texto "programacao" foi digitado e a tecla ENTER foi pressionada. FIGURA 1.2 – Tela de saída do programa 1.1 Fonte: criação nossa FIGURA 1.3 - Utilização da função scanf para leitura de cadeia de caracteres Fonte: criação nossa FIGURA 1.4 – Tela de saída do programa 1.3 Fonte: criação nossa 62 Linguagem de Programação I - UNIGRAN c) Lendo um tipo inteiro Para ler um tipo inteiro com a função scanf, precisamos identificar o seu tipo, com os formatadores "%d" ou "%i". A figura 1.5 representa um programa que faz a leitura de um valor numérico do tipo int usando o formatador "%d" (este é o formatador mais usado). Vemos a tela de saída do programa representado pela figura 1.5 na figura 1.6 depois que o valor 6 é digitado e a tecla ENTER pressionada. d) Lendo números fracionários Vamos ver agora como fazemos a leitura de números fracionários do tipo float a função scanf com os formatadores: %f e %e sucessivamente. A figura 1.7 representa um programa que faz a leitura de um valor para a variável numero que foi definida do tipo float utilizando o formatador "%f". scanf não é muito efi ciente para ler valores para cadeias de caracteres (strings). Quando scanf encontra um espaço em branco, ela termina a string, e tudo o que for digitado depois disto, será descartado. FIGURA 1.5 – Utilização da função printf com variável do tipo int Fonte: criação nossa FIGURA 1.6 – Tela de saída do programa 1.5 Fonte: criação nossa 63 Linguagem de Programação I - UNIGRAN A tela de saída do programa representado pela figura 1.7 pode ser vista através da figura 1.8 depois que o valor 3.6 foi digitado e a tecla ENTER pressionada. Vamos ver agora como ficaria este programa se estivéssemos usando o formatador %e ao invés do formatador %f? Segue abaixo um exemplo representado pela figura 1.9. Podemos ver a tela de saída do programa representado pela figura 1.9 FIGURA 1.7 – Utilização da função scanf com variável do tipo fl oat Fonte: criação nossa FIGURA 1.8 – Tela de saída do programa 1.7 Fonte: criação nossa FIGURA 1.9 – Utilização da função scanf com variável do tipo fl oat Fonte: criação nossa 64 Linguagem de Programação I - UNIGRAN Agora vamos ver como fazemos a leitura de valores para números do tipo double. O tipo double pode ser entendido como um float maior do que o convencional. Para este tipo de variável temos que usar o formatador "%lf" que corresponde a long float ou float longo, porque o tipo double aceita números maiores do que o float, então o compilador tem que estar preparado para receber esses valores e quem prepara o compilador (para leitura de valores) é o formatador. Porém a impressão pode ser igual à de um float comum, somente é preciso modificar a leitura. A figura 1.11 mostra um programa que lê um valor para uma variável do tipo double Vamos ver a tela de saída do programa 1.11? Então observe a figura 1.12. Note que a tela de saída do programa é igual a do programa representado pela figura 1.10. FIGURA 1.10 – Tela de saída do programa 1.9 Fonte: criação nossa FIGURA 1.11 – Utilização da função scanf com variável do tipo double Fonte: criação nossa FIGURA 1.12 – Tela de saída do programa 1.0 Fonte: criação nossa 65 Linguagem de Programação I - UNIGRAN Seção 2 – O objeto de fl uxo de entrada cin O objeto de fluxo de entrada cin (C in, ou entrada em C) tem basicamente a mesma utilidade da função scanf: ler alguma informação do teclado. O que será lido, não importa, pois este comando não usa formatadores, portanto o valor lido pode ser um número inteiro, um número fracionário, um único caracter ou até mesmo uma string (cadeia de caracteres). O comando cin foi criado pela linguagem C++ e faz parte da biblioteca iostream. Para acessá-lo é necessário especificar o namespace std assim como o cout que foi visto na aula anterior. Sintaxe: cin>>variavel; Como podemos observar o comando cin é precedidodo operador >> que indica uma entrada de dados para o programa. ? ?Podemos usar o formatador "%lf" para imprimir um Ɵ po double? Sim, podemos, visto que este formatador é uƟ lizado por este Ɵ po de dando tanto para leitura como para impressão, podendo a impressão ser realizada também pelos demais formatadores. CURIOSIDADE Na práƟ ca, a diferença básica entre cin e scanf é que o primeiro não uƟ liza o especifi cador (ou formatador), enquanto o segundo usa. Ele lê o dado diretamente para a variável especifi cada depois de >>. Veja sua sintaxe a seguir. REGRA Depois do cin usa-se >> Importante!!! Não confunda o operador usado pelo cin e o operador usado pelo cout. cin cout >> << 66 Linguagem de Programação I - UNIGRAN Utilizando o operador cin, a leitura de variáveis independe do seu tipo. Portanto, ao usar o operador cin, não é necessário informar o especificador (ou formatador) que identifica o tipo de variável que estamos lendo. A figura 1.13 representa um programa que faz a leitura de uma variável do tipo char de tamanho 1. A figura 1.14 representa a tela de saída do programa 1.13, depois de digitar o valor 'M' e pressionar a tecla ENTER. Para ler uma variável do tipo char e de tamanho maior do que um, não haveria mudança alguma na sintaxe da instrução onde está o cin. Veja um exemplo através da figura 1.15. FIGURA 1.13 - Utilização do operador cin para ler uma variável do tipo char Fonte: criação nossa FIGURA 1.14 – Tela de saída do programa 1.13 Fonte: criação nossa FIGURA 1.15 - Utilização do operador cin para ler uma variável do tipo char de tamanho 30 Fonte: criação nossa 67 Linguagem de Programação I - UNIGRAN Como podemos notar, a única diferença do programa da figura 1.13 para o programa da figura 1.15 está no tamanho e nome das variáveis que são lidas, pois a instrução cin, permanece igual nos dois programas. Os programas que acabamos de ver, também podem ser utilizados para ler variáveis numéricas: int, float, double... as alterações necessárias para que eles funcionem seriam somente no tipo das variáveis criadas e, caso necessário, nos nomes destas variáveis. Veja um exemplo: FIGURA 1.16 – Tela de saída do programa 1.15 Fonte: criação nossa Assim como o scanf, o cin não é muito efi ciente para ler valores para cadeias de caracteres (strings). FIGURA 1.17 - Utilização do operador cin para ler uma variável do tipo int Fonte: criação nossa FIGURA 1.18 – Tela de saída do programa 1.17 depois que o valor 52 foi digitado e a tecla ENTER pressionada Fonte: criação nossa 68 Linguagem de Programação I - UNIGRAN Seção 3 – A função getchar A função getchar, que também faz parte da biblioteca cstdio, é utilizada para ler um único caracter do usuário, via teclado. Sintaxe: variável = getchar(); Onde variável é uma variável qualquer do tipo char e de tamanho 1. Vejamos um exemplo: CURIOSIDADE Assim como com cout, o objeto cin também precisa do namespace std. FIGURA 1.17 - Utilização do operador getchar Fonte: criação nossa FIGURA 1.18 – Tela de saída do programa 1.17 depois que a letra 'R' foi digitada e a tecla ENTER pressionada Fonte: criação nossa 69 Linguagem de Programação I - UNIGRAN Seção 4 – A função gets A função gets faz parte da biblioteca cstdio, assim como a função puts. Ela foi criada especificamente para ler uma string do teclado (quando o usuário do programa digita uma string) – lembrando que em C uma string é do tipo char e de tamanho maior do que 1. Sintaxe: gets(variável); Onde: variável é uma variável qualquer do tipo char e de tamanho maior do que 1. Vamos ver um exemplo? A figura 1.19, representa um programa que lê um valor, informado pelo usuário, e atribui esse valor, à variável "texto". Veja a tela de saída do programa representado pela figura 1.19, através da figura 1.20. FIGURA 1.19 - Utilização do operador gets Fonte: criação nossa FIGURA 1.20 – Tela de saída do programa 1.19 depois que o texto "Linguagem de Programacao I" foi digitado e a tecla ENTER pressionada Fonte: criação nossa 70 Linguagem de Programação I - UNIGRAN Retomando a conversa inicial • Seção 1 – A função scanf A função scanf é utilizada para ler um valor e armazenar em uma variável. O tipo do valor a ser lido, tem que ser especificado no momento da criação da instrução, pois a função scanf necessita do formatador de tipo (que fica entre aspas e indica o tipo de variável que deve ser lida (int, float, char...)). • Seção 2 – O objeto cin Também utilizado para ler um valor e armazenar em uma variável. Este operador dispensa o uso do formatador (visto no exemplo anterior). Faz parte da linguagem C++ e não C. • Seção 3 – A função getchar Função utilizada para ler apenas um caracter do teclado. Uma vez que o caracter é informado (e a tecla ENTER pressionada), o programa passa para a próxima instrução. • Seção 4 – A função gets Lê uma string do teclado e armazenada em uma variável indicada entre parênteses. A finalidade desta função é facilitar a leitura de variáveis do tipo vetor de caracteres, uma vez que, as outras funções vistas anteriormente não aceitam o caracter em branco (ou espaço em branco). RESUMINDO Sempre use a função gets para ler strings do teclado. Vamos relembrar um pouco do que vimos na aula 3? 71 Linguagem de Programação I - UNIGRAN Sugestões de leituras e sites Leituras • http://www.global.estgp.pt/engenharia/Alunos/eSebentas/Tutoriais/c.htm • http://pt.wikibooks.org/wiki/Programar_em_C Sites • http://informatica.hsw.uol.com.br/programacao-em-c.htm Autoavaliação Veja se aprendeu a Aula 02 respondendo ao questionário auto-avaliativo. Depois confi ra o resultado das respostas, que está disponível na ferramenta Arquivos da plataforma. 1. Para ler uma variável do tipo int, usando a função printf, utiliza-se o formatador "%i". ( ) Verdadeiro ( ) Falso 2. A seguinte instrução: scanf("%c",texto); está correta. ( ) Verdadeiro ( ) Falso 3. Para ler um valor do tipo double com cin é preciso usar o formatador %lf. ( ) Verdadeiro ( ) Falso 4. O objeto cin faz parte do namespace std. ( ) Verdadeiro ( ) Falso 5. Posso ler uma cadeia de caracteres com a função gets. ( ) Verdadeiro ( ) Falso 6. Posso ler uma cadeia de caracteres com a função scanf. ( ) Verdadeiro ( ) Falso 72
Compartilhar