Baixe o app para aproveitar ainda mais
Prévia do material em texto
Funções Funções: Definição São blocos de comandos em C onde toda atividade do programa ocorre Forma geral de uma função em C: tipo nome_funcao (tipo1 param1, tipo2 param2 .... ) { corpo da função (comandos separdos por ; (ponto e virgula) } O tipo da função especifica o tipo do valor de retorno da função (devolvido a partir do comando return) O return, quando presente em uma função, será a última instrução executada. A lista de parâmetros pode ser vazia ou terá o tipo e o nome de cada variável separados por vírgula (,). Funções: Exemplo ..... int quadrado (int x ) { return (x*x); } void main( ){ int a, b; printf(“digite o valor de um número inteiro: “); scanf(“%d”, &a); b=quadrado(a); printf(“O quadrado de %d é %d.”, a, b); getch(); } Regras de Escopo As regras de escopo definem que porção do código conhece ou tem acesso a determinados dados ou porção de código. Governam em que parte do código uma variável pode ser acessada. As variáveis definidas dentro de uma função só podem ser acessadas na função onde foram definidas e são chamadas de variáveis locais. Variáveis definidas antes de qualquer função podem ser acessadas em qualquer função e são chamadas de variáveis globais. Regras de Escopo int x; int teste (int a, int b){ { if(a<b) return(b+x); else return(a+x); } void main( ){ int c; ...... c=teste(10,5); ..... } Parâmetros A passagem de dados para as funções pode ser feita através de seus parâmetros. A passagem de parâmetros pode ocorrer por valor ou por referência. Na passagem de parâmetro por valor é feita uma cópia do valor de uma variável ou constante externa à função para a variável interna (parâmetro) da função. Desta forma alterações no valor da variável interna da função não afetam a variável externa da função. Na passagem de parâmetro por referência é passado o endereço de uma variável externa e mudanças no conteúdo deste endereço dentro da função alteram o valor da variável externa. Passagem de parâmetros por valor: ..... int fcao1 (int x, int y){ x=x+y; printf(“x= %d e y= %d\n”, x, y); return(x); } void main( ){ int x, y, z; x= 10; y = 5; z=fcao1(x, y); printf(“x=%d, y=%d e z=%d\n”, x, y, z); } Passagem de parâmetros por referência: Operadores usados na passagem de parâmetros por referência: – & usado para obter o endereço de uma variável – * usado para definição de uma variável que armazena um endereço int *end; // end é uma variável que armazena o endereço de um inteiro. – * usado para acessar o conteúdo de um endereço (variável do tipo endereço) *end = 10; Passagem de parâmetros por referência: ..... int fcao1 (int *x, int *y){ *x=*x+*y; printf(“x= %d e y= %d\n”, *x, *y); return(*x); } void main( ){ int x, y, z; x= 10; y = 5; z=fcao1(&x, &y); printf(“x=%d, y=%d e z=%d\n”, x, y, z); } Passagem de vetores e matrizes como parâmetros: Quando um vetor ou matriz é passado como parâmetro para uma função apenas o seu endereço é passado, não uma cópia de seus elementos. Assim os vetores e matrizes são sempre passados como referência para as funções e alterações em seus elementos são refletidos no vetor ou matriz externo à função. Forma de passagem de vetores como parâmetros: int soma (int vetor[10], int N) { .... } Ou int soma (int vetor[], int N) { ..... } Ou int soma (int *vetor, int N) { ..... } Passagem de vetores e matrizes como parâmetros: int soma (int vetor[], int N) { int i, s=0; for(i=0; i<N;i++) s=s+vetor[i]; return(s); } void main( ){ int s, v[10]={4, 12, 5, 3, 2}; s= soma(v, 5); printf(“A soma dos elementos do vetor é %d”, s); .... } Passagem de vetores e matrizes como parâmetros: int soma (int matriz[][5], int Linhas, int Colunas) { int i,j, s=0; for(i=0; i<Linhas;i++) for(j=0; j<Colunas; j++) s=s+matriz[i][j]; return(s); } void main( ){ int s, M[5][5]={{8, 12}, {5, 3}}; s= soma(M, 2,2); printf(“A soma dos elementos da matriz é %d”, s); .... } Funções sem retorno e protótipos de funções Funções que não tem valor de retorno são definidas como do tipo void. O protótipo de uma função pode ser definido para que seu código possa ser definido depois de sua chamada. tipo nome_função (tipo1 param1, tipo2 param2, .....) ; Em alguma parte do programa o código da função deverá ser definido. Funções sem retorno e protótipos de funções void imprime( int v[ ], int N); void main(){ int v[10]={2, 4, 5, 7, 8}; imprime(v, 5); } void imprime(int v[ ], int N){ int i; printf(“Os elementos do vetor são: \n”); for(i=0; i<N; i++){ printf(“%d “, v[i]); } } Referência Bibliográfica Schildt, H. C Completo e Total. 3ª ed. MAkron Books. 1997.
Compartilhar