上机实验报告模板

2024-05-03

上机实验报告模板(精选6篇)

篇1:上机实验报告模板

C语言上机实验内容

第1次实验:

实验1 C程序的运行环境

实验报告:

四、实验项目

第2次实验:

FTP上的 实验2数据类型、运算符和表达式

书上的实验2 暂时不做

实验报告:2.4 完善程序【实验2.7】【实验2.8】,2.5 改错程序【实验2.10】,2.6 自己练习.1第3次实验:

实验书上:实验2数据类型、运算符和表达式

请填写电子实验报告

第4次实验:

FTP上的 实验3 顺序和选择结构程序设计

请填写电子实验报告

第5次实验:

实验书上:实验3顺序和选择结构程序设计

实验报告:P12:2代码,(1)~(9)运行结果及分析

P14:四:

1、2第6次实验:

FTP上的 实验4 循环结构程序设计(1)

实验报告:

4.4 完善程序【实验4.5】【实验4.6】

4.5 改错程序【实验4.7】

4.6 自己练习

1.编写程序,从键盘输入一行以回车结束的字符,统计并输出输入字符的个数。

第7次实验:

实验书上:实验四

第8次实验:

FTP上的实验5 数组程序设计(1)

实验报告:

6.4 完善程序

6.5 改错程序

6.6 自己练习1、2

第9次实验:

实验书上实验5

第10次实验:

FTP上的 实验8 函数程序设计(1)

8.4 完善程序

8.5 改错程序

8.6 自己练习

1.编写程序,输出1~100之间各位数的乘积大于各位数的和的数。要求判断各位数的乘积大于各位数的和用函数实现。

3.编写程序,输出100以内的正整数中包含数字3,5,7中的一个的数。要求判断一个数中包含数字3,5,7中的一个的数用函数实现。

第11次实验:

实验书上 的

篇2:上机实验报告模板

一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)

熟悉MATLAB 得5 个工作窗口。

(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)

② Workspace(工作空间窗口)

③ mand History(命令历史记录窗口)

④ Current Directory(当前目录窗口)

⑤ Help Window(帮助窗口)

(1)命令窗口(mand Window)。

在命令窗口中依次输入以下命令:

>〉x=1 〉> y=[1 2 3

4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =

9t1 =

t2 =

t3 =

1 t4 =

t4 =

0

0

0

0

0

0

0

0

0

0

0

思考题: ①

变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。

答:(1)变量声明

1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。

脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:

>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。

如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :

始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写

试说明分号、逗号、冒号得用法。

答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表

冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③

l inspace())

称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:

>>help linspace

数 说明函数 ones())、、zero s()、eye()得用法。

答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;

(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空

间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。

① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。

② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。

③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。

〉〉save my_var、mat

④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量

观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。

>〉load my_var、mat

⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。

打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。

① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。

② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。

③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。

④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。

(4)

当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。

(5)帮助窗口(Help Window)。

单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。

① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。

② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。

2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)

〉>format pact

〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。

〉〉format long >>pi

〉〉format short >〉pi

〉>format long 〉〉pi

>>format + 〉〉pi

〉>—pi

3、变量得搜索顺序 在命令窗口中输入以下指令:

>>pi

〉>sin(pi);

>>exist(’pi”)

〉>pi=0;>〉exist(’pi“)

>〉pi

〉〉clear pi 〉>exist('pi’)>>pi

思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416

实验二

MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。

(2)矩阵得创建、引用与运算。

(3)

多维数组得创建及运算。

(4)字符串得操作。

三、实验步骤 1、向量得生成与运算 1)

向量得生成 直接输入法: A =

>〉 B=[1;2;3;4;5]

B =

5  冒号生成发:

〉〉 A=1:2:10 ,B=1:10,C=10:—1:1

A =

B =

C =

10

1  函数法:

Linspace()就是线性等分函数,logspace()就是对数等分函数。

>〉 A=linspace(1,10),B=linspace(1,30,10)A =

Columns 1 through 91、0000

1、0909

1、1818

1、2727

1、3636

1、4545

1、5455

1、6364

1、7273

Columns 10 through 181、8182

1、9091

2、0000

2、0909

2、1818

2、2727

2、3636

2、4545

2、5455

Columns 19 through 272、6364

2、7273

2、8182

2、9091

3、0000

3、0909

3、1818

3、2727

3、3636

Columns 28 through 36

3、4545

3、5455

3、6364

3、7273

3、8182

3、9091

4、0000

4、0909

4、1818

Columns 37 through 454、2727

4、3636

4、4545

4、5455

4、6364

4、7273

4、8182

4、9091

5、0000

Columns 46 through 545、0909

5、1818

5、2727

5、3636

5、4545

5、5455

5、6364

5、7273

5、8182

Columns 55 through 63

5、9091

6、0000

6、0909

6、1818

6、2727

6、3636

6、4545

6、5455

6、6364

Columns 64 through 72

6、7273

6、8182

6、9091

7、0000

7、0909

7、1818

7、2727

7、3636

7、4545

Columns 73 through 81

7、5455

7、6364

7、7273

7、8182

7、9091

8、0000

8、0909

8、1818

8、2727

Columns 82 through 908、3636

8、4545

8、5455

8、6364

8、7273

8、8182

8、9091

9、0000

9、0909

Columns 91 through 999、1818

9、2727

9、3636

9、4545

9、5455

9、6364

9、7273

9、8182

9、9091

Column 100

10、0000

B =

Columns 1 through 91、0000

4、2222

7、4444

10、666713、8889

17、1111

20、333323、555626、7778

Column 1030、0000 >> A=logspace(0,4,5)A =

10

100

1000

10000 练习:

使用 logspace()创建1—4得有 10 个元素得行向量。

