当前位置:文档之家› J2ME课后习题答案

J2ME课后习题答案

J2ME课后习题答案
J2ME课后习题答案

1、简述J2ME与java的体系结构

关于J2ME的体系结构,我们可以这样总结:

Configuration的分类是根据计算能力的不同来划分的,同类设备的计算能力相近。

Configuration是一个规范,定义了这类设备的共同Java平台,定义与设备无关的Java虚拟机和核心库,是平台相容性的基础。Profile的分类是根据设备功能划分的,同类功能的设备其他各种硬件条件和需求也相近。Profile是一组API,在某一Configuration的基础上扩展了针对设备特定功能的API,使得标准能够完全适应特殊的设备,彻底发挥设备的功能。

J2ME体系的一般结构是:由Configuration定义的Java虚拟机运行于设备的宿主操作系统之上,构成整个平台的基础。Configuration提供了基本的语言特性,Profile提供针对设备的特殊功能API和扩展类库。应用程序的运行环境需要一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加。

2、简述JVM CVM KVM 的区别与联系

Sun公司提供了三种运行在小型设备操作系统上的JVM,它们是CVM、KVM 和Card VM。

CVM应用于那些瘦客户端,如数字机顶盒、车载电子系统等;

KVM应用于那些电池供电的手持移动设备,如移动电话、PDA等;

Card VM应用于智能卡(Smart Card)系统。

CVM、KVM和Card VM三者适用的硬件资源是由高到低的,根据不同的硬件选择不同的虚拟机。KVM在功能上是CVM的子集。

CVM允许设备将Java线程映射到本地线程,完成垃圾收集、Java同步等。在存储系统方面,表现为精确、高校的垃圾收集,虚拟机与存储系统分离;在可移植性方面,CVM使用C语言,实现快速、安全移植;在本地线程方面,CVM支持线程抢占。

KVM的最大特点是小而高效,只需要几万字节的存储空间就可以运行。虚拟机和类库只有50~80KB,具有较高的可移植性和可扩展性,垃圾收集独立于系统,支持多线程。

3、简述MIDP的含义

MIDP(Mobile Information Device Profile,移动信息设备配置文件)建立在CLDC 的基础之上,用来描述手机和寻呼机这样更加具体化的的无线移动设备(MIDP为移动应用提供的核心应用包括用户界面、网络连接、本地数据存储及应用生命周期管理等,统称为标准Java运行环境和Java API等。)

4、简述J2ME的安全性

一般来说,手机的安全特性可以这样使用:

在下载时确定安全级别,可以通过下载的网站Url来定义。

例如:如果url的以https://www.doczj.com/doc/a12030767.html,开头就判定为高安全级别。

但这点不能通过J2ME实现,需要编写手机底层API,并在下载时为该应用设定安全级别并永久保存且禁止修改。

J2ME应用只是从底层API读取该应用的安全级别,并作满足该安全级别的处理。可以这样做,编一个安全级别异常类,在涉及安全级别的Method里作判断并抛出该异常。

1、简述JDK WTK Eclipseme的作用

本文将主要讲述RecordFilter和RecordEnumeration的用法,这在整个Record Management System中都是至关重要的。由于本人觉得RecordComparator和RecordFilter类似并且用出相对小些,因此不再这里做介绍了。我们依然是通过一个示范的应用程序说明如何使用这两个接口。

RecordFilter的定义非常的简单,他只定义了一个方法那就是boolean matches(byte[] data)。

public interface RecordFilter {

boolean matches( byte[] recordData );

}

使用起来也非常简单,我们只需要实现这个方法并根据需要返回boolean类型的值就可以了,通常我们在查找纪录的时候使用这个接口,把它作为一个参数传递给enumerateRecords()方法,例如

RecordEnumeration records = rs.enumerateRecords(new RecordEntryFilter(key),null,false),首先我们看看这个方法的参数,第一个参数是RecordFilter,它就是用来筛选数据库中的纪录的,筛选的条件就是我们上面定义的方法,boolean matches(byte[] data),第二个参数是RecordComparator,它是对选择出来的数据进行排序的,如果你不指定的话就按照默认的顺序排序。第三个参数是boolean类型的,如果是true的话,那么record会跟踪rms 中的数据变化,这是比较昂贵的开销,我一般都是用false的。得到records 后我们可以进行很多有用的操作,具体的方法有:

public interface RecordEnumeration {

void destroy();

boolean hasNextElement();

boolean hasPreviousElement();

boolean isKeptUpdated();

void keepUpdated( boolean keepUpdated );

byte[] nextRecord() throws InvalidRecordIDException,

RecordStoreNotOpenException,

RecordStoreException;

int nextRecordId() throws InvalidRecordIDException;

int numRecords();

byte[] previousRecord() throws InvalidRecordIDException,

RecordStoreNotOpenException,

RecordStoreException;

int previousRecordId() throws InvalidRecordIDException;

void rebuild();

void reset();

}

其中标记的方法很常用应该记住。我们实现RecordFilter的时候通常是会写成一个类的内部类,这非常普遍也很合理。我下面的程序依然使用这样的方法,private static class RecordEntryFilter implements RecordFilter

{

private String key;

public RecordEntryFilter(String key) {

this.key = key;

}

public boolean matches(byte[] data)

{

try

{

return RecordEntry.matches(data, key);

} catch (IOException e)

{

e.printStackTrace();

return false;

}

}

}

