前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的程序設計的結構主題范文,僅供參考,歡迎閱讀并收藏。
關鍵詞:循環結構;C語言程序設計;非計算機專業
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)26-6323-05
Discussion on Loop Structure Teaching in C Language Programming of Non-computer Specialty
XIA Yun
(College of Mathematics and Computer Science, Anhui Normal University , Wuhu 241000 , China)
Abstract: The teaching of loop structure is an important component in C language programming. This paper designed 5 teach? ing examples for the students of non-computer specialty. This paper analyzes the teaching progress in detail and emphasizes the teaching points of the loop structure teaching. And it produces a good effect in the actual teaching progress.
Key words: loop structure; C Language programming; non-computer specialty
大學計算機應用基礎作為一門課程大約于20世紀90年代中期開設,現在已成為大學里的計算機學習基礎課程,是所有非計算機專業大一新生的必修公共基礎課,也是培養學生基本素質的一門重要課程[1]。作為大學計算機應用基礎課程,理工類專業大部分會開設程序設計課程,有部分專業會開設C程序設計課程。C語言是一種語法靈活、適用范圍廣的高級程序設計語言。結構化程序設計方法有三種基本結構:順序結構、分支結構和循環結構。順序結構和分支結構比較簡單,循環結構從教學上來說是重點也是難點。本文主要對C語言循環結構教學進行探討。
1教學內容的分析
C語言循環結構編程主要涉及到三種循環結構語句while、do-while和for。本文作者認為非計算機專業開設這門課程,主要是講解程序設計的方法,培養學生的編程能力和思維能力,因此,在教學中上述的三種語句可以以while語句為重點,講解循環結構編程的思想,do-while和for語句可以簡單舉例說明它們的流程。在講解循環結構編程分析時,可以以流程圖或者用自然語言逐步描述操作步驟的形式,指出循環結構編程關鍵是找到在什么情況下需要反復執行某些操作,并找到這些反復執行的操作是什么。
2教學用例的分析
在課程教學過程中,需要用一些例子來配合講解循環結構的編程。在教學時,選取一些比較合適的例子,可以很好地幫助學生理解所教授的內容。教師在教學過程中除了要加強課堂啟發外,盡可能結合課程自身的特點,注重學生現場演練,并采用任務驅動、師生互動、鼓勵學生等教學手段來提高其學習的主動性和積極性[2]。
2.1導入的例子
在教學活動中,講授后面知識內容時要與前面知識相互呼應[3],因此,在上課時,可以以這樣的問題開始,例題1:用戶輸入正整數n值的大小后,要求計算1+2+3+…+n,將所得出的結果輸出。這個例題主要是復習前面的內容,復習輸入、輸出函數和分支結構的編程。該問題提出后,可以讓同學們思考一下,然后再進行提問,提問時可以讓學生說出編程思路,若課堂時間比較多也可以請學生直接編寫源代碼并運行。
提問時,有的同學可能給出如下的順序結構編程的解答:
步驟1:輸入整數n
步驟2:求s=(1+n)*n/2
步驟3:輸出s
while (j
{輸出i*j
j++;}
由此,得出在循環while (i
循環結構是結構化程序設計的一種重要結構,在教學中不僅需要學生掌握這種結構的語法,更重要的是培養學生的設計思維和思考方法,本文主要是從教學的角度,對循環結構的整個教學過程設計了5個教學用例,并對其進行展開分析,重點是讓學生掌握循環結構編程的思想,實際上就是在問題分析過程中找循環條件和循環操作,在實際教學中取得了較好的效果。
[1]何文海,吳明珠,謝劍剛.情商與智商相結合的教學模式[J].現代計算機,2007(8):73-75.
[2]郭?;?陳允芳,王健.非計算機專業中“VB程序設計”教學方法初探[J].計算機教育,2009(18):98-100.
關鍵詞:PLC;結構化;給排水
1 引言
隨著現代工業發展進程的不斷加快,工業自動化控制技術發揮著越來越大的作用,PLC控制系統的應用也日益廣泛。PLC程序設計的水平優劣往往決定著工程能否及時竣工投產,工業設備能否充分發揮其設計生產能力。傳統的PLC編程方式程序繁瑣冗長,結構不清晰,不利于控制程序在多個項目中的重復使用。如何迅速、優質地編制符合不同設備工藝特點,參數的PLC程序,對工業控制系統的及時完工,提高自動化控制水平具有較大的意義。本文結合給排水行業常用設備及工藝程序的編寫,對結構化編程在PLC中的應用進行了初步的探索,取得了較理想的效果。
2 PLC程序設計方法簡介
常見的程序設計方法分為三種:線性化方法、模塊化方法以及結構化方法[1]。
線性化編程方法:將所有的程序代碼全部放在一個程序塊中,如對S7-300/400來說,在OB1中寫入數據采集、設備控制、臺時統計等全部用戶程序。該方法與PLC所代替的繼電器控制電路類似,系統按照順序處理各條指令。它適用于小型設備配套PLC的編程,對于大中型項目則顯得程序結構不清晰,同時由于需要對不同設備編制大量類似的代碼,導致代碼冗長,難以調試和維護。
模塊化編程方法:將程序根據不同功能需求分成不同的塊,每個功能的控制指令在各自的塊內,OB1按順序調用每個塊。該方法程序結構清晰,便于調試和維護,但僅將功能按塊分配,加以有條件的調用,故雖然CPU效率得到提高,但代碼冗長、調試困難的缺點未得到明顯改善。
結構化編程方法:將復雜的自動化任務分割成過程相關的功能或可多次處理的小任務,以提供可以用于類似任務的通用的程序代碼,這樣更易于控制復雜任務。而這些小任務以相應的程序段表示,稱為塊。只需要在調用程序塊時針對不同的設備和工藝流程代入不同的參數或地址,即可實現不同設備的控制,無須多處重復輸入相同功能的代碼。當需要對功能進行修改時只需要修改程序塊即可,提高了編程的效率和可靠性。
3 結構化編程方法設計實例
在實際應用中,在對給排水行業通用設備和工藝進行詳細分析的基礎上,針對典型設備和工藝分別編制了水泵、儀表、閥門、泵站水泵調度、自動加藥等不同的控制模塊,使高效開發PLC程序在給排水行業的應用成為可能。下面以變頻水泵及泵站的水泵調度為例來介紹結構化編程方法。
3.1 變頻水泵功能塊
變頻水泵是給排水行業最常見的設備,其調用如圖2所示。
圖2為變頻水泵控制塊的調用實例,該FB的輸入輸出參數如圖3示。
功能塊接口參數共分為三種類型:輸入(INPUT);輸出(OUTPUT);輸入輸出(IN_OUT)。其中輸入參數主要有:遠程信號,上電信號,運行信號,水泵故障,電回路故障,變頻器故障,頻率輸入等;輸出參數主要有:開??刂疲l率控制輸出,實際運行頻率等;輸入輸出類型參數主要有:變頻電機狀態,變頻電機控制命令,電機臺時及開停次數統計,頻率設定值等。
輸入輸出類型參數可由人工或自控程序在功能塊外部進行賦值,也可由本功能塊內部邏輯進行修改。其中的State、Command等參數均為WORD類型,其每一位分別代表了不同的含義。
該功能塊包含了除電流外的變頻水泵常見的絕大部分信號處理及控制功能,對于部分實際工程中未使用的參數,可通過直接設置默認值或空置的方式進行處理。水泵電流可通過專門的模擬量處理程序塊進行數據轉換和上下限報警判斷,當電流超過上下限設定值時發出報警信號(過流、欠流)傳送給變頻水泵功能塊,從而實現水泵的電流超限保護功能。
3.2 泵站水泵調度功能塊
污水廠一般具有進水泵房、中間提升泵站、出水泵房等工藝段,其水泵控制模式基本相同,都是根據液位的變化來調節運行的水泵頻率和臺數,調泵時又要考慮單臺設備的運行臺時和啟停間隔等因素。其基本原理介紹如下:
泵站的液位控制一般采用根據液位分段啟停泵的模式,不同的液位分別對應當前需要開泵的臺數,同時具備死區保護功能,停泵液位設定值比啟泵液位設定值略低,以防止特殊情況下水泵的頻繁啟停[2]。
水泵的啟停選擇需要考慮以下幾個條件:
(1)熱備狀態。PLC首先檢測水泵上電情況,遠程狀態,控制模式,故障情況等,當以上條件均滿足時認為該泵處于熱備狀態,可被自控程序進行開停調度。
(2)平衡調泵。累計運行時間最短的泵優先被啟動,運行時間最長的泵優先停止,使每臺泵運轉時間大致相等。當運行時間相同時,按泵的順序啟停。
(3)啟動間隔保護。控制程序使每一臺泵每小時起動次數少于6次,兩次起動間隔≥10分鐘,且不論何種情況,不同時起動2臺及2臺以上水泵。
在實際應用中,根據分段啟泵原理以及低水位保護等條件編制泵站自控功能塊,計算當前需要開泵臺數。根據上述三條件,編制了水泵啟停調度選擇功能塊,用于選擇當前需要啟動的水泵編號。兩功能塊配套使用,可快速完成泵站自動調泵程序的編制工作。限于篇幅,本處不再詳述其具體實現過程。
關鍵詞:管理原理;設計;設計管理
作者簡介:徐剛(1974-),男,河南開封人,碩士,河南大學講師,主要從事企業形象策劃、品牌戰略、廣告創意、包裝裝璜設計等研究。
中圖分類號:C939;F270.7 文獻標識碼:A 文章編號:1006-1096(2007)04-0096-03 收稿日期:2007-04-14
設計,自20世紀60年代成為一門獨立學科到現在,一直都處于研究的邊緣狀態。隨著經濟文化的發展以及人們物質、文化生活水平的提高,設計的風格、功能、形式日新月異。在這種情勢下,設計水準往往也成為一種競爭手段,大型的設計項目層出不窮。例如,影視美術設計、建筑設計、工業設計、企業形象工程設計等等,都需要幾十人、甚至上百人的分工、合作才能完成。社會對高度體系化、專業化的策劃設計制作公司的需求越來越大,要求也越來越高,而針對設計項目的管理制度和意識也就應運而生。
學術界對設計管理理論的探討,目前主要從綜合層面、設計層面、管理層面三個角度展開(劉國余,2003)。筆者在整體考察各個層面研究成果的基礎上,傾向于贊同管理層面的理論觀點。在此前提下,總結出設計管理的模式、流程步驟,并提出了相關的研究建議。
一、設計管理的層面及其概念
(一)綜合層面的釋義
所謂設計,指的是把一種計劃、規劃、設想、問題解決的方法,通過視覺的方式傳達出來的活動過程(劉國余,2003)。它的核心內容包括三個方面:計劃、構思的形成,視覺傳達方式,計劃通過傳達之后的具體應用(劉國余,2003)。而所謂管理,則是由計劃、組織、指揮、協調及控制等職能要素組成的活動過程,其基本職能包括決策、領導、調控幾個方面(王金獻,1993)。
設計管理,從不同的角度去理解,則會產生多種不同的字面意思。它可以是對設計進行管理,也可以是對管理進行設計;可以是對產品的具體設計工作進行管理,也可以是對從企業經營角度的設計進行的管理。然而不管怎樣,設計管理已經發展為一個新的概念,一門新的學科,有著特定的內容與規律,并且作為企業提高效率、開發新品的一件利器,越來越多地受到企業界、設計界和經濟學界的研究和重視。日本學者認為,日本產品之所以具有國際競爭力,在設計的應用與營銷上經常創新的重要因素就是強調在設計部門所進行的管理,“圖謀設計部門活動的效率化,而將設計部門的業務體系化的整理,以組織化、制度化而進行管理”(陳偉,1996)。出于使用者不同的職業背景,設計管理(Design Management)一詞帶有廣泛的含義。自1966年英國Royal Society of Arts首度提供設計管理獎項以來,其定義已被爭論了近1/4世紀(陳偉,1996)。因為該名詞結合設計和管理兩方面的復雜內容,所以其定義也是分別基于這兩方面而展開的。這些定義大致可以分為兩類:一種基于設計師的層面,指對具體設計工作的管理;而另一種則基于企業管理的層面,指對特定企業的新產品設計以及為推廣這些產品而進行的輔設計工作所作的戰略性管理與策劃。從這個意義上講,所謂設計管理,就是讓貨品結果與營銷目標的銷售指標和認知度目標最大限度地接近的過程管理。
(二)設計層面的釋義
設計管理的第一個定義由英國設計師Michael Farry于1966年首先提出。設計管理是在界定設計問題,尋找合適設計師,且盡可能地使設計師在既定的預算內及時解決設計問題(陳偉,1996)??梢?,Michael Farry是站在設計師的角度提出定義的。他把設計管理視為解決設計問題的一項功能,側重于設計管理的導向,而非管理的導向。其后,Turner(1968)、Topahain(1984)、Oakley(1984)、Lawrence(1987)、Chung、Gorb等學者都各自從設計和管理的角度提出了自己的觀點。而英國和美國的一些設計管理課程由此大概可以分為兩種類型:一種是把設計管理列入現行管理課程,偏重于設計,這是屬于管理系科的;另一種是將管理注入設計課程中,偏重于管理,這是由設計學校開設的,其目的是讓學生了解和掌握以下內容:第一是影響創造和創新的要素;第二是產品與生產、設計之間的相關性;第三是設計程序;另外還有工業創新與工業設計師所從事工作的性質,以及與設計相關的各種法律保護等。
(三)管理層面的釋義
站在企業管理層面理解的設計管理,則是指企業領導從企業經營角度對設計進行的管理。它以企業理念和經營方針為依據,以使設計更好地為企業的戰略目標服務。其主要內容包括:決定設計在企業內的地位與作用,確立設計戰略和設計目標、制定設計政策和策略,建立完善的企業設計管理體系、提供良好的設計環境和有效地利用設計部門的資源,協調設計部門與企業其他部門以及企業外部的關系等。其中,企業品牌形象――CIS戰略的運用,便是一個典型的例子。設計管理作為一門新學科出現,既是設計的需要,也是管理的需要。沒計管理的基本出發點是提高產品開發設計的效率。對設計師來說,設計不是藝術家的即興發揮,也不應是設計師的個性追求。在現代經濟生活中,設計越來越成為一項有目的、有計劃、與各學科、各部門相互協作的組織行為。在這樣的背景下,缺乏系統、科學、有效的管理,必然造成盲目、低效的設計和沒有生命力的產品,從而浪費大量的時間和寶貴的資源,給企業帶來致命的打擊,同時設計師的思想意圖也不可能得到充分的貫徹實施;而另一方面,設計作為一門邊緣性學科,它有著自身的特點和科學規律,并且與科研、生產、營銷等行為的關系愈來愈緊密,在現代經濟生產中發揮著越來越重要的作用。因此,產品設計以及為推廣這些產品而進行的輔設計必然成為現代企業管理的重要內容之一。不了解設計規律和特點的管理,以及對設計管理不力,都會造成企業其他各項管理工作得不力。由此可見,在現代企業行為中,不管是以設計為背景,還是以管理為背景去理解,設計管理的基本內涵已逐步走向一致。綜上所述,設計管理研究的是如何在各個層次整合、協調設計所需的資源和活動,并對一系列設計策略與設計活動進行管理,尋求最合適的解決方法,以達成企業的目標和創造出有效的產品(凌繼堯,2006)。
二、設計管理的模式與意義
(一)設計管理的體系模式
在現實生活中,所有的設計,歸根結底都可以解析成三個層面:度――元素――組合方式。其中“度”的清晰與否決定
選擇“元素”的范圍;選擇“元素”的準確與否決定成品與目標的對位;“組合方式”的專業和靈感飛揚決定了成品的精彩。當然,設計管理作為完成設計合作計劃的核心部分,它是運轉設計資源的一套知識體系,包括設計計劃、組織系統、設計人員、評估機構等等(凌繼堯,2006)。
從圖1可以看出,設計管理是一個研究領域。它把設計管理作為管理的一個戰略工具,側重研究管理者、設計師和專家的知識結構,用以實現組織目標并創造有生命力的產品。從這個意義上看,設計管理旨在有組織地聯合創造性及合理性去完成組織戰略,并最終為促進環境文化做出貢獻。在現代市場經濟條件下,品牌的經營需要財務目標和認知目標的雙重實現。因此,我們才需要清晰地解析設計,才能輕松有效地管理設計。也許,昨天沒有管理,才氣、靈感和個人經驗都能讓設計帶來財務幸運,但是在已是買方市場而不是賣方市場的今天,沒有管理的設計就沒有幸運的未來。
(二)設計管理在企業管理中的意義
現代管理學有很多新的理念,其中一點就是對于產品與企業形象包裝的高度重視,它們往往體現著企業的經營理念和價值定位。在產品和服務趨于同質化的今天,新穎的視覺傳達設計和準確的市場定位及有力的市場宣傳,將帶給企業滾滾商機。良好品牌的傳播與形成,與設計的作用不可分離,“設計”可以成為企業商品形式的“賣點”。
設計管理在企業管理中具有更多的管理意味。設計對于潮流動向和審美趣味要有敏銳的感知和預測;設計可以成為功能的一部分,滿足人們個性化的需求;設計還可以節約成本、控制預算;優秀設計可以提升產品的附加價值;設計還是形式創新和創意拓展的一部分。因此,設計管理具有行政管理上的目標、計劃、組織、控制等作用。對于企業來說,設置相關設計管理部門,對于其內部整合資源、提高競爭力,從長遠來看是十分必要的。在企業的管理部門中,加強設計管理具有重要的意義。作為一個不斷要求上進的企業,作為一個想做到藝術境界的企業,就必須要引入設計與設計管理。設計管理不僅能改善其產品的品質,更會改善其公司的氣質,還會通過產品改善社會情調。
三、設計管理的程序結構
這里將遇到一個相對矛盾的問題:管理的一個重要特征就是解決非程序化問題,但是在這里我們卻在談論藝術設計管理的程序。為了避免理解上的偏差,在此,有必要作一些解釋。這里所探討的程序,指的是基于設計管理系統的結構程序。退一步說,如果沒有程序的建立,也談不上“非程序”的應用。設計管理的程序主要包括以下步驟。
(一)確認項目信息
在項目設計開始之前,首先需要明晰審查項目小組現有的信息,以確保項目從一開始就沿著正確的方向前進。這些信息包括五個方面:設計項目的發起者;直接客戶以及間接客戶;使用此設計的成果當事人;設計項目小組的初步候選人;可能影響設計項目的其他人(利益共享者)。
(二)制定設計管理計劃
在項目得到確定以后,制定設計管理計劃是一項非常必要的工作。中國有句老話“凡事預則立,不預則廢”恰當地表達了計劃的重要性。在制定管理計劃時,首先應明確列出整個設計管理的任務和時間,接下來的工作是細化(分化)任務,也就是將任務分解。分解的辦法有兩個,一是按照時間分解,大致確定某一時間段內的任務,這一點要考慮任務的前后結構關系;二是按照任務的構成分解,主要考慮合理利用人力資源。
(三)分析資源需求與風險預測
明確項目設計過程中可能涉及到的資源,考慮解決辦法,同時考慮規避風險的途徑。
(四)明確職責,優化管理
每一個組員的工作應該被寫進計劃。細化時間計劃,制作詳細的甘特圖日程表、設計管理計劃總表、工作細化以及職責分配表、監控程序圖等圖表。重大事件與交流計劃也應該被注意。在制定計劃的過程中,應該聽取組員的意見,同時設計管理者也必須建立相對的管理權威,形成自己的管理風格。比制定計劃更重要的事情就是讓你的組員理解并支持它。因此,設計管理計劃的傳達也是一個不可忽視的環節。
(五)監控計劃執行過程
計劃執行的過程中,監控程序是比較重要的。設計管理者要隨時把握設計的進程,評價每一個階段的目標,及時糾正方向的偏差。同時解決意外事件的能力在這一過程中也得到體現。
(六)評價設計管理
建立完成標準是十分重要的。當然,客觀的給予設計項目評價,總結其中的經驗教訓,也許對我們的幫助會更大。
四、結論與建議
(一)研究結論
設計專業的劃分到現在已經相當精細,一個設計師精通現代設計的每個環節已不可能。除了設計專長,他還需要具備一定的市場、管理、營銷等方面的知識,才能夠勝任分工合作過程中的定位和協作任務。設計師不再總以獨立的個體而存在,而是依照管理的要求,成為設計產業鏈條、設計生產流水線上的員工。這種改變,使得設計管理上升為一種使組織高效和管理優化的手段。當然,設計管理作為一門新興的交叉學科,需要融合吸收大量的相關學科內容,形成自己完善的體系,像傳播學、廣告學、公共關系學、美學、市場營銷、組織行為學、管理學等等。國外有許多較為先進的設計管理經驗和理論,我們可以加強與國際的溝通與交流,引進國外大公司的設計管理模式和經驗,發展我國的設計管理學科。在高等教育院校,完善設計管理的教學體系,讓設計管理的意識滲透到教學中去,已成為當下一個新的課題。
(二)研究要求
知識經濟帶來全球經濟一體化進程,中國也正在迎頭趕上這一次由高科技產業和信息傳播技術催生的新經濟浪潮。蓬勃而起的創意性產業越來越成為增長最快的行業。設計是創意產業鏈條的一部分,也具有高速發展的特點?,F代設計基本上是應用數字技術手段在電腦平臺上完成的,設計的拷貝與傳輸,甚至加工制作都是在電腦程控下精確進行的。因此,設計管理在數字化潮流下具有現代化的意識和觀念。首先,技術手段的豐富與更新,新的合作生產方式的展開,使得管理作用強化。其次,新材料、新工藝的應用,為設計形態與色彩提供了廣闊的表現空間,設計管理要具有信息的優勢,并在一定高度上起到宏觀的戰略制定和指導作用。最后,設計領先還在于對流行預期和市場走向的把握,比如在材質、色彩和造型設計上,能夠令人們感到新穎美觀,因而能促進產品的銷售,提高市場占有率,并延長產品的生命線。
(三)研究建議
未來設計將怎樣發展變化?未來設計的目的將是什么?未來設計評價的標準將如何變化?未來設計對人類的發展將意味著什么?在現代設計塑造了一個“人為世界”,而“人為世界”又反過來塑造人類自身的今天,我們不得不思考這些問題。
關鍵詞 個性化 時空化 綠色設計 解構 人性化 地域
現代平面設計藝術作為視覺傳達藝術中的主要組成部分,經歷了從工業化社會到信息化社會的轉變。而中國的平面設計藝術在觀念上,在功能上、在語意和形式表現上,都備受東西方文化思潮和藝術風格的影響。在現代設計多元化發展的大趨勢下,人類生存方式上新觀念的介入,思維的引導和情感的表達上,我們發現以往貫于平面設計中運用的法則正逐漸被打破,固有的符號現象被解構,人類在跨越世紀的里程中力求找到合理化的視覺空間。,中國現代平面設計的發展形成了新的設計需求。
(一)要具備個性化設計需求。20世紀80年代中期電腦的出現為我們帶來了前所未有的速度-------商業操作的速度和變化速度。重要的是,全球商業環境的劇變意味著從此可以通過直郵和電視廣告與客戶取得聯系。這一切都為平面造型設計行業設計者創造了一種激烈環境元素。當前,商業和設計行業出現了重疊,設計工作必須要在這個需求較高的新環境中能標出自己的領地。設計不僅要跟上美學的發展,還必須趕上科技的進步。隨著周圍標識語的不斷增多,設計者要重新去適應不熟悉的新領域。在設計和制作中都占主導地位的網絡領域就是其中一種。在科技帶來的種種壓力下,平面設計行業似乎有漸漸衰落的可能。但事實恰恰相反,商業界提出的新挑戰不僅加強了設計的重要性,還提高了設計的潛在能力。當平面設計走向程式化之后,其設計創意就必須具有個性化。個性化是設計師對平面設計個性差異的獨到見解,設計就成為無限超越自我,獲取隨心所欲的表達。平面設計行業從業人員通過對設計內容,版式等設計元素的重新組構,在演變中尋找個性,倡導設計風格。施展個人非凡的干勁和創造精神,設計在個性表達的道路上才更有生命力。
(二)具備國際化與多元化的設計需求。在近乎持續變化的國際環境中,平面設計者不得不與他們的客戶盡量保持同步;客戶所經歷的最大變化之一,就是趨向更多樣化勞動力對象的轉變,這個變化在近十多年尤為激烈。從而,人們在設計方面不得不嘗試面向大眾,在現代平面設計作品中,把不同民族圖像通過需要進行再組合,力求把所有新的成分因素考慮在內,設計描繪面盡可能的寬廣,以達到傳達多樣性文化信息的目的。
90年代,電信國際化以及相應的商業國際性特征,在理解文化及國家差異這一問題上賦予了新的意義。尤其當各國在金融及貿易交往中相互依賴中變的越來越重要的時候,就更是如此。同時在文化方面,尤其是青年文化,變的越來越全球化,音樂和廣告都成為了特別強大的力量,伴隨它們的則是那種能跟隨國家變化而自我更新觀念的能力。由各種不同民族不同國家文化的設計圖像的結合,進入到各國的交流活動中,甚至于引領了更具融合性的年輕一代。在平面設計領域,圖形是其視覺語言,它給人們的感受是共同的,它的最大特點是追求國際視野,使設計具備一流品質。而全球化與多元化的設計需求對圖形的創造,思考角度,大眾理解提出了合理化的認知觀。在構思和表現上現代平面設計的語言表述是一致的。“簡練、達意、巧妙、智慧,觀看世界現代設計的走勢,研究現代社會對平面設計的影響,對保持敏銳的設計思維和使作品和現代世界設計接軌顯得十分需要。
(三)時空化設計需求。平面設計所處的地位與從前已大不相同。而在觀看方式方面,無論是通過眼睛還是用鼠標去點擊,深入設計空間的方式也不同了,最主要的是速度比從前快了。平面設計以往多在二維狀態中進行創作。在經歷二維程式化的設計之后,設計師在探索新的界面,力求打開新的思維空間??萍歼M步和全球信息化,從某種程度上縮短了時空差,人的想象隨著時空概念的變化而延伸,平面設計也逐步從二維向三維到四維空間延展,設計中的時空化與科技化為我們展現出豐富的空間符號。宇宙之外的奧秘,天際星體的存在。東、西方空間想象因式,設計圖象的疊加、透視、錯位、漸變等仿佛將我們帶到立體思維的大空間。符合了平面設計界較早提出的超越和突破二維平面的提法。在視覺空間上創造失控景觀,以平面版式為例,20世紀80年代傳統期刊設計者在同樣字體的版面內往往通過改變大標題和副標題的行列來突出文章要點,用字體的大小及其外形來區分大小標題,而不是把大標題中的所有文字都列在一起,并將它們與大小標題分開。而現在,我們可以看到以各種各樣方式排列的標題:有的位于頁面的邊緣,有的斜掠過整整一頁或橫貫兩頁,有的豎立在文章的旁邊,還有的緊靠甚至是陷入正文里面,這些排列無疑會使版面給人一種立體感,在平面設計者跨入其他媒介設計過程中,超越二維的設計是一個重要的需求。 轉貼于
另外,重點內容的突出方式也發生了改變。設計者不再把整個標題制造得比正文字體大,相反,標題中文字的大小可有多種不同。設計者打破的這種設計規則,使他們可以以任何一種自認為恰當的新樣式來設計一行行的文字,通過這樣的設計,文字圖形便形象生動的跳躍在頁面上,屏幕上,包裝盒面上,瓶子標簽上或更多地方,這種動態感覺是印刷品和交互式制圖作品的典型特征代表,是新時代設計的需求。
(四)地域本土化設計需求,所指的實際是設計師在本土所處環境通過思考,而逐漸形成的設計思想。無論設計多么入流,由于地域,思維,生活方式決定了他們的設計風格,本土的文化對其設計形成了一定的影響,所以,設計師所處地域成長決定了它對設計的認知觀。設計師若能立足于本土文化來完成平面設計作品,其創作的圖像就帶有本民族的思想理念及獨立的表達能力,通過這樣,令人們領悟到歷史發展的文脈?,F代設計觀念無論形態還是形式上從藝術發展的角度來看,與中國傳統視覺造型元素還是有著一定的淵源的。我們知道現代平面設計的諸多流派均來源于印象主義、立體主義、構成主義等現代繪畫風格,而這些西方近現代派繪畫在其啟蒙時或多或少地受了東方藝術的影響,特別是中國傳統繪畫所強調的散點透視,虛實疏密,留白等形式和形態上的處理方法,對于它們的啟示是不容置疑的。通過這樣的梳理,應該說找到舊有造型元素與現代設計的契合點并對前者的改良更應是順理成章的。對于具有中國地域特色舊有造型元素其形態上的改造,則使元素不僅傳遞了現代設計觀念,更使舊有元素能夠真正傳遞載體的現代信息,符合現代設計的功用,從而擺脫元素在使用上的局限與語意上的偏差。對本土設計師來說,守一方水土研究自成體系的平面設計就顯得非常的重要。
(五)人性化設計需求與綠色設計。人性化設計與綠色設計思想是21世紀設計的主題,設計承載了對人類精神和心靈慰籍的重任。年輕人購買商品是為了張揚個性和煥發蓬勃的青春活力,年壯者是為了填補青春已逝的失落和展示成熟與自我成就感 ;年老者則懷著一股懷舊感和飽經滄桑的平靜感。所有設計其實都是以人為本,圍繞人的需要展開的,平面設計也不例外,刺激消費的美學觀念曾經成為現代平面設計唯一的評判標準,從而導致能源浪費,資源破壞,生態失調。工業文明帶來的危機正在喚醒越來越多的人。
綠色設計需求給平面設計師提出了一個嚴肅的課題,它強調在保護自然,生態,充分利用資源,以人為本,與環境為善。作為平面設計行業與其外沿,無論從意念到表現,都會給設計帶來新的生命內涵,隨著時展,人們審美觀念的改變,設計作品一方面完善實用功能,從需求上獲得滿足,另一方面,順現代審美潮流,追求美的情調。往常盲目的視覺刺激行為,往往造成視覺災難。人類被圍困在強烈的色彩,呆板的圖形中。因此,視覺上運用綠色設計觀念,讓平面設計維持合理的視覺秩序,制止視覺污染,完善設計作品與人類的協調非常必要,另一方面,通過傳達對環境的關注與自然相關的圖象以及單字,詞組也具有非常重要的意義,平面設計專業語也已開始逐漸適應這些變化,設計師們開始意識到他們在紙張耗費與污染技術應用方面所扮演的主要決策人的角色。1996年,美國平面造型藝術學院出版了“平面設計中環境責任指南”。又為某紙張制造商起草“設計之生態學”手冊,為美國設計師提供了關于減少對環境沖擊的指導方針。在中國,人們也已逐漸意識到以人為本的綠色設計的重要性,以人為本的綠色設計將會是中國平面設計發展歷程的長期需求。
在經歷了分解與重構后的現代平面設計藝術,未來的設計將著眼于與平面設計相關環境的設計上,其關系是相連的,內在的,互動的,廣義的。當然,要設計師們和企業家們立即改變觀念,設計出符合未來標準的作品決非易事。這將面臨太大的難度。特別是在當今刺激消費,市場經濟的大形勢籠罩著整個世界的氣氛下,要做一點真正有利于人類長遠利益的好的設計是非常難的一件事。不過,工業“文明”,市場經濟給人類帶來的危機正在喚醒越來越多的有良知的人。從每天用的各類設計產品,到自認摩登的現代化國際性大都市,其中究竟有多少是必要的??!昂侠硐M”,“道德經濟” 變是必然。也是未來人類自救的方向。 未來,平面設計的職責就是維護倫理性和道德性。 轉貼于
好的設計,將是未來正確價值觀的體現。
---------------------------------------
參考書目
《邊緣設計》凱恩.費舍爾編著中國輕工業出版社
《非物質社會》滕守堯著四川人民出版社
論文摘要:該文分析了程序設計在計算機學科中的地位以及程序設計有關的知識和能力構成,結合自己多年的計算機專業教學實踐,探討了在計算機教學中培養學生程序設計能力的有效策略。
計算機科學是一種創造性思維活動,其教育必須面向設計。計算機的本質是“程序的機器”, 只有懂得程序設計,才能懂得計算機,真正了解計算機是怎樣工作的。培養學生程序設計能力對計算機專業的學生來說不僅是培養職業技能的需要,也是培養大學生創造性思維的重要途徑。學習程序設計語言可以培養學生運用算法來解決實際問題的能力,這種解決問題的方式是計算機所獨有的,也只有通過對計算機的程序設計語言和程序設計方法的學習才有可能獲得這種解決問題的能力。
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).
1.思維導圖
思維導圖(Mind Maps)是英國人東尼?博贊(Tony Buzan)在20世紀70年代提出的一種先進的記筆記方法,一般通過帶順序標號的樹狀結構來實現思維過程,它是以圖和直觀形象的線條進行思考和表達的,并將放射性思考實現具體化。國外的一些世界500強企業,如微軟、IBM、惠普等,都是思維導圖的第一受益者和倡導者。思維導圖主要由圖像、顏色、曲線和關鍵詞等元素構成,其主要特點有:主題主干作為分支呈放射狀、注意力主要集中在中央圖形上、分支構成一個連接的節點結構體系、由關鍵詞或關鍵圖形構成分支。
2.“C語言程序設計”課堂教學的現狀
《C語言程序設計》是一門理論與實踐并重的程序設計課程,教學難度較大,對于很多知識,學生總是似是而非,概念模糊,不能完全理解和掌握。
目前,《C語言程序設計》課程教學情況主要表現在以下幾個方面:
(1)在教學模式上,教師多采用多媒體教學,課堂理論加上機實驗的教學模式,課堂理論為主;
(2)在教學手段上,教師按照CAI教學課件進行講解,學生所接受的都是零散的知識,這一節課學完,下一節課可能就忘記了最基本的知識點;
(3)在教學方法上,以教師講授為主,缺乏師生互動和驅動式任務教學,對于課程和章節,學生也不能從整體進行認識和掌握;
(4)在實驗環節中,由于學生對基礎理論知識掌握的不夠扎實,在上機課時,只是機械的照搬教材代碼,以驗證課堂內容為主,不能很好地理解程序的編程思路和方法,以致于課程結束時,學生不能很好地開發一個小的C語言程序。
為了加強學生的邏輯思維能力,提高學生學習效果,我們將思維導圖這一教學方法應用在《C語言程序設計》課堂教學中。
3.思維導圖在C語言程序設計課堂教學中的探索
在《C語言程序設計》這門課程中,教學內容非常多, 包括程序設計基礎知識、常量變量、數據類型和表達式、順序結構程序設計、選擇結構程序設計、循環結構程序設計、數組、函數、指針、用戶自己建立用戶類型、文件的輸入輸出等。
(1)課程的綜合性設計。由于C語言內容較多,學生對知識只是進行線性的接受,不能對課程形成整體的認識,因此,首先對課程進行整體設計。
采用XMind思維導圖設計軟件,對C語言課程整體結構圖進行設計,如圖1所示。
在第一節課授課過程中,教師采用思維導圖呈現給學生這門課程的整體結構,學生頭腦中能夠對課程有整體的認識和了解,有助于提高學生的學習興趣和求知欲望,便于學生進一步學習。
(2)章節的連續性設計。C語言中的三種程序設計結構在知識講授結束時,要進行章節的總結,將三種程序結構的相關知識以思維導圖的形式展現出來,一方面不僅可以加深了學生對知識的理解和掌握,另一方面也潛移默化地引導學生主動學習和對知識連續記憶的能力。
(3)知識點的擴展性設計。在引入新章節時,教師首先向學生展示章節完整的思維導圖,將其作為目標教學的工具。思維導圖的運用能使學生明確學習目標、學習內容與范圍,以及各知識點之間的先后順序,能夠更形象、更直觀、更全面的表述學習進度目標。以循環結構一章為例,教師首先給出整體的章節結構,同時每個知識點都可以進行擴展,輔助學生記憶。
(4)學生的自主性設計。在進行章節復習時,教師展示章節完整思維導圖的同時,引導學生自行繪制出思維導圖,教師也可以只給出提示或關鍵詞,引導學生建立內容全面、詳實的思維導圖,從而建立自己的知識結構,更好地掌握知識。
教師通過學生設計的思維導圖能夠發現學生的知識結構和對知識的理解和認知程度,從而更好的優化教學。學生在自我設計過程中,能夠及時發現知識的盲點區,不斷學習并進行彌補,提高自己對知識的掌握。
關鍵詞:軟件工程;程序設計;課程群;建設;實踐
軟件工程專業的培養目標是面向我國軟件產業培養急需的工程應用型人才。軟件產業的發展要求學生具備較強的系統分析、設計、開發與維護能力[1]。為培養學生軟件系統方面的相關能力,許多高校的軟件工程專業都設置了系列課程模塊,如程序設計課程模塊、網絡技術課程模塊、計算機體系和操作系統課程模塊、軟件工程課程模塊等,這些模塊往往是一些單獨課程的組合,有很多學生學了這門課程,又忘記了那門課程,到畢業時專業能力達不到社會所要求的層次。程序設計課程群是軟件工程專業系列課程的重要組成部分,其承載的技能培養目標是專業培養的子目標[2],處于非常重要的地位。課程群建設是專業建設的一部分[3],有利于打通課程知識脈絡,避免課程內容重復或前后脫節,使前后連貫,內容融合,進而獲得整體優勢[4]。程序設計課程群主要培養計算思維能力、算法設計與分析能力、程序設計與實現能力和系統分析開發能力[5]。學生通過程序設計課程群的學習,可掌握1~2門程序設計語言,更進一步理解程序設計方法,熟練掌握常用的數據結構和算法,形成良好的程序設計風格,可獨立分析、設計和開發中小型軟件系統。所以對程序設計課程群進行研究并積極實踐對專業培養目標的實現具有重要現實意義。
1問題分析
目前,大多數高校信息類相關專業都開設了程序設計系列課程,一般為C語言程序設計、數據結構與算法、java程序設計等。許多高校都將C程序設計作為第一門程序設計課程[6],一般安排在第一學期或者第二學期,學完C語言之后,再學其他程序設計課程,如數據結構等。由于C語言本身比較靈活且語法內容比較多,對于初學者來說并不太好掌握。一些教師在授課過程中,沒有站在軟件設計的高度思考教學內容,往往過多地強調語言成分的語法和語義,而忽視了計算思維能力[7]的培養,使學生從開始就扎進程序設計語言的細枝末節中去,忽略了軟件工程思想的滲透,到最后學生掌握了一些語法,卻不能寫出較為優美的程序或沒有形成較好的程序設計思維和風格。算法是程序的靈魂,數據結構和算法在課程群中具有基礎和核心地位[8]。在實際教學過程中,學生普遍反映數據結構和算法課程抽象難學,在學習和實際應用中出現的問題比較多,很難寫出能正確運行的程序,學習過程中成就感不強,學完之后還是不知道如何應用,很難達到預期的效果。由于在前期的學習中,程序設計基礎沒有打牢,對常用的數據結構和算法沒有真正掌握,模塊化程序設計思維沒有有效建立,良好的程序設計風格沒有形成,導致后續的高級面向對象語言程序設計學習很難深入,最終導致軟件分析與設計能力得不到有效的提升。
2程序設計課程群建設
我校軟件工程專業采取校企合作辦學模式,由吉首大學和中軟國際共同建設,企業參與人才培養的全過程,在具體實施過程中,學校側重于理論教學部分,企業側重于實踐教學部分[9]。程序設計課程群是軟件工程專業課程體系的重要組成部分,企業參與討論與建設,確定該課程群以軟件設計能力培養為主線,以C語言程序設計、數據結構、面向對象技術、算法設計與分析幾門課程為基礎組建課程群,C語言程序設計開設在第一、二學期,數據結構、面向對象技術、算法設計與分析分別開設在第三、四、五學期,第六學期可開設JavaWeb程序設計或Asp.NetWeb程序設計,使課程群在能力構建和開設形式方面形成一個不間斷的體系。
3程序設計課程群實施
3.1精講課程主要內容,提高程序設計能力
課程組教師首先需要站在軟件分析與設計的角度研究各門課程在課程群中的地位和作用,把課程群中的系列課程作為一個有機的整體,研究各門課程的主要教學內容,針對課程重點、難點、疑惑點進行精講,做到理論與實踐課并重,有效提高學生程序設計水平。在課程群系列課程中,由于第一門課程是后續系列課程的基礎,所以學生必須掌握它。在C語言的教學中,要滲透軟件分析與設計的思想,把握程序的主要框架,不糾纏于一些細枝末節的語法。函數是C語言教學中的重點,需要重點突破,從模塊設計的角度來考慮函數設計,對于一個具體的函數,則要掌握函數的返回類型、參數類型以及參數個數。如用函數處理一個數組時,需要傳遞數組的首地址和數組的規模,首地址用指針表示,數組的規模則有兩種表示方法,一是數組的長度,二是數組的起始下標和結束下標,這兩種方式可能會分別應用到不同的地方,如果教師一直不提示第二種方法,則將來學生在寫數組做參數的遞歸程序時可能會遇到困難。從多年的教學實踐來看,如果學生真正掌握了函數設計方法,再加上必要的算法知識,一般情況下,程序設計就會變得得心應手而且十分有趣;對于數據結構課程,采取以數據存儲(內存)為主線的方法,將重點放在數據的存儲和相關算法方面,在算法實現時滲透模塊化的思想,需注意頭文件和實現文件的定義,因為數據結構內容具有很強的連貫性且程序的初始化工作較多,如鏈表的具體應用則先要建立鏈表、樹的遍歷和節點的查找等則先要建立樹、圖的遍歷和最短路徑及關鍵路徑等則先要建立圖,在實驗過程中有意識地把一些基礎工作放入頭文件,則會極大地提高實驗的效率;在面向對象技術教學中,以面向對象程序設計的方法為核心,以語言中的面向對象機制為主要內容,在適當的時候引入《ThinkinginC++》、《EffectiveC++》、《ThinkinginJa-va》等優秀書籍中的一些思想和經驗,要注重面向對象程序設計過程中大的程序框架的合理性以及具體處理算法的正確性;在講授算法設計與分析的時候,應集中精力將主要算法講透,直到學生學懂為止,在實現算法時,應充分運用面向對象設計的思想,將算法封裝在類中;在web程序設計教學中,采用案例驅動的方式,精講軟件項目設計中的主要方法和主要問題,培養學生工程化設計思想。精講的目的是讓學生多練,精講之后要布置任務并為學生提供練習環境和相關指導,必須充分發揮教師主導和學生主體作用,教師要認真檢查學生的作業、實驗和練習情況,及時糾正問題,引導學生運用軟件工程的思想設計程序,培養學生良好的程序設計思維和程序設計風格,激發學生自覺學習和實現相關算法,最終提高程序設計能力。
3.2大規模開展程序設計訓練,培養程序設計能力
為培養學生算法設計與分析能力,學院在晚上和周末開放了實驗室,在實驗室搭建了ACM在線測評系統(ACMOnlineJudgeSystem),并接入了校園網,結合C程序設計、數據結構與算法等課程部署了大量習題。學院利用課余時間,有計劃組織學生進入實驗室進行編程訓練,并為每次訓練配備了指導教師。平時,學生也可以在寢室登錄平臺進行訓練。教師在講授C程序設計等課程的時候,要求學生利用課余時間在ACM平臺上完成至少上百道題的訓練,并將完成情況計入課程的平時成績。通過大規模開展在線程序設計訓練,學生的程序設計能力有了明顯的提高。
3.3開展課程設計訓練,培養工程化設計思想
在課程群中除開設理論課程對應的實驗項目之外,還針對整門課程開設了綜合性課程設計項目,如C語言課程設計、面向對象技術課程設計、javaweb課程設計,單個課程設計周期為1-4周。學院課程設計項目主要由企業教師指導完成,該類項目采用分組形式,在組內模擬軟件企業運行模式設置相關崗位角色,學生在仿真企業環境中,利用仿真的軟件開發項目,進行輪崗和角色體驗,培養學生的軟件工程應用能力、軟件項目開發與測試能力、職業素質等,從而使學生熟悉軟件項目開發流程和規范,養成良好的軟件開發習慣。課程設計結束時,要求學生演示并講解自己的項目開況,由學院教師和企業教師組成評定小組進行評分。
3.4改革考核與評價方式,理論與實踐、平時與期末相結合
理論與實踐相結合。程序設計課程群內的課程都是實踐性很強的課程,其目的是運用所學的知識解決實際問題,決定了課程的期末考核要綜合考慮理論和實踐兩部分內容。理論部分主要考查學生對基本概念的理解和對基本知識的掌握情況,實踐部分側重考查學生的綜合應用能力,這兩部分成績都在期末完成,占課程總成績的60%左右。平時與期末相結合。期末考核重在體現學習的結果,平時成績則側重于體現學習過程,在課程總成績中,平時成績占40%左右,即一門課程約有40分來自平時的學習過程。平時成績一般由出勤、作業和平時實驗情況、課程設計情況組成。在學期開始第一堂課的時候將課程評分方式告知每一個學生,必須抓緊平時的學習,若平時分小于20分,則取消課程考試資格或直接將課程總成績記為不及格。
4結語
程序設計課程群對培養學生計算思維能力、算法設計與分析能力、系統分析與設計能力具有重要作用。本文分析了學生在課程群學習中遇到的一些問題,從軟件分析與設計的角度對課程群進行建設與改革,提出了以C語言程序設計、數據結構、面向對象技術、算法設計與分析等幾門課程為基礎組建程序設計課程群,給出了課程群的主要知識與能力體系要求,通過精講課程主要內容、大規模有組織地開展程序設計訓練、企業教師指導課程設計、改革考核與評價方式等方法進行教學改革,學生的程序設計能力得了到較大的提高。
參考文獻
[1]韋迎春,文俊浩,陳蜀宇.以能力培養為核心構建示范性軟件學院實踐教學體系[J].中國高等教育,2011(2):49-50.
[2]喬付,王國權,張鳳武.CDIO理念下計算機程序設計課程群建設探索[J].內蒙古師范大學學報,2011,24(11):39-41.
[3]孫雷,王新.計算機專業程序設計課程群的研究與實踐[J].教育教學論壇,2013(11):222-224.
[4]翁偉,吳克壽,吳蕓,等.程序設計課程群建設探索與實踐[J].計算機教育,2009(23):123-125.
[5]王海舜,蔣巍?。诔绦蛟O計能力培養的軟件設計類課程群架構[J].計算機教育,2012(2):23-26.
[6]萬臣,謝芳,胡泉.計算機專業程序設計課程群的建設與研究[J].合肥工業大學學報:社會科學版,2009,23(1):33-36.
[7]汪紅兵,姚琳,武航星,等.C語言程序設計課程中的計算思維探析[J].中國大學教學,2014(9):59-62.
關鍵詞: C程序設計 運算符 預算順序 算法 結構
一、引言
現在許多院校的計算機專業開設了C語言課程,將其作為學生學習程序設計技術的入門課程,這與C語言的特點是分不開的。C語言不但可以編寫系統軟件,而且可以根據用戶的需要編寫出滿足用戶要求的應用軟件,尤其是C語言具有很好的對計算機的硬件編程能力。同時,C語言具有邏輯性強、處理問題周密、嚴謹的特點,是集知識和技能于一體,實踐性很強的課程。學生通過學習C語言可掌握程序設計的一些基本方法和技巧。然而C語言的數據類型較多、表達式豐富、語法結構較復雜,是一門教師難教、學生難學的課程。
《C程序設計》的內容很豐富,按照我們現在的教學大綱,教學的主要內容是基礎知識、四種結構的程序設計、函數與數組的應用和一些簡單的算法。在學習時,同學們應該把主要精力放在這些部分,多進行練習和上機調試。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不要氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完后面的章節知識,前面的問題也就迎刃而解了。學習C語言始終要記住“曙光在前頭”和“千金難買回頭看”。學習后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識。這是我們學生最不易做到的,然而卻又是最重要的。學習C語言就是要經過幾個反復,才能前后貫穿,積累應該掌握的C語言知識。那么,我們到底該如何學好《C程序設計》呢?
二、奠定基礎――了解、學好運算符和運算順序
C語言的運算非常靈活,功能十分豐富,運算種類遠多于其他程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單。但初學者往往會覺得這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來會得心應手,而有些可暫時放棄不理,等用到時再記不遲。對于運算符的優先級也是必須明確的?!禖程序設計》運算符可分為15種優先級,從高到低,優先級為1―15,且除第2、3級和第14級為從右至左結合外,其他都是從左至右結合,它決定著同級運算符的運算順序。這里就給大家介紹一個優先級口訣:
括號成員第一
全體單目第二
乘除余三、加減四
移位五、關系六
等于(與)不等排第七
位與異位和位或
“三分天下”八九十
邏輯或跟與
十二和十一
條件高于賦值
逗號運算級最低。[1]
下面我們來舉個例子:
a=3;b=5;c=++a*b;d=a++*b;
對于c=++a*b來說,按表中所列順序,++先執行,*后執行,所以++a執行后,a的值為4,由于++為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了。而對于d=a++*b來說,由于a++為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。這個例子執行后,a的值為5,b的值為5,c的值為20,d的值也是20。
三、砌磚壘墻――了解、學好四種程序結構
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。例如:a=3,b=5,現交換a,b的值。這個問題就好像交換兩個杯子的水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:c=a;a=b;b=c;執行結果是a=5,b=c=3。
(2)分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合于帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。那么就先來簡單介紹一下二分支選擇結構。C語言的if語句有兩種基本形式,即獨立的if結構和if-else結構。[2]其語法形式如下:
1)獨立的if結構
if(表達式)
語句
2)if-else結構
if(表達式)
語句1
else
語句2
再來看一下分支嵌套的語法形式
if(表達式1)
if(表達式2)語句1
else語句2
else語句3
(3)循環結構
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構。C語言中提供四種循環,即goto循環、while循環、do-while循環和for循環。[3]四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do...while、for三種循環。常用的三種循環結構學習的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹后就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨于結束的語句(即循環變量值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。對于它們的異同點,我們也應該了解,明確:用while和do...while循環時,循環變量的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while循環和for循環都是先判斷表達式,后執行循環體,而do...while循環是先執行循環體后判斷表達式,也就是說do...while的循環體最少被執行一次,而while循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和continue語句進行控制的。[4]在這里介紹一下三種常見循環的一般格式:
1)while循環:
while(表達式)
循環體
2)do-while循環:
do
循環體
while(表達式)
3)for循環:
for(表達式1;表達式2;表達式3)
循環體語句(組)
(4)模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然后通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫。因此常說:C程序=主函數+子函數。因此,對函數的定義、調用、值的返回等中要尤其注重理解和應用,并通過上機調試加以鞏固。[5]
其實,順序結構、分支結構和循環結構并不是彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,但是不管哪種結構,我們均可廣義地把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。[6]
四、修飾――掌握一些簡單的算法
所謂算法,就是解決某類問題的方法。確切地說,就是對某一類特定的問題,給出解決該問題的一系列(有窮的)操作,而每一操作都有其確切的意義,并在有限時間內可以計算出結果。一個算法有多少個輸入量,它是問題給出的初始數據,經過算法的實現,它有一個或多個輸出量,這就是算法對輸入運算的結果,即問題的解答?!禖程序設計》教學大綱,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。[7]如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如要將兩個變量X、Y的值交換。
用自然語言描述如下:
步驟1,將X值存入中間變量Z中:XZ。
步驟2,將Y值存入變量X中:YX。
步驟3,將中間變量Z值存入Y中:ZY。
用偽代碼可表示如下:
BEGIN
xz
yx
zy
END
當然還可以用流程圖表示,這里就不列舉了。
五、結語
在大學里,許多學C語言的人,都有著不同的目的。有的人是認真對待每一門所學的課程,包括C語言,有的人是對程序設計有著濃厚的興趣,還有的人只是為了獲得學分而學習C語言。這樣,一部分人會覺得C語言容易學,一部分人又會覺得C語言難學,還有一部分人會覺得C語言容易學,但是不會編寫程序。這樣就導致了學習C語言效果的差異。其實,學習C語言并不是進行一種職業培訓,而是一種綜合思維的訓練。我們應當正確認識什么是程序,并學會一種思考問題的方法,初步掌握用C語言來進行程序設計。
參考文獻:
[1]田祥宏,榮政.C語言程序設計.西安電子科技大學出版社,2007.
[2]李麗娟.C程序設計基礎教程.
[3]Stephen Prata著.云巔工作室譯.C Primer Plus.
[4]Kenneth A.Reek著.徐波譯.C和指針POINTERS ON C.
關鍵詞:計算機;系統程序設計;C語言
中圖分類號:TP391.1
科技的進步給人們的生活帶來了翻天覆地的變化,計算機系統應用程序的不斷開發研究更是提高了人們的生活水平,人們對于計算機系統程序的要求也越來越越高。單一的平臺基礎已經不能滿足人們對計算機程序的需求,計算機系統程序開發者面臨越來越大的挑戰。高性能的計算機系統已經成為衡量一個國家科學以及經濟等綜合實力的最重要的標志。
1 計算機系統程序設計的平臺基礎功能及特點闡述
計算機系統程序設計的平臺基礎通過抽象的圖形,對計算機程序用戶進行了隱藏,用戶只需要通過環境的圖形的界面完成一系列的活動,包括本地編輯以及遠程提交等。平臺基礎對于計算機程序用戶來說只需要完成圖形、圖標等形式的代碼編輯,利用C語言進行計算機程序設計,主要是通過遠程提交模塊,實現與計算機進行交互。平臺的特點主要有以下幾點:首先,編程過程中不斷追求精準,在進行計算機系統程序的設計過程中,應該具備層次式的設計思想,分為應用層、進程層、代碼層三層,這三層是層層遞進的關系,相互補充,共同對程序設計起作用。其次是抽象的圖形和圖標,計算機系統程序設計不論是從功能上,還是從邏輯關系上,都需要相互關聯,例如在進程層利用的抽象的圖標表現程序結構,從而設計程序。最后代碼的自動生成,通過對以上三個層析進行的編輯以及代碼的編寫,自動產生C代碼,此代碼是在MPI的基礎上生成的。
2 基于C語言基礎的計算機系統程序設計特點
C語言是對應的計算機程序設計中的語言,它主要包含了有關的高級語言以及匯編語言的特點。以下闡述C語言的相關的特征信息:
首先,操作較為簡單。因為C語言的操作較為簡單,因此靈活性較強,它主要是由32個關鍵字以及9種控制語言組成,所以在進行計算機系統程序設計時,形式相對而言較為自由,并且能夠區分大小寫。C語言可以有效的將高級語言的基本結構和和對應的低級語言的使用性進行較為準確的結合。
其次,C語言的運算有三種運算符,設計范圍較為廣泛。C語言在對括號、賦值等在一定程度上的處理將其看做是運算符,進而豐富了C語言的運算類型,并不是與其他語言一般進行較為單一的運算類型,C語言的表達類型也因此表現得多樣化。
最后,C語言的輸入操作基本由標準庫函數實現。在C語言中順序、選擇以及循環是其三種基本結構,還有9種控制語句,因此,在計算機系統程序設計中,除了學習9條控制語句和各種運算符之外,還要熟練應用常用的標準庫函數。函數作為C語言設計的程序的基本單位,一般情況下,C語言程序的開始基本的是由main()函數開始,當其執行完畢,程序便執行完畢。目標代碼生成后具有高質量,高效率的特征。與匯編語言相比,C語言的可移植性較強,對硬件可以直接操縱。
3 C語言的語法分析
假如一個對應的變量名稱后面帶著一個囊括特定數字括號,那么這個對應的聲明便是的數組聲明。而對于字符串來說,實際上也是一種數組,主要是以ASCII的NUL形成數組的方式退出,以下從兩個方面分析語法:
第一是指針,它是指一個相應的變量聲明時前面利用了*號,就說明這是一個指針變量,這一變量的對應一個的存儲地址,但是*號便主要使用內容操作符,即是指會自動取該地址中的存儲內容。在C語言中,指針是區別于其他高級語言的主要特征。因為指針這一因素不僅可以是相關變量的地址,還可以成為數組以及數組元素甚至是相應函數的地址。但是需要注意,指針在計算機系統程序設計中是一把雙刃劍,帶來益處的同時也存在弊端,在一般程序設計的操作中,通過指針可以很自然的表達,但是一旦沒有正確或者過分的運用指針便會使得系統程序存在重大的安全隱患。
第二是字符串,在C語言中,字符串實際就是指CHAR型的數組,因此在使用字符串的時候不需要引用庫。但是C語言的標準庫實際上包含了一些對應的操作函數,表面上看他們是字符串而不是數組。在C語言中,程序的輸入輸出是經過標準庫中的某一組函數實現的,這些操作函數被定義在頭文件中。
4 計算機系統程序設計中的C語言結構分析
4.1 順序結構的程序設計
相對來說,順序結構的程序設計較為簡單,只需要根據解決問題的順序設計對應的語句,就可以完成系統程序設計,程序的執行順序遵循從上至下的原則依次執行。例如假設A等于3,B等于5,那么在程序設計中,需要對A和B的數值進行交換,實際上可以將這個問題具體化,可以將他們看成是兩個水杯中的水進行交換,但是還需要第三杯水C的加入,正確的程序執行方式應該是的C等于A,A等于B,B等于C,最終執行的結果便是A等于5,B等于C等于3。對于計算機系統程序設計的初學者來說,關聯性的錯誤很容易犯,最為常見的順序結構便是輸入、計算,以及輸出三個步驟。
4.2 選擇結構的程序設計
選擇結構的執行主要依據的是一定相關條件對應與相關路徑的選擇,對于此類系統程序設計來說主要運用于使用性較強的分支條件,以及分析程序的相應的流程。在選擇相應的語句時,要選擇不同的程序流程進行。擁有較強邏輯關系的以及在一定程度上需要相應條件的判斷計算,比較適合運用選擇結構,進行此類系統程序設計時,一般都需要先繪制程序的流程圖,然后根據流程圖寫源程序。將程序設計與語言相互分開,將問題簡單化,便于設計者理解。
4.3 循環結構的程序設計
循環結構主要用于減少源程序重復書寫的工作量,主要是對循環往復執行某一段算法問題的描述,在程序設計中,此種方法的是最充分發揮計算機特長的程序結構。在C語言中,主要包含GOTO循環,WHILE循環,DOWHILE循環以及FOR循環四種形式的循環,此四類循環可以針對同一問題進行相應的處理,在正常情況下,這四種循環之間還可以進行一定的替換。C語言較為豐富,其中指針是其最為凸顯的特征,這一特征充分體現了C語言的優越性。C++在C語言上進行了一定程度的改進,保留了指針的相關操作,并且加強了其安全性,受到用戶的熱烈追捧,Java語言是在C++上的改進,取消了指針操作,同時也改進了C++飽受爭議的地方,無論是從適應性上還是的從安全性上,都取得了較為好的效果。那么無論是基于何種語言進行系統程序開發,C語言是最為基礎以及最為重要的。
5 結語
隨著經濟的騰飛以及的科技水平的不斷提高,計算機技術水平也在不斷提高,21世紀,計算機技術顯然成為了最熱門的技術之一,它不僅促進了生產力的發展,也促進經濟以前所未有的步伐增長。計算機系統程序的設計還在不斷地推成出新,作為程序設計的基礎平臺之一的C語言也在不斷的進行完善和發展,其本身具有較多的優點,因此被廣發的應用。但是存在的不足也是顯而易見的,但是隨著科技的不斷進步以及時代的不斷發展,C語言肯定會不斷的得到完善,給計算機系統程序設計帶來意想不到的益處。
參考文獻:
[1]陳斌.基于單片機的光電式葉片面積測量儀[D].西北農林科技大學,2010.
[2]羅莎.計算機中C語言的應用特點分析[J].計算機光盤軟件與應用,2012,7.
[3]夏歡慶.C語言在計算機中的應用[J].電腦知識與技術,2011,8.