Você está na página 1de 43

N616 Algoritmos e Programação de Computadores

Modelo Algorítmico Construção de Algoritmos

Prof. Marcelo Sousa

1
1
  • Objetivo

  • O que é problema?

  • Lógica

  • Expressando algoritmos

Roteiro

  • Métodos para construção de algoritmos

Objetivos desta aula

Descrever o processo de solução de problemas por computador

Identificar os conceitos básicos e a metodologia para a construção de algoritmos.

Aplicar metodologia de projeto top-down para desenvolver um algoritmo que resolva um

problema

Solução de problemas

O ato de buscar uma solução para um problema ou questão não resolvida.

Solução de problemas • O ato de buscar uma solução para um problema ou questão não

Solução de problemas

Perguntas:

Você já deu instruções para uma pessoa ir de um determinado local para outro?

Você já ensinou a um amigo como fazer uma determinada tarefa? Por exemplo, como

trocar o pneu de um carro?

Você já seguiu uma receita? Por exemplo, para preparar um bolo?

Solução de problemas

Se você respondeu sim para uma destas perguntas, você já está familiarizado com

programação. Só não percebeu ainda!

Exemplos do dia-a-dia

Os exemplos a seguir mostram os conceitos fundamentais de solução de problemas e de programação.

Se quisermos ensinar a alguém como preparar um sanduíche, quais os passos necessários?

Exemplos do dia-a-dia

Para ensinar a alguém como preparar um sanduíche, podemos descrever os seguintes passos:

Pegue os ingredientes: fatias de pão, queijo e presunto Coloque uma fatia de pão em um prato Coloque uma fatia de presunto sobre a fatia de pão Coloque uma fatia de queijo sobre o presunto Coloque a segunda fatia de pão sobre o queijo

Pronto!

Exemplos do dia-a-dia

O processo de preparar um sanduíche foi descrito na forma de uma sequência de passos, seguidos em uma determinada ordem, um após o outro.

Exemplos do dia-a-dia

Você já trocou uma lâmpada em casa? Quais os passos necessários para realizer a troca de uma lâmpada queimada?

Exemplos do dia-a-dia • Você já trocou uma lâmpada em casa? • Quais os passos necessários

Exemplos do dia-a-dia

Para ensinar a alguém como trocar uma lâmpada:

Se você não tem uma lâmpada nova, compre uma. Desligue a alimentação de energia. Repita: gire a lâmpada no sentido anti-horário, até removê-la. Jogue fora a lâmpada queimada. Coloque a nova lâmpada no soquete.

Repita: gire a lâmpada no sentido horário, até que ela esteja apertada no soquete.

Ligue a alimentação.

Exemplos do dia-a-dia

O processo de troca da lâmpada também foi mostrado em uma sequência de passos ordenados, que também apresentaram uma decisão e duas repetições.

Descrevemos o processo para fazer uma sanduíche e a mudança de uma lâmpada como um procedimento passo a passo. Esta sequência ordenada de etapas é chamada de algoritmo.

Sequência, decisões e repetições são construções

básicas com as quais construímos nossos algoritmos e,

por fim, nossos programas.

Exemplos do dia-a-dia

Algoritmo para preparer um bolo de coco:

Conseguir todos os ingredientes

Colocar a margarina, açúcar, ovos e o leite em um liquidificador

Misturar bem

Pegar uma tigela

Colocar a farinha, coco e fermento na tigela

Misturar com uma colher

Adicionar a massa do liquidificador

Misturar com uma colher até encorpar

Untar a forma com margarina e farinha de trigo

Despejar a massa do bolo

Levar ao forno pré-aquecido

Assar durante 40 minutos ou até dourar

Enfiar palito e retirar

Se sair limpo, bolo OK. Senão, bolo solou

Desenformar bolo

Exemplos do dia-a-dia

Algoritmo para sacar dinheiro no caixa eletrônico

Ir até o caixa eletrônico

Colocar o cartão

Digitar a senha

Solicitar o saldo

Se o saldo for maior ou igual à quantia desejada, sacar a quantia desejada; caso contrário sacar o valor do saldo

Retirar dinheiro

Retirar cartão

– – Sair do caixa eletrônico

Algoritmos

Algoritmos descrevem o procedimento para a realização de uma tarefa ou resolver um problema de forma passo-a-passo. Eles podem incluir sequências, decisões e iterações, assim como mostrado nos dois exemplos anteriores.

Muitas vezes, existe mais de um algoritmo capaz de resolver um determinado problema.

Algoritmos

Algoritmos são capazes de realizar tarefas como:

Ler e escrever dados; Avaliar expressões algébricas, relacionais e lógicas;

Tomar decisões com base nos resultados das expressões avaliadas;

Repetir um conjunto de ações de acordo com uma condição;

Algoritmos

Considere o mapa do exemplo a seguir, no qual uma pessoa deseja ir do hotel até a estação de trem.

Você poderia indicar dois algoritmos para resolver este problema?

Algoritmos

Algoritmos

Algoritmos

Representação de algoritmos

Para definir esta solução de forma algorítmica, podemos descrever textualmente da seguinte forma:

Posicione-se para o norte Caminhe dois quarteirões Em seguida, vire para o oeste Caminhe por um quarteirão.

Representação de algoritmos

Um tipo de diagrama muito usado para descrever graficamente um algoritmo é o fluxograma.

Início
Início
Posicione-se para o norte Caminhe 2 quarteirões Vire para o oeste Caminhe 2 quarteirões Fim
Posicione-se
para o norte
Caminhe 2
quarteirões
Vire para
o oeste
Caminhe 2
quarteirões
Fim

22

Representação de algoritmos

O fluxograma da página anterior demonstra o caráter sequencial deste algoritmo, com um passo após o outro.

