Introdução à Programação Aula Prática 3 Funções Monitoria 2013.1 O que são funções e para que usar? Funções são pedaços de código separados do programa principal Podem ser chamadas a qualquer momento dentro da main ou de outras funções ou da própria função Dividem problemas complexos em problemas menores (modularização) Podem ser invocadas quantas vezes for preciso (reusabilidade) Estrutura de uma função Tipo nome da função (parâmetros) { …comandos retorno; } O Tipo de retorno da função (podendo ser void, isto é, sem retorno) O nome funciona como o de variáveis Os parâmetros da função O valor retornado pela função (quando ela retorna algo) Parâmetros Os parâmetros são informações a função precisa receber para executar. Eles são separados por vírgulas e podem ter tipos diversos Os valores passados para a função são meramente copiados Exemplos: void funcao( int num, char ch, float f) {…} void funcao_sem_parametros() {…} Comando return - Comando de saída da função - É obrigatório em funções que possuem tipo de retorno diferente de void, devendo retornar exatamente o tipo definido na assinatura - Em funções void podem ser usadas para sair da função arbitrariamente (Porém, é considerada má pratica de programação) Exemplos: return var; // retornando uma variável return 5; //retornando uma constante return (((x*2) + (y/5)) * z) + 4; //podem ser usadas expressões Exemplos float Media_aritmetica( int n1, int n2) { return (n1 + n2) / 2.0; } void Imprime_menu() { printf(“Menu\n”); printf(“1. Iniciar\n”); printf(“2. Sair\n”); } Exemplo de uso int main() { int num1 = 100, num2 = 200; int resultado; resultado = Media_aritmetica(num1, num2); printf(“%d”, resultado); return 0; } *Note que eu poderia ter impresso o resultado sem armazená-lo em uma variável printf(“%d”, Media_aritmetica(num1, num2)); Escopo • O escopo de uma variável é o conjunto de locais onde ela pode ser acessada. • As variáveis e funções só podem ser acessadas dentro da função onde foram declaradas. • Variáveis declaradas dentro de funções são chamadas de variáveis locais. • Variáveis declaradas fora de todas as funções (inclusive da main) são chamadas de variáveis globais e podem ser referenciadas em todo o programa. Escopo • Variáveis globais numéricas têm como padrão serem inicializadas com 0 (ou seja, quando não inicializadas explicitamente pelo programador) • Há a possibilidade de se usar o mesmo nome para uma variável global e uma local. • Quando uma variável é chamada num lugar onde os dois escopos são visíveis, o programa dará preferência à variável local. Escopo • Lembre-se de que quando uma função chega ao final, as variáveis nela declaradas deixam de existir. • As variáveis declaradas dentro de funções podem ainda vir com o modificador static. Com ele, a variável é criada apenas uma vez, e volta a ser usada em todas as outras execuções da função. int funcao() { static int num = 2; num = num * 2; return num; } Dúvidas? Exercício 1 Crie uma função que receba o raio de uma circunferência (float) e um ângulo em graus (float) e retorne a área do setor circular correspondente. Obs: Considere PI = 3.14 Exemplo: Entrada: Saída: 4 // raio 180 // ângulo 25,12 // área Exercício 2 Implemente as funções toupper e tolower (para 1 caracter) e usando elas faça um programa que receba 4 letras do usuário e para cada uma se for maiúscula transforme para minúscula e vice-versa Obs: toupper transforma para maiúscula e tolower para minúscula Exemplo: Entrada: cASa Saída: CasA Exercício 3 Faça uma função conversora de unidades de velocidade. Ela deverá receber uma velocidade(float) em m/s e uma opção. Se a opção for 1 retornar em km/s, 2 -> Km/h, 3 -> milhas/h. Obs: 1 milha = 1 609,344 metros Exemplo: Entrada: 12 //velocidade 2 //opção Saída: 43,2