答案:

>〉 A=logspace(1,10,4*pi)

A =1、0e+010 *

Columns 1 through 9

0、0000

0、0000

0、0000

0、0000

0、0000

0、0000

0、0001

0、0005

0、0035

Columns 10 through 120、0231

0、1520

1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。

〉〉 A=[1 2 3 4 5],B=3:7,A =

B =

>〉 AT=A”,BT=B“, AT =

BT =

>〉 E1=A+B, E2=A-B

E1 =

10E2 =

—2

—2

—2

〉〉 F=AT—BT, F =

-2

—2

〉〉 G1=3*A, G2=B/3, G1 =

12

15

G2 =1、0000

1、3333

1、6667

2、0000

2、3333  向量得点积与叉积运算。

〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)

E1 =

55

〉〉 E2=A*BT

E2 =

〉〉 clear >> A=1:3,B=3:5,A =

B =

〉〉 E=cross(A,B)

E = -2

—2 2.矩阵得创建、引用与运算

1)矩阵得创建与引用

矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。

 直接输入法:

〉〉 A=[1 2 3;4 5 6]

A =

〉〉 B=[ 1 4 75 86 9 ] B =

〉> A(1)

ans =〉〉 A(4:end)

ans =

6 〉〉 B(:,1)ans =

2〉> B(:)ans =

8>〉 B(5)

ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =

10

12

13

16 >〉 B=A(1:3,2:3)

B =

10

11 〉> C=A([1 3],[2 4])

C =

10

12 〉〉 A([1 3;2 4])ans =

5 函数法: 〉〉 A=ones(3,4)A =

>〉 B=zero(3)

??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =

0

0

0

0

0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =

0

0

0

0 >> D=magic(3)D =

拼接法 〉〉 clear 〉> A=ones(3,4)A =

>〉 B=zeros(3)

B =

0

0

0

0

0

0

0 >〉 C=eye(4)C =

0

0

0

0

0

0

0

0

0

>〉 D=[A B] D =

0

0

0

0

0

0

0 >〉 F=[A;C] F =

0

0

0

0

0

0

0

0

拼接函数与变形函数法:

〉〉 clear 〉> A=[0 1;1 1] A =

0

〉> B=2*ones(2)

B =

>> cat(1,A,B,A)ans =

0

0

>〉 cat(2 A,B,A)

??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =

0

0

1 >〉 repmat(A,2,2)ans =

0

0

0

0

〉> repmat(A,2)ans =

0

0

练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为

得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C

与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。

答案 :

>〉 A=ones(3,4)

A =

1 〉〉 B=zeros(3,3)B =

0

0

0

0

0

0

0

0 >〉 C=eye(3)

C =

0

0

0

0

>〉 D=magic(3)D =

>> E=[C;D] E =

0

0

0

0

0

〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =

0

0

〉〉 G=respace(E,3,4)

??? Undefined mand/function “respace’、〉>

G=respace(F,3,4)

??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)

G =

0

0

0

0

〉〉 H=repmat(G,2,2)H =

0

0

0

0

0

0

0

0

0

2)矩阵得运算  矩阵得加减、数乘与乘法

已知矩阵: >> A=[1 2

-1], A =

-1 >〉 B=[-1 0

2] B =

0

>〉 A+B ans =

1 〉〉 2*A ans =

-2 >〉 2*A-3*B ans =

-8 〉〉 A*B ans =

4-4

—2  矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =

0

>> A1=inv(A)A1 =

—1/3

2/3

-1/6

-2

0

4/3

-2/3

1/6

>〉 A*A1

ans =

0

0

0

0

0

矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =

b =

d =

>> c1=b*inv(a),c2=b/a c1 =

6/7

3/7

-4/7

c2 =

6/7

3/7

-4/7

>> c3=inv(a)*d, c4=ab c3 =

2/7

-4/7

??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =

2/7

-4/7

c4 =

2/7

-4/7

练习: 按下列要求求出各种得矩阵运算得值

求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;

矩阵得指数与对数

矩阵得提取与翻转 答案:

〉〉 A=[6 3

4 3

—2 5 7 —4

8-1 —3 —7] A =

-4

-1

—3

—7 〉> B=rank(A)B =〉> rb=rank(A)

rb =>> [X,Lamda]=eig(A)

??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4

-2 5 7

—1-3] C =

—2

—1

—3 >> [X,Lamda]=eigs(C)

X =0、8013

-0、1094

-0、1606

0、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

0

-3、2928

0

0

0

1、5602 〉〉 [X,Lamda]=eig(C)

X =

0、8013

—0、1094

—0、16060、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

-3、2928

0

0

0

1、5602 〉> [X,Lamda]=eig(C)

X =

0、8013

—0、1094

-0、1606

0、3638

—0、6564

0、8669

0、4749

0、7464

—0、4719 Lamda =9、7326

0

0

0

—3、2928

0

0

0

1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =

33

34

〉〉 E=sqrtm(C)E =

2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i

-0、5815 + 1、6244i

2、1005-0、8405i

1、7620-2、0970i

1、9719 - 1、8471i

-0、3017 + 0、9557i

0、0236 + 2、3845i >> F=expm(C)F =

1、0e+004 *

1、0653

0、5415

0、6323

0、4830

0、2465

0、2876

0、6316

0、3206

0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with

nonpositive real eigenvalues、A non-principal matrix

logarithm is returned、〉 In funm at 153

In logm at 27 G =

1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i

1、1938 + 2、8123i0、3658 — 1、4552i

—0、5514-3、6305i

-0、0748 - 3、1978i

0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =

-2

—1

>> I=triu(C)I =

0

0

-3 〉〉 J=tril(C)

J =

