Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação



Documentos relacionados
Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Laboratório de Programação

Introdução a Algoritmos Parte 04

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Orientação a Objetos

Mapeamento de processo para a ISO 9001:2000

Tipos agregados. Tipos estruturados

Lista de Exercícios da 3ª Unidade. ( Ponteiros, Alocação dinâmica, Arquivos, Estruturas de Dados)

Sistema Futura Ponto. Aparecida Legori Futura Sistemas 27/05/2014

Como usar o bluej. Laboratório I Prof.ª Vera Alves

José Romildo Malaquias

Java. Marcio de Carvalho Victorino

Guia de utilização da notação BPMN

Estruturas de Repetição

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Programação online em Java

Algoritmos com VisuAlg

Resolução da lista de exercícios de casos de uso

IES-200. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS

BC0501 Linguagens de Programação

2. Faça o login com o e senha pessoal [1] (estes podem ser obtidos junto ao Serviço Técnico de informática - STI)

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Manual Geral do OASIS

CA Nimsoft Monitor Snap

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Árvores Binárias de Busca

Integração ADMRH com AGROSYS

DEFINIÇÃO DE MÉTODOS

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Metodos de Programação

Interface Homem-Computador

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

OBS.: Usem as funções rand() e srand(). Qualquer duvida,

Equivale a um conjunto de if 's encadeados, porém mais estruturado.

Roteiro do Programa e Entrada/Saída

ULA Sinais de Controle enviados pela UC

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

1. Apresentação Objetivos

2 a Lista de Exercícios

TAXA INTERNA DE RETORNO - IRR

Lista de Exercícios. Vetores

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

O Processo de Desenvolvimento de Software

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Sistemas de numeração

Compilado pela Prof a Sílvia Moraes Organizado por Stewart Unger

Manual - Gemelo Backup Online WEB

TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO

Casos de Uso. Professor MSc Wylliams Barbosa Santos wylliams.wordpress.com Laboratório de Programação

SECRETARIA DE ESTADO DA FAZENDA. Documento de Arrecadação Estadual DAE. Manual do Usuário. Versão SECRETARIA DE ESTADO DA FAZENDA

Roteiro 2: (Planilhas Eletrônicas) - Função procv / manipulação de formulários

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Introdução a Informática. Prof.: Roberto Franciscatto

BARRAMENTO DO SISTEMA

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Lista de Exercícios 03b Algoritmos Repetição

Manual de Instruções. Rastreador Via Satelite para Automóveis e Caminhões

Programação de Computadores I. Ponteiros

Alternativa C é correta.

Solicitação de Equipamento Verba de Projeto Abril 2006

Manual Ciaf NFC-e Gratuito. Cadastro de Clientes 2 Cadastro de Produtos 4 Caixa Diário 9 Cadastro de formas de Pagamento NFCe 13 Emissão NFC-e 17

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

Persistência de Dados

Linguagem C: for. Introdução à linguagem C(++) Profs. Anilton, Lasaro e Paulo Coelho. Faculdade de Computação Universidade Federal de Uberlândia

Grupo C Vetores e Matrizes

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Detalhamento da Fase de Planejamento e Programação de Projeto. Gerenciamento de Tempo

Programação de Computadores I. Linguagem C Vetores

Tarefas em Moodle (1.6.5+)

Introdução à Lógica de Programação

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Um pouco do Java. Prof. Eduardo

Concepção e Elaboração

Trabalho de Implementação Jogo Reversi

Processo: Logística. Motivação. Nome do Processo: Inventário Cíclico. Desenvolvimento Versão 2009 Release 61 Autor Jaciara

Manual Telemetria - RPM

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 20 PROFª BRUNO CALEGARO

Python Funções. Introdução à Programação SI1

Introdução a Java. Hélder Nunes

