Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Programação II (Funções e Passagem de Parâmetro) Prof. Alexandre Mignon (alexandre.smignon@sp.senac.br) 1 Funções • Muitos problemas grandes e de solução complexa geram programas complexos, e podem ser divididos em problemas menores com lógica mais simples e de compreensão mais fácil, tornando a tarefa de desenvolvimento e manutenção menos desgastantes. • Em vez de escrever um algoritmo grande, podemos dividi-lo em vários algoritmos menores. • Essas divisões são chamadas de sub-algoritmos ou funções. • Uma função é uma unidade de código de programa autônoma desenhada para cumprir uma tarefa particular. 2 Forma Geral de uma Função static tipo nomeFuncao (listaParametros) { corpo da função } • O modificador static, neste caso, indica que não precisamos criar um objeto para chamar a função • O tipo especifica o tipo de valor que a função irá retornar. • A listaParametros é uma lista de nomes de variáveis e seus tipos separados por vírgulas que recebem os valores dor argumentos quando a função é chamada. • Uma função pode não ter parâmetros, neste caso a lista de parâmetros é vazia. No entanto, mesmo que não existam parâmetros, os parênteses ainda são necessários. • Todos os parâmetros da função devem incluir o tipo e o nome da variável. A lista de declaração de parâmetros para uma função tem esta forma geral: tipo nomeFuncao (tipo var1, tipo var2, ..., tipo varN) 3 Exemplo public class Exemplo { public static void main (String [] args) { olaMundo (); } static void olaMundo () { System.out.println (“Ola Mundo”); } } Chamada da função Declaração da função 4 Funções que não devolvem Resposta Procedimento • Um procedimento é uma função que não tem valor de resposta. • Para definir esse tipo de função, utiliza-se a palavra void no tipo da função. • Uma função do tipo void, quando executada, apenas produz um determinado efeito desejado, sem contudo devolver um valor de resposta. 5 Exemplo public class Exemplo2 { public static void main (String [] args) { imprimir1a10 (); } static void imprimir1a10 () { for (int i = 1; i <= 10; i++) System.out.println (i); } } 6 Variáveis Locais • As variáveis que são declaradas dentro de uma função são chamadas variáveis locais e são conhecidas somente dentro de seu próprio bloco. Um bloco começa quando o computador encontra uma chave de abertura ({) e termina quando o computador encontra uma chave de fechamento (}). • Um dos aspectos mais importantes que se deve entender sobre as variáveis locais é que elas existem apenas durante a execução do bloco de código onde estão declaradas; isto é, uma variável local é criada quando se entra em seu bloco e destruída na saída. • A variável i criada na função imprimir1a10() é conhecida somente em imprimir1a10(), e é invisível à função main(). • Os parâmetros de uma função funcionam exatamente como uma variável local da função; isto é, são criados quando a função inicia sua execução e destruídos quando a função retorna. 7 Funções que devolvem resposta • Se uma função não é do tipo void, então ela deve, necessariamente, devolver um valor como resultado de sua execução. • Para isso, a função deve empregar o comando return. • O comando return, além de especificar a resposta da função, faz com que o controle retorne ao ponto onde ela foi chamada no programa, interrompendo imediatamente sua execução. • O comando return só devolve um único valor e, como ele interrompe a execução da função, não há como criar uma função que devolva mais que um valor por vez. 8 Exemplo public class Exemplo3 { public static void main (String [] args) { int s = soma1a10 (); System.out.println (“Soma = ” + s); } static int soma1a10 () { int soma = 0; for (int i = 1; i <= 10; i++) soma = soma + i; return soma; } } 9 O valor retornado pela função é atribuído a variável s O valor retornado deve ser do mesmo tipo declarado na função Exemplo com Passagem de Parâmetros import java.util.Scanner; public class Exemplo4 { public static void main (String [] args) { Scanner entrada = new Scanner (System.in); System.out.println (“Numero 1: ”); int a = entrada.nextInt(); System.out.println (“Numero 2: ”); int b = entrada.nextInt(); int s = soma (a, b); System.out.println (“Soma = ” + s); } static int soma (int x, int y) { return x + y; } } 10 Chama da função passando com argumentos os valores de a e b Declaração da função utilizando parâmetros Passagem de Parâmetros • Existem dois tipos de passagem de parâmetros utilizados nas linguagens de programação: – Passagem por Valor – Passagem por Referência 11 Passagem por Valor • Na passagem por valor, o que é passado ao função é o valor da variável usado como parâmetro • Qualquer alteração no conteúdo de um parâmetro dentro da função não será refletido no programa que efetuou a chamada • Em Java, os tipos primitivos são sempre passados por valor para a função 12 Passagem por Valor 13 ... int a = 10; int b = 20; int s = soma (a, b); ... static int soma (int x, int y) { return x + y; } Lado da passagem Lado do recebimento 10 20 10 20 Alocação de Memória a y x b Lado da passagem Lado do recebimento Passagem por Referência • Na passagem por referência o que é passado para a função não é o valor de uma variável, mas o seu endereço • A função faz com que a variável do parâmetro passe a ter o mesmo endereço da variável do argumento • A alteração no conteúdo de um parâmetro, dentro da função, se reflete no programa que efetuou a chamada • Em Java, os objetos são sempre passados por referência para a função 14 Passagem por Referência 15 ... Scanner in = new Scanner (System.in); ler (in); ... static void ler (Scanner e) { .... } Alocação de Memória in e Lado da passagem Lado do recebimento :Scanner
Compartilhar