Algoritmos Recuperação Prova Prof. Thiago Caproni Tavares thiago.tavares@ifsuldeminas.edu.br Última Atualização: 2 de outubro de 2014 (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 1 / 24
Conteúdo 1 A análise de síntese de um algoritmo 2 Modelagem de Problemas 3 O papel da lógica em Programação (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 2 / 24
Conteúdo 1 A análise de síntese de um algoritmo 2 Modelagem de Problemas 3 O papel da lógica em Programação (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 3 / 24
Descrição Narrativa A resolução de problemas envolve duas grandes fases: Análise; Síntese. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 4 / 24
Análise Na fase de análise, o problema é entendido de forma que se descubra o que deve ser feito: Quais dados são necessários? Quais condições? Modelagem: Equações; Gráficos; Desenhos. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 5 / 24
Análise O resultado da fase de análise deve ser um plano de ação: A experiência em problema similares vistos anteriormente; Pode ser necessário a utilização de problemas similares. Processos de abstração: Elaborar modelos mentais do problema; Encaminhamento da solução. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 6 / 24
Síntese Executa-se o plano definido na fase de análise: Representa-se os passos por meio de um algoritmo; Utiliza-se a representação formal. Verifica-se a solução está correta: Percorrer o algoritmo do seu início até seu fim Caso ocorra alguma discrepância: Verificar a causa e analisar novamente o problema; Repete-se esse processo até que a solução tenha sido obtida. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 7 / 24
Conteúdo 1 A análise de síntese de um algoritmo 2 Modelagem de Problemas 3 O papel da lógica em Programação (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 8 / 24
Modelagem de Problemas Modelagem (geralmente desprezada): dificuldade ou facilidade de resolver o problema: Matemática e engenharia utilizam linguagem matemática; Computação utiliza algoritmos (fluxogramas e linguagens de programação) Exemplo: Compram-se 30 canetas iguais, que foram pagas com uma nota de R$100,00, obtendo-se R$67,00 como troco. Quanto custou cada caneta? (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 9 / 24
Modelagem de Problemas Problema da Caneta: Se eu tinha R$100,00 e recebi R$67,00 de troco, o custo total de canetas é a diferença entre os R$100,00 que eu tinha e os R$67,00 do troco. Ora, isto vale R$33,00; portanto; esse valor foi o total pago pelas canetas. Para saber quanto custou cada caneta, basta dividir os R$33,00 por 30, resultando no preço de cada caneta. Assim, cada caneta custou o equivalente a R$1,10 (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 10 / 24
Modelagem de Problemas Problema da caneta, matematicamente falando: 30x + 67 = 100 30x = 100 67 x = 33/30 x = 1, 1 (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 11 / 24
Modelagem de Problemas Algoritmo 1: Problema da caneta, algoritmo (Instância Particular): início Pegar os valores 30, 100 e 67 Subtrair 67 de 100 e dividir o resultado por 30 Mostrar o resultado final fimalgoritmo (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 12 / 24
Modelagem de Problemas Caso geral: Compraram-se N canetas iguais, que foram pagas com uma nota de Z reais, obtendo-se Y reais como troco. Quanto custou cada caneta? (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 13 / 24
Modelagem de Problemas Caso geral: Compraram-se N canetas iguais, que foram pagas com uma nota de Z reais, obtendo-se Y reais como troco. Quanto custou cada caneta? Algoritmo 3: Problema da caneta, algoritmo: Entrada: Ler os valores de N, Y e Z início Pegar os valores N,Y e Z Subtrair Y de Z e dividir o resultado por N Mostrar o resultado final fimalgoritmo (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 13 / 24
Modelagem de Problemas Caso geral: possui restrições! E se alguém pensar comprar 0 ou -3 canetas? Faz sentido? Sim. Para alguém que não possua a forma de interpretar o resultado: N=10, Z=10 e Y=15. Cada caneta: -R$0,05 (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 14 / 24
Modelagem de Problemas Caso geral: possui restrições! Pré-condições: Valor pago deve ser maior que o troco recebido; Valor pago e quantidade de canetas maior que 0; Troco maior ou igual a zero Matematicamente falando: Z > Y, N > 0, Z > 0 e Y 0 (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 15 / 24
Modelagem de Problemas Algoritmo 4: Problema da caneta, algoritmo (caso geral): Entrada: Ler os valores de N, Y e Z início se Z > Y e N > 0 e Y 0 e Z 0 então Subtrair Y de Z e dividir o resultado por N.; Mostrar o resultado final.; senão Exibir a mensagem: Erro: os valores são inconsisentes! ; fimse fimalgoritmo (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 16 / 24
Fluxograma Problema da caneta, algoritmo (fluxograma): Início N,Y,Z Valores inconsisentes F Z > Y e N > 0 e Y 0 e Z 0 V Q = (Z Y )/N) Q Fim (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 17 / 24
Conteúdo 1 A análise de síntese de um algoritmo 2 Modelagem de Problemas 3 O papel da lógica em Programação (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 18 / 24
O papel da lógica em Programação Imagine as seguintes proposições: 1 Se estiver chovendo, eu pegarei meu guarda-chuva. 2 Eu peguei meu guarda-chuva. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 19 / 24
O papel da lógica em Programação Imagine as seguintes proposições: 1 Se estiver chovendo, eu pegarei meu guarda-chuva. 2 Eu peguei meu guarda-chuva. Conclui-se É plausível que esteja chovendo! (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 19 / 24
O papel da lógica em Programação Os exemplo anteriores fornecem uma idéia do que a lógica se preocupa em estudar; Toda lógica proposta devem ser formalizadas em: Elementos Sintáticos: especificam como escrever suas proposições; Elementos Semânticos: avaliam o significado das proposições - suas interpretações. O papel da lógica está relacionado com a correta sequência de instruções: funcionamento correto do programa. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 20 / 24
O papel da lógica em Programação Em um algoritmo em execução, o valor das variáveis representa um estado; Com a execução do algoritmo, esses estados vão sendo modificados; Algoritmo correto: Estado inicial (variáveis) instruções Estado Final (variáveis) (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 21 / 24
O papel da lógica em Programação Algoritmo 5: Problema da caneta, algoritmo (caso geral): Entrada: Ler os valores de N, Y e Z início se Z > Y e N > 0 e Y 0 e Z 0 então Subtrair Y de Z e dividir o resultado por N.; Mostrar o resultado final.; senão Exibir a mensagem: Erro: os valores são inconsisentes! ; fimse fimalgoritmo Lógica de programação: Prova que um algoritmo está correto. Simulação (execução com dados reais): Verifica se o algoritmo está correto e leva a valores consistentes. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 22 / 24
Obrigado pela atenção!!! thiago.tavares@ifsuldeminas.edu.br (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 23 / 24
Referências I SOUZA, M. A. F. d. et al. Algoritmos e Lógica de Programação. second. [S.l.]: Cengage Learning. (thiago.tavares@ifsuldeminas.edu.br) Algoritmos 24 / 24