Buscar

Breve Introdução à Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Breve Introdução à 
Programação
No começo, programar um microprocessador para executar uma determinada tarefa não era uma 
das coisas mais fáceis que existiam. O programador estava preso a utilizar-se da Linguagem de Máquina, 
que era a programação diretamente em binário ou em hexadecimal. Guardar o que cada código, ou seja, 
cada número binário ou seu equivalente em hexadecimal significava para o microprocessador, não era fácil. 
Logo foi criada a primeira linguagem de programação, a linguagem Assembly. Na linguagem assembly, 
cada código que possui um significado especial para o microprocessador - que é chamado de instrução - 
recebe um nome, chamado genericamente de Mnemônico. É muito mais fácil de se memorizar um nome do 
que um código qualquer, além de ser muito mais fácil de se programar por nomes. Por exemplo, uma 
comparação típica (você não precisa ainda saber o que exatamente significa tudo isto, o objetivo aqui é a 
comparação): 
Microprocessador 8086
Ling. de máquina Assembly
B0 FF MOV AL, 0FFh
A2 00 20 MOV [2000h], AL
Microprocessador 6800
Ling. de máquina Assembly
86 FF LDA A, # FF
97 00 20 STA A, $2000
Microprocessador 6502
Ling. de máquina Assembly
A9 FF LDA # FF 
8D 00 20 STA $2000
O que significa isto tudo e qual o nosso objetivo com isto ? Todos os três programas para os três 
microprocessadores apresentados executam a mesma tarefa: colocar o valor 255 na posição de memória 
2000h. Você deve ter reparado duas coisas. A primeira, o assunto que nós estávamos discutindo: é muito 
mais fácil programar em assembly do que em linguagem de máquina (é muito mais fácil você guardar MOV 
AL do que B0, por exemplo). A segunda, que para cada microprocessador possuímos um conjunto de 
instruções próprio. Ou seja, não há qualquer correlação entre as instruções dos diversos tipos de 
microprocessadores existentes no mercado. O que estipulará uma família de microprocessadores será 
justamente a existência de uma similaridade no conjunto de instruções dos microprocessadores que 
constituam uma família. Por assim dizer, um 8086, um 8088, um 80286, um 80386 etc. constituem uma 
família de microprocessadores por possuírem instruções similares. Quem sabe programar em assembly em 
um 8086 saberá programar em um 80286, salvo, é claro, as instruções adicionais que cada 
microprocessador possuirá e que não será muito difícil aprender. Esta família de microprocessadores é 
chamada Intel Iapx86, 80x86 ou simplesmente Intel e é a família de microprocessadores que está 
presente no padrão IBM PC de microcomputadores. Outros microprocessadores como o 6800, o 68000, 
68020, etc. constituem uma outra família de microprocessadores, por possuírem instruções similares entre 
si, porém completamente diferentes da família Intel. Esta outra família é chamada 680x0 ou simplesmente 
Motorola e é a família de microprocessadores que está presente em microcomputadores como o 
MacIntosh, o Amiga e estações de computação gráfica.
Porém devemos lembrar que mesmo sendo o Assembly uma linguagem de baixo nível, o 
microprocessador não a entende - ele entende somente linguagem de máquina. O microprocessador não 
sabe o que é MOV AL, o mnemônico para a instrução B0. Ele entende somente números, e portanto só 
sabe interpretar B0. Esta conversão pode ser feita basicamente de duas maneiras: ou “na mão” mesmo, 
utilizando-se a tabela de instruções 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 máquina. Entenda que não há qualquer tipo de tradução 
indireta: a linguagem Assembly é apenas os opcodes (números que representam instruções específicas) 
com um rótulo particular, chamado, como vimos, mnemônico.
LINGUAGENS DE ALTO NÍVEL 
Em um microcomputador você necessita de recursos muito mais avançados do que a linguagem de 
máquina e o assembly - consideradas como linguagem de baixo nível pois trabalham intimamente com o 
microprocessador - podem oferecer. Assim surge um outro grupo de linguagens, as chamadas linguagens 
de alto nível. As linguagens de alto nível não estão tão íntimas do microprocessador, mas em compensação 
oferecem comandos, que são conjuntos de uma ou mais instruções, capazes de executar uma tarefa 
completa. Como exemplos de linguagens de alto nível, podemos citar BASIC, FORTRAN, Pascal e C, sendo 
esta última considerada uma linguagem de “médio nível”, por permitir tanto a programação em baixo nível 
como em alto nível. Mesmo sendo executadas em computadores - e conseqüentemente em 
microprocessadores - diferentes, as linguagens permanecem inalteradas. Isto porque você não estará 
programando o microprocessador diretamente: a linguagem será um programa sendo executado sobre o 
microprocessador. Logo, a linguagem de alto nível se encarregará de traduzir os comandos de seu 
programa em alto nível - que o microprocessador não conhece - para um programa de baixo nível - que o 
seu microprocessador conhece. Assim, temos a mesma linguagem de programação de alto nível para vários 
computadores diferentes, porém a maneira com que eles irão 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á idêntico a um programa escrito em Turbo Pascal no IBM PC, salvo - é claro - 
alguns comandos que poderão existir ou não em virtude da exploração do máximo da potencialidade do 
computador, recursos que poderão existir em um computador porém em outro não, permanecendo a 
estrutura básica inalterada.
Dentro das próprias linguagens de alto nível existem linguagens "melhores" ou "piores" em termos 
de recursos e estruturação. Por exemplo o BASIC não é tão bem estruturado como o Pascal e nem tão 
rígido em suas declarações, também. Mas já vimos que o BASIC era uma linguagem que foi adotada como 
"padrão" nos primórdios da micro-informática, pois os fabricantes colocavam esta linguagem em forma 
residente em seus microcomputadores. Assim a linguagem BASIC tornou-se a linguagem de programação 
mais popular existente até hoje.
Mas mesmo sendo popular, o próprio 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 são simplesmente criados ou então excluídos em virtude das capacidades 
principalmente de Hardware e do próprio microprocessador do microcomputador. 
Voltando à questão de existirem linguagens de alto nível com "maior nível" do que outras, 
peguemos o exemplo do BASIC vs. Pascal vs. C. Se quiséssemos limpar a tela do computador e escrever 
no canto superior esquerdo da tela a frase "Oi, tudo bem ?". Teríamos: 
GWBasic AppleSoft Basic
 
