以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- [推荐]汉语编程中级教材第六章第三节《数组》 (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16441) |
-- 作者:秦汉昌 -- 发布时间:2008/12/26 21:32:00 -- [推荐]汉语编程中级教材第六章第三节《数组》 数组就是在内存中开辟的一组连续的存储单元,每个单元的存储内容可以是一个数或一个字符串。在汉语编程中一个数组的定义是:先用词“建词”定义一个变量,然后再用“字节空出”这个词来定义以变量为首地址开辟一个连续的存储空间。具体格式如下: 建词 <变量名称> 100 字节空出 这时就保留了100个字节的存储空间,而这些地址是以执行变量“<变量名称>”得到的地址为首地址顺序开辟的,所以只要知道“<变量名称>”的地址就可以计算出其它任何单元的地址。 只要知道保留单元的地址,至于这些保留单元的存放内容可以很方便的找到。由于这里是32位的程序设计语言,所以当我们要定义一个32位的数组,则应该用数组单元数(n)乘4再减4个“字节空出”才是我们要保留的空间,且每个单元是以4递增的;如果要建一个16位的数组则应该用数组单元数乘2减4个“字节空出”,每个单元以2递增;同样的道理,建立一个8位的数组则应该用数组单元减4个“字节空出”,其每个单元以1递增。 例如:我们要用符号“▓”打印一个图形“5”,如下所示:
▓▓▓▓ ▓ ▓ ▓▓▓▓ ▓ ▓ ▓▓▓▓ 这时我们就可以利用数组,先将数据按顺序放入数组中,在运行“单行显”之前从数组中读出相应的数放在数摞上,参与运算。 在程序设计时,我们先将图形用二进制表示出来,为“1”则输出符号,为“0”用空格代替(注:这里在表示二进制时,图形的右边为高位、左边为低位,如:图形的第二行用二进制表示应为“0001”而非“1000”)。然后,将二进制的数转换为十进制的数,按顺序放入数组中,在需要时,就依次读出来放在数摞上参与运算。 |
-- 作者:秦汉昌 -- 发布时间:2008/12/26 21:35:00 -- 程序内容: 变量: 地址 7 2 - 字节空出 ( 开辟一个7个字节存储单元的数组“地址”) 编 地址填数 15 8 8 15 1 1 15 ( 往数摞上放数 ) 7 0 循环 内环数 地址 + 字节写 ( 将数摞上的数依次放入数组中 ) 回环 。 编 判断输出 ( n --- ) 2 /余商 ( n除2的余数 n 除2的商 ) ↑↓ ( n 除2的商 n除2的余数 ) 就 显" ▓" 否则 2 个空格 然后 。 编 单行显 回车 4 0 循环 判断输出 回环 ♀ 。 编 单块显 地址填数 7 0 循环 内环数 地址 + 字节读 ( 将数组中的数依次读出来 ) 单行显 回环 。 |
-- 作者:秦汉昌 -- 发布时间:2008/12/26 21:35:00 -- 其实这个程序就体现了针对数据结构的一种算法。当然该程序如果不利用数组而用其它的方法也可以得到完全相同的结果,但数组减少了程序文本篇幅和提高了系统执行的速度。这正应了本章开头的一句话:“一个好的算法与相应的数据结构有着密切的联系,二者相辅相成”。其实所谓“字库”或“位图”与上述结构是基本相同的。 虽然上述建立数组的方法非常方便、灵活,但对于比较复杂的运算,尤其是科学计算,既有整数,又有浮点,还具有多维特征的数组,采用上述方法就显得比较麻烦。汉语编程中提供了标准的数组操作方式,类似其它高级语言的数组形式。 汉语编程标准数组的使用方法: X Y 建数组 <数组名> n x y 写入数组 <数组名> x y <数组名> n “X”,“Y” 分别为数组的行和列。“建数组”后面紧跟的是定义的数组名称,在以后的使用中可以直接使用<数组名>。n x y 写入数组 <数组名> 中n 是一个数(正数或实数)x y 是n所存放的具体行列位置。x y <数组名> n 表示当在程序中需要使用数组中的具体行列的数时可给出x y <数组名> 就可得到x y 行列的数。如: 2 2 建数组 二乘二数组 123 1 1写入数组 二乘二数组 1 1二乘二数组 显 123 123.45 2 2写入数组 二乘二数组 2 2二乘二数组 显 123.45 n 可以是实数或整数。 |
-- 作者:春光 -- 发布时间:2008/12/26 21:41:00 -- 计算机编程是计算现代天文历算的基础,支持楼主。 |
-- 作者:秦汉昌 -- 发布时间:2008/12/27 0:27:00 -- 上知天文,下知地理,是我们民族的一句很传统的话。比竟我们的母语是汉语,很多人难以利用以英语为基础的计算机语言来为他们的学习服务,包括学习天文地理知识。 |
-- 作者:秦汉昌 -- 发布时间:2008/12/28 0:58:00 -- 数组在汉语程中是一种数据类型,数组在汉语编程数据库中可以作为一个整体保存在某一库项下。 |
-- 作者:esnake -- 发布时间:2008/12/30 11:43:00 -- 汉语编程实在是有点费力不讨好,编程还是英语的速度快,执行效率高,汉语编程用的工具本身也是用英语编程工具开发的。那个易语言就是。 |
-- 作者:浪-淘-沙 -- 发布时间:2008/12/30 12:10:00 -- 从楼主的介绍中,我了解到汉编的一个特点,那就是所谓的词语学习功能. 每次编写一个新词语,下次编程时可以直接使用.不用再把这个词语的详细语句抄到新的程序中去. 但这或许有个缺点:那就是程序的交流性变差. 比如楼主编的词语在楼主家的电脑上是可执行的.到了我的电脑就不能执行了.为什么?因为我的电脑上的编译程序没有把楼主的词语学习进去.如果我要直接使用楼主的程序,我还得让我的电脑学习一次,记住楼主编写的一些新词语. 换句话说,从网上找到"汉编"源程序,不一定都可以通过自家的电脑进行编译.遇到新的"生词",就要去学习一次.但这新的"生词"的源语句不一定都能找到啊. |
-- 作者:秦汉昌 -- 发布时间:2008/12/30 12:59:00 -- 以下是引用浪-淘-沙在2008-12-30 12:10:00的发言: 从楼主的介绍中,我了解到汉编的一个特点,那就是所谓的词语学习功能. 每次编写一个新词语,下次编程时可以直接使用.不用再把这个词语的详细语句抄到新的程序中去. 但这或许有个缺点:那就是程序的交流性变差. 比如楼主编的词语在楼主家的电脑上是可执行的.到了我的电脑就不能执行了.为什么?因为我的电脑上的编译程序没有把楼主的词语学习进去.如果我要直接使用楼主的程序,我还得让我的电脑学习一次,记住楼主编写的一些新词语. 换句话说,从网上找到"汉编"源程序,不一定都可以通过自家的电脑进行编译.遇到新的"生词",就要去学习一次.但这新的"生词"的源语句不一定都能找到啊. 你的理解不够准确,在汉语编程中,有系统词典,这个词典是最基础的汇编词,这是通用的,这也是汉语编程的统一标准,所有的新词都是由系统词发展而来,由有限的系统词无限延伸。 在编写新词的交流方面,我认为目前基本上以模板的形式传播,比如,汉编官方在系统词典的基础上,又发布了一个系统模板(主要提供表格处理),只要获得这个模板并装入编译词典,或者直接引用该模板保存的路径就可以应用了。 在目前来说,如果要利用他人编写的新词,只要把该新词装入词典或直接引用其保存路径。随着汉语编程的发展,我认为,会出现专门的收集汉编词语的标准词典,所以,只要有新词出现,就不怕难以交流。 对于自己编写的新词,既可以无偿共享,也可以不公布,这是个人的事情;如果能研究出一个精致的模板,或者征对某个专业或行业的模板,也可以去申请专利和版权。 比如,在天文历法方面,我们完全可以编制一个专业的模板或者词典。 |
-- 作者:秦汉昌 -- 发布时间:2008/12/30 13:06:00 -- 如果某人愿意共享他编写的新词的源程序,那么他一定会告诉你,他编写的新词用了哪些系统词以外的词语,本亲词实现什么功能,所以,只要有人愿意共享,不用担心无法交流,也不要担心人家编写的有些复杂的词语的你看不懂的问题,如果不是为了学习研究的需要,仅仅是为应用该词,只需知道它能实现什么功能就可以,不必知道它是怎么编写的。 |