2011-05-13 196 views
1

我聽到術語算法經常使用,並且被我在本網站上看到的上下文所迷惑,有時候我想我會試着澄清我的理解。算法和腳本定義

要我的算法是一些數學的過程中,如本

uint UPDC16(unsigned char a, uint crc) 
{ 
    uint b,p; 
    a^=crc; crc=(crc>>8)|(a<<8); p=a^(a>>4); p^=(p>>2); b=a; a>>=1; 
    if((p^(p>>1))&1) { crc^=0x0001; a|=0x80; } 
    if(b & 1) crc^=0x0040; b=a; a^=(crc>>8); 
    if(a & 1) crc^=0x0080; a>>=1; 
    if(b & 0x80) a|=0x80; 
    crc = (crc&0x00ff)|(a<<8); 
    return crc; 
} 

在哪裏,因爲我認爲,因爲這通過巢老人進行的動作(旋轉圖像)如果statments,而不是一個工科數學函數它不是一個算法,但是一個函數。

for (int block_x = 0; block_x < 2048; block_x+=8) 
{ 
    for (int block_y = 0; blocky_y < 2048; block_y+=8) 
    { 
     // this is the inner-loop that processes a block 
     // of 8x8 pixels. 
     for (int x= 0; x<8; x++) 
     for (int y=0; y<8; y++) 
      dest[x+block_x][y+block_y] = src[y+block_y][x+block_x] 
    } 
} 

我已經使用了它,但我正在尋找一個有經驗的編碼解釋。任何人都可以幫我解釋算法嗎?

另一件令我困擾的事情是我看過「腳本」這個詞幾次,而且不明白。我聽說有像lua這樣的腳本語言(可能是錯誤的)。

他們的意思是使用這些語言還是一種「腳本」編碼的特殊方法?

我主要使用c/C++,如果這有什麼不同。

+3

您提供的示例是算法的*實現*。算法最好用文字描述,也許是僞代碼。腳本是用腳本語言編寫的程序。 C和C++都不能被描述爲'腳本語言'。 – pavium 2011-05-13 10:48:31

回答

0

對於你的第一個問題:算法可以是一個想法,如「計算你需要的數組的所有元素的總和.....」,一個函數(有一個輸入和un輸出和之間的一些步驟)或一系列數學運算。

所以一個算法將是一系列允許從某個地方到另一個地方的步驟(從你家到你的工作使用地鐵也是一種算法)。

對於第二個問題:編程語言有兩種大類型(我正在簡化),「編譯」類型和「交互」類型,以及後者中有交互式或腳本語言。另外,一般來說,腳本語言被認爲是高級腳本語言:你可以用幾行代碼完成強大的事情,這些腳本一起構成一個腳本。

當然一些腳本語言也可以編譯....