Funções e parâmetros Introdução à Programação André L. Santos Funções Em matemática, uma função f(x) associa um argumento x um valor. Por exemplo: f(x) = x2 f(3) = 9 Em programação, o conceito de função relaciona-se com o conceito matemático. static int square(int x) { return x * x; } Funções: declaração De modo a que possamos utilizar uma função, esta tem que ter um nome. O nome da função deve indicar aquilo que a função calcula. static int square(int x) { ... } ● Uma função é declarada numa assinatura onde é definido o nome, o tipo de retorno, e os parâmetros da função. ○ A definição da função (corpo) é dada entre as chavetas. Funções: parâmetros e argumentos static int square(int x) { ... } ● x é um parâmetro de tipo inteiro (int) ○ Em termos matemáticos, diriamos que o domínio da função é o conjunto dos inteiros. ○ 0, 2, 3, -1 são possíveis argumentos para a função. Tipos primitivos int Inteiros 1, 2, -1, 0, 70000 double char boolean Decimais 3.14, 0.0, -1.2 Carateres 'a', '?', '5', '_' Booleanos true, false ... ... ... Conversão entre tipos numéricos ● int para double (double) 8 → 8.0 ● double para int Esta conversão não corresponde a um arredondamento. O número decimal é truncado. (int) 7.4 → 7 (int) 7.8 → 7 Funções: parâmetros e argumentos Uma função pode ter vários parâmetros, por exemplo: static int sum(int a, int b) { ... } ● (2, 3), (-1, -3), (10, 20) são pares de possíveis argumentos para a função. Operadores aritméticos + * Multiplicação / Divisão % Resto da divisão inteira Adição Subtracção O operador de divisão, ao ser utilizado com dois valores inteiros, efectua uma divisão inteira (p.e. 7 / 3 = 2). Funções: retorno static int square(int x) { return x * x; } ● A assinatura da função define que o tipo de retorno é um inteiro (int). ○ Em termos matemáticos, diriamos que o contradomínio da função é o conjunto dos inteiros. ○ O valor devolvido pela função tem que ser compatível (um número inteiro neste caso). ● A expressão x * x calcula o quadrado de x, e a instrução return devolve o resultado desse cálculo. Operadores relacionais == != > >= < <= Igual a Diferente de Maior que Maior ou igual Menor Menor ou igual Operadores lógicos II && ! Disjunção (ou) Conjunção (e) Negação Funções: retorno static boolean isEven(int n) { return n % 2 == 0; } ● Esta função verifica se um dado número n é par. ● O tipo de retorno é booleano (boolean), e logo, a função deverá devolver verdadeiro (true) ou falso (false). ● O resultado da expressão n % 2 irá ser 0 ou 1. Caso seja igual a zero (== 0) então a expressão n % 2 == 0 é verdadeira, caso contrário é falsa. Esta avaliação determinará o valor retornado. Funções em Java As funções em Java são obrigatoriamente definidas dentro de módulos designados por classes. class Functions { static int square(int x) { return x * x; } static boolean isEven(int n) { return n % 2 == 0; } ... } Classes estáticas Em Java, o código das classes têm obrigatoriamente que ser definido num ficheiro com o mesmo nome e extensão .java. Functions.java class Functions { ... } Embora em Java todos os módulos sejam designados por classes, os mesmos podem ter propósitos bastante diferentes. Designaremos por classe estática uma classe que só contém métodos estáticos (static ...). Mais à frente abordaremos classes de objectos.