funções em c
TRANSCRIPT
O que são funções?
Função é um bloco de código que, como o próprio nome diz, tem uma função, uma tarefa específica. Veja função como uma maneira de se evitar a repetição de código.
Funções
Se você já fez algum programa, então com certeza já utilizou uma função, pois a main é uma função. Praticamente tudo o que programamos é feito em funções.
Estrutura das FunçõesVamos ver como é a estrutura de uma função
int foo(int b) {
int a;a = b;
return a;}
Tipo da função: este tipo indica o tipo de dado que a função retorna. Se a função não tiver que retornar nada, ela será do tipo void.
Nome da função: o nome da função deve seguir as mesmas regras de nomeação de variáveis.
Parâmetros ou argumentos: a função pode receber parâmetros de seu chamador, que podem ser usados no seu escopo. Uma função pode ou não ter parâmetros.
Escopo da função: as variáveis que são definidas dentro da função só existem lá dentro e não podem ser utilizadas fora deste escopo.
Função mainComo dito, a main é uma função. Mas ela é uma função especial, como o próprio nome diz, ela é a função principal do programa. Todo programa se inicia e termina na main.
int main() {
return 0;}
O return 0, quando inserido na main, indica para o computador, o ponto de parada do programa.
Funções
É muito importante entender que um programa pode (e deve) ter várias funções. É importante saber também, que existem funções pré-definidas pela linguagem que estão nas bibliotecas do sistema e ás incluímos através do comando include.
Funções incluídas
Um exemplo de uma função pré-definida que utilizamos a todo momento é a printf. A função printf é uma função da biblioteca padrão stdio.
#include <stdio.h>
int main(){
printf(“Hello world”);
return 0;}
A biblioteca padrão, stdio.h, é obrigatória para execução de qualquer programa, pois a maintambém está definida lá. Sem o comando include, não conseguiríamos utilizar uma função pré-definida em uma biblioteca. Existem diversas bibliotecas disponíveis.
Programas com e sem funçõesVamos ver um exemplo de dois programas que fazem a mesma coisa, porém um com duas funções e outro com uma. Seja o problema de somar dois números.
#include <stdio.h>
int main(){
int soma;int a = 10;int b = 5;soma = a + b;
return 0;}
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
Todo código na main Utilizando duas funções
Análise de um programa com mais de uma função
Vamos analisar a execução deste programa para ver o que acontece.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Passo 1
O programa começa a executar a partir da função main.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Passo 2
A variável a recebe o valor 10.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Variável Valor
a 10
Passo 3
A variável b recebe o valor 5.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Variável Valor
a 10
b 5
Passo 4
A execução na main é colocada em standby até que haja um retorno da função chamada.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Variável Valor
a 10
b 5
A propósito, a maneira como chamamos uma função é com o nome dela e exatamente a quantidade de parâmetros que ela requere.
Passo 5
A execução se inicia na função. Neste momento n1 e n2 recebem os valores passados na chamada da função. Neste caso, os valores de a e b.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Variável Valor
a 10
b 5
n1 10
n2 5
Passo 6O programa sabe que uma função chegou ao fim quando a execução encontra a palavra return para funções que retornam algo. Para um função que retorna algo, a palavra return é obrigatória.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
7
Variável Valor
a 10
b 5
n1 10
n2 5
Para funções que não retornam nada, o fim é identificado pela chave de fechamento.
Para o nosso caso, o retorno deve ser um inteiro. Nada nos impede de retornar uma soma, cujo valor é um inteiro. É exatamente isto que estamos fazendo.
Passo 7Como a função retornou, voltamos para a main. É isso que a retorno faz, voltar para onde a função foi chamada e envia o valor de retorno.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
8
Variável Valor
a 10
b 5
n1 10
n2 5
soma 15
A variável soma vai receber o valor de retorno da função, que nesse caso é a soma de n1 e n2, que nos dá 15.
7
Passo 9O programa encontra o return 0 na main e se encerra.
#include <stdio.h>
int somar (int n1, int n2){return n1 + n2;
}
int main(){
int a = 10;int b = 5;int soma = somar(a,b);
return 0;}
1
2
3
4
5
6
8
Variável Valor
a 10
b 5
n1 10
n2 5
soma 15
7
Alguns fatos que precisamos reforçar
No exemplo anterior aprendemos várias características de uma função. Vamos reforçar alguns fatos:
• A chamada da função deve passar exatamente o número de parâmetros que a função requere e todos devem ser do tipo especificado. Se a função requer um inteiro e um caracter e você passar dois inteiros por exemplo, o programa não irá compilar.
• Se a função retorna algo, este retorno deve ser exatamente do tipo especificado.
• Um função pode chamar outras funções. Você faz isto na main a todo momento e lembre-se que ela é uma função!
Alguns fatos que precisamos reforçar
• Sempre que uma função é chamada, a execução sequencial do programa é quebrada e enviada para a função. Em algum momento, obrigatoriamente, essa execução será retomada do mesmo ponto em que parou. Isto acontece quando a função termina sua execução e acontece então um retorno para o local de sua chamada, sendo ele a main ou qualquer outra função.