太极语言解释运行程序设计(序)

太极语言解释运行程序设计(序)

快速入门:

把下面的例子程序保存成tj1.u,tj2.u……文件,
输入
taiji tj1.u
taiji tj2.u
……
就可以运行了。

1.
show("太极");//显示“太极”


2.
int a;//定义整数变量 a,(其实是分配内存单元)
a=9+2; //给 a 赋值 ; 
show(a);//显示a;

3.
// 从//到行末是注释,会被编译程序直接略过,不用输入,/*与*/之间的也是注释
 int a;//定义整数变量 a,(其实是分配内存单元)
 a=9; //给 a 赋值 ; 
 int b;
 b=10;  //定义b,赋值10;  
 b=a+2;  //现在b变成11了。
 a=a+b; 
 //a原来的值+b的值,把结果赋给a;a现在是21;
 a=a+1;//现在a是几?
 
 a=a*b-a-b; //现在呢,
 //*为乘,/为除,%为除法取余数。

 

4.
 int a;
 a=2;
biaohao :;//标号名,任意取
 a=a+1;
 show(a);
 goto biaohao;//goto 会控制程序流程跳转到指定处。

这个程序会无限循环下去的,按ctrl+c可以终止。

改动一下:
 int a;
 a=2;
biaohao :;//标号名,任意取
 a=a+1;
 show(a);
 goto(a<10) biaohao;//符合条件才跳转

----------------------------------------------------
变量名取名规则:首字母是汉字或英文名或下划线_,后面可以是汉字或英文名或下划线_或数字。
如果首字母是数字,则被认为是数字而不是变量名。
以后的函数名,类名……也是按这个规则。
-----------------------------------------------------

5.

 int i;
 i=0; 
 /*注释:当(i<10)时循环做{}中的。直到i>=10为止。
 每循环一次后都看一下是否符合条件。*/
 while(i<10) 
 {
  show(i);
  i=i+1;
 };

 格式:while(条件)
       {
   ....
    }
 想一下:如何 用goto实现相同的功能?


6.

 //求0+1+2+3+……+10;
 int i;
 i=0;
 int j;j=0;//定义j,保存结果。
 while(i<=10) //循环到10;
 {
  j=j+i;//j 依次加上递增1的i。
  show(j);
  i=i+1;
 };


想一想:
(1)求:1+2+3+.................+100
 2+4+6+.............+100
 1*1+2*2+3*3+...........+100*100

(2)用goto 实现此程序

7.指针
/*
电脑内存单元一个个的排好,
每个单元所排的顺序数叫这个单元的地址,
单元存储的内容叫单元的值。

单元存储什么数字都可以,
那么当然可以存其他单元的地址了(也是数)
这就叫指针,因为其值指向另一个单元。
*/

数据定义的方式是
类型 变量名;
于是

 int a;a=8;
 int *  pa;// 定义int 型的指针 pa;把int * 整体看成类型。
 pa=&a;//pa 指向a ,pa单元的值为a的地址。
// 比如可能是24000010;这与系统有关。
//定义一个变量时要给这个变量分配一定的内存单元。
 *pa=9;//取pa所指向的内存单元,其值赋为9;
 
 int * *   ppa;//把int * * 整体看成类型。
 ppa=&pa;//ppa是指向指针pa的指针
 **ppa=7;
 show(a);
 show(*pa);
 show(**ppa);

 

8.函数
int leijiahe(int n)// 返回值类型 函数名(参数)
{//求0+1+……+n;
 int i=0;
 int j=0;
 while(i<=n)
 {
  j=j+i;
  i=i+1;
 }
 return j;//返回j的值;
}
leijiahe(20);//函数调用。20传递给leijiahe的参数n;调用函数。
int k;
k=leijiahe(100);//返回值赋给k;


用函数提高了代码的可重用性。
格式:
返回值类型 函数名(参数)
{
 .....
}


int swap(int *p1;int *p2)
{//交换p1指向的和p2指向的内存单元的值。
 int i;
 i=*p1;// i赋p1所指向的值。保存之。
 
 *p1=*p2;//p1所指赋p2所指
 *p2=i;
}

