Вы находитесь на странице: 1из 18

Programao de Computadores II

Funes e procedimentos

Objetivos da aula

Definio de funes e procedimentos. Declarando uma funo. Passagem de parmetros. Exemplos e aplicaes.

O comando return.

Funes

So trechos de cdigos que executam um conjunto de aes especficos.

So caracterizadas por um tipo de retorno, um nome (identificador) e uma lista de parmetros.


Argumentos so basicamente de dois tipos: Valores numricos ou literais. Endereos de memria.


Programao II - Uniararas

Funes
Declarao de uma funo em C/C++
<tipo> <nome_da_funo> (<lista_parmetros>) { /* Bloco de cdigos e declarao de variaveis */ return ; }

Programao II - Uniararas

Funes Onde declarar uma funo?


/*Diretivas de Pr-processamento*/ #include .... Declarao das funes /* Funo principal */ int main( ) { <bloco_comandos> }

Existe outra forma de fazer isso...

Funes Definindo uma funo do usurio: float media(float a, float b) { float med; med = (a + b) / 2.0; return med; }

Exemplos
#include <iostream> #include <cstdlib> using namespace std; int dobro(int a) { return 2 * a; } int main(int argc, char * argv[]) { int c; c = 8; c = dobro(c); return 0; }

Funes. Escopo de varivel


Por que uma funo deve ter uma lista de argumentos? Porque existe, em linguagens de programao, um conceito chamado escopo de varivel.

Programao II - Uniararas

Funes. O que significa escopo de varivel?


int minha_funcao () { int variavel3; int variavel4; int variavel5; return variavel3; } int main (int argc, char *argv[ ] ) { int variavel1; int variavel2; int variavel3; return 0; }

Escopo da funo minha_funcao

Escopo da funo main

Programao II - Uniararas

Funes.
O que significa o escopo de varivel? No exemplo anterior, qualquer varivel declarada dentro das funes sero visveis somente dentro de suas respectivas funes.

Programao II - Uniararas

Funes. O que significa escopo de varivel?


int minha_funcao () { int variavel3; int variavel4; int variavel5; variavel1 = 10; return variavel1; } int main (int argc, char *argv[ ] ) { int variavel1; int variavel2; int variavel3; return 0; }

variavel1 somente conhecida no contexto da funo main. Neste caso teramos erro de compilao.

variavel3 de main e minha_funcao, apesar de ter mesmo nome, representa espaos de memria diferentes

Programao II - Uniararas

Funes. Passagem de parmetros


Para que duas funes possam agora

enviar/receber dados, deve-se utilizar a lista de parmetros declarados entre parnteses. <tipo> <nome_funcao> (<lista_parmetros>)

Programao II - Uniararas

Funes.
Passagem de parmetros Duas formas de passagem de parmetros:
Valor Representam valores numricos ou literais. Referncia Representam endereos de memria.

Veremos nesta aula, somente passagem por valores numricos.

Programao II - Uniararas

Funes. O que significa escopo de varivel?


int minha_funcao (int variavel _externa) { int variavel3; int variavel4; int variavel5; return variavel3; } int main (int argc, char *argv[ ] ) { int variavel1; int variavel2; int variavel3; minha_funcao(variavel1); return 0; } Escopo da funo minha_funcao Agora variavel_externa recebe o valor de variavel1.

Escopo da funo main Chamada da funo minha_funcao.

Programao II - Uniararas

Funes.
Neste ponto, as duas funes do exemplo anterior podem agora enviar/receber dados a partir do parmetro variavel_externa.
int minha_funcao (int variavel _externa) { } int main (int argc, char *argv[ ] ) { int variavel1; minha_funcao(variavel1); return 0; } Escopo da funo main Chamada da funo minha_funcao. Escopo da funo minha_funcao

Programao II - Uniararas

Funes.. Problema proposto:


Deseja-se efetuar o clculo de uma funo dada a seguir: f(x) = 4 + 1/x Para qualquer x.

Programao II - Uniararas

Funes. O que deve ser pensado


Esse problema necessita de um valor de retorno?

O(s) valor(es) a ser(em) passado(s) para a funo deve(m) ser alterado(s)?


Qual o algoritmo/lgica a ser implementado(a)?

Sua soluo pode ser usada para quaisquer valores?

Programao II - Uniararas

Funes.
Uma primeira abordagem, passando parmetros por valor e usando um tipo de retorno.
float f (float x) { float divisao; divisao = 1/x; return (divisao + 4); }

//varivel temporria //valor retornado

Programao II - Uniararas

Вам также может понравиться