51
Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano [email protected]

Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano [email protected] [email protected]

Embed Size (px)

Citation preview

Page 1: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Programação ComputacionalAula 5: Algoritmos

Profa. Madeleine Medrano

[email protected]

Page 2: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Roteiro Lógica Algoritmos

Conceito de Algoritmo Partes de um algoritmo Características Representação de um algoritmo

Fluxograma Pseudocódigo

Page 3: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Lógica

Observe as seguintes afirmações:

O número 4 é menor que o número 7. O número 9 é maior que o número 7. Logo, o número 4 é menor

que os números 9 e 7.

Um casal com três filhos notou que um vaso estava quebrado, enquanto duas das crianças estavam na escola. Quem é o culpado?

Há uma caneta dentro de uma gaveta fechada. Sabemos que, para pegar a caneta, devemos, antes, abrir a gaveta.

Page 4: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Podemos deduzir a partir dessas afirmações, que em nosso cotidiano, sempre que pensamos, já estamos utilizando a lógica.

Se consultarmos em um dicionário da língua portuguesa o verbete "lógica", veremos que se trata de uma parte da filosofia que estuda as leis do raciocínio.

É uma ciência que estuda as formas do pensamento.

Lógica

Page 5: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Lógica

“é uma sequência coerente, regular e necessária de acontecimentos, de coisas".

Veja, a seguir, uma sequência de passos para comprar um determinado produto em uma loja. Imagine se seria possível comprar o produto seguindo os passos dessa sequência:

sair da loja; pagar pelo produto; entrar na loja; retirar o dinheiro da carteira; dirigir-se ao caixa; escolher o produto na prateleira.

Page 6: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Lógica Seria impossível conseguir efetuar a compra, pois apesar de

todas as ações estarem corretas, a sequência está errada. Como você poderia pagar pelo produto após sair da loja? Ou

escolher o produto após pagar por ele? A sequência correta, nesse caso, seria: entrar na loja; escolher o produto na prateleira; dirigir-se ao caixa; retirar o dinheiro da carteira; pagar pelo produto; sair da loja.

Page 7: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Lógica

A lógica, dessa forma, é utilizada para conduzir pensamentos ou ações voltados para a solução de problemas. Assim, a lógica está correta em determinada situação, se a solução do problema tiver sido atingida.

Na programação de computadores, o treino dessa habilidade é fundamental para aprimorarmos a nossa capacidade de resolver problemas e programar.

Devemos, portanto, aprender a pensar de forma estruturada.

Significa desenvolver e aperfeiçoar a técnica de pensamento, dentro de um raciocínio lógico e matemático, que é a base de todo o trabalho na programação de computadores

Page 8: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

Para resolver um problema em um computador, de modo semelhante ao que fazemos para resolver um problema do nosso cotidiano, devemos encontrar uma maneira de descrever esse problema de uma forma clara e precisa, através de uma sequência de passos a serem seguidos até que se atinja a solução procurada.

Essa estruturação deve seguir uma determinada lógica. A lógica aplicada à programação de computadores, deve buscar a melhor sequência de ações para se resolver um problema. Essa sequência de ações damos o nome de algoritmo.

Page 9: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

é um conjunto finito de regras que fornece uma sequência de operações para resolver um problema específico. É algo como uma receita, ou uma rotina.

Page 10: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

Para o desenvolvimento de um algoritmo eficiente é necessário obedecermos algumas premissas básicas no momento de sua construção:

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

Page 11: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

O algoritmo 1 é um exemplo simples de algoritmo (sem condições ou repetições) para troca de um pneu.

Os 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;

Page 12: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

Um algoritmo quando programado num computador é constituído pelo menos das 3 partes, sendo elas:

1. Entrada de dados;

2. Processamento de dados;

3. Saída de dados;

Page 13: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

Na parte de entrada, são fornecidas as informações necessárias para que o algoritmo possa ser executado.

Estas informações podem ser fornecidas no momento em que o programa está sendo executado ou podem estar embutidas dentro do mesmo.

Na parte do processamento são avaliadas todas as expressões algébricas, relacionais e lógicas, assim como todas as estruturas de controle existentes no algoritmo (condição e/ou repetição).

Na parte de saída, todos os resultados do processamento (ou parte deles) são enviados para um ou mais dispositivos de saída, como: monitor, impressora, ou até mesmo a própria memória do computador.

Page 14: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo 1 Troca de pneu do carro.

Passo 1: desligar o carroPasso 2: pegar as ferramentas (chave e macaco)Passo 3: pegar o estepePasso 4: suspender o carro com o macacoPasso 5: desenroscar os 4 parafusos do pneu furadoPasso 6: colocar o estepePasso 7: enroscar os 4 parafusosPasso 8: baixar o carro com o macacoPasso 9: guardar as ferramentas

Page 15: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo: Bolo de Chocolate

