BAC004-Informática-Prática-Fabiana C Guedes 1
BAC004-Informática-Prática-Fabiana C Guedes 2
Funções Sem Passagem de
Parâmetros e Sem Retorno
• Tipo mais simples de função em C/C++
possui a sintaxe representada na figura:
BAC004-Informática-Prática-Fabiana C Guedes 3
Funções Sem Passagem de
Parâmetros e Sem Retorno
//ProgC029.cpp - Uso do Protótipo em funções #include<iostream> using namespace std; void soma(); int main(){ soma(); return 0; } void soma(){ int n1,n2, s;
cout<<"Digite o primeiro numero: "<<endl; cin>>n1;
cout<<"Digite o segundo numero: "<<endl; cin>>n2;
s = n1 + n2;
cout<<"\n Soma = "<<s; }
Protótipo da Função Soma
Função Principal
Chamada da Função Soma Função Soma
BAC004-Informática-Prática-Fabiana C Guedes 4
Funções Com Passagem de
Parâmetros e Sem Retorno
BAC004-Informática-Prática-Fabiana C Guedes 5
Funções Com Passagem de
Parâmetros e Sem Retorno
//ProgC30.cpp - Função com passagem de parâmetros #include<iostream>
using namespace std; void soma(int n1, int n2){ int s;
s = n1 + n2;
cout<<"\n Soma = "<<s; }
int main(){
int numero1, numero2;
cout<<"Digite o primeiro numero: "<<endl; cin>>numero1;
cout<<"Digite o segundo numero: "<<endl; cin>>numero2;
soma(numero1,numero2); return 0;
}
Função Soma – com passagem de parâmetros
Parâmetros da Função Soma Variável local da função soma. Só é
reconhecido dentro de Soma
Variáveis locais à função main. Só reconhecidos dentro da main
BAC004-Informática-Prática-Fabiana C Guedes 6
Funções Sem Passagem de
Parâmetros e Com Retorno
BAC004-Informática-Prática-Fabiana C Guedes 7
Funções Sem Passagem de
Parâmetros e Com Retorno
//ProgC031.cpp - Função com retorno e sem passagem de parâmetros #include<iostream>
using namespace std; int soma(){
int n1,n2,s;
cout<<"Digite o primeiro numero: "<<endl; cin>>n1; cout<<"Digite o segundo numero: "<<endl; cin>>n2; s = n1 + n2; return s; } int main(){ int resultado; resultado=soma();
cout<<"\n Soma = "<<resultado; return 0;
}
Função Soma
Variáveis locais da Função Soma
Retorna o valor da soma para quem realizou a chamada da
Função Soma
Chamada da Função Soma. Deve ser atribuída a uma variável do
tipo int
BAC004-Informática-Prática-Fabiana C Guedes 8
Funções Com Passagem de
Parâmetros e Com Retorno
BAC004-Informática-Prática-Fabiana C Guedes 9
Funções Com Passagem de
Parâmetros e Com Retorno
//ProgC032.cpp - Função com retorno e passagem de parâmetro #include<iostream>
using namespace std; int soma(int n1, int n2){ int s;
s = n1 + n2; return s; }
int main(){
int numero1, numero2, resultado;
cout<<"Digite o primeiro numero: "<<endl; cin>>numero1; cout<<"Digite o segundo numero: "<<endl; cin>>numero2; resultado=soma(numero1,numero2);
cout<<"\n Soma = "<<resultado; return 0;
}
Função Soma – com retorno e passagem de parâmetros
Parâmetros da Função Soma – int n1 e int n2
Retorno da Função Soma do tipo inteiro
Chamada da Função Soma atribuída a uma variável do tipo do retorno. Tem que passar os parâmetros
BAC004-Informática-Prática-Fabiana C Guedes 1010
Parâmetros de Função – por
valor
/*Prog033 - Exemplo de função com passagem de parâmetro por valor*/ #include <iostream>
#include <cstdlib> void Somar(int X){ X++;
std::cout << "Valor de X dentro da funcao: " << X << "\n"; }
int main(){ int Y=0; Somar(Y);
std::cout << "Valor de Y fora da funcao: " << Y << "\n\n"; system ("PAUSE");
return 0; }
Definição. Como está antes não precisa de protótipo.
Parâmetro por valor.
Não retorna tipo. Chamada de sub-rotina.
Chamada sem necessidade de atribuição a uma variável, por ser void.
BAC004-Informática-Prática-Fabiana C Guedes 1111
Parâmetros de Função – por
referência
/*Prog034 - Programa para mostrar passagem de parâmetro por referência*/ #include <iostream> // para entrada e saída
#include <cstdlib> void Somar(int& X){ X++;
std::cout << "Valor de X dentro da funcao: " << X << "\n"; }
int main(){ int Y=0; Somar(Y);
std::cout << "Valor de Y fora da funcao: " << Y << "\n\n"; system ("PAUSE");
return 0; }
Parâmetro por referência.
BAC004-Informática-Prática-Fabiana C Guedes 1212
Exemplo Diversos
/*ProgC035.cpp - passagem por referência de mais de um argumento*/ #include <iostream>
#include <cstdlib>
void Troca(int& X, int& Y){ int temp=X; X = Y; Y = temp; } int main(){ int A, B, C;
std::cout << "\nDigite 3 numeros: "; std::cin >> A >> B >> C; if (A > B) Troca(A, B); if (A > C) Troca(A, C); if (B > C) Troca(B, C); std::cout << A << " " << B << " " << C << " \n"; system("PAUSE"); return 0; }
Parâmetros por referência.
BAC004-Informática-Prática-Fabiana C Guedes 13
Exemplo Diversos
//ProgC036.cpp - Exemplo de passagem de //parâmetro por referência
#include<iostream> using namespace std;
void nao_muda(int a, double b) { a+=2; // significa a=a+2;
b+=5; // significa b=b+5; }
void muda(int &a, double &b) { a+=2; b+=5; } int main(){ int n1=5; double n2=6.0; cout<<"n1 = "<<n1<<" n2 = "<<n2<<endl; nao_muda(n1,n2);
cout<<"Valores apos a funcao nao_muda n1 = “ << n1 << " n2 = "<<n2<<endl;
muda(n1,n2);
cout<<"Valores apos a funcao muda n1 = “ <<n1<<" n2 = "<<n2<<endl; return 0; } Parâmetros por valor Parâmetros por referência Chamada de não-muda Chamada de muda
BAC004-Informática-Prática-Fabiana C Guedes 14
Exemplo Diversos
//ProgC035 - Varias Funções sendo chamadas #include <iostream>
#include <cstdlib> using namespace std;
float somasqr(float m, float n); float sqr(float z);
float soma(float m, float n); int main() {
float a,b; cout << "Digite dois numeros "; cin >> a >> b;
cout << "A soma dos quadrados e " << somasqr(a,b) << endl; system("PAUSE"); return 0;
}
float somasqr(float m, float n) {return soma( sqr(m), sqr(n) );} float sqr(float z){ return z*z; }
float soma(float m, float n) { return m+n; }
Protótipos das Funções Chamada da Função somasqr Chamada da Função sqr Chamada da Função soma
BAC004-Informática-Prática-Fabiana C GuedesIntrodução à Computação - Aulas Laboratório - 15 Fabiana Costa Guedes
15
Exemplo Diversos
/*ProgC038 - Programa que mostra um exemplo de uma
função*/
#include <iostream> // para entrada e saída
#include <cstdlib>
int quadrado( int );
int main(){
for (int x=1; x<=50; x++)
std::cout << quadrado( x ) << " ";
std::cout << "\n\n";
system ("PAUSE");
return 0;
}
int quadrado ( int y ){
return y * y;
}
Protótipo da função quadrado.
Definição da função quadrado. Aqui é colocado o que realmente a função realiza.
Tipo da função quadrado. Toda função em C deve possuir um tipo. Quando não é necessário o tipo, coloca-se void.
Retorno da função quadrado. Toda função em C que não for definida como void deve possuir um retorno.
Parâmetro da função quadrado. Aqui é passado o valor que será calculado. Chamada da função quadrado.
BAC004-Informática-Prática-Fabiana C Guedes 1616
Exemplo Diversos
/*ProgC039 - Exemplo de função que converte graus Fahrenheit em graus Celsius*/ #include <iostream> #include <cstdlib> int Celsius(int); int main(){ int C, F;
std::cout << "\nDigite a temperatura em Fahrenheit: "; std::cin >> F;
C = Celsius(F);
std::cout << "\nCelsius: " << C << "\n\n"; system ("PAUSE");
}
int Celsius(int fahr){ int C;
C = (fahr - 32) * 5 / 9; return C;
}
Protótipo da função.
Chamada da função com atribuição a uma variável do mesmo tipo da função.
BAC004-Informática-Prática-Fabiana C Guedes 17
Exemplo Diversos
//ProgC040.cpp - Valor absoluto #include <iostream> #include <cstdlib> using namespace std; int abs(int n); int main(){ int x=10;
cout << abs(0) << '\t' << abs(-3) << '\t' << abs(x) << endl; system("PAUSE");
return 0; }
int abs( int n){ if (n>=0) return n; else return -n; } Protótipo da função. Definição da função.
Dois retornos, mas apenas um será executado
BAC004-Informática-Prática-Fabiana C Guedes 18
Exemplo Diversos
/*ProgC041 - Programa que apresenta parâmetros com valores padrão Data: 12/11/2008 - Fabiana */
#include <iostream> #include <cstdlib>
void Linha( int = 20, char = '*'); // protótipo int main(){ Linha(); std::cout << "\n"; Linha(34); std::cout << "\n"; Linha(45,'='); std::cout << "\n\n"; system("PAUSE"); return 0; }
void Linha(int n, char ch){
for (int i=0; i<n; i++) std::cout << ch; }
Valores padrão definidos.
Chamada sem valores.
Chamada só com um valor.
BAC004-Informática-Prática-Fabiana C Guedes 19
Exemplo Diversos
É importante considerar que se um argumento
for omitido, todos os subseqüentes devem ser
omitidos.
Além disso, é possível escrever funções que
tenham parâmetros inicializados com um valor
padrão e parâmetros não-inicializados, mas
após a primeira inicialização todos os
Introdução à Computação - Aulas Laboratório - Fabiana Costa Guedes 20
Sobrecarga de Funções
Sobrecarregar funções significa criar uma
família de funções com o mesmo nome,
mas com a lista de parâmetros diferentes.
Funções sobrecarregadas devem ter a lista
de parâmetros diferentes ou em número ou
em tipo.
Quando a função é chamada, é a lista de
parâmetros passada para ela que permite
ao sistema identificar qual é o código
Introdução à Computação - Aulas Laboratório - Fabiana Costa Guedes 21
Sobrecarga de Funções -
Exemplo
/*ProgC42.cpp - Programa que mostra a sobrecarga de funções*/
#include <iostream> #include <cstdlib> int Cubo( int ); float Cubo( float );
double Cubo( double ); int main(){ std::cout << Cubo(345) << "\n"; std::cout << Cubo(12.34f) << "\n"; std::cout << Cubo(12.34) << "\n"; system("pause"); return 0; } int Cubo(int n) { return n * n * n; } float Cubo(float n) { return n * n * n; } double Cubo(double n) { return n * n * n; }
Protótipo das funções.
Chamadas das funções.
BAC004-Informática-Prática-Fabiana C Guedes 22
Tópicos para Discussão
Funções
Modularização
Retorno
Parâmetros