Você está visualizando atualmente Instruções de entrada e saída

Instruções de entrada e saída

Quase todo algoritmo terá, em algum momento, interação com o usuário. Esta interação se dará normalmente por meio da impressão de dados na tela e da leitura de dados a partir do teclado. Assim, é de fundamental importância entender de fato como utilizar corretamente as instruções de entrada e saída de dados.

Instrução de saída

A instrução de saída é utilizada sempre que desejamos apresentar alguma informação para o usuário, por isso instrução de saída. Alguma informação está saindo do computador, sendo impressa na tela, para que o usuário tome conhecimento.

Na linguagem de programação C a instrução de saída que veremos é a instrução printf(), apresentada no trecho de código a seguir:

#include <stdio.h>
#include <stdlib.h>

void main() {
    printf("Esta mensagem será impressa na tela.\n");
}

Tudo que está entre as aspas duplas é entendido como texto e será impresso na tela. O “n” após o ponto final é um marcador especial para saltar uma linha. Dessa forma, a instrução printf() pode ser utilizada para a impressão de menus, como apresentado a seguir:

#include <stdio.h>
#include <stdlib.h>

void main() {
    printf("\t=================================\n");
    printf("\t1 - Somar  2 - Subtrair  0 - Sair\n");
    printf("\t=================================\n");
    printf("\n\n");
    printf("\t=================================\n\t1 - Somar  2 - Subtrair  0 - Sair\n\t=================================\n");
}

Perceba que as três primeiras instruções printf() são utilizadas em conjunto, imprimindo um menu entre duas linhas tracejadas, enquanto a última instrução printf() produz o mesmo resultado fazendo uso de apenas uma instrução printf() e os marcadores “n” para saltar uma linha e “t” para tabulação (espaço a esquerda).

O resultado final é apresentado na figura a seguir.

Programa em execução.

Comandos de saída também são úteis quando desejamos imprimir na tela o valor de variáveis. Para isso devemos utilizar marcadores especial na posição em que desejamos que o valor da variável seja impresso. A seguir listamos os marcadores para os principais tipos de dados:

%c → char  // caracteres
%d → int // números inteiros
%f → float // números reais
%lf → double // números reais com dupla precisão
%llf → long double // números reais longos

Para imprimir os valores de variáveis, além de utilizar o marcador de tipo, também é necessário acrescentar o nome da variável dentro da instrução printf(), como apresentado no código a seguir. Perceba que podem ser utilizados várias instruções printf() ou apenas uma, juntando todas as informações.

#include <stdio.h>
#include <stdlib.h>

void main() {
    char letra = 'W';
    short num1 = 5;
    int num2 = 10;
    float num3 = 3.1415;
    double num4 = 5.47;
    long double num5 = 10.43875;
    printf("Letra %c\n", letra);
    printf("Valor num1: %d\n", num1);
    printf("Valor num2: %d\n", num2);
    printf("Valor num3: %f\n", num3);
    printf("Valor num4: %lf\n", num4);
    printf("Valor num5: %llf\n", num5);
    printf("\n");
    printf("Letra %c\nValor num1: %d\nValor num2: %d\nValor num3: %f\nValor num4: %lf\nValor num5: %llf\n", letra, num1, num2, num3, num4, num5);
}

O resultado é apresentado na figura a seguir:

Programa em execução.

Observe que as variáveis foram inicializadas com valores diretamente no código. Caso queiramos que o usuário digite as informações por meio do teclado, precisamos então fazer uso de um comando de entrada. Comando de entrada, pois dados serão digitados no teclado e “entrarão” no computador a fim de serem processados.

Lendo caracteres

Apesar da maioria das vezes a instrução de entrada scanf() ser utilizada, vale ressaltar que existem outras. No trecho de código a seguir apresentamos três formas diferentes para realizar a leitura de caracteres.

1 – getchar()