Transcrição:

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação LP: Laboratório de Programação Apontamento 10 Prof. ISVega Abril de 2004 Controle de Execução: Iteração CONTEÚDO 10.1Repetição de Rotas.................. 1 10.2Repetição com Contador.............. 2 Exercícios.......................... 5 10.1 Repetição de Rotas A bifurcação de uma rota também pode ser utilizada para representar o caso onde um determinado trecho deve ser repetido. Duas estruturas de repetição de passos computacionais são comumente encontradas nos programas: repetição com contador e repetição com sentinela. Repetição com contador A estrutura de repetição com contador descreve um padrão de execução de rotas onde um determinado trecho é repetido n vezes. O valor de uma variável especial, conhecida por variável-contador, ou simplesmente contador, é sucessivamente comparado com n; quando o valor do contador se iguala a n, a repetição é encerrada. Desta forma, a condição de parada da repetição é denotada por uma expressão (lógica ou relacional) envolvendo o valor do contador. Repetição com sentinela A estrutura de repetição com sentinela descreve um padrão de execução de rotas onde a repetição de um trecho é controlada por uma 1

condição estabelecida sobre um valor-sentinela. A condição de parada da repetição é denotada por uma expressão (lógica ou relacional) envolvendo o sentinela. 10.2 Repetição com Contador Um típico mapa de execução representando a repetição de uma seqüência de passos de computação controlada por uma expressão envolvendo o valor de uma variávelcontador é mostrado na Figura 10.1. 1) Valor inicial do contador: i 0 c a i++ 3) Atualização do contador: b [ i < n ] 2) Condição de entrada no ciclo. Figura 10.1: Estrutura de um mapa de execução com repetição controlada por contador. O trecho do mapa correspondente à seqüência de passos a serem repetidos também é conhecido por ciclo. No caso da Figura 10.1, ocorrem dentro do ciclo: (i) a avaliação da condição de entrada no ciclo, envolvendo o valor do contador i; caso o valor do contador não tenha atingido o total de repetições: (ii) execução do passo de computação identificado por b, e (iii) atualização do valor do contador i. Em relação à variável-contador, três pontos importantes são destacados neste mapa: abbbbbbbbbbbbbbbbbbbbbbbbbbbc 1) Definição do valor inicial da variávelcontador i: neste caso, o valor inicial do contador i é definido como zero. 2) Condição de entrada no ciclo: valor do contador menor do que o valor limite (denotado por n). d 3) Atualização do contador i: neste caso, fgggggggggggggggggggggggggggh e incrementa-se o valor de i em uma unidade. Copyright c 1998-2004, Dr. Italo S. Vega 10-2

Java: frases de repetição com contador Uma implementação em Java deste mapa segue o padrão descrito pelo seguinte diagrama sintático: CmdFor for ( 1: ValorInicialContador ; 2: 3: CondicaoEntrada AtualizacaoContador ; ) { ComandosDoCiclo ValorInicial } DeclaracaoVariavelContador ExpressaoComando, Atualizacao ExpressaoComando, No caso do mapa proposto, tem-se: // trecho que passa por a for( int i = 0; i < n; i++ ) { // trecho que passa por b Copyright c 1998-2004, Dr. Italo S. Vega 10-3

} // trecho que passa por c Total de repetições do ciclo Em função destes elementos, pode-se determinar a quantidade de repetições do trecho que cruza o passo b. No caso deste mapa, supondo n >= 0, o trecho será repetido n vezes. Exemplo 10.1 A escrita do valor "b" no monitor do computador por três vezes, pode ser representada pelo mapa apresentado na Figura 10.2. 1) Valor inicial do contador: main i 0 i++ 3) Atualização do contador: [ i < 3 ] System.out.println( b ) 2) Condição de entrada no ciclo. Figura 10.2: Descrição de uma computação que mostra três vezes o valor "b" no monitor. Em termos de Java, o método poderia ser escrito como: public class Repetidor { public void repetirb { for( int i = 0; i < 3; i++ ) { System.out.println( "b" ); } } } Esta codificação faz uso da variável-contador i, que inicia o ciclo com valor 0. Quando o valor desta variável for igual a 3, o ciclo de passos é encerrado e a computação termina. O ciclo contém dois passos: (1) apresentação do valor b e (2) incremento do valor da variável-contador i. Copyright c 1998-2004, Dr. Italo S. Vega 10-4