0

0

-2

0

-3 >> K=diag(C)K =

6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =

10

13

16

14

17

12

15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)

=

T1(:,:,2)=

0

0

0

0

0

0

0 〉> T2=ones(3,3,2)

T2(:,:,1)=

1 T2(:,:,2)=

1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

T3(:,:,1)=

T3(:,:,2)=

10

13

16

17

15T4(:,:,1)

=

T4(:,:,2)=

2)多维数组得创建

数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。

〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =

C2 =

0

>> C3=A、*B,C4=B、/A,C5=A、B C3 =

6 C4 =

1、0000

0、5000

0、3333

0、2500

0、2000

0、1667 C5 = 1、0000

0、5000

0、3333

0、2500

0、2000

0、1667

关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)

I =

0

0

0

1 C6 =

6 〉〉 A1=A-3,I2=A1&A A1 =

—2

—1

0

I2 =

0

〉〉 I3=~I I3 =

0

0 4.字符串得操作 1)字符串得创建

>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =

13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =

101

32

65

84

66 〉> CS2=double(S1)CS2 =

108

105

101

32

77

65

76

>> char(CS2)

ans = Ilike MATLAB >> setstr(CS2)

ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>

C=C(:)’;〉>

S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三

MAL TAB B 数值运算 一、实验目得

掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。

二、实验内容

1)

多项式运算。

2)

多项式插值与拟合。

3)

数值为积分。

4)

结构数组与细胞数组。

三、实验步骤

1、多项式运算

1)

多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)

多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。

〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =

0

0

3s2 =

—5

s3 =

—3

18 3)

多项式得乘、除法分别用函数 conv与得 deconv实现。

〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)

>> s4=deconv(s3,s1)答;s1 =

11 s2 =

s3 =

—29

65

s4 =

7 4)

多项式求根用函数roots。

>〉 s1=[2 4 2] >> roots(s1)

答;s1 =

ans =

—1

5)

多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)

〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =

-3 ans =

90 x =

10 y =

Columns 1 through 8

193

352

579

886

1285

Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =

4 r =

0

0

-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。

附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7

1

分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。

〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)

%一阶拟合 >> y1=polyval(p1,9、5)

%计算多项式 P1 在x=9、5 得值 答;x =

9y =

Columns 1 through 8

32

70

142

260

436

682

1010

Columns 9 through 10

1342

1960 p1 =

200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分

1)

差分使用 diff 函数实现。

>〉 x=1:2:9 〉〉 diff(x)答;x =

ans =

2 2)

可以用因变量与自变量差分得结果相处得到数值微分。

〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;

3)

cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。

〉〉 x=ones(1,10)

>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =

ans =

9ans =

1、9998 ans =

1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5

34 41 45 46 Y2 44 59 7

18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)

机构数组得创建. 〉> student、number=’20050731001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。

>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =

1x2 struct array with fields:

number

name 2)

机构数组得操作。

〉> student(1)、subject=[]

%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)

〉>fieldnames(student)

〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)

%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;

%比较与上一条语句就是否效果一样 答;student =

1x2 struct array with fields:

number

name

subject student =

1x2 struct array with fields:

number

name

subject

score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。

3)

细胞数组得创建。

〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};

%直接创建

〉〉 B(1,1)={’Hello world”};

%由各个细胞元素创建

>> B(1,2)={magic(3)};

>〉 B(2,1)={[1 2 3 4]};答

或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)

细胞数组得操作。

〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})

答;ans1 =

’How are you!’ ans2 =

’How are you!’

Name

Size

Bytes

Class

Attributes

ans1

1x1

84

cell

ans2

1x1

84

cell

A{1,1} = How are you!

A{2,1} =

A{1,2} =

A{2,2}{1} = cell a1 =a2 = How are you!a3 =

实验四

MA LT AB B 符号运算

一、实验目得

掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。

二、实验内容

1)

符号变量、表达式、方程及函数得表示。

2)

符号微积分运算.

3)

符号表达式得操作与转换.4)

符号微分方程求解.三、实验步骤1、符号运算得引入

在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')

>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建

1)

使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。

>〉 A=sym(”1’)

%符号常量 〉〉 B=sym(’x’)

%符号变量 >> f=sym(’2*x^2+3*x-1’)

%符号表达式 >> clear >> f1=sym(“1+2”)

%有单引号,表示字符串 >〉 f2=sym(1+2)

%无单引号 >〉 f2=sym(1+2)

〉> f4=sym(“2*x+3’)

%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)

答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。

2)

使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建

>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算

1)

符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。

〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =

35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [

2*a*b+6*b,b^2+3*a] C2 = [

10*a,a*b] [ 2*b^2,3*a] C3 = [

2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [

2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [

1/2, 3/a] 2)

符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。

>〉 a1=sym(’2*sqrt(5)+pi')

〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)

>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)

〉〉 c2=vpa(b,56)

答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50)

Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、6372631285535581572696

c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。

3)

符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)

>〉 b1=double(a1)

%符号转数值 >> b2=isnumeric(b1)

%判断就是否转换成了数值 >> a2=vpa(a1,70)

%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =

1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换

1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。

输入以下命令,观察并分析结果。

>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)

>〉 findsym(f)

〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)

>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =

x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。

①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。

>〉 pretty(f1)>〉 pretty(f2)

答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉

pretty(f1)pretty(f2)

exp(-t)

exp(-t)

x

+ exp(—t)

x

+(x

+ 1)

x +(x

+ 1)exp(—t)

exp(—t)

exp(-t)

(x

+ x

+ 1)exp(-t)+(x

+ x

+ 1)x 注意与直接输出得 f1 与 f2 对比。

③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))

答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x

+ x

- 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

- 792 x

