Linguagem de
programação I A
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Funções
Funções
O que são “Funções”? (ou subprogramas ou subrotinas)
São trechos de código fonte agrupados sob um nome, que
podem ser chamados sempre que for necessário executar uma
determinada ação programada neste trecho;
Como usar funções?
Atribui-se um nome à uma seqüência de comandos, e faz-se
referência a este nome nos vários lugares do programa onde a
seqüência em questão deveria ser repetida.
Funções
Por que usar funções?
Evita escrita repetida de código (uma certa seqüência de comandos deve
ser repetida em vários lugares de um programa).
Economiza o tempo gasto com o trabalho de copiar estas seqüências;
Evitar a necessidade de mudar em múltiplos lugares caso deseje alterar
o seu funcionamento;
Dividir grandes tarefas de computação em tarefas menores:
Facilita o gerenciamento de grandes sistemas e
Aumenta a confiabilidade dos mesmos.
Resumo: Principais motivações para uso das funções!
Evitar repetição de código
Permite chamar varias vezes o mesmo codigo
Modularização
Declaração de função
Formato para declaração de uma função
tipo-de-retorno nome-da-função(lista-de-parametros)
{
comandos
}
Lista de parametros
Parametros separados por virgula
Declarar o tipo de cada um dos parametros
Se não tiver parametros usar void ou deixar em branco
Tipo-de-retorno
Tipo de dado retornado como resultado (usar void se não retornar
nada)
Escopo das variáveis
Variáveis locais
Conhecidas somente na função na qual estão definidas
Todas as variáveis declaradas dentro de uma função são locais a esta
função
Caso uma variável local a função tenha o mesmo nome de uma variável
global, a variável local será usada e não a global
Parâmetros
São as variáveis, declaradas na definição da função, que são passadas
a função quando esta é chamada
Proporcionam que informações externas a função sejam fornecidas
Argumentos
São os valores usados para chamar a função
Função simples
Não recebe parametro algum e não retorna nada
void sai_do_programa()
{
printf(“Digite qualquer tecla para sair do programa.\n”);
system(“pause”);
exit(0);
}
Chamada: sai_do_programa();
Função com parâmetro
Recebe parametro de um tipo informado
void imprime_quadrado(int n)
{
printf(“O quadrado de %d eh %d.\n”,n, n*n);
}
Chamada: imprime_quadrado(5);
Saída: O quadrado de 5 eh 25
Função com parâmetro e retorno
int quadrado(int n)
{
int q;
q = n * n;
return(q);
}
Chamada: printf(“O quadrado de %d eh %d.\n”, 5, quadrado(5)
);
Saída: O quadrado de 5 eh 25
Usar o comando return
O valor retornado por return deve ser compatível com o tipo da função, o
qual é definido quando da sua declaração.
Função com parâmetro e retorno
int quadrado(int n){
int q;
q = n * n;
return(q);
}
Chamada:
int i;
for(i=1;i<5;i++)
printf(“O quadrado de %d eh %d.\n”, 5, quadrado(5) );
Saída
O
O
O
O
quadrado
quadrado
quadrado
quadrado
de
de
de
de
1
2
3
4
eh
eh
eh
eh
1
4
9
16
Função com diversos parâmetros e retorno
int potencia(int n, int p)
{
int i,resultado=1;
for(i=1;i<=p;i++)
resultado = resultado * n;
return(resultado);
}
Chamada: printf(“%d elevado a %d vale %d.\n ”,2 , 4 ,
potencia(2,4));
Saída: 2 elevado a 4 vale 16
Função com diversos parâmetros e retorno
int potencia(int n, int p){
int i,resultado=1;
for(i=1;i<=p;i++)
resultado = resultado * n;
return(resultado);
}
Chamada:
int i;
for(i=1;i<5;i++)
printf(“%d elevado a %d vale
%d.\n”,2,i,potencia(2,i));
Saída: 2
2
2
2
elevado
elevado
elevado
elevado
a
a
a
a
1
2
3
4
vale
vale
vale
vale
1
4
8
16
Posicionamento das funções no programa C
Sempre antes da função main()
Caso queira colocar as funções após a função main(), é preciso
colocar um “protótipo” da função antes da função main()!!!!
(Mas o que é um protótipo de função?.....)
…é a descrição da função!
Ex: função “sai_do_programa”
void sai_do_programa(){
printf(“Digite qualquer tecla para sair do
programa.\n”);
system(“pause”);
exit(0);
}
Protótipo da função “sai_do_programa”: void sai_do_programa();
Posicionamento das funções no programa C
Ex2: função “quadrado”
int quadrado(int n)
{
int q;
q = n * n;
return(q);
}
Protótipo da função “quadrado”:
int quadrado(int n);
Chamada por valor e chamada por referência
A chamada por valor é a passagem normal do valor dos
argumentos para a função. Utilizando esta chamada os
valores dos argumentos passados não são modificados.
Na realidade é passada uma cópia dos valores para a
função.
Na chamada por referência são passados os endereços de
memória onde estão os argumentos. Neste tipo de chamada
os valores podem ser modificados.
Implica o uso de ponteiros
Exemplo usando passagem por valor
#include<stdio.h>
Saída:
void troca(int a, int b){
Antes de chamar a função:
int temp;
a=2
temp=a;
b=3
a=b;
Depois de chamar a função
b=temp;
a=2
}
b=3
int main(){
int a=2,b=3;
printf("Antes de chamar a função :\na=%d\nb=%d\n",a,b);
troca(a,b);
printf("Depois de chamar a função:\na=%d\nb=%d\n",a,b);
return 0;
}
Exemplo usando passagem por
referência
#include<stdio.h>
Saída:
void troca(int *a, int *b){
Antes de chamar a função:
int temp;
a=2
temp=*a;
b=3
*a=*b;
Depois de chamar a função
*b=temp;
a=3
}
b=2
int main(){
int a=2,b=3;
printf("Antes de chamar a função :\na=%d\nb=%d\n",a,b);
troca(&a,&b);
printf("Depois de chamar a função:\na=%d\nb=%d\n",a,b);
return 0;
}
Chamada por valor e chamada por referência
OBSERVAÇÃO: As strings e matrizes sempre são
chamadas por referência. Quando C passa uma matriz ou
string para uma função é passado o endereço inicial da
matriz ou função
Argumentos da linha de comando
Pode-se passar argumentos diretamente para a função
main()
Como main () é a primeira função a ser chamada quando
você chama o programa os argumentos para ela são
passados junto com o comando que chama o programa,
geralmente seu nome. Estes argumentos são conhecidos
como argumentos da linha de comando.
Argumentos de linha de comando
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Olá %s.\n",argv[1]);
return(0);
}
Os argumentos da linha de comando são argc e argv
argc armazena o número de argumentos passados para o
programa, inclusive o nome do programa
argv é uma matriz de strings e armazena o nome do
programa e os argumentos passados.
argv[0] armazena o nome do programa, argv[1] armazena o primeiro
argumento passado para o programa, argv[2] armazena o segundo
argumento passado para o programa, e assim por diante. Os
argumentos são seprarados por um espaço.
Download

Funções