c++ funções
DESCRIPTION
Como trabalhar com funções em C++TRANSCRIPT
![Page 1: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/1.jpg)
quinta-feira, 13 de abril de 2023
1
Instituto Federal do Rio Grande do Norte – IFRNCâmpus Natal – Zona Norte
Funções
Odair Soares / Melquisedeque Vieira
![Page 2: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/2.jpg)
quinta-feira, 13 de abril de 2023
2
Funções
• Uma função é um conjunto de instruções desenhadas para cumprir determinada tarefa e agrupadas em uma unidade com um nome para referi-la.
• Qualquer sequência de instruções que apareça mais de uma vez no programa é candidata a ser uma função;
• O código de uma função é agregado ao programa uma única vez e pode ser executado muitas vezes no decorrer do programa.
O que é?
![Page 3: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/3.jpg)
quinta-feira, 13 de abril de 2023
3
Funções
tipo nome (parâmetros) { instrução 1; ...........; ...........; instrução n;
return; }
Sintaxe
![Page 4: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/4.jpg)
quinta-feira, 13 de abril de 2023
4
Funções
• Para dar um nome a uma função você deve seguir as mesmas orientações determinadas para os nomes de variáveis;
• O nome de uma função pode ser qualquer um, com exceção de main, reservado para a função que inicia a execução do programa;
• Em todo programa deve existir uma e uma única função chamada de main;
• O programa termina quando for encerrada a execução da função main.
O nome das funções
![Page 5: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/5.jpg)
quinta-feira, 13 de abril de 2023
5
FunçõesA função main()
![Page 6: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/6.jpg)
quinta-feira, 13 de abril de 2023
6
Funções
• Permite que o compilador saiba que se trata de uma função;
• Podem estar vazios ou não. Trataremos deste assunto nos próximos slides.
Os parênteses após o nome das funções
![Page 7: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/7.jpg)
quinta-feira, 13 de abril de 2023
7
Funções
• Toda função C++ deve começar com uma chave de abertura de bloco { e terminar com uma chave de fechamento de bloco }. As chaves delimitam o corpo da função.
Chaves
![Page 8: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/8.jpg)
quinta-feira, 13 de abril de 2023
8
• Permite que outros programadores utilizem em seus programas;
• É como contratar uma mão-de-obra externa para executar uma certa tarefa;
• Reduz o tamanho do programa;
FunçõesPor que usar funções?
![Page 9: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/9.jpg)
quinta-feira, 13 de abril de 2023
9
• quando o controle do programa encontra uma instrução que inclui o nome de uma função, a função é chamada.
• Chamar uma função é o meio pelo qual solicitamos que o programa desvie o controle e passe a executar as instruções da função e, ao término desta, volte o controle para a posição seguinte à da chamada à função;
FunçõesChamando uma função
![Page 10: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/10.jpg)
quinta-feira, 13 de abril de 2023
10
Vária funções são desenvolvidas por programadores e fornecidas gratuitamente pela linguagem C++.
Ex.:
Getche(), system(), printf(), setw(),
FunçõesChamando uma função
![Page 11: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/11.jpg)
quinta-feira, 13 de abril de 2023
11
celsius()
Vamos começar mostrando uma função que converte a temperatura de graus Fahrenheit para graus Celsius:
FunçõesPrimeira função
![Page 12: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/12.jpg)
quinta-feira, 13 de abril de 2023
12
Funções
Função que converte a
temperatura de graus
Fahrenheit para graus
Celsius.
![Page 13: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/13.jpg)
quinta-feira, 13 de abril de 2023
13
O propósito principal de escrita de protótipos de funções é o de fornecer ao compilador as informações necessárias sobre o tipo da função, o número e o tipo dos argumentos.
FunçõesO protótipo de funções
Tipo_retorno nome_Função (lista_de_parâmetros);
Cuidado para não esquecer o ponto
e vírgula!!
![Page 14: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/14.jpg)
quinta-feira, 13 de abril de 2023
14
• Deve preceder sua definição e sua chamada;
• É a declaração de uma função;
• É colocado, em geral, no início do programa;
• Estabelece o tipo da função e os argumentos que ela recebe.
FunçõesO protótipo de funções
Tipo_retorno nome_Função (lista_de_parâmetros);
![Page 15: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/15.jpg)
quinta-feira, 13 de abril de 2023
15
•Externo: Escrito antes de qualquer função. É feita uma única vez e é visível para todas as funções que a chamam.
•Local:É escrita no corpo da função que a chama e
antes da sua chamada.
FunçõesProtótipo externo e local
![Page 16: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/16.jpg)
quinta-feira, 13 de abril de 2023
16
FunçõesProtótipo externo e local
![Page 17: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/17.jpg)
quinta-feira, 13 de abril de 2023
17
FunçõesEliminando o protótipo de funções
• Se a função for escrita antes da instrução de sua chamada, seu protótipo não será obrigatório.
• O exemplo anterior poderia ser escrito da seguinte maneira:
![Page 18: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/18.jpg)
quinta-feira, 13 de abril de 2023
18
Funções
![Page 19: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/19.jpg)
quinta-feira, 13 de abril de 2023
19
FunçõesTipos de funções
• É definido pelo valor que ela retorna por meio do comando return.
• Uma função é do tipo int quando retorna um valor do tipo int.
• Em C++, os tipos de funções são os mesmos de variáveis, exceto quando a função não retorna nada. Nesse caso, ela é do tipo void.
![Page 20: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/20.jpg)
quinta-feira, 13 de abril de 2023
20
FunçõesO comando return
• Em funções do tipo void, o comando return não é obrigatório;
• O valor de retorno de uma função é acessado na instrução de chamada por meio do nome da função seguido de parênteses contendo ou não argumentos. Ex.:
c = celsius(f); //Chamada à função
• Esse valor poder ser atribuído a uma variável ou fazer parte de alguma expressão;
• Várias instruções return podem fazer parte de uma função, mas apenas uma será executada.
![Page 21: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/21.jpg)
quinta-feira, 13 de abril de 2023
21
Funções
![Page 22: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/22.jpg)
quinta-feira, 13 de abril de 2023
22
FunçõesLimitações do comando return
• O comando return pode retornar somente um único valor para a função que chama.
![Page 23: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/23.jpg)
quinta-feira, 13 de abril de 2023
23
FunçõesDefinição da função
O código C++ que descreve o que a função faz é chamado de definição da função. Sua forma geral é a seguinte:
tipo nome (declaração dos parâmetros){
Instruções;}
• Cabeçalho
• Corpo
![Page 24: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/24.jpg)
quinta-feira, 13 de abril de 2023
24
FunçõesParâmetros da função
• As variáveis que receberão as informações enviadas a uma função são chamadas de parâmetros;
• Devem ser declaradas entre parênteses, no cabeçalho de sua definição;
• Podem se utilizados livremente no corpo da função;
• São acessados somente pela função onde foram declarados.
![Page 25: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/25.jpg)
quinta-feira, 13 de abril de 2023
25
FunçõesPassagem por valor
• A função recebe apenas uma cópia do valor passado para ela e o guarda em uma variável local existente no seu corpo;
• O valor da variável original não é alterado porque a função não tem acesso a mesma.
![Page 26: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/26.jpg)
quinta-feira, 13 de abril de 2023
26
FunçõesPassagem por valor
![Page 27: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/27.jpg)
quinta-feira, 13 de abril de 2023
27
FunçõesFunções que não retornam nada: Tipo void
• Uma função que não retorna nada é do tipo void. Como exemplo, escreveremos uma função que desenha uma linha com um certo número de asteriscos:
![Page 28: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/28.jpg)
quinta-feira, 13 de abril de 2023
28
FunçõesFunções que não retornam nada: Tipo void
![Page 29: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/29.jpg)
quinta-feira, 13 de abril de 2023
29
FunçõesFunções que não recebem e não retornam nada
• Quando uma função não recebe nenhum argumento, devemos especificar no seu protótipo, entre parênteses, com void.
• A função seguinte usa o caractere ‘\a’, chamado de BELL, para tocar o alto-falante. Observe que ela não recebe e não retorna nada.
![Page 30: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/30.jpg)
quinta-feira, 13 de abril de 2023
30
FunçõesFunções que não recebem e não retornam nada
![Page 31: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/31.jpg)
quinta-feira, 13 de abril de 2023
31
FunçõesPassando vários argumentos
• Vários argumentos podem ser passados entre parênteses separados por vírgula, na chamada da função;
• A seguir, temos um exemplo de programa que passa dois argumentos para uma função:
![Page 32: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/32.jpg)
quinta-feira, 13 de abril de 2023
32
FunçõesPassando vários argumentos Argumento 1
Argumento 2
![Page 33: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/33.jpg)
quinta-feira, 13 de abril de 2023
33
FunçõesEscrevendo várias funções no mesmo programa
• Você pode escrever quantas funções quiser no mesmo programa;
• Qualquer função poder chamar uma outra função;
• Em C++, não é permitido definir uma função dentro de outra função.
![Page 34: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/34.jpg)
quinta-feira, 13 de abril de 2023
34
Funções
![Page 35: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/35.jpg)
quinta-feira, 13 de abril de 2023
35
FunçõesChamadas a funções usadas como argumentos de
outras funções
• Podemos também chamar uma função como argumento para outra função.
• A sintaxe é a mesma utilizada na chamada de variáveis como argumentos para funções.
• Exemplo:
![Page 36: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/36.jpg)
quinta-feira, 13 de abril de 2023
36
Funções
Usando outras funções como argumentos
![Page 37: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/37.jpg)
quinta-feira, 13 de abril de 2023
37
FunçõesO operador Unário de referência: &
• Com o operador de referência, podemos montar novos tipos de dados chamados de referências;
• Referência é um outro nome para uma variável já existente;
• Como usar: int n;int& A = n;
Se o valor de A for alterado, o valor de n também será alterado.
Se o valor de n for alterado, o valor de A também será alterado.
Indica que A é um outro nome para n.
![Page 38: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/38.jpg)
quinta-feira, 13 de abril de 2023
38
FunçõesO operador Unário de referência: &
Não é um cópia da variável a que se refere, é a mesma variável sob nomes diferentes.
int n;int& A = n;N = 5;cout << A;A = 8;cout << n;
Nas instruções:
Que valores são impressos?
![Page 39: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/39.jpg)
quinta-feira, 13 de abril de 2023
39
FunçõesO operador Unário de referência: &
Toda referência deve obrigatoriamente ser inicializada.
int n;int& A;int& A = n;
ERRADO!
CERTO!
![Page 40: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/40.jpg)
quinta-feira, 13 de abril de 2023
40
FunçõesPassagem por referência
• Um dos usos de referências é na passagem de argumentos para funções;
• A principal vantagem da passagem por referência, é a de que a função pode acessar as variáveis da função que chamou;
• Isso possibilita que uma função retorne mais de um valor para a função que chama;
• Os valores a serem retornados são colocados em referências de variáveis da função chamadora.
![Page 41: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/41.jpg)
quinta-feira, 13 de abril de 2023
41
FunçõesPassagem por referência
Exemplo:
void reajusta20(float& p, const float& r);
![Page 42: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/42.jpg)
quinta-feira, 13 de abril de 2023
42
FunçõesOperador Unário
![Page 43: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/43.jpg)
quinta-feira, 13 de abril de 2023
43
FunçõesReferências constantes
• Você pode combinar a palavra-chave const com a declaração de uma referência;
• Essas declarações fazem de A um nome “read-only” para n;
int n = 456;const int& A = n;
![Page 44: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/44.jpg)
quinta-feira, 13 de abril de 2023
44
FunçõesReferências constantes
• Utilizamos referências constantes quando não precisamos alterar o valor das variáveis enviadas como argumentos;
• O uso de referências constantes é um meio de economia de memória.
Exemplo:
void imprime_Quadrado(const double& n, const double& m);
![Page 45: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/45.jpg)
quinta-feira, 13 de abril de 2023
45
FunçõesReferências constantes
![Page 46: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/46.jpg)
quinta-feira, 13 de abril de 2023
46
FunçõesValores default para os argumentos de uma função
• Uma função pode ser chamada sem serem especificados nenhum de seus argumentos;
• O protótipo de uma função pode fornecer valores default para esses argumentos não especificados;
• Se forem omitidos os argumentos correspondentes na chamada à função, os valores default serão automaticamente usados;
• Se forem especificados, estes serão respeitados e usados;
![Page 47: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/47.jpg)
quinta-feira, 13 de abril de 2023
47
FunçõesValores default para os argumentos de uma função
Exemplo:
void linha(int n = 20, char ch = ‘*’);
![Page 48: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/48.jpg)
quinta-feira, 13 de abril de 2023
48
FunçõesValores default para os argumentos de uma função
![Page 49: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/49.jpg)
quinta-feira, 13 de abril de 2023
49
FunçõesValores default para os argumentos de uma função
Se um argumento for omitido, todos os subsequentes deverão sê-lo:
linha(,‘*’); //ERRO
Após a primeira especificação com valor default, todos os parâmetros seguintes devem ser especificados com valor default:
linha(int n = 20, char ch); //ERRO
linha(int n, char ch = ‘*’); //CORRETO
![Page 50: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/50.jpg)
quinta-feira, 13 de abril de 2023
50
FunçõesSobrecarga de funções
• Significa criar uma família de funções com o mesmo nome;
• Mas devem ter a lista de argumentos diferentes ou em número ou em tipo;
• É por meio dos argumentos que o sistema reconhece qual função deverá ser chamada;
![Page 51: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/51.jpg)
quinta-feira, 13 de abril de 2023
51
Funções
Exemplo 1
![Page 52: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/52.jpg)
quinta-feira, 13 de abril de 2023
52
Funções
Exemplo 2
![Page 53: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/53.jpg)
quinta-feira, 13 de abril de 2023
53
FunçõesFunções inline
• Escrevemos funções inline exatamente da mesma maneira como escrevemos funções comuns, exceto pela inclusão do qualificador inline no início da definição da função.
• A palavra chave inline, quando colocada no início do cabeçalho da definição de uma função, causa a inserção de uma nova cópia da função em todo lugar onde ela é chamada;
• A definição de uma função inline deve preceder a primeira chamada a ela.
![Page 54: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/54.jpg)
quinta-feira, 13 de abril de 2023
54
FunçõesFunções inline: quando usar?
• Quando escrevemos funções pequenas, podemos poupar tempo de execução colocando o código da função diretamente no programa. Se a função é muito pequena (uma ou duas instruções), as instruções necessárias à sua chamada podem ocupar mais espaço de memória que as instruções do seu próprio código. Em casos semelhantes, é aconselhável criar funções inline.
![Page 55: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/55.jpg)
quinta-feira, 13 de abril de 2023
55
FunçõesFunções recursivas
• Uma função é recursiva quando dentro dela está presente uma instrução de chamada a ela própria.
• Três pontos devem ser lembrados quando queremos escrever uma função recursiva:
1. Definir o problema em termos recursivos;
2. Encontrar a condição básica;
3. Toda vez que a função é chamada recursivamente, deve estar mais próxima de satisfazer a condição básica.
![Page 56: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/56.jpg)
quinta-feira, 13 de abril de 2023
56
FunçõesFunções recursivas
1. Definir o problema em termos recursivos
Isso significa definir o problema usando ele mesmo na definição. O fatorial de um número n qualquer pode ser definido por meio da seguinte expressão:
n! = n * (n - 1)!
![Page 57: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/57.jpg)
quinta-feira, 13 de abril de 2023
57
FunçõesFunções recursivas
2. Encontrar a condição básica:
Toda função recursiva deve ter uma condição de término chamada de condição básica. A função fatorial(), quando chamada, verifica se n é zero. Se essa condição for satisfeita, interrompe a recursão.
![Page 58: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/58.jpg)
quinta-feira, 13 de abril de 2023
58
FunçõesFunções recursivas
3. Cada vez que a função é chamada recursivamente, deve estar mais próxima de satisfazer a condição básica:
Isso garante que o programa não girará em uma sequência infindável de chamadas. Em nossa função, a cada chamada a função, o valor de n estará mais próximo de zero.
![Page 59: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/59.jpg)
quinta-feira, 13 de abril de 2023
59
Funções
![Page 60: C++ Funções](https://reader037.vdocuments.com.br/reader037/viewer/2022102701/558390c2d8b42af07a8b4ac1/html5/thumbnails/60.jpg)
quinta-feira, 13 de abril de 2023
60
Funções
Dúvidas?