int a;
a=2;
int b;
b=3;
swap(&a;&b);
show(a);
show(b);

下面是一个不能完成交换功能的函数。
swap(int a,int b)
{
 int i;
 i=a;
 a=b;
 b=i;
}
int x;x=2;int y;y=3;
swap(x,y);

每个变量都对应一个内存单元,包括函数的参数;每个独立区域中的变量互不牵扯,重名也不要紧,不相干。
比如上面的swap(x,y);x的值传给swap函数母体中的参数a,y传给b;那么怎么交换a,b都不干x,y的事呀。
后面的那个,即使同名也还是不行。
执行进入函数体后,才为此函数体中的变量分配内存单元。
函数返回后,其变量全被释放。

 

取得键盘输入字符:
 char a;
 a=getkey();//按一键后返回键值。
 show(a);

9.判断
char a;
a=getkey();
 if(a=='y')
 { show("yes"); }
 elseif(a=='n')
 { show("no"); }
 elseif(a=='?')
 { show("why");} 
 else
 {
  if(a=='k')
  {show("aaaaaaaaaaa");}
  else
  { show("bu zhi dao"); }
 }
show(a);

试验一下就懂了。
这很象人说的话呀。就是话的意思。
字符用单引号引起来,字符串用双引号。


char a;
a=getkey();
switch(a)
{
case ('y')
{ show("yes");}
case ('n')
{ show("no");}
default
{ show("???");}
}

若按了除y,n以外的其他键,则执行default(缺省)

10.循环控制:
int a;
a=2;
while(a<10)
{
 show(a);
 if(a==8)
 { continue;}
 a=a+1;
}
continue是跳到循环开始。

int a;
a=2;
while(a<10)
{
 show(a);
 if(a==8)
 { break;}
 a=a+1;
}
break是跳出循环


11.数组
int [10]a;//定义数组a,含10个int型变量
a[0]=1;//a的第0个变量赋值为1.
int i;i=0;
a[i]=i*i;
show(a[i]);
while(i<10)
{
 i=i+1; 
 a[i]=i*i;//给第i个变量赋值
 show(a[i]); 
}

 

12.递归
int leijiahe(int n)
{
 if(n==1)
 {return 1;}
 int r;
 r=leijiahe(n-1)+n;
 
 return r;
}
int k;
k=leijiahe(5);
show(k);


13.字符串
int strlen(char * str)
{
 int i;
 i=0;
 show(str[i]);
 while(str[i]!=0)
 {
  show(str[i]);
  i=i+1;
 }
 return i;
}
char * str;
str="aaaaaaaaaaa";
int k;
k=strlen(str);
show(k);

14.类
type student
{
 char * name; //定义成员变量
 int age;
 int heigh;
};

student chenwei;定义类实例
chenwei.name="chen wei";给成员变量赋值
chenwei.age=25;
student * pcw;//指针
pcw=&chen;
pcw->heigh=170;//通过指针访问成员变量

show(chenwei.name);
show(chenwei.heigh)

 

type chain
{
 int a;
 chain * p;
};
chain c1;
chain c2;
c1.p=&c2;
c2.p=&c1;
c1.a=9;
c2.a=8;
show(c1.a);
show(c1.p->p->p->a);

 

------------------------------
解释器系统特性:

1.
int a;
int b;
int c;
runcode(a=1;b=2;c=3);//运行()中的代码
c=c+a;
show(c);

2.
int a;
int b;
int c;
char * str="a=1;b=2;c=3";
runstr(str);//运行()中字符指针变量指向的代码
c=c+a;
show(a);
show(c);
str[2]=str[2]+1;//动态更改代码。
show(a);


------------------------

在这篇序中我简单的说了一下,我想应该是很容易入门的。你学习C/C++的知识与代码积累都可以用在太极语言上。

我的 csdn blog:
http://blog.csdn.net/universee
目前太极语言解释器还未经过严格测试,如果你发现了问题,可以去我的blog上回复告诉我。
         2006.4.22夜

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值