作为最早出现的高级编程语言之一.pdf

上传人:qwe****56 文档编号:70009444 上传时间:2023-01-14 格式:PDF 页数:4 大小:223.58KB
返回 下载 相关 举报
作为最早出现的高级编程语言之一.pdf_第1页
第1页 / 共4页
作为最早出现的高级编程语言之一.pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《作为最早出现的高级编程语言之一.pdf》由会员分享,可在线阅读,更多相关《作为最早出现的高级编程语言之一.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、利用C语言开发高效率的有限元程序上海交大国家模具CAD工程中心叶又上海大学计算中心戚燕摘要本文通过与FORTRAN语言的比较,说明利用C语言开发有限元程序的可行性。结果表明,C语言不仅可以提供更强大实用的编程环境,同时由于提供指针变量、动态内存分配函数和结构变量,使其编写的软件在维护性、可读性和内存利用效率方面具有明显的优势,是有限元软件的发展方向。关键词C语言有限元程序FORTRAN语言1引言FORTRAN作为最早出现的高级编程语言之一,在科学计算领域应用广泛。当前有限元程序的源代码几乎清一色由FORTRAN写成,此情况还在持续。与FORTRAN一样,C也是一种结构化的程序设计语言。结构化程

2、序设计要求程序的逻辑结构有顺序、标准。当学生利用实力挑战的测验方式从题库中调题选做时,计算机可随时给出得分和评价。当学生为了综合检验本门课学习情况时,可以从题库中抽调任意难度系数的100分试题,进行模拟考试,以便对自己的学习情况有个综合了解,做到胸中有数。可见,该试题库亦可作为教师出题的试题库,一举多得。5系统的运行环境与设计特点本系统在中文W indow s3.1环境下运行。设计上采用画面管理的方式。即可同时运行多道程序,执行多项任务,又能充分利用内存,方便地交换信息。同时,为CA I系统综合处理图形、图象、声音、动画、文本等多种信息媒体提供了优越的平台。利用这个平台,电子技术CA I系统具

3、备了画面管理窗口的功能。所以,该系统在设计上采用全屏幕图形化设计方法,以汉字菜单为主,图形菜单为辅,同时辅以合理地热键,配合光标键、回车键或鼠标键,选择各级菜单及实现各种功能。根据电子技术课程本身的特点和CA I专家系统的功能,该系统在设计上突出了以下特点:511模块化的设计方法为了便于移植和升级、整个系统采用面向对象的设计方法,用C和C+语言实现。其中“学习指导”、“ECAD”、“试题库”、“图形库”均是可以独立运行的软件式模块。各模块之间溶汇贯通,亦可并行使用。为便于升级和扩充,每个模块均配有特设的录入程序,且操作方便,以满足电子技术飞速发展的需要。512图形功能强大由于电子技术CA I系

4、统内容丰富,而电子技术课程涉及到的图形符号众多。如果调用现行绘图软件到该系统,使用很不方便,而且不利于升级。因此,在该系统中设置了图形库、配合图形库设计的绘图软件使用方便。各种图形符号在屏幕上可任意翻转、移动、扩大、缩小、改变颜色,电路图可自动布线,自动剪裁、无论是专业人员,还是非专业人员,使用该系统,均可绘出标准而精美的电路图。513高度交互、虚拟现实在计算机的应用软件设计中,人机交互界面占有十分重要的地位,因此,界面美观,清晰、使用方便,高度交互性,成为衡量应用软件质量的又一标志。为达此目标,我们尽了最大努力,使整个系统构思新颖、功能完善,高度智能化。友好的界面,为用户提供了一个舒适而生动

5、的学习与设计环境。尤其是封面的精良设计,更加给用户以美的享受、使用户在欣赏之余乐于等待系统的启动。(定稿日期96年7月)参考文献11 倪安顺.W indow s3.1使用手册,学苑出版社.1993。21 刘传菊.模拟电子技术基础学习与解题指导.黑龙江教育出版社.1995。31 刘传菊等.用C+实现计算机辅助逻辑设计与仿真.计算机工程与应用.1996.334计算机工程与应用1997111研究与探讨选择和循环3种基本结构,C提供了编写结构化程序所需要的语句。同时,使用C也便于进行模块化程序设计,C程序由众多的函数组成,函数是进行模块化程序设计的基本单位,与FORTRAN的子程序功能相似。另外,C还

