Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programas e Programao
Quando vocs utilizam um computador, sempre executam
um programa.
Para que um computador faa algo, ele precisa de instrues precisas.
Os humanos (apenas os humanos?) escrevem e utilizam programas para dizer ao computador exatamente o que fazer.
Algumas pessoas dizem que a programao, no futuro, ser to importante quanto ler e escrever!
18/02/14
2/44
Programas e Programao
The great thing about computers is that they do exactly what you
tell them. The terrible thing about computers is that they do exactly
what you tell them.
18/02/14
3/44
Programas e Programao
18/02/14
4/44
Programas e Programao
18/02/14
5/44
Programas e Programao
Programar basicamente construir programas, que so
formulaes concretas de algoritmos abstratos, baseados
em representaes e estruturas especficas de dados.
A programao estruturada a arte ou tcnica de construir e formular algoritmos de forma sistemtica.
Algoritmos, programas, estruturas de dados?
18/02/14
6/44
O que um Programa?
18/02/14
7/44
Programa
Um programa uma sequncia de instrues para o
computador, escrita em uma linguagem de programao, que normalmente similar lngua inglesa,
porm muito mais simples e muito mais rigorosa.
Programming demands significantly higher standard of accuracy.
Things dont simply have to make sense to another human being,
they must make sense to a computer. Donald Knuth
18/02/14
8/44
18/02/14
9/44
Algoritmo
O conceito central da programao e da computao o
de algoritmo.
A palavra algoritmo vem de algoritmi, forma latina do
nome do matemtico iraniano Abu Abdullah Mohammad
Ibn Musa al-Khawarizmi, que viveu no sculo XVII.
O termo algoritmo utilizado em diversas reas alm da
computao, tais como administrao, engenharia, dentre
outras.
Um algoritmo , essencialmente, um mtodo para a resoluo de um problema.
18/02/14
10/44
Algoritmo
H diferentes definies para o que um algoritmo:
Algoritmo uma sequncia de passos que visa atingir um objetivo bem definido.
Algoritmo a descrio de uma sequncia de passos que deve
ser seguida para a realizao de uma tarefa.
Algoritmo uma sequncia finita de instrues ou operaes cuja execuo, em tempo finito, resolve um problema computacional, qualquer que seja a sua instncia.
18/02/14
11/44
Algoritmo
H diferentes definies para o que um algoritmo:
Algoritmo so regras formais para a obteno de um resultado
ou da soluo de um problema, englobando formas de expresses aritmticas.
Ao um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido. Portanto, um algoritmo a descrio de um
conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes.
18/02/14
12/44
Exemplos de Algoritmos?
18/02/14
13/44
Programas
Programas tipicamente processam dados de entrada e
produzem dados de sada.
Entrada
18/02/14
Programa
Sada
14/44
Linguagens de Programao
Uma linguagem de programao uma linguagem artificial com sintaxe e semntica bem definidas que utilizada
para escrever programas.
mais tcnica do que as linguagens naturais e menos tcnica do que a linguagem nativa dos computadores (linguagem de
mquina).
18/02/14
15/44
Linguagens de Programao
As linguagens de programao semelhantes linguagem
de mquina so conhecidas como linguagens de baixo nvel.
Escrever programas na linguagem de mquina uma tarefa pouco intuitiva e complicada para ser realizada por seres humanos.
Para facilitar a programao de computadores, existem
linguagens de alto nvel que relacionam a linguagem de
mquina a uma linguagem de compreenso mais simples.
18/02/14
16/44
Linguagens de Programao
A linguagem de montagem (assembly) um cdigo com
instrues alfanumricas (ou mnemnicas) equivalentes a
cada instruo da linguagem de mquina.
A traduo de um programa escrito em linguagem assembly realizada por meio da utilizao de um programa chamado assembler (ou montador).
Cdigo em
linguagem de
montagem
18/02/14
Assembler
Cdigo em
linguagem de
mquina
17/44
Linguagens de Programao
A linguagem de montagem uma linguagem de baixo nvel, especfica para cada processador (cada um tem o seu
repertrio de instrues), o que faz com que o cdigo no
seja portvel.
A implementao de programas em linguagem de montagem uma tarefa complexa e exige conhecimentos sobre
o processador.
As linguagens de alto nvel so independentes do processador, so mais elaboradas e contemplam operaes mais
complexas e mais prximas da lgica humana.
18/02/14
18/44
Linguagens de Programao
Para serem executados por um processador, os comandos
de linguagem de alto nvel precisam ser traduzidos para a
linguagem de mquina.
Essa traduo pode ser feita por um programa compilador
ou por um programa interpretador.
A partir de um arquivo com o cdigo em linguagem de alto nvel
o cdigo-fonte, o compilador gera um arquivo contendo o cdigo
em linguagem de mquina o cdigo-objeto, que ser utilizado
para a gerao de um arquivo executvel por um link-editor.
18/02/14
19/44
Linguagens de Programao
Essa traduo pode ser feita por um programa compilador
ou por um programa interpretador.
O interpretador realiza a mesma tarefa, mas a execuo no envolve a gerao de um arquivo executvel: ele traduz as instrues em linguagem de montagem em tempo de execuo.
18/02/14
20/44
Compiladores
Compiladores so programas que traduzem programas escritos em linguagem de programao para programas equivalentes escritos em linguagem de mquina.
ProgramaFonte
18/02/14
Compilador
Programa-Objeto
21/44
Link-Editores
O programa-objeto nem sempre est pronto para ser executado.
Pode ser necessrio incluir outros trechos de cdigo:
Bibliotecas.
Subprogramas.
18/02/14
22/44
Link-Editores
ProgramaObjeto 1
.
.
.
Programa
Executvel
Link-Editor
ProgramaObjeto N
Biblioteca
18/02/14
Biblioteca
23/44
Interpretadores
Os interpretadores simulam uma mquina virtual.
O programa-fonte lido, entendido e as instrues so executadas imediatamente.
Entrada
Interpretador
Sada
ProgramaFonte
18/02/14
24/44
Compiladores e Interpretadores
Cdigo em
linguagem de
alto nvel
Cdigo em
linguagem de
alto nvel
Compilador
Cdigo em
linguagem de
mquina
Interpretador
Cdigo em
linguagem de
mquina
Traduo de cada
instruo em tempo de execuo
18/02/14
25/44
Esquemas Hbridos
O compilador gera cdigo para uma mquina virtual (cdigo pseudo-executvel).
A mquina virtual executada separadamente, lendo o
pseudo-cdigo e interpretando-o.
ProgramaFonte
Entrada
Interpretador
Compilador
18/02/14
Sada
ProgramaObjeto
26/44
Programas de Computador
A programao utilizando linguagens de alto nvel mais
simples, facilitando a implementao de programas mais
elaborados e capazes de atenderem a demandas mais
complexas.
Os cdigos escritos em linguagens de alto nvel so portveis, ou seja, independentes da plataforma, desde que seja
realizada uma nova compilao do cdigo-fonte (no caso
das linguagens compiladas).
Existem diversas linguagens de alto nvel:
Pascal, C, Java, Python...
18/02/14
27/44
Programas de Computador
A realizao de algumas operaes em linguagem de
mquina bastante complexa.
Para facilitar essas operaes, foram criados os sistemas
operacionais.
Um sistema operacional representa uma camada entre o
hardware e o software (mquina virtual).
A mquina virtual mais simples de ser utilizada do que a mquina real.
Os sistemas operacionais gerenciam os recursos da mquina, evitando que o programador os utilize de forma indevida.
18/02/14
28/44
Programas de Computador
Os sistemas operacionais fornecem uma interface (chamadas ao sistema) que pode ser utilizada pelos programas.
Os compiladores utilizam essa interface em lugar de implementarem operaes complexas.
Chamadas ao sistema encontradas pelo compilador no
cdigo-fonte em linguagem de alto nvel so transformadas em referncias no cdigo-objeto em linguagem de
mquina.
18/02/14
29/44
Programas de Computador
Numa segunda etapa da compilao, o compilador liga o
cdigo do programa ao cdigo do sistema operacional (ligao de cdigo ou linking).
A integrao de compiladores e sistemas operacionais torna o cdigo-objeto portvel para qualquer mquina que
utilize o mesmo sistema operacional:
O cdigo fica dependente do sistema operacional, e no do processador!
Para executar um mesmo programa em outro sistema operacional, o cdigo-fonte deve ser compilado novamente.
18/02/14
30/44
Programas de Computador
Cdigo em
linguagem de
alto nvel
Cdigo em
linguagem de
mquina
Compilador
Etapa I
Memria
Cdigo-objeto
executvel
Compilador
Etapa II
Biblioteca do
sistema
operacional
18/02/14
31/44
Estruturao de Algoritmos
As linguagens de programao de alto nvel so mais simples do que a linguagem de mquina, mas ainda assim podem parecer complexas, especialmente para iniciantes.
O principal problema reside no fato de que as pessoas no
esto acostumadas a construir algoritmos, ou seja, a expressar o raciocnio de forma organizada, padronizada e
estruturada.
importante destacar que, diferentemente da linguagem
natural, as linguagens de programao so dirigidas a uma mquina, e no a pessoas.
18/02/14
32/44
Estruturao de Algoritmos
Mquinas no podem tomar decises com base em premissas, no podem escolher alternativas, no podem corrigir comandos mal redigidos, etc.
As pessoas so capazes de fazer isso instintiva e intuitivamente.
Assim, a linguagem de programao deve possuir algumas
caractersticas que no so inerentes linguagem natural,
que no apropriada para a escrita de algoritmos:
Rigidez sinttica: as construes devem ser bem definidas.
Rigidez semntica: no podem existir ambiguidades.
18/02/14
33/44
Linguagens de Programao
18/02/14
34/44
35/44
Maior Num1
N
Maior Num2
escreva Maior
Fim
18/02/14
36/44
18/02/14
37/44
18/02/14
38/44
18/02/14
39/44
40/44
41/44
18/02/14
42/44
Finalizando
Programa em Python 2 para escolher o maior entre dois
nmeros inteiros distintos:
Num1 = int(raw_input('Primeiro:'))
Num2 = int(raw_input('Segundo:'))
if Num1 > Num2:
Maior = Num1
else:
Maior = Num2
print(Maior)
43/44
18/02/14
44/44