搜档网
当前位置:搜档网 › 模拟计算器实验报告

模拟计算器实验报告

模拟计算器实验报告
模拟计算器实验报告

课程设计报告课程设计题目:模拟机算器程序

学生姓名:柯尊国

专业:网络工程

班级:1021130321

指导教师:高永平、姜林

2011年11 月27 日

东华理工大学

课程设计评分表

学生姓名:柯尊国班级:10211303 学号:21

课程设计题目:模拟机算器程序

项目内容满分实评

选题能结合所学课程知识、有一定的能力训练。符合选题要求

(5人一题)

10 工作量适中,难易度合理10

能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10 理论依据充分,数据准确,公式推导正确10

能应用计算机软件进行编程、资料搜集录入、加工、排版、

制图等

10 能体现创造性思维,或有独特见解10

成果质量总体设计正确、合理,各项技术指标符合要求。10 说明书综述简练完整,概念清楚、立论正确、技术用语准确、

结论严谨合理;分析处理科学、条理分明、语言流畅、结构

严谨、版面清晰

10

设计说明书栏目齐全、合理,符号统一、编号齐全。格式、

绘图、表格、插图等规范准确,符合国家标准

10 有一定篇幅,字符数不少于5000 10

总分100

指导教师评语:

指导教师签名:

年月日

目录

一. 课程设计题目

..................................................................................

二. 问题分析

1.算法分析.....................................................................

2.流程图........................................................................

三. 算法设计

1.算法描述.....................................................................

2.系统类图.....................................................................

3.属性和方法定义..............................................................

四. 运行实例

................................................................................

五. 经验与体会

................................................................................

六. 参考文献

................................................................................ 七.源代码

................................................................................

一:课程设计题目

模拟计算器程序

问题描述

设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

基本要求

程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。

测试数据

程序输入不少于5种不同的表达式进行测试。

实现提示

可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。

选作内容

如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。

二.问题的分析

此程序设计主要运用了栈,利用栈后进先出的原理,建立两个栈,操作数栈和操作符栈,先将数据和运算符分别压入这两个栈,判断栈内和栈外运算符的优先级,依据运算符的优先级判断是应再次压入运算符,还是将数据和运算符弹出栈,在栈外进行运算,再将所得的结果压入栈,继续进行与计算,直至运算结束。

例如;计算5/2+1-2*3=

操作数2入操作数栈, 2

运算符”/”入运算符栈,

操作数5入操作数栈 5 /

数字栈运算符栈

运算符“+”入运算符栈顶

比较后,将2,5出栈运算,

并将结果入数字栈

2.5

数字栈字符栈

运算符“+”入字符栈,操作 1

数1入数字栈

2.5 +

数字栈字符栈

运算符“—”入运算符栈顶比较后,将

1,2.5出栈运算,并将结果压入操作

数栈

3.5 —运算符“—”入运算符栈

数字栈字符栈

操作数2入操作数栈,运算符“*”

入运算符栈顶比较后压入运算符栈 3

将操作数3压入操作数栈 2 *

3.5 —

数字栈字符栈

当扫描到=号时,操作数3和2出栈

运算符*出栈,进行运算,运算结果入

操作数栈

6

3.5 —

数字栈字符栈

开 始

操作数6和2出栈,运算符“—” 出栈,进行运算,运算结果入操作数 栈 6 3.5 —

数字栈 字符栈

运算符栈空,操作数栈中运算为运算

-2.5

数字栈 字符栈 结果分析:

设置两个栈,运算数栈和运算符栈,然后,自左向右扫描表达式,遇操作数进操作数栈,遇 操作符栈则与操作符栈顶运算符比较:若当前操作符大于操作符栈顶,则当前操作符进入操作符栈;若当前操作符小于等于运算符栈顶,次栈顶出栈,同时操作数栈顶也出栈,形成一个运算,并将运算的结果压入数字栈。

流程图

初始化数字栈和字符栈

读入字符c

Y 是否为“=”号 N

N 是否为运算符 Y 字符栈是否为空 Y C 入数字栈 Y 是否比字符栈顶优先级高 N N

C 入字符栈 数字栈顶元素和次栈顶元素 出栈,运算符栈顶出栈,

运算结果入数字栈 结束

三.算法的设计

1、创建一个calculator类,将计算器需要用到的函数都封装起来,形成一个整体。

2、设计成员函数及数据。

首先定义两个私有的结构体save1和save2分别用来存放数字和运算符,在结构体内定义整型的栈顶元素top,和存放数据及运算符的数组double n[MAX]和char n[MAX]。

定义了一个空的构造函数calculator()。

函数bool stack1empty(save1 s),bool stack2empty(save2 s)分别判断数字栈和字符栈是否为空,若栈顶为-1则空则返回1表示真,否则返回0表示假。

函数void push1(save1 &s,double num);,void push2(save2 &s,char op);分别将数字和字符压入栈。若所存储的内容已经数组的最大限度,则显示“栈已满”,否则将数字和字符压入栈顶。

函数void pop1(save1 &s,double &num),void pop2(save2 &s,char &op)分别是将栈内的数字和字符弹栈,存储在num和op中。首先判断栈是否为空,若空则显示“栈为空”,否则将栈顶元素分别赋值给num和op。

函数int in(char op),int out(char op)分别判断栈内和栈外运算符的优先级。