EXERCÍCIOS 10.1 REPETIÇÃO SIMPLES Tarefa 10.1.1 Crie o projeto ex10.1. Tarefa 10.1.2 Crie a classe Repetidor, conforme mostrado no exemplo 10.2 SOMATÓRIA DE n NÚMEROS Considere o problema de calcular a soma dos primeiros n números, onde o valor de n é estabelecido pelo usuário no início da execução da computação: Σi : 1..n = 1 + 2 +... + n. Tarefa 10.2.1 Proponha um mapa contendo os passos de uma computação que resulte no cálculo desta somatória de números. Tarefa 10.2.2 Somatoria: Refaça o mapa proposto acrescentando os contextos Intervalo e Intervalo contém uma variável n que armazena o limite superior do intervalo. Somatoria oferece o método calcular():int, que retorna a somatória dos números do intervalo 1.. s.n, sendo s uma referência para um objeto da classe Intervalo. Tarefa 10.2.3 Crie o projeto ex10.2. Tarefa 10.2.4 Crie as classes Intervalo e Somatoria, conforme o mapa de execução elaborado anteriormente. Tarefa 10.2.5 Crie os objetos s:intervalo e f:somatoria. Faça f se referir ao objeto s. Envie a mensagem s.mudarsuperior(10) seguida da mensagem f.calcular(). O resultado corresponde Σi : 1..10 = 1 + 2 +... + 10? Tarefa 10.2.6 Preencha a seguinte tabela com a ajuda do programa: n 20 30 100 Somatória Tarefa 10.2.7 Qual o resultado da computação quando n = 10? Como você analisa tal situação? Tarefa 10.2.8 Altere o mapa de modo a mostrar, também, a média destes primeiros n números. Estes passos devem estar no contexto Somatoria. Tarefa 10.2.9 Altere a implementação em Java, de modo a obter-se o efeito descrito por este novo mapa. Quais os resultados da aplicação quando o usuário digita Copyright c 1998-2004, Dr. Italo S. Vega 10-5

10 para o valor de n? São os mesmos valores mostrados na execução da tarefa anterior? Tarefa 10.2.10 Qual mensagem é emitida pelo compilador sobre a variávelcontador i, caso o método de cálculo da média contenha: // Passos iniciais for( int i = 1; i <= s.n; i++ ) { // Acumulo a somatória do i-ésimo número // na variável "somatoria". } // Mostro o total da somatória System.out.println( "Media= " + (somatoria/i) ); // Passos complementares Qual alteração faria este trecho de código compilar e produzir o resultado correto? 10.3 SOMATÓRIA DOS NÚMEROS DE UM INTERVALO Considere o problema de calcular a soma dos números de um intervalo: Σi : inferior..superior = inferior + (inferior + 1)... + superior, supondo inferior superior. Tarefa 10.3.1 Proponha um mapa contendo os passos de uma computação que resulte no cálculo desta somatória de números. Tarefa 10.3.2 Somatoria: Refaça o mapa proposto acrescentando os contextos Intervalo e Intervalo armazena nas variáveis inferior:int e superior:int os limites do intervalo de inteiros a serem processados. Somatoria oferece o método calcular():int, que retorna a somatória dos números do intervalo s.inferior.. s.superior, sendo s uma referência para um objeto da classe Intervalo. Tarefa 10.3.3 Crie o projeto ex10.3. Tarefa 10.3.4 Crie as classes Intervalo e Somatoria, conforme o mapa de execução elaborado anteriormente. Tarefa 10.3.5 Crie os objetos s:intervalo e f:somatoria. Faça f se referir ao objeto s. Envie a mensagem s.mudarinferior(1), seguida de s.mudarsuperior(10), seguida da mensagem f.calcular(). O resultado corresponde Σi : 1..10 = 1 + 2 +... + 10? Tarefa 10.3.6 Preencha a seguinte tabela com a ajuda do programa: inferior superior Somatória 1 10 5 10 5 6 6 5 Copyright c 1998-2004, Dr. Italo S. Vega 10-6

