电子科技大学Perl语言编程各章课后作业提示

合集下载

perl语言期末考核大作业

perl语言期末考核大作业

Perl程序设计课程考核院系部门:学生专业:学生学号:学生姓名:2012年1月课程大作业内容第一题:请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl 的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。

一、安装过程:Bioperl的安装(1):安装好active perl 。

(2)、打开ppm,得到如下界面:3:,选择Edit >> Preferences。

得到如下界面:4:在Preferences添加下面的站点Repositories to addName perl perlBioPerl-RegularDIST DIST ReleasesBioPerl-Rel DIST/RC DIST/RCeaseCandidatesKobes:选择View >> All Packages;6:在搜索框输入bioperl得到如下界面:7:,选择最新版本,右键安装(需要安装:bioperl;bioperl-db;bioperl-network;bioperl-run)。

8:查看安装是否成功:查看目录Perl\lib\Bio中是否存在文件,存在则表明安装成功二:测试测试代码:建立一个PL文件:写入以下内容,然后双击文件,会在同目录下生成一个文件use Bio::Seq;use Bio::SeqIO;# create a sequence object of some DNAmy $seq = Bio::Seq->new(-id => 'testseq', -seq => 'CATGTAGATAG');# print out some details about itprint "seq is ", $seq->length, " bases long\n";print "revcom seq is ", $seq->revcom->seq, "\n";# write it to a file in Fasta formatmy $out = Bio::SeqIO->new(-file => '>', -format => 'Fasta'); $out->write_seq($seq);双击,得到或者在命令处理程序中:输入:C:\Perl>perldoc Bio::Biblio 得到如下:三、简述该过程中出现问题解决经历第二题:结合图形和程序回答下面问题1、编程实现一个DNA序列文件的酶切位点的分析(包括酶切位点统计、酶切位点的标记和计数,以及可视化输出等,不准用模式匹配知识)(10分)。

Perl语言入门(第四版)习题答案

Perl语言入门(第四版)习题答案

Perl语言入门(第四版)习题答案《Perl语言入门习题答案》2.12 练习1、写一个程序,计算半径为12.5的圆的周长。

圆周长等于2π(π约为3.1415926)乘以半径。

答案为78.5。

-----------------------/home/confish/perl/girth#!/usr/bin/perl -w#this program calculate a circle's girth#confish@ubuntu7.10$r=12.5;$g=12.5*2*3.1415;print "the girth of the circle is $g\n";-----------------------/home/confish/perl/girth2、修改上述程序,用户可以在程序运行时输入半径。

如果,用户输入12.5,则应得到和上题一样的结果。

-----------------------/home/confish/perl/girthpro #!/usr/bin/perl -w#a better one to calculate girth#confish@ubuntu7.10print"enter the radius of the circle\n";chomp($r=<STDIN>);if($r>0){print"the girth of the circle is".$r*2*3.1415."\n";}else{print"nonavailable!\n";}-----------------------/home/confish/perl/girthpro3、修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数。

-----------------------/home/confish/perl/girthzero #!/usr/bin/perl -w#calculate the girth and print 0 when the radius is lower than 0#confish@ubuntu7.10print"enter the radius of the line\n";chomp($r=<STDIN>);if($r>0){print"the girth of the circle is$r*2*3.1415\n";}else{print"the girth of the circle is 0\n";}-----------------------/home/confish/perl/girthzero1、2、3:(一起实现的)#!/usr/bin/perl -w$pai=3.141592654;print "Please Input Radius:";$r=<STDIN>;if ( $r lt 0 ){print "The circumference is 0\n";}else{$l=$r*2*$pai;printf "The circumference is %.1f\n",$l;}4、写一个程序,用户能输入2 个数字(不在同一行)。

编译原理教程课后习题答案

编译原理教程课后习题答案

第二章 词法分析2.1 完成下列选择题: (1) 词法分析器的输出结果是 。

a. 单词的种别编码 b. 单词在符号表中的位置 c. 单词的种别编码和自身值 d. 单词自身值 (2) 正规式M1和M2等价是指 。

a. M1和M2的状态数相等 b. M1和M2的有向边条数相等 c. M1和M2所识别的语言集相等 d. M1和M2状态数和有向边条数相等 (3) DFA M(见图2-1)接受的字集为 。

a. 以0开头的二进制数组成的集合 b. 以0结尾的二进制数组成的集合 c. 含奇数个0的二进制数组成的集合 d. 含偶数个0的二进制数组成的集合 【解答】 (1) c (2) c (3) d图2-1 习题的DFA M2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。

通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。

每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。

2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下: f(x,a)={x,y} f {x,b}={y} f(y,a)=Φ f{y,b}={x,y} 试构造相应的确定有限自动机M ′。

【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。

先画出NFA M 相应的状态图,如图2-2所示。

图2-2 习题的NFA M用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。

电子科技大学UNIX操作系统(本科)作业3

电子科技大学UNIX操作系统(本科)作业3
(B) pwd
(C) password
(D) who
[参考答案:A] 分值:5
6. 用于显示当前工作目录名的命令是( )
(A) rmdir
(B) cal
(C) mkdir
(D) pwd
[参考答案:D] 分值:5
7. 用于设置文件默认许可机制的命令
12. C shell的命令提示符是( )
(A) $
(B) %
(C) ?
(D) #
[参考答案:B] 分值:5
13. 用于创建目录的命令是(
(A) mkdir
(B) rmdir
(C) cal
(D) pwd
[参考答案:A] 分值:5
14. 以下与文件操作相关的命令包括( )
(A) 1n
(C) 1n
(D) tar
[参考答案:A] 分值:5
8. shell编程中,用反引号括起来的内容表示()
(A) 变量值
(B) 全局变量名
(C) 执行命令的结果
(D) 文本字符串信息
[参考答案:C] 分值:5
9. ( )命令用来卸载文件系统
(A) logout
(B) exit
(C) umount
(D) ps
[参考答案:ABC] 分值:5
17. 用于创建目录的命令是 ( )
(A) mkdir
(B) 1s
(C) rmdir
(D) Dir
[参考答案:A] 分值:5
18. 在vi的命令行方式下,进入插入编辑方式的命令包括( )
(A) i
(B) x
(C) a
(D) u
[参考答案:AC] 分值:5
(D) df
[参考答案:C] 分值:5

Perl语言编程摘要

Perl语言编程摘要

第四章语句和声明Perl程序由一系列声明和语句组成。

声明可以放在任何可以放语句的地方,但它的主要作用发生在编译时。

大多数声明在运行时是完全透明的。

编译完之后,语句的主序列只执行一次。

1.简单语句statement;一个简单语句就是一个表达式。

每条简单语句都必须以分号结尾,除非它是一个块中的最后一条语句,在这种情况下分号是可选的,但最好还是加上。

虽然eval{ },do{ }和sub{ }这样的操作符看起来像组合语句,但其实不是。

这些操作符只是表达式里的项,因此如果要把它们用作语句中的最后一个项,则需要一个明确的分号结束。

任何简单语句的后面都允许跟一个简单的修饰词,紧接着是结束的分号。

可能的修饰词有:statement if EXPR;statement unless EXPR;statement while EXPR;statement until EXPR;statement foreach LIST;if和unless修饰词和它们在英语里面的意思和作用类似:$trash->take("out")if$you_love_me;Shutup()unless$you_want_me_to_leave;while和until修饰词重复计算。

while修饰词将不停地执行表达式,只要表达式的值为真,或者until里只要表达式的值为假则不停地执行表达式:$expression++while–e"$file$expression";kiss("me")until$I_die;foreach修饰词(也可以拼为for)为LIST里的每个元素计算一次,而$_是当前元素的别名:s/java/perl/for@resumes;print"field:$_\n"foreach split/:/,$dataline;2.混合语句在一个作用域里的一系列语句称之为块。

Perl语言入门(第四版)习题标准答案

Perl语言入门(第四版)习题标准答案

Perl语言入门(第四版)习题答案————————————————————————————————作者:————————————————————————————————日期:《Perl语言入门习题答案》2.12 练习1、写一个程序,计算半径为12.5的圆的周长。

圆周长等于2π(π约为3.1415926)乘以半径。

答案为78.5。

-----------------------/home/confish/perl/girth#!/usr/bin/perl -w#this program calculate a circle's girth#confish@ubuntu7.10$r=12.5;$g=12.5*2*3.1415;print "the girth of the circle is $g\n";-----------------------/home/confish/perl/girth2、修改上述程序,用户可以在程序运行时输入半径。

如果,用户输入12.5,则应得到和上题一样的结果。

-----------------------/home/confish/perl/girthpro#!/usr/bin/perl -w#a better one to calculate girth#confish@ubuntu7.10print"enter the radius of the circle\n";chomp($r=<STDIN>);if($r>0){print"the girth of the circle is ".$r*2*3.1415."\n";}else{print"nonavailable!\n";}-----------------------/home/confish/perl/girthpro3、修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数。

编译原理部分课后答案,仅供参考

编译原理部分课后答案,仅供参考

第一章编译程序概述1.1什么是编译程序编译程序是现代计算机系统的基本组成部分之一,而且多 数计算机系统都含有不止一个高级语言的编译程序。

对有些高 级语言甚至配置了几个不同性能的编译程序。

1.2编译过程概述和编译程序的结构编译程序完成从源程序到目标程序的翻译工作,是一个复 杂的整体的过程。

从概念上来讲,一个编译程序的整个工作过 程是划分成阶段进行的,每个阶段将源程序的一种表示形式转 换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连 接在一起的。

一般一个编译过程划分成词法分析、语法分析、 语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。

事实上,某些阶段可能组合在一起, 这些阶段间的源程序的中间表示形式就没必要构造岀来了。

我 们将分别介绍各阶段的任务。

另外两个重要的工作:表格管理 和岀错处理与上述六个阶段都有联系。

编译过程中源程序的各 种信息被保留在种种不同的表格里,编译各阶段的工作都涉及 到构造、查找或更新有关的表格,因此需要有表格管理的工作; 如果编译过程中发现源程序有错误,编译程序应报告错误的性 质和错误发生的地点,并且将错误所造成的影响限制在尽可能 小的范围内,使得源程序的其余部分能继续被编译下去,有些 编译程序还能自动校正错误, 这些工作称之为岀错处理。

图1.3表示了编译的各个阶段。

图1.3编译的各个阶段它不生成目标代码,它每遇到一个语句,就要对这个语句进行 分析以决定语句的含义,执行相应的动作。

右面的图示意了它 的工作机理第二章:PL/O 编译程序问答第1题 PL/0语言允许过程嵌套定义和递归调用,试问 它的编译程序如何解决运行时的存储管理。

答:PL/0语言允许过程嵌套定义和递归调用,它的编译程序在运行时采用了栈式动态存储管理。

(数组CODE 存放的只读目 标程序,它在运行时不改变。

)运行时的数据区S 是由解释程序 定义的一维整型数组,解释执行时对数据空间S 的管理遵循后进先岀规则,当每个过程(包括主程序)被调用时,才分配数据 空间,退出过程时,则所分配的数据空间被释放。

编译原理课后习题答案

编译原理课后习题答案

第一章1.解答:程序设计语言:程序设计语言是遵守一定规范的、描述“计算”(Computing)过程的形式语言。

一般可以划分为低级语言和高级语言两大类。

低级语言是面向机器的语言,它是为特定的计算机系统设计的语言,机器指令、汇编语言是低级语言。

高级语言是与具体计算机无关的“通用”语言,它更接近于人类的自然语言和数学表示,例如FORTRAN、Pascal、C等等我们熟悉的语言是高级语言。

语言处理程序:由于目前的计算机只能理解和执行机器语言,因此必须有一个程序将用程序设计语言书写的程序等价(执行效果完全一致)地转换为计算机能直接执行的形式,完成这一工作的程序称为“语言处理程序”。

它一般可分为解释程序和翻译程序两大类。

翻译程序:翻译程序(Translator)是一种语言处理程序,它将输入的用程序设计语言书写的程序(称为源程序)转换为等价的用另一种语言书写的程序(称为目标程序)。

若源语言是汇编语言,目标程序是机器语言,称这种翻译程序为汇编程序。

若源语言是高级语言,目标程序是低级语言,称这种翻译程序为编译程序。

解释程序:解释程序(Interpreter)是一种语言处理程序,它对源程序逐个语句地进行分析,根据每个语句的含义执行语句指定的功能。

2.解答:编译程序的总框图见图1.2。

其中词法分析器,又称扫描器,它接受输入的源程序,对源程序进行词法分析,识别出一个个的单词符号,其输出结果是单词符号。

语法分析器,对单词符号串进行语法分析(根据语法规则进行推导或归约),识别出程序中的各类语法单位,最终判断输入串是否构成语法上正确的“程序”。

语义分析及中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。

编译程序可以根据不同的需要选择不同的中间代码形式,有的编译程序甚至没有中间代码形式,而直接生成目标代码。

优化器对中间代码进行优化处理。

一般最初生成的中间代码执行效率都比较低,因此要做中间代码的优化,其过程实际上是对中间代码进行等价替换,使程序在执行时能更快,并占用更小的空间。

编译原理部分课后答案,仅供参考

编译原理部分课后答案,仅供参考

第一章编译程序概述1.1什么是编译程序编译程序是现代计算机系统的基本组成部分之一,而且多 数计算机系统都含有不止一个高级语言的编译程序。

对有些高 级语言甚至配置了几个不同性能的编译程序。

1.2编译过程概述和编译程序的结构编译程序完成从源程序到目标程序的翻译工作,是一个复 杂的整体的过程。

从概念上来讲,一个编译程序的整个工作过 程是划分成阶段进行的,每个阶段将源程序的一种表示形式转 换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连 接在一起的。

一般一个编译过程划分成词法分析、语法分析、 语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。

事实上,某些阶段可能组合在一起, 这些阶段间的源程序的中间表示形式就没必要构造岀来了。

我 们将分别介绍各阶段的任务。

另外两个重要的工作:表格管理 和岀错处理与上述六个阶段都有联系。

编译过程中源程序的各 种信息被保留在种种不同的表格里,编译各阶段的工作都涉及 到构造、查找或更新有关的表格,因此需要有表格管理的工作; 如果编译过程中发现源程序有错误,编译程序应报告错误的性 质和错误发生的地点,并且将错误所造成的影响限制在尽可能 小的范围内,使得源程序的其余部分能继续被编译下去,有些 编译程序还能自动校正错误, 这些工作称之为岀错处理。

图1.3表示了编译的各个阶段。

图1.3编译的各个阶段它不生成目标代码,它每遇到一个语句,就要对这个语句进行 分析以决定语句的含义,执行相应的动作。

右面的图示意了它 的工作机理第二章:PL/O 编译程序问答第1题 PL/0语言允许过程嵌套定义和递归调用,试问 它的编译程序如何解决运行时的存储管理。

答:PL/0语言允许过程嵌套定义和递归调用,它的编译程序在运行时采用了栈式动态存储管理。

(数组CODE 存放的只读目 标程序,它在运行时不改变。

)运行时的数据区S 是由解释程序 定义的一维整型数组,解释执行时对数据空间S 的管理遵循后进先岀规则,当每个过程(包括主程序)被调用时,才分配数据 空间,退出过程时,则所分配的数据空间被释放。

电子科技大学20春《计算机编译原理》在线作业3.doc

电子科技大学20春《计算机编译原理》在线作业3.doc

电子科技大学20春《计算机编译原理》在线作业3.doc1.若a为终结符,则A→α?aβ为()项目。

A.归约B.移进C.接受D.待约【参考答案】: B2.LR(K)方法是()。

A.从左到右分析,每次走K步的一种编译方法B.从左到右分析,共经过K 步的一种编译方法C.从左到右分析,每次向前预测K步的一种编译方法D.从左到右分析,每次向貌似句柄的符号串后看K个输入符号的一种编译方法【参考答案】: D3.代码优化的目的是加快()的执行速度。

A.编译程序B.目标程序C.源程序D.编译程序和目标程序E.解释程序【参考答案】: B4.正规式M1和M2等价是指()。

A.M1和M2的状态数相等B.M1和M2的有向边条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等【参考答案】: C5.符号表是否合理则影响()的效率。

A.编译程序B.目标程序C.源程序D.编译程序和目标程序E.解释程序【参考答案】: A6.采用自上而下分析,必须()。

A.消除左递归B.消除右递归C.消除回溯D.提取公共左因子【参考答案】: C7.语法分析常用的方法有()①自顶向下②自底向上③自左向右④自右向左A.①②③④B.①②C.③④D.①②③【参考答案】: B8.设a、b、c是文法的终结符,且满足优先关系ab和bc,则()。

A.必有acB.必有caC.必有baD.a~c都不一定成立【参考答案】: D9.描述一个语言的文法是。

A.唯一的B.不唯一的C.可能唯一D.可能不唯一【参考答案】: B10.在规范归约中,用()来刻画可归约串。

A.直接短语B.句柄C.最左素短语D.素短语【参考答案】: B11.Chomsky 定义的四种形式语言文法中,0型文法又称为()文法。

A.短语结构文法B.前后文无关文法C.前后文有关文法D.正规文法 E.图灵机 F.有限自动机G.下推自动机【参考答案】: A12.同心集合并有可能产生新的()冲突A.归约B.“移进”/“移进”C.“移进”/“归约”D.“归约”/“归约”。

Perl+习题答疑

Perl+习题答疑

Perl 习题(11)1 写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。

如果是从键盘输入的,那在Unix 系统中应当使用CTRL+D 表明end-of-file,在Windows 系统中使用CTRL+Z.(第3章习题)unless(@ARGV) {die "<input file> <output file>\n";}open(IN,"<$ARGV[0]") or die;my @line=<IN>;open(OUT,">$ARGV[1]") or die;foreach(reverse(@line)) {print OUT "$_";}2 写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。

利用下面的程序进行测试:(第4章习题)my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10);print "\@barney is @barney\n";print "(Should be just 100)\n";#!\usr\bin\perl -wuse strict;my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10);print "\@barney is @barney\n";print "(Should be just 100)\n";sub above_average{my @in=@_;my $average_value=&average(@in);my @out;foreach(@in) {if($_>$average_value){push @out,$_;}}return @out;}sub average {my @in=@_;my $sum=0;foreach(@in){$sum+=$_;}return $sum;}3 写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:每一条占20 个字符宽度,右对齐。

编译原理课后答案(最新整理)

编译原理课后答案(最新整理)
最左推导:
E E T T T F T i T i T *F i F *F i i*F i i*i E T T * F F * F i * F i *(E) i *(E T) i *(T T) i *(F T) i *(i T) i *(i F) i *(i i)
C
C
D
D
E
D
E
C
F
F
E
D
(2) 1(1010*|1(010)*1)*0
I {X} {A,B,C} {y} {D,H,I,L} {E,J} {B,C} {B,C,F,G,K} {B,C,G,I,L,y} {B,C,G,J,y} {D,H,I,K,L} {E,J,y} {E,I,J,L} {J}
I0 Ф {y} Ф {E,J} Ф {y} {B,C,G,I,L,y} {B,C,G,J,y} {B,C,G, y} {E,I,J,L} Ф {J} Ф
显然不可再划分,则最简的 DFA 即为:
15 给定右线性文法 G: S→0S|1S|1A|0B A→1C|1 B→0C|0 C→0C|1C|1|0
求出一个与 G 等价的左线性文法。
解:1 由右线性文法构造 NFA:
2 从 NFA 中构造左线性文法: F→A1|B0|C0|C1 A→S1|1 B→S0|0 C→C0|C1|A1|B0
第二章 高级语言及其语法描述 4.令+、*和↑代表加,乘和乘幂,按如下的非标准优先级和结合性质的约定,计算 1+1*2↑2*1 ↑2 的值: (1) 优先顺序(从高至低)为+,*和↑,同级优先采用左结合。 (2) 优先顺序为↑,+,*,同级优先采用右结合。 解:(1)1+1*2↑2*1↑2=2*2↑1*1↑2=4↑1↑2=4↑2=16

