• Nenhum resultado encontrado

Imagine que você desenvolveu um programa para controlar suas finanças pessoais e com ele intenci- ona conter seus gastos e ainda guardar uma parte do que ganha na poupança. Esse programa necessita de interação? Como você informará suas receitas e despesas? Como ele apresentará o resultado dos seus cálculos com a finalidade de auxiliá-lo no controle de suas finanças?

As respostas de todas essas perguntas convergem para a seguinte conclusão: um programa de com- putador é praticamente inútil se não apresentar algum tipo de interação com o usuário. No cenário anterior, por exemplo, você precisa informar ao programa quais são as suas receitas e despesas. Além disso, é necessário que ele o deixe a par dos resultados dos seus cálculos, caso contrário ele não terá serventia alguma.

Os mecanismos que as linguagens de programação oferecem para interação com o usuário estão presentes em suas bibliotecas de entrada e saída. Em C, as funções responsáveis pelas operações básicas de entrada e saída se encontram na biblioteca stdio, que é utilizada por meio da diretiva: #include <stdio.h>

Vimos não seção 2.6 uma forma de exibir na tela uma sequência de caracteres através da função printf(), que, além de imprimir caracteres, também é capaz de exibir o conteúdo de variáveis de diversos tipos. Os detalhes de sua utilização, bem como uma função similar para entrada de dados são apresentados não nas seções posteriores.

2.10.1

Função printf()

A função de saída printf() permite que dados sejam escritos na saída padrão, que normalmente é a tela do computador. Uma chamada da função printf tem o seguinte formato:

int printf(string_de_formato, arg1, arg2, ..., argn)

Isso quer dizer que a função printf irá escrever na saída padrão os argumen- tos arg1,arg2,...,argn de acordo com o que está especificado no parâmetro string_de_formato. Além disso, o tipo int indica que a função retorna um número in- teiro, que neste caso corresponde ao número de caracteres impressos. O exemplo a seguir ilustra a utilização da função printf():

#include <stdio.h> int main() { int idade; float altura; idade = 18; altura = 1.90;

printf("Tenho %d anos e %.2f de altura.", idade, altura);

return 0; }

Após a execução do código acima será exibida na tela a seguinte frase: Tenho 18 anos e 1.90 de altura.

Os caracteres %d e %.2f são denominados de especificadores de formato e têm o objetivo de definir o formato das variáveis que serão escritas na saída padrão. De outro modo, podemos entendê-los como "guardadores de lugar"para as variáveis a serem exibidas. No exemplo acima, no lugar do %d será colocada a primeira variável passada por parâmetro (idade) e no lugar do %.2f a segunda variável (altura). Além disso, elas deverão ser dos tipos int e float, respectivamente. O ponto

seguido de um número antes do código de formato indica a quantidade de casas decimais a serem exibidas (quando aplicados a variáveis do tipo ponto-flutuante) e são denominados de especificadores de precisão. No exemplo anterior eles foram os responsáveis pela exibição da variável altura com duas casas decimais.

A tabela abaixo lista os especificadores de formato mais comuns utilizados na função printf(). Tabela 2.5: Especificadores de formatos mais utilizados na

função printf()

Código Formato

%d ou %i Inteiro (int) decimal %ld ou %li Inteiro (long int) decimal

%u Inteiro sem sinal %c Caractere

%s Cadeira de caracteres %f Número de ponto-flutuante

2.10.2

Função scanf()

A função de entrada scanf() possibilita a leitura de dados da entrada padrão, ou seja, do teclado. O que ela faz é interromper a execução do programa até que o usuário digite algo e depois pressione a tecla Enter. Depois que o programa retoma sua execução, o conteúdo digitado é armazenado em uma ou mais variáveis. Uma chamada da função scanf tem o seguinte formato:

int scanf(string_de_formato, arg1, arg2, ..., argn)

O parâmetro string_de_formato especifica os tipos de dados que serão lidos e os parâmetros arg, arg2, ..., argn correspondem aos endereços das variáveis nas quais serão armazena- dos os valores digitados pelo usuário. A função scanf() retorna um valor inteiro que indica o número de variáveis que tiveram valores atribuídos, sendo utilizado para verificar algum problema na entrada de dados. O exemplo a seguir ilustra a utilização da função scanf():

#include <stdio.h>

int main() {

int idade;

float altura;

printf("Informe sua idade: ");

scanf("%d", &idade)

printf("Informe sua altura: ");

scanf("%f", &altura);

printf("\nVocê tem %d anos e %.2f de altura.", idade, altura);

return 0; }

Ao contrário do exemplo da seção anterior, os dados a serem exibidos não estão pré-determinados, isto é, as variáveis não possuem valores a priori. As atribuições apenas ocorrem quando o usuário entra com valores via teclado. No exemplo, depois que a sequência de caracteres "Informe sua idade: " é exibida, a execução do programa é interrompida até que o usuário digite um valor. Quando isso ocorre, ele é armazenado no endereço da variável idade, obtido quando ela é precedida pelo caractere &. Por conseguinte, o printf() ao final do código irá exibir os dados informados pelo usuário e não os dados pré-determinados pelo programador.

Importante

A tecla Enter também possui um caractere que a representa, a saber, o caractere especial ‘\n’. Portanto, quando o ’\n’ é escrito na saída padrão, o efeito gerado é o mesmo da digitação da tecla Enter.

A função scanf() também pode ler numa mesma linha diversos dados, armazenando-os em dife- rentes variáveis. As leituras do código anterior, por exemplo, podem ser reescritas da seguinte forma:

printf("Informe sua idade e sua altura:");

scanf("%d %.2f", &idade)

Para que esse código funcione como desejado, o usuário precisa digitar um número inteiro seguido de um espaço e depois um número de ponto-flutuante. O espaço é requerido porque ele é utilizado na especificação do formato (entre o %d e o %.2f há um espaço). Assim como printf(), a função scanf()também possui uma lista de especificadores de formato. Os mais utilizados seguem abaixo:

Tabela 2.6: Especificadores de formatos mais utilizados da função scanf()

Código Significado

%d ou %i Leitura de um inteiro (int) decimal %ld ou

%li

Leitura deum inteiro (long int) decimal %u Leitura de um inteiro sem sinal

%c Leitura de um único caractere %s Leitura de uma cadeira de caracteres %f Leitura de um número de ponto-flutuante

Documentos relacionados