电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Visual-LISP-程序设计()第2章课件

36页
  • 卖家[上传人]:石磨
  • 文档编号:180246933
  • 上传时间:2021-04-18
  • 文档格式:PPT
  • 文档大小:128.50KB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Visual-LISP-程序设计()第2章,1,第2章 数据类型、表达式和函数,Visual-LISP-程序设计()第2章,2,AutoLISP的数据类型丰富,除了一般程序设计语言具有的整型、实型、字符串等类型之外,还有表、函数、文件描述符、AutoCAD选择集、AutoCAD图元名、VLA对象、函数分页表和外部函数等数据类型。 2.1 数据类型 1. 整型(INT) 整型即整数,整数由数字和正负号组成,正号可省略。整数为32位带符号的数字,其范围从2147483648到2147483647。 2. 实型(REAL) 实型数是带小数点的数。在-1和1之间的实数必须以0开头,例如:.5是错误的,应该写成0.5。实数用双精度的浮点数表示,并且至少有14位有效位数的精度。注意,Visual LISP不显示所有的有效位,Visual-LISP-程序设计()第2章,3,3. 字符串(STR) 字符串又被称为字符常数,它是由双引号括起来的字符序列。字符串中字母的大、小写和空格符都是有意义的。 字符串中字符的个数(不包括双引号)称为字符串的长度。字符串的最大长度为100,如果超过100,第100个字

      2、符后面的字符将是无效的。字符串可以是空的,即,称为空串,其长度为0。 任何字符都可以用nnn的格式表示,其中反斜杠“”是ASCII码的前导标识字符,nnn是该字符八进制的ASCII码。例如,字符串ABCD也可表示为101102123104。一些常用的控制字符,象反斜杠、双引号,除了可以用 nnn的格式表示之外,还可以用“”转义字符的格式表示为“”、“”等特殊字符,见下表,Visual-LISP-程序设计()第2章,4,表2-1常用控制字符的表示方法 控制字符 用“”为前导字符 用“”为前导的ASCII码表示 反斜杠“” 134 双引号“” 042 Esc键 e 033 换行 n 012 回车键 r 015 Tab键 t 011 注意,其中的字符e,n,r,t必须小写,Visual-LISP-程序设计()第2章,5,4. 表(LIST) 表以左圆括号开始,以配对的右圆括号结束,表可以是空的,可以有若干个元素;元素可以是简单的,也可以是复杂的,还可以是其它的表。例如:(+ 1 2 3)、(sin (* 0.5 pi)、(A B)、(A B) C (C D)、(0 LINE)、(10 1.5

      3、 2.6 0.0)、()都是合法的表。 表中元素的个数称为表的长度。例如,表(+ 1 2 3)的长度为4、表(sin (* 0.5 pi)的长度为2、表(A B) C (C D)的长度为3、表()的长度为0。 用表可以方便地构造出复杂的数据结构,例如,(1.5 3.6)可以表示为一个X等于1.5、Y等于3.6的二维点,(2.5 2.0 1.0)可以表示为一个X等于2.5、Y等于2.0、Z等于1.0的三维点,Visual-LISP-程序设计()第2章,6,5. 函数(SUBS) 函数相当于子程序或过程。函数分为内部函数和外部函数。AutoLISP提供的或用AutoLISP定义的函数为内部函数。用ADS、ADSRX或ARX定义的函数为外部函数。例如sin 、cos、sqrt为内部函数。 运算符在AutoLISP里属于函数,例如“”、“”、“*”、“/”分别称之为加、减、乘、除函数,“”分别称之为小于、小于等于和大于函数。 其它计算机语言里的子程序、过程、程序流程控制的关字,在AutoLISP里也属于函数,例如“if”、 “while”分别称之为条件和条件循环函数,Visual-LISP-程

      4、序设计()第2章,7,6. 文件描述符(FILE) 文件描述符是AutoLISP赋于被打开文件的标识号,它类似于文件指针。下面的例子是以“读”的方式打开文件my,并将该文件的描述符赋予符号f1。 (setq f1 (open my r) 返回 7. 图元名(ENAME) 图元名是AutoCAD为图形对象指定的16进制的数字标识。 AutoLISP通过该标识,找到该图形对象在图形数据库中的位置,以便对其进行访问或编辑,Visual-LISP-程序设计()第2章,8,8. 选择集(PICKSET) 选择集是一个或多个图形对象命名的集合。可以通过AutoLISP程序建立选择集、向指定的选择集添加或移去图形对象,通过选择集可以对其内指定的成员进行访问或编辑。 9. VLA 对象 VLA 对象是ActiveX 应用程序的主要组成部分。 不仅直线、圆弧、多义线和圆等都被称为VLA对象,图层、组、块、视图、视口、图形的模型空间、图纸空间、线型和尺寸标注样式等也被称为VLA对象,甚至连AutoCAD本身也被认为是VLA对象,Visual-LISP-程序设计()第2章,9,2.2 变量 2.2.1 符号

      5、 符号(SYMBOL)可以理解为标识,用来作为变量、函数的名字。它的命名规则是不能只含数字,可以由下列字符以外的任何可打印的字符所组成: “(”、“)”、“”、“”、“”、“;” 例如,a1、b2 、c_3是合法的符号,(a、)b、.c、4、5是非法的符号。注意:1、2、3、!4、/5、1a、3c、-d、+e、b-2、c*3也是合法的符号,这是与多数计算机语言的不同之处,Visual-LISP-程序设计()第2章,10,在AutoLISP中,符号的大小写等价,符号的长度没有限制,且所有的字符都是有意义的。 如果一个符号的长度不超过6,就用节点本身来存储;如果符号的长度超过6,这样的符号就不能用节点来存储,而是在节点中存放一个指向实际存储符号名的指针。这将会多占用存储空间,且减慢了执行速度。因此,符号的长度最好不要超过6,Visual-LISP-程序设计()第2章,11,2.2.2 变量的数据类型 AutoLISP变量属于符号,是指存储静态数据的符号。 数据类型是变量的重要的特征,因为它关系到存放变量值的存储空间的大小。多数的计算机语言都在为变量赋值前对变量做显式或隐式的说明。AutoL

      6、ISP无须对变量做事先的类型说明,变量被赋予值的类型即为变量的类型。 用setq函数对变量赋值,例如,(setq a 5),赋值后的结果是:变量a是整型的,因为5是整型的;同样的原因,(setq b 2.5)之后, b是实型的,(setq c ABC)之后,c就是字符串类型的,Visual-LISP-程序设计()第2章,12,在程序运行过程中,同一变量在不同的时刻可以被赋予不同类型的值,因此在程序运行过程中,变量的数据类型是可以被改变的。 例如,在一个程序里有以下两行: (setq a 5)当前的变量a是整型的。 (setq a ABC) 当前的变量a是字符串类型的。 用type函数了解变量的类型,例如,(type a ) 返回INT,显示变量a是整型的;(type b)返回REAL,显示变量b是实型的,(type c) 返回STR,显示变量c是字符串类型的,Visual-LISP-程序设计()第2章,13,2.2.3 为变量赋值 用setq函数为变量赋值,其格式如下: (setq 变量1 值1变量2 值2 . . .) 例如: Command:(setq x 1.5 y 20 p C

      7、enter) 返回“Center” 除了为变量x、y、p赋值外,还返回最后一个表达式的结果“Center”。如果上述表达式还有外层表达式,那么,将把该表达式的返回值“Center”赋给外层表达式的变量。例如, Command:(setq v(setq x 1.5 y 20 p Center) ) 返回“Center” 该表达式同样为变量x、y、p赋值,并将内层表达式返回的结果“Center”赋给变量v,最后返回外层表达式的结果“Center”。 没有被赋值的变量属于无定义的变量,Visual-LISP-程序设计()第2章,14,2.2.4 预定义的符号 AutoLISP对变量nil、T、Pause和Pi进行了预定义,用户可以在编写AutoLISP程序时直接使用。 (1) nil 如果变量没有被赋值,它的值为nil。nil与空和0不同的是,它既不是空串,也不是0值,它表示尚无定义。引用未被赋值的变量是错误的。例如,变量x尚未被赋值,(+ 1 x)就会出现error: bad argument type(坏的参数类型错)。 将nil赋给某一有定义的变量,其结果是:取消该变量的定义,并释放其

      8、所占存储空间。 nil作为逻辑变量的值,表示不成立,相当于其他程序设计语言的false,Visual-LISP-程序设计()第2章,15,2)T T为常量,它作为逻辑变量的值,表示成立,相当于其他程序设计语言的true。 (3)PAUSE PAUSE与command函数配合使用,用于暂停,等候用户输入。 (4)PI PI被定义为常量 。 每个变量都占用一些内存空间。为了节省存储空间,可重复使用变量名,或者将不再使用的变量设为nil,以便释放该变量所占的内存空间,Visual-LISP-程序设计()第2章,16,必须注意,一般的编程语言不允许将内部函数名或流程控制的关键字作为变量名,而AutoLISP没有这样的限制。因此,程序中定义的符号名称不要与系统定义的函数名和预定义的变量名相同,否则,后面的定义将取代已有的定义,从而引起混乱。例如,sin是正弦函数,可是在执行表达式(setq sin 1)之后,sin不再是正弦函数,而是一个值为1的整型变量,Visual-LISP-程序设计()第2章,17,2.2.5 显示变量的值 要想在AutoCAD命令提示区显示变量的值,必须在变量名前添加惊叹

      9、号!。例如了解前面已赋值的变量x、v的值,操作如下: 命令:!x 1.5 命令:!v Center 命令:!z nil(假定变量z尚未被定义,Visual-LISP-程序设计()第2章,18,2.2.6 在交互方式下将变量的值传递给AutoCAD 在变量前加一个感叹号“!”,即可将表达式的值传递给AutoCAD。例如: 命令:(setq p (20 10) r 5) 命令: circle Specify center point for circle or 3P/2P/Ttr(tan tan radius):! p Specify radius of circle or Diameter::!r 即可画出圆心的坐标为(20,10)半径为5的圆,R,Visual-LISP-程序设计()第2章,19,2.3 表达式 AutoLISP处理的对象是符号表达式(简称表达式)。表达式相当于其他编程语言中程序的语句。 2.3.1 表达式的构成 表达式是由原子或表构成的。原子可细分为数原子、串原子和符号原子。数或串原子的值是数或串本身,符号原子的值是赋给该符号的值。例如:5、12.5、“ABC是单个原

      10、子构成的表达式。 多数情况下,表达式以表的形式存在,其格式如下: (函数名 变元) 变元的数量可能为0,也可能任意多个,这取决于具体函数。每个参数还可以是一个表达式。 表达式形式的表,左圆括号之后的第一个元素必须是函数名,Visual-LISP-程序设计()第2章,20,2.3.2 表达式的前缀表示法 大多数计算机语言的表达式采用中缀表示法,即运算符在操作数中间。如,x=2.5,y=1+2。 AutoLISP采用前缀表示法,将函数名放在所有操作数之前。如,(setq x 2.5),(setq y(+ 1 2)。 若将x=(a+b)*c 改写为AutoLISP表达式,则为: (setq x(* (+ a b) c) 前缀表示法使得运算和函数调用的形式得到了统一。前面提到,在AutoLISP语言里,运算符也属于函数,Visual-LISP-程序设计()第2章,21,2.3.3 表达式的求值过程 在LISP语言中,函数之间不存在是否优先的关系,运算的先后顺序只能通过表的层次来实现,最里层的表最先被求值,把求值的结果返回给外层表,直至求值完毕。 例如,表达式(setq x(* (+ a b)

      《Visual-LISP-程序设计()第2章课件》由会员石磨分享,可在线阅读,更多相关《Visual-LISP-程序设计()第2章课件》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.