Vous êtes sur la page 1sur 51

Introduo Programao / Programao e Algoritmia

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

Abaco Rguas de calculo

Mquina de calcular de Pascal (1642)


Mquina diferencia de Babbage (1822)
1 Gerao - vlvulas

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

Sistema Operativo - MS-DOS


Graficos EGA 16 cores
PC-XT (1981)

8
4 gerao - VLSI

Integrao de circuitos em larga escala


Slots ISA de 16 bits
Slots PCI
Placas VGA e SVGA

PC-AT (1985) 9
5 gerao - ULSI

Integrao em muito larga


escala

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

Modem Monitor Rede


Disco
abcdefghijklmnopqrstuvxywz01234567890
14
Software / Hardware

S.O.

15
Software / Hardware

Software a parte que voc diz mal.


Hardware a parte que voc chuta.

16
Tipos de sistemas informticos

Quanto ao tamanho e capacidade


Grande porte
Supercomputadores
Mainframes
Clusters

Mdio porte
Workstations
MiniComputadores

Pequeno porte
Microcomputadores
Ultra-Microcomputadores

17
Tipos de sistemas informticos

Quanto ao nmero de utilizadores e de


tarefas
Mono utilizador
Monotarefa
Ex. PC com MS-DOS
Multitarefa
Ex. PC com Windows
Multi utilizador
Multi-posto
Servidor UNIX
Terminais
Redes de computadores
Internet

18
19
Introduo Programao / Programao e Algoritmia
Linguagens e alfabetos

Hello World

Ol Mundo

Bonjour Monde

Halo welt

20
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 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

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


23
2 gerao Assembler

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

3 gerao Linguagens de alto nvel


Uma instruo pode corresponder a um grande nmero de instrues
em assembly
Intrues em linguagem natural
write, read, print, . . .
Ler, escrever, repetir
Linguagens de propsito geral
Clculo matemtica
Gesto de documentos
Controlo
10 print"Hello World!"
Exemplos
Basic 20 goto 10
Pascal
C Basic
Cobol
Fortran
25
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 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

4 gerao Linguagens de alto nvel com aplicaes a reas


concretas
Funes muito especficas SET ECHO OFF
Gesto de bases de dados CLEAR
DO WHILE 1=1
Elaborao de relatrios @1,1 SAY "Hello, World!"
Gerao de ecrs ENDDO
Exemplos
DBASE
DBASE
SQL CREATE TABLE HELLO (HELLO CHAR(12))
CLIPPER UPDATE HELLO
SET HELLO = 'HELLO WORLD!'
SELECT * FROM HELLO

SQL
27
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).

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)

Avo(X,Y):- Mae(X,Z), ?: Avo( X,tiago)


Mae(Z,Y). X= Iria.
?: Irmao( X,Y)
X = ines
Y = antonio
Programao declarativa
(prolog)
31
32
Introduo Programao / Programao e Algoritmia
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.

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

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
38
Exemplo

Trocar uma lmpada fundida

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

Trocar uma lmpada fundida

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

Trocar uma lmpada fundida

Entrada
Algoritmo 3
Lmpada nova
Escada Colocar a escada debaixo da
lmpada
Caixote de reciclagem
Colocar a lmpada boa no bolso
Sada

Lmpada nova a funcionar Subir a escada


Operaes vlidas Retirar a lmpada fundida
Retirar a lmpada Colocar a lmpada boa
Colocar a lmpada Descer a escada
Subir a escada Colocar a lmpada fundida na
Descer a escada reciclagem
Deslocar a escada Arrumar a escada
Deitar a lmpada na reciclagem
um bom algoritmo ?
41
Caractersticas dos bons algoritmos

Interagir com o utilizador


Realiza uma tarefa til ao utilizador
Resolve o problema
Ser finito
Termina sempre e com o resultado previsto
Ser correctamente definido
Instrues claras que o utilizador consegue compreender e seguir
Ser eficaz
Resolve sempre o problema mesmo nas situaes mais problemticas
Ser eficiente
Utiliza o mnimo de recursos possvel

42
um bom algoritmo ?

Interagir com o utilizador Algoritmo 3


Colocar a escada debaixo da
Ser finito

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

Situao inicial Situao final

50
Algoritmos
Construa um algoritmo que permita fazer a travessia de
6 sapos

Situao inicial Situao final

Construa um algoritmo que permita fazer a travessia de


qualquer numero par de sapos

51

Vous aimerez peut-être aussi