QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4319|回复: 1
打印 上一主题 下一主题

数学建模的基本方法(1)----算法中伪代码的使用伪代码的使用 Usage of Pseudocode

[复制链接]

19

主题

9

听众

1257

积分

新人进步奖

群组数学建模

群组数学趣味、游戏、IQ等

群组Mathematica研究小组

群组LINGO

群组趣味数学

跳转到指定楼层
1#
发表于 2009-2-19 21:55 |只看该作者 |倒序浏览
算法中伪代码的使用伪代码的使用 Usage of Pseudocode


——————————————————————————————————

算法中伪代码的使用 伪代码的使用 Usage of Pseudocode
伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C, Java, etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。
下面介绍一种类Pascal语言的伪代码的语法规则。
伪代码的语法规则
在伪代码中,每一条指令占一行(else if 例外,),指令后不跟任何符号(Pascal和C中语句要以分号结尾);
书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于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
在伪代码中,通常用连续的数字或字母来标示同一即模块中的连续语句,有时也可省略标号。
例如:
  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
符号△后的内容表示注释;
在伪代码中,变量名和保留字不区分大小写,这一点和Pascal相同,与C或C++不同;
在伪代码中,变量不需声明,但变量局部于特定过程,不能不加显示的说明就使用全局变量;
赋值语句用符号←表示,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;
选择语句用if-then-else来表示,并且这种if-then-else可以嵌套,与Pascal中的if-then-else没有什么区别。
例如:
  if (Condition1)
    then [ Block 1 ]
    else if (Condition2)
           then [ Block 2 ]
           else [ Block 3 ]
循环语句有三种: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;**
  }



本文来自山东大学数学建模网:http://mcm.sdu.edu.cn/Html/Skill/2006051701331825.html
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
ygshu 实名认证       

0

主题

4

听众

176

积分

群组数学建模

群组数模讨论——图论方面

群组中国矿业大学数学建模协会

群组数模应用

群组数学趣味、游戏、IQ等

2#
发表于 2009-9-16 11:18 |只看该作者
回复

使用道具 举报

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-6-29 03:03 , Processed in 0.665522 second(s), 45 queries .

回顶部