
如果你是一名程序员,你就会知道编写代码通常是一个耗时且错误百出的过程。弄清如何让程序或按照自己的意愿运行,然后再向团队或股东等其他人解释,这样的过程既令人沮丧,又令人满意。
这就是伪代码的用武之地。
伪代码是一种使用简单、自然的语言和编程语言元素相结合来表示代码的方式。无论你是刚刚开始编程,还是经验丰富的专业人士,了解伪代码都是一种节省时间的技巧,你可以随时将其融入到你的编程过程中。
在本文中,我们将深入探讨什么是伪代码、如何使用伪代码以及为什么它是。
伪代码(Pseudocode)是一种表示代码的方式,如算法、函数和其他过程,使用自然语言和类似编程语言的元素组合。
之所以称为 “伪” 代码,是因为它实际上不可执行。相反,它是人类理解和规划编码逻辑的一种方式–以人类易于理解的方式描述程序的步骤,同时又足够详细,可以快速转换成特定的编程语言。
下面是一个简单的伪代码示例,在这个示例中,我们正在制定基本的逻辑,以便在访客浏览我们的网站或应用程序时用名字向他们问好:
PROCESS GreetUser INPUT userName DISPLAY "Hello, " + userName + "!" END
正如你所看到的,上述伪代码并不是用任何实际语言或框架的语法编写的。相反,它使用了简单、普遍易懂的语言和编程元素(如 “PROCESS“、”DISPLAY“和 “+“)来代替语法,使任何人都能轻松掌握。
这就是编写伪代码的力量之一: 通过将代码的意图用通用语法表达出来,你可以跳过所有编程和基于技能的语言障碍。我们将在下一节详细讨论这一点。
伪代码的主要优点之一是,它允许开发人员勾勒出自己的代码,而不必拘泥于任何一种特定语言的语法和结构。这样就更容易发现程序或函数逻辑中的错误,而无需编写或调试任何实际代码。
更重要的是,伪代码可以很容易地适应不同的编程语言,因此对于熟悉多种语言并需要在不同语言间转换想法的开发人员来说,伪代码是一个非常有用的工具。想象一下,你可以向 解释你的 !这对于共同完成一个项目的团队来说尤其有用,因为伪代码可以用作交流想法和功能的通用语言。
以下是伪代码为新手和经验丰富的开发人员带来的主要好处:
此外,编写伪代码可以在开发过程的任何阶段轻松实现。即使您以前从未使用过,也可以现在就开始使用,无论您的编码进度如何,都能立即获得上述好处。
由于伪代码固有的灵活性,伪代码有很多用途——甚至在编程领域之外。
以下是开发人员常用的几种情况:
以上只是几个例子,还有更多例子。利用伪代码发挥优势的可能性几乎是无限的。
伪代码的编写没有唯一正确的 *** 。由于没有特定的语法,所以伪代码非常灵活,这也正是它没有特定语法规则的原因。
虽然一些语言(如 Pascal 和 Basic)提供了特定语法的伪代码指南,但实际上你可以使用任何你喜欢的术语来编写伪代码,只要你的术语无处不在且逻辑可循即可。
不过,大多数开发人员都会遵守一些伪代码的基本步骤和准则。接下来我们将深入探讨。
以下是编写优秀伪代码的一般步骤:
伪代码编写完成后,您需要将其转化为可执行脚本。在项目之外,您还可以通过向开源 投稿、接受代码挑战、在 stackOverflow 或开发社区上提问/回答问题等方式来练习。
尽管伪代码缺乏定义的语法,但开发人员在编写伪代码时经常会用到几种常见的编程结构。下面让我们逐一介绍。
序列
序列是按特定顺序执行的一组语句。它们用于执行或重复一系列简单的操作。伪代码中常用的序列命令包括 INPUT、 SET、 PRINT、 READ、 DISPLAY、 SHOW 和 CALCULATE。
下面是一个使用了其中一些命令的伪代码示例:
PROCESS CalculateCost INPUT price, quantity SET cost = price * quantity PRINT "The cost is: " + cost END
这个伪代码定义了一个名为 CalculateCost 的过程,它接收价格和数量,将它们相乘来计算成本,然后显示结果。
条件语句
条件语句允许程序根据某些条件作出决定,然后在满足(或不满足)某个条件时指示程序执行某些语句。伪代码中经常使用 IF-ELSE、 IF-IF ELSE-ELSE 和 CASE 语句。
下面是一个用伪代码显示 IF-ELSE 脚本的示例:
IF user = returning PRINT "Welcome back!" ELSE PRINT "Welcome!"
在上面的示例中,我们描述的流程是向以前访问过的用户显示 “Welcome back!” 信息,但只向新用户显示 “Welcome!” 信息。
迭代语句
迭代语句在一个更大的函数或流程中重复一组步骤。迭代语句的任务通常是对列表中的多个项目执行相同的操作,或者重复一个流程,直到满足某些条件为止。
迭代对于多次重复一组步骤非常有用,可以使用各种类型的循环来实现,包括 FOR、 WHILE 和 DO-WHILE 循环。
下面我们来看一些使用 FOR 循环遍历数字列表的伪代码:
PROCESS PrintWholeList INPUT listOfNumbers FOR each number in listOfNumbers PRINT number END FOR END
在上述伪代码中,我们的 PrintWholeList 进程接收一个数字列表,然后遍历列表,将每个数字显示在屏幕上。FOR 循环允许进程对列表中的每个项目重复 PRINT 命令。
或者,我们也可以利用常见的伪代码来实现与上述循环相同的功能。在伪代码中,使用关键字 REPEAT 和 UNTIL 代替 DO-WHILE 更为常见:
PROCESS PrintWholeList INPUT listOfNumbers SET counter = 0 REPEAT PRINT listOfNumbers[counter] SET counter = counter + 1 UNTIL counter = length of listOfNumbers END
如图所示,我们可以随意更换名称、关键字和语法片段。这只是伪代码灵活性的一个例子。关键是要确保逻辑的稳定性,同时使用足够普遍、任何人都能读懂的名称。
在稍后的伪代码示例中,我们将看到这些结构的应用。
正如我们前面提到的,编写伪代码没有严格的语法,因为它不是一种真正的。
尽管如此,以下几条一般准则可以帮助你每次都写出清晰、有效的伪代码:
遵循这些指导原则,您就能编写出清晰有效的伪代码,供您和他人用作在特定编程语言或中实现函数或算法的指南。
让我们来看看一些伪代码示例,以及它们在各种语言和框架中被转译成可执行代码的情况。
PHP
首先,让我们编写一些伪代码,模仿将给定列表中的所有数字相加的逻辑:
PROCESS FindTotal INPUT listOfNumbers SET sum = 0 FOR EACH number IN listOfNumbers SET sum = sum + number END FOR PRINT sum END
我们的伪代码逻辑遵循以下步骤:
既然我们已经知道了函数的逻辑,就可以将这个伪代码翻译成任何其他语言或框架。让我们看看转译成 会是什么样子:
function findTotal($listOfNumbers) {
$sum = 0;
foreach ($listOfNumbers as $number) {
$sum += $number;
}
echo $sum;
}
Node.js
接下来,让我们编写一些伪代码,用来检查访客的当前时间,然后根据他们的时间向他们发送适当的问候语:
PROCESS TimedGreeting GET userTime IF userTime > 6:00 + < 12:00 PRINT "Good morning!" ELSE IF userTime > 12:00 + < 18:00 PRINT "Good afternoon!" ELSE PRINT "Good evening!" END
我们的伪代码逻辑遵循以下步骤:
转译成 可能是这样的:
function timedGreeting() {
const userTime = new Date();
if (userTime.getHours() > 6 && userTime.getHours() < 12) {
console.log('Good morning!');
} else if (userTime.getHours() > 12 && userTime.getHours() < 18) {
console.log('Good afternoon!');
} else {
console.log('Good evening!');
}
}
Python
在下一个示例中,让我们编写一些伪代码,概述反转用户提供的字符串(在本例中为句子)的逻辑:
PROCESS ReverseString INPUT string SET reversed_string = reverse of string PRINT "The reversed sentence is: ", reversed_string END
我们的伪代码逻辑遵循以下步骤
如果,可能会是这样的:
string = input("Enter a sentence: ")
reversed_string = string[::-1]
print("The reversed sentence is: ", reversed_string)
在某些情况下,您的实际翻译代码会比您的伪代码短。这没有问题。只要您的伪代码逻辑合理,翻译后的代码也能发挥应有的功能,您就可以忽略长度上的差异。
现实世界的流程
由于伪代码的可读性和灵活性,它甚至可以用来定义编码世界之外的流程。
比方说,你想列出粉刷卧室的步骤。这样的伪代码可能是这样的:
PROCESS PaintBedroom INPUT color PREPARE bedroom REMOVE furniture from room COVER floors with drop cloth TAPE off trim PAINT walls SETUP ladder LOAD paint roller with paint ROLL paint onto walls ALLOW paint to dry FINISH REMOVE tape and drop cloth REPLACE furniture DISPOSE of trash END
当然,由于粉刷卧室是一项与计算机无关的物理操作,因此不需要将其转化为编程语言。但是,只要遵守伪代码的更佳实践和惯例,你就会发现通过伪代码来描绘和交流现实世界中的流程是多么容易。
作为一名开发人员,您应该清楚自己的时间有多么宝贵。您应该尽可能通过实施能节省时间、精力和挫折感的策略来保护自己的时间。
对于和技能水平的开发人员来说,编写伪代码都是一项省时省力的绝佳措施,而且无需额外的工具或开销,就能将其顺利集成到中。通过伪代码,开发人员可以清晰简明地规划出代码,然后再深入细致地编写和测试代码,从而节省时间、避免错误,并更轻松地与团队成员协作。
宝塔面板现在已经成为国内许多站长必备的服务器管理必备工具。相比直接使用SSH+FTP来管理服务器,宝塔面板可以提供可视化管理,包括文件管理、数据库管理、数据备份、SSL配置等等。 如果你希望更简单高效地管理您的网站及服务器,宝塔面板是不错的选择。下面是一些宝塔面板安装及常见问题:...
宝塔的数据库管理,是基于phpmyadmin管理和新建数据库。其最大的便利性就是类似,通过面板可以快速访问进行管理操作,无需单独访问phpmyadmin的主页。 此外,在宝塔面板进行数据库管理,你也对数据库名、用户名及密码等信息一目了然,及可以对数据库执行快速备份或者导入。 添加数据...
宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...
宝塔面板其中一个最为便捷的功能之一,无需SFTP或者FTP即可对服务器的文件内容进行上传、下载、编辑及删除等管理操作。 文件管理,用于管理该服务器上的文件内容。 文件的基础操作 文件的基础操作有哪些了,主要有这些方面:复制、粘贴、剪切、删除、重命名、压缩、刷新、新建文件、新建目录。...
宝塔面板提供丰富的软件以一键安装,这让服务器环境搭建提供不少的便利性,站长可以根据实际需求快速编译安装以实现不同的功能需求。 软件管理,主要是宝塔提供的一些面板扩展插件。 Nginx Nginx是一个高性能的HTTP和反向代理服务器,具有轻量级、占用内存小,并发能力强等优势。 w...
JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为之一。 在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在<scr...