Вы находитесь на странице: 1из 32

INTRODUO A PROGRAMAO DE COMPUTADORES

Algoritmos e programao

Algoritmos
Um algoritmo uma seqncia de instrues finita e
ordenada de forma lgica para a resoluo de uma
determinada tarefa ou problema. So exemplos de
algoritmos instrues de montagem, receitas, manuais de
uso, etc.
Um algoritmo no a soluo do problema, pois, se assim
fosse, cada problema teria um nico algoritmo; um algoritmo
um caminho para a soluo de um problema.

Algoritmos no
computacionais
Um algoritmo no computacional um algoritmo cuja seqncia de
passos, a princpio, no pode ser executada por um computador.

EXEMPLO: PASSOS PARA TROCA DE UM PNEU


1. PARAR O CARRO;
2. ABRIR O PORTA MALA
3. RETIRAR O ESTEPE;
4. RETIRAR O MACACO
5. SUSPENDER O CARRO COM O MACACO
6. TIRAR O PNEU FURADO
7. COLOCAR O PNEU ESTEPE
8. GUARDAR MACACO
9. GUARDAR PNEU FURADO
10.FECHAR PORTA MALA

Algoritmos no
computacionais
O algoritmo do exemplo s ser til para algum que seja fluente na
lngua portuguesa e conhea o significado dos verbos Abrir, Retirar,
Suspender, Colocar, Fechar.
Em outras palavras, preciso que a linguagem utilizada no algoritmo seja
conhecida tanto por quem o escreveu quanto por quem vai execut-lo.
Para que uma mquina execute as instrues contidas no processo de
troca do pneu ela precisa compreender o significado dos comandos
(verbos)
Conjunto de palavras e regras : sintaxe da linguagem.

Algoritmos no
computacionais
Aprender as regras e palavras (sintaxe) parte da soluo do
problema.
O maior objetivo a soluo de problemas e isso s se consegue
com muita prtica!!!
Para introduo aos algoritmos (soluo de problemas por meio de um
computador), ser utilizado uma linguagem de programao
chamada PORTUGUS ESTRUTURADO.
Para tanto, ser utilizado o software VISUALG

Algoritmos computacionais
Para que o computador execute alguma tarefa, como
resolver um problema, necessrio que ele entenda
o conjunto de instrues passados a ele.
Este conjunto de instrues chamado de programa:
conjunto de milhares de instrues que indicam ao
computador passo a passo o que ele deve fazer.
Um programa , assim, um algoritmo computacional
traduzido em um conjunto de instrues capazes de
fazer o computador entender a tarefa a ser
executada (clculos)

Programa em Linguagem de Mquina


Para executar uma tarefa qualquer, um computador precisa receber instrues precisas
sobre o que fazer.
Uma seqncia adequada de instrues de computador, para a realizao de uma
determinada tarefa, se constitui num PROGRAMA de computador.
Uma linguagem de programao um conjunto de ferramentas, regras de
sintaxe e smbolos ou cdigos que nos permitem escrever programas de
computador, destinados a instruir o computador para a realizao de suas
tarefas.
A primeira e mais primitiva linguagem de computador a prpria linguagem de
mquina, aquela que o computador entende diretamente e pode ser diretamente
executada pelos circuitos do processador (pelo hardware).

Programa em Linguagem de Mquina


No incio da era da computao, os programas eram
escritos em linguagem de mquina, isto , as instrues
eram escritas diretamente na linguagem do computador
(formada apenas com 1's e 0's).
Um programa em linguagem de mquina uma longa
srie de 0's e 1's, ordenados de forma que alguns
representam cdigos de instrues e outros representam
os dados que sero processados (ou indicam onde esses
dados esto armazenados).

Programa em Linguagem de Mquina

Arquitetura de computadores
Arquitetura de Von Neumann
Arquitetura de computador que se caracteriza pela
possibilidade de uma mquina digital armazenar seus
programas no mesmo espao de memria que os dados
Foi proposto em 1946 por

Arquitetura de Von Neumann


MEMRIA

UNIDADE*
DE*
CONTROLE

UNIDADE*
LGICA*E*
ARITMTICA*
(ULA)
ACUMULADOR

ENTRADA

SADA

Programa em Linguagem de Mquina

Imagine ento um programa extenso


