Você está na página 1de 4

Breve Introduo Programao

No comeo, programar um microprocessador para executar uma determinada tarefa no era uma das coisas mais fceis que existiam. O programador estava preso a utilizar-se da Linguagem de Mquina, que era a programao diretamente em binrio ou em hexadecimal. Guardar o que cada cdigo, ou seja, cada nmero binrio ou seu equivalente em hexadecimal significava para o microprocessador, no era fcil. Logo foi criada a primeira linguagem de programao, a linguagem Assembly. Na linguagem assembly, cada cdigo que possui um significado especial para o microprocessador - que chamado de instruo recebe um nome, chamado genericamente de Mnemnico. muito mais fcil de se memorizar um nome do que um cdigo qualquer, alm de ser muito mais fcil de se programar por nomes. Por exemplo, uma comparao tpica (voc no precisa ainda saber o que exatamente significa tudo isto, o objetivo aqui a comparao): Microprocessador 8086 Ling. de mquina B0 FF A2 00 20 Assembly MOV AL, 0FFh MOV [2000h], AL

Microprocessador 6800 Ling. de mquina 86 FF 97 00 20 Assembly LDA A, # FF STA A, $2000

Microprocessador 6502 Ling. de mquina A9 FF 8D 00 20 Assembly LDA # FF STA $2000

O que significa isto tudo e qual o nosso objetivo com isto ? Todos os trs programas para os trs microprocessadores apresentados executam a mesma tarefa: colocar o valor 255 na posio de memria 2000h. Voc deve ter reparado duas coisas. A primeira, o assunto que ns estvamos discutindo: muito mais fcil programar em assembly do que em linguagem de mquina ( muito mais fcil voc guardar MOV AL do que B0, por exemplo). A segunda, que para cada microprocessador possumos um conjunto de instrues prprio. Ou seja, no h qualquer correlao entre as instrues dos diversos tipos de microprocessadores existentes no mercado. O que estipular uma famlia de microprocessadores ser justamente a existncia de uma similaridade no conjunto de instrues dos microprocessadores que constituam uma famlia. Por assim dizer, um 8086, um 8088, um 80286, um 80386 etc. constituem uma famlia de microprocessadores por possurem instrues similares. Quem sabe programar em assembly em um 8086 saber programar em um 80286, salvo, claro, as instrues adicionais que cada microprocessador possuir e que no ser muito difcil aprender. Esta famlia de microprocessadores chamada Intel Iapx86, 80x86 ou simplesmente Intel e a famlia de microprocessadores que est presente no padro IBM PC de microcomputadores. Outros microprocessadores como o 6800, o 68000, 68020, etc. constituem uma outra famlia de microprocessadores, por possurem instrues similares entre si, porm completamente diferentes da famlia Intel. Esta outra famlia chamada 680x0 ou simplesmente Motorola e a famlia de microprocessadores que est presente em microcomputadores como o MacIntosh, o Amiga e estaes de computao grfica.

Porm devemos lembrar que mesmo sendo o Assembly uma linguagem de baixo nvel, o microprocessador no a entende - ele entende somente linguagem de mquina. O microprocessador no sabe o que MOV AL, o mnemnico para a instruo B0. Ele entende somente nmeros, e portanto s sabe interpretar B0. Esta converso pode ser feita basicamente de duas maneiras: ou na mo mesmo, utilizando-se a tabela de instrues fornecida pelo fabricante ou utilizando-se de um programa para tal. Este programa chamado genericamente de Assembler, ou seja, montador. O Assembler l um programa lido em Assembly e converte-o para linguagem de mquina. Entenda que no h qualquer tipo de traduo indireta: a linguagem Assembly apenas os opcodes (nmeros que representam instrues especficas) com um rtulo particular, chamado, como vimos, mnemnico.

LINGUAGENS DE ALTO NVEL

