虚拟环境下C语言程序的教学实践
摘要:由于ansi c中对c语言的有些内容没有做具体的规定,不同的编译环境会对此做出不同的处理,为了使学生能够更好的理解c语言中的平台相关性以及部分语法的特殊性,以避免在实际的开发过程中出现意想不到的问题,以及为了能够更好地写出跨平台的c语言源程序,笔者试图在虚拟环境下搭建不同的操作系统,以及在不同的操作系统上搭建c语言的不同编译环境,进行c语言平台相关性的教学实践。
关键词: c语言; 程序设计; 循环结构;渐进启发式;教学方法
中图分类号:tp3 文献标识码:a 文章编号:1009-3044(2013)05-1084-02
1 概述
目前用于c语言的编译系统主要有borland公司开发的turbo c2.0、turbo c++3.0和微软公司的visual c++ 6.0, 以及linux和unix下的gcc编译器。tubro c2.0 是基于dos平台下的16位的c语言编译系统,它是一个集程序编辑、编译、链接和调试为一体的c语言程序开发环境。在c语言的早期,由于其使用方便,被大部分的用户所接受。而随着图形用户界面操作系统windows的兴
起,dos操作系统逐步退出了历史的舞台。目前的c语言的主流集成开发环境是微软公司的visual c++ 6.0。 虽然编译环境只是一种工具,教学过程中我们注重的是c语言中的标准的独立于环境的内容,但是,由于对于有些知识点的讨论不能完全脱离编译环境,因此如何理解以及体会c语言中某些知识点的平台相关性,为后续的实际开发过程中能够避免出现一些意想不到的问题,以及开发出具有跨平台的c语言程序。该文笔者试图通过对虚拟环境下的c语言程序设计进行教学实践,一方面让学生能够熟悉和熟练操作目前的主流虚拟操作系统,另一方面对c语言的平台相关性具有深刻的认识。
由于编译环境所基于的操作系统由16 位变成32 位, 所以 整型和指针类型的数据所占存储空间也发生了变化。在ansi c 中并未具体规定各种整型数据所占内存的字节数,基本原则是(141 页):短整型所占存储单元的位数不得多于
基本整型,而长整型所占存储单元的位数不得少于基本整型。在两种环境下,短整型和长整型所占字节数均为2 和4,但是对于基本整型则不同:tc 规定基本整型占2 个字节, 而vc 中占4个字节,这一改变使基本整型数据的范围增大:无符号基本整型由0 到65535 扩大为0 到4294967295,有符号基本整型-32768到32767 扩大为-2147483648 到2147483647。在tc
环境下,由于有符号基本整型数据最大值为32767, 所以在使用过程中经常要注意c语言开发环境有哪些”溢出”的情况,例如,表达式30000+30000 的值为-5536, 而不是60000; 而在vc 环境下, 基本整型最大值变成2147483647。这一数值相对来说已经足够大了,所以基本不用考虑”溢出”的情况,上面的表达式也可以得到正常的值60000。再如下面的程序:
#include
void main()
{int i= -1;
printf(”%u\n”,i);
}
在tc 下, 输出结果为65535; 而vc 下, 输出结果则为4294967295。指针类型的数据和基本整型类似, 所占存储空间也由2 个字节变成4 个字符。
2 实践内容与实施方案
实践的主要内容是:是利用虚拟的操作系统平台上构建多种类型的操作系统,并在多种操作系统上搭建不同的c语言程序的执行环境。能够方便的在同一台机器上对不同的c语言编译环境切换。让学生在熟悉不同的c编译环境的基础上尽量编写出能够跨平台的c程序,使编写的程序能够在实际的应用中跨平台运行,尽可能减少在不同的环境下执行c程序时的代码修改。通过在实践中不断发现问题和解决问题的过程中深入了解c编译器的区别,以便在以后的实际开发过程中能够尽快地编写出能够跨平台的程序。具体的实施方案如下:
1) 构建虚拟的操作系统平台,熟悉虚拟操作系统中的两种虚拟技术:全虚拟化和半虚拟化。以及这两种虚拟技术在实际应用程序开发过程中的区别。具体的实施方案是分别在已有的操作系统上安装利用半虚拟化技术实现的vmware操作系统,和利用全虚拟化技术实现的具有开源代码的xen操作系统。并能够在两种虚拟操作系统之上构建出至少有windows和linux的平台。并在此两种平台上分别搭建c语言的开发环境。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论