python伪代码的写法_伪代码的写法(转载)
伪代码(Pseudocode)是⼀种算法描述语⾔。使⽤伪代码的⽬的是为了使被描述的算法可以容易地以任何⼀种编程语⾔
(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似⾃然语⾔。 介于⾃然语⾔与编程语⾔之间。
它以编程语⾔的书写形式指明算法的职能。相⽐于程序语⾔(例如Java, C++,C, Dephi 等等)它更类似⾃然语⾔。它是半⾓式化、不标准的语⾔。我们可以将整个算法运⾏过程的结构⽤接近⾃然语⾔的形式(这⾥,你可以使⽤任何⼀种你熟悉的⽂字,中⽂,英⽂ 等等,关键是你把你程序的意思表达出来)描述出来. 使⽤伪代码, 可以帮助我们更好的表述算法, 不⽤拘泥于具体的实现.
⼈们在⽤不同的编程语⾔实现同⼀个算法时意识到,他们的实现(注意:这⾥是实现,不是功能)很不同。尤其是对于那些熟练于不同编程语⾔的程序员要理解⼀个(⽤其他编程语⾔编写的程序的)功能时可能很难,因为程序语⾔的形式限制了程序员对程序关键部分的理解。这样伪代码就应运⽽⽣了。
当考虑算法功能(⽽不是其语⾔实现)时,伪代码常常得到应⽤。计算机科学在教学中通常使⽤虚拟码,以使得所有的程序员都能理解。
综上,简单的说,让⼈便于理解的代码。不依赖于语⾔的,⽤来表⽰程序执⾏过程,⽽不⼀定能编译运⾏的代码。在数据结构讲算法的时候⽤的很多。
语法规则
例如,类Pascal语⾔的伪代码的语法规则是: 在伪代码中,每⼀条指令占⼀⾏(else if,例外)。指令后不跟任何符号(Pascal和C中语句要以分号结尾)。书写上的“缩进”表⽰程序中的分⽀程序结构。这种缩进风格也适⽤于if-then-else语句。⽤缩进取代传统Pascal中的begin 和end语句来表⽰程序的块结构可以⼤⼤提⾼代码的清晰性;同⼀模块的语句有相同的缩进量,次⼀级模块的语句相对与其⽗级模块的语句缩进。
算法的伪代码语⾔在某些⽅⾯可能显得不太正规,但是给我们描述算法提供了很多⽅便,并且可以使我们忽略算法实现中很多⿇烦的细节。通常每个算法开始时都要描述它的输⼊和输出,⽽且算法中的每⼀⾏都给编上号码,在解释算法的过程中会经常使⽤算法步骤中的⾏号来指代算法的步骤。算法的伪代码描述形式上并不是⾮常严格,其主要特性和通常的规定如下:
1) 算法中出现的数组、变量可以是以下类型:整数、实数、字符、位串或指针。通常这些类型可以从算法的上下⽂来看是清楚的,并不需要额外加以说明。
2) 在算法中的某些指令或⼦任务可以⽤⽂字来叙述,例如,"设x是A中的最⼤项",这⾥A是⼀个数组;或者"将x插⼊L中",这⾥L是⼀个链表。这样做的⽬的是为了避免因那些与主要问题⽆关的细节使算法本⾝杂乱⽆章。
3) 算术表达式可以使⽤通常的算术运算符(+,-,*,/,以及表⽰幂的^)。逻辑表达式可以使⽤关系运算符=,≠,,≤和≥,以及逻辑运算符与(and),或(or),⾮(not)。
4) 赋值语句是如下形式的语句:a
这⾥a是变量、数组项,b是算术表达式、逻辑表达式或指针表达式。语句的含义是将b的值赋给a。
5) 若a和b都是变量、数组项,那么记号ab 表⽰a和b的内容进⾏交换。
6) goto语句具有形式
struction可数吗
goto label(goto标号)
它将导致转向具有指定标号的语句。
7) 条件语句有以下两种形式:
if c then s或者
if c then s
else s′
这⾥c是逻辑表达式,s和s′是单⼀的语句或者是被括在do和end之间的语句串。对于上述两种形式,假若c为真,则s被执⾏⼀次。假若c 为假,则在第⼀种形式中,if语句的执⾏就完成了,⽽在第⼆种形式中,执⾏s′。在所有的情况下,控制就进⾏到了下⼀个语句,除⾮在s 或s′中的goto语句使控制转向到其它地⽅。
8) 有两种循环指令:while和for。
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是变量,init、limit和incr都是算术表达式,⽽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) 算法中的注释被括在/* */之中。诸如read和output之类的各种输⼊或者输出也在需要时被⽤到。
伪代码实例
伪代码只是像流程图⼀样⽤在程序设计的初期,帮助写出程序流程。简单的程序⼀般都不⽤写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以⽤来作为以后测试,维护的基础,还可⽤来与他⼈交流。但是,如果把全部的东西写下来必定可能会让费很多时间,那么这个时候可以采⽤伪代码⽅式。⽐如:
IF 九点以前 THEN
do 私⼈事务;
ELSE 9点到18点 THEN
⼯作;
ELSE
下班;
END IF
这样不但可以达到⽂档的效果,同时可以节约时间. 更重要的是,使结构⽐较清晰,表达⽅式更加直观.
下⾯介绍⼀种类Pascal语⾔的伪代码的语法规则。
在伪代码中,每⼀条指令占⼀⾏(else if 例外,),指令后不跟任何符号(Pascal和C中语句要以分号结尾);
书写上的“缩进”表⽰程序中的分⽀程序结构。这种缩进风格也适⽤于if-then-else语句。⽤缩进取代传统Pascal中的begin和end语句来表⽰程序的块结构可以⼤⼤提⾼代码的清晰性;同⼀模块的语句有相同的缩进量,次⼀级模块的语句相对与其⽗级模块的语句缩进;
在伪代码中,通常⽤连续的数字或字母来标⽰同⼀即模块中的连续语句,有时也可省略标号。
符号△后的内容表⽰注释;
在伪代码中,变量名和保留字不区分⼤⼩写,这⼀点和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
以上语句⽤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 * ypython基础代码写字
5. y ← y / 2
上述语句⽤C或C++来描述是:
x = y = z = 0;
while( z < N )
mysql8配置文件详解{
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)来表⽰,对象由属性(attribute)和域(field)构成。域的存取是由域名后接由⽅括号括住的对象名表⽰。
例如:
日本缩写英文字母jpa数组可被看作是⼀个对象,其属性有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。
函数和过程语法与Pascal类似。
函数值利⽤ “return (函数返回值)” 语句来返回,调⽤⽅法与Pascal类似;过程⽤ “call 过程名”语句来调⽤;
例如:
wxpython下载失败
1. x ← t + 10
2. y ← sin(x)
3. call CalValue(x,y)
参数⽤按值传递⽅式传给⼀个过程:被调⽤过程接受参数的⼀份副本,若他对某个参数赋值,则这种变化对发出调⽤的过程是不可见的。当传递⼀个对象时,只是拷贝指向该对象的指针,⽽不拷贝其各个域。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。