第7章用函数实现模块化程序设计
7 用函数实现模块化程序设计 第 章
为什么要用函数功能1函数()int main()·使用函数可使程序清晰、精炼、简单、灵活。T:功能1内容函数就是功能。每一个函数用来实现一个特定功能1内容11的功能。函数名应反映其代表的功能。功能2函数()f1在设计较大程序时,往往把它分为若干个程序功能2内容1功能2内容1模块,每一个模块包括一个或多个函数,每个VS.int main()函数实现一个特定的功能。功能1内容11调用功能1一个C程序可由一个主函数和若于个其他函数调用功能2f调用功能1构成。由主函数调用其他函数,其他函数也可功能2内容调用功能21以互相调用
为什么要用函数 int main() { { ⋮ 功能1内容 } { ⋮ 功能2内容 } { ⋮ 功能1内容 } { ⋮ 功能2内容 } } 功能1函数() { ⋮ 功能1内容 } 功能2函数() { ⋮ 功能2内容 } int main() { 调用功能1 调用功能2 调用功能1 调用功能2 } VS. • 使用函数可使程序清晰、精炼、简单、灵活。 • 函数就是功能。每一个函数用来实现一个特定 的功能。函数名应反映其代表的功能。 • 在设计较大程序时,往往把它分为若干个程序 模块,每一个模块包括一个或多个函数,每个 函数实现一个特定的功能。 • 一个C程序可由一个主函数和若干个其他函数 构成。由主函数调用其他函数,其他函数也可 以互相调用
为什么要用函数CWINDOWS)system32/cmd.exe口【例7.1】想输出以下的结果,用函数调用实现XDwdoyoudo!#include<stdio.h>*kk*****请按任意键继续int mainO//声明printstar函数void print_starO:printstar和pnint_message都是用户定义的函数名,分别用voidprint_message()://声明print_message函数来输出一排号和一行文字信息。在定义这两个函数时//调用print_star函数print_starO):print_message0://print_message函数指定函数的类型为void,意为函数无类型,即无函数值,也1//调用printstar函数就是说,执行这两个函数后不会把任何值带回main函数print_starO:returnO:在程序中,定义printstar函数和print message函数的位置是在main函数的后面,在这种情况下,应当在main函数之前或main函数中的开头部分,对以上两个函数进行声//定义print_star函数voidprintstaro)明。函数声明的作用是把有关函数的信息(函数名、函数***)n")//输出一行*号1printf("*1类型、函数参数的个数与类型)通知编译系统,以便在编译系统对程序进行编译时,在进行到main函数调用print_staro和printmessage(时知道它们是函数而不是变量或其他对voidprint_message()//定义print_message函数printf("Howdoyoudo!\n")://输出一行文字信息象。此外,还对调用函数的正确性进行检查(如类型、函数名、参数个数、参数类型等是否正确)
为什么要用函数 【例7.1】想输出以下的结果,用函数调用实现。 #include <stdio.h> int main() { void print_star(); //声明print_star函数 void print_message(); //声明print_message函数 print_star(); //调用print_star函数 print_message(); //print_message函数 print_star(); //调用print_star函数 return 0; } void print_star() //定义print_star函数 { printf("******************\n");//输出一行*号 } void print_message() //定义print_message函数 { printf("How do you do!\n"); //输出一行文字信息 } print_star和print_message都是用户定义的函数名,分别用 来输出一排“*”号和一行文字信息。在定义这两个函数时 指定函数的类型为void,意为函数无类型,即无函数值,也 就是说,执行这两个函数后不会把任何值带回main函数。 在程序中,定义print_star函数和print_message函数的位置 是在main函数的后面,在这种情况下,应当在main函数之 前或main函数中的开头部分,对以上两个函数进行“声 明”。函数声明的作用是把有关函数的信息(函数名、函数 类型、函数参数的个数与类型)通知编译系统,以便在编译 系统对程序进行编译时,在进行到main函数调用print_star() 和 print_message()时知道它们是函数而不是变量或其他对 象。此外,还对调用函数的正确性进行检查(如类型、函数 名、参数个数、参数类型等是否正确)
为什么要用函数(1)一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。较大的程序,可分别放在若干个源文件中。这样便于分别编写和编译,提高调试效率。一个源程序文件可以为多个C程序共用。(2)一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。(3)C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。(4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是被操作系统调用的。(5)从用户使用的角度看,函数有两种。①库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。2用户自已定义的函数。它是用以解决用户专门需要的函数。(6)从函数的形式看,函数分两类。1)无参函数。在调用无参函数时,主调函数不向被调用函数传递数据。②有参函数。在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据
为什么要用函数 (1) 一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。较大的程序,可分别放在若干个源文件中。 这样便于分别编写和编译,提高调试效率。一个源程序文件可以为多个C程序共用。 (2) 一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。一个源程序文件是一个编译 单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。 (3) C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结 束整个程序的运行。 (4) 所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌 套定义。函数间可以互相调用,但不能调用main函数。main函数是被操作系统调用的。 (5) 从用户使用的角度看,函数有两种。 ① 库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数 量和功能会有一些不同,当然许多基本的函数是共同的。 ② 用户自己定义的函数。它是用以解决用户专门需要的函数。 (6) 从函数的形式看,函数分两类。 ① 无参函数。在调用无参函数时,主调函数不向被调用函数传递数据。 ② 有参函数。在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据
定义函数
定义函数