在栈内,“+”“—”返回2,“*”“/”返回4,在栈外“+”“—”返回1,“*”“/”返回3,当遇到“+”或“—”和“*”或“/”同时存在时,“*”“/”的优先级高于“+”“—”,首选“*”“/”运算。当遇到同级运算符时在时,先进行栈内运算。通过返回值的大小选择进行在哪里的哪种运算。

函数void count(double a,char op,double b)是用来进行计算的,并将计算的结果压入栈。以便下一次的运算。

函数void cal ()是最主要的操作函数。首先提示输入表达式,并在表达式之后加上=,然后输入表达式。分别清空存放数字和字符的栈。总体用一个while语句,以“=”结束。

由于是用char定义的表达式expression[MAX],所以要将里面的数字提取出来,转化成int或float类型,利用库函数isdigit()查找,若读入的字符为数字,则继续判断下一个字符,直到下个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈。库函数atof()将char类型进行转换。当栈内和栈外同时都有运算符时,利用int in(char op) 和int out(char op)函数根据其返回值的大小判断运算符的优先级,判断是将栈外的运算符压入栈还是将站内的数据及运算符弹出栈进行运算。若为后者,运算完后再将所得的结果压入栈顶,再次进行判断,直至栈顶为空,运算结束。

主函数void main(),首先提示此程序设计者的信息。然后进行正式的计算环节,将整个主函数分为part1 和part2两部分,运用goto语句使程序在执行的流程可以跳转到part1部分,进行多次运算。定义calculator mycal,进行运算。运算结束提示是否继续进行运算,输入选择y(是) n(否) A(退出)

利用while语句,当输入A时结束运算。当输入“y”时,运用system("cls")对前面的运算进行全清除,然后利用goto语句跳转到part1再次进行计算。当输入“n”时停止运算,

输出“谢谢使用!”程序运行结束。

系统类图

属性和方法定义

类名成员类

类型成员名描述

calculator 属性struct Save1 存储数字

Struct Save2 存储运算符

Bool stack1empty(save1s) 判断数字栈是否为空

Bool stack2empty(save2s) 判断运算符栈是否为

void push1(save1&s,doublenum) 将数据压入数字栈

void push2(save2 &s,char op) 将运算符压入运算符

void pop1(save1&s,double&num) 将栈顶的数据元素取

出,存放在num中

基类的数据成员和函数成员描述类:calculator

数据:struct save1

struct save1

函数:

calculator(){};

bool stack1empty(save1 s);

bool stack2empty(save2 s);

void push1(save1 &s,double num); void push2(save2 &s,char op);

void pop1(save1 &s,double &num); void pop2(save2 &s,char &op);

int in(char op);

int out(char op);

void count(double a,char op,double b); void cal();

void int int void void pop2(save2 &s,char &op)

in(char op)

out(char op)

count(double a,char op,double b)

cal()

将栈顶的运算符取出,

存放在op中

在栈内优先级的判断

栈外优先级的判断

进行计算并将所得的

结果压入栈顶

主要进行运算的函数

用户手册

程序运行时,首先显示此程序设计者的信息。

提示欢迎使用计算机请输入表达式(输完之后请加=),然后输入所要进行计算的表达式,进行计算。计算结束后提示:继续计算吗?,输入y表示同意继续计算,输入n 表示结束计算,并显示谢谢使用!输入A时退出,选择你所需的形式,进行计算。选择继续运算,跳转到part1部分。

四. 运行实例

五.经验与体会

此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,C++已经成为当今计算机应用中空前活跃的领域,在生活和学习中可以说得是无处不在。因此作为二十一世纪的大学来说掌握C++软件开发技术是十分重要的。

六.参考资料

[1] 郑莉等编著《C++语言程序设计(第四版)》北京:清华大学出版社

[2] 李丽娟主编《C语言程序设计教程(第二版)》北京:人民邮电出版社

源程序:

#include

#include

#include

Const MAX=1000;

class calculator

{

private:

struct save1 //存储数字

{

double n[MAX];

int top;

}

stack1;

struct save2 //存储运算符

{

char n[MAX];

int top;

stack2;

public:

calculator(){}; //空的构造函数

bool stack1empty(save1 s);

bool stack2empty(save2 s);

void push1(save1 &s,double num);

void push2(save2 &s,char op);

void pop1(save1 &s,double &num);

void pop2(save2 &s,char &op);

int in(char op);

int out(char op);

void count(double a,char op,double b);

void cal();

};

bool calculator::stack1empty(save1 s) //判断数字栈是否为空{

if(s.top==-1)

return 1;

else return 0;

}

bool calculator::stack2empty(save2 s)//判断运算符栈是否为空{

if(s.top==-1)

return 1;

else return 0;

}

void calculator::push1(save1 &s,double num)//将数据压入数字栈{

if(s.top==MAX-1)

{cout<<"栈已满";

}

else

{

s.top++;

s.n[s.top]=num;

}

}

void calculator::push2(save2 &s,char op)//将运算符压入运算符栈

{

if(s.top==MAX-1)

{cout<<"栈已满";

}

else

{

s.top++;

s.n[s.top]=op;

}

}

void calculator::pop1(save1 &s,double &num)//将栈顶的数据元素取出,存放在num中{

if(s.top==-1)

cout<<"栈为空"<

else

{

num=s.n[s.top];

s.top--;

}

}

void calculator::pop2(save2 &s,char &op)//将栈顶的运算符取出,存放在op中

{

if(s.top==-1)

cout<<"栈为空"<

else

{

op=s.n[s.top];

s.top--;

}

}

