搜档网
当前位置:搜档网 › 编译原理实验指导书(2015)

编译原理实验指导书(2015)

编译原理实验指导书(2015)
编译原理实验指导书(2015)

LIAOCHENG UNIVERSITY

编译原理实验指导书

聊城大学计算机学院

2011年3月

目录

《编译原理》课程实验教学大纲 (1)

实验一词法分析器的设计 (3)

基本信息 (3)

实验目的 (3)

实验内容 (3)

实验扩充 (5)

5

5

5

10

10

10

10

10

10

11

19

19

《编译原理》课程实验教学大纲

课程名称:编译原理

英文名称:Compile principles

设置形式:非独立设课课程模块:专业方向课实验课性质:专业实验课程编号:509615

课程负责人:姜华大纲主撰人:姜华

大纲审核人:左风朝

一、学时、学分

课程总学时:72实验学时:8课程学分:4二、适用专业及年级

六、考核方式及成绩评定

根据学生实验出勤情况、实验态度、实验报告成绩等方面评定实验成绩。实验报告平均成绩(含实验理论)占实验成绩的50%,实验技能平均成绩(含实验态度)占实验成绩的50%。实验成绩占该课程考试总成绩的10%—20%。在机器上将程序及运行结果上传至服务器,由实习教师给出优、良、中、及格、不及格。

七、实验教科书、参考书

1.实验教科书

自编实验指导书。

2.实验参考书

实验一词法分析器的设计

基本信息

实验课程:编译原理设课形式:非独立

课程学分:4 实验项目:词法分析器的设计

项目类型:设计项目学时:4

实验目的

1. 掌握词法分析的原理;

2. 熟悉符号表的建立与单词的分类方法;

3. 掌握词法分析器的设计与调试;

实验内容

1. 分析如表1所定义的PASCAL语言子集的语法,找出所有单词的组成及类别;

2. 完成单词的分类及其编码;

3. 完成保留字表、变量名表和常数表的结构设计;

4. 建立识别单词符号集合的DFA;

5. 由DFA设计词法分析程序;

6. 调试并运行词法分析程序;

7. 实验结果分析。分析结果含义并写出自己的心得体会。

表1.PASCAL语言子集的语法定义

提示:

(1) 单词的分类。

可将所有标识符归为一类;将常数归为另一类;保留字和分隔符则可采取一词一类。

(2) 符号表的建立。

可事先建立一保留字表,以备在识别保留字时进行查询。变量名表及常数表则在词法分析过程中建立。

(3) 单词串的输出形式。

所输出的每一单词,均按形如(CLASS,V ALUE)的二元式编码。对于变量标识符和常数,CLASS字段为相应的类别码,V ALUE字段则是该标识符、常数在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串,其最大长度为四个字符;常数表登记项中则存放该整数的二进制形式)。对于保留字和分隔号,由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,V ALUE字段则为“空”。不过,为便于查看由词法分析程序所输出的单词串,也可以在CLASS字段上直接放置单词符号串本身。

测试用输入:

测试用输入程序为。

Procedure program1(a, b);

Begin

Var xyz=50;

While a>b do

begin

If xyz=0 then

xyz=50;

xyz:=xyz-a;

a:=a-1;

end

End

实验扩充

构造语言的词法分析程序,要求识别出变量类型并记录相关信息。

实验说明

实验环境:WINDOWS下,工具为Turbo C2.0或Visual C 6.0。

实验考核方式

1.提交实验报告

2.演示程序和答辩(抽查)

实验辅导

1. 词法分析程序的功能

词法分析程序又称为扫描器,其功能在于依次扫视字符串形式源程序中的各个字符,逐个识别出其中的单词,并将其转换为内部编码形式的单词符号串作确为输出。通常,可采用二元式

(class,value)

来表示一个单词符号的内部编码,其中:class为一整数码,用于表示该单词的类别;value则是该单词之值(如变量名在符号表中序号,常数的二进制表示,以及运算符和分隔符的编码等等)。

概括地说,扫描器在其工作过程中,一般应完成下列的任务:

(1)识别出源程序中的各个单词符号,并将其转换为内部编码形式;

(2)删除无用的空白字符、回车字符以及其它非实质性字符;

(3)删除注释;

(4)进行词法检查,报告所发现的错误。

此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标识符登录到符号表的工作。

2. 实例分析

对于表2所列的各类单词符号,词法分析程序可按图1所示的状态转换图来构造。

表2 一个语言的单词符号及分类码表

图1识别表2所列语言单词的DFA及相关的语义过程

相关变量和子程序说明如下:

◆函数GETCHAR每调用一次,就把扫描指示器当前所指示的源程序字符送入字符变

量ch,然后把扫描指示器前推一个字符位置。

◆字符数组TOKEN用来依次存放一个单词词文中的各个字符。

◆函数CAT每调用一次,就把当前ch中的字符拼接于TOKEN中所存字符串的右边。

◆函数LOOKUP每调用一次,就以TOKEN中的字符串查保留字表,若查到,就将

相应关键字的类别码赋给整型变量c;否则将c置为零。

◆函数RETRACT每调用一次,就把扫描指示器回退一个字符位置(即退回多读的那

个字符)。

◆函数OUT一般仅在进入终态时调用此函数,调用的形式为OUT (c,VAL)。其中,

实参c为相应单词的类别码或其助记符;当所识别的单词为标识符和整数时,实参VAL为TOKEN (即词文分别为字母数字串和数字串),对于其余种类的单词,VAL 均为空串。函数OUT的功能是,在送出一个单词的内部表示之后,返回到调用该

词法分析程序的那个程序。

可参考的C语言源程序如下:

# include

# include

# include

# define ID6

# define INT7

# define LT8

# define LE9

# define EQ10

# define NE11

# define GT12

# define GE13

char TOKEN[20];

extern int lookup (char*);

extern void out (int, char*);

extern reporterror (void);

void scannerexample (FILE*fp)

{

char ch;

int i, c;

ch=fgetc (fp);

if (isalpha (ch))/*it must be a identifer!*/

{

TOKEN[0]=ch;

ch=fgetc (fp);i=1;

while (isalnum (ch))

{

TOKEN[i]=ch;i++;

ch=fgetc (fp);

}

TOKEN[i]=′\0′

fseek(fp,-1,1);/* retract*/

c=lookup (TOKEN);

if (c==0) out (ID,TOKEN);

else out (c," ");

}

Else

if(isdigit(ch))

{

TOKEN[0]=ch;

ch=fgetc(fp);i=1;

while(isdigit(ch))

{

TOKEN[i]=ch;i++;

ch=fgetc(fp);

}

TOKEN[i]=′\0′;

fseek(fp,-1,1);

out(INT,TOKEN);

}

Else

switch(ch)

{

case ′<′:ch=fgetc(fp);

if(ch==′=′)out(LE," ");

else if(ch==′>′) out (NE," ");

else

{

fseek (fp,-1,1);

out (LT," ");

}

break;

case ′=′:out(EQ, " ");break;

case ′>′:ch=fgetc(fp);

if(ch==′=′)out(GE," ");

else

{

fseek(fp,-1,1);

out(GT," ");

}

break;

default: reporterror( );

break;

}

return;

}

