O que são funções, para que servem e como usá-las em C

Para ter uma seção só para este assunto em nossa apostila online C Progressivo, você deve suspeitar que essas tais funções sejam bem importantes em C. E são mesmo, e muito.

Porém, se você lembrar bem, você já usou as benditas funções: printf, scanf, system e própria main é uma função. A partir de agora, vamos ensinar a você os conceitos de funções em C.

O que é uma função em linguagem C

Função é um bloco de código que, como o próprio nome diz, tem uma função, uma tarefa específica.
As funções servem como um atalho à um bloco de código. 
Veja função como uma maneira de se evitar a repetição de código.

Em vez de programar um trecho de código várias vezes, definimos uma função que faz tal tarefa e depois, ao longo do programa, basta invocar essa função que, automaticamente, o código nela é executado.

Desta maneira, podemos criar um trecho de código, que representa uma lógica, um passo ou rotina, do processo inteiro e isolá-lo.

Com a criação das funções, vamos ver como elas irão facilitar a vida de um programador, pois será necessário criar a função somente uma vez, e ela estará disponível e pronta para ser usada no futuro.

Para que serve uma função em C?

Um dos motivos nós já expomos no tópico anterior, que é o fato de você economizar linhas de código.
O que é possível fazer com função, é possível fazer sem, usando os laços e testes condicionais estudados na unidade anterior.

Porém, nossos programas em C ficariam enormes, e essa falta de organização deixa inviável a criação de programas mais complexos. Se estudou todos os tutoriais de nosso curso, deve ter notado que alguns programas ficaram bem extensos, e é difícil ter controle sobre centenas ou milhares de linhas de código.
Uma das utilidades das funções é, portanto, a organização e a redução de nossos códigos.

Quando um programador profissional inicia um projeto, ele já tem que ter boa parte do código pronto.
“Como ter código pronto, se você nem sabe que projeto vai participar nem o que o programa vai fazer?”

Todos os programadores, inclusive você que já é programador C, deve fazer a reusabilidade de código, e uma das maneiras mais comuns de se fazer isso é através de funções.

Durante seus anos de estudo da linguagem C, você irá criar centenas ou milhares de funções.
Então, atente bem para essa dica: guarde e organize suas funções.

Ainda não entendeu? Vamos dar um exemplo.
Vamos supor que uma empresa te contratou para fazer um sistema em C. Nesse sistema, serão necessários fazer cálculos matemáticos dos mais diversos.

Ora, se você já tiver feito uma função que soma números, outra que multiplica e por ai vai, você não vai precisar escrever elas de novo. Basta você ir em seu banco de dados de programação e copiar o código já feito.
Isso é reusabilidade. Ou seja, você vai usar bastante os códigos que você programou durante toda sua vida.

Antes de iniciar nossos estudos sobre funções, vamos dar uma dica importantíssima, que frequentemente é ignorada, mesmo por programadores experientes: suas funções devem fazer uma única coisa e muito bem feita.

Por exemplo, em vez de fazer uma função que calcula as raízes de uma equação do segundo grau, faça uma função que calcula do delta (Bháskara) e outra que calcula a raiz quadrada de um número. Só então faça a função que calcula as raízes, usando as outras funções.

Não faça uma função que cria uma casa. Faça uma função que cria quartos, outra que cria banheiros, outra que cria sala, outra que cria um jardim, outra que cria um cozinha etc.
Por fim, faça uma função que invoca as funções anteriores, montando assim, sua casa.
Se um dia você precisar de uma função que constrói banheiro, você já tem ela separada. Afinal, banheiro é banheiro. Mas se tivesse feito uma função que criava a casa de uma vez, você não teria esse código, que cria o banheiro, de maneira acessível.



Como declarar funções em C

A sintaxe de uma função é a seguinte

tipo_de_retorno nome_da_função(lista de parâmetros)
{
        // código da
          // função
}

E para invocar a função basta usar o comando: nome_da_função(lista de argumentos).

Quando aos parâmetros, argumentos e tipos de retorno, serão explicados em breve.
Por hora vamos usar funções que não retornam nada (funções do tipo void) e que não recebem nenhum argumento.


Exemplo de código:
Função que mostra uma mensagem na tela.