int calculator::in(char op)//在栈内优先级的判断

{

if(op=='-'||op=='+')

return 2;

else if(op=='*'||op=='/')

return 4;

else return -1;

}

int calculator::out(char op)//早栈外优先级的判断

{

if(op=='-'||op=='+')

return 1;

else if(op=='*'||op=='/')

return 3;

else return -1;

}

void calculator::count(double a,char op,double b)//进行计算并将所得的结果压入栈顶

{

double sum;

switch(op)

{

case '+':sum=a+b;break;

case '-':sum=a-b;break;

case '*':sum=a*b;break;

case '/':sum=a/b;break;

default:break;

}

push1(stack1,sum);

}

void calculator::cal(void)

{

int i=0,j;

double a,b,c;

char expression[MAX],operate,temp[20];

cout<<"请输入表达式(输完之后请加=):";

cin>>expression;

stack1.top=-1;//清空数字栈

stack2.top=-1;//清空运算符栈

while(expression[i]!='=')//以=号结尾

{

if(isdigit(expression[i]))/*若读入的字符为数字,则继续判断下一个字符,直到下个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈*/

{

j=0;

while(isdigit(expression[i])||expression[i]

=='.')

temp[j++]=expression[i];

i++;

}

temp[j]='\0';

c=atof(temp);//char类型进行转换

push1(stack1,c);

}

else

{

if(expression[i]=='-'||expression[i]

=='+'||expression[i]=='*'||expression[i]

=='/')//若读入的字符为运算符的情况

{

if(in(stack2.n[stack2.top])

[i])||stack2empty(stack2))//读入的运算符与运算符栈顶元素相比,并进行相应的操作{

push2(stack2,expression[i]);

i++;

}

else

{

pop1(stack1,a);

pop1(stack1,b);

pop2(stack2,operate);

count(b,operate,a);//先进后出原则

}

}

}

}

while(stack2.top!=-1)//读入结束后,继续进行操作,直到运算符栈为空

{

pop1(stack1,a);

pop1(stack1,b);

pop2(stack2,operate);

count(b,operate,a);

}

cout<

}

int main(){

part1:

cout<<"\t\t*******************************************"<

cout<<"\t\t*******************************************"<

cout<<"\t\t*** ***"<

cout<<"\t\t*** 模拟计算器程序***"<

cout<<"\t\t*** ***"<

cout<<"\t\t*** 制作人:柯尊国***"<

cout<<"\t\t*** 专业:10网络工程***"<

cout<<"\t\t*** 学号:1021130321 ***"<

cout<<"\t\t*** 导师:高永平***"<

cout<<"\t\t*** 制作时间:2011.11.23 ***"<

cout<<"\t\t*** ***"<

cout<<"\t\t*******************************************"<

cout<<"\t\t*******************************************"<

cout<

cout<<"-------------欢迎使用本系统------------"<

calculator cp;

cp.cal();

cout<<"继续计算吗?"<

cout<<"Y(是),N(否),A(退出)"<

char choice;

cout<<"请输入你的选择:";

cin>>choice;

while(choice!='A'){

if(choice=='Y'){

system("cls"); //全清除

goto part1;

}

else

{

cout<<"---------谢谢使用!----------"<

break;

}

}

return 0;

}

编程实验报告---科学计算器设计与实现

《可视化程序编程环境》 实验报告 项目名称科学计算器设计与实现 学院计算机学院 专业班级计算机科学与技术0804 2010年1月9 日

一、设计任务与要求 使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以及与面向对象技术相关的一些软件开发技术,掌握在 VisualC++6环境下进行可视化程序设计技术。通过实践具体的项目,为他们进一步开展相关领域的学习和科研打下良好的基础。 二、需求分析 1. 功能需求(功能划分、功能描述) 1、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 3、以角度、弧度两种方式实现上述部分函数 4、具备历史计算的记忆功能 5、对不正确的表达式能指出其错误原因 2. 运行需求(用户界面、人机接口、故障处理) 根据计算器要实现的相应功能来布局,分为基本功能区,特殊函数区,进制转换区,度数转换区和输出显示区五大基本模块。 三、实验方案 1、总体设计框图 2

