计算机程序的构造和解释(SICP):Lisp求值模

计算机程序的构造和解释(SICP):Lisp求值模,第1张

程序语言应该是能够组织有关计算过程思想的框架。包含三种机制:

基本表达形式(精灵,基本的规则)

组合的方法

抽象的方法

表达式:基本数据和基本过程表达式

组合式,用括号包含表达式

命名: 计算对象的别名 (define size 2)

环境:维持符号与特定的值的存储

组合式求值:是一个递归的过程,对于一个组合式,先求其左边的值,对于其左边的组合式,也是同样地规则,先求其左边的值。

复合过程:用别名代替过程 (define (square x) ( x x))

Lisp采用应用序求值,也就是先求出每个过程的值才得到结果,而不是先展开再求值

条件表达式,这个是求绝对值

可以做。

无论是何种软件,其本质都是二进制语言,即供机器识别的机器代码。

而C语言与可以与任意的机器语言语句相对应,也就是任何二进制语言,均可以由C语言实现。

从这个角度来说,C语言可以实现一切功能或软件,同样包括人工智能。

实际上,由于人工智能的运算量很大,在执行的时候需要很高的执行效率,目前主流的人工智能都是由C语言或者C++语言编写的。

打开Visual Lisp编辑器有两种方式:

1AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"---->"Visual

Lisp编辑器"。(”AutoLisp"---->"导入应用"这个命令是用来加载AutoLisp脚本的)

2AutoCAD2009及之后的版本,在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

打开Visual Lisp编辑器之后新建一个文件,并另存为Lisp源文件。然后就可以在编辑窗口里输你的代码了。

代码编辑并调试确认无错误后,就可以在AutoCAD中使用了。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

左边的按钮表示立即运行当前代码,如果有错误就会提示出来,右边按钮是切换到CAD窗口。

如果不需要再修改代码了还可以将代码进行编译以加速运行。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

根据向导一步步进行编译很简单的。

如果在其他CAD图形文件中需使用当前代码文件或编译后的文件,就按上面第一点的,或者在命令行输入”ap",打开导入应用的对话框。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

1是用来临时导入的,2是将程序加入CAD的启动组。

lisp解决重复性劳动问题

在设计和绘图中,你觉得都是简单粗暴的重复性工作,就可以考虑用AutoLisp来代替你做。

首先,AutoLisp也是一个程序设计语言,属于Common

Lisp的子集,同时加入了很多自定义的函数。即然是一个程序语言,就是其他编程语言能做的,它也能做,只是他的lisp语法跟一般的语言有些差另就是了,但是如果是一个没有VB、C#、C++(对应于AutoCAD的开发方式分别是VBA,net,ObjectArx)的基础的人来说,AutoLisp是很简单而且特别容易上手的一个语言。

作为一个编程语言,AutoLisp能做的很多:

1、扩充AutoCAD的原有命令。任何带有C:前缀的AutoLisp函数,在AutoCAD中都可以像"line" "circle"

"dim"等命令一样使用。

2、编写代码直接根据国标图库要求来绘出一些常用图库标准件什么的,或是代替人查找各种设计手册中的相关数据并继续使用。

3、进行参数化绘图,对于一些不特别复杂的系统,提供窄范围、大深度的专业设计自动化或者辅助系统,如发动机装配工具设计、纵使机主轴箱设计等。

4、DWG文件本质上是AutoCAD在图形生成和编辑中使用的数据库,可以将一些非图形信息的数据(粗糙度,高度,厚度。。)等存于DWG文件中作

为非图形数据库文件,然后利用Lisp程序进行读取等。

各种AutoCAD二次开发方式的比较:

由于 net语言和c++的学习曲线比较陡峭,所以简单易学的AutoLisp经常与VBA进行对比。(当然如果有VB的基础还是直接学VBA好了。)

AutoLISP擅长建立新命令和产生已有命令的连接。VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和 *** 作传送信息,然而VBA部件包括数据和对复杂情况的各种有效 *** 作,这就是问题变得复杂的地方。

不过,在AutoCAD2000开始,Autodesk公司就在AutoCAD中加入了Visual

Lisp编辑器,引入了许多新函数扩充AutoLisp的功能,并支持ActiveX对象的访问方式,所以使用AutoLisp来与Word\Excel等程序进行交互也是变简单了。

另外,在创建带GUI图形界面的应用程序上,VBA当然是所见即所得的了,而AutoLisp是通过DCL文件来实现GUI的(语法很简单,但做不到所见即所得)这点是AutoLisp略逊一筹了。原文出自[

CAD自学网 ] 转载请保留原文链接:>

#include<stdioh>

#include<stringh>

int isLetter(char c){

    if(c>= 'A' && c<= 'Z') return 1;

    if(c>= 'a' && c<= 'z') return 1;

    return 0;

}

int ID(char s ,int m,int n){

    int i;

    int cnt = 0;

    for(i=m;i<=n;i++){

        if(s[i] == '(') cnt ++;

        if(s[i] == ',') {

                if(cnt == 1) return i;

        }

        if(s[i] == ')') cnt --;

    }

    return i;

}

int isS(char s,int m,int n){

    if(m == n && isLetter(s[m])) return 1;

    int k = ID(s,m,n);

    if( s[m] == '(' 

        && s[n] == ')' 

        && k > m 

        && k < n

        && isS(s,m+1,k-1)

        && isS(s,k+1,n-1)

    ) return 1;

    else return 0;

}

int main(){

    char s[4096];

    while(gets(s)){

        if(isS(s,0,strlen(s)-1)) printf("%s是S表达式\n",s);

        else printf( "%s不是S表达式\n",s); 

    }

}

以上就是关于计算机程序的构造和解释(SICP):Lisp求值模全部的内容,包括:计算机程序的构造和解释(SICP):Lisp求值模、C语言能做人工智能吗、如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10112751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存