[Índice] [Capítulo III] [Capítulo V]

Capítulo IV: O Microcomputador - Software

Eduardo O C Chaves

 

Nosso objetivo, no presente capítulo, será:

-- definir o que é software e mostrar qual o seu papel dentro de um sistema de microcomputador;

-- distinguir entre software aplicativo e software básico;

-- dentro do software aplicativo, discutir os principais tipos de programas aplicativos para microcomputadores (processadores de texto, geradores e gerenciadores de bancos de dados, planilhas eletrônicas, programas de apoio à administração, geradores de gráficos, programas educacionais, etc.);

-- fazer menção, resumidamente, das principais áreas em que microcomputadores estão sendo utilizados, tanto no setor profissional como no pessoal e doméstico;

-- dentro de software básico, definir o que é linguagem de programação (linguagem de máquina, linguagem "Assembly", linguagem de alto nível), programa tradutor ("Assembler", compilador, interpretador), programa fonte, programa objeto;

-- ainda dentro de software básico, definir o que é programa utilitário e discutir alguns utilitários básicos: sistema operacional, editor, monitor, depurador, carregador.


1 - Software: Conceituação

No capítulo anterior falamos sobre hardware. O hardware, porém, como você já sabe, é só metade de um sistema de microcomputador. É inteiramente possível que o hardware de um microcomputador esteja em perfeito estado de funcionamento mas que seja totalmente inútil. Por quê? Porque o hardware só desempenha uma função útil quando está ativado por PROGRAMAS.

Um programa, já observamos, é uma seqüência ordenada de instruções que determinam ao microcomputador que funções específicas ele deve realizar.

A maior parte dos microcomputadores é dedicado à execução de múltiplas tarefas – são os chamados microcomputadores de múltiplos propósitos ("multiplepurpose microcomputers"). Em função disso, executam um número ilimitado de programas, sendo capazes, na verdade, de executar qualquer programa que tenha sido escrito com o conjunto de instruções de sua UCP.

O conjunto dos programas que um microcomputador usa é denominado, coletivamente, de SOFTWARE. Software, portanto, é um termo geral, usado para se referir a um conjunto de programas, ou mesmo a um programa, individualmente. Juntos, o hardware e o software formam um sistema funcional de microcomputadores.

É bom notar que o termo software é por vezes, também utilizado de modo a incluir itens tais como instruções e procedimentos para a utilização dos programas, documentação, etc. Nesse sentido, qualquer material impresso necessário para que o operador ou usuário faça pleno uso dos programas é considerado como software. Embora esse emprego do termo seja compreensível e até justificável, vamos estar nos referindo sempre aos programas, propriamente ditos, quando falarmos em software. Quando quisermos nos referir ao material de apoio, instruções, procedimentos, documentação, etc., usaremos linguagem que deixe claro sobre o que estamos falando.

O software existe em uma variedade muito grande de formas. Qualquer que seja sua forma, porém, para que um programa possa ter usado, é necessário que ele esteja na memória do microcomputador. Só então pode ser executado. O software, em sua maior parte, é fornecido em alguma forma de armazenamento externo ao microcomputador, muito embora uma pequena parcela dele possa estar permanentemente armazenada na memória ROM do microcomputador. Mas a maior parte do software que você deverá utilizar estará disponível apenas em meios de armazenamento externos ao microcomputador, principalmente em fitas e discos magnéticos. Esse software terá que ser carregado na memória RAM do microcomputador.

O software é, na verdade, aquilo que propicia a interação entre o microcomputador e o usuário. Já dissemos, ao discutir periféricos, que são eles que possibilitam ao usuário comunicar-se com o microcomputador. Mas os periféricos são apenas o lado físico dessa comunicação. É necessário, também, haver programas que permitam que o usuário, através de periférico, se comunique com o microcomputador. É, portanto, o software que propicia essa interação entre o usuário e o microcomputador. Um microcomputador sem software é como um aparelho de som sem fitas ou discos: pode ser bonito, mas não interage com você, nem faz algo de útil.

É muito importante entender esse fato, e por isso vamos insistir um pouco no assunto. Quando um usuário interage ou "conversa" com um microcomputador, ele não está interagindo com o hardware: sua interação se dá, isto sim, com um PROGRAMA, preparado por alguém, o programador, entre cujos objetivos, ao desenvolver o programa, muito provavelmente estava tornar a comunicação entre o usuário e o microcomputador fácil e até "amigável" ou "amistosa" – freqüentemente se diz de certos programas que são "amigos do usuário" ("user-friendly"), exatamente porque permitem que a interação entre este e o microcomputador se dê de modo fácil, sem maiores complicações.

Você já deve ter visto, por exemplo, programas que oferecem um "menu" ao usuário. Um menu é uma série de opções, um cardápio. O usuário pode escolher, em casos assim, entre opções como: criar um arquivo, pesquisar um arquivo já existente, acrescentar itens a um arquivo, modificar os itens de um arquivo, imprimir o arquivo (em parte ou totalmente), etc. Conforme a opção que ele escolher, geralmente apertando apenas uma tecla no teclado (ou, hoje em dia, tocando o lugar apropriado na tela com o dedo!), o microcomputador executará uma determinada rotina, ou mesmo um determinado programa Às vezes, é necessário que o programa que exiba o menu carregue a rotina ou o programa correspondente à opção feita de um periférico, como, por exemplo, de uma unidade de discos. Essa interação entre o usuário e o microcomputador ocorre porque quem escreveu o programa a possibilitou. Um programa interativo, como, por exemplo, um programa que usa menus, é, via de regra, considerado "amigo do usuário".

O software de um microcomputador pode ser classificado em duas categorias específicas: SOFTWARE APLICATIVO e SOFTWARE BÁSICO. Todos os microcomputadores de múltiplos propósitos usam esses dois tipos de software.

SOFTWARE APLICATIVO, como o próprio nome indica, é o conjunto de programas utilizados pelo usuário para alguma aplicação específica, i.e., para resolver algum problema concreto ou realizar alguma tarefa desejada. Exemplos de software aplicativos são programas que processam textos, que arquivam dados, que efetuam análises financeiras, que fazem folha de pagamento, controle de estoque, registro de contas pagar e receber, ou programas que realizam cálculos científicos, constroem gráficos, tocam músicas, etc. Um programa que joga xadrez com o usuário é um programa aplicativo. Um programa gravado em ROM numa caixa registradora digital, ou numa balança digital, que faz com que os números sejam exibidos na tela, os cálculos necessários realizados, e o resultado também exibido na tela, ou, talvez, impresso numa fita de papel, também é um programa aplicativo.

Embora, em muitos casos, programas aplicativos sejam desenvolvidos pelos próprios usuários (quando estes gostam de programar, e sabem como fazê-lo), a maior parte desses programas acaba sendo desenvolvida ou pelos próprios fabricantes de microcomputadores ou por terceiros – programadores profissionais, "software houses", etc.

O SOFTWARE BÁSICO, por sua vez, consiste dos programas (incluindo as linguagens) que são, via de regra, fornecidos pelo próprio fabricante do microcomputador (na forma de chips ou cartuchos de ROM, discos ou fitas magnéticos), e que permitem que o usuário se comunique com o microcomputador com maior facilidade e explore os seus recursos com eficiência, vindo, inclusive, com esse apoio, a desenvolver seus próprios programas aplicativos.

É o software básico que facilita a utilização do microcomputador e a torna mais eficaz e conveniente, mais rápida e eficiente. O software básico é especialmente útil no desenvolvimento de programas aplicativos. Em função disso, o software básico é freqüentemente denominado de software para o desenvolvimento de programas, podendo ser adquirido até de terceiros, não sendo pois, necessariamente, fornecido pelo fabricante do microcomputador. Apesar disso, a maior parte dos usuários ou não tem vontade ou não tem condições (ou ambas as coisas) de desenvolver seus próprios programas aplicativos, preferindo adquiri-los no mercado.

Tendo em vista o fato de que os programas aplicativos ficam, de certa maneira, mais próximos do usuário, porque sua finalidade básica é resolver algum problema seu, vamos discuti-los primeiro. É bom manter em mente, porém, que programas aplicativos são bastante diversificados, porque dependem totalmente da tarefa que o usuário quer que executem. Por isso, estudaremos os principais tipos de programas aplicativos, bem como as principais áreas em que esses programas estão sendo utilizados. A seguir, vamos discutir o software básico, que, de certa maneira, é mais uniforme em sua concepção: Estudaremos os dois principais tipos de software básico: linguagens e utilitários.

No capítulo seguinte – o último – daremos a você algumas noções básicas sobre programação, mostrando-lhe o que você precisa saber para escrever seus próprios programas.


