You are on page 1of 5

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, 00

Microprocessador 6502

Ling. de máquina Assembly


A9 FF LDA # FF
8D 00 20 STA 00

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

# 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.
Flávio Toledo - flaviot@sti.com.br
Informática - Brasil Escola

Pessoal
Pra ir entrando no clima do nosso novo fórum, uma definição introdutória de algoritmos.

Um algoritmo é uma sequência finita e não ambigua de instruções para resolver um problema.
Como exemplo, podemos imaginar o seguinte problema: precisamos fritar um ovo.

O algoritmo seria mais ou menos assim:


QUOTE
1 - colocar a frigideira no fogo.
2 - colocar óleo na frigideira.
3 - retirar o ovo da geladeira
4 - esperar o óleo ficar quente.
5 - quebrar o ovo separando a casca
6 - colocar o conteúdo do ovo na frigideira
7 - esperar o ovo ficar frito
8 - retirar o ovo da frigideira
9 - apagar o fogo

Para que uma pessoa possa seguir esse algoritmo, é necessário que ela saiba o significado das
palavras como "colocar", "retirar", "quebrar"... e que nenhuma instrução possua mais de um
significado (não ambiguidade).Por isso algoritmos são baseados no uso de um conjunto de
instruções bem definido, que constituem um vocabulário de símbolos limitado.
Entre as maneiras utilizadas para se representar algoritmos estão o uso de fluxogramas e o uso de
uma pseudo-linguagem. Essa pseudo-linguagem é um conjunto de comandos correspondentes às
estruturas básicas de programação que não possuem abiguidades.
Beijos...
Dani
rick_simmons
13/05/2005 - 08:26
É isso ai, mas vamos tentar explicar de uma maneira mais fácil para os novatos da info entenderem.

Quem trabalha com atendimento a cliente usa bastante um método chamado Script onde seu
superior descreve como você deve agir perante as situações ocorridas durante o atendimento, vamos
exemplificar:
Um vendedor vai até o cliente
O vendedor observa o que o cliente tem a sua volta
Para ganhar o cliente, o vendedor usa maneiras de deixar o cliente mais "a vontade"
SE o cliente tiver fotos de família, então fale sobre família,
SENÃO fale sobre alguma outra coisa que o cliente aparentemente goste (ex: quadro com cavalos,
revistas)
ENQUANTO o cliente não se sentir a vontade, tente deixá-lo a vontade.

Agora vamos analisar o script:


- Para começar, você pode ver que as ordens são dadas em sequência de cima para baixo (como o
ser humano faz a leitura).
- O vendedor tem que fazer exatamente o que está descrito ao longo do script
- Em negrito, vemos que em certos momentos o vendedor deve tomar algumas decisões de acordo
como anda a negociação
- Em vermelho temos já uma ordem de ficar repetindo uma ação até que esta seja cumprida, ou seja,
o vendedor deve persistir naquela ação enquanto não conseguir o resultado desejado.

Explicação:
Um algoritmo é basicamente isso, você é o chefe e o computador é o vendedor. Você deve dizer
exatamente o que ele deve fazer e como se comportar perante certas ocasiões (decisão, repetição...).

Criarei futuramente alguns tópicos falando melhor sobre algoritmos e ir desenvolvendo um curso
para iniciantes explicando passo-a-passo como criar algoritmos que posteriormente poderão ser
traduzidos para linguagens de programação e se transformar em programas. Por enquanto espero
que tenham entendido como funciona um algoritmo e qualquer dúvida poderá ser enviada que será
respondida o quanto antes, obrigado e até a próxima!