funções em c

20
Tutoria AEDSI Pablo Silva

Upload: pablo-silva

Post on 09-Aug-2015

30 views

Category:

Education


0 download

TRANSCRIPT

Tutoria AEDSIPablo 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çõ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.