body, table{font-family: 微软雅黑}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}

有限循环  DO  ...   LOOP
 
     先在   DO   之前指明循环终值和循环初值,把需要重复执行的词放在  DO  和   LOOP   之间。
      循环中 循环终值 叫做"循环限"( Limit ),循环初值 叫做"循环下标" ( Index )。因此有限循环的一般格式:  Limit  Index  DO ……  LOOP
//循环下标和循环限可取的范围 -32768 ~ +32767
LOOP每次循环都是 +1 ; 可以在 I 操作的时候和数据栈中的数据做操作

循环中的    IF   条件
  循环语句中的循环下标可作为 IF 语句的条件,这时你可以使某些操作在循环中的某个特定时刻执行。

嵌套循环
一个 DO ... LOOP  循环中嵌入另外一个  DO ... LOOP  循环
一个 DO 循环嵌套另外一 DO 循环
//注意,IJ  ,J 表示的是外层循环下标,I 表示的是内存循环下标  
J 表示表中每个数占据的位置,U.R 表示打印无符号数,向右对齐。

+LOOP
设置不让循环每次只+1;
:  PENTAJUMPS      50   0   DO   I   .   5   + LOOP ;    //每次下标加5
: FALLING      -10   0   DO   I   .   -1   +LOOP ;  
+LOOP  的增量可以来自任何地方,只要执行到  +LOOP  的时候数据处于栈顶。
定义循环的时候可以不用给出循环上下限和步长;
:  INC-CONT      DO   I   .   DUP   +LOOP  DROP;
也可以在循环过程中每次改变循环步长
:  DOUBLING      32767   1   DO   I   .   I   +LOOP ;
注意: DO ... LOOP  循环至少执行一次,这两个词都是转义命令,因此只有在定义内部才能被执行。
tips:如何清除堆栈?   如果栈中无意存放了许多无用数据,可以让FORTH解释一个不存在的词,这时候文本解释程序将执行词 ABORT ,从而清除两栈;
如果步长是负数,那么循环可以遍历的范围就是 [上限,下限 ];相反,如果步长是正数,循环范围就就是 [ 下限,上限);



不定循环
有循环上限的循环叫做有限循环。不定循环将无限重复或直到某一事件发生为止。
BEGIN ... UNTIL    循环重复执行或到某一条件为“真”时结束。当执行UNTIL时,当堆栈顶为假,就返回到BEGIN;
用法:BEGIN     xxx   f   UNTIL ;   表示重复执行XXX ,直到 f 标志为真,如果为假就一直执行;
BEGIN   XXX   f   WHILE   YYY   REPEAT    只要 YYY 为真就重复执行 XXX 否则结束循环。
BEGIN XXX AGAIN ;     AGAIN 和 REPEAT 总是返回到 BEGIN 。
这几个循环都和IF类似,xxx代表一段代码,不单单只一个词;f 表示一个逻辑操作,就像 0< 什么的。UNTIL 后面可以执行其他的操作。

不定的有限循环
如果要在循环中,尽管循环下标没有达到循环限,但当某种条件状态发生变化时便要求退出循环。
LEAVE , 这个词能够使循环执行下一个 LOOP 或 +LOOP 时立即退出。循环中遇到 LEAVE 的时候就会让循环下标等于循环限,下次执行 LOOP 时就会终止循环。
//我用的版本的 FORTH 中是   CLEARSCREEN   , QUIT  是清除返回堆栈,设置解释状态,接受从当前输入设备来的新输入。eg :   :  100STARS      CLEARSCREEN  100  0  DO  STAR  LOOP ;   

