伪代码书写规范

2023-10-27

  伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(PascalCJavaetc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间。

  它以编程语言的书写形式指明算法的职能。相比于程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。它是半角式化、不标准的语言。我们可以将整个算法运行过程的结构用接近自然语言的形式(这里,你可以使用任何一种你熟悉的文字,中文,英文 等等,关键是你把你程序的意思表达出来)描述出来. 使用伪代码, 可以帮助我们更好的表述算法, 不用拘泥于具体的实现。

  人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。这样伪代码就应运而生了。

  当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。计算机科学在教学中通常使用虚拟码,以使得所有的程序员都能理解。

  综上,简单的说,让人便于理解的代码。不依赖于语言的,用来表示程序执行过程,而不一定能编译运行的代码。在数据结构讲算法的时候用的很多。 

  以下将介绍伪代码的书写规则。

  例如,类Pascal语言的伪代码的语法规则是:在伪代码中,每一条指令占一行(else if,例外)。指令后不跟任何符号(PascalC中语句要以分号结尾)。书写上的缩进表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的beginend语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。此外,关键字要加粗以区别其他。

  算法的伪代码语言在某些方面可能显得不太正规,但是给我们描述算法提供了很多方便,并且可以使我们忽略算法实现中很多麻烦的细节。通常每个算法开始时都要描述它的输入和输出,而且算法中的每一行都给编上号码,在解释算法的过程中会经常使用算法步骤中的行号来指代算法的步骤。算法的伪代码描述形式上并不是非常严格,其主要特性和通常的规定如下:

 1.变量声明

  算法中出现的数组、变量可以是以下类型:整数、实数、字符、位串或指针。通常这些类型可以从算法的上下文来看是清楚的,并不需要额外加以说明。

2.指令的表示

  在算法中的某些指令或子任务可以用文字来叙述,例如,“设x是A中的最大项”,这里A是一个数组;或者“将x插入L中”,这里L是一个链表。这样做的目的是为了避免因那些与主要问题无关的细节使算法本身杂乱无章。

3.表达式

  算术表达式可以使用通常的算术运算符(+,-,*,/,以及表示幂的^)。逻辑表达式可以使用关系运算符=,≠,<,>,≤和≥,以及逻辑运算符与(and),或(or),非(not)。

4.赋值语句

  赋值语句是如下形式的语句:a<-b 。

  这里a是变量、数组项,b是算术表达式、逻辑表达式或指针表达式。语句的含义是将b的值赋给a。

5.内容交换

  若a和b都是变量、数组项,那么记号a<->b 表示a和b的内容进行交换。

6goto语句

  goto语句具有形式

    goto label(goto标号)

  它将导致转向具有指定标号的语句。

7.分枝结构

  条件语句有以下两种形式:

    if c then

      s

或者

    if c then

      s

    else

      s′

  这里c是逻辑表达式,ss′是单一的语句或者是被括在doend之间的语句串。对于上述两种形式,假若c为真,则s被执行一次。假若c为假,则在第一种形式中,if语句的执行就完成了,而在第二种形式中,执行s′。在所有的情况下,控制就进行到了下一个语句,除非在ss′中的goto语句使控制转向到其它地方。

8.循环结构

  有两种循环指令:whilefor

  while语句的形式是

    while c do

      s

    end

  这里c是逻辑表达式,而s是由一个或更多个语句组成的语句串。当c为真时,执行s。在每一次执行s之前,c都被检查一下;假若c为假,控制就进行到紧跟在while语句后面的语句。注意,当控制第一次达到while语句时,假若c为假,则s一次也不执行。 

   for语句的形式是

    for var init to limit by incr do

      s

    end

  这里var是变量,initlimitincr都是算术表达式,而s是由一个或多个语句组成的语句串。初始时,var被赋予init的值。假若incr≥0,则只要var≤limit,就执行s并且将incr加到var上;假若incr<0,则只要var≥limit,就执行s并且将incr加到var上。incr的符号不能由s来该改变。

9.程序的结束

  exit语句可以在通常的结束条件满足之前,被用来结束while循环或者for循环的执行。exit导致转向到紧接在包含exit的(最内层)while或者for循环后面的一个语句。

10.程序返回

  return用来指出一个算法执行的终点;如果算法在最后一条指令之后结束,它通常是被省略的;它被用得最多的场合是检测到不合需要的条件时。return的后面可以紧接被括在引号的信息。

11.程序注释

  算法中的注释被括在/* */之中。诸如readoutput之类的各种输入或者输出也在需要时被用到。

伪代码实例

  伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把全部的东西写下来必定可能会让费很多时间,那么这个时候可以采用伪代码方式。比如:

    1.  if 九点以前 then

    2.    私人事务

    3.  else if 9点到18 then

    4.    工作

    5.  else

    6.    下班

  这样不但可以达到文档的效果,同时可以节约时间。更重要的是,使结构比较清晰,表达方式更加直观。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

伪代码书写规范 的相关文章

  • awr 自动 mail 发送设置

    1 各节点 AWR 自动生成 script 设置 awrrun autoawr sql cat data run awrrun bin sh cd data awrrpt ORACLE HOME u01 product oracle exp
  • Ubuntu 配置 C/C++ 开发环境

    文章目录 0 更新和升级系统软件 1 安装 build essential 软件包 2 安装 gdb 3 安装 cmake 0 更新和升级系统软件 在终端中输入以下命令对软件进行刷新 保证后续安装的软件都是最新的 sudo apt upda
  • 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性 非本地图片 确定图片资源存在 copy 图片url再浏览器打开 确定图片资源存在且能正常访问 本地图片 确定相对路径或者绝对路径正确 微信小程序图片路径 不可以存在中文 使用英文做路径和文
  • DataX同步Hive数据丢失,源码修复

    文章目录 DataX简介 DataX 商业版本 DataX的特点 DataX同步Hive数据丢失 DataX的Hive数据源HdfsReader插件 DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本 在阿里巴巴集
  • 推荐几款好用的压缩软件

    前言 压缩工具作为电脑装机必备软件我们在日常生活中都会经常用到 但是诸如好压 2345 WinRAR等一些常见的压缩软件都会有各种广告弹窗的现象 烦人至极 以下推荐几款免费无广告的强大压缩工具 7 Zip 仅有1M左右的安装包将轻巧便捷阐述
  • [从零开始学习FPGA编程-26]:进阶篇 - 基本组合电路-数据选择器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 数据选择器 1 1 数据选择器概述与原理
  • 能力和结果之间的关系

    大家好 这里是大话硬件 今天这篇文章想和大家分享前段时间的一点工作体会 关于个人能力和工作结果之间的关系 其实这些感悟是在上周三晚上下班 走在回家的路上 脑海中突然出现这样的体会 回到家里立马写了下来 因为是即时的灵感 完全是因为工作状态触
  • Python有限体积流体开尔文-亥姆霍兹不稳定性

    本文 我们将使用有限体积方法模拟开尔文 亥姆霍兹不稳定性 我们将考虑一种可压缩流体 它具有向背景相反方向移动的高密度流 速度切变引起了著名的不稳定性 有时在云层和木星的大红斑中也可以看到这种不稳定性 有限体积法 我们将描述有限体积法来模拟理
  • 【Web自动化】Python3+Selenium 框架⑸——登录页面类方法

    前言 Selenium是一个用于Web应用程序自动化测试工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE 7 8 9 10 11 Mozilla Firefox Safari Google Chr
  • mybatisplus多表关联查询_神奇的SQL:探索多表连接查询的执行细节

    作者 jb hz 来源 https blog csdn net qq 27529917 先构建本篇博客的案列演示表 1 驱动表如何选择 驱动表的概念是指多表关联查询时 第一个被处理的表 使用此表的记录去关联其他表 驱动表的确定很关键 会直接
  • @Cacheable key的使用

    key属性是用来指定Spring缓存方法的返回结果时对应的key的 该属性支持SpringEL表达式 当我们没有指定该属性时 Spring将使用默认策略生成key 我们这里先来看看自定义策略 至于默认策略会在后文单独介绍 自定义策略是指我们
  • 【VTK】VTK9.1+QT6+VS2019编译

    VTK9 1 QT6 2 3 VS2019编译 环境准备 vtk9 1编译 QtCreator工程引入VTK 环境准备 QT安装时选上msvc 环境变量添加QT下bin 下载qt vs tools 不必要 https download qt
  • 一张脑图解析 ConcurrentHashMap 的重点知识点

    欢迎在评论区交流 一起学习 一起进步
  • Spring boot Banner和icon

    文章目录 Spring boot Banner和icon 上一节 源码 Spring boot banner 自定义banner 关闭banner 使用图片充当banner 源码分析 Spring boot icon 源码分析 下一节 Sp
  • 华为实习笔试复盘(1)配送站和客户问题

    写在前面 自己玩了很多项目 但是最近准备秋招的过程中 发现自己对于算法和编程语言的基本功夫实在是太欠缺了 投递了华为的实习岗位 4 26参加机考 一做题就发现了自己很多地方都不会 这里写下笔试后的复盘以警醒自己 题目 按照记忆来回顾题目 仅
  • 计算机毕业设计PHP基于微信小程序在线抽签系统(源码+程序+uni+lw+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 phpStudy Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 原生PHP Vue 等
  • UE4用蓝图画出数学柱状图(第一更)

    UE4用蓝图画出数学柱状图 第一更 利用ue4画出数学柱状图主要用的蓝图节点 新建一个widget 在UI蓝图里面直接用上面四个节点是不行的 需要重写一个UI的函数 所有的绘画都要在这个函数里完成 这个引用在C 里写为了只读 且这个函数也不
  • 55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

    55 Pandas DataFrame 转换为 JSON 字符串 文件并保存 to json 使用pandas DataFrame的方法to json 可以将pandas DataFrame转为JSON格式字符串 str类型 或者输出 保存
  • 闲谈:如何在js中定义枚举类

    定义枚举的意义和场景 今天遇到了一个场景 页面中有一个下拉框 里面两个选项 国有企业 民营企业 代码结构是这样的 text 国有企业 value 1 text 民营企业 value 2 value是用来存储 text是用来展示 数据回显的时
  • QT错误::-1: error: No rule to make target ‘res.qrc‘, needed by ‘debug/qrc_res.cpp‘. Stop.

    问题分析 出现这种错误是因为选中的资源文件的图片路径中含有中文 解决办法 先删除原有图片路径中含有中文的图片 将图片的路径中含有中文的部分修改后再进行添加 然后再重新执行即可

随机推荐

  • 【Vue】一文让你进入Vue的大门

    Vue简介 官网 英文官网 中文官网 介绍与描述 Vue历史 Vue 是一套用来动态构建用户界面的渐进式JS框架 构建用户界面 把数据通过某种办法变成用户界面 渐进式 Vue可以自底向上逐层的应用 简单应用只需要一个轻量小巧的核心库 复杂应
  • iOS 多线程知识体系构建(二):Pthreads、NSThread篇

    本篇首先来学习 iOS 多线程技术中的 Pthreads 和 NSThread Pthreads 可移植操作系统接口 英语 Portable Operating System Interface 缩写为POSIX 是 IEEE 电气和电子工
  • 解决anaconda无法创建虚拟环境问题

    报错信息 base C Users Administrator gt conda create name pytorch Solving environment done gt gt gt gt gt gt gt gt gt gt gt g
  • SpringBoot 通过 Feign 调用Django 接口

    注意 本教程实现的是SpringBoot 调用 Django 中的http接口 调用Django 的接口是为了更好的模拟项目流程 如果只想要理解调用过程 使用springBoot 调用springBoot 会更好 主要使用feign web
  • [Linux]使用CentOS镜像与rpm来安装虚拟机软件

    目录 一 前言 二 步骤 一 连接镜像文件 二 将需要的RPM文件移动到虚拟机上 三 安装rpm软件包 一 前言 本文使用的是CentOS的VM ware虚拟机 二 步骤 一 连接镜像文件 双击虚拟机右下角 打开虚拟机配置菜单 选中蓝圈中选
  • cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051

    报错信息 cv2 error OpenCV 4 5 4 D a opencv python opencv python opencv modules imgproc src resize cpp 4051 error 215 Asserti
  • sqlserver 时间加减精确到分钟_SQL Server中sp_spaceused统计数据使用的空间总量不正确的原因...

    很多时候 我们经常使用sp spaceused来查看表的空间使用情况 上个月群里有个网友说他使用DELETE删除了数据后 使用sp spaceused查看 发现该表的分配的空间总量 reserved 与数据使用的空间总量 data 没有变化
  • 卸载地平线5所有文件。本人亲测。

    首先你要了解的是 你下载的游戏文件都会保存在windowsapps文件里面 但是删除这个文件我们需要获得权限 下面是讲如何删除这个文件 1 win r 输入 C Program Files WindowsApps 2 在 WindowsAp
  • MATLAB机器人工具箱使用

    MATLAB机器人工具箱 一 前言 在开始做机器人仿真之前 我了解了一系列机器人仿真软件 包括Matlab Webots Gazebo V rep Adams Simbad Morse等 的适用场景 使用方法等资料 决定从最经典的Matla
  • 程序设计之C语言判断满足条件的三位数

    6 6 判断满足条件的三位数 15 分 本题要求实现一个函数 统计给定区间内的三位数中有两位数字相同的完全平方数 如144 676 的个数 函数接口定义 int search int n 其中传入的参数int n是一个三位数的正整数 最高位
  • 超实用的自动化测试平台推荐

    什么是平台 平台就是一种用来实现某种功能的体系 包括各种不同的元素 架构 流程 标准 机制和工具等 而软件测试平台是为客户打造的集高效率 低成本等特性于一身的软件工作空间 它不仅可以大幅缩短软件产品的测试周期 还可以提升产品品质 同时还能充
  • Centos7安装Mysql

    1 添加Mysql Yum Repository rpm Uvh https dev mysql com get mysql80 community release el7 3 noarch rpm 然后查看Mysql包 yum list
  • 如何在 Java 中将 InputStream 读取/转换为字符串?

    问题描述 如果您有一个 java io InputStream 对象 您应该如何处理该对象并生成一个 String 假设我有一个包含文本数据的 InputStream 并且我想将其转换为 String 例如 我可以将其写入日志文件 获取 I
  • 线上排查问题大全

    CPU 一般来讲我们首先会排查cpu方面的问题 cpu异常往往还是比较好定位的 原因包括业务逻辑问题 死循环 频繁gc以及上下文切换过多 而最常见的往往是业务逻辑 或者框架逻辑 导致的 可以使用jstack来分析对应的堆栈情况 使用jsta
  • Vue 3 状态管理进阶:使用 Pinia 构建可扩展的应用程序

    Vue 3 状态管理进阶 使用 Pinia 构建可扩展的应用程序 前言 1 Pinia 简介 2 安装和配置 Pinia 3 创建和使用 Pinia Store 4 在组件中使用 Pinia Store 5 在模板中使用 Pinia Sto
  • JavaWeb通过前端向Mysql数据库中插入数据问题

    作为入门小白 记录下因为基础不扎实而踩得坑 在写注册界面时 需要利用web界面输入数据 idea操作向数据库插入数据 首先确定了数据库正常 tomcat正常运行 sql语句正常 在idea中测试业务层也能正常向数据库中插入数据 但是在web
  • 构造器注入导致的循环依赖问题及解决方案

    构造器注入导致的循环依赖问题及解决方案 目录 概述 实现思路分析 循环依赖 问题 解决方案 方式二 相关工具如下 分析 小结 参考资料和推荐阅读 LD is tigger forever CG are not brothers foreve
  • [疯狂Java]NIO.2:walkFileTree、FileVisitor(遍历文件/目录)

    1 遍历文件和目录 FileVisitor 1 在旧版本中遍历文件系统只能通过递归的方法来实现 但是这种方法不仅消耗资源大而且效率低 2 NIO 2的Files工具类提供了一个静态工具方法walkFileTree来高效并优雅地遍历文件系统
  • 七十五.二分查找的递归实现 —— JAVA

    编写递归代码是最重要的有以下三点 递归总有一个最简单的情况 方法的第一条语句总是一个包含 return的条件语句 递归调用总是尝试解决一个规模更小的子问题 这样递归才能收敛到最简单的情况 递归调用的父问题和尝试解决的子问题之间不应该有交集
  • 伪代码书写规范

    伪代码 Pseudocode 是一种算法描述语言 使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言 Pascal C Java etc 实现 因此 伪代码必须结构清晰 代码简单 可读性好 并且类似自然语言 介于自然语言与编程