2 - Software Aplicativos

Nosso objetivo, nesta parte do capítulo, será discutir alguns dos tipos mais comuns de software aplicativo, bem como descrever os principais setores e as áreas em que esse software está sendo aplicado.

Estaremos, portanto, enfocando o assunto a partir de dois ângulos diferentes. De um lado discutiremos software aplicativos em termos de seus principais tipos: processadores de texto, gerenciadores de bancos de dados (arquivos eletrônicos), planilhas eletrônicas, programas para a área administrativa (empresarial ou pessoal), geradores de gráficos (comerciais ou não), programas educacionais, jogos, etc. De outro lado, discutiremos rapidamente como, através de programas aplicativos adequados, o microcomputador pode ser, e está sendo, usado em diferentes setores, como, por exemplo, na área profissional, no setor técnico, administrativo, científico, e educacional, ou, na área pessoal, como instrumento educacional, de lazer, e também de apoio às tarefas da administração doméstica.

Certamente há várias outras maneiras de encarar o assunto, mas essa foi a que nos pareceu mais conveniente, por enfocar tanto o tipo de aplicação como os setores que a aplicação está ocorrendo.


A - Tipos de Software Aplicativos


a. Processadores de Texto

Certamente uma dentre as mais comuns aplicações de um microcomputador, hoje em dia, é como processador de texto. Um processador de texto (às vezes chamado de processador de palavra, seguindo o inglês "word processor", ou então de editor de textos) é um programa que permite ao usuário utilizar o microcomputador como se ele fosse uma máquina de escrever – só que com incríveis vantagens, pois doutra forma talvez não se justificasse essa aplicação.

Um processador de texto deve, via de regra, ser utilizado quando se tem uma impressora acoplada ao microcomputador, para imprimir o texto, pois caso contrário você não terá uma cópia em papel (normalmente chamada de "hard copy"). Muitos escritores, porém, hoje em dia, em países onde a edição é impressão de artigos e livros já está totalmente computadorizada, chegam até a dispensar a cópia em papel, pois redigem seus textos e os transmitem por telefone diretamente ao computador de quem vai editá-los e imprimi-los, de modo que os textos só chegam ao papel quando estão sendo impressos! Mas normalmente uma impressora é imprescindível.

Também recomendável é uma unidade de discos flexíveis, embora alguns processadores de textos possam usar fita cassette comum como forma de armazenamento do texto produzido. Mas o gravador cassette é incrivelmente vagaroso quando comparado a uma unidade de discos flexíveis, de modo que, se você pretende processar muito texto através do microcomputador, é bem provável que se justifique o investimento maior que uma unidade de discos flexíveis exige.

Mas deixando de lado essas questões de configuração de equipamento, vejamos como funciona um processador de texto típico. O processador de texto é um programa que pode ser adquirido ou em discos flexíveis, ou em cartuchos (os quais só poderão ser usados, naturalmente, se o seu microcomputador tiver um dispositivo que lhe permita aceitar cartuchos), ou, menos freqüentemente, em fitas cassette. O programa precisa, portanto, ser carregado na memória do computador. (Alguns microcomputadores dos mais portáteis já vêm com um processador de texto gravado na memória ROM. Nesse caso, não é preciso naturalmente, "carregar" o programa, no sentido comum do termo: só acioná-lo). Uma vez na memória, o processador de texto geralmente lhe oferece um menu, com opção mais ou menos desse tipo:

1- Criar um Documento

2- Editar um Documento já Existente

3- Extinguir ("Deletar") um Documento

4- Imprimir um Documento

5- Informações ("Help")

Há menus bem mais complexos do que este, mas o essencial está aí.

Quando você vai usar o programa pela primeira vez, certamente a primeira opção que vai escolher é a de criar um documento – Opção 1. Normalmente, quando você faz essa opção, o programa lhe pede um nome para o seu documento. Dali para frente o seu documento será identificado por esse nome que você lhe der. Programas mais sofisticados podem lhe solicitar uma série de outras informações, como o número máximo de caracteres que seu texto deverá ter por linha, o número máximo de linhas por páginas, a tabulação que você deseja para seus parágrafos, se você quer que o texto seja ajustado ou alinhado em ambas as margens (esquerda e direita), etc. Por outro lado, algumas dessas perguntas podem ser feitas apenas na hora da impressão do texto. Cada programa tem sua fisionomia própria: estamos aqui tentando tirar uma média. Na verdade, alguns menus combinam as opções 1 e 2, de modo que se você, ao dar um nome ao documento que você quer criar, der o nome de um documento já existente no diskette (vamos pressupor que você esteja usando discos flexíveis), o programa traz aquele documento para a memória e permite que você o edite. Caso o nome dado ao documento não exista no diretório ou catálogo do diskette, o programa cria um documento com aquele nome (ainda vazio, naturalmente: você é que irá preenchê-lo!).

Tendo sido dado um nome ao seu documento, o programa lhe permite agora redigir seu texto. Normalmente, você vai datilografando, como você datilografaria em uma máquina de escrever elétrica, e o texto vai aparecendo na tela do microcomputador. Uma diferença é que você não precisa se preocupar com o final das linhas. O texto passa automaticamente para a linha seguinte, normalmente sem quebrar uma palavra no meio – o programa procura sempre um espaço para mudar o texto de linha. (Programas pouco sofisticados podem quebrar uma palavra no meio; programas muito sofisticados podem até fazer divisão silábica!). Você só tem que indicar quando o parágrafo chegou ao fim.

Normalmente, quando você está compondo seu texto, você já pode, simultaneamente, editá-lo, isto é, corrigir e alterar o que escreveu. Os sistemas de edição variam, mas a maioria dos programas permitem que você leve o cursor – que é o indicador de onde, na tela, será impresso o próximo caractere a ser digitado – para qualquer lugar na tela e datilografe por cima do que já está escrito, substituindo, assim, o texto, ou que você elimine letras, palavras, ou frases, com extrema facilidade, ficando todo o texto subseqüente ajustado automaticamente. É possível, ainda, introduzir letras, palavras, frases, ou parágrafos, com apenas a mesma facilidade, ficando o restante do texto, também nesse caso, ajustado ao que foi introduzido.

Por aí você já pode ver uma das razões da popularidade desses programas! Você pode escrever por cima, eliminar ou inserir letras, palavras, frases, e até parágrafos, e todo o restante do texto se ajusta automaticamente, de modo que, em fração de segundos, todo o texto está recomposto e sem menor indício de que foi alterado – pronto para impressão.

Mas tem mais. Grande parte dos processadores de texto opera com o conceito de blocos de texto, e muitos permitem que o usuário defina um bloco. Definido o bloco, ele pode ser mudado de lugar com incrível facilidade. Assim sendo, se você quer mudar um pedaço de seu texto para alguma outra parte do documento, nada mais fácil. Se você quer eliminar uma parte do texto, defina aquela parte como um bloco e mande eliminar (deletar) o bloco. Você também pode, normalmente, dentro de um dado bloco, redefinir tamanho de linhas, tabulação, etc., de modo a imprimir aquele bloco em formato diferente do restante do texto. E assim por diante.

Mas ainda não acabamos de mencionar as vantagens do processador de texto. Grande parte deles tem comandos que procuram, ou buscam, uma determinada palavra, ou mesmo um pedaço de palavra, ou uma expressão, através de todo o texto, imprimindo na tela as passagens em que aparece a palavra ou expressão. Se você quer substituir uma palavra por outra em todo o texto, ou apenas em parte do texto, isto é possível. Determine que o programa procure a palavra e a substitua, automaticamente, em todos os casos, por uma outra palavra. Se preferir, pode determinar que cada instância da palavra a ser substituída lhe seja apresentada, para você decidir, caso a caso, se quer realmente fazer a alteração ali. Isso significa que se você sistematicamente cometeu algum erro, ao redigir seu texto, seja de ortografia, ou de qualquer outro tipo, você pode corrigir o erro com extrema facilidade. Se quiser colocar uma palavra sempre em letras maiúsculas, nada mais fácil. Se, ao redigir o seu texto, você pode economizar tempo, preferiu sempre escrever "SPFC", pode, antes da impressão, determinar ao programa que substitua todas as instâncias da expressão "SPFC" pela expressão "glorioso São Paulo Futebol Clube"... – e assim por diante.

