SlideShare uma empresa Scribd logo
1 de 33
Funções e Procedimentos

      Prof. Adriano Teixeira de Souza
   Procedimentos – são estruturas que agrupam um
    conjunto de comandos, que são executados
    quando o procedimento é chamado.

   Funções – são procedimentos que retornam um
    valor ao seu término.

   A Linguagem Java não faz distinção.




                           Prof. Adriano Teixeira de Souza
   Evitam que os blocos do programa fiquem grandes
    demais e mais difíceis de ler e entender.

   Ajudam a organizar o programa.

   Permitem reaproveitamento de códigos construídos
    anteriormente.

   Evitam repetição de trechos de
    códigos, minimizando erros e facilitando
    alterações.


                            Prof. Adriano Teixeira de Souza
<tipo> nome_da_função (<tipo> arg1, <tipo>
arg2, ...,                      <tipo> argN)
{

<corpo da função>

return valor_de_retorno;

}




                           Prof. Adriano Teixeira de Souza
   Exemplo de uma função:

       int soma(int a, int b)
       {
       int c;
       c = a + b;
       return c;
       }




                      Prof. Adriano Teixeira de Souza
Toda função deve ter um tipo                     Os argumentos (ou parâmetros)
(String, int, float), o qual indicará o        indicam o tipo e quais valores são
tipo de seu valor de retorno                  esperados para serem manipulados
(saída).                                                   pela função (entrada).


             int soma(int a, int b)
             {
             int c;
                                                                 Corpo da função
             c = a + b;
             return c;
             }


                                          Prof. Adriano Teixeira de Souza
   Uma função pode não ter argumentos, basta
    não informá-los. Exemplo:


       int random()
       {
       Random rand = new Random();
       return rand.nextInt(100);
       }




                       Prof. Adriano Teixeira de Souza
   A expressão contida no comando return é
    chamado de valor de retorno da função.

   Esse comando é sempre o último a ser executado
    por uma função. Nada após ele será executado.

   As funções só podem ser declaradas fora de outras
    funções. Lembre-se que o corpo do programa
    principal (main(String[] args)) é uma
    função!




                          Prof. Adriano Teixeira de Souza
   Uma forma clássica de realizarmos a invocação (ou
    chamada) de uma função é atribuindo o seu valor a
    uma variável:

       resultado = soma(x,y);


   Na verdade, o resultado da chamada de uma
    função é uma expressão, que pode ser usada em
    qualquer lugar que aceite uma expressão:

       System.out.println("Soma: ”+ soma(a,b) );




                                Prof. Adriano Teixeira de Souza
   Função que calcula a soma dos valores de x e
    y:
      static int x, y, resultado;
      static int soma(int a, int b){
         return (a + b);
      }

      public static void main(String[] args){
         x = 3;
         y = 5;
         resultado = soma(x, y);
         System.out.println(resultado);
      }


                          Prof. Adriano Teixeira de Souza
   As variáveis x e y no exemplo anterior são
    chamadas de parâmetros reais.

   Conforme exemplo anterior, os argumentos não
    possuem necessariamente os mesmos nomes que
    os parâmetros que a função espera.

    Seus valores são apenas copiados para a função
    chamada, sem ser afetados pelas alterações nos
    parâmetros dentro da função.




                           Prof. Adriano Teixeira de Souza
   É utilizado em procedimentos.
   É um tipo que representa o “nada”, ou seja:
    ◦ uma variável desse tipo armazena conteúdo
      indeterminado,
    ◦ uma função desse tipo retorna um conteúdo
      indeterminado.
   Indica que uma função não retorna nenhum
    valor, ou seja, é um procedimento.




                           Prof. Adriano Teixeira de Souza
void nome_do_procedimento (<tipo>
parâmetro1,             <tipo> parâmetro2, ..., <tipo>
parâmetroN)
{
<corpo do procedimento>
}




                          Prof. Adriano Teixeira de Souza
   Exemplo de procedimento:


      void imprime_dobro(int x)
      {
      System.out.println("Dobro de x: ”+ 2*x);
      }




                            Prof. Adriano Teixeira de Souza
   Para invocarmos um procedimento, devemos
    utilizá-lo como qualquer outro comando:

       procedimento(parâmetros);


   Compare a diferença de invocação de uma função:

       resultado = função(parâmetros);




                             Prof. Adriano Teixeira de Souza
static int x, y, resultado;

static void soma()
{
resultado = x + y;
}

public static void main(String[] args)
{
x = 3;
y = 5;
soma();
System.out.println(resultado);
}



                       Prof. Adriano Teixeira de Souza
   Parâmetros ou argumentos são os valores
    recebidos e/ou retornados por uma função.


   Podem ser divididos em duas categorias:
    ◦ Formais: correspondem aos parâmetros utilizados na
      definição da função.
    ◦ Reais: correspondem aos parâmetros da função chamadora
      utilizados para chamar a função.




                              Prof. Adriano Teixeira de Souza
Parâmetros formais

static int soma(int a, int b)
{
return (a + b);
}

public static void main(String[] args)
{
int x = 3;
int y = 5;
System.out.println(soma(x + y));
}

                        Parâmetros reais

                 Prof. Adriano Teixeira de Souza
   É o mecanismo de informar sobre quais valores o
    processamento definido na função deve ser realizado.

   Os parâmetros são passados para uma função de
    acordo com a sua posição.

   Os parâmetros formais de uma função se comportam
    como variáveis locais (criados na entrada e destruídos
    na saída)

   No caso do Java, esta variável pode representar um tipo
    primitivo ou um objeto.

   Existem duas categorias:
    ◦ Por valor
    ◦ Por referência



                               Prof. Adriano Teixeira de Souza
0001 1001


    Os valores das
                                                       0101 1010
                                                      1111 0101

    variáveis externas                                 1011 0011
                                                       0000 0001
    (função chamadora)              var                0001 1001


    são copiados para as
                                                       0101
                                                       0000   1010
                                                              0001
                                                       1111
                                                       0001   0101
                                                              1001

    variáveis internas da                              1011
                                                       0101
                                                       0000
                                                       1111
                                                              0011
                                                              1010
                                                              0001
                                                              0101
    função chamada.                                    0001   1001
                                                       0101 1010
                                                       1111 0101

   Alteração no valor das                             1011 0011
                                                       0000 0001
    variáveis terá efeito var_interna                  0001 1001


    local à função
                                                       0101 1010
                                                       1111 0101

    chamada.                                           1011 0011
                                                       0000 0001
                                                       0001 1001
                                                       0101 1010
                                                       1111 0101
                                                       1011 0011




                             Prof. Adriano Teixeira de Souza
 Quando passamos uma variável do tipo
  primitivo para um método chamamos esta
  passagem de passagem por valor.

 A variável original que foi informada na
  chamada da função não é alterada. Uma
  cópia do valor da mesma é passada para ser
  utilizada dentro do método.

 Por isso chamamos de passagem por valor.
Exemplo de passagem de parâmetro por valor
public class PassagemValor {
  public static int quadrado(int x) {
    x=x*x;
    return x;
  }

    public static void main(String args[]) {
      int x = 3,y;
      y = quadrado(x);
      System.out.println(“quadrado de ”+x+“=”+y);
    }
}
Toda passagem de parâmetros no Java
              é feita por valor!

A cada chamada de método, os parâmetros
são copiados e estas cópias são utilizadas na
execução do mesmo.
   Os valores das variáveis externas não são passados
    para a função, mas sim os seus endereços.

   Ocorre alteração no valor das variáveis externas.




                            Prof. Adriano Teixeira de Souza
0001 1001
      0101 1010
      1111 0101
      1011 0011
      0000 0001
      0001 1001
var   0101 1010
      1111 0101
      1011 0011
      0000 0001
      0001 1001
      0101 1010
      1111 0101
      1011 0011
      0000 0001
      0001 1001
      0101 1010
      1111 0101
      1011 0011
      0000 0001
      0001 1001
      0101 1010
      1111 0101
      1011 0011

           Prof. Adriano Teixeira de Souza
   Uma desvantagem da passagem por valor é que, se
    um item de dados grande está sendo
    passado, copiar esses dados pode consumir um
    tempo de processamento considerável.




                         Prof. Adriano Teixeira de Souza
   No caso de objetos, a referência dos
    mesmos é passada por valor, portanto não é
    possível alterar a referência de uma variável
    através de um método.

   Mas o conteúdo dos objetos podem ser
    alterados e estes são mantidos mesmo após
    a execução do método. Por isso merecem
    um tratamento diferenciado.
   Quando passamos uma variável do tipo
    objeto, na realidade apenas a referência do
    objeto é passada para o método. O objeto em
    questão está ativo e acessível através desta
    referência.

   Os atributos dos objetos podem ser alterados
    e estas alterações serão mantidas mesmo
    após a execução do método.
public class PassagemObjetos {
  public static void alteraMsg(StringBuffer sb) {
    sb.append(“ alterada”);
  }

    public static void main(String args[]) {
      StringBuffer sb = new StringBuffer(“mensagem”);
      alteraMsg(sb);
      System.out.println(sb.toString());
    }
}
   Outra forma de se utilizar objetos para passar
    parâmetros é utilizando “arrays”.

   Ao invés de passar uma variável diretamente
    por parâmetro utilizamos um vetor da
    seguinte forma:
public class PassagemObjetosArray {
  public static void quadrado(int i[]) {
    i[0]=i[0]*i[0];
  }

    public static void main(String args[]) {
      int i[] = new int[1];
      i[0]=3;
      quadrado(i);
      System.out.println(“resultado=”+i[0]);
    }
}

Note que utilizamos um vetor de uma posição só. Não é uma solução
elegante, pois à primeira vista do programa podemos
equivocadamente imaginar que o vetor possui uma função diferente.
Pois o conceito de vetor não foi idealizado para esta finalidade.
   1) Faça um programa que:
    ◦ Leia um vetor “turma” de 5 alunos
    ◦ Cada registro/objeto de aluno deve ter o numero de
      matrícula do aluno e suas notas de 4 bimestres.
    ◦ Faca um procedimento que Imprima a lista de
      matrícula e notas de cada aluno
    ◦ Faca uma funcao que tenha como parametro um
      objeto Aluno e retorne a média das 4 nota
    ◦ Percorra o vetor de alunos e imprima a matricula e
      a média calculada( pela funcao criada) para cada
      aluno.




                           Prof. Adriano Teixeira de Souza
   2) Escreva um programa em Java que manipule um vetor de
    registros com dados de 10 trabalhadores de uma empresa,
    conforme a estrutura a seguir:

    ◦   int id;
    ◦   String nome;
    ◦   char sexo;
    ◦   float salario;

   O programa deve ter as seguintes funções:

    ◦ a) uma função para ler os dados dos 10 funcionários.
    ◦ b) uma procedimento que receba por referência a lista e exiba os dados
      dos 10 funcionários.
    ◦ c) uma função que receba, como parâmetro, um caractere correspondente
      ao sexo e a lista para exibir os dados somente dos funcionários do
      respectivo sexo.
    ◦ d) uma procedimento que receba por referência a lista de funcionários e
      atualize o salário de todos os funcionários de acordo com o percentual
      informado como parâmetro.



                                      Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem Cprofjr
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_erWalter Alves Pereira
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Leinylson Fontinele
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Leinylson Fontinele
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoLeinylson Fontinele
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizesArmando Daniel
 

