过程和子过程的定义和调用方法(精)

合集下载

华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。

命令运行调试。

二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。

是对目标文件进行调试,验证它的正确性。

2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。

PL0 编译原理词法语法分析介绍

PL0  编译原理词法语法分析介绍

PL/0语言是Pascal语言的一个子集,我们这里分析的PL/0的编译程序包括了对PL/0语言源程序进行分析处理、编译生成类PCODE 代码,并在虚拟机上解释运行生成的类PCODE代码的功能。

PL/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。

词法分析和代码生成作为独立的子程序供语法分析程序调用。

语法分析的同时,提供了出错报告和出错恢复的功能。

在源程序没有错误编译通过的情况下,调用类PCODE解释程序解释执行生成的类PCODE代码。

词法分析子程序分析:词法分析子程序名为getsym,功能是从源程序中读出一个单词符号(token),把它的信息放入全局变量sym、id和num中,语法分析器需要单词时,直接从这三个变量中获得。

(注意!语法分析器每次用完这三个变量的值就立即调用getsym子程序获取新的单词供下一次使用。

而不是在需要新单词时才调用getsym过程。

)getsym过程通过反复调用getch子过程从源程序过获取字符,并把它们拼成单词。

getch过程中使用了行缓冲区技术以提高程序运行效率。

词法分析器的分析过程:调用getsym时,它通过getch过程从源程序中获得一个字符。

如果这个字符是字母,则继续获取字符或数字,最终可以拼成一个单词,查保留字表,如果查到为保留字,则把sym 变量赋成相应的保留字类型值;如果没有查到,则这个单词应是一个用户自定义的标识符(可能是变量名、常量名或是过程的名字),把sym臵为ident,把这个单词存入id变量。

查保留字表时使用了二分法查找以提高效率。

如果getch获得的字符是数字,则继续用getch 获取数字,并把它们拼成一个整数,然后把sym臵为number,并把拼成的数值放入num变量。

如果识别出其它合法的符号(比如:赋值号、大于号、小于等于号等),则把sym则成相应的类型。

如果遇到不合法的字符,把sym臵成nul。

语法分析子程序分析:语法分析子程序采用了自顶向下的递归子程序法,语法分析同时也根据程序的语意生成相应的代码,并提供了出错处理的机制。

PSF

PSF

二 DCS系统相关介绍
关于PSF (4)结构组成 PSF 的结构包括条件( conditions )、步骤( step )、动作( actions)、跳出条件(jump out conditions). 1、 条件:是从前一步过渡到后一步的前提。 2、 步骤:显示步号,状态信息以及此步的主要功能。 3、 动作:这一步里需要执行的命令(如启停电机,开关 阀门等)。 4、跳出条件:在这一步里出现一些意外情况(如电机故 障,超温,超压等等)或人为选择跳出按钮,则PSF会从 此步跳到指定步或记忆步。
二 DCS系统相关介绍
关于PSF (7)组态流程
在Sources内,用SCL语言对FC程序进行编写,如下图所示:
二 DCS系统相关介绍
关于PSF (7)组态流程
针对工艺人员编写的PSF顺控图,进行程序设计,顺控图如下图所示:
二 DCS系统相关介绍
关于PSF (7)组态流程
程序解读
二 DCS系统相关介绍
二 DCS系统相关介绍
关于PSF (1)定义
PSF是Process Status Fouction(直译为过程状态功能)的简称。 PSF是人对生产过程的一种自动控制程序,通过对程序内的一系列 设备(如仪表,电机,阀门等)的状态检测,根据检测情况给予 赋值、启停电机等操作,实现对工艺流程或整个生产的连续或间 歇性的操作控制。
二 DCS系统相关介绍
关于PSF (6)操作信息
在PSF操作界面上依次会看到PSF名称、操作模式(I、E)、 现在所在的步骤、所处的状态、然后是(可能会出现,也 可能没有)操作请求,就是提醒操作人员在此时需要注意的 一些事情(比如:此时需要取样等等信息)。这些信息在 弹开PSF对话框时,才可以看到。最后是先前提到的那些按 钮(就是操作人员实际可以人为干预)。

子程序的创建与调用

子程序的创建与调用

子程序的创建与调用子程序,也叫函数,或者功能块,自制积木等。

在讲解子程序应用之前,我们首先要明确一下概念,什么是子程序?使用子程序有什么好处?我们会把什么样的程序块封装为子程序?子程序,是一个大型程序中的某部份代码,由一个或多个语句块组成。