3.基本功能区的设计 在这个模块中主要把0到F各个按键按下去后在输出显示区上显示出来列举一例: void Caysf55Dlg::OnBnClickedButton3() {if(zuizong=="0") m_str=""; m_str+="1"; UpdateData(0); if(zuizong=="0") zuizong=""; zuizong+="1";// TODO: 在此添加控件通知处理程序代码 } 接下来从输出显示区获得字符串,通过运算符的相应按键处理:列举加法: void Caysf55Dlg::OnBnClickedButton19()/*加法运算*/ {double zan; if(m_str=="") MessageBox(L"没有运算数"); else if(y==1||M==1) MessageBox(L"只能输入数值"); else if(m_str.GetAt (m_str.GetLength()-1)=='+'||m_str.GetAt (m_str.GetLength()-1)=='-'||m_str.GetAt (m_str.GetLength()-1)=='*'||m_str.GetAt (m_str.GetLength()-1)=='/')

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

计算机仿真与建模实验报告

中南大学 计算机仿真与建模 实验报告 题目:理发店的服务过程仿真 姓名:XXXX 班级:计科XXXX班 学号:0909XXXX 日期:2013XXXX

理发店的服务过程仿真 1 实验案例 (2) 1.1 案例:理发店系统研究 (2) 1.1.1 问题分析 (3) 1.1.2 模型假设 (3) 1.1.3 变量说明 (3) 1.1.4 模型建立 (3) 1.1.5 系统模拟 (4) 1.1.6 计算机模拟算法设计 (5) 1.1.7 计算机模拟程序 (6) 1实验案例 1.1 案例:理发店模拟 一个理发店有两位服务员A和B顾客随机地到达该理发店,每分钟有一个顾客到达和没有顾客到达的概率均是1/2 , 其中60%的顾客理发仅用5分钟,另外40%的顾客用8分钟. 试对前10分钟的情况进行仿真。 (“排队论”,“系统模拟”,“离散系统模拟”,“事件调度法”)

1.1.1 问题分析 理发店系统包含诸多随机因素,为了对其进行评判就是要研究其运行效率, 从理发店自身利益来说,要看服务员工作负荷是否合理,是否需要增加员工等考 虑。从顾客角度讲,还要看顾客的等待时间,顾客的等待队长,如等待时间过长 或者等待的人过多,则顾客会离开。理发店系统是一个典型的排队系统,可以用 排队论有关知识来研究。 1.1.2 模型假设 1. 60%的顾客只需剪发,40%的顾客既要剪发,又要洗发; 2. 每个服务员剪发需要的时间均为5分钟,既剪发又洗发则花8分钟; 3. 顾客的到达间隔时间服从指数分布; 4. 服务中服务员不休息。 1.1.3 变量说明 u :剪发时间(单位:分钟),u=5m ; v: 既剪发又理发花的时间(单位:分钟),v=8m ; T : 顾客到达的间隔时间,是随机变量,服从参数为λ的指数分布,(单位: 分钟) T 0:顾客到达的平均间隔时间(单位:秒),T 0=λ 1; 1.1.4 模型建立 由于该系统包含诸多随机因素,很难给出解析的结果,因此可以借助计算机 模拟对该系统进行模拟。 考虑一般理发店的工作模式,一般是上午9:00开始营业,晚上10:00左 右结束,且一般是连续工作的,因此一般营业时间为13小时左右。 这里以每天运行12小时为例,进行模拟。 这里假定顾客到达的平均间隔时间T 0服从均值3分钟的指数分布, 则有 3小时到达人数约为603 603=?人, 6小时到达人数约为1203 606=?人, 10小时到达人数约为2003 6010=?人, 这里模拟顾客到达数为60人的情况。 (如何选择模拟的总人数或模拟总时间)

计算机科学与技术第次实验报告.docx

哈尔滨工程大学 《程序设计基础》实验报告 基础实践一 姓名:班级: 学号: 实验时间 :2018年5月10日成绩 哈尔滨工程大学计算机基础课程教学中心 实验题目 1:输入两个整数数组,每个数组有五个整数,将两者和并 并排列输出。 设计思想: 定义三个数组 , 将两组数据存储到第三个数组中 , 再用冒泡排序对其由大到小排序并输出。 实验代码及注释: #include #include #define N 10//宏定义

int main() { int a[5],b[5],c[N];//第一组数据,第二组,合并数组int i,j,t;//循环变量,中间变量 printf("输入第一组数据 :\n");//输入数据 for(i=0;i<5;i++) scanf("%d",&a[i]); printf("输入第二组数据 :\n"); for(i=0;i<5;i++) scanf("%d",&b[i]); for(i=0;i<5;i++) { c[i]=a[i];//两组数据合并 c[i+5]=b[i]; } for(i=0;i

for(j=0;j

计算机实验报告范文.doc

计算机实验报告范文 课程:大学计算机基础班级:***** 学号:** 姓名:*** 组别:同组者姓名:仪器编号:实验日期: 实验windows 2000 操作 [实验目的] 1. 掌握windows 2000的启动和退出。熟悉windows 2000的桌面环境,掌握“回收站”、任务栏、帮助菜单的使用。 2. 掌握windows 2000的窗口、菜单以及对话框的操作。掌握“资源管理器”和“我的电脑”的使用。 3. 掌握文件与文件夹的创建、移动、复制等基本操作。 4. 掌握应用程序的安装与删除、移动与退出,快捷方式的创建与删除。 5. 掌握windows 2000系统的设置,了解windows2000 附件的使用。 [实验环境] 硬件:pentium 以上的计算机。 软件:windows2000 操作系统。 [实验内容]

见附件 [实验结果] 1.建立了如下图所示目录树:D:\ USER NEW1.COD A USER2 B BBB NEW2.DOC BBB 2.完成了“计算机”快捷方式的创建。 3.完成了控制面板中显示、区域选项等属性的设置。 实验指导教师(签名)实验成绩实验报告批改日期: 实验内容: 1.启动资源管理器选中D盘在右窗格空白处单击鼠标右键选择“新建/文件夹”命名为UESR 双击打开该文件夹(在当前目录下重复上面的操作,分别创建USER、A、B、C、USER2文件夹)双击打开USER1文件夹右击空白处选择“新建/WORD 文档”命名为“OLD1.DOC”,重复该操作在相应的文件夹内分别创建“OLD2.DOC”,“TOM.DOC”。 2.(1)打开B文件夹选中BBB 单击右键后选择“复制”命令打开USER文件夹在空白处单击右键后选择“粘贴”命令。

计算机仿真实验-基于Simulink的简单电力系统仿真

实验七 基于Simulink 的简单电力系统仿真实验 一. 实验目的 1) 熟悉Simulink 的工作环境及SimPowerSystems 功能模块库; 2) 掌握Simulink 的的powergui 模块的应用; 3) 掌握发电机的工作原理及稳态电力系统的计算方法; 4)掌握开关电源的工作原理及其工作特点; 5)掌握PID 控制对系统输出特性的影响。 二.实验内容与要求 单机无穷大电力系统如图7-1所示。平衡节点电压0 44030 V V =∠? 。负荷功率10L P kW =。线路参数:电阻1l R =Ω;电感0.01l L H =。发电机额定参数:额定功率100n P kW =;额定电压440 3 n V V =;额定励磁电流 70 fn i A =;额定频率50n f Hz =。发电机定子侧参数:0.26s R =Ω, 1 1.14 L mH =,13.7 md L mH =,11 mq L mH =。发电机转子侧参数:0.13f R =Ω,1 2.1 fd L mH =。发电机阻尼绕组参数:0.0224kd R =Ω, 1 1.4 kd L mH =,10.02kq R =Ω,11 1 kq L mH =。发电机转动惯量和极对数分别 为224.9 J kgm =和2p =。发电机输出功率050 e P kW =时,系统运行达到稳态状态。在发电机输出电磁功率分别为170 e P kW =和2100 e P kW =时,分析发电机、平衡节点电源和负载的电流、电磁功率变化曲线,以及发电机转速和功率角的变化曲线。

