前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数的强大之处

函数的强大之处

作者头像
硬核编程
发布2019-08-19 21:30:13
3240
发布2019-08-19 21:30:13
举报

转载请联系授权

01

指数计算

接着上讲的游戏,我们可以用任何数字,10, 42, 10 亿,假设每关结束后 给玩家一些奖励分,奖励分多少取决于 继电器剩余数量。随着难度增加,剩下继电器会越来越难,因此奖励分会根据当前关卡数,指数级增长。我们要写一小段代码来算指数,指数是一个数乘自己,乘特定次数。用循环来实现简直完美!

首先,创建一个叫"奖励分"的新变量,设为 1,然后 for 循环,从 1 到 [当前关卡数],[奖励分] x [继电器剩余数],结果存入 [奖励分]。比如继电器数是2,关卡数是3,for 会循环3次,奖励分会乘,继电器数量 x 继电器数量 x 继电器数量,也就是1×2×2×2,奖励分是8,2的3次方。

02

代码打包成“函数”

这个指数代码很实用,其他地方可能会用到,如果每次想用就复制粘贴,会很麻烦,每次都要改变量名,如果代码发现问题,要补漏洞时,要把每一个复制黏贴过的地方都找出来改,而且会让代码更难懂。少即是多!我们想要某种方法,把代码"打包",可以直接使用,得出结果,不用管内部复杂度。这又提升了一层抽象!

为了隐藏复杂度,可以把代码打包成 "函数",也叫 "方法" 或 "子程序"(有些编程语言这么叫)。其他地方想用这个函数,直接写函数名就可以了。

现在我们把指数代码变成函数。 第一步,取名。叫什么都行,比如"快乐独角兽",但因为是算指数, 直接叫"指数"合适一些。还有,与其用特定变量名,比如 "继电器" 和 "关卡数",用更通用的名字,比如 底数(Base) 和 指数(Exp),Base 和 Exp 的初始值需要外部传入,剩余代码和之前一样,现在完成了,有函数名和新变量名。最后, 我们还需要把结果交给使用这个函数的代码,所以用 RETURN 语句,指明返回什么。

完整版代码是这样,现在可以随意用这个函数,只需要写出名字 然后传入2个数字 就可以了。如果要算 2 的 44 次方,写 exponent(2,44),结果是 18 万亿左右。幕后原理是,2 和 44 存进 Base 和 Exp,跑循环,然后返回结果。

03

使用函数

我们来用这个新函数算奖励分,首先,奖励分初始化为 0,然后用 if 语句,看剩不剩继电器(看上图的 > 0)。如果还剩,用指数函数,传入 [继电器数] 和 [关卡数],它会算 [继电器数]的[关卡数]次方, 存入奖励分。这段算奖励分的代码,之后可能还会用,也打包成一个函数。没错,这个函数 (CalcBonus) 会调用另一个函数 (Exponent)。还有这个 CalcBonus 函数,可以用在其他更复杂的函数。

我们来写一个函数, 每一关结束后都会调用,叫 LevelFinished (关卡结束),需要传入 [剩余继电器数] [关卡数] [当前分],这些数据必须传入。里面用 CalcBonus 算奖励分,并加进总分。还有,如果当前分 > 游戏最高分,把新高分和玩家名 存起来。

现在代码变得蛮"花哨"了,函数调函数调函数,我们写这样一行代码时,复杂度都隐藏起来了。不需要知道内部的循环和变量,只知道结果会像魔术一样返回,总分 53,但是这不是魔术,是抽象的力量。如果你理解了这个例子,就明白了函数的强大之处和现代编程的核心。

比如浏览器这样的复杂程序,用一长串语句来写是不可能的,会有几百万行代码,没人能理解,所以现代软件由上千个函数组成,每个负责不同的事。

如今超过100行代码的函数很少见,如果多于 100 行,应该有东西可以拆出来做成一个函数,模块化编程不仅可以让单个程序员独立制作 App,也让团队协作可以写更大型的程序。不同程序员写不同函数,只需要确保自己的代码工作正常,把所有人的拼起来,整个程序也应该能正常运作!

04

现实中,程序员不会浪费时间写指数函数这种东西,现代编程语言 有很多预先写好的函数集合,叫 "库"。由专业人员编写,不仅效率高,而且经过了仔细检查,几乎做所有事情都有库,网络、图像、声音,我们之后会讲这些主题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员成长充电站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 指数计算
  • 02
  • 代码打包成“函数”
  • 03
  • 使用函数
  • 04
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档