張俊友 王凡予 王樹鳳
摘? ? 要:文章以交通工程專業(yè)的信號配時為例,融入數(shù)學(xué)建模思想,采用理論與專業(yè)實際相結(jié)合的教學(xué)方法,介紹使用C語言解決信號配時的詳細步驟,使學(xué)生對數(shù)學(xué)建模思想有了全面的理解,并學(xué)會用C語言程序來解決本專業(yè)的實際問題。教學(xué)實踐證明,將數(shù)學(xué)建模思想引入“C語言程序設(shè)計”課程,在學(xué)生綜合能力的培養(yǎng)和提升上具有重要作用。
關(guān)鍵詞:數(shù)學(xué)建模;C語言程序設(shè)計;交通工程專業(yè);信號配時
中圖分類號:G642.0? ? ? ? ? 文獻標識碼:A? ? ? ? ? 文章編號:1002-4107(2018)12-0015-03
C語言程序設(shè)計對交通專業(yè)的學(xué)生來說不僅是職業(yè)技能的基本素養(yǎng),也體現(xiàn)著創(chuàng)造性思維素質(zhì)的培養(yǎng)過程[1]。“C語言程序設(shè)計”是理工科學(xué)生重要的基礎(chǔ)課程和通識課程,而且在大學(xué)一年級就排課授課。現(xiàn)階段多數(shù)大學(xué)生對計算機的應(yīng)用多停留在信息搜索、辦公軟件等基礎(chǔ)層面,對計算機強大的計算功能和個性化應(yīng)用等方面了解不足,究其原因是編程語言太過抽象和枯燥,教師授課案例老舊。本文就如何提高C語言程序設(shè)計的學(xué)習(xí)能力為目標,融入數(shù)學(xué)建模思想,將C語言程序設(shè)計與交通管理的信號控制結(jié)合引入課堂教學(xué)中,以此提高學(xué)生的學(xué)習(xí)興趣,最大限度地提高C語言的教學(xué)效果。為實現(xiàn)以上目標就需要從授課方案、過程設(shè)計與考評方法上進行教學(xué)改革。
一、數(shù)學(xué)建模與“C語言程序設(shè)計”
數(shù)學(xué)建模是運用數(shù)學(xué)語言和方法,描述實際現(xiàn)象,并解決實際問題的數(shù)學(xué)手段。在數(shù)學(xué)建模過程中需要運用知識將實際問題轉(zhuǎn)化成數(shù)學(xué)問題,但由于實際問題的邏輯性、影響因素等較為復(fù)雜,在進行定量分析時就需要簡化假設(shè)、分析內(nèi)在規(guī)律,才能客觀地仿真并描述事物規(guī)律和內(nèi)在機制。對于C語言程序,抽象過程實際就是運用各種符號對所描述系統(tǒng)的建模過程,培養(yǎng)抽象的計算思維方式就是培養(yǎng)使用C語言描述實際系統(tǒng)的思維過程[2]。
計算機的程序和指令是按照設(shè)計者的意圖進行設(shè)計和工作的,交通工程專業(yè)的課程、工程與應(yīng)用,都離不開計算機控制系統(tǒng),同時計算機控制系統(tǒng)中軟、硬件的工作過程和相互之間的協(xié)調(diào)也是交通工程工作分析、決策與執(zhí)行的基礎(chǔ)。為了讓學(xué)生掌握使用計算機處理實際工作中問題的思路和方法,并將其用于解決實際問題,在教學(xué)中就需要根據(jù)生活中的常識和合理的想象引導(dǎo)學(xué)生主動地思考并進行分析,嘗試用C語言程序?qū)崿F(xiàn)。
對C語言程序設(shè)計算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計方法等的學(xué)習(xí)有助于培養(yǎng)學(xué)生的抽象與邏輯思維能力[3]。學(xué)習(xí)C語言開發(fā)應(yīng)引導(dǎo)學(xué)生去思考和理解系統(tǒng)的工作原理及實現(xiàn)過程,把數(shù)學(xué)建模與C語言程序編程充分結(jié)合起來。另外,興趣是學(xué)習(xí)最好的老師,學(xué)有所成并學(xué)有所用不僅可以激發(fā)學(xué)生的學(xué)習(xí)力和成就感,還能幫助學(xué)生搭建對于學(xué)科全面的邏輯思維框架,加深對學(xué)科的理解。因此,在進行C語言的程序設(shè)計教學(xué)時,融入數(shù)學(xué)建模思維,對于培養(yǎng)學(xué)生良好的思維習(xí)慣具有重要的意義。
二、“C語言程序設(shè)計”與交通管理
以交通信號機為例,信號控制系統(tǒng)配時是根據(jù)季節(jié)性的出行時間特征、交叉口類型采取不同的分時段控制方案,其各自相應(yīng)的交通信號控制系統(tǒng)配時方案是交通專業(yè)學(xué)生必須掌握的重點內(nèi)容。學(xué)生們對于信號燈系統(tǒng)普遍有一定的了解,但對信號機及系統(tǒng)軟件的工作原理卻只知其然而不知其所以然。通過讓學(xué)生觀察信號燈燈色變化來理解信號燈相位、周期、綠信比等信號燈控制參數(shù)及信號燈的變換規(guī)律,他們能充分理解信號控制系統(tǒng)中信號機硬件、軟件、單片機控制電路、信號燈等組件的工作原理、工作過程。以兩相位信號控制為例,日間分為平峰、早高峰、午高峰、晚高峰時段,交通量較小的交叉口夜間控制方案可以為黃閃方案[4],圖1為沒有全紅時間的信號配時圖。在教學(xué)過程中,可以根據(jù)相位圖講解順序來進行編程,利用紅綠燈色轉(zhuǎn)換說明參數(shù)賦值,從而增強學(xué)生的接受程度。
圖1? 沒有全紅時間的信號配時圖
將C語言課程內(nèi)容與信號控制系統(tǒng)的開發(fā)結(jié)合起來,引導(dǎo)學(xué)生熟悉C語言程序設(shè)計中的分析建模、算法選擇、流程圖繪制等基本流程,并與專業(yè)知識的學(xué)習(xí)結(jié)合起來,如表1所示。通過用一個例子貫穿C語言課堂練習(xí),可以提高學(xué)生的學(xué)習(xí)興趣,并保證程序設(shè)計學(xué)習(xí)內(nèi)容的連貫性。
表1? 專業(yè)知識與編程步驟對應(yīng)表
數(shù)學(xué)建模的關(guān)鍵點在于將復(fù)雜的問題合理地分解成易于理解的問題。在教學(xué)過程中要引導(dǎo)學(xué)生將一個較復(fù)雜的程序設(shè)計分解為以下7個階段:分析項目需要來確定所需的數(shù)據(jù)結(jié)構(gòu)、給參與運算的變量賦初值、繪制流程圖、利用三種基本結(jié)構(gòu)解決問題、編寫程序、上機調(diào)試、輸出結(jié)果[5]。每個階段的任務(wù)都是相互獨立且具有明顯的完成標志,前一個階段所完成的任務(wù)是后一個階段工作的前提和基礎(chǔ),后一個階段的任務(wù)是前一個階段的深入,相鄰階段之間互相聯(lián)系,互相承接,共同完成一個程序設(shè)計任務(wù)。
編寫信號配時方案的程序時,按如下步驟實現(xiàn)。
步驟1:分析任務(wù)功能,確定時間參數(shù)和方位參數(shù)。
步驟2:給參與運算的變量賦初值。信號配時控制系統(tǒng)的配時方案須根據(jù)季節(jié)性的出行時間特征、交叉口類型采取不同的時段控制方案。
步驟3:繪制交通信號控制系統(tǒng)的流程圖,如圖2所示。
步驟4:利用三種基本結(jié)構(gòu)解決時段判斷以及信號燈控制等問題,其中圖3為分時段配時方案的多分支選擇結(jié)構(gòu)圖。
步驟5:根據(jù)流程圖和解決問題的結(jié)構(gòu)圖編寫程序。
其中信號燈控制子程序的編碼框架大致如下。
#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;
\\獲取時段
\\獲取時段的信號配時參數(shù)
\\SNRt= EWGt+EWYt
\\EWRt=SNGt+SNYt
\\T=SNRt+SNGt+SNYt=EWRt+EWGt+EWYt
do
{
for(t=0,t<T,t++)
(
//獲取信號配時周期內(nèi)的時間t
if(t<(SNRt-EWYt))
南北紅燈亮,東西綠燈亮,其他燈滅;
else if(t<(SNRt))
南北紅燈亮,東西黃燈亮,其他燈滅
else if if(t<(SNRt+SNGt))
南北綠燈亮,東西紅燈亮,其他燈滅
else
南北黃燈亮,東西紅燈亮,其他燈滅
}while(R==1);
Printf(“終止循環(huán)”);
Return 0;
)
步驟6:編輯好的程序可能會存在邏輯錯誤和語法錯誤,上機調(diào)試是用計算機語言解決實際問題的關(guān)鍵一步。
步驟7:輸出結(jié)果,將編輯好的程序經(jīng)過調(diào)試確定無誤后,得出理想的結(jié)果。
通過上述案例,不難發(fā)現(xiàn)在教學(xué)過程中可以將數(shù)學(xué)建模思想很好地融入到C語言程序設(shè)計過程中,幫助學(xué)生在掌握C語言基本知識的同時,系統(tǒng)地掌握程序設(shè)計的方法和步驟,避免給學(xué)生造成知識點零散瑣碎的錯覺,同時這種邊學(xué)邊練的學(xué)習(xí)方法使學(xué)生能夠?qū)W(xué)到的知識進行綜合應(yīng)用,并且及時反饋。通過聯(lián)系實際問題,動手綜合分析、設(shè)計和實操,進而得出合理科學(xué)的結(jié)果,這正是數(shù)學(xué)建模教學(xué)法的優(yōu)勢所在。
三、數(shù)學(xué)建模思想、“C語言程序設(shè)計”與交通管理的結(jié)合
數(shù)學(xué)建模思想可以用來設(shè)計解決一個問題的流程或者簡化該問題的方法,但是其過于抽象的數(shù)學(xué)語言與標記符號不能直接在實際應(yīng)用中發(fā)揮作用,而C語言作為一門優(yōu)秀的面向過程的計算機編程語言[6],封裝好了很多抽象的細節(jié),并且可以與硬件進行很好的底層通信,這個特點正好與交通工程中交通管理內(nèi)容,如信號配時要用到信號機的特點相契合,所以在教學(xué)過程中采用數(shù)學(xué)建模思想與C語言程序設(shè)計相結(jié)合的教育方式,既能加深學(xué)生對本專業(yè)課程如信號配時知識的理解,又能鞏固C語言程序設(shè)計的體系,建立數(shù)學(xué)建模的思維體系,因而該課題具有長遠的意義。
如何在有限的教學(xué)課時里實現(xiàn)總體教學(xué)目標是本文的一個難題,對此教學(xué)團隊采取的教學(xué)方法是能力驅(qū)動與過程激勵相結(jié)合,主要包括以下幾點。
1.C語言程序設(shè)計的方法與理念在工作與學(xué)習(xí)中處處體現(xiàn),學(xué)好該門課程裨益終生。
2.C語言程序設(shè)計的學(xué)習(xí)過程以能力體現(xiàn)掌握知識的熟練程度。
3.課程學(xué)習(xí)與實際應(yīng)用結(jié)合,鼓勵學(xué)生多方面分析問題,提高邏輯思維能力。
采用案例教學(xué)法,按照數(shù)學(xué)建模的思路框架將問題流程捋清,使問題簡化并融入到課堂教學(xué)中,避免過于枯燥的純理論介紹。例如,學(xué)習(xí)C語言循環(huán)結(jié)構(gòu)的實現(xiàn)形式時,從循環(huán)條件的選取、循環(huán)體的設(shè)置、循環(huán)控制變量的邊界條件的控制、循環(huán)的執(zhí)行過程等方面進行講解[7],既體現(xiàn)了數(shù)學(xué)分析中定量分析和研究需要簡化假設(shè)、分析內(nèi)在規(guī)律,客觀的仿真描述事物的規(guī)律、內(nèi)在機制的優(yōu)點,又體現(xiàn)了C語言知識寓教于學(xué)、寓學(xué)于練、寓練于做,如圖4。
圖4? 實踐教學(xué)的能力培養(yǎng)過程
注:信號控制參數(shù)包括:綠信比、相位差、通行能力、飽和度、延誤等。
在教學(xué)過程中,對循環(huán)的實現(xiàn)形式理論知識只做一些簡單講解,以期讓學(xué)生在不斷的實踐中加深對概念的理解。對循環(huán)結(jié)構(gòu)的編程,則通過具體程序?qū)ρh(huán)的實現(xiàn)形式加以分析和應(yīng)用。通過對復(fù)雜問題的流程化分析和約簡,學(xué)生能夠清晰地了解C語言的基本語法知識和一些常用算法,從而能夠比較輕松地完成C語言簡單編程,極大地激發(fā)學(xué)生的動手、動腦能力,真正實現(xiàn)C語言程序設(shè)計的開課目的。
四、總結(jié)
(一)化抽象為具體
“C語言程序設(shè)計”是一門邏輯性非常強的學(xué)科,正是因為其嚴密的邏輯以及較好的抽象性,同時“C語言程序設(shè)計”也被公認為是一門實踐性非常強的學(xué)科。本文摒棄了傳統(tǒng)、空洞且沒有實際背景的計算機教學(xué)案例,通過將C語言基礎(chǔ)知識、數(shù)學(xué)建模思維方式與交通信號配時開發(fā)結(jié)合起來,化抽象為具體,培養(yǎng)學(xué)生對計算機語言的認同感,提高了學(xué)生對本專業(yè)知識的興趣,特別是在教學(xué)過程中分階段任務(wù)完成情況的及時反饋,極大地增強了學(xué)生學(xué)習(xí)的成就感。
(二)新式教學(xué)法的效果
通過這種新型的教學(xué)方法,寓教于練,很大程度地激發(fā)學(xué)生的主觀能動性。學(xué)生們正是思維活躍的最好年紀,采用新穎的教學(xué)理念對培養(yǎng)理工科學(xué)生的創(chuàng)新理念具有深遠的影響。
課堂教學(xué)中始終堅持學(xué)生自主繪制程序示例的教學(xué)方法,對課堂作業(yè)記入平時成績,讓學(xué)生時常小有成就以激發(fā)其學(xué)習(xí)興趣。在課程考核中采用程序設(shè)計為主的試卷結(jié)合上機考試來進行考核。在整個過程中既要求學(xué)生學(xué),又鼓勵學(xué)生“我要學(xué)”,從職業(yè)規(guī)劃與人生規(guī)劃方面讓學(xué)生完成“我得學(xué)”的思維轉(zhuǎn)變,變被動學(xué)習(xí)為主動學(xué)習(xí),學(xué)有所成,初步掌握編程設(shè)計方法,推動課堂氣氛良好推進。經(jīng)過四年的教學(xué)驗證,學(xué)生的程序設(shè)計方法和能力都普遍有較大提高。
(三)教學(xué)相長
希望通過這種教學(xué)理念,可以讓學(xué)生在解決本專業(yè)或者其他學(xué)術(shù)問題時,能夠運用在交通工程信號配時實踐中所學(xué)的C語言基礎(chǔ)知識,以及數(shù)學(xué)建模的思維方式,通過算法分析、觀察實驗結(jié)果、對程序運行結(jié)果進行分析處理等環(huán)節(jié)最終得出正確的研究結(jié)論。同時這對教師隊伍也提出了新的要求,要與時俱進,豐富自己的專業(yè)素養(yǎng),解答學(xué)生學(xué)習(xí)中遇到的問題,更好地促進交通工程學(xué)科的良性發(fā)展。
參考文獻:
[1]吳紹兵.計算思維和程序設(shè)計能力的培養(yǎng)[J].計算機教育,
2011,(16).
[2]汪紅兵,姚琳,武航星,等.C語言程序設(shè)計課程中的計算
思維探析[J].中國大學(xué)教學(xué),2014,(9).
[3]劉光蓉.融入計算思維的C語言實驗教學(xué)設(shè)計[J].實驗室
研究與探索,2015,(10).
[4]朱云龍,陳哲,王哲民,等.針對C語言的面向方面語言設(shè)
計與實現(xiàn)[J].小型微型計算機系統(tǒng),2016,(12).
[5]朱安平.一種C語言函數(shù)教學(xué)的設(shè)計與實踐[J].計算機工
程與科學(xué),2014,(S1).
[6]羅杰紅,胡建榮.基于“四驅(qū)式”階梯遞進的《C語言程序
設(shè)計》課程教學(xué)體系設(shè)計與實踐[J].職業(yè)技術(shù)教育,2009,(17).
[7] 趙媛,王杰,周立軍,等.以計算思維為導(dǎo)向的C語言程
序設(shè)計MOOC建設(shè)[J].實驗技術(shù)與管理,2018,(4).