10 CLS 10 HOME
20 PRINT "Oi, tudo bem ?" 20 PRINT "Oi, tudo bem ?"
Comentários: CLS / HOME - Limpam a tela
 PRINT - Imprime a mensagem entre aspas
Turbo Pascal
PROGRAM ESCREVE;
USES
 CRT;
BEGIN
 CLRSCR;
 WRITE ('Oi, tudo bem ?');
END.
Comentários: USES CRT - Torna a tela disponível para uso
 CLRSCR - Limpa a tela
 WRITE - Imprime a mensagem entre apóstrofes
C
# include “stdio.h”
# include “conio.h”
void main ()
{
clrscr();printf(“Oi, tudo bem ?”);
}
Comentários: INCLUDE - Incluem módulos, neste caso para utilização 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 rígida do que 
o BASIC, tornando o programa final muito melhor de ser lido por pessoas que não fizeram parte do 
processo de criação do mesmo - no BASIC, que não possui uma estrutura tão rígida, geralmente demora-se 
muito mais tempo até entendermos o funcionamento de um programa escrito por outra pessoa. Linguagens 
como Pascal e C são consideradas, portanto, linguagens estruturadas, por necessitarem de uma estrutura 
rígida de programação.
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 nível, 
interpretá-lo e, caso tenha sido entrado com a sintaxe correta, será executado convertendo-o em um 
conjunto de instruções equivalentes em linguagem de máquina para que o microprocessador possa 
executar o que o programador deseje. Mas caso nós não 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 nível - que o microprocessador não 
entende - em linguagem de baixo nível. Um programa executado em linguagem compilada é muito mais 
rápido, pois está na verdade sendo executado integralmente em baixo nível, o que não acontece na 
linguagem interpretada. Em compensação durante o processo de criação e edição do programa toda vez 
que quisermos testar o programa deveremos compilá-lo antes, o que pode demorar um pouco - o que não 
acontece com as linguagens interpretadas, aonde o programa é executado na hora.
Texto gentilmente cedido por Flávio Toledo (flaviot@sti.com.br)
www.sti.com.br
 
	Texto gentilmente cedido por Flávio Toledo (flaviot@sti.com.br)
	þÿ
	www.sti.com.br

Outros materiais