Duvida Pascal

3 respostas
M

Estou com dúvida em procedure, na linguagem Pascal, estou confundindo passagem por parâmetro e passagem por referência. Vocês podem me ajudar sobre e como posso usar procedure em JAVA?

3 Respostas

R

Procedures em Java basicamente são métodos sem retorno (void), exemplo:

public class TesteProcedure {
    public static void main(String[] args) {
        //faz algo sem return...
    }
}

Já o caso de passagem de parâmetros em Java, como ele não é igual C puro que permite manipular ponteiros diretamente, tudo o que for objeto (new AlgumaClasse), quando passado para um método será por referência… ex:

Objeto obj = new Objeto();
outroObj.metodo(obj); //teve new...

Já a passagem por valor (e não parâmetro como vc disse, já que parâmetro vale tanto para valor quanto para referência…), é tudo o que for primitivo (e não usa new AlgumaClasse): byte, char, short, int, float, long, double e boolean, atenção não confundir com Byte, Character, Short, Integer, Float, Long, Double e Boolean (essas são classes…) ex:

int a = 10;
obj.metodo(a); //não teve new

Apenas complementando, o próprio método main além de atuar como procedure, espera um parâmetro por referência (String[] args)… se fosse assim:

public static void main(int args) {
     //faz algo...
 }

Seria por valor, pegou?

Ia me esquecendo, caso vc veja algo assim:

public void metodo(int[] array) {
    //faz algo...
}

Apesar de ser primitivo (int lembra?), nesse caso é passado por referência, já que para o java qualquer array (vetor), é um objeto, mesmo sendo de primitivos… não vou aprofundar muito nisso pra não te dar nó, mas fica esperto apenas nesses casos ok?

Espero ter ajudado

S

O equivalente à procedures são métodos sem retorno, ou seja, métodos void.

P

Pascal possui functions e procedures. Java não

Java vc tem apenas metodos, que retornam algo ou nada ( void )

Mas o metodo esta ligado a uma instancia ou classe ( no caso de metodo static )

vc pode chamar metodos dentro da classe / instancia sem os qualificadores e isso emula function/ procedure na sua sintaxe, mas fora disso vc sempre tem que fazer algo como

instance.metodo()
ou
Classe.metodo()

tem as lambdas que podem ser uma exceção, mas no geral é isso.

Criado 5 de setembro de 2018
Ultima resposta 6 de set. de 2018
Respostas 3
Participantes 4