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

ESTRUTURA CONDICIONAL

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

BC0501 Linguagens de Programação

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

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Introdução à Lógica de Programação (cont.)

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Programação WEB I Estruturas de controle e repetição

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Programação: Estruturas de seleção

Linguagem algorítmica: Portugol

Orientação a Objetos

IFTO LÓGICA DE PROGRAMAÇÃO AULA 02

JSP - ORIENTADO A OBJETOS

e à Linguagem de Programação Python

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Introdução a Java. Hélder Nunes

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Programação Básica em Arduino Aula 2

Laboratório de Programação

Algoritmos com VisuAlg

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Aula 3 Desvio Condicional

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Algoritmos e Programação de Computadores

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Expressões. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Introdução a Algoritmos Parte 04

Java. Marcio de Carvalho Victorino

Sintaxe Básica de Java Parte 1

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

Roteiro 1: Dados, variáveis, operadores e precedência

Algoritmos Computacionais ( Programas )

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Estrutura Condicional em Java

Noções sobre Objetos e Classes

PLANILHA PARA GERENCIAR NOTAS DAS TURMAS

INF 1007 Programação II

2 Orientação a objetos na prática

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

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Álgebra Booleana. Introdução ao Computador 2010/01 Renan Manola

Apresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:

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

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Capítulo 2: Introdução à Linguagem C

Organização de programas em Python. Vanessa Braganholo

Busca. Pesquisa sequencial

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

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

JavaScript (ou JScript)

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Estruturas de entrada e saída

Java Como Programar, 8/E

Portas Lógicas Básicas Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

ICC Introdução para JavaScript

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

QualiQuantiSoft Versão 1.3c

INTRODUÇÃO À LINGUAGEM C++

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

Implementação de Classe e Auto-Relacionamento em Java

2ª Lista de Exercícios Orientação a Objetos

Controle do Arquivo Técnico

Aula 02: C# - Estruturas de Decisão

Aplicações de Escritório Electrónico

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

QUESTÃO 01 - DIAGRAMA DE SEQUENCIA (CONCEITOS)

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Expressões Lógicas Comandos de Seleção

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

Orientações, Dicas e Atalhos para registrar e consultar documentos no sistema ERP.

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

9 Comandos condicionais

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

Programação online em Java

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

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

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

Roteiro do Programa e Entrada/Saída

Simulado de Linguagem de Programação Java

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

Programação Elementar de Computadores Jurandy Soares

Especificação Técnica

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

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 7 Prof. ISVega Março de 2004 Controle de Execução: Seleção Simples CONTEÚDO 7.1 Representação de Condições............ 2 7.2 Seleção de Uma Rota................ 4 Exercícios.......................... 5 Objetivos Estudar a representação de condições lógicas. Apresentar e estudar a estrutura de controle simples. As estruturas que controlam a realização de computações podem ser classificadas em estruturas de seleção e estruturas de repetição. As estruturas de seleção são utilizadas para descrever a realização de computações mutuamente exclusivas. Isto é, de um conjunto de computações que podem ser realizadas, apenas uma delas será selecionada pela estrutura de controle. A seleção é feita com base no valor produzido pela avaliação de uma condição. Estruturas de Seleção são caracterizadas pelo uso de uma condição para selecionar uma computação. Em termos de mapas de execução, este efeito é descrito por uma bifurcação na rota normal de uma computação. As estruturas de repetição, por outro lado, são utilizadas para descrever situações onde uma computação é repetida diversas vezes. A quantidade de repetições depende do valor produzido pela avaliação de uma condição. 1

Estruturas de Repetição são caracterizadas pelo uso de uma condição para repetir uma computação. Em termos de mapas de execução, este efeito é descrito por uma bifurcação na rota normal de uma computação, conduzindo a um trecho anterior da rota no mapa. 7.1 Representação de Condições O controle nas estruturas de seleção e de repetição é feito com base no valor lógico de uma condição. Ou seja, condições são utilizadas para selecionar rotas alternativas ou para decidir a continuação repetida de computações. Condição é representada por uma expressão que, ao ser avaliada, produz um valor do tipo boolean: true ou false. As expressões que representam condições podem ser classificadas em expressões relacionais e expressões lógicas. Expressões Relacionais Expressões relacionais são construídas com operadores relacionais. Tais expressões são utilizadas para representar condições que comparam um valor com outro, através de um operador relacional. Os operadores relacionais mais comuns são: Operador Símbolo Ordem Exemplo Significado Maior > 2 x > y x é maior do que y? Maior ou igual >= 2 x >= y x é maior ou igual à y? Menor < 2 x < y x é menor do que y? Menor ou igual <= 2 x <= y x é menor ou igual à y? Igualdade == 3 x == y x é igual à y? Desigualdade!= 3 x!= y x é diferente de y? Os operadores com menor ordem são avaliados antes dos operadores com maior ordem. Quando as ordens de avaliação dos operadores envolvidos forem iguais, far-se-á a avaliação da esquerda para a direita. Expressões Lógicas Expressões lógicas são construídas com operadores lógicos. Tais expressões podem ser utilizadas para representar condições complexas a partir de expressões-condição mais simples. Os seguintes operadores lógicos são normalmente definidos: Copyright c 1998-2004, Dr. Italo S. Vega 7-2