Muitos processadores de texto permitem que você coloque cabeçalho no topo da página, que coloque algum texto, no pé da página, que numere todas as páginas (em baixo, em cima, à direita, à esquerda, no meio, ou páginas ímpares à direita e páginas pares à esquerda, como em livros), que utilize notas de rodapé (o programa as insere ao final da página correta), e assim por diante. Dessa forma, se você quiser que seu nome apareça na parte de cima de todas as páginas do seu texto, e o seu endereço na parte de baixo, nada mais simples. Você dá as instruções ao programa, e esquece – dali por diante ele se encarrega de cumprir suas instruções. Você simplesmente digita seu texto sem se preocupar com onde termina uma linha, onde termina uma página, e assim por diante.

Quando o seu texto estiver pronto, ele será gravado no diskette. (Alguns programas vão gravando o seu texto gradativamente, à medida em que você o compõe). Uma vez gravado no diskette, você pode deixá0lo arquivado lá, para utilização posterior, pode mandar imprimi-lo, pode continuar fazendo sua edição, etc.

A Opção 2, editar um documento já existente, funciona, no que diz respeito à facilidades de edição, exatamente como descrito acima. A diferença é que o texto já foi criado anteriormente, está gravado no diskette, e agora você quer alterá-lo, ou quem sabe apenas lê-lo, para verificar se precisa ou não de alteração. O programa lhe pedirá o nome do documento que você quer editar, e então carregará o documento na memória – se ele existir, você pode, dependendo de seu processador de texto, ou receber uma mensagem de que o documento não existe no diskette, ou acabar (às vezes sem querer) tendo um documento criado (e vazio) com aquele nome (que você provavelmente terá que deletar depois). Uma vez carregado o documento, você pode editá-lo como se o estivesse redigindo naquele momento: pode, inclusive, simplesmente acrescentar mais texto.

A Opção 3, extinguir ou deletar um documento, permite que você elimine um documento de que não mais necessite. Um simples comando e o texto desaparece. Geralmente, ao dar o comando de extinção de documento, o programa solicita que você confirme a instrução, para impedir que um documento seja eliminado por engano.

A Opção 4, imprimir um documento, permite que você imprima um documento que você está criando ou que já estava criado. Alguns processadores de texto lhe dão a possibilidade de imprimir um documento que está sendo criado ou editado sem sair da opção de criação ou edição de documentos (isto é, sem precisar voltar ao menu principal). Mas mesmo esses processadores normalmente permitem que você imprima um texto a partir do menu principal. Quando você faz essa opção, o nome do documento lhe é solicitado, e, também, lhe são feitas várias perguntas, sobre o tipo de impressora que você vai usar, o tipo de formulário, o tamanho da página, o tamanho das linhas, se você quer que o texto fique alinhado na margem esquerda e direita, ou só na esquerda, e assim por diante.

A Opção 5, informações, ou, em inglês, o famoso "Help", é incluída, em muitos processadores de texto, para tornar sua utilização mais fácil. Assim, você pode chamar a opção 5 todas as vezes que tiver alguma dúvida sobre os comandos do programa, sem precisar consultar manuais. Programas mais sofisticados lhe exibem uma lista de todas as instruções e comandos válidos sem que você precise voltar ao menu principal (que pode exigir que você primeiro grave o documento que está criando em diskette). Mas outros exigem que você grave seu documento, faça a Opção "Help", e depois carregue novamente o documento na memória, para continuar a criação ou edição de texto. Neste caso, é sempre bom ter o manual à mão!

O que fizemos foi uma descrição sucinta, mas cremos que você teve uma idéia de como funciona e como pode ser usado um processador de texto. Muitas pessoas, hoje em dia, não usam mais a máquina de escrever. O presente livro, como já mencionamos, foi inteiramente escrito, através de um processador de texto, em um microcomputador.


b. Gerenciadores de Bancos de Dados

Um banco de dados nada mais é do que um arquivo eletrônico extremamente versátil e flexível. Sua função fundamental é a mesma de um arquivo não eletrônico: armazenar e organizar informações.

Na verdade você não precisa de um complexo programa gerador e gerenciador de bancos de dados para armazenar e organizar informações: você pode fazer isso através de programas relativamente simples, e as informações que você tem não são muitas, nem muito complexas. Programas que geram arquivos de endereços, por exemplo, são geralmente muito simples. Eles permitem que você vá gerando uma série de endereços, que vão sendo armazenados na memória do microcomputador, na ordem em que vão sendo introduzidos. Subseqüentemente, quando você precisa recuperar essas informações, pode determinar que a lista de endereços seja organizada em ordem alfabética, pelo último ou pelo primeiro nome (supondo-se que tenha havido entradas diferentes para cada um desses itens), pode pedir que apenas os endereços de uma certa rua, ou de uma certa cidade, ou de um certo estado lhe sejam fornecidos, pode pedir que a lista esteja ordenada em ordem crescente, segundo o Código de Endereçamento Postal (CEP), ou segundo o código de Discagem Direta à Distância (DDD) do telefone, etc. Você pode também determinar que as informações sejam "cruzadas". Isso quer dizer que você pode pedir, por exemplo, os nomes de todas as pessoas que moram em Campinas e que têm telefone com prefixo 39. Nesse caso você "cruzou" a informação relativa à cidade com a relativa ao número de telefone. Alguns programas – estamos ainda falando de programas simples, e não de complexos gerenciadores de bancos de dados – permitem que cada pessoa cujo endereço está ma lista seja "rotulada" com alguns identificadores. Você pode, por exemplo, identificar algumas pessoas como amigos pessoais, outras como colegas profissionais, outras como parentes, etc. Dessa maneira, se você quiser mandar um cartão de Natal a todos os seus colegas profissionais, você pode ordenar ao programa que imprima uma lista (ou etiquetas de endereçamento) apenas para aqueles nomes da lista que tenham esse identificador. Temos certeza de que você já está imaginando mais uma série de utilizações para um programa como esse.

Mas programas mais complexos de geração e gerenciamento de bancos de dados podem ser utilizados para uma série infindável de aplicações, e com enorme flexibilidade. Você pode definir, na maioria deles, o tamanho de seu "registro". Um registro, como você já viu no Capítulo II, é um conjunto de dados (geralmente contidos em "campos") que possuem um certo relacionamento entre si. Nesses programas, você pode definir se seus registros terão 10, 15, ou 20 linhas, quantos campos terão, e assim por diante. Com essa flexibilidade, você pode usar o banco de dados para arquivar informações sobre os mais variados assuntos: seus livros, bibliografia sobre tópicos de seu interesse, seus discos, suas despesas, ou qualquer outra coisa.

Suponhamos que você queira catalogar seus livros. Você pode, com o auxílio de um gerador e gerenciador de bancos de dados, definir um registro semelhante a uma ficha bibliográfica (como as geralmente encontradas em bibliotecas), que contenha, por exemplo, os seguintes campos: nome do autor, título do livro, nome da editora, data e lugar de edição, e uma série de cinco (ou mais) identificadores que indiquem os principais assuntos de cada livro. Assim, você cataloga todos os seus livros, e os identifica pelos principais assuntos que eles abordam. Quando precisar de uma lista de todos os seus livros que discutem determinado assunto, você simplesmente solicita ao banco de dados lhe forneça uma listagem de todos os livros que contenham, como identificador, aquele assunto determinado. Você pode pedir listagens cruzadas de todos os livros que contenham, por exemplo, como identificadores as palavras-chave "Economia", "Brasil" e Século XIX". Se você tiver livros que tratem da economia brasileira no século XIX eles serão listados. Se não tiver, o programa deverá lhe dizer que não encontrou nenhum livro que tenha essa combinação de assuntos. Não se esqueça de que, com a maioria desses programas de gerenciamento de bancos de dados, você pode "cruzar" as informações contidas nos identificadores com os dados de outros campos. É possível, por exemplo, solicitar uma listagem de todos os seus livros que tratem do assunto "Educação" e que tenha sido publicados antes de 1964 pela Companhia Editora Nacional.

Um programa gerador e gerenciador de bancos de dados pode também ser usado para você arquivar informações sobre suas despesas. Você pode definir seu registro de modo a conter todos os dados necessários sobre cada item de despesa: a data e o montante da despesa, o destinatário do pagamento, seu endereço, CIC e RG se for o caso, e um (ou mais de um) identificador (por exemplo, alimentação, vestuário, combustível, livros, lazer, etc.), que indique a natureza da despesa efetuada. Dessa forma, você pode saber, em um instante, quanto gastou no mês de Dezembro de 1984 com alimentação, ou qual o total de suas despesas naquele mês, ou ano inteiro, etc. Ao final do ano, você pode preparar sua declaração de Imposto de Renda simplesmente recolhendo informações de seu banco de dados: gastos com instrução, com médicos, dentistas, hospitais, estarão todos arquivados, com indicação de quanto foi paga a cada pessoa, em cada categoria, etc.

