O documento discute funções em linguagem C. Explica que funções dividem um programa em tarefas menores e permitem modularização, melhorando a estrutura, legibilidade e manutenção do código. Apresenta a sintaxe básica de declaração e uso de funções em C, incluindo parâmetros, retorno de valores e exemplos.
2. • 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
3. • 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
4. • 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
5. • 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
6. • 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
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çã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);
}
}
9. • 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
10. • 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
11. • 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
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.