新学期开始,第一堂的软件工程课,拿到书本看了下,感觉神一般得迷,就觉得很难学。以下是我上完第一次课得理解:
一.什么是软件工程?
1.软件工程
是把系统得、有序得、可量化得方法应用到软件得开发、运营和维护上得过程。
2.软件工程包括下列领域
软件需求分析、软件设计、软件构建、软件测试和软件维护。
3.软件工程和下列学科相关
计算机科学、计算机工程、管理学学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。
二.软件工程和软件开发流程
1.人们在开发、运营、维护软件得过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。
2.软件开发流程得目的是为了提高软件开发、运营、维护效率,并提高软件得质量、用户满意度、可靠性和软件得可维护性。
三.软件工程得组成
程序=数据结构+算法
软件=程序+软件工程
软件公司=软件工程+商业模式
四.软件得特性
复杂性
不可见性
易变性
服从性
非连续性
五.课后练习
课上一道题目感觉充分得解释了什么是软件工程。用代码实现每天随机产生300道四则运算得小学题。
看到这题我首先想到了随机数,因为数不固定而且300道,只能用随机数来随机产生数来给出题目,而四则运算(即+,-,*,/),那我想到用数组来存储,课后突然老师点播说可以用case语句,我觉得这个看上去更名了,所以可以用C语言来完成这个题目,毕竟python太菜。我觉得这个程序主要有3个地方需要注意。首先是随机生成问题,只使用rand()是不对的,这样生成的数是伪随机数,上网查了一下得知最简单的解决方法是应该在主函数里加上一句srand(time(0)),这里我最初是在每个rand()前都加上了srand(time(0)),导致产生的随机数都一样,应该只要在主函数里加一句就行了。这是个值得注意的地方。其次是关于如何保证结果都是非负数,由于是四则运算,因此只有出现“-”号的时候才会有这种可能。我是这样解决的:用x和y来表示整数题目时2个运算数,当出现“-”时(if(op==‘-’)),通过while(x-y<0)语句来循环进行重新随机,知道产生x大于等于y为止。当遇到分数题目时候,采用a/b,c/d形式,同理通过while(a*d-b*c<=0)语句来循环进行重新随即。最后关于真分数的问题,并不难,真分数简单来讲就是分母比分子大的分数,因此只要保证a>b且c>d就好了。
char Operator()
{
char op;
int a;
a=rand()%4+1;
switch(a)
{
case1:return‘+‘;
case2:return‘-‘;
case3:return‘x‘;
case4:return‘/‘;
}
}void integer()
{
int x,y;
char op;
x=rand()%100+1;
y=rand()%100+1;
op=Operator();
if(op==‘-‘)
while(x
{
x=rand()%100+1;
y=rand()%100+1;
}
cout<
}void fraction()
{
int a,b,c,d;
a=rand()%100+1;
b=rand()%100+1;
c=rand()%100+1;
d=rand()%100+1;
char op;
while(a<=b||c<=d)
{
a=rand()%100+1;
b=rand()%100+1;
c=rand()%100+1;
d=rand()%100+1;
}
op=Operator();
if(op==‘-‘)
while((b*c-a*d)<0)
{
a=rand()%100+1;
b=rand()%100+1;
c=rand()%100+1;
d=rand()%100+1;
}
cout<
}+void main()
{
srand(time(0));
int a,n,m;
cout<<"请输入出题类型"<
cout<<"1.整数四则运算"<
cout<<"2.分数四则运算"<
cin>>a;
cout<<"请输入出题数目"<
cin>>n;
for(m=1;m<=n;m++)
{
if(a==1)
integer();
else fraction();
}
}