Alguns programas mais sofisticados, além de efetuar cálculos aritméticos básicos, preparam diferentes tipos de gráficos que permitem que você represente, por exemplo, suas despesas, em formas gráficas as mais variadas. Outros preparam inclusive algumas estatísticas básicas, calculando médias, desvio padrão, etc.

Cremos que essas explicações e esses exemplos já deixam bastante claro o potencial que representa um programa gerador e gerenciador de bancos de dados. Trata-se de um dos programas mais úteis que alguém pode ter, especialmente em função de sua versatilidade e flexibilidade.


c. Planilhas Eletrônicas

Planilhas eletrônicas são programas destinados à manipulação de dados numéricos. Uma planilha é basicamente uma matriz, composta de x linhas (às vezes identificadas por números) e y colunas (às vezes identificadas por letras do alfabeto). A conjunção de uma linha e uma coluna forma o que se convencionou chamar de uma "célula" da planilha. Uma planilha pode ter vários tamanhos: digamos que a nossa tenha 40 linhas por 50 colunas (ou seja, 40*50, ou 2.000 células). A maioria das planilhas, porém, é bem maior: uma planilha de 254 linhas por 64 colunas, ou seja, de 16.256 células, não é algo incomum! O tamanho de uma célula pode ser variado: normalmente uma célula aparece, digamos, com nove espaços. Estes, porém, podem ser aumentados ou diminuídos. Obviamente, a tela de um microcomputador só pode mostrar umas 20 linhas (ou até menos, dependendo do tamanho da tela) e umas poucas colunas – o número exato depende do tamanho da célula (e, naturalmente, do tamanho da tela de seu microcomputador). Um vídeo de 80 colunas, por exemplo, pode exibir até oito colunas de nove espaços (os espaços restantes deverão conter os números das linhas).

O importante em uma planilha eletrônica é que você pode definir que algumas células conterão informações alfanuméricas ("rótulos"), outras conterão dados, outras fórmulas, e assim por diante. Dessa maneira, você facilmente pode construir algo assim:

Com uma planilha assim você pode não só registrar despesas efetivamente realizadas (que é algo que você pode fazer com um programa gerenciador de bancos de dados), bem como, o que talvez seja mais importante, fazer planejamento financeiro. Você pode acrescentar fórmulas a essa planilha que demonstrem os percentuais dos gastos totais que foram comprometidos com os diferentes tipos de despesas, no total ou em cada mês. Dessa forma, você pode fazer análises do tipo "O que acontecerá se ...? "O que acontecerá a esse planejamento se o preço do combustível subir 30% em Março, mais 35% em Maio, mais 50% em Agosto, e mais 45% em Outubro? Qual o impacto que isso terá sobre o orçamento de despesas? Qual o percentual de aumento do orçamento total, se esses reajustes no preço de combustível ocorrerem? Que percentual do total das despesas será representado, nesse caso, pelos gastos com combustível? E assim por diante. Se você preferir, pode fazer todo esse planejamento em termos de valores correntes, e depois incluir fórmulas que transformem esses valores correntes nos valores correspondentes das Obrigações Reajustáveis do Tesouro Nacional (ORTNs). Dessa maneira, a qualquer momento, você pode transformar os dados de seu planejamento em valores aproximadamente correntes naquela ocasião. E assim por diante.

Embora de aplicação mais limitada do que os dois exemplos anteriores, as planilhas eletrônicas têm se mostrado de grande utilidade em vários contextos profissionais. Se você alguma vez já lidou com planejamento financeiro, elaboração de orçamentos, etc., certamente saberá apreciar a contribuição ao seu trabalho que um programa como esse pode trazer.

Ilustramos com planejamento financeiro, mas as planilhas eletrônicas podem ser usadas para controle de estoque, estatísticas, e vários outros tipos de aplicação.

Estão se tornando comuns, hoje em dia, aplicações integradas, que incluem, num mesmo programa, um processador de texto, um gerenciador de bancos de dados, e uma planilha eletrônica. Dada a sua complexidade, esses programas requerem bastante memória são só para o seu armazenamento como para o armazenamento dos dados que manipulam. Assim sendo, não são todos os microcomputadores que podem usufruir dos benefícios que um programa desse tipo pode trazer. Mas você pode imaginar a utilidade de um programa aplicativo que lhe permite armazenar, em banco de dados, todas as informações de que você precisa, que lhe possibilita, através de uma planilha eletrônica, fazer os mais variados cálculos com esses dados, e que, ao final, lhe permite, através do processador de texto, redigir um relatório, ou uma análise, de tudo o que foi feito – isso tudo sem sair de dentro do programa!


d. Outros Tipos de Aplicações

Não vamos gastar muito tempo aqui falando em outras aplicações profissionais e pessoais. Elas são mais tradicionais e mais conhecidas. Programas voltados para a utilização de microcomputadores na área administrativa são comuns: fazem folha de pagamento, controle financeiro, registro de contas a receber, contas a pagar, inventário e controle de estoque, etc. Muitos programas, hoje em dia, são voltados para a administração doméstica ou pessoal, e podem ser usados para fazer o controle de contas bancárias, manter registro de investimentos, fazer inventário de pertences pessoais, construir uma agenda pessoal, etc.

Estão também se tornando cada vez populares os programas geradores de gráficos. Alguns programas realmente fantásticos permitem que você gere gráficos sofisticadíssimos, com simulação de terceira dimensão, em várias cores e com a melhor solução, e, depois, com a ajuda de equipamentos adequado, transfira esses gráficos para slides ou transparências, para que sejam projetados. Com a utilização de alguns monitores, estrategicamente colocados, pode-se fazer uma apresentação que, com o auxílio de microcomputadores, vá gerando os mais variados gráficos "ao vivo". Acoplando-se um sistema de vídeo cassette (ou, preferivelmente, vídeo-disco!) ao microcomputador, os gráficos podem ser gravados em fita (ou em disco, onde o acesso é direto, e não seqüencial), para posterior utilização mesmo em locais onde não haja um microcomputador. As possibilidades, como você pode ver, são ilimitadas – e a cada dia surgem novas!

Por fim, jogos. Para o público, em geral, jogos talvez sejam a aplicação mais conhecida de microcomputadores. Muitos microcomputadores nada ficam a dever aos vídeo-jogos (que são, como já vimos, microcomputadores especializados) no que diz respeito à qualidade e à variedade dos jogos desenvolvidos para eles. Há jogos de ação, jogos de aventura, jogos de lógica e de estratégia, jogos educacionais. Alguns jogos envolvem complexas simulações, como aqueles que procuram reconstituir atividades como a bolsa de valores, a gestão de uma empresa, etc., e podem exigir horas para que se complete uma partida. Jogos mais complexos permitem que a partida seja interrompida e sua situação no momento gravada em diskette ou fita, para posterior continuação. Jogos como xadrez podem ser jogados em diferentes níveis de dificuldade, de modo que tanto o principiante como o mestre podem jogar em seu próprio nível. Há jogos educativos, que ensinam crianças pequenas a contar, a realizar operações aritméticas, a soletrar, etc.

Aí estão, em resumo, os principais tipos de aplicação dos microcomputadores. Vamos, agora, brevemente, mencionar os principais setores em que esses tipos de aplicação podem ser, e estão sendo, utilizados. Evidentemente, a discussão do primeiro capítulo, bem como o que acabamos de dizer aqui, já incluíram muitas observações que se aplicam a essa questão. Para evitar sobreposições desnecessárias, vamos apenas mencionar alguns setores, que já foram discutidos, e nos concentrar em outros que não foram ainda mencionados.


B - Áreas de Aplicação


a. Área Profissional

Na área profissional, os microcomputadores têm sido usados, principalmente, em setores administrativos, técnicos, científicos, e educacionais.


Setor Administrativo

A utilização de microcomputadores no setor administrativo dispensa maiores comentários. Grande parte dos exemplos dados no presente capítulo ilustra a aplicação de microcomputadores nesse setor. Outros exemplos, aqui não discutidos em detalhe, mas apenas mencionados, são por demais conhecidos para justificar uma descrição mais pormenorizada.


Setor Técnico

Falamos pouco, até aqui, sobre a utilização de microcomputadores em atividades mais técnicas, como, por exemplo, na indústria, ou em outros ramos profissionais, como a medicina, o direito, a engenharia, etc. Essa omissão se deve ao fato de que essas aplicações são muito específicas, e nos pareceu de maior interesse concentrar a atenção nas aplicações mais genéricas e abrangentes. Mas não podemos deixar de fazer menção a essas outras. Na área de controle de processos, equipamentos os mais variados são ligados a microcomputadores, através de interfaces especiais, e têm seu funcionamento monitorado pelos microcomputadores. Seguindo parâmetros que lhes são fornecidos, e com base nos dados que os equipamentos lhes transmitem, os microcomputadores regulam o equipamento, controlando processos, mantendo um registro de todas as ocorrências, dando alarmes, quando necessário, etc. Computadores maiores, ligados a robôs industriais, já são usados em larga escala em linhas de montagem, nos países mais desenvolvidos, realizando tarefas repetitivas, ou que exigem muita precisão ou que são perigosas de executar. Sua utilização nessas funções já começam a ocorrer aqui no Brasil também.

