You are on page 1of 56

Introduo Programao

ano lectivo de 2006 / 2007

1
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Sumario

Introduo
Histria da computao
Funcionamento do computador
Linguagens de Programao
Desenvolvimento de algoritmos

Algoritmos no computacionais
Algoritmos computacionais

Exerccios

2
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

O que um computador?

Dicionrio Porto Editora

1
que ou aquele que faz cmputos;

calculador;

calculista.

aparelho electrnico que processa dados em funo


de um conjunto de instrues previamente fornecidas.

3
M@nso 2004

Computador
As cinco geraes

4
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

1 Gerao - vlvulas

vlvula
Mark 1 (1944)

O primeiro
Bug
M@nso 2004

ENIAC (1945)

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

2 gerao - Transistor

Vantagens em relao
s vlvulas

Menor energia consumida

Menor aquecimento

Maior velocidade de
processamento

UNIVAC (1956)
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

3 gerao - Circuitos integrados

Componentes miniaturizados

Chips

Conjunto de componentes

Circuitos integrados

Transistores
Resistores
Diodos

Conjunto de chips

Sistema Operativo - MS-DOS


Graficos EGA 16 cores

PC-XT (1981)
7

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

4 gerao - VLSI

Integrao de circuitos em larga escala


Slots ISA de 16 bits
Slots PCI
Placas VGA e SVGA

PC-AT (1985)
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

5 gerao - ULSI

Integrao em muito
larga escala

Processamento paralelo
Slots AGP
USB
SATA

9
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Computadores na actualidade

10
M@nso 2004

Funcionamento do
computador digital

11
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Modelo de Von Neuman

12
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Arquitectura bsica do Computador

abcdefghijklmnopqrstuvxywz0123456789013
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Software / Hardware

S.O.

14
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Software

Aplicativos

Realizam tarefas especficas

Processamento de texto

Desenho

Microsoft Word
Corel Draw
Autocad

Jogos
Etc.

Sistema operativo

Serve de interface entre a mquina e os


programa de aplicao

M@nso 2004

15

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Tipos de sistemas informticos

Quanto ao tamanho e capacidade

Grande porte

Mdio porte

Supercomputadores
Mainframes

Workstations
MiniComputadores

Pequeno porte

Microcomputadores
Ultra-Microcomputadores

16
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Tipos de sistemas informticos

Quanto ao nmero de utilizadores e


de tarefas

Mono utilizador

Monotarefa

Multitarefa

Ex. PC com MS-DOS


Ex. PC com Windows

Multi utilizador

Multi-posto

Servidor UNIX
Terminais

Redes de computadores

Internet

17
M@nso 2004

Linguagens de
Programao
A linguagem que as mquinas
entendem

18
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Linguagens e alfabetos
Hello World
Ol Mundo
Bonjour Monde
Halo welt

19
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

1 gerao Linguagem mquina

1 gerao Linguagem mquina

Conjunto de dgitos binrios do instruction set do


processador

Os programas correm apenas no computador para o qual


foram projectados.

0100
0100
0110
0101
1100

1010100
1010110
1001100
1010101
1001100

20
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

2 gerao Assembler

2 gerao Assembler

Mneumnicas do
instruction set do
processador

.data
hello_message db 'Hello, World!','$'
.code
main proc
mov
mov

Os Programas funcionam
apenas num tipo
processador

Assemblador Programa
que traduz o cdigo
assembly para linguagem
mquina

dosseg
.model small
.stack 100h

Mov > 00001100


int -> 10001101

Desenvolvimento de
programas muito difcil e
demorado

M@nso 2004

main
end

ax,@data
ds,ax

mov
mov
int

ah,9
dx,offset hello_message
21h

mov
int
endp
main

ax,4C00h
21h

Assembly para o IBM-PC

21

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

2 gerao Assembler

printf:

pea
move.w
trap
addq.l
bra

text
#9,-(sp)
#1
#6,sp
printf

text:

dc.b

"Hello,

World !",0

reset
LDX #$00
cycle
LDA hworld,X
BEQ reset
STX cache
JSR $FFD2
LDX cache
INX
JMP cycle
hworld
.text "Hello, World!"
.byte 13,0
cache
.byte 0

Assembly 680x0 on an Atari computer Assembly on an Commodore 64

22

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

2 gerao Assembler

Desvantagens

Pequeno nmero de instrues

Utiliza directamente os recursos da mquina

Programas longos
Pouco legveis
Difceis de modificar
Os programas no so portteis entre computadores

Vantagens

Cdigo optimizado

