c語言程式設計個人體會

2021-04-12 12:29:59 字數 3454 閱讀 2965

c語言程式設計

教學體會

孫志崗的"個人體會"

**風格

**風格就是程式設計師的書法

比書法好學得多,基本不需要特別練習

但是壞習慣一旦養成,就像書法一樣難以改變

是最易獲得和實踐的軟體工程規則

對設計程式結構,培養團隊精神都大有幫助

不給學生看到任何乙個風格糟糕的例子

**風格

識別符號命名

巨集全部大寫

windows風格和unix風格

variablename

variable_name縮排"

下列問題,要上公升到階級鬥爭的高度

指標指向不明

陣列下標越界

數值運算溢位

除數為0

不檢查函式的返回值

變數不初始化就使用

比較相等時用=,沒用==

用==比較兩個浮點數是否相等

返回區域性變數的指標

malloc不free

open不close

它們編譯不出錯,執行很可能也不出錯,但一旦出錯,就讓人焦頭爛額

危險的scanf

scanf簡便好用

不做引數型別匹配檢查

不限制使用者輸入字串長度

很多黑客攻擊都是從這裡開始的

/0給字串處理帶來的

危險假如/0不存在,printf,strcpy,strcmp等都將越界訪存

n族函式可以解決此問題

處理字串時,時刻要警惕/0是否在其該出現的位置

c語言三大定律

表示式定律

任何能產生數值結果的運算,操作都可以作為表示式,並可以放到任何需要數值結果的地方,只要數值型別能夠匹配

常見的可以產生數值結果的運算和操作

算術,邏輯,位運算等

:,&,*等

有返回值的函式

賦值常見的需要數值的地方有:

賦值條件判斷

函式呼叫

c語言三大定律

型別定律

任何型別都可以在任何需要型別的地方使用;用任何型別定義的變數都要占用記憶體

已知特例

函式返回值不能定義為陣列型別

函式引數定義為陣列型別,此時該引數不占用記憶體,而是共享函式呼叫者傳入的陣列空間

常用型別

基本資料型別,指標,陣列,結構……

常見的需要型別的地方

定義變數

定義指標,陣列和結構

函式引數和返回值

sizeof

c語言三大定律

引數傳遞定律

函式呼叫時的引數傳遞永遠都是傳值呼叫,把實參的值拷貝給形參

實參:呼叫者提供的引數

形參:函式定義的引數

基本資料型別無容置疑

struct也無容置疑

指標作為引數時,把指標變數的內容(就是其指向的記憶體位址)做了拷貝

陣列名作為引數時,把它等同於指標看待了

要點簡單為美

宣揚"簡單為美"的科學思想,摒棄刻意的複雜

原理為綱

c語言複雜的表面都是簡單的原理的外在表現

人性為本

計算機是人設計的,具有人性

面向應用

避免"學是一回事,使用是另一回事"

無需背誦

該記的,用著就記住了;用不著的,背下來也會忘

沒有絕對

match is best!

為什麼追求"簡單為美"

c語言沒有權威,什麼都不可信

書當然不可信,任何書都是

背書更可悲

編譯器也不可信,它只是一種實現而已

不同編譯器,不同平台,表現往往會大相徑庭

c語言誕生的主要目標之一就是讓unix可以跨平台.我們書寫的c程式也應該極力爭取跨平台

有些本來就是錯誤的用法,在某些平台上卻還可以正確執行

ansi c也不可信

這個標準本身並不完備,而且並不是所有編譯器都對它100%支援

為什麼追求"簡單為美"

那我們還能信什麼

相信"簡單"!!!

最簡單的用法,是被編譯器支援得最好的

"簡單"易於理解,交流,便於維護

非計算機專業需要了解

深入的"原理"嗎

只要使用c語言,就必須知道"原理"

浮於表面的使用,是無法發揮c語言的優勢的

如果他不需要知道"原理",肯定他不用c語言,那麼就不該讓他學c語言

"原理"涉及到

計算機原理

編譯原理

作業系統

演算法與資料結構

軟體工程

原理為綱

計算機原理

馮·諾依曼機

二進位制,八進位制,十六進製制和十進位制

b,b,kb,mb,gb,tb

暫存器,記憶體,外存的基本原理

流編譯原理

編譯,鏈結過程

預處理指令,外部變數

函式的引數傳遞和區域性變數定義

棧原理為綱

作業系統

記憶體保護

陣列下標越界,野指標

記憶體管理

動態記憶體分配(堆)和棧

檔案管理,程序互斥

演算法與資料結構

棧結構體

軟體工程

分析,設計,程式結構

結構體協作

原理為綱

c語言自身的原理

指標的原理

陣列的原理

函式呼叫的原理

記憶體分配的原理

棧和堆了解原理,就能從根上分析出一些紛繁複雜的語法規則的合理性.此外,還需要一點點人性

人性為本

在原理基礎上,c語言為了讓人使用方便,有很多人性化的設計

比如:char sz = "a string";

+ - * /

if-else

邏輯運算

不要讓學生"記住"這些,而要讓他們知道這些有多麼地順乎自然

面向應用

c語言是用來實踐的.能應用,比掌握一些生僻的用法更重要

應用中最信奉的就是"簡單為美"

軟體工程思想在應用中也非常重要

結果正確不能說明程式好

無需背誦

記憶力經過漫長的12年中小學應試教育,已經鍛鍊到極致了

如果教學中指明要學生機械背誦什麼,那麼這個教學是失敗的

如果考卷中有需要機械背誦才能做答的題,那麼這個考卷是失敗的

通過作業,上機,把知識自然而然地變成學生身體的一部分

鍛鍊學生查資料,聯機幫助和手冊等的能力

沒有絕對

科學沒有金科玉律,電腦科學更是如此

在不同的環境下,相同的觀點會產生不同的效果

簡單為美是基本準則,但是在用c書寫像os核心這樣的**時,效率很關鍵,就不能追求"簡單"了

把選擇權留給學生自己,讓他們有自己的觀點

c語言教學最終目的

讓學生知道自己還遠沒有學會

讓學生知道自己以後怎樣繼續學

讓學生知道自己肯定能自己學會,並找到學習的樂趣與動力

讓教師知道,自己還有不會的

文獻閱讀個人體會

最近要從做工程進入搞理論研究,不然不能畢業啊。看了一段時間的文獻,體會還是蠻多的。搞理論研究也不容易,為什麼國內的水平一直比國外低一點的呢?我自己總結了一點心得,比較膚淺,就算記錄一下我的學習過程吧 搞學術研究懷疑別人的方法分類 1 一般別人提出的方法都是有侷限性的,大多數文章都會假設某個或某幾個條...

ThoughtWorks培訓個人體會

設計思維訓練 在我印象中一直是設計師和產品 專案 團隊的學習內容,是了解市場 與社會供需關係的職業者的初次學習。但是在 面試出了名的難 的thoughworks的coaches的引導下,似乎 懂技術的產品經理 也不再是鳳毛麟角的存在,而我也是首次被這樣高強度和高效率的培訓所深深吸引。作為完全沒有企業...

erp實施步驟(個人體會)

實施計畫 調研 初步要確定流程 準備基礎資料 基礎資料,包括基礎資料以後新增時確定責任人或責任部門 如 許可權,往來單位,物料 包括物料分類,月結順序 實施計畫 制定計畫 根據實施週期,寫實施計畫。調研 調研,開會,確定流程,基礎資料準備,培訓 研究各個部門流程,並寫出他們的操作流程。根據企業流程定...