Beruflich Dokumente
Kultur Dokumente
13/08/2012
de programas
em linguagem C
de Funes
13/08/2012
Exemplo: int fatorial (int n) { int i, product = 1; for (i=2; i<=n; ++i) product *= i; return product; }
13/08/2012
As funes retornam um resultado que deve ser do mesmo tipo para o qual a funo foi declarada.
<tipo_retornado> <nome_funo>(<lista_dos_parametos>)
int fatorial (int n)
O comando return responsvel por encerrar a execuo da funo e retornar o valor daquele tipo. return product;
13/08/2012
13/08/2012
float add( int a, int b) { int soma; soma = a+b; return soma; }
13/08/2012
As
uso de void no lugar de uma lista de parmetros indica que a funo no utiliza argumentos (lista de parmetros).
13/08/2012
Exemplos:
void nadafaz(void) { } void wrt_endereo(void){ printf(%s\n%s\n%s\n%s\n%s\n\n, **************************, *** SANTA CLAUS *, *** NORTH POLE *, *** EARTH *, **************************); }
13/08/2012
13/08/2012
Exemplos:
float func(x, y) /* C tradicional */ int x float y; {... <corpo_da_funo> ...}
10
Uma prottipo da funo indica ao compilador o nmero e o tipo de argumentos que devem ser passados para a funo e o tipo de valor que deve ser retornado pela funo.
tipo_retornado nome_funo(lista_dos_parametos);
A lista dos parmetros apresenta os tipos separados por vrgula, onde os identificadores so opcionais.
11
Se
uma funo, por exemplo, func(x) chamada antes de sua declarao, definio ou prottipo, o compilador assume a declarao abaixo como default
int func();
maioria dos compiladores precisa conhecer os tipos de retorno e os parmetros, antes que o programa principal faa uma chamada sub-rotina.
13/08/2012
12
Exemplo:
Blocos aninhados
{ int a_outer=2; printf(%d\n,a_outer); { int a_inner = 5; printf(%d\n,a_inner); } printf(%d\n, ++a_outer); }
{ int a=2; printf(%d\n,a); /* 2 exibido*/ { int a = 5; printf(%d\n,a); /* 5 exibido */ } printf(%d\n, ++a); /*3 exibido*/ }
13/08/2012
13
int a=1, b=2, c=3; printf(%3d%3d%3d\n,a,b,c); { int b=4; float c=5.0; printf(%3d%3d%5.1f\n,a,b,c); a=b; { int c; c=b; printf(%3d%3d%3d\n,a,b,c); } printf(%3d%3d%5.1f\n,a,b,c); } printf(%3d%3d%3d\n,a,b,c); }
13/08/2012
/* 1 2 3 */
/* 1 4 5.0 */
/* 4 4 4 */ /* 4 4 5.0 */ /* 4 2 3 */
14
Variveis Locais Tem como escopo a funo onde foi declarada. Os nomes e valores dessas variveis tem uso restrito funo que declarou estas variveis.
Variveis Globais Os nomes e valores dessas variveis podem ser acessados em todo o programa. Devem ser declaradas fora do corpo de todos os procedimentos ou funes do programa. O programa pode alterar uma varivel global em qualquer ponto, tornando difcil localizar a alterao que possa ter provocado um erro.
13/08/2012
15
Exemplo: #include <stdio.h> int a=1, b=2, c=3; /* variveis globais */ int f(void); /* prottipo da funo*/ int main(void) { printf(%3d\n, f( )); /*?????*/ printf(%3d%3d%3d\n, a,b,c); /*?????*/ return 0; } int f(void) { int b, c; a=b=c=4; return (a+b+c); }
/* b e c so variveis locais */
13/08/2012
16
Exemplo: #include <stdio.h> int a=1, b=2, c=3; /* variveis globais */ int f(void); /* prottipo da funo*/ int main(void) { printf(%3d\n, f( )); /* 12 exibido */ printf(%3d%3d%3d\n, a,b,c); /* 4 2 3 so exibidos*/ return 0; } int f(void) { int b, c; a=b=c=4; return (a+b+c); }
/* b e c so variveis locais */
13/08/2012
17
Uma
cpia dos valores das variveis passada funo. modificaes executadas nos valores fornecidos esto restritas ao escopo da funo.
valor original da varivel no alterado.
As
Exemplo: #include<stdio.h> int compute_sum(int n); int main(void) { int n=3, sum; printf(%d\n,n); /* ? exibido*/ sum = compute_sum(n); printf(%d\n,n); /* ? exibido */ printf(%d\n,sum); /* ? exibido*/ return 0; } int compute_sum(int n){ int sum = 0; for(; n > 0; --n) sum+= n; return sum; }
13/08/2012
19
Exemplo: #include<stdio.h> int compute_sum(int n); int main(void) { int n=3, sum; printf(%d\n,n); /* 3 exibido*/ sum = compute_sum(n); printf(%d\n,n); /* 3 exibido */ printf(%d\n,sum); /* 6 exibido*/ return 0; } int compute_sum(int n){ int sum = 0; for(; n > 0; --n) sum+= n; return sum; }
13/08/2012
20
endereo de memria da varivel fornecido funo e no uma cpia do valor da varivel. alterao executada pela funo ocorre na posio de memria fornecida. isso, as alteraes permanecem quando a funo encerrada. que sero apresentados em breve, so utilizados nas passagens por referncia.
Qualquer
Por
Ponteiros,
Exemplo: #include <stdio.h> void swap(int *, int *); int main(void){ int i=3, j=5; swap(i, j); printf(%d %d\n, i, j); /* 5 e 3 so exibidos */ return 0;
}
void swap (int *p, int *q){ int tmp;
tmp = *p;
*p = *q; *q = tmp; }
13/08/2012
22
As
variveis i e j so passadas por referncia, ou seja, o endereo de memria das variveis repassado funo.
swap (i, j)
Os
ponteiros *p e *q, declarados no argumento na funo swap, passam a referenciar a posio de memria das variveis i e j. void swap (int *p, int *q)
13/08/2012
23
Vetores e matrizes
Os colchetes, aps o nome do vetor passado a uma funo, indicam que o parmetro um vetor. No precisa especificar o tamanho do vetor.
Exemplo: Formas possveis de se declarar a funo func() para receber o vetor int vet[100]
func(int x[100]);
Vetores
e matrizes
Ao passar uma matriz bidimensional, se for preciso acessar entradas especficas, o nmero de colunas precisa ser fornecido. int soma_matriz(int matriz[][5], int linhas) Se no h necessidade de acessar entradas especficas da matriz, ela poder ser tratada como um vetor. Nesse caso, o nmero de elementos da matriz dever ser fornecido.
13/08/2012
25
Crie uma funo que receba trs nmeros inteiros a, b e c sendo a maior que 1. A funo dever retornar o resultado da soma de todos os inteiros entre b e c que sejam divisveis por a (inclusive b e c).
Crie um programa que imprime os valores da funo f(x) no intervalo [0,3] . O valor de x deve percorrer o intervalo com passos de tamanho 0.1. Uma funo dever ser implementada para retornar os valores de f(x). f(x) = ax2+bx+c.
13/08/2012
27
1.
Escreva um programa que receba trs valores reais e retorne o maior deles.
Escreva um programa que:
2.
Receba valores para as variveis x1, x2 e x3. Os valores devem ser inteiros positivos. Crie uma funo que valide a entrada de dados, ou seja, o usurio s consegue entrar com os valores adequados. Devolva aos programa principal os valores ordenados com x1<x2<x3. Crie uma funo que ordene esses valores.
13/08/2012
28
Ascencio AFG, Campos EAV. Fundamentos de programao de computadores. So Paulo : Pearson Prentice Hall, 2006. 385 p. Kelley, A.; Pohl, I., A Book on C: programming in C. 4 Edio. Massachusetts: Pearson, 2010, 726p. Kernighan, B.W.; Ritchie, D.M. C, A Linguagem de Programao: padro ANSI. 2 Edio. Rio de Janeiro: Campus, 1989, 290p.
13/08/2012
29
FIM Aula 3
13/08/2012
30