BC0505 Processamento da Informação

Documentos relacionados
Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Algoritmos e Programação II. Sobrecarga

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Exercícios de Revisão Java Básico

insfcanceof new public switch transient while byte continue extends for int null

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Encapsulamento de Dados

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

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

Desenvolvimento OO com Java Orientação a objetos básica

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

DEFINIÇÃO DE MÉTODOS

Implementando uma Classe e Criando Objetos a partir dela

Estrutura Condicional em Java

5 Apresentando a linguagem C

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Algoritmos e Programação

Java Como Programar, 8/E

Introdução a Computação

LINGUAGEM ORIENTADA A OBJETOS

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Orientação a Objetos e a Linguagem Java

Linguagem de Programação C

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Aula 3 Objeto atual com referencia THIS e Classes com Herança

POO Programação Orientada a Objetos. Classes em Java

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

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

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.

INTRODUÇÃO À LINGUAGEM C++

UNIVERSIDADE FEDERAL DO PARANÁ

Modificador static e Pacotes. Alberto Costa Neto DComp - UFS

Sintaxe Básica de Java Parte 1

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

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

Programação: Estruturas de seleção

TÉCNICAS DE PROGRAMAÇÃO

Programação Orientada a Objetos em Java

Trabalho 3: Agenda de Tarefas

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Paradigmas da Programação APROG. Classes JAVA. Nelson Freire (ISEP DEI-APROG 2013/14) 1/43

2 Orientação a objetos na prática

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

3 Classes e instanciação de objectos (em Java)

Linguagens de Programação Aula 10

A Linguagem Java. Alberto Costa Neto DComp - UFS

Análise e Projeto Orientados por Objetos

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Professor: Douglas Sousa Cursos de Computação

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

ESTRUTURA BÁSICA DE UM PROGRAMA JAVA

Noções sobre Objetos e Classes

Introdução a Java. Hélder Nunes

Computação II Orientação a Objetos

Programação Orientada a Objeto

Vetores. Professor Dr Francisco Isidro Massettto

Java 2 Standard Edition Como criar classes e objetos

Estrutura de Dados Básica

Projeto de Software Orientado a Objeto

Reuso com Herança a e Composiçã

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

José Romildo Malaquias

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Tipos agregados. Tipos estruturados

Linguagem de Programação I. Orientação a Objetos em Java

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

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

Java Threads. Introdução

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

7. Estrutura de Decisão

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

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

Conceitos básicos da linguagem C

BSI UFRPE Prof. Gustavo Callou

BC0501 Linguagens de Programação

Trabalho Prático 1 Tipos Abstratos de Dados

Variáveis e Comandos de Atribuição

Programação de Computadores - I. Profª Beatriz Profº Israel

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

NOVIDADES DO JAVA PARA PROGRAMADORES C

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

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

Instruções de controle: Parte by Pearson Education do Brasil

Unidade IV: Ponteiros, Referências e Arrays

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Transcrição:

