Algoritmo I Aula 001. Rogério Rodrigues L. Costa Bacharel em Sistemas de Informação – UNIUBE...

36
Algoritmo I Algoritmo I Aula 001 Aula 001

Transcript of Algoritmo I Aula 001. Rogério Rodrigues L. Costa Bacharel em Sistemas de Informação – UNIUBE...

Page 1: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Algoritmo IAlgoritmo I

Aula 001Aula 001

Page 2: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Rogério Rodrigues L. CostaRogério Rodrigues L. Costa

Bacharel em Sistemas de Informação – UNIUBE - 2004Bacharel em Sistemas de Informação – UNIUBE - 2004

Especialista em Banco de Dados – UNITRI – 2006Especialista em Banco de Dados – UNITRI – 2006

Atividades:Atividades:

Analista de Banco de Dados - CODIUBAnalista de Banco de Dados - CODIUB

ProfessorProfessor

Formação:Formação:

Nome:Nome:

Page 3: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

EmentaEmenta xxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx.

Page 4: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

BibliografiaBibliografia Básica:Básica:

xxxxxx.xxxxxx.

xxxxxx.xxxxxx.

Complementar:Complementar:

xxxxx.xxxxx.

xxxxx.xxxxx.

Page 5: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Observações GeraisObservações Gerais Sistema de Avaliação da Instituição:Sistema de Avaliação da Instituição:

40,0 pontos distribuídos no semestre:40,0 pontos distribuídos no semestre:

20,0 pontos no 1° bimestre (P1B)20,0 pontos no 1° bimestre (P1B)

20,0 pontos no 2° bimestre (P2B)20,0 pontos no 2° bimestre (P2B)

Cálculo da Média Final (MF):Cálculo da Média Final (MF):

MF = ( P1B + P2B ) / 4 .MF = ( P1B + P2B ) / 4 .

Critérios de Aprovação:Critérios de Aprovação:

MF <= 4 MF <= 4 Reprovado Reprovado

MF > 4 e < 7 MF > 4 e < 7 Avaliação Substitutiva* Avaliação Substitutiva*

MF >= 7 MF >= 7 Aprovado Aprovado

* A Avaliação Substitutiva terá o valor de 10 pontos sendo que a nota obtida com a * A Avaliação Substitutiva terá o valor de 10 pontos sendo que a nota obtida com a

avaliação irá substituir integralmente a MF, sendo necessário 7 para aprovação.avaliação irá substituir integralmente a MF, sendo necessário 7 para aprovação.

Page 6: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Observações GeraisObservações Gerais Sistema de Avaliação do Professor (bimestre):Sistema de Avaliação do Professor (bimestre):

Trabalhos / Participação Trabalhos / Participação 05 pts 05 pts

Avaliações Avaliações 05 pts e 10 pts 05 pts e 10 pts

Freqüência:Freqüência: Duas chamadas, sendo a primeira 10 minutos após o início da Duas chamadas, sendo a primeira 10 minutos após o início da

aula e a segunda a qualquer momento da segunda aula.aula e a segunda a qualquer momento da segunda aula.

Não ponho presença para aluno ausente.Não ponho presença para aluno ausente.

Para aprovação é necessário pelo menos 75% de freqüência, Para aprovação é necessário pelo menos 75% de freqüência,

alem da nota bimestral.alem da nota bimestral.

Não controlo presença de aluno, não sei quantas faltas.Não controlo presença de aluno, não sei quantas faltas.

Page 7: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Visão geralVisão geral

Um programa de computador é um produto resultante da atividade intelectual

de um programador. Que faz uso de uma linguagem de computador como

(Pascal, Java, Delphi, PHP, Visual Basic, etc..) para representar seu algoritmo

que foi construído em uma seqüência lógica.

Essa atividade, por sua vez, depende de um treinamento prévio em:

Abstração e

Modelagem de problemas.

Um programa de computador ou simplesmente software é representado pelas

instruções e dados que algum ser humano definiu e que ao serem executados

por alguma máquina cumprem algum objetivo.

Page 8: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Lógica de ProgramaçãoLógica de ProgramaçãoLógica de programação nada mais é do que uma forma de se escrever um

programa de computador com uma linguagem de fácil entendimento para nós

seres humanos. A lógica de programação é necessária para todas as pessoas

que desejam trabalhar com desenvolvimento de sistemas e programas pois

