跳转到内容

编程基础/实践:函数

来自维基教科书,开放的书籍,开放的世界

章节摘要

[编辑 | 编辑源代码]
  • 模块化编程 - 一种软件设计技术,强调将程序的功能分离成独立的、可互换的模块,以便每个模块包含执行所需功能的某个方面所需的一切。[1]
  • 层次结构图或结构图 - 传达程序中各种函数的关系或总体情况。
  • 函数示例
  • 参数和实参 - 参数是一种特殊的变量,用于函数中引用作为输入提供给函数的数据片段。 这些数据片段是函数将被调用/执行时的实参的值。
  • 值传递 vs 引用传递 - 参数可以通过两种不同的方法传递,具体取决于语言。
    • 值传递 将参数作为原始值的副本传递,在内存中创建第二个位置,这本质上是一个新的局部变量。 对值传递参数所做的任何更改只会影响传入的值,而不会影响调用者传入的值。 这是大多数现代编程语言使用最常见的方法。
    • 引用传递 使用单个内存位置传递参数,这本质上将调用函数中的原始参数传递进来。 被调用函数对引用传递参数所做的任何更改也会更改调用函数中该参数的值。[2]
  • 返回语句 - 使函数的结果离开当前函数,并在代码中函数被调用后的位置立即恢复。
  • 空数据类型 - 一种没有值或运算符的数据类型,用于表示什么都没有。
  • 作用域 - 源代码文件中识别标识符名称的区域。
  • 编程风格 - 一组编写计算机程序源代码时使用的规则或指南。
  • 标准库 - 定义已经编写好的通用函数,这些函数可以随时在任何程序中使用。

复习问题

[编辑 | 编辑源代码]

判断题

[编辑 | 编辑源代码]
  1. 除了子程序的名称“函数”之外,计算机行业还使用宏、过程和模块。
  2. 一般来说,函数分为两类:程序控制和特定任务。
  3. 函数必须始终有返回值。
  4. 层次结构图和结构图基本上是一样的。
  5. 程序控制函数用于简单地细分和控制程序。
  6. 空数据类型在 C++ 中很少使用。
  7. 使源代码可读仅供初学者使用。
  8. 用户定义的特定任务函数通常放置在用户定义的库中。
  9. 局部和全局数据存储与作用域的概念相关联。
  10. 为用户定义的特定任务函数创建头文件是一项困难的任务。
  11. 堆栈是计算机内存的一部分,用于存储数据。
  12. 标准库是一组特定任务函数,这些函数已添加到编程语言中以供通用使用。
  13. 程序员应该相信标准库函数能够正常工作。
  14. 不使用特定任务函数编写程序会更容易。
  15. 为了将一个函数的功能与另一个函数的功能分开,你需要为每个函数指定自己的参数。
  16. 值传递会计算实参并将实参的值副本传递给子例程。
  17. 所有函数都应该从“输出”中调用,因为“输出”需要从其他函数中调用信息才能获得正确的输出。
  18. 函数只能返回 1 个输出。

答案

  1. 正确
  2. 正确
  3. 错误 - 函数并不总是需要返回值,如果函数不会跳回到调用它的函数,那么就不需要返回值。
  4. 正确 - 这两个名称都源于显示业务的组织/结构,或不同模块之间的关系。
  5. 正确
  6. 错误 - 如果函数在 C++ 中不返回值,那么可以在函数的参数列表中使用空。
  7. 错误 - 使源代码可读应该是所有程序员的优先事项。
  8. 正确
  9. 正确
  10. 错误 - 乍一看可能很困难,但只要多练习一下,其实很简单。
  11. 正确
  12. 正确
  13. 正确
  14. 错误 - 对于非常简单的代码来说,情况可能如此,但当程序变得复杂时,使用函数变得至关重要。
  15. 正确
  16. 正确
  17. 错误 - 所有函数都应该从 main 中调用,因为 main 负责其他函数。
  18. 正确 - 只有 Python 能够从单个函数返回多个变量。

简答题

[编辑 | 编辑源代码]
  1. 为本章中找到的函数示例程序创建一个层次结构图。
  2. 回顾你已经为本课程创建的程序。 基于你选择的编程语言的编码标准,确定一些使你的代码“无文档”、“不可读”或在其他方面错误的问题。
  3. 描述局部作用域和全局作用域之间的区别。
  4. 想想当你正在创建一个需要传递多个参数的函数时。 然后在调用该函数时,你应该按照什么顺序放置这些参数,为什么?
  5. 用你自己的话说,描述值传递和引用传递之间的区别。
  6. 解释空数据类型和 Nothing 数据类型之间的区别。
  7. 解释为什么在程序中拥有多个函数比在 Main() 函数中拥有所有内容更有用。

使用伪代码、流程图工具或你选择的编程语言完成以下练习。 为输入、每种类型的处理和输出使用单独的函数。 通过传递参数和返回值来避免全局变量。 创建测试数据以验证每个程序的准确性。 在程序顶部添加注释并包括对任何使用资源的引用。

  1. 创建一个程序,提示用户输入小时数和每小时工资,然后计算并显示他们的每周、每月和每年总工资(小时数 * 工资)。 每月和每年的计算以一年 12 个月和 52 周为基础。[3]
  2. 创建一个程序,询问用户他们用年计算的年龄,然后计算并显示他们的近似年龄(以月、天、小时和秒计)。 例如,1 岁的儿童为 12 个月,365 天等。
  3. 回顾 MathsIsFun:美式标准长度。 创建一个程序,询问用户以英里为单位的距离,然后计算并显示以码、英尺和英寸为单位的距离,或者询问用户以英里为单位的距离,然后计算并显示以公里、米和厘米为单位的距离。
  4. 回顾 MathsIsFun:平面图形的面积。 创建一个程序,询问用户不同形状的尺寸,然后计算并显示这些形状的面积。 不要包含形状选择。 这将在后面进行。 现在,只需依次包含多个形状计算即可。
  5. 创建一个程序,计算房间的面积以确定所需的铺地板材料量。 房间是长方形的,尺寸以英尺和十进制小数测量。 输出需要以平方码为单位。 1 码等于 3 线性英尺(9 平方英尺)。
  6. 编写一个程序,帮助用户确定粉刷房间所需的油漆量以及费用。向用户询问房间的长度、宽度和高度,以及一加仑油漆的价格和一加仑油漆可以覆盖的平方英尺数。计算四个墙壁的总面积为 2 * length * height + 2 * width * height 计算油漆数量: 总面积 / 每加仑平方英尺 注意:必须向上取整到下一整加仑。要向上取整,请添加 0.9999,然后将结果值转换为整数。计算油漆的总成本为: 加仑数 * 每加仑价格.
  7. 查看 维基百科:狗的衰老。编写一个程序,提示用户输入他们狗的名字及其人类年龄。根据流行的神话,一个人年等于七个狗年,计算并显示他们狗的狗年年龄。请务必在输出中包含狗的名字,例如
        Spike 的狗年年龄是 14 岁。

参考资料

[编辑 | 编辑源代码]
华夏公益教科书