子程序格式规范及调用方法解析 (子程序的基本格式是什么)

子程序格式规范及调用方法解析 子程序的基本格式是什么

一、引言

随着计算机技术的飞速发展,程序设计和软件开发成为现代社会不可或缺的一部分。
在程序设计中,子程序作为一种重要的软件组件,扮演着关键角色。
为了更好地理解和应用子程序,本文将详细解析子程序的基本格式规范及调用方法。

二、子程序概述

子程序是一种程序代码片段,用于执行特定的功能或操作。
它通常被设计为一个独立的模块,可以被其他程序或子程序调用。
子程序可以分为函数和过程两种类型。
函数返回特定值,而过程则不返回值,主要用于执行操作。

三、子程序的基本格式规范

子程序的基本格式规范包括以下几个方面:

1. 命名规则:子程序的命名应简洁明了,反映其功能或作用。通常使用有意义的英文单词或短语,采用驼峰命名法(camelCase)。
2. 参数列表:子程序可以接收输入参数,并可能返回结果。参数列表应明确列出所有输入和输出参数,以及它们的类型和用途。
3. 返回值:如果子程序有返回值,应明确其返回值的类型和含义。对于函数,返回值是其主要特征,因此应特别关注其类型和精度。
4. 代码结构:子程序的代码结构应清晰易懂,遵循良好的编程风格。代码应适当地使用注释和文档,以帮助理解其功能和用法。
5. 错误处理:子程序应具备错误处理能力,对于异常情况应进行恰当的处理和报告。

四、子程序的调用方法

调用子程序是程序设计中常见且重要的操作。
正确的调用方法对于程序的正常运行至关重要。
以下是一些关于如何调用子程序的指导:

1. 确定调用位置:在程序中确定需要调用子程序的位置。根据程序的需求,选择合适的子程序来执行特定任务。
2. 提供必要参数:如果子程序需要输入参数,应在调用时提供正确的参数值。确保参数的类型和值符合子程序的期望。
3. 调用语法:使用正确的语法调用子程序。通常,语法包括子程序的名称、参数列表以及必要的语句结束符。
4. 处理返回值:如果子程序有返回值,应在调用后处理这些值。根据返回值的意义和类型,进行相应的操作或判断。
5. 错误处理:在调用子程序时,应关注可能出现的错误情况。如果子程序报告错误,应采取适当的措施进行处理,如重试、跳过或报告给用户。

五、示例及解析

以下是一个简单的子程序示例及其调用方法:

假设我们有一个名为“CalculateArea”的子程序,用于计算矩形的面积。其格式规范可能如下:

子程序名称:CalculateArea
参数列表:(宽度:整数;高度:整数;面积:浮点数输出)
返回值:返回计算得到的矩形面积值(浮点数)

调用该子程序的示例代码如下:

