太極語言解釋運行程式設計(序)
快速入門:
把下面的例子程式儲存成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夜