FuncoesUma funcao e um bloco de codigo de programa que pode ser usado diversas vezes emsua execucao. O uso de funcoes permite que o programa fique mais legivel, mais bemestruturado. Um programa em C consiste, no fundo, de varias funcoes colocadas juntas.Abaixo o tipo mais simples de funcao:#include <stdio.h>int mensagem () /* Funcao simples: so imprime Ola! */{printf ("Ola! ");return(0);}int main (){mensagem();printf ("Eu estou vivo!\n");return(0);}Este programa tera o mesmo resultado que o primeiro exemplo da secao anterior. O queele faz e definir uma funcao mensagem() que coloca uma string na tela e retorna 0. Estafuncao e chamada a partir de main() , que, como ja vimos, tambem e uma funcao. Adiferenca fundamental entre main e as demais funcoes do problema e que main e uma funcaoespecial, cujo diferencial e o fato de ser a primeira funcao a ser executada em um programa.4ArgumentosArgumentos sao as entradas que a funcao recebe. E atraves dos argumentos quepassamos parametros para a funcao. Ja vimos funcoes com argumentos. As funcoes printf() escanf() sao funcoes que recebem argumentos. Vamos ver um outro exemplo simples defuncao com argumentos:#include <stdio.h>int square (int x) /* Calcula o quadrado de x */{printf ("O quadrado e %d",(x*x));return(0);}int main (){int num;printf ("Entre com um numero: ");scanf ("%d",&num);printf ("\n\n");square(num);return(0);}Na definicao de square() dizemos que a funcao recebera um argumento inteiro x.Quando fazemos a chamada a funcao, o inteiro num e passado como argumento. Ha algunspontos a observar. Em primeiro lugar temos de satisfazer aos requesitos da funcao quanto aotipo e a quantidade de argumentos quando a chamamos. Apesar de existirem algumasconversoes de tipo, que o C faz automaticamente, e importante ficar atento. Em segundolugar, nao e importante o nome da variavel que se passa como argumento, ou seja, a variavelnum, ao ser passada como argumento para square() e copiada para a variavel x. Dentro desquare() trabalha-se apenas com x. Se mudarmos o valor de x dentro de square() o valorde num na funcao main() permanece inalterado.Vamos dar um exemplo de funcao de mais de uma variavel. Repare que, neste caso, osargumentos sao separados por virgula e que deve-se explicitar o tipo de cada um dosargumentos, um a um. Note, tambem, que os argumentos passados para a funcao naonecessitam ser todos variaveis porque mesmo sendo constantes serao copiados para a variavelde entrada da funcao.#include <stdio.h>int mult (float a, float b,float c) /* Multiplica 3 numeros */{printf ("%f",a*b*c);return(0);}int main (){float x,y;x=23.5;y=12.9;mult (x,y,3.87);return(0);5}Retornando valoresMuitas vezes e necessario fazer com que uma funcao retorne um valor. As funcoes quevimos ate aqui estavam retornando o numero 0. Podemos especificar um tipo de retornoindicando-o antes do nome da funcao. Mas para dizer ao C o que vamos retornar precisamosda palavra reservada return. Sabendo disto fica facil fazer uma funcao para multiplicar doisinteiros e que retorna o resultado da multiplicacao. Veja:#include <stdio.h>int prod (int x,int y){return (x*y);}int main (){int saida;saida=prod (12,7);printf ("A saida e: %d\n",saida);return(0);}Veja que, como prod retorna o valor de 12 multiplicado por 7, este valor pode ser usadoem uma expressao qualquer. No programa fizemos a atribuicao deste resultado a variavelsaida, que posteriormente foi impressa usando o printf. Uma observacao