实验二语法分析器的设计

基本信息

实验课程:编译原理设课形式:非独立

课程学分:4 实验项目:语法分析器的设计

项目类型:设计项目学时:4

实验目的

1. 掌握自上而下语法分析的基本思想;

2. 掌握利用预测分析法进行语法分析的原理和过程;

3. 熟悉文法的机内表示;

4. 掌握语法分析器的设计与调试,提高编程能力、动手能力以及独立分析问题、解决问题的能力和综合运用所学知识的能力。

实验内容

1. 输入任意文法,改写文法使其成为LL(1)文法。

2. 构造文法的预测分析表;

3. 设计堆栈和预测分析表的机内表示;

4. 设计并书写语法分析程序;

5. 调试并运行语法分析程序;

6. 实验结果分析

●分析程序中文法存储所采用的数据结构

●分析结果并写出自己的心得体会

提示:

对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。

实验说明:

实验环境:WINDOWS下,工具为Turbo C2.0或Visual C 6.0。

实验考核方式:

1. 提交实验报告

2. 演示程序和答辩(抽查)实验预习

实验辅导

1. 设计原理及算法描述

所谓LL(1)分析法,就是指从左到右扫描输入串(源程序),同时采用最左推导,且对每次直接推导只需向前看一个输入符号,便可确定当前所应当选择的规则。实现LL(1)分析的程序又称为LL(1)分析程序或LL1(1)分析器。

一个文法要能进行LL(1)分析,那么这个文法应该满足:无二义性,无左递归,无左公因子。当文法满足条件后,再分别构造文法每个非终结符的FIRST和FOLLOW集合,然后根据FIRST和FOLLOW集合构造LL(1)分析表,最后利用分析表,根据LL(1)语法分析构造一个分析器。

2. 分析过程

LL(1)的语法分析程序包含了三个部分,总控程序,预测分析表函数,先进先出的语法分析栈,本程序也是采用了同样的方法进行语法分析,该程序是采用了C语言来编写,其逻辑结构图如图2所示。

图2 LL(1)语法分析逻辑结构图

LL(1)预测分析程序的总控程序在任何时候都是按STACK栈顶符号X和当前的输入符号a做哪种过程的。对于任何(X,a)总控程序每次都执行下述三种可能的动作之一:

(1)若X = a =‘#’,则宣布分析成功,停止分析过程。

(2)若X = a ‘#’,则把X从STACK栈顶弹出,让a指向下一个输入符号。(3)若X是一个非终结符,则查看预测分析表M。若M[A,a]中存放着关于X的一个产生式,那么,首先把X弹出STACK栈顶,然后,把产生式的右部符号串按反序一一弹出STACK栈(若右部符号为ε,则不推什么东西进STACK栈)。若M[A,a]中存放着“出错标志”,则调用出错诊断程序ERROR。

事实上,LL(1)的分析是根据文法构造的,它反映了相应文法所定义的语言的固定特征,因此在LL(1)分析器中,实际上是以LL(1)分析表代替相应方法来进行分析的。

3. 构造LL(1)分析表

例如考查文法G[E]:

E→E+T | T

T→T*F | F

F→( E ) | i |

我们容易看出此文法没有左公因子也没有二义性,但却存在两个直接左递归,这里我们利用引入新非终结符的方法来消除它使方法满足要求,即:

(1) 改写文法。对形如:U→Ux|y的产生式(其中x,y V+ ,y不以U开头),引入一个新的非终结符U’后,可以等价地改写成为:

U→yU’

U’→x U’|ε

显然改写后,U和U’都不是左递归的非终结符。因此文法G[E]按上述方法消去左递归后可等价地写成:

E→TP

P→+TP | ε

T→FQ

Q→*FQ | ε

F→( E ) | i

(2) FIRST和FOLLOW集合构造。在构造LL(1)预测分析表之前,首先要构造该文法的每个非终结符的FIRST和FOLLOW集合,按照下面描述的算法来构造这两个集合。

①FIRST集合的构造算法:

若X∈VT,则FIRST(X)={X}。

●若X∈VN,且有产生式X→a……,则把a加入到FIRST(X)中;若X→ε也是一

条产生式,则把ε也加到FIRST(X)中。

●若X→Y……是一个产生式且Y∈VN,则把FIRST(Y)中的所有非ε-元素都加到

FIRST(X)中;若X→Y1Y2…Yk是一个产生式,Y1,…,Yi-1都是非终结符,而且,对于任何j,1≤j≤i-1,FIRST(Yj)都含有ε(即Y1…Yi-1* ε),则把FIRST(Yj)中的所有非ε-元素都加到FIRST(X)中;特别是,若所有的FIRST(Yj)均含有ε,j=1,2,…,k,则把ε加到FIRST(X)中。连续使用上面的规则,直至每个集合FIRST不再增大为止。

②FOLLOW集合的构造算法:

●对于文法的开始符号S,置#于FOLLOW(S)中;

●若A→αBβ是一个产生式,则把FIRST(β)| {ε}加至FOLLOW(B)中;

●若A→αB是一个产生式,或A→αBβ是一个产生式而β?ε(即ε∈

FIRST(β)),则把FOLLOW(A)加至FOLLOW(B)中。

连续使用上面的规则,直至每个集合FOLLOW不再增大为止。

算法中利用二维数组分别表示各产生式右部的FIRST和左部的FOLLOW集合(3)预测分析表构造。构造G[E]的LL(1)预测分析表。预测分析表M[A, a]是如下形式的一个矩阵。A为非终结符,a是终结符或‘#’。矩阵元素M[A, a]中存放这一条关于A的产生式,指出当A面临输入符号a是所应采用的规则。M[A, a]也可能存放一条“出错标志”,指出当A根本不该面临输入符号a。算法中利用二维数组存储分析表。

4. 利用分析表进行预测分析

(1) 总控程序的流程图

LL(1)分析法总控程序流程图如图3所示。

图3 LL(1)分析法总控程序流程图

(2) 总程序的算法描述如下:

BEGIN

首先把‘#’然后把文法开始符号推进STACK栈;

把第一个输入符号读进a; FLAG:=TRUE;

WHILE FLAG DO

BEGIN

把栈顶符号出栈到X中;

IF X in VT THEN

IF X =a THEN 把下一输入符号读进a

ELSE ERROR

ELSE IF X= ‘#’THEN IF X=a THEN FLAG:=FALSE

ELSE ERROR

ELSE IF M[A, a]={X→x1x2…xk} THEN 把xk, xk

–1,…, x1依次进栈/*若x1, x2 …xk=e,则不进栈*/

ELSE ERROR

END OF WHILE; STOP /*分析成功,过程结束*/

END

(5) 实例分析

①实例

考查文法G[E]:E→E+T | T

T→T*F | F

F→( E ) | i |

文法改造为LL(1)文法为测试文法G[E]: E→TG

G→+TG | ^

T→FS

S→*FS | ^

F→( E ) | i

分析例句:i*(i)# , i+i#

输入:串w和文法G的分析表M。

