现代软件工程-构建之法---第一章 练习与讨论

 1、小学四则运算程序

#include <stdio.h>

#include <stdlib.h>

#include<time.h>

 

//函数原型

int getChoice();

void showMenu();

void doExercise(int);

int test(int);

 

/*

    功能:用户选择功能

    返回:用户的功能选择

    1、加法        2、减法        3、乘法        4、除法        0、退出

*/

int getChoice()

{

    int choice;

    scanf("%d",&choice);

    return choice;

}

 

/*

    功能:显示功能的菜单

*/

 

void showMenu()

{

    printf("===================================\n");

    printf("\n欢迎使用小学生四则运算练习软件\n");

    printf("\t1、加法练习\t2、减法练习\n");

    printf("\t3、乘法练习\t4、除法练习\n");

    printf("\t5、综合练习\t0、退出系统\n");

    printf("请输入你的选择(0--5):\n");

    printf("\n===================================\n");

}

 

/*

    功能:计分器

*/

void doExercise(int n)

{

    int score=0;        //练习得分,初始化为0

    int i=0;            //练习题数的计数器

    

    for(i=1;i<=10;i++)

    {

        score=score+test(n);        //间接递归调用test(n)

    }

    printf("本次练习十道题,你做对了%d道\n",score);

}

 

/*

    功能:进行一道题的测试过程

*/

int test(int n)

{

    int ranswer=0;            //正确答案

    int uanswer=0;            //用户输入的答案

    int t=0;                //临时变量

    char operation;            //运算类别

    int num1=0;                //操作数1

    int num2=0;                //操作数2

 

    srand(time(NULL));        //初始化随机数种子

    num1=rand()%100;            //取0—99之间的随机数

    num2=rand()%100;

 

    //进入程序功能,如果选择5就随机产生1-4所代表的每一种运算方式

    if(n==5)

    {

        n=rand()%4+1;

    }

 

    switch(n)

    {

        case 1:

            operation='+';

            break;

 

        case 2:

            operation='-';

            break;

 

        case 3:

            operation='*';

            break;

 

        case 4:

            operation='/';

            break;

    }

 

//加入一条防止“不够减”的语句,当选择减法且num1小于num2时不够减

//不够减的时候,用临时变量交换两个操作数

    if((operation=='-') && (num1<num2))

    {

        t=num1;

        num1=num2;

        num2=t;

    }

 

//防止“除数为0”的程序漏洞

//当num2被随机取值到0时,就将num2强制置为1

//做除法时,将num1的值强制赋值给num1*num2,防止不能整除

    if(operation=='/')

    {

        if(num2==0)

        {

            num2=1;

        }

        num1=num1*num2;            //防止num1不能被num2整除的语句

    }

 

//输出测试题本身、提示用户输入

    printf("%d%c%d= ",num1,operation,num2);

    scanf("%d",&uanswer);

 

//程序计算正确结果

    switch(operation)

    {

        case '+':

        ranswer=num1+num2;

        break;

 

        case '-':

        ranswer=num1-num2;

        break;

 

        case '*':

        ranswer=num1*num2;

        break;

 

        case '/':

        ranswer=num1/num2;

        break;

    }

//评判,做对返回1,做错返回0

    if(uanswer==ranswer)

    {

        printf("正确!\n");

        return 1;

    }

    else

    {

        printf("错误!\n");

        return 0;

    }

}

 

 

//主函数

int main(void)

{

    int choice=0;        //接收用户的选择

    

    

    

    //循环开始功能,本次用do……while循环

    do

    {

        showMenu();                //显示菜单

        choice=getChoice();        

 

        //控制choice的范围

        if(choice<0 || choice>5)

        {

            choice=1;            //强制做加法

        }

        if(choice==0)

        {

            break;                    //用户选择0,退出循环(退出系统)

        }

 

        doExercise(choice);        //做什么练习,并启动评分

    }while(choice!=0);

 

    printf("欢迎使用本软件,再见!\n");

    return 0;

}

 