Operador Símbolo Ordem Exemplo Significado Negação! 1! x negação de x Conjunção && 4 x && y conjunção de x e y Disjunção 5 x y disjunção de x e y Os operadores com menor ordem são avaliados antes dos operadores com maior ordem. Quando as ordens de avaliação dos operadores envolvidos forem iguais, far-se-á a avaliação da esquerda para a direita. Cada operador lógico, ao ser avaliado, produz um valor do tipo boolean obedecendo uma tabela-verdade. A tabela verdade para o operador! é: Tabela-verdade do Operador de Negação Expressão! Expressão false true true false A tabela verdade para o operador é: Tabela-verdade do Operador de Disjunção Expressão 1 Expressão 2 Expressão 1 Expressão 2 false false false false true true true false true true true true A tabela verdade para o operador && é: Tabela-verdade do Operador de Conjunção Expressão 1 Expressão 2 Expressão 1 && Expressão 2 false false false false true false true false false true true true Condições Complexas Condições complexas podem ser representadas combinando-se expressões relacionais e expressões lógicas. Exemplo 7.1 Considerando-se que um aluno esteja aprovado somente quando sua média for maior ou igual a 7, e sua presença em aula tenha sido, no mínimo, 75%, a seguinte expressão poderia ser utilizada para representar esta condição: ( media >= 7 )&&( frequencia >= 0.75 ) Esta expressão, quando avaliada com media assumindo o valor 8 e frequencia o valor 0.95, produzirá o valor true. Interpreta-se este valor como condição válida. Copyright c 1998-2004, Dr. Italo S. Vega 7-3

