Tutoria AEDSI
Pablo Silva
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.
Por que usar funções?
- Organizar e modularizar o código
- Evitar 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ções
Vamos 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 main
Como 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 main
també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ções
Vamos 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 6
O 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 7
Como 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 9
O 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.

Funções em C

  • 1.
  • 2.
    O que sãofunçõ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.
  • 3.
    Por que usarfunções? - Organizar e modularizar o código - Evitar repetição de código
  • 4.
    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.
  • 5.
    Estrutura das Funções Vamosver 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.
  • 6.
    Função main Como 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.
  • 7.
    Funções É muito importanteentender 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.
  • 8.
    Funções incluídas Um exemplode 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 main també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.
  • 9.
    Programas com esem funções Vamos 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
  • 10.
    Análise de umprograma 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
  • 11.
    Passo 1 O programacomeç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
  • 12.
    Passo 2 A variávela 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
  • 13.
    Passo 3 A variávelb 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
  • 14.
    Passo 4 A execuçãona 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.
  • 15.
    Passo 5 A execuçãose 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
  • 16.
    Passo 6 O programasabe 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.
  • 17.
    Passo 7 Como afunçã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
  • 18.
    Passo 9 O programaencontra 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
  • 19.
    Alguns fatos queprecisamos 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!
  • 20.
    Alguns fatos queprecisamos 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.