搜档网
当前位置:搜档网 › IAR环境下的msp430c语言编程

IAR环境下的msp430c语言编程

IAR环境下的msp430c语言编程
IAR环境下的msp430c语言编程

MSP430系列单片机实用C语言程序设计

扩展的关键字

1.asm

也可以写成__asm。功能是在C程序中直接嵌入汇编语言。

语法:asm(“string”);其中string必须是有效的汇编语句。

2.__interrupt

放在函数前面,标志中断函数。下面这段程序是异步串行口UART0的接收中断函数。UART0RX_VECTOR为异步串行口UART0的接收中断向量。

举例:

#pragma vector=UART0RX_VECTOR

__interrupt void UART0_R(void) //UART0接收中断

{

TXBUF0=RXBUF0;

}

3.__monitor

放在函数前面,功能是但这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。

4.__no_init

放在全局变量前面,功能是使程序启动时不为变量赋初值。

5.__raw

编译中断函数时,编译器会自动生成一段代码,首先保存当时所用到CPU内寄存器的内容,退出中断程序时再进行恢复。将__raw放在中断函数前可以禁止保存CPU内寄存器的过程,当然退出时也不会恢复。是否为中断函数使用此关键字要根据需要而定。

6.__regvar

放在变量前面,作用是声明变量为寄存器变量。可以用于整数、指针、32位浮点数以及只含有一个元素的结构和联合。寄存器变量的地址只能为R4或者R5,也不能用指针指向这个寄存器变量,而且必须用__no_init禁止初始化。如:

__regvar __no_init unsigned char q0 @ __R4;

其他不常用的关键字还有:__data16、__intrinsic、__noreturn、__root、__task、__word16。

内部函数

本节将介绍内部函数的原型和功能。

1.__bcd_add_short

unsigned short __bcd_add_short(unsigned short, unsigned short);

功能:两个16位BCD格式的数相加,返回和。

2.__bcd_add_long

unsigned long __bcd_add_long(unsigned long, unsigned long);

功能:两个32位BCD格式的数相加,返回和。

3.__bcd_add_long_long

unsigned long long __bcd_add_long_long(unsigned long long, unsigned long long);

功能:两个64位BCD格式的数相加,返回和。

4.__bic_SR_register

void __bic_SR_register(unsigned short);

功能:将CPU中SR寄存器中的某些位清0。其参数为屏蔽码,需要清0的位为1。

5.__bic_SR_register_on_exit

void __bic_SR_register_on_exit(unsigned short);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU 内SR寄存器中的某些位清0。其参数为屏蔽码,需要清0的位为1。

6.__bis_SR_register

void __bis_SR_register(unsigned short);

功能:将CPU中SR寄存器中的某些位置1。其参数为屏蔽码,需要置1的位为1。

7.__bis_SR_register_on_exit

void __bis_SR_register_on_exit(unsigned short);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU 内SR寄存器中的某些位置1。其参数为屏蔽码,需要置1的位为1。

8.__disable_interrupt

void __disable_interrupt(void)

功能:关闭全局中断。先执行DINT命令,关闭全局中断,然后再执行NOP命令。空指令是为了确保关闭了全局中断之后再执行下面的程序。

9.__enable_interrupt

void __enable_interrupt(void)

功能:使用NINT指令打开全局中断。

10.__even_in_range

void __enable_in_range(unsigned short value, unsigned short upper_limit)

功能:只能与switch语句结合使用,判断value是否为偶数且小于等于upper_limit。

举例:

unsigned int MoonRiver, iq0;

iq0=2;

swich(__even_in_range(iq0,4))

{

case 0:

MoonRiver=0;

break;

case 2:

MoonRiver=2;

}

结果:假设iq0的值为2,执行完毕时MoonRiver=2。否则,与普通的swich语句一样,跳过case部分,直接执行下面的程序。使用__even_in_range的好处

是可以生成效率比较高的代码,在判断多中断源的来源时可以使用此函数。

11.__get_interrupt_state

istate_t __get_interrupt_state(void)

功能:返回当前的中断状态。返回值istate_t为一结构,通过此函数可以获得当前的中断状态并保存,将来可以使用__set_interrupt_state恢复中断状态。

12.__get_R4_register

unsigned short __get_R4_register (void);

功能:返回寄存器R4的值,只在R4被锁定时有效。

13.__get_R5_register

unsigned short __get_R5_register (void);

功能:返回寄存器R5的值,只在R5被锁定时有效。

14.__get_SP_register

unsigned short __get_SP_register (void);

功能:返回堆栈指针寄存器SP的值。

15.__get_SR_register

unsigned short __get_SR_register (void);

功能:返回CPU中状态寄存器SR的值。

16.__get_SR_register_on_exit

unsigned short __get_SR_register_on_exit (void);

功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,返回状态寄存器SR的值。只在中断函数或者不可中断函数中有效。

17.__low_power_mode_n

void __low_power_mode_n(void);

功能:进入低功耗模式0~4。

18.__low_power_mode_off_on_exit

void __low_power_mode_off_on_exit(void);

功能:从一个中断函数或者不可中断函数(标志为__monitor)返回时退出低功耗模式。只在中断函数或者不可中断函数中有效。

19.__no_operation

void __no_operation(void);

功能:执行NOP指令。

20.__op_code

__op_code(unsigned short);

功能:在指令流中插入一个常数。

21.__segment_begin

void *__segment_begin(segment);

功能:segment是段的名字,必须是字符串。返回指向segment段的地址。此处的段是程序中定义的数据段、代码段、堆栈段等,一般用户可以使用编译器的默认设置。

22.__segment_end

void *__segment_end(segment);

功能:segment是段的名字,必须是字符串。返回指向segment段结束后的第一个字地址。

23.__set_interrupt_state

void __set_interrupt_state(istate_t);

功能:恢复istate_t中保存的中断状态。

24.__set_R4_register

void __set_R4_register(unsigned short);

功能:将unsigned short值赋给寄存器R4,只在R4被锁定时有效。

25.__set_R5_register

void __set_R5_register(unsigned short);

功能:将unsigned short值赋给寄存器R5,只在R5被锁定时有效。

26.__set_SP_register

void __set_SP_register(unsigned short);

功能:给堆栈指针寄存器SP赋值。

27.__swap_bytes

unsigned short __swap_bytes(unsigned short);

功能:一个16位的无符号整数,高8位与低8位进行交换。如0x1234交换后为0x3412。

扩展定义

为了使用方便,EW430还作了一些定义,有些定义不属于C语言的一部分,而是一种二次包装,如对内部函数的包装。它们的功能完全可以用其他函数或者表达式实现,用户也可以自己重新定义,但使用它们会使编写程序更加简单易懂。

下面1~4项都是在不同类型CPU的头文件中定义的,如msp14x.h,其中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,编程时应尽可能地利用。

1. PxIN、PxOUT、PxDIR、PxSEL

x为端口号。IN为端口输入寄存器,OUT为端口输出寄存器,DIR为端口方向控制寄存器,SEL为端口第二功能选择寄存器。

举例:

Moon=P1IN; //读端口P1的值,赋给变量Moon

P3Out = 5; //P3端口输出5

P2DIR = 0xF0; //P2端口的高4位为输出,第4位为输入

P6SEL = 0xF; //P6端口的高4位用作I/O端口,低4位用于第二功能

2. BITx

x的取值范围为0~F。代表寄存器的某一位。其定义为:

#define BIT0 (0x0001)

#define BIT1 (0x0002)

#define BITE (0x4000)

#define BITF (0x8000)

BIT0为最低位,BITF为最高位。MSP430是不支持位操作的,如果想对位操作,最好的方法就是通过位屏蔽来实现。

举例:

P1OUT | = BIT0; //将P1口的最低位输出置1

P1OUT &= ~BIT7; //将P1口的最高位输出清0,P1口只有8位

3. LPMx

x:0~4。进入0~4低功耗模式。其定义为:

#define LPM0 _BIS_SR(LPM0_bits) //进入低功耗模式0

#define LPM4 _BIS_SR(LPM4_bits) //进入低功耗模式4

从以上代码可以看出扩展定义是对内部函数的第二次包装。

举例:

LPM0; //进入低功耗模式0

LPM4; //进入低功耗模式4

4. LPMx_EXIT

x:0~4。退出+0~4低功耗模式。其定义为:

#define LPM0_EXIT _BIC_SR_IRQ(LPM0_bits) //进入低功耗模式0 …

#define LPM4_EXIT _BIC_SR_IRQ(LPM4_bits) //进入低功耗模式4 举例:

LPM0_EXIT; //退出低功耗模式0

LPM4_EXIT; //退出低功耗模式4

5. _EINT()

打开全局中断控制,使GIE=1。

6. _DINT()

关闭全局中断控制,使GIE=0。执行__disable_interrupt指令。

7. _NOP()

空操作。执行__no_operation指令。

8. _OPC(x)

在指令中插入一个常数。x为unsigned char类型。执行__op_code指令。

9. _SWAP_BYTES(x)

x是一个16位的无符号整数,高8位与低8位进行交换。执行__swap_bytes 指令。

10. __no_init [数据类型] 变量名@ 地址

在某一固定地址处定义一个不进行初始化的变量,地址可以在RAM或FLASH 内。如果使用此方式定义在RAM内的变量需要赋值,那么必须首先定义,然后才能赋值。

/*分配变量MoonRiver在RAM地址0x210*/

__no_init unsigned int MoonRiver @ 0x210; //没有初始化

MoonRiver = 100; //初始化MoonRiver为100 /*分配变量MoonRiver在FLASH地址0xFFC0*/

__no_init float MoonRiver @ 0xFFC0;

/*分配变量MoonRiver[3]在FLASH地址0x200*/

__no_init char MoonRiver[3] @ 0xFF00;

/*分配结构sMoonRiver在RAM地址0x200*/

Typedef struct

{

unsigned char q0;

unsigned int iq0;

}sMoonRiver; //定义一个结构型的数据类型,取名为sMoonRiver

__no_init sMoonRiver MoonRiver @ 0x200; //声明变量MoonRiver,其数据类型为sMoonRiver

MoonRiver.q0 = 100;

MoonRiver.iq0 = 1000; //为MoonRiver赋初值