Passo1 – Receber os ingredientes: 2 xícaras de açúcar; 3 ovos; 250g de margarina; 3 xícaras de farinha de trigo; 1 e ½ colher de fermento; 1 xícara de leite. Passo 2: aqueça o forno a 180 graus;

Passo 3: bata as claras em neve e reserve;

Passo 4: em uma travessa, bata o açúcar, a manteiga e as gemas;

Page 16: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo: Bolo de Chocolate Passo 5: misture a farinha e o leite;

Passo 6: bata bem, até ficar bem homogêneo;

Passo 7: com a ajuda de uma colher, acrescente o fermento;

Passo 8: por último, adicione as claras em neve e mexa cuidadosamente; Passo 9: coloque em uma forma untada com manteiga e farinha de trigo e

leve ao forno médio para assar por aproximadamente 35 minutos ou até que, ao espetar um palito, esse saia seco;

Passo 10: após assado, desligue o forno e deixe o bolo esfriar;

Passo 11: desenforme e saboreie.

Page 17: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo: Características Podemos observar cinco características inerentes aos algoritmos: Finitude – Um algoritmo sempre deve terminar após um número

finito de passos. Ex. Encerra no momento em que o bolo está pronto.

Definição – Cada passo do algoritmo deve ser bem definido e sem ambiguidades

Não deve dar margem para uma interpretação dupla.

Entradas – Um algoritmo deve ter uma ou mais entradas, que são as informações que devem ser fornecidas antes do algoritmo ser iniciado

No caso da receita de bolo, as entradas são os ingredientes

Page 18: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo: Características

Podemos observar cinco características inerentes aos algoritmos

Saídas – Um algoritmo deve ter uma ou mais saídas. Observando a nossa receita, vemos que os ingredientes

(entradas) são misturados, gerando uma única saída (o bolo).

Efetividade – Todo algoritmo deve ser descrito por operações básicas e possíveis de ser realizadas de forma precisa, dentro de um determinado tempo, por qualquer pessoa.

Se na receita víssemos uma instrução do tipo "coloque açúcar à vontade", isso impossibilitaria a sua execução de uma forma precisa.

Page 19: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo – Utilizando números e expressões matemáticas

Cálculo da média aritmética de um aluno:

Passo 1: informe a primeira nota; Passo 2: informe a segunda nota; Passo 3: some a primeira nota com a segunda

nota; Passo 4: divida o resultado da soma por dois; Passo 5: mostre o resultado obtido.

Page 20: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo – Utilizando números e expressões matemáticas

Podemos observar que esse algoritmo têm: Início e fim Passos bem definidos Dados de entrada (primeira nota e segunda nota), Dados de saída (média) Instruções de cada passo são precisas O exemplo reúne as 5 características mencionadas

anteriormente. Podemos afirmar que a construção de algoritmos é uma

atividade que faz parte do nosso cotidiano Seguem uma sequência lógica de passos e geram suas

respectivas saídas (que são os resultados alcançados).

Page 21: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo – Utilizando números e expressões matemáticas

É importante lembrar que podem existir várias maneiras de solucionar um problema.

O importante é chegar à solução. Melhor ainda, se essa solução for atingida de forma eficiente e eficaz.

A eficiência a capacidade de produzir com maior qualidade e com os mesmos ou menos recursos

A eficácia caracteriza-se por fazer o que é necessário para alcançar determinado resultado

Page 22: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Atividade

Escreva o seu algoritmo usual para ir à Universidade.

Escreva um algoritmo para fritar batatas. Escreva o seu algoritmo usual para tomar

banho. Escreva um algoritmo que, dado um número,

exiba o seu antecessor. Faça o mesmo para exibir o sucessor do

número dado.

Page 23: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Nota:

Antes de fazer a atividade, considere as técnicas para elaboração de um algoritmo:

Ler atentamente o enunciado Destacando os pontos mais importantes; Definir os dados de entrada; Definir os dados de saída O que se deseja obter Definir o processamento De que maneira será ordenada a sequência de passos Construir o algoritmo;

Page 24: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos

Descrição narrativa

Fluxogramas

Pseudocódigo

Page 25: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos :Descrição narrativa Nessa forma de representação, analisamos o enunciado do problema e

descrevemos a sequência de passos em nossa língua nativa (em nosso caso, o português).

A vantagem de se utilizar esse procedimento é que não precisamos aprender nenhum conceito novo, pois já temos domínio sobre a nossa língua nativa.

A desvantagem é que a língua natural pode ser interpretada de diferentes maneiras. Em comparação com uma linguagem de programação, a linguagem natural é abstrata, imprecisa e pouco confiável.

Isso poderia trazer problemas na hora de transcrever o algoritmo para o programa (em uma linguagem de programação).

Page 26: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos :Descrição narrativa

Considere o algoritmo – Receita de Bolo

Passo 9: coloque em uma forma untada com manteiga e farinha de trigo e leve ao forno médio para assar por aproximadamente 35 minutos ou até que, ao espetar um palito, esse saia seco;