6、提供了较FORTRAN丰富得多的运算符和数据类型,甚至允许用户利用基本数据类型自己定义数据类型。虽然,C的发展只有十几年,却有一种后来居上的趋势,开始成为开发高质量软件的主要编程语言。目前在各种机型和各种操作系统上都运行有C语言的编译器,提供了丰富的库函数和实用程序,以改善用户程序界面,I?O效率,并简化编程。本文的主要目的是通过与FORTRAN语言的比较,说明利用C语言开发有限元程序的可行性。C语言提供的指针数据类型实现了真正意义上的内存动态分配,同时合理有效地定义结构数据类型极大地增加了程序可读性和维护效率,特别是对于大型有限元程序的开发调试。这些无疑是C语言的诱人之处。2FORTRAN与

7、C语言的语法结构作为一种功能强大的高级语言,C提供了FOR2TRAN程序设计所需的语句,以完成科学计算编程的3种基本逻辑结构顺序、选择、循环。FORTRAN语言的主要可执行语句与C有明确的语句对应完成相应的功能,见表1。表1FORTRAN主要句法与C的对应关系FORTRANCEL SE IF(.)THENelse if(.)IF(.)THENif(.)EL SEelse END IFDO I=a,b,cfor(i=a,i=b,i+=c)DO I=a,bfor(i=a,i=b,i+)END DOSUBROU T I N E子程序名(.)类型 函数名(.)ENDRETURNreturn;PR I

8、N T3,cout endl;nnn CON T I NU EL abel_nnn:GOTO nnngoto L abel_nnn;C最初出现是用作UN IX操作系统的记述语言,发展之初一直作为“较低级语言”编写与硬件关系密切的底层软件。由于UN IX的成功和广泛使用,C语言开始流行起来,并成为一种普遍使用的程序设计语言。由于二者产生的背景不同,它们是有差异的。主要表现在函数的调用和参数的传递,特别是多维数组的处理方面不如FORTRAN直观和易于理解。FORTRAN从一开始就用于科学计算,必须处理诸如矩阵一类的数学问题,多维数组是它的主要使用工具,而C语言一开始主要是面向系统程序员的,在应用中

9、很少会涉及多维数组。但这并不意味着在处理多维数组时会遇到很多麻烦。文3提供了利用指针数据类型处理多维数组及其在函数中传递的两种方法。利用这些方法可以方便地将FORTRAN的数组操作移植成C语言的。3动态内存分配技术让我们先来研究一下利用FORTRAN编写的有限元程序所使用最广的一种内存动态管理方法。该方法在程序一开始就在无名公共块中定义一个大数组A,在程序不同运行阶段存放不同的内容。CPROGRAM MA I NCOMMONA(100010)REALALTOM=100000CALLNODEI NCSUBROU T I NE NODEI NCNUNP-NUMBER OF NODE PO I NT

10、SCNDOF-NUMBER OF DEGREE OF FREEDOM SPER NODE PO I NTCNSOD-SW ITCH OF SI NGLE OR DOUBLE PRE2C ISI ONCOMMON A(1)REAL ACOMMON?NODE?NUNP,NDOF,NSODN 1=1N 2=N 1+NUNPN 3=N 2+NUNPN 4=N 3+NDOF3NUNPN 5=N 4+NUNP3NSODN 6=N 5+NUNP3NSODCALL I NPU T(A(N 1),A(N 2),A(N 3),A(N 4),A(N 5),A(N 6),NDOF)RETURNENDSUBROU T

11、I NE I NPU T(NU SNP,NPNP,MDOF,X,Y,Z,NDOF,)I M PL IC IT REAL38(A-H,O-Z)D I M EM SI ON NU SNP(1),NPNP(1),MDOF(NDOF,1)D I M ENSI ON X(1),Y(1),Z(1)由于A数组的大小必须事先给定,为满足解题规模,会尽可能开得足够大。当求解一个较小问题时,它同样占据着很大的内存,无疑造成计算机资源的浪费,这种情况对于目前多任务多进程的操作环境更为重44研究与探讨1997111计算机工程与应用要。同时,为了求解更大规律的问题,还必须调整A数组的大小,重新编译源程序。实际计算问题的