+ 495 x

- 220 x

+ 66 x

- 12 x ④ 因式分解(factor)。将表达式做因式分解。

>> syms x;f=x^12—1; 〉> pretty(factor(f))

答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x

12

11

+ x

— 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

— 792 x

+ 495 x

— 220 x

+ 66 x

- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))

(x-1)(1 + x

+ x)(1 + x)

(1 — x + x)(1 + x)(x

— x

+ 1)⑤化简(simple或 simplify)。

将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)

答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换

subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')

%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分

1)

求极限函数得调用格式 limit(F,x,a)

%返回符号对象 F 当 x→a 时得极限 limit(F,a)

%返回符号对象 F 当独立变量*→a 时得极限

limit(F)

%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)

%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)

%返回符号对象F当 x→a 时得左极限 例一:

〉〉 clear >> f=sym(“sin(x)/x+a*x”)

>〉 limit(f,“x’,0)

%以 x 为自变量求极限 >> limit(f,”a’,0)

%以 a 为自变量求极限 >> limit(f)

%在默认情况下以 x 为自变量求极限 >> findsym(f)

%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));

〉〉 limit(f,n,inf)

%求 n 趋于无穷大时得极限

2)

求积分函数得调用格式 int(F)

%求符号对象 F 关于默认变量得不定积分 int(F,v)

%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)

%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)

%求符号对象 F 关于指定变量得从 a 到b得定积分 3)

求微分方程得调用格式 diff(F)

%求符号对象 F 关于默认变量得微分 diff(F,v)

%求符号对象 F 关于指定变量 v 得微分 diff(F,n)

%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解

1)常规方程求解函数得调用格式 g=solve(eq)

%求方程(或表达式或字串)eq 关于默认变量得解

g=solve(eq,var)

%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)

%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:

① seq=solve(“a*x^2+b*x+c')

② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)

⑤sym x a b c

eq=a*x^2+b*x+c seq=solve(eq)

2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。

常微分方程求解函数得调用格式:

r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。

② 常微分方程解得默认变量为 t。

③ 第二式中最多可接受得输入式就是 12 个。

④ 微分方程得表达方法。

在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。

边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。

例一 求微分方程得通解、练习:(1)求。

(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解

(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。

实验五

MATLA B 程序设计

一、实验目得

掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容

(1)M 文件得编辑。

(2)程序流程控制结构。

(3)子函数调用与参数传递。

(4)局部变量与全局变量。

三、实验步骤1、M M 文件得编辑

选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。

s=0;for n=1:100

s=s+n;end s 答;s =

5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。

function s=expl2(x)

s=0;for n=1:x

s=s+n; end

保存好文件后,在命令窗口输入

>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。

〉〉open conv

%打开 conv 函数 2 2、程序流程控制结构

1)

for 循环结构

>〉 for n=1:10 n end 答;n =n =n =n =n =n =

6 n =n =

n =n =

另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n

%循环得次数为向量 n 得列数 i end 答;i =

10 i =i =i =i =i =2)

while 循环结构 在命令窗口输入:

clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。

练习:

(1)请把 exp2、m函数文件用 while 循环改写。

(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)

if-else—end 分支结构

if—else—end 分支结构有如下 3 种形式。

(a)

if

表达式 语句组 1 end(b)

if

表达式 语句组 1 else 语句组2 end(c)

if

表达式 A

语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else

语句组 n end 4)

switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。

%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)

