Você está na página 1de 10

Linguagem C

(Funes)

Prof. Edson Pedro Ferlin

by Prof. Edson Pedro Ferlin

Definies
So blocos de construo em que ocorrem todas as
atividades dos programas;

especificador_tipo nome_funo (lista_parmetros)


declaraes de parmetros
{
corpo do programa
}

O especificador de tipo especifica o tipo do valor que


a funo devolver atravs do uso de return.

O valor pode ser qualquer tipo vlido;

www.professorferlin.blogspot.com 1
by Prof. Edson Pedro Ferlin

Retorno de uma Funo


Parte 1 - Executa o ltimo comando

Impr_inverso(char *s)
{
int t;
for (t=strlen(s)-1;t>=0;t--) printf (%c, s[t]);
}

by Prof. Edson Pedro Ferlin

Retorno de uma Funo


Parte 2 - Comando return

power (int base, int exp)


{
int i;
if (exp<0) return (0); /* retorna se exp negativa */
i = 1;
for (;exp;exp--) i=base*i;
printf (A resposta eh: %d, i);
}

www.professorferlin.blogspot.com 2
by Prof. Edson Pedro Ferlin

Valores de Retorno
main()
Todas as funes, {
exceto aquelas que int x,y,z;
voc declara como x=10;
sendo do tipo void, y=20;
devolvem um valor; z = mult(x,y);
printf (%d, mult (x,y));
Utiliza-se a palavra mult (x,y);
reservada (return). }
mult (int a, int b)
{
return (a*b);
}

by Prof. Edson Pedro Ferlin

Escopo das Funes


Parte 1 - Viso Geral

Governam se um trecho de cdigo conhece ou no


ou tem acesso ou no a um outro trecho de cdigo
ou dados;

Trs tipos:

Variveis locais;

Variveis globais;

Parmetros formais.

www.professorferlin.blogspot.com 3
by Prof. Edson Pedro Ferlin

Escopo das Funes


Parte 2 - Variveis Locais

Variveis que so declaradas dentro de uma funo;

Podem ser referenciadas apenas pelos comandos


que esto dentro do bloco no qual esto declaradas;

Existem apenas durante a execuo do bloco de


cdigo no qual esto declaradas; i.e., uma varivel
local criadas quando se entra em seu bloco e
destruda na sada;

Vantagem: O armazenamento para as variveis


locais est na pilha (regio dinmica da memria);

by Prof. Edson Pedro Ferlin

Escopo das Funes


Parte 3 - Parmetros Formais

Variveis que aceitaro os valores dos argumentos;

Se comportam como qualquer outra varivel local


dentro da funo;

www.professorferlin.blogspot.com 4
by Prof. Edson Pedro Ferlin

Escopo das Funes


Parte 4 - Variveis Globais

So conhecidas por todo o programa e podem ser


usadas por qualquer parte o cdigo;

Retm seus valores durante toda a execuo do


programa;

O armazenamento das variveis globais fica em uma


regio fixa da memria;

Evitar usar variveis globais desnecessariamente:


Ocupam memria durante toda a execuo do programa;
Menor generalizao;
Podem ocorrer erros.

by Prof. Edson Pedro Ferlin

Escopo das Funes


Parte 5 Exemplo de Programa
int sum; /* Variavel Global */
main ()
{
int count; /* Variavel Local */
sum = 0;
for (count = 0; count < 10; count ++)
{
total (count);
display ();
}
}
total (int x) /* Parametro formal */
{
sum = x + sum;
}
display ()
{
int count;
for (count = 0; count < 10; count++)
{
printf (.);
}
printf (A soma corrente eh %d\n,sum);
10
}

www.professorferlin.blogspot.com 5
by Prof. Edson Pedro Ferlin

Argumentos das Funes


Parte 1 Viso Geral

Parmetros formais das funes tende ser do


mesmo tipo dos argumentos usados para cham-
las;

Duas chamadas:

Por Valor copia o valor de um argumento para o


parmetros formal da funo;

Por Referncia copia o endereo de um argumento para


