开篇:润墨网以专业的文秘视角,为您筛选了一篇基于CH-CGI的C程序设计网络学习系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:利用CH这一C语言解释器无需编译链接、支持网络计算的特点,通过其功能强大的CGI组件,实现在客户端提交C语言源代码,通过Internet在远程服务器上运行代码的功能。
关键词:C程序设计;CH;CGI;网络学习系统
1 引言
C程序设计是所有从事计算机相关领域应用者的必修课程,学习者众多,但是C语言代码程序需要通过编译链接之后才能成为可执行程序运行。这对于程序开发者的调试、初学者的学习、教学人员的教学来说就很不直观,显得非常繁琐,而且每一次修改都必须重新编译链接。很多初学者因此望而生畏。
另外,若临时要运行一段C语言代码,计算机上又没有安装C编译器,就需要用户去下载、安装C编译器,过程非常繁琐。如若有一个网络在线C语言环境能在线提交代码,并返回执行结果就可以省去这些环节。
基于这些现状,我们很有必要开发一个C程序设计的网络学习系统,使用户可以在客户端的浏览器上提交C语言的源代码,通过远程服务器进行运行后得到运行结果和纠错指导,快速有效地提高用户的编程能力。
2 ch-cgi简介
CHProfessionalEdition由知名的SoftIntegration,Inc.所开发,是一个嵌入式C语言解释器,且提供C语言的超集。CH提供了CGI组件功能,利用其Cgi.h文件中定义的Crequest、Cresponse等各类函数实现从客户端提取C语言源代码在CH中执行,并将运行结果或错误提示经过处理后输出到客户端。
3 系统框架和工作原理
3.1系统框架
采用B/S体系结构,系统架构与工作流程如图1所示:
3.2工作原理
如图1所示的系统框架,本学习系统大致分为以下三个模块:
(1)Web客户端模块
用户在客户端浏览器中编写C语言源代码,并通过Internet提交到Web服务器。此模块采用普通的HTML代码编写而成,在一个表单中放置了两个文本框分别用于客户提交C语言源代码和输入数据。设置该表单的action属性等于makefile.c(makefile.c文件是实现功能模块2的核心代码)。
(2)运行代码模块
通过CH-CGI接口提取客户提交的源代码,写入临时的C文件,并调用CH程序执行这个文件。如源代码执行需要数据输入的,则将客户端输入的数据写入到一个data.dat文件中。利用CH的CGI组件功能,编写一个makefile.c文件用来实现这块功能。makefile.c核心代码大致如下:
#!/bin/ch-g
#include//包含cgi.h头文件
#defineABC
intmain(){
intcinput;//用于判断是否需要输入数据
chstrarrayname,value;
classCResponseResponse;
classCRequestRequest;
Response.begin();
Response.title("CGIFORMresults");
/*………………………………*/
#ifdefABC
FILE*temp,*dat;
char*tempChar,*temp1;
temp=fopen("temp.ch","w");
/*………………………………*/
fclose(temp);
#endif//提取客户C语言源代码,建立数据文件//temp.ch:
Response.end();
if(cinput==1)
chtemp.ch;//调用CH执行temp.ch
elseif(cinput!=1)
chtemp.ch
}
(3)结果返回模块
将运行结果或错误提示经过处理后返回给客户端。如图1所示,举一个简单的例子,若在main函数后忘了输入“()”,代码如下:
Main
{Printf(“欢迎使用在线C语言环境!\n”);}
执行结果如图2所示:
参照错误提示,修改代码后再执行这段代码,就可以得到正确的结果。
以上的例子只是C程序设计中诸多错误的缩影。要对任意的程序代码和千变万化的错误都能分析出问题真正所在,就需要建立一个强大的数据库,收集CH的错误集合,收集大量的程序案例分析,要设计从CH信息到纠错指导的映射算法,通过对运行结果的二次处理,使用户的程序调试可操作化。
在多年C程序设计的教学过程中,我们已经积累了大量的C语言编译错误集合。随着本学习系统的投入使用,该集合越来越丰富,使得本学习系统的功能越来越强大。
4 总结
C的学习者是以一种主动的尝试的学习方法去学习新的知识。采用B/S体系结构,无需编译链接就能直接运行C代码程序,学习者能够摆脱繁琐的C代码调试过程,直观地进行C程序设计的学习,有效地帮助用户掌握C编程方法,提高程序设计能力。同时使得用户在任意一台带网络的PC机上进行C语言学习变为可能。
参考文献
[1].
[2]丛春瑜,刘家勋.“C程序设计语言”智能辅导系统原型的设计与开发.计算机时代.2004.8.
[3]李华,何茜,吴中福.基于CGI的个性化学习系统.计算机工程与应用.2002.13.
基金项目:浙江省教育厅科研项目(“基于CGI的C程序设计智能学习系统” 0507121 2005-2006 );浙江理工大学重点教改项目(“基于CH-CGI的C程序设计网络学习系统”)资助项目。
作者简介:
陶灵兵(1980-),男,助教,主要研究方向:网络工程、网络安全、信息系统管理。
庄红(1964-),女,副教授,主要研究方向:计算机网络、信息处理、数据库安全、可信计算。