You are on page 1of 10

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 o método
instanciado 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
O que muda na chamada do método no main?
tipo de dados que é devolvido, neste caso a
O método tem que receber os dois valores
soma de dois inteiros é ainda um valor
inteiros, como argumento. A diferença reside
inteiro, logo o tipo a indicar é int.
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<dim1; i++){
System.out.print("Insira o valor para a posição "+
(i+1)+" ");
vect1[i]=Keyboard.readInt();
}
System.out.println("2º Vector");
for (int i=0; i<dim2; i++){
System.out.print("Insira o valor para a posição "+
(i+1)+" ");
vect2[i]=Keyboard.readInt();
}
Programação e Algoritmos I

//Mostrar o conteúdo dos vectores


System.out.println("\n1º Vector");
for (int i=0; i<dim1; i++){
System.out.print(vect1[i]+"\t");
}
System.out.println("\n2º Vector");
for (int i=0; i<dim2; i++){
System.out.print(vect2[i]+"\t");
}
//Somar os dois vectores
if(dim1==dim2){
for (int i=0; i<dim1; i++){
soma[i]=vect1[i]+vect2[i];
}
//mostrar o conteúdo do vector soma
System.out.println("\nVector Soma ");
for (int i=0; i<dim1; i++){
System.out.print(soma[i]+"\t");
}
}
else
System.out.print("\nOs vectores não têm a mesma
dimensão ");

//Multiplicar um número inteiro pelo 1º vector


System.out.print("\n Número a multiplicar:");
numero=Keyboard.readInt();
for (int i=0; i<dim1; i++){
multiplicado[i]=vect1[i]*numero;
}
//Mostrar o vector resultante da multiplicação
System.out.println("\n Multiplicado");
for (int i=0; i<dim1; i++){
System.out.print(multiplicado[i]+"\t");
}

//Dividir o vector 2 pelo número inserido pelo utilizador


if (numero!=0){
for (int i=0; i<dim2; i++){
dividido[i]=vect2[i]/numero;
}

//Mostrar o vector resultante da divisão


System.out.println("\n Dividido");
for (int i=0; i<dim2; i++){
System.out.print(dividido[i]+"\t");
}
}
else
System.out.println("\n Divisão por zero!");
}

}
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<dim; i++){
System.out.print("Insira o valor da posição"
+(i+1)+"\t");
vector[i]=Keyboard.readInt();
}
return vector;
}

// Método mostra qualquer vector de inteiros


static void mostra_vect_i (int [] vector){
for (int i=0; i<vector.length; i++){
System.out.print(vector[i]+ "\t");
}
}

// Método mostra qualquer vector de com números reais


static void mostra_vect_d (double [] vector){
for (int i=0; i<vector.length; i++){
System.out.print(vector[i]+ "\t");
}
}

// 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<dim; i++){
soma[i]=vect1[i]+vect2[i];
}
return soma;
}

/* Método que efectua a multiplicação de qualquer vector de


inteiros por um número inteiro qualquer*/
static int [] multiplica (int [] vect, int dim, int valor){
int [] multiplicado= new int [dim];
for (int i=0; i<dim; i++){
multiplicado[i]=vect[i]*valor;
}
return multiplicado;
}
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<dim; i++){
dividido[i]= (double) vect[i]/(double) valor;
}
return dividido;
}

/* Como a divisão de dois números inteiros não é um inteiro na


maior parte dos casos
O vector resultante da divisão vai ser um vector de reais.
(double) vect[i]/(double) valor ---> 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!!");

You might also like