escrito apenas usando 1's e 0's; imagine
que para cada diferente marca ou modelo
de computador, as regras para entender
esses cdigos sero totalmente diferentes;
e finalmente imagine que voce teria que
escrever uma a uma as instrues e os
dados adequadamente codificados e
ordenados.

Programa em Linguagem de Mquina


Um programa escrito nessa linguagem era
difcil de ser escrito sem que se cometessem
muitos erros, processo esse longo, difcil,
entediante e principalmente caro.
Um programa em linguagem de mquina era
tambm extremamente difcil de ser entendido
por outros programadores que futuramente
viessem a trabalhar na manuteno do
programa.

Essa complexidade levou necessidade de se


desenvolverem tcnicas e ferramentas para
tornar a escrita e manuteno de programas
mais fcil, mais rpida e principalmente mais
barata.

Programa em Linguagem de Mquina


Cada famlia de computadores possui sua prpria linguagem de mquina.
Um programa em linguagem de mquina dependente do computador ou seja, tendo
sido escrito para um determinado computador, somente poder ser executado em
computadores da mesma famlia, que lhe sejam 100% compatveis.

Obs.: Um programa em linguagem de mquina pode ser apresentado em binrio (0's e


1's) ou em hexadecimal (usando de 0 a F, ou seja, transformando cada 4 bits em um
dgito hexadecimal).
A apresentao em hexadecimal torna mais enxuta a representao (mas no mais
simples...), mas serve somente para visualizao, pois um programa somente pode ser
submetido ao computador em binrio.

Linguagem de montagem
A primeira tentativa bem-sucedida para resolver o problema de simplificar o
desenvolvimento de softwares por linguagem de mquinas foi a criao de uma
linguagem em que os cdigos numricos foram substitudos por mnemnicos
(palavras ou smbolos como, por exemplo, LOAD = carregar e ADD = somar, que se
aproximam de palavras comuns da lngua inglesa).
Essa linguagem simblica recebeu o nome de Assembly Language (Linguagem de
Montagem).
Assim, o programador no mais precisava decorar os cdigos numricos que representavam as diferentes
instrues e os endereos reais de armazenamento, bastando decorar mnemnicos para as instrues e definir
nomes para as referncias dos endereos.

O processo de traduo da linguagem de montagem para a linguagem de mquina


(chamado de montagem) realizado por um programa chamado Assembler
(Montador).

Linguagem de montagem
A criao de programas Montadores facilitou muito o trabalho dos programadores.
Uma outra vantagem menos bvia foi possibilitar o desenvolvimento de programas
de crtica de sintaxe (os debuggers), facilitando o processo de depurao de erros
determinado computador s poder ser processado em computadores 100%
compatveis com ele.
No entanto, o processo continuava lento e complexo, exigindo do programador uma
grande compreenso do processo e profundo conhecimento da mquina que ele estava
programando.
Um programa de computador ainda era difcil de ser escrito, caro, e dependente do
computador para o qual foi escrito, j que um programa escrito em linguagem de
mquina para um determinado computador s poder ser processado em
computadores 100% compatveis com ele.

Linguagem de programao
Esses problemas levaram a uma busca por linguagens que fossem mais simples de
programar e entender, mais rpidas e eficientes (levando a programas mais enxutos,
com menos instrues), menos dependente do computador-alvo, mas que
processassem com boa eficincia (no acarretando processamento lento no
computador).
Foram desenvolvidas diversas linguagens de programao, buscando afastar-se do
modelo centrado no computador. Essas linguagens foram estruturadas buscando
refletir melhor os processos humanos de soluo de problemas.
Essas linguagens orientadas a problema so tambm chamadas linguagens de alto
nvel, por serem afastadas do nvel de mquina.

Linguagem de programao
As primeiras linguagens foram:
FORTRAN (1957), usada basicamente para manipulao de frmulas;
ALGOL (1958), para manipulao de algoritmos;
COBOL (1959), para processamento comercial e ainda hoje bastante usada,
especialmente em computadores de grande porte (mainframes) em bancos.

N dcada de 60 surgiu o PASCAL, a primeira linguagem de alto nvel


estruturada;
Na dcada de 70 surgiu o BASIC, linguagem criada para facilitar a
programao por no-profissionais;
Na dcada de 80, surgiu o C e depois o C++ (com suporte a objetos), que
esto entre as linguagens mais utilizadas hoje.