在例子用我们向RMS中存入几个数据实体,它包括一个username和一个phonenumber字段。我们写入和读出字段的时候可以使用系列之二中的序列化机制。

import java.io.*;

/*

* Created on 2004-7-13

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author E2412C

*

* TODO To change the template for this generated type comment go to Window -

* Preferences - Java - Code Style - Code Templates

public class RecordEntry

{

private String userName;

private String phoneNum;

public RecordEntry() {

}

public RecordEntry(String userName, String phoneNum) { https://www.doczj.com/doc/a12030767.html,erName = userName;

this.phoneNum = phoneNum;

}

/**

* @return Returns the phoneNum.

*/

public String getPhoneNum()

{

return phoneNum;

}

/**

* @param phoneNum

* The phoneNum to set.

*/

public void setPhoneNum(String phoneNum)

{

this.phoneNum = phoneNum;

}

/**

* @return Returns the userName.

*/

public String getUserName()

{

return userName;

}

/**

* @param userName

* The userName to set.

*/

public void setUserName(String userName)

https://www.doczj.com/doc/a12030767.html,erName = userName;

}

public byte[] serialize() throws IOException

{

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

dos.writeUTF(userName);

dos.writeUTF(phoneNum);

return baos.toByteArray();

}

public static RecordEntry deserialize(byte[] data) throws IOException

{

ByteArrayInputStream bais = new ByteArrayInputStream(data);

DataInputStream dis = new DataInputStream(bais);

RecordEntry record = new RecordEntry();

https://www.doczj.com/doc/a12030767.html,erName = dis.readUTF();

record.phoneNum = dis.readUTF();

return record;

}

public static boolean matches(byte[] data,String key) throws IOException

{

ByteArrayInputStream bais = new ByteArrayInputStream(data);

DataInputStream dis = new DataInputStream(bais);

return dis.readUTF().equals(key);

}

public String toString()

{

return userName+":"+phoneNum;

}

}

我们本文要讲述的另一个重点是如何使用RecordEnumeration,相关的代码写在了一个RecordModel类里面如下:

import java.io.IOException;

import javax.microedition.rms.*;

/*

* Created on 2004-7-13

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author E2412C

*

* TODO To change the template for this generated type comment go to Window -

* Preferences - Java - Code Style - Code Templates

*/

public class RecordModel

{

private RecordStore rs;

private boolean firstTime = true;

public static final String NAME = "record";

private RecordEntry[] record = { new RecordEntry("ming", "12345"),

new RecordEntry("pain", "123456"),

new RecordEntry("linux", "234566"),

new RecordEntry("mingtian", "3456677") };

private static class RecordEntryFilter implements RecordFilter

{

private String key;

public RecordEntryFilter(String key) {

this.key = key;

}

public boolean matches(byte[] data)

{

try

{

return RecordEntry.matches(data, key);

} catch (IOException e)

{

e.printStackTrace();

return false;

}

}

}

public RecordModel() {

try

{

rs = RecordStore.openRecordStore(NAME, true);

} catch (RecordStoreException e)

{

e.printStackTrace();

}

if(firstTime)

{

init();

firstTime = false;

}

}

public void init()

{

try

{

for (int i = 0; i < record.length; i++)

{

byte[] data = record[i].serialize();

rs.addRecord(data, 0, data.length);

}

} catch (IOException e)

{

e.printStackTrace();

} catch (RecordStoreException e)

{

e.printStackTrace();

}

}

public RecordEntry[] getRecord(String key)

{

try

{

if (rs.getNumRecords() > 0)

{

RecordEnumeration records = rs.enumerateRecords(

new RecordEntryFilter(key), null, false);

int length = records.numRecords();

if (length == 0)

{

return new RecordEntry[0];

} else

{

System.out.println(length);

RecordEntry[] record = new RecordEntry[length];

for (int i = 0; i < length; i++)

{

record[i] = RecordEntry.deserialize(rs

.getRecord(records.nextRecordId()));

}

return record;

}

} else

{

return new RecordEntry[0];

}

} catch (RecordStoreException e)

{

e.printStackTrace();

return new RecordEntry[0];

} catch (IOException e)

{

e.printStackTrace();

return new RecordEntry[0];

}

}

}

其中标记为灰色的代码是我们应该重点掌握的,下面是RecordFilterMIDlet类的代码:

import javax.microedition.lcdui.*;

import javax.microedition.midlet.MIDlet;

import javax.microedition.midlet.MIDletStateChangeException;

/*

* Created on 2004-7-13

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author E2412C

*

* TODO To change the template for this generated type comment go to Window -

* Preferences - Java - Code Style - Code Templates

*/

public class RecordFilterMIDlet extends MIDlet implements ItemStateListener {

private Display display;

private Form mainForm;

private TextField textField;

private RecordModel model;

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#startApp()

*/

protected void startApp() throws MIDletStateChangeException

{

// TODO Auto-generated method stub

display = Display.getDisplay(this);

mainForm = new Form("Test");

model = new RecordModel();

textField = new TextField("input:", null, 20, TextField.ANY);

mainForm.append(textField);

mainForm.setItemStateListener(this);

display.setCurrent(mainForm);

}

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#pauseApp()

*/

protected void pauseApp()

{

// TODO Auto-generated method stub

}

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)

*/

protected void destroyApp(boolean arg0) throws MIDletStateChangeException

{

// TODO Auto-generated method stub

}

public void itemStateChanged(Item item)

{

if (item == textField)

{

String input = textField.getString();

RecordEntry[] record = model.getRecord(input);

if (record.length == 0)

{

System.out.println("no record");

} else

{

for (int i = 0; i < record.length; i++)

{

System.out.println(record[i]);

}

}

}

}

}

为了方便我没有在手机界面上显示,而是输出到控制台。下面是在input内输入ming的时候在控制台打印出来的结果:

no record

no record

no record

1

ming:12345

你可能想把以输入字段为开头的记录筛选出来,就像在通讯录中查询一样。那么你可以在Filter中添加一个int类型的type来告诉实体中的matches()方法应该如何做。这样就可以筛选出你所需要的记录了:)

还是那句话,希望对大家有用!本来还想在系列5中介绍我自己实现的一个个人通信录,程序已经写完,大概有3k的代码吧,基本覆盖了前面所讲述的专题。由于我准备投稿,因此决定不继续写Record Management System 的内容了。

1、简述MIDP程序的基本框架和生命周期

基本框架:

生命周期:

1、简述MIDP用户界面API的结构

MIDP用户界面程序包的核心抽象是类Displayable。Displayable类帮助将用户界面组织成可以管理的大小。这样可以使得用户界面便于使用和学习。每个MIDP应用程序都拥有一个Display对象,在它之上,有且仅有一个显示出来的Displayable 对象。根据用户的交互,应用程序在完成任务的每一步不断设置和重设在Display对象上的当前Displayable对象。用户任务(指与用户界面的交互)通过Command对象来实现。当用户选择了一个Command对象之后,应用程序自动获得通知。作为反馈,应用程序经常改变当前的Displayable对象,把另一个Displayable作为当前值。

设备软件管理了本地应用程序和MIDP应用程序之间的物理显示资源的共享。

之所以选择这种面向可显示的(displayable-oriented)方法,是因为当前众多MIDP设备的显示和键盘的配置差异甚大。通过处理组件层、绘图、卷动和焦点转移,每个设备都提供了一致的观感。如果应用程序也须要关心这些细节,那么将很难获得可移植性。而且要平滑集成设备和它的本地应用程序的观感将会成为应用程序开发人员的沉重负担。

在lcdui应用程序接口中有Displayable的一个叫做Screens的子类。每个Screen 都是功能性的用户界面元素,它封装了特定设备的图形生成和用户输入处理。图8.1显示了用户界面类的阶层体系。

Displayable的子类有两种:

?Canvas:允许应用程序进行图形处理和输入处理的底层对象。

?Screen:封装了完整的用户界面组件(类Alert、List、TextBox、Form)的高层对象。

任何应用程序都可以将Screen和Canvas整合来展示一个集成后的应用程序接口。例如,在一个游戏程序中,List和Form可以被用来选择或者配置游戏的选项,而Canvas (或者GameCanvas)可以用于交互式的游戏组件。

Command类用于实现应用程序的特定操作。例如,在应用程序不同的Displayable 对象之间的导航就是用Command来实现的。Command的细节在第8.5节“命令

(Commands)”会作更详尽的描述。

底层用户界面

Canvas的底层用户界面API是为那些须要精确放置和控制图形元素的应用程序所设计的,同时它也被用于对底层输入事件的访问。典型的例子有游戏板、图表对象或者一幅图。通过底层的用户界面API,应用程序可以:

?控制显示的信息。

?处理如按键按下和释放等原始事件。

?访问具体的按键和其他的一些输入设备。

如果只使用标准特性,使用底层API编写的应用程序可以被移植;在任何可能的情况下,应用程序应该坚持使用底层API里面独立于平台的部分。这意味着应用程序不能直接假设任何未在Canvas中定义的键的存在。同样,应用程序应该查询显示设备的大小和它的色彩能力,然后做出相应的调整。可参考8.6.2节“适应特定设备用户界面样式”。

CustomItem类允许应用程序开发人员在Form上面使用底层的图形。CustomItem 提供了一种把底层和高层组件混合在单个Form中的方法。用CustomItem绘图类似于经由Graphics类Canvas绘图。

高层用户界面

高层用户界面API是为了那些客户组件运行在移动信息设备上的商业程序设计的。对这些应用程序而言,设备间的可移植性非常重要。为了达到这样的可移植性,高层的用户界面API使用了更高的抽象,而且极少提供观感(look and feel)的控制。对高层MIDP 用户界面API而言,这就使设备可以使用本地的用户界面观感。这意味着当一个应用程序使用高层API编写时,它的观感自动使用当前程序所运行的设备上的观感。对终端用户而言,这提供了无缝的用户交互:MIDP应用程序和设备上其他的(本地)应用程序以相同的方式工作。

这一节中介绍的高层用户界面组件和设备中内嵌的用户界面和应用程序行为一致。比较特别的是,当使用高层API时:

?在显示屏上的绘图由设备系统软件执行。应用程序并不定义组件的虚拟外观(例如形状、颜色等等)。

?导航、卷动和其他一些与用户界面组件的原始交互由设备来进行。应用程序不用了解这些交互。

?应用程序不能访问如个别按键等具体的输入机制。

