Você está na página 1de 13

ICC

Funes em C
Prof. Jos Henrique

Funes - Introduo
Problemas complexos Dividir para conquistar.
Programas complexos podem ser decompostos

em pequenos segmentos de cdigo simples.


Esta tcnica se chama programao modular e
traz as seguintes vantagens:
Facilita a construo de programas grandes e
complexos;
Reaproveitamento de cdigo.
A modularizao em C feita atravs de
Funes.
2

Funes
Funes so segmentos de programa que

executam uma determinada tarefa especfica.


So tambm chamadas de subrotinas ou
subprogramas e so a essncia da Programao
Estruturada ou Modular.
Funes pr-definidas: Ex: sqrt(), strlen(), etc.
O programador tambm pode escrever suas
prprias funes, chamadas de
funes de
usurio, que tem uma estrutura muito semelhante
a um programa.
3

Funes em Algortmos

Exemplo:
Algoritmo MdiaAluno
var nota 1, nota2 : real
funcao mdia (num1, num2:real) : real
incio
retorne ((num1 + num1 )/2)
fim
inicio
Escreva (Entre com a primeira nota)
Leia (nota1)
Escreva (Entre com a segunda nota)
Leia (nota2)
Escreva (Mdia final, mdia(nota1,nota2) )
fim
4

Funes em C
Sintaxe em C
tipo_da_funcao nome_da_funo (lista_de_parmetros)
{
//declaraes locais
//comandos
return valor_de_retorno
}
tipo_da_funcao: o tipo de valor retornado pela funo. Se no especificado,
por falta a funo considerada como retornando um inteiro.
nome_da_funo: nome da funo conforme as regras do C.
lista_de_parmetros: tipo de cada parmetro seguido de seu identificador,
com vrgulas entre cada parmetro. Mesmo se nenhum parmetro for utilizado,
os parnteses so obrigatrios.
valor_de_retorno: valor retornado pela funo se tipo_da_funcao <> void
Se = void nada retorna e funciona como um procedimento.
5

Funes em C
Exemplo de funes
#include<stdio.h>
//Declarao e definio da funo
float media(float n1, float n2) {
return((n1+n2)/2);
}
// funo principal
int main(int argc, char *argv[ ]) {
float nota1,nota2;
printf ("Informe os numeros: ");
scanf("%f %f",&nota1,&nota2);
printf("a media dos numeros e': %.4f\n", media(nota1,nota2));
return 0;
}

Procedimentos em C
Procedimentos em C so funes que no

retornam valor.
Exemplo de procedimento:
#include <stdio.h>
int i,n,fatorial;
void fat()
{
fatorial = 1;
for(i=2;i<=n;i++)
{ fatorial = fatorial * i; }
}
int main()
{
printf(Digite o numero N:);
scanf(%d, &n);
fat();
printf(O fatorial de N = %d vale %d.\n, n, fatorial);}

Funes em C - Variveis
Escopo de variveis
Refere-se ao mbito em que a varavel pode ser
usada.

Varivel local - Varivel definida dentro de uma

funo s pode ser usada dentro desta funo


(no pode ser usada fora do escopo da funo).
Varivel global - Varivel definidas para o todo o
programa (possuem escopo ou mbito global).

Funes em C - Variveis
Escopo de variveis
Exemplo:
#include <stdio.h>
// Variveis globais
int s, a;
int soma (int i)
{
int v; //varivel local
v = s + i;
s = v;
return (v);
}
int main()
{
s = 1;
a = soma (5);
printf ("A: %i S: %i\n",a,s);
}
9

Funes em C - Variveis
Escopo de variveis
Exerccio: Qual o valor de s na sada?
#include <stdio.h>
int s;
void soma (int i){
s = s + i;
}
int main() {
s = 1;
soma (5); //chamada do procedimento
printf ("S: %i\n",s);
}
10

Funes em C - Parmetros
Passagem de parmetros
H duas formas de passar parmetros.

Por valor a forma mais comum e segura.

Compilador cria uma cpia na memria do valor


passado como parmetro, que liberada aps a
execuo da funo.
Por referncia No criado um novo espao
na memria. Utiliza-se um ponteiro que uma
referncia para a varivel passado como
parmetro.
11

Funes em C - Parmetros
Passagem de parmetros
Exemplo:
#include<stdio.h>
void FuncaoValRef(int A, int* B)
A = 1;
*B = 2;
}
int main() {
int X = 0, Y = 0;
FuncaoValRef(X, &Y);
printf("%d %d\n", X, Y);
}

12

Funes em C - Parmetros
Passagem de parmetros
Exerccio: Quais valores de A e B impressos?
#include<stdio.h>
void FuncaoValRef(int X, int* Y)
X = 4;
*Y = 5;
}
int main() {
int A = 3, B = 3;
Funcaovalref(B, &A);
printf("%d %d\n", A, B);
}

13

Você também pode gostar