2011-05-13 194 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输出和之间的一些步骤)或一系列数学运算。

所以一个算法将是一系列允许从某个地方到另一个地方的步骤(从你家到你的工作使用地铁也是一种算法)。

对于第二个问题:编程语言有两种大类型(我正在简化),“编译”类型和“交互”类型,以及后者中有交互式或脚本语言。另外,一般来说,脚本语言被认为是高级脚本语言:你可以用几行代码完成强大的事情,这些脚本一起构成一个脚本。

当然一些脚本语言也可以编译....