高层的API通过Screen类及其子类提供,这些类包括:

?List:允许从一个预定义的选择集中选择。

?TextBox:是一个拥有可控制编辑方法的平坦文本编辑器。

?Alert:显示临时信息或者简单选择问询。

?Form:更宽泛的容器,允许显示多个密切相关的叫做Item的用户界面元素。

当带一个函数的screen不够时,就轮到Form类派上用场了。类Form被设计来保持少量紧密关联的用户界面项目(或者称Item)的。例如,一个应用程序也许有两个TextField或者一个TextField和一个简单ChoiceGroup。如果一个Form的所有元素不能完全显示在屏幕上,那么实现也许会让Form可卷动,当用户编辑它的时候自动扩展Item,或者使用一种弹出式的显示方式。每个Form都可以保持下面Item子类的组合:

?StringItem:用于静态文本显示,或者作为一个按钮或超链接。 ?ImageItem:用于静态图像显示,或者作为一个图像按钮或超链接。 ?TextField:用于带约束的文本类型输入。

?DateField:用于时间或者日期值的显示或输入。

?Gauge:用于进度条或者来自某个特定范围的数值输入。 ?ChoiceGroup:用于一个元素集合的单选或多择。

?CustomItem(MIDP 2.0):用于创建特定应用程序的Item;绘图通过底层Graphics 应用程序接口完成。

?Spacer(MIDP 2.0):用于为层创建空的空间。

虽然Form类允许任意组件组合的创建,开发人员应该牢记显示尺寸有限,尽量让Form 简单、功能单一。

2、简述高级事件处理机制

MIDP中的事件处理机制在J2ME用户图形界面开发中具有举足轻重的地位,本文将深入分析MIDP高级事件处理机制,本文提供的程序是新手学习不错的例子。在接下来的文章我会继续讲述低级事件处理机制。

MIDP的事件处理处理机制同样是采用回调的机制,你可以参考AWT的事件处理原理。在MIDP中分高级事件处理和低级事件处理,前者主要是针对高级UI,而后者主要是这对Canvas这样的低级UI的。不管怎样,我们必须首先介绍的是Command类,移动信息设备的输入主要来自于手机的键盘,导航则主要是由按钮来完成的,例如软键和导航键。Command类包装了动作的信息,但是并没有包括动作触发后应该做什么,这些是在CommanListener内实现的。看看Command的构造器吧

Command command = new Command("退出",Command.EXIT,1),构造器的参数分别表示按钮的标签,按钮的类型和优先级别。移动信息设备是根据后面两个参数对按钮进行布局的。

高级事件处理主要由两个接口来实现,一个是CommandListener,一个是ItemStateListener。在CommandListener中定义了方法commandAction(Command

cmd,Displayable disp),我们必须实现这个方法来完成事件处理,告诉应用程序当在disp界面下如果cmd按钮并按下的时候他应该去做什么。ItemStateListener中定义了方法itemStateChanged(Item item),应用程序通过他来得到在Form内的item内部状态发生变化的事件。用户在进行如下操作的时候都会触发这样的事件,调整交互性Guage、在TextField内输入或者修改内容、修改DateField、改变ChoiceGroup的状态。

尽管我们已经通过上面的介绍了解了事件处理的机制,但是你会发现我们进行用户界面导航的时候仍然非常的麻烦,因为这不是在浏览器上开发界面,我们能做的只能是通过Command来进行处理。下面我将通过一个例子来说明如何使用CommandListener 和ItemStateListener,这个例子有两个界面一个界面用来输入另一个用来显示用户的输入。在输入界面如果我们选择click这个ChoiceGroup,界面会出现另外一个文本输入,如果我们不选择他就不会出现。在这样一个程序中充分说明了如何使用上述两个接口来完成MIDP高级事件的处理,但是也暴露出了导航难得问题,在以后的文章中我会介绍如何使用MVC的设计模式来解决这个问题。下面是程序执行的界面抓图

3、掌握使用高级界面的基本控件

简述低级事件处理机制

在前面的文章中我们讲述了如何实现CommandListener和ItemStateListener接口来完成高级事件处理。但是来自于键盘输入的低级事件是不能由Command来完成的。你必须继承Canvas类并覆盖其中的方法来完成低级事件的处理。

通常低级事件的处理是为了满足游戏开发的需要,因为游戏开发相关的问题非常复杂。因此不在这里进行阐述,有兴趣的朋友可以和我索要相关的游戏开发资料。MIDP定义了如下键值在Canvas类内

KEY_NUM0

KEY_NUM1

KEY_NUM2

KEY_NUM3

KEY_NUM4

KEY_NUM5

KEY_NUM6

KEY_NUM7

KEY_NUM8

KEY_NUM9

KEY_STAR

KEY_POUND

这些都是按键基本值,当然有些手机是触摸屏的。事件的传递是通过如下方法来实现的。

protected void keyPressed(int keyCode)

protected void keyReleased(int keyCode)

protected void keyRepeated(int keyCode)

protected void pointerPressed(int x, int y)

protected void pointerDragged(int x, int y)

protected void pointerReleased(int x, int y)

protected void showNotify()

protected void hideNotify()

protected abstract void paint(Graphics g)

commandAction() method of the CommandListener interface

开发者应该继承Canvas类的同时覆盖相应的方法来实现低级事件的处理,低级事件的处理是连续的、串行的,在前面的事件返回之前后面的事件不会执行,当然也有例外,你可以参考API doc得到答案。下面是一个例子,它的功能就是在屏幕上显示出你按下键的键值,界面非常简单因此没有抓图。代码如下所示:

//LowLevelMIDlet.java

import javax.microedition.lcdui.Display;

import javax.microedition.midlet.MIDlet;

import javax.microedition.midlet.MIDletStateChangeException;

/*

* Created on 2004-6-24

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author P2800

*

* TODO To change the template for this generated type comment go to Window -

* Preferences - Java - Code Style - Code Templates

*/

public class LowLevelMIDlet extends MIDlet

{

private Display display;

private KeyCanvas keyCanvas;

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#startApp()

*/

protected void startApp() throws MIDletStateChangeException

{

// TODO Auto-generated method stub

display = Display.getDisplay(this);

keyCanvas = new KeyCanvas();

display.setCurrent(keyCanvas);

}

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#pauseApp()

*/

protected void pauseApp()

{

// TODO Auto-generated method stub

}

/*

* (non-Javadoc)

*

* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)

*/

protected void destroyApp(boolean arg0) throws MIDletStateChangeException

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH;偏移地址=bx=0100h (4)AX=3412H;偏移地址=bx=0100h (5)AX=4C2AH;偏移地址=bx+1100h=1200h (6)AX=7856H;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov[sp],ax (7)mov ax,bx+di

(8)mov20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[SI] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop[bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx;bx=0f79h pop[bx];DS:[0f79h]=8057h

有机化学课后习题参考答案完整版

目录lin 湛

第一章绪论 扼要归纳典型的以离子键形成的化合物与以共价键形成的化合物的物理性质。 答案: NaCl与KBr各1mol溶于水中所得的溶液与NaBr及KCl各1mol溶于水中所得溶液是否相同?如将CH4及CCl4各1mol混在一起,与CHCl3及CH3Cl各1mol的混合物是否相同?为什么? 答案: NaCl与KBr各1mol与NaBr及KCl各1mol溶于水中所得溶液相同。因为两者溶液中均为Na+,K+,Br-, Cl-离子各1mol。由于CH4与CCl4及CHCl3与CH3Cl在水中是以分子状态存在,所以是两组不同的混合物。碳原子核外及氢原子核外各有几个电子?它们是怎样分布的?画出它们的轨道形状。当四个氢原子与一个碳原子结合成甲烷(CH4)时,碳原子核外有几个电子是用来与氢成键的?画出它们的轨道形状及甲烷分子的形状。 答案: 写出下列化合物的Lewis电子式。 答案: 下列各化合物哪个有偶极矩?画出其方向。 答案: 根据S与O的电负性差别,H2O与H2S相比,哪个有较强的偶极-偶极作用力或氢键? 答案: 电负性O>S,H2O与H2S相比,H2O有较强的偶极作用及氢键。 下列分子中那些可以形成氢键? b. CH3CH3 c. SiH4 d. CH3NH2 e. CH3CH2OH f. CH3OCH3 答案: d. CH3NH2 e. CH3CH2OH 醋酸分子式为CH3COOH,它是否能溶于水?为什么? 答案:能溶于水,因为含有C=O和OH两种极性基团,根据相似相容原理,可以溶于极性水。 第二章饱和烃 卷心菜叶表面的蜡质中含有29个碳的直链烷烃,写出其分子式。 答案:C29H60 用系统命名法(如果可能的话,同时用普通命名法)命名下列化合物,并指出(c)和(d)中各碳原子的级数。答案: a. 2,4,4-三甲基-5-正丁基壬烷5-butyl-2,4,4-trimethylnonane b. 正己烷 hexane ,3-二乙基戊烷 3,3-diethylpentane -甲基-5-异丙基辛烷5-isopropyl-3-methyloctane e.2-甲基丙烷(异丁烷)2-methylpropane(iso-butane) ,2-二甲基丙烷(新戊烷) 2,2-dimethylpropane(neopentane)

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。 第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露

汇编语言 第二版 王爽 完整答案

第1章基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。 (2)1KB的存储器有1024个存储单元。存储单元的编号从0到1023。 (3)1KB的存储器可以存储1024*8个bit,1024个Byte。 (4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。(n^m的意思是n的m次幂) (5)8080、8088、80286、80386的地址总线宽度分别是16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次、80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。 第2章寄存器答案 检测点2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627 AX=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H add ax,ax AX=6246H mov bx,826CH BX=826CH mov cx,ax CX=6246H mov ax,bx AX=826CH add ax,bx AX=04D8H mov al,bh AX=0482H mov ah,bl AX=6C82H add ah,ah AX=D882H add al,6 AX=D888H add al,al AX=D810H mov ax,cx AX=6246H (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2 (1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。 (2) 有一数据存放在内存 20000H 单元中,先给定段地址为SA,若想用偏移地址寻到此单元。

三年级语文下册课后习题参考答案

第1课古诗三首 1.有感情地朗读课文。背诵课文。默写《绝句》。 〔名师来指导〕有感情地朗读古诗,要正确划分古诗的节奏,如:“迟日/江山/丽,春风/花草/香。”韵脚要读得响亮而稍长,读出古诗的韵味。如“竹外桃花三两枝,春江水暖鸭先知”的韵脚是“zhī”,朗读时韵脚要重读;还要把握古诗的情感基调,感受古诗的节奏美和韵律美。如朗读《三衢道中》时语速要平缓,语调要欢快些,读出诗人山行时的愉悦心情。 背诵古诗要讲究方法,尝试回忆背诵法:朗读到一定程度后,合上书试背,尝试对记忆内容进行回忆,这样能增强记忆的效果。 2.结合诗句的意思,想象画面,说说三首诗分别写了怎样的景象。 〔答案大家找〕《绝句》描写的是春回大地,万物苏醒,暖融融的太阳,将万里江山照耀得非常美丽;春风吹拂,绿草如茵,鲜花飘香,春意盎然。春风吹送着初放的百花和茵茵芳草发出的芳香。冻土融化,土地湿润,燕子正繁忙地飞来飞去,衔泥筑巢,日丽沙暖,鸳鸯在溪边的沙洲上静睡不动。 《惠崇春江晚景》描写的是早春的清晨,诗人信步江畔。迷离的晨雾尚未散尽,令人仿佛置身仙境。转过青青的竹林,一株桃树闪入眼帘,看那满树花苞,已有两三枝绽放笑脸。一阵“嘎嘎”的欢叫传入耳中,循声望去,三两只鸭子迈着蹒跚的步子,游过水边的嫩苇丛,在江水中自在游弋。江水转暖了,河豚上市的时节也到了! 《三衢道中》描写的是梅子泛黄的时候,正是雨季,却遇上天天晴朗的日子坐上小船,游到了小溪的尽头。回程正好走山路,看到的是一路绿荫浓浓并不比以前看到的少,而绿荫深处传来的声声黄鹂的啼鸣,更增添了不少游兴。 第2课燕子

1.朗读课文,边读边想象画面,并读出对燕子的喜爱之情。背诵第1~3自然段。 〔名师来指导〕(1)朗读指导:首先把课文读正确、读流利,然后想象画面,什么样的燕子在怎样的春日里飞行、停歇。朗读时要突出燕子的活泼可爱和春天的美景,读出作者对春天和燕子的喜爱之情。 (2)背诵时要先反复朗读课文,想象画面进行背诵。 2.读一读,记一记,再说几个这样的词语。 〔名师来指导〕这些词语都是偏正式词语,前面的词修饰后面的词。形式是:形容词+名词,即中心语被修饰语修饰。 〔答案大家找〕壮丽的山河伟大的人民尊敬的长辈漂亮的蝴蝶崎岖的道路明媚的春光金灿灿的果实俊俏的脸庞 3.找出课文中优美生动的语句,读一读,再抄写下来。 〔答案大家找〕(1)一身乌黑的羽毛,一对轻快有力的翅膀,加上剪刀似的尾巴,凑成了那样可爱的活泼的小燕子。 (2)二三月的春日里,轻风微微地吹拂着,如毛的细雨由天上洒落着,千条万条的柔柳,红的白的黄的花,青的草,绿的叶,都像赶集似的聚拢来,形成了烂漫无比的春天。 (3)小燕子带了它的剪刀似的尾巴,在阳光满地时,斜飞于旷亮无比的天空,叽的一声,已由这里的稻田上,飞到那边的高柳下了。 (4)另有几只却在波光粼粼的湖面上横掠着,小燕子的翼尖或剪尾,偶尔沾了一下水面,那小圆晕便一圈一圈地荡漾开去。 第3课荷花 1.有感情地朗读课文,注意读好下面的词语。背诵第2~4自然段。 〔名师来指导〕(1)朗读指导:结合对课文的理解,把自己想象成作者也来到公园看荷花,体验入画的美好心境。朗读时,要把荷花的优

软件工程课后习题(含答案)

第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。

《汇编语言与接口技术》答案习题解答(第三章)

解: mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示 解: mov ax, bufX cmp ax, bufY jge done mov ax, bufY done: mov bufZ, ax 解:

.model small .stack .data bufX dw -7 signX db .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp done next: mov signX,-1 done: .exit 0 end 解: mov dl,’2’ mov ax,bufX cmp ax,bufY je next1 dec dl next1: cmp ax,bufZ je next2 dec dl next2: mov ah,2 int 21h

编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。 ; .model small .stack .data b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数 sum db ;预留结果单元 .code .startup xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数 again: add al, b_data[si] ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .exit 0 end 解: lucase proc push bx mov bx,offset string cmp al,0 je case0 cmp al,1

课后习题参考答案

第五章 组合逻辑电路 1. 写出如图所示电路的输出信号逻辑表达式,并说明其功能。 解:(a )C B A Y 1⊕⊕=(判奇功能:1的个数为奇数时输出为1) BC AC AB C )B A (AB Y 2++=⊕+=(多数通过功能:输出与输入多数一致) (b )B A AB B )B A (A )B A (Y 1+=+++++=(同或功能:相同为1,否则为0) 2. 分析如图所示电路的逻辑功能 解:(a )11001B A B A Y ⊕+⊕= (判奇电路:1的个数为奇数时输出为1) (b ))A )A )A A (((Y 32102⊕⊕⊕=(判奇电路:1的个数为奇数时输出为1) (c )M A Y M A Y M A Y 321100⊕=⊕=⊕=(M=0时,源码输出;M=1时,反码输出) 3. 用与非门设计实现下列功能的组合逻辑电路。 (1)实现4变量一致电路。 (2)四变量的多数表决电路 解:(1) (a ) (b ) (a ) (b ) (c )

1)定变量列真值表: 2)列函数表达式:D C B A ABCD D C B A ABCD Y ?=+= 3)用与非门组电路 (2)输入变量A 、B 、C 、D ,有3个或3个以上为1时输出为1,输人为其他状态时输出为0。 1)列真值表 2)些表达式 3)用与非门组电路

4.有一水箱由大、小两台水泵ML 和Ms 供水,如图所示。水箱中设置了3个水位检测元件A 、B 、C ,如图(a )所示。水面低于检测元件时,检测元件给出高电平;水面高于检测元件时,检测元件给出低电平。现要求当水位超过C 点时水泵停止工作;水位低于C 点而高于B 点时Ms 单独工作;水位低于B 点而高于A 点时ML 单独工作;水位低于A 点时M L 和Ms 同时工作。试用门电路设计一个控制两台水泵的逻辑电路,要求电路尽量简单。 解:(1)根据要求列真值表(b ) (2)真值表中×对应的输入项为约束项,利用卡诺图化简(c )(d ) 得: (M L 、M S 的1状态表示工作,0状态表示停止) (3)画逻辑图(e ) (d ) (c ) (e ) (a ) (b ) B M C B A M L s =+=

软件工程习题答案参考

软件工程 绪论 1.什么是软件危机为什么会产生软件危机 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化工程化生产方法与早期的程序设计方法主 要差别在哪里 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于

一个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

第1章课后习题参考答案

第一章半导体器件基础 1.试求图所示电路的输出电压Uo,忽略二极管的正向压降和正向电阻。 解: (a)图分析: 1)若D1导通,忽略D1的正向压降和正向电阻,得等效电路如图所示,则U O=1V,U D2=1-4=-3V。即D1导通,D2截止。 2)若D2导通,忽略D2的正向压降和正向电阻,得等效电路如图所示,则U O=4V,在这种情况下,D1两端电压为U D1=4-1=3V,远超过二极管的导通电压,D1将因电流过大而烧毁,所以正常情况下,不因出现这种情况。 综上分析,正确的答案是U O= 1V。 (b)图分析: 1.由于输出端开路,所以D1、D2均受反向电压而截止,等效电路如图所示,所以U O=U I=10V。

