Você está na página 1de 14

Modularização: Funções e Procedimentos

Universidade Lúrio
Faculdade de Engenharia
Licenciatura em Engenharia Informática

Programação

Elídio Tomás da Silva


Francisco de Araújo António
2018
Gorbatchov Ronda
2019
Modularização: Funções e Procedimentos

O QUE É UMA F UNÇÃO ?

• Uma função é a unidade natural de decomposição de


funcionalidades em C.
• Realiza uma determinada actividade
• Produz resultados em função de parâmetros de entrada
• Permite fazer o mesmo que em Pascal se faz com funções
ou procedimentos
• Exemplos de funções:
• A função main
• É a função principal de um programa em C
• É nela que um programa em C começa a sua execução
• Funções de bibliotecas
• Existem inúmeras funções já feitas e prontas a serem
usadas pelos programas
• Outras funções
• Quaisquer outras funções que façam parte de um programa
e que não sejam nenhuma das anteriores
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 1

tipo nome (lista de parametros){


variaveis locais;
instrucoes;
return valor; // O valor deve corresponder ao
tipo
}

• Exemplo de função que soma dois inteiros:

int soma(int x, int y){


int soma_2;
soma_2 = x+y;

return soma_2;
}
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 2

• nome:
• É um identificador textual: que deve, de alguma maneira,
transparecer a sua funcionalidade
• Sequência contínua de letras, underscore e algarismos:
Mas não pode começar por um algarismo
• Identifica univocamente uma função num programa: Não
podem existir duas funções com o mesmo nome
• tipo:
• Indica o tipo do valor retornado pela função: Ou seja, qual
a dimensão e a interpretação do conjunto de octetos do
valor que a função retorna
• pode ser omitido
• Assume-se que retorna um valor inteiro (int)
• Mas essa omissão não é uma boa prática!
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 3

• Lista de parâmetros:
• Indica os parâmetros da função
• Ou seja, um conjunto de variáveis que irão conter os valores
indicados como parâmetros quando a função é "chamada".
• Os parâmetros são variáveis locais da função
• Cujo valor inicial é definido por quem chama a função.
• Formato
• Conjunto de pares tipo nome separados por vírgulas
• Lista nula (void): A função não tem parâmetros
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 4

• Cabeçalho:
• Indica a "visibilidade externa" da função
• Qual o seu nome
• Quantos parâmetros recebe
• Qual o tipo desses parâmetros
• Qual o tipo do valor retornado
• Mas não indica como é que a função de facto funciona
• Isso é definido pelo corpo
• Serve para declarar protótipos
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 5

• Variáveis locais:
• Indica as demais variáveis locais da função
• Servem para guardar valores que apenas fazem sentido
para a função
• A sua existência é efémera
• Quando a função termina as variáveis "perdem-se"
• Formato
• Conjunto de linhas formadas por pares tipo - nome
terminadas com ponto-e-vírgula
• Conjunto de linhas formadas por um tipo, seguido de uma
lista de nomes separados por vírgulas e terminadas com
ponto-e-vírgula
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 6

• Instruções úteis:
• Conjunto de intruções que produzem resultados
• Uma instrução é constituída por expressões
• Expressões aritméticas
• Expressões de atribuição
• Muitas outras expressões!!
• Uma instrução termina sempre com um ponto-e vírgula
• As instruções são executadas sequencialmente de cima
para baixo
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 7

• Retorno de valor (return):


• Expressão que termina a execução de uma função
• Devolvendo o valor da expressão colocada à frente de
return
• Se a expressão for o nome de uma variável devolve o valor
dessa variável
• Exemplos:
• return (x + y + z); //Devolve o valor resultante da soma do
valor das variáveis x, y e z
• return soma; //Devolve o valor da variável soma
Modularização: Funções e Procedimentos

E STRUTURA DE UMA FUNÇÃO - 8

• Retorno de valor (return):


• Uma função pode ter várias instruções return
• Para poder terminar em diversos pontos da sua execução
• Por regra a execução de uma função deve sempre terminar
numa instrução return
• Logo, a última instrução do corpo de uma função deve ser
uma instrução return
• O facto de uma função retornar um valor não significa que
o mesmo seja guardado ou usado posteriormente pelo
"chamador"
• Em C é possível ignorar o valor retornado
• Não usando de forma alguma o valor retornado
• Indicando implicitamente o desinteresse no mesmo
(exemplo: scanf(...))
• Indicando explicitamente o desinteresse no mesmo
(exemplo: (void) scanf(...))
Modularização: Funções e Procedimentos

P ROTÓTIPOS DE UMA F UNÇÃO

• Exemplos de protótipos da função que soma 3 inteiros:

int soma ( int, int, int );


int soma (int v1, int v2, int v3);
int soma (int x, int y, int z);

• Os nomes dos parâmetros são só para facilitar a


compreensão do programador
• São ignorados pelo compilador
• Resumindo:
• É igual ao cabeçalho de uma função podendo ser
omitidos/alterados os nomes dos parâmetros
• Termina com ponto-e-vírgula
Modularização: Funções e Procedimentos

P ROTÓTIPO DE F UNÇOES DE B IBLIOTECA

• Para cada função de biblioteca que usar tem que declarar


o respectivo protótipo:
• O que é uma tarefa fastidiosa
• Essa é uma das razões porque existe a inclusão de
ficheiros em C
• A inclusão é indicada com a directiva #include
• A directiva #include <stdio.h> significa que onde está esta
linha é como se estivesse o conteúdo integral do ficheiro
stdio.h
• Tecnicamente pode-se incluir qualquer ficheiros mas
normalmente tais ficheiros têm a extensão *.h
• Por cada biblioteca existem um ou mais ficheiros
cabeçalho
• Para a libc existem muitos (stdio.h, stdlib.h, etc.)
• Para a libm existem um (math.h)
• Como é que se sabe que ficheiros deve-se incluir para
cada função de biblioteca que é usada?
• Usando os manuais interactivos relativos a essas funções
Modularização: Funções e Procedimentos

F ICHEIROS CABEÇALHO

• Há dois tipos de ficheiros cabeçalho


• Os que são fornecidos com o ambiente de
desenvolvimento
• E que possuem protótipos de funções das bibliotecas
padrão ou de outras
• São incluídos com a directiva #include <nome do ficheiro>
• Os que o próprio programador faz para facilitar o
desenvimento de um programa modular
• E que possuem protótipos de funções das bibliotecas
padrão ou de outras
• São incluídos com a directiva #include <nome do ficheiro>
• Onde é que os ficheiros cabeçalho estão?
• Os do ambiente de desenvolvimento em UNIX/LINUX
estão na directoria /usr/include
• Os do programador estão nas suas directorias
Modularização: Funções e Procedimentos

PASSAGEM DE PARÂMETROS PARA FUNÇÕES

• O que é a passagem de parâmetros para uma função?


• Consiste numa indicação dos valores iniciais das Variáveis
que são os parâmetros de uma função
• Os valores das expressões usadas na chamada à função
são copiados para dentro da função chamada.
• Passagem de parâmetros por valor/referência?
• Em C toda a passagem de parâmentros é por valor!
• Ponteiros são usados para fazer a passagem "por
referência".

Você também pode gostar