c语言系统设计分析,C语言程序在线分析辅导系统设计.doc

C语言程序在线分析辅导系统设计

C语言程序在线分析辅导系统设计   摘 要:本文设计了一种针对C语言程序设计课程的在线分析与辅导系统。学生学习C语言的过程中,需要通过大量练习题巩固所学知识。目前,一些教学平台提供了在线判题的功能来检验程序的对错,但存在一些问题。该系统在在线判题系统的基础上,通过测试用例分析、编译分析、结构分析等方法,进一步细化检查和定位学生程序中的错误,为学生提供针对性的辅导,对提高学生的学习效率有一定帮助

关键词:自主学习;在线判题智能辅导;C语言

中图分类号:G434 文献标志码:A 文章编号:1673-8454(2017)07-0086-03

一、引言

C语言程序设计是一门实践性很强的课程,在教学过程和学生的自主学习过程中,都需要通过大量的练习题来巩固所学知识、检验学习效果。很多C语言课程教学平台和自主学习平台也提供了大量的题目(主要是编程题)供学生练习。由于学生数量众多,学习时间也不一致,教师很难及时为每位学生所做的题目进行评价并给出针对性的指导

目前一些教学实践过程中采用在线判题(Online Judge)系统进行自动评分。[1][2]在线判题系统大多采用判断对错的方式,使一些只在输出格式上有错误的程序判断为错。程序中某些数据类型的精度问题也可能导致输出结果有误差,从而导致判断为错

(3)目前的在线判题系统只能对题目整体进行判断对错,不能具体定位到程序出问题的部分并针对学生的错误进行辅导

自主学习过程中,很多初学者可能找不到以上出错的原因,而浪费了很多学习时间,降低了学习效率。而在教师现场辅导时,可以很容易发现其中的错误,并可以根据其程序给出分析评价并进行指导。近年来,许多教改项目对在线判题系统进行改进,主要的研究思路有通过优化判题流程[3]、语义检测的稳定模型[4]、基于关键字和序列匹配[5]等方法,这些方法在一定程度上解决了以上问题。本文借鉴以上思路,结合测试用例、编译系统、结构分析法等设计了一种在线分析及辅导系统,可以用于应用C语言教学平台及自主学习系统,经过测试,在线分析和辅导系统可以模拟教师现场指导,从而提高学生学习的效率

二、系统设计

基于对在线判题系统优缺点的分析,本系统采用以下原则进行设计:①系统基于成熟的在线判题系统,采用测试用例法对学生提交的源程序进行初步分类。②对于初步分类为错误的程序再采用编译分析、结构分析等方法进行进一步分析。设系统整体流程如图1 所示

整个系统分为四个部分――测试分析模块、编译分析模块、结构分析模块、辅导模块

首先对源程序进行编译链接,如果编译成功,可以生成exe文件,调用测试模块进行测试。如果编译不成功,则需要对源文件进行进一步分析。①调用编译分析模块解析程序中出现的语法错误并进行自动修正。②调用结构分析模块分析程序的结构问题

在测试模块中,如果测试用例全部通过测试,程序判对并将此程序加入参考答案库中;如果部分通过,则进行用例分析,并调用结构分析模块分析程序,如果全部未通过,直接调用结构分析模块进行分析。针对各个模块分析、对比得到的程序问题,分类别(语法错误、格式错误、结构错误等)对学生进行针对性辅导

三、详细设计

1.测试分析模块

测试模块首先要设置若干组合理的测试用例。测试用例需要覆盖到程序的所有结构路径。如分支结构中,每个分支至少要有1组测试用例。测试用例除了设置输入输出外,还需要设置测试用例说明,如分支结构中,每组测试用例必须设置该分支测试用例说明

通过测试用例对程序进行模拟运行,如果测试用例全部通过,程序得满分,如果该程序的结构模块与参考答案库所有答案均不同,将该程序加入到参考答案库。如果部分通过,对未通过测试的用例进行分析,得到程序出现错误结构路径。针对部分同学的格式、数据类型精度等情况可能造成判错的问题,需要在现有的测试用例方法基础上增加容错的机制。常见的格式错误有:

多写或少写空格、制表符、回车符等符号造成的错误。格式控制串“%m.nf”“%md”未按要求书写造成的输出格式错误

将间隔符号如“,”“;”等写错引起的错误

在输出时多写或漏写了其他说明性文字引起的错误,比如输出变量a的值。格式输出要求“a=5”,而学生程序只输出了 5,漏写“a=”,或者要求输出5,而程序输出“a=5”

为解决以上由于格式问题导致系统判错,需要对测试用例的参考输出结果和用户程序的实际输出结果进行归一化操作后再次进行比对,并对测试用例中的输出结果进行细化设置

(1)格式归一化操作。对测试用例的参考输出结果或程序的实际输出中常用的控制字符如空格、制表符、换行符等为统一的间隔标记。归一化后再次进行比对

(2)精度归一化。在编写程序过程中,由于学生用的数据类型不合适可能导致数据结果存在误差,如flo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值