Programação em Java Prof. Maurício Braga

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

Funções em C Prof. Fabiano Utiyama.
Programação orientada a objetos
Programação em Java Prof. Maurício Braga
Software Básico Silvio Fernandes
Soluções Iterativas com Laços
Construção de Algoritmos 2
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Métodos, Parâmetros, Argumentos e Contratos
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Interação entre objetos
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Introdução à Programação
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Recursividade Inhaúma Neves Ferraz
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
EQUAÇÕES POLINOMIAIS Prof. Marlon.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem C Funções.
Classes e objetos Arrays e Sobrecarga
Estrutura de decisão e repetição em JAVA
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Estrutura de Dados em Java
Algoritmos e Programação
CRIANDO OBJETOS EM JAVA
JAVA: Conceitos Iniciais
Unidade I: “Dê um mergulho rápido”
PROGRAMAÇÃO I UNIDADE 1.
Introdução à Programação
Funções Universidade Federal de Ouro Preto - UFOP
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Orientação a Objetos e Java Graduação em Ciência da Computação
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Campus de Caraguatatuba Aula 2: Somatório e Produtório
By Ducheno Kelly Centro de Formação São Domingos.
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Wagner Santos C. de Jesus
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Programação Orientada a Objetos - Java
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Funções Matemáticas e de String
JAVA Sintaxe.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo III Comandos de Controle.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 3 Funções Monitoria Introdução à Programação.
Recursividade Profs. De Prog2 e Lab2.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Linguagem de Programação I Parte IV
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Laboratório de Programação II Método main Dados e Métodos de Classes.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

Programação em Java Prof. Maurício Braga Modularização Programação em Java Prof. Maurício Braga

Modularização A medida que abordamos problemas mais complexos, os programas também apresentarão uma maior complexidade. A complexidade não está relacionada a quantidade de comandos existentes, e sim às diversas combinações possíveis dos comandos à disposição. Os comandos que possuímos são poucos, mas podemos realizar diversas combinações com os mesmos. A complexidade de um problema pode dificultar a construção do programa de sua solução Devemos tentar dividi-lo em partes menores, resolvendo cada um dos subproblemas separadamente.

Modularização de programas Consiste em dividir um programa em etapas, fazendo com que cada etapa seja parte da solução de um problema maior. Se um subproblema ainda parecer muito complexo, podemos tentar dividi-lo em partes menores, para facilitar sua solução, e assim sucessivamente. “Dividir para conquistar” Nós temos dificuldade de resolver problemas quando os mesmos possuem uma grande quantidade de elementos inseridos. A modularização é a forma humilde de reconhecermos esta dificuldade, mas ainda assim resolvermos o problema.

Modularização em Java Realizada através do uso de métodos, também chamados de funções ou procedimentos. Todo programa escrito em Java possui pelo menos uma função ( a função main). Todas as funções precisam ser chamadas para ser executadas. A única exceção é a função main, que é invocada automaticamente pelo sistema quando o programa é executado. Ao encontrar uma chamada para uma função, o fluxo de execução do programa desvia para o local onde a função existe, e executa a mesma. Ao terminar a execução da função, o fluxo de execução retorna para o local onde a função foi chamada. A execução do programa é reiniciada na linha seguinte à linha onde a função foi acionada.

Modularização em Java

Modularização em Java Todas as funções devem indicar se retornam um valor para quem chamou a função ou não. Caso não seja necessário retornar um valor, deve-se declarar o retorno como void. Caso a função retorne um valor, devemos usar o comando return seguido de uma variável ou constante para retornar esse valor para quem chamou a função. Java possui uma grande quantidade de funções disponíveis para uso imediato pelo programador. Para ter acesso a algumas funções pode ser necessário usar o comando import. O nome da função, em conjunto com os parâmetros que ela recebe identificam a assinatura da função.

Criando funções em Java A sintaxe que usaremos para criar uma função é: Para chamar uma função, basta inserirmos em algum ponto do programa o nome da mesma, junto com a lista de parâmetros (se houver) que a mesma recebe. <nome_função>(parametro1, parametro2); public static [retorno] <nome_função>([Parâmetro1],..., [ParâmetroN]) { <comando1>; <comando2>; ... <comandoN>; }

Criando funções em Java Exemplo de uma função que imprime uma frase na tela: Para chamar essa função, basta inserirmos em algum ponto do programa o nome da mesma, junto com a lista de parâmetros que a mesma recebe. public static void escreva(String frase) { System.out.println(frase); }