2、自我介绍

   我是胡冰,许久没有写过自我介绍和个人简介的我此时有一些慌乱,虽然自己是文科出身,但现在还是有点语无伦次,有点不知所云。首先自己对计算机不是特别感兴趣,对它的了解的少之又少,在进入大学开始学习计算机的相关课程之后我更加确定自己不喜欢这个专业,然后学习的一系列数据库、微机原理、操作系统等极具高深理论性理工类的课程更是把我推向无尽深渊。虽然我与计算机如此缘浅,但还是想学好这个专业的,比如这个学期开设的有关软件的课程是比较有意思的,自己也比较愿意学,我希望我可以学到一些软件工程的知识和应用。然后我会每周花六个小时的时间去学习这门课程。

3、在一周之内,快速看完整部教材,列出你不懂的5-10个问题

  由于我现在还没有读完整本书,然后我就对我读完的第一章来回答一下这个问题。

   我在第二版前言部分看到了MVP和MBP这两个词,对这两个词并不了解。第一次接触MVP这个词是在游戏中,我以为这个词的意思是在本局游戏中表现最好,对团队贡献最高的意思。我重新查了一下这个词在软件工程中的意义,Model-view-presenter (MVP) 是使用者接口设计模式的一种,被广范用于便捷自动化单元测试和在呈现逻辑中改良分离关注点(separation of concerns)。。MBP以面向客户提供解决方案为目标,服务领域涉及到金融、航空、物流、制药、建筑及房地产、食品、高科技、快速消费品以及影像处理等领域。核心业务外包服务  IT咨询、实施等。

4、软件有很多种,也有各种分类办法

Games特点:网络游戏具有大众娱乐性、技术领先性、真实竞争性、互动沟通性和经营可靠性这几大特点。网络游戏,在新的境界中还原了游戏的本源——人与人的互动。人是社会中的人,人的生活也是社会中的生活。网络游戏把对人们个体生活的虚拟归根到对社会生活的虚拟中来了。在网络游戏中,“人”不再是执行着游戏程序,而是在创造着游戏生活——没有存档重来的机会,没有明确预知的结局,每一个选择都将成为永远的历史,每一个人都在影响着他人,而每一个人也都在被他人影响着。游戏的技术或方式将来一定还会发生难以想象的变化,但是,超越了游戏境界的人与人的互动性,恰恰就是网络游戏永恒的魅力所在。

  Mobile Apps特点广义移动应用包含个人以及企业级应用。狭义移动应用指企业级商务应用。移动应用不只是在手机上运行软件那么简单,它涉及到企业信息化应用场景的完善、扩展,带来ERP的延伸,让ERP无所不在,通过广泛的产业链合作为用户提供低成本整体解决方案。移动应用将带来企业信息化商业模式的创新变革。移动应用行业盈利难  ,这也是业内人士预测的结果。

Operating System特点:操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。

1).比如说手游—王者荣耀,它的开发者会将游戏进行推广,找名人代言打广告或者做游戏活动,进而让玩家注意到这款游戏。我认为游戏的开发者是为了盈利。

2).软件是自己从软件商店下载的。当时是高考结束。刚开始觉得不怎样好玩,玩过一段时间就觉得还可以,可以组队开黑,做任务,领取奖励。

3).开发游戏的后台人员处理Bug,更新版本会放出公告进行更新。

4).我认为同类型软件会通过优化游戏体验,修复BUG来竞争,来赢得更多的用户。

5、软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看? 

个人认为是,而且软件工程不仅是教不会写程序的人开发软件,更是再教已经懂得开发语言的程序员如何更好地开发软件。

6、你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?

  我们学校有计算机科学专业和软件工程专业,像计算机科学专业的学生会以学习计算机相关的操作和应用多一些,毕业的话会是以专业性和操作型的工作为主。本科的计算机专业的学生会更加注重理论性一些。

猜你喜欢

转载自www.cnblogs.com/boxianxian/p/9193952.html