第八章 程序设计
C++程序设计 第八章 指针和引用
第
在程序运行时变量和函数都存放在内存中,通过变量名来访问数据、通过函数名来调用函数都是直接访问方式。还有另一种间接访问方式就是用指针。指针的本质是内存地址。指针往往用于说明函数的形参,使实参能通过指针传递,以提高函数调用的效率。利用指针能动态地使用内存,以提高内存使用效率。指针也能用来表示数据关联,以构成复杂的数据结构。指针是C程序中最常见的类型。引用是C++扩展的新概念,主要用于函数形参和返回类型。本章将详细介绍指针和引用的概念及应用。
首先,这6个变量的地址是按递减次序排列,这是因为局部变量都存储在堆栈中,堆栈是先入后出的。先入栈的数据存放在较大地址位置,后入栈的数据存放在较小地址位置。如果这些变量改为全局变量,它们的排列次序就会颠倒过来。
其次,尽管变量s只占2字节,变量c只占1字节,但却分别占用4字节空间。这是因为按字对齐(32位数据)能提高CPU访问内存的效率,而且一次压栈和出栈操作也是以32位数据为单位,代价是浪费一些内存。如果这些变量改为全局变量,它们将按实际大小存储。
怎样能知道一个变量在运行时刻的内存地址?把取地址运算符&放在变量前面就得到它的首地址。例如b是一个变量,那么&b就表示它的地址。下面例子能看到一组局部变量的首地址。
例8-1显示一组局部变量的首地址。
#include<iostream.h>
void main(){
bool b = true;
char c = 'c';
其中,<类型名>是这个指针变量所指向的对象的类型,简称指针类型,它可以是任何一种类型。*表示这个变量是一个指针变量。这个变量的类型就是“<类型名>*”。<变量名>是一个标识符。指针变量可以进行初始化,等号之后给出一个变量的地址,要求这个变量的类型与指针类型相符。
第八章 可编程序控制器的程序设计
第八章可编程序控制器的程序设计第一节梯形图的特点及绘制原则第二节PLC程序设计方法第三节顺序控制设计方法中梯形图的编程方式第一节梯形图的特点及绘制原则一、梯形图的特点(1)梯形图按自上而下、从左到右的顺序排列。
每个继电器线圈为一个逻辑行,即一层阶梯。
每一个逻辑行起于左母线,然后是触点的连接,最后终止于继电器线圈或右母线。
(2)在梯形图中某个编号继电器线圈只能出现一次,而继电器触点(常开或常闭)可无限次引用。
(3)在每一逻辑行中,串联触点多的支路应放在上方。
如果将串联触点多的支路放在下方,则语句增多,程序变长。
图8-1梯形图之一124LD 1AND 2OR 3OUT43(a)合理1243LD 3LD 1AND 2ORB OUT4(b) 不合理(4)在每一个逻辑行中,并联触点多的支路应放在左边。
如果将并联触点多的电路放在右边,则语句增多、程序变长。
LD 1OR 2AND 3OUT 41342(a) 合理3142LD 3LD 1OR 2ANB OUT 4(b) 不合理图8-2梯形图之二(5)梯形图中,不允许一个触点上有双向“电流”通过。
对于这样的梯形图,应根据其逻辑功能作适当的等效变换。
512643(a)523541624(b)图8-3梯形图之三(6)梯形图中,当多个逻辑行都具有相同条件时,为了节省语句数量,常将这些逻辑行合并。
147213621582(a )不合理24781365(b )合理图8-4 梯形图之四(7)如果电路结构复杂,用ANB、ORB等指令难以处理时,可以重复使用一些触点改成等效电路,再进行编程。
12 345AB2A35B134图8-5 复杂电路的处理方法(8)设计梯形图时,输入继电器的触点状态全部按相应的输入设备为常开进行设计更为合适,不易出错。
二、典型单元梯形图分析1、起动保持和停止电路Y000X001X000Y000X000 X001 Y000图8-6起保停电路最主要的特点是具有“记忆”功能2、电动机正反转控制电路~KM2 KM1KM1 KM2SB1SB2SB3COM X000Y000X001X002Y001PLC COM(a) PLC 的外部接线图Y001X001 X000 X002 Y000 Y001X000 X001 X002 Y001 Y000Y000(b )梯形图图8-7电动机正反转控制电路SB1为停止按钮,SB2为正转起动按钮,SB3为反转起动按钮,KM1为正转接触器,KM2为反转接触器。
计算机导论第八章 程序设计语言
汇编语言比机器语言易读、易维护。但计算 汇编语言比机器语言易读、易维护。 机并不认识这些符号, 机并不认识这些符号,因此就需要一个专门 的程序负责将这些符号翻译成二进制数的机 器语言,这种翻译程序被称为汇编程序 汇编程序。 器语言,这种翻译程序被称为汇编程序。
1957年,第一个完全脱离机器硬件的高级语言- FORTRAN 年 第一个完全脱离机器硬件的高级语言 问世了。此后, 多年来 共有几百种高级语言出现。 多年来, 问世了。此后,40多年来,共有几百种高级语言出现。
信息表管理程序 编译过程
编译程序工作时,先分析,后综合, 编译程序工作时,先分析,后综合,从而得 词 语 语 中 代 目 到目标程序。所谓分析, 到目标程序。所谓分析,是指词法分析和语 法 法 义 间 码 标 分 分 分 代 优 代 法分析;所谓综合是指代码优化, 码 法分析;所谓综合是指代码优化,存储分配 析 析 析 码 化 程 程 程 生 程 生 和代码生成。 和代码生成。 序 序 序 成 序 成
8.2.3 赋值语句
赋值操作的意义就是把一个确定的数值放到 某个变量代表的那个内存单元中去。 某个变量代表的那个内存单元中去。 赋值号: 赋值号: “=”表示赋值操作 表示赋值操作 左值: 左值:等待被赋予值的变量 右值:将要被赋予的“ 右值:将要被赋予的“值”
8.2.4 分支语句
分支语句
成立
a
8.2程序设计语言的基本元素 程序设计语言的基本元素
1. 2. 3. 4. 5. 6. 7.
变量 数据类型 赋值语句 分支语句 循环语句 过程(函数) 过程(函数) 注释语句
8.2 基本元素
8.2.1 变量和常量
变量:在程序运行过程中, 变量:在程序运行过程中,其值可以被改变的量 称为变量。变量的两个要素: 变量名 变量名。 称为变量。变量的两个要素:1)变量名。每个变 量都必须有一个名字--变量名, --变量名 量都必须有一个名字--变量名,遵循标识符命 名规则。 )变量值。在程序运行过程中, 名规则。2)变量值。在程序运行过程中,变量 值存储在内存中。 值存储在内存中。程序通过变量名来引用变量的 值。 常量:在程序运行过程中, 常量:在程序运行过程中,其值不能被改变的量 变量在使用前, 变量在使用前,在内 称为常量。常量可分为整型常量,实型常量, 称为常量。常量可分为整型常量,实型常量,字 存中会给每个变量申 符常量,符号常量。 符常量,符号常量。 请一定的大小的空间。 请一定的大小的空间。
c#8
C#.NET程序设计
流 和 文 件
流Stream类 类
Stream流是所有流的抽象基类。流是字节序列的抽象 流是所有流的抽象基类。 流是所有流的抽象基类 概念,流提供向后备存储包括文件、输入/输出设备 输出设备、 概念,流提供向后备存储包括文件、输入 输出设备、内部 进程通信管道或者TCP/IP套接字等写入和读取字节,而不 套接字等写入和读取字节, 进程通信管道或者 套接字等写入和读取字节 必了解操作系统和基础设备的具体细节。 必了解操作系统和基础设备的具体细节。 流的Read 和 Write 方法分别是从当前流读和写字节序 流的 列, ReadByte和WriteByte分别是从当前流读和写一个字 和 分别是从当前流读和写一个字 节。使用 Seek 和 SetLength 方法修改流的当前位置和长 使用Position 和 Length 属性可查询和修改流的当前 度,使用 位置和长度。 类支持BeginRead、BeginWrite、 位置和长度。stream类支持 类支持 、 、 EndRead 和 EndWrite异步方法读写数据。 异步方法读写数据。 异步方法读写数据 属性, 通过使用 CanRead、CanWrite 和 CanSeek 属性,应 、 用程序可以查询流的是否具有读,写,和查找功能。 用程序可以查询流的是否具有读, 和查找功能。 Flush 方法可用于清除所有内部缓冲区并确保将所有数 据写入基础数据源或储存库。 据写入基础数据源或储存库。 调用流的 Close方法 将调用 方法 将调用Flush,释放操作系统资源, ,释放操作系统资源, 如文件句柄、网络连接或用于任何内部缓冲的内存。 如文件句柄、网络连接或用于任何内部缓冲的内存。
C#.net程序设计
第八章 文件、 流、文件、XML和配置文件 和配置文件
IBM—PC(80x86)汇编语言与接口技术-第8章 输入输出程序设计
8259A
76 5 4
中断屏蔽寄存器21H
打 印 机
3210
IN AL, 21H AND AL,0FDH
键定 时
盘器
OUT 21H,AL
76 5 4
中断命令寄存器20H
EOI
3 2 1 0 MOV AL, 20H OUT 20H, AL
11
中断向量表
00000 类型0的(IP) 类型0的(CS)
00004 类型1的(IP) 类型1的(CS)
speaker_on endp
speaker_off proc push ax in al, 61h and al, 0fch out 61h, al pop ax ret
speaker_off endp
end
8
3. 中断传送方式
中断源:引起中断的事件
外中断(硬中断):
外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断
15
例:用 DOS 功能调用存取中断向量
MOV AL, N
MOV AH, 35H
INT 21H
PUSH BX
; 保存原中断向量
PUSH DS
MOV AX, SEG INTHAND
MOV DS, AX
MOV DX, OFFSET INTHAND
MOV AL, N
MOV AH, 25H
08 系统定时器 09 键盘 0A 彩色/图形接口 0B 保留 0C 串行通讯口 0D 保留 0E 软盘 0F 打印机
10
中断的条件:
设置CPU中断允许位:
FLAGS 中的 IF 位 = 1 允许中断 ( STI ) = 0 禁止中断 ( CLI )
第八章 可视化应用程序设计
属性: (2)Size属性:用来设置窗体的大小。 ) 属性 用来设置窗体的大小。
属性: (3)Location属性:设置窗体在屏幕上的位置,即设置 ) 属性 设置窗体在屏幕上的位置, 窗体左上角的坐标值。 窗体左上角的坐标值。
属性: (4)BackColor属性:用于设置窗体的背景颜 ) 属性 色,可以从弹出的调色 板中选择。 板中选择。 属性: (5)BackgroundImage属性:用于设置窗体的背 ) 属性 景图像。 景图像。 属性: (6)Opacity属性:该属性用来设置窗体的透明 ) 属性 其值为100%时,窗体完 度,其值为 时 全不透明;其值为0%时 全不透明;其值为 时,窗 体完全透明。 体完全透明。
4. 影响窗体外观的属性 (1)FormBorderStyle属性 用于控制窗体边界的类型, ) 属性:用于控制窗体边界的类型, 属性 用于控制窗体边界的类型 有7个可选值 。 个可选值 None、Fixed3D、FixedDialog、FixedSingle、 Sizable、 、 、 、 、 、 FixedToolWindow、SizableToolWindow 、
重点难点: 重点难点:
常用控件及控件的属性、 常用控件及控件的属性、事件和方法
8.1 Windows窗体 窗体
Windows应用程序设计是作为图形用户界面 ( GUI) 应用程序设计是作为图形用户界面( 应用程序设计是作为图形用户界面 ) 设计的。用户通过一些简单的操作(如鼠标的点击) 设计的。用户通过一些简单的操作(如鼠标的点击)来 引发一些事件。 引发一些事件。
8.2.1 控件的基本属性
(1)Name属性 ) 属性 (2)Text属性 ) 属性 和位置(Location)属性 (3)尺寸大小 )尺寸大小(Size)和位置 和位置 属性 (4)字体 )字体(Font)属性 属性 (5)颜色 )颜色(BackColor、ForeColor)属性 、 属性 和有效(Enabled)属性 (6)可见 )可见(Visable)和有效 和有效 属性
微机原理微型计算机的程序设计
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:
C语言程序设计 第八章 查表
何谓查找表?查找表是由同一类型的数据元素(或记录)构成的集合。
由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。
对查找表经常进行的操作:•1)查询某个“特定的”数据元素是否在查找表中;•2)检索某个“特定的”数据元素的各种属性;•3)在查找表中插入一个数据元素;•4)从查找表中删去某个数据元素。
查找表可分为两类:静态查找表仅作查询和检索操作的查找表。
动态查找表有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据关键字是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。
若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。
若此关键字能识别若干记录,则称之谓“次关键字”。
查找根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
若查找表中存在这样一个记录,则称“查找成功”。
查找结果给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”。
查找结果给出“空记录”或“空指针”。
如何进行查找?查找的方法取决于查找表的结构。
由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。
为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。
9.1 静态查找表9.2 动态查找树表9.3 哈希表9.1静态查找表数据对象D :数据关系R :D 是具有相同特性的数据元素的集合。
每个数据元素含有类型相同的关键字,可唯一标识数据元素。
数据元素同属一个集合。
ADT StaticSearchTable {基本操作P:Create(&ST, n);Destroy(&ST); Search(ST, key);Traverse(ST, Visit()); } ADT StaticSearchTable构造一个含n 个数据元素的静态查找表ST 。
第八章 面向对象程序设计(1)
第八章 表单设计与控件应用
8.2 表单的创建与管理
创建表单
表单向导
表单设计器
第八章 表单设计与控件应用
8.2 表单的创建与管理
表单设计器打开
可视化:菜单和工具栏/项目管理器 命令:CREATE FORM|SCREEN
第八章 表单设计与控件应用
8.1 面向对象程序设计基础
属性(Property) 属性(Property) 是对象所具有 的某种特性和状态 特性和状态。 的某种特性和状态。 比如, 比如,按钮的大小 体现在高度 (height)和宽度 ) (width)属性上。 )属性上。 事件(Event) 事件(Event) 指对象能够识 别的动作。 别的动作。当触发 某个事件时, 某个事件时,该事 件的程序代码就会 开始执行。比如, 开始执行。比如, 单击文件图标。 单击文件图标。
第八章 表单设计与控件应用
8.3 表单设计器
设置对象属性 静态(对象初始状态):在属性窗口中设置。 ):在属性窗口中设置 静态(对象初始状态):在属性窗口中设置。 动态(对象运行状态):在程序代码中设置。 ):在程序代码中设置 动态(对象运行状态):在程序代码中设置。
格式:对象引用.对象的属性名=属性值
第八章 表单设计与控件应用(1) 表单设计与控件应用(1)
Contents
1 2
面向对象程序设计基础 表单的基本操作
第八章 表单设计与控件应用
第八章 表单设计与控件应用
第八章 表单设计与控件应用
8.1 面向对象程序设计基础
8.1.1 基本概念 对象(Object) 对象(Object) 具有某些特性的具体事物的抽象。 具体事物的抽象 具有某些特性的具体事物的抽象。 FoxPro中 在Visual FoxPro中,表单及控件等都是应用 程序中的对象。用户通过对象的属性 事件和 属性、 程序中的对象。用户通过对象的属性、事件和方 法程序来处理对象。 程序来处理对象。
高树芳C语言程序设计--第八章
30
8.5 知识拓展
案例8-11 指针的高级应用 [案例任务] 阅读下列程序 ,分析运行结果,了解指 针的各种应用。
程序代码
31
8.5 知识拓展
相关知识:
1.有关指针的数据类型小结 2.案例说明 3.main函数的参数
32
12
8.2 指针变量
[课堂训练8-1] void swap(int *p1,int *p2) { int *t; t=p1; p1=p2; p2=t; }
1.分析下面的程序,写出运行结果。 #include <stdio.h> void main() { void swap(int *p1,int *p2); int *p1,*p2,a=6,b=8; p1=&a; p2=&b; printf(" 交换前:*p1=%d,*p2=%d\n",*p1,*p2); swap(p1,p2); printf(" 交换后:*p1=%d,*p2=%d\n",*p1,*p2); }
17
8.3 指针与数组
案例8-6 [案例任务]
冒泡排序
使用指针指向一维整型数组,使用冒泡排 序法对数组元素从小到大排序并输出。
程序代码
18
8.3 指针与数组
相关知识: 1.冒泡排序法 2.指针变量的其他运算
19
8.3 指针与数组
案例8-7 [案例任务]
逆置一维数组
使用数组名或指针变量作为函数形参与实 参,完成一维数组元素的逆置。请分析程 序运行结果,并对两个方法进行比较。
6
8.2 指针变量
案例8-2 用指针交换两整数 案例8-3 用指针比较两数大小 案例8-4 用指针参数交换两整数
8第八章GUI
《JAVA程序设计》课程
8.1组件
8.1.1 项目(8-1)描述 请设计出如下登录窗口,如图8-1所示。
图8-1 登录窗口
《JAVA程序设计》课程
8.1组件
8.1.2 项目知识准备 (1)AWT 图形用户界面(Graphics User Interface,GUI)就是为应用程序提供一个图形化界面,方便用户和用户程序实 现友好交互的一个桥梁。常用的GUI图形界面开发工具分为以下两种: AWT(Abstract Window ToolKit,抽象窗口工具包)。AWT依赖具体的平台来构件图形用户界面的外观,所以使 用AWT编制的程序中在不同的平台上运行,会出现不同的运行效果。AWT工具包javax.awt,包括对话框,按钮, 复选框,列表,菜单,滚动条和文本域,高级窗口,可视控件如文本框和下压按钮,以及在屏幕上绘制图象的 简单元素有相似的功能。组件类,是所有图形界面元素的超类。图8-1表示组件的分层结构.
《Java 程序设计》课程 第八章 GUI
主讲人: 谢先伟
2017年3月
Java程序设计
汇报提纲
1、GUI顶层容器 2、GUI常用组件 3、GUI常用布局 4、GUI事件处理模型、监听机制和常用事件
《JAVA程序设计》课程
学习目标
1、了解AWT、Swing包的相关概念; 2、理解组件的概念,掌握对常用组件的使用; 3、理解容器的概念,掌握对常用容器的使用; 4、理解组建布局管理的概念,掌握对常用布局的使用 5、理解事件处理过程,掌握对事件处理过程的使用;
《JAVA程序设计》课程
8.1组件
表8-2 JFrame的方法及方法说明
方法
方法说明
C语言程序设计(第八章)
的读写函数。 每次可从文件读出或向文件写入一个字符。
第八章
1.读字符函数fgetc()
fgetc() 函数的功能是从指定的文件中读一个字符,函
数调用的形式为:
字符变量 = fgetc(文件指针);
例如:
ch = fgetc(fp);
的意义是从打开的文件fp中读取一个字符并送入ch中 。
(1)字符读/写函数 :fgetc()/fputc()
(2)字符串读/写函数:fgets()/fputs()
(3)数据块读/写函数:freed/()fwrite()
(4)格式化读/写函数:fscanf()/fprinf()
以上函数原型都在头文件stdio.h中加以声明。
第八章
8.5.1字符读/写函数 :fgetc()/fputc()
关闭文件则断开指针与文件之间的联系,禁止再对该文
件进行操作。
第八章
8.3.1 文件打开的函数fopen()
open函数用于打开一个文件,其调用的一般形式为: 文件指针名 = fopen(文件名, 使用文件方式);
“文件指针名”:必须是被说明为FILE 类型的指针变量。
“文件名”:被打开文件的文件名,“文件名”是字符串常 量、字符数组或字符指针。 “使用文件方式”:指文件的类型和操作要求。
/* 输出系统提示信息 */
上面程序段的意义是,如果返回的指针为空,表示不能 打开test.dat文件,则给出提示信息“打开文件test.dat出 错!”,然后输出系统提示信息,当用户从键盘敲任一键后 执行exit(1)退出程序 。
第八章
8.3.2 文件关闭的函数fclose()
大学计算机基础(第三版)-第8章 程序设计基础
算法的概念
用计算机解决问题的算法应具有以下特征:
有穷性
能行性
确定性
可输入输出信息
算法的表示
自然语言——使用人们能读懂的简短语句对算法的步骤 进行描述。
流程图法——用一些图框、线条以及文字说明来形象地、 直观地描述算法。 N-S流程图法—— 去掉了传统流程图中带箭头的流向线, 全部算法以一个大的矩形框表示,框内还可以包含一些从 属于它的小矩形框,适于结构化程序设计。 伪代码法—— 用介于自然语言和计算机语言之间的文 字和符号来描述算法。 计算机语言—— 用计算机语言描述算法,只有用计算 机语言编写的程序才能被计算机执行。
Hale Waihona Puke 算法的表示及三种基本结构1 顺 序 结 构
2 分 支 结 构
3 循 环 结 构
算法的表示及三种基本结构
(1)
顺序结构
块1
块2 块3
演示算法执行过程
【例】 求两数之和。
num115; num220; sumnum1+num2; 输出sum; 流程图
显示结果:35
num1 15 + num2 20 sum 35 寄存器 35
解释程序
高级语言源程序
计算结果
解释方式执行过程
程序设计语言的组成
一般来说,程序设计语言都应包含以下四 种成分:
数据成分 运算成分 控制成分 传输成分
用以描述程序中所涉及的数据 用以描述程序中所包含的运算 用以描述程序中的控制结构 用以表达程序中数据的传输
程序设计语言的组成
程序语言提供的数据类型:
8.1 程序设计的基本概念
语言 人类交流思想的工具
程序设计语言 人和计算机之间进行交流的语言
FORTRAN95第八章 实用程序设计方法
直到 x 是一个素数
根据上面的伪码,可以比较容易地写出实现求出前 n个素数并打印的FORTRAN程序。但是, 这个程序的 效率是比较低的。为此可以利用数论的知识,从以 下两个方面考虑进行优化。 首先, 语句“对于k 从2 变到X-1,每次增 1 做:”
在以上各阶段都应有充分的文档资料。而且,以上过程是一个有限次 迭代过程。
8.2 结构化程序设计方法 8.2.1 结构化程序设计的概念 所谓结构化程序设计,就是以良好的程序结构为目标、遵照
“自顶向下、逐步求精”和模块化的方法、每个模块仅有一个 入口
和一个出口、程序中仅使用三种基本控制结构、尽量少用GOTO 语句的程序设计方法, 下面对结构化程序设计方法进行全面、细 致地阐述。
具体说来,计算机程序设计的准则有以下七个方面:
正确性:这是判定程序质量的永恒准则。 可靠性:这是指程序执行的可重复性要好。无论执行环境
如何变化,对相同的输入数据,一个程序的执行结果总是 不变的。 易读性:这是指程序结构要简单、语句要直观、程序内部 要有足够的注解等,以便维护和引用程序。遵照良好的编 程风格(习惯),会增大程序的可读性。 有效性:这是指程序应当少占存储空间、快速运行。良好 的时空效率永远是人类追求的目标。 可维护性:这是指程序应当容易查找错误、容易改正错误。 一个大型程序,常常需要数十人甚至数百人合作开发,代 价高昂。既使通过严格地检测,也不可能保证没有错误。 而且使用期常常达到10年至15年或更长。因此,在使用中, 排除错误、扩充、更新总是难免的。 适应性:这是指程序不应因计算机硬件或外部环境的变更 而更改或废弃。程序的适应性越强,可移植性越好,越能 适应各种机型和环境,其社会效益和经济效益就越好。 可重用性:这是指经过实践证明正确的己有源程序代码, 可以方便地被自己或他人利用,这样不仅能大大提高程序 的开发效率,而且能大大减少程序的错误。
第八章 面向对象程序设计(2)
第八章 表单设计及应用
小结
重点
表单及控件的属性、 表单及控件的属性、事件和方法 设计表单, 设计表单,解决实际问题
第八章 表单设计及应用
作业
实验书第8章习题 实验书第 章习题
第八章 表单设计及应用
预习
1、报表的设计方法有几种? 报表的设计方法有几种? 菜单有几种?如何创建? 2、菜单有几种?如何创建?
第八章 表单设计及应用(2) 表单设计及应用(2)
Contents
1 2 3
表单设计基础 表单常用控件 表单其他控件
第八章 表单设计及应用
8.3 表单设计基础
表单是一个容器对象,它的控件名是FORM。我 表单是一个容器对象,它的控件名是FORM。 容器对象 FORM 们对表单进行操作,实际上就是设置表单的属性 属性, 们对表单进行操作,实际上就是设置表单的属性, 调用表单的方法 编写表单的事件代码 方法, 事件代码。 调用表单的方法,编写表单的事件代码。 表单对象的常用属性(见教材P188 P188) 表单对象的常用属性(见教材P188) 表单事件(见教材P188) 表单事件(见教材P188) P188
用微调器控制计时器单向运动的速度。 例:用微调器控制计时器单向运动的速度。
第八章 表单设计及应用
8.4 常用表单控件
组合框(combo)和列表框(list) 组合框(combo)和列表框(list)
主要作用:从提供的多个选项中选择一项或多项。一般用 来整列显示表中的字段。 常用属性: rowsourcetype、rowsource、style 、 rowsourcetype、rowsource、
第八章 表单设计及应用
8.4 常用表单控件
标签(Label) 标签(Label) el
vfp8.1-三种程序结构
&&初始化,打开表
ACCE '输入姓名: ' TO XM LOCA FOR 学生.姓名=XM
&&处理
DISP USE
&&恢复、结束
程序的三种基本结构
* TEST4.PRG
关联查询学生选课成绩
&& 初始化部分
CLEA
&& 清屏
SELE 1 USE 选课 ALIAS XK
&& 选择1号工作区 && 打开选课表
算法: (1) 输入年份; INPUT ‘输入年份’ TO Y (2)判断是否闰年,并输出结果;
程序的三种基本结构
程序:
CLEA INPUT ‘输入年:’ TO Y
TJ=MOD(Y,4)=0 AND MOD(Y,100)!=0 ;
OR MOD(Y,400)=0
IF TJ ?Y,’是闰年’
ELSE ?Y,’不是闰年’ ENDIF
2)双分支结构
输入4 7 输入5 2
【例】输出两数X,Y中大的 一个(IF …ELSE… ENDIF) INPUT ‘输入X’ TO X
输入X 输入Y
INPUT ‘输入Y’ TO Y
IF X>Y
S=X
?X else
?Y endif
.T. Y> .F.
X
输出Y
输出X
cancel
输出 7
结束
输出5
程序的三种基本结构
&& 输出与结束部分
CANCEL
程序的三种基本结构
2、选择结构
根据某逻辑表达式的值,判断与决定程序的走向。
(电气控制与PLC)第八章梯形图程序设计方法
I0.0 I0.1 I0.2 Q0.1 Q0.0
Q0.0 I0.1 I0.0 I0.2 Q0.0 Q0.1
Q0.1
2020/7/21
福州大学电气工程与自动化学院
10
提纲
1. 经验设计法 2. 顺序控制设计法与顺序功能图 3. 基于顺序功能图的梯形图设计方法
2020/7/21
福州大学电气工程与自动化学院
I0.1 I0.0 I0.3 I0.2 Q0.0 Q0.1 I0.4 Q0.1
PLC的外部接线图
小车自动往返的梯形图
福州大学电气工程与自动化学院
9
经验设计法——总结
❖ 将继电器电路转换为梯形图 1. 确定PLC的输入/和输出信号。 2. 画PLC的外部接线图 • 启动/停止一般使用常开按钮 • 互锁使用常闭开关 3. 控制线路图 >> 梯形图 4. 注意互锁环节
2. PLC内部的信号,如定时 器、计数器等
3. 多个信号的逻辑组合 (P79,图4-11)
福州大学电气工程与自动化学院
11
顺序控制设计法与顺序功能图
2020/7/21
动力头控制的 顺序功能图
福州大学电气工程与自动化学院
12
顺序控制设计法与顺序功能图
顺序控制设计法 ❖ 首先根据系统的工艺过程,画出顺序功能图 ❖ 然后根据顺序功能图编写梯形图程序。 ✓ 部分PLC提供了顺序功能图编程语言,用户在编程 软件中生成顺序功能图后便完成了编程工作,如西门 子S7-300/400 PLC中的S7 Graph编程语言。 ✓ 容易被初学者接受,对于有经验的工程师,也会提 高设计的效率,程序的调试、修改和阅读也很方便。
步
有 向 连 线
初始步
与步对应的 动作/命令
第八章(程序设计基础)
14
第8章 程序设计基础
多分支语句实现一种扩展的选择结构, 多分支语句实现一种扩展的选择结构,它可以根据条件从多组命令 中选择一组执行。语句格式为: 中选择一组执行。语句格式为: DO CASE <条件 条件1> CASE <条件1> 命令序列1> <命令序列1> <条件 条件2> CASE <条件2> 命令序列2> <命令序列2> …… <条件 CASE <条件 n> <命令序列 n> [ORTHERWISE 命令序列Q>] <命令序列Q>] 15 ENDCASE
11
第8章 程序设计基础
8.2 程序的基本结构
程序结构是指程序中命令或语句执行的流程结构。程序有三种基本结构: 程序结构是指程序中命令或语句执行的流程结构。程序有三种基本结构: 顺序结构、选择结构和循环结构。 顺序结构、选择结构和循环结构。 顺序结构是程序中最简单、最普遍使用的一种基本结构, 顺序结构是程序中最简单、最普遍使用的一种基本结构,其特点是按照 语句排列的先后顺序依次执行。绝大多数问题仅用顺序结构时无法解决的。 语句排列的先后顺序依次执行。绝大多数问题仅用顺序结构时无法解决的。 选择结构的语句包括条件语句和分支语句。 选择结构的语句包括条件语句和分支语句。 1.条件语句 1.条件语句 格式: 格式:IF < 条件表达式 > 语句序列1 < 语句序列1 > [ ELSE 语句序列2 < 语句序列2 >] ENDIF
7
第8章 程序设计基础
8.1.2程序文件的建立与执行 8.1.2程序文件的建立与执行
1.程序文件的建立与修改 1.程序文件的建立与修改 程序文件的建立与修改是通过系统内置的文本编辑器来进行的。 程序文件的建立与修改是通过系统内置的文本编辑器来进行的。 打开文本编辑器窗口。 文件】菜单下的【新建】菜单项中, ① 打开文本编辑器窗口。在【文件】菜单下的【新建】菜单项中, 选择【程序】 并单击【新建文件】命令按钮。 选择【程序】可选项 ,并单击【新建文件】命令按钮。 在文本编辑窗口中输入程序内容。 ② 在文本编辑窗口中输入程序内容。这里的编辑操作与普通文本文 件的编辑操作没有什么不同。在这里输入的是程序内容, 件的编辑操作没有什么不同。在这里输入的是程序内容,是一条条 命令。这里输入的命令是不会被马上执行的。 命令。这里输入的命令是不会被马上执行的。 保存程序文件。 文件】菜单中选择【保存】命令或按Ctrl+W ③ 保存程序文件。从【文件】菜单中选择【保存】命令或按Ctrl+W 然后在【另存为】对话框中指定程序文件的存放位置和文件名, 键,然后在【另存为】对话框中指定程序文件的存放位置和文件名, 并单击【保存】命令按钮。 并单击【保存】命令按钮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
子函数和私用(局部)函数
子函数 私用(局部)函数
子函数
MATLAB允许一个M函数文件包含多个 函数的代码。其中,第一个出现的函数 称为主函数(Primary function),该文件 中的其他函数称为子函数(Subfunction)。 保存时所用的函数名与主函数定义名相 同。外部程序只能对主函数进行调用。 子函数的性质:
inputname(n)
跨空间变量传递
跨空间计算串表达式的值 跨空间赋值
跨空间计算串表达式的值
前面已介绍了实现不同工作空间之间变量传递的两种 渠道:函数的输入输出宗量和全局变量。下面介绍第 三个传递渠道:跨空间计算串表达式值的指令。
evalin(„workspace‟,‟expression‟)
它只是一串按用户意图排列而成的(包括控制流向指 令在内的)MATLAB指令集。 脚本文件运行后,所产生的所有变量都驻留在 MATLAB基本工作空间(Base workspace)中。只要不 使用clear指令加以清除,且MATLAB指令窗不关闭, 这些变量将一直保存在基本工作空间中。基本工作空 间随MATLAB的启动而产生;只有关闭MATLAB时, 该基本空间才被删除。
M函数文件示例
函数申明(定义)行 (Function declaration line):
位于函数文件的首行,以MATLAB关键字 function开头,函数名以及函数的输入输出 宗量都在这一行定义。
H1行(The first help text line):
紧随函数申明行之后以%开头的第一注释行。 按MATLAB自身文件的规则,H1行包含: 大写体的函数文件名;运用关键词简要描述 的函数功能。该H1行供lookfor关键词查询 和help在线帮助使用。
子函数的性质:
每个子函数的第一行是其自己的函数申明行。 在M函数文件内,主函数的位置不可改变,但子函数的 排列次序可任意改变。 子函数只能被处于同一文件的主函数或其他子函数调用。 在M函数文件中,任何指令通过“名字”对函数进行调 用时,子函数的优先级仅次于内装函数。 同一文件的主函数、子函数的工作空间都是彼此独立的。 各函数间的信息,或通过输入输出宗量传递,或通过全 局变量传递,或通过跨空间指令传递。 help,lookfor等帮助指令都不能提供关于子函数的任何帮 助信息。 涉及子函数的算例。
输入输出宗量检测指令 跨空间变量传递 子函数和私用函数
输入输出宗量检测指令
nargin 在函数体内,用于获取实际输入宗量 nargout 在函数体内,用于获取实际输出宗量 nargin(„fun‟) 获取‘fun‟指定函数的标称输入宗量
数
nargout(„fun‟)
出
获取‘fun‟指定函数的标称输 宗量数 在函数体内使用,给出第n个 输入宗量的实际调用变量名
为清晰起见,它与前面的注释行以空行相隔。 这部分内容由实现该M函数文件功能的 MATLAB指令组成。它接收输入宗量,进 行程序流控制,得到输出宗量。其中为阅读、 理解方便,也配置适当的空行和注释。若仅 从运算角度看,惟有函数申明行和函数体两 部分是构成M函数文件所必不可少的。
5、变量的检测传递和限权使用函数
for循环结构 while循环结构 if-else-end分支结构 switch-case结构 try-catch结构 控制程序流的其它常用指令
1、for循环结构
for x=array (commands) end
For循环的结构以及含义和其他高级语言的结 构和含义基本一致。 一个简单的for循环示例。 和其他语言一样for循环可以有多重循环。
稀疏 sparse
数据文件
MATLAB允许接受的数据文件大致可分 为以下几类:
以.mat为扩展名的二进制数据文件。 以.txt、.dat为扩展名的ASCII码数据文件。 以.bmp、.jpg、.tif等为扩展名的图像文件。 以.wav为扩展名的声音文件。
P192/表8-3
三、MATLAB控制流
帮助信息。
二、MATLAB的数据类型
6种基本数据类型及若干衍生类型。
数据类型 Data Types
数值 Numeric
字符串 Char
元胞 Cell
构架 Structure
函数句柄 Function handle
JAVA类 JAVA Class
双精度 double
单精度 single
整数类 Int*,uint*
第八章 M文件程序设计基础
M文本编辑器 M文件 MATLAB的数据类型 MATLAB控制流 程序调试 函数句柄
一、M文件
M脚本(命令)文件 M函数文件 局部变量和全局变量 M文件的一般结构 变量的检测传递和限权使用函数
1、M脚本(命令)文件(Script)
“脚本”本身反映这样一个事实:MATLAB只是 按文件所写的指令执行。 M脚本(命令)文件的构成较简单,其特点是:
try (commands1) catch (commands2) end
私用(局部)函数
所谓私用(局部)函数,是指位于private目录 上的M文件函数。 私用(局部)函数的性质:
私用(局部)函数的构造与普通M函数完全相同。 私用(局部)函数的只能被private目录的直接父目录 上的M函数文件所调用。它不能被其他目录上的任何 M函数、M脚本文件或MATLAB指令窗中的命令所 调用,也不能被直接父目录上的M脚本文件调用。 M文件中,任何指令通过“名字”对函数进行调用时, 私用(局部)函数的优先级虽低于内装函数和子函数, 但高与其他任何目录上的函数。 help,lookfor等指令都不能提供关于私用(局部)函数的任何
跨空间计算串表达式值 说明: ‘workspace‟可取两个值:‘base‟和‘caller‟ 该调用格式的执行机理:
当‘workspace‟取‘base‟表示计算eval(„expression‟)时, 将从基本工作空间获得变量值。 当‘workspace‟取‘caller‟表示计算eval(„expression‟)时, 将从主调函数工作空间获得变量值。主调函数是相对被调 函数而言的。这里,被调函数是指evalin所在的函数。
4、switch-case结构
switch ex case test1 (commands1) case test2 (commands2) … case testk (commandsk) otherwise (commands) end
例:学生成绩管理,用来演示switch结构的应用。
5、try-catch结构
2、while循环结构
while expression (commands) end
与for循环设置固定循环次数来执行循环体相比 较,MATLAB中的while循环是应用逻辑表达式 来设置与判断是否执行循环体,循环次数依逻 辑判断条件来决定,循环次数是不固定的。 例:Fibonacci数组的元素满足Fibonacci规则: a k+2=ak+ak+1,(k=1,2,…);且a1=a2=1。现要求该数 组中第一个大于10000的元素。
3、if-else-end分支结构
if-else-end指令为程序流提供了一种分支结构,它最常 用的使用方式:
单分支 if expression (commands) end 双分支 if expression (commands1) else (commands2) end 多分支 if expression1 (commands1) elseif expression2 (commands2) … else (commandsk) end
例: evalin运行机理与eval的异同。
跨空间赋值
实现不同工作空间之间变量传递的第四个 传递渠道是跨空间赋值指令: assignin(„workspace‟,‟VN‟,x)
跨空间向VN变量赋值
说明:把当前工作空间内变量x的值赋给 ‘workspace‟指定空间名的VN变量。
例:assignin运作机理示范
在线帮助文本(Help text)区:
H1行及其之后的连续以%开头的所有注释 行构成整个在线帮助文本。它通常包括:函 数输入输出宗量的含义,调用格式说明。
编写和修改记录:
与在线帮助文本区相隔一个空行,也以%开 头,标志编写及修改该M文件的作者和日期、 版本记录。它用于软件档案管理。
函数体(Function body):2、函数文件( Function)
与脚本(命令)文件不同,函数文件(Function file)犹如一个“黑箱”。从外界只能看到传给 它的输入量和送出来的计算结果,而内部运作 是藏而不见的。
函数文件的特点:
从形式上看,与脚本文件不同,函数文件的第一行总是以“function” 引导的“函数申明行”(Function declaration line)。该行还罗列出函数 与外界联系的全部“标称”输入输出宗量。但对“输入输出宗量”的 标称数目并没有限制,即可以完全没有输入输出宗量,也可以是任意 数目。 MATLAB允许使用比“标称数目”较少的输入输出宗量,实现对函数 的调用。 从运行上看,与脚本文件运行不同,每当函数文件运行,MATLAB就 会专门为它开辟一个临时工作空间,称之谓函数工作空间(Function workspace)。所有中间变量都存放在函数工作空间中。当执行完文件 最后一条指令或遇到return时,就结束该函数文件的运行,同时该临 时函数空间及其所有的中间变量就立即被清除。 函数空间随具体M函数文件的被调用而产生,随调用结束而删除。函 数空间是相对独立的、临时的。在MATLAB整个运行期间,可以产生 任意多个临时函数空间。 假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行 产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。