You are on page 1of 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

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.

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)

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)

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 Disco Rede

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 Ex. PC com Windows

Multitarefa

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
2 gerao Assembler
Mneumnicas do instruction
dosseg .model small .stack 100h .data hello_message db 'Hello, World!','$' .code main proc mov mov mov mov int mov int endp main

set do processador
Assemblador Programa que traduz o cdigo assembly para linguagem mquina

Os Programas funcionam

ax,@data ds,ax ah,9 dx,offset hello_message 21h ax,4C00h 21h

apenas num tipo processador


Mov > 00001100
int -> 10001101

Desenvolvimento de

programas muito difcil e demorado

main end

Assembly para o IBM-PC


22

2 gerao Assembler
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

printf:

pea move.w trap addq.l bra dc.b

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


World !",0

text:

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

Exemplos Basic

10 print"Hello World!" 20 goto 10


Basic

Pascal C 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 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
26

4 Gerao de Linguagens de aplicao


4 gerao Linguagens de alto nvel com aplicaes a reas

concretas
Funes muito especficas Gesto de bases de dados Elaborao de relatrios Gerao de ecrs Exemplos DBASE SQL CLIPPER
SET ECHO OFF CLEAR DO WHILE 1=1 @1,1 SAY "Hello, World!" ENDDO

DBASE
CREATE TABLE HELLO (HELLO CHAR(12)) 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).

Prolog

28

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[]) { double raio; printf( raio do crculo :);

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

Clculo do Permetro do crculo

printf(%f, 3.14* raio);


} }

Programao imperativa Linguagem C

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


30

Exemplos imperativa versus declarativa


Mae(iria, ines). Mae(iria, antonio). Mae(ines, tiago). Irmao(X,Y) :- Mae(Z,X) Mae(Z,Y)
Avo(X,Y):- Mae(X,Z), Mae(Z,Y). ?: Avo( X,tiago) X= Iria. ?: Irmao( X,Y) X = ines Y = antonio

Relaes familiares

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. 2.

Misturar os ingredintes 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
Devolver informao

Executar instrues
Fazer operaes aritmticas Fazer operaes lgicas

Escolha entre vrias instrues.


Repetir um conjunto de instrues

Um algoritmo computacional uma sequencia de passos to bem definida que at um computador o 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 Escada

Algoritmo 2

Sada
Lmpada nova a funcionar

Operaes vlidas

Subir a escada Retirar a lmpada fundida Colocar a lmpada boa 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

Sada
Lmpada nova a funcionar Lmpada fundida na reciclagem

Algoritmo 2

Operaes vlidas

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

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

40

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 ?
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 Ser finito Ser correctamente

Algoritmo 3

definido Ser eficaz Ser eficiente

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

43

Algoritmo ou algoritmos ?

Contrua um algoritmo que permita subir uma escada


1. Subir os degraus

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

Suba um degrau Suba um degrau Suba um degrau Suba um degrau Suba um degrau Suba um degrau ....
44

Algoritmo ou algoritmos ?
1. 2. 3. 4. 1. 2. 3. 4. Inicio Suba um degrau Se no chegou ao topo v para 2 Fim Inicio Enquanto no chegar ao topo Suba um degrau Fim Inicio

Situao inicial: Pessoa no cho Situao final: Pessoa no topo Instrues vlidas: Subir um degrau Verificar se est no topo da escada

Sim
Fim

Topo da escada ?

No
Subir um degrau
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 Qual a situao inicial O que necessrio para resolver o problema Qual a situao final Que resultados devem ser apresentados Definir quais as instrues disponveis/necessrias Organizar as instrues de forma a resolver o problema

Definir quais so os dados que entram

Definir quais so os dados que saem


Definir o Algoritmo

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

You might also like