Na área da medicina, as aplicações são intermináveis. A maior parte dos equipamentos mais sofisticados utilizados hoje na área médica está ligada a microcomputadores ou é construída de modo a já possuir, internamente, microprocessadores. Na verdade, não é possível imaginar a medicina moderna sem microprocessadores e microcomputadores. Quem já foi ao médico, ou teve a infelicidade de precisar ser internado em um hospital, sabe disso.

Na área de engenharia, microcomputadores são utilizados em todos os ramos. Talvez a aplicação mais digna de nota aqui seja na área de engenharia de projetos. Os projetos assistidos por computador (conhecimentos como "CAD", seguindo o inglês "Computer-Assisted Design") permitem que se faça o projeto de uma peça, ou de uma casa, ou de qualquer coisa, através do computador. Os parâmetros e as especificações são fornecidos ao computador, que faz o desenho na tela e o imprime através de um plotter (veja capítulo anterior). Os parâmetros e as especificações podem ser alterados à vontade, para ver como as modificações afetam o projeto: pode-se girar, em qualquer direção, o que está sendo mostrado na tela, pode-se exibir o que está sendo projetado de qualquer ângulo, pode-se mostrar em detalhe (em "zoom") qualquer aspecto do que está na tela, etc. Dias de trabalho em pranchetas são substituídos por algumas horas, ou talvez por apenas alguns minutos, diante de um computador.

Junto com o CAD vem o "CAM", do inglês "Computer-Assisted Manufacturing", Fabricação ou Manufatura Assistida por Computador. O projeto que foi desenvolvido pelo computador, uma vez completado e aprovado, pode ter, dependendo do projeto, sua fabricação controlada fundamentalmente por computador. Isso, tudo, no momento, certamente requer equipamento de maior porte. Mas com o crescimento exponencial da potência e da sofisticação dos microcomputadores, muitas dessas atividades já podem ser desenvolvidas através de microcomputadores.

Há muitas outras aplicações, no setor técnico, mas a especificidade delas, bem como o espaço disponível, não permite, que nos concentremos em todas.


Setor Científico

Os computadores, desde sua criação, sempre desempenha papel fundamental na pesquisa científica e tecnológica. Há até bem pouco tempo, universidades e institutos de pesquisa e desenvolvimento só possuíam computadores de maior porte, para a realização dos complexos cálculos matemáticos exigidos pela atividade científica. Hoje em dia, microcomputadores, acoplados ou não a equipamentos de maior porte, já são extremamente comuns em laboratórios de pesquisa e desenvolvimento. Muitos dos cálculos exigidos não podem ser realizados, pelo menos com a rapidez necessária, em microcomputadores. Mas muita coisa já está sendo transferida para eles.


Setor Educacional

A utilização de microcomputadores na área de educação está se tornando uma de suas aplicações mais comuns e cada vez mais difundidas. Microcomputadores são hoje usados desde a pré-escola até a pós-graduação, para não mencionar programas tutoriais que podem ser usados fora do contexto escolar. Já há várias linguagens voltadas especificamente para a educação: LOGO e PILOT são as principais. Projetos especiais para se introduzir microcomputadores nas escolas aparecem em todos os países do mundo desenvolvido, e também no Brasil. O microcomputador é um recurso educacional extremamente flexível. Pode ser usado para instrução programada, simulações, jogos pedagógicos, para a aprendizagem, basicamente por exploração e descoberta, de princípios e conceitos das mais variadas áreas do saber, para montagem de gráficos, para a avaliação, para a recuperação, etc. – para não mencionar sua utilização mais proverbial nas tarefas mais tradicionais de administração escolar. Na área educacional, talvez uma das aplicações mais importantes seja a utilização de microcomputadores na recuperação e educação de pessoas portadoras de vários tipos e graus de deficiência física e/ou mental. Trabalhos interessantíssimos têm se desenvolvido neste setor, por cientistas brasileiros – embora, pensando-se no potencial existente, estejamos ainda no começo.


b. Área Pessoal

Na área pessoal, os microcomputadores estão hoje sendo usados também em atividades educacionais, de lazer, e de administração doméstica e pessoal.

Em geral, os programas destinados à área de educação são baratos, muitos deles disponíveis no domínio público e em versões compatíveis com virtualmente todos os microcomputadores pessoais. Podem, portanto, ser utilizados em casa. Os jogos educacionais se multiplicam, embora sua qualidade pedagógica freqüentemente seja discutível. Pesquisas têm demonstrado que grande parte das pessoas que adquirem um microcomputador o fazem pensando na educação dos filhos. A preocupação com a educação se manifesta não só na utilização do microcomputador para o aprendizado de conteúdos curriculares tradicionais, como matemática, física, química, biologia, história e geografia, etc., mas, hoje em dia, em seu uso com vistas ao domínio do próprio equipamento. Diante do fato de nossa sociedade está se tornando cada vez mais informatizada, muitos pais se preocupam em possibilitar aos filhos, desde cedo, conhecimento, manejo, e domínio do microcomputador.

Adolescentes e jovens têm se mostrado programadores dos melhores – certamente dos mais criativos. Alguns dos programas mais interessantes existentes hoje no mercado, como sofisticadíssimos e lindos programas de simulação de vôo, foram escritos por pessoas que muitos adultos considerariam como meras crianças, mas que tiveram experiência com computadores desde muito cedo.

A outra principal razão para se adquirir um microcomputador pessoal ou doméstico é o lazer. Jogos estão indiscutivelmente entre os programas mais vendidos para microcomputadores pessoais.

O microcomputador pode, também, ser utilizado em tarefas da administração doméstica e pessoal. Tem sido um pouco exagerada a utilidade de microcomputador nessa área. Arquivos de receitas, agendas pessoais, contas bancárias, são, geralmente, para a maioria dos mortais, equacionados mais facilmente pelos métodos tradicionais. Isso porque geralmente não compensa utilizar o microcomputador para arquivar umas poucas receitas, ou armazenar o cardápio da semana, ou manter a agenda de uns poucos compromissos semanais ou o controle de uma ou no máximo duas contas bancárias. Há pessoas que fazem tudo isso através de um microcomputador. Mas o fazem, via de regra, mais pelo prazer de trabalhar com o microcomputador do que pelo desejo de obter maior eficiência em seus negócios familiares ou pessoais.

Mas importante, talvez, do que essas tarefas propriamente de administração, tem sido a utilização de programas como os mencionados atrás (processadores de texto, gerenciadores de bancos de dados, etc.) para o desenvolvimento de atividades pessoais, como preparação de trabalhos escolares, redação de correspondência particular, arquivamento de informações de interesse pessoal, etc.

Por fim, devemos mencionar que microcomputadores estão começando a ser usados em tarefas de controle de processos caseiros, por assim dizer. Com as devidas interfaces, e os equipamentos adicionais necessários, microcomputadores podem acender e apagar luzes, ligar e desligar aparelhos, atender telefones e dar e receber mensagens, etc., assim controlando uma série de processos dentro de uma casa. Já há casas experimentais, para efeitos de demonstração, que são quase que totalmente computadorizadas, onde a porta só abre mediante a digitação de um código de identificação, ou mediante o reconhecimento de determinadas vozes, etc. Mas isso ainda está no futuro para a maioria dos possuidores de microcomputadores – embora nessa área o futuro geralmente chegue bem mais rápido do que a gente normalmente imagina.

Certamente há uma série infindável de outras aplicações que poderiam ser lembradas aqui. A intenção, porém, não é fazer um catálogo exaustivo das aplicações existentes e possíveis: é só dar uma idéia do potencial riquíssimo do microcomputador, no trabalho e em casa. Com toda essa riqueza de aplicações, não temos a menor dúvida de que, dentro de pouco tempo, o microcomputador será um equipamento mais indispensável do que a máquina de escrever, de calcular, o arquivo de aço, em todos os escritórios, consultórios, ou locais onde se exerça uma atividade profissional. E dentro do lar, será mais uma, talvez a mais importante, utilidade doméstica.


3 - Software Básico