permite definir uma seqüência lógica para o desenvolvimento de um software.

Page 9: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

AlgoritmoAlgoritmoOs algoritmos fazem parte do dia-a-dia das pessoas:

As instruções para o uso de medicamentos.

As indicações de como montar um aparelho.

Uma receita de culinária.

...

Um algoritmo pode ser visto como uma seqüência de ações executáveis para a

obtenção de uma solução para um determinado tipo de problema.

Segundo Dijkstra (1971), um algoritmo corresponde a uma descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações.

Exemplo:Ao executarmos a operação A + B percebemos um padrão de comportamento, mesmo que a operação seja realizada para valores diferentes de A e B.

Page 10: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Então um algoritmo especifica com clareza e de forma correta as instruções

que um software deverá conter para que, ao ser executado, forneça

resultados esperados.

Porem, para isso devemos:

1. Identificar qual é o problema a ser resolvido objetivo

2. Obter todas as informações necessárias a sua execução entradas

3. Extrair as informações a respeito desse problema e relacioná-las com o

conhecimento atual que se tem do assunto em questão como

resolver o problema (processamento)

4. Descrever claramente e em uma seqüência lógica, os passos para se

chegar à sua solução algoritmo

Page 11: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Existe um algoritmo embutido em toda tarefa, independentemente de ela ser

relacionada a um programa de computador.

Em nosso cotidiano, executamos toda e qualquer tarefa utilizando algoritmos,

mesmo não percebendo isso.

Comer.

Respirar.

Ir para a escola.

Dirigir um automóvel.

Resolver uma prova.

Trocar uma lâmpada.

Fazer um bolo.

etc.

Aplicabilidade dos algoritmosAplicabilidade dos algoritmos

Page 12: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Exemplo:

Receita para se preparar um sorvete de chocolate:

Ingredientes

1 tablete de chocolate meio amargo.

1 lata de leite condensado.

A mesma medida da lata com leite.

Raspas de chocolate ou chocolate granulado.

Page 13: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Modo de preparo

Inicio

1. Ponha o chocolate em uma tigela refratária.

2. Deixe a tigela no microondas durante um minuto em potência média.

3. Tire o chocolate do forno com cuidado e mexa-o até esfriar.

4. Bata-o no liquidificador com o leite condensado e o leite.

5. Despeje tudo em uma forma de gelo e espere congelar por três horas.

6. Distribua o sorvete em taças.

7. Decore com as raspas ou com o chocolate granulado.

8. Sirva gelado.

Fim

Page 14: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Exemplo:

Outro exemplo, agora dentro do domínio computacional, é o algoritmo de

Euclides (definido entre 400 – 300 a.C.) para a determinação do máximo

divisor comum entre dois números inteiros X e Y.

Inicio

Pedir para o usuário fornecer valor inteiro para X

Pedir para o usuário fornecer valor inteiro para Y

Enquanto Y ≠ 0 Faça

R o resto da divisão entre X e Y

X Y

Y R

Fim Enquanto

Exibir para o usuário o MDC procurado e que está em X

Fim

Page 15: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Exemplo:

Considere o problema das Torres de Hanoi. A proposição do problema é a

seguinte: inicialmente têm-se três hastes, A, B e C, e na haste A

repousam três anéis de diâmetros diferentes, em ordem decrescente por

diâmetro.

O objetivo é transferir os três anéis da haste. A para B, usando C se

necessário. As regras de movimento são:

Deve-se mover um único anel por vez.

Um anel de diâmetro maior nunca pode repousar sobre algum outro de diâmetro menor.

Page 16: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Resolução do problema das Torres de Hanoi:

Inicio

1. Mover um anel da haste A para a haste B

2. Mover um anel da haste A para a haste C

3. Mover um anel da haste B para a haste C

4. Mover um anel da haste A para a haste B

5. Mover um anel da haste C para a haste A

6. Mover um anel da haste C para a haste B

7. Mover um anel da haste A para a haste B

Fim

Page 17: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

A formalização de um algoritmo

A tarefa de especificar os algoritmos para representar um programa

consiste em detalhar os dados que serão processados pelo programa e as

instruções que vão operar sobre esses dados.

Essa especificação pode ser feita livremente, mas é importante formalizar

a descrição dos algoritmos segundo alguma convenção, para que todas as

pessoas envolvidas na sua criação possam entendê-lo da mesma forma.