2.图所示电路中, E

解: (a)图 当u I<E时,D截止,u O=E=5V; 当u I≥E时,D导通,u O=u I u O波形如图所示。 u I ωt 5V 10V uo ωt 5V 10V (b)图 当u I<-E=-5V时,D1导通D2截止,uo=E=5V; 当-E<u I<E时,D1导通D2截止,uo=E=5V; 当u I≥E=5V时,uo=u I 所以输出电压u o的波形与(a)图波形相同。 5.在图所示电路中,试求下列几种情况下输出端F的电位UF及各元件(R、DA、DB)中通过的电流:( 1 )UA=UB=0V;( 2 )UA= +3V,UB = 0 V。( 3 ) UA= UB = +3V。二极管的正向压降可忽略不计。 解:(1)U A=U B=0V时,D A、D B都导通,在忽略二极管正向管压降的情况下,有:U F=0V mA k R U I F R 08 .3 9.3 12 12 = = - =

软件工程课后参考答案

第一章 1.1什么是计算机软件?软件的特点是什么? 计算机软件是指计算机系统中的程序及其文档 软件的特点: ●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。 ●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可, 但其维护的工作量大。 ●软件的使用没有硬件那样的机械磨损和老化问题。 1.2简述软件的分类,并举例说明 1.系统软件 系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。例如:编译软件、操作系统。 2.支撑软件 支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开发环境。 3.应用软件 应用软件是特定应用领域专用的软件。例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。 1.3简述软件语言的分类,并举例说明。 1.需求定义语言 是用于书写软件需求定义的语言。例如:PSL/PSA。 2.功能性语言 是用于书写软件功能规约的语言,通常又称为功能规约语言。例如:广谱语言、Z 语言。 3.设计性语言 是用于书写软件设计规约的语言。例如:PDL。 4.实现性语言 也称为程序设计语言,是用于书写计算机程序的语言。例如:C、java、PROLOG、FORTRAN、COBOL、Modula。 5.文档语言 是用于书写软件文档的语言。通常用自然语言或半形式化语言书写。 1.4什么是软件工程? 软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。 1.5简述软件工程的基本原则。 软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。 1.选取适宜的开发模型 必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。 2.采用合适的设计方法

《软件》课后习题答案

