| | | |

Minicurso de C++ para Matemática

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

3.1 Métodos e funções

Um método (ou função) é um subprograma (ou sub-bloco computacional) que pode ser chamado/executado em qualquer parte do programa principal. Todo código C++ inicia-se na função main(). A sintaxe de definição de uma função é

1typeOut foo(typeIn0 x0, typeIn1 x1, ..., typeInN xN)
2{
3 typeOut out;
4 statement0;
5 statement1;
6 ...;
7 statementN;
8 return out;
9}

Aqui, typeOut denota o tipo da saída, foo denota o identificador/nome do método, typeIn0 x1, typeIn1 x2, …, typeInN xN são os tipos e identificadores dos parâmetros de entrada111Parâmetros de entrada são opcionais. O escopo do método é delimitado entre chaves e pode conter qualquer instrução (statement) C++. O método é encerrado222No encerramento do método o código retorna ao programa principal. quando terminado seu escopo ou ao encontrar a instrução return. Esta instrução,também, permite o retorno de um dado do mesmo tipo da saída do método.

Por exemplo, o seguinte código define a função

f(x)=2x3, (3.1)

computa e imprime os valores de f(1.0) e f(2.5).

Código 7: exFun.cpp
1#include <iostream>
2
3// define f
4double f(double x);
5
6int main()
7{
8 std::cout << "f(1.0) = "
9 << f(1.0) << std::endl;
10
11 double y = 2.5;
12 std::cout << "f(2.5) = "
13 << f(y) << std::endl;
14
15 return 0;
16}
17
18// implementa f
19double f(double x)
20{
21 double y = 2.0*x - 3.0;
22 return y;
23}
Observação 3.1.1.(void)

Um função pode ser um método (subprograma) que não retorna valor. Neste caso, o tipo de saída é +void+.

E. 3.1.1.

Implemente uma função para computar as raízes de um polinômio de grau 1 p(x)=ax+b. Assuma que a0.


1#include <iostream>
2
3double raizP1(double a, double b);
4
5int main()
6{
7 double a = 2.0;
8 double b = -1.0;
9
10 std::cout << a << "x"
11 << " + (" << b << ") = 0" << std::endl
12 << "x = " << raizP1(a, b) << std::endl;
13
14 return 0;
15}
16
17double raizP1(double a, double b)
18{
19 return -b / a;
20}
E. 3.1.2.

Implemente uma função para computar as raízes reais de um polinômio de grau 2 p(x)=ax2+bx+c. Assuma que p tenha raízes reais.


1#include <iostream>
2#include <cmath>
3
4void raizP2(double a, double b, double c,
5 double &x1, double &x2)
6{
7 // discriminante
8 double d = b * b - 4 * a * c;
9 x1 = (-b + sqrt(d)) / (2 * a);
10 x2 = (-b - sqrt(d)) / (2 * a);
11
12}
13
14int main()
15{
16 double a = 2.0;
17 double b = -6.0;
18 double c = 4.0;
19
20 double x1, x2;
21 raizP2(a, b, c, x1, x2);
22
23 std::cout << "x1 = " << x1 << std::endl
24 << "x2 = " << x2 << std::endl;
25
26 return 0;
27}
E. 3.1.3.

(Recursividade) Implemente uma função recursiva para computar o fatorial de um número natural n, i.e. n!.


1#include <iostream>
2#include <eigen3/Eigen/Eigen>
3
4double fatorial(int n);
5
6int main()
7{
8 std::cout << "Fatorial de 5: "
9 << fatorial(5) << std::endl;
10
11 return 0;
12}
13
14double fatorial(int n)
15{
16 // Fatorial de n
17 if (n == 0 || n == 1) return 1;
18 return n * fatorial(n - 1);
19}

Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |