程序的目的是

程序的目的是
程序的目的是

程序的目的是:按下按键,控制LED的亮和灭。短按键,则小灯亮1秒,然后灭;长按键,小灯常亮。

首先,完成键盘的扫描程序。

第一点:如果是扫描,就要用到定时器。我想设计定时器每隔10ms扫描一次按键。

定时器,我选用定时器A。它的定时中断函数如下:

函数名称:TimerA_ISR

功能:定时器A的中断服务函数

参数:无

返回值:无

********************************************/

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

GetKey();

}

上面这个定时中断函数的意思就是:每当定时时间到了以后,就调用GetKey()函数一次。GetKey()函数就是扫描键盘按键的函数了。在GetKey()函数中,会根据按键类型(长按/短按)返回不同的数值。根据返回的数值,做小灯亮法的操作。那么,返回的这个值,我们需要保存在一个变量中,在这里定义一个变量uchar FlagLcd ; 来保存返回值。这个变量在全局变量中定义,以保证它的作用域。

那么定时函数就变为

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

}

定时器中断的时间间隔,我在主函数中定义。

这样写:

CCTL0 = CCIE; //使能CCR0中断

CCR0 = 40; //设定周期0.01S

TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

这样,定时器这块就算完工了。那么,下面进行按键扫描程序。

按键的定义是这样的,根据我板子的按键原理图如下

这是一个矩阵键盘。其中KEY就是外部高电平3.3V。我只想用其中的P1.0作为这次试验的按键。那么,做些设置就可以了。将P1.7方向设置为输出,并输出电平为低。这样,才能实现当K1按下时,P1.0输入为低;当K1抬起时,P1.0输入为高的效果。

对P1口进行初始化:

void Init_Keypad(void)

{

P1DIR = 0xfe; //P1.0设置为输入状态, P1.1~P1.7设置为输出状态

P1OUT &= 0x7f; // P1.0~P1.6输出高电平,P1.7输出低电平

}

下面是键盘扫描函数:

unsigned char GetKey()

{

unsigned char keyRetu=0; //返回的按键值

static unsigned char s_keyState=0,keyTime=0; //按键状态,按键按下的时间计数器

switch (s_keyState)

{

case 0:

if((P1IN&0x01)==0) //检测到有按键,转到状态1,相当于是消抖过程。((P1IN&0x01)==0判断P1.0口输

入是高还是低电平

{

s_keyState=1;

}

break;

case 1:

if((P1IN&0x01)==0) //再次检测到有按键,转到状态2

{

s_keyState=2;

keyTime=0; //清零按键时间计数器

}

else

{

s_keyState=0; //没有检测到按键,说明状态0检测到是一个抖动,重新转到状态0

}

break;

case 2:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

keyRetu=1; //输出1

}

else

{

if(++keyTime>=50) //按下时间>1s

{

s_keyState=3; //转到状态3

keyTime=0; //清零按键时间计数器

keyRetu=2; // 输出2

}

}

break;

case 3:

if((P1IN&0x01)==1) //检测到按键松开

{

s_keyState=0; //状态转到状态0

}

else

{

s_keyState=3; //转到状态3

}

break;

}

return keyRetu;

}

上面这个扫描函数,根据按键K1是长按还是短按,返回不同的值:长按,返回2;短按,返回1。

获得了返回值以后,就要对LED进行操作了。

我的板子的LED如下图

LED是LED供电高电平,这里我只想用其中的D1作为实验灯。初始化P2.0口:P2DIR = 0xff; //设置P2口方向为输出

P2OUT = 0xff; //设置P2口输出高电平

那么P2OUT = 0xfe,则LED亮;P2OUT = 0xff,则LED灭。这个很好实现。但是,怎么样才能持续亮1s呢?这个问题还需要定时器来解决。我在这里还利用定时器A来完成这个任务。

在主程序中定义全局变量unsigned int TIME_1_S=0;然后再定时器中断函数中做些改动

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

If(FlagLcd==1)

TIME_1_S=1;

If((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

Else

TIME_1_S=0;

}

这样,在控制LED的时候,可以这样写

If(TIME_1_S>0)

P2OUT = 0xfe;

Else

P2OUT = 0xff;

就实现了亮1S的效果。

那么长按键的时候呢,则需要再做一下处理。

在主程序中定义全局变量unsigned int TIME_L_S=0;然后再定时器中断函数中做些改动

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

If(FlagLcd==1)

TIME_1_S=1;

If((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

Else

TIME_1_S=0;

If(FlagLcd==2)

TIME_L_S=1;

}

If((TIME_1_S>0)||( TIME_L_S==1))

P2OUT = 0xfe;

Else

P2OUT = 0xff;

到这里,基本的实现函数都已经完成了。剩下的事情,就是把相关框架搭建一下了

第一:是main.c文件

#include

#include "key.h"

unsigned char FlagLcd ;

unsigned int TIME_L_S=0;

unsigned int TIME_1_S=0;

void main(void)

{

P1DIR = 0XFF;P1OUT = 0XFF;

P2DIR = 0XFF;P2OUT = 0XFF;

P3DIR = 0XFF;P3OUT = 0XFF;

P4DIR = 0XFF;P4OUT = 0XFF;

P5DIR = 0XFF;P5OUT = 0XFF;

P6DIR = 0XFF;P6OUT = 0XFF;

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换

CCTL0 = CCIE; //使能CCR0中断

CCR0 = 40; //设定周期0.01S

TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

P2DIR = 0xff; //设置P2口方向为输出

P2OUT = 0xff; //设置P2口输出高电平

Init_Keypad();

_EINT();//使能全局中断

while(1)

{

if((TIME_1_S>0)||( TIME_L_S==1))

P2OUT = 0xfe;

else

P2OUT = 0xff;

}

}

#pragma vector = TIMERA0_VECTOR

__interrupt void TimerA_ISR(void)

{

FlagLcd =GetKey();

if(FlagLcd==1)

TIME_1_S=1;

if((TIME_1_S>0)&&( TIME_1_S<100))

TIME_1_S++;

else

TIME_1_S=0;

if(FlagLcd==2)

TIME_L_S=1;

}

第二:key.c文件

#include

void Init_Keypad(void)

{

P1DIR = 0xfe; //P1.0设置为输入状态, P1.1~P1.7设置为输出状态

P1OUT &= 0x7f; // P1.1~P1.7输出高电平

}

unsigned char GetKey()

{

unsigned char keyRetu=0; //返回的按键值

static unsigned char s_keyState=0,keyTime=0; //按键状态,按键按下的时间计数器

switch (s_keyState)

{

case 0:

if((P1IN&0x01)==0) //检测到有按键,转到状态1,相当于是消抖过程

{

s_keyState=1;

}

break;

case 1:

if((P1IN&0x01)==0) //再次检测到有按键,转到状态2

{

s_keyState=2;

keyTime=0; //清零按键时间计数器

}

else

{

s_keyState=0; //没有检测到按键,说明状态0检测到是一个抖动,重新转到状态0

}

break;

case 2:

if((P1IN&0x01)==1) //检测到按键松开{

s_keyState=0; //状态转到状态0 keyRetu=1; //输出1

}

else

{

if(++keyTime>=50) //按下时间>1s {

s_keyState=3; //转到状态3 keyTime=0; //清零按键时间计数器keyRetu=2; // 输出2

}

}

break;

case 3:

if((P1IN&0x01)==1) //检测到按键松开{

s_keyState=0; //状态转到状态0

}

else

{

s_keyState=3; //转到状态3

}

break;

}

return keyRetu;

}

第三:key.h文件

void Init_Keypad(void);

unsigned char GetKey();

编译原理作业参考答案

第1章引言 1、解释下列各词 源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。 源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。 目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。目标程序 (结果程序)一般可由计算机直接执行。 低级语言:机器语言和汇编语言。 高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。 翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。 编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言), 然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。 解释程序: 以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。 2、什么叫“遍”? 指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。 3、简述编译程序的基本过程的任务。 编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。 词法分析:输入源程序,进行词法分析,输出单词符号。 语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。 中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。 优化:对中间代码进行优化处理。 目标代码生成:把中间代码翻译成目标语言程序。 4、编译程序与解释程序的区别? 编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。 5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗? 编译程序的5个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。而中间代码生成和代码优化并不是必不可少的。优化的目的是为了提高目标程序的质量,没有这一部分工作,仍然能够得到目标代码。 6、编译程序的分类 目前基本分为:诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。

大全程序调试实验报告

微机原理与接口技术 课 程 作 业 班级: 目录

一、实验目的: 汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MASM汇编语言及其程序设计方法。 二、实验环境 EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序 三、实验过程 (一)基础知识储备 1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。 2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。 3.了解MASM汇编语言及其程序设计方法。掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计方法。 (二)汇编语言程序设计 1.分析问题,明确要解决的问题和要求。 2.确定解决问题的思路和方法。 3.将解决问题的方案编制成程序流程图。 4.根据流程图,逐条编写程序。 5.上机调试,验证程序是否正确。 (三)汇编程序调试 MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。

汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤: 1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM的汇编语言源文件*.ASM。 2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。 3.连接:使用连接程序,把一个或多个目标程序连接成可执行文件*.EXE。 4.运行:运行可执行文件,验证程序是否正确。 5.调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤,直到运行正确为止。 四、调试实例 (一)实例一 要求:编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。 实验思路:本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按照相反次序传送。源程序: DATA SEGMENT ;数据段开始 MBUF DB 0,1,2,3,4 ;每个数据分配一个存储单元 NBUF DB 5 DUP(0) ;空5个存储单元备用 DATA ENDS ;数据段结束 STACK SEGMENT PARA STACK ;堆栈段开始,定位类型是PARA DB 100 DUP(0) STACK ENDS CODE SEGMENT ;代码段开始 ASSUME CS:CODE, DS:DATA,SS:STACK ;段分配伪指令 START: MOV AX,DATA ;数据传送 MOV DS,AX ;存储器数据传送到段寄存器中 MOV SI,OFFSET MBUF ;取第一组操作数的偏移地址 MOV DI,OFFSET NBUF ;取第二组操作数的偏移地址 MOV CX,5 ;数据个数5传送到CX中 LOP1: MOV AX,[SI] ;数据传送 PUSH AX ;数据入栈 INC SI ;指针加1 LOOP LOP1 ;循环 LOP2: POP AX ;数据出栈 MOV [DI],AX ;数据传送 INC DI LOOP LOP2 MOV AH,4CH ;终止进程 INT 21H CODE ENDS END START

软件调试技巧

软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,

编译程序和解释程序

编译程序和解释程序 程序设计语言处理系统是系统软件中的一大类,它随被处理的语言及其处理方法和处理过程的不同而不同。任何一个语言处理系统通常都包括一个编译程序,它把一种语言的程序翻译成等价的另一种语言的程序。被翻译的语言和程序分别称为源语言和源程序,而翻译生成的语言和程序分别称为目标语言和目标程序,按照不同的翻译处理方法,翻译程序可分为以下三类: ⑴从汇编语言到及其语言的翻译程序,称为汇编程序。 ⑵按源程序中语句的执行顺序,逐条翻译并立即执行相关功能的处理程序、称为解释程序。 ⑶从高级语言到汇编语言(或机器语言)的翻译程序,称为编译语言。 除了翻译程序外,语言处理系统通常还包括连接程序(将多个分别编译或汇编过的目标程序和库文件进行组合)和装入程序(将目标程序装入内存并启动执行)等。 由于汇编语言的指令与机器语言指令大体上保持一一对应关系,因而汇编程序较为简单,一下只对解释程序和编译程序做简单说明。 1、解释程序 解释程序对源程序进行翻译的方法相当于两种自然语言间的口译。解释程序对源程序的语句从头到尾逐句扫描、逐句翻译、并且翻译一句执行一句,因而这种翻译方式并不形成机器语言形式的目标程序。 解释程序的优点是实现算法简单,且易于在解释过程中灵活方便地插入所需要的修改和测试措施;其缺点是运行效率低。例如,对于源程序中需要多次重复执行的语句,解释程序将要反复的取出、翻译和执行它们。根据这些特点,解释程序通常适合于以交互方式工作的、或在测试状态下运行的、或运行时间与解释时间差不多的程序。 2、编译程序 编译程序对源程序进行解释的方法相当于笔译。在编译程序的执行过程中,要对源程序扫描一遍或几遍,最终形成一个可在具体计算机上执行的目标程序。编译程序的实现算法较为复杂,但通过编译程序的处理可以产生高效运行的目标程序,并把它保存在磁盘上,以备多次执行。因此,编译程序更适合于翻译那些规模大、结构复杂、运行时间长的大的应用程序。

软件调试报告模板

竭诚为您提供优质文档/双击可除 软件调试报告模板 篇一:软件测试报告模板 软件测试报告模板 此页为模板文档本身的版本控制记录表,按模板生成的正式文档中不需要此页。 秘密 xxxxxx软件项目 系统测试报告 软件测试部200x/xx/xx 目录 1.引言................................................. ....................32.测试参考文档......................(软件调试报告模板).......................................33.测试设计简介................................................. (3)

3.1测试用例设计................................................. ......33.2测试环境与配置................................................. ....33.3测试方法................................................. ..........44.测试情况................................................. ................44.1测试执行情况................................................. ......44.2测试覆盖................................................. ..........44.3缺陷的统计................................................. .. (4) 4.3.1缺陷汇总和分析..............................错误!未定义书签。 4.3.2具体的测试缺陷..............................错误!未定义书签。 5.测试结论和建议................................................. ..........55.1结论..............................................错

软件的设计与调试范文

4软件的设计与调试 软件部分主要是用所编写的语言程序来配合相应的硬件电路,控制所设计电路实现所预期功能的部分。C8051F120单片机的程序可以使用C 语言,也可以使用汇编语言,或者是两者的结合,本设计使用C语言编写程序实现拖拉机工况油耗仪功能。 软件部分分成几大模块来实现单片机的功能。程序主函数的设计,由于设计中使用了相应的芯片,所以必须首先对相应的芯片进行初始化并对通讯串口芯片进行初始化、中断向量的设计以及开中断、循环等待等准备。程序的详细如附录中的程序部分所示。 4.1初始化程序 对所有模块进行初始化,例如单片机的初始化、LED数码管显示的初始化等。程序如附录中所示。初始化是为了让系统正常工作,而给一些变量参数赋以初值的程序。初始化程序主要任务是清屏幕。初始化模块,如图4.1所示。系统加电后进行初始化,测量系统进入起始状态,等待控制面板输入。系统检测控制面板输入,根据控制面板输入进入相应测量程序。 SFRPAGE= CONFIG_PAGE; WDTCN=0xde; //Disable watchdog timer WDTCN=0xad; OSCILLATOR_Init(); //Initialize oscillator PORT_Init_UART0 ();//Initialize crossbar and GPIO PORT_Init_UART1 ();//Initialize crossbar and GPI1 UART0_Init(); //Initialize UART0 UART1_Init(); //Initialize UART1 其中串口uart0初始化如下 void UART0_Init(void) //uart0 初始化 { char SFRPAGE_SAVE; SFRPAGE_SAVE= SFRPAGE;//Preserve SFRPAGE SFRPAGE=TMR2_PAGE; TMR2CN=0x00; //Timer in 16-bit auto-reload up timer //mode TMR2CF= 0x08; // SYSCLK is time base;no output; //up count only RCAP2=-((long) SYSCLK/BAUDRATE/16);

PLC程序现场调试的方法

P L C程序现场调试的方 法 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

PLC程序现场调试的方法——【非常重要】 02-04 16:42更新林慧玲分类:围观:625人次微信二维码 1、要查接线、核对地址 要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2、检查模拟量输入输出 看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3、检查与测试指示灯 控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4、检查手动动作及手动控制逻辑关系 完成了以上调试,继而可进行手动动作及手动控制逻辑关系调试。要查看各个手动控制的输出点,是否有相应的输出以及与输出对应的动作,然后再看,各个手动控制是否能够实现。如有问题,立即解决。 5、半自动工作 如系统可自动工作,那先调半自动工作能否实现。调试时可一步步推进。直至完成整个控制周期。哪个步骤或环节出现问题,就着手解决哪个步骤或环节的问题。 6、自动工作 在完成半自动调试后,可进一步调试自动工作。要多观察几个工作循环,以确保系统能正确无误地连续工作。 7、模拟量调试、参数确定 以上调试的都是逻辑控制的项目。这是系统调试时,首先要调通的。这些调试基本完成后,可着手调试模拟量、脉冲量控制。最主要的是选定合适控制参数。一般讲,这个过程是比较长的。要耐心调,参数也要作多种选择,再从中

编译和解释的区别

编译和解释的区别 编译和解释的区别在哪?编译器是把源程序的每一条语句都编译成机器语言,并保存成 二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运 行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的 形式) 一、低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需 翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇 编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。 高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过 编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。 二、编译与解释 编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时 的控制权在用户程序。 解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、 对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时 计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运 行速度是不如编译后的程序运行的快的.

实验一-Keil软件的使用及简单程序的调试方法

实验一Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下:

几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示

单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。 (3)将文件添加到工程中 单击“T arget 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。

编译原理第二版课后习答案

《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第 2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案: 一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源

程序调试中遇到的问题心得体会

文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 . 程序调试中遇到的问题心得体会 篇一:程序设计心得 培训心得体会 程序设计》是理工类专业必修的计算机技术基础课, 是一门实践性很强的课程,不仅要求学生掌握概念,而且还要求学 生动手编程并进行上机调试、运行。听了吴教授短短的14 节课, 受益匪浅。 对于这门课程,实践性非常强。吴教授从课程改革这 道题目讲起,结合自身经验,重点突出生动形象。以下为我的几点 体会: 1.程序设计必须自己亲自动手动脑上机调程序,否则 是学不会编程序的。 其中讲到职业技术院校的实训环节很重要,锻炼学生 的好机会好平台,培养学生动手编程的能力和合作精神。大家在一 起学习,取长补短,在实训中长知识,提高同学们的学习热情和自 学能力。我个人觉得这种教学方式效果非常好,还能激发学生的学 习兴趣,用书本上的理论知识来指导实践、解决一些实际生活中的 问题。 2.讲授的重要目的是激发学生的兴趣。 因为大多数学生初次接触计算机语言,觉得迷茫、不 知所措,觉得这门课程 难、抽象、不易理解,学起来比较吃力,所以讲课过 1文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .

程中必须让学生主动愿意去思考,这就涉及到一个兴趣问题,因为难理解的东西好多学生时间长了都不愿意去学,这就需要教师在授课过程中做工作,如何抓住学生的心是关键。 吴教授授课中基本上不讲书本上的例子,书本上的例 子留给学生自己下去自学,而是选择一些贴近生活的例子或 者有故事背景的例子,从例子引出所涉及到的知识点,这样 就能激发学生的兴趣。其中个例子“韩信点兵”,从这个故事引出C 语言当中函数的递归调用思想。 这就需要我们在上课前做足功课,想法设法吸引学生 们的注意力,从一些感兴趣的例子中一步一步引导学生去思 考,既增加了与学生间的互动,又锻炼了学生的思考能力。 3.遇到任何问题都不要盲目去解题,要抓住任何事物 发展过程中的规律,按照规律再设定合适的算法。 同样授课也一样,首先要明确这门课程的教学目的: 通过理论和实践上机教学,使学生较好地掌握C 语言的基本知识,掌握基本的程序设计过程和方法,具备初步的高级语言程序设计能力,并能熟练应用VC++ 集成环境进行C 语言 程序的编写、编译与调试,达到能应用 C 语言解决一般编程问题的水平。目的明确了再设定合适的教学方法。 以上3 点就是我的体会。 篇二:学习C 语言心得体会 c 语言培训学习心得体会

PLC程序的调试方法及步骤(精)

PLC程序的调试方法及步骤 PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟测试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只

培训管理程序文件

壹、目的 一、促进公司的人力资源开发,以适应公司的快速进展与经 营目标的达成。 二、提升职员的专业知识、技能与服务顾客的态度,以加强 职员的综合素养与工 作积极性,向顾客提供更好的产品与服务。 贰、对象 公司全体职员 叁、课程设置 一、门店营运部分: 1、新进职员培训课程:培训对象为门店所有新进职员, 要紧包括公司的企业文化、门店组织结构、规章制 度、行业名词等内容,由门店培训专员负责,具体 内容与流程请参见「新进职员培训治理规定」。 2、门店进阶培训课程:培训对象为既有门店职员,分 为职员在职训练、储备组长培训、储备课长培训、 储备副处长培训、储备处长培训、储备店长培训。 通过一系列的培训并与职员的晋升相结合,快速、

有效的培养公司的中高级人才,除职员在职训练及 储备组长培训由门店培训专员负责外,其余由总部 培训TEAM负责,具体内容与流程请参见「门店进阶 培训治理规定」。 3、新开门店培训课程:培训对象为新开店的职员,要 紧包括职前介绍、专业课程与门店实习,由总部培 训TEAM负责,训练店培训员协助。具体内容与流程 请参见「新开门店培训治理规定」。 二、行政后勤部分: 1、新进职员培训课程:培训对象为公司总部所有新进 职员,要紧包括公司的企业文化、公司组织结构、 规章制度、职场礼仪等内容,由总部培训TEAM负责, 具体内容与流程请参见「新进职员培训治理规定」。 2、专业培训课程:培训对象为总部各行政单位,如财 务、采购等。要紧包括专业知识、治理技能的在职 训练与集中训练,由各部门负责,门店由培训专员 提出,培训TEAM协助。 四、外部培训课程:培训对象为总部与门店的所有中高层职员,采纳参加由外部 专业机构举办的公开课、研讨会或内训的形式,具体内容与流程请参见「外 派治理规定」。

编译原理练习题参考答案

一、填空题: 1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理 . 1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序. 1-03.编译方式与解释方式的根本区别在于是否生成目标代码 . 1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程 序 . 1-05.对编译程序而言,输入数据是源程序 ,输出结果是目标程序 . 1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 , 汇编阶段和运行阶段 . 1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。 1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别单词。 1-09.编译方式与解释方式的根本区别为是否生成目标代码。 2-01.所谓最右推导是指:任何一步α β都是对α中最右非终结符进行替换的。 2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。 2-03.产生式是用于定义语法成分的一种书写规则。 2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈V T*} 。 2-05.设G是一个给定的文法,S是文法的开始符号,如果S x (其中x∈V*),则称x是文法的一个句型。 2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V T*),则称x是文法的一个句子。 3-01.扫描器的任务是从源程序中识别出一个个单词符号。 4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。 4-02.语法分析的任务是识别给定的终极符串是否为给定文法的句子。 4-03.递归下降法不允许任一非终极符是直接左递归的。 4-04.自顶向下的语法分析方法的关键是如何选择候选式的问题。 4-05.递归下降分析法是自顶向上分析方法。 4-06.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。 5-01.自底向上的语法分析方法的基本思想是:从给定的终极符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。 5-02.自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行直接归约,力求归约到文法的开始符号。

1软件测试的目的是(

一、选择题 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)错误处理 12.软件测试过程中的集成测试主要是为了发现()阶段的错误。 A)需求分析B)概要设计C)详细设计D)编码 13.不属于白盒测试的技术是()。 A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析 14.集成测试时,能较早发现高层模块接口错误的测试方法为()。

编译与解释的区别

计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。 编译程序、解释程序、汇编程序是3种语言处理程序。其区别主要为:汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。 解释:程序运行时,取一条指令,将其换化为机器指令,再执行这条机器指令。编译:程序运行时之前,将程序的把有代码编译为机器代码,再运行这个程序。计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。 编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。 解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C 语言是能书写编译程序的高级程序设计语言。 简单的说,编译就是全文翻译,全部翻译完才执行。解释就相当于同声翻译,边翻译边执行。

软件工程期末试题及答案

软件工程期末试题及答案(六) 选择题 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)错误处理 12.软件测试过程中的集成测试主要是为了发现()阶段的错误。 A)需求分析B)概要设计C)详细设计D)编码 13.不属于白盒测试的技术是()。 A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析 14.集成测试时,能较早发现高层模块接口错误的测试方法为()。 A)自顶向下渐增式测试B)自底向上渐增式测试C)非渐增式测试D)系统测试15.确认测试以()文档作为测试的基础。 A)需求规格说明书B)设计说明书C)源程序D)开发计划 16.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A)程序内部逻辑B)程序的复杂度C)使用说明书D)程序的功能 17.程序的三种基本结构是()。 A)过程子、程序、分程序B)顺序、选择、循环 C)递归、堆栈、队列D)调用、返回、转移 18.结构化程序设计的一种基本方法是() A)筛选法B)递归法C)归纳法D)逐步求精法 19.软件调试的目的是() A)找出错误所在并改正之B)排除存在错误的可能性 C)对错误性质进行分类D)统计出错的次数

3-2节 程序调试的方法

3-2节程序调试的方法 编程是一件需要认真和细心的工作。通过让学生从李明同学学习程序设计时所遇到的困难和他情感上所表现出来的“窘态”故事开始,道出程序调试不但需要技巧、更需要有耐心和毅力的道理,从而激发学生学习程序调试的兴趣和热情,拉开了本节的充幕。 接着,布置任务,让学生输入课本P83四段有错误的程序,要求学生自己探究,并改正程序。 最后分析程序运行的情况,总结出程序运行出错的四种类型: 一、拼写错误 1)在工程窗口中,看到红色文字显示的程序是有拼写错误的。 2)同时还要检查其它的拼写错误 Pring改为print Integr改为integer 2、编译时出现的错误 S应该改为a 3、运行时出现的错误 运行时的错误是指编译通过后,在执行程序时出现的错误,如用0作除数等。

例如:a=0的时候,将会出现0作除数的情形 4、逻辑错误 程序运行后,得出的结果不是正确的。这说明程序存在逻辑错误。逻辑错误产生 的原因很多,运算符使用不正确、语句次序不对、循环的设置不对等都可以产生 逻辑错误。 如这里的程序的出口应该是tree>=100 任务: P85 马上行动:

你和同学们能解决以上的问题吗?以合作、交流的方式大胆尝试一下,你会有意外的收获! 一、本节小结: 本节主要通过任务驱动、探究的形式,介绍了程序的错误类型,分析了产生错误的原因,程序的调试与排错的方法,让学生“从做中学”,进一步体验了程序调试的方法和技巧,培养了 学生调试程序的耐心和毅力,提高了学生程序设计的素养。 五、课外练习 编写一个程序,将从键盘输入的一个自然数进行因数分解,输出结果并上机验证。

相关文档
最新文档