Tarefa 10.3.7 Altere o mapa de modo a mostrar, também, a média dos números de um particular intervalo. Tarefa 10.3.8 Altere a implementação em Java, de modo a obter-se o efeito descrito por este novo mapa. Tarefa 10.3.9 Preencha a seguinte tabela com a ajuda do programa: inferior superior Média 1 10 5 10 5 6 10.4 INVESTIMENTO Um investidor fez um investimento de $1000,00, com retorno de 5% aa. O saldo do investimento no final do n-ésimo ano pode ser calculado por: onde: q é o saldo no final do ano n p é o investimento inicial i é a taxa de retorno anual n é o total de anos do investimento q = p(1 + i) n Tarefa 10.4.1 Assumindo que todo o retorno é reinvestido no final de cada ano, proponha um mapa de execução que calcule e mostre o saldo em conta no final de cada ano, durante os primeiros n anos. Tarefa 10.4.2 Refaça o mapa proposto acrescentando os contextos AplicacaoFinaceira e Investidor: Investidor armazena na variável p:double o valor do investimento, e na variável n, o total de anos do investimento. A armazenagem deve ser feita pela execução do método aplicar(novop:double, novon:double):void. AplicacaoFinaceira oferece o método calcular():double, que retorna o valor do saldo i.p ao final do i.n anos de investimento, supondo que i é uma referência para um objeto da classe Investidor. A taxa de retorno, necessária para o cálculo do saldo, deve ser armazenada na variável i:double. Tarefa 10.4.3 Crie o projeto ex10.4. Tarefa 10.4.4 Crie as classes Investidor e AplicacaoFinaceira, conforme o mapa de execução elaborado anteriormente. Copyright c 1998-2004, Dr. Italo S. Vega 10-7

OBS: x y pode ser calculado, em Java, com: Math.pow(x,y). Tarefa 10.4.5 Crie os objetos ze:investidor e a:aplicacaofinanceira. Faça a] se referir ao objeto [[ze. Envie a mensagem ze.aplicar(1000.00, 10), seguida de a.calcular(). Qual o resultado obtido? Tarefa 10.4.6 Preencha a seguinte tabela: p n i q $100.0 1 1% $1000.0 2 5% $ 100.0 1 1% $100.0 2 5% Faça uma análise dos resultados obtidos. 10.5 PADRÕES DE DESENHO Para cada um dos seguintes padrões de estrelas, proponha um mapa de execução, contextos de execução apropriados e a respectiva implementação em Java, de modo que os padrões sejam apresentados no monitor do computador. (Inspirado em Lewis & Loftus, Java Software Solutions: Foundations of Program Design, 2001, Addison-Wesley.) Tarefa 10.5.1 Tarefa 10.5.2 Tarefa 10.5.3 Copyright c 1998-2004, Dr. Italo S. Vega 10-8

10.6 PADRÕES DE DESENHO Para cada um dos seguintes padrões de estrelas, proponha um mapa de execução e a respectiva codificação, de modo que os padrões sejam apresentados no monitor do computador. (Inspirado em Lewis & Loftus, Java Software Solutions: Foundations of Program Design, 2001, Addison-Wesley.) Tarefa 10.6.1 Tarefa 10.6.2 Tarefa 10.6.3 Copyright c 1998-2004, Dr. Italo S. Vega 10-9

Copyright c 1998-2004, Dr. Italo S. Vega 10-10