error(’please input n');

n=input(“n=’);end switch mod(n,2)

case 1

A=’奇数'

case 0

A=’偶数” End 答;n=input('n=’); if isempty(n)

error('please input n’);

n=input(“n=’); end switch mod(n,2)

case 1

A=”奇数“

case 0

A=”偶数' end n=1 A = 奇数 3、子函数与参数传递

有一个函数,试编写实现该函数得函数文件.function g=expl4(x)

%主函数 g=0;for n=1:x

g=g+fact(n);

%调用子函数 end

function y=fact(k)

%子函数 y=1; for n=1:k

y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量

篇3:上机实验报告模板

目前我校公共计算机课程是由学生自由选课、大班教学和实验,同一教学班的学生来自于不同的专业,这就给日常考勤,尤其是实验课的日常考勤与管理带来了十分棘手的问题。为加强实验课的管理,切实、严格地履行考勤制度,我们设计了上机实验课考勤系统,让学生在客户端上签到和签出,以实现考勤目的。

考勤系统要求C/S框架,除了界面友好,操作简便之外,更加要求签到的安全性,最大化地规避以下现象:无意或故意代替他人签到、同一客户端二人或多人签到、客户端因死机或意外重启或学生因故换机而致使重新签到时冲销最初的签到时间等。在服务器端,要求提供给授课教师便利的查询、添加、删除、导入和导出等等数据操作。

2 程序功能

2.1 客户端界面及功能

客户端仅有一个类ClsClient处理与服务器端的连接及信息沟通,以及一个窗体FrmClient。

2.1.1 界面

如图1所示。

2.1.2 功能特点

(1)首次启动时,通过InputBox对话框填入服务器端设定的IP地址,并自动向服务器端添加注册客户端。

(2)填入学号进行“上课签到”或“下课签出”。在点击“上课签到”按钮时会要求确认,以免误填学号而代了他人签到。签到后窗体界面随即自动最小化至系统托盘区,不占使用空间,且学号输入框也自动改为只读模式,直到“下课签出”后复原。

(3)学号框中填入reset进行服务器IP及客户端注册的更新。

(4)窗体最小化至系统托盘区。

2.2 服务器端界面及功能

2.2.1 主界面

如图2所示,以一个SplitContainer控件将窗体切分为左右两个大小可调的区域,左区域为“课程设定与广播消息”,右区域为客户端图示,配有右键快捷菜单。

2.2.2 菜单系统

(1)教师操作

教师管理:增加和删除任课教师。课程管理:对实验课程进行查询、添加和删除等操作。节次时间:设置上课作息时间。

(2)学生信息管理

主要是对学生信息进行添加、删除和修改等查询操作。菜单项包括单个添加学生、批量导入学生、单个(或批量)删除学生、修改学生信息以及查询/导出信息。查询/导出信息可以通过筛选条件将指定班级课程的全程考勤记录生成报表的形式。

(3)客户端管理

机器信息:查询客户端的网卡物理标识、计算机名、当前IP地址以及当前使用学生的学号等信息。

广播消息:对于所有客户端发送文本消息。

全部关机:远程关闭所有客户端。

刷新:刷新客户端的连接状态。

2.2.3 功能介绍

从以上菜单系统可以看出,服务器端的主要功能分为两大类型:

(1)联接中枢:与各客户端建立联接,并予以信息反馈和指令下达。

(2)数据库操作:对于客户端机器、学生、教师及授课等信息的处理都是以数据库的操作为基础,而本系统的最终目标——导出一个学期的各实验课考勤总表也是对于数据库的操作。

3 关键功能的实现

3.1 数据库的设计

本系统采用Access数据库,其中主要包含5个数据表,分别是Computers(客户端机器信息表)、学生、授课、节次时间以及考勤,数据表简明关系图如3所示。

3.2 类

本系统在窗体之外,还创建了若干个类,简要说明如下:

在模块PublicMod中定义了几个全局变量及一个全局过程FillCourses(ByVal lv As ListView)。

客户端类ClsClients处理客户端事宜,主要处理数据表Computers,包括检查请求连接的客户端是否注册,客户端机器信息查询及连接状态更新等。

数据库类ClsDB负责数据库操作的SQL语句处理。

命令处理类ClsSvrProcess除了连接侦听和广播消息外,主要处理与客户端的信息沟通。

教师类ClsTeacher只是进行教师添加与删除等简单的操作。

学生类ClsUser除了接收和发送消息外,主要处理学生上课签到时的确认及下课签出程序。

3.3 服务器与客户端的连接及消息处理

系统服务器端启动后便通过ClsSvrProcess置于侦听状态。

在FrmMain_Load事件中:

在ClsUser类中的接收与发送消息:

主客端的信息沟通与消息处理过程如下:

服务器端接收消息后先判断该客户端是否存在:

如不存在,则于ClsSvrProcess之OnLineReceived(ByVal sender As Object,ByVal data As String)过程中注册

随后该过程处理与客户端的信息沟通:

客户端相应的信息沟通处理:

服务器端ClsUser中签到资格确认:

3.4 批量导入学生信息

如图4所示。

通过OpenFileDialog控件打开待导入的源文件(.mdb或xls格式文档),关键代码如下:

4 结语

本考勤系统客户端界面简洁,只需简单的一、二步操作,即可完成上课签到,或重新初始注册;客户端最小化至系统托盘区,且学号输入框在签到后、签出前始终置于只读模式,这些都充分体现了本系统的界面友好、操作简便、签到安全,有效地避免了种种签到作弊的可能。服务器端也为教师提供了极为便利且极为实用的种种数据操作。

本程序目前的服务器端实质上是一个教师机的功能,还有一些功能有待扩展,如服务器-教师机-客户端三层架构、教师机对客户端学生操作的即时监视、教师机的报表打印等。

参考文献

[1]李敏业,王颖.Visual Basic+Access数据库应用实例完全解析(附光盘)[M].北京:人民邮电出版社,2006.

[2]邵鹏鸣.Visual Basic.NET面向对象程序设计——基础、设计、实现与应用程序开发[M].北京:机械工业出版社,2006.

篇4:上机实验报告模板

关键词:上机实验 同步协同上机实验系统 实验评价 学习评价

中图分类号:G434文献标识码:A文章编号:1673-8454(2007)11-0017-03

一、引言

上机实验是高校实践教学的重要环节。以同步协同上机实验系统作为支撑环境的上机实验打破了教师规定实验题目和步骤,学生按部就班进行实验的传统模式。基于同步协同上机实验系统的上机实验完全以学生为主体,教师只起组织和引导作用;实验内容完全开放;学生在交流和协作中,进行研究性自主学习;实验学习成绩的评定不再单纯根据实验结果或实验报告,实现了实验学习评价的多元化和智能化。因此,研究基于同步协同上机实验系统的实验学习评价对于提高上机实验的教学质量非常重要。

二、同步协同上机实验系统简介

同步协同上机实验系统的目标是适应不同层次学生的需要,实现教学内容的开放性;促进学生之间交流和协作,以及教学双方的有效交流与互动;实现实验学习评价的多元化和智能化。系统的功能和模块结构划分如图1所示,包括协同上机实验、实验成绩管理、实验教学管理和系统管理四个模块。

采用同步协同上机实验系统作为支撑环境的上机实验过程一般是:(1)学生根据课程的进度预约实验;预约成功后,得到实验的时间、地点、目标要求和可选的实验任务;然后收集资料,自主学习准备实验。(2)在上机实验时,学生首先登录同步协同上机实验系统,协同完成实验任务,评价其他同学的实验方案、算法或运行结果;遇到问题可到讨论区求助;教师引导、辅助学生完成实验任务,评价实验任务。(3)在上机实验结束时,学生提交自我评价,系统辅助生成实验报告,并结合同学评价和教师评价成绩得出学生的上机实验成绩。

这种上机实验确定了具体的实验教学目标,并分解出了用于实验考核的基本实验教学目标。另外,根据实验目标设计了多项实验任务,供学生选择和修改;每项实验任务能够达到一项或多项实验目标。

三、上机实验学习评价的目的、功能和特点

上机实验学习评价是实验教学环节的重要组成部分,其目的在于促进学生学习。因此,上机实验学习评价旨在增强学生对于操作技能和理论知识的掌握和应用水平的了解;激励学生上机实验的积极性和主动性;端正学生的实验态度。基于同步协同上机实验系统的上机实验学习评价具有以下特点:

1.具有人文特性

基于同步协同上机实验系统的实验学习评价是体现“以人为本”的主体性评价,即“人文性”评价。因此,能最大限度地激发学生的内部动力,促进学生的自我发展。

2.形成性评价与总结性评价相结合

对学习结果的评价有助于帮助学生总结实验过程中的多种收获与体验,强化学生通过实验掌握的知识;而对学习过程的评价,可在不同程度上激发学生上机实验的积极性和主动性,帮助学生不断调整和改善实验过程,保证上机实验的学习质量。因此,不仅要重视学生的上机实验结果,而且要注意学生上机实验的整个过程。另外形成性评价应贯穿于上机实验的全过程,注重成绩背后的动机取向和努力程度,反映学生的操作能力、知识应用能力、协作能力、组织能力和创新能力等,以促进各种能力的培养。在不同课程的上机实验中,还应注重形成性评价与总结性评价各自权重的探索。

3.评价主体的多元性

评价是一种价值判断过程,这种价值是多元的。在评价情境中,不论评价者还是被评价者,不论教师还是学生,都是平等的主体。评价的主客体也应是多元的。[1] 因此基于同步协同上机实验系统的实验学习评价包括互相评价、自我评价、小组评价和教师评价四个部分。

互相评价是指学生在上机实验过程中,参考或验证其他同学的实验方案、算法和运行结果后给出的评价。其目的在于发现其他同学的优点及促进同学间的交流。

自我评价包括在实验准备阶段和在上机实验过程中的自我评价,以及在上机实验结束时提交的自我评分。

小组评价是指组长对于组内成员的评价。协同任务组是学生自发形成的;任务组的学生可以相互交流与协作共同完成一个任务;一个学生可以参加多个任务组。

教师评价指辅导教师在实验过程中,对于实验任务或学生的评价。对于每个学生和实验任务,教师评价不是必需的,其目的是通过评价引导上机实验的进行。

4.评价手段的数字化

在基于同步协同上机实验系统的上机实验中,学生通过同步协同上机实验系统进行交流与协作。辅导教师可以面对面辅导,也可以通过同步协同上机实验系统完成应答提问、删除与实验无关的讨论、删除不符合实验要求的任务和发布公开消息等辅导任务。因此大部分实验教学活动都基于同步协同上机实验系统完成,数字化信息是上机实验的重要载体。评价的表达以及数据的收集和整理呈现出数字化特征。

5.评价方式的开放性

基于同步协同上机实验系统的上机实验内容是开放的;不仅可以选择和修改,还可以自己设计实验任务。实验学习评价的内容也具有适当的开放性,而且评价既要适合于课程,又不局限于课程,能够体现学生在上机实验中的能力培养。通过评价不仅促进学生的学习,还要促进学生学会如何学习。

6.评价形式和标准的多样化

相对于一元智力理论和智力评价理论,多元智能理论能够更为准确地描绘和评价人类能力。[2] 实验教学在培养学生的动手能力和独立分析问题、解决问题的能力等方面起着决定性的作用。[3] 这决定了上机实验评价必须对学生进行多层面能力的考核,因此,评价形式和标准应该是多元的。在基于同步协同上机实验系统的上机实验中,可以针对实验任务的设计、实验方案的设计、程序运行情况、提出的问题、以及解决的问题进行多种形式的评价,各种评价贯穿于整个实验过程中。实验学习评价改变了单纯用实验数据结果和实验报告来衡量学生的成绩的方式,注重学生个体的实际情况和差异性。

四、上机实验评价的实施

同步协同上机实验系统作为上机实验的支撑环境,对上机实验的评价提供全方位的支持。基于同步协同上机实验系统的实验学习评价实施,一般要经过以下五个环节:

1.确定实验目标和可选的实验任务

实验目标作为实验评价的基础,根据实验教学大纲确定。为便于评价,实验目标必须详细、明确而具体。在此基础上,从中分解出基本目标。基本目标指学生通过实验最低限度掌握的知识点和基本技能或具备的基本能力。

实验教师根据实验目标设计多项实验任务,每项任务对应一个或多个实验目标。学生可以从中选择或修改实验任务,也可以自己设计实验任务;但是实验任务与实验目标的对应关系必须合理,否则会影响评价结果,甚至被辅导教师删除。

2.构建实验学习评价的评价模型

评价模型作为评价的依据和前提,应围绕实验目标的完成和多层次能力的培养来构建,旨在促进学生的发展。评价模型主要包括评价指标、质量等级和评分方法三个部分。评价指标反映达到实验目标和具备能力的各个方面;质量等级描述评价指标在质量上从好到差的档次,一般为优、良、及格和不及格;评分方法指整体评分和分项评分的计算方法,包括各个评价指标的标准分值。评价模型由实验教师根据学科特点和上机实验经验,与学生共同商定。在与学生共同商量的过程中,让学生掌握每项指标的含义,以及互相评价和自我评价的方法。例如基于同步协同上机实验系统的《VB程序设计》上机实验的自我评价表见表1,其中总分S=1.0a+0.8b+0.6c+0.4d(其中a、b、c、d分别是等级A、B、C、D对应指标的标准分值之和)。对于表1的评价结果,系统自动计算总分为:

S=1.0×(30+30+2)+0.8×(6+3+2+4)+0.6×(6+6+2)+0.4×9=86

3.在上机实验中不断进行评价

在上机实验过程中,学生要参考其他同学的实验内容或查阅问题的回答,系统强制必须在继续其它工作前进行评价;学生也可以自觉对其他同学的提问、问题的回答、任务设计、实验方案、算法和运行情况等进行评价。为了保证评价的公正性,系统仅显示每个同学的网名;为了激励学生的实验,学生可以随时查看自己当前的总评结果。辅导教师也可以对提问、问题的回答、任务设计、实验方案、算法和运行情况等进行评价,但不是必需的。学生在实验结束提交时,系统强制学生提交自我评价信息。

4.系统自动进行公正的评定与分析

在全部学生提交实验后,系统自动根据评价模型计算评价结果,并对评价结果进行分析,为每个学生提供改进性建议。

5.对评价结果进行反思

实验结束后,学生可以随时登录系统,查阅自己的实验成绩和改进建议,反思自己的行为。通过反思了解自己有哪些不足,哪些方面需要继续努力,促进实验学习。

五、结论

文章探讨了基于同步协同上机实验系统的实验学习评价,指出了评价的目标、应具备的特点和实施过程。这种实验学习评价能够激发学生在上机实验中进行创新性自主学习的积极性和主动性;有利于培养学生的多种能力、协作和创新精神;实现了实验成绩评定的多元化和智能化,降低了辅导教师的工作量;适合进行实验教学的多种改革研究。[4][5][6] 实践证实,基于同步协同上机实验系统的实验学习评价可操作性强,节约了辅导教师和学生的大量时间。

参考文献:

[1]赵蓉. 改进课堂学习评价的对策[J]. 思想政治课教学, 2006.1:81-83.

[2]任一波. 由多元智能理论引发对高职生学习评价的思考[J]. 浙江工商职业技术学院学报, 2006.1(5):91-93.

[3]原丕业,杜秀云,王军英. 高校实验教学改革初探[J]. 中国成人教育,2004.8:52-53.

[4]郑胜林,潘保昌, 徐杜等. 互动式实验教学模式之研究[J].高教探索,2004.1:80-81.

[5]贾雪枫. 创造性研究型教学模式初探[J]. 教育探索,2004.1:18-21.

篇5:会计上机实验报告

姓名:赵波

班级:工商101班

学号:101565

指导教师:岳殿民

实验目的会计综合模拟实验是在学生掌握了一定的专业理论知识的基础上,以某个单位在一定时期内发生的实际经济业务资料作为模拟实验对象,采用直观的、逼真的实验材料和道具,包括原始凭证、记账凭证、会计账簿、报表及其他会计实验用具等,让学生在仿真的环境中增强实际操作能力和动手能力。通过这次实验,使得学生较系统地练习企业会计核算的基本程序和具体方法,加强学生对所学专业理论知识的理解、实际操作的动手能力,提高运用会计基本技能的水平,也是对学生所学专业知识的一个检验。

实验公司简介

我们本次模拟的企业原型是广东立竣机床股份有限公司。它是原广东省机械厅直属的生产各种机床的大型国有企业,于 1995 年改制成为股份有限公司,并于 1999 年在上海证券交易所挂牌交易。她位于广州市海珠区新港西路 888 号 , 占地 10 余公顷,注册资本为 6000 万元人民币。该公司设有铸造、加工和装配三个基本生产车间,主要从事立竣一号机床和立竣二号机床的生产。另设有供气和机修两个辅助生产车间,主要从事蒸汽生产和机器设备维修。

实验的内容及过程

一、模拟实验准备阶段

在模拟实验开始前,要全面了解模拟企业的概况,如,企业名称和性质,生产工艺概况,会计政策及核算要求等。同时要了解模拟企业会计工作组织,如,机构设置,财务人员分工,会计规范要求等。

二、模拟实习操作阶段

以企业的实际经济业务为实训资料,运用会计工作中的证、账等对会计核算的各步骤进行系统操作实验,包括账薄建立和月初余额的填制、原始凭证、记账凭证的审核和填制,各种账薄的登记、对账、结账等。实验为我们呈现了一个生产该厂可能涉及的各种基本业务,其各项凭证、账簿以及会计处理程序,按照该厂会计制度要求,具体的步骤如下:

1、会计凭证的编制

记账凭证的填写要注意记账凭证的名称、编号、日期、有关经济业务内容摘要、有关账户的名称(包括总账、明细分类账)方向和金额、有关原始凭证张数和其他有关资料份数、有关人员的签名或盖章。

记账凭证应按要求填制。

第一;要将经济业务的内容以简练概括的文字填入“摘要”栏内。

第二,要根据经济业务的性质,按照会计制度所规定的会计科目和每一会计科目所核算的内容,正确编制会计分录。

第三,每张记账凭证只能反映一项经济业务,除少数特殊业务必须将几个会计科目填在一张记账凭证上外,不得将不同类型经济业务的原始凭证合并填制记账凭证,对同一笔经济业务不得填制对应关系不清的多借多贷的记账凭证。

第四,附件数量完整。

第五,填写内容齐全。

第六,凭证按顺序和类型编号,一笔经济业务需要填制两张或者两张以上记帐凭证的,可以采用分数编号法编号。

第七,正确编制会计分录并保证借贷平衡。

2、科目汇总表的填制

根据记帐凭证逐笔登记总帐,如果工作量很大,可以先填制科目汇总表,然后根据科目汇总表再来登记总帐。

第一,填写记帐凭证汇总表的日期、编号和会计科目名称。汇总表的编号一般按年顺序编列,汇总表上会计科目名称的排列应与总帐科目的序号保持一致。

第二,将需要汇总的记帐凭证,按照相同的会计科目名称进行归类。

第三,将相同会计科目的本期借方发生额和贷方发生额分别加总,求出合计金额。第四,将每一会汁科目的合计金额填入汇总表的相关栏目。

第五,结计汇总表的本期借方发生额和本期贷方发生额合计,双方合计数应相等。

3、登记总分类账明细账和日记账

登记会计帐簿时要求准确完整。登记会计帐簿时,应将会计凭证的日期、编号,业务内容摘要、金额和其他相关资料逐项记入账内,作到数字准确、摘要清楚、登记及时、字迹工整。根据收款凭证、付款凭证逐日逐笔登记现金及银行存款日记帐,根据记账凭证及所附的登记明细分类账,再根据科目汇总表登记总分类账。

4、编制财务报表

最后,根据总账和明细账及资料所给的期初余额编制编制会计报表,包括资产负债表、利润表、股东权益增减变动表和现金流量表。

三、撰写实验报告

在完成所有的实验后,撰写实验报告。实验报告是对本次实验的总结,包括模拟实习单

位的概况,采用的会计政策,经济业务处理过程,实验内容和步骤,实验体会等。实验心得

在本次会计模拟实验中,我掌握了应该如何处理具体的会计业务,弥补我们在课堂学习中实践知识不足的缺陷,掌握书本中学不到的具体技巧,缩短从会计理论学习到实际操作的距离,也可通过实训的仿真性,使我们感到实训的真实性,增强积极参与实训的兴趣。会计理论来自于会计实践,是会计实践经验的概括总结,同时又对会计实践工作加以指导,所以我们在会计专业学习中,不仅需要构建出较完整的理论框架,而且还要树立起完整的操作理念。

在短短两天的会计模拟综合实验的学习中,让我对其有了更深的认识和见解。我很遗憾实验课程就这样结束了,从这次会计实验中,我学到了不少的知识。通过本次实验,让我对会计整个流程的操作有了较好的认识,我学会了会计中各个环节的操作,以及更加懂得了细心、谨慎和责任对于一个会计来说是那么的重要。通过这次的模拟实验使我加强了对基础会计各方面知识的记忆也让我发现了自己在哪些方面的不足,发现问题及时补救是这一次实验一大收获。在实验我学习到了许多在书本上不能学到的知识。

篇6:C++上机实验报告

姓名:王小宁

班级:

学号:

031012 1234

第一题:

题目:

编写一个类,声明一个数据成员和一个静态数据成员,其构造函数初始化数据成员,并把静态数据成员加1,其析构函数把静态数据成员减1.(1)编写一个应用程序,创建该类的3个对象,然后显示其数据成员和静态数据成员,再析构每个对象,并显示它们对静态数据成员的影响。

(2)修改该类,增加静态成员函数并访问静态数据成员,并声明静态数据成员为保护成员。体会静态成员函数的使用,静态成员之间与非静态成员之间互访问题。

编程思想:

首先,定义一个类,其中含有两个类的私有变量,一个静态数据变量,定义构造函数,将初值赋给两个私有变量,并将静态数据变量加1,并显示.定义一个析构函数,并通过析构函数将静态成员变量减1.并显示。

修改以上的类,增加一个静态成员函数并通过静态成员函数来访问静态成员变量。在主函数中利用一个指向函数的指针指向这个静态成员函数,并通过这个指针来访问类中的静态数据。代码实现:

代码1:

#include using namespace std;class A { public:

static int count;

A(int a=0,int b=0)

{

X=a;

Y=b;

count++;

cout<<“startcount=”<

count--;

cout<<“overcount=”<

int GetX(){return X;}

int GetY(){return Y;}

private:

int X,Y;};int A::count=0;int main(){ int *countp=&A::count;A z(2,3);cout<<“x=”<

cout<<“x=”<

问题及心得:

在这次试验中,我理解了静态变量与普通变量之间的差异与联系。在实验过程中因未初静态变量始化而无法通过编译,并且注意到静态变量一定要在类外初始化。

题目2:

创建一个Person类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。其功能有修改姓名、显示数据信息。要求其功能函数的原型放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。其中数据成员为保护的,函数为公有的。

编程思想:

创建一个PERSON类,定义姓名、街道地址、市、省和邮政编码分别为CHAR型的指针私有型变量。在定义公有型的构造函数,并在构造函数中申请动态内存来保存初始化的内容,并用相应的私有性的指针变量指向,再利用复制函数则指针中将会存放入输入内容。定义公有的析构函数释放动态申请的空间。定义一个公有的改变函数改变其中一个变量,方法与构造函数相似。

代码实现:

#include using namespace std;class Person {

private:

char *name;char *street;char *pro;char *city;char *code;

public: Person(char *aname,char *astreet,char *apro,char *acity,char *acode){

name=new char[strlen(aname)+1];

strcpy(name,aname);

street=new char[strlen(astreet)+1];

strcpy(street,astreet);

pro=new char[strlen(apro)+1];

strcpy(pro,apro);

city=new char[strlen(acity)+1];

strcpy(city,acity);

code=new char[strlen(acode)+1];

strcpy(code,acode);

cout<<“constructor”<

delete[] name;

delete[] street;

delete[] pro;

delete[] city;

delete[] code;

cout<<“destructor”<

delete[] name;

name=new char[strlen(aname)+1];

strcpy(name,aname);} void show(){

cout<<“姓名:”<

cout<<“街道地址:”<

cout<<“省份:”<

cout<<“城市:”<

cout<<“邮政编码:”<

运行结果:

上一篇:护理质量与安全管理下一篇:3种钌配合物与DNA相互作用的瞬态发光特性研究