Programação de computador - funções
Uma função é um bloco de código organizado e reutilizável que é usado para realizar uma única ação relacionada. As funções fornecem melhor modularidade para seu aplicativo e um alto grau de reutilização de código. Você já viu várias funções comoprintf() e main(). Elas são chamadas de funções integradas fornecidas pela própria linguagem, mas podemos escrever nossas próprias funções também e este tutorial irá ensiná-lo a escrever e usar essas funções na linguagem de programação C.
O bom das funções é que elas são famosas por diversos nomes. Diferentes linguagens de programação os nomeiam de maneiras diferentes, por exemplo, funções, métodos, sub-rotinas, procedimentos, etc. Se você encontrar tal terminologia, imagine o mesmo conceito, que discutiremos neste tutorial.
Vamos começar com um programa onde definiremos duas matrizes de números e, a partir de cada matriz, encontraremos o maior número. Abaixo estão as etapas para descobrir o número máximo de um determinado conjunto de números -
1. Get a list of numbers L1, L2, L3....LN
2. Assume L1 is the largest, Set max = L1
3. Take next number Li from the list and do the following
4. If max is less than Li
5. Set max = Li
6. If Li is last number from the list then
7. Print value stored in max and come out
8. Else prepeat same process starting from step 3
Vamos traduzir o programa acima na linguagem de programação C -
#include <stdio.h>
int main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int i, max;
/* Process first set of numbers available in set1[] */
max = set1[0];
i = 1;
while( i < 5 ) {
if( max < set1[i] ) {
max = set1[i];
}
i = i + 1;
}
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = set2[0];
i = 1;
while( i < 5 ) {
if( max < set2[i] ) {
max = set2[i];
}
i = i + 1;
}
printf("Max in second set = %d\n", max );
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Max in first set = 50
Max in second set = 501
Se você for claro sobre o exemplo acima, será fácil entender por que precisamos de uma função. No exemplo acima, existem apenas dois conjuntos de números, conjunto1 e conjunto2, mas considere uma situação em que temos 10 ou mais conjuntos de números semelhantes para descobrir os números máximos de cada conjunto. Em tal situação, teremos que repetir, processar 10 ou mais vezes e, finalmente, o programa se tornará muito grande com o código repetido. Para lidar com tal situação, escrevemos nossas funções onde tentamos manter o código-fonte que será usado novamente em nossa programação.
Agora, vamos ver como definir uma função na linguagem de programação C e, nas seções subsequentes, explicaremos como usá-las.
Definindo uma função
A forma geral de definição de uma função na linguagem de programação C é a seguinte -
return_type function_name( parameter list ) {
body of the function
return [expression];
}
Uma definição de função em programação C consiste em um cabeçalho de função e um corpo de função . Aqui estão todas as partes de uma função -
Return Type- Uma função pode retornar um valor. oreturn_typeé o tipo de dados do valor que a função retorna. Algumas funções realizam as operações desejadas sem retornar um valor. Neste caso, o return_type é a palavra-chavevoid.
Function Name- Este é o nome real da função. O nome da função e a lista de parâmetros juntos constituem a assinatura da função.
Parameter List- Um parâmetro é como um espaço reservado. Quando uma função é chamada, você passa um valor como parâmetro. Esse valor é conhecido como o parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número dos parâmetros de uma função. Os parâmetros são opcionais; ou seja, uma função pode não conter parâmetros.
Function Body - O corpo da função contém uma coleção de instruções que definem o que a função faz.
Chamando uma função
Ao criar uma função C, você dá uma definição do que a função deve fazer. Para usar uma função, você terá que chamar essa função para executar uma tarefa definida.
Agora, vamos escrever o exemplo acima com a ajuda de uma função -
#include <stdio.h>
int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
printf("Max in second set = %d\n", max );
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Max in first set = 50
Max in second set = 501
Funções em Java
Se você tem clareza sobre as funções da programação C, é fácil entendê-las também em Java. A programação Java os nomeia comomethods, mas o resto dos conceitos permanecem mais ou menos os mesmos.
A seguir está o programa equivalente escrito em Java. Você pode tentar executá-lo para ver a saída -
public class DemoJava {
public static void main(String []args) {
int[] set1 = {10, 20, 30, 40, 50};
int[] set2 = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
System.out.format("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
System.out.format("Max in second set = %d\n", max );
}
public static int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
}
Quando o programa acima é executado, ele produz o seguinte resultado -
Max in first set = 50
Max in second set = 501
Funções em Python
Mais uma vez, se você conhece o conceito de funções em programação C e Java, então Python não é muito diferente. A seguir está a sintaxe básica para definir uma função em Python -
def function_name( parameter list ):
body of the function
return [expression]
Usando esta sintaxe de função em Python, o exemplo acima pode ser escrito da seguinte maneira -
def getMax( set ):
max = set[0]
i = 1
while( i < 5 ):
if( max < set[i] ):
max = set[i]
i = i + 1
return max
set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]
# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max
Quando o código acima é executado, ele produz o seguinte resultado -
Max in first set = 50
Max in second set = 501