第一章 1.什么是程序,程序有哪些特性? 程序:是一个用计算机语言描述的某一问题的解决步骤,它的表示是静态的。 特性:静态与动态属性,由程序语言抽象的符号表达,是对数据施行算法的过程,是分层嵌套的。2.软件有哪些特性? 特性:功能、性能相对完备的程序系统,具有使用性能的软设备,软件是信息商品,易大批量生产、成本低,是极具竞争性的商品,投入的资金主要是人工费,是只有过时而无“磨损”的商品。 3.什么是群件,目前常见的群件产品有哪些? 群件:是近几年开发的一种基于电子邮件的应急系统软件,它拓 宽了电子邮件的的内涵,涵盖了很多通信协调功能。目前常见的群件产品有:IBM公司的lotus Note、Microsoft公司的Exchange Server 、Novell公司的Group Wise等 4.计算机的软件是由哪几部分组成的,各自的作用是什么? 软件由:软件程序(解题步骤)+数据(描述事物的属性和状态)+文档(功能性能的说明性信息)组成。 5.什么是程序开发环境,常见的开发环境有那些? 程序开发环境:即现在作用到的编程语言,一般以一个集成环境的形式出现。 此环境中包含了语言编辑器,调试工具,编译工具,运行工具,图标图像制作工具等。 6.常见的Internet工具有哪些? Web服务器软件、web浏览器、文件传送工具FTP、远程访问工具Telnet、邮件软件、网络聊天、多媒体等。 7.操作系统的作用(功能)是什么? 1、处理器管理 2、存储器管理 3、设备管理 4、文件管理 5、作业管理。 8.文件系统足以支持程序运行,数据库的作用是什么? 克服文件系统的缺陷。 9.软件开发的核心是编制可运行的程序,还有比这跟重要的工作么? 系统分析和数据分析。 10.程序设计语言本身是软件么? 是,而且是系统软件。 第二章 1.程序设计语言有哪两种实现方式,各有什么优缺点? 方式一:编译(优:可进行优化,目标码效率很高。缺:费时)方式二:解释(优:可以逐句读入源代码,比较灵活,小巧。解释器不大,工作空间也不大,且能根据程序的执行情况决定下一步需做什么。缺:一句一句的难于优化,效率低) 2.结构化程序设计语言有那几种基本控制结构? 顺序、选择、循环。 3.为什么要引进过程,过程和函数的区别有哪些? 引进了过程或函数可以让程序语言更清晰,可以多次调用。使用过程还可以降低程序的复杂性,使程序结构变得清晰明了。过程是不带返回值,函数是带返回值。 4.什么是全局变量,什么是局部变量? 全局变量:出了程序便失去定义,作用范围,整个程序。 局部变量:局部的程序块中有定义。 5. 什么是指针变量? 指向数据的地址的变量。 6.过程参数传递的方式有哪几种,各有什么特点? 传值:优:很安全,不会改变全局变量的值。缺:占用双倍存储单元,传值时不能带回值。 引用:优:能带返回值,存储空间小。缺;局部有可能改变全局变量的值。

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

课后习题参考答案 (17)

第四章外科营养支持病人的护理 一、名词解释 1、肠内营养:是指经口或喂养管提供维持人体代谢所需的营养素的一种方法。 2、肠外营养:是指通过肠外(通常是静脉)途径提供人体代谢所需的营养素的一种方法。 3、体质指数:是目前评价机体营养状况及肥胖度最常用的指标。BMI=体重(kg)/身高(m)2。 二、选择题 1、下列哪一项不是肠外营养的并发症A A.腹泻 B.导管败血症 C.低血糖 D.高渗性非酮症性昏迷 E.肝功能损害 2.全胃肠道外营养的护理要点哪项不正确:C A.一切操作必须严格无菌 B.营养液可能存于4℃以下冰箱内 C.营养液可存放48h以上 D.不可在此静脉处采血、给药等 3.全胃肠外营养支持病人可能发生的最严重的代谢并发症是D A.高钾血症 B.低钾血症 C.肝功能异常 D.高渗性非酮症性昏迷 E.高血糖症 4.不需要用管饲饮食的病人是D A.手术后不能张口进食者 B.拒绝进食者 C.昏迷病人 D.高热病人需补充高热量流质时 E.晚期食管癌病人 三、简答题

1.试述营养评价的指标和营养支持的指征。 当病人出现下列情况之一时,应提供营养支持治疗:①近期体重下降大于正常体重的10%;②血清白蛋白<30 g/L;③连续7日以上不能正常进食;④已明确为营养不良;⑤可能产生营养不良或手术并发症的高危病人。 2.试述肠内营养、肠外营养的适应证和禁忌证。 答:肠内营养有营养支持指征、胃肠有功能并可利用的病人均可行肠内营养支持。包括: 1.吞咽或咀嚼困难如食管癌、破伤风、严重颌面部损伤等。 2.意识障碍不能进食如颅脑损伤、肝昏迷等。 3.消化道疾病稳定期如肠瘘、短肠综合征、炎性肠疾病、胰腺炎等。 4.高分解代谢状态如严重感染、烧伤、创伤或大手术等。 5.慢性消耗性疾病如结核、肿瘤等。 禁忌证 1.完全性机械性肠梗阻、麻痹性肠梗阻。 2.消化道活动性出血。 3.腹腔或肠道感染。 4.严重呕吐、腹泻、吸收不良。 5.短肠综合征早期、高流量肠瘘。 6.严重感染、创伤等应激状态的早期及休克状态。 肠外营养有营养支持指征、胃肠功能障碍或衰竭者可行肠外营养支持。包括: 1.胃肠道功能障碍如消化道瘘、胃肠道梗阻、短肠综合征、放射性肠炎等。 2.因疾病或治疗限制不能经胃肠道摄食或摄入不足如重症胰腺炎及化疗、放疗、手术前后等。 3.高分解代谢状态如严重感染、大面积烧伤或大手术等。

软件工程课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具

相关主题
文本预览
相关文档 最新文档