33

Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

  • Upload
    others

  • View
    17

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Introdução a Algoritmos

Profa. Sheila Morais de Almeida

DAINF-UTFPR-PG

março - 2019

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 1 / 33

Page 2: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

O que é Algoritmo?

Algoritmo

Informalmente: Algoritmo é uma sequência de instruções que devem serexecutadas para se resolver um problema.

Todo algoritmo tem:

• entrada (informações necessárias para a solução do problema);

• atores ou executores (indivíduos, máquinas ou instrumentos queexecutam as instruções);

• saída (solução do problema);

• e uma sequência de instruções.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 2 / 33

Page 3: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Exemplo

Problema: fazer um café da manhã com um copo de suco de laranja, umpão com manteiga, três torradas com geléia e uma maçã.

Entrada: 3 laranjas, um pão e manteiga.

Atores ou executores: copo, faca, expremedor e bandeja.

Saída: café da manhã com um copo de suco de laranja e um pão commanteiga, entregues em uma bandeja.

Conjunto de Instruções?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 3 / 33

Page 4: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Exemplo

Conjunto de Instruções:

• Pegue a faca, o expremedor e as três laranjas.

• Ligue o expremedor na tomada.

• Para cada laranja faça:• use a faca para cortar a laranja ao meio;

• Para cada metade da laranja faça:

• use o expremedor para retirar o suco da laranja.

• Desligue o expremedor da tomada.

• Pegue o copo.

• Coloque o suco de laranja que está no expremedor no copo, até enchero copo.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 4 / 33

Page 5: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Exemplo

• Coloque o copo com suco de laranja na bandeja.

• Lave a faca.

• Pegue o pão, a manteiga e a fava.

• Use a faca para cortar o pão ao meio.

• Use a faca para passar manteiga em cada metade do pão.

• Junte as duas metades do pão, como era antes de ser cortado.

• Coloque o pão na bandeija.

• Lave a faca e o limpe o expremedor.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 5 / 33

Page 6: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outros Exemplos

Você consegue pensar em outros casos onde a execução de um conjunto deinstruções leva a solução de um problema?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 6 / 33

Page 7: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outros Exemplos

Você consegue pensar em outros casos onde a execução de um conjunto deinstruções leva a solução de um problema?

• Manual de instruções para montar um móvel;

• Receita culinária;

• Explicar para alguém como se chega ao Shopping.

Todos esses exemplos são algoritmos.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 7 / 33

Page 8: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outros Exemplos

Você consegue pensar em outros casos onde a execução de um conjunto deinstruções leva a solução de um problema?

• Manual de instruções para montar um móvel;

• Receita culinária;

• Explicar para alguém como se chega ao Shopping.

Todos esses exemplos são algoritmos.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 8 / 33

Page 9: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outros Exemplos

Importante

A ordem das instruções precisa ser obedecida.

Se as instruções forem executadas em uma ordem diferente daquela em queforam transmitidas

ou

se o executor deixar de realizar alguma das instruções,

o resultado poderá não ser o esperado!

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 9 / 33

Page 10: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Algoritmos: um pouco de história

Anos 600: criação do sistema numérico decimal.

• Tornou-se mais fácil realizar cálculos.

• Propagou-se principalmente com um livro escrito por al-Khwarizmi,nos anos 800 em Bagdá.

O livro apresentou métodos para realizar somas, multiplicações,divisões, calcular raízes quadradas e dígitos do número π.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 10 / 33

Page 11: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Algoritmos

• Apresentou a primeira solução sistemática das equações lineares equadráticas.

• É considerado o fundador da Álgebra.

• No século XII, seu livro foi traduzido para latim e seus métodos sepropagaram no Mundo Ocidental.

• Escreveu sobre astronomia e astrologia.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 11 / 33

Page 12: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Algoritmos

Os métodos apresentados por al-Khawarizmi para manipulação algébrica(soma, multiplicação, divisão, etc.) são

• precisos,

• mecânicos,

• e�cientes

• e corretos.

Os métodos de al-Khawarizmi são algoritmos.

Seu nome deu origem ao termo.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 12 / 33

Page 13: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outro exemplo

Um algoritmo mais próximo do que faremos durante esse semestre:

Problema: calcular o maior divisor comum (M) de dois números inteirospositivos dados N1 e N2.

idéia????

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 13 / 33

Page 14: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outro Exemplo: cálculo do MDC

M = 1k = 2Enquanto N1 6= 1 ou N2 6= 1 faça

Se N1 é divisível por k e N2 é divisível por k entãoN1 = N1/kN2 = N2/kM = M ∗ k

SenãoSe N1 é divisível por k então

N1 = N1/kSe N2 é divisível por k então

N2 = N2/kSe N1 não é divisível por k e N2 não é divisível por k então

k = k + 1A resposta é M.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 14 / 33

Page 15: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outro exemplo: cálculo do MDC

Entrada: dois números inteiros positivos (N1 e N2).

Saída: um número inteiro M, que é o maior divisor comum de N1 e N2.

