A maior rede de estudos do Brasil

Grátis
120 pág.
ApostilaANSI-C

Pré-visualização | Página 13 de 27

Ou 
seja, onde podemos declarar as variáveis no programa e o campo de atuação de 
cada uma delas. 
 
 
FUNÇÕES 
 
Já conversamos um pouquinho sobre função. Seria impossível, até o momento 
não tê-lo feito, uma vez que a unidade fundamental do C é a função. Por esse 
motivo, todos os programas que executamos possuíam a função main. 
 
Um programa em C nada mais é que um conjunto de funções básicas ordenadas 
pelo programador. Cada função é na verdade um sub-programa que contém um 
ou mais comandos e executa uma tarefa específica. 
 
Observe como um programa pode ser elaborado: 
 
//Definição da primeira função 
<Tipo_da_função> <Nome_da_função_1> ( <Parâmetro_1>, ...,<Parâmetro_N>) 
 
{ //Início da primeira função 
 <Comandos_em_C>; 
............................ 
} //Fim da primeira função 
. 
. 
. 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
59 
//Definição da n-éssima função 
<Tipo_da_função> <Nome_da_função_N> ( <Parâmetro_1>, ...,<Parâmetro_N>) 
 
{ //Início da n-ésimo função 
 <Comandos_em_C>; 
............................ 
} //Fim da n-ésimo função 
 
//Definição da função principal 
<Tipo_da_função> main (int argc, char *argv[ ]) 
 { //Início da função principal 
 <Tipo_da_variável_1> Variável_1; 
 ... 
 <Tipo_da_variável_N> Variável_N; 
 
Variável_1 = Nome_da_função_1(<Parâmetro_1>, ...,<Parâmetro_N>); 
 . 
 . 
 . 
 Variável_N = Nome_da_função_N(<Parâmetro_1>, ...,<Parâmetro_N>); 
 } //Fim da função principal 
 
Esse pedaço de código é formado por várias funções A função main é sempre a 
primeira a ser executada. Neste caso particular, ela chama todas as outras 
funções. Observe que as N funções foram definidas antes da função main, onde 
todas foram chamadas. 
 
Atenção:Atenção:Atenção:Atenção: 
 
� Uma função não pode ser chamada antes de ser definida ou declarada. 
Como o compilador poderia identificá-la? 
� Programas bem escritos apresentam em cada função uma tarefa. 
 
Observe mais um detalhe: pela primeira vez os parâmetros da função C estão 
presentes no código: int argc, char *argv[ ]. Embora sempre estivessem presentes 
no esqueleto de programa aberto pelo compilar Borland C++ Builder. Estudaremos 
esses parâmetros em detalhes mais adiante, por enquanto, não se preocupe com 
eles. 
 
A sintaxe de uma função é a seguinte: 
 
<Tipo_da_função> <Nome_da_função> ( <Parâmetro_1>, <parâmetro_2> ... <parâmetro_N>) 
{ 
 <Comando_em _C>; 
 <Comando_em _C>; 
 ....................... 
 <Comando_em _C>; 
} 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
60 
 
Onde definimos: 
 
1. Tipo_da_função 
 
O tipo da função pode ser um dos cinco tipos básicos de dados em C (char, int, 
float, double ou void). O tipo refere-se ao valor que a função retorna. Mas para 
dizer ao C o que vamos retornar precisamos da palavra reservada return. 
Sabendo disso, verifique, no programa a seguir, que a função produto retorna um 
inteiro correspondente ao produto entre x e y. 
 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 23 
Este programa e’ composto por duas funções: 
1. Produto: recebe como parâmetros dois inteiros x e y e retorna 
um inteiro que é o produto entre eles. 
2. maim: não recebe nenhum parâmetro e retorna um inteiro (zero). 
 
******************************************************************************/ 
 
int produto (int x,int y) /* Calcula o produto entre x e y*/ 
{ 
 return (x*y); 
} 
 
int main () 
{ 
 int saida; 
 saida= produto(5, 8); 
 printf ("O retorno da função produto e’: %d\n",saida); 
 system("pause"); 
 return(0); 
} 
 
A função produto retorna um inteiro, que é o resultado da multiplicação de 5 por 8. 
Este resultado foi atribuído à variável saída, que posteriormente foi impressa 
através da função printf. A função main também retorna um inteiro, portanto foi 
necessário usar return (0). Normalmente fazemos a função main retornar um zero 
quando ela é executada sem qualquer tipo de erro. 
 
Quando, em um programa, a instrução return é executada, a função é encerrada 
imediatamente. Se o valor de retorno for informado, a função retorna este valor. É 
importante lembrar que o valor de retorno fornecido tem que ser compatível com o 
tipo de retorno declarado para a função. 
 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
61 
Uma função pode ter mais de uma declaração return. Isto é, a função pode ser 
finalizada em pontos diferentes.Observe o exemplo a seguir: 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 24 
Este programa e’ composto por duas funções: 
1. EPar: que possui duas declarações de retorno. 
2. maim: que utiliza o retorno da função é par em uma comparação e 
retorna o inteiro zero, uma vez que foi executada sem erros. 
 
******************************************************************************/ 
 
int EPar (int a) 
{ 
 if (a%2) /* Verifica se “a” é divisível por dois */ 
 return 0; /* Retorna 0 se não for divisível */ 
 else 
 return 1; /* Retorna 1 se for divisível */ 
} 
 
int main () 
{ 
 int num; 
 printf ("Entre com numero: "); 
 scanf ("%d",&num); 
 printf ("\nO numero e’ %s.”, (EPar(num) ==1) ? “par” : “impar”); 
 printf ("\n\n”); 
 system("pause"); 
 return 0; 
} 
 
Às vezes, não é necessário que uma função retorne um valor. Neste caso, o tipo 
da função é void, e não é usado o return. Se não especificarmos o tipo de retorno 
de uma função, o compilador C automaticamente suporá que este tipo é inteiro. 
Porém, não é uma boa prática não se especificar o valor de retorno. 
 
 
Atenção:Atenção:Atenção:Atenção: 
 
� Neste curso sempre especificaremos o tipo de retorno das funções. 
 
 
#include <stdio.h> 
#include <stdlib.h> 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
62 
/***************************************************************************** 
Programa 25 
Este programa e’ composto por duas funções: 
1. Produto: que retorna um inteiro. 
2. maim: que usa a função produto como um dos parâmetro da 
 função printf e não retorna nada pois é do tipo void. 
******************************************************************************/ 
 
int produto (int x,int y) /* Calcula o produto entre x e y*/ 
{ 
 return (x*y); 
} 
 
void main () 
{ 
 printf ("A função produto e’ um parâmetro de printf e retorna: %d\n", produto(5, 8)); 
 printf ("O retorno da função produto dividido por 4 e’: %d\n", produto(5, 8)/4); 
 
 system("pause"); 
} 
 
É importante notar que, como as funções retornam valores, podemos aproveitá-los 
para fazer atribuições, como parte de expressões ou como parâmetro de outras 
funções. 
 
2. Nome_da_função 
 
O nome da função segue as mesmas regras dos nomes das variáveis: 
 
� È constituído por uma seqüência de caracteres começando com letras e 
intercalada com números. 
� Os identificadores poderão ter qualquer número de caracteres, mas apenas 
os 31 primeiros serão significativos para o compilador. 
� Não podem ser utilizados caracteres especiais que representam