如何编写程序

如何编写程序,第1张

编写程序是一项系统而繁琐的工作,它不仅需要程序设计人员具有一定的功底,更需要有良好的编程习惯和风格。良好的编程习惯和风格不仅可以使程序代码更易于读懂和修改,更重要的是,它可以使程序的结构更加合理,有助于提高程序的执行效率。下面是我在程序设计中总结的一些经验,供大家参考。

设计顺序

在我们刚开始学习程序设计的时候,要编写一个程序,总是先进行一番构思,然后就一边写代码一边调试。这种方法一般只适用于非常小的程序,根据软件工程的特点,如果对所有程序都还按这种方法进行设计,是不合理的。

其实,设计程序就像我们盖高楼大厦,首先要设计图纸,然后动工。所以,对于个人编写程序来说,应遵循以下步骤:

1、问题分析:对我们要使用程序设计手段去解决的问题进行系统地分析,了解程序是做什么的,要达到一种什么样的效果等。

2、结构设计:也就是对程序的整体框架进行设计,设计出我们需要使用的模块等等,并画出流程图。

3、用户界面设计:在此,我们要设计出用于与用户交互的输入输出界面。

4、代码设计:在这个步骤中,我们要进行代码的编写。

5、调试:对程序中正在发生或可能发生的各种错误进行处理。

6、维护:通俗地说,维护就是对程序进行升级,对原有错误进行修改。

对于以上几个步骤,我想大多数人会认为代码设计最为重要,但如果程序的结构尚未清楚,我们在编写代码的时候就会发生混乱,一个程序性能的好坏,主要还是取决于它的结构是否合理。因此,在程序设计中,我们要尽可能注意这一点,这样才能使我们的程序更加完善。

设计环境

一个良好的编程环境可以使我们在编写程序时,不至于造成各种资源的紊乱,还可以避免资源的丢失。建议大家要在放源程序的目录下建立“programs”文件夹;然后再以你要编写的程序名和版本为名建立一个文件夹,用于存放整个源程序以及各种资源;最后,分别建立几个文件夹,“documents”:用于存放程序文档,包括流程图等;“resource”:用于存放,声音,影片等资源;“debug”:用于存放调试的程序。“release”:用于存放最终释放的程序。

例如:我们要制作一个英语学习软件,名为“english”,版本为10,那么我们的编程环境中应存在以下文件夹:

[drive]:\\…\\programs\\english1\\debug\\

[drive]:\\…\\programs\\english1\\documents\\

[drive]:\\…\\programs\\english1\\resource\\

[drive]:\\…\\programs\\english1\\release\\

另外,最好再建立一个专门的文件夹,用于存放各种模块,以便能实现代码的重用,这样,我们就不用在每次写程序时,都重写所有的模块,编程速度会有很大的提高。

设计技巧

代码如果写得很乱,程序便不易被阅读与修改,所以,在编写代码时要注意以下几点:

(1)注释:写注释虽然要占用一定的时间,但在阅读和修改代码时却会节省很多的时间。所以,建议大家在定义一个函数时,在函数的第一行写出函数的作用,再用一行解释函数的参数,并在每个变量的定义语句后注释出其作用。

(2)变量和函数的命名:每个程序都会使用很多的变量和函数,如果随意命名变量与函数,每次使用时还得在变量或函数的定义语句处查出它的数据类型及名称,而且随意命名还会造成变量与函数重复定义。

建议大家使用匈牙利命名法,方法是:每个变量或函数的开头都以其数据类型的缩写命名,然后再加上代表这个变量或函数的作用的英文单词简写共同组成变量或函数的名称。例如:要定义用于计数的整型变量count,其定义语句为c\\c++:int icount; basic:dim icount as integer。以这种方法定义,不仅可以有效地避免变量与函数的混乱与重复定义,还可以保证数据类型的匹配。

(3)控件命名:如果在windows下编程,你有可能会大量地使用控件,如果不对控件名严加管理,会造成很大程度的混乱,因此,建议在给控件命名时,以控件类型缩写再加上代表这个控件作用的英文单词的简写共同组成此控件的名称。例如:你要命名一个按钮控件,作用是进行删除 *** 作,那么控件名可以命名为cmddel。

并不是每个人都能成为顶级程序员,但我们都在程序员之路上不断进步,追求更完美、更专业化的程序。不妨好好改造一下你的程序,你会从中感受到很多好处。

是算法的一种,又叫流程图,是有一些规定的图形和流程线组成,用来描述算法的图形。

程序框图中,圆角长方形表示起、止框,平行四边形表示输入、输出框,长方形表示处理框、执行框,用于赋值、计算,菱形表示判断框,成立写是或Y,不成立则写否或N。

程序框图的三种基本逻辑结构:顺序结构、条件结构、循环结构 顺序结构是最简单的结构,也是最基本的结构,循环结构必然包含条件结构 这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达

(1)三者的共同特点

①只有一个入口;

②只有一个出口 菱形判断框有两个出口,而条件结构只有一个出口,不要将菱形框的出口和条件结构的出口混为一谈;

③结构内的每一部分都有机会被执行到 即对每一个框来说都应当有一条从入口到出口的路径通过它;

④结构内不存在死循环 在程序框图中不允许有死循环出现

(2)三者的比较

①顺序结构在程序框图中的体现是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤;

②条件结构在程序框图中是用判断框来表示,判断框内写上条件,两个出口分别对应着条件满足和条件不满足时所执行的不同指令;

③循环结构在程序框图中是利用判断框来表示,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时所执行的不同指令,其中一个要指向循环体,然后再从循环体回到判断框的入口处

(3)三者各自的特点

①顺序结构的特点是:算法按照书写顺序执行;

②条件结构的特点是:算法中需要进行判断,判断的结果决定后面的步骤;

③循环结构的三个要素:循环变量、循环体和循环终止条件

(4)条件结构与循环结构的区别与联系

区别:循环结构有重复性,条件结构具有选择性、不重复;

联系:循环结构中必定包含一个条件结构,用以判断循环的条件

函数有很多,比如字符串拼接函数,分割函数,打乱函数等。

确保堆栈上至少有 n 个额外空位。 如果不能把堆栈扩展到相应的尺寸,函数返回假。 失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈; 如果堆栈已经比需要的大了,那么就保持原样。

lu a_close

[-0, +0, –]

void lua_close (lu a_State L);

销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们), 并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。

lu a_compare

[-0, +0, e]

int lu a_compare (lua_State L, int index1, int index2, int op);

比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件满足,函数返回 1 。 这个函数遵循 Lua 对应的 *** 作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。

op 值必须是下列常量中的一个:

LUA_OPEQ: 相等比较 (==)

LUA_OPLT: 小于比较 (<)

LUA_OPLE: 小于等于比较 (<=)

lua_concat

[-n, +1, e]

void l ua_concat (lua_State L, int n);

连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。 如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。

lua_copy

[-0, +0, –]

void lu a_copy (lua_State L, int fromidx, int toidx);

从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。

l ua_createtable

[-0, +1, e]

void l ua_createtable (lua_State L, int narr, int nrec);

创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会有多少个元素; 参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数 lua_newtable 。

lua_dump

[-0, +0, e]

int lu a_dump (lua_State L,

lua_Writer writer,

void data,

int strip);

把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_dump 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。

如果 strip 为真, 二进制代码块将不包含该函数的调试信息。

最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。

该函数不会把 Lua 函数d出堆栈。

以上就是关于如何编写程序全部的内容,包括:如何编写程序、程序框图基本逻辑结构、程序开发中逻辑的函数组成有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10126916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存