输出:如果W属于L(G),则输出W的最左推导,否则报告错误。

方法:开始时,#S在分析栈中,其中S是文法的开始符号,在栈顶;令指针ip指向W#的第一个符号;

②主要数据结构描述

char termin[50]; /*终结符号*/

char non_ter[50]; /*非终结符号*/

char v[50]; /*所有符号*/

char left[50]; /*左部*/

char right[50][50]; /*右部*/

int M[20][20]; /*二维数组存储分析表*/

栈T用来存放产生式的右边

Str数组存放要分析的句子串

③可参考的C语言源程序

V/*LL(1)分析法源程序,只能在VC++中运行*/

#include

#include

#include

#include

char A[20];/*分析栈*/

char B[20];/*剩余串*/

char v1[20]={'i','+','*','(',')','#'};/*终结符*/ char v2[20]={'E','G','T','S','F'};/*非终结符 */ int j=0,b=0,top=0,l;/*L为输入串长度 */

typedef struct type/*产生式类型定义 */ { char origin;/*大写字符*/

char array[5];/*产生式右边字符 */

int length;/*字符个数 */ }type;

type e,t,g,g1,s,s1,f,f1;/*结构体变量*/

type C[10][10];/*预测分析表 */

void print()/*输出分析栈*/

{ int a;/*指针*/

for(a=0;a<=top+1;a++)

printf("%c",A[a]);

printf(""t"t");

}/*print*/

void print1()/*输出剩余串*/