它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

在一个加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。

主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。

比如实现小车前进,我们需要将小车左轮A电机的动力设为是正数,比如40%,同样我们需要将小车右轮B电机的动力设为是负数,-40%,这样小车左右轮就可以以相同的速度往前转,实现小车前进,该功能需要两条程序指令,因此我们可以把它们定义为子程序,在需要小车前进的时候,我们在主程序中进行调用即可,非常便捷。

在我们流程图软件中,同样有设置子程序的模块,我们可以通过此模块把我们需要对需要多次调用、有特定功能的程序块打包成子程序,方便我们在后面程序中调用。

我们通过新建子程序,将我们需要编写的程序块在子程序中进行编写,然后返回主程序编辑界面,将我们刚才编写好的子程序拖拽到主程序下进行调用就可以了,流程如下:在流程图编程中,我们通过“新建子程序”这个模块来编写子程序,在鲸鱼Scratch编程软件中,我们通过“自制积木模块”来创建子程序,在新建自制积木的时候,子程序第一个名称只能使用字母和数字,而且首位不能为数字,如果想添加文字名称,只要点击下面“添加文本”即可。

但是对于子程序应用一定要注意一点,子程序是单独不能执行的,只能被主程序调用后才能被执行。

两者之间可以理解为从属关系,就像是将军和士兵,将不下令,兵不卸甲,单独的小兵是不会主动执行命令,除非将军下达命令。

所以子程序执行一定是要放在主程序中,被主程序调用才可以执行。

实验大纲-高级程序设计

实验大纲-高级程序设计

《高级程序设计》实验教学大纲一、实验课程基本情况二、实验课程介绍《高级程序设计》1.课程简介及要求《高级程序设计》课程为计算机科学技术专业学生必修课程。

本课程选择C#语言,以.NET为平台,从结构化程序设计、面向对象程序设计、算法设计、界面设计、应用程序开发等多个方面系统地介绍程序设计的基本思想方法。

以编程的思想、算法的训练和逻辑思维的思培养为主线,将新概念、新方法贯穿始终,培养学生程序设计的能力。

是计算机专业学生必修的一门实用性极强的课程。

通过本课程的学习,使学生在掌握C#语言基本编程方法的基础上,建立面向对象程序设计的思想,具备面向对象程序设计的能力,能够独立编写出实用的C#程序,为将来从事单机或网络程序设计,以及软件开发奠定坚实基础。

2. 实验目的及要求实验目的:实验课是高级程序设计课程的重要实践环节。

通过实验,使学生对课堂教学内容进一步巩固、验证,加深对面向对象编程思想的理解;强化他们利用C#进行程序流程控制、常用控件的属性、事件、方法的理解和使用,能够建立和使用类,通过简单实验和综合性设计性实验,培养学生的独立编程能力并提高学生的软件开发能力。

实验要求:(1)掌握Visual Studio开发环境。

(2)掌握类的定义和使用。

(3)掌握常用控件的事件。

(4)掌握各种数据类型。

(5)掌握表达式、赋值语句的正确书写规则。

(6)掌握常用函数的使用。

(7)掌握基本控制结构语句及程序结构。

(8)掌握数组的定义和使用。

(9)掌握函数过程和子过程的定义和调用方法。

(10)掌握下拉式菜单等标准Windows界面元素的设计方法。

(11)了解鼠标和键盘事件过程的编写。

(12)掌握各类文件的打开、关闭和读/写操作。

(13) 掌握数据库访问方法及相关的数据控件。

3.实验方式及要求实验方式:上机实验实验要求:(1)任课教师讲清实验的基本目的、方法及要求。

(2)学生实验前必须先阅读实验任务并制定好上机步骤,充分理解实验目的。

Sub过程

Sub过程
() '默认为全局过程 Static a As Integer 'a为静态变量 Dim b As Integer 'b为非静态变量
End Sub
Private Sub Form_Load()
End Sub
Private Static Sub mySub2() '模块级过程 Dim x As Integer 'x为静态变量
Sub subA(y As Integer) X = 0 '本过程级变量,未经显式声明 Print y 'y的值来自父过程中的实参
End Sub
Visual Basic 程序设

