Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos e Programação
Conceitos de Funções em C
Prof. Me. Ricardo Becker
1
Funções
2
Funções: Sintaxe em C
tipo_da_função nome_da_função (lista_de_parâmetros)
{
corpo da função;
}
3
Funções: Sintaxe em C
tipo_da_função nome_da_função (lista_de_parâmetros)
{
corpo da função;
}
4
Funções: Sintaxe em C
tipo_da_função nome_da_função (lista_de_parâmetros)
{
corpo da função;
}
5
Funções: Sintaxe em C
tipo_da_função nome_da_função (lista_de_parâmetros)
{
corpo da função;
}
6
Funções: Sintaxe em C
tipo_da_função nome_da_função (lista_de_parâmetros)
{
corpo da função;
}
7
Exemplo: o quadrado de um número
#include <stdio.h>
main(){
float a,b;
printf("Entre com um numero: ");
scanf("%f",&a);
b = a*a;
printf("O quadrado do numero %f eh %f \n",a,b);
}
8
Exemplo: o quadrado de um número
#include <stdio.h>
main(){
float a,b;
printf("Entre com um numero: ");
scanf("%f",&a);
b = Square(a);
printf("O quadrado do numero %f eh %f \n",a,b);
}
9
Protótipos de Funções
#include <stdio.h>
main(){
float a,b;
printf("Entre com um numero: ");
scanf("%f",&a);
b = Square(a);
printf("O quadrado do numero %f eh %f \n",a,b);
}
10
Protótipos de Funções
#include <stdio.h>
main(){
float a,b;
printf("Entre com um numero: ");
scanf("%f",&a);
b = Square(a);
printf("O quadrado do numero %f eh %f \n",a,b);
}
11
Protótipos de Funções
#include <stdio.h>
main(){
float a,b;
printf("Entre com um numero: ");
scanf("%f",&a);
b = Square(a);
printf("O quadrado do numero %f eh %f \n",a,b);
}
12
Protótipos de Funções
#include <stdio.h>
14
O tipo void
• O tipo void permite fazer funções que não retornem nada e funções
que não têm parâmetros.
15
O tipo void
• O tipo void permite fazer funções que não retornem nada e funções
que não têm parâmetros.
16
O tipo void
• O tipo void permite fazer funções que não retornem nada e funções
que não têm parâmetros.
17
Exemplo: void
#include <stdio.h>
18
Observações
19
Escopo de Variáveis
20
Tipos de Variáveis
21
Variáveis Locais
int func1(){
int X;
X = 10;
return X;
}
22
Variáveis Locais
int func1(){ Variável local
int X;
X = 10;
return X;
}
23
Variáveis Locais
int func1(){
int X;
X = 10;
return X;
}
24
Variáveis Locais
int func1(){ int func2(){
int X; int X;
X = 10; X = -100;
return X; return X;
} }
• Podemos ter quantos blocos quisermos com uma variável local chamada
X, por exemplo, e elas não apresentarão conflito entre elas.
• O bloco de código mais comum em que as variáveis locais foram
declaradas é a função.
25
Parâmetros Formais
func(1,2,3) ≠ func(3,2,1)
26
Variáveis Globais
/* Programa principal*/
void func1(){
#include <stdio.h>
X *= -1;
}
int X; /* variável global */
void func1();
void func2(){
void func2();
int X = 1;
}
main(){
X = 11;
func1(); São declaradas fora de
func2(); todas as funções do
programa.
}
27
Variáveis Globais
/* Programa principal*/
void func1(){
#include <stdio.h>
X *= -1;
}
int X; /* variável global */
void func1();
void func2(){
void func2();
int X = 1;
}
main(){
X = 11;
func1(); Podem ser alteradas por
func2(); todas as funções do
programa.
}
28
Variáveis Globais
/* Programa principal*/
void func1(){
#include <stdio.h>
X *= -1;
}
int X; /* variável global */
void func1();
void func2(){
void func2();
int X = 1;
}
main(){
X = 11;
func1(); Note que nem main e nem
func1 declaram X, mas
func2();
ambas podem usá-la.
}
29
Variáveis Globais
/* Programa principal*/
void func1(){
#include <stdio.h>
X *= -1;
}
int X; /* variável global */
void func1();
void func2(){
void func2();
int X = 1;
}
main(){
X = 11;
func1(); A func2 declarou uma
variável local com o mesmo
func2();
nome.
}
30
Variáveis Globais
/* Programa principal*/
void func1(){
#include <stdio.h>
X *= -1;
}
int X; /* variável global */
void func1();
void func2(){
void func2();
int X = 1;
}
main(){
X = 11;
func1(); Quando uma função tem uma variável local
com o mesmo nome de uma variável global
func2();
a função dará preferência à variável local.
}
31
Variáveis Globais
• O armazenamento de variáveis globais encontrase em uma região fixa
da memória;
32
Separação de Códigos ou Dados
• Funções que retornam o produto das variáveis x e y.
33
Exercício: aponte o valor de cada
variável
#include <stdio.h>
int num; /* variável global */
int func(int a, int b){
a = (a+b)/2;
num -= a;
return a;
}
main(){
int A,X =0,Y = 50;
num = 10;
A = func(X,Y);
num += 2*A; /* Qual e o valor de num, A, X e Y */
printf("num=%d A=%d X=%d Y=%d\n",num,A,X,Y);
} 34
Exercício: aponte o valor de cada
variável
#include <stdio.h>
int num; /* variável global */
int func(int a, int b){
a = (a+b)/2; 1º momento:
num -= a; X=0, Y=50, num=10
return a;
}
main(){
int A,X =0,Y = 50;
num = 10;
A = func(X,Y);
num += 2*A; /* Qual e o valor de num, A, X e Y */
printf("num=%d A=%d X=%d Y=%d\n",num,A,X,Y);
} 35
Exercício: aponte o valor de cada
variável
#include <stdio.h>
int num; /* variável global */
int func(int a, int b){
a = (a+b)/2; 2º momento:
num -= a; A=25, X=0, Y=50, num=-15
return a;
}
main(){
int A,X =0,Y = 50;
num = 10;
A = func(X,Y);
num += 2*A; /* Qual e o valor de num, A, X e Y */
printf("num=%d A=%d X=%d Y=%d\n",num,A,X,Y);
} 36
Exercício: aponte o valor de cada
variável
#include <stdio.h>
int num; /* variável global */
int func(int a, int b){
a = (a+b)/2; 3º momento:
num -= a; A=25, X=0, Y=50, num=35
return a;
}
main(){
int A,X =0,Y = 50;
num = 10;
A = func(X,Y);
num += 2*A; /* Qual e o valor de num, A, X e Y */
printf("num=%d A=%d X=%d Y=%d\n",num,A,X,Y);
} 37
Exercício: Fatorial em C
38
Exercício: Fatorial em C
#include <stdio.h>
int fatorial (int m)
{
int i, fat = 1;
for (i = m; i>0; i-- )
fat *= i;
return fat;
}
main(){
int m;
printf("Entre com um numero natural: ");
scanf("%d",&m);
printf("O fatorial de %d eh %d\n", m, fatorial(m));
} 39
Exemplo: quadrado do valor
#include <stdio.h>
float Square (float num){
num *= num;
return num;
}
main(){
float num, sqr;
printf ("Entre com um numero: ");
scanf ("%f", &num);
sqr = Square(num);
printf ("O numero original eh: %f\n",num);
printf ("O seu quadrado vale: %f\n",sqr);
}
40
Exercício
41
Passagem de Parâmetros: por valor
• Na linguagem C, quando chamamos uma função, os parâmetros formais
da função copiam os valores dos parâmetros que são passados para a
função;
• Isto quer dizer que não são alterados os valores que os parâmetros têm
fora da função;
• Este tipo de chamada de função é denominado chamada por valor;
• Isto ocorre porque são passados para a função apenas os valores dos
parâmetros e não os próprios parâmetros.
42
Exemplo
#include <stdio.h>
void troca(int A, int B) {
int temp;
temp = A;
A = B;
B = temp;
printf("Dentro da funcao de troca: A = %d B = %d\n", A, B);
}
main() {
int A = 10, B = 15;
printf("Valores originais: A = %d B = %d\n", A, B);
troca(A,B);
printf("Depois da funcao de troca: A = %d B = %d\n", A, B);
} 43
Passagem de Parâmetros:
por referência
• Ocorre quando alterações nos parâmetros formais, dentro da função,
alteram os valores dos parâmetros que foram passados para a função.
• Este tipo de chamada de função tem o nome de chamada por
referência.
• A passagem por referência será discutida quando falarmos de ponteiros,
• aguardem...
44