PC/FORTH 循环的更多相关文章

  1. phpcms基础循环

    lists循环{pc:content action="lists" catid="2" order="id DESC" num=" ...

  2. PHPCMS V9标签循环嵌套调用数据的方法

    PHPCMS V9的标签制作以灵活见长,可以自由DIY出个性的数据调用,对于制作有风格有创意的网站模板很好用,今天就介绍一个标签循环嵌套方法,可以实现对PC标签循环调用,代码如下: 在此文件里/php ...

  3. PHPCMS快速建站系列之标签循环嵌套

    标签循环嵌套方法,可以实现对PC标签循环调用,代码如下: 在此文件里/phpcms/lib/classes/template_cache.class.php 里的 template_parse 方法里 ...

  4. phpcms如何嵌套循环

    PHPCMS V9的标签制作以灵活见长,可以自由DIY出个性的数据调用,对于制作有风格有创意的网站模板很好用,今天就介绍一个标签循环嵌套方法,可以实现对PC标签循环调用,代码如下: 在此文件里/php ...

  5. java字符串详解

    一.String 类的定义 public final class String implements java.io.Serializable, Comparable<String>, C ...

  6. 使用 iscroll 实现焦点图无限循环

    现在大家应该都看到过焦点图轮播的效果,这个效果是什么样我就不截图了.昨天做练习,练习要求是使用iscroll实现焦点图的无限循环滚动,并且当手指触摸焦点图后,停止焦点图的循环滚动.第一次接触iscro ...

  7. xv6课本翻译之——附录A Pc的硬件

    Appendix A 附录A PC hardware Pc的硬件 This appendix describes personal computer (PC) hardware, the platfo ...

  8. pygame开发PC端微信打飞机游戏

    pygame开发PC端微信打飞机游戏 一.项目简介 1. 介绍 本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件gam ...

  9. 重磅来袭,水木PC客户端全面改版,欢迎使用!

    2016-11-04   下载 最新更新            1.优化帖子中回文内容的显示,采用相比正文较小的字体,以及置灰处理,突出正文.           2.可配置是否隐藏帖子中的IP和修改 ...

随机推荐

  1. Android DatePickerDialog 使用方法

    (一)在Android 4.0以上系统的某些手机(如本人的测试机红米Note(系统4.4.4),以及模拟器(系统4.0)),使用如下代码创建时间选择器时,页面效果如图: Calendar cal = ...

  2. jmap -histo pid 输出的[C [B [I [S 的含义

    JMAP 输出 其中: [C is a char[][S is a short[][I is a int[][B is a byte[][[I is a int[][]

  3. centos7:mysql-5.7.23安装(二进制安装)

    mysql有二进制码安装,和源码编译安装(mysql5.5使用cmake安装,mysql5.7需要安装boost依赖安装),因为boost依赖安装麻烦,所以用二进制码安装 MySql 5.7.23安装 ...

  4. LeetCode--429--N叉树的层序遍历

    问题描述: 给定一个N叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 ...

  5. sgu 191 Exhibition

    题意:开始只有某一展台(设为A),有2种操作.1.A展台上放B产品(或者B展台放A产品).2.A展台左边1位放B展台,左边2位放A产品.给出最终产品的排列,问能否实现. 考虑最后一个用2操作的展台,因 ...

  6. android -------- Android Studio调试运行时ADB not responding

    最近有我朋友问我一个android studio的调试运行问题,我记得以前也是遇到过得,所以 来写一下    ADB not responding.If you'd like to retry, th ...

  7. es的分词器analyzer

    analyzer   分词器使用的两个情形:  1,Index time analysis.  创建或者更新文档时,会对文档进行分词2,Search time analysis.  查询时,对查询语句 ...

  8. java XML(可扩展标记语言)

    XML 是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言,传输数据而不是显示数据,可以自定义标签,具有自我描述性是一种通用的数据交换格 ...

  9. bootstrap fileinput组件的使用

    组件的下载地址为:https://github.com/kartik-v/bootstrap-fileinput 比较详细的介绍可参看:http://www.jq22.com/jquery-info5 ...

  10. Leetcode 868. 二进制间距

    868. 二进制间距  显示英文描述 我的提交返回竞赛   用户通过次数201 用户尝试次数220 通过次数207 提交次数396 题目难度Easy 给定一个正整数 N,找到并返回 N 的二进制表示中 ...