Os fluxogramas também podem representar as outras construções algorítmicas, como as decisões e repetições, que serão vistas futuramente.

Representação de algoritmos

Outra forma de representação é o pseudocódigo:

Uma mistura de português (ou inglês) e formatação para as etapas da solução explícita

Ex:

Enquanto (quociente não é zero)

Divida o número decimal pela nova base Tome o resto como o próximo dígito à esquerda na resposta Substitua o número decimal original pelo quociente

Instruções precisas

Pegue um lápis e um papel. Siga o algoritmo:

Desenhe uma linha diagonal. Desenhe uma outra linha diagonal ligada à parte superior da primeira. Desenhe uma linha vertical sobre o ponto onde as linhas diagonais se encontram.

Desenhe uma linha horizontal ao longo da linha reta. Desenhe uma linha diagonal a partir da parte inferior da primeira diagonal para a linha reta.

Desenhe uma linha diagonal a partir da parte inferior da segunda diagonal para a linha reta. Desenhe uma linha curvilínea, começando na parte inferior da linha reta.

O que você criou?

Instruções precisas

O objeto desenhado deveria ser uma arraia.

Faça perguntas...

Para entender o problema:

O que eu sei sobre o problema?

Qual é a informação que eu tenho que processar de forma a encontrar a solução?

Com o que a solução se parece? Quais tipos de casos especiais existem? Como vou reconhecer que eu cheguei na solução?

A lógica

A lógica orienta a obtenção dos procedimentos para chegar na solução do problema

O que é lógica?

ramo da Filosofia e da Matemática que estuda os métodos e princípios que permitem fazer distinção entre raciocínios válidos e não válidos, determinando o processo que leva ao conhecimento verdadeiro.

O uso da lógica é primordial na solução de problemas.

Não se ensina a pensar, mas é possível desenvolver e aperfeiçoar o raciocínio lógico

Premissas e tarefas

Para o desenvolvimento de um algoritmo eficiente, é necessário obedecer algumas premissas básicas:

– Definir ações simples e sem ambiguidade. Organizar as ações de forma ordenada.

Estabelecer as ações dentro de uma sequência finita de passos.

Premissas e tarefas

No computador, os algoritmos são capazes de realizar ações como:

Avaliar expressões algébricas, lógicas e relacionais; Tomar decisões com base nos resultados das expressões avaliadas; Repetir (ou desviar de) um conjunto de ações de acordo com uma condição; Mover dados de um lugar para outro na memória; Ler dados digitados pelo usuário; Exibir dados na tela.

Etapas de um programa

No computador, os programas possuem três eatapas básicas:

Entrada de dados
Entrada
de dados

Processamento

Etapas de um programa • No computador, os programas possuem três eatapas básicas: Entrada de dados

Exibição dos resultados

Busque coisas usuais

Você nunca deve reinventar a roda Em computação, você vê alguns problemas repetidas vezes em diferentes formas

Um bom programador vê uma tarefa, ou talvez parte de uma tarefa (uma subtarefa), que já

tenha sido resolvida antes e reutiliza-a na

solução

Dividir para conquistar

Quebre um grande problema em partes menores que podem ser fáceis de lidar

Aplica-se o conceito de abstração

A abordagem de dividir para conquistar pode ser aplicada várias vezes até que cada subtarefa seja facilmente administrável

Algoritmo

Algoritmos

Um conjunto de instruções para resolver um problema ou parte de um problema em uma

quantidade finita de tempo usando uma quantidade finita de dados

As instruções devem ser inequívocas (sem ambiguidade)

Solução de problemas no

computador

A solução é composta por três etapas:

Fase de desenvolvimento do algoritmo Fase de implementação Fase de manutenção

Solução de problemas no

computador

Fase de desenvolvimento do algoritmo

Análise: entenda (defina) o problema

Proposta do algoritmo: desenvolva a sequência

lógica de passos a serem usados para solucionar o

problema

Teste do algoritmo: siga os passos definidos, de forma a verificar se a solução proposta realmente

resolve o problema

Solução de problemas no

computador

Fase de implementação

Codificação: traduza o algoritmo para uma linguagem de programação

Teste: faça o computador executar o programa. Verifique os resultados e faça ajustes até que as

respostas sejam corretas

Solução de problemas no

computador

Fase de manutenção

Uso: use o programa

Manutenção: modifique o programa para ajustar a novos requisitos ou para corrigir erros.

Interações entre fases da

solução de problemas

Desenvolvimento da solução Fase de implementação Análise Solução Solução genérica específica (algoritmo) (programa) Teste Teste Manutenção
Desenvolvimento da solução
Fase de implementação
Análise
Solução
Solução
genérica
específica
(algoritmo)
(programa)
Teste
Teste
Manutenção

Representação dos algoritmos

No computador: um algoritmo será implementado em uma linguagem de programação, que será traduzido para a linguagem da CPU (executável).

O computador não advinha o que pretendemos. Ele executa o que o instruirmos.

Portanto, não é possível instruir um computador com sentenças dúbias.

Exercício

Calcular a média final dos alunos da disciplina de Algoritmos. Os alunos realizarão quatro provas,

sendo duas em cada AV.

Quais são os dados de entrada? Qual será o processamento a ser utilizado? Quais serão os dados de saída? Implemente o algoritmo para esse problema.

Representação dos algoritmos

No computador: um algoritmo será implementado em uma linguagem de programação, que será traduzido para a linguagem da CPU (executável).

O computador não advinha o que pretendemos. Ele executa o que o instruirmos.

Portanto, não é possível instruir um computador com sentenças dúbias.

Para aprender

“O que eu ouço, eu esqueço.

O que eu vejo, eu lembro.

O que eu faço, eu aprendo.”

Confúcio, filósofo chinês (479 A.C.)

44