版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第輕松學(xué)習(xí)C語言的技巧(實(shí)用)
輕松學(xué)習(xí)C語言的技巧
1,任何語言都是為應(yīng)用服務(wù)的。這里的應(yīng)用主要在測試方面。首先應(yīng)該明確這一點(diǎn)。
2,C語言能不能速成因人而異,大學(xué)里一般C語言一般60課時(shí)左右(40_60=2400分鐘=100小時(shí)=4天左右)。所以合理分配時(shí)間,加上學(xué)習(xí)上沒有什么障礙的話,2周左右是可以略有所成的。
3,還有一些客觀原因制約學(xué)習(xí),如果是第一次接觸語言,那么一些語法規(guī)則和一些“約定俗成”的東西需要一段時(shí)間來消化。從我個(gè)人經(jīng)歷來看,學(xué)習(xí)C語言以后,Java我?guī)缀鯖]有學(xué)習(xí)過,只是邊學(xué)邊用而已。所以可見第一門語言的學(xué)習(xí)如何重要。所以沒有什么特殊情況,盡量放下腳步。
4,無論你打算怎么制定學(xué)習(xí)計(jì)劃,實(shí)踐的比重一定要最大。在你學(xué)習(xí)中你可能就會(huì)發(fā)現(xiàn),好多要點(diǎn)能在實(shí)踐中獲取,大大提高學(xué)習(xí)效率。舉個(gè)簡單例子:與其背,,,%s,%o等等是什么意思,不如在程序中調(diào)用一下,看看輸出結(jié)果最為直觀。
5,根據(jù)應(yīng)用,個(gè)性化學(xué)習(xí)語言。C語言提供的頭文件中有大量可供調(diào)用的函數(shù),但并不是都有很高的利用價(jià)值。根據(jù)你實(shí)際的測試用例的安排,或測試的方法來使用這些函數(shù)即可。有時(shí)候,一段系統(tǒng)提供的函數(shù)和你編的一段代碼肯能會(huì)實(shí)現(xiàn)同意個(gè)目標(biāo),但系統(tǒng)函數(shù)可能只需要一行,而你的代碼要幾十行,所以多了解系統(tǒng)函數(shù)的利用價(jià)值,對(duì)你快速應(yīng)用很有幫助。
6,切忌學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,都有周期性的。每一個(gè)階段都會(huì)有止步不前的時(shí)候。適當(dāng)?shù)恼胰颂峁椭浅鯇W(xué)者必須做到的,單憑自學(xué),有些時(shí)候會(huì)錯(cuò)過一些技巧性的東西,既浪費(fèi)時(shí)間,又未有所得。
7,下面說學(xué)習(xí)過程:
(1)了解和使用一個(gè)函數(shù),比如一個(gè)10幾行的函數(shù)。要做到了解每一句話的作用。每個(gè)函數(shù)的.參數(shù)的意義。然后嘗試自己默寫這段程序,運(yùn)行,調(diào)試??醋约哄e(cuò)誤在那里。然后用函數(shù)中出現(xiàn)的知識(shí),來擴(kuò)展這段程序,哪怕擴(kuò)展的都是打印語句。注意:數(shù)據(jù)類型等一些知識(shí)可以遇到多少學(xué)多少,慢慢積累。
(2)掌握3種程序結(jié)構(gòu),能學(xué)會(huì)3種結(jié)構(gòu)間并列、嵌套的使用。理解條件、循環(huán)結(jié)構(gòu)的意義和目的。
(3)知道以上這些內(nèi)容,就可以大膽的參考材料,嘗試閱讀或改寫書中提供的小程序了。例如求斐波那鍥數(shù)、階乘一類的,這些幾乎是在練習(xí)程序的結(jié)構(gòu),使用熟練度。
(4)第一次深入學(xué)習(xí):數(shù)組。學(xué)完數(shù)組后,可以補(bǔ)充一些數(shù)據(jù)結(jié)構(gòu)的知識(shí),然后就可以做很多的排序、查找的程序了。這時(shí)候可以做一個(gè)小型的管理系統(tǒng),來檢驗(yàn)所學(xué)。
(5)第二次深入學(xué)習(xí):指針。指針學(xué)習(xí)最好緊跟數(shù)組,因?yàn)樗麄兿騺硎悄玫揭黄鹱霰容^的,因此這樣安排有利于對(duì)數(shù)組和指針應(yīng)用時(shí)的取舍。
(6)以上學(xué)習(xí)后,C語言基本成型,可以把側(cè)重點(diǎn)都放在實(shí)踐上,比如用指針內(nèi)容改寫用數(shù)組知識(shí)編寫的管理系統(tǒng)。
8,好好學(xué)肯定有斬獲。
C語言編程建議和技巧
介紹
Kernighan和Plauger編寫的《TheElementsofProgrammingStyle》,是一本很重要而且公認(rèn)有很大影響力的書。但有時(shí)候我覺得對(duì)于書中的簡潔規(guī)則,可以看做是一種好的烹飪方法,而不是想簡潔的表達(dá)一種哲學(xué)思維。倘若這本書聲稱應(yīng)該有意義地選擇變量名稱,那么難道他們文章中對(duì)變量的命名更好難道MaximumValueUntilOverflow比maxval更好嗎我不這么認(rèn)為。
下面是一篇簡短的文章,總體上鼓勵(lì)在編程時(shí)應(yīng)有清晰的哲學(xué)思維,而不是給予硬性規(guī)則。我并不希望你們能認(rèn)可所有的東西,因?yàn)樗鼈冎皇怯^點(diǎn),觀點(diǎn)會(huì)隨著時(shí)間的變化而變化。可是,如果不是直到現(xiàn)在把它們寫在紙上,長久以來這些基于許多經(jīng)驗(yàn)的觀點(diǎn)一直積累在我的頭腦中。因此希望這些觀點(diǎn)能幫助你們,了解如何規(guī)劃一個(gè)程序的細(xì)節(jié)。(我還沒有看到過一篇講關(guān)于如何規(guī)劃整個(gè)事情的好文章,不過這部分可以是課程的一部分)要是能發(fā)現(xiàn)它們的特質(zhì),那很好;要是不認(rèn)同的話,那也很好。但如果能啟發(fā)你們思考為什么不認(rèn)同,那樣就更好了。在任何情況下,都不應(yīng)該照搬我所說的方式進(jìn)行編程;要用你認(rèn)為最好的編程方式來嘗試完成程序。請(qǐng)一以貫之而且毫不留情的這么做。
歡迎您的評(píng)論。
排版問題
程序是一種出版物。意味著程序員們會(huì)先閱讀(也許是幾天、幾周或幾年后的你自己閱讀),最后才輪到機(jī)器。機(jī)器的快樂就是程序能編譯,機(jī)器才不在乎程序?qū)懙挠卸嗝雌?,可是人們?yīng)該保持程序的美觀。有時(shí)人們會(huì)過度關(guān)心:用漂亮的打印機(jī)呆板地打印出漂亮的輸出,而這些輸出只是將所有介詞用英文文本以粗體字體凸顯出來,都是些與程序無關(guān)的細(xì)節(jié)。雖然有很多人認(rèn)為程序就應(yīng)該像Algol68所描述的一樣(有些系統(tǒng)甚至要求照搬該風(fēng)格編寫程序),可清晰的程序不會(huì)因?yàn)檫@樣的呈現(xiàn)而變得更清晰,只會(huì)使糟糕的程序變得更可笑。
對(duì)于清晰的程序來說,排版規(guī)范一向都是至關(guān)重要的。當(dāng)然,眾所周知最有用的是縮進(jìn),但是當(dāng)墨水遮蓋了意圖時(shí),就會(huì)控制住排版。因此即便堅(jiān)持使用簡單的舊打字機(jī)輸出,也該意識(shí)到愚蠢的排版。避免過度修飾,比如保持注釋的簡潔和靈活。通過程序整齊一致地說出想表達(dá)的。接著往下看。
變量命名
對(duì)于變量名稱,長度并不是名稱的價(jià)值所在,清晰的表達(dá)才是。不常用的全局變量可能會(huì)有一個(gè)很長的名稱,像maxphysaddr。在循環(huán)中每一行所使用的數(shù)組索引,并不需要取一個(gè)比i更詳盡的名字。取index或者elementnumber會(huì)輸入更多的字母(或調(diào)用文本編輯器),并且會(huì)遮蓋住計(jì)算的細(xì)節(jié)。當(dāng)變量名稱很長時(shí),很難明白發(fā)生了什么。在一定程度上,這是排版問題,看看下面
for(i=0to100)
array[i]=0;
vs.
for(elementnumber=0to100)
array[elementnumber]=0;
現(xiàn)實(shí)例子中的問題會(huì)變得更糟。所以僅需把索引當(dāng)成符號(hào)來對(duì)待。
指針也需要合理的符號(hào)。np僅僅只是作為指針nodepointer的助記符。如果一貫都遵從命名規(guī)范,那么很容易就能推斷出np表示“節(jié)點(diǎn)指針”。在下一篇文章中會(huì)提到更多。
同時(shí)在編程可讀性的其它方面,一致性也是極其重要的。假使變量名為maxphysaddr,則不要給同級(jí)關(guān)系的變量取名lowestaddress。
最后,我傾向于「最小長度」但「最大信息量」的命名,并讓上下文補(bǔ)齊其余部分。例如:全局變量在使用時(shí)很少有上下文幫助理解,那么它們的命名相對(duì)而言更需要令人易懂。因此我稱maxphyaddr(不是MaximumPhysicalAddress)作為一個(gè)全局變量名,對(duì)于在本地定義和使用的指針來說np并不一定是NodePoint。這是品味的問題,但品味又與清晰度相關(guān)。
我避免在命名時(shí)嵌入大寫字母;在我經(jīng)驗(yàn)豐富的雙眼中,它們的閱讀舒適性太別扭了,像糟糕的排版一樣令人心煩。
指針的使用
C語言不同尋常,因?yàn)樗试S指針指向任何事物。指針是鋒利的工具,像任何這樣的工具一樣,使用得當(dāng)可以產(chǎn)生令人愉悅的生產(chǎn)力,但使用不當(dāng)也可以造成極大的破壞(在寫這篇文章的前幾天,我把木工鑿插到拇指里了)。指針在學(xué)術(shù)界的名聲不太好,因?yàn)樗kU(xiǎn)了,莫名其妙地就變得糟糕的不行。但我認(rèn)為它是強(qiáng)大的符號(hào),它可以幫助我們清楚地自我表達(dá)。
思考:當(dāng)有指針指向?qū)ο髸r(shí),對(duì)于那個(gè)對(duì)象,確切地說它只是名稱,其它什么也不是。聽起來很瑣碎,但看看下面的兩個(gè)表達(dá)式:
np
node[i]
第一個(gè)指向一個(gè)node(節(jié)點(diǎn)),第二個(gè)計(jì)算為(可以說)同一個(gè)node。但第二種形式是不太容易理解的表達(dá)式。這里解釋一下,因?yàn)槲覀儽仨氁纍ode是什么,i是什么,還要知道i和node與周圍程序之間相關(guān)(可能不是很詳細(xì))的規(guī)則是什么。孤立的表達(dá)式并不能說明i是node的有效索引,更不用提是我們想要元素的索引。如果i、j和k都是node數(shù)組中的索引將很容易出差錯(cuò),而且連編譯器都不能幫助找出錯(cuò)誤。當(dāng)給子程序傳參數(shù)時(shí),尤其容易出錯(cuò):指針只是一個(gè)單獨(dú)的參數(shù);但在接收的子程序中必須認(rèn)為數(shù)組和索引是一體的。
計(jì)算為對(duì)象表達(dá)式本身,比該對(duì)象的地址更不易察覺,而且容易出錯(cuò)。正確使用指針可以簡化代碼:
parent-link[i].type
vs.
lp-type.
如果想取下一個(gè)元素的type可以是
parent-link[++i].type
或
(++lp)-type.
i前移,但其余的表達(dá)式必須保持不變;用指針的話,只需要做一件事,就是指針前移。
把排版因素也考慮進(jìn)來。對(duì)于處理連續(xù)的結(jié)構(gòu)體來說,使用指針比用表達(dá)式可讀性更好:只需要較少的筆墨,而且編譯器和計(jì)算機(jī)的性能消耗也很小。與此相關(guān)的問題是,指針類型會(huì)影響指針正確使用,這也就允許在編譯階段使用一些有用的錯(cuò)誤檢測,來檢查數(shù)組序列不能分開。而且如果是結(jié)構(gòu)體,那么它們的標(biāo)簽字段就是其類型的提示。因此
np-left
是足以讓人明白的。如果是索引數(shù)組,數(shù)組將取一些精心挑選的名字,而且表達(dá)式也會(huì)變得更長:
node[i].left.
此外,由于例子變得越來越大,額外的字符更加讓人惱火。
一般來說,如果發(fā)現(xiàn)代碼中包含許多相似并復(fù)雜的表達(dá)式,而且表達(dá)式計(jì)算為數(shù)據(jù)結(jié)構(gòu)中的元素,那么明智地使用指針可以消除這些問題。考慮一下
if(goleft)
p-left=p-right-left;
else
p-right=p-left-right;
看起來像利用復(fù)合表達(dá)式表示p。有時(shí)這值得用一個(gè)臨時(shí)變量(這里的p)或者把運(yùn)算提取成一個(gè)宏。
過程名稱
過程名稱應(yīng)該表明它們是做什么的,函數(shù)名稱應(yīng)該表明它們返回什么。函數(shù)通常在像if這樣的表達(dá)式使用,因此可讀性要好。
if(checksize(x))
是沒有太大幫助的,因?yàn)椴荒芡茢喑鯿hecksize錯(cuò)誤時(shí)返回true,還是非錯(cuò)誤時(shí)返回。相反
if(validsize(x))
使這點(diǎn)能清晰表達(dá),并且在常規(guī)使用中將來也不大可能出錯(cuò)。
注釋
這一個(gè)微妙的問題,需要自己體會(huì)和判斷。由于一些原因,我傾向于寧可清除注釋。第一,假如代碼清晰,并且使用了規(guī)范的類型名稱和變量名稱,應(yīng)該從代碼本身就可以理解。第二,編譯器不能檢查注釋,因此不能保證準(zhǔn)確,特別是代碼修改過以后。誤導(dǎo)性的注釋會(huì)非常令人困惑。第三,排版問題:注釋會(huì)使代碼變得雜亂。
但有時(shí)我會(huì)寫注釋,像下文一樣僅僅只是把它們用于介紹。例如:解釋全局變量的使用和類型(我總是在龐大的程序中寫注釋);作為一個(gè)不尋?;蛘哧P(guān)鍵過程的介紹;或標(biāo)記出大規(guī)模計(jì)算的一節(jié)。
糟糕注釋風(fēng)格,有一個(gè)典型的例子:
i=i+1;/_Addonetoi_/
還有更爛的做法:
/__________________________________
__
_Addonetoi_
__
__________________________________/
i=i+1;
先不要嘲笑,等到在現(xiàn)實(shí)中看到再去吧。
或許除了諸如重要數(shù)據(jù)結(jié)構(gòu)的聲明(對(duì)數(shù)據(jù)的注釋通常比對(duì)算法的更有幫助),這樣至關(guān)重要部分之外,需要避免對(duì)注釋的“可愛”排版和大段的注釋;基本上最好就不要寫注釋。如果代碼需要靠注釋來說明,那最好的方法是重寫代碼,以便能更容易地理解。這就把我們帶到了復(fù)雜度。
復(fù)雜度
許多程序過于復(fù)雜,比需要有效解決的問題更加復(fù)雜。這是為什么呢大部分是由于設(shè)計(jì)不好,但我會(huì)跳過這個(gè)問題,因?yàn)檫@個(gè)問題太大了。然而程序往往在微觀層面就很復(fù)雜,有關(guān)這些可以在這里解決。
規(guī)則1:不要斷定程序會(huì)在什么地方耗費(fèi)運(yùn)行時(shí)間。
瓶頸總是出現(xiàn)在令人意想不到的地方,直到證實(shí)瓶頸在哪,不要試圖再次猜測并加快運(yùn)行速度。
規(guī)則2:估量(measure)
在沒有對(duì)代碼做出估量之前不要優(yōu)化速度,除非發(fā)現(xiàn)最耗時(shí)的那部分代碼,要不也不要去做。
規(guī)則3:當(dāng)n很小時(shí)(通常也很小),花哨的算法運(yùn)行很慢。
花哨算法有很大的常數(shù)級(jí)別復(fù)雜度。在你確定n總是很大之前,不要使用花哨算法。(即使假如n變大,也優(yōu)先使用規(guī)則2).例如,對(duì)于常見問題,二叉樹總比伸展樹高效。
規(guī)則4:花哨的算法比簡單的算法更容易有bug,而且實(shí)現(xiàn)起來也更困難
盡量使用簡單的算法與簡單的數(shù)據(jù)結(jié)構(gòu)。
以下幾乎是所有實(shí)際程序中用到的數(shù)據(jù)結(jié)構(gòu):
數(shù)組
鏈表
哈希表
二叉樹
當(dāng)然也必須要有把這些數(shù)據(jù)結(jié)構(gòu)靈活結(jié)合的準(zhǔn)備,比如用哈希表實(shí)現(xiàn)的符號(hào)表,其中哈希表是由字符型數(shù)組組成的鏈表。
規(guī)則5:以數(shù)據(jù)為核心
如果選擇了適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)并把一切都組織得很有條理性,算法總是不言而喻的。編程的核心是數(shù)據(jù)結(jié)構(gòu),而不是算法。(參考Brooksp.102)
規(guī)則6:就是沒有規(guī)則6
數(shù)據(jù)編程
不像許多if語句,算法或算法的細(xì)節(jié)通常以緊湊、高效和明確的數(shù)據(jù)進(jìn)行編碼。眼前的工作可以編碼,歸根到底是由于其復(fù)雜性都是由不相干的細(xì)節(jié)組合而成。分析表是典型例子,它通過一種解析固定、簡單代碼段的形式,對(duì)編程語言的語法進(jìn)行編碼。有限狀態(tài)機(jī)特別適合這種處理形式,但是幾乎任何涉及到對(duì)構(gòu)建數(shù)據(jù)驅(qū)動(dòng)算法有益的程序,都是將某些抽象數(shù)據(jù)類型的輸入“解析”成序列,序列會(huì)由一些獨(dú)立“動(dòng)作”構(gòu)成。
也許這種設(shè)計(jì)最有趣的地方是表結(jié)構(gòu)有時(shí)可以由另一個(gè)程序生成(經(jīng)典案例是解析生成器)。有個(gè)更接地氣的例子,假如操作系統(tǒng)是由一組表驅(qū)動(dòng),這組表包含連接I/O請(qǐng)求到相應(yīng)設(shè)備驅(qū)動(dòng)的操作,那么可以通過程序“配置“系統(tǒng),該程序可以讀取到某些特殊設(shè)備與可疑機(jī)器連接的描述,并打印相應(yīng)的表。
數(shù)據(jù)驅(qū)動(dòng)程序在初學(xué)者中不常見的原因之一是由于Pascal的專制。Pascal像它的創(chuàng)始人一樣,堅(jiān)信代碼要和數(shù)據(jù)分開。因而(至少在原始形式上)無法創(chuàng)建初始化的數(shù)據(jù)。與圖靈和馮諾依曼的理論背道而馳,這些理論可都是定義存儲(chǔ)計(jì)算機(jī)的基本原理。代碼和數(shù)據(jù)是一樣的,或至少可以算是。還能怎樣解釋編譯器的工作原理呢(函數(shù)式語言對(duì)I/O也有類似的問題)
函數(shù)指針
Pascal專制的另一個(gè)結(jié)果是初學(xué)者不使用函數(shù)指針。(在Pascal中沒有把函數(shù)作為變量)用函數(shù)指針來處理編碼復(fù)雜度會(huì)有一些令人感興趣的地方。
指針指向的程序有一定的復(fù)雜度。這些程序必須遵守一些標(biāo)準(zhǔn)協(xié)議,像要求一組都是相同調(diào)用的程序就是其中之一。除此之外,所要實(shí)現(xiàn)的只是完成業(yè)務(wù),復(fù)雜度是分散的。
有個(gè)協(xié)議的主張是既然所有使用的功能相似,那么它們的行為也必須相似。這對(duì)簡單的文檔、測試、程序擴(kuò)展和甚至使程序通過網(wǎng)絡(luò)分布都有幫助——遠(yuǎn)程過程調(diào)用可以通過該協(xié)議進(jìn)行編碼。
我認(rèn)為面相對(duì)象編程的核心是清晰使用函數(shù)指針。規(guī)定好要對(duì)數(shù)據(jù)執(zhí)行的一系列操作,以及對(duì)這些操作響應(yīng)的整套數(shù)據(jù)類型。將程序合攏到一起最簡單的方法是為每種類型使用一組函數(shù)指針。簡而言之,就是定義類和方法。當(dāng)然,面向?qū)ο笳Z言提供了更多更漂亮的語法、派生類型等等,但在概念上幾乎沒有提出額外的東西。
數(shù)據(jù)驅(qū)動(dòng)程序與函數(shù)指針的結(jié)合,變成了一種表現(xiàn)令人驚訝的工作方法。根據(jù)我的經(jīng)驗(yàn),這種方法經(jīng)常會(huì)產(chǎn)生驚喜的結(jié)果。即使沒有面向?qū)ο笳Z言,無需額外的工作也可以獲得90%的好處,并且能更好地管理結(jié)果。我無法再推薦出更高標(biāo)準(zhǔn)的實(shí)現(xiàn)方式。我所有的程序都是由這種方式組織管理,而且經(jīng)過多次開發(fā)后都相安無事——遠(yuǎn)遠(yuǎn)優(yōu)于缺少約束的方法。也許正如所說:從長遠(yuǎn)來看,約束會(huì)帶來豐厚的回報(bào)。
包含文件
簡單規(guī)則:包含(include)文件時(shí)應(yīng)該永遠(yuǎn)不要嵌套包含。
如果聲明(在注釋或隱式聲明里)需要的文件沒有優(yōu)先包含進(jìn)來,那么使用者(程序員)要決定包含哪些文件,但要以簡單的方式處理,并采用避免多重包含的結(jié)構(gòu)。多重包含是系統(tǒng)編程的禍根。將文件包含五次或更多次來編譯一個(gè)單獨(dú)的C源文件的事情屢見不鮮。Unix系統(tǒng)中/usr/include/sys就用了這么可怕的方式。
說到#ifdef,有一個(gè)小插曲,雖然它能防止讀取兩次文件,但實(shí)際上經(jīng)常用錯(cuò)。#ifdef是定義在文件本身中,而不是文件包含它。結(jié)果是常常導(dǎo)致讓成千上萬不必要的代碼通過詞匯分析器,這是(優(yōu)秀編譯器中)耗費(fèi)最大的階段。
只需遵從以上簡單規(guī)則。
C語言學(xué)習(xí)攻略
一、C語言學(xué)習(xí)中存在的問題
(一)基礎(chǔ)薄弱,無法適應(yīng)
C語言學(xué)習(xí)的課程通常安排在大一,這個(gè)時(shí)候,學(xué)生們剛剛進(jìn)入高校這個(gè)新環(huán)境,經(jīng)過高考后的長達(dá)3個(gè)月的“放羊”,學(xué)生們?cè)趯W(xué)習(xí)方面的興趣有所回落,而且新的學(xué)習(xí)習(xí)慣還未養(yǎng)成,因此,對(duì)于一門完全陌生的學(xué)科,肯定是無法好好適應(yīng)的。雖然C語言是計(jì)算機(jī)編程類的最基礎(chǔ)的入門課程,但是,對(duì)于學(xué)生而言,它屬于一個(gè)全新的領(lǐng)域,學(xué)生們不知道該如何去學(xué)習(xí),特別是在進(jìn)行上機(jī)實(shí)驗(yàn)的時(shí)候,就顯得更加不知所措。用C語言編程的時(shí)候,要求百分百的正確率,否則,就“差之毫厘,失之千里”,編寫的程序無法正常運(yùn)行,學(xué)生們?nèi)菀桩a(chǎn)生挫敗感,從而降低學(xué)習(xí)C語言的熱情。
(二)課時(shí)少,學(xué)習(xí)壓力大
由于C語言對(duì)于很多非計(jì)算機(jī)專業(yè)的學(xué)生來說,只是一門公共基礎(chǔ)課,因此,安排的課時(shí)相對(duì)較少,這樣導(dǎo)致教師在每節(jié)課的講授內(nèi)容就非常大,學(xué)生的學(xué)習(xí)壓力非常大。特別是在剛開始學(xué)習(xí)C語言的時(shí)候,都是些理論知識(shí)和語法知識(shí),面對(duì)枯燥的理論和大量需要記憶的繁瑣的語法知識(shí),學(xué)生很難在短期內(nèi)消化吸收,需要一個(gè)過程,而現(xiàn)有的課時(shí)安排不夠的情況下,使得學(xué)生每節(jié)課的學(xué)習(xí)壓力增大,一旦前面的內(nèi)容沒有完全掌握,對(duì)于后面的學(xué)習(xí)就無法跟上,從而使得學(xué)生會(huì)對(duì)其產(chǎn)生厭煩心理。
(三)學(xué)習(xí)方法不當(dāng),學(xué)習(xí)效率低下
面對(duì)這樣一個(gè)新的學(xué)科,要想學(xué)好,學(xué)習(xí)方法是十分重要的。而對(duì)于經(jīng)歷了長期的應(yīng)試教育磨練的大學(xué)新生們來說,學(xué)習(xí)的知識(shí)都只是為了應(yīng)付考試,而不知道真正的如何去學(xué)以致用。而學(xué)習(xí)C語言的`最終目的,就是為了編程,反過來說,能夠證明學(xué)好了C語言的唯一方式就是能夠編寫出優(yōu)秀的程序。初學(xué)者們?cè)趯W(xué)習(xí)之初,帶著過去傳統(tǒng)的學(xué)習(xí)方法來進(jìn)行C語言的學(xué)習(xí),注重語法的記憶,可是,到了上機(jī)實(shí)踐的時(shí)候,連最簡單的模仿都不能做好,就更不用說自己自主設(shè)計(jì)編寫程序了。
二、改進(jìn)C語言學(xué)習(xí)的措施
(一)選擇好的學(xué)習(xí)工具
“工欲善其事,必先利其器?!背鯇W(xué)者在學(xué)習(xí)之初,一定要選擇最好的學(xué)習(xí)工具。學(xué)校配備的教材不一定是業(yè)界公認(rèn)最優(yōu)秀的,因此,學(xué)生們可以去請(qǐng)老師推薦,或是通過網(wǎng)絡(luò)查找,配備一兩本被業(yè)界認(rèn)可的最好的入門書籍。另外,在實(shí)踐方面,選擇的編程工具也要是最合適的,現(xiàn)在被普遍廣泛使用的是VisualC++6.0。
(二)使用好的學(xué)習(xí)方法
學(xué)習(xí)的過程都是一個(gè)循序漸進(jìn)的,因此,我們要針對(duì)不同的學(xué)習(xí)階段使用不同的學(xué)習(xí)方法。
具體而言,在初期階段,即剛開始接觸C語言的階段,我們一定要了解它,正所謂“知己知彼,百戰(zhàn)不殆”。首先,我們需要對(duì)C語言的來龍去脈有非常細(xì)致的了解,我們得知道它是怎么產(chǎn)生,經(jīng)歷了怎樣的發(fā)展階段,它的主要貢獻(xiàn)是什么,它對(duì)科學(xué)的發(fā)展有什么幫助,我們學(xué)習(xí)它會(huì)有哪些好處,學(xué)習(xí)它的難點(diǎn)在哪,怎樣學(xué)習(xí)才更加高效。在有了這些全方位的了解之后,我們就要讓自己喜歡上C語言,要讓自己從內(nèi)心深處渴望學(xué)習(xí)C語言,那么如何才能做到呢這就需要培養(yǎng)對(duì)C語言的興趣?!芭d趣是最好的老師”,一旦讓自己對(duì)C語言產(chǎn)生了濃厚的興趣,在正式學(xué)習(xí)階段,我們就有了更強(qiáng)的動(dòng)力。從心理學(xué)角度來看,人們通常對(duì)一些很有意思或很有作用的東西產(chǎn)生興趣,因此,我們就需要去發(fā)掘C語言的有意思的地方和有作用的地方。C語言本身雖然看似枯燥,但它有著神奇的魔力,我們使用C語言的時(shí)候,雖然是一系列復(fù)雜的代碼,但確能給我們變出我們想要的程序,通過這些程序,能夠給我們帶來巨大的便利。其實(shí),教師在教學(xué)過程中,也會(huì)在這一方面下很大功夫,例如,教師會(huì)在教學(xué)過程中,現(xiàn)場演示一些比較簡單而且很有趣味的小程序,使學(xué)生產(chǎn)生羨慕之情,使學(xué)生萌發(fā)出自己也要試一試的想法,從而“引誘”學(xué)生主動(dòng)積極學(xué)習(xí)。對(duì)于學(xué)生來講,在課堂上,一定要和老師形成良好的互動(dòng),要明確老師的教學(xué)方法和教學(xué)策略,并很好的與之配合。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 危險(xiǎn)貨物道路運(yùn)輸企業(yè)安全生產(chǎn)管理制度編寫要求
- 毛石混凝土擋墻施工方案
- 防臺(tái)風(fēng)應(yīng)急演練方案
- 初中英語詞匯記憶與運(yùn)用指導(dǎo)方案
- 2026興國縣衛(wèi)生健康總院招聘編制外衛(wèi)生專業(yè)技術(shù)人員5人備考題庫及1套參考答案詳解
- 制造業(yè)設(shè)備智能檢測方案
- 2026四川啟賽微電子有限公司招聘質(zhì)量工程師崗位3人備考題庫及參考答案詳解一套
- 藝術(shù)設(shè)計(jì)設(shè)計(jì)院工藝設(shè)計(jì)實(shí)習(xí)報(bào)告
- 財(cái)務(wù)審計(jì)稅務(wù)實(shí)習(xí)報(bào)告
- 2026廣東廣州花都城投住宅建設(shè)有限公司招聘項(xiàng)目用工人員6人備考題庫及完整答案詳解一套
- 肥胖患者麻醉管理
- 小鯉魚跳龍門電子版
- 2019年急性腦梗死出血轉(zhuǎn)化專家共識(shí)解讀
- 左心導(dǎo)管檢查及造影操作技術(shù)規(guī)范
- 《混凝土結(jié)構(gòu)工程施工規(guī)范》
- 社會(huì)實(shí)踐登記表
- 土地證延期申請(qǐng)書
- 硫乙醇酸鹽流體培養(yǎng)基適用性檢查記錄
- 進(jìn)階切分技法advanced funk studies rick latham-藍(lán)色加粗字
- GB/T 41631-2022充油電纜用未使用過的礦物絕緣油
- GB 19079.12-2013體育場所開放條件與技術(shù)要求第12部分:傘翼滑翔場所
評(píng)論
0/150
提交評(píng)論