發布時間:2023-08-03 16:44:32
序言:寫作是分享個人見解和探索未知領域的橋梁,我們為您精選了8篇的程序設計的結構樣本,期待這些樣本能夠為您提供豐富的參考和啟發,請盡情閱讀。
課程銜接 層次性教學 任務驅動教學
一、引言
設計、實現一個復雜或者高級項目的軟件項目,可能需要涉及程序設計語言、數據結構、算法設計與分析、計算機網絡、數據庫等許多課程。而計算機科學技術專業的每一門課程都是從基礎理論入手,復雜、高級項目不適合作為課程的學習案例或者習題。
不少課程選用比較簡單和容易理解的小項目作為例題講解知識點或者作為習題鞏固學生所學知識點。比如約瑟夫程序,在程序設計語言中是鏈表操作習題,而數據結構課程中又作為線性表的習題或者上機題目;圖書館管理程序,可能作為數據結構課程的線性表的課程設計題目,也可能作為數據庫課程范式優化的例題;集合的交集和并集可能作為離散數學課程的習題,也常被選做數據結構課程線性表操作的算法優化例題;網絡蜘蛛常被作為計算機網絡課程的課程設計題目,也常因為其中的典型樹形結構關系被數據結構課程選作綜合性課程設計題目;多優先級作業調度既是操作系統課程的主要研究內容,也是數據結構課程隊列內容的習題。
以往的教學實踐反映,很多學生學完課程之后并沒有達到預期的目的。究其原因,一是對學生動手能力的培養沒有到位,以至于部分同學對課程的學習還停留在“紙上談兵”的階段;二是對學生自主學習能力的培養沒有到位,以至于涉及講授范圍之外的問題學生就不知從何入手。可以采用分層次教學,就是要因材施教,根據大多數學生的情況,正確處理教學中難與易、快與慢、多與少、應知與應會的關系。充分發揮學生學習的主體作用,轉化差生、培養優生,全方位增進教學效果。
目前的教學活動,主要考慮的先后關系,而沒有建立良好的課程的銜接關系。需要研究、整理他們直接的銜接關系。
需要整理本課程案例,考慮與先修課程或者后修課程的關系及所選題目的價值和意義,同時對案例采用層次性分解方法,滿足層次性教學需求。
鑒于計算機專業本科教學課程數量多,本文針對計算機兩大具有緊密關系的核心基礎課程《數據結構》和《程序設計C語言》進行探索,并期望擴展到其他課程。
二、課程的銜接關系
C語言程序設計與數據結構是工科院校計算機專業中開設的兩門重要的專業基礎課。在以往教學中,這兩門課程是相對獨立、分開授課的,因此導致內容脫節,教學效果差。一般C語言程序設計課程只注重C語言的語法體系,因此學習后卻不能用C語言進行程序設計;后者則注重講授抽象的數據關系和算法在計算機中的表示及實現,學生能進行抽象算法的描述,上機實踐應用時卻無從下手。然而,這兩門課程都以培養學生解決實際問題的程序設計能力為共同目標。因此,如何將這兩門課程有機地結合起來,構建C語言與數據結構的新體系,改革教學方法,提高教學質量,成了當前教學改革中亟待解決的問題。
在傳統的教學模式下,C語言程序設計與數據結構這兩門課程分開教學。C語言程序設計的學習主要在語言語法的層次上,數據結構難度較大,注重思維訓練,造成學生不能結合有效結合這兩門課程運用到實際中去。通過不斷探索,認識到這兩門課程有很多內在聯系,如軟件是用一種程序設計語言編寫解決該問題的算法,通過編譯、鏈接成為可執行程序而成,而算法是通過處理輸入數據轉換為輸出的解決方案,因此數據結構和程序設計語言密不可分;再比如數據結構討論的抽象數據關系和算法要用C語言去實現等。
針對差異化的學生現狀,整理課程關系,精巧的設計教學案例和習題實現任務驅動式教學法,對于調動學生學習興趣,先修課程的簡單案例讓學生能夠逐漸獨立實現,有助于學生產生滿足感,增加學習自信心;對于案例的擴展性引導,啟發學生深入思考和逐步掌握自學方法,通過自學后修課程,提出的較難的問題又有助于激發學生參與后修課程學習的積極性。
三、擬解決的主要問題
數據結構與C語言課程的結合方式的探討,針對探討結果設計實際結合方法,并在學生中實踐,選擇最佳結合方式。
數據結構與C語言,每門課程需要有經驗的任課教師結合本課程特點,探討并確定各個案例與各知識點和其他課程關系,針對學生差異性現狀和任務驅動式及層次性教學需求,對選擇的案例采用遞增式設計;確定跨課程案例及相關課程名,涉及的知識點。探討選擇的習題(包括課堂練習題、課后思考題、課后作業、上機實驗題和課程設計題目)于知識點及其他課程的關系,標注習題難度級別,以達到層次性教學目的。
針對這兩門課程的案例和習題,深入探討相互關系,特別是相互的銜接性,C語言課程首先需要講解基本語法知識,幫助初學者建立簡單的程序設計過程思想,但由于教學時間限制,只依靠課內學習和課后作業及上機實驗是不能充分達到熟練運行C語言解決問題,編寫項目程序的目的。
C語言是大一學生首先接觸的程序設計語言,加上許多學生還存在中學時期的一切依賴老師的學習方法和觀念,未能進一步學習并提高程序設計能力,因此在后續課程中,比如數據結構課程中需要在講解數據結構抽象數據類型及解決問題的時候,學生應該嘗試借用C語言編程實現抽象算法。因此,應該結合學生的這個實際情況,進一步細化和分解選擇的案例和習題,讓學生在C語言學習過程中學會應用C語言解決和數據結構簡單問題相關任務,為數據結構課程打下堅實基礎;而數據結構課程中有意識的安排一些案例和習題,讓學生能夠有運用C語言解決簡單問題的能力,并通過數據結構課程的學習和培養,掌握復雜問題的解決方法和更加熟練的應用C語言工具。
四、總結
根據計算機課程關系,設計優化與其他相關課程有關系的案例與習題,一來可以引導學生理解后修課程部分內容,引起學習興趣,二來在一些先修課程已經介紹本課程該知識點的基礎上,提出新的解決方案或者優化方法,更容易激發學生探索問題的好奇心和解決復雜問題的滿足感,加強學生理解課程相互關系和培養計算機創新思維。
以數據結構課程和程序設計語言課程為例整理課程關系,研究和設計教學案例及習題,滿足學生差異化需求和對學習內容的興趣,進行層次性教學,將其經驗和方法最終推廣到計算機本科教學的各課程。
參考文獻:
[1]黃迪明.C語言程序設計(第2版)[M].成都:電子科技大學出版社.
[2]吳躍,李樹全,尚明生.數據結構與算法(第2版)[M].北京:機械工業出版社,2010.
[3]薩師煊.數據庫(第3版)[M].北京高等教育出版社,2000.
[4]傅彥,顧小豐,王慶先.離散數學及其應用.北京:高等教育出版社,2007.
關鍵詞:單片機 程序編制 模塊執行 結構設置
中圖分類號:TP368 文獻標識碼:A 文章編號:1007-9416(2014)05-0094-01
目前單片機的應用十分廣泛,在眾多行業中都擔負起系統控制的任務,而單片機的功能實現則多數依靠應用程序的控制,所以針對單片機的程序編制問題就成為單片機應用的基礎性問題,如何選擇合適的編寫結構以及方法等成為了研究的重點內容。
1 單片機程序結構設計的特征
單片機的程序編制應當從程序開發的語言入手,并針對不同的功能選擇不同的程序結構,這樣才能為程序編制打下良好的基礎,因此在實際的操作中如何選擇程序的結構模式就成為了編程的要務。隨著計算機技術的成熟以及單片機的技術發展,結構化的程序設計方式被提出并應用。其主要是將程序編寫納入到模塊模式下,利用結構標準化、模塊化等來實現對程序的編制,利用模塊化結構來簡化編程的復雜程度。此類設計中是的是可重復利用性,可移植的標準性。簡化程序的編制過程提高模塊的利用率。從而降低出錯的概率,提高單片機的應用效果。可以按照不同的單片機功能選擇不同的模塊,將各個模塊的功能突出應用到系統中,并在特定的工作環境中解決特殊的問題。總是對軟件結構的合理配置,理順模塊之間的關系,從而從宏觀上完成對編程流程和結構的控制。從而實現對復雜問題的簡化,提高單片機的編程效率,并提高對復雜問題的解決能力。
2 單片機的開發語言選擇
在單片機的程序編制中C語言因為在應用上的優勢而被廣泛采用,方便的應用庫函數容易實現復雜數據的結構。但是C語言不能在時序控制上獲得優勢,速度型算法上不易達到單片機的要求。但是隨著C語言被納入到編程范圍后,其匯編混合編程的模式已經可以幫助彌補其語言上的缺點。隨著單片機的調試技術的發展,單片機已經適應了C語言程序控制,從而為高級語言進入到編程中帶來了可能。
3 單片機編程的常用程序結構
為了方便進行單片機的程序編制,通常可以將其程序劃分為多種結構以此適應不同的功能需求。具體結構如下。
3.1 基本程序結構
其結構包括了初始化程序和工作程序兩個部分,初始化程序負責在單片機上電后的復位,首先執行初始化程序,程序只要在工作前執行一次即可。初始化程序運行對個各種端口和變量、定時器、ADC等進行全面的檢測和初始化。如果需要可以建立不同的初始化分支,對不同的終端進行檢測和初始化,根據不同的條件來選擇不同的初始化方式,比如冷啟動和熱啟動的選擇。主程序則是一個循環程序,這所執行的是單片機的工作內容,實現具體的功能,如檢測、控制、通訊、人機交互等等。各個功能都是有子程序進行控制,主程序是控制調用這些程序的指揮者,以此方便模塊化的程序編制和應用。
3.2 模塊結構
在單機片程序中主程序負責的是模塊調度工作,將實現功能的各個子程序進行合理調度,此時被調度的程序就是模塊。這樣的模塊中所附加的是一定的功能性,采用模塊化的程序結構可以方便程序多種功能的集成,即在不增加主程序難度的同時添加或者減少模塊可以實現系統功能的改變,以此實現程序的優化,方便維護與降低出錯率。
3.3 模塊控制機制
調度主程序時不是所有的模塊都被應用,所以模塊在一段時間內應被控制,不是所有的循環中都需要所有模塊參與。或者某些模塊的執行不是經常性的而是在滿足某些條件后才被執行。為了解決這個問題,可以給模塊設定一個標志,模塊在執行前應判斷自身的標志位,只有標志位是可用的狀態下才能執行相關的操作。如果標志位不可用則應進行返回程序,不執行對應的模塊功能。
3.4 優先調用機制
主程序在調用模塊的時候應有先后之別,因為模塊運行的優先級將限制其應用,如果沒有優先限制某些重要模塊不能相應或者不及時。因此在調用中主程序應可以對模塊的優先級進行分析與選擇,按照不同的處理事件來區分模塊的優先級。對模塊功能的標志進行檢測,對優先級較高的模塊進行調用,然后查詢后續功能模塊并異常類推。如果出現不可用的情況則進行新一輪的檢測并從優先級較高的模塊開始。
3.5 前后臺結構
前后臺的結構是一種中斷機制的引入,即按照實時性事件與突發事件進行差異化對待,實時性較高的事件被前置,讓其在中斷中響應,將實時性較低的事件和任務納入到主要程序中,如顯示刷新、掃描等等。形成一個以中斷為界限的前后臺執行程序結構。前后臺的程序應按照大多數任務需求進行功能調度。在使用中應注意前后臺任務結構的時候,盡可能減少中斷服務程序的執行時間。可以在中斷服務程序中設置一些標志,然后由后臺程序檢測標志來進行進一步處理。這樣可以很大程度上避免前臺程序和后臺程序互相搶奪處理器資源,造成某些低優先級任務阻塞。目前隨著單片機的發展,有些單片機的中斷資源大為豐富,已經可以將所有的任務都可以通過中斷來實現,這樣我們就可以讓中斷承擔全部工作,廢除后臺程序,除了只保留必要的初始化程序外就進人低功耗模式等待中斷來處理其他任務。
4 結語
上述對單片機的程序編制結構進行了分析,從基礎的結構類型出發分析了多種模式框架下,單片機程序執行的差異。同時說明多種結構不是獨立存在的,而應在具體問題的解決中進行選擇,選擇合理而準確的程序結構,有利于單片機功能的實現,也可提高調度機制的合理性,從而有效的指揮單片機完成各種功能。
參考文獻
[1]王玲.提高單片機程序設計有效性的策略探究[J].考試(綜合版),2012(01):15-16.
[2]劉杰.論單片機程序設計[J].現代商貿工業,2011(07):156-157.
軟件工程飛速發展,被應用于各個行業。對軟件工程的結構建設是對軟件開發的重要過程,也是保障其應用的重要方式。而完善結構建設的重要過程,是將其應用于實際,應當從了解需求從而分析開始。文章描述了軟件工程中的結構建設的具體流程和方式,并且通過具體案例分析了需求的實施方案。
關鍵詞:
軟件工程;結構建設;需求分析
1軟件工程中的結構建設
1.1軟件工程中的結構建設流程
如圖1所示,首先對數據分析進行研究,通過審查數據分析結果,主要從所做軟件的用戶需求中做出分析,從而設計數據流程的加工過程。然后以數據流程圖的分析結果為依據處理確定類型。要求針對變換型和事物型,做出分析和處理。從而對系統初始結構進行推導。根據啟發式的原則對初始結構圖作出相應的改進,便可以得到人們需求的結構圖。利用分析模型ER圖和數據字典對數據做出合理編排,從而設計出數據庫和數據文件。最后以加工規格的說明和狀態轉換圖為依托,進行工程設計。
1.2軟件工程中的結構建設方法
驅動設計方法依據數據流程圖的方法設計過程。在這一過程中,軟件需求階段的SA有所銜接,從數據流圖的表述轉變為可以應用的程序結構的數據描述。對于典型的數據分類,其中包含了變換型數據流和事務型數據流,在其類型存在區別的時候,所明確的系統結構要存在差異。可以把系統內的所有數據流當成變換流,數據沿寫入系統的通道,在經歷了數據的變化,從而將外部特征轉換為內部描述,再通過變化中心作出分析處理,從輸出系統通道離開,而得出數據就是變換流。然而在遇到事務流具有明顯特征的時候,可以采用事務型的映射方式從而進行結構建設。其中變換流系統的機構中包含了輸出變換和輸入變換。在事務流的處理中,數據通過輸入通過進入事務中心,在事務中心完成數據動作的執行,這其中事務中心是明顯存在的,所有活動流都從事務中心出發,再依據輻射的形狀輸出。變換分析是從數據流圖中導出系統結構圖,首先對數據流圖完成更新,然后從輸入和輸出以及變換中心進行分區,最后進行級別分解。在分析事務的過程里,從數據流圖分析開始,從上到下進行分步驟解析,才能最終建立系統結構。首先需要對事物中心的每天過程信息進行確認,然后利用數據流圖映射作為系統結構的高層。最后再次分解從而確定事物模塊的下層操作模塊。
2軟件工程中的需求分析
在軟件工程的建設中,對軟件需求分析是最先開始的階段。例如對用戶的使用情況和期望情況進行調查,統計數據,從而分析得出軟件工程的建設方向。本文以打車軟件為例,舉出2016年9—12月我國32個大中城市1765份調查結果的綜合分析,如圖2所示。對其使用功能和期待做出具體分析,從而得出軟件的使用方向,確定建設標準。那么對軟件工程的需求分析時應注意的問題,作如下分析。
2.1綜合行業特性展開需求分析
軟件工程的需求分析要針對所處行業的特性進行分析,然后才能結合需求進行分析。只有切合行業針對性的軟件工程建設才能在應用中發揮有效作用。通過針對不同行業所屬領域的熱衷進行軟件的開發和設計。例如工業領域對軟件要求自動化或者智能化的功能,而對于硬件生產過程,軟件的設計建設要從硬件使用中的方向開始。決不能在不了解使用意圖的情況下,沒有目標的開始軟件建設,這樣會導致最終設計結構與硬件無法匹配。
2.2分析結果要求清晰明了
軟件工程的需求一定要做到明確,已經邏輯基礎使其具備完整邏輯功能。在開展軟件設計的時候,如果存在不清晰的建設需求,將會令軟件的調試無法完成,也會在使用過程中出現很多問題,那么就無法完善用戶體驗。所以一般情況下,一定要先與用戶溝通好設計需求,避免沖突發生。由于用戶并不了解軟件設計的原理,在設計完成后,發現與自身期望相去甚遠,就會導致無法達到目標價值的體現。所以軟件工程必須了解需求的重要性,以用戶需求為中心從而完成設計。
2.3軟件需求分析是促進軟件工程完成的前提
軟件工程的順利開展要以軟件需求分析為前提。如果需求分析不充分的話,必然會導致軟件工程無法順利進行,一方面會浪費大量前期工作,另一方面可能導致軟件工程無法按時完成,從而要對工程需求予以確定,同時呈現用戶要求的編程邏輯。從符合實際的工程需求出發,從而與硬件完成匹配,才能切實投入生產以便應用。如果在建設過程中片面強調軟件突破,而造成硬件無法匹配,會帶來重大損失,從而導致硬件發展無法跟上軟件進程。所以要盡可能完成硬件和軟件的協調,以確保軟件的需求分析切實可用,才能順利開始軟件工程的建設。
[參考文獻]
[1]趙承乾.軟件需求分析方法創新分析[J].計算機光盤軟件與應用,2013(3):56-57.
關鍵詞: 鋼結構設計;支撐布置;空間分析程序
Abstract: The plant design should make every effort to meet the technical requirements under the premise of rational harmonic structure, layout and process layout of the contradiction between, as much as possible to use seismic performance and economical structural system. In this paper, an instance of the power plant project characteristics, the use of STAAD Pro technical analysis of its structure and layout design optimization, to provide a reference for such projects and references.
Keywords: steel structure design; support arrangement; spatial analysis procedures
1 工程概況
某發電廠主廠房由汽機房和煤倉間兩大部分組成,廠房縱向總長為81m,柱距分別為9m和12m。橫向總長45m,其中汽機房(即AB軸線間)30m,煤倉間(即BC軸線間)15m。主廠房外墻采用壓型鋼板輕型封閉,僅在B軸線處即汽機房和煤倉間分界處以及6.6kV配電室、MCC室、I/O站等少量局部設置填充墻。
2 廠房鋼結構設計分析及優化
主廠房與一般建筑物相比具有平面不規則性且樓面經常出現大開孔導致樓板不連續,在地震作用下容易出現扭轉。樓面活荷載大且荷載分布不均,如煤斗、粉斗、高低壓加熱器、除氧器等重型設備分布相對集中,有些設備還往往位于較高樓層。由于工藝設備和管道布置的限制,主廠房結構的抗側力構件特別是支撐構件的設置受到很大的制約。因而主廠房結構往往在水平和垂直方向上剛度和質量分布都不均勻,給抗震設計帶來不利影響。根據主廠房結構的上述特點,在對其進行結構設計時,與工藝專業緊密配合,在盡力滿足工藝要求的前提下,合理地調和結構布置與工藝布置之間產生的矛盾,盡可能地選用抗震性能好又經濟合理的結構體系,并且在結構設計中結合本工程的特點進行了布置優化的工作。
2.1結構體系分析
主廠房橫向結構體系由汽機房A列柱通過屋面大跨度實腹式鋼梁及下部兩層汽機平臺鋼梁與煤倉間框架相連,與煤倉間框架及支撐共同組成。常規電廠通常是汽機房A列柱與除氧間和煤倉間雙列框架共同組成抗側力體系,具有較好的橫向剛度。而本工程按照工藝布置,主廠房不設置除氧間,橫向僅有煤倉間單列框架,承受橫向水平地震作用及風荷載的能力較弱。針對這一情況,設計時對橫向框架采用剛接加支撐的方案,即汽機房屋面鋼梁、煤倉間各層框架橫梁與框架柱均采用剛接,同時,在煤倉間承擔較大設備荷載(粉斗等)的③、④、⑥、⑦軸線皮帶層以下貫通設置大十字交叉撐,在汽機房兩層平臺內工藝允許的地方亦設置一組垂直支撐,這樣一來,橫向框架具有較好的側向剛度,適應由支撐梁柱的屈服順序機制,成為雙重抗側力體系,也符合多道設防的原則。
主廠房縱向框架主要采用框架梁與柱鉸接加支撐的方案。經與工藝專業協調配合后,在A、B、C列縱向框架③~④和⑥~⑦軸線柱間從0m至屋面設置了兩道豎向連續布置的垂直支撐。在這兩跨間設置垂直支撐是經過反復比較和考慮的。一方面由于其他跨間在底層布置有大型磨煤機,C列縱向框架在這些跨間必須為其留出安裝檢修通道,因此底層不便設置柱間支撐,見圖1;另一方面,重型設備粉斗懸掛于煤倉間③~④和⑥~⑦軸線間皮帶層下方,在這兩跨設置柱間垂直支撐更能有效傳遞地震作用產生的水平荷載。
圖1 C軸線框架模型
汽機房、煤倉間各層樓面及煤倉間屋面均以壓型鋼板做永久底模,底模上現澆100mm厚鋼筋混凝土板。連接件選用圓柱頭焊釘穿透壓型鋼板焊接在鋼梁上翼緣。以壓型鋼板為底模的鋼筋混凝土樓板具有較好的平面內剛度,在空間結構體系中發揮著協調各榀框架剛度和側移的作用,是重要的傳遞水平荷載的構件,也是將主廠房框架形成空間整體結構重要的一環。由于工藝布置的要求,樓面經常會出現大開孔,一定程度上削弱了樓板剛度,且混凝土樓板對框架柱的約束減弱,這時在開孔周圍柱網區格內適當地設置樓面水平支撐,以便于增強樓板對柱的橫向約束及傳遞水平地震力。
2.2 結構設計的優化
由于框架梁、柱的布置主要是根據工藝要求確定的,所以主廠房結構的優化布置主要指支撐布置的優化。支撐布置得合理,能夠有效傳遞地震水平力,調整主廠房結構的剛度,使整體結構受力更合理,動力性能也更好。
2.2.1 柱間垂直支撐布置的優化
本工程與其他工程相比,垂直支撐的布置有兩個顯著的特點。其一,橫向框架在煤倉間皮帶層以下貫通采用大十字交叉撐。這與本工程的工藝布置特點密不可分。通常情況下由于沿煤倉間縱向設置有磨煤機檢修單軌,煤倉間縱向成為磨煤機安裝檢修通道,因此只能在避開通道處局部設置支撐。本工程由于磨煤機由軌吊設備起吊沿橫向進出C列進行安裝和檢修,橫向結構布置時不再需要為其讓出通道,因此大十字交叉撐的布置能夠得以實現。
在抗震設計中采用大十字撐尤其是在如此重要的位置采用是具有明顯好處的。在地震作用下,支撐作為主要抗側力構件是最容易屈服的桿,而十字交叉支撐,可保證在地震作用下受壓支撐失穩后,受拉肢仍能正常工作。與V形支撐或人字形支撐相比,十字交叉撐在與梁的相交處不會由于支撐桿件分別受拉、受壓而對梁產生豎向不平衡力,因此對框架更為有利。其二,在煤倉間內,縱向框架柱間垂直支撐與橫向框架的柱間垂直支撐相互呼應,在存在較大荷載的③~④和⑥~⑦跨形成了一個連續封閉的支撐系統,類似于鋼筋混凝土框-筒結構中的“筒”。通過STAAD Pro程序分析結果(詳見表1),可以發現垂直支撐這樣布置以后,主廠房整體結構在地震作用下具有良好的動力特性,第一振型僅存在有很小的扭轉,基本為縱向平動振型,第二振型為橫向平動振型,第三振型為扭轉振型。并且第一、第二振型振動周期差別很小(1.252s和1.181s),說明結構在兩個主軸方向的動力特性接近,地震作用下的扭轉效應得到有效改善。
表1 在③④⑥⑦軸線橫向框架B、C列間(煤倉間)設置垂直支撐的結構模型數據
2.2.2支撐截面的優化
就鋼結構而言,豎向支撐是抵抗地震水平荷載最有利的手段;同時,在地震作用下,支撐也是最容易屈服的桿件。由于主廠房縱向結構為鉸接結構,支撐為縱向的主要抗側力構件,當支撐失穩時,也就意味著結構在縱向罕遇地震作用下很難滿足大震不倒的設計目標,因此對縱向柱間支撐尤其是底層柱間支撐截面應予以加強。同時也應當意識到,對于支撐構件的設計,并非截面尺寸越大越安全。當支撐布置一定時,在合理的范圍內(即滿足構件長細比和強度、結構側移限制等)適當減小支撐截面面積可有效減小結構局部剛度,從而達到減小地震反應的效果。特別是對抗側力不敏感部分的支撐應提高支撐截面利用率,支撐構件應力比不宜過小,以提高工程的經濟性能。
3 STAAD Pro空間分析程序的運用
本工程在主廠房結構設計中采用了STAAD Pro空間分析程序進行結構分析。作為一款三維空間結構分析程序,STAAD Pro能夠更加準確和快捷地建立接近真實的結構模型,它能夠充分考慮各類構件之間的協調作用,更為準確地模擬約束條件等,因此結構受力分析的結果更合理、更接近實際受力情況。
STAAD Pro空間分析程序與以往平面桿系結構分析程序相比,具有明顯的優點。首先,它能夠克服平面桿系結構分析中無法避免的荷載重復作用和作用分配過大的缺點。其次,后期的結構動力計算結果顯示,水平地震作用下,主廠房在平面內的變形表現出扭轉特征,具有平面扭轉不規則性,對電廠主廠房結構采用平面框架進行抗震計算將無法反映該扭轉效應,同時也無法反映相鄰框架之間水平支撐或樓板對整體結構的水平剛度和側向剛度的協調作用,既不安全也不經濟。
STAAD Pro空間分析程序可以真實模擬結構構件間的連接形式和約束條件。主廠房框架結構體系采用橫向剛接+支撐、縱向鉸接+支撐的方案時,框架柱與基礎的連接形式就需要相應地采用一個方向釋放彎矩而另一個方向保持固結的方式。在STAAD Pro中,通過對支座約束信息的編輯,能夠輕松地達到這一目的。
STAAD Pro分析程序賦予了用戶靈活處理各種荷載的自由。相比一些結構程序對用戶輸入的荷載通常按照規范要求自動進行組合,這種方法雖然簡便,但是卻很封閉,它基本不允許用戶對其荷載組合進行人工干預。STAAD Pro允許用戶根據情況對基本荷載進行分組輸入,然后對這些荷載自行定義組合方式,列出各種組合工況,然后由程序完成組合計算。為滿足合同的要求,需要對X向和Z向水平地震力分別放大1.12倍和1.05倍。因此,在有地震作用參與的荷載組合中對X向水平地震力EX和Z向水平地震力EZ分別乘以放大系數1.12和1.05,以滿足合同要求。可見,STAAD Pro開放荷載組合的方法確實能為設計人員提供便利。
4 結語
綜上所述,對主廠房鋼結構這種體積大、構件多、結構體系復雜、結構剛度和質量分布不均的結構采用空間分析程序可以更好地反映結構實際受力和工作情況,提高設計的準確性,為設計插上翅膀。
參考文獻:
[1] DL 5022-93,火力發電廠土建結構設計技術規定[S]。
[2] 劉剛。高烈度地震區大型火電廠鋼結構主廠房的布置優化[J]。工業建筑,2008
作者簡歷:
關鍵詞:程序設計;數據結構;算法;編碼;調試
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2009)33-9490-02
The Effective Strategy of Raises the Student Programming Ability
XIAO Han-peng
(The Secondary School of Nanyang, Nanyang 473000, China)
Abstract: This paper analyzes the design disciplines in the computer programming of the status and the knowledge and ability, combined with their many years of computer science teaching practice of teaching computer programming students an effective strategy.
Key words: program design; data structure; algorithm; coding; debugging
計算機科學是一種創造性思維活動,其教育必須面向設計。計算機的本質是“程序的機器”, 只有懂得程序設計,才能懂得計算機,真正了解計算機是怎樣工作的。培養學生程序設計能力對計算機專業的學生來說不僅是培養職業技能的需要,也是培養大學生創造性思維的重要途徑。學習程序設計語言可以培養學生運用算法來解決實際問題的能力,這種解決問題的方式是計算機所獨有的,也只有通過對計算機的程序設計語言和程序設計方法的學習才有可能獲得這種解決問題的能力。
1 程序設計在計算機學科中的地位
程序設計是利用某種計算機語言,編制完成某一特定功能的程序的過程,是涉及描述、開發及有效實現求解的一系列活動,是利用計算機實現自動化的重要手段。
計算機學科主要是系統地研究信息描述和變換的算法過程,包括它們的理論、分析、設計、效率、實現和應用。可以這樣說,一切算法的基本問題是“什么能被自動化”以及“如何有效地自動化”。這個自動化的過程就是程序設計的過程。
程序設計語言是人們學習計算機的最基本的工具,也是人們學習計算機基礎與應用知識的基本課程。通過學習,使學生掌握程序設計的基本概念、基本知識和基本方法,養成良好的程序設計風格,得到一定的程序設計訓練,具備初步編寫程序解決實際問題的能力。程序設計也正是有形表達抽象思維的方法,在程序設計過程中貫穿閱讀判斷、分析思考、工具利用、抽象表達、綜合創造等多項技能,是理論、抽象、設計和應用的綜合能力培養過程。因此程序設計是計算機學科教學的重要內容之一,對計算機專業人才素質的培養至關重要。
2 程序設計的知識和能力構成
根據循序漸進的原則,與程序設計有關的教學內容主要有:計算機基礎知識和操作、程序設計語言和基本的程序設計方法、最基本的數據結構及其基本算法、常用的算法設計方法等。在學習這些知識的同時,必須與能力的訓練有機地結合起來。程序設計能力表現在以下幾個方面:
1)自然語言能力。要有較強的運用自然語言描述現實事物的能力,只有運用背景知識正確且清晰地陳述問題及其求解目標,才能確定程序的功能。
2)數學描述能力。程序設計是為了告訴計算機做什么和如何做。這就需要利用定義、定理、公式、函數等數學工具把問題形式化,建立數學模型。
3)數據結構設計能力。選擇合理的存儲結構,在計算機中表示數學模型,是程序設計的一個重要方面。
4)算法構造能力。好的程序由精心構造的、好的算法構成。給出問題求解的離散化計算過程,是程序設計中最具有創造性的工作。
5)程序編碼能力。用某種程序設計語言表達算法,盡管這種能力往往被認為技術含量不高,但也需要對程序設計語言的熟練掌握和對算法設計的深刻理解。
6)程序調試能力。程序調試能力是一種專業綜合技能,需要對程序設計語言和程序結構有深刻的理解,需要熟練的操作技能,需要會設置測試數據和設置程序斷點,這些都有待于學生在實踐中逐步積累經驗。
可以說,程序設計能力的高低很大程度上反映在駕馭自然語言、數學語言和計算機語言的能力上。這3種語言是人們畢生有用的3種通用智能工具。前兩者是后者的基礎,良好的英語和數學訓練是學好程序設計語言和培養程序設計能力的重要基礎。
3 培養程序設計能力的有效策略
知識的價值在于運用,知識的運用需要技能,而技能的形成則依賴訓練。程序設計知識的學習和能力的培養需要各方面的知識基礎,它是一個系統的教育訓練過程,需要多個教學環節的緊密配合才能完成。
1)明確教學要求
程序設計語言課程一般是為應用性教學而設置的,因此,課程的教學不僅僅是傳授知識,而且應該強調應用性,應該以培養學生的能力為主。程序設計語言的內容比較豐富,在教學中如果面面俱到,必會耗費較多課時,而且教學效果不一定好。因為過分強調程序設計語言的系統性和完整性就可能會轉移學生對課程重點的注意力,關鍵在于教會學生如何正確運用程序設計語言編寫程序,訓練實用編程能力。所以必須突出重點,突出應用性,側重教思想,即把程序設計語言的基本思想、基本環境、基本概念、基本知識和基本方法教給學生,使他們在學習中對硬件、軟件環境、程序設計的基本思想和基本技巧,所學程序設計語言的基本概念和使用方法以及編程技術有一個比較全面的感性認識,從而提高解決實際問題的能力。
2)打好數學基礎。嚴格的數學訓練是程序設計能力的基礎,學習和加強排列與組合、數列、數學歸納法等離散系統的數學方法對提高程序設計能力尤為重要。問題描述和建立數學模型是程序設計的前奏,數學歸納法、窮舉法、構造證明法等證明技巧是算法設計方法的基礎。
3)強化英語水平。程序設計語言的符號系統以英語為基礎,程序設計文檔語言首選英語。英文資料是計算機最新和最大的技術資料來源,英語水平是我國軟件產業發展和參與國際競爭的制約因素。
4)重視閱讀訓練。從某種意義上來說,程序設計是用程序設計語言和方法進行的一種寫作。可以想象,如果學生沒有閱讀過一份完整、規范、有實用價值的標準程序,即使記住了有關語言的語法規則,也不可能寫出像樣的程序。所以,大量閱讀、分析、修改和擴充典型的算法和程序,是提高程序寫作能力的有效途徑。而這個重要學習環節往往未得到應有的重視,缺乏配套的程序設計閱讀分析教材。教師應經常指導學生閱讀程序,理解程序,提高學生分析程序的能力。
5)注重算法設計,突出數據結構內容。瑞士科學家、PASCAL語言和MODULA-2語言的發明者沃思(Wirth)教授提出了著名的公式:程序=算法+數據結構。這個公式表達了程序的實質,說明對于一個程序設計問題來講,算法與程序設計是緊密聯系的,絕不能脫離數據結構去講解算法設計。程序設計語言的教學應該結合數據結構的基本內容。對于同一個計算問題,選用不同的數據結構,其算法大不一樣,算法的優劣程度也不同。因此,要教會學生對不同的問題選擇合適的數據結構。在整個程序設計課程中,必須強調算法設計方法,通過不斷的算法設計訓練,使學生切實掌握迭代、枚舉、遞歸、分類等常用算法設計方法。
6)更新教學內容。計算機學科是一門綜合性學科,而且程序設計語言的應用領域在不斷擴大和發展。因此,在教學中應結合專業的特點和教學的要求,將軟件工程的思想方法貫穿于整個教學過程,介紹程序設計語言的最新發展和應用,重視面向對象程序設計方法的引入,搞好教材內容的更新。如圖形程序設計、下拉式或彈出式菜單、計算機病毒防治等等。這樣不僅能把最新的知識和最新發展動態充實到教學上來,大大豐富了教學內容,而且使學生加深對程序設計語言的理解和掌握,保持對信息技術和專業的興趣,及時跟上信息技術日新月異的發展趨勢,在今后工作中保持領先地位。
7)采用先進教學手段。用傳統的課堂教學方法講授動態的算法和數據結構是十分低效的,像排序、遞歸等抽象動態的內容講解就常常是費力不討好。應該根據課程特點,采用先進的現代教學方法,如直觀教學方法:利用掛圖、教具等講解,以及計算機輔助教學(CAI)和計算機輔助學習(Computer Aided Learning,簡稱CAL)進行教學,通常開發利用與課程內容與教學特點相適應的多媒體課件進行教學。它們是講解算法和進行程序設計訓練的最佳教學平臺,既能增加學習的趣味性,又可利用圖形的直觀性幫助抽象和動態過程的理解。
8)加強實踐環節,強化創造性思維能力培養。在教學中,常常聽到學生提出這樣的問題:“程序設計語言有什么用?”,有的學生還反映:“程序設計語言并不難學,就是不知道如何應用?”一些學生學到了一定的科學知識,但上機動手水平低。這種現象與普遍忽視實踐環節有關。為了扭轉這一局面,在整個教學過程中,必須強調實踐環節的重要性,充分安排上機實踐時間,加強系統訓練和實踐能力的培養,強化創造性思維能力培養。根據課程特點,在教學中,采用案例驅動教學,進行興趣引導;在實踐中,可以精心組織一系列由易到難、由淺入深、配套銜接、結合學科學習、有一定設計技巧的程序設計作業,最后再安排一次綜合性強、有一定難度的課程設計實踐,對學生進行項目訓練,提高學生應用能力。通過上機作業和課程設計的完成,使學生獨立思考,各顯才干,總結經驗,培養他們的動手能力和編程能力,以及分析問題和解決問題的能力。
4 結論
總之,培養學生計算機程序設計能力的方法和途徑很多,但是編程序不難,編好程序不易。作為教師,必須從培養學生編程思維的角度出發,按照以上策略認真進行編程知識的教學和技能的培養,加強實踐,提高學生科學思維的能力,真正學會程序設計的真本領。
參考文獻:
[1] ,王楠.淺談程序設計語言課程教學方法[J].吉林大學學報(信息科學版),2005(S2).
[2] 徐進華.提高學生程序設計能力的幾個措施[J].計算機時代,2005(11).
[3] 李凌.淺談高級語言程序設計課堂教學方法[J].淮北職業技術學院學報,2005(04).
關鍵字:程序設計語言教學改革
中圖分類號:G642 文獻標識碼:A 文章編號:1672-3791(2012)02(c)-0000-00
1 概述
計算機程序設計語言,通常簡稱為編程語言,是一組用來定義計算機程序的語法規則。它是一種被標準化的交流技巧,用來向計算機發出指令。
當今計算機程序設計語言種類繁多、共性大、更新速度快,同時軟件工程和項目管理的蓬勃發展使得計算機軟件開發從業人員的職業分工更為明確。從人力資源與社會保障部頒布的“計算機程序設計員國家職業標準”上看,除了要求從業者必須要有扎實的基本功外,還要具備解決問題的綜合能力。因此計算機程序設計員專業的學生在計算機程序設計語言的知識和技能的學習中,不能再僅僅孤立地教授幾門編程語言、幾門相關的專業課程而已,而是要教會學生掌握通過計算機程序設計來解決實際問題的知識和技能,成為一名合格的“軟件藍領”。這就要求我們不能延續傳統的學歷教育方法,計算機程序設計語言教學需要改革,需要一種全新的教學理念和模式。
當前的教學改革更多的體現在教學方法和內容上,“學習領域”、“任務驅動”、“職業崗位導向”、“面向工作”等各種課程設計方法層出不窮。然而,縱觀大部分課程改革,我們發現其教學改革更多體現在獨立的課程中,并沒有在課程與課程的銜接上下功夫。大部分院校均先后開設VB、C、C++、JAVA等多門程序設計語言和數據結構、數據庫管理系統等專業課程,學生雖然學習了多門程序設計語言,然而每一門語言都只學了皮毛,每一門課程都學了基礎,只能完成課堂和課后的作業和練習,而對于能解決什么問題,怎么解決問題,如何綜合解決問題一籌莫展,碰到問題時往往覺得無從下手。
2 程序設計語言教學探索與改革:C語言學習三部曲
C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點,同時很多新型的語言都是衍生自C語言,,掌握了C語言,經過簡單的再學習,就可以用其他新型的語言去進行程序開發了。因此,在計算機專業的課程中,只要把C語言學扎實了、學透了,就可以說掌握了計算機程序設計語言的精粹。在課程設計中,我們以C語言為主線,以一脈相承的C語言、C++語言、C#語言為基本知識內容,配合上數據結構、UML、數據庫等相關知識點,提出語言知識入門、語言能力提高、語言技能應用三個階段和應用層次的“C語言學習三部曲”的課程改革方案。
第一階段:語言知識入門――C語言與數據結構整合
1、課程知識要求:
1) 掌握C語言的基本語法,如數據類型,3種語句結構,數組,指針等。
2) 掌握數據基本結構形式和操作,如線性結構,樹形結構,圖形結構,以及數據結點的查找、添加、刪除、排序等操作。
3) 掌握“自頂先下、逐步細化”的結構化程序設計方法。
2、課程技能要求:
掌握如何用計算機解決日常問題,特別是數據的表現形式和動作行為的表現形式。
3、課程設計要點:
將C語言和數據結構進行有機整合,特別是在講解C語言的數據類型時溶入數據結構知識,在講解C語言的語法結構時溶入數據結構的數據操作知識。
4、課程目的:
通過該課程的學習,要求學生掌握基本程序設計思想和理論,學會數據及數據處理由現實世界向計算機世界的轉換方法和過程,學會用計算機程序設計語言描述和解決日常生活中問題。
第二階段:語言能力提高――C++語言與UML工具整合
1、課程知識要求:
1) 掌握C++語言的高級語法知識以及面向對象的概念和形式,如面向對象的三大特征:封裝、繼承、多態,以及模板等概念。
2) 掌握UML知識,掌握利用UML工具(如ROSE)來進行面向對象的分析和建模的方法和過程。
3) 掌握以“抽象與分類”為關鍵的面向對象的程序設計方法。
2、課程技能要求:
掌握如何用計算機解決日常問題,特別是以面向對象的方法來分析和解決問題。該課程要求學生在第一階段掌握了結構化的設計方法后,進一步了解面向對象程序設計方法。
3、課程設計要點:
把C++語言和UML進行有機的整合。將UML作為面向對象程序設計的分析和設計的工具,而將C++語言作為進行面向對象程序設計的編程和實現工具。
4、課程目的:
通過該課程的學習,要求學生掌握面向對象理論,學會面向對象分析(OOA)、面向對象設計(OOD)和面向對象編程(OOP)方法和工具。
第三階段:語言技能應用――C#語言與數據庫操作整合
1、課程知識要求:
1) 掌握C#語言的高級語法知識和軟件架構知識,如集合、委托、托管、、C/S與B/S架構開發方法等。
2) 掌握數據庫操作知識,如SQL語法、、XML等。
2、課程技能要求:
掌握多層架構的數據庫應用系統開發方法。,該課程要求學生在復習第二階段的面向對象的設計方法后,掌握開發.Net應用系統的方法,掌握將數據存儲在數據庫中的方法,以及掌握對數據庫進行查詢、添加、刪除等操作的方法和步驟。
3、課程設計要點:
將C#語言與數據庫操作知識進行有機整合,在講解用C#語言開發基于.Net的多層架構應用系統中,通過講解與LINQ將SQL溶入C#語言。
4、課程目的:
通過該課程的學習,要求學生掌握C#語言和數據庫操作,掌握通用的企業級應用系統的開發方法和過程。
3 結語
教育部部長周濟在2008年度職業教育會議上說到:“以改革創新為強大動力,推動職業教育又好又快發展”。職業教育的生存和發展,離不開教學改革和創新。在進行計算機程序設計語言教學探索與研究中,我們通過走進企業,與企業軟件開發人員的進行密切聯系與溝通,了解市場發展與需求等一系列調研后,提出了改革方案并付諸實施。實踐證明我們的改革思路是正確的,課程改革是卓有成效的。
參考文獻
[1] 譚浩強,“C程序設計”[M],清華大學出版社
(寶雞職業技術學院,陜西 寶雞 721013)
【摘要】數據結構是高職院校計算機專業中一門專業基礎課程和核心課程,本文關注了當前《數據結構》課程教學的現狀,總結該課程教學中存在的一些不足,并提出了一些見解。
關鍵詞 數據結構;算法;程序設計
1 《數據結構》課程的作用及意義
1968年美國唐納德·克努特(Donald Ervin Knuth)教授開創了數據結構的最初體系,他所著的《計算機程序設計藝術》第一卷《基本算法》是第一本較系統地闡述數據的邏輯結構和存儲結構及其操作的著作,是《數據結構》的經典之作。隨后,數據結構作為一門獨立的課程開始進入大學課堂。
數據結構課程主要是研究非數值計算的程序設計問題中所出現的計算機操作對象以及它們之間的關系和操作的學科。主要內容包括數據的邏輯結構,數據的物理存儲結構和對數據的操作(或算法)。通常,算法的設計取決于數據的邏輯結構,算法的實現取決于數據的物理存儲結構。數據結構是通過對數據的抽象與研究,幫助我們把生活中具體的事物抽象出數學模型,從而幫助我們寫出“好”的算法。
數據結構課程與數學、計算機硬件和軟件有十分密切的關系,它是介于數學、計算機硬件和計算機軟件之間的一門計算機專業的核心課程。伴隨計算機應用領域的擴大和軟、硬件的發展,非數值計算性問題使得人們越來越重視數據結構,所有的計算機系統軟件和應用軟件的設計、開發都要用到各種類型的數據結構,已成為高級程序設計語言、操作系統、編譯原理、數據庫、人工智能、圖視學等課程的基礎。同時,數據結構技術也廣泛應用于信息科學、系統工程、應用數學以及各種工程技術領域。《數據結構》的學習越來越被人們所重視,成為構建計算機類專業群的重要課程。目前,這門課程不僅在本科段開設,同時也是高職高專院校計算機相關專業開設的主要課程之一,許多非計算機專業的理工專業也都將它作為必修課程或熱門選修課。
學習數據結構的目的是使學生在軟件開發的過程中能夠正確、合理地選擇數據的存儲結構,有效地設計算法,從而提高軟件整體質量,既可以為后續課程的學習以及軟件設計水平的提高打下良好的基礎,也可以培養學生的分析與解決問題能力,提高學生的思維能力和程序設計能力,進而促進學生的綜合應用能力和專業素質的提高。
2 《數據結構》課程教學現狀
《數據結構》課程具有概念抽象、理論性強、邏輯性強、難度大等特點,它涉及到不同的數據邏輯結構和存儲結構,以及相應結構上的算法,因而總被認為是一門深奧、抽象的課程,一門理論性很強、和實踐相脫節的課程。學完后不能形成一個完整的知識體系,學生為了考試而學習,而在程序設計的能力上不能得到提高,分析原因主要有以下幾點:
2.1 教學目的不夠明確
《數據結構》課程本來是以在程序設計過程中總結而得到的數據組織和操作的體驗和認識,用于程序設計的指導工作,而當下的教學很大程度上只要求掌握數據結構的幾種基本類型和基本操作,期望通過基本數據類型的掌握能夠用于指導實際程序設計。這就使得教學過程偏重理論而忽略了本課程的根本目的和意義,導致學生對學習這門課程的作用不夠明確。從而使學生感覺課程內容抽象、算法復雜、實用性不強。
因此,學生的學習目的主要變成是為了應付考試,只注重課本上的理論內容,而不去考慮在具體程序設計中如何去使用《數據結構》基本理論來設計和解決具體的問題。在課程設計中,學生只是為完成編程去苦苦思索,而根本就想不到如何去進行數據的有效組織和實現數據的基本操作。很難想象不帶問題去學習一門課程,會有很高的學習積極性。
2.2 教學內容不盡合理
學習《數據結構》課程的最終目的是為了使學生獲得求解問題的能力,就是從實際問題中抽象出數學模型,選擇合適計算機表示的數據結構,再把解決問題的算法程序化,這是一個復雜抽象思維的過程,是一項創造性的智力勞動。但從目前的教學內容來看,強調的是數據結構的各個模型內容,每個模型只是說明模型的結構和模型的計算機實現,在理論描述上力求做到盡善盡美,從內容安排上,各個模型之間表現為相對獨立的關系,使得學生在學習過程中不能將課程的內容聯貫在一起而形成一個整體,更就談不上思維訓練、分析和解決問題能力的提高了。
而課程安排的實驗環節,通常是對所講述的內容的偽代碼翻譯成高級語言進行調試,或者是仿造例子依葫蘆畫瓢地來解決一個簡單的問題。沒有通過具體應用教會學生解決問題的思路、算法思想和數據結構的使用,在實驗中也只能停留在完成課本內容,而對實際問題則是一籌莫展。
2.3 教學方式不夠新穎
計算機技術日新月異,程序設計的思想也在不斷發展。程序設計方法已從面向過程的設計方法發展到面向對象的程序設計方法。然而目前大部分的數據結構教學方式還是停留在面向過程的設計思路上,所使用的教材也大致類似,教師按照課本的思維方法傳授知識,學生被當成聽眾。這種教學思維嚴重落后技術發展的的現象制約了教學效果的提高。
教學手段比較單一,依然主要是老師講,學生聽的狀況。學生接受的知識局限于教材和老師授課的內容,學生的認知水平被壓制,出現能力強的學生不滿足,能力弱的學生比較吃力的現象。這種單向的教學方式,不利于《數據結構》課程的學習,對鍛煉學生創造和分析問題的能力也無益處。
2.4 學生素質有所制約
必要的數學知識是學好《數據結構》課程的前提。目前,由于高職學生的基礎較差,特別是數學基礎更加薄弱,這對《數據結構》課程的學習極為不利。另外,《數據結構》課程的教學基本上都是在學過一門或幾門程序設計語言(如C語言)的基礎上進行的。不少學生對這些程序設計語言課程就沒有學好,因此學習《數據結構》課程就覺得困難。再加上學習的積極性不高,學習的目的性不明確,學習習慣不良等,因此學習效果可想而知。
3 方法出路
基于改變上述現狀的思考,可以從以下幾方面著手:
3.1 整合教學內容
首先從教材的選用上,力求教材版本新、質量高,以防止教材內容滯后。教材內容的編排,要以程序設計的基本原理引領數據結構的內容;教材內容的描述,要以程序設計技術發展相對應的手段,如現階段可選擇面向對象的方法描述;其次要及時把反映學科前沿動態的新成果反映在授課內容里,如數據結構的描述上盡量使用面向對象的方法,描述語言盡量選擇目前較為流行的C++、JAVA等語言;再次是教師在授課過程中,對教學內容進行整合,將形似分散的各種數據結構類型通過實例能夠組成一個整體。
同樣的,實驗的內容也應是配合授課內容,對同一項目能夠逐步深入,從低效率的程序設計,隨著數據結構內容的不斷深入,不斷完善程序。體會采用不同的數據組織方式,帶來不同的程序運行的效率。
3.2 改進教學方法
將學生為主體,教師為主導的教學模式始終貫徹于教學的全過程。采取實例式與研討式教學相結合的方式,以項目作為切入點,分組組織學生對項目展開討論,在討論的過程中發現并提出問題,老師參與學生的討論并針對問題講解解決問題所需要的數據結構的知識。這樣學生由被動變主動地學習課程內容,既增加了師生之間的互動,也調動了學生學習的主觀能動性;同時,學生的發現問題,分析問題、解決問題的思維能力也得到提高。
3.3 加強實踐環節
提高學生程序設計的能力是《數據結構》課程的目的之一,實踐環節自然必不可少。而且也只有通過實踐才能體會到數據結構對程序設計的影響。首先對每一部分的理論內容安排實驗內容,既要使學生能夠加深對所學內容的理解和應用,也要通過實驗讓學生逐步提高程序設計的邏輯思維能力,擺脫的單純的為了解決某個問題而編程的粗放方式。其次是要合理安排課程設計的內容。課程設計是對所學內容的一個綜合練習,也是檢驗學生具體應用所學內容的能力。在題目選擇上應考慮學生的知識水平層次,從難度上做到難易結合,由淺入深完成設計內容。關注解決問題中程序設計的過程,規范化程序設計思維。三是剖析講解典型程序設計中數據結構的具體使用過程,以增加學生對數據結構的實際應用的直觀感性認識。
4 結束語
縱觀作者數年來的《數據結構》課程的教學實踐,僅是根據自己的教學經驗和體會,提出了存在的問題,并在實際的教學工作中積極摸索改進方法。經過多年的努力,學生的程序設計能力都得到不同程度的提高,也增強了學生對計算機課程的學習積極性。
參考文獻
[1]張紅霞.數據結構教程與實踐[M].北京理工大學出版社,2006.
[2]數據結構[M].西安電子科技大學出版社,2004.
關鍵詞:c/c++;程序設計;編程思想
1 引言
“c語言程序設計”課程是高校計算機及相關專業的傳統課程,近年來該課程卻逐漸向“C/C++程序設計”過渡,更有甚者干脆摒棄C語言課程直接開設C++課程,這一現象值得我們反思,究竟如何在C與C++之間取舍,二者有何聯系與區別?下面分別從三方面進行闡述。
2 聯系
C++是以G語言為基礎增加新內容發展而來,是C語言的推廣和延伸。絕大部分C語言中正確的語句在C十十中也可以使用,C語言是C++的子集。
2.1 main函數
c++與c語言中都有main函數,main函數在兩種語言中都起著不可或缺的作用,擔當重要作用即程序的入口。簡單的不帶類的c++程序中的主函數除了輸入輸出(Gout/cin)與G語言不同。別的二者非常類似。
2.2類與結構
類是面向對象程序設計中最基本的概念,是實現面向對象程序設計的基礎與核心。類是將不同類型的數據和與數據相關的操作封裝在一起的集合體,是對要處理問題的抽象描述。定義了抽象類之后可利用該類定義其實體即該類的對象。結構是c語言中很有用的一種數據類型,是以后學習c++中“類”的基礎。結構體成員組合在一起形成一個整體,其成員可為不同的類型。定義結構體之后可用該結構體類型定義結構體變量。c中的結構可以說是c++中類的雛形,但其區別也是顯而易見的,結構中只是有數據成員沒有成員函數;結構中也沒有public和private關鍵字,其中的數據成員默認都是公有的,一般函數都可以訪問,而C++的類中的數據成員默認情況下都是私有的,只有類對象中的成員函數和友元函數能夠訪問,這樣極大地提高了數據的安全性。
2.3模板與宏
模板是c++程序設計中的重要機制,可以節約程序代碼,提高面向對象程序設計的可重用性和可維護性。模板把函數或類要處理的數據類型參數化,表現為參數的多態性,從而有效實現了程序設計中的代碼重用。c語言中的宏定義是一種預處理方式。可改進程序設計環境,提高編程效率。其中帶參數的宏定義方式不只是簡單的字符串替換,還要進行參數替換,為日后學習面向對象程序設計中的函數模板奠定基礎。
3 區別
C是一種結構化語言,其重點在于算法和數據結構。C程序設計首要考慮如何通過一個過程,對輸入或環境條件進行運算處理得到輸出或實現過程控制,而c++首要考慮如何構造一個對象模型,讓這個模型能契合與之對應的問題域,這樣就可通過獲取對象的狀態信息得到輸出或實現過程控制。
3.1編程思想
c++與C語言最大的區別在于編程思想的截然不同,前者是面向對象的編程語言,后者則是面向過程的結構化的編程語言。面向對象程序語言將程序設計領域與日常生活拉得更近,面向過程的C語言強調程序的功能,以函數為中心,c++在C語言這一強大巨人的肩膀上發展,通過C語言強大的軟硬件控制功能,融入面向對象的編程思想。強調程序的分層。分類,以抽象的類為基礎,進行對象的定義與展示,使應用程序具有封裝性、繼承性和多態性。
3.2關鍵字
c語言中的關鍵字幾乎都可以在C++中使用,但c++中增加了一些C語言中所不支持的關鍵字,這些關鍵字能夠作為函數和變量的標識符在c程序中使用,盡管C++包含了所有的c,很顯然沒有任何e++編譯器能夠編譯這樣的c程序。例如c++中的new和delete取代了C中的malloc和free,C++中還增加了public、private、try catch。throw等很多關鍵字。
3.3語法格式
c++和c語言在語法格式上也有很大的不同。c程序員可以省略函數的返回類型,C++卻不可以,即使無返回也應加上void類型。注釋的格式:c語言只支持**。C++還支持//在C語言中輸入輸出是使用scanf和printf函數來實現的,而e++是使用類來實現的,C++中用于控制1/O的iostream類庫替代了C語言中的stdio函數庫。C++中的try/oatch/thrOw異常處理機制取代了C中的setjmp和Iongjmp函數。C++中的引用簡化了c語言中過于繁雜的指針。