Computer Programming 简明教程
Computer Programming - Functions
函数是一个有组织的、可重复使用的代码块,用于执行单个相关操作。函数为应用程序提供更好的模块化和高度的代码重复使用。你已经看到了各种函数,如 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\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 );
}
编译并执行上述代码后,将产生以下结果 −
Max in first set = 50
Max in second set = 501
如果你对上面的示例很清楚,那么就很容易理解为什么我们需要一个函数。在上面的示例中,只有两个数字集,set1 和 set2,但考虑一种情况,我们有 10 个或更多类似的数字集,要从每个集中找出最大的数字。在这种情况下,我们将不得不重复处理 10 次或更多次,最终,该程序将因重复的代码而变得过大。为了处理这种情况,我们编写自己的函数,在其中尝试保留将在我们的编程中反复使用的源代码。
现在,让我们看看如何在 C 编程语言中定义一个函数,然后在后续部分中,我们将解释如何使用它们。
Defining a Function
C 编程语言中函数定义的常规形式如下 -
return_type function_name( parameter list ) {
body of the function
return [expression];
}
C 编程中的函数定义包括函数头和函数体。以下是函数的所有部分 -
-
Return Type − 一个函数可能会返回一个值。 return_type 是函数返回的值的数据类型。某些函数在不返回任何值的情况下执行所需的操作。在这种情况下,返回类型是关键词 void 。
-
Function Name − 这是函数的实际名称。函数名称和参数列表一起构成函数签名。
-
Parameter List - 参数就像占位符。当调用函数时,你可以将值作为参数传递。此值称为实际参数或实参。参数列表是指函数的参数的类型、顺序和数量。参数是可选的;也就是说,一个函数可能不包含任何参数。
-
Function Body − 函数主体包含一系列的陈述,定义了函数所做的事情。
Calling a Function
在创建 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;
/* 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 );
}
编译并执行上述代码后,将产生以下结果 −
Max in first set = 50
Max in second set = 501
Functions in Java
如果你对 C 编程中的函数很清楚,那么在 Java 中也容易理解它们。Java 编程语言将它们命名为 methods ,但其余概念仍然或多或少相同。
以下是用 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\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;
}
}
当执行上述程序时,它将生成以下结果 −
Max in first set = 50
Max in second set = 501
Functions in 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