12、大小是很难确定的,利用上面方法编写的程序实际上在生成执行代码时就决定需要内存的数量。更一般情况是,如果一个变量被指定为全局变量(如上面的A数组),则它在整个程序运行期间都占据存储单元。如果是自动变量和形参,则在其所在的子程序执行期间,它占有的存储单元也是不释放的。这种方法处理问题,缺乏灵活性,往往会浪费许多内存,不是真正意义上的动态内存分配。人们应该设想能否找到这样一种方法,根据需要临时分配内存单元以存放有用的数据,当数据不用时可以释放存储单元。此后这些存储单元则又可用来分配给其它数据或程序使用,C语言使用指针数据类型和标准的动态内存管理函数calloc()可以非常方便地实现这一想法。void

13、3calloc(n,size);分配n个变量的内存连续空间,每个变量字节大小是size。由于此函数类型说明时是void3,故在使用时要强制转换为所用类型变量的指针。int3p1;float3p2;p1=(int3)calloc(n1,2);p2=(float3)calloc(n2,4);n1、n2的大小可根据解题的规模在程序运行时赋值。数组p1共占用n12个字节内存,p2共占用n24个字节内存。当数组p1、p2不再需要时,它们占用的空间可简单地使用下面语句释放:free(p1);free(p2);释放指针变量p1、p2指向的存储空间,交还给系统分配它用。注意此时p1、p2不能是任意地址,而只能

14、是由callot()函数所返回的地址,并且不能再被重新赋值,否则将引起内存管理混乱。4利用结构数据类型增加程序的可读性C语言通过使用结构数据类型把一组不同类型的数据同时又是在逻辑上相关的数据组成一个有机的整体,以便于引用。有助于提高程序的可读性和加快程序开发的效率。structnodedataint nodenum;?3 节点序号3?float x,y,z;?3 节点坐标3?float disx,disy,disz;?3 节点位移3?int dofx,dofy,dofz;?3 节点约束情况3?3node;?3 节点信息3?structelemnodeint elemnum;?3 单元序号3?i

15、nt3nodenum;?3 节点序号指针3?int numnodes;?3 单元节点数3?int gauss;?3 高斯积分点数3?3elem;?3 单元信息3?FORTRAN语言显然很难有效地管理以上例子中有关结点和单元等类型的数据,它只能使用一大堆数组或变量去分别描述它们,过多的毫无规律的名字无疑给编写和阅读程序造成了困难。5算例分析为了比较,我们对文献2提供的FORTRAN程序进行了翻译修改,编制了结构功能基本一致的C语言程序。在486DX?33、内存8 M的微机上进行计算比较,见表2。表2C与FORTRAN源代码、执行代码和解题规模的比较源代码编译器源文件大小执行代码大小解题规模AN

16、SI-CTurbo C2.06.4K87K 800自由度AN SI-CBorland C3.0forW I NDOW S6.4K96K无限制1FORTRAN77M S-FORTRAN 5.05.8K566K 800自由度FORTRAN77NDP-FORTRAN5.8K 3711K无限制21由硬盘大小决定2由公共区数组A的大小决定比较以上4种情况发现,C与FORTRAN在源文件大小基本相当时,执行文件代码却相差很大,这主要是因为用FORTRAN编程时,必须考虑求解问题的最大规模,预先开好一个大数组,执行文件的大小很大程度上是由这个数组的大小决定的。而C语言提供的指针数据类型和动态内存分配函数在程

17、序运行时根据解题规模动态地分配内存大小,无须预先留出空间。在计算时间方面,对于同样的可计算问题(小于800个自由度),4种环境大致相当,C语言稍快,与文献4结论基本一致。这可能是由于C的执行代码较FORTRAN小,装入内存更快些所致。利用TURBO C、M S-FORTRAN编译生成的执行文件,无法突破DOS的640K常规内存的限制,解题规模较小。NDP-FORTRAN可以利用硬盘模拟内存,大大提高了解题规模。BORLAND C FOR W I NDOW S环境利用W I NDOW S的内存管理技术,解题可以直接利用计算机提供的所有常规和扩展内存进行计算,同时计算速度也有明显提高。对于1000