Sub过程
Sub mySub1(m As Integer, n As Integer) Print m, n
End Sub Private Sub Form_Load()
Call mySub1(1, 3) '过程中的形参m=1,n=3 mySub1 1, 3 Call mySub2 'VB将后面的空括号自动去掉 mySub2 End Sub Private Static Sub mySub2() Call Form_Load '调用窗体的Load事件过程 Form_Load End Sub
Sub过程
Sub过程也称子过程,是指以规定语法结构组织的、 可以被重复调用的、具有特定功能的相对独立的语句 块。 一、声明Sub过程
[Private|Public][Static] Sub 过程名([形式参数]) 过程体
End Sub 其中,Public声明全局过程,Private声明模块级过 程,默认为Public。 Static表明本过程中所有过程级变量均为静态。 使用Exit Sub语句可以使程序从Sub过程中退出。

VB过程专业知识讲座

VB过程专业知识讲座

7.2.3 函数过程旳调用
Private Sub Form_Click()
Dim x As Integer, mj as single
x = Val(InputBox("请输入半径x"))
mj = circle_area(x)
‘此语句是函数过程旳调用
print mj
End Sub
Public Function Circle_area (ByVal r As single) As single
End Sub
局部变量
Private Sub Command1_Click() dim n As Integer n=n+1 Print "command1被按下了" & n & "次"
End Sub
静态变量 。
静态变量是指:
✓ 用Static 申明旳变量
✓ 或过程名前加关键字Static旳过程内用Dim申明 旳局部变量
CONST Pi=3.14159
'定义一圆周率常量Pi
Circle_area = Pi*r*r
'把成果赋给函数名
End Function
函数过程旳定义
[Static][Private][Public] Function 函数过程名([参数列表]) [As 类型] 局部变量或常数定义 语句块 [函数名 = 返回值(函数值)]
Private Sub swap1(ByVal x%, ByVal y%) Dim t% t = x: x = y: y = t
End Sub
Private Sub swap2(ByRef x%, ByRef y%) Dim t% t = x: x = y: y = t

fotran语言

fotran语言

数组的哑实结合可以归纳为以下 两点:
• 信息隐藏
– 设计得当的函数可以把具体操作细节对程序中不需要知道 它们的那些部分隐藏掉,从而使整个程序结构清楚
函数的分类(1)
从用户角度看: 标准函数(库函数) 使用:调用函数到文件中。 用户自定义函数:
函数的分类(2)
从函数的形式看:
有参函数 function max(x,y) {…… 主调函数调用 } 被调函数时,不 function a( )能传递数据。一 般用来执行指定 {…… 的一组操作。 }

说明部份中应对过程体内一切变量、数组等实 体(包括变元)做出说明; 执行语句部分为任何可执行语句的集合, 其中必须对函数结果名至少赋值一次,作为得 到的函数值; END 〔 FUNCTION 〔函数名〕〕是函数 结束语句,它标志函数过程的结束,并具有将 控制返回到主调程序的作用。FUNCTION 和 函数名可以省略。
– Geoffrey James的《编程之道》
• 算法设计的艺术
程序设计的艺术
– 程序的灵魂 – Donald E. Knuth, "The Art of Computer Programming", 清华大学出版社(英) 国防工业出版社(中) – 相关推荐: 《具体数学: 计算机科学基础 (英文版.第2版) 》 《算法导论 (第二版 影印版)》
结果: 4.0 2.0 2.0 3.0 4.0 7.0
Subroutine addxy(x,y,z) implicit none real,intent(in)::x real,intent(inout)::y real,intent(out)::z y=y+6 z=x+y end
implicit none real x1,y1,z1 x1=1;y1=2 call addxy(x1,y1,z1) print*,z1 call addxy(2.0,y1,z1) ! Error ! call addxy(2.0,3.0,z1) print*,z1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实习六
过程和子过程的定义和调用方法
地点:计算机实验室。

每名学生一台计算机。

实习时间:90分钟
指导教师:任课教师,实习指导教师
学生分组:每三人为一组。

每名教师负责七个组的指导。

