Uma função para calcular a média de três números é muito específica e limitada. Uma função mais geral calcularia a média de qualquer quantidade de números. Isso requer passar os números em um array. Um array é um objeto na memória que contém uma série de valores do mesmo tipo de dado. Este capítulo apresenta os conceitos básicos e o uso de arrays através de um exemplo; para a explicação completa, veja .
Aqui está a definição de uma função para calcular a média de vários números de ponto flutuante, passados como tipo double
. O primeiro parâmetro, length
, especifica quantos números são passados. O segundo parâmetro, input_data
, é um array que contém esses números.
O código anterior introduz a expressão para se referir a um elemento de um array: input_data[i]
significa o elemento de índice i
no array input_data
. O índice do elemento pode ser qualquer expressão com um valor inteiro; neste caso, a expressão é i
. Veja .
O menor índice válido em um array é 0, não 1, e o maior índice válido é um a menos que o número de elementos. (Isso é conhecido como indexação com origem zero.)
Este exemplo também introduz a maneira de declarar que um parâmetro de função é um array. Tal declaração é feita após o nome do parâmetro. Assim como double foo
declara que foo
é do tipo double
, double input_data[]
declara que cada elemento de input_data
é do tipo double
. Portanto, input_data
em si tem o tipo "array de double".
É muito comum em textos técnicos em inglês você encontrar as palavras foo, bar ou foobar. Elas são utilizadas para passar uma ideia de "qualquer coisa", ou "qualquer nome", ou seja, a ideia de que o nome não importa. Em português, seria equivalente ao modo como nos referenciamos a pessoas desconhecidas com "fulano" ou "cicrano".
Ao declarar um parâmetro que é um array, não é necessário dizer qual é o comprimento do array. Neste caso, o parâmetro input_data
não tem informação de comprimento. É por isso que a função precisa de outro parâmetro, length
, para que o chamador forneça essa informação para a função avg_of_double
.
O nome avg_of_double é uma forma abrevidada de average of double. Em inglês, average é média. Já length, traduz para tamanho (no caso do código de exemplo, tamanho do array -em outras palavras, o número de elementos do array). Temos também input_data (dados de entrada) e sum (soma).