伪代码的表示方式多样,可以用自然语言也可以用类程序语言。这里是关于
类pascal语言的伪代码。
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;
伪码:
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
上述伪代码对比就可以知道伪码的层次结构不清晰,比如说倒数第二句可以属于最外
层的,也可以是属于while循环的。如果用缩进则很清晰:
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
通过上述缩进,我们就可以看出倒数第二句含义混杂,如果不用缩进有没有其他方法呢
其实语句的顺序通过上下已经表明, 所以数字可以用来提示层次结构
伪码:
1. x ← 0
1. y ← 0
1. z ← 0
1. while x < N
2. do x ← x + 1
2. y ← x + y
2. for t ← 0 to 10
3. do z ← ( z + x * y ) / 100
3. repeat
4. y ← y + 1
4. z ← z - y
3. until z < 0
2. z ← x * y
1. y ← y / 2
其实,还是使用缩进能更清晰的表达语句的结构。
自然语言伪代码例子,把一下驾驶路线说明改写成伪代码的例子如下(来自网络):
自然语言:
从标有Main Street标志的大街出发向东,一直向前走,知道看到右边有一座教堂。
如果由于有建筑物而堵塞了道路,则右转到第15大街,向左转到Pine大街,然后
向右转到第16大街。否则,你可以仅向右转到第16大街。继续沿着第16大街走,向
左转到Destination路。沿着Destination路走5英里,右边有一座房子。其地址是
Destination路743号。
伪代码:
Begin going east on Main street;
Until (there is a church on the right)
{
Drive down Main;
}
If (street is blocked)
{
Turn(right, 15th street);
Turn(left, Pine street);
Turn(right, 16th street);
}
else
{
Turn(right, 16th street);
}
Turn(left, Destination Road);
For (5 iterations)
{
Drive straight for 1 mile;
}
Stop at 743 Destination Road;
每一条指令都被分解在自己的一行内,方向的控制逻辑被分解为控制结构。控制结构
将程序的执行流程由简单的顺序流程改变为比较复杂的但也更有用的流程。此外,给
汽车导向可能包括找到正确的街道,减速,打开转向灯,转动方向盘,最后在新的
街道上加速恢复到转弯前的速度。因为许多这样的动作对任何路段都是一样的,所以
可以把它们写成一个函数。函数包含一组参数作为输入,并且根据输入处理自己的一
组指令,然后返回原来调用它的地方。
比如改写“右转到第16大街”
自然语言:
右转到第16大街
伪代码:
Function Tuen(the_direction, the_street)
{
locate the_street;
slow down;
if(the_direction == right)
{
turn on the right blinker;
turn the steering wheel to the left;
}
speed back up
}