Prof. Yandre Maldonado e Gomes da Costa
Funções em CProf.YandreMaldonado-1
• Subprogramas são estabelecidos em
linguagem C através da construção de
funções;
• A sub-programação é uma ferramenta que
contribui com a tarefa de programar:
– Favorecendo a estruturação do programa;
– Facilitando a correção do programa;
– Facilitando a modificação do programa;
– Melhorando a legibilidade do programa;
– Divisão do problema a ser resolvido em partes
(modularização);
Funções em CProf.YandreMaldonado-2
• Com a modularização de um programa, as
partes que o compõem podem ser
desenvolvidas por diferentes equipes;
• Para isto deve-se estabelecer antes padrões de
programação;
• Deve-se definir também que dependência
haverá entre os vários subprogramas;
Funções em CProf.YandreMaldonado-3
• As funções dividem um programa em tarefas menores
que, juntas, cumprem o objetivo inicial do programa;
• Quando um determinado conjunto de instruções tiver
que ser repetido dentro da solução de um problema, é
conveniente colocá-lo dentro de uma única função;
– Para se criar uma função é necessário:
– Um identificador (o nome da função);
– Uma lista de parâmetros (que possibilitam a
comunicação com outras funções);
– E as ações que serão executadas por esta função, que
formam o corpo da mesma;
Funções em CProf.YandreMaldonado-4
• As funções declaradas em C podem retornar um valor.
Este valor ficará associado ao identificador da função e
normalmente é resultante de um processamento realizado
dentro da mesma;
• As funções em C podem apresentar parâmetros. Estes
são utilizados para que se possa dar um caráter mais
genérico às mesmas, permitindo que sejam descritos os
formatos dos argumentos de entrada das mesmas;
• Declaração de uma função:
• Uma função deve ser declarada antes de ser utilizada,
como acontece com as variáveis;
• Isto deve ser feito para fornecer ao compilador
informações sobre o tipo da função e seus parâmetros;
Funções em CProf.YandreMaldonado-5
• Na declaração da função deve constar o tipo da
mesma, que deve ser o tipo do valor que ela deve
retornar;
• O comando return é utilizado para retornar um
valor ao ponto onde uma função foi chamada
(utilizada);
Funções em CProf.YandreMaldonado-6
• Sintaxe:
tipo f1 (declaração de argumentos);
void main (void)
{
a=f1(..);
}
tipo f1 (declaração dos parâmetros recebidos)
{
declaração das variáveis locais;
comandos;
return(x);
}
Funções em CProf.YandreMaldonado-7
Valor retornado pela função f1, que neste
caso seria atribuído a variável a
Valor retornado pela função f1, que neste
caso seria atribuído a variável a
Declaração do
protótipo da função
Declaração do
protótipo da função
Uso da funçãoUso da função
Declaração da
função
Declaração da
função
• Exemplo: função para traçar moldura na tela;
Funções em CProf.YandreMaldonado-8
#include <stdio.h>
#include <conio.h>
void traca_moldura (int x1, int
y1, int x2, int y2);
main()
{
clrscr();
gotoxy (12,07);
printf ("Teste de funcao");
traca_moldura (10,5,70,20);
printf("nnn");
getch();
}
...
#include <stdio.h>
#include <conio.h>
void traca_moldura (int x1, int
y1, int x2, int y2);
main()
{
clrscr();
gotoxy (12,07);
printf ("Teste de funcao");
traca_moldura (10,5,70,20);
printf("nnn");
getch();
}
...
...
void traca_moldura (int x1, int y1,
int x2, int y2)
{
int i;
for (i=x1;i<=x2;i++)
{
gotoxy(i,y1);
printf("%c",219);
}
for (i=y1;i<=y2;i++)
{
gotoxy(x2,i);
printf("%c",219);
}
for (i=x1;i<=x2;i++)
{
gotoxy(i,y2);
printf("%c",219);
}
for (i=y1;i<=y2;i++)
{
gotoxy(x1,i);
printf("%c",219);
}
}
...
void traca_moldura (int x1, int y1,
int x2, int y2)
{
int i;
for (i=x1;i<=x2;i++)
{
gotoxy(i,y1);
printf("%c",219);
}
for (i=y1;i<=y2;i++)
{
gotoxy(x2,i);
printf("%c",219);
}
for (i=x1;i<=x2;i++)
{
gotoxy(i,y2);
printf("%c",219);
}
for (i=y1;i<=y2;i++)
{
gotoxy(x1,i);
printf("%c",219);
}
}
• Outro exemplo de aplicação:
• Fazer um algoritmo para calcular a
combinação (análise combinatória) de N
elementos tomados P a P. Sabe-se que isto é
possível através da seguinte expressão
Funções em CProf.YandreMaldonado-9
Cp=
n n!
p! (n-p)!
com n ≥ p
• A solução deste problema sem o uso de uma
função teria N e P como argumentos de entrada e
C como argumento de saída;
• Seriam necessários os seguintes passos:
• Calcular o fatorial de N (armazenar em uma
variável);
• Calcular o fatorial de P (armazenar em outra
variável);
• Calcular o fatorial de N-P (armazenar em outra
variável);
• E finalmente calcular a expressão
FatN/(FatP*FatNP);
Funções em CProf.YandreMaldonado-10
• Note que nesta solução teríamos que descrever
várias vezes uma mesma seqüência de ações
que são utilizadas para o cálculo do fatorial de
um número;
• Esta seqüência tem um comportamento
padrão;
•A seguir, será descrita uma solução mais
elegante, que utiliza uma função que calcula o
fatorial de um número inteiro dado como
argumento e retorna este valor;
Funções em CProf.YandreMaldonado-11
Funções em CProf.YandreMaldonado-12
• Exemplo: função para calcular o fatorial de um número inteiro;
#include <stdio.h>
#include <conio.h>
int fatorial (int num);
main()
{
int i, n, p;
float combinacao;
printf ("Digite um valor para n: ");
scanf ("%d",&n);
printf ("Digite um valor para p: ");
scanf ("%d",&p);
combinacao=fatorial(n)/(fatorial(p)*fatorial(n-p));
printf ("nnValor da combinacao: %fnn",
combinacao);
getch();
}
...
#include <stdio.h>
#include <conio.h>
int fatorial (int num);
main()
{
int i, n, p;
float combinacao;
printf ("Digite um valor para n: ");
scanf ("%d",&n);
printf ("Digite um valor para p: ");
scanf ("%d",&p);
combinacao=fatorial(n)/(fatorial(p)*fatorial(n-p));
printf ("nnValor da combinacao: %fnn",
combinacao);
getch();
}
...
...
int fatorial (int num)
{
int i, fat=1;
for (i=1;i<=num;i++)
fat=fat*i;
return (fat);
}
...
int fatorial (int num)
{
int i, fat=1;
for (i=1;i<=num;i++)
fat=fat*i;
return (fat);
}
Funções em CProf.YandreMaldonado-13
• Exercícios:
1. Construa uma função que calcule a soma de
dois valores inteiros e retorne o valor obtido.
2. Construa uma função que receba como
argumento o valor do raio de uma
circunferência e retorne o valor da área da
mesma.
3. Construa uma função que receba como
argumento de entrada uma cadeia de 20
caracteres e um caractere e retorne o número
de vezes que este caractere aparece na cadeia.

