天天看點

前言

前言

     此部落格中的文章,是我為高中興趣班編寫的講義,主要參考就是譚浩強的《C程式設計》,在10多年教學實踐後,經多次整理而成的C圖文教程,視訊教程也将在不久後釋出。公布出來的目的,就是希望C語言這個“陽春白雪”, 能變成“下裡巴人”, 成為真正民族的、大衆的科學,最終普及到義務教育階段去。       

      《C程式設計》曆年已久, 且經久不衰, 大量的本專科初學者被引導入門,那麼象中國小生,他們能不能學習《C程式設計》呢?中國小生, 由于一些基礎知識和學習能力的不足,使得C語言的教學或自學,均有些困難。但實踐已經證明,他們完全可以學會C語言! 如果你到百度的C語言吧去,你就會發現許多好手是中學生,甚至是國小生!當然,一般來說,學習C時,課時要稍多一點,教材或視訊中應降低數學、英語、計算 機等基礎知識的使用量,同時程式設計的引導部分,諸如:基本類型、3大結構、數組、函數等内容的講解和練習時間要充足。

   回答幾個初學者常見的問題:

      一、有些人學習《c程式設計》很容易入門,但有些認為太難,為什麼?

       可能與以下幾個公共基礎知識及其自身的某些能力的具備程度有關:

       1、 數學基礎:數列(自然數列)及其遞推公式、變量函數、方程、科學計數、歸納法和窮舉法、指數和對數、應用題求解,這些是高一及以下的數學知識。那麼數學差怎麼辦啊,是不是要從高中的重新讀起啊,那些有沒有用?

       最少下面的數學知識應具備,詳細清單如下:   

  • 數列相關知識(特别的自然數列用于了解循環語句)       
  • 常量、變量、指數對數(起碼在第3章資料類型,要用到吧)       
  • 函數(特别的分段函數用于了解程式的分支語句、且C語言本身就是函數式的)       
  • 應用題及方程求解(既然是計算機程式設計,就難免遇到簡單數學問題的求解)

       不過在标準C的入門階段,再高的數學知識就用不着了, 但是注意:說高中數學就夠用了,是名額準C入門時。當你在進一步學習諸如資料結構、離散數學等課程以及将來設計大型計算程式、遊戲程式或專用程式時,就必然會遇到或用到高深的數學知識。是以,想成為一個軟體設計高手,一定要學習數學呀!

       總之,要重視數學的學習,絕對不能放棄。

       2、 英語水準:初學程式設計一定要英語非常好嗎?

       要有一定的英語知識。在編譯器的界面和錯誤提示方面,即使界面再進行漢化,一些諸如錯誤提示、幫助,仍然是英文的。而且英語和計算機知識是相輔相成的。計算機水準越高,越需要英語的支援,就越需要學習英語,急用現學最快,英語水準自然會提高;英語學的越好,當今先進的英文原版計算機技術資料,能讀了,計算機水準就會越來越高。

            在初學程式設計時,如果英語不是很好,也沒有關系。一方面可以用網絡線上字典,比如:百度詞典;另一方面遇到計算機方面的英語難題,可以向高手請教嘛。這樣,一邊學程式設計,一邊學英語,很快,英語這個非常恐怖的東西就不可怕了。

       總之,要重視英語的學習,絕對不能放棄。

       3、 計算機操作使用水準,尤其是windows的command/cmd指令行操作: 可以更好的了解接受C語言中關于字元模式的輸入、輸出的内容。

       4、 少許硬體基礎知識:微機原理的知識(如CPU、記憶體的工作原理)和各種進制的計算。諸如基本類型、指針、位運算等等都會或多或少的用到這方面的知識。

       5、 數字化抽象思維能力:善于将現實世界數字化。

       6、學習能力強:自學能力和方法。

       7、 好領路人:高師指點。

       注意:前6個條件是參考,有第7個條件就足夠了,即第7條是學好C語言的充要條件。

       二、程式是什麼?幹什麼的?什麼是面向過程????

       指揮人工作,要講人話,你不能象狗一樣叫,如果你非要那樣,一般人不會了解你的意思哦;同樣,指揮計算機工作,要講計算機能懂的話;這樣,你就需要學計算機的語言;

       用計算機的語言寫出的話,就是程式。C語言是計算機語言的一種。對于程式是什麼?再給你做一個比喻:

       你見過擺骨牌的嗎?1、設計圖案和擺骨牌;2、推倒第一張骨牌;3、骨牌依次倒下;4、呈現預設的骨牌圖案。

       你如何才能讓骨牌按照你的設想倒下并呈現出預定的圖案呢?

       1、你必須首先明白的是:骨牌是沒有智能的。它所能接受的指令就是被擺放,被推倒,僅此而已;是以你要根據這些可接受的指令來設計骨牌的圖案和擺放順序。

       2、你自己必須完全了解和掌握這種圖案的骨牌擺放和倒下的整個過程的全部細節;也許整個擺放和倒下的過程在你的腦海中需要演練成百上千次;

       3、你要有能力把這個演練的過程再現出來。即你要使用骨牌能接受的2個動作:擺放和倒下,把整個過程再現出來,這時你要做的就是2步:A、擺放所有骨牌;B、推倒第一張。

       4、當然,隻有你設計正确,才能在推倒第一張骨牌的一段時間後,出現預設的圖案。

       你知道嗎?計算機其實到今天為止,仍然和骨牌一樣,是沒有多少智能的。那麼,你如何讓計算機解決問題呢?

       1、計算機的智能是極其有限的,你必須要知道計算機所能了解的指令,其實指令就是幾十個英文單詞及特定文法,這其實就是C語言講述的主要内容。

       2、在了解掌握計算機可了解的詞彙後,你就可以讓計算機為你解決實際問題了。比如算算術,要想讓計算機算算術,你必須要先會算;而後,你必須用計算機能了解的那幾個詞彙寫出計算過程,而後教會計算機去算,其實這就是所謂的程式設計。程式設計的任務就是你教會計算機解決某個問題的過程。還是用算算術舉例吧,首先把你算算術時的全部方法或全部過程用計算機詞彙描述出來。而後通過鍵盤和滑鼠講給計算機去了解,如果你寫的計算機不能了解,或者讓他了解錯誤了,你就需要修改,然後重新講給計算機,直到它完全了解你的意思。你是合格的老師嗎?

       3、我們把算算術時所使用的全部方法或全部過程稱為算法;編制小型程式就是在尋找算法,算法找到了,程式設計任務也就差不多完成了。是以我們說這種程式設計方法是面向過程的。

       4、從上面的讨論,可以看出學習c程式設計時需要注意的幾點: A、學習計算機可接受的詞彙有哪些,書寫文法規則是什麼。 B、如何把人類語言的算法用計算機語言的詞彙改寫。

           C、對于我們中國人來說,計算機語言的學習很類似于英語的學習,不過比起英語來,計算機語言要簡單的多。既然是語言,就會有一個語境的問題。我們母語學習是容易的,因為有好的語境;在十幾年前因為缺乏語境,我們學習英文要困難得多;如今的英文使用開始普及了,英語語境好多了;一種人類的自然語言的學習需要好的語境,學習計算機語言同樣如此;而計算機語言的語境就是一個程式設計編譯器,對于C語言,就是一個C編譯器。選擇一個好的編譯器是很重要的。對于編譯器,我們可以有多種選擇,比如GCC, EV-CPP, TC, VC 等等,都是不錯的編譯器。而現在的高校中,還在大範圍的使用TC或VC,是以我給諸位提供一個把TC和VC兩者集于一身的編譯器