7.2 Seleção de Uma Rota A bifurcação de uma rota pode ser utilizada para representar o caso onde o trecho que deve ser percorrido está subordinado a uma determinada condição. Este padrão estrutural de mapas é mostrado na Figura 7.1. Representada por uma expressão lógica ou relacional. [ condição = true ] a [ condição = false ] A avaliação da condição produz um valor do tipo boolean. Figura 7.1: Estrutura de um mapa de execução representando uma seleção simples de rota. Os ramos de rota da bifurcação encontram-se associados a uma condição. Condições podem ser representadas por uma expressões lógicas ou expressões relacionais e, quando avaliadas, produzem valores do tipo boolean. No caso do mapa da Figura 7.1, se o valor produzido pela avaliação da expressão que representa a condição for o valor true, a rota cruza o passo a. Entretanto, se a expressão produzir o valor false, a computação segue um desvio que não cruza o passo a. O diagrama sintático para a descrição de computações com seleção simples é: CmdSelecao if ( Condicao ) Comando Tais estruturas podem ser codificadas segundo o padrão: if( <condição> == true ) { // seqüência de passos da computação quando a condição for true Copyright c 1998-2004, Dr. Italo S. Vega 7-4

EXERCÍCIOS 7.1 CONDIÇÕES SIMPLES Considere a seguinte a classe CondicaoSimples do projeto ex7.1: public class CondicaoSimples { public int a; public int b; public void obterab( int novoa, int novob ) { a = novoa; b = novob; public void avaliar() { System.out.println( "a>b == " + ( a > b ) ); System.out.println( "a>=b == " + ( a >= b ) ); System.out.println( "a<b == " + ( a < b ) ); System.out.println( "a<=b == " + ( a <= b ) ); System.out.println( "a==b == " + ( a == b ) ); System.out.println( "a!=b == " + ( a!= b ) ); Tarefa 7.1.1 Preencha a tabela: a b a > b a >= b a < b a <= b a == b a! = b 4 7 4 4 3 4 Tarefa 7.1.2 Altere a descrição da classe de modo que as variáveis a e b sejam declaradas do tipo double. Preencha a tabela: a b a > b a >= b a < b a <= b a == b a! = b 4.0 7.0 4.0 3.99999 3.99999 4.0 7.2 CONDIÇÕES COMPLEXAS Considere a seguinte a classe CondicaoComplexa do projeto ex7.2: public class CondicaoComplexa { public int a; public int b; public void obterab( int novoa, int novob ) { a = novoa; b = novob; public void avaliar() { System.out.println( "a>b == " + ( a > b ) ); System.out.println( "!(a>b) == " + (! ( a > b ) ) ); System.out.println( "(a>=b)&&(a<b) == " + (( a >= b )&&( a < b )) ); System.out.println( "(a>=b) (a<b) == " + (( a >= b ) ( a < b )) ); System.out.println( "a==b == " + (a == b) ); System.out.println( "!(a==b) == " + (!( a == b ))); System.out.println( "a!=b == " + (a!= b) ); Tarefa 7.2.1 Preencha as tabelas: Copyright c 1998-2004, Dr. Italo S. Vega 7-5

Tarefa 7.2.2 a b a > b!(a > b) (a < b)&&(a < b) (a >= b) (a < b) 4 7 4 4 3 4 a b a == b!(a == b) a! = b 4 7 4 4 3 4 Acrescente o seguinte comando no final do método avaliar(): System.out.println( "Resultado= " + (! a == b )); O que acontece como resultado da compilação da aplicação alterada? Porquê? 7.3 SELEÇÃO DE UMA ROTA Tarefa 7.3.1 Crie um novo projeto denominado ex7.3. Digite e salve a seguinte classe em um arquivo denominado Detetor.java: public class Detetor { public Entrada entrada; public Saida saida; public Detetor() { entrada = new Entrada(); saida = new Saida(); public void determinarlimite() { String limite = "Normal"; int nivel = entrada.nivel; if( nivel > 5 ) { limite = "Acima do limite"; saida.mostrar( limite ); Tarefa 7.3.2 Entrada.java: Digite e salve a seguinte classe em um arquivo denominado public class Entrada { public int nivel; public void obternivel( int novo ) { nivel = novo; Tarefa 7.3.3 Saida.java: Digite e salve a seguinte classe em um arquivo denominado public class Saida { public void mostrar( String resultado ) { System.out.println( resultado ); Tarefa 7.3.4 Crie o objeto d:detetor e recupere o objeto entrada. Altere o nível de entrada de acordo com a tabela a seguir, e anote os resultados apresentados na saida: nivel saida 4 5 6 Copyright c 1998-2004, Dr. Italo S. Vega 7-6

Tarefa 7.3.5 O mapa de execução mostrado na Figura 7.1 procura descrever a computação realizada pela execução do código da aplicação. limite:string = Normal Acima do limite [ nível > 5 ] determinarlimite( ) obternivel( ) nivel:int = 5 mostrar( limite ) Figura 7.2: Mapa de execução para a computação descrita pela aplicação Java. A seqüência de responsabilidades do mapa corresponde à seqüência de ações descrita pelo código da aplicação? Justifique a sua resposta. Tarefa 7.3.6 Refaça o mapa anterior acrescentando os contextos d:detetor, entrada e saida. 7.4 MÁXIMO DE DOIS INTEIROS Tarefa 7.4.1 Crie um novo projeto denominado ex7.4. Descreva a classe Teto de modo a ser possível obter dois inteiros e mostrar o maior deles seguido das palavras " é maior". (A computação deve envolver, também, as classes Entrada e Saida, convenientemente elaboradas.) As variáveis que armazenam os números digitados devem ser chamadas de numero1 e numero2. A variável que armazena o valor a ser mostrado deve ser chamada de resultado. Tarefa 7.4.2 as rotas de execução, Faça um mapa de execução destacando: os passos onde ocorrem as alterações das variáveis numero1, resultado, numero2, o ponto onde ocorre a condição que verifica qual dos números é o maior. o ponto onde o valor da variável resultado é apresentado para o usuário. Tarefa 7.4.3 Execute a aplicação e preencha a seguinte tabela: numero1 numero2 saida 4 3 4 4 4 5 7.5 NÚMEROS PARES Números pares têm a propriedade de serem divisíveis por 2. Copyright c 1998-2004, Dr. Italo S. Vega 7-7

Tarefa 7.5.1 Proponha um mapa de execução que descreva a obtenção de um número seguida da determinação se ele é ou não um número par. (Use o operador %. Faça uso dos contextos Par, entrada e saida.) Tarefa 7.5.2 Crie um novo projeto denominado ex7.5. Escreva as classes que implementam o mapa elaborado na tarefa anterior. 7.6 SITUAÇÃO DE UM ALUNO A situação final de um aluno depende das notas obtidas nas provas P1 e P2. Com base nestas notas, a sua média é calculada pela fórmula: MF = (P1 + P2)/2 A situação final do aluno será APROVADO, caso o valor de MF seja maior do que 5. A situação do aluno, no entanto, será REPROVADO, no caso de MF não superar 5. Proponha um mapa de execução onde se garanta a seguinte seqüên- Tarefa 7.6.1 cia de passos: a) Digitar a nota P1. b) Digitar a nota P2. c) Calcular MF. d) Apresentar a situação final. Tarefa 7.6.2 Refine o mapa anterior com os contextos de execução professor responsável por calcular a média final de um aluno, aluno responsável por obter as notas P1 e P2 e mostrar o valor da média final. Tarefa 7.6.3 Crie um novo projeto denominado ex7.6. Escreva as classes que implementam o mapa elaborado na tarefa anterior. Copyright c 1998-2004, Dr. Italo S. Vega 7-8