Вы находитесь на странице: 1из 27

Algoritmos

Definic
ao

O que e?

Algoritmo e uma receita para a solucao de um problema.


Todo algoritmo tem:
entrada (objetos de consumo);
objetos de apoio (atores, executores);
sada (objetos produzidos);
objeto controlador do processo (receita).

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

1 / 27

Algoritmos

Definic
ao

Um Exemplo: o robo que faz cafe da manha


Problema: fazer um cafe da manha com um copo de suco de laranja, um
pao com margarina, tres torradas com geleia e uma maca.
Entrada (objetos de consumo): um copo, 3 laranjas, um pao, margarina,
tres torradas, geleia, uma maca e uma bandeja.
Objetos de apoio (atores, executores): rob
o, faca e expremedor.
Sada (objetos produzidos): cafe da manha com um copo de suco de
laranja, um pao com margarina, tres torradas com geleia e uma maca,
(entregue em uma bandeja, na sua cama).
Objeto controlador do processo (receita): Algoritmo.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

2 / 27

Algoritmos

Exemplos

Outro Exemplo: caculo do MDC

Um algoritmo mais proximo do que faremos durante esse semestre:


Problema: encontrar o maior divisor comum (M) de dois n
umeros inteiros
positivos dados N1 e N2 .

ideia????

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

3 / 27

Algoritmos

Exemplos

Outro Exemplo: calculo do MDC


k=2
M=1
Enquanto N1 6= 1 e N2 6= 1 faca
Se N1 e divisvel por k e N2 e divisvel por k entao
N1 = N1 /k
N2 = N2 /k
M =M k
Senao
Se N1 e divisvel por k entao
N1 = N1 /k
Se N2 e divisvel por k entao
N2 = N2 /k
Se N1 nao e divisvel por k e N2 nao e divisvel por k entao
k =k +1
A resposta e M.
S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

4 / 27

Algoritmos

Exemplos

Outro exemplo: calculo do MDC

Entrada: dois n
umeros inteiros positivos (N1 e N2 ).
Sada: um n
umero inteiro M, que e o maior divisor comum de N1 e N2 .
Apoio, executores: papel, lapis, borracha e humano.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

5 / 27

Algoritmos

Exemplos

Outro Exemplo: Encontrar o Maior

Problema: encontrar o maior de tres n


umeros inteiros positivos dados N1 ,
N2 e N3 .
Entrada: tres n
umeros inteiros positivos (N1 , N2 e N3 ).
Sada: um n
umero inteiro M, que e o maior dos tres n
umeros N1 , N2 e N3 .

ideia????

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

6 / 27

Algoritmos

Exemplos

Outro Exemplo: Trocar X e Y sem auxlio

Problema: Trocar dois n


umeros inteiros posisitivos X e Y que estao na
memoria do computador (nos enderecos X e Y ), de lugar, sem usar mais
nenhum espaco de memoria.
Entrada: dois n
umeros inteiros positivos (X e Y ).
Sada: os mesmo X e Y , mas com valores trocados.

ideia????

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

7 / 27

Algoritmos

Exemplos

Outro Exemplo: Sequencia de Fibonacci


Problema: Encontrar o n-esimo n
umero da seq
uencia de Fibonacci, dado
um inteiro positivo N.
Entrada: um inteiro positivo N.
Sada: um n
umero inteiro F , que e o n
umero na posicao N da seq
uencia
de Fibonacci.
Seq
uencia de Fibonacci: 0 1 1 2 3 5 8 13 21 34 55 89 . . .

ideia????

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

8 / 27

Algoritmos

Caracterizac
ao

O que Caracteriza um Algoritmo?

O algoritmo e um texto finito (uma receita).

O texto e composto de instruc


oes que sao elementares para o
executor.

O texto e uma seq


uencia de raciocnio passo-a-passo, e metodico.

Ao executar, partindo de dados validos, deve sempre terminar.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

9 / 27

Algoritmos

Algoritmos em Computac
ao

Na Computacao

Algoritmo: programa, software.


Executores, apoio: hardware (computador, mem
oria, impressora, monitor,
teclado...)
Entrada: dados recebidos pelo mouse, teclado, sensores...
Sada: resultados que aparecem no monitor, impressora...

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

10 / 27

Algoritmos

Algoritmos em Computac
ao

Para que usar computadores?

O motivo e o mesmo de se usar rob


os:
ha tarefas muito repetitivas e trabalhosas;
ha tarefas que um humano nao pode executar (por falta de memoria,
de forca...).
Computadores fazem rapidamente um grande n
umero de caculos, grande
n
umero de comparacoes e tem uma mem
oria muito melhor que a nossa.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

11 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

MEMRIA
SECUNDRIA

MEMRIA
PRINCIPAL

