Introdução à entrada e saída de dados

O que é um algoritmo?

Para entender o papel das entradas e saídas de dados é preciso estar claro quem atua sobre estes dados, quer dizer, como é feito o processamento desses dados. Quem faz isso é um algoritmo, uma sequência finita de passos, que ao ser aplicado sobre um conjunto de dados (as entradas), deve produzir sempre as mesmas saídas. Por exemplo, o algoritmo da divisão ao ser aplicado sobre valores fixados a e b, deve produzir sempre o mesmo valor d (de tal forma que d * b = a).

Por outro lado, um programa, nada mais é que a implementação de um algoritmo em uma linguagem específica (como as linguagens C ou Python). Desse modo, para este programa funcionar o usuário (aquele que está executando) deve fornecer um conjunto de dados de entrada, na ordem adequada (pois a/b geralmente não é o mesmo que b/a), para que o programa possa ser executado e produzir as saída desejadas.

Por exemplo, para que a implementação de um algoritmo para a divisão de dois números reais seja adequadamente executado, devem ser fornecidos os dois valores reais. Se o usuário digitar apenas um valor, o programa ficará parado até que ele digite o segundo valor.

Fig. 1. Ilustração da existência de um algoritmo que aplicado sobre as entradas produz as respectivas saídas.

Qual a importância da entrada/leitura e da saída/impressão de dados?

A grande importância de mecanismos para entrar dados (ou realizar a leitura), para que um programa computacional os processe, é possibilitar que determinado algoritmo implementado possa atuar sobre esses dados, produzindo resultados personalizados, no sentido de serem do interesse do usuário. Por exemplo, um usuário, que é professor, está interessado em saber quais as médias de cada um de seus alunos. Então o programa implementa um algoritmo que computa as médias dos dados personalizados, que são todas as notas de todos seus alunos. Esses são os dados de entrada.

Por outro lado, o professor precisa receber de alguma os dados que foram gerados, no exemplo, as médias de seus alunos. Então é preciso haver uma forma de apresentar os dados de saída.

Portanto, sem um mecanismo para entradas de dados, um algoritmo não pode ser usado (exceto se for um algoritmo que produz sempre a mesma coisa, como uma função constante). De forma análoga, sem um mecanismo saída dos dados de resposta, o algoritmo é inútil.

Exemplo de mecanismos para "entradas de dados" e para "saídas de dados"

Existem vários mecanismos para entrada e para a saída de dados. Um dos primeiro exemplo de dispositivo para entrada de dados é o teclado, mas existem outros, como os mouses. Por exemplo, se o usuário der um "clique" duplo em um ícone associado a um arquivo de texto , o sistema gráfico "sabe" que deve abrir o programa editor de texto e, dentro dele, abrir o referido texto. Mas se o "clique" for sobre o ícone de um arquivo associado à uma planilha eletrônica , o sistema gráfico "sabe" que deve abrir o programa planilha eletrônica e, dentro dele, abrir com os dados daquele aquivo (que, por simplicidade, nos referimos como uma "planilha").

Quanto aos mecanismos para saída dos dados processados, o mais comum é a tela (ecrã). Um outro exemplo interessante de mecanismo de saída são os alto-falantes, eles podem receber dados, produzindo sons. Para um usuário que for cego, provavelmente este será o meio de saída mais usado.

Exemplos de códigos em C e em Python com entradas/saídas

A tabela abaixo apresenta código para computar a média aritmética de valores a serem digitados pelo usuário.

Tab. 1. Exemplo de códigos para entrada e saída de inteiros e "reais"

| C: média de valores | Python: média de valores

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12

    //C: computa media
    #include <stdio.h>
    void main (void) {
    int i, n; // declara variaveis
    float nota, soma = 0.0; // declara variavel para soma
    printf("Digite o numero de notas desse aluno: ");
    scanf("%d", &n); // comando para entrada via teclado
    for (i=0; i<; i++) {
      printf("Digite valor %d: ", i); scanf("%f", ¬a);
      soma = soma + nota; // acumule
      }
    printf("A media desse aluno e': %f\n", soma/n);
    }

    # Python: computa media
    def main () :
    soma = 0.0; # declara variavel para somar
    print("Digite o numero de notas desse aluno: ");
    n = int(input());
    for i in range(n) :
      print("Digite valor %d: " % i);
      soma = soma + float(input()); # acumule
    print("A media desse aluno e': %f" % (soma/n));

    main();

Neste exemplo existem dois tipos de dados para entrada, um primeiro inteiro (variável n que será usada para guardar o número de notas que cada "aluno" tem. Depois o usuário deve digitas nas n para o "aluno". Note que foi necessário usar uma variável para acumular cada nota digitada, a variável soma. Ao final, basta apresentar como dado de saída a média do referido "aluno".

Leônidas de Oliveira Brandão
http://line.ime.usp.br

Alterações:
2020/08/19: pequenas correções
2020/08/07: primeira versão