{ int j;

for(j=0;j

printf(" ");

for(j=b;j<=l;j++)

printf("%c",B[j]);

printf(""t"t"t");

}/*print1*/

void main()

{ int m,n,k=0,flag=0,finish=0;

char ch,x;

type cha;/*用来接受C[m][n]*/

/*把文法产生式赋值结构体*/

e.origin='E';

strcpy(e.array,"TG");

e.length=2;

t.origin='T';

strcpy(t.array,"FS");

t.length=2;

g.origin='G';

strcpy(g.array,"+TG");

g.length=3;

g1.origin='G';

g1.array[0]='^';

g1.length=1;

s.origin='S';

strcpy(s.array,"*FS");

s.length=3;

s1.origin='S';

s1.array[0]='^';

s1.length=1;

f.origin='F';

strcpy(f.array,"(E)");

f.length=3;

f1.origin='F';

f1.array[0]='i';

f1.length=1;

for(m=0;m<=4;m++)/*初始化分析表*/

for(n=0;n<=5;n++)

C[m][n].origin='N';/*全部赋为空*/ /*填充分析表*/

C[0][0]=e;C[0][3]=e;

C[1][1]=g;C[1][4]=g1;C[1][5]=g1;

C[2][0]=t;C[2][3]=t;

C[3][1]=s1;C[3][2]=s;C[3][4]=C[3][5]=s1;

C[4][0]=f1;C[4][3]=f;

printf("提示:本程序只能对由'i','+','*','(',')'构成的以'#'结束的字符串进行分析,\n");

printf("请输入要分析的字符串:");

do/*读入分析串*/

{ scanf("%c",&ch);

if ((ch!='i') &&(ch!='+')

&&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!='#'))

{ printf("输入串中有非法字符\n");

exit(1);

}

B[j]=ch;

j++;

}while(ch!='#');

l=j;/*分析串长度*/

ch=B[0];/*当前分析字符*/

A[top]='#'; A[++top]='E';/*'#','E'进栈*/

printf("步骤\t\t分析栈 \t\t剩余字符 \t\t所用产生式 \n");

do

{

x=A[top--];/*x为当前栈顶字符*/

printf("%d",k++);

printf("\t\t");

for(j=0;j<=5;j++)/*判断是否为终结符*/

if(x==v1[j])

{

flag=1;

break;

}

if(flag==1)/*如果是终结符*/

{

if(x=='#')

{

finish=1;/*结束标记*/

printf("acc!\n");/*接受*/

getchar();

getchar();

exit(1);

}/*if*/

if(x==ch)

{

print();

print1();

printf("%c匹配\n",ch);

ch=B[++b];/*下一个输入字符*/

flag=0;/*恢复标记*/

}/*if*/

else/*出错处理*/

{ print();

print1();

printf("%c出错\n",ch);/*输出出错终结符*/

exit(1);

}/*else*/

}/*if*/

else/*非终结符处理*/

{ for(j=0;j<=4;j++)

if(x==v2[j])

{ m=j;/*行号*/

break;

}

for(j=0;j<=5;j++)

if(ch==v1[j])

{ n=j;/*列号*/

break;

}

cha=C[m][n];

if(cha.origin!='N')/*判断是否为空*/

{ print();

print1();

实验指导书 实验二_SolidWorks建模1

实验二 SolidWorks 草绘特征和放置特征操作(一) 一、 实验目的 1. 掌握基本零件建模的一般步骤和方法 2. 掌握SolidWorks 草绘特征:拉伸凸台、拉伸切除、旋转凸台、旋转切除、扫描、 放样的操作方法。 3. 掌握放置(应用)特征:钻孔特征、倒角特征、圆角特征、抽壳特征、拔模斜度特 征、筋的操作方法 二、 实验内容 完成下列下列零件造型 三、 实验步骤 1. 连接件设计 完成如图 1 (1) (2) 2 所示。 图 1连接件 图 2草图 (3) 单击【拉伸凸台/ 框内选择【两侧对称】选项,在【深度】文本框内输入“54mm ”,单击【确定】按钮,如图 3所示。 图 3 “拉伸”特征 (4) 120°”,然后 在第二参考中选择图形的一条下边线。单击【确定】按钮,建立新基准面,如

错误!未找到引用源。所示。 (5) 1,选择“反转法线” 1,单选择 4所示。 图4草图 图4建立基准面 底面边线

(6) 单击【拉伸凸台/ 列表框内选择【给定深度】选项,在【深度】文本框内输入“12mm”,单击【确定】按钮,如图5所示。 图5“拉伸”特征 (7)选取基体上表面,单击【草图绘制】进入草图绘制,使用中心线工具在 上表面的中心位置绘制直线,注意不要捕捉到表面边线,如图6所示。 图 6 中心线 (8) 内输入“8mm”,在图形区域选择中心线,在属性管理器中选中【添加尺寸】、【选择链】、【双向】和【顶端加盖】复选框,选中【圆弧】单选按钮,单击【确定】按钮,标注尺寸,完成草图,如图7所示。 运用“等距实体”绘制草图 (8) -拉伸】属性管理器,在【终止条件】下拉 列表框内选择【完全贯穿】选项,单击【确定】按钮,如图8所示。

《编译原理》实验指导书-2015

武汉科技大学计算机科学与技术学院 编译原理实验指导书

实验一词法分析器设计 【实验目的】 1.熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。 2.复习高级语言,进一步加强用高级语言来解决实际问题的能力。 3.通过完成词法分析程序,了解词法分析的过程。 【实验内容】 用C语言编写一个PL/0词法分析器,为语法语义分析提供单词,使之能把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析,并把分析结果(基本字,运算符,标识符,常数以及界符)输出。 【实验要求】 1.要求绘出词法分析过程的流程图。 2.根据词法分析的目的以及内容,确定完成分析过程所需模块。 3.写出每个模块的源代码,并给出注释。 4.整理程序清单及所得结果。 【说明】 运行成功以后,检查程序,并将运行结果截图打印粘贴到实验报告上。 辅助库函数scanerLib设计以及使用说明: 下面内容给出了一个辅助库函数的接口说明以及具体实现。 接口设计 //字符类 class Token { TokenType type; String str; Int line; } //词法分析结果输出操作类 class TokenWriter { ArrayList tokens; //用来记录所识别出来的token TokenWriter(); //构造函数指定输入文件名,创建文件输出流 V oid Add(Token); //将词法分析器中分析得到的Token添加到tokens中 WriteXML(); //将tokens写出到目标文件.xml中 } //词法分析操作词法分析生成文件接口<暂时不需要对该类的操作;下一步做语法分析的时候使用> class TokenReader

编译原理实验指导

编译原理实验指导 实验安排: 上机实践按小组完成实验任务。每小组三人,分别完成TEST语言的词法分析、语法分析、语义分析和中间代码生成三个题目,语法分析部分可任意选择一种语法分析方法。先各自调试运行,然后每小组将程序连接在一起调试,构成一个相对完整的编译器。 实验报告: 上机结束后提交实验报告,报告内容: 1.小组成员; 2.个人完成的任务; 3.分析及设计的过程; 4.程序的连接; 5.设计中遇到的问题及解决方案; 6.总结。

实验一词法分析 一、实验目的 通过设计编制调试TEST语言的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。 二、实验预习提示 1.词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示 成以下的二元式(单词种别码,单词符号的属性值)。 2.TEST语言的词法规则 |ID|ID |NUM →a|b|…|z|A|B|…|Z →1|2|…|9|0 →+|-|*|/|=|(|)|{|}|:|,|;|<|>|! →>=|<=|!=|== →/* →*/ 三、实验过程和指导 1.阅读课本有关章节,明确语言的语法,画出状态图和词法分析算法流程图。 2.编制好程序。 3.准备好多组测试数据。 4.程序要求 程序输入/输出示例:

编译实验指导书(2017)

《编译原理》 实验指导书 太原理工大学计算机与软件学院 2017 年 3 月

《编译原理》实验 适用专业:计算机实验类别:专业实验 实验时数:8学时 一、实验课程的性质、目的和任务 1.培养学生初步掌握编译原理实验的技能。 2.验证所学理论、巩固所学知识并加深理解。 3.对学生进行实验研究的基本训练。 二、实验课程的内容、要求及学时分配 实验一、无符号数的词法分析程序(4学时) 内容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。 要求:从键盘上输入一串字符(包括字母、数字等),最后以“;”结束,编写程序识别出其中的无符号数。 无符号数文法规则可定义如下: <无符号数>→<无符号实数>│<无符号整数> <无符号实数>→<无符号整数>.<数字串>[E<比例因子>]│ <无符号整数>E<比例因子> <比例因子>→<有符号整数> <有符号整数>→[+│-]<无符号整数> <无符号整数>→<数字串> <数字串>→<数字>{<数字>} <数字>→0 1 2 3 (9) 读无符号数的程序流程图见下图

实验二、逆波兰式生成程序(4学时) 内容:掌握语法分析的基本思想,并用高级语言编写逆波兰式生成程序; 要求:利用逆波兰式生成算法编写程序,将从键盘上输入的算术表达式(中缀表达式)转化成逆波兰式。 逆波兰表达式的生成过程涉及到运算符的优先级,下表中列出几个常用运算 符的优先关系。 常用运算符优先关系矩阵 如上表所示的优先关系矩阵表示了+,-,*,/,↑,(,)等七种运算符之间的相互优先关系。“>、<、=”三种符号分别代表“大于”、“小于”、“相等”三种优先关系。左边的“=”与右边的“(”之间没有优先关系存在,所以表中为空白。 逆波兰表达式生成算法的关键在于比较当前运算符与栈顶运算符的优先关系,若当前运算符的优先级高于栈顶运算符,则当前运算符入栈,若当前运算符的优先级低于栈顶运算符,则栈顶运算符退栈。 下面给出了逆波兰表达式生成算法的流程图。(为了便于比较相邻运算符的优先级,需要设立一个工作栈,用来存放暂时不能处理的运算符,所以又称运算符栈)。

编译原理实验指导书2010

《编译原理》课程实验指导书 课程编号: 课程名称:编译原理/Compiler Principles 实验总学时数: 8 适用专业:计算机科学与技术、软件工程 承担实验室:计算机学院计算机科学系中心实验室、计算机技术系中心实验室 一、实验教学的目的与要求 上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实习题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的2次上机实验都属于一种设计类型的实验,每个实验的训练重点在于基本的编译技术和方法,而不强调面面俱到;实验的目的是旨在使学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容;培养学生编制算法的能力和编程解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法设计和程序代码的编写;上机时应随带有关的编译原理教材或参考书;要学会程序调试与纠错。 每次实验后要交实验报告,实验报告的内容应包括: (1)实验题目、班级、学号、姓名、完成日期; (2)简要的需求分析与概要设计; (3)详细的算法描述; (4)源程序清单; (5)给出软件的测试方法和测试结果; (6)实验的评价、收获与体会。 开发工具: (1)DOS环境下使用Turbo C; (2)Windows环境下使用Visual C++ 。 考核: 实验成绩占编译原理课程结业成绩的10%。 三、单项实验的内容和要求: 要求每个实验保证每个学生一台微机。 实验一(4学时):单词的词法分析程序设计。 (一)目的与要求 1.目的 通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

安全人机工程学实验指导书

安全人机工程学实验指导书 安全人机工程学 验指导湖南工学院20XX年3月 实验六深度知觉测定实验八记忆广度测量实验 实验九动作速度测定实验 实验七手指灵活性、手腕动觉方位能力测定实验六深度知觉测定实验目的 深度知觉测试是测试人的视觉在深度上的视锐程度,通 过测试可以了解双眼对距离或深度的视觉误差,也可以比较双眼和单眼在辨别深度中的差异。 实验仪器简介 采用EP503A深度知觉测试仪。主要技术指标: 1比较刺激移动速度分快慢二档: 快档50mm/s慢档25mm/s 2比较刺激移动方向可逆。±200mm 3比较刺激移动范围:400mm 4比较刺激与标准刺激的横向距离为55mm 5工作电压

220V 50HE 工作原理: 1 EP503A深度知觉测试仪结构如图2所示: 图 2 EP503A深度知 觉测试仪结构移动比较刺激,使之与标准刺激三点成一直线,在 实验 过程中,可测出被试者视觉在深度上的差异性。 2遥控键如图3所示: 图3 EP503A深度知觉测试遥控器面板示意 3面板布置如图4所示: 图4 EP503A深度知觉测试面板示意三实 验步骤 1、被试在仪器前,视线与观察窗保持水平,固定头部, 能看到仪器内两根立柱中部。2、以仪器内其中根立柱为 标准刺激,距离被试2米,位置固定。另一根可移动的立柱为变异刺激,被试可以操纵电键前后移动。 3、正式实验时,先主试将变异刺激调至任意位置,然 后要求被试仔细观察仪器内两根立柱,自调整,直至被试认为两根立柱在同一水平线上,离眼睛的距离相等为止。被试 调整后,主试记录两根立柱的实际误差值,填入下表中 4、正式实验时,先进行双眼观察20次,其中:有10吃是变异刺激在前,近到远调整; 有10次是变异刺激在后,远到近调整。顺序和距离随 机安排。

R语言实验指导书(二)

R语言实验指导书(二) 2016年10月27日

实验三创建和使用R语言数据集 一、实验目的: 1.了解R语言中的数据结构。 2.熟练掌握他们的创建方法,和函数中一些参数的使用。 3.对创建的数据结构进行,排序、查找、删除等简单的操作。 二、实验内容: 1.向量的创建及因子的创建和查看 有一份来自澳大利亚所有州和行政区的20个税务会计师的信息样本 1 以及他们各自所在地的州名。州名为:tas, sa, qld, nsw, nsw, nt, wa, wa, qld, vic, nsw, vic, qld, qld, sa, tas, sa, nt, wa, vic。 1)将这些州名以字符串的形式保存在state当中。 2)创建一个为这个向量创建一个因子statef。 3)使用levels函数查看因子的水平。 2.矩阵与数组。

i.创建一个4*5的数组如图,创建一个索引矩阵如图,用这个索引矩 阵访问数组,观察结果。 3.将之前的state,数组,矩阵合在一起创建一个长度为3的列表。

4.创建一个数据框如图。 5.将这个数据框按照mpg列进行排序。 6.访问数据框中drat列值为3.90的数据。

三、实验要求 要求学生熟练掌握向量、矩阵、数据框、列表、因子的创建和使用。

实验四数据的导入导出 一、实验目的 1.熟练掌握从一些包中读取数据。 2.熟练掌握csv文件的导入。 3.创建一个数据框,并导出为csv格式。 二、实验内容 1.创建一个csv文件(内容自定),并用readtable函数导入该文件。 2.查看R语言自带的数据集airquality(纽约1973年5-9月每日空气质 量)。 3.列出airquality的前十列,并将这前十列保存到air中。 4.查看airquality中列的对象类型。 5.查看airquality数据集中各成分的名称 6.将air这个数据框导出为csv格式文件。(write.table (x, file ="", sep ="", https://www.sodocs.net/doc/ca14516620.html,s =TRUE, https://www.sodocs.net/doc/ca14516620.html,s =TRUE, quote =TRUE)) 三、实验要求 要求学生掌握从包中读取数据,导入csv文件的数据,并学会将文件导出。

编译程序实验指导书讲解教学提纲

编译程序实验指导书解讲. 编译程序实验指导书 实验目的:用C语言对一个C语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 1.词法分析 1.1 实验目的 设计、编制并测试一个词法分析程序,加深对词法分析原理的理解。 1.2 实验要求 1.2.1 待分析的C语言子集的词法 1. 关键字

main if else int char for while 所有的关键字都是小写。 2.专用符号 = + - * / < <= > >= == != ; : , { } [ ] ( ) 3.其他标记ID和NUM 通过以下正规式定义其他标记: →letter(letter|digit) *ID →digit digit *NUM letter→a|…|z|A|…|Z digit→0|…|9… 4.空格由空白、制表符和换行符组成 空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。 1.2.2 各种单词符号对应的种别码 表1 各种单词符号的种别码 单词符号种别码单词符号种别码单词符号种别码 main 1 = 21 , 32 int 2 + 22 : 33 char 3 - 23 ; 34 if 4 * 24 > 35 else 5 / 25 < 36 for 6 ( 26 >= 37 while 7 ) 27 <= 38 ID 10 [ 28 == 39 MUN 20 ] 29 != 40 { 30 ‘\0' 1000 } 31 ERROR -1 1.2.3 词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。其中, . syn为单词种别码。 . Token为存放的单词自身字符串。 . Sum为整型常量。 具体实现时,可以将单词的二元组用结构进行处理。 例如,对源程序 main() { int i=10; while(i) i=i-1; } 的源文件,经词法分析后输出如下序列: (1,main) (26,() (27,)) (30,{} (2,int) (10,i) (21,=) (20,10) (34,;) (7,while) (26,() (10,i) (27,)) (10,i) (21,=) (10,i) (23,-) (20,1) (34,;) (31,))

人机工程学实验

实验一:双手调节器 1.实验目的 2.实验介绍和实验思路:双手调节器是一种典型的动作技能操作仪器。它是通过双手的操 作合作完成设定的曲线轨迹的运动,即是右手完成目标的上下移动,左手完成目标的左右移动。以被试完成任务所用的时间及偏离轨迹的次数,作为衡量其多次练习后的进步水平。 3.实验过程:分两项实验 第一种:自变量:同一个人的被实验次数即练习遍数。(每人四次,左右单程各两次)因变量:走完单程过程中个出错次数和时间 双手协调能力测试实验中的被试者完成实验的时间及错误次数数据统计分析如下:

根据实验结果绘制的练习曲线如下,用练习遍数作横坐标,用完成任务所用时间及出错次数为纵坐标,做出示意图为: 4.实验结论:完成任务所用的时间及每遍练习中的错误次数随着练习遍数的增加总体趋势 偶尔也会错误次数和时间略有增加。 实验二:瞬时记忆 1.实验目的:证实瞬时记忆的现象及其性质。 2.实验(方案一)思路:恒定变量设为1,自变量为设定秒数,因变量为报对码数目。 方案一数据:

根据图表可知,在设定时间不断减少的情况下,学生答对的图码数目不断减少。 (方案二)实验思路:恒定变量为时间(0.4秒),自变量为图码行数不同,因变量为记忆图码正确数量。 方案二数据:

根据图表可知,当被测试者接收一行图码信息时,思路清晰,记忆较快,当被测试者接收两行图码信息时,记忆速度不如一行图码快。 3.实验总结:1. 在设定时间不断减少的情况下,学生答对的图码数目不断减少。 2. 瞬间记忆在0.4秒情况下,记忆的合理码数在 3.2—3.5之间。 实验三:记忆广度 1.实验目的:学习测定光简单反应时的程序,比较光简单反应时的个体差异,通过测定闪光融合领率.学习使用阶梯法测定感觉阈限 2. 实验介绍和实验思路: 影响短时记忆广度的因素很多,组块的大小,熟悉性,复杂性等都会影响短时记忆的容量设自变量为计位数,因变量为正确个数,测试正确率: 3.根据数据分析结果: 随着计位数的不断增加,实验者按对的个数不断减少,正确率越来越低, 这说明人的记忆广度有限,所以在适当的记忆时间内,应设计相应的可记忆的内容,严防记忆过载。从另一方面讲了解短时记忆的特点,选择正确的方法加以训练,有助于个人记忆的

实验指导书实验二_SolidWorks建模1

实验二SolidWorks草绘特征和放置特征操作(一) 一、实验目的 1.掌握基本零件建模的一般步骤和方法 2.掌握SolidWorks草绘特征:拉伸凸台、拉伸切除、旋转凸台、旋转切除、扫描、放样的操 作方法。 3.掌握放置(应用)特征:钻孔特征、倒角特征、圆角特征、抽壳特征、拔模斜度特征、筋的 操作方法 二、实验内容 完成下列下列零件造型 三、实验步骤 1. 连接件设计 完成如图1所示模型。 (1)单击【新建】按钮一1,新建一个零件文件。 (2)选取前视基准面,单击【草图绘制】按钮一I,进入草图绘制,绘制草图,如图2 所示。 图1连接件图2草图 ⑶ 单击【拉伸凸台/基体】按钮,出现【拉伸】属性管理器,在【方向】下拉列表 框内选择【两侧对称】选项,在【深度】文本框内输入" 54mm ”,单击【确定】 按钮,如图3所示。 (4)单击【基准面】按钮一1,出现【基准面】属性管理器,其中第一参考选择图形下底面, 然后单击【两面夹角】按钮日,在【角度】文本框内输入"120°,然后在第二参考中选择 图形的一条下边线。单击【确定】按钮¥,,建立新基准面,如

错误!未找到引用源。所示。 图4建立基准面 (5) 在设计树中右击基准面 1选择“反转法线” 卜,然后再单击基准 面 1单选择 【草图绘制】按钮 ,进入草图绘制,单击【正视于】按钮 ,绘制草图,如图 4所示。 边线 底面 图4草图

(6) 单击【拉伸凸台/基体】按钮 ,出现【拉伸】属性管理 器,在【终止条件】下拉 列表框内选择【给定深度】选项,在【深度】文本框内输入“ 12mm ”,单击【确 定】按钮1 如图5所示。 (7) 选取基体上表面,单击【草图绘制】 按钮_1,进入草图绘制,使用中心线工具 上表面的中心位置绘制直线,注意不要捕捉到表面边线,如图 6所示。 图6中心线 (8) 单击【等距实体】按钮丄,出现【等距实体】属性管理器,在【等距距离】文本框 内输入 “8mm ”,在图形区域选择中心线, 在属性管理器中选中 【添加尺寸】、【选 择链】、【双向】和【顶端加盖】复选框,选中【圆弧】单选按钮,单击【确定】 按钮 ,标注尺寸,完成草图,如图 7所示。 律黑 __________________ 严 玄[B 总 -召 厂[.砲 r 韦歼左眛編◎也 17比自口 R an (A ) 广 Efetfi- 图_7运用“等距实体”绘制草图 (8)单击【拉伸切除】按钮 □,出现【切除-拉伸】属性管理器,在【终止条件】下拉 列表框内选择【完全贯穿】选项,单击【确定】按钮 ,如图8所示。 图5 “拉伸”特征

编译原理实验指导书(图)

编译原理 实 验 指 导 书

前言 编译原理是计算机科学与技术、软件工程等专业的主干课和必修课,由于这门课程相对抽象且内容较复杂,一直是比较难学的一门课程。在编译原理的学习过程中,实验非常重要,只有通过上机实验,才能使学生对比较抽象的课程内容产生一个具体的感性认识。 本书实验环境主要为C环境及一个词法分析器自动生成工具FLEX和一个语法分析器自动生成工具BISON。书中给出的参考源程序也是C源程序,但由于实验者熟悉精通的语言工具不尽相同,因而强求采用统一的编程语言编程是不现实的。实验者在掌握了编译程序各个阶段的功能和原理之后,不难借助使用其他自己熟悉的语言实现相关功能。 实验者在实验过程中应该侧重写出自己在算法分析、设计思路、实现功能或程序代码等方面的特色,写出设计和实现过程中遭遇到的难点和解决办法,可以不拘泥于实验指导给出的参考性设计思路,尽可能在深度和广度上加以拓展。只有这种各具特色的实验报告,才将更有利于体现实验者在创新思维和动手能力上的差异。 通过这些实验,能使学生对这些部份的工作机理有一个详细的了解,达到“知其然,且知其所以然”的目的。并可在C环境下对自动生成工具生成的词法、语法分析器进行编译调试。 由于手工生成词法和语法分析器的工作量太大,在实际中常用自动生成工具来完成之。这些工具中最著名的当属贝尔实验室的词法分析器生成工具LEX和语法分析器生成工具YACC。它们现已成为UNIX的标准应用程序同UNIX一起发行。与此同时GNU推出与LEX完全兼容的FLEX,与YACC完全兼容的BISON。这两个程序都在Internet上以源代码的形式免费发行,所以很容易在其它操作系统下重新编译安装。我们实验采用的就是for dos的FLEX和BISON。本书有关的编译工具及其源程序例子,可到BISON的网站上下载。关于FLEX和BISON的用法简介,参见附录,如需更详细的介绍,请参阅编译工具中帮助文件。

棒框仪实验报告

棒框仪实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

人机工程学 报告书 姓名:董思洋 班级:工业设计10-3班学号: 二零一二年

棒框仪实验指导书 陈亚明编 艺术与设计学院 二0一二年二月

棒框仪实验 一、实验目的 本仪器可测量一个倾斜的框对判断一根棒的垂直性影响的程度。被试的判断受倾斜的框的影响,相当于周围环境条件变化的影响,所以此 本仪器可以通过被试的认知方式来测量人格特性。 二、实验方法 两人一组,正确使用棒框仪进行测量: 1、一个放在平台上的观察筒被试观察面为圆白背景面板上有一个黑色正方形框和黑色棒。棒的倾斜度可由被试通过旋钮调节。 2、主试面有一个半圆形的刻度,圆弧内指针指示框的倾斜度,中央指针指示棒的倾斜度。主试调节面板上旋钮改变框与棒的倾斜度。 3、在平台上有一个水平仪,可通过旋转平台下面的螺丝将平台调整到水平的位置。此棒框仪的优点在于没有电源的条件下可以使用。 三、测量器具 人体形体测量尺350×165×215mm的棒框仪 四、实验内容 (1)将平台调到水平位置。 (2)根据实验的要求,主试将框和棒调到在一定的倾斜度。 (3)要求被试通过观察筒进行观察,并根据自己感觉将棒调整得与地面垂直。(4)从刻度上读出的棒的倾斜度,即记录下误差的度数和方向。 (5)主试调节不同的方框的倾斜度,即不同的场条件下,重复实验。由被试调整出的棒倾斜度总结出框对棒的影响,从而研究被试的场依存性。 五、实验要求 1.每位同学都要参与测量、被测量过程; 2.记录数据以度为单位 3.测量数据要准确,测量精确;

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

编译程序实验指导书讲解教学提纲

编译程序实验指导书 讲解

编译程序实验指导书 实验目的:用C语言对一个C语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 1.词法分析 1.1 实验目的 设计、编制并测试一个词法分析程序,加深对词法分析原理的理解。 1.2 实验要求 1.2.1 待分析的C语言子集的词法 1. 关键字 main if else int char for while 所有的关键字都是小写。 2.专用符号 = + - * / < <= > >= == != ; : , { } [ ] ( ) 3.其他标记ID和NUM 通过以下正规式定义其他标记: ID→letter(letter|digit)* NUM→digit digit* letter→a|…|z|A|…|Z digit→0|…|9… 4.空格由空白、制表符和换行符组成 空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。 1.2.2 各种单词符号对应的种别码 表1 各种单词符号的种别码 单词符号种别码单词符号种别码单词符号种别码 main 1 = 21 , 32 int 2 + 22 : 33 char 3 - 23 ; 34 if 4 * 24 > 35 else 5 / 25 < 36 for 6 ( 26 >= 37 while 7 ) 27 <= 38 ID 10 [ 28 == 39 MUN 20 ] 29 != 40 { 30 ‘\0’ 1000 } 31 ERROR -1

1.2.3 词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。其中, . syn为单词种别码。 . Token为存放的单词自身字符串。 . Sum为整型常量。 具体实现时,可以将单词的二元组用结构进行处理。 例如,对源程序 main() { int i=10; while(i) i=i-1; } 的源文件,经词法分析后输出如下序列: (1,main) (26,() (27,)) (30,{} (2,int) (10,i) (21,=) (20,10) (34,;) (7,while) (26,() (10,i) (27,)) (10,i) (21,=) (10,i) (23,-) (20,1) (34,;) (31,)) 1.3 词法分析程序的主要算法思想 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想 是根据扫描到的单词符号的第一个字符的种类,拼出相应的单词符号。 1. 主程序示意图 主程序示意图如图1所示。 图1 词法分析主程序示意图 其中初值包括如下两方面: (1)关键字表初值 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识 别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:

(完整word版)安全人机工程学综合实验指导书20131

《安全人机工程学》实验指导书 杨轶芙编 实验学时:6学时

目录 实验一手指灵活性测试 ................................................................... - 1 -实验二动觉方位辨别能力的测定 ..................................................... - 3 -实验三暗适应测试实验 ..................................................................... - 5 -实验四明度适应测试 ......................................................................... - 8 -实验五选择、简单反应时测定实验............................................... - 10 -实验六听觉实验 ............................................................................... - 15 -实验七动作稳定性测试 ................................................................... - 22 -

实验一手指灵活性测试 『实验目的』 测定手指、手、手腕灵活性以及手眼协调能力。 『实验仪器』 采用EP707A型手指灵活性测试仪。 该仪器的主要技术参数如下: 1、手指灵活性测试100孔 2、指尖灵活性测试M6、M5、M4、 M3螺栓各25个 3、计时范围0~9999.99秒 4、电源电压220V 50HZ 5、消耗功率10W 6、外形尺寸505×310×48 7、重量3.5千克(净重) 『实验内容』 (一)手指灵活性测试(插孔插板) 1、使用者接上电源打开电源开关,此时计时器即全部显示为0000. 00。然后插上手指灵活性插板(有100个φ 1.6mm 孔),按复位按键被试即可进行测试。 2、被试用优势手拿住镊子钳住φ1.5针,插入开始位,计时器开始计时 3、依次用镊子(从左至右,从上至下)钳住φ1.5针插满100个孔,最后插终止位,计时会自动结束,记录下插入100个棒所需要的时间; 4、每次重新开始需按“复位”键清零。 (二)指尖灵活性测试 1、使用者接上电源打开电源开关,此时计时器即全部显示为0000. 00。然后插上指尖灵活性插板(M6、M5、M4、M3螺栓各25个),按复位按键被试即可进行测试。 2、当被试用优势手放入起始点第一个M6垫圈起,计时器开始计时,然后

《面向对象程序设计》实验指导书(实验二)

实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体} ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体} ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明

C语言程序设计实验指导书

C 语言程序设计 实 验 指 导 书 电子工程学院 2012-2

实验一 C程序的运行环境和编辑、调试、运行简单C程序 一、实验目的 1.了解 Turbo C 的基本操作方法,学会独立使用该系统。 2.掌握在该系统上如何编辑、编译、运行一个C程序。 二、实验内容及步骤 1.进入C的工作环境 1)在Windouws环境下:“开始”→“程序”→“MS-DOS” 屏幕上进入 MS-DOS窗口 2)在Dos环境下:键入命令c:\> cd c:\tc↙ c:\tc> tc↙ 屏幕上出现Turbo C的工作环境 2.熟悉Turbo C的工作环境 了解Edit窗口与Message窗口 了解主菜单的8个菜单项 File Edit Compile Project Option Debug break/watch 3.输入并运行一个简单的程序 File→New 输入源程序:

main() { printf("This is a C program.\n"); printf("OK\n"); } 按F9进行编译和连接,观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 按Run→Run(或按Ctrl+F9) 编译、连接、运行一起完成。 按Run→User screen(或按Alt+F5) 察看运行结果。 按任一键从用户屏切换回TC窗口。 4.输入并编辑第二个C程序 File→New 输入源程序: main ( ) { int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n", sum); }

编辑、运行、调试该程序。 5.编辑、运行、调试自己编写的程序(至少一个程序) 如:输入上底、下底和高,计算梯形面积。 观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 用File→Save (或F2)保存程序(程序名为a1.c) 三、实验报告要求 写明: 1.实验目的 2.实验内容与步骤 3.编写的程序(题目,经调试、运行后正确的程序) 4.编译过程中出现的错误信息。 5.总结讨论本次实验的结果和收获。

编译原理实验指导书-语法分析

编译原理实验指导书 实验2 语法分析 实验目的 1.巩固对语法分析的基本功能和原理的认识。 2.通过对语法分析表的自动生成加深语法分析表的认识。 3.理解并处理语法分析中的异常和错误。 实验要求 一、对学生要求: 1.掌握语法分析程序的总体框架,并将其实现。 2.掌握语法分析表的构造方法 3.掌握语法分析的异常和错误处理。 二、对实验指导教师要求: 1.明确语法分析的基本功能和原理。 2.语法分析程序的总体结构及其关键之处。 3.语法分析表的生成程序。 4.语法分析的异常和错误处理。 5.编写并运行该题目程序代码,具有该题目的参考答案。 6.深刻理解题目内涵,能够清晰描述问题,掌握该题目涉及的知识点,指导学生实验时需要注意的问题。 实验内容 采用至少一种语法分析技术(LL(1)、SLR(1)、LR(1)或LALR(1))分析类高级语言中的基本语句(至少包括函数定义、变量说明、赋值、循环、分支等语句)。 对如下工作进行展开描述 (1)给出如下语言成分的文法描述 ?函数定义(或过程定义) ?变量说明 ?赋值

?表达式 ?循环 ?分支 (2) 语法分析程序的总体结构及物理实现(程序框图) (3) 核心数据结构和功能函数的设计 (4) 错误处理 错误的位置及类型等 实验评分标准 一、课堂表现(10分) 1.出勤情况(按时,迟到,早退,缺席) 2.是否遵守课堂纪律 二、实验结果(50分) 1.当堂按时完成(10分) 2.独立完成(10分),(和同学协商完成,在老师帮助下完成)3.结果正确无误(15分)其中分析表的输出占5分 4.功能齐全,界面美观,具有较好演示效果(10分) 5.在源程序中有必要的注释和说明,程序文档齐全(5分)三、实验报告(40分) 1.语言的文法描述(10分) 2.语法分析程序的模块结构图(10分) 3.核心数据结构的设计(10分) 4.错误处理(5分) 5.实验过程中遇到的问题的总结及实验的体会(5分)

视野测定实验指导书

安全人机工程实验指导书 ——视野范围测试实验 一、实验简介 视野是指当人的头部和眼球不动时,人眼能观察到的空间范围通常以角度表示。人的视野范围,在垂直面内,最大固定视野为115°,扩大的视野范围为150°;在水平面内,最大固定视野为180°,扩大的视野为190°。 人眼最佳视区上下,左右视野均为只有1.5°左右;良好视野范围,位于在垂直面内水平视线以下30°和水平面内零线左﹑右两侧各15°的范围内;有效视野范围,位于垂直面内水平视线以上25°,以下35°,在水平面内零线左右各35°的视野范围。 在垂直面内,实际上人的自然视线低于水平视线,直立时低15°,放松站立时低30°,放松坐姿时低40°,因此,视野范围在垂直面内的下界限也应随放松坐姿,放松立姿而改变。 色觉视野,不同颜色对人眼的刺激不同,所以视野也不同。白色视野最大,黄﹑蓝﹑红﹑绿的视野依次减小。 仪器名称:BD-Ⅱ-108型彩色分辨视野计。 本仪器用于测定各种彩色和白色的视野范围。 组成与技术规格: 1﹑一个可以转动的黑色半圆弧。直径480mm,弧长+90°—–90°。弧的背面有以中点为0°,左、右分别有10、20、…、90°刻度,表示视点位置。 2、视点:位于在弧上能滑动的装置中。可分别呈现不同大小和颜色。试点直径:10、6、5、 3、1.5mm,颜色:红、黄、绿、蓝及白色。 3、在弧的中心有一黄色注视点。 4、固定头部的下巴支架。被试的左或右眼固定于中心位置。 5、一个与弧同轴的圆盘位于视野计的背面,圆盘上有放视野图纸的装置。并附有记录用的标尺。 6、视野图纸有以中点为0°,左、右分别标有10、20、…、90°的同心圆,并有标有0-360°位置的放射线。随机附视野图纸10张。 二、实验程序 1、把视野图纸安放在视野计背面圆盘上,学习在图纸上做记录的方法。(记录时与被试

实验指导书模板2

请大家按照以下要求更改自己负责的实验(实训)指导书 一、最大标题1 宋体二号加粗居中单倍行距两个空格 二、最大标题2 宋体三号加粗居中 1.5倍行距两个空格 三、一级标题宋体小四加粗两端对齐首行缩进2个字符 1.5倍行距顶格 四、正文宋体小四常规两端对齐首行缩进2个字符 1.5倍行距 五、正文页边距左、右、上2.5cm。下2.1cm 六、注意事项: 1.最重要的是内容不能出错,前后语句要连贯,意思表达完成。 2.标点符号要使用准确。 3.每个结束句子后面要有句号。 4.所有标题号手动输入,不能自动生成。 5.标题级别:一、(一)1.(1)① 七、请大家在群里原文件更改,更改后的文件写上姓名+负责课程(王旭霞+人体解剖学) 八、附件一、附件二模板。

实验指导书模板二: 第二部分内科护理学(最大标题1) 实训一胸腔穿刺术(最大标题2) 一、实训目的(一级标题) (一)胸腔积液性质不明者,抽取积液检查,协助病因诊断。(二级标题) (二)胸腔内大量积液或积气者,抽取积液或积气,以缓解压迫症状,避免胸膜粘连增厚。 (三)脓胸抽脓灌洗治疗,或恶性胸腔积液需胸腔内注人药物者。 二、实训仪器 (一)胸腔穿刺包:内含弯盘2个、尾部连接乳胶管的16号和18号胸腔穿刺针各1根、中弯止血钳4把孔巾1块、巾钳2把、棉球10个纱布2块、小消毒杯2个、标本留置小瓶5个。 (二)消毒用品:2.5%碘酊和75%酒精,或0.5%碘伏。 (三)麻醉药物:2%利多卡因5ml。 三、实训内容 (一)患者体位抽液时,协助患者反坐于靠背椅上,双手放椅背上或取坐位,使用床旁桌支托;亦可仰卧于床上,举起上臂;完全暴露胸部或背部。如患者不能坐直,还可来用侧卧位,床头抬高30°抽气时,协助患者取半卧位。 (二)穿刺部位一般胸腔积液的穿刺点在肩胛线或腋后线第7-8肋间隙或腋前线第5肋间隙。气胸者取患侧锁骨中线第2肋间隙或腋前线第4-5肋间隙进针。 (三)穿刺方法常规消毒皮肤,局部麻醉。术者左手食指和拇指固定穿刺部位的皮肤,右手将穿刺针在局部麻醉处沿下位肋骨上缘缓慢刺人胸壁直达胸膜。连接注射器,在助手协助下抽取胸腔积液或气体,穿刺过程中应避免损伤脏层胸膜,并注意保持密闭,防止发生气胸。术毕拔出穿刺针,再次消毒穿刺点后,覆盖无菌敷料,稍用力压迫容刺部位片刻。 四、注意事项 (一)术前护理 1.心理准备向患者及家属解释穿刺目的操作步骤及术中注意事项,协助患者做好

编译原理实验指导书

编译原理实验指导 书

《编译原理》实验指导书 太原科技大学计算机学院 -3-1

序 《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。该课程系统地向学生介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计和算法,因此,一直是一门比较难学的课程。为了使学生更好地理解和掌握编译原理和技术的基本概念、基本原理和实现方法,实践环节非常重要,只有经过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。 为了配合《编译原理》课程的教学,考虑到本课程的内容和特点,本指导书设置了七个综合性实验,分别侧重于词法分析、NFA的确定化、非递归预测分析、算符优先分析器的构造、LR分析、语义分析和中间代码的生成、基于DAG的基本块优化,以支持编译程序的各个阶段,基本涵盖了《编译原理》课程的主要内容。 本指导书可作为《编译原理》课程的实验或课程设计内容,在课程教学的同时,安排学生进行相关的实验。实验平台可选择在MS-DOS或Windows操作系统环境,使用C/C++的任何版本作为开发工具。学生在做完试验后,应认真撰写实验报告,内容应

包括实验名称、实验目的、实验要求、实验内容、测试或运行结果等。

目录 实验一词法分析 ........................................................... 错误!未定义书签。实验二 NFA的确定化.................................................... 错误!未定义书签。实验三非递归预测分析 ............................................... 错误!未定义书签。实验四算符优先分析器的构造................................... 错误!未定义书签。实验五 LR分析 .............................................................. 错误!未定义书签。实验六语义分析和中间代码生成................................ 错误!未定义书签。实验七基于DAG的基本块优化................................... 错误!未定义书签。

相关主题