Velocidade de processamento elevado

Controlo total do hardware


23

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

3 gerao Linguagens de alto nvel

3 gerao Linguagens de alto nvel

Uma instruo pode corresponder a um grande nmero de


instrues em assembly

Intrues em linguagem natural

Linguagens de propsito geral

write, read, print, . . .


Ler, escrever, repetir

Clculo matemtica
Gesto de documentos
Controlo

Exemplos

Basic
Pascal
C
Cobol
Fortran

10 print"Hello World!"
20 goto 10
Basic

24
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

3 gerao Linguagens de alto nvel


#include <stdio.h>
program Hello_World;
main()
Begin
{
repeat
for(;;)
writeln('Hello World!')
printf ("Hello World!\n");
until 1=2;
}
End.
C
PROGRAM HELLO
DO 10, I=1,10
PRINT *,'Hello World'
10 CONTINUE
STOP
END
Fortran

Pascal
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400
DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500
DISPLAY "HELLO, WORLD." LINE 15 POSITION 10.
100600
STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800
EXIT.

Cobol

25
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

4 Gerao de Linguagens de aplicao

4 gerao Linguagens de alto nvel com


aplicaes a reas concretas

Funes muito especficasSET

Gesto de bases de dados


Elaborao de relatrios
Gerao de ecrs

Exemplos

DBASE
SQL
CLIPPER

ECHO OFF
CLEAR
DO WHILE 1=1
@1,1 SAY "Hello, World!"
ENDDO

DBAS
E
CREATE TABLE HELLO (HELLO CHAR(12))
UPDATE HELLO
SET HELLO = 'HELLO WORLD!'
SELECT * FROM HELLO

SQL
M@nso 2004

26

Introduo programao

Computadores e

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

programao I

5 gerao Linguagens de muito alto


nvel
5 gerao Linguagens de muito alto
nvel

Programao declarativa

Declarao dos problemas


Mtodos especficos de resoluo dos problemas

Linguagens de Inteligncia Artificial

Prolog

hello :printstring("HELLO WORLD!!!!").


printstring([]).
printstring([H|T]) :- put(H), printstring(T).

M@nso 2004

Prolog

27

Introduo programao

Computadores e

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

programao I

Programao imperativa versus


declarativa
Programao imperativa

Qual o procedimento que resolve o problema?

Descrio pormenorizada de como um problema deve


ser resolvido

Algoritmo

O computador segue os passos descritos no programa

Programao declarativa

Qual o problema?

O programador declara o conhecimento necessrio para


a resoluo do problema
A linguagem possui mtodos prprios para a resoluo
dos problemas.

inferncia

28
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo em linguagem imperativa