o parmetro.

A linguagem C usa o mtodo de chamada por Valor


para passar argumentos.

11

by Prof. Edson Pedro Ferlin

Argumentos das Funes


Parte 2 Exemplos

Por Valor Por Referncia

main () main ()
{ {
int t=10; /* Variavel Local */ int x=10,y=20; /* Variavel Local */
printf (%d %d, pot2(t), t); swap (&x,&y);
} }

pot2 (int x) /* Parametro formal */ swap (int *x, int *y) /* Parametro formal */
{ {
x=x*x; int temp;
return (x); temp = *x;
} *x = *y;
*y = temp;
}

12

www.professorferlin.blogspot.com 6
by Prof. Edson Pedro Ferlin

argc e argv
Parte 1 Viso Geral

Pode ser til passar informaes para um programa


ao execut-lo;
Argumentos de linha de comando;
a informao que segue o nome do programa na
linha de comando do S.O;
So os nicos argumentos que main() pode ter;
argc contm o nmero de argumentos na linha
de comando e um inteiro. No mnimo 1 nome
programa;
argv um ponteiro para uma matriz de ponteiros
para caracteres. Cada elemento nessa matriz aponta
para um argumento da linha de comando.

13

by Prof. Edson Pedro Ferlin

argc e argv
Parte 2 Exemplo

main (int argc, char *argv[]) No S.O:


{
If (argc != 2)
C:\> nome Teste
{
printf (Voce nao digitou o nome \n);
exit (0); Alo Teste
}
printf (Alo %s, argv[1]); C:\>
}

14

www.professorferlin.blogspot.com 7
by Prof. Edson Pedro Ferlin

argc e argv
Parte 3 Limites

O separador de argumentos um <espao> ou um


TAB;

A maneira mais comum de declarar argv : char


*argv[], em que os colchetes ([]) vazios indicam
que argv uma matriz de comprimento
indeterminado;

O nmero de argumentos limitado pelo SO, no


caso do MS-DOS 128 caracteres por linha.

15

by Prof. Edson Pedro Ferlin

Funes Retornam Valores


Retornam valores no inteiros

float sum(float, float); /* identifica a funcao */

main ()
{
O tipo de uma funo, por float prim, segun;
default, int; prim = 123.13;
segun = 99.09;
printf (%f,sum (prim, segun));
Para tipo de dado diferente: }
dar um especificador de tipo;
identificar antes de cham-la; float sum (float a, float b)
{
return (a+b);
}

16

www.professorferlin.blogspot.com 8
by Prof. Edson Pedro Ferlin

Funes Retornam Valores


Funes do tipo void

void imp_vertical(char *); /* identifica a funcao */

main ()
Funes que no {
devolvem valores; imp_vertical (Alo minha gente);
}

Uso do tipo void. void imp_vertical(char *str)


{
while (*str) printf(%c \n, *str++);
}

17

by Prof. Edson Pedro Ferlin

Funes Retornam Valores


Prottipos de Funes

float func (int, float); /* prototipo */


Declarar o nmero e os tipos
dos argumentos da funo; main ()
{
int x=10;
Permite que o compilador float y=1.5;
emita erros se uma funo func(x,y);

com argumentos for


}

chamada com parmetros float func (int a, float b)


com tipos diferentes. {
printf(%f, b/(float)a);
}

18

www.professorferlin.blogspot.com 9
by Prof. Edson Pedro Ferlin

Funes Retornam Valores


Recurso

long factorial (int);


As funes podem
main()
chamar a si prprias; {
int n;
printf("Digite o numero: ");
Uma funo recursiva scanf("%d", &n);
se um comando no corpo printf("\nO fatorial de %d eh %ld", n,
factorial(n));
da funo chamar a si }
mesmo. long factorial (int n)
{

O computador aloca long resp;


If (n==1) return (1);
memria na pilha e resp = factorial (n-1)*n;
executa o cdigo da return (resp);
funo com essas novas }
variveis.
19

www.professorferlin.blogspot.com 10