Funções em C - Prof. Yandre

  • 1.
    Prof. Yandre Maldonadoe Gomes da Costa Funções em CProf.YandreMaldonado-1
  • 2.
    • Subprogramas sãoestabelecidos em linguagem C através da construção de funções; • A sub-programação é uma ferramenta que contribui com a tarefa de programar: – Favorecendo a estruturação do programa; – Facilitando a correção do programa; – Facilitando a modificação do programa; – Melhorando a legibilidade do programa; – Divisão do problema a ser resolvido em partes (modularização); Funções em CProf.YandreMaldonado-2
  • 3.
    • Com amodularização de um programa, as partes que o compõem podem ser desenvolvidas por diferentes equipes; • Para isto deve-se estabelecer antes padrões de programação; • Deve-se definir também que dependência haverá entre os vários subprogramas; Funções em CProf.YandreMaldonado-3
  • 4.
    • As funçõesdividem um programa em tarefas menores que, juntas, cumprem o objetivo inicial do programa; • Quando um determinado conjunto de instruções tiver que ser repetido dentro da solução de um problema, é conveniente colocá-lo dentro de uma única função; – Para se criar uma função é necessário: – Um identificador (o nome da função); – Uma lista de parâmetros (que possibilitam a comunicação com outras funções); – E as ações que serão executadas por esta função, que formam o corpo da mesma; Funções em CProf.YandreMaldonado-4
  • 5.
    • As funçõesdeclaradas em C podem retornar um valor. Este valor ficará associado ao identificador da função e normalmente é resultante de um processamento realizado dentro da mesma; • As funções em C podem apresentar parâmetros. Estes são utilizados para que se possa dar um caráter mais genérico às mesmas, permitindo que sejam descritos os formatos dos argumentos de entrada das mesmas; • Declaração de uma função: • Uma função deve ser declarada antes de ser utilizada, como acontece com as variáveis; • Isto deve ser feito para fornecer ao compilador informações sobre o tipo da função e seus parâmetros; Funções em CProf.YandreMaldonado-5
  • 6.
    • Na declaraçãoda função deve constar o tipo da mesma, que deve ser o tipo do valor que ela deve retornar; • O comando return é utilizado para retornar um valor ao ponto onde uma função foi chamada (utilizada); Funções em CProf.YandreMaldonado-6
  • 7.
    • Sintaxe: tipo f1(declaração de argumentos); void main (void) { a=f1(..); } tipo f1 (declaração dos parâmetros recebidos) { declaração das variáveis locais; comandos; return(x); } Funções em CProf.YandreMaldonado-7 Valor retornado pela função f1, que neste caso seria atribuído a variável a Valor retornado pela função f1, que neste caso seria atribuído a variável a Declaração do protótipo da função Declaração do protótipo da função Uso da funçãoUso da função Declaração da função Declaração da função
  • 8.
    • Exemplo: funçãopara traçar moldura na tela; Funções em CProf.YandreMaldonado-8 #include <stdio.h> #include <conio.h> void traca_moldura (int x1, int y1, int x2, int y2); main() { clrscr(); gotoxy (12,07); printf ("Teste de funcao"); traca_moldura (10,5,70,20); printf("nnn"); getch(); } ... #include <stdio.h> #include <conio.h> void traca_moldura (int x1, int y1, int x2, int y2); main() { clrscr(); gotoxy (12,07); printf ("Teste de funcao"); traca_moldura (10,5,70,20); printf("nnn"); getch(); } ... ... void traca_moldura (int x1, int y1, int x2, int y2) { int i; for (i=x1;i<=x2;i++) { gotoxy(i,y1); printf("%c",219); } for (i=y1;i<=y2;i++) { gotoxy(x2,i); printf("%c",219); } for (i=x1;i<=x2;i++) { gotoxy(i,y2); printf("%c",219); } for (i=y1;i<=y2;i++) { gotoxy(x1,i); printf("%c",219); } } ... void traca_moldura (int x1, int y1, int x2, int y2) { int i; for (i=x1;i<=x2;i++) { gotoxy(i,y1); printf("%c",219); } for (i=y1;i<=y2;i++) { gotoxy(x2,i); printf("%c",219); } for (i=x1;i<=x2;i++) { gotoxy(i,y2); printf("%c",219); } for (i=y1;i<=y2;i++) { gotoxy(x1,i); printf("%c",219); } }
  • 9.
    • Outro exemplode aplicação: • Fazer um algoritmo para calcular a combinação (análise combinatória) de N elementos tomados P a P. Sabe-se que isto é possível através da seguinte expressão Funções em CProf.YandreMaldonado-9 Cp= n n! p! (n-p)! com n ≥ p
  • 10.
    • A soluçãodeste problema sem o uso de uma função teria N e P como argumentos de entrada e C como argumento de saída; • Seriam necessários os seguintes passos: • Calcular o fatorial de N (armazenar em uma variável); • Calcular o fatorial de P (armazenar em outra variável); • Calcular o fatorial de N-P (armazenar em outra variável); • E finalmente calcular a expressão FatN/(FatP*FatNP); Funções em CProf.YandreMaldonado-10
  • 11.
    • Note quenesta solução teríamos que descrever várias vezes uma mesma seqüência de ações que são utilizadas para o cálculo do fatorial de um número; • Esta seqüência tem um comportamento padrão; •A seguir, será descrita uma solução mais elegante, que utiliza uma função que calcula o fatorial de um número inteiro dado como argumento e retorna este valor; Funções em CProf.YandreMaldonado-11
  • 12.
    Funções em CProf.YandreMaldonado-12 •Exemplo: função para calcular o fatorial de um número inteiro; #include <stdio.h> #include <conio.h> int fatorial (int num); main() { int i, n, p; float combinacao; printf ("Digite um valor para n: "); scanf ("%d",&n); printf ("Digite um valor para p: "); scanf ("%d",&p); combinacao=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf ("nnValor da combinacao: %fnn", combinacao); getch(); } ... #include <stdio.h> #include <conio.h> int fatorial (int num); main() { int i, n, p; float combinacao; printf ("Digite um valor para n: "); scanf ("%d",&n); printf ("Digite um valor para p: "); scanf ("%d",&p); combinacao=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf ("nnValor da combinacao: %fnn", combinacao); getch(); } ... ... int fatorial (int num) { int i, fat=1; for (i=1;i<=num;i++) fat=fat*i; return (fat); } ... int fatorial (int num) { int i, fat=1; for (i=1;i<=num;i++) fat=fat*i; return (fat); }
  • 13.
    Funções em CProf.YandreMaldonado-13 •Exercícios: 1. Construa uma função que calcule a soma de dois valores inteiros e retorne o valor obtido. 2. Construa uma função que receba como argumento o valor do raio de uma circunferência e retorne o valor da área da mesma. 3. Construa uma função que receba como argumento de entrada uma cadeia de 20 caracteres e um caractere e retorne o número de vezes que este caractere aparece na cadeia.