




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编程基础 第一讲 教师 徐生林 李轶 杭州电子科技大学编者 徐生林黄伟李轶 寄语 激情澎湃走楼梯 网盛集团总裁孙德良 主要内容 目的实习内容实习题目C语言的巩固程序编码的基本要求程序设计的一般方法 一 实习目的 学习软件技术的重要环节实习目的进一步巩固C语言基础知识学习程序设计的一般方法锻炼程序设计和实现的能力初步具备采用面向过程的方法设计较为复杂系统的程序设计能力为进一步学习OOP DataBase以及其它高级软件技术和从事计算机有关的工作奠定基础 二 实习内容 巩固C语言知识指针的理解和使用何谓指针指针的使用文件的操作文本文件与二进制文件C语言常用文件操作函数人机交互设计设计原则C语言字符界面设计的常用函数 二 实习内容 续 程序编码的基本要求C语言的文件结构程序的版式命名规则编码实现的过程程序流程图与编码实现帮助和资讯的使用技术试验的方法容错处理 二 实习内容 续 程序设计的一般方法功能分析与设计系统功能结构图功能流程图详细设计何谓详细设计 程序流程图程序设计工具 Visio Word 的使用 二 实习内容 续 编译和程序调试方法编译错误的分析和纠错程序调试方法系统测试系统测试的概念测试的内容测试的方法 三 实习题目 实习题目任务要求功能分析与设计 画出功能流程图和功能结构图根据系统的要求 设计名片文件的格式详细设计 针对每个功能 选择合适的数据结构 设计必要的计算方法 分析设计各个功能的程序流程图根据详细设计 完成系统的编码和调试对系统进行功能 可操作性 稳定性测试编写编程实习报告 并在答辩时上交 四 C语言巩固 指针的理解和使用何谓指针 指针是一个特殊的变量 它里面存储的是指向某片内存的首地址指针的内容指针的类型指针变量的类型 指针指向的类型指针指向内存区存储数据的类型 指针的值指向某片内存的首地址指针的地址指针作为一个变量 其本身有存储地址 该地址中存放指针的值 1 int ptr 指针的类型是int 2 char ptr 指针的类型是char 3 int ptr 指针的类型是int 4 int ptr 3 指针的类型是int 3 5 int ptr 4 指针的类型是int 4 1 int ptr 指针所指向的类型是int 2 char ptr 指针所指向的的类型是char 3 int ptr 指针所指向的的类型是int 4 int ptr 3 指针所指向的的类型是int 3 5 int ptr 4 指针所指向的的类型是int 4 四 C语言巩固 续 指针的理解和使用 续 一级指针 二级指针 实参与形参设原始变量为SVal 对应函数F的参数为TVal实参TVal为SVal的地址 或者为SVal的引用函数F修改TVal是直接修改SVal所在地址中的内容形参将SVal的值复制一份并赋给TVal函数F对TVal的修改与SVal无关特别说明如果要将指针作为实参 需将指针变量本身的地址作为实参 四 C语言巩固 续 文件的操作文本文件和二进制文件文本文件和二进制文件都是以二进制码存储的文本文件 ASCII文件 将数据转换为对应的字符型数据之后再写入文件数值 需要转换 如数字66 存储为0 x360 x36字符 直接以ASCII存储 如字符66 存储同上实际上是存储ASCII 需要转换 效率低二进制文件 流式文件 直接按照数据在内存中的表现形式写入文件 如数字66 存储为0 x42不需转换 效率高 输入输出字符流的开始和结束只由程序控制而不受物理符号 如回车符 的控制 如 int型数据在内存中用4个字节表示 则写这个int数据的时候直接把对应的内存中4个字节的内容写入文件 在此过程中数据不需要做任何转换 所以效率较高 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数这里只介绍标准函数文件指针FILEFILE 指针变量实际上是由系统定义的一个结构 该结构中含有文件名 文件状态和文件当前位置等信息 文件的操作都要引用该变量 打开文件 fopen 调用格式 FILE fopen char filename type filename 文件名 如 C TC Test DAT type 打开文件的类型 返回FILE指针 如果出错 将返回一个空指针值NULL 需要用此判断是否打开成功 字符含义 r 打开文字文件只读 w 创建文字文件只写 a 增补 如果文件不存在则创建一个 r 打开一个文字文件读 写 w 创建一个文字文件读 写 a 打开或创建一个文件增补 b 二进制文件 可以和上面每一项合用 t 文这文件 默认项 可以和上面每一项合用 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 关闭文件 fclose 调用格式 intfclose FILE stream stream 要关闭的文件的FILE指针变量返回 当文件关闭成功时 返回0 否则返回一个非零值 includemain FILE fp 定义一个文件指针 inti fp fopen CLIB rb 打开当前目录名为CLIB的文件只读 if fp NULL 判断文件是否打开成功 puts Fileopenerror 提示打开不成功 i fclose fp 关闭打开的文件 if i 0 判断文件是否关闭成功 printf O K 提示关闭成功 elseputs Filecloseerror 提示关闭不成功 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 文件的顺序写函数intfprintf FILE stream char format intfputs char string FILE steam intfputc intch FILE steam includemain char s That sgoodnews 定义字符串指针并初始化 inti 617 定义整型变量并初始化 FILE fp 定义文件指针 fp fopne test dat w 建立一个文字文件只写 fputs YourscoreofTOEFLis fp 向所建文件写入一串字符 fputc fp 向所建文件写冒号 fprintf fp d n i 向所建文件写一整型数 fprintf fp s s 向所建文件写一字符串 fclose fp 关闭文件 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 文件的顺序读函数intfscanf FILE stream char format charfgets char string intn FILE steam intfgetc FILE steam 说明 fscanf和fgetc错误时返回值为EOF 即 1 includemain char s m 20 inti FILE fp fp fopen test dat r 打开文字文件只读 fgets s 24 fp 从文件中读取23个字符 printf s s 输出所读的字符串 fscanf fp d 等待任一键 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 文件的随机读写函数随机读取文件中任意位置的信息intfseek FILE stream longoffset intfromwhere 将文件的位置指针设置到从fromwhere开始的第offset字节的位置上 为读写定位fromwhere 返回 返回0时表明操作成功 返回非0表示失败 符号常数数值含义 SEEK SET0从文件开头SEEK CUR1从文件指针的现行位置SEEK END2从文件末尾 includemain FILE fp if fp fopen test b dat rb NULL printf Can topenfile exit 1 fseek fp 8 SEEK SET fgetc fp fclose fp 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 文件的随机读写函数 续 intfread void buf intsize intcount FILE stream 从文件中读count个字段 每个字段长度为size个字节 并把它们存放到buf指针所指的缓冲器中intfwrite void buf intsize intcount FILE stream 把buf指针所指的缓冲器中 长度为size个字节的count个字段写到stream指向的文件中去 随着读和写字节数的增大 文件位置指示器也增大 读多少个字节 文件位置指示器相应也跳过多少个字节 读写完毕函数返回所读和所写的字段个数longftell FILE stream 返回文件位置指示器的当前值 返回 1时 表明出现错误 includemain floatf 6 3 2 4 34 25 04 0 1 50 56 80 5 定义浮点数组并初始化 inti FILE fp fp fopen test b dat wb 创建一个二进制文件只写 fwrite f sizeof float 6 fp 将6个浮点数写入文件中 fclose fp 关闭文件 四 C语言巩固 续 文件的操作 续 C语言常用文件操作函数 续 文件的随即读写函数 续 缓冲区刷新函数fflushintfflush FILE stream 将输出缓冲区的内容实际写入文件中 而将输入缓冲区的内容清除掉 文件结束判断函数feofintfeof FILE stream 检测文件位置指示器是否到达了文件结尾 若是则返回一个非0值 否则返回0 文件指针复位函数intrewind FILE stream 把文件位置指针移到文件开头 成功返回0 否则 返回非0 includemain FILE fp intdat 100 fp fopen test b dat rb 打开一个二进制文件只读 if fread dat sizeof int 100 fp 100 判断是否读了100个数 if feof fp printf Endoffile 不到100个数文件结束 elseprintf Readerror 读数错误 fclose fp 关闭文件 四 C语言巩固 续 人机交互设计人机交互设计的原则用户原则人机界面设计首先要确立用户类型 划分类型可以从不同的角度 视实际情况而定 确定类型后要针对其特点预测他们对不同界面的反应 这就要从多方面设计分析 信息最小量原则人机界面设计要尽量减少用户记忆负担 采用有助于记忆的设计方案帮助和提示原则要对用户的 作命令作出反应 帮助用户处理问题 系统要设计有恢复出错现场的能力 在系统内部处理工作要有提示 尽量把主动权让给用户 四 C语言巩固 续 人机交互设计 续 C语言字符界面设计常用函数标准输入输出函数格式化输入输出函数 printf 和scanf 非格式化输入输出函数 puts 和gets 字符输入输出函数 putchar 输出字符getchar 输入字符并回显 等到回车时返回 getche 输入字符并回显 不必等待回车而立即返回 getch 输入字符但不回显 不必等待回车而立即返回 由于上机时使用的是VC6 C 对getche和getch函数是否支持 笔者尚未考证 需要大家查证 五 程序编码的基本要求 C语言文件的结构头文件和定义文件头文件保存程序的申明 扩展名 h可以包含其它头文件通过头文件来调用库功能 在很多场合 源代码不便 或不准 向用户公布 只要向用户提供头文件和二进制的库即可 用户只需要按照头文件中的接口声明来调用库功能 而不必关心接口怎么实现的 编译器会从库中提取相应的代码目录结构 如果一个软件的头文件数目比较多 如超过十个 通常应将头文件和定义文件分别保存于不同的目录 以便于维护 定义文件保存文件的定义 扩展名 C CPP C CC Unix 一般包含某些头文件 五 程序编码的基本要求 续 C语言文件的结构 续 版权和版本的申明位于头文件和定义文件的开头主要内容版权信息文件名称 标识符 摘要当前版本号 作者 修改者 完成日期版本历史信息举例 Copyright c 2001 上海贝尔有限公司网络应用事业部 Allrightsreserved 文件名称 filename h 文件标识 见配置管理计划书 摘要 简要描述本文件的内容 当前版本 1 1 作者 输入作者 或修改者 名字 完成日期 2001年7月20日 取代版本 1 0 原作者 输入原作者 或修改者 名字 完成日期 2001年5月10日 五 程序编码的基本要求 续 C语言文件的结构 续 头文件的结构主要组成头文件开头处的版权和版本声明预处理块函数和类结构声明等规则和建议规则1 为了防止头文件被重复引用 应当用ifndef define endif结构产生预处理块规则2 用 include格式来引用标准库的头文件 编译器将从标准库目录开始搜索 规则3 用 include filename h 格式来引用非标准库的头文件 编译器将从用户的工作目录开始搜索 建议 头文件中只存放 声明 而不存放 定义 graphics h 版权和版本声明见上例 此处省略 ifndefGRAPHICS H 防止graphics h被重复引用 defineGRAPHICS H include 引用标准库的头文件 include myheader h 引用非标准库的头文件 voidFunction1 全局函数声明 classBox 类结构声明 endif 五 程序编码的基本要求 续 C语言文件的结构 续 定义文件的结构主要组成定义文件开头处的版权和版本声明对一些头文件的引用程序的实现体 包括数据和代码 graphics CPP 版权和版本声明见示例1 1 此处省略 include graphics h 引用头文件 全局函数的实现体voidFunction1 类成员函数的实现体voidBox Draw 五 程序编码的基本要求 续 程序的版式影响可读性和可维护性 追求清晰 美观空行规则1 在每个类声明之后 每个函数定义结束之后都要加空行 规则2 在一个函数体内 逻揖上密切相关的语句之间不加空行 其它地方应加空行分隔代码行规则1 一行代码只做一件事情 如只定义一个变量 或只写一条语句 这样的代码容易阅读 并且方便于写注释规则2 if for while do等语句自占一行 执行语句不得紧跟其后 不论执行语句有多少都要加 这样可以防止书写失误建议 尽可能在定义变量的同时初始化该变量 就近原则 intwidth 宽度intheight 高度intdepth 深度x a b y c d z e f if width height dosomething for initialization condition update dosomething 空行other 五 程序编码的基本要求 续 程序的版式 续 代码行内的空格规则1 关键字之后要留空格 象const virtual inline case等关键字之后要留一个空格 否则无法辨析关键字 象if for while等关键字之后应留一个空格再跟左括号 以突出关键字规则2 函数名之后不要留空格 紧跟左括号 以与关键字区别规则3 之后要留空格 如Function x y z 如果 不是一行的结束符号 其后要留空格 如for initialization condition update 规则4 赋值操作符 比较操作符 算术操作符 逻辑操作符 位域的二元操作符 其前后应当加空格规则5 一元操作符如 等前后不加空格 还有 等建议 对于表达式比较长的for语句和if语句 为了紧凑起见可以适当地去掉一些空格 voidFunc1 intx inty intz 良好的风格voidFunc1 intx inty intz 不良的风格if year 2000 良好的风格if year 2000 不良的风格if a b 五 程序编码的基本要求 续 程序的版式 续 对齐规则1 程序的分界符 和 应独占一行并且位于同一列 同时与引用它们的语句左对齐规则2 之内的代码块在 右边数格处左对齐规则3 如果出现嵌套的 则使用缩进对齐 voidFunction intx programcode if condition programcode else programcode for initialization condition update programcode 五 程序编码的基本要求 续 程序的版式 续 长行拆分规则1 代码行最大长度宜控制在70至80个字符以内 代码行不要过长 否则眼睛看不过来 也不便于打印规则2 长表达式要在低优先级操作符处拆分成新行 操作符放在新行之首 以便突出操作符 拆分出的新行要进行适当的缩进 使排版整齐 语句可读 if very longer variable1 very longer variable12 五 程序编码的基本要求 续 命名规则微软 匈牙利 法繁琐 inti j k 需写成intiI iJ ik 前缀i表示int类型共性规则R1 标识符应当直观且可以拼读 可望文知意 不必进行 解码 标识符最好采用英文单词或其组合 便于记忆和阅读 切忌使用汉语拼音来命名 程序中的英文单词一般不会太复杂 用词应当准确 例如不要把CurrentValue写成NowValueR2 标识符的长度应当符合 min length max information 原则一般来说 长名字能更好地表达含义 所以函数名 变量名 类名长达十几个字符不足为怪 但要尽量短些 常见的i j k m n x y z等通常可用作函数内的局部变量R3 命名规则尽量与所采用的操作系统或开发工具的风格保持一致如Windows应用程序的标识符通常采用 大小写 混排的方式 如AddChild 而Unix应用程序的标识符通常采用 小写加下划线 的方式 如add child 别把这两类风格混在一起用 五 程序编码的基本要求 续 命名规则 续 共性规则 续 R4 程序中不要出现仅靠大小写区分的相似的标识符R5 程序中不要出现标识符完全相同的局部变量和全局变量 尽管两者的作用域不同而不会发生语法错误 但会使人误解R6 变量的名字应当使用 名词 或者 形容词 名词 R7 全局函数的名字应当使用 动词 或者 动词 名词 动宾词组 类的成员函数应当只使用 动词 被省略掉的名词就是对象本身R8 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等建议 尽量避免名字中出现数字编号 如Value1 Value2等 除非逻辑上的确需要编号 这是为了防止程序员偷懒 不肯为命名动脑筋而导致产生无意义的名字 因为用数字编号最省事 五 程序编码的基本要求 续 命名规则 续 简单的Windows应用程序命名规则R1 类名和函数名用大写字母开头的单词组合而成R2 变量和参数用小写字母开头的单词组合而成R3 常量全用大写的字母 用下划线分割单词R4 静态变量加前缀s 表示static R5 全局变量加前缀g 表示global R6 类的数据成员加前缀m 表示member 这样可以避免数据成员与成员函数的参数同名R7 为了防止某一软件库中的一些标识符和其它软件库中的冲突 可以为各种标识符加上能反映软件性质的前缀 例如三维图形标准OpenGL的所有库函数均以gl开头 所有常量 或宏定义 均以GL开头 五 程序编码的基本要求 续 编码实现的过程自顶向下方法先编写主 控 程序 并调试之 再逐个实现每个功能在实现每个功能时 依然可以采用自顶向下的方法在实现每个函数时 也可以采用这种逐步推进的方法特点全局观念清晰 逐步调试推进 成就感强 比较适合初学者自底向上方法先编写具体的功能函数 调试之 再集成调试特点各个击破 如搭积木 适合大系统的协同开发上述两种方法常常综合使用 五 程序编码的基本要求 续 程序流程图与编码实现原则性 编码实现时应严格遵循程序流程图动态性 由于在实现前设计的流程图可能考虑不周 如实现技术的局限性 可以适时调整程序流程图 但对流程图的更改必须审慎 应考虑修改部分对上下流程 其它功能处理的影响 可操作性 根据流程图 可以将具体函数的处理过程分节 写上注释 在逐个具体实现 这样 在编程时 思路清晰 不容易出错 可以锻炼程序设计的全局观念 VoidAddStudent pstStudent pStud stStudentobjStud 下面对参数进行合法性检验 下面对申请内存 下面将节点添加到链表中 五 程序编码的基本要求 续 帮助和资讯的使用在线帮助是程序员的得力助手在线帮助的使用效果随着程序员技术的不断积累提高而提升网上咨讯也将为程序员提供学习的广阔空间对于初程 以基础知识为主的参考书是最直接的资料提示 大多数平台或开发语言的函数名称 参数 功能具有相似性 如取系统时间的函数Time Date Now CurrentTime等 这为我们提供了查找具有某功能的函数的想象空间技术试验的方法来由由于要使用某个自己不能把握的新技术或者尚不熟悉的函数 往往不能直接拿来使用 需要测试或试验其使用方法和结果 方法单独写一个简单的程序 试验其使用方法和结果在系统中利用调试的方法来测试和试验 五 程序编码的基本要求 续 容错处理含义由于程序本身计算或用户操作可能造成的错误 引起异常 程序应该具有相应的处理 防止程序不能正常工作乃至异常退出 容错技术C 提供了完备的异常处理机制 但C语言没有 需要采用预先判断的方法加以处理C语言容易出现异常的情况申请内存不成功除数为0函数参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文学经典传承:古诗文教学方案
- 市场渠道合作合同规范
- 《新编商务应用文写作》教学参考汇 李奕轩 模块1-9 商务应用文写作基础-大学生实文书
- 早读课件教学课件
- 早期阅读遇见春天课件
- 早产儿陪护知识培训内容课件
- 2025年美容师(美容美发)理论知识考核试卷
- 纪委信访监督课件
- 纪委业务知识培训心得
- 莆田市历年中考数学试卷
- 设备巡回检查管理制度
- 产房安全核查管理制度
- 2025至2030年中国水利工程勘察设计行业市场全景评估及发展趋向研判报告
- 阿尔茨海默症的护理
- 2024中级经济师《工商管理》真题和答案
- (2025)公共基础知识考试试题附及答案
- 中国五矿笔试题库及答案
- 2024年1月高考真题浙江卷英语试题(真题+答案)
- T/CCMA 0147-2023异型吊篮安装、使用和拆卸安全技术规程
- DB31/T 375-2022柑橘栽培技术规范
- 2025年茶叶加工工职业技能竞赛参考试题库500题(含答案)
评论
0/150
提交评论