Os programas aplicativos a que acabamos de nos referir foram escritos em algum tipo de linguagem de programação. Alguns possivelmente foram escritos em uma linguagem de alto nível, como BASIC. Outros – provavelmente a maioria daqueles programas mais sofisticados – foram escritos em Assembly. E assim por diante.

Embora a linguagem BASIC seja chamada de alto nível, e a linguagem Assembly não, elas têm algo muito importante em comum: ambas foram inventadas para facilitar o trabalho do programador. O hardware do computador, como tal, não entende nem uma nem outra. Tanto BASIC como Assembly precisam ser TRADUZIDAS para a linguagem binária que ele, esta sim, em um certo sentido do termo, pode entender. Essa tradução é feita por programas chamados TRADUTORES, que, no caso do BASIC, são chamados de Interpretadores (podendo, porém, também ser Compiladores) e, no caso de Assembly, são chamados de Montadores, ou Assembler.

Esses programas tradutores constituem o cerne das linguagens de programação. São eles que permitem que programas escritos nessas linguagens sejam convertidos para a linguagem da máquina. Por isso eles são considerados como parte do chamado SOFTWARE BÁSICO de um microcomputador, ou seja, como parte daquele conjunto de programas cuja finalidade é fazer o equipamento funcionar de maneira eficiente e aparentemente simples. Isso se dá porque esses programas assumem a responsabilidade por uma série de tarefas que, se não fossem realizadas por eles, teriam que ser desempenhadas pelo usuário.

Mas os programas tradutores não são os únicos programas a constituir o software básico de um microcomputador. Há vários outros, freqüentemente chamados de UTILITÁRIOS, entre os quais o mais importante é o sistema operacional. Esses programas são chamados de utilitários por razões óbvias: eles são úteis ao usuário, automatizando uma série de funções que, não fossem eles, teriam que ser realizadas pelo usuário.

Vamos, portanto, em primeiro lugar, dar uma visão geral de como é possível classificar os vários tipos de software básico, fazendo um diagrama bastante simples:


A - Linguagens

Em um sentido estrito dos termos "software" e "linguagem", as linguagens de programação, enquanto tal, não são, propriamente, software: elas são, como veremos, um conjunto de vocabulário e de regras de sintaxe. O software, propriamente dito, é o programa tradutor, que converte o programa escrito em linguagem de programação em um programa, em linguagem de máquina, executável pelo computador.

Mas tornou-se bastante comum usar o termo "linguagem" para se referir ao conjunto maior composto pela linguagem de programação, propriamente dita, ou seja, o vocabulário e as regras, e o programa tradutor. Na verdade, o vocabulário e as regras de sintaxe são a documentação que nos permite escrever um programa "traduzível" pelo tradutor. Por isso, vamos continuar falando em linguagens como sendo software básico quando, em um sentido mais exato dos termos, teríamos de dizer que os tradutores é que são parte do software básico.

Isso posto, vamos falar sobre linguagens de programação. Como você já viu em capítulos anteriores – um pouco quando falamos em sistemas binários, e também quando falamos sobre hardware – o hardware do computador, incluído, naturalmente o do microcomputador, só "entende" números binários, ou seja, combinações dos dígitos 0 e 1, que exprimem estados discretos dos circuitos eletrônicos existentes dentro dele: ligado ou desligado, com corrente ou sem corrente.

É possível escrever um programa usando apenas os dígitos 0 e 1, ligando ou desligando os vários bits que compõem as posições de memória de um computador. Um programa escrito dessa maneira é chamado de programa em "linguagem de máquina" – que é a única linguagem que o computador diretamente entende. Antes de serem inventadas as linguagens de programação, propriamente ditas, a única maneira de programar o computador era através de linguagem de máquina – ligando ou desligando, por exemplo, no painel do computador, alguns interruptores que correspondiam aos bits de cada byte da memória.

O problema principal com linguagem de máquina é que, muito embora ela seja a linguagem natural dos computadores, ela não é nada natural para a maioria de nós, mortais.. Antes que outros tipos de linguagem fossem inventados, os programadores não tinham outro recurso a não ser se "binarizar": pensar em termos de 0s e 1s. Mas, felizmente, outras linguagens de comunicação com a máquina foram inventadas. Essas linguagens são normalmente classificadas em linguagens de baixo nível e linguagens de alto nível.

Linguagem de baixo nível, aqui, naturalmente, nada tem que ver com a linguagem que a gente freqüentemente ouve em certos ambientes... Linguagens de baixo nível são assim chamadas porque seu "nível", por assim dizer, está bem mais próximo da linguagem de máquina, que seria o nível mais baixo possível de interação com o computador. Linguagens de alto nível, por outro lado, são linguagens bem mais próximas da linguagem natural de quem as inventou – que é o inglês, na maioria das vezes – e que permitem, portanto, um nível mais "normal" de comunicação com o computador. A linguagem de mais alto nível possível para interação com o computador seria, naturalmente, a linguagem natural, falada no dia-a dia. Nenhum computador a entende, pelo menos por enquanto.

A principal linguagem de programação considerada como de baixo nível é uma linguagem chamada Assembly. O termo "assembly", em inglês, quer dizer "montagem", em português – "linha de montagem" em inglês é "assembly line", por exemplo. Essa linguagem permite que o programador, ao invés de usar 0s e 1s para escrever seus programas, use certos símbolos que são representações mnemônicas das instruções que ele quer dar ao microcomputador. Por exemplo, o programador pode dar uma instrução na forma LDA, que significa Carregue o Acumulador. (Essa instrução é mnemônica porque LDA representa "LoaD Accumulator" em inglês). É bem mais fácil lidar com símbolos assim do que com os 0s e 1s, não é mesmo?

Mas como é que o computador entende que você quer carregar o acumulador quando você diz LDA para ele? A linguagem natural do computador não é a binária? É verdade. Para que ele possa entender uma instrução como LDA é necessário que haja um programa "tradutor", cuja função é traduzir em linguagem binárias as instruções simbólicas usadas em Assembly. No caso, o tradutor se chama Assembler. Um Assembler, portanto, é um programa, este sim em linguagem de máquina, que traduz as instruções simbólicas, mnemônicas, da linguagem Assembly para códigos binários que o computador pode entender e executar.

Como a linguagem Assembly é muito próxima da linguagem de máquina, propriamente dita, há várias versões dela, correspondendo, cada uma dessas versões, a um tipo de microprocessador. Apesar disso, há, naturalmente, princípios gerais que todas as versões da linguagem Assembly compartilham. Assim sendo, é comum se fazer referência à linguagem Assembly para o 6502, para o Z80, para o 8080, etc.

Apesar de Assembly já ser um avanço significativo, no sentido de tornar as coisas mais fáceis para os programadores profissionais, as perspectivas, para os usuários em geral, que são, no mais das vezes e na melhor das hipóteses, programadores leigos, só começaram a melhorar, realmente, com o surgimento das linguagens de alto nível, bem mais próximas de uma linguagem natural, como é o caso do inglês.

Tendo sido inventadas, em sua maior parte, por essas pessoas de fala inglesa, as linguagens de alto nível geralmente incorporam vocabulários e até regras de sintaxe da língua inglesa. Não podem, porém, só por causa disso, ser confundidas com o inglês. Muitas pessoas, ao ver um programa de computador pela primeira vez, escrito, por exemplo, em BASIC, que é, talvez, a mais popular, hoje em dia, das linguagens de alto nível, acabam por acreditar que o computador só entenda inglês. Isto, como você já sabe, não é verdade, pois o computador não entende nem o inglês – só entende linguagem de máquina e, com a ajuda de um tradutor, linguagens de programação. E só entende mesmo as linguagens de programação porque existem os programas tradutores, escritos em linguagem de máquina, que traduzem as instruções escritas em Assembly, ou em algumas linguagem de alto nível, para os 0s e 1s de sua linguagem binária.

Mas estávamos dizendo que as linguagens de alto nível são bastante semelhantes, em sua estrutura, a linguagens naturais, como, em especial, ao inglês. Todas elas têm um determinado vocabulário e um conjunto de regras gramaticais, ou de sintaxe. Além disso, o vocabulário é construído com a ajuda de um alfabeto e também pode ser dividido em categorias semelhantes aos nossos verbos, substantivos, pronomes etc.

Para dar um exemplo, os verbos de uma linguagem de programação descrevem as operações a serem executadas pelo computador. Em BASIC, temos verbos como PRINT, READ, LET, etc. Os substantivos são comparáveis às constantes que aparecem nos programas (endereços de memória e valores, numéricos e não numéricos). Os pronomes, por sua vez, são semelhantes às variáveis, que representam ora um endereço de memória, ora outro, e que contêm, ou armazenam, ora um valor, ora outro, que são atribuídos a esses endereços.

