Por onde começar?

Pra quem tá aprendendo a programar, antes de pensar em como solucionar um problema, deve formular as seguintes perguntas→

● Quais dados que o programa comerá?
● Quais dados que o programa cuspirá?

Ou seja, deve-se perguntar Como o programa começa e com que valores?. (O que o usuário deve digitar?)
Ao processar esses valores o que o usuário obterá? (O que o usuário deve ler?)

Quem não tiver isto claro antes de programar (propriamente dito) vai ter uma certa dificuldade pra resolver computacionalmente um problema.



Especificando...

Um processo bem comum hoje em dia é a compactação de arquivos. O sujeito baixa da Internet uma figura (ou outro tipo de arquivo qualquer) grande e depois quer deixar menor o arquivo que a armazena.
O que são entrada, processamento e saída neste problema?

O sujeito responde Ah, essa é fácil. A entrada é o arquivo da figura. O processamento é a compactação Deflate (ZIP). A saída é um outro arquivo compactado.
Boa. O sujeito já sabe o que quer resolver.

Daí vem outra questão Como o usuário vai alimentar o programa?. Afinal há inúmeras maneiras de se fazer.

O sujeito responde Que tal apresentar uma tela com um texto escrito DIGITE AQUI O NOME DO ARQUIVO e bem do lado um campo editável, e lá no final da tela um botão escrito COMPACTAR.
Ótimo. Até agora nenhuma linha de código foi escrita. Mas já foi definido como o programa será alimentado.

Daí vem outra pergunta Depois que o usuário digitar o nome do arquivo, e clicar no botão COMPACTAR, e compactar o arquivo informado, o que lhe será mostrado?.

O sujeito responde Nada além disso→ COMPACTAÇÃO EXECUTADA COM SUCESSO caso bem sucedida ou→ ERRO NA COMPACTAÇÃO DO ARQUIVO no caso de falha.

A solução desse problema cai na questão das camadas.
A camada mais externa é→

● Criar uma tela;
● Mostrar o texto DIGITE AQUI O NOME DO ARQUIVO;
● Mostrar o campo editável onde será inserido o nome do arquivo;
● Mostrar o botão COMPACTAR;
● Compactar (ou não) o arquivo;
● Mostrar a mensagem COMPACTAÇÃO EXECUTADA COM SUCESSO ou ERRO NA COMPACTAÇÃO DO ARQUIVO (após se clicar no botão COMPACTAR).

Tudo o que está escrito no infinitivo (Criar, Mostrar, Compactar) pode descer em camadas mais baixas.
Se for uma solução Web, com exceção de Compactar, tudo é resolvido em poucos minutos. Basta fazer uma página HTML e um script.

● A camada mais externa pra Criar uma tela será na realidade Criar uma página HTML;
● A camada mais externa pra Mostrar o texto DIGITE AQUI... será um texto simples dentro do bloco BODY da página HTML;
● A camada mais externa pra Mostar o campo editável será um INPUT (type="text") da página HTML;
● A camada mais externa pra Mostar o botão será um INPUT (type="button") da página HTML;
● A camada mais externa pra Mostrar as mensagens será um ALERT dentro dum script da página HTML;
● A camada mais externa pra Compactar será algum objeto externo (applet, por exemplo) disponibilizado às dezenas na Internet.

Como se vê programar é moleza. Quem está especificando o comportamento dum programa (entradas, saídas, etc) está programando até sem saber que o faz, mas tá.
Tudo depende obviamente da camada que se escolhe pra solucionar um problema.

Um dos fatores que ditam as camadas é o ambiente de programação.
O ambiente web costuma facilitar certas situações, outras não.
A programação das entradas em HTML seria absurdamente rápida de se fazer.
Se o ambiente fosse o montador MASM, tudo seria dramaticamente trabalhoso.
Com o compilador Turbo Pascal as camadas Criar e Mostrar seriam bem mais trabalhosas que em HTML. E poraí vai.

Um programador pode fazer tudo aquilo "na unha" se quiser. E aí sim as coisas começam a complicar. Ele pode fazer desdo sistema operacional (a ser inserido num Disquete, CD ou DVD) até mostrar os pixels das imagens do cursor, do ponteiro, da tela, dos textos e do botão. Os programadores não partem pra violência desse jeito. Cada um vai descendo até as camadas que atendem. O limbo é mexer diretamente com as instruções do processador da máquina.



Entradas/Saídas

Os tipos de entradas e saídas dependem muito do ambiente de programação, das tecnologias correntes e obviamente do próprio programador.

Entradas são objetos com que o usuário pode interagir por teclado, ponteiro, controle de jogo e leitora de código de barras.
Saídas são objetos de apenas leitura.

Entradas/Saídas básicas no ambiente HTML


Tabela <table> <table border="1">
    <tr><td>Oi! Sou uma TABELA!</td></tr>
    <tr><td>E tenho 2 linhas!</td></tr>
</table>
Oi! Sou uma TABELA!
E tenho 2 linhas!
Edição <input type="text"> <input type="text" value="Oi! Sou uma EDIÇÃO">
Botão <input type="button"> <input type="button" value="Botão">
Escolha <input type="checkbox"> <input type="checkbox" checked="checked">Escolha única
Escolha única
Alternativa <input type="radio"> <input type="radio" checked="checked">Múltipla escolha
Múltipla escolha
Combo <select> <select>
    <option>Oi! Sou um Combo!</option>
    <option>Um COMBOOOOO!</option>
</select>
Texto <textarea> <textarea rows="2" cols="10">Sou o TextArea</textarea>
Imagem <img> <img src="../figura/BraseirEBER.gif" alt="">
Parágrafo <p> <p>Apenas um Parágrafo</p>

Apenas um Parágrafo

Trecho <span> Sou a formatação <span style="color:Aqua">dum Trecho</span>. Sou a formatação dum Trecho.





http://transeberiano.brinkster.net