Introdução A Programação
Introdução A Programação
Introdução A Programação
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.
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)
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
UNIDADE*
DE*
CONTROLE
UNIDADE*
LGICA*E*
ARITMTICA*
(ULA)
ACUMULADOR
ENTRADA
SADA
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.
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.
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.
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.
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.
Erro?
SIM
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.
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.