123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <!--
- Introdução à entrada e saída de dados
- Prof. Leônidas de Oliveira Brandão
- Material didático para apoio aos cursos de Introdução à Programação
- Direitos reservados
- Pode ser usado mediante citação de autoria (Prof. Leônidas de Oliveira Brandão) e origem (https://www.ime.usp.br/~leo/mac2166/introducao/)
- -->
- <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
- <meta name='keywords' content='mac0122, material, professores, leonidas de oliveira brandao'>
- <link rel='stylesheet' type='text/css' href='css_img_js_conf/all.css'>
- <link rel='stylesheet' type='text/css' href='css_img_js_conf/line_introducao_programacao.css'>
- <script src="css_img_js_conf/defineLInE.js"></script> <!-- para referencias 'a documentos internos -->
- <div class="pagina">
- <p class="secao">Introdução à entrada e saída de dados</a>
- <!--
- importancia
- io_simples
- ex_io_simples
- io_composto
- -->
- <a name="algoritmo">
- <p class="secao">O que é um algoritmo?</p>
- </a>
- <p>
- Para entender o papel das <i>entradas</i> e <i>saídas</i> de dados é preciso estar claro quem atua sobre estes dados, quer dizer,
- como é feito o processamento desses dados.
- Quem faz isso é um <b style="color:#0000aa">algoritmo</b>, <i>uma sequência finita de passos, que ao ser aplicado sobre um conjunto
- de dados (as <b>entradas</b>), deve produzir sempre as mesmas <b>saídas</b></i>.
- Por exemplo, o algoritmo da divisão ao ser aplicado sobre valores fixados <i>a</i> e <i>b</i>, deve
- produzir sempre o mesmo valor <i>d</i> (de tal forma que <i>d * b = a</i>).
- </p>
- <p>
- Por outro lado, um <b style="color:#0000aa">programa</b>, nada mais é que a implementação de um <b>algoritmo</b> em uma linguagem específica
- (como as linguagens <i>C</i> ou <i>Python</i>).
- Desse modo, para este programa funcionar o <b style="color:#0000aa">usuário</b> (aquele que está executando) deve fornecer um
- conjunto de <b style="color:#00aa00">dados de entrada</b>, na ordem adequada (pois <i>a/b</i> geralmente não é o mesmo que <i>b/a</i>),
- para que o programa possa ser executado e produzir as <b style="color:#00aa00">saída</b> desejadas.
- </p>
- <p>
- 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 <i>usuário</i> digitar apenas um valor, o programa ficará parado até
- que ele digite o segundo valor.
- </p>
- <center><img src="img/img_computador_io.png" title="ilustracao processamento entradas x saidas"/>
- <br/><i>Fig. 1. Ilustração da existência de um algoritmo que aplicado sobre as entradas produz as respectivas saídas.</i>
- </center>
- <!--
- https://en.wikipedia.org/wiki/Integer_%28computer_science%29
- int = -32,768 to 32,767, from -(2^15) to 2^15-1
- https://en.wikipedia.org/wiki/Single-precision_floating-point_format
- float = 32 bits
- IEEE 754 single-precision binary floating-point format: binary32
- Sign bit: 1 bit ; Exponent width: 8 bits ; Significand precision: 24 bits (23 explicitly stored)
- float = 0/1 0.mantissa x 10^e
- 24 bits 8
- -->
- <a name="importancia">
- <p class="secao">Qual a importância da <i>entrada/leitura</i> e da <i>saída/impressão</i> de dados?</p>
- </a>
- <p>
- A grande importância de mecanismos para <i>entrar</i> dados (ou realizar a <i>leitura</i>), 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 <i>dados personalizados</i>, que são todas as notas de todos
- seus alunos. Esses são os <b style="color:#00aa00">dados de entrada</b>.
- </p>
- <p>
- 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 <b style="color:#00aa00">dados de saída</b>.
- </p>
- <p>
- Portanto, sem um mecanismo para <i>entradas</i> 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 <i>saída</i> dos dados de resposta, o algoritmo é inútil.
- </p>
- <a name="mecanismos">
- <p class="secao">Exemplo de mecanismos para "entradas de dados" e para "saídas de dados"</p>
- </a>
- <p>
- Existem vários mecanismos para <i>entrada</i> e para a <i>saída</i> de dados.
- Um dos primeiro exemplo de <i>dispositivo para entrada de dados</i> é o <i>teclado</i>, mas existem outros, como os <i>mouses</i>.
- Por exemplo, se o usuário der um "clique" duplo em um ícone associado a um arquivo de texto
- <img src="img/icn_editor_101.png" width="30" height="30" title="ícone de arquivo para editor de texto"/>, o sistema gráfico "sabe"
- que deve abrir o <i>programa editor de texto</i> e, dentro dele, abrir o referido texto.
- Mas se o "clique" for sobre o ícone de um arquivo associado à uma planilha eletrônica
- <img src="img/icn_planilha_101.png" width="30" height="30" title="ícone de arquivo para planilha"/>, o sistema gráfico "sabe" que
- deve abrir o <i>programa planilha eletrônica</i> e, dentro dele, abrir com os dados daquele aquivo (que, por simplicidade, nos
- referimos como uma "planilha").
- </p>
- <p>
- Quanto aos mecanismos para <i>saída</i> dos dados processados, o mais comum é a <i>tela</i> (<i>ecrã</i>).
- 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.
- </p>
- <a name="exemplos">
- <p class="secao">Exemplos de códigos em <i>C</i> e em <i>Python</i> com entradas/saídas</p>
- </a>
- <!-- ./introducao/codigos/testes/intr_entrada_saida.* -->
- <p>
- A tabela abaixo apresenta código para computar a média aritmética de valores a serem digitados pelo usuário.
- </p>
- <p>
- <center><i>Tab. 1. Exemplo de códigos para entrada e saída de inteiros e "reais"</i><br/>
- <table class="tableCd">
- <tr>
- <td></td><td bgcolor="8aaada"><i>C</i>: média de valores</td>
- <td bgcolor="8aaada"><i>Python</i>: média de valores</td></tr>
- <tr><td><table class=""><tr class="trCd" valign="top"><td><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12</pre></td></tr></table></td>
- <td><table class=""><tr class="trCd" valign="top"><td><pre style="font-size: 0.8em;">//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);
- }
- </pre></td></tr></table></td>
- <td><table class=""><tr class="trCd" valign="top"><td><pre style="font-size: 0.8em;"># 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();
- </pre></td></tr></table></td></tr>
- </table></center>
- </p>
- <p>
- Neste exemplo existem dois tipos de <i>dados para entrada</i>, um primeiro inteiro (variável <i>n</i> que será usada para
- guardar o número de notas que cada "aluno" tem. Depois o <i>usuário</i> deve digitas nas <i>n</i> para o "aluno".
- Note que foi necessário usar uma variável para acumular cada nota digitada, a variável <i>soma</i>.
- Ao final, basta apresentar como <i>dado de saída</i> a média do referido "aluno".
- </p>
- <p>
- <a href="https://www.ime.usp.br/~leo" target="_blank" title="seguir para a pagina do prof. Leônidas">Leônidas de Oliveira Brandão</a><br/>
- <a href="http://www.ime.usp.br/~leo" target="_blank" title="seguir para a página do LInE">http://line.ime.usp.br</a>
- </p>
- <p class="rodape">
- <b>Alterações</b>:<br/>
- 2020/08/19: pequenas correções<br/>
- 2020/08/07: primeira versão
- </p>
- </div>
|