```plaintext
// 声明变量以存储输入和输出值
Integer width = 5; // 矩形的宽度
Integer height = 3; // 矩形的高度
Float area= 0.0; // 用于存储计算得到的面积值

// 调用CalculateArea子程序计算矩形面积
area = CalculateArea(width,height); // 提供输入参数并接收返回值

// 输出计算结果或其他操作
Console.WriteLine(矩形面积为: + area); // 输出计算得到的面积值到控制台或其他界面上展示给用户查看等后续操作等具体操作等根据实际开发需求和产品设计要求进行进一步开发使用或维护等操作说明不再赘述等后续操作等根据实际开发需求和产品设计要求进行进一步开发使用或维护等具体操作等根据实际开发需求和产品设计要求的操作自行根据实际情况灵活调整使用方式等等本篇文章内容仅提供一般性指导建议和示例供参考自行根据实际情况灵活调整使用方法或者采用其他的合理可行的操作方式以达到相应的目标要求或者进行后续的修改扩展和优化等动作以确保软件系统的稳定性和性能的优化等目的即可同时请注意遵守相关的编程规范和标准以确保代码的可读性和可维护性提高开发效率和质量水平等目标要求即可实现软件系统的稳定运行和高效开发等目标要求即可实现软件系统的稳定运行和高效开发等目标要求总结本文关于介绍和分析探讨了子程序的格式规范及调用方法等相关内容希望能够对读者有所帮助和指导价值如需更多详细信息和示例代码请查阅相关文档资料或参考其他优秀的编程实践案例谢谢!总结本文旨在介绍和分析探讨子程序的格式规范及调用方法等相关内容希望读者能够从中受益并掌握相关知识技能在实际开发中灵活应用本文所提供的知识点和建议实现软件系统的稳定运行和高效开发等目标要求如有更多疑问或需求请随时联系作者或专业人士获取帮助和支持感谢您的阅读!在任何情况下都要严格遵守相应的计算机法规和安全性规范以保证数据的可靠性和系统的安全合法运行计算机的开发与维护遵守相关法律标准和职业行为规范以确保软件的质量和安全性同时也要注意保护知识产权尊重他人的劳动成果避免侵犯他人的权益本文所提供的所有内容仅供参考和学习交流目的如需实际应用请结合实际情况进行选择和调整以确保软件的稳定运行和优化性能最后祝愿读者在计算机开发和维护工作中取得更大的成功与进步同时愿所有软件开发者能够持续提高技术水平和专业素养推动软件行业的持续发展祝愿软件行业的繁荣与不断进步为实现更加美好的数字化未来贡献力量!同时我们也要不断学习和探索新的技术知识和方法以适应不断变化的市场需求和技术趋势不断推动软件行业的创新和发展为实现更加美好的数字化未来贡献我们的智慧和力量在掌握和运用所学知识的同时也要时刻保持创新和学习的精神推动行业的进步和发展在数字时代的浪潮中不断开拓新的领域和挑战自己的极限创造更多的价值和成就让我们一起努力为数字化未来贡献力量!}我们需要明确一点,由于篇幅限制和文章内容的复杂性,上述文章中的部分段落需要进行适当的删减和调整以确保文章的流畅性和可读性。下面是对文章的精简和调整后的版本(保留主要内容和结构):一、引言随着计算机技术的飞速发展,程序设计和软件开发成为现代社会不可或缺的一部分。在程序设计中,子程序作为一种重要的软件组件扮演着关键角色。本文将解析子程序的基本格式规范及调用方法。二、子程序概述子程序是执行特定功能或操作的程序代码片段,通常被设计为一个独立的模块,可被其他程序或子程序调用。子程序分为函数和过程两种类型。三、子程序的基本格式规范1. 命名规则:简洁明了地反映功能或作用。2. 参数列表:列出所有输入和输出参数及其类型和用途。3. 返回值:明确返回值的类型和含义。4. 代码结构:清晰易懂,遵循良好的编程风格。5. 错误处理:具备错误处理能力,妥善处理异常情况。四、子程序的调用方法1. 确定调用位置:根据需求选择适当的子程序。2. 提供必要参数:调用时提供正确的参数值。3. 调用语法:使用正确的语法调用子程序。4. 处理返回值:根据返回值进行相应的操作或判断。五、示例及解析假设有一个名为“CalculateArea”的子程序,用于计算矩形面积。(此处省略具体格式规范描述)调用示例代码如下:(此处省略具体代码实现)六、总结本文介绍了子程序的格式规范及调用方法等相关内容,希望读者能够从中受益并掌握相关知识技能。在实际开发中,应遵守计算机法规和安全性规范,确保软件的稳定运行和高效开发。同时不断学习和探索新的技术知识与方法以适应市场需求和技术趋势推动软件行业的创新和发展为实现更加美好的数字化未来贡献力量本文旨在为读者提供关于子程序的格式规范及调用方法等内容的指导和帮助如有更多疑问或需求请随时联系专业人士获取帮助和支持感谢阅读本文的同时我们也要保持创新和学习的精神推动行业的进步和发展为数字化未来贡献力量以上就是关于子程序的格式规范及调用方法的解析希望对你有所帮助。, 在这个数字化时代里, 随着科技的不断发展, 计算机编程已经成为了一项非常重要的技能。, 掌握编程技术不仅可以提高我们的工作效率, 还可以帮助我们更好地理解和利用数字化世界。, 在这个过程中,我们需要不断地学习和探索新的技术知识和方法。, 只有这样我们才能跟上时代的步伐不被淘汰。, 在这个过程中我们会遇到各种各样的挑战和困难但是只有通过不断地努力和实践我们才能够真正地掌握这项技能并在这个领域中取得成功。, 在这个过程中我们还可以结交志同道合的朋友共同学习和进步分享彼此的经验和知识共同进步共同成长。, 让我们一起努力为数字化未来贡献力量!}}从上述内容来看这是一篇关于介绍学习计算机编程的重要性以及学习过程中的挑战和解决方法的文章以下是对该文的精简和梳理:一、引言随着科技的不断发展计算机编程成为重要的技能学习编程不仅可以提高工作效率还能更好地理解和利用数字化世界。二、计算机编程的重要性及其应用领域计算机编程是数字化时代的核心技能之一广泛应用于各个领域如软件开发、数据分析、人工智能等。三、学习编程的挑战在学习过程中可能会遇到各种挑战如语言选择、学习资源、学习方法和实践机会等需要克服这些困难才能不断进步。四、学习方法与策略1. 选择适合的学习路径:根据兴趣和目标选择适合的学习领域和编程语言。2. 寻找优质资源:利用互联网上的教程、在线课程、技术社区等资源进行学习。3. 实践为主:通过实际项目和实践来巩固知识和技能提高学习效率。4. 持续学习:跟进技术发展趋势不断学习新技术和知识以保持竞争力。五、坚持与社区互助在学习过程中遇到问题和困难时可以向社区求助与同行交流分享经验共同进步。六、结语学习编程是一个持续的过程需要不断努力和实践才能取得进步在这个过程中我们还可以结交志同道合的朋友共同成长和进步让我们一起为数字化未来贡献力量!通过本文的介绍希望读者能够了解计算机编程的重要性并克服学习过程中的困难掌握这项技能为未来的数字化世界做好准备。


嵌入式系统设计师考试知识点有哪些?

软考嵌入式系统设计师考试包含基础知识和应用技术共两个科目,各科目考试知识点有所不同。 基础知识考试题型为客观选择题,应用技术考试题型为主观问答题。 嵌入式系统设计师属于软考中级资格考试,嵌入式系统设计师考试大纲中各科目的考试知识点范围如下:考试科目1:嵌入式系统基础知识1.计算机科学基础1.1数制及转换·二进制、八进制、十进制和十六进制等常用数制及其相互转换1.2数据的表示·数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出)·字符、汉字、声音、图像的编码方式·校验方法和校验码(奇偶验码、海明校验码、循环校验码)1.3算术和逻辑运算·计算机中的二进制数运算方法·逻辑代数的基本运算和逻辑表达式的化简1.4计算机系统结构和重要部件的基本工作原理· CPU和存储器的组成、性能、基本工作原理·常用I/O设备、通信设备的性能,以及基本工作原理·I/O接口的功能、类型和特点·虚拟存储存储基本工作原理,多级存储体系1.5安全性、可靠性与系统性能评测基础知识·诊断与容错·系统可靠性分析评价·计算机系统性能评测方法2.嵌入式系统硬件知识2.1数字电路和逻辑电路基础2.1.1组合电路和时序电路2.1.2总线电路与电平转换电路2.1.3可编程逻辑器件2.2嵌入式微处理器基础2.2.1嵌入式微处理器体系结构·冯·诺伊曼结构与哈佛结构· CISC与RISC·流水线技术·信息存储的字节顺序(大端存储法和小端存储法)2.2.2嵌入式系统处理器的结构和类型·常用8位处理器的体系结构和类型·常用16位处理器的体系结构特点·常用32位处理器的体系结构特点·常用DSP处理器的体系结构特点·多核处理器的体系结构特点2.2.3异常·同步异常(陷阱、故障、终止)·异步异常(中断)·可屏蔽中断、不可屏蔽中断·中断优先级、中断嵌套2.3嵌入式系统的存储体系2.3.1存储器系统·存储器系统的层次结构·高速缓存(Cache)·内存管理单元(MMU)2.3.2 ROM的种类与选型·常见ROM的种类· PROM、EPROM、E2PROM型ROM的典型特征和不同点2.3.3 Flash Memory的种类与选型· Flash Memory的种类· NOR和NAND型Flash Memory的典型特征和不同点2.3.4 RAM的种类与选型·常见RAM的种类· SRAM、DRAM、DDRAM、NVRAM的典型特征和不同点2.3.5外存·常见外存的种类·磁盘、光盘、CF、SD等的典型特征和不同点2.4嵌入式系统I/O接口2.4.1定时器和计数器基本原理与结构2.4.2 GPIO、PWM接口基本原理与结构2.4.3 A/D、D/A接口基本原理与结构2.4.4键盘、显示、触摸屏接口基本与结构2.4.5嵌入式系统音频接口2.5嵌入系统通信及网络接口· PCI、USB、串口、红外、并口、SPI、IIC、PCMCIA的基本原理与结构·以太网、CAN、WLAN、蓝牙、1394的基本原理与结构2.6嵌入式系统电源分类及电源原理2.7电子电路设计2.7.1电子电路设计基础知识·电子电路设计原理·电子电路设计方法及步骤·电子电路设计中的可靠知识2.7.2 PCB设计基础知识· PCB设计原理· PCB设计方法及步骤·多层PCB设计的注意事项及布线原则· PCB设计中的可靠性知识2.7.3电子电路测试基础知识·电子电路测试原理与方法·硬件抗干扰测试3.嵌入式系统软件知识3.1嵌入式软件基础知识3.1.1嵌入式软件的分类(系统软件、支撑软件、应用软件)3.1.2无操作系统支持的嵌入式软件体系结构(轮询、中断、前后台)3.1.3有操作系统支持的嵌入式软件体系结构3.1.4板极支持包基础知识(系统初始化、设备驱动程序)3.1.5嵌入式中间件(GUI、数据库)3.2嵌入式操作系统基础知识3.2.1嵌入式操作系统体系结构·单体结构、分层结构和微内核结构3.2.2任务管理·多道程序技术·进程、线程、任务的概念·任务的实现(任务的层次结构、任务控制块、任务的状态及状态转换、任务队列)·任务调度(调度算法的性能指标、可抢占调度、不可抢占调度、先来先服务、短作业优先算法、时间片轮转算法、优先级算法)·实时系统及任务调度(RMS、EDF算法)·任务间通信(共享内存、消息、管道、信号)·同步与互斥(竞争条件、临界区、互斥、信号量、死锁)3.2.3存储管理· Flat存储管理方式·分区存储管理(固定分区、可变分区)·地址重定位(逻辑地址、物理地址、地址映射)·页式存储管理·虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法、工作集模型)3.2.4设备管理·设备无关性、I/O地址、I/O控制、中断处理、缓冲技术、假脱机技术)3.2.5文件系统基础知识·文件和目录·文件的结构和组织·存取方法、存取控制·常见嵌入式文件系统(FAT、JFFS、YAFFS)3.2.6操作系统移植基础知识3.3嵌入式系统程序设计3.3.1嵌入式软件开发基础知识3.3.2嵌入式程序设计语言·汇编、编译、解释系统的基础知识和基本工作原理·汇编语言·基于过程的语言(过程/函数、参数传递、全局变量、递归、动态内存分配、数据类型)·面向对象的语言(对象、数据抽象、继承、多态、自动内存管理)·各类程序设计语言的主要特点和适用情况3.3.3嵌入式软件开发环境·宿主机、目标机·编辑器、编译器、链接器、调试器、模拟器·常用嵌入式开发工具(编程器、硬件仿真器、逻辑分析仪、示波器)·集成开发环境·开发辅助工具3.3.4嵌入式软件开发·软件设计(模块结构设计、数据结构设计、内存布局、面向对象的分析与设计)·嵌入式引导程序的设计、设备驱动程序设计、内核设计、网络程序设计、应用软件设计)·编码(编程规范、代码审查)·测试(测试环境、测试用例、测试方法、测试工具)·下载和运行3.3.5嵌入式应用软件移植4.嵌入式系统的开发与维护知识4.1系统开发过程及其项目管理·系统开发生命周期各阶段的目标和任务的划分方法·系统开发项目挂你基础知识及其常用管理工具使用方法·主要的系统开发方法·系统开发工具与环境知识4.2系统分析基础知识·系统分析的目的和任务·系统分析方法·系统规格说明书的编写方法4.3系统设计知识·传统系统设计方法·软硬件协同设计方法4.4系统实施知识·系统架构设计·系统详细设计·系统调试技术·系统测试4.5系统维护知识·系统运行管理知识·系统维护知识·系统评价知识5.安全性知识·安全性基本概念·加密与解密机制6.标准化知识·标准化的概念·国际标准、标准、行业标准、企业标准基本知识·代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识·标准化机构·嵌入式系统相关标准7.信息化基础知识·信息化和信息系统基本概念·有关的法律、法规8.嵌入式技术发展趋势9.计算机专业英语·正确阅读和理解相关领域的英文资料考试科目2:嵌入式系统设计应用技术1.嵌入式系统开发过程1.1系统需求分析方法与步骤1.2系统设计·系统硬件配置·系统功能组成分配·软硬件功能的分配·可行性验证及设计审查·系统规格·周期,成本及工作量估计·开发计划1.3软硬件协同设计1.4硬件设计1.5软件设计·软件结构·设计评审·软件详细设计1.6系统测试·测试环境·测试计划(内容、方法、标准、过程、检验)·硬件测试·软件测试(单元测试、集成测试)·软硬件联合测试·实施测试1.7系统评估1.8软件维护2.嵌入式系统硬件设计2.1嵌入式系统硬件基本结构2.1.1嵌入式微处理结构与应用2.1.2异常及中断处理技术2.1.3 DMA技术2.1.4多处理系统·多处理器系统特点·多处理器系统构建技术2.1.5总线架构·应用系统中的总线配置2.1.6内存种类及架构·存储器系统接口设计2.1.7数字电路和逻辑电路·专用集成电路·可编程逻辑控制器件2.2输入/输出接口设计2.2.1输入/输出接口·接口信号电平转换·接口驱动电路设计2.2.2输入/输出接口应用技术·外围设备·串口通信·并口通信·模拟接口·通信接口设备·通信标准和协议·数据传输方式2.3外围设备接口应用技术2.3.1外围存储设备·存储卡,记忆棒,IC卡,MMC卡,SD卡· DVD、CD-R、CD-RW2.3.2外围输入/输出设备·键盘,鼠标,触摸屏·液晶板、LED、7段数码管、蜂鸣器2.3.3电源设计技术2.4可靠性与安全性设计技术2.4.1错误检测与隔离技术2.4.2冗余设计2.4.3系统恢复设计2.4.4诊断技术2.4.5常用安全标准2.4.6抗干扰设计2.4.7电磁兼容设计2.4.8系统加密3.嵌入式系统软件设计3.1嵌入式系统软件结构设计3.2嵌入式操作系统应用技术3.2.1时间管理·系统时间·时钟中断3.2.2内存管理·静态内存管理·动态内存管理3.2.3任务管理和任务间的通信·任务间的通信机制·信号量·邮箱·消息队列3.2.4异常处理·异常处理方法·中断优先级处理方法·系统调用3.2.5嵌入式文件系统应用技术3.2.6嵌入式系统图形用户接口(GUI)应用技术3.2.7嵌入式系统数据库应用技术3.3嵌入式软件设计技术3.3.1汇编语言设计·数据类型·汇编语言程序结构·汇编语言程序设计及优化·子程序调用3.3.2嵌入式C语言设计· ANSI-C的数据类型· C程序结构· C语言程序设计及优化·程序的编译与链接3.3.3面向对象程序设计与开发·面向对象的分析与设计方法UML·面向对象的编程语言·使用C++进行嵌入式系统开发·使用Java进行嵌入式系统开发3.4系统级软件设计技术·嵌入式系统固件与系统初始化设计·设备驱动程序设计·硬件抽象层、板级支持包设计·嵌入式软件的移植技术4.嵌入式系统开发技术4.1系统开发环境4.1.1开发工具·文本编辑器·汇编、编译和连接程序· ICE和ICE监控器·配置管理工具·逆工程工具4.1.2平台·操作系统·分布式开发环境4.1.3开发环境创建方法及评估·开发工作分析·开发环境的建立·维护、管理、使用开发环境的方法·开发环境的平测4.2实时系统的分析技术4.2.1实时系统的分析技术·结构化分析方法·面向对象分析方法4.2.2实时系统的设计技术·结构化分析方法·面向对象分析方法4.3硬件设计环境4.3.1硬件描述语言·硬件开发设计过程·硬件描述语言的种类与特点4.3.2仿真技术·逻辑仿真方法·逻辑仿真工具4.3.3大规模集成电路系统的开发方法· ASIC开发方法· FPGA设计方法· IP(intellectual property)4.4协同设计·软硬件任务工和切调·设计平审4.5嵌入式系统低功耗设计技术·低功耗系统工作机制·低功耗系统模型结构·低功耗的硬件设计技术·低功耗的软件设计技术4.6分布式嵌入系统设计·分布式系统设计原理·分布式系统的通信技术·分布式系统设计应用5.嵌入式系统应用5.1嵌入式系统在控制领域中的应用5.2嵌入式系统在手持设备中的应用5.3嵌入式系统在模式识别中的应用温馨提示:因考试政策、内容不断变化与调整,猎考网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! 下方免费复习资料内容介绍:2023年系统规划与管理师备考知识点集锦 格式:DO大小.59KB 2022下半年网络工程师下午真题 格式:DO大小:6998.11KB资格考试有疑问、不知道如何总结考点内容、不清楚报考考试当地政策,点击底部咨询猎考网,免费领取复习资料

图形系统的图形软件标准

已经制订的图形标准都是接口标准,这些标准旨在使图形系统中两部分之间的接口标准化,分为两大类:数据接口标准:用以确定系统各界面之间数据传递和通讯的标准;子程序接口标准:规定应用程序调用子程序的功能及格式的标准;标准所处的位置不同,所起的作用的提供的服务也不同。 (1)基本图形交换规范IGES1981年成为ANSI标准,其作用是在不同的图形系统之间交换数据,其基本单元是实体,实体分为三类:几何实体、描述实体和结构实体。 其文件格式是由ASCII码、记录长度为80个字符的顺序文件组成,文件分五节,并提供出错处理机制。 (2)图形核心系统GKSGKS提供了在应用程序和图形输入输出设备之间的功能接口,是一个子程序接口标准,是一个独立于语言的图形系统核心。 GKS作为一个系统核心,它提供的图形功能和特殊的图形设备是无关的,它可调用输入、输出、输入输出、独立图段存储、元文件输出、元文件输入等六种抽象的物理设备(图形工作站),它允许输出图素在不同的工作站上变换和传送;它包括线元素、点元素、字符元素和光栅元素等基本图素,以图段方式工作和组合,采用元文件在图形系统间传送图形。 GKS是一个二维图形标准,而GKS-3D是一个三维图形标准。 (3)程序员级层次结构图形系统PHIGS是ANSI在1986年公布的为应用程序员提供的控制图形设备的子程序接口标准,可分为九个程序模块来分别实现,各模块间独立,仅通过公共数据结构与其它模块连接。 所有图形数据组织在称为结构的单元中,结构间通过层次调用发生联系,结构中可包括图形元素、模型变换矩阵元素、观察选择元素、应用数据元素和结构调用元素等。 应用程序可通过调用一个不存在的结构、打开已存在结构、一个不存在的结构登录到工作站上、改变结构标识符时引用一个结构名等四种方式创建结构。 并提供了有效的编辑结构的手段。 与GKS相比,其差别体现在:数据结构、可修改性、属性存储、输出流水线等方面。 (4)计算机图形设备接口CGI是由ISO TC 97提出的设备接口草案,与1985年ANSI公布的VDI标准一致,提供了一种可视图形设备驱动程序的标准,属于程序接口标准。 (5)计算机图形元文件CGM是由ANSI在1986年提出的标准,1987年成为ISO标准,是一套与设备无关的语义、词法定义的图形文件格式,提供了随机存取、传送、简洁定义图像的手段。 通用性是它的关键属性,是一种静态的图形生成元文件。 其标准有两部分组成,一是功能规格说明,以抽象的词法描述了相应的文件格式;二是描述了CGM的三种标准编码形式,即字符、二进制和清晰的正文编码。

C语言的书写规则主要有哪些呢?

1. 1.1符号命名规则 1.1.1符号名包括模块名、常量名、标号名、子程序名等。 这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。 命名采用匈牙利命名法。 规则如下: (1)所有宏定义、枚举常数和const变量,用大写字母命名。 在复合词里用下划线隔开每个词。 (2)复合词中每个单词的第一个字母大写。 除了规则5.1.1.1以外,避免使用下划线。 (3)类、类型定义和枚举型名的第一个字母大写。 (4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。 (5)循环变量可采用i, j, k等,不受上述规则限制。 (6) 类的成员变量应采用m_开头。 (7) 全局变量词头为g_ 。 (8) 临时变量词头为tmp_ 。 (9) 对结构体内的变量命名, 遵循变量的具体含义命名原则 (10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。 表 1 词头 类型 词头 类型 ch char l long i integer u unsigned b boolean p pointer f float lp long pointer d double s string st structure sz ASCII string by byte n short int H handle x,y 分别为x,y坐标 dw DWORD fn function 表 2 词头 变量名 词头 变量名 task task sig signal sb binary semaphores wd watchdog sm mutual exclusion tm timer sc counting semaphores msg message pipe pipe 例: #define ARRAY_SIZE 24 /*规则5.1.1.1*/ int g_iFlag; class MyClass /*规则5.1.1.3*/ { }; void someFunc( ) /*规则5.1.1.2和5.1.1.4*/ { int nArray[ARRAY_SIZE]; unsigned char uchByte; char szName[ ]; char *pszName = szName; } (11)有些词头(如p和u)可以和其它词头组合。 例:WDOG_ID wdId; WDOG_ID g_wdId; /*全局watchdog Id,故以g_开头*/ 1.1.2名字的长度一般不要过长或过短。 过长的名字会增加工作量,使程序逻辑流程变得模糊;过短的名字无法表达符号的实际意义。 约定长度范围:3-31; 1.2数据和函数说明 1.2.1数据说明次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。 说明的先后次序应固定,应按逻辑功能排序,逻辑功能块内建议采用下列顺序:整型说明、实型说明、字符说明、逻辑量说明。 1.2.2如果设计了一个复杂的数据结构,应当通过注释对其变量的含义、用途进行说明。 1.2.3在函数的声明中使用异常声明。 如:void f() throw(toobig, toosmall, divzero); 在声明一个函数时,将它所抛出的异常列出,便于函数的使用者了解可能会发生哪些异常。 1.3 程序注释 1.3.1程序注释是程序员与日后的程序读者之间通信的重要手段之一,注释分为文件注释、函数注释和功能注释。 1.3.2正规程序的注释应注意: ——注释行的数量占到整个源程序的1/3到1/2。 1.3.3文件注释位于整个源程序的最开始部分,注释后空两行开始程序正文。 它包括: ——程序标题。 ——目的、功能说明。 ——文件作者、最后修改日期等说明。 例: ./******************************************************************** (空一行) 标题: Demo.c 功能: 测试VxWorks的各种系统调用. 说明: 该程序测试各种VxWorks的系统调用函数。 包括任务(taks)的创建、挂起及任务间通过信号灯实现同步,通过消息队列 进行通讯。 程序创建了两个任务:一个高优先级的任务和一个低优先级的任务。 两个任务间通过一个二进制的信号灯进行同步,通过消息队列进行通讯。 当前版本: x.x 修改信息: 2000.06.05 John, Initial Version 2000.07.05 Tom, Bug xxxx fixed **************************************************************/ (空2行,开始程序正文) 1.3.4 函数注释通常置于每函数或过程的开头部分,它应当给出函数或过程的整体说明对于理解程序本身具有引导作用。 一般包括如下条目: ——模块标题。 ——有关本模块功能和目的的说明。 ——调用格式 ——接口说明:包括输入、输出、返回值、异常。 ——算法。 如果模块中采用了一些复杂的算法。 例: file://(/注释开头应和上一函数空两行) (注释开头与上一函数最后一行间隔两行) /******************************************************************** 标题:assignmentComplete 功能:BSC=>MSC消息生成函数,生成assignment_complete指配完成消息(BSMAP消息) . 格式: int assignmentComplete(int iCellId, int iServiceChannnelNum, char *pszMSGData) throw(exception1, exception2) 输入: int iCellId: MS所在的小区识别 iCellId取值:0x00-——0xff int iServiceChannnelNum:MS所占的业务信道号码 输出: char * pszMSGData:指配完成消息数据 返回值: 0x00正常 异常:exception1异常情况1, exception2异常情况2 ********************************************************************/ ( 注释后直接开始程序正文,不空行。 ) 1.3.5功能性注释嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。 而不要解释下面怎么做,因为解释怎么做常常与程序本身是重复的。 例: /*把 amount 加到 total中*/ total = amount + total; 这样的注释仅仅是重复了下面的程序,对于理解它的工作并没有什么作用。 而下面的注释,有助于读者理解。 /*将每月的销售额amount加到年销售额total中*/ total = amount + total; 1.4 函数编写应尽可能短小精悍,一般不超过两屏,以便于调试和理解。 1.5语句结构 为保证语句结构的清晰和程序的可读性,在编写软件程序时应注意以下几个方面的问题: ——在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果。 ——每一个嵌套的函数块,使用一个TAB缩进(可以设定为4个空格),大括号必须放在条件语句的下一行,单独成一行,便于匹对: 如,有一段程序如下: for(i=1;i<n-1;i++){ t=1; for(j=i+1;j<n;j++){ if(a[j]<a[t] ) t=j; if(t!=i ){work=a[t];a[t]=a[I];a[I]=work;}}} 应写为 for( i=1; i<n-1; i++) { t=1; for(j = i+1; j<n; j++) { if(a[i]<a[j]) t=j; if(t!=1) { .5. Q/ECC/BJ 010—2001 work=a[t]; a[t]=a[i]; a[i]=work; } } } ——文件之中不得存在无规则的空行,比如说连续十个空行。 一般来讲函数与函数之间的空行为2-3行; 在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。 ——程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。 ——每行长度尽量避免超过屏幕宽度,应不超过80个字符。 ——除非对效率有特殊要求,编写程序要作到清晰第一,效率第二。 ——尽可能使用函数库。 ——尽量用公共过程或子程序去代替重复的功能代码段。 要注意,这个代码应具有一个独立的功能,不要只因代码形式一样便将其抽出组成一个公共过程或子程序。 ——使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。 如将 x=a*b/c*d 写成 x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。 ——避免不必要的转移。 ——避免采用过于复杂的条件测试。 ——避免过多的循环嵌套和条件嵌套。 ——建议不要使用 *=,^=, /=等运算符。 ——一个函数不要超过200行。 一个文件应避免超过2000行。 ——尽量避免使用go to语句。 ——避免采用多赋值语句,如x = y = z ; ——不鼓励采用?:操作符,如z = (a>b)?a:b; ——不要使用空的if else 语句。 如 if(cMychar >= ‘A’) if(cMychar <= ‘Z’) printf(“This is a letter \n”); else printf(“This is not a letter \n”); else到底是否定哪个if容易引起误解。 可通过加{}避免误解。 ——尽量减少使用“否定”条件的条件语句。 如: 把 if( !( (cMychar<’0’) || (cMychar>’9’) ) ) 改为if( (cMychar>=’0’) && (cMychar<=’9’)

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论