Em um microcomputador voc necessita de recursos muito mais avanados do que a linguagem de mquina e o assembly - consideradas como linguagem de baixo nvel pois trabalham intimamente com o microprocessador - podem oferecer. Assim surge um outro grupo de linguagens, as chamadas linguagens de alto nvel. As linguagens de alto nvel no esto to ntimas do microprocessador, mas em compensao oferecem comandos, que so conjuntos de uma ou mais instrues, capazes de executar uma tarefa completa. Como exemplos de linguagens de alto nvel, podemos citar BASIC, FORTRAN, Pascal e C, sendo esta ltima considerada uma linguagem de mdio nvel, por permitir tanto a programao em baixo nvel como em alto nvel. Mesmo sendo executadas em computadores - e conseqentemente em microprocessadores - diferentes, as linguagens permanecem inalteradas. Isto porque voc no estar programando o microprocessador diretamente: a linguagem ser um programa sendo executado sobre o microprocessador. Logo, a linguagem de alto nvel se encarregar de traduzir os comandos de seu programa em alto nvel - que o microprocessador no conhece - para um programa de baixo nvel - que o seu microprocessador conhece. Assim, temos a mesma linguagem de programao de alto nvel para vrios computadores diferentes, porm a maneira com que eles iro conversar com o microprocessador ser diferente. E o mais importante: isto ser transparente para o programador. Assim, um programa escrito em Turbo Pascal no Apple II ser idntico a um programa escrito em Turbo Pascal no IBM PC, salvo - claro alguns comandos que podero existir ou no em virtude da explorao do mximo da potencialidade do computador, recursos que podero existir em um computador porm em outro no, permanecendo a estrutura bsica inalterada. Dentro das prprias linguagens de alto nvel existem linguagens "melhores" ou "piores" em termos de recursos e estruturao. Por exemplo o BASIC no to bem estruturado como o Pascal e nem to rgido em suas declaraes, tambm. Mas j vimos que o BASIC era uma linguagem que foi adotada como "padro" nos primrdios da micro-informtica, pois os fabricantes colocavam esta linguagem em forma residente em seus microcomputadores. Assim a linguagem BASIC tornou-se a linguagem de programao mais popular existente at hoje. Mas mesmo sendo popular, o prprio BASIC difere-se de um microcomputador para o outro, dependendo, principalmente, do fabricante da linguagem (j que a linguagem ser um programa sendo executado, como vimos) e do microprocessador que estava sendo utilizado. Por exemplo o AppleSoft Basic (Apple II) difere-se totalmente do GWBasic (CP/M, MSX e IBM PC). Apesar da estrutura ser basicamente igual, certos comandos so simplesmente criados ou ento excludos em virtude das capacidades principalmente de Hardware e do prprio microprocessador do microcomputador. Voltando questo de existirem linguagens de alto nvel com "maior nvel" do que outras, peguemos o exemplo do BASIC vs. Pascal vs. C. Se quisssemos limpar a tela do computador e escrever no canto superior esquerdo da tela a frase "Oi, tudo bem ?". Teramos:

GWBasic 10 CLS 20 PRINT "Oi, tudo bem ?"

AppleSoft Basic 10 HOME 20 PRINT "Oi, tudo bem ?"

Comentrios: CLS / HOME - Limpam a tela PRINT - Imprime a mensagem entre aspas Turbo Pascal

PROGRAM ESCREVE; USES CRT; BEGIN CLRSCR; WRITE ('Oi, tudo bem ?'); END. Comentrios: USES CRT - Torna a tela disponvel para uso CLRSCR - Limpa a tela WRITE - Imprime a mensagem entre apstrofes

C # include stdio.h # include conio.h void main () { clrscr(); printf(Oi, tudo bem ?); } Comentrios: INCLUDE - Incluem mdulos, neste caso para utilizao da tela CLRSCR - Limpa a tela PRINTF - Imprime a mensagem entre aspas

Nota-se claramente que tanto o Pascal quanto o C possuem uma estrutura muito mais rgida do que o BASIC, tornando o programa final muito melhor de ser lido por pessoas que no fizeram parte do processo de criao do mesmo - no BASIC, que no possui uma estrutura to rgida, geralmente demora-se muito mais tempo at entendermos o funcionamento de um programa escrito por outra pessoa. Linguagens como Pascal e C so consideradas, portanto, linguagens estruturadas, por necessitarem de uma estrutura rgida de programao. Mas como o computador entende os comandos programados ? Isto vai depender da forma que o microcomputador vai "encarar" a linguagem. Quando, por exemplo, a linguagem vem residente, como no caso do BASIC dos microcomputadores mais antigos, o microcomputador passa a dispor de um interpretador sendo esta linguagem considerada uma linguagem interpretada. Nas linguagens interpretadas, o interpretador faz com que o microprocessador "entenda" a linguagem como se fosse uma coisa "normal", ou seja, algo que j fizesse parte do microcomputador como um todo. Neste caso, a cada comando entrado, a linguagem (que um programa, como j vimos) ir pegar o comando de alto nvel, interpret-lo e, caso tenha sido entrado com a sintaxe correta, ser executado convertendo-o em um conjunto de instrues equivalentes em linguagem de mquina para que o microprocessador possa executar o que o programador deseje. Mas caso ns no tenhamos um interpretador, devemos nos utilizar de um compilador e neste caso a linguagem passa a ser considerada linguagem compilada. Nas linguagens compiladas, o compilador "converte" a linguagem de alto nvel - que o microprocessador no entende - em linguagem de baixo nvel. Um programa executado em linguagem compilada muito mais rpido, pois est na verdade sendo executado integralmente em baixo nvel, o que no acontece na linguagem interpretada. Em compensao durante o processo de criao e edio do programa toda vez que quisermos testar o programa deveremos compil-lo antes, o que pode demorar um pouco - o que no acontece com as linguagens interpretadas, aonde o programa executado na hora. Texto gentilmente cedido por Flvio Toledo (flaviot@sti.com.br)

www.sti.com.br