Buscar

AULA_2_ESTRUTURAS_DE_DADOS_ANITA_LOPES

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
ESTRUTURAS DE DADOS – AULA 2
ANITA MACIEL
Rio de Janeiro, 2011
*
*
FUNÇÕES 
“Dividir para facilitar”
Os códigos estão ficando enormes!
*
*
Vários comandos
idênticos seguidos
*
*
Vários comandos
idênticos seguidos
*
*
Vários comandos
idênticos separados
*
*
Vários comandos
idênticos separados
*
*
“Função é um conjunto de comandos que executam uma determinada tarefa.”
(SAADE, Joell, 2003, 99)
*
*
Um programa pode ser formado por uma ou mais funções.
A função main sempre estará presente.
*
*
*
*
*
*
(escopo)
*
*
*
*
*
*
*
*
*
*
PELO NOME
Se for uma função com retorno, precisará de um comando. 
*
*
 Fluxo do programa após o término da Função
No lugar em que é chamada 
com retorno
Na instrução seguinte - void
*
*
Tipos
void
int
float
double
char
...
*
*
PASSAGEM POR REFERÊNCIA &
PASSAGEM POR VALOR
Exemplo: Você empresta seu caderno para xerocar.
Exemplo: Você entrega os originais da sua monografia para um revisor.
*
*
Função que exibe a mensagem : Estruturas de Dados
tipo?
parâmetros?
retorno?
quantos?
passagem por valor ou referência?
*
*
void
Função que exibe a mensagem : Estruturas de Dados
*
*
void msg
Função que exibe a mensagem : Estruturas de Dados
*
*
void msg()
Função que exibe a mensagem : Estruturas de Dados
*
*
void msg()
{
Função que exibe a mensagem : Estruturas de Dados
*
*
void msg()
{
 cout<<“Estruturas de Dados”;
Função que exibe a mensagem : Estruturas de Dados
*
*
void msg()
{
 cout<<“Estruturas de Dados”;
}
Função que exibe a mensagem : Estruturas de Dados
*
*
Função que recebe uma mensagem e exibe
parâmetros?
quantos?
passagem por valor ou referência?
tipo?
retorno?
*
*
void
Função que recebe uma mensagem e exibe
*
*
void msgRecebe
Função que recebe uma mensagem e exibe
*
*
void msgRecebe()
Função que recebe uma mensagem e exibe
*
*
void msgRecebe(char msg[ ])
Função que recebe uma mensagem e exibe
*
*
void msgRecebe(char msg[ ])
{
 
Função que recebe uma mensagem e exibe
*
*
void msgRecebe(char msg[ ])
{
 cout<<msg<<endl;
Função que recebe uma mensagem e exibe
*
*
void msgRecebe(char msg[ ])
{
 cout<<msg<<endl;
}
Função que recebe uma mensagem e exibe
*
*
Função que recebe uma data no formato ddmmaaaa e retorna o ano
parâmetros?
quantos?
passagem por valor ou referência?
tipo?
retorno?
*
*
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data()
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data(int d)
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data(int d)
{
 
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data(int d)
{
 return d %10000;
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
int data(int d)
{
 return d %10000;
}
Função que recebe uma data no formato ddmmaaaa e retorna o ano
*
*
Função
Programa
*
*
 Localização da função
ANTES DA main()
DEPOIS DA main()
*
*
Programa com erro
*
*
#include <iostream>
using namespace std;
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; } 
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma: "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
*
*
O erro
*
*
 Eu pensei que, se colocássemos antes da main, nunca teria problemas. E agora?
 A primeira solução, para esse problema, seria colocar a função dobra(...) antes da função soma(...).
*
*
 A segunda solução, para esse problema, seria declarar(protótipos) das funções antes de definí-las e, preferencialmente, posicioná-las depois da main, embora, nesse exemplo, tenha mantido antes.
*
*
#include <iostream>
using namespace std;
float soma(float);
float dobra(float n);
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; } 
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma: "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
*
*
*
*
Variável global x variável local
*
*
Variável global x variável local
*
*
Variável global x variável local
*
*
Variável global x variável local
*
*
Variável global x variável local
*
*
Exemplos de programas usando funções e variável global
*
*
#include <iostream>
using namespace std;
void soma();
void dobra();
float num=20; // variável global
int main()
{ 
 soma();
 cout<<"\nApos chamar a funcao soma: "<<num;
 dobra();
 cout<<"\nApos chamar a funcao dobra: "<<num; 
 cout<<"\n\n";
 system("pause");
}
void dobra()
{ num+=num; }
void soma()
{ num += 5; } 
variável global
*
*
*
*
*
*
*
*
*
*
*
*
*
*
Passagem por Referência
*
*
#include <iostream>
using namespace std;
void modificaNum(float&);
int main()
{ 
 float num=20;
 modificaNum(num);
 cout<<"\nApos chamar a funcao modificaNum: "<<num;
 cout<<"\n\n";
 system("pause");
}
void modificaNum(float &n)
{ n *= 2; } 
*
*
*
*
Passando vetor para a função
*
*
*
*
*
*
double soma(double n[], int tam);
void media(double nt1[], double nt2[], double m[], int tam);
*
*
double soma(double n[], int tam)
{
 int x; double somaVet=0;
 for(x=0;x<tam; x++)
 somaVet += n[x];
 return somaVet;
}
*
*
void media(double nt1[], double nt2[], double m[], int tam)
{
 int x;
 for(x=0;x<tam; x++)
 m[x]=(nt1[x] + nt2[x])/2;
}
*
*
*
*
Reveja todos os conceitos desta aula.
Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA).
Faça todos os exercícios.
*
*
Esteja sempre em contato com seu professor.
Não durma com dúvidas.
Assista a esta aula quantas vezes for necessário.
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais