数学建模思想在交通工程 “C语言程序设计”教学改革中的应用
2018-02-13张俊友王凡予王树凤
张俊友 王凡予 王树凤
摘 要:文章以交通工程专业的信号配时为例,融入数学建模思想,采用理论与专业实际相结合的教学方法,介绍使用C语言解决信号配时的详细步骤,使学生对数学建模思想有了全面的理解,并学会用C语言程序来解决本专业的实际问题。教学实践证明,将数学建模思想引入“C语言程序设计”课程,在学生综合能力的培养和提升上具有重要作用。
关键词:数学建模;C语言程序设计;交通工程专业;信号配时
中图分类号:G642.0 文献标识码:A 文章编号:1002-4107(2018)12-0015-03
C语言程序设计对交通专业的学生来说不仅是职业技能的基本素养,也体现着创造性思维素质的培养过程[1]。“C语言程序设计”是理工科学生重要的基础课程和通识课程,而且在大学一年级就排课授课。现阶段多数大学生对计算机的应用多停留在信息搜索、办公软件等基础层面,对计算机强大的计算功能和个性化应用等方面了解不足,究其原因是编程语言太过抽象和枯燥,教师授课案例老旧。本文就如何提高C语言程序设计的学习能力为目标,融入数学建模思想,将C语言程序设计与交通管理的信号控制结合引入课堂教学中,以此提高学生的学习兴趣,最大限度地提高C语言的教学效果。为实现以上目标就需要从授课方案、过程设计与考评方法上进行教学改革。
一、数学建模与“C语言程序设计”
数学建模是运用数学语言和方法,描述实际现象,并解决实际问题的数学手段。在数学建模过程中需要运用知识将实际问题转化成数学问题,但由于实际问题的逻辑性、影响因素等较为复杂,在进行定量分析时就需要简化假设、分析内在规律,才能客观地仿真并描述事物规律和内在机制。对于C语言程序,抽象过程实际就是运用各种符号对所描述系统的建模过程,培养抽象的计算思维方式就是培养使用C语言描述实际系统的思维过程[2]。
计算机的程序和指令是按照设计者的意图进行设计和工作的,交通工程专业的课程、工程与应用,都离不开计算机控制系统,同时计算机控制系统中软、硬件的工作过程和相互之间的协调也是交通工程工作分析、决策与执行的基础。为了让学生掌握使用计算机处理实际工作中问题的思路和方法,并将其用于解决实际问题,在教学中就需要根据生活中的常识和合理的想象引导学生主动地思考并进行分析,尝试用C语言程序实现。
对C语言程序设计算法、数据结构、程序设计方法等的学习有助于培养学生的抽象与逻辑思维能力[3]。学习C语言开发应引导学生去思考和理解系统的工作原理及实现过程,把数学建模与C语言程序编程充分结合起来。另外,兴趣是学习最好的老师,学有所成并学有所用不仅可以激发学生的学习力和成就感,还能帮助学生搭建对于学科全面的逻辑思维框架,加深对学科的理解。因此,在进行C语言的程序设计教学时,融入数学建模思维,对于培养学生良好的思维习惯具有重要的意义。
二、“C语言程序设计”与交通管理
以交通信号机为例,信号控制系统配时是根据季节性的出行时间特征、交叉口类型采取不同的分时段控制方案,其各自相应的交通信号控制系统配时方案是交通专业学生必须掌握的重点内容。学生们对于信号灯系统普遍有一定的了解,但对信号机及系统软件的工作原理却只知其然而不知其所以然。通过让学生观察信号灯灯色变化来理解信号灯相位、周期、绿信比等信号灯控制参数及信号灯的变换规律,他们能充分理解信号控制系统中信号机硬件、软件、单片机控制电路、信号灯等组件的工作原理、工作过程。以两相位信号控制为例,日间分为平峰、早高峰、午高峰、晚高峰时段,交通量较小的交叉口夜间控制方案可以为黄闪方案[4],图1为没有全红时间的信号配时图。在教学过程中,可以根据相位图讲解顺序来进行编程,利用红绿灯色转换说明参数赋值,从而增强学生的接受程度。
图1 没有全红时间的信号配时图
将C语言课程内容与信号控制系统的开发结合起来,引导学生熟悉C语言程序设计中的分析建模、算法选择、流程图绘制等基本流程,并与专业知识的学习结合起来,如表1所示。通过用一个例子贯穿C语言课堂练习,可以提高学生的学习兴趣,并保证程序设计学习内容的连贯性。
表1 专业知识与编程步骤对应表
数学建模的关键点在于将复杂的问题合理地分解成易于理解的问题。在教学过程中要引导学生将一个较复杂的程序设计分解为以下7个阶段:分析项目需要来确定所需的数据结构、给参与运算的变量赋初值、绘制流程图、利用三种基本结构解决问题、编写程序、上机调试、输出结果[5]。每个阶段的任务都是相互独立且具有明显的完成标志,前一個阶段所完成的任务是后一个阶段工作的前提和基础,后一个阶段的任务是前一个阶段的深入,相邻阶段之间互相联系,互相承接,共同完成一个程序设计任务。
编写信号配时方案的程序时,按如下步骤实现。
步骤1:分析任务功能,确定时间参数和方位参数。
步骤2:给参与运算的变量赋初值。信号配时控制系统的配时方案须根据季节性的出行时间特征、交叉口类型采取不同的时段控制方案。
步骤3:绘制交通信号控制系统的流程图,如图2所示。
步骤4:利用三种基本结构解决时段判断以及信号灯控制等问题,其中图3为分时段配时方案的多分支选择结构图。
步骤5:根据流程图和解决问题的结构图编写程序。
其中信号灯控制子程序的编码框架大致如下。
#Include<stdio.h>
void main()
{
Int SNR,SNG,SNY,EWR,EWG,EWY,R,T,t=0;
\\ESWN东南西北,RGY红绿黄,\\r是否运行
Int SNRt,SNGt,SNYt,EWRt,EWGt,EWYt;
\\获取时段
\\获取时段的信号配时参数
\\SNRt= EWGt+EWYt
\\EWRt=SNGt+SNYt
\\T=SNRt+SNGt+SNYt=EWRt+EWGt+EWYt
do
{
for(t=0,t<T,t++)
(
//获取信号配时周期内的时间t
if(t<(SNRt-EWYt))
南北红灯亮,东西绿灯亮,其他灯灭;
else if(t<(SNRt))
南北红灯亮,东西黄灯亮,其他灯灭
else if if(t<(SNRt+SNGt))
南北绿灯亮,东西红灯亮,其他灯灭
else
南北黄灯亮,东西红灯亮,其他灯灭
}while(R==1);
Printf(“终止循环”);
Return 0;
)
步骤6:编辑好的程序可能会存在逻辑错误和语法错误,上机调试是用计算机语言解决实际问题的关键一步。
步骤7:输出结果,将编辑好的程序经过调试确定无误后,得出理想的结果。
通过上述案例,不难发现在教学过程中可以将数学建模思想很好地融入到C语言程序设计过程中,帮助学生在掌握C语言基本知识的同时,系统地掌握程序设计的方法和步骤,避免给学生造成知识点零散琐碎的错觉,同时这种边学边练的学习方法使学生能够将学到的知识进行综合应用,并且及时反馈。通过联系实际问题,动手综合分析、设计和实操,进而得出合理科学的结果,这正是数学建模教学法的优势所在。
三、数学建模思想、“C语言程序设计”与交通管理的结合
数学建模思想可以用来设计解决一个问题的流程或者简化该问题的方法,但是其过于抽象的数学语言与标记符号不能直接在实际应用中发挥作用,而C语言作为一门优秀的面向过程的计算机编程语言[6],封装好了很多抽象的细节,并且可以与硬件进行很好的底层通信,这个特点正好与交通工程中交通管理内容,如信号配时要用到信号机的特点相契合,所以在教学过程中采用数学建模思想与C语言程序设计相结合的教育方式,既能加深学生对本专业课程如信号配时知识的理解,又能巩固C语言程序设计的体系,建立数学建模的思维体系,因而该课题具有长远的意义。
如何在有限的教学课时里实现总体教学目标是本文的一个难题,对此教学团队采取的教学方法是能力驱动与过程激励相结合,主要包括以下几点。
1.C语言程序设计的方法与理念在工作与学习中处处体现,学好该门课程裨益终生。
2.C语言程序设计的学习过程以能力体现掌握知识的熟练程度。
3.课程学习与实际应用结合,鼓励学生多方面分析问题,提高逻辑思维能力。
采用案例教学法,按照数学建模的思路框架将问题流程捋清,使问题简化并融入到课堂教学中,避免过于枯燥的纯理论介绍。例如,学习C语言循环结构的实现形式时,从循环条件的选取、循环体的设置、循环控制变量的边界条件的控制、循环的执行过程等方面进行讲解[7],既体现了数学分析中定量分析和研究需要简化假设、分析内在规律,客观的仿真描述事物的规律、内在机制的优点,又体现了C语言知识寓教于学、寓学于练、寓练于做,如图4。
图4 实践教学的能力培养过程
注:信号控制参数包括:绿信比、相位差、通行能力、饱和度、延误等。
在教学过程中,对循环的实现形式理论知识只做一些简单讲解,以期让学生在不断的实践中加深对概念的理解。对循环结构的编程,则通过具体程序对循环的实现形式加以分析和应用。通过对复杂问题的流程化分析和约简,学生能够清晰地了解C语言的基本语法知识和一些常用算法,从而能够比较轻松地完成C语言简单编程,极大地激发学生的动手、动脑能力,真正实现C语言程序设计的开课目的。
四、总结
(一)化抽象为具体
“C语言程序设计”是一门逻辑性非常强的学科,正是因为其严密的逻辑以及较好的抽象性,同时“C语言程序设计”也被公认为是一门实践性非常强的学科。本文摒弃了传统、空洞且没有实际背景的计算机教学案例,通过将C语言基础知识、数学建模思维方式与交通信号配时开发结合起来,化抽象为具体,培养学生对计算机语言的认同感,提高了学生对本专业知识的兴趣,特别是在教学过程中分阶段任务完成情况的及时反馈,极大地增强了学生学习的成就感。
(二)新式教学法的效果
通过这种新型的教学方法,寓教于练,很大程度地激发学生的主观能动性。学生们正是思维活跃的最好年纪,采用新颖的教学理念对培养理工科学生的创新理念具有深远的影响。
课堂教学中始终坚持学生自主绘制程序示例的教学方法,对课堂作业记入平时成绩,让学生时常小有成就以激发其学习兴趣。在课程考核中采用程序设计为主的试卷结合上机考试来进行考核。在整个过程中既要求学生学,又鼓励学生“我要学”,从职业规划与人生规划方面让学生完成“我得学”的思维转变,变被动学习为主动学习,学有所成,初步掌握编程设计方法,推动课堂气氛良好推进。经过四年的教学验证,学生的程序设计方法和能力都普遍有较大提高。
(三)教学相长
希望通过这种教学理念,可以让学生在解决本专业或者其他学术问题时,能够运用在交通工程信号配时实践中所学的C语言基础知识,以及数学建模的思维方式,通过算法分析、观察实验结果、对程序运行結果进行分析处理等环节最终得出正确的研究结论。同时这对教师队伍也提出了新的要求,要与时俱进,丰富自己的专业素养,解答学生学习中遇到的问题,更好地促进交通工程学科的良性发展。
参考文献:
[1]吴绍兵.计算思维和程序设计能力的培养[J].计算机教育,
2011,(16).
[2]汪红兵,姚琳,武航星,等.C语言程序设计课程中的计算
思维探析[J].中国大学教学,2014,(9).
[3]刘光蓉.融入计算思维的C语言实验教学设计[J].实验室
研究与探索,2015,(10).
[4]朱云龙,陈哲,王哲民,等.针对C语言的面向方面语言设
计与实现[J].小型微型计算机系统,2016,(12).
[5]朱安平.一种C语言函数教学的设计与实践[J].计算机工
程与科学,2014,(S1).
[6]罗杰红,胡建荣.基于“四驱式”阶梯递进的《C语言程序
设计》课程教学体系设计与实践[J].职业技术教育,2009,(17).
[7] 赵媛,王杰,周立军,等.以计算思维为导向的C语言程
序设计MOOC建设[J].实验技术与管理,2018,(4).