# include <stdio.h>
int main(int argc, char *argv[]) {
double raio;
printf( raio do crculo :);

Clculo do
Permetro do
crculo

scanf(%f,&raio);
if( raio < 0 )
printf ( ERRO Raio negativo)
else {
printf(Perimetro do circulo:;

printf(%f, 3.14* raio);


}
}

Programao imperativa
Linguagem C

C:\Calculo.exe
Raio do circulo: 2
Perimetro do circulo: 6.28

29
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplos imperativa versus declarativa


Mae(iria, ines).
Mae(iria, antonio).
Mae(ines, tiago).

Relaes
familiares

Irmao(X,Y) :- Mae(Z,X)
Mae(Z,Y)
Avo(X,Y):- Mae(X,Z),
Mae(Z,Y).

Programao declarativa
(prolog)

?: Avo( X,tiago)
X= Iria.
?: Irmao( X,Y)
X = ines
Y = antonio
30

M@nso 2004

Resoluo de problemas
Introduo programao
imperativa

31
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmo

Origem da palavra

al-Khwarizmi - Matemtico rabe

Algoritmo
Algarismo

Definio

uma sequncia finita de passos ou instrues,


ordenadas de forma lgica, que levam a execuo
de uma tarefa ou soluo de um problema.
32

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo de um Algoritmo
250g de farinha
150g de margarina
5 ovos
2 colheres de fermento
200 gramas de acucar

1.Misturar os ingredintes
2.cozinhar o bolo.

Receita

33
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Abordagem Top Down

Receita:

1 - Misturar os ingredintes
1.1 juntar a margarina e a farinha e bater at obter um creme
1.2 Juntar os ovos e mexer
1.3 juntar o fermento
2 Cozinhar o bolo
2.1 Aquecer o forno a 180c
2.2 Cozer o bolo durante 45 min

Refinamento:
Obter creme
Juntar ovos
Ligar e regular o forno
Desligar o forno

Pode um computador fazer um bolo ?


M@nso 2004

34

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmos

Algoritmo no computational

Exemplos

Receita
Manual de instrues

Depende da percia do utilizador!

Algoritmo computational

Manipular informao

Receber dados
Guardar dados
Devolver informao

Executar instrues

Fazer operaes aritmticas


Fazer operaes lgicas
Escolha entre vrias instrues.
Repetir um conjunto de instrues

M@nso 2004

Um algoritmo
computacional
uma sequencia de
passo to bem
definida que at
um computador o
capaz de a
executar
35

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Componentes de um algoritmo

Problema

Conjunto das possveis


entradas
Conjunto das sadas
Conjunto de operaes
vlidas

Soluo Algortmica

Conjunto ordenado de
operaes vlidas que
transformam o conjunto de
entradas na sada desejada

36
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo

Como se constroem algoritmos?


Problema

Trocar uma lmpada fundida

Algoritmo 1

Retirar a lmpada fundida


Colocar a lmpada boa

A formulao de um problema
frequentemente mais essencial do que a sua
soluo, a qual pode ser meramente uma
questo de habilidade matemtica ou
experimental
Einstein
37
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo

Trocar uma lmpada fundida

Entrada

Sada

Lmpada fundida
Lmpada nova
Escada

Algoritmo 2

Lmpada nova a funcionar

Operaes vlidas

Retirar a lmpada
Colocar a lmpada
Subir a escada
Descer a escada

Subir a escada
Retirar a lmpada
fundida
Colocar a lmpada boa
Descer a escada

38
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo

Trocar uma lmpada fundida

Entrada

Sada

Lmpada fundida
Lmpada nova
Escada
Caixote de reciclagem
Lmpada nova a funcionar
Lmpada fundida na reciclagem

Operaes vlidas

Retirar a lmpada
Colocar a lmpada
Subir a escada
Descer a escada
Deitar a lmpada na reciclagem

Algoritmo 2

Subir a escada
Retirar a lmpada
fundida
Colocar a lmpada boa
Descer a escada
Colocar a lmpada
fundida na reciclagem

39
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Exemplo

Trocar uma lmpada fundida

Entrada

Lmpada nova
Escada
Caixote de reciclagem

Algoritmo 3

Sada

Lmpada nova a funcionar

Operaes vlidas

Retirar a lmpada
Colocar a lmpada
Subir a escada
Descer a escada
Deslocar a escada
Deitar a lmpada na reciclagem

Colocar a escada debaixo


da lmpada
Colocar a lmpada boa no
bolso
Subir a escada
Retirar a lmpada fundida
Colocar a lmpada boa
Descer a escada
Colocar a lmpada fundida
na reciclagem
Arrumar a escada

um bom algoritmo ?
M@nso 2004

40

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Caractersticas dos bons algoritmos

Interagir com o utilizador

Ser finito

Instrues claras que o utilizador consegue compreender e


seguir

Ser eficaz

Termina sempre e com o resultado previsto

Ser correctamente definido

Realiza uma tarefa til ao utilizador


Resolve o problema

Resolve sempre o problema mesmo nas situaes mais


problemticas

Ser eficiente

Utiliza o mnimo de recursos possvel

41
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

um bom algoritmo ?

Interagir com o
utilizador
Ser finito
Ser correctamente
definido
Ser eficaz
Ser eficiente

Algoritmo 3

Colocar a escada debaixo


da lmpada
Colocar a lmpada boa no
bolso
Subir a escada
Retirar a lmpada fundida
Colocar a lmpada boa
Descer a escada
Colocar a lmpada fundida
na reciclagem
Arrumar a escada

42
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmo ou algoritmos ?
1.
2.
3.

Inicio
Subir a escada
Fim

1.
2.
3.
4.
5.
6.
7.
8.
9.

Inicio
Suba um
Suba um
Suba um
Suba um
Suba um
Suba um
....
Fim

degrau
degrau
degrau
degrau
degrau
degrau

43
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmo ou algoritmos ?
1.
2.
3.
4.
1.
2.
3.
4.
5.

Instrues vlidas:
Subir um
degrau
Verificar se
est no topo
M@nso 2004

1.
2.
3.
4.

Inicio
Suba um degrau
Se no chegou ao topo v para 2
Fim
Inicio
Repita
Suba um degrau
At chegar ao topo
Fim
Inicio
Enquanto no chegar ao topo
Suba um degrau
Fim

44

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Concluso

O algoritmo no a soluo
de um problema

No se aprende

uma forma de chegar


soluo
A copiar algoritmos
Ler algoritmos prontos
A decorar algoritmos

Aprende-se

Construindo algoritmos
Testando algoritmos
45

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Concluso - Construir Algoritmos

Qual o problema.

Definir quais so os dados que entram

Qual a situao inicial


O que necessrio para resolver o problema

Definir quais so os dados que saem

O que pretendemos do algoritmo

Qual a situao final


Que resultados devem ser apresentados

Definir o Algoritmo

Definir quais as instrues disponveis/necessrias


Organizar as instrues de forma a resolver o problema

Testar o algoritmo

transformar as entradas na sada

Verificar se resolve o problema


Verificar se resolve todos os casos

Optimizar o algoritmos

Verificar se no utiliza recursos suprfluos

M@nso 2004

46

Exerccios

47
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Reunio de negcios

Imagine que uma pessoa decidia ir de txi a


uma reunio de negcios. Monte uma
sequncia de aces para que ela chegue ao
prdio onde vai ocorrer a reunio.

a)Entrar no prdio da
reunio;
b)Sair do txi;
c)Acenar para que o txi
pare;
d)Perguntar o preo da
corrida;
e)Informar o destino ao
motorista;
f)Esperar o txi;
g)Pagar ao taxista;
h)Entrar
M@nso 2004 no txi.

