CURSO BÁSICO DE PROGRAMAÇÃO AULA 14 Funções e procedimentos
Introdução Problemas complexos exigem algoritmos complexos; Quanto mais complexo o algoritmo, mais difícil é escrevê-lo; Solução: uso de funções ou procedimentos.
Vantagens: Manutenção simples, evita problemas colaterais; Pode ser feito independente de outras partes do algoritmo; Reutilização de funções em outros programas que exigem os mesmos requisitos; Testes e correções de problemas se tornam mais fáceis de serem feitos.
Variáveis Globais x Locais Regras de utilização Variáveis globais: são declaradas fora das funções (OBS: Variáveis declaradas dentro do int main() não são globais, e sim local a função); Variáveis locais: são declaradas dentro das funções e não podem ser utilizada fora delas. OBS: Variáveis globais podem ser acessadas dentro das funções, desde que não haja outra variável local com o mesmo nome. Nesse caso, a variável global oculta a local.
Passagem de parâmetros Para metros: sa o tipos especiais de varia veis que servem como meio de comunicac a o bidirecional entre a subrotina chamadora e a sub-rotina chamada. Permitem a troca de informac o es entre sub-rotinas e evitam efeitos colaterais. Para metros formais: sa o nomes simbo licos introduzidos nos cabec alhos das sub-rotinas que definem quais informac o es, e de que tipo, devem ser fornecidas para a sub-rotina. Para metros reais (ou argumentos): Sa o os valores reais, passados na chamada da sub-rotina.
Passagem de parâmetros Passagem por valor: Neste caso o para metro funciona como uma varia vel local, recebendo uma co pia do valor do argumento correspondente. Qualquer modificac a o no valor do para metro dentro da sub-rotina na o altera o valor do argumento real, pos o para metro existe apenas dentro da func a o. Passagem por refere ncia: neste caso o enderec o do argumento e passado para a sub- rotina, de tal forma que, quando se modifica a varia vel correspondente ao para metro formal, na verdade modifica-se o conteu do do pro prio argumento.
Declaração de funções <tipo de retorno> <nomefunc a o>(<lista de para metros) { <variáveis locais>; <comandos>; return <valor de retorno>; }
Declaração de procedimentos Procedimento é uma declaração de função com tipo de retorno vazio (void) e sem retorno de valor. void <nomeprocedimento>(<lista de para metros) { <variáveis locais>; <comandos>; }
Observações Trechos de co digo repetitivos sa o candidatos a serem transformados em sub-rotinas. Func o es e procedimentos devem ser simples, ou seja, devem realizar apenas uma u nica tarefa, com objetivo bem definido. Funções podem ter chamadas a outras funções. Sub-rotinas devem ser construi das de forma suficientemente gene ricas para possibilitar a sua reutilizac a o. Deve-se evitar o acesso a varia veis globais dentro de func o es, pois isto pode causar efeitos colaterais. A u nica comunicac a o entre o interior e o exterior de função deve ser feita atrave s dos seu para metros e do seu valor de retorno
Exemplo 1:
Exercícios Crie uma função que receba como parâmetros 3 números inteiros (a, b, c) e retorne o valor de a + b * c; Escreva uma função que receba como parâmetro um numero inteiro n e retorne o valor do fatorial de n; Crie uma função que receba como parâmetro um número inteiro, onde no mesmo deverá ser feita a impressão da tabuada desse número (1 até o 10).
Passando vetores e matrizes como parâmetro para funções E feita por refere ncia, pois o nome do vetor ou matriz e um ponteiro para o conteu do armazenado na memória. Exemplo 2:
Exercícios Escreva uma func a o que receba como para metros um vetor V de reais (ma ximo de 50 posic o es) e um inteiro n que representa o nu mero de elementos va lidos em V e retorne a soma dos elementos de V. Utilizando a func a o soma acima, construa uma func a o que receba como para metro um vetor V e um inteiro n e retorne o valor da me dia dos elementos do vetor. Crie um programa que simule uma agenda, contendo os seguintes dados: nome[20], telefone, endereço[30]. Em seguida, crie as seguintes funções: Adicionar contato; Listar contatos;
FIM Dúvidas? Ayrton e Mateus ayrton@ayrton.eti.br, mateusteixeira_@hotmail.com