18、个自由度以上的问题,效率一般会高出NDP-FORTRAN几倍甚至几十倍。最后对程序的移植性作一点说明,将TURBO C源54计算机工程与应用1997111研究与探讨单片机系统的加密技术哈尔滨工业大学王茂秦嘉川摘要讨论了几种单片机系统的加密方法,经实验表明文中讨论的方法切实可行,具有良好的保密效果,为保护系统开发者的利益提供了有效的手段。关键词单片机系统加密技术1引言为了保护知识产权,采用加密技术是一个有效的手段。加密技术在软件设计领域里已不是新鲜的概念,但在单片机系统领域内往往由于技术上的原因难以实现;因此在市场中很难避免其系统从硬件到软件被完全仿制,给产权者造成一定的经济损失。单片机系统的加

19、密技术过去常常仅采用硬件手段,即利用GAL等芯片将一些外围的关键电路封装起来,使仿制者难以详尽获得其硬件结构。但是其软件往往无法直接保密,有时仿制者可以通过反汇编手段读到该系统的操作软件,从而破译其硬件加密方法,代之自己相同原理的硬件设计。因此仅从硬件上加密是不够的。但是单片机系统又不象系统机那样,可以完全从软件上进行加密,因为其软件最终要以相应于单片机类型的机器语言的形式来存放,它很容易通过反汇编方法被获取,因此单片机系统的加密技术必须采用软、硬件结合的方法来实现。加密没有固定的规则,因为规则愈固定,则解密愈容易,因此加密技术没有一个统一的原理。只要能加密,采用何种手段都可以,该手段越是反常

20、规,其保密性则越好。以下作者依据多年从事单片机技术应用的经验,介绍几种单片机系统的加密方法。2单片机系统的加密方法2.1程序隐藏法一般单片机系统的操作程序都存放在EPROM里,因此容易被反汇编,而无硬件加密时,整个系统很容易被完全仿制。程序隐藏法,顾名思义是将有用的程序隐藏起来,这样反汇编后得到的代码将很难读译。一种做法是将程序移植到BORLOND C环境时,程序无须作任何改动,而从M S-FORTRAN向NDP-FORTRAN移植时,为了增大解题规模,有若干数组的大小是必须变动的。6结束语C语言作为一种优秀的程序设计语言,已广泛用于开发各种实用程序。然而在数值计算领域,尤其是对有限元程序的开

21、发使用甚少。追根求源,这其中历史的原因是不容忽视的。70年代是有限元发展的黄金时代,与此同时FORTRAN语言也日趋成熟。当时出版的有限元名著,如Zienkiew icz的The Finite ElementM ethod,Bathe的N umericalM ethods in Finite Element A naly2sis等。从理论到程序结构一直影响了以后的几代学者。AD I NA、AN SYS、NA STRAN等著名有限元软件都是从70年代用FORTRAN语言发展起来的。从保护现有投资的角度,我们不应当也不可能重新用C语言去改写如此庞大的软件包。作者主要是想通过本文告诉读者,一旦当你熟

22、悉了C语言,并且会使用那些功能强大实用的编程环境时,你就会发现编写有限元程序要比FORTRAN更容易,同时效率可读性更好。90年代兴起的面向对象的编程技术无疑给软件开发带来了新的方法,C语言的后继者C+提供了支持面向对象的程序设计所有特征。如何利用C+编写面向对象的有限元程序是作者下一步的主要工作。(定稿日期96年7月)参考文献11 谭浩强,C语言程序设计,清华大学出版社,1990。21Hinton E,D.Owen.R.J,Finite Element Programm ing,Aca2dem ic Press.1977。31Ha.K.H.,C Language for Finite Element Programm ing,Comput.struct.Vol.37,873-880,1990。41Fazio.P.and Gow ri.K,Structural Analysis Software and CProgramm ing Language,Comput.struct.Vol.25,463-465,1987。64开发与应用1997111计算机工程与应用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