编译原理教程课后习题参考答案——

编译原理教程课后习题参考答案——

第二章 词法分析2.1 完成下列选择题:(1) 词法分析器的输出结果是 。

a. 单词的种别编码b. 单词在符号表中的位置c. 单词的种别编码和自身值d. 单词自身值(2) 正规式M1和M2等价是指 。

a. M1和M2的状态数相等b. M1和M2的有向边条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向边条数相等(3) DFA M(见图2-1)接受的字集为 。

a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合【解答】(1) c (2) c (3) d图2-1 习题2.1的DFA M2.2 什么是扫描器?扫描器的功能是什么?【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。

通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。

每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。

2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下:f(x,a)={x,y} f {x,b}={y}f(y,a)=Φ f{y,b}={x,y}试构造相应的确定有限自动机M ′。

【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。

先画出NFA M 相应的状态图,如图2-2所示。

图2-2 习题2.3的NFA M 用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。

表2-2 状态转换矩阵将图2-3所示的DFA M ′最小化。

课后习题答案

课后习题答案

第一章习题解答1.解:源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:C语言的关键字有:auto break case char const continuedefault do double else enum extern float for goto if int longregister return short signed sizeof static struct switch typedef union unsigned void volatile while。

上述关键字在C语言中均为保留字。

4.解:C语言中括号有三种:{},[],()。

其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。

C语言中无END关键字。

逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。