Você já deve ter lido ou ouvido que existem inúmeras linguagens de programação de alto nível, com vocabulários e regras de sintaxe diferentes, e que nem todos os computadores falam a mesma linguagem. Algumas linguagens foram desenhadas para computadores específicos e não são entendidas por outros. Além disso, algumas linguagens foram elaboradas para solucionar alguns tipos específicos de problemas, como, por exemplo, resolver complexas equações matemáticas, imprimir relatórios com certa facilidade, fazer gráficos etc. Assim sendo, uma linguagem como FORTRAN - "Formula Translator" - se presta muito mais à resolução dos complicados cálculos matemáticos dos cientistas, e uma linguagem como COBOL - "Common Business-Oriented Language" - à impressão de relatórios comerciais informativos, elegantes, fáceis de ler.

A linguagem BASIC - "Beginner’s All-purpose Symbolic Instruction Code" - é a mais utilizada em microcomputadores, em parte porque é das mais fáceis e simples - o que não quer dizer que não seja poderosa, isto é, que você não possa exprimir, através dela, uma série bastante variada de tipos de instrução - e em parte porque, como o próprio nome indica, ela se presta virtualmente a todos os propósitos - a saber, desde a realização de cálculos matemáticos e científicos e elaboração de relatórios comerciais até ao desenvolvimento de jogos, de composições musicais, etc.

É bom que se diga, desde já, que, da mesma forma que uma linguagem natural apresenta variações, ou dialetos, quando falada em diferentes países, ou em diferentes regiões do mesmo país, uma linguagem de alto nível, como BASIC, também apresenta suas variações, ou seus dialetos, quando implementadas nos diferentes microcomputadores. Em sua maior parte, essas variações são de menor importância - questões meramente de estilo! Em outros casos, são mais substantivas, e se devem ao fato de que BASIC não tem, diferentemente de algumas outras linguagens de alto nível, um padrão fixo aprovado pelo ANSI - "American National Standards Institute" (Instituto Americano de Padrões Nacionais). Apenas um pequeno sub-conjunto de BASIC foi aprovado pelo ANSI.

À vista disso, algumas linguagens de alto nível, como é o caso de BASIC, não são muito "portáteis", isto é, transportáveis de um microcomputador para outro. Isto faz com que, geralmente, um programa escrito para uma determinada versão, ou para um determinado microcomputador, precise sofrer certas modificações para poder ser utilizado em outro microcomputador, que tenha uma versão um pouco diferente da linguagem.

Da mesma forma que a linguagem Assembly precisa de um programa tradutor, o Assembler, para que o programa escrito em Assembly seja transformado em linguagem de máquina e possa ser executado pelo computador, as linguagens de alto nível, com maior razão, também necessitam de programas tradutores. Há, basicamente, dois tipos de tradutores para linguagens de alto nível: Compiladores e Interpretadores. Cada um desses tipos de tradutores tem suas tem suas vantagens e desvantagens.

Mas antes de ver as vantagens e desvantagens de cada um desses dois tipos de tradutores, vamos caracterizar o que os diferencia um do outro. Um compilador é um programa, em linguagem de máquina, que, assim que você escreve um programa aplicativo, em linguagem de alto nível, é chamado e traduz o seu aplicativo para linguagem de máquina, produzindo, no processo, um programa diferente (embora, naturalmente, faça a mesma coisa). O programa que você escreveu, ou copiou de uma revista ou de um livro, e que está em linguagem de alto nível, é normalmente chamado de PROGRAMA FONTE. Uma vez compilado, isto é, traduzido, pelo compilador, para linguagem de máquina, cria-se um PROGRAMA OBJETO (ou um Programa em Código Objeto, como preferem alguns). Via de regra, ambos os programas, ou, se você prefere, ambas as versões, devem ser gravados em disco ou fita.

O fato mais importante a ser lembrado sobre o compilador é que, quando ele é chamado a compilar um programa fonte, ele vai lendo e traduzindo as instruções, sem executá-las. Se encontra algum erro de grafia ou de sintaxe anota, e (freqüentemente) interrompe a compilação. Você têm, daí, que localizar o erro, corrigi-lo, e começar a compilação desde o início de novo. Somente quando o compilador não encontra nenhum erro nem de grafia nem de sintaxe é que o programa é definitivamente compilado. Uma vez compilado, pode então ser executado.

No caso de um interpretador, o processo é diferente. O interpretador não pega o programa escrito em linguagem de alto nível e o traduz como um todo, produzindo um código objeto. Quando uma linguagem é interpretada, e não compilada, o programa que você escreveu ou copiou vai sendo traduzido e executado linha por linha. O interpretador vai analisando instrução por instrução, traduzindo para linguagem de máquina, e executando. Se ele encontra algum erro, acusa o erro imediatamente, informando-lhe o número da linha em que está o erro. Você pode corrigir o erro, e, com alguns interpretadores, continuar a execução do programa a partir dali, de maneira bastante simples, sem necessidade de começar tudo de novo.

Por aí você já pode ver onde estão as vantagens e as desvantagens de cada um desses tradutores. Depois de o programa estar sem erros, o compilador traduz tudo, uma vez só, produzindo uma versão compilada do programa, em linguagem de máquina. Estando em linguagem de máquina, essa versão é executada, agora, pelo microcomputador, com muito maior rapidez, porque não é necessário que seja feita uma tradução a cada vez que o programa é executado. O interpretador, por seu lado, não produzindo uma versão traduzida do programa, tem que, a cada vez que o programa é executado, traduzir tudo de novo, linha a linha, fazendo com que a execução seja mais demorada.

Logo, se você está interessado em um programa que execute rapidamente, e que não precisa ser alterado freqüentemente, use uma linguagem compilada, se for possível. Não se esqueça, porém, de que, cada vez que você quiser alterar o programa, terá que recompilá-lo.

Se você, porém, está mais interessado em escrever programas do que em utilizá-los em larga escala, um interpretador é muito mais conveniente. Você escreve uma linha, ou um conjunto de linhas, executa, para ver se tudo está funcionando como era esperado, corrige, caso isso não se dê, introduz alterações de detalhe, embelezamento, etc., sem ter que recompilar o programa a cada uma dessas pequenas alterações. Isso torna o desenvolvimento de programas muito mais fácil e eficiente, e muito mais interativo. De imediato você sabe se cometeu um erro de grafia ou de sintaxe, sem ter que esperar pela compilação. Por outro lado, o seu programa não vai ser executado tão rapidamente.

O ideal, para quem gosta de escrever programas e de vê-los sendo executados rapidamente, é ter um interpretador para a fase de desenvolvimento, e um compilador para gerar um código objeto do programa, depois de ele estar pronto e depurado de erros. Dessa maneira, é possível ter o melhor dos dois mundos - mas gasta-se mais, pois serão necessários dois tradutores!

Já fizemos referência a FORTRAN, a COBOL, e a BASIC. Uma outra linguagem muito usada em microcomputadores é Pascal. Pascal é uma linguagem excelente para desenvolvimento de programas e muito utilizada no ensino de programação, principalmente em meios universitários. Outra linguagem que se torna cada vez mais popular, na área educacional, é LOGO, que é muito utilizada para ensinar programação a crianças, em virtude, entre outras coisas, de sua simplicidade e de sua capacidade gráfica.

Há muitas outras linguagens, a que não faremos sequer referência aqui. No capítulo seguinte, onde daremos algumas noções básicas sobre Programação, você terá alguma idéia sobre como escrever um programa usando uma linguagem de alto nível.

Vamos falar um pouco, agora, sobre os outros componentes do software básico, os programas utilitários.


B - Utilitários

Programas utilitários são uma ampla e variada gama de programas que tornam mais simples e eficiente a utilização do microcomputador. Sua finalidade é facilitar a comunicação com a máquina e tornar seu uso mais eficaz.

Os programas utilitários existentes dependem em grande parte dos microcomputadores específicos para os quais foram escritos. De modo geral, contudo, a maior parte dos microcomputadores possui, em ROM ou em disco, pelo menos os seguintes tipos de utilitários: Sistema Operacional, Editor, Monitor, Depurador e Carregador. Há, além desses, uma variedade enorme de programas disponíveis para os vários microcomputadores, muitos deles desenvolvidos por terceiros (i.e., não fornecidos com o equipamento). Vamos nos concentrar naqueles por serem os mais comuns. Vamos, porém, alterar um pouco a ordem, deixando o sistema operacional para o fim.