Esperar o txi
Acenar para que o txi pare
Entrar no txi
Informar o destino ao
motorista
Perguntar o preo da corrida
Pagar ao taxista;
Sair do txi;
Entrar no prdio da reunio

48

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmos

Escreva um algoritmo para trocar o pneu de


um carro

Escreva um algoritmo par meter gasolina


num posto de abastecimento Self-service.

Escreva um algoritmo para telefonar de uma


cabine pblica.

49
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Algoritmos

Um barqueiro que possui uma lancha que


leva 2 pessoas faz a travessia de um rio.
Escreva um algoritmo que resolva o
problema da travessia de 3 pessoas.

O mesmo problema com 10 pessoas

O mesmo problema com

A lancha leva 4 pessoas


M@nso 2004

n pessoas
50

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Torres de Hanoi

Mover Cor para Destino


- mover amarelo para 2

51
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Torres de Hanoi

52
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

O homem o lobo o carneiro e as alfaces

Um homem, um lobo, um carneiro e um saco de


alfaces encontram-se do mesmo lado de um rio e
querem atravess-lo. No mesmo lado do rio h uma
canoa que devido ao seu estado de degradao
apenas consegue transportar dois itens de cada vez.
Como fazer a travessia, tendo em conta que o lobo
no pode ficar sozinho com o carneiro e o carneiro
no pode ficar sozinho com o saco das alfaces .

53
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Problema das Jarras

Existem duas jarras, uma de 3 litros e uma de 5


litros, ambas vazias e nenhuma delas tem
qualquer marcao de medida. Existe uma fonte
que pode ser usada para encher ou despejar as
jarras com gua.
Como se colocam exactamente 4 litros de gua
na balana?

5
54

M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

Missionrios e Canibais

Trs missionrios e trs canibais encontram-se do

mesmo lado de um rio e querem atravess-lo. No


mesmo lado do rio h uma canoa que devido ao seu
estado de degradao apenas consegue transportar
duas pessoas de cada vez. Os missionrios acham
que os canibais os atacam se ficarem em maior
nmero e por isso querem elaborar um plano de
travessia em que nunca os canibais ficam em maior
nmero nas margens do rio ou no barco.

O mesmo para N missionrios e N canibais

55
M@nso 2004

Introduo programao

Computadores e
programao I

Escola Superior de Tecnologia de Tomar Departamento de Eng. Informtica

O jogo do rio

Encontram-se na margem A, a me e duas filhas, Pai e dois filhos e


um polcia e um ladro, que pretendem atravessar para a margem
B. Para realizar a travessia existe uma jangada cuja lotao de
duas pessoas. Durante a travessia devem ser respeitadas as regras
seguintes:

A jangada apenas pode ser conduzida pelo Pai, pela Me ou pelo Polcia.
A Me nunca pode ficar na mesma margem na presena de um ou mais
filhos sem a presena do Pai.
O Pai nunca pode ficar na mesma margem na presena de uma ou mais
filhas sem a presena do Me.
O ladro deve estar sempre acompanhado pelo polcia quando existem
na mesma margem outros elementos.

Construa o algoritmo da travessia

56
M@nso 2004

You might also like