A série continua!
Falamos sobre variáveis da última vez. Agora vamos falar de funções.
- Ah, Pedro, você não está indo muito pro lado da matemática?
- E você acha que computação é o que?
Bom, parece mesmo que estamos falando de matemática. Falamos de variáveis e agora de funções. Onde é que as coisas se desencontram? Será que em algum momento se desencontram? Bom, o que interessa é que funções tem duas razões de existência. A primeira é economia de código. A segunda é garantia de abstração.
Uma função é um mapeamento de um elemento de um conjunto, para um elemento de outro conjunto. Em programação a gente diz que função é uma rotina que faz especificamente uma coisa bem definida. No conceito matemático depende totalmente do valor de entrada. No conceito de programação, o ideal é que dependa minimamente do valor de entrada. Até porque não faz sentido você fazer um mapeamento bruto valor a valor, até porque você não vai ser capaz de fazer. Os valores tendem a infinito.
Note que até agora, nós não utilizamos nenhuma função em C++. O máximo que fizemos foi utilizar operadores, que nada mais é que utilizar uma função de maneira implícita. Matemáticamente dá pra discordar disso, computacionalmente é mais difícil.
Mentira. Nós já usamos uma função sim. O nome dela é "Main"
int main()
{
cout << "Sim, a main é uma função";
return 0;
}
Ela é uma função especial. O compilador de C++ procura essa função pra conseguir montar o executável. Se ele não conseguir encontrar, você não tem executável.
Mas você pode definir outras funções. Por exemplo, você pode definir uma função linear de uma forma bem simples:
double f(double x)
{
return x + 5;
}
Ok isso define uma função, mas como a gente usa isso?
Definir uma função segue mais ou menos o seguinte padrão:
"Tipo retornado" "nome da função"("tipo argumento 1" "argumento 1", "tipo argumento 2" "argumento 2")
{
//Corpo da função
return "Coisa do tipo: Tipo Retornado"
}
Então, é mais ou menos isso aí, agora vamos colocar duas formas de você utilizar isso no seu próprio código. O ponto importante é, a sua função deve estar definida antes que você a utilize de fato. Então você tem duas escolhas: Ou você define as funções na ordem lógicas delas.
double f(double x)
{
return x + 5;
}
Falamos sobre variáveis da última vez. Agora vamos falar de funções.
- Ah, Pedro, você não está indo muito pro lado da matemática?
- E você acha que computação é o que?
Bom, parece mesmo que estamos falando de matemática. Falamos de variáveis e agora de funções. Onde é que as coisas se desencontram? Será que em algum momento se desencontram? Bom, o que interessa é que funções tem duas razões de existência. A primeira é economia de código. A segunda é garantia de abstração.
Uma função é um mapeamento de um elemento de um conjunto, para um elemento de outro conjunto. Em programação a gente diz que função é uma rotina que faz especificamente uma coisa bem definida. No conceito matemático depende totalmente do valor de entrada. No conceito de programação, o ideal é que dependa minimamente do valor de entrada. Até porque não faz sentido você fazer um mapeamento bruto valor a valor, até porque você não vai ser capaz de fazer. Os valores tendem a infinito.
Note que até agora, nós não utilizamos nenhuma função em C++. O máximo que fizemos foi utilizar operadores, que nada mais é que utilizar uma função de maneira implícita. Matemáticamente dá pra discordar disso, computacionalmente é mais difícil.
Mentira. Nós já usamos uma função sim. O nome dela é "Main"
int main()
{
cout << "Sim, a main é uma função";
return 0;
}
Ela é uma função especial. O compilador de C++ procura essa função pra conseguir montar o executável. Se ele não conseguir encontrar, você não tem executável.
Mas você pode definir outras funções. Por exemplo, você pode definir uma função linear de uma forma bem simples:
double f(double x)
{
return x + 5;
}
Definir uma função segue mais ou menos o seguinte padrão:
"Tipo retornado" "nome da função"("tipo argumento 1" "argumento 1", "tipo argumento 2" "argumento 2")
{
//Corpo da função
return "Coisa do tipo: Tipo Retornado"
}
Então, é mais ou menos isso aí, agora vamos colocar duas formas de você utilizar isso no seu próprio código. O ponto importante é, a sua função deve estar definida antes que você a utilize de fato. Então você tem duas escolhas: Ou você define as funções na ordem lógicas delas.
double f(double x)
{
return x + 5;
}
int main()
{
cout << f(5);
return 0;
}
Sim, estamos suprimindo o "#include<iostream>" e o "using namespace std;" Você vai esquecer isso pelo resto da sua vida, mas estamos assumindo que você vai lembrar dessas coisas.
Ah, sim e a segunda forma:
double f(double x);
int main()
{
cout << f(5);
return 0;
}
double f(double x)
{
return x + 5;
}
Pode isso Arnaldo? Claro que pode. Tanto pode que você vai ver que o bagulho vai compilar e rodar normalmente. A brincadeira é que você pode definir o protótipo das funções no início do arquivo e definí-las na ordem que quiser em seguida, pois nesse caso não está óbvio qual função vai usar qual. Apenas que elas existem e vão necessitar de determinados parâmetros.
Por ora é isso! Veremos mais nos próximos capítulos.
{
return x + 5;
}
Pode isso Arnaldo? Claro que pode. Tanto pode que você vai ver que o bagulho vai compilar e rodar normalmente. A brincadeira é que você pode definir o protótipo das funções no início do arquivo e definí-las na ordem que quiser em seguida, pois nesse caso não está óbvio qual função vai usar qual. Apenas que elas existem e vão necessitar de determinados parâmetros.
Por ora é isso! Veremos mais nos próximos capítulos.
Nenhum comentário:
Postar um comentário