基于CH-CGI的C程序设计网络学习系统

时间:2022-09-17 05:59:57

基于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-),女,副教授,主要研究方向:计算机网络、信息处理、数据库安全、可信计算。

上一篇:删除Vista系统NTFS分区文件的方法 下一篇:商品房销售合同实行网上备案