Caractersticas de uma
linguagem programao
Tipos de dados:
caracteres;
nmeros inteiros
nmeros reais
nmeros em potncias;
Reconhecer sistemas numricas: decimal, binrio, octal, hexa,
etc

Caractersticas de uma
linguagem programao
Operaes com arquivos:
abertura/fechamento de arquivos texto ou binrios;
criao/alterao;
Estruturas de dados:
Matrizes;
Vetores;
Cadeia de caracteres

Caractersticas de uma
linguagem programao
Operaes lgicas: TRUE OU FALSE
Comandos de entrada/sada de dados: via teclado, monitor,
impressora, etc.
Operaes aritmticas: +,-, *, /, exp, raiz
Operaes relacionais: >, <, <=, =>, ==, <>

Caractersticas de uma
linguagem programao
Instrues condicionais:
SE <condicao satisfeita> FACA
Instrucao
SENAO
Instrucao

Caractersticas de uma
linguagem programao
Instrues de repetio (lao):
ENQUANTO <condicao satisfeita> FACA
Instrucao

Interpretao, Montagem e
Compilao
Um programa escrito por um programador (chamado
cdigo fonte) em uma linguagem de alto nvel um
conjunto de instrues que clara para programadores,
mas no para computadores, porm no para o
computador.
Assim, surge a necessidade do processo de traduo da
linguagem de alto nvel, para a linguagem de mquina.
Existem 2 processos para essa traduo: Interpretao
ou compilao.

Aprenda Computao com Python Documentation, Verso 1.1

Interpretao

Como voc pode deduzir a partir da expresso linguagem de alto nvel, tambm existem as linguagens de ba
nvel, s vezes chamadas de linguagens de mquina ou linguagem assembly (linguagens de montagem).
forma simples, o computador s consegue executar programas escritos em linguagens de baixo nvel. Deste mo
programas escritos em linguagens de alto nvel precisam ser processados antes que possam rodar. Esse processame
extra toma algum tempo, o que uma pequena desvantagem em relao s linguagens de alto nvel.

Mas as vantagens so enormes. Primeiro, muito mais fcil programar em uma linguagem de alto nvel. m
rpido escrever programas em uma linguagem de alto nvel; eles so mais curtos e mais fceis de ler, e h ma
probabilidade de esterem corretos. Segundo, as linguagens de alto nvel so portveis, o que significa que pod
rodar em diferentes tipos de computador, com pouca ou nenhuma modificao. Programas em baixo nvel s pod
rodar em um nico tipo de computador e precisam ser re-escritos para rodar em outro tipo.

O interpretador l um programa escrito em


linguagem de alto nvel e o executa, ou seja, faz o
que o programa diz.

Devido a essas vantagens, quase todos os programas so escritos em linguagens de alto nvel. As de baixo nvel
utilizadas somente para umas poucas aplicaes especializadas.

Ele
processa o programa um pouco de cada vez,
Dois tipos de programas processam linguagens de alto nvel, traduzindo-as em linguagens de baixo nvel: interpre
dores e compiladores. O interpretador
l umlendo
programa escrito
em linguagemlinhas,
de alto nvel e ohora
executa, ou seja, fa
alternadamente:
hora
algumas
que o programa diz. Ele processa o programa um pouco de cada vez, alternadamente: hora lendo algumas linhas, h
executando essas linhasessas
e realizandolinhas
clculos. e realizando clculos.
executando

Montagem
O processo de montagem traduz um programa escrito em linguagem Assembly em um
programa equivalente em linguagem de mquina, possvel de ser executado pelo
computador.
No processo de montagem, o cdigo fonte (programa em linguagem simblica escrito
pelo programador) examinado, instruo por instruo e feita a traduo, gerando
o cdigo que ser executado (cdigo objeto). Os passos executados pelo programa
Montador so:

a)

Verificar a correo do cdigo de instruo (se o mnemnico corresponde a uma instruo vlida para o
computador, se os campos definidos na estrutura da linguagem e a sintaxe esto corretos) e substituir os
mnemnicos pelos cdigos numricos binrios equivalentes. Qualquer erro no cdigo acarreta a interrupo do
processo e a emisso de mensagem de erro.
b) Resolver as referncias de memria: os nomes simblicos adotados pelo programador so convertidos para
endereos reais de memria (valores numricos binrios de endereos).
c) Reservar espao em memria para o armazenamento das instrues e dados.
d) Converter valores de constantes em binrio.