G 发电机节点 V 负 荷 l R l L L P 图 7.1 单机无穷大系统结构图 输电线路 三.实验步骤 1. 建立系统仿真模型 同步电机模块有2个输入端子、1个输出端子和3个电气连接端子。模块的第1个输入端子(Pm)为电机的机械功率。当机械功率为正时,表示同步电机运行方式为发电机模式;当机械功率为负时,表示同步电机运行方式为电动机模式。在发电机模式下,输入可以是一个正的常数,也可以是一个函数或者是原动机模块的输出;在电动机模式下,输入通常是一个负的常数或者是函数。模块的第2个输入端子(Vf)是励磁电压,在发电机模式下可以由励磁模块提供,在电动机模式下为一个常数。 在Simulink仿真环境中打开Simulink库,找出相应的单元部件模型,构造仿真模型,三相电压源幅值为4403,频率为50Hz。按图连接好线路,设置参数,建立其仿真模型,仿真时间为5s,仿真方法为ode23tb,并对各个单元部件模型的参数进行修改,如图所示。

关于计算机实验报告的参考范文

关于计算机实验报告的参考范文 篇一 一、实验题目 文件和文件夹的管理 二、实验目的 1.熟悉Windows XP的文件系统。 2.掌握资源管理器的使用方法。 3.熟练掌握在Windows XP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。 三、实验内容 1.启动资源管理器并利用资源管理器浏览文件。 2.在D盘创建文件夹 3.在所创建文件夹中创建Word文件。 4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建快捷方式及设置共享等操作。 四、实验步骤 (一)文件与文件夹管理 1.展开与折叠文件夹。右击开始,打开资源管理器,在左窗格中点击“+”展开,点击“—”折叠 2.改变文件显示方式。打开资源管理器/查看,选择缩略、列表,排列图标等

3.建立树状目录。在D盘空白处右击,选择新建/文件夹,输入经济贸易学院,依次在新建文件夹中建立经济类1103 4..创建Word并保存。打开开始/程序/word,输入内容。选择文件/另存为,查找D盘/经济贸易学院/1103班/王帅,单击保存 5.复制、移动文件夹 6.重命名、删除、恢复。右击文件夹,选择重命名,输入新名字;选择删除,删除文件 7.创建文件的快捷方式。右击王帅文件夹,选择发送到/桌面快捷方式 8.设置共享文件。右击王帅,选择属性/共享/在网络上共享这个文件/确定 9.显示扩展名。打开资源管理器/工具/文件夹选项/查看/高级设置,撤销隐藏已知文件的扩展名 (二)控制面板的设置。 1.设置显示属性。右击打开显示属性/桌面、屏幕保护程序 2.设置鼠标。打开控制面板/鼠标/按钮(调整滑块,感受速度)、指针 3.设置键盘。打开控制面板/键盘/速度(调整滑块,感受速度)、硬件 4.设置日期和时间打开控制面板/日期和时间

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

计算机仿真实验

计算机仿真实验报告 专业:电气工程及其自动化班级:09电牵一班学号:22 姓名:饶坚指导老师:叶满园实验日期:2012年4月30日 一、实验名称 三相桥式SPWM逆变电路仿真 二、目的及要求 1.了解并掌握三相逆变电路的工作原理; 2.进一步熟悉MA TLAB中对Simulink的使用及构建模块; 3.掌握SPWM原理及构建调制电路模块; 4.复习在Figure中显示图形的程序编写和对图形的修改。 三、实验原理与步骤、电路图 1、实验原理图

2、电路原理(采用双极性控制方式) U、V和W三相的PWM控制通常公用一个三角波载波Uc,三相的调制信号Uru、Urv和Urw依次相差120°。 电路工作过程(U相为例):当Uru>Uc时,上桥臂V1导通,下桥臂V4关断,则U相相对于直流电源假想中点N’的输出电压Uun’=Ud/2。当Uru

对电路模型进行封装如下图示:

其中Subsystem1为主电路,Subsystem2为负载,Subsystem3为检测电路,Subsystem4为输入信号,Subsystem5为调制电路,Scope 为示波器,Repeating Sequence为三角载波。 各子系统电路分别如下所示: Subsystem1 Subsystem2 Subsystem3