Executores: papel, lápis, borracha e humano.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 15 / 33

Page 16: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Outro Exemplo: Encontrar o Maior de Três Números

Problema: encontrar o maior de três números inteiros positivos dados N1,N2 e N3.

Entrada: três números inteiros positivos (N1, N2 e N3).

Saída: um número inteiro M, que é o maior dos três números N1, N2 e N3.

idéia????

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 16 / 33

Page 17: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

O que Caracteriza um Algoritmo?

1 O algoritmo é um texto �nito (uma receita).

2 O texto é composto de instruções que são elementares para o executor.

3 O texto é uma seqüência de raciocínio passo-a-passo, é metódico.

4 Ao executar, partindo de dados válidos, deve sempre terminar.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 17 / 33

Page 18: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Na Computação

Algoritmo: programa, software.

Executores: hardware (computador, memória, impressora, monitor,teclado...)

Entrada: dados recebidos pelo mouse, teclado, sensores...

Saída: resultados que aparecem no monitor, impressora...

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 18 / 33

Page 19: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Para que usar computadores?

• Há tarefas muito repetitivas e trabalhosas.

• Há tarefas que um humano não pode executar(por falta de memória, de força...).

Computadores fazem rapidamente um grande número de cáculos, grandenúmero de comparações e tem uma memória muito melhor que a nossa.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 19 / 33

Page 20: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

A linguagem nativa do computador é codi�cada de forma binária:computadores só entendem �0� e �1�.

Por que?

Porque são feitos de circuitos digitais e esses circuitos usam níveis detensão (ou corrente) elétrica para fazer seus cáculos e comparações: nívelalto = 1, nível baixo = 0.

Para a lógica: 1 = verdadeiro 0 = falso.

Como toda a representação é feita utilizando-se um dígito para o qual sóexistem dois valores possíveis, chamamos esses dígitos de binários. Cadadígito binário é chamado de bit (Binary digit).

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 20 / 33

Page 21: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

O computador precisa de 8 bits para poder representar uma única letra ounúmero. Sem 8 bits, não haveria um número su�ciente de cadeias bináriasdiferentes para representar todos os nossos símbolos.

Unidades de medida:

1 kilobit (1 kb) = 1024 bits1 megabit (1Mb) = 1024 kilobits1 gigabit (1Gb) = 1024 megabits

Uma conjunto de 8 bits é chamado de byte.

1 kilobyte (1 kB) = 1024 bytes = 1024x8 bits1 megabyte (1 MB) = 1024 kilobytes1 gigabyte (1GB) = 1024 megabytes

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 21 / 33

Page 22: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

As instruções (ações) elementares em um computador são muito primitivas.

Computadores lidam apenas com pequenas cadeias de bits e fazemoperações muito simples sobre essas cadeias:

• armazenar cadeias de bits na memória

• recuperar cadeias de bits da memória

• somar duas cadeias de bits.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 22 / 33

Page 23: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 23 / 33

Page 24: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Imagine-se escrevendo os seus algoritmos para ocomputador utilizando apenas �0� e �1�!!!

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 24 / 33

Page 25: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Que tal escrever em português?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 25 / 33

Page 26: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

A lígua humana é muito ambígua:

João viu a menina com o binóculo.

quem estava com o binóculo?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 26 / 33

Page 27: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Para escrever algoritmos para computadores, precisamos de uma linguagemsem ambigüidades (precisa).

Uma LINGUAGEM DE PROGRAMAÇÃO!!!

C, C++, Java, FORTRAN, Lisp, Prolog...No nosso curso, usaremos C.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 27 / 33

Page 28: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

...Z = N;P = 1;if(Z > 0){

P = 2 ∗ P ;Z = Z − 1;

}...

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 28 / 33

Page 29: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Algoritmos escritos em linguagem de programação são chamados fonte oucódigo fonte.

Como computadores só �entendem� a representação binária, os algoritmosescritos em linguagens de programação precisam ser traduzidos para arepresentação binária.

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

Solução: escrever um programa para fazer a tradução!

Esse programa é um compilador.

O texto gerado pelo compilador é chamado de executável ou códigoexecutável.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 29 / 33

Page 30: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 30 / 33

Page 31: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Para cada linguagem de programação e para cada tipo de computador épreciso um compilador diferente.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 31 / 33

Page 32: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

Como funcionam?

Para gerenciar a complexidade das tarefas que precisam ser executadas,existe uma hierarquia de funções.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 32 / 33

Page 33: Introdução a Algoritmos - Sheila Almeida · 2019-03-29 · Algoritmos escritos em linguagem de programação são chamadosfonteou código fonte. Como computadores só entendem a

O que faremos?

Usuários: pessoas que utilizam os sistemas de aplicação.

Nesse curso, não seremos mais apenas usuários, vamos construir aplicativos.Para tanto, usaremos editores, linguagens de programação e compiladores.

Sheila Almeida (DAINF-UTFPR-PG) Introdução a Algoritmos março - 2019 33 / 33