㈠ c語言程序設計
第一章 程序設計的基本概念
第一節 C語言的發展歷史與特點
第二節 程序與程序設計
第三節 演算法與演算法的描述
第四節 C語言的上機操作
思考題與習題
第二章 C語言程序設計基礎
第一節 C語言的程序結構
第二節 數據類型
第三節 運算符與表達式
思考題與習題
第三章 C程序控制結構
第一節 C程序的三種基本控制結構
第二節 順序結構
第三節 選擇結構
第四節 循環結構
思考題與習題
第四章 數組
第一節 數組與數組元素的概念
第二節 一維數組
第三節 二維數組及多維數組
第四節 字元串與字元數組
思考題與習題
第五章 指針
第一節 指針與指針變數的概念
第二節 指針變數的定義和引用
第三節 指針變數與數組
思考題與習題
第六章 函數
第一節 函數的定義
第二節 函數的嵌套調用
第三節 數組作為函數參數
第四節 指針與函數
第五節 變數的使用范圍與存儲類別
第六節 不同文件中的函數使用
思考題與習題
第七章 編譯預處理
第一節 宏定義
第二節 文件包含
第三節 條件編譯
思考題與題
第八章 結構體與共用體
第一節 結構體基礎
第二節 結構體數組
第三節 結構體指針
第四節 鏈表
第五節 位段
第六節 共用體
第七節 枚舉類型與自定義類型
思考題與習題
第九章 文件
第一節 文件概述
第二節 文件的打開與關閉
第三節 文件的讀/寫
第四節 文件的定位
思考題與習題
第十章 程序設計方法
第一節 程序設計的基本概念
第二節 結構化程序設計方法
第三節 程序效率
第四節 程序設計風格
思考題與習題
附錄
附錄A C語言實驗
附錄B 標准ABSII碼表
附錄C C語言中的關鍵字
附錄D 運算符的優先順序與結合性
㈡ 如何像Python高手一樣編程
一、Python之禪(The Zen of Python)
The Zen of Python是Python語言的指導原則,遵循這些基本原則,你就可以像個Pythonista一樣編程。具體內容你可以在Python命令行輸入import this看到:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
# 優美勝於醜陋(Python以編寫優美的代碼為目標)
Explicit is better than implicit.
# 明了勝於晦澀(優美的代碼應當是明了的,命名規范,風格相似)
Simple is better than complex.
# 簡潔勝於復雜(優美的代碼應當是簡潔的,不要有復雜的內部實現)
Complex is better than complicated.
# 復雜勝於凌亂(如果復雜不可避免,那代碼間也不能有難懂的關系,要保持介面簡潔)
Flat is better than nested.
# 扁平勝於嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)
Sparse is better than dense.
# 間隔勝於緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題)
Readability counts.
# 可讀性很重要(優美的代碼是可讀的)
Special cases aren't special enough to break the rules.
Although practicality beats purity.
# 即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)
Errors should never pass silently.
Unless explicitly silenced.
# 不要包容所有錯誤,除非你確定需要這樣做(精準地捕獲異常,不寫except:pass風格的代碼)
In the face of ambiguity, refuse the temptation to guess.
# 當存在多種可能,不要嘗試去猜測
There should be one-- and preferably only one --obvious way to do it.
# 而是盡量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)
Although that way may not be obvious at first unless you're Dutch.
# 雖然這並不容易,因為你不是 Python 之父(這里的Dutch是指Guido)
Now is better than never.
Although never is often better than *right* now.
# 做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
# 如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然(方案測評標准)
Namespaces are one honking great idea -- let's do more of those!
# 命名空間是一種絕妙的理念,我們應當多加利用(倡導與號召)
這首特別的「詩」開始作為一個笑話,但它確實包含了很多關於Python背後的哲學真理。Python之禪已經正式成文PEP 20,具體內容見:PEP 20
二、PEP8: Python編碼規范(PEP8: Style Guide for Python Code)
Abelson &
Sussman在《計算機程序的構造和解釋》一書中說道:程序是寫來給人讀的,只是順帶讓機器執行。所以,我們在編碼時應該盡量讓它更易讀懂。PEP8是
Python的編碼規范,官方文檔見:PEP 8,PEP是Python Enhancement
Proposal的縮寫。PEP8包括很多編碼的規范,下面主要介紹一下縮進和命名等內容。
空格和縮進(WhiteSpace and Indentation)
空格和縮進在Python語言中非常重要,它替代了其他語言中{}的作用,用來區分代碼塊和作用域。在這方面PEP8有以下的建議:
1、每次縮進使用4個空格
2、不要使用Tab,更不要Tab和空格混用
3、兩個方法之間使用一個空行,兩個Class之間使用兩個空行
4、添加一個空格在字典、列表、序列、參數列表中的「,「後,以及在字典中的」:「之後,而不是之前
5、在賦值和比較兩邊放置一個空格(參數列表中除外)
6、緊隨括弧後面或者參數列表前一個字元不要存在空格
Python命名
命名規范是編程語言的基礎,而且大部分的規范對於高級語言來說都是一樣的,Python的基本規范如下:
1、方法 & 屬性:joined_lower
2、常量:joined_lower or ALL_CAPS
3、類:StudlyCaps
4、類屬性:interface, _internal, __private
5、camelCase only to conform to pre-existing conventions
以上內容只是對PEP8做了非常簡單的介紹,由於今天的主題不在於此,所以就不在這里多講。想要更加深入的了解Python編碼規范,可以閱讀PEP8官方文檔和Google Python編碼規范等內容。
三、交換變數值(Swap Values)
在其他語言中,交換兩個變數值的時候,可以這樣寫:
temp = a
a = b
b = temp
在Python中,我們可以簡單的這樣寫:
b, a = a, b
可能你已經在其他地方見過這種寫法,但是你知道Python是如何實現這種語法的嗎?首先,逗號(,)是Python中tuple數據結構的語法;上面的語法會執行一下的操作:
1、Python會先將右邊的a, b生成一個tuple(元組),存放在內存中;
2、之後會執行賦值操作,這時候會將tuple拆開;
3、然後將tuple的第一個元素賦值給左邊的第一個變數,第二個元素賦值給左邊第二個變數。
再舉個tuple拆分的例子:
In [1]: people = ['David', 'Pythonista', '15145551234']
In [2]: name, title, phone = people
In [3]: name
Out[3]: 'David'
In [4]: title
Out[4]: 'Pythonista'
In [5]: phone
Out[5]: '15145551234'
這種語法在For循環中非常實用:
In [6]: people = [['David', 'Pythonista', '15145551234'], ['Wu', 'Student', '15101365547']]
In [7]: for name, title, phone in people:
...: print name, phone
...:
David 15145551234
Wu 15101365547
PS:在使用這種語法時,需要確保左邊的變數個數和右邊tuple的個數一致,否則,Python會拋出ValueError異常。
更多tuple的例子:
>>> 1,
(1,)
>>> (1,)
(1,)
>>> (1)
1
>>> value = 1,
>>> value
(1,)
我們知道:逗號(,)在Python中是創建tuple的構造器,所以我們可以按照上面的方式很方便的創建一個tuple;需要注意的是:如果聲明只有
一個元素的tuple,末尾必須要帶上逗號,兩個以上的元素則不需要。聲明tuple的語法很簡單,但同時它也比較坑:如果你發現Python中的變數不
可思議的變成了tuple,那很可能是因為你多寫了一個逗號。。
四、Python控制台的"_"(Interactive "_")
這是Python中比較有用的一個功能,不過有很多人不知道(我也是接觸Python很久之後才知道的)。。在Python的互動式控制台中,當你計算
一個表達式或者調用一個方法的時候,運算的結果都會放在一個臨時的變數 _ 裡面。_(下劃線)用來存儲上一次的列印結果,比如:
>>> import math
>>> math.pi / 3
1.0471975511965976
>>> angle = _
>>> math.cos(angle)
0.50000000000000011
>>> _
0.50000000000000011
PS:當返回結果為None的時候,控制台不會列印,_ 裡面存儲的值也就不會改變。
五、合並字元串(Building Strings from Sub strings)
假如現在有一個list,裡面是一些字元串,你現在需要將它們合並成一個字元串,最簡單的方法,你可以按照下面的方式去處理:
colors = ['red', 'blue', 'green', 'yellow']
result = ''
for s in colors:
result += s
但是,很快你會發現:這種方法非常低效,尤其當list非常大的時候。Python中的字元串對象是不可改變的,因此對任何字元串的操作如拼接,修改等
都將產生一個新的字元串對象,而不是基於原字元串。所以,上面的方法會消耗很大的內存:它需要計算,存儲,同時扔掉中間的計算結果。正確的方法是使用
Python中的join方法:
result = ','.join(colors)
當合並元素比較少的時候,使用join
方法看不出太大的效果;但是當元素多的時候,你會發現join的效率還是非常明顯的。不過,在使用的時候請注意:join只能用於元素是字元串的
list,它不會進行任何的強制類型轉換。連接一個存在一個或多個非字元串元素的list時將拋出異常。
㈢ 編程理念是什麼
編程的理念、你這門一問到覺得這是可以意會不可言傳的勒、其實我覺得就是將生活總的東西讓計算機來實現、讓本來麻煩的事情變得簡單、就那一個循環運算來說、一個年級10個班。你要求每個班的平均分、每個班的最高分、每個班的最低分、排每個班的名次、人來運算就會運算20次以上、至少的、每個班總分算一次(10次)、每個班平均分(10次)、在排名次(至少也是10次、)、在說最高分最低分、當然、你說這個不用算、一看就知道、但是如果編程實現、你只需把每個班的每個學員的成績輸入即可、這樣都可以算出來、這樣就讓事情簡便的多、我覺得這就是編程的理念、讓復雜的事情簡單化、讓人類煩躁的事情計算機化、
㈣ C語言,高級編程
呵呵,這位兄台很像我前幾個月的樣子。學c以前覺得c應該什麼都能實現。可是能學完發現自己離windows還有很遠的距離。不過我現在不這么想了。開發平台不是問題所在。其實就像上面那位兄台所說得C只是一個工具。學會了c就相當於會用了一個工具。而真正的學習才剛剛開始。一個計算機的體系是與很多東西組成的。想寫出很好程序就要知道怎麼用好自己的這支筆。下面是我對計算機體系的一點淺顯的認識:
1、計算機組成原理。這個就不多說了,學編成的連我們的勞動對象都不清楚那還玩什麼啊?
2、數據結構和演算法。其實所謂的程序就是對數據進行處理,而處理的數據當然要有存儲的方式,而應對這些數據存儲的方式應運而生了演算法。也就是處理問題的方法。這是真正編程的靈魂。十分重要。
3、操作系統。學完了上說的那些東西你還會認為操作系統很神秘。那我們就來親手掀開他神秘的面紗,知道操作系統都為我們做了些什麼是一件很令人愉快的事。
4、編譯原理。這門課有點難度,不過也很重要,其中有很多思維方式需要掌握,不多說了,看了就知道了。
懂了上面我說的這些東西,我想你對計算機程序設計會有一種新的認識。可千萬不要被嚇倒了哦。每個出色的程序員都是這么混出來的。為成為一名優秀的程序員而努力吧!