Mais procurados (20)

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
Banco de Dados II Aula 04 - MODELAGEM DE DADOS (Generalização e Especialização)
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
 

Mais de Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 

Último

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Estrutura de Dados em Java (Funções e Procedimentos)

  • 1. Funções e Procedimentos Prof. Adriano Teixeira de Souza
  • 2. Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado.  Funções – são procedimentos que retornam um valor ao seu término.  A Linguagem Java não faz distinção. Prof. Adriano Teixeira de Souza
  • 3. Evitam que os blocos do programa fiquem grandes demais e mais difíceis de ler e entender.  Ajudam a organizar o programa.  Permitem reaproveitamento de códigos construídos anteriormente.  Evitam repetição de trechos de códigos, minimizando erros e facilitando alterações. Prof. Adriano Teixeira de Souza
  • 4. <tipo> nome_da_função (<tipo> arg1, <tipo> arg2, ..., <tipo> argN) { <corpo da função> return valor_de_retorno; } Prof. Adriano Teixeira de Souza
  • 5. Exemplo de uma função: int soma(int a, int b) { int c; c = a + b; return c; } Prof. Adriano Teixeira de Souza
  • 6. Toda função deve ter um tipo Os argumentos (ou parâmetros) (String, int, float), o qual indicará o indicam o tipo e quais valores são tipo de seu valor de retorno esperados para serem manipulados (saída). pela função (entrada). int soma(int a, int b) { int c; Corpo da função c = a + b; return c; } Prof. Adriano Teixeira de Souza
  • 7. Uma função pode não ter argumentos, basta não informá-los. Exemplo: int random() { Random rand = new Random(); return rand.nextInt(100); } Prof. Adriano Teixeira de Souza
  • 8. A expressão contida no comando return é chamado de valor de retorno da função.  Esse comando é sempre o último a ser executado por uma função. Nada após ele será executado.  As funções só podem ser declaradas fora de outras funções. Lembre-se que o corpo do programa principal (main(String[] args)) é uma função! Prof. Adriano Teixeira de Souza
  • 9. Uma forma clássica de realizarmos a invocação (ou chamada) de uma função é atribuindo o seu valor a uma variável: resultado = soma(x,y);  Na verdade, o resultado da chamada de uma função é uma expressão, que pode ser usada em qualquer lugar que aceite uma expressão: System.out.println("Soma: ”+ soma(a,b) ); Prof. Adriano Teixeira de Souza
  • 10. Função que calcula a soma dos valores de x e y: static int x, y, resultado; static int soma(int a, int b){ return (a + b); } public static void main(String[] args){ x = 3; y = 5; resultado = soma(x, y); System.out.println(resultado); } Prof. Adriano Teixeira de Souza
  • 11. As variáveis x e y no exemplo anterior são chamadas de parâmetros reais.  Conforme exemplo anterior, os argumentos não possuem necessariamente os mesmos nomes que os parâmetros que a função espera.  Seus valores são apenas copiados para a função chamada, sem ser afetados pelas alterações nos parâmetros dentro da função. Prof. Adriano Teixeira de Souza
  • 12. É utilizado em procedimentos.  É um tipo que representa o “nada”, ou seja: ◦ uma variável desse tipo armazena conteúdo indeterminado, ◦ uma função desse tipo retorna um conteúdo indeterminado.  Indica que uma função não retorna nenhum valor, ou seja, é um procedimento. Prof. Adriano Teixeira de Souza
  • 13. void nome_do_procedimento (<tipo> parâmetro1, <tipo> parâmetro2, ..., <tipo> parâmetroN) { <corpo do procedimento> } Prof. Adriano Teixeira de Souza
  • 14. Exemplo de procedimento: void imprime_dobro(int x) { System.out.println("Dobro de x: ”+ 2*x); } Prof. Adriano Teixeira de Souza
  • 15. Para invocarmos um procedimento, devemos utilizá-lo como qualquer outro comando: procedimento(parâmetros);  Compare a diferença de invocação de uma função: resultado = função(parâmetros); Prof. Adriano Teixeira de Souza
  • 16. static int x, y, resultado; static void soma() { resultado = x + y; } public static void main(String[] args) { x = 3; y = 5; soma(); System.out.println(resultado); } Prof. Adriano Teixeira de Souza
  • 17. Parâmetros ou argumentos são os valores recebidos e/ou retornados por uma função.  Podem ser divididos em duas categorias: ◦ Formais: correspondem aos parâmetros utilizados na definição da função. ◦ Reais: correspondem aos parâmetros da função chamadora utilizados para chamar a função. Prof. Adriano Teixeira de Souza
  • 18. Parâmetros formais static int soma(int a, int b) { return (a + b); } public static void main(String[] args) { int x = 3; int y = 5; System.out.println(soma(x + y)); } Parâmetros reais Prof. Adriano Teixeira de Souza
  • 19. É o mecanismo de informar sobre quais valores o processamento definido na função deve ser realizado.  Os parâmetros são passados para uma função de acordo com a sua posição.  Os parâmetros formais de uma função se comportam como variáveis locais (criados na entrada e destruídos na saída)  No caso do Java, esta variável pode representar um tipo primitivo ou um objeto.  Existem duas categorias: ◦ Por valor ◦ Por referência Prof. Adriano Teixeira de Souza
  • 20. 0001 1001 Os valores das 0101 1010  1111 0101 variáveis externas 1011 0011 0000 0001 (função chamadora) var 0001 1001 são copiados para as 0101 0000 1010 0001 1111 0001 0101 1001 variáveis internas da 1011 0101 0000 1111 0011 1010 0001 0101 função chamada. 0001 1001 0101 1010 1111 0101  Alteração no valor das 1011 0011 0000 0001 variáveis terá efeito var_interna 0001 1001 local à função 0101 1010 1111 0101 chamada. 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101 1011 0011 Prof. Adriano Teixeira de Souza
  • 21.  Quando passamos uma variável do tipo primitivo para um método chamamos esta passagem de passagem por valor.  A variável original que foi informada na chamada da função não é alterada. Uma cópia do valor da mesma é passada para ser utilizada dentro do método.  Por isso chamamos de passagem por valor.
  • 22. Exemplo de passagem de parâmetro por valor public class PassagemValor { public static int quadrado(int x) { x=x*x; return x; } public static void main(String args[]) { int x = 3,y; y = quadrado(x); System.out.println(“quadrado de ”+x+“=”+y); } }
  • 23. Toda passagem de parâmetros no Java é feita por valor! A cada chamada de método, os parâmetros são copiados e estas cópias são utilizadas na execução do mesmo.
  • 24. Os valores das variáveis externas não são passados para a função, mas sim os seus endereços.  Ocorre alteração no valor das variáveis externas. Prof. Adriano Teixeira de Souza
  • 25. 0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 var 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101 1011 0011 Prof. Adriano Teixeira de Souza
  • 26. Uma desvantagem da passagem por valor é que, se um item de dados grande está sendo passado, copiar esses dados pode consumir um tempo de processamento considerável. Prof. Adriano Teixeira de Souza
  • 27. No caso de objetos, a referência dos mesmos é passada por valor, portanto não é possível alterar a referência de uma variável através de um método.  Mas o conteúdo dos objetos podem ser alterados e estes são mantidos mesmo após a execução do método. Por isso merecem um tratamento diferenciado.
  • 28. Quando passamos uma variável do tipo objeto, na realidade apenas a referência do objeto é passada para o método. O objeto em questão está ativo e acessível através desta referência.  Os atributos dos objetos podem ser alterados e estas alterações serão mantidas mesmo após a execução do método.
  • 29. public class PassagemObjetos { public static void alteraMsg(StringBuffer sb) { sb.append(“ alterada”); } public static void main(String args[]) { StringBuffer sb = new StringBuffer(“mensagem”); alteraMsg(sb); System.out.println(sb.toString()); } }
  • 30. Outra forma de se utilizar objetos para passar parâmetros é utilizando “arrays”.  Ao invés de passar uma variável diretamente por parâmetro utilizamos um vetor da seguinte forma:
  • 31. public class PassagemObjetosArray { public static void quadrado(int i[]) { i[0]=i[0]*i[0]; } public static void main(String args[]) { int i[] = new int[1]; i[0]=3; quadrado(i); System.out.println(“resultado=”+i[0]); } } Note que utilizamos um vetor de uma posição só. Não é uma solução elegante, pois à primeira vista do programa podemos equivocadamente imaginar que o vetor possui uma função diferente. Pois o conceito de vetor não foi idealizado para esta finalidade.
  • 32. 1) Faça um programa que: ◦ Leia um vetor “turma” de 5 alunos ◦ Cada registro/objeto de aluno deve ter o numero de matrícula do aluno e suas notas de 4 bimestres. ◦ Faca um procedimento que Imprima a lista de matrícula e notas de cada aluno ◦ Faca uma funcao que tenha como parametro um objeto Aluno e retorne a média das 4 nota ◦ Percorra o vetor de alunos e imprima a matricula e a média calculada( pela funcao criada) para cada aluno. Prof. Adriano Teixeira de Souza
  • 33. 2) Escreva um programa em Java que manipule um vetor de registros com dados de 10 trabalhadores de uma empresa, conforme a estrutura a seguir: ◦ int id; ◦ String nome; ◦ char sexo; ◦ float salario;  O programa deve ter as seguintes funções: ◦ a) uma função para ler os dados dos 10 funcionários. ◦ b) uma procedimento que receba por referência a lista e exiba os dados dos 10 funcionários. ◦ c) uma função que receba, como parâmetro, um caractere correspondente ao sexo e a lista para exibir os dados somente dos funcionários do respectivo sexo. ◦ d) uma procedimento que receba por referência a lista de funcionários e atualize o salário de todos os funcionários de acordo com o percentual informado como parâmetro. Prof. Adriano Teixeira de Souza