2021秋软工实践第一次个人编程作业

问题描述:

 第一次个人编程作业

Deadline: 2021-09-21 00:00am

实现一个程序功能,它可以对读入的C或C++代码文件进行不同等级的关键字提取。

题目要求

  • 基础要求:输出关键字统计信息

  • 进阶要求:输出有几组switch case结构,同时输出每组对应的case个数

  • 拔高要求:输出有几组if else结构

  • 终极要求:输出有几组if,else if,else结构

在完成更高要求的情况前,需完成前置的要求。

编码要求

  • 使用 C++、Java、Python 中任一种完成任务。

  • 制定合适的代码规范,进行测试。

  • 使用 Git 进行版本控制。

前置要求

GitHub 初使用

为了保证你的代码能够帮助更多的人,并且能得到有效的管理和开源共享,请先学习 GitHub 使用:

  • 下载 Git。

  • 学习基础 Git 命令。

  • 在GitHub上创建仓库并上传本次作业,完成基本需求,并至少进行10次以上的 commit。

代码规范制定

为了其他同仁可以轻松的阅读你的代码,请制定属于你的代码规范,要求不能偏离主流代码规范:请参照 《码出高效_阿里巴巴Java开发手册》/《谷歌C++开源项目风格指南》/《Python PEP8》,从以下几个角度制定你的编程规范,并撰写成 Markdown 文件,请牢记你制定的编码规范,并在此次作业中严格执行。

  • 缩进

  • 变量命名

  • 每行最多字符数

  • 函数最大行数

  • 函数、类命名

  • 常量

  • 空行规则

  • 注释规则

  • 操作符前后空格

  • 其他规则

作业步骤

  • 创建作业的GitHub仓库。

  • 编写程序,积极 commit。

  • 迭代更新,优化代码。

  • 编写博客,完成作业。

博客要求

  • 给出此次作业的 PSP 表格。

  • 解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。

  • 设计实现过程。设计包括代码如何组织,关键函数的流程图。

  • 代码说明。展示出项目关键代码,并解释思路。

  • 单元测试截图和描述。

  • 单元测试覆盖率优化和性能测试,性能优化截图和描述。

  • 总结本次作业。

评分标准(150)

  • Git 部分(15)

    • commit 信息规范(5)

    • 文件规范(5)

    • 其他(5)

  • 代码部分(20)

    • 代码风格(5)

    • 代码规范(5)

    • 单元测试(10)

  • 博客部分(65)

    • 任务分解(10)

    • PSP 表格(5)

    • 迭代过程描述(10)

    • 困难描述及解决办法寻找(15)

    • 其他(10)

  • 程序评测(45)

    • 正确性(20)

    • 运行速度(25)

  • 提交时间(5)

附录

C语言文件样例:

#include <stdio.h>
int main(){
    int i=1;
    double j=0;
    long f;
    switch(i){
        case 0:
            break;
        case 1:
            break;
        case 2:
            break;
        default:
            break;
    }
    switch(i){
        case 0:
            break;
        case 1:
            break;
        default:
            break;
    }
    if(i<0){
        if(i<-1){}
        else{}
    }
    else if(i>0){
        if (i>2){}
        else if (i==2) {}
        else if (i>1) {}
        else {}
    }
    else{
        if(j!=0){}
        else{}
    }
    return 0;
}

格式要求

  • 输出格式:上面的代码作为样例

    total num: 35
    switch num: 2
    case num: 3 2
    if-else num: 2
    if-elseif-else num: 2

    关键字共定义为32个:

auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while