11. const [数据类型] 变量名@ 地址

在某一固定地址处定义一个只读变量,并且只能在定义的时候赋初值。这种定义变量的方式在FLASH的固定地址处分配变量时非常有用。

举例:

/*分配变量MoonRiver在RAM地址0x210*/

const unsigned int MoonRiver @ 0x210 = 100; //初始化MoonRiver为100 /*分配变量MoonRiver在FLASH地址0xFFC0*/

const float MoonRiver @ 0xFFC0 = 32.5; //初始化MoonRiver为32.5 /*分配变量MoonRiver[3]在FLASH地址0xFF00*/

const char MoonRiver[3] @ 0xFF00 = {0, 1, 2};

/*分配结构sMoonRiver在RAM地址0xFFD0*/

程序设计语言 习题与答案

第六章习题 P159-161 一、复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。(P144- P146) 2、试述计算机语言的类型,它们各有什么特点? 1.机器语言,是最低级的语言,由二进制码组成,最早期的程序员通过在纸带上打点来写程序 2.汇编语言,用助记符和地址符代替了二进制码,更易于编写。 3.高级语言,相对于汇编语言又上升了一步,更接近于自然语言,如C语言、Pascal、Java、C#等都是高级语言。(P145-147) 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。(P147-149) 4、简述语言虚拟机。 提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P156) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。与编译不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展,为了实现跨平台但同时又保证一定的效率,出现了编译、解释混合的方式,先用伪编译形成效率较高中间代码,再用语言虚拟机进行解释执行,以屏蔽掉硬件的差异。 (P154-157) 6、请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,

(完整版)高级语言与编译程序概述自测题

第一章高级语言与编译程序概述 一、单项选择题 1.将编译程序分成若干个“遍”是为了____。 A. 提高程序的执行效率 B. 使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D. 利用有限的机器内存但降低了机器的执行效率 2.构造编译程序应掌握____。 A. 源程序 B. 目标语言 C. 编译方法 D. 以上三项都是 3.编译程序绝大多数时间花在____上。 A. 出错处理 B. 词法分析 C. 目标代码生成 D. 管理表格 4. ____不可能是目标代码。 A. 汇编指令代码 B. 可重定位指令代码 C. 绝对指令代码 D. 中间代码 5.使用____可以定义一个程序的意义。 A. 语义规则 B. 词法规则 C. 产生规则 D. 左结合规则 6.词法分析器的输入是____。 A. 单词符号 B. 源程序 C. 语法单位 D. 目标程序 7.中间代码生成时所遵循的是____。 A. 语法规则 B. 词法规则 C. 语义规则 D. 等价变换规则 8.编译程序是对____。 A. 汇编程序的翻译 B. 高级语言程序的解释执行 C. 机器语言的执行 D. 高级语言的翻译 9.词法分析应遵循____。 A. 语义规则 B. 语法规则 C. 构词规则 D. 等价变换规则 10.若源程序是高级语言编写的程序,目标程序是____,则称它为编译程序。 A. 汇编语言程序或高级语言程序 B. 高级语言程序或机器语言程序 C. 汇编语言程序或机器语言程序 D. 连接程序或运行程序 11.编译过程中,词法分析阶段的任务是____。 A.识别表达式 B. 识别语言单词 C. 识别语句 D. 识别程序 二、多项选择题: 1.编译程序各阶段的工作都涉及到____。 A. 语法分析 B. 表格管理 C. 出错处理 D. 语义分析 E. 词法分析 2.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:____和____。 A. 编译阶段 B. 汇编阶段 C. 运行阶段 D. 置初值阶段 3.编译程序工作时, 通常有____阶段。 A.词法分析 B. 语法分析 C. 中间代码生成 D. 语义检查 E. 目标代码生成 F.出错处理 G.表格管理 4.编译过程中所遵循的规则有____。 A.等价变换规则 B. 短语规则 C. 构词规则 D. 语义规则 E. 语法规则 三、填空题: 1.解释程序和编译程序的区别在于________。 2.编译过程通常可分为5 个阶段,分别是____、语法分析、____、代码优化和目标代码生成。

程序设计语言编译原理第3课后答案

第二章 P36-6 (1) L G ()1是0~9组成的数字串 (2) 最左推导: N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ??????????????????0010120127334 556568 最右推导: N ND N ND N ND N D N ND N D N ND N ND N D ??????????????????77272712712701274434 886868568 P36-7 G(S) O N O D N S O AO A AD N →→→→→1357924680||||||||||| P36-8 文法: E T E T E T T F T F T F F E i →+-→→|||*|/()| 最左推导: 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 ?+?+?+?+?+?+?+?+??????+?+?+?+?+?+********()*()*()*()*()*()*() 最右推导: E E T E T F E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ?+?+?+?+?+?+?+?+?????+?+?+?+?+?+?+**********()*()*()*()*()*()*()*() 语法树:/********************************

电子科技大学《程序设计语言与编译》自测题答案

程序设计语言与编译一 一、单项选择题(每题1分,共10分) 1.一个程序单元可有( D )实例。 A.0个, B.1个, C.2个, D.多个 2.编译程序是将( C )程序改造成目标语言程序的翻译程序。 A.机器语言, B.汇编语言, C.高级语言, D.低级语言 3.规范规约每次都是对(A )进行规约。 A.句柄, B.短语, C.最左素短语, D.句型 4.LR分析法的核心部分是(B )。 A.总控程序, B.分析表, C.分析栈, D.可规约串 5.现今多数语言的描述工具是上下文无关文法,它对应于(D )。 A.图灵机, B.线性有界自动机, C.有限自动机, D.非确定的下推自动机 6.将一台实际的机器装上Pascal编译程序,它就成为Pascal( D )。 A.抽象机, B.识别机, C.翻译机, D.虚拟机 7.词法分析器的输入是(A )。 A.字符串, B.二元式, C.三元式, D.四元式 8.在一棵语法树中,子树叶结点的自左至右排列称为( A )。 A.短语,B.句型,C.句柄,D.素短语 9.运行时进行的检查称为(B )。 A.错误检查,B.动态检查,C.静态检查,D.随机检查 10.一个对象与其某种属性建立某种联系的过程,称为( D )。 A.赋值,B.存储,C.定义,D.绑定 二、多项选择题(每小题2分,共10分) 1.类型转换的方法(B E ) A.动态转换, B.拓展, C.静态转换, D.收缩, E.显式转换 2.语句级控制结构有(BCE ) A.递归, B.顺序, C.选择, D.过程调用, E.重复 3.Chomsky 将文法分成(ACDE ) A.短语文法,B.LL(1)文法,C.上下文无关文法,D.上下文有关文法,E.正规文法 4.数据聚合的方式有(ABDE ) A.笛卡儿积, B.有限映像, C.指针, D.递归, E.判定或 5.强制性语言中,变量具有属性(ABDE ) A.作用域, B.生存期, C.强制性, D.值, E.类型 三、简答题(每小题5分,共20分) 1、分程序与复合语句的区别是什么? 分程序中可说明局部于该程序的变量,复合语句是可执行语句的序列,其中没有说明语句 2、循环优化有哪几种方法? 代码外提,强度削弱,删除归纳变量 3、怎样判断一个文法具有二义性? 文法G如果产生的某个句子对应两棵不同的语法数,则有二义性 4、什么叫语法制导翻译? 每个产生式配一个子程序,在语法分析的过程中,每当用一个产生式进行匹配或归约时,就调用相应的语义子程序 四、推导题(共15分) 1、已知文法G(S): S→a∣b∣(A) A→SdA∣S 1.证明(bdS)是G(S)的句型;(5分) S=>(A)=> (SdA)=>(bdA)=>(bdS) 所以是句型 2.画出(bdS)的推导树;(5分) S ( A ) S d A b S 3.求句型(bdS)的短语,直接短语,素短语,句柄。(5分) 短语b、S、bdS、(bdS) 直接短语b、S 素短语b 句柄 b 五、算符优先分析法(共15分) 设有文法G:

程序设计语言编译原理_考试重点(终)

1 2 3 开 4 1 0 1 1 1 0 1 3 0 1 2 a a a ,a b b b 第一章 引论 1.编译程序分几个阶段,每个阶段的任务是什么? 五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成 词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。(如基本字,标识符,常数,算符和界符)。 语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。 语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。 代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码 。 目标代码生成任务:将中间代码变换成特定机器上的低级语言代码 2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。源程序中的错误通常分为 :语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配 ... 语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配 ... 3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。编译后端包括编译程序中与目标机有关的那些部分。 4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。遍可以和阶段相对应,也可无关。单遍代码不太有效。遍 是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。 5.“运算符与运算对象类型不符”属于语义错误 6.算法逻辑上的错误属于语义错误 7.编译程序:能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的一种程序。通常是从高级语言转换成为低级语言。 8.解释程序:它以该语言写的源程序作为输入,但是不产生目标代码,而是边解释边执行源程序本身。 9.诊断编译程序:专门用于帮助程序开发和调试的编译程序。 10.优化编译程序:着重于提高目标代码效率的编译程序。 11.宿主机:运行编译程序的计算机。 12.目标机:运行编译程序所产生目标代码的计算机。 13.交叉编译程序:一个程序产生不同 于宿主机的机器代码的程序。 14.可变目标编译程序:如果不需要重新编译程序中与机器无关的部分就能改变目标机,则该编译程序就叫做可变目标编译程序。 PS :世界上第一个编译程序——FORTRAN 编译程序——20世纪50年代 15.编译过程 第一阶段:词法分析——词法分析器 1)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),标示符,常熟,算符和界符。2)单词符号是语言的基本组成成分,是人们理解和编程的基本要素。3)描述词法规则的有效工具是:正规式和有限自动机 第二阶段:语法分析——(词法)分析器 1)任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位,如“短语”、“子句”、“句子”、“程序段”和“程序”等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。2)语法分析所依据的是语言的语法规则。通常是上下文无关文法描述、3)词法分析是一种线性分析,而语法分析是一种层次结构分析。 第三阶段:语义分析和中间代码产生——语义分析器 1)任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。2)对每种语法范畴进行静态语义检查—>进行中间代码的翻译。3)语义分析所依据的是语言的语义规则,通常使用属性文法描述语义规则。4)中间代码:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。5)中间代码的四元式表示形式。此外还有三元式、间接三元式、逆波兰记号和树。 第四阶段:优化——优化器 1)任务:在于前段产生的中间代码进行加工交换,,以期在最后阶段能产生更为高效(省时间和空间)的目标代码。2)优化的主要方面有:公共字表达式、优化循环、删除无用代码等等。3)优化所依据的原则:程序的等价变化原则。 第五阶段:目标代码生成——目标代码生成器 1)任务:吧中间代码(或经优化处理后)变换成特定机器上的低级语言代码。2)形式:绝对指令代码或可重定位的指令代码或汇编指令代码。 16.编译程序的结构 语法错误:指源程序中不符合语法(或词法)规则的错误,他们可在词法分析和语法分析时检测出来 语法错误:指源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的要在运行时才能检测出来。通常有:说明错误、作用域错误、类型不一致等 遍:对源程序或源程序的中间结果从头 到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。 编译前段:由与源程序有关但与目标程序无关的那些部分组成。包括词法分析、语法分析、语义分析与中间代码和一些优化工作。 编译后端:编译程序中与目标机有关的那些部分,后端不依赖于源语言而仅仅依赖于中间语言。 集成化的程序设计环境的特点:它将相互独立的程序设计工具集成起来,以使为程序员提供完整的、一体化的支持,从而进一步提高程序开放效率,改善程序质量。 17.T 形图 第二章 高级语言及其语法描述 1. 程序语言是由语法和语义两方面定义的。 2.上下文无关文法的定义:四个组成部分:一组终结符号、一组非终结符号、一个开始符号、一组产生式。一个上下文无关文法G 是一个四元式(VT,VN,S, P ),其中: VT :是非空有限集,它的每个元素是终结符号;VN :是非空有限集,它的每个元素是非终结符号, VT ∩VN=Φ,VT ∪VN=V;S :S ∈VN ,称为开始符号;P :产生式集合(有限),每个产生式形式是{ P->α| P ∈VN , α∈(VT ∪VN)*,S 至少一次为P }; 3.推导、最左推导、最右推导:1、推导:如两个串u0、un ,存在一个串序列u0=>u1=>…=>un ,则我们称这个序列是从u0到un 的一个推导。 U1un :表示从u0出发,经一步或若干步,可推导出un. U1 un :表示从u0出发,经0步 或若干步,可推导出un. 最左推导是指,任何一步α=>β都是对α中的最左非终结符进行替换的。最右推导是指,任何一步α=>β都是对α中的最右非终结符进行替换的。 4.语法树:在编译中产生语法树是为了语法分析。 5、什么是句型?什么是句子?什么是语言? 假定G 是一个文法,S 是它的开始符号。如果S=> α,则称α是一个句型。仅含终结符的句型是一个句子。文法G 所产生的句子的全体是一个语言。 语言是由句子组成的集合,是由一组记号所构成的集合。 6.乔姆斯基把文法分成4种类型,即0型文法、1型文法、2型文法和3型文法。0型文法也称为短语文法。1型文法也称为上下文有关文法。2型文法也称为上下文无关文法。3型文法也称为正规文法。与程序语言语法有关的文法是上下文无关文法。 第三章 词法分析 1.状态转换图:使用状态转换图是设计词法分析程序的一种好途径,状态转换图是一张有限方向图。在状态转换图中,结点代表状态,用圆圈表示。一个状态转换图可用于识别(或接受)一定的字符串。 2.确定的有限自动机(DFA )、非确定有限自动机(NFA )。五元式:有限状 态集合、有穷字母表、转换函数、唯一的初始状态、终止状态集合。一个确定有限自动机(DFA ) M 是一个五元式:M = (S,∑,δ,s0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑至S 的单值部分映射。 δ(s,a)=s ′意味着:当现行状态为、输入字符为a 时,将转换到下一状态s ′。我们称s ′为s 的一个后继状s0∈S 是唯一的初态F 是一个终态集(可空)。一个非确定有限自动机(NFA ) M 是一个五元式:M = (S,∑,δ,S0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑*至S 的子集的映射,即δ: S ×∑* → 2s ,S0∈S 是唯一的初态,F 是一个终态集(可空)。 3.设有确定的有限自动机DFA M = ({0,1,2,3},{a,b},δ,0,{3}),其中δ为:δ(0,a)=1 δ(0,b)=2 δ(1,a)=3 δ(1,b)=2 δ(2,a)=1 δ(2,b)=3 δ(3,a)=3 δ(3,b)=3 请画出状态转换矩阵和状态转化图。相应的状态转换矩阵如下表: 对应的状态转换图 4.设计一个DFA,要求能够识别∑={0,1}上能被5整除的二 进制数。 5.词法分析的流 程 第四章 语法分析——自上而下分析 1.语法分析器的功能:识别语法成分,并作语法检查. 2.自上而下语法分析方法遇到的主要问题是回溯和左递归。 3.把一个文法改造成任何非终结符的所有候选式首符集两两不相交的方法是提取公共左因子。 4.LL (1)分析法中,第一个L 表示从左到右扫描输入串,第二个L 表示最左推导。1表示分析时每步只需向前看一个符号。 5.LL (1)文法的条件:1文法不含左递归2)FIRST(α)∩ FIRST(β) = φ3) 算符 左操作数 右操作数 结果 状态 a b 0 1 2 1 3 2 2 1 3 3 3 3

程序设计语言编译原理考试重点

第一章引论 1.编译程序分几个阶段,每个阶段的任务是什么? 五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成 词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。(如基本字,标识符,常数,算符 和界符)。 语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语、子句、句子、程序段、程序),并确定 整个输入串是否构成语法上正确的程序。 语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码) 。 代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码。 目标代码生成任务:将中间代码变换成特定机器上的低级语言代码 2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方 法决定于语言及机器,还有优化措施。一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。源程序中的错误通常分为:语法错误,不符合语法(或词法)规则的错误, 如单词拼写错误、括号不匹配…语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配… 3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。编译后端包括编译程序中与目标机有关的那些部分。 4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不 同的任务。遍可以和阶段相对应,也可无关。单遍代码不太有效。遍是对源程序或源程序的中间结果从头到尾扫描一次,并 作有关的加工处理,生成新的中间结果或目标程序。 5.“运算符与运算对象类型不符”属于语义错误 6.算法逻辑上的错误属于语义错误 第二章高级语言及其语法描述 1.程序语言是由语法和语义两方面定义的。 2.上下文无关文法的定义:四个组成部分:一组终结符号、一组非终结符号、一个开始符号、一组产生式。一个上下文无关文 法G是一个四元式(VT,VN,S, P ),其中:VT:是非空有限集,它的每个元素是终结符号;VN是非空有限集,它的每个元素是 非终结符号,VTA VN=O, VTU VN=V;S S€ VN称为开始符号;P :产生式集合(有限),每个产生式形式是{ P-> a | P € VN a€ (VTU VN)*,S 至少一次为P }; 3.推导、最左推导、最右推导:1、推导:如两个串uO、un,存在一个串序列uO=>u仁>-=>un,则我们称这个序列是从u0到un 的一个推导。 —I- U1----- 、un:表示从u0出发,经一步或若干步,可推导出un. U1—;un:表示从u0出发,经0步或若干步,可推导出un. 最左推导是指,任何一步a =>B都是对a中的最左非终结符进行替换的。最右推导是指,任何一步a =>B都是对a中的最右非 终结符进行替换的。 4.语法树:在编译中产生语法树是为了语法分析。 5.什么是句型?什么是句子?什么是语言? 假定G是一个文法,S是它的开始符号。如果S=> a,则称a是一个句型。仅含终结符的句型是一个句子。文法G所产生的句 子的全体是一个语言。语言是由句子组成的集合,是由一组记号所构成的集合。 6.乔姆斯基把文法分成4种类型,即0型文法、1型文法、2型文法和3型文法。0型文法也称为短语文法。1型文法也称为上 下文有关文法。2型文法也称为上下文无关文法。3型文法也称为正规文法。与程序语言语法有关的文法是上下文无关文法。 第三章词法分析 1.状态转换图:使用状态转换图是设计词法分析程序的一种好途径,状态转换图是一张有限方向图。在状态转换图中,结点代表状态,用圆圈表示。一个状态转换图可用于识别(或接受)一定的字符串。 2.确定的有限自动机(DFA、非确定有限自动机(NFA)。五元式:有限状态集合、有穷字母表、转换函数、唯一的初始状态、 终止状态集合。一个确定有限自动机(DFA M是一个五元式:M = (S,刀,8 ,s0 ,F),其中S是一个有限集,它的每个元素称为一个状态,二 是一个有穷字母表,它的每个元素称为一个输入字符,3是一个从SXE至S的单值部分映射。8 (s,a)=s ' 意味着:当现行状态为、输入字符为a时,将转换到下一状态s 我们称s'为s的一个后继状s0€ S是唯一的初态F是一个终态集(可空)。一个非确定有限自动机(NFA M是一个五元式:M = (S, E, 8 ,S0 ,F),其中S是一个有限集,它的每个元素称为一个状态,二是一个有穷字母表,它的每个元素称为一个输入字符,8是一个从SXE*至S的子集的映射,即8: SXE* -2s,S0€ S是唯一的初态,F是一个终态集(可空)。 3.设有确定的有限自动机DFA M = ({0,1,2,3},{a,b}, 8 ,0,{3}),其中8 为:8 (0,a)=1 8 (0,b)=2 8 (1,a)=3 8 (1,b)=2 8 (2,a)=1 8 (2,b)=3 8 (3,a)=3 8 (3,b)=3

第6章 程序设计语言 习题与答案教程文件

第6章程序设计语言习题与答案

第六章习题 (1)复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言, 用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。 (P135 P136) 2、什么是高级程序设计语言?它有什么特点? 高级语言是汇编语言的一种抽象。高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。 (1)高级语言接近算法语言,易学、易掌握; (2)高级语言设计出来的程序可读性好,可维护性强,可靠性高; (3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。 (P138) 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。

(P138-140) 4、简述语言虚拟机。 提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。 (P147) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。与编译不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展,为了实现跨平台但同时又保证一定的效率,出现了编译、解释混合的方式,先用伪编译形成效率较高中间代码,再用语言虚拟机进行解释执行,以屏蔽掉硬件的差异。 (P144-147)

第6章 程序设计语言 习题与答案

第六章习题P159-161 一、复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。(P144- P146) 2、试述计算机语言的类型,它们各有什么特点? 1.机器语言,是最低级的语言,由二进制码组成,最早期的程序员通过在纸带上打点来写程序 2.汇编语言,用助记符和地址符代替了二进制码,更易于编写。 3.高级语言,相对于汇编语言又上升了一步,更接近于自然语言,如C语言、Pascal、Java、C#等都是高级语言。(P145-147) 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。(P147-149) 4、简述语言虚拟机。 提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P156) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。与编译不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展,为了实现跨平台但同时又保证一定的效率,出现了编译、解释混合的方式,先用伪编译形成效率较高中间代码,再用语言虚拟机进行解释执行,以屏蔽掉硬件的差异。(P154-157) 6、请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,

程序设计语言与编译复习题1

程序设计语言与编译复习题 一、是非题(请在括号内,正确的划√,错误的划×) 1.词法分析作为单独的一遍来处理较好。(× ) 2.规范归约和规范推导是互逆的两个过程。(×) 3.正规文法产生的语言都可以用上下文无关文法来描述。(√ ) 4.编译程序与具体的机器有关,与具体的语言无关。(× ) 5.一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。(× ) 8.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。(√ ) 9.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。(× ) 10.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。(×) 11.递归下降分析法是自顶向下分析方法。(√ ) 12.产生式是只能用于定义词法成分的一种书写规则。(× ) 13.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。(√) 14.程序语言的语言处理程序是一种应用软件。(× ) 15.解释程序适用于COBOL 和FORTRAN 语言。(×) 16.编译程序是对高级语言程序的解释执行。(× ) 17.语法分析时必须先消除文法中的左递归。(×) 18.逆波兰表示法表示表达式时无须使用括号。(√ )

21.静态数组的存储空间可以在编译时确定。(√) 23.两个正规集相等的必要条件是他们对应的正规式等价。(√ ) 25.计算机高级语言翻译成低级语言只有解释一种方式。(×) 26.在编译中进行语法检查的目的是为了发现程序中所有错误。(× ) 27.正则文法其产生式为A->a ,A->Bb, A,B∈V N,a 、b∈V T。(× ) 28.“ 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。(× ) 29.在程序中标识符的出现仅为使用性的。(× ) 二、选择题 1.词法分析器用于识别_____。 A.( ) 字符串B.( )语句 C.( )单词D.( )标识符 2.文法分为四种类型,即0型、1型、2型、3型。其中0型文法是_____。 A. ( ) 短语文法B.( ) 正则文法 C.( ) 上下文有关文法D.( ) 上下文无关文法 3.一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组_____。 A.( ) 句子B.( ) 句型C.( ) 单词D.( ) 产生式 4._____是一种典型的解释型语言。 A.( ) BASIC B.( ) C C.( ) FORTRAN D.( ) PASCAL

第6章 程序设计语言 习题与答案

第六章习题 (1)复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。 (P135 P136) 2、什么是高级程序设计语言?它有什么特点? 高级语言是汇编语言的一种抽象。高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。 (1)高级语言接近算法语言,易学、易掌握; (2)高级语言设计出来的程序可读性好,可维护性强,可靠性高; (3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高; (4)高级语言自动化程度高,开发周期短,利于提高程序的质量。 (P138) 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。 (P138-140) 4、简述语言虚拟机。 提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P147) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。与编译不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展,为了实现跨平台但同时又保证一定的效率,出现了编译、解释混合的方式,先用伪编译形成效率较高中间代码,再用语言虚拟机进行解释执行,以屏蔽掉硬件的差异。

程序设计语言习题与答案

第六章习题 P159-161 复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成 的一种民族语言, 而形式语言是进行形式化工作的元语 言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言, 用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。 这些使用助记符语言 的语言后来就被称之为汇编语言。 ( P144- P146 ) 2、试述计算机语言的类型,它们各有什么特点? 1. 机器语言, 写程序 2. 汇编语 言, 3. 高级语 言, 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、 面向对象的程序设计语言、 函数式程序设计语 言和逻辑型程序设计语言等范型。 ( P147-149 ) 4、简述语言虚拟机。 提示: 语言虚拟机是某种语言的解释器。 语言虚拟机是建立在硬件和操作系统之上, 针对不 同的硬件和操作系统有不同的虚拟机, 通过语言虚拟机屏蔽掉硬件的差异。 这样使得硬件系 统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是 Java 虚拟机。 (P156) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式, 也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行 程序, 也可以理解为用编译器产生可执行程序的动作。 编译方式是一次编译, 然后执行程序 可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。 与编译不同, 解释性语言的程序不 需要编译, 省了道工序, 解释性语言在运行程序的时候才翻译, 每个语句都是执行的时候才 翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展, 为了实现跨平台但同时又保证一定的效率, 出现了编译、 解释混 合的方式, 先用伪编译形成效率较高中间代码, 再用语言虚拟机进行解释执行, 以屏蔽掉硬 件的差异。 (P154-157) 6、请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考 虑哪些问题? 作为一个编译程序的总设计 师,首先要深刻理解被编译的源语言其语法及语义;是最低级的语言, 由二进制码组成, 最早期的程序员通过在纸带上打点来 用助记符和地址符代替了二进制码,更易于编写。 相对于汇编语言又上升了一步,更接近于自然语言,如 C 语言、Pascal 、 P145-147 ) Java 、C#等都是高级语言。 其次,

程序与程序设计语言

课题:1.3程序与程序设计语言 主备:温晓庆辅备:祖朝锐 一、教学目标 1、知识与技能 使学生知道什么是源代码,并理解算法、程序设计、程序设计语言之间的关系,了解程序设计语言的发展及种类。 2、过程与方法 使学生初步体验编程乐趣,了解如何编辑程序、编译程序和连接程序。 3、情感态度与价值观 让学生进一步领会算法和程序设计在解决问题中的地位,体会编写出程序的魅力,从而培养学生学习编程的兴趣。 二、教学重点、难点 (1)重点:了解代码所包含的算法思想; (2)难点:计算机是如何编辑程序、编译程序和连接程序的。 三、教学环境 1、教材处理 上一节课学习了三种描述算法的方法,但这三种算法计算机无法识别,必须编写程序代码,方可实现用计算机解决问题。本节课将学习用VB编写“韩信点兵”问题的算法,然后同学们通过自主学习,认识一下VB程序设计方面的知识。 2、预备知识 学生已掌握了用计算机解决问题的过程,并对算法及其作用有初步的认识。 3、硬件要求 多媒体电脑教室,广播教学系统 4、所需软件 学生机要安装VB6.0或以上版本。 5、所需课时 1课时 四、教学过程 (一)尝试用VB编写程序 1、什么是VB? VB是一种基本BASIC语言的可视化程序开发工具。 2、编写程序 ⑴从桌面上启动VB,弹出“新建工程”对话框,从“新建”页面中选“标准EXE”,然后 “打开“按钮,建立”标准EXE工程。 注:为了避免打开时总是出现“新建工程”对话框,在首次启动时,勾选“不再显示这个对话框”。 ⑵单击工具箱“CommandButton”的按钮,在Form1窗体中拖出一个“Command1”

按钮。 ⑷给按钮添加代码,在Private Sub Command1_Click()和End Sub之间添加代码: Dim N As Integer ‘声明N为整型 N=1 ‘赋初始值 NUM=inputbox(“输入士兵上限:”) Do while N

程序设计语言编译原理第3版课后答案

第二章 P36-6 (1) L G ()1是0~9组成的数字串 (2) 最左推导: N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ??????????????????0010120127334 556568 最右推导: N ND N ND N ND N D N ND N D N ND N ND N D ??????????????????77272712712701274434 886868568 P36-7 G(S) O N O D N S O AO A AD N →→→→→1357924680||||||||||| P36-8 文法: E T E T E T T F T F T F F E i →+-→→|||*|/()| 最左推导: 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 ?+?+?+?+?+?+?+?+??????+?+?+?+?+?+********()*()*()*()*()*()*() 最右推导: E E T E T F E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ?+?+?+?+?+?+?+?+?????+?+?+?+?+?+?+**********()*()*()*()*()*()*()*() 语法树:/********************************

第三节 程序和程序设计语言

第三节程序和程序设计语言 教材分析 本节是按照程序、程序结构、程序的生成和运行这一顺序进行组织编写的,关于程序编写方面的内容放到后面去学习,这样安排旨在先让学生有个整体认识,然后让学生亲历程序的执行过程来认识程序,了解输入、计算和输出的流程,阅读程序源代码并和算法进行对比,让学生了解程序代码和算法的对应关系,通过程序的单步执行来体验和了解程序的结构,了解程序语言执行的顺序,通过保存、运行和编译范例程序来了解程序的生成和执行。 活动一:认识程序。学生在以往使用计算机的时候已经对程序有所了解,但我们关注的往往不是程序的本身,而是程序所提供的功能。为了使学生能够更好地把握程序的构成,本节紧密结合上节所掌握的算法,教材给出根据上节个人理财问题的算法所设计好的程序,旨在使学生通过运行“个人理财问题.exe”文件,从整体上体验程序的执行情况,然后打开“个人理财.vpb”程序,剖析程序的构成,探寻程序和算法之间的对应关系。 活动二:了解程序的结构。为了使学生能够轻松地了解各种程序结构,教材在每个过程中设计了一系列动作,即“打开、观察、运行、观察、记录、描述”,旨在增强学生学习的目的性,同时这一系列动作也是一种行之有效的程序调试方式,为学生深入研究程序结构提供了一种自主学习方式。

活动三:了解程序的生成和执行。就像学习文字处理、多媒体制作等软件一样,这些软件都会生成自己的处理对象,程序设计语言也不例外,同样会生成自己的处理对象,即程序,程序也以文件的形式进行存储。在编写上采取直观易懂的方式,学生只要按照提示去做就可以了。这样的操作在后面的学习过程中将会经常用到,需要学生慢慢体会和理解。 教学目标

相关主题