Conjunto de regras:

Sintaxe comandos que devem ser utilizados e sua forma de utilização.

Semântica permite interpretar o algoritmo. É o significado dos comandos e/ou símbolos utilizados.

Page 18: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Exemplo:

Deseja-se especificar um algoritmo para calcular e exibir na tela a área de

um triângulo (s) de base b e altura h, em que os valores de b e de h são

fornecidos pelo usuário via teclado.

Page 19: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Resolução informal do problema da área do triângulo:

Inicio

1. Pedir para o usuário digitar os valores de b e de h

2. Calcular a área s usando a formula s = (b x h) / 2

3. Exibir o valor de s na tela

Fim

Page 20: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Resolução mais formal do problema da área do triângulo: (fluxograma)

Inicio

b, h

S (b * h) / 2

s

Fim

Page 21: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Símbolos do fluxograma

Terminador Representa a saída para ou entrada do ambiente externo

por exemplo, início ou final de programa, uso externo e origem ou destino

de dados.

Entrada Manual Representa os dados, de qualquer tipo de mídia que

sejam fornecidos, manualmente, em tempo de processamento, por

exemplo, teclado, mouse.

Processo Representa qualquer tipo de processo, processamento de

função, por exemplo, executando uma operação de soma de dois valores.

Exibição Representa os dados, cuja mídia seja de qualquer tipo, na

qual a informação seja mostrada para o usuário, tais como monitores de

vídeo.

Decisão Representa uma decisão ou um desvio tendo uma entrada;

porém pode ter uma série de saídas alternativas, uma única das quais

deverá ser ativada como conseqüência da avaliação das condições

internas ao símbolo (Sim / Não).

Page 22: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Símbolos do fluxograma

Documentos Representa a impressão de resultados.

Conector de página Representa a continuação de um fluxograma.

Seta Representa a direção do fluxo de instruções.

Page 23: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Um dia de sol

InícioInício

AcordarAcordar

TomarTomarCaféCafé

Sol?Sol?

11

22NãoNão

SimSim

11

Ir à praiaIr à praia

22

Ler jornalLer jornal

Ir ao cinemaIr ao cinema

JantarJantar

FimFim

Page 24: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Resolução em Portugol do problema da área do triângulo:

inicio

leia(b, h)

s (b * h) / 2

mostre(s)

fim

A sintaxe é dada pelos comandos dessa pseudolinguagem. A regra geral para

se escrever um algoritmo nessa representação determina que:

O código deve ser delimitado pelas palavras início e fim.

Deve haver um recuo (endentação) para separar seqüências de comandos.

O comando leia significa uma solicitação ao usuário para entrar com a

informação desejada que será armazenada nas variáveis b e h.

O comando mostre exibe a informação processada na tela para o usuário.

A execução do código deve respeitar a seqüência dos comandos digitados.

Page 25: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

A importância da formalização de um algoritmo, sua sintaxe e semântica podem

ser resumidos assim:

Evitar ambigüidades, pois definem regras sintáticas e semânticas que sempre são interpretadas da mesma forma.

Impedir a criação de símbolos ou comandos desnecessários na criação de um algoritmo: representam um conjunto mínimo de regras que pode ser utilizado em qualquer algoritmo.

Permitir uma aproximação com as regras de uma linguagem de programação, fazendo, assim, uma fácil tradução de um algoritmo para sua implementação no computador.

Page 26: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Não existe em computação uma “formula mágica” para resolver problemas.

Porem podem ser utilizadas algumas dicas:

1. Ao se deparar com um problema novo, tente entendê-lo. Para auxiliar,

pense no seguinte:

O que se deve descobrir ou calcular? Qual é o objetivo?

Quais são os dados disponíveis? São suficientes?

Quais as condições necessárias e suficientes para resolver o

problema?

Faça um esboço informal de como ligar os dados com as condições.

Se possível, modele o problema de forma matemática.

Atenção Atenção

Page 27: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

2. Crie um plano com a solução:

Consulte sua memória e verifique se você já resolveu algum problema

similar. A sua solução pode ser aproveitada por:

Analogia quando o enunciado for diferente, mas a estrutura em si

guarda similaridades;

Generalização quando se tem uma solução particular e deseja

uma solução geral.

Especialização quando se conhece alguma solução geral que

serve como base para uma em particular ou ainda uma mistura das

três técnicas anteriores.

