Universidade Federal de Alagoas – UFAL Unidade Acadêmica Centro de Tecnologia – CTEC Introdução à Computação NOTAS DE AULA SOBRE FUNÇÃO por Marllus Gustavo F. P. das Neves Pesquisador-Bolsista DCR Maceió, setembro de 2007 1 CONSTRUÇÃO DO CONCEITO DE FUNÇÃO Quando estudamos funções na matemática, temos alguns termos como variável independente e variável dependente. Assim, uma função y = f(x) = 2.π . x nos diz que para cada valor de x que nós escolhemos f nos retorna y. Vamos usar então a notação y=f(x) e fazer a transição da linguagem matemática para a linguagem computacional: Tabela 1. Construção do conceito de função em computação Antes x Abscissa ou variável independente Agora y Ordenada ou variável dependente x y Argumento de entrada Valor de retorno Vamos agora dar um nome à função. Ao invés de f, vamos chamá-la de circunferencia (sem acento mesmo). Desse jeito, temos uma função chamada circunferencia que tem como argumento de entrada x e retorna y, ou seja, y=circunferencia(x) Se a gente trocar agora, y por c e x por r, temos c=circunferencia(r) Ora, isto parece familiar, pois se r for o raio de uma circunferência, c é a própria circunferência 2.π . r. Daí, podemos imaginá-la uma função como um programa de computador que aceita como entrada o raio e retorna c. r circunferencia c Pois é dessa forma que fazemos quando usamos funções pré-definidas no MATLAB. Por exemplo, para calcular a raiz quadrada, m=sqrt(w) w sqrt m sqrt retorna para m a raiz quadrada do argumento de entrada w. Qual a diferença entre sqrt e circunferencia? A primeira, já vem no MATLAB; a segunda, nos vamos criar, sendo nossa função. Uma semelhança? As duas podem ser chamadas dentro de outro programa, ou seja, elas não deixam de ser módulos que são chamados em outros módulos ou em um programa principal. Universidade Federal de Alagoas – UFAL Unidade Acadêmica Centro de Tecnologia – CTEC Introdução à Computação No MATLAB, função é um arquivo m ou programa que tem argumentos de entrada e valores de retorno que dependem destes argumentos de entrada. 2 CRIAÇÃO DE FUNÇÕES NO MATLAB Como se faz no MATLAB a criação da função circunferencia? Digite no editor de textos do MATLAB seguinte: Figura 1. Criando a função circunferencia. Salve com o nome circunferencia.m. Vamos então, na janela de comandos do MATLAB usar ou chamar esta função para calcular a circunferência de um círculo de raio igual a 2 e jogar o valor de retorno na variável p (Figura 2). Figura 2. Chamando a função circunferencia pela primeira vez na janela de comandos. O que aconteceu? A janela de comandos do MATLAB é “cega” em relação à função, ou seja, a janela de comandos não vê o que ocorre dentro da função. Todas as variáveis criadas dentro de uma função só podem ser usadas na própria função. Elas não existem fora deste contexto. Dessa forma, quando chamamos a função circunferencia, o MATLAB toma uma cópia do valor 2 e coloca este valor no endereço de memória da variável r da função. O MATLAB não toca, não mexe no endereço que reservamos para o valor 2. Assim, ele preserva o valor 2. Dentro da função circunferência, há um cálculo (Figura 1). O resultado deste vai para o endereço de memória da variável c. Contudo, novamente, a janela de comandos do MATLAB é “cega” para a variável c. Assim, a cópia de c é colocada no endereço da variável p. Essa variável p é vista pela janela de comandos. Vamos usar novamente a função circunferencia. Observe a Figura 3; o resultado será o mesmo, pois será feita uma cópia do valor da variável raio e colocada na variável r. Assim, o MATLAB não altera o valor que está no endereço de memória reservado para a variável raio. Por exemplo, se por algum motivo, o valor copiado para r mudasse, dentro da função, para 4,5, o mesmo não ocorreria em raio; o valor de raio estaria preservado. Universidade Federal de Alagoas – UFAL Unidade Acadêmica Centro de Tecnologia – CTEC Introdução à Computação Figura 3. Novo uso da função circunferencia na janela de comandos. De maneira geral, para se criar uma função deve-se seguir o modelo abaixo. Lembrar que isto é feito dentro de um arquivo m. function [vr1, ..., vrn] = nome (ae1, ae2, ..., aen) onde: function é a palavra-chave (obrigatória); vr1, ..., vrn são os valores de retorno (opicionais); nome é o nome que damos à função (obrigatório); ae1, ..., aen são os argumentos de entrada (opcionais). Quando criamos a função, damos um nome, como foi o caso de circunferencia. Ao salvar o arquivo m da função, devemos fazer isto com o mesmo nome, como foi o caso da função circunferencia. Uma função pode ter um ou mais valores de retorno. Se houver um, não é necessária a presença de colchetes. Por exemplo, function c = circunferencia (r). O exemplo a seguir cria uma função que calcula a área e o perímetro de um triângulo retângulo, dados a base e a altura. Perceba a presença dos colchetes. Figura 4. Criando a função triret. Usando a função triret na janela de comandos, para um triângulo de base 2 e altura também 2, o resultado fica como mostrado na Figura 5. Universidade Federal de Alagoas – UFAL Unidade Acadêmica Centro de Tecnologia – CTEC Introdução à Computação Se, por um acaso, colocamos uma só variável de retorno, esta receberá o valor da área como mostra a Figura 6 com a variável chamada variavel. Se não colocarmos nenhuma, o MATLAB cria a variável ans e esta receberá o valor da área como mostra a mesma Figura 6. Figura 5. Chamando a função triret pela primeira vez na janela de comandos. Figura 6. Chamando a função triret de diferentes maneiras na janela de comandos. 3 USANDO FUNÇÕES DENTRO DE OUTROS PROGRAMAS Como estamos falando de técnicas de modularização, vamos mostrar agora o uso da função triret dentro de outro programa. Esta é, na verdade, a maior utilidade de se estudar função. No contexto da Engenharia, estamos constantemente criando funções para serem utilizadas em outros programas. O exemplo a seguir mostra um programa chamado testetriret, salvo como arquivo testetriret.m. Ele solicita ao usuário a base e a altura e chama a função triret. Os valores de retorno são alocados nas variáveis area e perimetro. Figura 7. Criando um programa que chame a função triret. A execução na janela de comandos fica: Universidade Federal de Alagoas – UFAL Unidade Acadêmica Centro de Tecnologia – CTEC Introdução à Computação Figura 8. Usando o programa testetriret.