作者magicfx (去南半球度假)
看板DivingSport
标题[心得] 程式语言观点谈潜水规划表格操作原理
时间Wed Jan 1 22:25:10 2020
学潜水其实可以培养孩子许多能力,今天来谈谈对於培养对於演算法、程式语言兴趣的可能性。
假如你除了学潜水电脑表操作,也有学如何用传统的「规划表格」来规划的话,一开始一定觉得很复杂,
可能过了一阵子就忘了怎麽用,然後就从此只会按电脑表。
其实从程式语言的角度来看,程式=资料+演算法,你只要告诉电脑怎麽去处理资料,以及喂给电脑可以处理的资料,就能够帮我们演算出结果
规划表格也不例外,也是有资料的部份和演算法的部份
==
资料型态
表格里其实只有两种资料,时间和深度,而深度其实就是长度单位。
也就是说,我们潜到海里,真正能控制的,也只有时间和深度,你可以控制要在多深的地方停多久,仅此而已。
但为什麽要做规划,其实就是要「聪明地」控制时间和深度,减低罹患减压病的机率。
所以我们想知道的是,例如:
想下多深可以待多久?给深度 -> 查 NDL
想待那麽久最深可以下多深? 给 NDL -> 查深度
下了某深度待某段时间後 -> 回水面休息一阵子 -> 在下某个深度,查NDL
之後想下多深待多久,在水面上必须休息多久?
这些问题的资料都是时间和深度
==
演算法虚拟码(Pseudo code)
至於怎麽去用这表格,其实可以运用虚拟码来思考,也就是真正写程式之前,
先用一种介於白话和电脑程式语言之间的虚拟码,可以让意思更简洁明了,
让我们把重点专注在程式的行为和处理的资料上,等确定虚拟码符合我们想要的需求,
再根据虚拟码写成真正电脑能看懂得程式语言。
所以潜水课本看完之後可以尝试写下潜水规划表格的虚拟码,看看自己是否理解整个运算过程,
也方便日後复习。
==
例外处理(Exception)
有时候某些情况会被归为例外情况,要特别处理。
例如可能「压力等级」太大,好比说到XYZ後,就可能得让SI至少1小时等
这些在表格上会另外注明,使用前必须看清楚。
==
函式(Function)
基本上就是有传回值的副程式
可以应用在高氧的规划表格
其实我不需要另外为高氧设一个表格,我只要用原本空气用的规划表格就好。
也就是说,假如我可以算出一个值,这个值也可以丢进去吸空气用的规划程式就好
那就轻松了
在高氧的规划,其实就试算一个EAD,我吸多少浓度的高氧下多深,其实等同於吸空气下到另一个深度。
这个换算的原理是建立在氮分压,所以只要用高氧其实等於低氮的概念去想,就知道怎麽换算。
等我用这个 EAD 函式去算了以後,得到新的深度,再回传给空气规划表格下去计算即可。
当然,你也可以不把这个EAD写成副程式,但你就得为22-40%每一个整数的浓度都做一个表格,
当然,最常用的就是 EAN32
==
迭代与递回
潜水往往是重复潜水,所以我们有机会持续用到表格好几次,这其实就是迭代的精神。
又或者是我们想要反推,这也会用到递回的精神。
例如我们想要知道潜了第一潜之後,要下第二潜该怎麽继续为资料给演算法
这时候就会查出一个压力等级的英文符号,这会告诉我们怎麽继续算下去。
然後得到新的压力等级,又继续算下去....
不过,压力等级这英文符号不能喂给潜水电脑表继续算下去,或是潜水电脑表也不会算一个压力等级给你
所以当你电脑表中途坏了,想要切换成表格继续来规划,就得利用「归零大法」,
等到「压力等级」消失,一切从头算起就好了。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.62.173 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DivingSport/M.1577888713.A.7F2.html
1F:推 jack7614614: 教练 推推 不过数学向来是罩门啦 数学没及格过 01/01 22:55
2F:→ magicfx: 查表用到的数学很简单 01/01 22:57