BC0505 Processamento da Informação Assunto: Modularização de código e passagem de parâmetros Aula Prática: 4 Versão: 0.2 Introdução Modularização No Java, como em outras linguagens de Programação Orientadas a Objeto, o código pode ser simplificado empregando-se métodos de classe, de princípio análogo às funções nas linguagens funcionais. Em algoritmos seqüenciais, como os estudados nesta disciplina, sem empregar Programação Orientada a Objeto, não há diferenças notáveis entre métodos e funções. Toda a classe executável em Java já deve incluir ao menos um método, o método main, que é aquele chamado automaticamente pela JVM quando a classe principal é executada. Como já visto a declaração do método main é feita na forma: public static void main(string[] args) { código do usuário De forma similar, outros métodos podem ser definidos pelo usuário para executar blocos de código repetidos várias vezes. Por exemplo, uma função fatorial (recursiva) pode ser implementada em um método como segue: [1] [2] [3] [4] [5] [6] public static long fatorial(long n) { return n>1?n*fatorial(n - 1):1; [1] Métodos públicos podem ser acessados por outras classes. Em POO, métodos também podem ser privados e protegidos, por enquanto utilizaremos apenas métodos públicos. [2] Lembre-se também que métodos declarados como estáticos apenas podem acessar métodos e variáveis de classe estáticas (não instanciadas em objetos, ou únicas da classe). [3] O tipo da variável retornada pelo método deve ser declarado ou identificado por void (vazio) no caso do método não retornar nada. [4] A nomenclatura segue as mesmas regras de variáveis, como estudado (http://drop.io/processamento/asset/00-introd-prog-java-com-netbeans-pdf ). [5] Definimos os parâmetros de entrada do método declarando as variáveis locais que receberão os valores, separadas por vírgula, (existirão somente no escopo do método). [6] Caso o método não tenha sido declarado como void (vazio), o método deverá incluir um comando return, que finaliza a execução do método e retorna ao ponto de chamada o valor indicado. Métodos podem ser copiados e reutilizados em novos projetos. Métodos declarados públicos podem ser acessados externamente por qualquer classe, simplificando o código principal, o que é particularmente útil em projetos com códigos extensos. Para utilizar uma classe externa, basta importá-la no início da classe, caso não esteja no mesmo projeto. Quando utilizamos o método Math.pow(2,6) para efetuar a operação 2 6, estamos chamando o método pow (exponenciação) da classe padrão Math, que oferece funções (ex. sin(), cos(), random(), etc.) e constantes (Math.PI e Math.E ) matemáticas. Classes padrão do Java como System (chamadas do sistema), Math, String, Integer, Double, etc. são automaticamente incluídas. As demais devem ser manualmente especificadas, como java.util.scanner e javax.swing.joptionpane. 1

Atividade 1 Modularizando o código O código da página seguinte deve ser simplificado escrevendo-se métodos modulares com o objetivo de reduzir a repetição de código ao longo do programa. Por exemplo, o código: double valorinicial = Double.parseDouble( JOptionPane.showInputDialog("Valor inicial: ", "300")); int meses = Integer.parseInt( JOptionPane.showInputDialog("Quantos meses? ", "1")); retorna uma mensagem de erro no caso de uma entrada de dados inválida (faça o teste), ex. String vazia, caracteres não numéricos ou com erros de formatação, como, ao invés de. ). O comando pode ser substituído por um método que desempenhe a leitura incorporando tratamento de erros. double valorinicial = ler("valor inicial: ", 300); int meses = ler("quantos meses?", 1); implementando-se na classe um método ler de forma que: public static double ler(string m, double d) { try { return Double.parseDouble( JOptionPane.showInputDialog(m, d)); catch (Exception e) { e.printstacktrace(); return d; O método ler pode ser sobrecarregado* para aceitar outros tipos de variável, como números inteiros: public static int ler(string m, int i) { try { return Integer.parseInt(JOptionPane.showInputDialog(m, i)); catch (Exception e) { e.printstacktrace(); return i; Na estrutura try { comandos catch(exception) { código em caso de erro, o comando e.printstacktrace exibe a mensagem de erro produzida no console (pode ser omitida) apenas para fins didáticos, mas o programa continua sua execução normalmente, retornando o valor padrão especificado na chamada. Repare que o método chamado depende do valor passado e da variável que recebe o retorno. a) O programa a seguir não deve ser copiado, em lugar, tente reduzir ao máximo a repetição do código dentro do método main, tentando deixá-lo o mais breve possível. Dica: passe a um método os valores através de parâmetros, de forma que a chamada fique parecida com mensagem = tempo("investimento", juros, inicial, complemento, objetivo); * Sobrecarregar métodos significa criar vários métodos com mesmo nome, porem que operam com tipos de variáveis diferentes, aceitem parâmetros adicionais ou de tipos diferentes.

public class Main { /** Variáveis de classe ou "variáveis Globais" o modificador final indica uma constante */ final static double Poupanca = 1.0055; // + 0,55% ao mes na media final static double CDB = 1.0075; // + 0,75% ao mes final static double LTN = 1.01; // + 1% ao mes final static double Multimercado = 1.014; // + 1,4% ao mes final static double taxaanual = 0.01; // - 1% ao ano public static void main(string[] args) { double inicial = ler("qual o valor investido? ", 1000f); double complemento = ler("qual o complemento mensal? ", 0f); double objetivo = ler("qual o seu objetivo? ", 1000000f); String frase = String.format( "O tempo para um investimento de R$ %,.2f com aplicações "+ "mensais de R$ %,.2f\n atingir R$ %,.2f é:\n\n", inicial, complemento, objetivo); int double double juros = Poupanca; "%d meses (%d anos) na poupanca\n", juros = CDB; "%d meses (%d anos) no CDB\n", juros = LTN; "%d meses (%d anos) em Letras do Tesouro Nacional\n", juros = Multimercado; if (meses % 12 == 0) saldo -= saldo * taxaanual; "%d meses (%d anos) em Fundos Multimercado\n", JOptionPane.showMessageDialog(null, frase);

b) Modularize o código de forma que o novo método main contenha apenas um comando, como segue: public static void main(string[] args) { JOptionPane.showMessageDialog(null, frase(), "Planejamento financeiro", JOptionPane.CLOSED_OPTION); public static String frase() { double i = ler("qual o valor investido? ", 1000f); double c = ler("qual o complemento mensal? ", 0f); double o = ler("qual o objetivo? ", 1000000f); return String.format("O tempo para um investimento de R$ %,.2f\n" + "com aplicacoes mensais de R$ %,.2f atingir R$ %,.2f " + "seria:\n\n" + tempo("na Poupanca",.55, 0, i,c,o) + tempo("no CDB",.75, 0, i,c,o) + tempo("em Letras do Tesouro Nacional", 1.1, 0,i,c,o) + tempo("em Fundos Multimercado", 1.5, 1, i,c,o),i,c,o); public static String tempo(string s, double juros, double taxa, double saldo, double complemento, double objetivo) {... Atividade 2 Sobrecarga de métodos Como demonstrado na atividade anterior, os métodos podem ser sobrecarregados para lidar com tipos diferentes de entrada e saída. Podemos implementar classes com o propósito de oferecer ferramentas reutilizáveis para tratamento da informação de um dado tipo, ou que aceitem parâmetros distintos. O código a seguir introduz uma subclasse embutida que propõe operar um determinado tipo de objeto. Lembre-se que a classe principal (cujo nome é o mesmo do arquivo) sempre contém o método main.

a) Note que houve um erro ao utilizar valores de ponto flutuante. Isso ocorre porque o Java considera valores de dupla precisão como padrão. Uma solução é acrescentar um f no final do número, indicando que este é do tipo float. b) Modifique a classe Cubo para que opere com double. c) Crie um método para testar a isometria do cubo, retornando true se as laterais do cubo forem iguais. d) Crie um método que retorne a área de superfície do cubo. 3. Exercícios para Casa 3.1. Construa uma subclasse que receba um valor raio, que pode ser passado por byte, int, long, float ou double. Crie métodos distintos para retornar (em double): a) o perímetro da circunferência; b) a área do circulo; c) o volume da esfera; 3.3. Crie uma classe Temperatura que receba uma temperatura em graus Celsius, Fahrenheit e Kelvin através dos métodos celsius(t), kelvin(t) e fahrenheit(t) (sobrecarregados) em qualquer formato (byte, int, long, float ou double) realizando as conversões necessárias. Um método tostring() deve retornar uma String no seguinte formato: "%f ºC = %f ºF = % K". Dados: (Fahrenheit) = 1.8*(Celsius) + 32; (Kelvin) = (Celsius) + 273.15;