Exemplo public class programa { public static void main(String[] args) { String s1 = “testando o método Escreva”; Escreva(s1); } public static void escreva(String frase) { System.out.println(frase);

Compartilhando variáveis entre funções Caso seja necessário acessar ou alterar o valor de uma variável dentro de mais de uma função, devemos declarar a variável dentro da classe, mas fora de qualquer função. Nesse caso, deve-se usar o modificador static antes do tipo da variável. As variáveis criadas dentro de funções recebem o nome de variáveis locais, e só existem dentro das funções onde foram criadas. As variáveis criadas dentro de uma classe com o modificador static podem ser utilizadas em qualquer lugar da classe.

Exemplo public class programa { static String s1 = “qualquer coisa”; public static void main(String[] args) { System.out.println("imprimindo o valor de s1 de dentro da função main."); System.out.println("s1 = " + s1); escreva_Frase(); System.out.println(“De volta para a função main.”); } public static void escreva_Frase() { System.out.println("imprimindo o valor de s1 de dentro da função escreva_Frase.");

Exemplo

Exemplo Exemplos Solução Numa loja de materiais de construção, um azulejo estampado custa R$2,50. Faça um programa para ler o comprimento e a altura de uma parede (em metros), e depois escrever o valor a ser gasto com a compra de azulejos. Considere que um metro quadrado é formado por 9 azulejos. Solução A saída é o valor total gasto com azulejos. O computador precisa saber o comprimento e a altura da parede. Quais são os cálculos necessários?

Exemplo Solução (cont.) Multiplicando a altura pelo comprimento, teremos a área da parede (considerando uma parede retangular); Multiplicando a área pelo número 9, teremos a quantidade de azulejos necessários para preencher esta área; Uma vez que um azulejo custa R$2,50 (um valor constante), podemos multiplicar a quantidade de azulejos por 2,5 para chegar ao total gasto.

Exemplo Solução sem uso de modularização: Variáveis gasto_azulejos, comprimento, altura, area, azulejos: real; Início escrever “Digite o comprimento em metros: ”; ler comprimento; escrever “Digite a altura em metros”; ler altura; area = comprimento * altura; azulejos = area * 9; gasto_azulejos = azulejos * 2.5; escrever “Quantidade de azulejos necessária: “, azulejos; escrever “Valor gasto com azulejos: R$ “, gasto_azulejos; Fim

Exemplo Solução (cont.) Pensando em termos de um algoritmo, podemos imaginar três etapas: Variáveis ? ? ?; Início “Obter as dimensões da parede e calcular a área”; “Calcular o valor gasto com azulejos”; “Escrever o resultado calculado”; Fim

Exemplo Solução (cont.) Detalhando o cálculo do valor gasto. Variáveis gasto_azulejos, comprimento, altura, area, qtd_azulejos: real; Início LER_DIMENSOES_E_OBTER_AREA; CALCULAR_VALOR_GASTO; ESCREVER_GASTO; Fim. Módulo CALCULAR_VALOR_GASTO; [[...]]; Módulo LER_DIMENSOES_E_OBTER_AREA; Módulo ESCREVER_GASTO;

Solução em Java public class MinhaClasse { static double comprimento = 0, altura = 0, qtd_azulejos = 0, gasto_azulejos = 0; public static double ler_Dimensoes_E_Obter_Area() { double area =0; System.out.println("digite o comprimento em metros:"); comprimento = Leia(comprimento); System.out.println("digite a altura em metros:"); altura = Leia(altura); area = comprimento * altura; return area; } public static void calcular_Valor_Gasto(double area) { qtd_azulejos = area * 9; gasto_azulejos = qtd_azulejos * 2.5; public static void escreva(String frase) { System.out.println(frase);

Solução em Java double area = 0; public static void main(String[] args) { double area = 0; String resposta1 = "", resposta2 = ""; area = ler_Dimensoes_E_Obter_area(); calcular_Valor_Gasto(area); resposta1 = "Quantidade de azulejos necessária: " + qtd_azulejos; escreva(resposta1); resposta2 = "Valor gasto com azulejos: R$ " + gasto_azulejos; escreva(resposta2); } } // fim da classe

Solução em Java

Vantagens do uso de funções Facilita a resolução de problemas complexos; Viabiliza a divisão do trabalho entre a equipe de desenvolvimento (cada programador ou grupo de programadores pega um pedaço do problema para resolver e trabalha de forma independente); Desenvolvimento mais rápido de programas (várias funções podem ser escritas em paralelo pelos membros da equipe).

Vantagens do uso de funções Incentiva a divisão de responsabilidades; Reuso de funções desenvolvidas em projetos anteriores ou obtidas externamente diminui o tempo de desenvolvimento de novos programas; Aumento de qualidade pelo uso de funções cujo funcionamento foi validado em projetos anteriores.

Exercícios Escreva uma função que recebe uma quantidade qualquer de valores e retorna a média desses valores. Escreva uma função que receba um número inteiro positivo e retorne o fatorial desse número. Uma das maneiras de se obter a raiz quadrada de um número inteiro é subtrair do número os ímpares consecutivos a partir de 1, até que o resultado da subtração seja menor ou igual a zero. O número de vezes que se conseguir fazer a subtração é a raiz exata (se o resultado final da subtração for zero) ou aproximada (se o resultado final da subtração for negativo). Escreva uma função que receba um número inteiro positivo e calcule a raiz quadrada desse número.

Solução exercício 1 public static double media(double[] v) { double soma = 0, media = 0; for (int i = 0; i< v.length; i++) { soma = soma + v[i]; } media = soma / v.length; return media;

Solução exercício 2 public static int fatorial(int numero) { if (numero == 0 || numero ==1) return 1; for (int i = numero; i> 0; i--) { fatorial = fatorial*i; } return fatorial;

Solução exercício 3 public static void raizQuadrada(int numero) { int i = 1, contador = 0, n = numero; while (n >0) { n = n - i; i = i+2; contador = contador +1; } if (n ==0) System.out.println("Raiz exata de " + numero + ": " + contador); else { contador = contador - 1; System.out.println("Raiz aprox. de " +numero+ ": " + contador);