Académique Documents
Professionnel Documents
Culture Documents
Sumario
Introduo
Histria da computao
Funcionamento do computador
Linguagens de Programao
Desenvolvimento de algoritmos
Algoritmos no computacionais
Algoritmos computacionais
Fluxogramas
Exerccios
2
O que um computador?
Dicionrio Porto Editora
1
que ou aquele que faz cmputos (clculos);
calculador;
calculista.
2
aparelho electrnico que processa dados em funo de
um conjunto de instrues previamente fornecidas.
3
4
Introduo Programao / Programao e Algoritmia
Gerao 0 - mecnica
vlvula
Mark 1 (1944)
ENIAC (1945)
6
2 gerao - Transistor
Vantagens em relao s
vlvulas
Menor energia consumida
Menor aquecimento
Maior velocidade de
processamento
UNIVAC (1956)
7
3 gerao - Circuitos integrados
Componentes miniaturizados
Transstores
Resistores
Dodos
Chips
Conjunto de componentes
Circuitos integrados
Conjunto de chips
8
4 gerao - VLSI
PC-AT (1985) 9
5 gerao - ULSI
Processamento paralelo
AGP
USB
SATA
10
Computadores na actualidade
11
12
Introduo Programao / Programao e Algoritmia
Modelo de Von Neuman
13
Arquitectura bsica do Computador
Processador
CPU
Memria
Bus
Entradas/Sadas
S.O.
15
Software / Hardware
16
Tipos de sistemas informticos
Mdio porte
Workstations
MiniComputadores
Pequeno porte
Microcomputadores
Ultra-Microcomputadores
17
Tipos de sistemas informticos
18
19
Introduo Programao / Programao e Algoritmia
Linguagens e alfabetos
Hello World
Ol Mundo
Bonjour Monde
Halo welt
20
1 gerao Linguagem mquina
0100 1010100
0100 1010110
0110 1001100
0101 1010101
1100 1001100
21
2 gerao Assembler
dosseg
2 gerao Assembler .model small
.stack 100h
Mneumnicas do instruction
.data
set do processador hello_message db 'Hello, World!','$'
Assemblador Programa que
.code
traduz o cdigo assembly para main proc
linguagem mquina mov ax,@data
mov ds,ax
Os Programas funcionam
apenas num tipo processador mov ah,9
mov dx,offset hello_message
Mov > 00001100
int 21h
int -> 10001101
mov ax,4C00h
int 21h
Desenvolvimento de main endp
end main
programas muito difcil e
demorado
Assembly para o IBM-PC
22
2 gerao Assembler
reset
LDX #$00
cycle
LDA hworld,X
printf: pea text BEQ reset
move.w #9,-(sp) STX cache
trap #1 JSR $FFD2
addq.l #6,sp LDX cache
bra printf INX
JMP cycle
text: dc.b "Hello, World !",0
hworld
.text "Hello, World!"
.byte 13,0
cache
.byte 0
Desvantagens
Pequeno nmero de instrues
Programas longos
Pouco legveis
Difceis de modificar
Utiliza directamente os recursos da mquina
Os programas no so portteis entre computadores
Vantagens
Cdigo optimizado
Velocidade de processamento elevado
Controlo total do hardware
24
3 gerao Linguagens de alto nvel
C Pascal
PROGRAM HELLO
DO 10, I=1,10 100200 MAIN-LOGIC SECTION.
100300 BEGIN.
PRINT *,'Hello World' 100400
100500
DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
DISPLAY "HELLO, WORLD." LINE 15 POSITION 10.
10 CONTINUE 100600 STOP RUN.
100700 MAIN-LOGIC-EXIT.
STOP 100800 EXIT.
END
Fortran Cobol
26
4 Gerao de Linguagens de aplicao
SQL
27
5 gerao Linguagens de muito alto nvel
hello :-
printstring("HELLO WORLD!!!!").
printstring([]).
printstring([H|T]) :- put(H), printstring(T).
28
Prolog
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
29
Exemplo em linguagem imperativa
# include <stdio.h>
int main(int argc, char *argv[]) { Clculo do
double raio;
printf( raio do crculo :); Permetro do
scanf(%f,&raio); crculo
if( raio < 0 )
printf ( ERRO Raio negativo)
else {
printf(Perimetro do circulo:;
printf(%f, 3.14* raio);
}
}
C:\Calculo.exe
Raio do circulo: 2
Programao imperativa Perimetro do circulo: 6.28
Linguagem C
30
Exemplos imperativa versus declarativa
Mae(iria, ines).
Mae(iria, antonio). Relaes
Mae(ines, tiago). familiares
Irmao(X,Y) :- Mae(Z,X)
Mae(Z,Y)
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.
33
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
34
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 executar
este algoritmo?
35
Algoritmos
Algoritmo no computational
Exemplos
Receita
Manual de instrues
Depende da percia do utilizador!
Algoritmo computational
Manipular informao (I/O)
Receber dados Um algoritmo
Devolver informao computacional uma
Executar instrues sequencia de passos
Fazer operaes aritmticas
Fazer operaes lgicas
to bem definida que
Escolha entre vrias instrues. at um computador o
Repetir um conjunto de instrues capaz de a executar
36
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
37
Exemplo
Einstein
38
Exemplo
Entrada
Lmpada fundida
Lmpada nova Algoritmo 2
Escada Subir a escada
Sada Retirar a lmpada fundida
Lmpada nova a funcionar Colocar a lmpada boa
Operaes vlidas Descer a escada
Retirar a lmpada
Colocar a lmpada
Subir a escada
Descer a escada
39
Exemplo
Entrada
Lmpada fundida
Lmpada nova
Escada
Caixote de reciclagem Algoritmo 2
Sada Subir a escada
Lmpada nova a funcionar
Lmpada fundida na reciclagem Retirar a lmpada fundida
Operaes vlidas Colocar a lmpada boa
Retirar a lmpada Descer a escada
Colocar a lmpada
Subir a escada
Colocar a lmpada fundida
Descer a escada na reciclagem
Deitar a lmpada na reciclagem
40
Exemplo
Entrada
Algoritmo 3
Lmpada nova
Escada Colocar a escada debaixo da
lmpada
Caixote de reciclagem
Colocar a lmpada boa no bolso
Sada
42
um bom algoritmo ?
lmpada
Ser correctamente Colocar a lmpada boa no bolso
definido Subir a escada
Ser eficaz Retirar a lmpada fundida
Ser eficiente Colocar a lmpada boa
Descer a escada
Colocar a lmpada fundida na
reciclagem
Arrumar a escada
43
Algoritmo ou algoritmos ?
Contrua um algoritmo
que permita subir uma
escada
1. Subir os degraus
1. Suba um degrau
2. Suba um degrau
3. Suba um degrau
4. Suba um degrau
5. Suba um degrau
6. Suba um degrau
7. ....
44
Algoritmo ou algoritmos ?
1. Inicio
2. Suba um degrau
3. Se no chegou ao topo v para 2
4. Fim
1. Inicio
2. Enquanto no chegar ao topo
3. Suba um degrau
Situao inicial: 4. Fim
Pessoa no cho
Situao final: Inicio
Pessoa no topo
No
Sim Topo da
escada ?
Instrues vlidas:
Subir um degrau Subir um
Verificar se est no Fim degrau
topo da escada
45
Concluso
O algoritmo no a soluo de um
problema
uma forma de chegar soluo
No se aprende
A copiar algoritmos
Ler algoritmos prontos
A decorar algoritmos
Aprende-se
Construindo algoritmos
Testando algoritmos
46
Concluso - Construir Algoritmos
Qual o problema.
O que pretendemos do algoritmo
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
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
transformar as entradas na sada
Testar o algoritmo
Verificar se resolve o problema
Verificar se resolve todos os casos
Optimizar o algoritmos
Verificar se no utiliza recursos suprfluos 47
48
Introduo Programao / Programao e Algoritmia
Algoritmos
Pretende-se fazer a travessia de clientes da margem
esquerda para a margem direita de um rio. A travessia
feita com o auxilio de um barqueiro e de um
Construa um algoritmo que vai ser executado pelo
barqueiro sabendo que:
Existem 4 clientes e o barco leva 2 pessoas
Existem 100 clientes e o barco leva 2 pessoas
Existem 10 clientes e o barco leva 4 pessoas
Existem n clientes e o barco leva m pessoas
49
Algoritmos
Sapos verdes Sapos castanhos pretendem atravessar um rio
atravs de um conjunto de pedras. Cada sapo inicialmente
ocupa uma pedra no seu lado do rio e existe uma pedra vazia
entre os sapos verdes e castanhos. Os sapos apenas podem
saltar para a pedra seguinte se esta estiver vazia ou saltar por
cima de um sapo de outra cor se houver uma pedra vazia do
outro lado.
Construa um algoritmo que permita fazer a travessia de 2
sapos
50
Algoritmos
Construa um algoritmo que permita fazer a travessia de
6 sapos
51