vb科学计算器实验报告

西安科技大学 可视化编程语言实验报告 题目:科学计算器 班级: 学号: 姓名: 2010年11月

复杂型科学计算器的设计与实现实验目的 1.通过本实验,进一步理解Visual Basic的编程方法。 2.提高运用Visual Basic编程的能力。 3.培养对所学知识的综合运用能力。 实验类型 综合型。 实验内容与步骤 一.界面设计。

Command5Caption= 三.程序代码: Dim num1 As Single, num2 As Single Dim fu As Integer Dim sign As Integer Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 To 9 sign = Index + 20 Case 10 sign = Index + 20 fu = 1 Case 11 To 14 sign = Index + 20 End Select = "" End Sub Private Sub Command2_Click(Index As Integer) Select Case Index Case 0 To 9 = & Index If fu = 0 Then num1 = Val Else num2 = Val

Case 10 = & "-" Case 11 = & "." Case 12 To 18 = "" sign = Index fu = 1 End Select End Sub Private Sub Command3_Click() If =”” then else = Left$, Len - 1) End if End Sub Private Sub Command4_Click() = "" End Sub Private Sub Command5_Click() Dim n As Integer, cf As Single fu = 0: cf = 1 Select Case sign Case 12 = num1 & "+" & num2 = num1 + num2 Case 13 = num1 - num2 Case 14 = num1 * num2 Case 15 = num1 / num2 Case 18 For n = 1 To num2 cf = cf * num1 Next n = cf Case 20 = Sin(num1) Case 21

计算机网络实验报告(以太网帧格式分析)

计算机网络实验报告 学院计算机与通信工程学院专业网络工程班级1401班 学号20姓名实验时间:2016.5.13 一、实验名称: FTP协议分析实验 二、实验目的: 分析FTP 报文格式和FTP 协议的工作过程,同时学习 Serv-U FTP Server服务软件的基本配置和FTP 客户端命令的使用。 三、实验环境: 实验室局域网中任意两台主机PC1,PC2。 四、实验步骤及结果: 步骤1:查看实验室PC1和PC2的IP地址,并记录,假设PC1的IP 地址为10.64.44.34,PC2的IP地址为10.64.44.35。 步骤2:在PC1上安装Serv-U FTP Server,启动后出现图1-20所示界面。 点击新建域,打开添加新建域向导,完成如下操作。 添加域名:https://www.sodocs.net/doc/cf15207291.html,;设置域端口号:21(默认);添加域IP地址:10.28.23.141;设置密码加密模式:无加密,完成后界面如图1-21所示。 完成上述操作后,还需要创建用于实验的用户帐号。点击图1.20中

浮动窗口中的“是”按钮,打开添加新建用户向导:添加用户名:test1;添加密码:123;设置用户根目录(登陆文件夹);设置是否将用户锁定于根目录:是(默认);访问权限:只读访问,完成后界面如图1-22所示。 新建的用户只有文件读取和目录列表权限,为完成实验内容,还需要为新建的用户设置目录访问权限,方法为点击导航——〉目录——〉目录访问界面,然后点击添加按钮, 按照图1-23所示进行配置。 步骤3:在PC1 和PC2 上运行Wireshark,开始捕获报文。 步骤4:在PC2 命令行窗口中登录FTP 服务器,根据步骤2中的配置信息输入用户名和口令,参考命令如下: C:\ >ftp ftp> open To 10.28.23.141 //登录ftp 服务器 Connected to 10.28.23.141 220 Serv-U FTP Server v6.2 for WinSock ready... User(none): test1 //输入用户名 331 User name okay, need password. Password:123 //输入用户密码 230 User logged in, proceed. //通过认证,登录成功

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

计算机仿真实验报告7

山东工商学院计算机仿真及应用实验报告 实验七 MATLAB的基本应用(二)及Simulink仿真 (验证性实验) 学院: 专业班级: 实验时间: 学号: 姓名:

一、实验目的 1、掌握连续信号的仿真和傅里叶分析方法 2、掌握连续系统的分析方法(时域分析法,拉氏变换法和傅里叶分析法); 3、掌握离散信号的仿真和分析运算方法 4、掌握离散系统的分析方法(时域分析法); 5、掌握符号运算方法; 6、掌握Simulink仿真工具; 二、实验原理 1、连续信号的仿真和分析法,参考教材第6.1节,重点: 单位冲激信号的仿真方法;单位阶跃信号的仿真方法;复指数信号的仿真方法 2、连续系统的分析方法,参考教材第6.1节,重点: 例6.2,LTI系统的零输入响应的求解方法; 例6.3,LTI系统的冲激响应的求解方法 例6.5,LTI系统的零状态响应的求解方法 例6.6,系统中有重极点时的计算 3、系统的频域分析方法,参考教材第6.2节,重点: 例6.7,方波分解为多次正弦波之和 例6.8:全波整流电压的频谱 例6.10:调幅信号通过带通滤波器 例6.12:用傅里叶变换计算滤波器的响应和输出 4、离散信号的仿真和分析法,参考教材第6.3节,7.1节,重点: 单位脉冲序列impseq,单位阶跃序列stepseq 例7.1:序列的相加和相乘 例7.2:序列的合成与截取 例7.3:序列的移位和周期延拓运算 三、实验内容(包括内容,程序,结果) 以自我编程练习实验为主,熟悉各种方法和设计,结合课堂讲授,实验练习程序代码。 1、根据教材第6.1节的内容,练习连续信号和系统的时域分析和拉氏变换方法。 q602 clear,clc a=input('输入分母系数向量a=[a1,a2,...]= '); n=length(a)-1; Y0=input('输入初始条件向量Y0=[y0,Dy0,D2y0,...]= '); p=roots(a);V=rot90(vander(p));c=V\Y0'; dt=input('dt= ');tf=input('tf= '); t=0:dt:tf;y=zeros(1,length(t));

