太極語言解釋運行程式設計(序)

來源:互聯網
上載者:User

太極語言解釋運行程式設計(序)

快速入門:

把下面的例子程式儲存成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夜

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.