什么是伪码和算法?
简单来说, 伪代码 是描述算法逻辑的叙述。
伪代码不是可执行代码,因此不一定要使用精确的语法;但是,遵循行业中广泛使用的标准是有帮助的,解决方案团队可以很容易地理解这一标准。
统一建模语言(UML)和其他业务建模方法也可以称为伪代码的示例。虽然这些工具不是纯文本的,但它们用于提供可执行任务或流程的直观表示。
最佳做法是清楚地记录结构化和完整的伪代码,以帮助准确地进行翻译,这是规划解决方案和编程逻辑的重要部分。
如果算法不存在伪代码,则在编码阶段花费不必要的时间来考虑解决方案,或者提取一些模糊的想法,通常在最后期限迫在眉睫。
在对算法进行故障排除时,伪代码提供了如何将它组合在一起的背景思路,开发人员可能会或可能不会总是帮助解决问题。
看看可汗学院的这个伪代码示例[一世]:
这是用软件开发工具编写的基于文本的伪代码。
前面的笔划//表示文本是注释(或在开发术语中注释掉),因此不是可执行代码的一部分。
下面的粗体文本显示了开发人员的语法和维度,因为他们将伪代码中的要求解释为可执行代码。
//我们如何将我们的想法变成代码?
//画出中间的椭圆形脸 椭圆(宽度/2,身高/2, 200, 300); //画两只眼睛,两个椭圆形,约2/3面,面部大小的1/5 椭圆(宽度/2 – 40,身高/2 – 50, 40, 40); 椭圆(宽度/2 + 40,身高/2 – 50, 40, 40); |
下面的另一个例子显示了编写伪代码的更多技术和结构:
如果学生的成绩大于或等于60
打印“做得好!” 其他 打印“对不起,你失败了” |
当提到结构化伪代码时,存在表示算法逻辑的标准术语,例如 序列, 而, IF-THEN-ELSE 以及其他有用的构造包括 重复UNTIL, 案件,和 对于.
开发人员可以理解这些术语,有助于构建需求,而无需使用其他人可能无法理解的俚语或个人术语。
- 序列 表示按顺序从上到下执行任务。
- 而 是一个重复循环被执行,直到满足开始时定义的条件。
- IF-THEN-ELSE 是两个条件之间的决定:
例
如果工作时间>正常工作那么 显示超时时间表消息 其他 显示正常的时间表消息 |
- 重复UNTIL 是一个重复循环被执行,直到满足最后定义的条件。
例
重复 序列 UNTIL条件 |
- 案件 根据表达式的值提供多个决策。
- 对于 是一个重复的计数循环
请注意,对于每个任务或过程,请使用 结束/万一 (最后使用IF)表示它是终止点或输出结果。
当构造嵌套在彼此之间时,它们必须从它们的父构造中清楚地缩进,换句话说,所有显示依赖关系的语句都应该缩进。
使用动词,“做”字,利用诸如处理,计算机,重置,增量,添加,乘法,打印,显示等术语,并注意缩进促进了理想的伪代码。
现在让我们看一下算法以及它们与伪代码的不同之处。
首先,什么是 算法?
“非正式地,算法是任何明确定义的计算过程 一些值或一组值作为输入并产生一些值或一组值,如 输出。因此,算法是一系列计算步骤,用于转换 输入到输出.” [II]
因此,在更简单的术语中,算法是由一系列步骤定义的可执行代码逻辑,以解决问题或完成任务。
与伪代码不同,编写算法的人需要编程知识,因为它是由计算机解释的 - 不是开发人员 - 执行任务,操作,加密和提取数据。
算法从根本上指示计算机程序执行任务,如代码逻辑中所定义的。任何编程语法中的错误都将阻止成功执行这些任务,这是需要编程知识的地方。
在规划阶段编写伪代码时,请记住算法必须有效,集中并达到最终结果;必须始终考虑解决方案的所有方面。
算法做了什么?从根本上说,它由触发器,进程或其他算法执行,并接受数据作为其输入。数据通过指令和操作的步骤来产生输出。
数据存储在变量中,每个变量都以算法命名,以便在执行过程中为其分配数据。
算法也被命名,因为它们可以包含对其他算法的引用和调用。在开发算法时可能存在许多复杂性和技术性,无论使用何种编码软件,因此需要明确定义以产生准确和期望的结果。
设计和实现算法时要考虑的另一个重要方面是它的执行速度。对于习惯于更快速的软件和更快的设备的最终用户来说,这一点越来越明显。
例如,将过滤器应用于搜索条件并等待非常长的时间以显示结果可能是令人难以忍受的体验。然后,开发人员将调查数据的接收方式和时间,可以在子流程中过滤数据等。
编写减慢任何进程的代码逻辑会对用户,开发人员和业务产生负面影响。
总之,伪代码是规划代码逻辑和实现稳健解决方案的重要叙述。这些解决方案使用结构良好,快速且有效的算法实现,可生成准确且理想的结果。