安卓计算器开发实验报告

嵌入式WebOS应用开发 实验报告 实验名称:使用An droid Developer SDK开发应用程序 专业:_________________________ 姓名:__________________________________ 班级:_______________________________ 学号:______________________________ 一、作品的运行环境及安卓SDK基础操作 SDK An droid Developer 是一款在windows系统上运行的针对 An droid应用开发的谷歌官方软件(需要JAVA环境支持)。 1、导入工程 2、建立虚拟机 在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB因为部分程序如果调用资源过大会导致虚拟机无法运行。 3、虚拟机界面 二、作品介绍 我的应用是一个计算器。能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。

加应用图标 1.首先在我的桌面上添加你应 用的图标以及文字,双击图标后 项中自行进行挑选; 也可以添加自己的图片, 只要将图片放到对应的 文件夹之下在刷新就可 以,但不建议放分辨率 过高图片可能会出现超 出界面的等错误。 要在xml 界面中添加排版: xml 代码首末的 格式较为自由可以直接在 界面中拖动图标位置以及修改大小,而其他layout 则更会自动排列, 各有优劣。 三、 编程以及运行调试 (一)、在MyDesktop 主界面中添 fin^_ok,prig 世IF it launchiWipng 32E img'O.png jdE im^il.png] 3E img?.pHg 血 imql.pngi 32E img4.png 血 im^S.pngi Tn? imgg.png JJL -mgT.pngj ..1. imy^.png ..1. uiHiprxg 就可以看见对应的代码, 可直接 在代码中进行修改图片文字的 大小颜色等等。 以下是对应图像图标的代码 图片可以在左侧的选 (二)、在 res/layout 目录下新建.xml 文件,由于计算器的按钮很多, TIF charfrc 起 ch^tfrorn_bg_ipTW5&d !S'.pflg ~l <+i?,kbnif^M 口 .股 ch?kbojco#f bsckgrourid^na SE chfkb rn (」]n.hewlcgin 口unci 岱n 评 弧 tlwr^na TTF de^ r o 1 .pnq

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

电路计算机仿真实验报告

电路计算机仿真分析 实验报告

实验一直流电路工作点分析和直流扫描分析 一、实验目的 1、学习使用Pspice软件,熟悉它的工作流程,即绘制电路图、元件类别的选择及其参数的赋值、分析类型的建立及其参数的设置、Probe窗口的设置和分析的运行过程等。 2、学习使用Pspice进行直流工作点分析和直流扫描分析的操作步骤。 二、原理与说明 对于电阻电路,可以用直观法(支路电流法、节点电压法、回路电流法)列写电路方程,求解电路中各个电压和电流。PSPICE软件是采用节点电压法对电路进行分析的。 使用PSPICE软件进行电路的计算机辅助分析时,首先在capture环境下编辑电路,用PSPICE 的元件符号库绘制电路图并进行编辑、存盘。然后调用分析模块、选择分析类型,就可以“自 动”进行电路分析了。需要强调的是,PSPICE软件是采用节点电压法“自动”列写节点电 压方程的,因此,在绘制电路图时,一定要有参考节点(即接地点)。此外,一个元件为一 条“支路”(branch),要注意支路(也就是元件)的参考方向。对于二端元件的参考方向定 义为正端子指向负端子。 三、示例实验 应用PSPICE求解图1-1所示电路个节点电压和各支路电流。 图1-1 直流电路分析电路图

4.000V R2 1 2.000A 0V Idc2 4Adc 4.000A 6.000V R1 1 4.000A Idc1 2Adc 2.000A R3 3 2.000A 图1-2 仿真结果 四、选做实验 1、实验电路图 (1)直流工作点分析,即求各节点电压和各元件电压和电流。 (2)直流扫描分析,即当电压源Us1的电压在0-12V之间变化时,求负载电阻R L中电流I RL随电压源Us1的变化曲线。 R4 3 Is3 2Adc 0Vs2 10Vdc RL 1 Is1 1Adc Is2 1Adc R1 4 I Is5 3Adc R2 2 12Vdc IPRINT Vs3 5Vdc Vs4 7Vdc 图1-3 选做实验电路图 2、仿真结果

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

计算机仿真实训实验报告实验1-4