Ao pressionar qualquer tecla do teclado, o caractere correspondente é armazenado em uma região especial de memória chamada de buffer do teclado. Quando a tecla ENTER é pressionada, a função getchar() retorna o primeiro caractere presente no buffer do teclado. A variável à esquerda receberá então este caractere.

Contudo, a tecla ENTER também é um caractere, por isso precisamos remover ele do buffer do teclado para ler um segundo caractere corretamente. Por isso fazemos a leitura de um segundo caractere na linha 11 e não atribuímos a nenhuma variável. Na verdade, o caractere que está sendo lido é o caractere que representa a tecla ENTER, limpando assim o buffer do teclado.

2 – getc()

Assim como a anterior, esta função lê e retorna um caractere. A diferença é que ela recebe um parâmetro que diz para a função de onde deve ser lido esse caractere. Como queremos ler do buffer do teclado, então utilizamos como parâmetro a palavra reservada “stdin” que faz referência ao teclado do computador.

Assim como no caso anterior, a variável que estiver à esquerda receberá o caractere lido e o buffer do teclado pode ser limpo lendo outro caractere, como feito na linha 16, removendo assim o caractere referente a tecla ENTER.

3 – scanf()

Esta é a instrução de entrada mais utilizada devido sua flexibilidade. Ela não é uma função, logo não retorna nenhum valor. Recebe como parâmetro dois elementos: o primeiro, dentro de aspas duplas, representa o tipo de dado que será lido, neste caso %c, pois iremos ler um caractere; o segundo é o endereço de memória onde deve salvar o caractere lido. Na linguagem C podemos obter o endereço de memória de uma variável utilizando o & (e comercial) antes de seu nome, como feito na linha 19.

Assim como nos casos anteriores, podemos utilizar scanf() também para remover o ENTER do buffer do teclado, como feito na linha 21. O asterisco significa que deve ser removido do buffer o próximo caractere, independente de qual seja.

#include <stdio.h>
#include <stdlib.h>

void main() {
    char letra1, letra2, letra3;
    printf("Digite uma letra: ");
    letra1 = getchar();
    printf("Letra digitada: %c\n", letra1);
    getchar();
    printf("\nDigite uma segunda letra: ");
    letra2 = getc(stdin);
    printf("Letra digitada: %c\n", letra2);
    getc(stdin);
    printf("\nDigite uma terceira letra: ");
    scanf("%c", &letra3);
    printf("Letra digitada: %c\n", letra3);
    scanf("%*c");
}

Lendo números

Devido sua flexibilidade, a instrução scanf() é utilizada para a leitura de números em geral, bastando informar corretamente qual o tipo de número será lido, como apresentado no trecho de código a seguir.

#include <stdio.h>
#include <stdlib.h>

void main() {
    short num1;
    int num2;
    float num3;
    double num4;
    printf("Digite um valor pequeno: ");
    scanf("%d", &num1);
    printf("Valor lido: %d\n\n", num1);
    printf("Digite um valor inteiro: ");
    scanf("%d", &num2);
    printf("Valor lido: %d\n\n", num2);
    printf("Digite um valor real: ");
    scanf("%f", &num3);
    printf("Valor lido: %f\n\n", num3);
    printf("Digite um valor real longo: ");
    scanf("%lf", &num4);
    printf("Valor lido: %lf\n\n", num4);
}

A instrução scanf() também suporta a leitura de vários dados de uma única vez, como apresentado no trecho de código a seguir.

#include <stdio.h>
#include <stdlib.h>

void main() {
    short num1;
    int num2;
    float num3;
    double num4;
    printf("Digite um short, um int, um float e um double: ");
    scanf("%d%d%f%lf", &num1, &num2, &num3, &num4);
    printf("Valores digitados:\nshort: %d\nint: %d\nfloat: %f\ndouble: %lf\n\n", num1, num2, num3, num4);
}

Se ficou alguma dúvida, compartilhe nos comentários que faremos o possível para esclarecer. Um grande abraço, bons estudos e até o próximo.

Deixe um comentário

três × um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.