不像字符和汉字表示方法有统一的国际标准,图像的表示方法比较杂乱,还未形成统一的国际标准。目前图像的表示方法主要有两大类:位图和矢量图。对于黑白图像,像素点值为0表示白色,像素点值为1表示黑色。造成位图方法表示的图像放大失真的原因是,该方法用像素点的集合表示图像,当图像放大时,像素点间的空隙就被等比例的放大,从而造成失真。矢量图是用直线和弧线的集合表示图像的。......
2023-11-18
在第1章和本章前两节中,我们在表示算法时使用了几种不同的表示方法,这也就是说,一个相同含义的算法可以有几种不同的表示方法。概括来说,算法主要有三种表示形式,即文字形式、伪码形式和程序设计语言形式。
1.文字形式
算法的步骤可以用文字形式来表示。求解两个整数的最大公约数的文字形式的算法重述如下:
(1)令M为两个整数中的较大者,N为两个整数中的较小者;
(2)用M除以N,令R为M除以N的余数;
(3)若R不等于0,则令M等于N,N等于R,返回步骤(2)继续;若R等于0,则N中的数值就是两个整数的最大公约数。
文字形式的算法主要用在人类之间传递思想和智能。当把算法用于人类和计算机之间传递智能时,文字形式算法的主要缺点是表示方法不规范,不同的人描述的相同的算法在用词和语句上有很大差异。显然,文字形式的算法很难让计算机来理解和执行。
2.伪码形式
算法的步骤可以用6.2节讨论的基本语句格式来构成。由于6.2节讨论的基本语句不是计算机能直接理解和执行的程序语句,而是一种仿程序语句的形式,所以也称作伪码。这样的算法表示方法称作算法的伪码形式。求解两个整数的最大公约数的伪码形式的算法如下:
PROCEDURE CommDivisor(m,n)
{
IF(m<n)THEN
{
ASIGN temp m
ASIGN m n
ASIGN n temp
}
ASIGN r m%n
WHILE(r!=0)DO
{
ASIGN m n
ASIGN n r
ASIGN r m % n
}
}
由于伪码规定了特定符号的含义和固定的语句格式,所以伪码形式的算法结构非常固定。虽然伪码形式的算法只能用在人类之间传递思想和智能,但是,由于伪码的每个基本语句和任何计算机高级语言的语句格式都非常接近,所以,可以很方便地把伪码形式的算法转变为计算机可以直接理解和执行的任何计算机高级语言的程序。
另外,对比伪码形式的算法和下面程序形式的算法,可以发现,伪码形式的算法更加简洁,伪码形式的算法不需要考虑程序实现所要求的细节描述。伪码形式的算法主要用在人类之间传递思想和智能。(www.chuimin.cn)
3.程序设计语言形式
在第1章我们就定义过,程序是用程序设计语言表示出来的算法,或者说,程序是处理特定问题的计算机可识别的步骤集合。因此,算法也可以用某种计算机程序设计语言来表示,这称为算法的程序形式。求解两个整数的最大公约数的C语言函数(C语言中的函数相当于伪码中的过程)如下:
int CommDivisor(int m,int n)
{
int temp,r;
if(m<n)
{
temp=m;
m=n;
n=temp;
}
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return r;
}
对比求解两个整数的最大公约数算法的伪码形式和C语言程序形式,可以发现,其差别主要有以下三点:
(1)在C语言程序中,所有变量在第一次出现时,前边都增加了符号int,这称为变量定义。在所有高级语言中,变量定义是指给变量分配一个具体大小的存储单元空间。在上述的例子中,语句“int temp,r”表示给变量temp和变量r的每一个变量分配大小为4个字节的存储单元空间。例中,参数m和参数n也是变量,也需要在使用前进行定义,即在使用前分配具体的存储单元空间,这里,参数m和参数n前面增加的符号“int”,表示给参数m和参数n分配的存储空间大小为4个字节。另外,过程名(即C语言的函数名)也是变量,所以,函数名CommDivisor前也增加了符号“int”,表示给函数名CommDivisor分配的存储空间大小为4个字节。
(2)在C语言程序中,赋值语句采用了更为简单的表示形式。例如,C语言程序中的语句“temp=m;”就表示伪码形式算法的语句“ASIGN temp m”。
(3)在C语言程序中,每条语句结束后都增加了语句的结束标记符号“;”。
(4)在C语言程序的最后一行,增加了一条“return r;”语句,该语句是C语言程序实现过程的数据传送所必须的。
上述C语言程序中增加的部分,都属于把算法转换为程序时要考虑的“细节”。这是因为,程序是要让计算机具体运行的,如果没有上述“细节”,计算机就无法运行程序。例如,如果C语言程序中不定义变量temp,计算机就无法知道变量temp需要分配多大的存储单元空间,该变量是需要占用4个字节呢,还是需要占用8个字节?我们在第2章讨论过,存储单元的字节数不同,该存储单元存放的数据(即这里的变量)的数值范围就不同。4个字节的存储单元可表示的数据的数值范围为﹣32768~+32767,如果要处理的数据大于这个范围,就要定义占用更大存储单元空间的变量。又例如,计算机在执行每条语句前,需要首先“识别”出每条语句,C语言程序中每条语句结束后增加的语句结束标记符号“;”,表示当前的一条语句到此结束,这样的标识就方便了计算机对程序语句的“识别”。C语言程序中增加的上述内容,都属于前面所说的程序语言要考虑的细节。
有关计算机导论的文章
不像字符和汉字表示方法有统一的国际标准,图像的表示方法比较杂乱,还未形成统一的国际标准。目前图像的表示方法主要有两大类:位图和矢量图。对于黑白图像,像素点值为0表示白色,像素点值为1表示黑色。造成位图方法表示的图像放大失真的原因是,该方法用像素点的集合表示图像,当图像放大时,像素点间的空隙就被等比例的放大,从而造成失真。矢量图是用直线和弧线的集合表示图像的。......
2023-11-18
图1-4 不同主体之间的智能传递要让人利用算法把智能传递给机器,需要做到的是:机器必须能正确地理解并正确地执行算法。在如图1-1所示的冯·诺依曼体系结构计算机中,程序是计算机能理解的求解某一特定问题的算法,人利用输入部件把程序输入到计算机,输入的程序存储到计算机的存储部件,运行程序需要的数据也存储到计算机的存储部件,处理部件根据程序一步一步地执行,程序运行的结果通过输出部件输出给人。......
2023-11-18
在第1章我们简单介绍了算法的概念,并指出:软件的主体是程序,程序的核心是算法。算法既是人类之间交流智能的工具,也是人和机器之间交流智能的工具。算法的可终止性是指算法应能在有限的操作步骤后结束。我们仍以第1章给出的求解两个整数的最大公约数问题的算法为例,来讨论算法的定义问题。所以,上述方法不是一个算法。计算机求解任何问题,必须在一个有限的时间段内得到处理结果,算法的可终止性保证了这一点。......
2023-11-18
分析各种典型问题的算法,可以归纳整理出算法中的基本操作集合。一般来说,算法中的基本操作包含如下几种类型:数据传送:从某个内存单元中取出数值放于某个寄存器中;把某个寄存器中的数值放于某个内存单元中。例如,计算两个二进制数乘积pro=x*y问题,图3-1给出了两个二进制数相乘的方法,根据图3-1所示的方法,可以编写出用基本操作表示的处理该问题的算法。......
2023-11-18
算法的表示有很多种,常见的有自然语言表示法、流程图表示法、N-S图表示法、伪代码表示法等。其中流程图是比较直观的,也是最为常用的一种表示方法。图3.30圆角矩形3.31矩形图3.32菱形图3.33带方向的箭头利用上述基本符号可以表示出结构化程序设计的三大基本结构,即顺序、分支和循环。用流程图表示如图3.37所示。......
2023-10-22
“黑客”最初是用来称呼那些试图测试计算机程序能力极限的计算机用户。但后来当某些人尝试非法访问计算机系统时,新闻媒体就用“黑客”来称呼那些试图未经授权对计算机系统进行访问的人。“黑客”的行为是错误的,一些对计算机知识有着深入了解的人,为了展示自己的才能,实现自我价值,或被利益诱惑而成为“黑客”,并对一些政府部门或企业的内网进行攻击,这些都是违法的行为。......
2023-11-25
我们在7.2节中曾指出,过程是算法的基本元素,过程可以使一个求解大问题的算法分解为若干个求解子问题算法的有机合成。过程的参数是局部变量。如图7-6所示,过程调用时,实参拷贝数值6给虚参,若过程运行时虚参的数值改变为8,则过程结束后主程序中实参的数值还是原来的6,而不是8。......
2023-11-18
相关推荐