Buscar

AP_01

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

Continue navegando