第10章 程序设计语言和编码C
JAVA程序设计第10章
Runnable接口 接口
• Runnable接口是 接口是ng包中的一个接口, 包中的一个接口, 接口是 包中的一个接口 它只提供了一个抽象的run方法,为: 方法, 它只提供了一个抽象的 方法 public void run() • 通过实现 通过实现Runnable接口进行多线程编程, 接口进行多线程编程, 接口进行多线程编程 只需实现Runnable接口的 接口的run方法,然后通 方法, 只需实现 接口的 方法 过Thread类中包含 类中包含Runnable类型参数的构 类型参数的构 类中包含 造方法创建并运行线程就可以了 。
• Thread(Runnable target,String name) ,
– 创建一个新的线程对象,并为线程对象命名为参数 name的值,以参数target为运行对象。
Thread类 类
• 1.Thread类中的静态方法 . 类中的静态方法 • public static boolean interrupted()
– 同步方法:用synchronized修饰的方法实现同步。 – 同步语句:用synchronized语句实现同步。
同步方法
• 同步方法的实现非常简单,只需要在方法定义时, 同步方法的实现非常简单,只需要在方法定义时, 在方法名前面添加synchronized关键字。同步方 关键字。 在方法名前面添加 关键字 法实现的语法如下: 法实现的语法如下: • synchronized returnType functionName (paralist){ ){ • //方法体实现 //方法体实现 • } • 其中,returnType为方法的返回类型, 其中, 为方法的返回类型, 为方法的返回类型 functionName为方法的名字,paralist为方法的 为方法的名字, 为方法的名字 为方法的 参数。 关键字修饰的方法, 参数。由synchronized关键字修饰的方法,在同 关键字修饰的方法 一时刻只能被一个线程访问。 一时刻只能被一个线程访问。
C语言程序设计全套教学教程完整版电子课件最全ppt电子教案
上一页 下一页
目录
8.1 指针的概念、定义和引用 8.1.1 指针的概念 8.1.2 指针变量的定义 8.1.3 指针变量的引用 8.2 指针与函数 8.2.1 指针变量作函数参数 8.2.2 返回值为指针的函数 8.2.3 通过指针调用函数
上一页 下一页
Hale Waihona Puke 目录8.3 指针与数组 8.3.1 指针与数组的关系 8.3.2 数组名作函数参数的指针解释 8.3.3 指针数组 8.3.4 多级指针 8.4 指针与字符串 8.4.1 字符串的表示形式 8.4.2 字符串指针作函数参数
2.汇编语言
汇编语言的指令与机器语言的指令基本上保持了一一对应的关系。与 机器语言比起来,汇编语言易记、易读、易检查、易修改,但却不能 被计算机直接识别和执行,必须由翻译程序翻译成机器语言程序后才 能执行。汇编语言仍然是面向特定计算机的语言,也仍然是低级语言
下一页
返回
1.1 程序设计语言概述
3.高级语言 高级语言是接近人类自然语言和数学语言的程序设计语言,具有以下
上一页 下一页
目录
5.2 do-while语句 5.3 for语句 5.4 break和continue语句 5.5 多重循环 5.6 综合应用举例 第6章 数组 6.1 数组概述 6.2 一维数组
上一页 下一页
目录
6.2.1 一维数组的定义 6.2.2 一维数组的引用 6.2.3 一维数组的初始化 6.2.4 一维数组的程序举例 6.3 二维数组 6.3.1 二维数组的定义 6.3.2 二维数组的引用 6.2.3 二维数组的初始化
翻译成目标程序,然后执行该目标程序。解释方式是把源程序逐句翻
上一页 下一页 返回
1.1 程序设计语言概述
C语言程序设计第10章文件及其应用
学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。
流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。
大一上学期第10章 程序设计基础
2
程序设计的基本步骤: 程序设计的基本步骤: (1)分析问题,确定数学模型或方法。 分析问题, 分析问题 确定数学模型或方法。 (2)设计算法,画出流程图。 设计算法, 设计算法 画出流程图。 (3)选择编程工具,按算法编写程序。 选择编程工具, 选择编程工具 按算法编写程序。 (4)调试程序,分析输出结果。 调试程序, 调试程序 分析输出结果。
10
10.2.5 算法示例
1.迭代算法 . 迭代是一种建立在循环基础上的算法。在数学中, 迭代是一种建立在循环基础上的算法。在数学中, 迭代经常被用来进行数值计算,例如求方程的解, 迭代经常被用来进行数值计算,例如求方程的解, 不断用变量原来的值递推求新的值的过程。 不断用变量原来的值递推求新的值的过程。 讨论求若干个数之和或乘积的问题。 讨论求若干个数之和或乘积的问题。
15
(2)折半查找 )
作为折半查找的表必须是顺序存储的有序表, 作为折半查找的表必须是顺序存储的有序表,即表采 用顺序结构存储,表中的元素按关键字值递增(或递减) 用顺序结构存储,表中的元素按关键字值递增(或递减) 排列。 排列。 假设表中的关键字值递增排列, 假设表中的关键字值递增排列,则折半查找的实现方 法是:首先取整个有序表的中间元素A 法是:首先取整个有序表的中间元素 m的关键字同给定 比较, 值x比较,若相等,则查找成功;否则,若Am的关键字小 比较 若相等,则查找成功;否则, 于x,则说明待查元素只可能落在表的后半部分中,接着 ,则说明待查元素只可能落在表的后半部分中, 只要在表的后半部分子表中查找即可; 只要在表的后半部分子表中查找即可;若 Am的关键字大 于x,则说明待查元素只可能落在表的前半部分中,接着 ,则说明待查元素只可能落在表的前半部分中, 只要在表的前半部分子表中查找即可。这样, 只要在表的前半部分子表中查找即可。这样,经过一次关 键字的比较,就缩小一半的查找空间,重复进行下去, 键字的比较,就缩小一半的查找空间,重复进行下去,直 到找到关键字为x的元素 或者表中没有待查元素( 的元素, 到找到关键字为 的元素,或者表中没有待查元素(此时 查找区间为空)为止。 查找区间为空)为止。
程序设计语言编译原理第三版第10章
§10.2 局部优化
举例:考察下面的三地址代码程序
(1)Read X
(2)Read Y
B1
(3)R:=X mod Y (4)if R=0 goto (8) B2
(5)X:=Y
(6)Y:=R
B3
(7)goto(3)
(8)write Y B4
(9)halt
B1
B2
B3
B4
§10.2 局部优化
3.流图及其生成
标识符(包括常数)-结点 NODE(A)-描述上述对应关系的函数,其值或者是一个结点的编号,
或者无定义
(2)中间代码的三种形式:A:=B A:=op B A:=B op C 或 A:=B[C]
(3)构造算法: ①开始,DAG为空 ②对基本块中每一条中间代码式,依次执行以下步骤:
§10.2 局部优化
步骤: 1.如果NODE(B)无定义,则构造一标记为B的叶结点并定义
NODE(B)为这个结点 如果当前代码是0型,则记NODE(B)的值为n,转4 如果当前代码是1型,则转2(1) 如果当前代码是2型,则(ⅰ)如果NODE(C)无定义,则构造一标 记
为C的叶结点并定义NODE(C)为这个结点;(ⅱ)转2(2)
(1)T0:=3.14 (2)T1:=2*T0 (3)T2:=R+r (4)A:=T1*T2 (5)B:=A (6)T3:=2*T0 (7)T4:=R+r (8)T5:=T3*T4 (9)T6:=R-r (10)B:=T5*T6
(4)代数变换
§10.2 局部优化
二、基本块的DAG表示及其应用
1.基本块的DAG:
一种结点带有下述标记或附加信息的DAG
(1)图的叶结点以一标识符(变量名)或常数作为标记,表示该 结点代表该变量或常数的值。
c程序设计第4版
c程序设计第4版C程序设计第4版C语言是一种通用的、过程式的计算机程序设计语言,广泛用于系统软件与应用软件的开发。
自从1972年由丹尼斯·里奇在贝尔实验室开发以来,C语言已经成为计算机编程领域的基石之一。
随着计算机科学的发展,C语言也在不断地更新和完善,其中《C程序设计》这本书就是学习C语言的重要教材之一。
第1章:C语言概述在第4版中,C语言概述部分会对C语言的历史、特点以及它在现代编程中的地位进行介绍。
C语言以其高效性、灵活性和广泛的应用领域而著称。
本章还会简要介绍C语言的基本语法结构和编程范式。
第2章:C语言基础本章将详细介绍C语言的基本元素,包括数据类型、变量声明、运算符和表达式。
此外,还会讲解控制语句,如if语句、switch语句、循环语句(for、while、do-while)等,这些都是编写C程序时不可或缺的基础。
第3章:函数函数是C语言中实现代码复用的重要手段。
本章将介绍函数的定义、声明、调用以及参数传递机制。
同时,也会探讨递归函数的概念和应用。
第4章:数组和字符串数组是存储固定大小同类型元素的集合,而字符串实际上是字符数组的一种特殊形式。
本章将深入讲解一维数组和多维数组的使用,以及字符串处理函数的应用。
第5章:指针指针是C语言中非常强大的一个特性,它允许程序员直接操作内存地址。
本章将介绍指针的基本概念、指针与数组的关系、指针的算术运算以及函数指针等高级主题。
第6章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。
本章将讲解如何定义和使用结构体、联合体以及枚举类型,以及它们在实际编程中的应用。
第7章:预处理器预处理器是C语言编译过程中的一个阶段,它提供了宏定义、文件包含、条件编译等功能。
本章将详细介绍预处理器的使用方法和技巧。
第8章:文件操作文件操作是程序与外部世界交互的一种方式。
本章将介绍如何在C语言中打开、读取、写入和关闭文件,以及文件指针的概念。
第9章:动态内存分配动态内存分配允许程序在运行时申请和释放内存。
精品课件-程序设计基础(C语言)(杨俊清)-第10章
第10章 文 件
typedef struct {
shortlevel; 的程度*/
unsigned flags; charfd; unsigned charhold; 读取字符*/ shortb size; unsigned char*buffer; 置*/ unsignedar *curp; unsigned istemp; short token;
if ((fp=fopen("file1","r"))==NULL) {
printf("cannot open this file\n"); exit(0); }
第10章 文 件
即先检查打开的操作有否出错,如果有错就在终端上输出 “cannot open this file”。exit函数的作用是关闭所有文 件,终止正在调用的过程。待用户检查出错误,修改后再运行。
第10章 文 件
第10章 文 件
10.1 文件概述 10.2 文件的读写 10.3 文件定位 习题
第10章 文 件
10.1 文 件 概 述 文件(file)是程序设计中一个重要的概念。所谓“文 件”,一般指存储在外部介质上数据的集合。一批数据是以文 件的形式存放在外部介质(如磁盘)上的。操作系统是以文件为 单位对数据进行管理的,也就是说,如果想找存在外部介质上 的数据,必须先按文件名找到所指定的文件,然后再从该文件 中读取数据。要向外部介质上存储数据,也必须先建立一个文 件(以文件名标识),才能向它输出数据。
第10章 文 件
说明: (1) 用“r”方式打开的文件只能用于向计算机输入而不 能用作向该文件输出数据,而且该文件应该已经存在。不能用 “r”方式打开一个并不存在的文件(即输入文件),否则出错。 (2) 用“w”方式打开的文件只能用于向该文件写数据 (即输出文件),而不能用来向计算机输入。如果原来不存在该 文件,则在打开时新建立一个以指定的名字命名的文件。如果 原来已存在一个以该文件名命名的文件,则在打开时将该文件 删去,然后重新建立一个新文件。 (3) 如果希望向文件末尾添加新的数据(不希望删除原有 数据),则应该用“a”方式打开。但此时该文件必须已存在, 否则将得到出错信息。打开时,位置指针移到文件末尾。
高树芳C语言程序设计--第十章
[解决方案]定义结构体类型变量存储学生信息,
使用scanf从键盘输入数据,使用fprintf函数按格 式输出数据到文件(生成data3.txt文件)。
程序代码
10
10.2
文件的读写
相关知识:
1.文件的读写 2.格式化读写函数
11
10.2
文件的读写
[课堂训练10-1] 1.使用Windows的记事本建立一个文件,其 中写入15个任意整数,数据之间用逗号分隔。 编程输出该文件所有的奇数。 2.编程以只读方式打开案例10-3中的 data3.txt文件,在屏幕上输出所有学生的数 据。
第10章
文件
知识目标: 1. 理解文件和文件指针的概念 2.掌握文件的打开和关闭方法 3.掌握文件的读写操作 4.掌握文件的定位与随机读写操作
1
第10章 文件 能力目标: 1. 会打开和关闭文件 2.会对文件进行读写和定位等操作
本章内容: 文件的定义,文件型指针,文件的打开与关闭,文件 的读写,文件的定位与随机读写。
2
第10章 10.1 10.2 10.3 10.4
文件
文件的打开与关闭 文件的读写 文件的定位和随机读写 知识拓展
3
10.1 文件的打开与关闭
案例10-1
输出文件中的整数及其和
4
10.1 文件的打开与关闭
案例10-1 [案例任务]
输出文件中的整数及其和
使用Windows的记事本在磁盘上与C程序文件在同一目 录下建立一个文件名为“data1.txt”的文本文件(如 图10-1所示),以空格、制表符或回车为分隔符输入 任意个整数,设计C程序,以只读方式打开此文件,若 该文件不存在,则输出“不能打开文件!”,若打开 成功,则输出所有整数,以及整数的个数和它们之和。
大学计算机基础第10章 程序设计基础
4. 程序设计的基本控制结构
4.2 选择(分支)结构 (1)单路分支选择结构 单路分支选择结构是根据判断结构入口点处的条件来 决定下一步的程序流向。如果条件为真则执行语句组1, 否则什么也不执行直接到达结构的出口点处。
4. 程序设计的基本控制结构
4.2 选择(分支)结构 (2)双路分支选择结构 两路分支选择结构是根据判断结构入口点处的条件来 决定下一步的程序流向。如果条件为真则执行语句组1, 否则执行语句组2。
• 操作码:表示计算机该做什么操作 • 操作数:表示计算机该对哪些数据做怎样的操作
1.2.2 指令系统
• 一台计算机所能执行的全部操作指令称为它的指令系统
1.程序和程序设计
1.3 程序设计
• 学习目的 • 程序设计步骤
• • • • • • 分析问题,确定解决方案 建立数学模型 确定算法(算法设计) 编写源程序 程序调试 整理资料
2.结构化程序设计的基本原则
2.2 程序设计的风格
• • • • 程序设计的风格 程序设计语言运用的风格 程序文本的风格 输入/输出的风格
2.结构化程序设计的基本原则
2.3 结构化程序设计的原则 荷兰学者迪克特拉(Dijkstra)提出了一套方法,它规 定程序要具有合理的结构,以保证和验证程序的正确性。 (1)自顶向下 (2)逐步求精 (3)模块化 (4)限制使用Go To语句
3.算法
• 3.3 算法的描述
(3)流程图 流程图是一种传统的算法表示法,它利用几何图形的框来 代表各种不同性质的操作,用流程线来指示算法的执行方向。
流程图的常用符号
符 号 符 号 名 称 起止框 输入/输出框 处理框 判断框 流向线 连接点 含 义 表示算法的开始或结束 表示输入/输出操作 表示对框内的内容进行处理 表示对框内的条件进行判断 表示算法的流动方向 表示两个具有相同标记的“连接点”相连
单片机的C语言编程
3) 指针指向的存贮区的数据类型,即被指向的存贮区以多少个单元作
一个数据单位,当程序通过指针对该区操作时,将按此规定的单元个数 的内容作为一个数据操作。 4) 指针变量自身的存贮类型,即指针处于什么区与自身的长度无关, 该声明可位于声明语句的开头,也可在“*”和变量名之间。此项由编 译模式放在默认区,如无规定编译模式,通常在data区。
表10-2 汇编语言和C语言的对照
注: 上表省略了汇编语言程序中对符号地址n和m用EQU伪指令进行具体地 址定义的 语句以及C语言对变量n、m和指针变量P进行类型定义的语句,实 际程序设计中,此步是不可 缺少的。表中&为取地址运算符,*为取内容运 算符。
第10章 单片机C语言编程
(2)指针型数据的类型 由于C51是结合51单片机硬件的,51单片机的不同存贮空间,有不同 的地址范围,即使对于同一外部数据存贮器,又有用@Ri分页寻址(Ri为 八位)和用@DPTR寻址(DPTR为十六位)两种寻址方式,而指针本身也是 一个变量,有它存放的存贮区和数据长度。因此,在指针类型的定义中要 说明:被指的变量的数据类型和存贮类型;指针变量本身的数据类型(占 几个字节)和存贮类型(即指针本身存放在什么存贮区)。 例如类型定义为data或idata,表示指针指示内部数据存贮器;而pdata 表示指针指向外部数据存贮器,用@Ri间址。以上均为八位地址;而类型 code/xdata表示指针指向外部程序存贮器或外部数据存贮器指针,本身 (即被指 示地址)应为十六位长度。如果想使指针能适用于指向任何存贮空 间,则可以定义指针为通用型,此时指针长度为3字节,第一字节表示存 贮器类型编码,第二、三字节分别表示所指 地址的高位和低位。第一字 节表示的存贮器类型编码见表10-3:
第10章 单片机C语言编程
程序设计语言与编码
3. 软件执行的环境 良好的编程环境不但有效提高软件生产率, 同时
能减少错误,有效提高软件质量。近几年推出了许多 可视化的软件开发环境, 如Visual BASIC, Visual C, Visual FoxPro及Delphi(面向对象的Pascal)等, 都提供了强有力的调试工具, 帮助你快速形成高质 量的软件。
29
(2) 程序应加注释。 注释是程序员与读者之间通信 的重要工具,用自然语言或伪码描述。它说明了程序 的功能,特别在维护阶段, 对理解程序提供了明确 指导。注释分序言性注释和功能性注释。
30
序言性注释应置于每个模块起始部分, 主要内容有: ① 说明每个模块的用途、 功能。 ② 说明模块的接口即调用形式、 参数描述及从属模 块的清单。 ③ 数据描述: 指重要数据的名称、 用途、 限制、 约束及其他信息。 ④ 开发历史: 指设计者、 审阅者姓名及日期, 修 改说明及日期。
(2) 一个语句说明多个变量时, 各变量名按字典序 排列。
(3) 对于复杂的数据结构, 要加源自释, 说明在程序 实现时的特点。33
3. 语句构造 语句构造的原则为:简单直接,不能为了追求效
率而使代码复杂化。为了便于阅读和理解,不要一行 多个语句。不同层次的语句采用缩进形式,使程序的 逻辑结构和功能特征更加清晰。 要避免复杂的判定条 件,避免多重的循环嵌套。表达式中使用括号以提高 运算次序的清晰度等。
31
功能性注释嵌入在源程序内部,说明程序段或语句的 功能以及数据的状态。 ① 注释用来说明程序段, 而不是每一行程序都要加 注释。 ② 使用空行或缩进或括号, 以便很容易区分注释和 程序。 ③ 修改程序也应修改注释。
32
2. 数据说明
为了使数据定义更易于理解维护,有以下指导原则: (1) 数据说明顺序应规范,使数据的属性更易于查找, 从而有利于测试、纠错与维护。例如按常量说明、类 型说明、 全程量说明及局部量说明顺序。
C语言程序设计(第3版)第10章补充习题及答案
第10章补充习题及答案习题10.1 选择题(1)当已存在一个abc.txt文件时,执行函数fopen("abc.txt","r+")的功能是。
A.打开abc.txt文件,清除原有的内容B.打开abc.txt文件,只能写入新的内容C.打开abc.txt文件,只能读取原有内容D.打开abc.txt文件,可以读取和写入新的内容(2)若用fopen()函数打开一个已存在的文本文件,保留该文件原有内容,且可以读,可以写。
则文件打开模式是。
A."ab+" B."w+" C."a+" D."a"(3)以下不能将文件指针重新移到文件开头位置的函数是。
A.rewind(fp); B.fseek(fp,0,SEEK_SET);C.fseek(fp,-(long)ftell(fp),SEEK_CUR); D.fseek(fp,0,SEEK_END);(4)若用fopen()函数打开一个新二进制文件,该文件可以读也可以写,则文件的打开模式为 B 。
A."ab+" B."wb+" C."rb+" D."a+"(5)fread(buffer,64,2,fp)的功能是。
A.从fp所指的文件中读取64并存入buffer中B.从fp所指的文件中读取64和2并存入buffer中C.从fp所指的文件中读取64个字节的数据并存入buffer中D.从fp所指的文件中读取2个64字节的数据并存入buffer中(6)以下程序的功能是。
提示:PRN是打印设备。
#include <stdio.h>void main(){ FILE * fp;char chStr[]="HELLO";fp=fopen("PRN","w");fputs(chStr,fp);fclose(fp);}A.在屏幕显示HELLO B.把HELLO存入PRN文件中C.在打印机上打印出HELLO D.以上都不对10.2 填空题(1)使用fopen("abc","r+")打开文件时,若"abc"文件不存在,则返回。
C语言程序设计第10章 编译预处理简明教程PPT课件
(2)定义一个宏名字之后,可以在其他宏定义中使用它。 如: #define ONE 1 #define TWO ONE+1 #define THREE ONE+TWO
计算机科学与技术学院—— C语言程序设计
10.2 #define
例10-1 宏定义及其使用 #define MESSAGE “You are right!\n”
计算机科学与技术学院—— C语言程序设计
第十章 编译预处理 内容提要
C预处理程序 #define
#include
条件编译指令
#undef
计算机科学与技术学院—— C语言程序设计
10.3 #include
10.3 #include
程序中的#include指令要求编译程序读入另一个源文件。被读入 文件的名字必须由双引号(”)或一对尖括号(<>)包围。如: #include”stdio.h” 或 #include<stdio.h> 都令编译程序读入并编译用于I/O函数处理的包含文件stdio.h。
计算机科学与技术学院—— C语言程序设计
10.3 #include
说明: (1)包含文件中还可以包含其它文件,称为嵌套包含(nested includes)。允许的最大嵌套深度随编译程序而变。 (2)用尖括号包围头文件时,搜索头文件时按编译程序的预先定 义进行,一般只搜索某些专门放置包含头文件的特殊目录。当头 文件用双引号包围时,搜索按编译程序实现时的规定进行,一般 指搜索当前目录,如未发现头文件,则再按尖括号包围时的办法 重新搜索。
10.2 #define
(4)#define指令还有一个重要功能:宏名字可以有变元。每当遇 到宏名字时,与之有关的变元都由程序中的实际变元替换。如上 例中的#define ABS(a) (a)<0?-(a):(a)。但要注意,#define ABS(a) (a)<0?-(a):(a)中变元a两边的括号是不能少的,否则, 会产生非预期结果。如: #define ABS(a) a<0?-a:a printf(”abs of (10-20):%d\n”,ABS(10-20)); ABS(10-20)替换为:10-20<0?-10-20:10-20,则输出结果为-30。
精品课件-C程序设计(第三版)(荣政)-第10章
第十章 文件
二进制文件是将数据按其在内存中的二进制形式直接存 入文件。 这种形式可以节省存储空间, 减少转换时间, 在 读/写大批数据时速度较快, 一般中间结果数据常用二进制 文件保存。
但二进制文件不能直接输出字符形式, 所以不便于阅读。
整数5678在两种不同文件中的存储形式如图10.1所示。 从图中可看出, 整数5678在ASCII码文件中占用了4个字节, 而在二进制文件中只占用了2个字节。
第十章 文件
数据流是对数据输入/输出(I/O)行为的一种抽象。各种 各样的终端设备或磁盘文件的细节是非常复杂多样的(例如磁 盘文件既允许顺序存取,又允许随机存取,而作为终端的设 备文件就只能顺序存取),直接对它们编程将会非常繁琐。引 入数据流的概念有效地解决了这一难题。只要建立了输入/输 出数据流,编程者在应用程序中就不需要关心底层输入/输出 设备或是任何磁盘文件的具体细节差异。程序中要输入数据, 只需从输入数据流中读入; 输出数据只需向输出数据流中写 出即可,这样就使程序完全与具体硬件资源脱离了关系,也 就是说数据流使C程序与具体系统完全不相关,使C程序可以 非常方便地移植。
第十章 文件
在一个程序开始执行时,三个预定义的文字流: stdin(标准输入)、stdout(标准输出)和stderr(标准出错) 就被打开,有的系统还同时打开stdprn(标准打印机)和 stdaux(标准辅助设备,大多数系统是控制台)。
对编程人员来说,所有的I/O通过流来进行。所有的 流都一样,都是一系列字符。文件I/O系统把流与文件, 也就是与有I/O功能的外部设备连接起来。C语言的I/O库 函数把来自设备的源信息转换到流之中,或反过来把流中 的信息转换给各设备。在C语言中,编程者只需记住流这 个概念,只使用一个文件系统就可以完成全部的I/O操作。
程序设计语言 C# 第10章--窗体和控件
图10-1 WinForm项目文件结构(四)Form1.cs文件Form1.cs包含了窗体部分类Form1的一部分定义,用于程序员编写事件处理代码,是程序员工作的主要对象。
Form1.cs文件主要由Form1.cs[设计]界面与Form1.cs逻辑代码两部分构成,还包含了Form1.Designer.cs和Form1.resx文件,具体如下:1. Form1.cs[设计]界面Form1.cs[设计]界面位于Form1.cs文件下,双击解决方案窗口中的Form1.cs文件,切换到Form1.cs[设计]界面,如图10-2所示。
图10-2 Form1.cs[设计]界面Form1是Form1.cs[设计]界面中系统初始化的窗体。
默认情况下,该窗体上没有任何控件,用户可以通过拖到工具箱中的控件对窗体界面进行设计。
点击“视图”下的“工具箱”,将显示出工具箱窗口,此时,可以选择相应控件拖放到Form1窗体中,如图10-3所示将button按钮拖放到窗体中。
图10-3 在窗体上添加控件2. Form1.cs逻辑代码WinForm窗体程序除了向用户展示友好的界面外,还可以与用户界面进行交互,而实现交互功能的逻辑代码也放在Form1.cs文件中。
在Form1窗体空白处右击会弹出快捷菜单,在快捷菜单中单击“查看代码”选择,就会进入Form1.cs逻辑代码,如图10-4所示。
此时,点击鼠标右键,在显示的快捷菜单中选择“查看设计器”选项,就可以切换到)Form1.cs[设计]界面。
这种设计界面和逻辑代码分开的设计模式,使得文件结构清晰,易于维护。
图10-4 Form1.cs逻辑代码3. Form1.Designer.cs文件Form1.Designer.cs文件用于在窗体类中自动生成控件的初始化代码,例如将Button按钮拖放到Form1窗体上,Form1.Designer.cs文件会自动生成如下代码,如图10-5所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北科技学院计算机系 软件工程课程
18/59
7. 在交互式输入输入时,要在屏幕上使用提 示符明确,在数据输入的过程中和输入结 束时,也要在屏幕上给出状态信息; 8. 当程序设计语言对输入/输出格式有严格 要求时,应保持输入格式与输入语句的要 求的一致性; 9. 给所有的输出加注解,并设计良好的输出 报表。
10.2.4 输入和输出
• 输入和输出的方式和格式应当尽可能方便 用户的使用。 • 在软件需求分析阶段和设计阶段,就应基 本确定输入和输出的风格
华北科技学院计算机系 软件工程课程
17/59
• 在设计和编码时都应考虑下列原则: 1. 对所有的输入数据都要进行检验; 2. 检查输入项的各种重要组合的合理性 3. 使得输入的步骤和操作尽可能简单,并 保持简单的输入格式; 4.允许使用自由格式输入; 5.应允许缺省值; 6.输入一批数据时,最好使用输入结束标志
第10章 程序设计语言和编码
10.1 程序设计语言 10.2 程序设计风格
华北科技学院计算机系 软件工程课程
1/59
10.1程序设计语言
程序设计语言的特性 1.影响程序员心理的语言特性: 一致性:指语言采用的标记法协调一致的程度 二义性:对语句不同理解将导致程序员理解的 混乱 紧致性:指程序员必须记忆的信息总量 局部性:程序由模块组成,应采用高内聚低耦 合、模块独立、局部化等原则。 线性:随意的GOTO语句会破坏程序的线性 传统性:影响人们学习新语言的积极性
10.2.1源程序文档化
• 在源程序中可包含一些内部文档,以帮助阅 读和理解源程序,主要包括:
– 标识符的命名 – 注解 – 程序的视觉组织
华北科技学院计算机系 软件工程课程
7/59
1.标识符的命名
• • • • • 选择含义明确的名字 名字不要太长,必要时可使用缩写 不用相似的名字,容易混淆 同一个名字不要有多个含义 名字中避免使用易混淆的字符。 如数字0与字母O;数字1与字母I或l;
10.2 程序设计风格
• 阅读程序是软件开发和维护过程中的一个重要 组成部分,而且阅读程序的时间比写程序的时 间还要多 • 应使程序具有良好的风格,力图从编码原则的 角度提高程序的可读性,改善程序质量 • 编程风格主要包括: – 源程序中的内部文档 – 数据说明 – 语句构造 – 输入/输出华北科技学院计算机系 软件工程课程 6/59
华北科技学院计算机系 软件工程课程
13/59
10.2.2 数据说明
数据说明的次序应当规范化 说明语句中变量安排有序化 使用注解说明复杂数据结构
华北科技学院计算机系 软件工程课程
14/59
10.2.3 语句构造
• 编码阶段的主要任务就是书写程序语句。
• 每条语句尽可能简单明了,能直截了当地反 映程序员的意图 • 程序编写要做到清晰第一,效率第二
IF(…) THEN IF(…) THEN …… ELSE …… END IF …… ELSE …… END IF IF(…) THEN IF(…) THEN …… ELSE …… END IF …… ELSE …… END IF
12/59
3.视觉组织
华北科技学院计算机系 软件工程课程
(2)自然的程序段之间可用空行隔开 (3)通过添加空格使语句成分清晰 (4)通过添加括号突出运算的优先级 a<-17andnotb<=49orc (a<-17) and not (b<=49) or c (5)放臵大括号。一般首选的方法是把左括 号放在行尾,右括号放在行首。右括号应独 占一行(固定的语法规则除外)。
华北科技学院计算机系 软件工程课程
4/59
程序设计语言的选择
• 为一个特定的开发项目选择编程语言时,通 常要考虑如下因素:
– – – – – – – 应用领域 算法和计算复杂性 软件运行环境 用户需求,特别是性能需求 数据结构的复杂性 软件开发人员的知识水平 可用的编译器与交叉编译器
华北科技学院计算机系 软件工程课程 5/59
华北科技学院计算机系 软件工程课程
15/59
编写语句的原则 1.在一行内只写一条语句 2.首先考虑清晰性,不要刻意追求技巧 3.程序要能直截了当地说明程序员的用意。 4.其他常用规则 让编译程序做简单的优化。 尽可能使用库函数 避免不必要的转移 尽量只采用三种基本的控制结构
华北科技学院计算机系 软件工程课程 16/59
华北科技学院计算机系 软件工程课程
19/59
华北科技学院计算机系 软件工程课程 2/59
2.工程特性
为满足软件工程的需要,程序设计语言还应该 考虑: • 将设计翻译成代码的便利程度 • 编译器的效率 • 源代码的可移植性 • 配套的开发工具 • 软件的可复用性和可维护性
华北科技学院计算机系 软件工程课程
3/59
3.应用特性
• 不同的程序设计语言满足不同的技术特性, • 要根据不同项目的特性选择相应特性的语言
华北科技学院计算机系 软件工程课程
10/59
功能性注释 • 通常嵌在源程序体内,主要描述程序段的功能 • 书写功能性注解时应注意的问题: 注解要正确 为程序段作注解,而不是为每个语句 用缩进和空行 注解应提供一些从程序本身难以得到的信息
华北科技学院计算机系 软件工程空行和缩进等 技巧,帮助人们从视觉上看清程序的结构 (1)通过缩进使程序嵌套层次清晰
华北科技学院计算机系 软件工程课程
8/59
2.程序的注释
• 程序中的注解用来帮助人们理解程序,决不 是可有可无的 • 一些正规的程序文本中,注解行的数量约占 整个源程序的1/3到1/2,甚至更多 • 注解分为序言性注解和功能性注解
华北科技学院计算机系 软件工程课程
9/59
序言性注释
• 通常臵于每个程序模块的开头部分,主要 描述: 模块的功能 模块的接口 重要的局部变量 开发历史