Criamos a função hello(), que não retorna nada, por isso colocamos o void.
A função dessa função é simplesmente mostrar uma mensagem na tela, quando é invocada.

#include<stdio.h>

void hello()
{
        printf("Ola mundo! Estou aprendendo C com o curso C Progressivo\n");
}

int main()
{
        hello();
}

Podemos colocar esse chamado da função em qualquer lugar da main, ou de outra função.
Poderíamos colocar dentro de um laço, e repetir o chamado dessa função quantas vezes quiséssemos. E a vantagem é que não precisamos escrever de novo o printf, basta chamar a função hello() que ela irá imprimir, automaticamente, a frase na tela.


29 comentários:

Anônimo disse...

vlew,muitos leem os tutoriais e nem dão um simples obrigado q gente egoista !

Anônimo disse...

Muito bom mesmo, na faculdade estava com muita dificuldade em entender isto, e aqui deu uma esclarecida de como se utilizar

Matheus disse...

Obrigado Mano, os tutoriais estão ajudando muito, se puder me add no skype ou fb para tirar uma duvidas:

skype: matheus.nascimento60
facebook:facebook.com/matheuslolnascimento

Anônimo disse...

Simplesmente muito show!!
Me ajudou a compreender e com uma linguagem fácil.

Apostila C Progressivo disse...

Olá Matheus,

Você pode tirar suas dúvidas de programação no nosso fórum, na seção da linguagem C:

http://progressiva.forumeiros.com/f4-c-duvidas

É interessante colocar lá, pois pode ser dúvida de outros estudantes.

Valdir silva disse...

Valew pelo empenho e por compartilhar todo esse conhecimento!!!!

Anônimo disse...

obrigado por disponibilizarem este conteúdo. mesmo o livro da faculdade com quase 900 paginas nao explica da forma tao pratica e funcional quanto voces. parabens

Anônimo disse...

Muita boa explicação vou fazer prova semana que vem e estou com dificuldade, mais deu uma clareada legal.

Rafael Ramos disse...

Olá a todo(a)s! Recentemente, não consegui passar na disciplina Estrutura de Dados, e agora estou revendo todos os conceitos de C, para depois aplicar em ED. Adoro a didática de vocês, sempre eficiente, simples (sem cair no banal) e elegante, além de algumas pitadas de bom humor: resumindo sensacional! Parabéns e continuem nos presenteando com projetos como esses.

Unknown disse...

Muito bom :]

Anônimo disse...

Ótimo tutorial em C, Parabéns!

Anônimo disse...

Valeu muito Obrigado!!!
Instituto Federal de Ciência e Tecnologia!!! Já passei o site pra turma!!!!!

Anônimo disse...

Muito boa explicação.
Obrigado pessoal da C Progressivo. :)

Anônimo disse...

Muito obrigado

Joao Carlos Agostini disse...

No exemplo dado, diz-se que a função não retorna nada e por isso pomos void antes de seu nome. Mas a função hello() "retorna" uma frase quando é executada.
Então há uma diferença entre o conceito de retorno e de saída que a função realiza. Imprimir uma frase é o "retorno" da função chamada.
Acho que se deveria explicitar essa diferença. É uma sugestão.

Ana Carolina disse...

Ajudou demais! Sensacional!!!

Raphael MELLO disse...

Nao posso deixar de dizer q esse site cprogressivo tem todo o meu RESPEITO...como sou um kbeca dura pra aprender a programar esses tutorias estao sendo mto uteis pra mim!!!

Anônimo disse...

Parabéns pela iniciativa

corintiano disse...

site mto bom ... estão de parabens ... esta me ajudando mto na facu ... Deus abençoe vcs

Anônimo disse...

obrigado, muito o curso.

Daniel Brito disse...

Muito obrigado!

Daniel disse...

Muito bem explicado. =D

Jobson Souza disse...

Parabéns.

Muito legal!

Anônimo disse...

muito bem explicado. muito bom

Anônimo disse...

Muito obrigado!!

Bruno Pádua disse...

Muito obrigado pelo excelente conteúdo, já recomendei para todos na minha Universidade.

Joyce disse...

Muito grata! Ajudou muito!

Guilherme Morais disse...

Minha salvação
VALEU !!!

Priscila Latuff disse...

Muito boa explicação está me ajudando na faculdade.

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.