A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.

Apresentações semelhantes


Apresentação em tema: "Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011."— Transcrição da apresentação:

1 Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011

2 Algoritmos - Profa. Alciléia2 Funções As funções também conhecidas como subrotinas são organizadas seguindo o preceito dividir para conquistar “dividir para conquistar” Que consiste em dividir e organizar a solução de um problema complexo em partes(etapas), resolver cada parte, e agregar ou combinar o resultado destas partes para obter a solução final.

3 Algoritmos - Profa. Alciléia3 Funções dividir para conquistar Exemplo de “dividir para conquistar” Um sistema para registrar vendas de uma loja pode ser organizado com as seguintes ações: 1- cadastrar produto; 2- cadastrar venda; 2.1- Localizar produto; 2.2- calcular valor total; 2.3- calcular desconto; 2.4- imprimir nota fiscal; 2.5-efetuar baixa no estoque; 3-fechar caixa diário... Logo, devemos programar funções, procedimentos ou eventos para cada item. Subrotinas de cadastrar vendas

4 Algoritmos - Profa. Alciléia4 Funções Uma função refere-se a um conjunto de comandos agrupados em um bloco que recebe um nome e através deste pode ser ativado. Formato Geral de uma Função em C tipo_da_funcao NomeDaFuncao (Lista_de_Parametros){ // corpo da função } A Lista_de_Parametros, também chamada de Lista_de_Argumentos, é opcional. O tipo_da_funcao representa o tipo do dado que é retornado pela função e pode ser: float, int, char... Caso a função não retorne valor dizemos que ela é do tipo void(do inglês VAZIO). E caso não seja especificado nenhum tipo, por padrão a função retorna um inteiro.

5 Algoritmos - Profa. Alciléia5 Funções Os parâmetros são valores que a função recebe para realizar as tarefas para as quais foi programada. Por exemplo, uma função que calcule o quadrado de um número do tipo float, deve declarar como parâmetro uma variável deste tipo para receber o valor. float calcularQ (float numero){ return numero*numero; } Na lista de parâmetros é necessário associar um tipo a cada variável como no exemplo abaixo: float media (float n1, float n2, float n3) Os parâmetros são criados no início da execução da função e destruídos no final. parâmetro parâmetros

6 Algoritmos - Profa. Alciléia6 Funções Nos parâmetros por valor uma cópia do valor do argumento é passado para a função. No exemplo abaixo, as variáveis x e n não ocupam a mesma posicao de memoria. Modificações feitas em n não alteram o valor de x, da mesma forma que modificações feitas em x não alteram o valor de n. #include int testePar (int n) { n = n + 5 ; return n; } int main() { int r, x=7 ; r = testePar (x) ; printf ("Main: Valor de x: %d\n",n) ; printf ("Main: Valor de r: %d\n",r) ; } Parâmetro por valor Valor passado a função

7 Algoritmos - Profa. Alciléia7 Funções Nos parâmetros por referência(endereço) o endereço da variável é passado para a função Para a passagem de parâmetros por referência é necessário o uso de ponteiros. É suportada somente por C++, e indicada por &. Neste caso as variaveis x e n, do exemplo, ocupam a mesma posicao de memoria. Logo, ao modificar x estará modificando n, da mesma forma que ao modificar n também se estará modificando x. #include int testePar (int &n) { n = n + 5 ; return n; } int main() { int r, x=7 ; r = testePar (x) ; printf ("Main: Valor de x: %d\n",n) ; printf ("Main: Valor de r: %d\n",r) ; } Parâmetro por referência Variável passada à função

8 Algoritmos - Profa. Alciléia8 Funções e variáveis locais As variáveis locais são aquelas declaradas dentro de uma função. Elas passam a existir quando do início da execução do bloco de comandos ou função onde foram definidas e são destruídas ao final da execução do bloco. Uma variável local só pode ser referenciada, ou seja usada, dentro das funções onde foram declaradas. float Eleva(float a, int b){ float res = 1.0; for ( ; b>0; b--) res *= a; return res; } Variável local

9 Algoritmos - Profa. Alciléia9 Funções e variáveis globais As variáveis globais são definidas fora de qualquer função e são portanto disponíveis para qualquer função. Este tipo de variável pode servir como uma canal de comunicação entre funções, uma maneira de transferir valores entre elas. #include int soma (int, int); /* Prototipo da funcao */ int soma(int a, int b) {/* Definicao da funcao soma*/ return a+b; } int main() { /* Funcao Principal */ int a=5, b=9; printf("\n%d", soma(a,b)); getch(); return 0; } Variáveis globais

10 Algoritmos - Profa. Alciléia10 Funções Na linguagem C todas as ações ocorrem dentro de funções. Não há conceito de um programa principal, o que existe é uma função chamada main que é sempre a primeira a ser executada. Há duas maneiras básicas de terminar a execução de uma função: Usando-se o comando return para retornar o resultado da função. Quando não há valor para retornar, a função termina na chave } que indica o término do corpo da função. Toda função deve ser declarada antes de ser usada. Esta declaração é feita através do protótipo da função, ou seja, o trecho de código que especifica o nome e os parâmetros da função. void somar(float a, int b); // Protótipo da função SOMA

11 Algoritmos - Profa. Alciléia11 Vantagens das Funções Permite o reaproveitamento de código já construído(por você ou por outros programadores); Evita que um trecho de código seja repetido várias vezes dentro de um mesmo programa; Permite a alteração de um trecho de código de uma forma mais rápida. Com o uso de uma função é preciso alterar apenas dentro da função que se deseja; Os blocos do programa não ficam grandes demais e, por conseqüência, mais difíceis de entender; Facilita a leitura do programa-fonte de uma forma mais fácil; Organiza o programa em partes(blocos) que possam ser logicamente compreendidos de forma isolada

12 Algoritmos - Profa. Alciléia12 Funções e Recursividade Funções em C podem ser usadas recursivamente, isto é uma função pode chamar a si mesmo. Um exemplo simples função que pode ser usada com chamadas recursivas é o fatorial de um número inteiro. O fatorial de um número pode ser defindo como o produto deste número pelo fatorial de seu predecessor, ou seja n! = n * (n-1)! #include void main(){ unsigned int numero; printf("\nEntre com um numero positivo."); scanf("%u", &numero); printf("O fatorial de %u vale %u.", numero, fat(numero)); getch();} unsigned int fat (unsigned int num){ unsigned int fato; if (num == 1) return (1); else fato = num * fat (num-1); return fato; }

13 Algoritmos - Profa. Alciléia13 Funções e Recursividade Um ponto importante é que toda função recursiva deve prever cuidadosamente como o processo de recursão deve ser interrompido. No caso da função fat o processo é interrompido quando o valor do número vale 1. Quando uma função chama a si mesmo recursivamente ela recebe um conjunto novo de variáveis na pilha que é usada para transferência de valores entre funções. É importante notar que recursão não trás obrigatoriamente economia de memória porque os valores sendo processados tem de ser mantidos na pilha. Nem será mais rápido, e as vezes pode ser até mais lento porque temos o custo de chamada as funções. As principais vantagens da recursão são códigos mais compactos e provalvemente mais fáceis de serem lidos.

14 Algoritmos - Profa. Alciléia14 Proposta de Exercício Utilizando funções, elabore um sistema para: 1-cadastrar alunos com cpf, nome, telefone e 4 notas; 2-dado o cpf, mostrar a média das notas do aluno;

15 Algoritmos - Profa. Alciléia15 Obrigada!


Carregar ppt "Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011."

Apresentações semelhantes


Anúncios Google