`

伪代码的使用 Usage of Pseudocode

阅读更多
伪代码的使用 Usage of Pseudocode

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

下面介绍一种类Pascal语言的伪代码的语法规则。
伪代码的语法规则

   1. 在伪代码中,每一条指令占一行(else if 例外,),指令后不跟任何符号(Pascal和C中语句要以分号结尾);
   2. 书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的 begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进;

      例如:

       line 1
       line 2
         sub line 1
         sub line 2
           sub sub line 1
      sub sub line 2
         sub line 3
       line 3
      

      而在Pascal中这种关系用begin和end的嵌套来表示,

        line 1
        line 2
        begin
          sub line 1
          sub line 2
          begin
            sub sub line 1
            sub sub line 2  
          end;
          sub line 3
        end;
        line 3

      在C中这种关系用{ 和 } 的嵌套来表示,

        line 1
        line 2
        {
           sub line 1
      sub line 2
      {
          sub sub line 1
      sub sub line 2
        }
      sub line 3
        }
        line 3
       

   3. 在伪代码中,通常用连续的数字或字母来标示同一即模块中的连续语句,有时也可省略标号。

      例如:

        1. line 1
        2. line 2
           a. sub line 1
           b. sub line 2
             1. sub sub line 1
             2. sub sub line 2
           c. sub line 3
        3. line 3

   4. 符号△后的内容表示注释;
   5. 在伪代码中,变量名和保留字不区分大小写,这一点和Pascal相同,与C或C++不同;
   6. 在伪代码中,变量不需声明,但变量局部于特定过程,不能不加显示的说明就使用全局变量;
   7. 赋值语句用符号←表示,x←exp表示将exp的值赋给x,其中x是一个变量,exp是一个与x同类型的变量或表达式(该表达式的结果与x同类型);多重赋值i←j←e是将表达式e的值赋给变量i和j,这种表示与j←e和i←e等价。

      例如:

         x←y
         x←20*(y+1)
         x←y←30

      以上语句用Pascal分别表示为:

        x := y;
        x := 20*(y+1);
        x := 30; y := 30;

      以上语句用C分别表示为:

        x = y;
        x = 20*(y+1);
        x = y = 30;

   8. 选择语句用if-then-else来表示,并且这种if-then-else可以嵌套,与Pascal中的if-then-else没有什么区别。

      例如:

        if (Condition1)
          then [ Block 1 ]
          else if (Condition2)
                 then [ Block 2 ]
                 else [ Block 3 ] 

   9. 循环语句有三种:while循环、repeat-until循环和for循环,其语法均与Pascal类似,只是用缩进代替begin - end;

      例如:

        1. x ← 0
        2. y ← 0
        3. z ← 0
        4. while x < N
             1. do x ← x + 1
             2.    y ← x + y
             3.    for t ← 0 to 10
                     1. do z ← ( z + x * y ) / 100
                     2.    repeat
                             1. y ← y + 1
                             2. z ← z - y
                     3.    until z < 0
             4.    z ← x * y
        5. y ← y / 2

      上述语句用Pascal来描述是:

         x := 0;
         y := 0;
         z := 0;
         while x < N do
         begin
           x := x + 1;
           y := x + y;
           for t := 0 to 10 do
           begin
             z := ( z + x * y ) / 100;
             repeat
               y := y + 1;
               z := z - y;
             until z < 0;
           end;
           z := x * y;
         end;
         y := y / 2;

      上述语句用C或C++来描述是:

        x = y = z = 0;
        while( z < N )
        {
          x ++;
          y += x;
          for( t = 0; t < 10; t++ )
          {
             z = ( z + x * y ) / 100;
             do {
                y ++;
                z -= y;
             } while( z >= 0 );
          }
          z = x * y;
        }
        y /= 2;

  10. 数组元素的存取有数组名后跟“[下标]”表示。例如A[j]指示数组A的第j个元素。符号“ …”用来指示数组中值的范围。

      例如:

       A[1…j]表示含元素A[1], A[2], … , A[j]的子数组;
  11. 复合数据用对象(Object)来表示,对象由属性(attribute)和域(field)构成。域的存取是由域名后接由方括号括住的对象名表示。

      例如:

      数组可被看作是一个对象,其属性有length,表示其中元素的个数,则length[A]就表示数组A中的元素的个数。在表示数组元素和对象属性时都要用方括号,一般来说从上下文可以看出其含义。

      用于表示一个数组或对象的变量被看作是指向表示数组或对象的数据的一个指针。对于某个对象x的所有域f,赋值y←x就使f[y]=f[x],更进一步,若有f[x]←3,则不仅有f[x]=3,同时有f[y]=3,换言之,在赋值y←x后,x和y指向同一个对象。

      有时,一个指针不指向任何对象,这时我们赋给他nil。
  12. 函数和过程语法与Pascal类似。

      函数值利用 “return (函数返回值)” 语句来返回,调用方法与Pascal类似;过程用 “call 过程名”语句来调用;

      例如:

         1. x ← t + 10
         2. y ← sin(x)
         3. call CalValue(x,y)

      参数用按值传递方式传给一个过程:被调用过程接受参数的一份副本,若他对某个参数赋值,则这种变化对发出调用的过程是不可见的。当传递一个对象时,只是拷贝指向该对象的指针,而不拷贝其各个域。
分享到:
评论

相关推荐

    伪代码的使用规范 Usage of Pseudocode(清晰文字版pdf)

    ### 伪代码的使用规范详解 #### 一、伪代码定义及目的 **伪代码**是一种介于自然语言和编程语言之间的算法描述语言。它的主要目的是为了方便算法的设计与理解,使得描述的算法能更容易地转换成实际的编程语言如...

    伪代码的使用 (txt)

    介绍伪代码的使用 Usage of Pseudocode

    伪代码的使用规范_Usage_of_Pseudocode_202109051415461.docx

    伪代码(Pseudocode)是一种算法描述语言,旨在以结构清晰、代码简单、可读性好的方式描述算法,使其可以容易地以任何一种编程语言(如Pascal、C、Java等)实现。 语法规则: 1. 每一条指令占一行,指令后不跟任何...

    Atom-language-pseudocode,一个atom包,它帮助软件工程师编写伪代码,以简单、干净的方式解释他们的算法。.zip

    Atom-language-pseudocode 是一个专为 Atom 文本编辑器设计的插件,旨在方便软件工程师以伪代码的形式清晰地表达他们的算法。这个插件的核心功能是提供了一个强大的环境,允许开发者在编写实际代码之前,先用简洁...

    伪代码生成器PseudoCodeTool

    适用于java/C/C++等代码,源代码为java代码通过运行代码将代码输入程序框中D盘自动生成伪代码文件PseudoCode.txt。(注意:由于是简单代码只可适用于糊弄老师,实验报告等,不可用于学术研究)。

    docsify-pseudocode:在 docsify 中渲染伪代码的插件

    使用它,你可以轻松地在 markdown 文档中编写类似 Latex 的算法包的伪代码。特征所有功能都来自pseudocode.js。 直观的语法: docsify-pseudocode 采用 LaTeX 风格的输入,支持来自 LaTeX 算法包的算法结构。 无论...

    latex Algorithms伪代码规范

    文章内容还列举了具体的例子,通过这些例子,可以更好地了解如何使用LaTeX来编写伪代码和算法描述。这些实例对于理解LaTeX算法伪代码规范来说是十分有益的,通过学习和模仿这些例子,用户可以快速掌握如何在自己的...

    pseudocode.js:Web的漂亮伪代码

    pseudocode.js是一个JavaScript库,可以很好地将伪代码类型化为HTML。 直观的语法: Pseudocode.js采用LaTeX样式的输入,该输入支持LaTeX的算法包中的算法构造。 无论有没有LaTeX经验,用户都应该觉得语法很直观。...

    Pseudocode_to_Python:这是python的伪代码

    - 在将伪代码转换为Python时,要确保遵循Python的语法规则,比如缩进表示代码块,而不是使用花括号。 - Python是动态类型的,所以在处理数据时,无需预先声明变量类型。 - Python支持多种编程范式,如面向对象、...

    This repository contains the pseudocode(pdf) of various al.zip

    标题中的“This repository contains the pseudocode(pdf) of various al.zip”表明这是一个包含各种算法伪代码的PDF文件集合,被压缩成一个名为“al.zip”的文件。描述中的信息简洁,同样指出这个资源是关于不同...

    generic-pseudocode-vscode:通用伪代码语法突出显示的简单扩展

    常见的伪代码关键字的多个变体都具有语法突出显示功能,使您可以使用自己的样式,而不必将其限制为特定格式。 目录: 特征 语法高亮 以下各项具有语法突出显示。 同义词用空格分隔。 关键字: output print e.g. ...

    PseudoCode_Anagrams_

    标题 "PseudoCode_Anagrams_" 暗示我们即将探讨的是使用伪代码解决与字母异位词(Anagrams)相关的编程问题。字母异位词是指两个单词由相同的字符组成,但字符顺序不同。例如,“listen”和“silent”就是一对字母异...

    caie-pseudocode:剑桥伪代码规范的解释器

    CAIE伪代码解释器 剑桥伪代码规范的解释器。 尚未准备好使用。 开发几乎每天都在和上进行流式传输 使用,安装cargo和rust编译器,并运行cargo run example_src2.txt 项目完成后,安装和使用将变得更加容易

    regular-impressions:使用类似于伪代码的语言编写正则表达式

    使用类伪代码语言编写正则表达式的简单工具。 演示: : 例子: 目录 如何使用 建议命令每行写一个命令,除非命令是嵌套的。 符号和标点符号不需要转义。 使用换行符连接多个命令。 制表符和空格可用于缩进以...

    STK8312_PseudoCode.rar_STK8312 Sensors_stk8312

    在提供的"STK8312_PseudoCode.rar"压缩包中,包含了一个名为"STK8312_PseudoCode.c"的源代码文件,这很可能是用来驱动STK8312传感器的伪代码或示例代码。此代码可能涵盖了以下关键知识点: 1. **初始化配置**:在...

    psudo:伪代码可视化

    我在bubble.txt 中使用伪代码编写了一个冒泡排序算法,它将由psudo.py 加载。 测试web前端部分:在浏览器中打开psudo/visualize/release1.1/PseudoCode.html(Chrome除外,因为它不允许访问本地文件。推荐Firefox...

    Introduction to Programming in C++ flowchart and pseudocode.pdf

    ### 关于C++编程中的流程图与伪代码 在计算机科学与编程领域中,了解算法的设计、流程图的绘制及伪代码的编写是至关重要的基础技能。本文将基于提供的文件信息,详细介绍流程图的标准画法及其与伪代码的关系,并...

    算法伪代码:此存储库包含面试准备和竞争编码所需的各种算法和数据结构的伪代码(pdf)

    这些问题通常涵盖实际工作中的面试题,使用这些伪代码可以帮助用户理解并解决LeetCode上的问题。 4. **面试准备**:面试过程中,候选人常常被要求在白板上编写或解释算法的伪代码,以展示其解决问题的能力。这个...

    simple_shell_pseudocode

    伪代码中使用了`build_argv`函数来完成这一任务。 #### `build_argv`函数详解: - **初始化变量**:首先定义了几个变量用于存储和管理命令及其参数。 - `index` 用来记录当前处理到第几个参数。 - `argv` 是一个...

    PPO

    PPO(Proximal Policy Optimization)是一种在强化学习中广泛使用的策略优化算法,由OpenAI在2017年的研究论文中提出。它在保证策略更新的稳定性的同时,最大化了每一步的策略改进。PPO算法在处理连续动作空间的复杂...

Global site tag (gtag.js) - Google Analytics