UNIDADES
DE
ENTRADA

S. M. Almeida (sheila@ic.unicamp.br) (IC)

CPU
ULA

Algoritmos e Computadores

UNIDADES
DE SADA

7 de agosto de 2007

12 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?
A linguagem nativa do computador e codificada de forma binaria:
computadores so entendem 0 e 1.
Por que?
Porque sao feitos de circuitos digitais e esses circuitos usam nveis de
tensao (ou corrente) eletrica para fazer seus caculos e comparacoes: nvel
alto=1, nvel baixo=0.
Para a logica:

1 = verdadeiro

0 = falso.

Como toda a representacao e feita utilizando-se um dgito para o qual so


existem dois valores possveis, chamamos esses dgitos de binarios. Cada
dgito binario e chamado de bit (Binary digit).
S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

13 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?
Computadores usam conjuntos de 8, 16 ou 32 bits para guardar
informacoes. Esses conjuntos sao chamados palavra.
Unidades de medida:
1 kilobit (1 kb) = 1024 bits
1 megabit (1Mb) = 1024 kilobits
1 gigabit (1Gb) = 1024 megabits
Uma conjunto de 8 bits e chamado de byte.
1 kilobyte (1 kB) = 1024 bytes = 1024x8 bits
1 megabyte (1 MB) = 1024 kilobytes
1 gigabyte (1GB) = 1024 megabytes
S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

14 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

As instrucoes (acoes) elementares em um computador sao muito


primitivas.
Computadores lidam apenas com pequenas cadeias de bits e fazem
operacoes muito simples sobre essas cadeias:
armazenar cadeias de bits na mem
oria
recuperar cadeias de bits da mem
oria
trocar o valor de um bit dependendo do valor de outro bit.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

15 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Imagine-se escrevendo os seus algoritmos para o


computador utilizando apenas 0 e 1!!!

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

16 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Que tal escrever em portugues?

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

17 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

A lgua humana e muito ambgua:

Joao viu a menina com o bin


oculo.

quem estava com o binoculo?

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

18 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Para escrever algoritmos para computadores, precisamos de uma


linguagem sem ambig
uidades (precisa).

LINGUAGEM DE PROGRAMAC
AO!!!

C, C++, Java, FORTRAN, Lisp, Prolog...


No nosso curso, usaremos C.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

19 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

...
Z = N;
P = 1;
while(Z > 0)do
{
P = 2 P;
Z = Z 1;
}
...

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

20 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Algoritmos escritos em linguagem de programacao sao chamados fonte ou


c
odigo fonte.
Como computadores so entendem a representacao binaria, os algoritmos
escritos em linguagens de programacao precisam ser traduzidos para a
representacao binaria.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

21 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Problema: este e um processo trabalhoso, entediante e sujeito a erros.


Solucao: escrever um programa para fazer a traducao!

Esse programa e um compilador.

O texto gerado pelo compilador e chamado de executavel ou codigo


executavel ou codigo de maquina.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

22 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

correo
cdigo
fonte

algoritmo
PROBLEMA

idia

ERRO

programao

correo

compilao

EXECUO

cdigo
executvel
execuo

SOLUO

ERRO
COMPILAO

TIMO!!!

TIMO!!!
S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

23 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

Para cada linguagem de programacao e para cada tipo de computador e


preciso um compilador diferente.
Algumas linguagens nao usam compilador, elas possuem um interpretador,
que transforma o codigo fonte em linguagem de maquina durante a
execucao do programa. Ex: Lisp, Prolog, BASIC...

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

24 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?

As linguagens de programacao podem ser de alto nvel ou baixo nvel.


Linguagens de alto nvel sao mais pr
oximas da lngua humana. Exemplo:
C, C++, Java, Lisp...
Linguagens de baixo nvel sao baseadas em mnem
onicos: cada comando
possui um equivalente em c
odigo binario. A traducao para codigo de
maquina e muito mais facil. Exemplo: Assembly.
Processadores diferentes usam assembly diferente.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

25 / 27

Algoritmos

Algoritmos em Computac
ao

Como funcionam?
Para gerenciar a complexidade das tarefas que precisam ser executadas,
existe uma hierarquia de func
oes.

sistemas de aplicao:
office, jogos, antivirus
navegador de internet...
shell

compiladores

editores

sistema operacional
HARDWARE
S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

26 / 27

Algoritmos

Algoritmos em Computac
ao

O que faremos?

Usuarios: pessoas que utilizam os programas de aplicacao.


Nesse curso, nao seremos mais apenas usuarios, vamos construir programas
de aplicacao, usando editores, linguagens de programacao e compiladores.

S. M. Almeida (sheila@ic.unicamp.br) (IC)

Algoritmos e Computadores

7 de agosto de 2007

27 / 27

Вам также может понравиться