Verifique se é necessário introduzir algum elemento novo no problema,

como um problema auxiliar.

Se o problema for muito complicado, tente quebrá-lo em partes menores e

solucionar essas partes.

É possível enxergar o problema de outra forma, de modo que seu

entendimento se torne mais simples?

Page 28: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

3. Formalize a solução:

Crie um algoritmo informal com passos que resolvam o problema.

Verifique se cada passo desse algoritmo está correto.

Escreva um algoritmo formalizado por meio de um fluxograma ou outra

técnica de representação.

Page 29: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

4. Exame dos resultados:

Teste o algoritmo com diversos dados de entrada e verifique os resultados

(teste de mesa).

Se o algoritmo não gerou resultado algum, o problema está na sua sintaxe

e nos comandos utilizados. Volte e tente encontrar o erro.

Se o algoritmo gerou resultados, estes estão corretos? Analise sua

consistência.

Se não estão corretos, alguma condição, operação ou ordem das

operações está incorreta. Volte e tente encontrar o erro.

Page 30: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

5. Otimização da solução:

É possível melhorar o algoritmo?

É possível reduzir o número de passos ou dados?

É possível conseguir uma solução ótima?

Page 31: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

ExercíciosExercícios

Page 32: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

1. Descreva como descobrir uma moeda falsa em um grupo de cinco moedas, fazendo uso de

uma balança analítica (sabe-se que a moeda falsa é mais leve que as outras). Lembre-se de

que sua descrição deve resolver o problema para qualquer situação.

2. Têm-se três garrafas não graduadas, com tamanhos diferentes, uma cheia até a boca, com

capacidade de oito litros e as outras duas vazias com capacidade de cinco e três litros

respectivamente. Deseja-se separar o conteúdo da primeira garrafa em quantidades iguais

entre as três garrafas.

3. Um caramujo está na parede de um poço a cinco metros de sua borda. Tentando sair do poço,

ele sobe três metros durante o dia, porém desce escorregando dois metros durante a noite.

Quantos dias levará para o caramujo conseguir sair do poço?

4. Um tijolo “pesa” um quilo mais meio tijolo. Quantos quilos “pesam” um tijolo e meio?

5. Você está em uma margem de um rio, com três animais: uma galinha, um cachorro e uma

raposa. Somente pode atravessar com um animal por vez e nunca deixar a raposa e o

cachorro sozinhos nem a raposa e a galinha. Descreva uma forma de conseguir atravessar os

três animais, obedecendo a essas condições.

6. José tem 1,50 m e cresce 2 centímetros por ano. Pedro tem 1,10 m e cresce 3 centímetros por

ano. Construa um algoritmo em portugol que calcule em quantos anos Pedro será maior que

José.

Page 33: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

7. Calcular a média final dos alunos da 5ª série. Os alunos realizarão quatro provas: P1, P2, P3 e

P4. Elaborar um algoritmo que calcule e mostre a média final das notas dos alunos.

8. Identifique os dados de entrada, processamento e saída no algoritmo abaixo

Receba código da peçaReceba valor da peçaReceba Quantidade de peçasCalcule o valor total da peça (Quantidade * Valor da peça)Mostre o código da peça e seu valor total

9. Faça um algoritmo para “Calcular o estoque médio de uma peça”, sendo que ESTOQUEMÉDIO

= (QUANTIDADE MÍNIMA + QUANTIDADE MÁXIMA) /2.

10. Construa um fluxograma que: Leia a cotação do dólarLeia um valor em dólaresConverta esse valor para RealMostre o resultado

11. Desenvolva um fluxograma que:

Leia 4 (quatro) númerosCalcule o quadrado para cada umSome todos eMostre o resultado

Page 34: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Rã 1 Rã 2 Rã 3

Rã 3 Rã 2 Rã 1

Como fazer para que as três rãs que estão em quatro casas nas seguintes

posições:

Fiquem assim:

Page 35: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Regras:

Somente pular para a casa da frente ou de trás se ela estiver vazia.

Pular a rã vizinha se for parar em uma casa vazia.

Este algoritmo serve para ordenar dados, e é muito utilizado em

computação.

Page 36: Algoritmo I Aula 001.  Rogério Rodrigues L. Costa  Bacharel em Sistemas de Informação – UNIUBE - 2004  Especialista em Banco de Dados – UNITRI – 2006.

Rã 1 Rã 2 Rã 3

Resolução