实习目的:
1、 掌握自定义函数过程和子过程的定义和调用方法.
2、 掌握形参和实参的对应关系.
3、 掌握值传递和地址的传递方式.
4、 掌握变量、函娄和过程的作用域.
5、 掌握递归概念和使用方法.
熟悉程序设计中的常用算法.
实验6.1 编一子过程ProcMin,求一维数组a 中的最不值,子过程的形参自己确定.
主调程序随机产生10个-300~-400之间的整数,调用ProcMin 子过程,显示
最小值.
实验6.2 编一函数Max(a( )),求一维数组a 中的最大值.主调程序随机产生10个
100~200之间的数,调用Max 函数,显示最大值.
实验6.3 编一个函数过程MySin(x),求
MySin(x)=()()!121...!
7!5!31121753--++-+---n x x x x x n n 当第n 项的精度小于510-时结束计算,x 为弧度.主要程序同时调用MySin 和内
部函数Sin,进行验证.
【提示】
关键是找部分级数和的通项,通项表示如下:
))2()1/((12+⨯+⨯⨯⨯-=+i i x x T T i i ......7,5,3,1=i
实验6.4编一个函数过程HtoD(H),将十六进制字符串H 转换成十进制数.主调程序
调用HorD 函数,再调用内部函数Hex(number)进行逆向验证.
实验6.5 参阅教篇例6.2,编一个子过程DeleStr(s1,s2),将字符串s1中出现s2子字
符串删去,结果还是存放在s1中.
例如:s1=”12345678AAABBDFG12345” s2=”234”
结果:s1=”15678AAABBDFG15”
【提示】
解决此题的方法有以下要点:
(1) 在s1字符串中找s2的子字符串,可利用lnStr()函数,要考虑到s1中可能存在多个或不存在s2字符串,用Do While Instr(s1,s2)﹥0循环结构来实现.
若在s1中找到s2的子字符串,首先要确定s1字符串的长度,因s1字符串在进行多次删除时,长度在变化..然后通过Left() 、Mid() 或Rigth()函数的调用达到删除s1中存在的s2字符串.
实验6.6 编一函数过程MaxLength(s),在已知的字符串s 中,找出最长的单词.假定
字符s 内只含有字母和空格,空格发隔不同的单词.程序运行界面如图2.6.1
所示
【提示】
(1)程序中有到当前单词当前单词长度最长单词最长单词长度等变量.
(2)首先求出输入的字符串长度,然后从字符串中分离出单词,即对每个字符判断:若不为
空格,将每个字符连接到当前单词的字符串变量,当前单词长度计数器加1;若为空格,表示一个单词结束,将每个字符连接到当前单词长度与最长单词长度比较,若长,当前单词替代最长单词.当前单词置空,当前单词计数器清除为0.
实验6.7编一函数过程IsH(n),对于已知正整数n判断该数是否是回文数,函数的返回值类型为布尔型.主调程序每输入一个数,调用IsH函数过程,然后在图形
框显示输入的数,对于是回文数显示一个”★"见图2.6.2。

图2.6.2 实验6.7回文数程序运行界面
【提示】
(1)所谓回文数是指顺读与倒读数字相同,即指最高位与最低们相同,次高位与次低位相同,依次类推.当只有一位数时,也认为是回文数.
(2)回文数的求法,只要对输入的数(按字符串类型处理),利用MID函数从两边
往中间比较,若不相同,就不是回文数.
实验6.8编一函数过程 IsZ(n),对于已知正整数n ,判断该数是否是质数,函数的返回值类型为布尔型.方调程序每输入一个数,调用Is Z函数过程,然后在图形框显示输入的数,对于是质数显示一个"★",界面见上题.
实验6.9编一函数过程,用矩形法求定积数⎰
b a f(x)dx .矩形法的第i 块小面积的
公式为:s i =h*f(x i )
h 为小面积 的宽度主调程序调用函数过程,求dx x
x ⎰+52ln 1的定积分. 实验6.10用迭代法编一个函数过程f(a),求x=3a 求立方根的迭代公式为:
x i 1+=(2/3)x i +a/3x i 2
精度为ε=105-.主调程序调用该函数过程,a的值分别为3、9和12,
显示计算结果.同时,利用幂运算符“^”检验函数过程的正确性.迭代法求
高次方程根的算法见教学篇例6.18.
实验 6.11 用递归方法,编写求n m C 的函数.
对于n m C 有如下递归形式:111---+=n m n m n m C C C 递归条件:⎪⎪⎩⎪⎪⎨⎧〉=====-2
10110m n C C n m
C n C n m m n m m m 实验 6.12 类似第10题,将迭代法改为递归法编函数过程f2(x0,a),求3a x =,求立
方根的迭代公式为:
21332i
i i x a x x +=+
ε.
精度为5
=
10-
主调程序分别调用函数过程,a的值分别为3、9和12,显示计算结果.同时,利用运算符“∧”检验数时程的正确性.
【提示】
递归法求根时,形参要有两个,x0为每次递归调用时的初值,假定x0的初值为a.。

相关文档
最新文档