7种Scheme含条件语句基础教程
当前位置:以往代写 > 其他教程 >7种Scheme含条件语句基础教程
2019-06-14

7种Scheme含条件语句基础教程

7种Scheme含条件语句基础教程

  Scheme 含条件语句。最基本的结构就是if,还有when和 unless,cond, case,and和or这些条件语句,详情请看下文。

7种Scheme含条件语句基础教程_Scheme教程_课课家

  (if测试条件 then-分支 else-分支)

  如果测试条件运算的结果是真(即,非#f的任何其它值),”then”分支将会被运行(即满足条件时的运行分支)。否则,”else”分支会被运行。”else”分支是可选的。

  (definep80) (if (>p70) 'safe 'unsafe)=>safe (if (<p90) branch=”” “else??=”” ;no=”” ?low-pressure)=””>low-pressure

  为了方便,Scheme还提供了一些其它的条件结构语句。它们可以被定义成宏来扩充if表达式。

  1. when和 unless

  当我们只需要一个基本条件语句分支时(”then”分支或”else”分支),使用when和unless会更方便。(这里的示例已经更换,原示例)

  (definea10)

  (defineb20)

  (when (< a b)

  (display“a是”)

  (displaya)

  (display“b是”)

  (displayb)

  (display“a大于b” ) )

  先判断a是否小于b,这个条件成立时会输出5条信息。

  使用if实现相同的程序会是这样:

  (definea10)

  (defineb20)

  (if (< a b)

  (begin

  (display“a是”)

  (displaya)

  (display“b是”)

  (displayb)

  (display“a大于b” ) ))

  注意when的分支是一个隐式的begin语句结构,而如果if的分支有多个代码结构时,需要一个显式的begin代码结构。

  同样的功能还可以像下面这样用unless来写(unless和when的意思正好相反):

  (definea10)

  (defineb20)

  (unless (>= a b)

  (display“a是”)

  (displaya)

  (display“b是”)

  (displayb)

  (display“a大于b” ) )

  并不是所有的Scheme环境都提供when和unless。如果你的Scheme中没有,你可以用宏来自定义出when和unless(宏,见第8章)。

  2. case

  当cond结构的每个测试条件是一个测试条件的分支条件时,可以缩减为一个case表达式。

  (definec #\\c)

  (casec ((#\\a) 1) ((#\\b) 2) ((#\\c) 3) (else4))=>3

  分支头值是 #\\c 的分支将被执行。

  3. cond

  cond结构在表示多重if表达式时很方便,多重if结构除了最后一个else分支以外的其余分支都会包含一个新的if条件。因此,

  (if (char

  这样的结构都可以使用cond来这样写:

  (cond ((char

  cond就是这样的一种多分支条件结构。每个从句都包含一个判断条件和一个相关的操作。第一个判断成立的从句将会引发它相关的操作执行。如果任何一个分支的条件判断都不成立则最后一个else分支将会执行(else分支语句是可选的)。

  cond的分支操作都是begins结构。

  4. and和or

  Scheme提供了对boolean值进行逻辑与(”and”)和逻辑或(”or”)运算的结构。(我们已经见过了布尔类型的求反运算not过程。)

  当所有子结构的值都是真时,and的返回值是真,实际上,and的运行结果是最后一个子结构的值。如果任何一个子结构的值都是假,则返回#f。

  (and12) =>2(and#f1) =>#f

  而or会返回它第一个为值为真的子结构的结果。如果所有的子结构的值都为假,or则返回#f。

  (or12) =>1(or#f1) =>1

  and和or都是从左向右运算。当某个子结构可以决定最终结果时,and和or会忽略剩余的子结构。

  (and1#fexpression-guaranteed-to-cause-error)=>#f (or1#fexpression-guaranteed-to-cause-error)=>1

  以上内容就是课课家为大家提供的七种Scheme含条件语句基础教程的详细内容,如果各位朋友还有其他关于Scheme的相关问题,请查阅本站的“编程语言”板块.

    关键字:

在线提交作业