Talvez um dos utilitários mais usados seja o EDITOR . Editores são programas interativos que, armazenados na memória, permitem que o usuário escreva um programa, geralmente em Assembly, ou mesmo gere várias formas de texto, e, ainda, faça alterações em programas e textos criados anteriormente. Embora o editor permita que, através dele, sejam geradas várias formas de texto, ele não dever ser confundido com o que às vezes é chamado, em português, de "Editor de Textos". Um Editor de Textos é a mesma coisa que um Processador de Textos, a que já fizemos referência, e é, geralmente, um editor muito mais sofisticado.

O editor é muitas vezes armazenado em alguma forma de armazenamento externo: quando ele é necessário, é carregado em RAM. O programador se comunica, então, com o editor através do teclado e da tela.

Da mesma forma que um interpretador, o editor é interativo. Os programas fonte, tanto para Assembler como para compiladores, são tipicamente, desenvolvidos com a ajuda do editor. É o editor, pois, que permite ao programador gerar programas fonte para esses tradutores.

Mas como o editor pode ser usado para criar qualquer tipo de texto, e não apenas programas, ele também é útil para tarefas menos sofisticadas de processamento de texto, i.e., para escrever cartas, elaborar relatórios, preparar manuscritos, etc., e mesmo para gerar arquivos mais simples. Para documentos que precisam de uma formatação mais bem elaborada, e de uma impressão mais flexível e bem cuidada, é recomendável a utilização de um processador de textos. De igual forma, para a geração de arquivos mais sofisticados, um gerador de bancos de dados é indispensável.

Uma vez criado um programa, ou um bloco de texto, ele pode ser editado à vontade. O editor armazena o material produzido, temporariamente, na memória RAM. Assim que esse material estiver pronto, sem erros, o editor o grava, mediante instruções apropriadas, em alguma forma de armazenamento externo (disco ou fita), ou o imprime em papel. Através de uma impressora.

Outro utilitário freqüentemente usado é o MONITOR - que não deve ser confundido com o monitor de vídeo de seu microcomputador! Às vezes armazenado em ROM, outras vezes em disco ou fita, o monitor desempenha funções básicas e essenciais para um programador, ou mesmo para um usuário mais sofisticado.

O monitor permite que as tarefas como a digitação de programas em linguagem de máquina, sua edição e depuração, sejam todas executadas através do teclado e da tela, sem necessidade de recorrer aos detestáveis painéis existentes nos computadores antigos, e já mencionados.

Suas principais tarefas, em resumo, são:

- permitir a introdução na memória do computador tanto de instruções como de dados;

- exibir os conteúdos das várias posições de memória;

- facilitar a alteração desses conteúdos;

- executar programas.

A maior parte dos monitores usa números hexadecimais quando endereça posições de memória ou exibe seus conteúdos, embora alguns operem tanto com hexadecimais como com decimais, fazendo, neste caso, as devidas conversões automaticamente. Monitores são extremamente úteis, em função disso, para o desenvolvimento e a depuração de programas que, escritos em Assembly, ou de alguma outra forma, já estão traduzidos para linguagem de máquina.

Muitos monitores contêm o que é chamado de um "Disassembler", isto é, comandos que permitem que um programa que já está na memória, em linguagem de máquina, seja "vertido" para Assembly, para poder ser analisado, editado, ou depurado.

O monitor, portanto, é, principalmente um programa que nos deixa ver a memória do computador e alterar os conteúdos dessa memória. É possível, portanto, introduzir um programa em linguagem de máquina de memória do computador, usando o monitor. Para fazer isso, porém, você terá que saber, naturalmente, quais os números que deve colocar em cada posição de memória, para que o computador faça o que você quer. Isso você só saberá se for um programador experiente em linguagem de máquina.

Mas existem vários programas em linguagem de máquina, publicados principalmente em revistas especializadas, que vêm na forma de uma série de números hexadecimais (o chamado "hex dump"), ou mesmo decimais.

As instruções para a digitação desses programas sempre trazem os endereços inicial e final em que o programa deverá ficar na memória. Com a ajuda de um monitor, você poderá introduzir esses números na memória, ou seja, digitar o programa em linguagem de máquina, mesmo sem entender o que significam os números. Não se esqueça, porém, de que, se os números estiverem em decimal, você só poderá introduzi-los na memória do computador se o seu monitor aceitar números decimais: alguns, como dissemos, só aceitam números hexadecimais.

Do que foi dito, fica claro que é possível, mesmo hoje, com a ajuda de um monitor, programar o computador quase que diretamente em linguagem de máquina, sem usar um Assembler ou algum outro tradutor, e sem usar os painéis que não mais existem. A programação não é feita, na verdade, com números binários, mas, sim, com os seus correspondentes hexadecimais ou mesmo decimais. Mas, mesmo assim, com o auxílio do monitor, a programação é feita sem a utilização de instruções de alto nível e de mnemônicos: é feita usando-se apenas números!

Os monitores, naturalmente, contêm rotinas que permitem que eles gravem programas em linguagem de máquina em meios de armazenamento externo ou que carreguem na memória do microcomputador programas contidos nesses meios. Você já imaginou ter que digitar tudo de novo a cada vez?

Embora monitores possam ser usados para depurar programas em linguagem de máquina, muitas vezes há programas específicos que permitem que isto seja feito com maior facilidade. Estes são os DEPURADORES. Do que já foi dito sua função é clara.

Antes de falar no sistema operacional, vamos dizer uma palavra sobre os CARREGADORES. O carregador é um programa utilitário muito comum. Normalmente é um programa relativamente pequeno. Sua principal função é carregar na memória os programas que precisam ser executados. Consiste, portanto, de uma seqüência de instruções que permitem que um programa armazenado em um meio externo (disco, fita) seja transferido para a memória, para execução.

Uma questão interessante é como o próprio carregador é carregado na memória. Como ele próprio é um programa, também ele dever ser carregado na memória, para poder ser executado. Mas quem carrega o carregador?

Nos computadores mais antigos, você já deve estar cansado de ler, o carregador era carregado manualmente, instrução por instrução, através do painel. Hoje, o carregador é armazenado em ROM, dentro do próprio microcomputador, havendo um dispositivo que o carrega automaticamente, e o torna disponível, toda vez que o microcomputador é ligado.

Por fim, devemos falar um pouco sobre o SISTEMA OPERACIONAL. Este é, talvez, o utilitário mais complexo. Apesar disso, ou talvez por causa disso, é amplamente usado em sistemas de microcomputadores, porque simplifica extremamente a operação dos microcomputadores e o desenvolvimento de programas.

Na verdade, um sistema operacional é um conjunto de programas e de rotinas que, coletivamente, automatizam o gerenciamento de todos os recursos computacionais disponíveis em um sistema de microcomputador, incluindo aí a UCP, a memória, todos os periféricos, e o software. Em uma frase, o sistema operacional enseja uma operação mais eficiente e conveniente do microcomputador.

De modo típico, sistemas operacionais complexos são usados em sistemas maiores de microcomputadores. Eles requerem alguma forma de armazenamento externo, como fita ou, preferivelmente, disco magnético. A maior parte dos microcomputadores usa sistemas operacionais mais complexos apenas com suas unidades de discos flexíveis, razão pela qual se abrevia a expressão "Sistema Operacional" freqüentemente como DOS - "Disk Operating System".

O sistema operacional de certo modo isola o hardware de usuário, fazendo com que este se comunique apenas com o sistema operacional, as linguagens existentes, e os programas utilitários e aplicativos disponíveis. O sistema operacional se encarrega de lidar com todos os serviços de apoio necessários, eliminando a necessidade de o usuário vir e ter que lidar com problemas relacionados com hardware.

Para resumir, o sistema operacional tem a tarefa de gerenciar os recursos do sistema, alocando-os com base nas necessidades do usuário e nas disponibilidades do sistema. Suas quatro principais funções são:

- gerenciar software e arquivos;

- gerenciar periféricos de entrada e saída de dados;

- gerenciar o uso da memória

- gerenciar o uso da UCP.

Quando se liga um microcomputador, o sistema operacional, se armazenado externamente, precisa ser transferido para RAM. Se residente em ROM, ele já está automaticamente disponível. Com ele na memória, o usuário pode lhe dar uma série de comandos que o levam a realizar uma variedade grande de operações.

De todos os programas utilitários, o sistema operacional é o mais poderoso e mais importante. Infelizmente, não há muita padronização entre os vários sistemas operacionais disponíveis. Apesar disso, há sistemas operacionais bastante difundidos, que chegaram até a atingir a condição de quase padrão. Entre estes merece menção o chamado CP/M - "Control Program for Microprocessors" já mencionado no capítulo primeiro quando discutimos o aparecimento dos microprocessadores.

 

[Índice] [Capítulo III] [Capítulo V]

© Copyright by Eduardo Chaves


Last revised: 02 May 2004