Programação e Algoritmos I
Métodos em JAVA Consideremos o código seguinte: Efectuar a soma de dois valores
Os cálculos são executados dentro do método main da classe. Este método existe sempre em qualquer classe de JAVA.
Programar usando métodos: Existem diversas formas de programar a soma de dois valores. Mesmo usando métodos, pode ter-se um: → Método que não recebe argumentos, nem retorma valores; → Método que recebe argumentos e não reyorna valores; → Método que recebe argumentos e retorna valores.
Analise-se a situação do cálculo da soma de dois valores para cada um dos casos anteriores.
Programação e Algoritmos I
Exemplo 1: Método que não recebe argumentos, nem devolve valores para o método main: Código JAVA com método para somar dois valores inteiros
Nome do Método
Os
valores
são
pedidos no dentro do método e o resultado impresso no ecrã.
Chamada do método dentro do método main
A vantagem da utilização dos métodos •
O método pode ser chamado várias vezes sem terem que se repetir as linhas de código;
•
Pode ser usado por outros métodos da mesma classe ou por outras classes diferentes.
Programação e Algoritmos I
Exemplo 2: Método que recebe argumentos e não devolve valores para o método main: Código JAVA com método para somar dois valores inteiros
Recebe
como
argumento
dois
valores do tipo inteiro.
Chama-se o método instanciado com dois valores inteiros.
Chama-se instanciado
o
método
com
dois
valores inteiros pedidos ao utilizador, guardados nas variáveis valor1 e Resultado da execução do código:
valor2.
Programação e Algoritmos I Exemplo 3: Método que recebe argumentos, nem devolve valores para o método main: Código JAVA com método para somar dois valores inteiros
Recebe
como
argumento
dois
valores do tipo inteiro.
Devolve a soma de a com b ou seja
um
valor
inteiro.
Quando um método devolve valores deixa de ser void e é necessário indicar qual o tipo de dados que é devolvido, neste caso a soma de dois inteiros é ainda um valor inteiro, logo o tipo a indicar é int.
O que muda na chamada do método no main? O método tem que receber os dois valores inteiros, como argumento. A diferença reside no facto de o método soma ter um return, assim é necessário receber o valor no método main. Como? Tem que ser criada uma variável do mesmo tipo do valor que é devolvido pelo método, para guardar o resultado da execução. No caso do método soma, é devolvido um valor do tipo int, assim no main é necessário declarar uma variavel do tipo int que guarde o valor retornado pelo método.
Programação e Algoritmos I Exemplo 4: Código Java com as quatro operações aritméticas definidas em métodos. import cs1.Keyboard; public class OperacaoesAritmeticas { static void soma (int a, int b){ System.out.println("Soma="+(a+b)); } static void subtraccao (int a, int b){ System.out.println("Subtracção="+(a-b)); } static void multiplicacao (int a, int b){ System.out.println("Multiplicação="+(a*b)); } static void divisao (int a, int b){ System.out.println("Divisão="+(a/b)); } public static void main(String[] args) { int valor1, valor2; char op; System.out.println("Insira o primeiro valor:"); valor1=Keyboard.readInt(); System.out.println("Insira o segundo valor:"); valor2=Keyboard.readInt(); do { System.out.println("Escolha a operação aritmética (+,-,*,/)"); op=Keyboard.readChar(); switch(op){ case '+': soma(valor1, valor2); break; case '-': subtraccao(valor1, valor2); subtraccao(valor2, valor1); break; case '*': multiplicacao(valor1, valor2); break; case '/': divisao(valor1, valor2); divisao(valor2, valor1); break; default: System.out.println("Operação inválida!!!"); } }while (op!='n'); } }
Programação e Algoritmos I Exercicio: Reformule o código anterior, com métodos que devolvam valores para o main.
Outros Exemplos Exemplo1: Sem usar métodos 1. Considere dois vectores inseridos pelo utilizador; 2. Efectue a soma dos dois vectores; 3. Solicite ao utlizador um número inteiro: a. Efectue a multiplicação de cada elemento do primeiro vector pelo número inserido; b. Efctue a divisão de todos os elementos do segundo vector pelo número inserido. import cs1.Keyboard; public class Vectores { public static void main(String[] args){ //Pedir ao utlizador a dimensão de cada vector int dim1, dim2, numero; System.out.println("Dimensão do 1º vector"); dim1=Keyboard.readInt(); System.out.println("Dimensão do 2º vector"); dim2=Keyboard.readInt(); //declarar os dois vectores de inteiros int [] vect1= new int [dim1]; int [] vect2= new int [dim2]; //Declarar vectores para guarda soma, o resultado da multiplicação e o resultado da divisão int []soma= new int [dim1]; int [] multiplicado= new int [dim1]; int [] dividido =new int [dim2]; //Carregar os vectores com dados pedidos ao utilizador System.out.println("1º Vector"); for (int i=0; i
Programação e Algoritmos I
//Mostrar o conteúdo dos vectores System.out.println("\n1º Vector"); for (int i=0; i
Programação e Algoritmos I Exemplo2: Usando métodos
import cs1.Keyboard; public class Vec_com_metodos { //Método que pede ao utilizador os dados para um vector de inteiros static int [] ler_vector (int dim){ int [] vector= new int [dim]; for (int i=0; i
// Método que efectua a soma de quaisquer dois vectores de inteiros static int [] soma (int [] vect1, int [] vect2, int dim){ int [] soma= new int [dim]; for (int i=0; i
Programação e Algoritmos I /* Método que efectua a divisão de qualquer vector de inteiros por um número inteiro qualquer*/ static double [] divide (int [] vect, int dim, int valor){ double [] dividido= new double [dim]; for (int i=0; i esta conversão é feita para obter resultados reais! */
public static void main(String[] args) { int dim1, dim2, valor; // Pedir as dimensões ao utlizador System.out.println("Insira a dimensão do 1º vector"); dim1=Keyboard.readInt(); System.out.println("Insira a dimensão do 2º vector"); dim2=Keyboard.readInt(); //Declarar dois vectores com as dimensões inseridas int [] v1=new int [dim1]; int [] v2=new int [dim2]; /*Declarar os vectores que vão guardar as operações com os vectores soma, resultado da multiplicação e resultado da divisão */ int [] s=new int [dim1]; int [] m=new int [dim1]; double [] d=new double [dim1]; // Chamar o método ler_vector para carregar os dados nos dois vectores v1=ler_vector(dim1); v2=ler_vector(dim2); /* Chamar o método mostra_vect_i que mostra o conteúdo de qualquer vector de inteiros */ System.out.println("\n\n 1º Vector"); mostra_vect_i(v1); System.out.println("\n\n 2º Vector"); mostra_vect_i(v2); // A soma dos dois vectores só se pode fazer se eles tiverem a mesma dimensão if (dim1== dim2){ System.out.println("\n\n Soma"); /*Chamar o método que soma os dois vectores e guardar o resultado numa variável do tipo vector de inteiros */ s=soma(v1,v2,dim1); //Mostra o resultado da soma mostra_vect_i(s); }
Programação e Algoritmos I else System.out.println("\nOs vectores não têm a mesma dimensão!!"); System.out.println("\nInsira o valor"); valor=Keyboard.readInt(); /*Chamar o método que multiplica o vector por um nº inteiro inserido pelo utilizador e guardar o resultado numa variável do tipo vector de inteiros */ System.out.println("\n\n Resultado da Multiplicação"); m=multiplica (v1, dim1, valor); /* Mostra o resultado da multiplicação do vector pelo nº inteiro */ mostra_vect_i(m); /* Só pode ser efectuada a divisão se o valor inserido pelo utilizador for diferente de zero */ if (valor!=0){ System.out.println("\n\n Resultado da Divisão"); /* Chama o método que faz a divisão de cada elemento do vector pelo nº inteiro */ d=divide(v2, dim2, valor); /*Mostra o conteúdo do vector, o método agora é o que mostra um vector de números reais */ mostra_vect_d(d); } else System.out.println("\nDivisão por zero!!"); } }