计算机编程 - 函数
函数是有组织的、可重用的代码块,用于执行单个相关操作。 函数为您的应用程序提供更好的模块化性和高度的代码重用。 您已经见过各种函数,例如 printf() 和 main()。 这些被称为语言本身提供的内置函数,但我们也可以编写自己的函数,本教程将教您如何在 C 编程语言中编写和使用这些函数。
函数的好处是它们有多个名字。 不同的编程语言对它们的命名不同,例如函数、方法、子例程、过程等。如果您遇到任何此类术语,请想象一下我们将在本教程中讨论的相同概念。
让我们从一个程序开始,我们将定义两个数字数组,然后从每个数组中找到最大的数字。 下面给出的是从给定的一组数字中找出最大数字的步骤 −
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
让我们将上面的程序翻译成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 ", 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 ", max ); }
当上面的代码被编译并执行时,会产生以下结果 −
Max in first set = 50 Max in second set = 501
如果你清楚了上面的例子,那么就很容易理解为什么我们需要一个函数了。 在上面的示例中,只有两组数字,set1 和 set2,但考虑这样一种情况:我们有 10 个或更多相似的数字组,以找出每组中的最大数字。 在这种情况下,我们将不得不重复处理10次或更多次,最终,程序将因重复代码而变得太大。 为了处理这种情况,我们在编写函数时尝试保留将在编程中反复使用的源代码。
现在,让我们看看如何在 C 编程语言中定义函数,然后在后续部分中,我们将解释如何使用它们。
定义函数
C语言中函数定义的一般形式如下 −
return_type function_name( parameter list ) { body of the function return [expression]; }
C 编程中的函数定义由函数头和函数体组成。 这是函数的所有部分 −
return_type(返回类型) − 函数可以返回一个值。 return_type 是函数返回值的数据类型。 有些函数执行所需的操作而不返回值。 在本例中,return_type 是关键字 void。
function_name(函数名称) − 这是该函数的实际名称。 函数名和参数列表共同构成函数签名。
parameter list(参数列表) − 参数就像一个占位符。 当调用函数时,您将传递一个值作为参数。 该值称为实际参数或参数。 参数列表是指函数参数的类型、顺序和数量。 参数可选; 也就是说,函数可以不包含参数。
Function Body(函数体) − 函数体包含定义函数功能的语句集合。
调用函数
在创建 C 函数时,您需要定义该函数必须执行的操作。 要使用函数,您必须调用该函数来执行定义的任务。
现在,让我们借助函数来编写上面的示例 −
#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; /* 处理 set1[] 中可用的第一组数字 */ max = getMax(set1); printf("Max in first set = %d ", max ); /* 现在处理 set2[] 中可用的第二组数字 */ max = getMax(set2); printf("Max in second set = %d ", max ); }
当上面的代码被编译并执行时,会产生以下结果 −
Max in first set = 50 Max in second set = 501
Java 中的函数
如果你清楚C语言中的函数,那么理解Java中的函数也很容易。 Java 编程将它们命名为方法,但其余概念或多或少保持相同。
以下是用 Java 编写的等效程序。 你可以尝试执行一下看看输出 −
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 ", max ); /* Now process second set of numbers available in set2[] */ max = getMax(set2); System.out.format("Max in second set = %d ", 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; } }
执行上述程序时,会产生以下结果 −
Max in first set = 50 Max in second set = 501
Python 中的函数
再说一次,如果你了解 C 和 Java 编程中函数的概念,那么 Python 也没有太大不同。 下面给出了在 Python 中定义函数的基本语法 −
def function_name( parameter list ): body of the function return [expression]
使用Python中的函数语法,上面的例子可以写成如下 −
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
执行上述代码时,会产生以下结果 −
Max in first set = 50 Max in second set = 501