5.略第二章习题解答1.(1)答:26*26=676(2)答:26*10=260(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个2.构造产生下列语言的文法(1){anbn|n≥0}解:对应文法为G(S) = ({S},{a,b},{ S→ε| aSb },S)(2){anbmcp|n,m,p≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)(3){an # bn|n≥0}∪{cn # dn|n≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c,d,#}, {S→X,S→Y,X→aXb|#,Y→cYd|# },S)(4){w#wr# | w?{0,1}*,wr是w的逆序排列}解:G(S) = ({S,W,R},{0,1,#}, {S→W#, W→0W0|1W1|# },S)(5)任何不是以0打头的所有奇整数所组成的集合解:G(S) = ({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e, I→J|2|4|6|8, Jà1|3|5|7|9},S)(6)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为S→0A|1B|e,A→0S|1C B→0C|1S C→1A|0B3.描述语言特点(1)S→10S0S→aAA→bAA→a解:本文法构成的语言集为:L(G)={(10)nabma0n|n, m≥0}。

PERL编程语言知识汇总

PERL编程语言知识汇总

PERL总结一、安装1、双击安装文件(.msi)下一步直到finish.2、检验是否安装成功:在dos窗口中输入perl -v 查看安装版本,若出错,则需要在path环境变量(计算机---属性---高级属性---环境变量----找到path)前加perl的路径,用“;”隔开。

二、内容A、基本命令1、保存文件时,扩展名为.pl2、运行时,进入到文件所在的目录下perl 文件名.pl3、-e开关:允许在命令中输入程序* perl -e “print “Hello Woeld!””将双引号编程/(注意:不是\)Perl -e “print /Hello World!/”加qq将内容打印出来Perl -e “print qq/Hello World!/”*q:单引号qq:双引号qw:单词列表引号qr:正则表达式qx:反引号4、-n开关:打开文档内容*perl -ne “print” Hello.pl------打开Hello.pl文件的内容(会将程序语句都显示出来)*perl -ne “print if/^aa/;” Hello.pl----在Hello.pl中搜索以aa开头的内容(别忘了if)B、一般框架1、#!:在linux中是引入路径;在dos中是注释2、Use strict:严格检查3、声明变量:my 类型变量名称my $text注意:若前面有use strict,z则需要加my声明;若前面没有use strict,z 则不需要加my声明;$标量@数组%hash4、一行注释:#多行注释:=remarkbegin=cut5、子程序定义:sub 函数名{--内容---};必须用sub调用:&函数名/函数名()C、标量1、声明:[my] $名称=值2、命名大小写敏感3、双引号可以用qq代替:$a=”aaa”相等于$b=qq(aaa)4、单引号可以用q代替:$a1=‘aaa’相等于$b1=q(aaa)注意:()可以用{}、【】、<>代替5、字符串连接用. $c=$a.$b等于aaaaaa注意:oracle中,连接用concat/||;java中用+6、单引号和双引号打印结果一样print $a等于print $a1不同点:双引号先对变量解析替代,单引号直接赋予值,如果要双引号直接赋予值,可以在变量前加\转义。

Perl语言学习练习及参考答案

Perl语言学习练习及参考答案

sub Fw_Print_Step {my ($step,$description) = @_;print ("\n\n==========================\n");print ("题$step:");if ($description) {print ("$description");}print ("\n==========================\n");}#*******************##题1:#设置变量int1的值为2my $int1=2;#设置变量int2的值为10my $int2=10;#比较变量int1与int2的大小,并打印出比较结果#*******************#Fw_Print_Step ($step++,"比较变量int1与int2的大小,并打印出比较结果"); print "\n变量int1=$int1,int2=$int2";print "\n比较结果:";if ($int1<$int2) {print "$int1 < $int2";} elsif ($int1>$int2) {print "$int1 > $int2";} else {print "$int1 = $int2";}#*******************##题2:#使用for循环打印出如下的字符。

# 1# 12# 123# 12345#*******************#Fw_Print_Step ($step++,"使用for循环打印出如下的字符。

11212312345");my $str= "";$str= $str.$_;if ($_==4) {$str= $str.$_+1;}print " $str\n";}#*******************##题3:my $str1 = "abc";my $str2 = "efg";#将上述2个字符串连接起来,并输出合并后的字符串长度#*******************#Fw_Print_Step ($step++,"将上述2个字符串\"$str1\"和\"$str2\"连接起来,并输出合并后的字符串长度");my $str =$str1.$str2;my $str_length=length($str);print "新字串$str的长度为:$str_length";#*******************##题4:#以逆序方式打印出字符串包含的各个字符,如变量为"123456789"则输出为"9","8",..."2","1". my $str1="abc123def456";#*******************#Fw_Print_Step ($step++,"以逆序方式打印出字符串包含的各个字符,如变量为\"123456789\"则输出为\"9\",\"8\",...\"2\",\"1\".");my $str=$str1;print "以逆序方式打印出字符串\"$str1\"包含的各个字符:\n";for($length=length($str1); $length>0; $length--) {$sub_str=chop($str);if ($length>1) {print "\"$sub_str\",";} else {print "\"$sub_str\".";}}#*******************##题5:#分别使用for与while循环来计算1+2+3+...+100的值#*******************#Fw_Print_Step ($step++,"分别使用for与while循环来计算1+2+3+...+100的值");print "用for循环计算1+2+3+...+100的值:\n ";my $result=0;for (1..100) {$result=$result+$_;}print "1+2+3+...+100=$result";print "\n用while循环计算1+2+3+...+100的值:\n ";my $result=0;my $num=1;while ($num<=100) {$result=$result+$num;$num++;}print "1+2+3+...+100=$result";#*******************##题6:#以逆序的方式打印出端口列表包含的成员口my @cmdArray = ("config", "int fa 0/1", "no shutdonw", "end");#*******************#Fw_Print_Step ($step++,"以逆序的方式打印出端口列表包含的成员口"); for (my $start=$#cmdArray; $start>=0; $start--) {my $array=$cmdArray[$start];print "$array\n";}#*******************##题7:#使用foreach打印出Hash表的所有下标与值my %map = ('red', 0xff0000,'green', 0x00ff00,'blue',0x0000ff);#*******************#Fw_Print_Step ($step++,"使用foreach打印出Hash表的所有下标与值"); foreach $capword (sort keys(%map)) {print ("$capword: $map{$capword}\n");}#while( ($key, $value) = Each (%Map)) {# Print "\N$key=$value;"}#*******************##题8:#使用正则匹配判断字符串是否包含error,若是打印提示信息。

汇编语言程序设计_电子科技大学中国大学mooc课后章节答案期末考试题库2023年

汇编语言程序设计_电子科技大学中国大学mooc课后章节答案期末考试题库2023年

汇编语言程序设计_电子科技大学中国大学mooc课后章节答案期末考试题库2023年1.设标识符DONE是程序中某指令语句的标号,与JMP指令同在一个逻辑段内,下列的哪个程序段不能够转移到标号DONE处的语句执行。

参考答案:MOV BX, DONEJMP BX2.将下列十进制数转换为十六进制数:(1)133(2)243参考答案:85 , F33.已知CALL BX执行前SP=100H,执行后SP的内容为________。

参考答案:0FEH4.段内直接调用的转移范围为________。

参考答案:-32768~327675.指令“JMP BX”转移的目标地址的偏移量为_______。

参考答案:BX的内容6.计算下列补码表示的二进制数运算,并将结果转换为十进制数真值:(1)01101100+10001110 (2)11111111-0111111111111010B -6D ,10000000B -128D7.在IBM PC微型计算机上,以下8位二进制数的运算后,标志寄存器中OF、ZF、SF、CF的值分别为多少?10101011 + 01010101参考答案:OF=0 ZF=1 SF=0 CF=18.在8086/8088中,某存储单元的逻辑地址如下,请算出它们的物理地址是多少?(1)F000H:0100H (2)10E0H:2020H参考答案:F0100H ,12E20H9.下列指令源操作数的寻址方式,并说明该操作数在哪个段?(1)MOV AX,[5000H] (2) MOV BL,BUF[SI]参考答案:直接寻址数据段,变址寻址数据段10.已知(AX)= 0FF60H,CF = 1。

MOV DX, 96 XOR DH, 0FFH SBB AX, DX上述程序段执行后:(AX)=________,CF =________。

参考答案:0FFFFH 011.某数据段中有:COUNT1 EQU 16HCOUNT2 DW 16H则下面两条指令有何异同?MOV AX, COUNT1MOV BX, COUNT2第一条指今是立即数寻址,第二条指令是直接寻址12.已知有下列3个等值语句:N1 EQU 30M2 EQU 87P3 EQU 4那么下列表达式的值是多少?(2)P3 SHL 4﹣2 (4)P3 OR 7参考答案:62 , 0111。

Perl语言入门习题

Perl语言入门习题

Perl语言入门习题_第四章1.[12]写一个名为&total 的子程序,返回一列数字的和。

提示:子程序不应当有任何的 I/O 操作;它处理调用的参数,返回处理后的值给调用者。

结合下面的程序来练习,它检测此子程序是否正常工作。

第一组数组之和我25。

2.[5]利用上题的子程序,写一个程序计算从 1 到1000的数字的和3.[18]额外的练习:写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。

#!/usr/bin/perluse strict;my@fred = qw{ 1 3 5 7 9 };my $fred_total = &total(@fred);print "The total of \@fred is $fred_total.\n";print "Enter some numbers on separate lines: ";my $user_total = &total(<STDIN>);print "The total of those numbers is $user_total.\n";sub total{my $sum;for(@_){$sum += $_;}return $sum;}#!/usr/bin/perluse strict;my @tmp = 1..1000;my $sum = &total(@tmp);print "total is : $sum.\n";sub total{my $sum;for(@_){$sum += $_;}return $sum;}#!/usr/bin/perluse strict;my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10); print "\@barney is @barney\n";print "(Should be just 100)\n";sub above_average{my $sum = &total(@_);my $average = $sum / @_;my @result;foreach(@_){if($_ > $average){push @result , $_ ;}}return @result;}sub total{my $sum;for(@_){$sum += $_;}return $sum;}----------------------------------------------------------------------------------Perl语言入门习题_第五章1.[7] 写一个程序,类似于cat,但保持输出的顺序关系。

电子科大大规模4、5章答案

电子科大大规模4、5章答案

电子科大大规模4、5章答案第四章1、什么是硬件描述语言?它的主要作用是什么?答:硬件描述语言是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。

它可以使数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再综合到门级电路,再用ASIC或FPGA实现其功能。

2、采用硬件描述语言设计方法的优点是什么?有什么缺点?答:(1)采用Verilog HDL输入法最大的优点是其与工艺的无关性;(2)通用的硬件描述语言,易学易用。

具有C语言编程经验的设计者很容易学习和掌握;(3)允许在同一个电路模型内进行不同抽象层次的描述。

设计者可以从开关、门级、RTL和行为等各个层次对电路模型进行定义;(3)绝大多数流行的综合工具都支持Verilog HDL,编程风格简洁明了,高效便捷;(4)所有的制造厂商提供用于Verilog HDL综合之后的逻辑仿真的元件库,使用Verilog HDL进行设计,即可在更广泛的范围内选择委托制造的厂商。

3、Verilog HDL中的数字可以出现哪些值?相应代表的是什么样的物理意义?答:(1)整数,x(不定值)和z(高阻值),负数,4、Verilog HDL中有哪几种数据类型?它们各代表什么意义?答:19种数据类型,具体为reg型、wire型、integer型、parameter型,large型、medium型、scalared 型、time型、small 型、tri型、trio型、tri1型、triand型、trior型、trireg型、vectored 型、wand 型、wor型5、完成一个移位寄存器的设计,要求有同步清零功能。

答://-------------// shifter// Filename: shifter.v//-------------module shifter( din, clk, clr, dout);input din, clk, clr;output [7:0] dout;reg [7:0] dout;always @(posedge clk)beginif(clr) //清零dout = 8'b0;elsebegindout = dout<<1; //左移一位dout[0] = din; //把输入信号放入寄存器的最低位endendendmodule6、Verilog HDL的模型共有哪些类型(级别)?答:系统级,算法级,寄存器传输级,门级,开关级7、什么是综合?是否任何符合语法的Verilog HDL程序都可以综合?答:所谓的逻辑综合其实质是设计流程的一个阶段,在此阶段中将较高级抽象层次的描述自动地转换成较低层次描述。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录各章课后作业提示第一章2. say输出时默认换行(say Just like "print", but implicitly appends a newline.)。

如果看不出来,请分别选中两个脚本中的say与print一词,然后Ctrl+Shift+H,并查看文档。

3. Linux上可用:perl -e 'print "Hello, Strawberry Perl!\n";'Windows上可用:perl -e "print \"Hello, Strawberry Perl!\n\";"4. 假设日志文件名为error.log,且目前已在该文件所在目录,那么可以使用以下命令查看最近的100行日志信息:tail -100 error.log5. 假设在Linux系统Shell中已转到Chapter01文件夹里了。

输入:diff -u muscle skin | sort > venn,打开生成的结果文件venn,首先是在肌肉与皮肤都有的多肽(443条),中间+开头的多肽是只见于皮肤的(670条),最后-开头的多肽只见于肌肉(704条)。

6. 假设在Linux系统Shell中已转到Chapter01文件夹里了。

(1)先解压laf.tgz和update.tgz。

tar –xf laf.tgztar –xf update.tgz(2)生成laf和update文件夹里的文献列表ls ./laf > lafiles ls ./update updatefiles(3)比较lafiles与updatefiles的差异diff -u updatefiles lafiles | sort > diffiles打开diffiles文件,首先罗列的是laf.tgz中已被处理并已更新的文献(68篇),接着以+开头的文件就是laf.tgz中尚未处理的文献(214个)。

第二章2. 假设在Linux系统Shell中已转到Chapter02文件夹里了。

(1)解压缩all_mimodb_peptide.gz文件gzip -d all_mimodb_peptide.gz (17427条)(2)找出所有出现且仅出现过一次的多肽sort < all_mimodb_peptides | uniq -u > appear_only_once (15687条)(3)找出所有出现过多次的多肽sort < all_mimodb_peptides | uniq -d > appear_more_times (672条)(4)出现多次的仅收录一条,建立非冗余的多肽数据集sort < all_mimodb_peptides | uniq > nonredundant (16359条)3. 办法之一#!D:\Perl\perl\bin\perl.exemy $comment= '>gi|224589802:c2182439-2181009 Homo sapiens chromosome 11, GRCh37.p10 Primary Assembly';my $insulin= " AGCCCTCCAGGACAGGCTGCATCAGAAGAGGCCATCAAGCAGGTCTGTTCCAAGGGCCTTTGCGTCAGGT GGGCTCAGGATTCCAGGGTGGCTGGACCCCAGGCCCCAGCTCTGCAGCAGGGAGGACGTGGCTGGGCTCG TGAAGCATGTGGGGGTGAGCCCAGGGGCCCCAAGGCAGGGCACCTGGCCTTCAGCCTGCCTCAGCCCTGC CTGTCTCCCAGATCACTGTCCTTCTGCCATGGCCCTGTGGATGCGCCTCCTGCCCCTGCTGGCGCTGCTG GCCCTCTGGGGACCTGACCCAGCCGCAGCCTTTGTGAACCAACACCTGTGCGGCTCACACCTGGTGGAAG CTCTCTACCTAGTGTGCGGGGAACGAGGCTTCTTCTACACACCCAAGACCCGCCGGGAGGCAGAGGACCT GCAGGGTGAGCCAACTGCCCATTGCTGCCCCTGGCCGCCCCCAGCCACCCCCTGCTCCTGGCGCTCCCAC CCAGCATGGGCAGAAGGGGGCAGGAGGCTGCCACCCAGCAGGGGGTCAGGTGCACTTTTTTAAAAAGAAG TTCTCTTGGTCACGTCCTAAAAGTGACCAGCTCCCTGTGGCCCAGTCAGAATCTCAGCCTGAGGACGGTG TTGGCTTCGGCAGCCCCGAGATACATCAGAGGGTGGGCACGCTCCTCCCTCCACTCGCCCCTCAAACAAA TGCCCCGCAGCCCATTTCTCCACCCTCATTTGATGACCGCAGATTCAAGTGTTTTGTTAAGTAAAGTCCT GGGTGACCTGGGGTCACAGGGTGCCCCACGCTGCCTGCCTCTGGGCGAACACCCCATCACGCCCGGAGGA GGGCGTGGCTGCCTGCCTGAGTGGGCCAGACCCCTGTCGCCAGGCCTCACGGCAGCTCCATAGTCAGGAG ATGGGGAAGATGCTGGGGACAGGCCCTGGGGAGAAGTACTGGGATCACCTGTTCAGGCTCCCACTGTGAC GCTGCCCCGGGGCGGGGGAAGGAGGTGGGACATGTGGGCGTTGGGGCCTGTAGGTCCACACCCAGTGTGG GTGACCCTCCCTCTAACCTGGGTCCAGCCCGGCTGGAGATGGGTGGGAGTGCGACCTAGGGCTGGCGGGC AGGCGGGCACTGTGTCTCCCTGACTGTGTCCTCCTGTGTCCCTCTGCCTCGCCGCTGTTCCGGAACCTGC TCTGCGCGGCACGTCCTGGCAGTGGGGCAGGTGGAGCTGGGCGGGGGCCCTGGTGCAGGCAGCCTGCAGC CCTTGGCCCTGGAGGGGTCCCTGCAGAAGCGTGGCATTGTGGAACAATGCTGTACCAGCATCTGCTCCCT CTACCAGCTGGAGAACTACTGCAACTAGACGCAGCCCGCAGGCAGCCCCACACCCGCCGCCTCCTGCACC GAGAGAGATGGAATAAAGCCCTTGAACCAGC";my @reverseq= reverse (split //, $insulin);foreach my $base(@reverseq){if ($base eq 'T'){$base= 'A'; next; };if ($base eq 'A'){$base= 'T'; next; };if ($base eq 'C'){$base= 'G'; next; }if ($base eq 'G'){$base= 'C'; next; }}print "$comment\n";print @reverseq;4. 办法之一#!D:\Perl\perl\bin\perl.exe#hash for amino acid code convertingmy %AA123= (A => 'Ala', V => 'Val', L => 'Leu', I => 'Ile',P => 'Pro', W => 'Trp', F => 'Phe', M => 'Met',G => 'Gly', S => 'Ser', T => 'Thr', Y => 'Tyr',C => 'Cys', N => 'Asn', Q => 'Gln', K => 'Lys',R => 'Arg', H => 'His', D => 'Asp', E => 'Glu',);my %AA321= reverse %AA123;my $comment_H= ">metuximab Heavy chain";my $comment_L= ">metuximab Light chain";my $heavy= <<'HEAVY';Met Asn Phe Gly Leu Ser Trp Val Phe Ile Val Ile Leu Leu Lys Gly Val Gln Ser Glu Val Lys Leu Glu Glu Ser Gly Gly Gly Leu Val Gln Pro Gly Gly Ser Met Lys Leu Ser Cys Val Ala Ser Gly Phe Thr Phe Ser Asp Ala Trp Met Asp Trp Val Arg Gln Ser Pro Glu Lys Gly Leu Glu Trp Val Ala Glu Ile Arg Ser Ala Asn Asn His Ala Pro Tyr Tyr Tyr Thr Glu Ser Val Lys Gly Arg Phe Thr Ile Ser Arg Asp Asp Ser Lys Ser Ile Ile Tyr Leu Gln Met Asn Asn Leu Arg Ala Glu Asp Thr Gly Ile Tyr Tyr Cys Thr Arg Asp Ser Thr Ala Thr His Trp Gly Gln Gly Thr Leu Val Thr Val Ser Ser Ala Ser Thr Thr Ala Pro Ser ValHEAVYmy $light= <<'LIGHT';Met Asp Ser His Thr Gln Val Phe Ile Phe Leu Leu Leu Cys Val Ser Gly Ala His Gly Ser Ile Val Met Thr Gln Thr Pro Thr Phe Leu Val Val Ser Ala Gly Asp Arg Val Thr Ile Thr Cys Lys Ala Ser Gln Ser Val Ile Asn Asp Val Ala Trp Tyr Gln Gln Lys Pro Gly Gln Ser Pro Lys Leu Leu Ile Phe Tyr Ala Ser Asn Arg Asn Thr Gly Val Pro Asp Arg Phe Thr Gly Ser Gly Tyr Gly Thr Asp Phe Thr Phe Thr Ile Ser Thr Val Gln Ala Glu Asp Leu Ala Val Tyr Phe Cys Gln Gln Asp Tyr Ser Pro Pro Phe Thr Phe Gly Ser Gly Thr Lys Leu Glu Ile Lys Arg Lys Ser Thr Ala Pro Thr Val Ser LIGHTmy @harray= split /\s/, $heavy;my @larray= split /\s/, $light;foreach my $residue(@harray){$residue= $AA321{$residue};}foreach my $residue(@larray){$residue= $AA321{$residue};}print "$comment_H\n",@harray,"\n\n";print "$comment_L\n",@larray;第三章2.提示1 - 1 # 1 minus 1 is 0, would convert to string "0", so false.0.0 # equals 0, would convert to string "0", so false."0.0" # is the string "0.0", neither "" nor "0", so true!"0" # is the string "0", so false."" # is a null string, so false." " # is a whitespace, not null string, so true."0.0" + 0 # would become the number 0 (coerced by the +), so false. \$i # is a reference to $i, so true, even if $i is false, null, 0. undef() # is a function returning the undefined value, so false.3. 办法之一#!D:\Perl\perl\bin\perl.exemy @aa= qw(C D E F G H I K L M N P Q R S T V W Y A);my @pep= qw(A A A A A A A A A);print foreach @pep, "\n";for ( my $i= 0; $i<= 8; $i++ ) {foreach my $res(@aa){$pep[$i] = $res;if ($res ne 'A'){print foreach @pep;}print "\n";}}5、(1)只见于muscle :grep -v -f skin muscle >muscle.txt 结果见于目录下muscle.txt (2)只见于skin :grep -v -f muscle skin >skin.txt 结果见于目录下skin.txt(3)都有:grep -Ff muscle skin >skin-muscle.txt 结果见于目录下skin-muscle.txt 6、diff -y laf update >laf-update.xls 结果见于目录下laf-update.xls。

相关文档
最新文档