焦 华
(贵州商学院,贵州 贵阳 550014)
从C编程到C#控制台编程及窗体编程的教学实践研究
焦 华
(贵州商学院,贵州 贵阳 550014)
程序设计的发展与计算机语言的发展是相辅相成的,过程化编程是面向对象编程的基础,历史上程序设计经历了无数里程碑的跨越!以计算机语言为例,C家族就经历了C、C++、C#的发展演变。本文从教学的角度探讨从C语言编程跨越到C#控制台编程、再从C#控制台编程跨越到C#的Windows窗体编程。选择较优路径,采用比较教学法实现了轻松自然的过渡和跨越!本文对《C#程序设计》课程教学确有实用价值。
C语言;C#控制台程序;Windows窗体编程;比较教学法
在很多高等院校计算机类专业人才培养方案中,课程设置是先开设面向过程的高级语言,后续课程是面向对象的高级语言。[1]学生在学习了《C语言程序设计》课程之后进一步学习《C#程序设计》课程是一种通常的选择方式,当然也可以选择Java,C#与Java相类似,也同为竞争对手。C#控制台程序是为了兼容DOS程序而设立的,它通常没有可视化的界面,往往通过字符串来显示或者监控程序。用户只是关心数据而不在乎界面。这种编程方式和传统的C语言编程方式相类似,学生在拥有C语言编程经验的基础上学习C#控制台编程应是顺理成章、水到渠成。以下通过加减乘除四则运算的实例加以说明:[2]
C#控制台程序(代码)
C#控制台程序运行结果
传统的C语言编译程序(如VC++6,Win—TC)无自动生成的代码,所有程序代码都需要用户自己编写,因此对Visual Studio自动生成的代码(这一点学生需要逐步适应过来)要进行简单解释:比如System 是系统名字空间,用它的 Console类的ReadLine方法和 WriteLine方法实现数据的输入输出。而传统的C是通过scanf函数及printf函数实现数据的输入输出的。下面是对同一问题给出的C语言编写的程序代码:[4]
图1 C#运行结果图Fig.1 C# operation results
C语言程序代码
可以看出,上面加减乘除四则运算的实例用传统C编写的程序与用C#编写的控制台程序很相似、运行结果是一样的。在具体教学过程中可先提出问题,然后讲授C语言的解决方案、再讲授C#的解决方案,实现两种编程方式的过渡和跨越!这样的安排符合人类的认知规律:从简单的去把握复杂的、从熟悉的去把握不熟悉的。[6]传统的 C一上来就编写源代码文件,而C#是采用项目管理方式、源代码文件只是其中的重要文件……在整个教学活动中充分使用比较教学法:求同比较、求异比较、相似比较。
在完成第一步跨越之后,现进入第二步跨越,即从C#控制台编程过渡和跨越到C#的Windows窗体编程。下面是同一问题的窗体程序的界面设计和代码设计:
窗体程序的界面设计
图2 C#界面设计图Fig.2 C# interface design
窗体程序的代码设计
窗体程序的运行结果
图3 C#运行结果图Fig.3 C# operation results
进入 C#的 Windows窗体编程,就要介绍工具箱、窗体、控件、属性、事件响应、类、对象、方法等基本概念,这部分内容的学习较抽象,是《面向对象程序设计》的基本内容。[2]学生在完成前面《面向过程的程序设计》学习后仍需花时间精力逐步领悟这些概念与内容。这里想表达的是优秀教师是能够深入浅出的!具体教学中可作个比喻:“工具箱相当于孩童的积木箱,里面的控件就相当于积木块,孩童可选择积木块搭建一列火车、搭建一座城堡,你们可选择控件搭建你们想要的程序。一个控件就是一个软件模块,Windows窗体编程就是搭积木式的编程,你们可通过这个实例比较Windows平台编程与Dos平台编程的差异……”。[1]
为了让学生有更深入的体会,下面再比较用两种方式实现的菜单程序:
C#控制台程序(代码)[7]
C#控制台程序运行结果
图4 C#运行结果图Fig.4 C# operation results
上面的C#控制台程序和传统的C程序一样,是典型的菜单程序范例。[8]优点是能够进行编程思维训练,弱点是程序繁琐、用户界面不完善,一级菜单与二级菜单不清晰,无层次感。但在实际运行中是有层次的,进入时先进入一级菜单,再进入二级菜单;退出时先退出二级菜单,再退出一级菜单。若利用主菜单控件编写窗体程序,问题得到完满的解决。
图5 C#运行结果图Fig.5 C# operation results
C# Windows窗体程序(代码部分)
C# Windows窗体程序运行结果
图6 C#运行结果图Fig.6 C# operation results
从此例可看出,用主菜单控件编写的C#窗体程序非常简单容易,且界面完美、层次感清晰。而前面的控制台程序既繁琐、劳心费神,用户界面也不完善。运行得到的级联菜单不清晰,无层次感。[1]
图7 C#运行结果图Fig.7 C# operation results
纵观计算机语言及程序设计的发展历程(语言和程序的发展相辅相成),[9]从最早的面向机器的低级语言到面向人类的高级语言,程序设计经历了无数里程碑的跨越!正在不断兴起的智能机器、深度学习等,程序设计也必将经历无数里程碑的跨越!这里从教学的角度只探讨从 C语言编程跨越到 C#控制台编程、再从 C#控制台编程跨越到 C#的Windows窗体编程。寄希望能成为“海滩上一只美丽的贝壳”。
[1]施键兰, 黄文秀, 杨立娟.C语言程序设计教学探讨[J].软件, 2013, 34(1): 171-172.
[2]姜蕴莉.以兴趣为导向的高职院校《c#程序设计》教学改革探讨[J].软件, 2014, 35(10): 87-90.
[3]周洪安.21天学通C#[M].电子工业出版社.2009年.
[4]谭浩强.C程序设计(第四版)[M].清华大学出版社.2010年.
[5]梅创社.C语言程序设计[M].北京理工大学出版社.2010年.
[6]施键兰, 黄文秀.程序设计类课程中的教改研究[J].软件, 2016, 37(3): 34-35.
[7]陈强.C#编程新手自学手册[M].机械工业出版社.2012年.
[8]郭旭静, 周丽娜, 尚佳栋, 等.一种可编程实现的Ramanujan和计算方法[J].新型工业化, 2013, 3(2): 61-70.
[9]唐建中, 陈晓亮.可编程电液比例系统控制器[J].新型工业化, 2013, 3(9): 99-105.
Research on Teaching Practice from C Programming to C# Console Programming and form Programming
JIAO Hua
(Guizhou University of Commerce Guiyang Guizhou 550014)
the development of programming and the development of computer language are complementary to each other, and the procedural programming is the basis of object-oriented programming, The history of programming has gone through numerous milestones! As an example, the C family has experienced the evolution of C, C++ and C#.This article from the perspective of teaching from the C language programming to the C# console programming, and then from the C# console programming across the C# form Windows programming.Choose the best path, using comparative teaching method to achieve the transition of natural and easy to cross! This paper has practical value in the teaching of C# programming course.
C language; C# console program; Windows form programming; Teaching method
TP311
A
10.3969/j.issn.1003-6970.2017.03.005
贵州省教育厅2016年本科教学工程项目
焦华(1964-),男,苗族,贵州贵阳人,硕士研究生,贵州商学院计算机与信息工程学院副教授,研究方向为算法与程序。
本文著录格式:焦华.从C编程到C#控制台编程及窗体编程的教学实践研究[J].软件,2017,38(3):42-47