伪代码约定

news/2024/7/8 4:48:20 标签: pascal, 算法, 语言, object, c, 图形
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">

crosoft YaHei; font-size:14px">伪代码(Pseudocode)是一种color:#3333ff">class="tags" href="/tags/SuanFa.html" title=算法>算法描述class="tags" href="/tags/YuYan.html" title=语言>语言。使用伪代码的目的是为了使被描述的class="tags" href="/tags/SuanFa.html" title=算法>算法可以容易地以任何一种编程class="tags" href="/tags/YuYan.html" title=语言>语言(Pascal,C, Java, etc)实现。因此࿰c;伪代码必须结构清晰࿰c;代码简单࿰c;可读性好࿰c;并且类似自然class="tags" href="/tags/YuYan.html" title=语言>语言。

下面介绍一种类Pascalclass="tags" href="/tags/YuYan.html" title=语言>语言的伪代码的语法规则。

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

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的嵌套来表示࿰c;

  line 1
  line 2
  begin
    sub line 1
    sub line 2
    begin
      sub sub line 1
      sub sub line2          
    end;
    sub line 3
  end;
  line 3
在C中这种关系用{ 和 } 的嵌套来表示࿰c;

  line 1
  line 2
  {
     sub line 1
     sub line 2
     {
        sub sub line 1
        sub sub line 2
      }
     sub line 3
  }
  line 3
  
在伪代码中࿰c;通常用连续的数字或字母来标示同一即模块中的连续语句࿰c;有时也可省略标号。 
例如:

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

选择语句用if-then-else来表示࿰c;并且这种if-then-else可以嵌套࿰c;与Pascal中的if-then-else没有什么区别。 
例如: 

  if (Condition1) 
    then [ Block 1 ]
    else if (Condition2) 
           then [ Block2 ]
           else [ Block3 ]  

循环语句有三种:while循环、repeat-until循环和for循环࿰c;其语法均与Pascal类似࿰c;只是用缩进代替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 ← 0to 10 
               1.do z ← ( z + x * y ) / 100
               2.    repeat 
                       1.y ← y + 1
                       2.z ← z - y
               3.    untilz < 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;    

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

A[1…j]表示含元素A[1], A[2], … ,A[j]的子数组;

复合数据用对象(Object)来表示࿰c;对象由属性(attribute)和域(field)构成。域的存取是由域名后接由方括号括住的对象名表示。 
例如:

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

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

有时࿰c;一个指针不指向任何对象࿰c;这时我们赋给他nil。

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

例如: 

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

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


a)    伪代码表示的class="tags" href="/tags/SuanFa.html" title=算法>算法
用传统的流程图和N-S图表示class="tags" href="/tags/SuanFa.html" title=算法>算法直观易懂࿰c;但画起来比较费事࿰c;在设计一个class="tags" href="/tags/SuanFa.html" title=算法>算法时࿰c;可能要反复修改࿰c;而修改流程图是比较麻烦的。因此࿰c;流程图适宜于表示一个class="tags" href="/tags/SuanFa.html" title=算法>算法࿰c;但在设计class="tags" href="/tags/SuanFa.html" title=算法>算法过程中使用不是很理想的(尤其是当class="tags" href="/tags/SuanFa.html" title=算法>算法比较复杂、需要反复修改时)。为了设计class="tags" href="/tags/SuanFa.html" title=算法>算法时方便࿰c;常用一种称为伪代码的工具。伪代码是用介于自然class="tags" href="/tags/YuYan.html" title=语言>语言和计算机class="tags" href="/tags/YuYan.html" title=语言>语言之间的文字和符号来描述class="tags" href="/tags/SuanFa.html" title=算法>算法。它如同一篇文章一样࿰c;自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号࿰c;因此书写方便、格式紧凑࿰c;易懂也便于向计算机class="tags" href="/tags/YuYan.html" title=语言>语言class="tags" href="/tags/SuanFa.html" title=算法>算法(即程序)过渡。
可以用英文、汉字、中英文混合表示class="tags" href="/tags/SuanFa.html" title=算法>算法࿰c;以便于书写和阅读为原则。用伪代码写class="tags" href="/tags/SuanFa.html" title=算法>算法并无固定的、严格的语法规则࿰c;只要把意思表达清楚࿰c;并且书写的格式要写成清晰易读的形式。

cle>

http://www.niftyadmin.cn/n/1597421.html

相关文章

基本数据类型的值为什么不会变?

引入 今天在看String与StringBuffer的区别的时候&#xff0c;关于它们传参的时候&#xff0c;String在当参数的时候会当基本数据类型使用&#xff0c;值不会改变。详情参考&#xff1a;https://editor.csdn.net/md/?articleId105599755 怎么理解String类型的值不会变 形参随…

qt手动编译程序

如果要使用qt手动编译写好的程序&#xff0c;需要进行下面的操作&#xff1a; 1.安装mingw32程序&#xff0c;当然现在的qtcreator程序中都已经包含了mingw32-make程序&#xff0c;只需要将他的路径添加到环境变量中即可&#xff0c;例如我的路径为D:\Qt\qtcreator-2.2.1\ming…

java简单的内存分析

Java的堆,栈,方法区 参考博客&#xff1a;https://blog.csdn.net/danny_idea/article/details/81137306 写点看得懂的

Source Insight 使用说明

Source Insight 使用说明&#xff08;整理&#xff09; Source Insight&#xff08;深入原代码&#xff09;实质上是一个支持多种开发语言&#xff08;java,c ,c等等&#xff09;的编辑器&#xff0c;只不过由于其查找、定位、彩色显示等功能的强大&#xff0c;而被我们当成源代…

springmvc之mvc

目录MVCmvc执行流程javaweb 时代ssh 时代ssm 时代前后端分离时代后端前端交互 Api 框架 和 通信框架MVC mvc执行流程 M&#xff1a;model(指的是数据访问层) 业务逻辑保存数据的状态 V: view(视图层) 显示页面 C: Controller(指的是控制层) 调用业务逻辑控制页面跳转取得表单数…

qt数据库操作

先来看看qt支持的数据库类型&#xff1a; Driver Type Description QDB2 IBM DB2 QIBASE Borland InterBase Driver QMYSQL MySQL Driver QOCI Oracle Call Interface Driver QODBC ODBC Driver (includes Microsoft SQL Server) QPSQL PostgreSQL Driver QSQLITE …

创建一个早期的javaweb项目

目录创建一个module项目添加依赖添加web模块Servlet 继承 HttpServlet配置 web.xmljsp运行测试创建一个module项目 添加依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</…

linux文件传输

ftpftp 命令使用文件传输协议&#xff08;File Transfer Protocol, FTP&#xff09;在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。 FTP 协议允许数据在不同文件系统的主机之间传输。尽管这个协议在传输数据上提供了高适应性&#xff0c;但是它并没有尝试去保…