Conteúdo do Curso
Fundamentos de C
Fundamentos de C
Argumentos
Funções podem ser pensadas como mini-fábricas, que pegam matérias-primas e as transformam em vários produtos. Da mesma forma, funções processam dados de entrada. A entrada para uma função é chamada de argumentos ou parâmetros.
Relembrando a estrutura de uma função:
arguments_placeholder
é o local onde você lista os argumentos da função.
Como exemplo, vamos projetar uma função para converter graus em radianos:
Main
#include <stdio.h> // my function for conversion degrees to radians double degreesToRadians(double degree) // *double degree* is argument { double rads = (degree * 3.14) / 180; return rads; // output of function } int main() { double degree = 30; // We immediately print the result of our function printf("30 degrees equals %.2f radians\n", degreesToRadians(degree)); return 0; }
Escopo
Imagine uma chamada de função como um portal para um reino separado e autônomo onde ações específicas ocorrem. Objetos criados neste reino existem apenas lá, e uma vez que o reino deixa de existir, eles também deixam.
Por exemplo, se declararmos uma variável dentro de uma função, ela permanece inacessível de fora dessa função. A única informação que podemos extrair da execução de uma função é o que recuperamos usando a instrução return
.
Argumentos
Funções podem receber uma variedade de argumentos: tipos de dados básicos (como int, char, double), arrays/strings, ponteiros (spoiler!), e até mesmo outras funções.
Também é importante notar que os nomes dos argumentos dentro da função podem diferir dos dados reais que você está passando para ela.
A variável int inputVar
vive apenas dentro do escopo da função, atuando como um espaço reservado para os dados que queremos alimentar na função. No entanto, os tipos de dados dos argumentos e os dados reais passados para a função devem estar alinhados.
Agora, vamos escrever uma função que identifica o maior elemento em um array:
Main
#include <stdio.h> int findMaxElement(int arr[]) // 1 { int max = arr[0]; // 2 for (int i = 1; i < 5; i++) // 3 { if (arr[i] > max) // 3 { max = arr[i]; // 4 } } return max; } int main() { int array[] = { 10, 5, 7, 14, 3 }; int maxElement = findMaxElement(array); printf("Max element is: %d\n", maxElement); return 0; }
Aqui está o algoritmo:
- Passe o array para a função;
- A função rotula qualquer elemento escolhido do array como "max" (independentemente do seu valor real);
- Um loop dentro da função então examina cada elemento, comparando-o com "max";
- Se algum novo elemento for maior que "max", então esse elemento assume o título de "max".
Obrigado pelo seu feedback!