Introdução à Algoritmos. Aula 11



Documentos relacionados
Linguagens de Programação I. Introdução a Algoritmos e Lógica de Programação

Estruturas de Repetição

Comandos de Desvio 1

Algoritmo e Pseudo-código

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Exercícios de Fixação Aulas 05 e 06

BCC 701 Programação de Computadores I

INF1005: Programação I. Algoritmos e Pseudocódigo

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Algoritmos. Prof. Jonatas Bastos

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

Algoritmos & Programação

Metodologias de Programação

Exercícios: Vetores e Matrizes

Exercícios: comandos de repetição

Lista 4 Introdução à Programação Entregar até 07/05/2012

Estrutura de repetição para número indefinido de repetições com teste no inicio (Enquanto - while)

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Primeira Prova de Análise e otimização de Código - DCC888 -

LISTA DE EXERCÍCIOS PARTE 1 (ESTRUTURAS SEQUENCIAIS)

OBSERVAÇÕES: EXERCÍCIOS

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

Em linguagem matemática, essa proprieade pode ser escrita da seguinte maneira: x. 1 = x Onde x representa um número natural qualquer.

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

PHP Estruturas de repetição

CAPÍTULO O Método Simplex Pesquisa Operacional

AC05 Lista de Exercícios sobre Sequências, Condições e Repetição Em C++

FESP FACULDADE DE ENGENHARIA SÃO PAULO DISCIPLINA BP1: PROCESSAMENTO DE DADOS

Elabore um algoritmo na Linguagem de Programação do VisuAlg usando a estrutura de repetição PARA que satisfaça as seguintes condições:

5. ESTRUTURA DE CONTROLE TOMADA DE DECISÕES

5. O Mapa de Karnaugh

Montadores e Compiladores

Planilha Eletrônica - Microsoft Excel -

Exercícios: Comandos de Repetição

Avaliação e Desempenho Aula 1 - Simulação

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

MC Teste de Mesa e Comandos Repetitivos

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

Programação Linear - Parte 4

ATIVIDADE DE MATEMÁTICA (PARA CASA) Data de entrega 18/04/2012

Tipos de problemas de programação inteira (PI) Programação Inteira. Abordagem para solução de problemas de PI. Programação inteira

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

Lição 5 Medidas Descritivas Medidas de Dispersão

1. Escreva um programa em Pascal que leia três valores inteiros e mostre-os em ordem crescente. Utilize seleção encadeada.

Unidade 10 Análise combinatória. Introdução Princípio Fundamental da contagem Fatorial

Linguagens de Programação:

PLANEJAMENTO SIMPLIFICADO DE PROJETOS

A Dança do Embaralhamento. Série Matemática na Escola. Objetivos 1. Introduzir a noção de grupo de permutação; 2. Mostrar uma aplicação de MMC.

Aula 6 Propagação de erros

Calculando seno(x)/x com o interpretador Hall.

XXXII Olimpíada Brasileira de Matemática. GABARITO Segunda Fase

Onde está o peso extra? Série Problemas e Soluções. Objetivos 1. Estudar uma estratégia que valoriza ao máximo as informações disponíveis.

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Análise de algoritmos. Parte II

Controle de Fluxo Comandos de repetição: while e do-while

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Programação de Computadores I. Linguagem C Função

Maratona de Programação - Dicas Para Iniciantes

Conhecendo Seu Telefone

Matemática Discreta. Leandro Colombi Resendo. Matemática Discreta Bacharel em Sistemas de Informações

1. Noção de algoritmo

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Exercícios (if/ if else/ if elseif else)

Árvores de Decisão Matemática Discreta

O Jogo da Velha Dançarina

CÁLCULO DO MODELO NUMÉRICO (MDT)

2ª Lista de Exercícios

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Comece aqui. Conteúdo PORTUGUÊS. Use este guia para. Importante! Você já utiliza um computador de mão Palm?

Estrutura de Seleção

Engenharia Econômica

Erros e Incertezas. Rafael Alves Batista Instituto de Física Gleb Wataghin Universidade Estadual de Campinas (Dated: 10 de Julho de 2011.

Atualizações de Software Guia do Usuário

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

Figura 8: modelo de Von Neumann

Unidade 5. A letra como incógnita equações do segundo grau

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

FUNÇÕES MATEMÁTICAS NÚMERO : PI() SENO E COSSENO: SEN() E COS()

Projeção ortográfica e perspectiva isométrica

Microsoft Excel INTRODUÇÃO PARTE 1 SUMÁRIO

Enviar fotos e vídeos entre duas câmeras da marca Canon (PowerShot SX60 HS)

4.2.2 Filtrando Macro filtro

Usando potências de 10

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

Para ser usado com aplicativos ativados para scanner/leitor de Código QR

Técnicas Digitais A AULA 08. Prof. João Marcos Meirelles da Silva. Sala 425

a) 2 b) 3 c) 4 d) 5 e) 6

Matemática Básica Intervalos

Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição

Sistemas Operacionais e Introdução à Programação. Introdução à Lógica de Programação: estruturas de repetição

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

FLIP FLOPS. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos M-1113A

CONCURSO PÚBLICO PARA PROVIMENTO DE CARGOS DE SERVIDORES TÉCNICO-ADMINISTRATIVOS EM EDUCAÇÃO EDITAL Nº 045/ PRORH DÚVIDAS FREQUENTES

Transcrição:

Introdução à Algoritmos Aula 11

Um programa de computador é um produto resultante da atividade intelectual. Essa atividade depende de um treinamento prévio em abstração e modelagem de problemas, bem como o uso da lógica na verificação das soluções. PROGRAMA == SOFTWARE Software é representado por instruções e dados que alguém definiu e que ao serem executados por alguma maquina cumprem algum objetivo

Ação: Acontecimento que a partir de um estado inicial, após um período de tempo finito produz um estado final previsível e bem definido Ex: Três pessoas escolhem um valor numérico L e escrevem os termos de Fibonacci inferiores a L 1. L = 50 1 1 2 3 5 8 13 21 34 2. L = 13 1 1 2 3 5 8 3. L = 1 Apenas uma parte do que foi feito é considerado de ação. A seleção de L não é uma ação Escrever os termos da seqüência de Fibonacci inferiores a L é uma ação

Note que as três ações são diferentes, com três pessoas diferentes com resultados diferentes e valores iniciais diferentes, mas apesar disso pode-se reconhecer um padrão de comportamento, subordinação a uma mesma norma de execução. É como se as três ações tivessem sido executadas em obediência ao comando. Escreva os termos de Fibonacci inferiores a L Essa norma de execução, comando ou padrão de comportamento pode-se definir como ALGORITMO

ALGORITMO: Descrição de um conjunto de comandos que obedecidos resultam numa sucessão de ações. Se destina a resolver um problema, fixa um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada para se atingir como resultado final, a solução de um problema. Exercícios: Um algoritmo não pode conter um comando como Escreva todos os termos da seqüência de Fibonacci. Por que? Escreva um algoritmo que partindo de diferentes estados iniciais produzem os valores 2 4 6 8 10 12 14 1 3 5 7 9 11 13

Exemplos de Algoritmos na Vida Cotidiana Instruções para se utilizar um aparelho eletrodoméstico Uma receita de cocinha Uma guia de preenchimento da declaração de imposto de renda A regra para a determinação do máximo ou mínimo de funções usando derivadas sucessivas A maneira em que as contas de água e luz são calculadas mensalmente

Um ALGORITMO é considerado COMPLETO se os seus comandos forem do entendimento do destinatário. Num algoritmo um comando que não for entendido deverá ser desdobrado em novos comandos, que constituirão um REFINAMENTO do comando inicial. Se um algoritmo é formado não apenas por um comando, mas por vários, isso significa que não consideram apenas o estado inicial e final mas também os estados intermediários que delimitam as ações decorrentes de cada comando. Exemplo: 1.Receba o valor de L 2.Processe os dos Fibonacci menores do primeiros termos que L 3.Processe os termos restantes 1. Escreva os termos de

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 (comandos) que vão a operar sobre esses dados Formalização de um algoritmo Regras para escrever um algoritmo corretamente (tipos de comandos que podem ser utilizados) expressões e operações dentro desses comandos Existem três tipos de estruturas que podem ser usadas para escrever qualquer programa (Estruturas de Controle) Seqüenciais De decisão De repetição

Exemplo (Estrutura Seqüencial) Após refinamento 1 Os comandos são executados na mesma ordem em que aparecem 1.Receba o valor de L 2.Processe os dos primeiros termos 3.Processe os termos restantes Refinamento do passo 2 Comandos vagos (Não se sabe como pode ser feito), passo 2 e 3 2.1 Atribuía o valor de 1 ao primeiro termo 2.2 Se ele for menor que L entao escreva-o Fim-se 2.3 Atribuía o valor 1 ao segundo termo 2.4 Se ele for menor que L entao escreva-o Fim-se Neste refinamento temos ESTRUTURAS CONDICIONAIS

Estruturas condicionais Num algoritmo a execução de estruturas condicionais provocarão a execução ou não de uma ação. Estrutura Se condição então comandos Fim-se

Exemplo (Estrutura Condicional) Após refinamento 2 Os comandos são executados se se cumprir uma condição 1. Receba o valor de L 2. Atribuía o valor de 1 ao primeiro termo 3. Se ele for menor que L entao escreva-o Fim-se 4. Atribuía o valor 1 ao segundo termo 5. Se ele for menor que L entao escreva-o Fim-se 6. Processe os termos restantes Refinamento do passo 6 Ainda não se sabe como vai ser feito 6.1 Repita 6.2 Calcule novo termo somando os dois anteriores 6.3 Se novo termo for maior que L entao interrompa Fim-se 6.4 escreva o termo 6.5 Fim-repita Neste refinamento temos ESTRUTURAS DE REPETIÇÃO

Estruturas Repetição Nas estruturas de repetição os comandos (ou outras estruturas de controle abrangidas) serão executadas repetidamente até que se verifique a condição (Em nosso caso o novo termo seja maiior que L) A forma de descrção deste algoritmo é mais sintetica, elegante e consigue ser executada por qualquer pessoa que tente usar esse algoritmo Estrutura repita verificação de condição e comandos Fim-repita

Algoritmo Final 1. Receba o valor de L 2. Atribuía o valor de 1 ao primeiro termo 3. Se ele for menor que L entao escreva-o Fim-se 3. Atribuía o valor 1 ao segundo termo 5. Se ele for menor que L entao escreva-o Fim-se 6. Repita 7. Calcule novo termo somando os dois anteriores 8. Se novo termo for maior que L entao interrompa Fim-se 9. escreva o termo 10. Fim-repita

Exercício Deseja-se especificar um algoritmo para calcular e exibir na tela a área de um triangulo de base b e altura h, esses valores são fornecidos pelo usuário Início 1. Pedir para o usuário digitar os valores de b e de h. 2. Calcular a área s usando a fórmula s = (bxh)/2 3. Exibir o valor de s na tela Fim

inicio b, h s (b*h)/2 s fim

Algoritmo em Portugol Início 1. Leia(b, h) 2. s (b * h) / 2 3. Exiba(s) Fim

Modelagem do problema A modelagem é sempre desprezada é a responsável pela facilidade ou dificuldade da solução do problema. O uso da linguagem matemática pode ser fundamental Compraram-se 30 canetas iguais que foram pagas com uma nota de 100 reais obtendo-se 67 reais de troco. Quanto custou cada caneta Raciocínio matemático quantogastei = 30x quantogastei + troco = 100 30x + 67 = 100 30x = 33 x = 33/30 x = 1.1

Algoritmo para solucionar o problema Inicio 1. Pegar os valores 30, 100 e 67 2. Subtrair 67 de 100 e dividir o resultado por 30 3. Mostre o resultado final Fim Algoritmo geral Inicio 1. Ler os valores de Q, N e T 2. r (N-T)/Q 3. Mostrar r Fim

ALgoritmo Correto Inicio Ler os valores de Q, N e T Se T>N e Q>0 e N>=0 e T>0 Entao r (N-T)/Q mostrar r Senão Exibir mensagem Erro nos valores Fim Em portugol???

inicio Q,N,T T>N e Q>0 e N>=0 e T>0 Erro!! s (N-T)/Q s fim

Terminador: Significa saída para ou entrada do ambiente externo Processo: Algum processo, uso de uma função grupo de operações entre as variáveis. Linha básica: Direção de fluxo e dados, pode ser usada sólidas ou abertas, com ou sem setas Entrada manual: Representa os dados externos de qualquer tipo de mídia que sejam fornecidos manualmente durante o processamento por teclado, online, caneta óptica, leitor de código de barras Exibição: Dados mostrados em qualquer tipo de mídia resultantes do processamento Decisão: Representa uma decisão ou desvio

Exercício Represente o algoritmo de fibonacci com FLUXOGRAMAS Exercício: Que faz o seguinte algoritmo Inicio 1. Leia(x, y) 2. Enquanto (y<>0) Faça 3. r <- x % y 4. x <- y 5. y <- r 6. Fim Enquanto 7. Exiba(x) Fim Considere x e y valores inteiros. Elabore o fluxograma do algoritmo anterior.

Exercício... Fluxograma Início x, y Falso y<>0 Verdadeiro x r <- x % y x <- y Fim y <- r

Exercício: Crie um algoritmo que calcule quantas notas de 50, 10, 5 e 1 são necessárias para pagar uma conta cujo valor é fornecido. Considere valores inteiros. Utilize as técnicas de representação de algoritmos estudadas (fluxograma e portugol).

DICAS 1.Ao se deparar com um problema novo, tente entendê-lo: O que se deve descobrir ou calcular? (Objetivo) Quais são os dados disponíveis? São suficientes? Quais as condições necessárias e suficientes para resolver o problema? Se possível, modele o problema de forma matemática. 25

DICAS 2.Crie um plano com a solução: Consulte sua memória e verifique se você já resolveu algum problema similar (analogia, generalização, especialização) 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. 26

DICAS 3.Formalize a solução: Crie um algoritmo informal com os passos que resolvam o problema. Verifique se cada passo do algoritmo esta correto. Escreva um algoritmo formalizado (fluxograma ou portugol) 27

DICAS 4.Exame dos resultados: Teste o algoritmo com diversos dados e verifique os resultados (teste de mesa) Se o algoritmo não gerou resultado algum. Volte e tente encontrar o erro. Se o algoritmo gerou resultados, estes estão corretos? Se não estão corretos, alguma condição, operação ou a ordem, estão incorretas. Volte e tente encontre o erro. 28

DICAS 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? 29