www.onlinedown.net/soft/42127.htm

,算是抛磚引玉吧。

       三、c語言是一種古老的語言,現在流行的是面向對象的C++、JAVA等,為何還有那樣多的人學C,有什麼用呢?

       先引用一段話:

       近年來,有一些面向對象的計算機語言陸續問世,受到歡迎,有些人認為面向過程的C語言已經過時了,不必學了,這是一種誤解。不應把面向對象和面向過程對立起來,在面向對象程式設計中仍然要用到面向過程的知識。作為計算機程式開發人員,既要掌握面向對象程式設計的知識,又要掌握面向過程程式設計的知識。面向過程程式設計仍然是計算機 工作者的基本功。 ----------譚浩強

    而且至少以下基本知識應該在c中獲得并得到充分練習:

  • 基本資料類型;      
  • 3大程式設計結構:順序、分支和循環;
  • 數組、函數。

       無論basic Fortran cobol Java vb vc,都要從“基本資料類型、常量變量、程式設計的3大結構(順序分支和循環)、數組、函數”開始學習,無一例外。此外,資料結構、作業系統(UNIX)等後續計算機課程往往用C語言作為背景語言。

       C++等面向對象程式設計語言是為解決編寫大型軟體的問題而産生的,一般來說學習起來比C語言困難的多。

       值得注意的是,神7的火箭助推系統裝置驅動,也使用了标準C作為開發語言,是以标準C的學習是有現實意義的!

      另外,我将陸續刊登譚浩強C的後續章節的重點分析,主要針對中專、中國小生中的不入門者。由于是利用業餘時間, 是以整理一章大概要一、兩周 或 更長時間 ,但我會力圖更快更好,同時,也希望自己能堅持到底;隻是水準有限,望多多品評指正.

繼續閱讀