A informação sublinhada é imprecisa e pode ser interpretada de diferentes.

"aproximadamente 35 minutos" pode ser um pouco menos que 35 minutos pra uma pessoa e um pouco mais que 35 minutos pra outra pessoa executando a mesma receita.

Não fica clara a quantidade de manteiga e farinha de trigo que deve ser aplicada na forma.

Page 27: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Fluxograma

Fluxograma Nessa forma de representação, escrevemos o algoritmo utilizando símbolos

gráficos predefinidos, enfatizando os passos individuais e suas interconexões.

Page 28: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Fluxograma

A principal vantagem é que é mais fácil entender o conteúdo descrito de forma gráfica do que um descrito textualmente. Além disso, os fluxogramas obedecem a um padrão mundial quanto à simbologia.

As desvantagens são as seguintes: Os dados podem não ser suficientemente detalhados, dificultando a transcrição do algoritmo para o programa a ser desenvolvido; É necessário aprender a simbologia dos fluxogramas; Para algoritmos mais extensos, a construção do fluxograma pode se tornar mais complicada.

Page 29: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Fluxograma

Fluxograma Exemplo para calcular a nota média de uma aluno

Page 30: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Fluxograma

Fluxograma Exemplo para calcular a nota média de uma aluno: As entradas para a execução do algoritmo são a primeira e a

segunda nota Veja, as notas 1 e 2 estão no símbolo de fluxograma

correspondente à entrada de dados. O cálculo da média é efetuado no símbolo seguinte Símbolo referente ao processamento, ou seja, os cálculos. O símbolo de saída de dados do fluxograma exibe o resultado A média do aluno Os símbolos de Início e Fim são os delimitadores de execução

Page 31: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Caracterize com suas próprias palavras uma descrição narrativa.

Faça um algoritmo que descreva alguma situação do seu dia a dia (ex. tomar banho) e construa um fluxograma contendo os símbolos já vistos.

Atividade

Page 32: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Pseudocódigo

É uma combinação das melhores características das duas formas de representação anteriores.

A principal vantagem da utilização do pseudocódigo é que, mesmo sendo independente de qualquer linguagem de programação, sua estruturação facilita a transcrição do algoritmo criado para o código dessas linguagens

A desvantagem é que precisamos aprender as regras dessa forma de representação. Também figura como desvantagem a não padronização de sua estruturação. Isso quer dizer que você encontrará um mesmo termo descrito de formas diferentes em diferentes literaturas.

Page 33: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Pseudocódigo

Page 34: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Pseudocódigo

Page 35: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Pseudocódigo

Vamos chamar as instruções que estão entre as palavras início e fim de bloco de execução do algoritmo.

Veja que o bloco de execução não está posicionado no mesmo alinhamento das palavras início e fim.

Chamamos esse recuo de identação. A identação torna o código mais legível, pois facilita a visualização da

delimitação dos blocos de execução. As palavras em negrito, são as palavras reservadas da linguagem. Palavras reservadas são os comandos fornecidos pelas linguagens de

programação que permitem a expressão dos algoritmos. Alguns exemplos de palavras reservadas são comandos de escrita ou

leitura de dados e a declaração de variáveis O comentários explicam o algoritmo (em verde)

Page 36: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Pseudocódigo

Page 37: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Formas de Representação dos Algoritmos : Pseudocódigo

Page 38: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos: comandos de controle

Page 39: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Como exemplo de um algoritmo matemático, vamos a considerar o problema de resolver uma equação do primeiro grau da forma

Ax+b=0

A solução desta equação é

X=-b/a

Se o valor de a for diferente de 0.

Caso a seja igual a 1, a equação não possui solução, já que não é possivel dividir por 0.

Page 40: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Fluxograma

Page 41: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 42: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 43: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Comandos de Repetição

As linguagens de programação normalmente possuem diversos comandos que permitem que um trecho de algoritmo seja repetido um numero de vezes.

Para estes exemplos iniciais iremos apresentar um comando de repetição que é suficientemente geral para substituir todos os outros.

Page 44: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Comandos de Repetição

O comando ENQUANTO funciona da seguinte maneira:

Passo 1: Testar se a condição é verdadeira. Caso seja verdadeira executar o bloco de comandos situados entre o inicio do comando e o final do comando (FIM ENQUANTO).

Passo 2: Executar o bloco de comandos até o fim do enquanto. Quando chegar ao fim retornar automaticamente para o inicio do comando e refazer o passo 1.

Page 45: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 46: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 47: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 48: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 49: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Exemplos de Algoritmos em Pseudocódigo

Page 50: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Atividade

1) Identifique os dados de entrada, processamento e saída no algoritmo abaixo

Receba código do produto

Receba valor do produto

Receba Quantidade de produtos

Calcule o valor total do produto (Quantidade * Valor do produto) Mostre o código do produto e seu valor total

Page 51: Programação Computacional Aula 5: Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Fim da apresentação

Obrigada pela atenção