实验一 熟悉MATLAB 工作环境 16电气5班 周树楠 20160500529 一、实验目的 1.熟悉启动和退出MATLAB 软件的方法。 2.熟悉MATLAB 软件的运行环境。 3.熟悉MATLAB 的基本操作。 二、实验设备及条件 计算机一台(带有MATLAB6.0以上的软件境)。 三、实验内容 1.练习下面指令: cd,clear,dir,path,help,who,whos,save,load 。 2.建立自己的工作目录MYBIN 和MYDATA ,并将它们分别加到搜索路径的前面或者后面。 3.求23)]47(*212[÷-+的算术运算结果。 4.M 文件的建立,建立M 文件,求出下列表达式的值: ?? ????-+=++=+= 545.0212),1ln(21 185sin 2222 1i x x x z e z o 其中

5.利用MATLAB的帮助功能分别查询inv、plot、max、round函数的功能和用法。 四、运行环境介绍及注意事项 1.运行环境介绍 打开Matlab软件运行环境有图1-1所示的界面

图1-1 MATLAB的用户界面 操作界面主要的介绍如下: 指令窗( Command Window ),在该窗可键入各种送给 MATLAB 运作的指令、函数、表达式,并显示除图形外的所以运算结果。 历史指令窗( Command History ),该窗记录已经运行过的指令、函数、表达式;允许用户对它们进行选择复制、重运行,以及产生 M 文件。 工作空间浏览器( Workspace Browser ),该窗口罗列出 MATLAB 工作空间中所有的变量名、大小、字节数;并且在该窗中,可对变量进行观察、编辑、提取和保存。 其它还有当前目录浏览器( Current Directory Browser )、 M 文件编辑 / 调试器(Editor/Debugger )以及帮助导航/ 浏览器(Help Navigator/Browser )等,但通常不随操作界面的出现而启动。 利用 File 菜单可方便对文件或窗口进行管理。其中 File | New 的各子菜单, M-file ( M 文件)、 Figure (图形窗口)、或 Model ( Simulink 编辑界面)分别可创建对应文件或模块。 Edit 菜单允许用户和 Windows 的剪切板交互信息。 2.在指令窗操作时应特别注意以下几点 1)所有输入的指令、公式或数值必须按下回车键以后才能执行。例如: >>(10*19+2/4-34)/2*3 (回车) ans= 234.7500 2)所有的指令、变量名称都要区分字母的大小写。 3)%作为MATLAB注释的开始标志,以后的文字不影响计算的过程。 4)应该指定输出变量名称,否则MATLAB会将运算结果直接存入默认的输出变量名ans。 5)MATLAB可以将计算结果以不同的精确度的数字格式显示,可以直接在指令视窗键入不同的数字显示格式指令。例如:>>format short (这是默认的) 6)MATLAB利用了↑↓二个游标键可以将所输过的指令叫回来重复使用。按下↑则前一次输入的指令重新出现,之后再按Enter键,即再执行前一次的指令。

计算机科学与技术实验报告

哈尔滨工程大学《程序设计基础》实验报告 基础实践二 姓名:王明班级: 学号: 实验时间: 2017 年 5 月 8 日 哈尔滨工程大学计算机基础课程教学中心 实验五 实验题目1: 输入两个整数数组,每个数组有5个整数,将两者合并并排序输出。 设计思想:定义两个5个元素的数组,一个10个元素的数组,数据类型为整型,通过for循环输入前两个数组的值,并依次存入第三个数组中。另外编写排序函数,在主函数中调用对第三个数组中的元素排序并输出。 实验代码及注释: #include<> #include<>

void f1(int *a, int i, int j) { int m, n, c; int k; m = i; n = j; k = a[(i + j) / 2]; do { while (a[m]k&&n>i) n--; if (m <= n) { c = a[m]; a[m] = a[n]; a[n] = c; m+=1; n-=1; }

} while (m <= n); if (mi) f1(a, i, n); } int main() { int a1[5],a2[5],c[10]; printf("请输入两个数组,每组五个整数:\n"); for(int i=0;i<5;i++) scanf("%d %d",&a1[i],&a2[i]); for(int i=0;i<5;i++) { c[i]=a1[i]; c[i+5]=a2[i]; } f1(c,0,9); printf("排序后为:\n");

控制系统计算机仿真实验报告

计算机仿真试验报告 自动化1201 ** 3120502007 [实验目的] (1).掌握采样控制系统数字仿真的特点。 (2).了解数字控制器对系统动态性能的影响。 (3).学会编制双重循环法的仿真程序。 (1). 复习采样控制系统的仿真原理及特点。 (2).根据理论分析,初步估计系统在给定条件下可能出现的动态过程。

(1).按实验目的、要求和已知条件,建立系统的Simulink模型,并且编制双重循环法的仿真程序。 1) Simulink模型建立: 根据题目给出的条件,数字控制系统的结构图如下图所示: 其中的其中数字控制器为: 根据上面结构图,所建立 2) 编制双重循环法的仿真程序 根据数字控制系统的结构图与条件(1)式,我们可以得到得到被控对象的状态空间模型:

[]112212()()0010()() ()110()()01()x t x t u t x t x t x t y t x t ?????????=+?????????-? ????????? ?? ?=??? ??? (2) 按连续系统离散相似算法将(2)式离散化。为了保证精度,其离散化时的步长h (虚 拟采样周期)应比数字控制器的实际采样周期T (=1s)小得多。为简化起见,取h=T/N=T/100=0.01T=0.01s 。 利用MATLAB 控制系统工具箱提供的将连续系统转换成离散系统的函数c2d ,把连续状态空间模型(2)变换为离散状态空间模型。 离散程序如下(程序1): clear; h=0.01; A=[0 0;1 -1]; B=[10;0]; [G,H]=c2d(A,B,h) 运行后的结果为: 即: 1 0(())0.010.99T ??==???? G Φ (3) 0.1(())0.0005T ?? ==? ? ?? H Γ (4) 故连续系统被控对象(2)的等价离散化状态方程为: []112212(1)()100.1()(1)()0.010.990.0005()()01()x k x k u k x k x k x k y k x k ?+???????? =+????????? +???? ?????? ?? ?=??? ??? (5)

相关主题