Verificar a correo do cdigo de instruo (se o mnemnico corresponde a uma


instruo vlida para o computador, se os campos definidos na estrutura da linguagem
e a sintaxe esto corretos) e substituir os mnemnicos pelos cdigos numricos
binrios equivalentes.

Erro?

SIM

Qualquer erro no cdigo acarreta a interrupo


do processo e a emisso de mensagem de erro.

Resolver as referncias de memria: os nomes simblicos adotados pelo programador so


convertidos para endereos reais de memria (valores numricos binrios de endereos).

Reservar espao em memria para o armazenamento das instrues e dados

Converter valores de constantes em binrio.

Compilao
Compilao o processo de traduo de um programa escrito em linguagem de alto
nvel para cdigo em linguagem de mquina. Compilao um processo anlogo ao
da montagem (verificao / anlise do cdigo fonte, resoluo das referncias de
memria, reserva de espao em memria e converso para cdigo de mquina
binrio).
O que diferencia a compilao do processo de montagem sua maior complexidade. No processo de montagem, h
uma relao de 1:1, ou seja, cada instruo do cdigo fonte resulta em uma instruo de mquina, enquanto na
compilao a relao mltipla, cada instruo do cdigo fonte gerando vrias instrues de mquina.

probabilidade de esterem corretos. Segundo, as linguagens de alto nvel so portveis, o que significa que podem
rodar em diferentes tipos de computador, com pouca ou nenhuma modificao. Programas em baixo nvel s podem
rodar em um nico tipo de computador e precisam ser re-escritos para rodar em outro tipo.
Devido a essas vantagens, quase todos os programas so escritos em linguagens de alto nvel. As de baixo nvel so
utilizadas somente para umas poucas aplicaes especializadas.

Compilao

Dois tipos de programas processam linguagens de alto nvel, traduzindo-as em linguagens de baixo nvel: interpretadores e compiladores. O interpretador l um programa escrito em linguagem de alto nvel e o executa, ou seja, faz o
que o programa diz. Ele processa o programa um pouco de cada vez, alternadamente: hora lendo algumas linhas, hora
executando essas linhas e realizando clculos.

O compilador l o programa e o traduz completamente antes que o programa


comece a rodar.
Neste caso, o programa escrito em linguagem de alto nvel chamado de
cdigo fonte, e o programa traduzido chamado de cdigo objeto ou
executvel.
O compilador l o programa e o traduz completamente antes que o programa comece a rodar. Neste caso, o programa
Uma
vez que
compilado,
voc
pode
execut-lo
escrito
em linguagem
de altoum
nvel programa
chamado de cdigo
fonte, e o programa
traduzido
chamado
de cdigo objeto
ou executvel.
Uma vez sem
que umque
programa
compilado,
voctraduo.
pode execut-lo repetidamente, sem que precise de nova
repetidamente,
precise
de nova
traduo.

Python considerada uma linguagem interpretada, pois os programas em Python so executados por um interpretador.

Programao estruturada x
orientao a objetos
Programao estruturada orienta os programadores para
a criao de estruturas simples em seus programas,
usando as subrotinas e as funes. Foi a forma
dominante na criao de software
Na programao orientada a objetos, implementa-se um
conjunto de classes que definem os objetos presentes no
sistema de software. Cada classe determina o
comportamento (definido nos mtodos) e estados
possveis (atributos) de seus objetos, assim como o
relacionamento com outros objetos.

Processamento paralelo
Computao paralela uma forma de computao
em que vrios clculos so realizados
simultaneamente,
A filosofia de que grande problemas geralmente
podem ser divididos em problemas menores, que
ento so resolvidos concorrentemente (em
paralelo).

Programao procedural
O termo Programao procedural (ou
programao procedimental) s vezes utilizado
como sinnimo de Programao imperativa que
especifica os passos que um programa deve
seguir para alcanar um estado desejado), mas o
termo pode se referir (como neste artigo) a um
paradigma de programao baseado no conceito
de chamadas a procedimento.

Вам также может понравиться