C函数 第二课《魔法工厂正式开业——函数定义、调用与声明》本课学习目标学完本课同学们能够✅ 会编写自己的函数✅ 会调用函数完成任务✅ 理解程序执行流程✅ 理解函数为什么可以重复使用✅ 掌握函数定义与函数声明的区别第一幕程序王国准备建设更多工厂1、上一节课。程序王国建好了第一家工厂void hello() { cout欢迎来到程序王国endl; }国王非常高兴。他说只有一家工厂太少了2、于是。程序王国开始建设越来越多的工厂。有打印工厂画线工厂加法工厂排序工厂计算面积工厂……那么问题来了。到底怎样建设一家工厂呢第二幕建设一座真正的魔法工厂1、老师画一张图。魔法工厂 ┌────────────────┐ 工厂名字 工厂做什么 做完以后怎么办 └────────────────┘2、程序里的函数也是一样。例如void hello() { cout欢迎来到程序王国endl; }老师开始拆解。3、第一部分返回值第一行void告诉别人这家工厂干活。但是不用带东西回来。以后还会学习int double char bool今天先认识void表示不用返回任何结果。4、第二部分函数名字继续看hello这就是工厂名字。以后想使用它。就叫hello();名字最好见名知意。例如print() draw() findMax() sortArray()而不要aaa() bbb() fun1() abc()老师告诉大家程序员最重要的能力之一就是给函数起一个好名字。5、第三部分小括号后面的()表示这里以后可以放任务。今天先空着。下一课详细讲参数。6、第四部分函数体大括号里面{ cout欢迎来到程序王国endl; }就是真正工作的地方。所有工作。都写这里。第三幕工厂建好了怎么使用1、建好了工厂。当然要营业。程序里营业就是调用函数。2、例如#includeiostream using namespace std; void hello() { cout欢迎来到程序王国endl; } int main() { hello(); return 0; }1程序先执行谁很多孩子会说hello。其实不是。2程序的执行顺序main() ↓ hello() ↓ 回main() ↓ 结束我们一定要画流程图。这是以后理解递归的重要基础。第四幕工厂可以一直重复使用1、如果欢迎三位同学。是不是要写三遍不用只需要int main() { hello(); hello(); hello(); return 0; }运行欢迎来到程序王国 欢迎来到程序王国 欢迎来到程序王国2、总结函数最大的优点之一重复利用。以后写一次。用很多次。第五幕建立自己的工具箱1、下面开始建立更多工厂。例如1画横线。#includeiostream using namespace std; void line() { coutendl; } int main() { line(); cout欢迎学习Cendl; line(); return 0; }2以后所有程序是不是都可以直接画横线当然。这就是建立自己的工具箱。3再建立打印星星。void star() { cout★★★★★endl; }4建立打印标题。void title() { cout程序王国endl; }2、main会越来越简单。title(); line(); star(); line();同学们体会到原来程序还能这么整齐第六幕main像总指挥看流程图。main ↓ hello() ↓ line() ↓ star() ↓ goodbye()main最好不要自己干活。它是安排工作。真正干活的是函数。这是程序设计思想。第七幕为什么函数放下面就报错1、有的同学这样写#includeiostream using namespace std; int main() { hello(); return 0; } void hello() { coutHelloendl; }结果。编译失败。2、我们会问为什么3、汉克老师继续讲故事。1程序王国来了一个新工人。他拿着命令hello();他问hello工厂在哪编译器开始找。找。找。找。没找到。于是报错。2为什么因为它看 不到后面有没有工厂。第八幕工厂目录——函数声明1、怎么办呢国王说没关系。先做一本目录。告诉大家以后会有一家hello工厂。于是void hello();放到main的前面。2、完整程序#includeiostream using namespace std; void hello(); int main() { hello(); return 0; } void hello() { coutHelloendl; }现在。编译器在main的前面就看到hello();它知道了哦。后面一定有。继续。于是。成功。3、什么是函数声明画图。工厂目录 ↓ hello() ↓ 真正工厂1声明的作用是告诉别人后面有这个函数。2定义的作用真正开始建工厂。所以声明 ↓ 告诉别人存在 定义 ↓ 真正实现功能第九幕什么时候需要声明1、总结1如果函数写在main前面。定义 ↓ main不用声明。2如果函数定义写在main后面main ↓ 定义必须先声明。这是很多初学者最容易犯的错误。2、课堂综合案例——欢迎系统#includeiostream using namespace std; void line(); void title(); void welcome(); void goodbye(); int main() { title(); line(); welcome(); line(); goodbye(); return 0; } void line() { coutendl; } void title() { cout程序王国endl; } void welcome() { cout欢迎学习C函数endl; } void goodbye() { cout下节课见endl; }通过这个程序孩子可以练习函数定义、函数调用和函数声明还能直观体会到main()像总指挥负责组织流程每个函数像一家独立的工厂负责完成一项具体工作。本课总结今天我们让程序王国的魔法工厂真正运转了起来。请记住五句话函数定义就是建造一家真正能工作的工厂。函数调用就是请这家工厂开始工作。程序总是从main()开始执行需要时再调用其他函数执行完成后返回main()。函数可以重复调用写一次使用很多次这就是代码复用。函数声明就像工厂目录提前告诉编译器后面会有这家工厂请放心。课堂挑战请同学们可以设计一个我的一天程序把生活拆分成多个函数例如getUp()—— 起床washFace()—— 洗脸刷牙eatBreakfast()—— 吃早餐goToSchool()—— 去学校goHome()—— 放学回家然后在main()中按照真实的时间顺序调用这些函数。