A. c語言心得體會
課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。
回顧起此次單片機課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整兩星期的日子裡,可以說得是苦多於甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說三極體PNP管腳不懂怎麼放置,不懂分得二極體的正負極,對單片機匯編語言掌握得不好……通過這次課程設計之後,一定把以前所學過的知識重新溫故。
這次課程設計終於順利完成了,在設計中遇到了很多編程問題,最後在梁強老師的辛勤指導下,終於游逆而解。同時,在梁強老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝!
B. 請教學習c語言的心得
C語言學習心得
前言
指針,一直被認為是C語言中的精華。只有掌握了指針,你才能說你學會了C語言。
相當初,我是把指針這一章足足看了三遍才算是「學了這一章」下面的文字是阿容
寫的,對我學習C語言的指針幫助很大。好東西不敢獨享,今天把它貼出來,希望
大家也會有所幫助。
第一章。指針的概念
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。
要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的
類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。讓
我們分別說明。
先聲明幾個指針放著做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
如果看不懂後幾個例子的話,請參閱我前段時間貼出的文章<<如何理解c和c
++的復雜類型聲明>>。
1。 指針的類型。
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就
是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的
類型:
(1)int *ptr; //指針的類型是int *
(2)char *ptr; //指針的類型是char *
(3)int **ptr; //指針的類型是 int **
(4)int (*ptr)[3]; //指針的類型是 int(*)[3]
(5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]
怎麼樣?找出指針的類型的方法是不是很簡單?
2。指針所指向的類型。
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯
器將把那片內存區里的內容當做什麼來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符
*去掉,剩下的就是指針所指向的類型。例如:
(1)int *ptr; //指針所指向的類型是int
(2)char *ptr; //指針所指向的的類型是char
(3)int **ptr; //指針所指向的的類型是 int *
(4)int (*ptr)[3]; //指針所指向的的類型是 int()[3]
(5)int *(*ptr)[4]; //指針所指向的的類型是 int *()[4]
在指針的算術運算中,指針所指向的類型有很大的作用。
指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當你對C越
來越熟悉時,你會發現,把與指針攪和在一起的「類型」這個概念分成「指針的
類型」和「指針所指向的類型」兩個概念,是精通指針的關鍵點之一。我看了不
少書,發現有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書
來前後矛盾,越看越糊塗。
3。 指針的值,或者叫指針所指向的內存區或地址。
指針的值是指針本身存儲的數值,這個值將被編譯器當作一個地址,而不是
一個一般的數值。在32位程序里,所有類型的指針的值都是一個32位整數,因為
32位程序里內存地址全都是32位長。
指針所指向的內存區就是從指針的值所代表的那個內存地址開始,長度為si
zeof(指針所指向的類型)的一片內存區。以後,我們說一個指針的值是XX,就相
當於說該指針指向了以XX為首地址的一片內存區域;我們說一個指針指向了某塊
內存區域,就相當於說該指針的值是這塊內存區域的首地址。
指針所指向的內存區和指針所指向的類型是兩個完全不同的概念。在例一中
,指針所指向的類型已經有了,但由於指針還未初始化,所以它所指向的內存區
是不存在的,或者說是無意義的。
以後,每遇到一個指針,都應該問問:這個指針的類型是什麼?指針指向的
類型是什麼?該指針指向了哪裡?
4。 指針本身所佔據的內存區。
指針本身佔了多大的內存?你只要用函數sizeof(指針的類型)測一下就知道
了。在32位平台里,指針本身占據了4個位元組的長度。
指針本身占據的內存這個概念在判斷一個指針表達式是否是左值時很有
============================
7月11日
c語言心得一
2.數據輸出
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。
putchar( ) 向終端輸出一個字元
printf( )的格式字元:
① d格式符 用來輸出十進制整數
%d 按整型數據的實際長度輸出
%md 使輸出長度為m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度
%ld 輸出長整型數據
② o格式符 以八進制形式輸出整數
③ x格式符 以十六進制形式輸出整數
④ u格式符 用來輸出unsigned型數據,以十進制形式輸出
⑤ c格式符 用來輸出一個字元
⑥ s格式符 輸出一個字元串
%s 輸出實際長度字元串
%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出
%-ms輸出的串佔m列,如果串長度小於m,右補空格,
%m.ns 輸出佔m列,但只取字元串中左端n個字元並靠右對齊
%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值
⑦ f格式符 以小數形式輸出實數
%f 整數部分全部輸出,小數部分輸出6位
%m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格
%-m.nf 同上,右補空格
⑧ e格式符 以指數形式輸出實數
%e 系統指定6位小數,5位指數(e+002 )
⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式
3.數據輸入
getchar( ) 從終端輸入一個字元
scanf( 格式控制,地址列表) 標准C scanf中不使用%u,對於unsigned型數據,以%d或%o或%x輸入。%後的*,用來跳過它相應的數據。輸入數據時不能規定精度如scanf( "%7.2f", &a );是不合法的。
部分字元串處理函數
puts(字元數組) 將一個字元串輸出到終端。
gets(字元數組) 從終端輸入一個字元串到字元數組,並且得到一個函數值,為該字元數組的首地址
strcat(字元數組1,字元數組2) 連接兩個字元數組中的字元串,數組1必須足夠大。
Strcpy(字元數組1,字元串2) 將字元串2拷貝到字元數組1中。
Strcmp(字元串1,字元串2) 比較字元串,相等返回0,字元串1>字元串2,返回正數,小於返回負數。
Strlen(字元數組) 求字元串長度。
Strlwr( 字元串) 將字元串中的大寫字母轉換成小寫
Strupr( 字元串) 將字元串中的小寫字母轉換成大寫
以上是一些比較常用的字元串處理函數。
動態存儲變數與靜態存儲變數
從變數值存在的時間(生存期)角度來分,可分為靜態存儲變數和動態存儲變數。靜態存儲指在程序運行期間給變數分配固定的存儲空間,動態存儲指程序運行期間根據需要動態的給變數分配存儲空間。
C語言中,變數的存儲方法分為兩大類:靜態存儲類和動態存儲類,具體包括:自動的(auto),靜態的(static),寄存器的(register),外部的(extern)。
1) 局部變數的存儲方式
函數中的局部變數如不作專門說明,都之auto的,即動態存儲的,auto可以省略。局部變數也可以定義為static的,這時它在函數內值是不變的。靜態局部變數如不賦初值,編譯時系統自動賦值為0,動態局部變數如不賦初值,則它的值是個不確定的值。C規定,只有在定義全局變數和局部靜態變數時才能對數組賦初值。為提高執行效率,c允許將局部變數值放在寄存器中,這種變數叫register變數,要用register說明。但只有局部動態變數和形式參數可以作為register變數,其它不行。
2) 全局變數的存儲方式
全局變數在函數外部定義,編譯時分配在靜態存儲區,可以在程序中各個函數所引用。多個文件的情況如何引用全局變數呢?假如在一個文件定義全局變數,在別的文件引用,就要在此文件中用extern對全局變數說明,但如果全局變數定義時用static的話,此全局變數就只能在本文件中引用了,而不能被其它文件引用。
3) 存儲類別小結
從作用域角度分,有局部變數和全局變數
局部變數:自動變數,即動態局部變數(離開函數,值就消失)
靜態局部變數(離開函數,值仍保留)
寄存器變數(離開函數,值就消失)
(形參可定義為自動變數和寄存器變數)
全局變數:靜態全局變數(只限本文件引用)
全局變數(允許其它文件引用)
從存在的時間分,有靜態存儲和動態存儲
動態存儲:自動變數(本函數內有效)
寄存器變數(本函數內有效)
形參
靜態存儲:靜態局部變數(函數內有效)
靜態全局變數(本文件內有效)
全局變數(其它文件可引用)
從變數值存放的位置分
靜態存儲區:靜態局部變數
靜態全局變數
全局變數
動態存儲區:自動變數和形參
寄存器內:寄存器變數
7. 內部函數和外部函數
內部函數:只能被本文件中的其它函數調用,定義時前加static,內部函數又稱靜態函數。
外部函數:可以被其它文件調用,定義時前加extern,如果省略,則隱含為外部函數,在需要調用此函數的文件中,一般要用extern說明。
c編譯系統在對程序進行通常的編譯之前,先進行預處理。c提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯
1. 宏定義
不帶參數的宏定義
用一個指定的標識符來代表一個字元串,形式:#define 標識符 字元串
幾點說明:
1) 宏名一般用大寫
2) 宏定義不作語法檢查,只有在編譯被宏展開後的源程序時才會報錯
3) 宏定義不是c語句,不在行末加分號
4) 宏名有效范圍為定義到本源文件結束
5) 可以用#undef命令終止宏定義的作用域
6) 在宏定義時,可以引用已定義的宏名
帶參數的宏定義
定義形式:#define 宏名(參數表) 字元串
這和函數有些類似,但他們是不同的:
1) 函數調用時,先求實參表達式值,再代入形參,而宏只是簡單替換,並不求值
2) 函數調用是在程序運行時分配內存的,而宏展開時並不分配內存,也沒有返回值的概念
3) 對函數中的實參和形參都要定義類型,而且要求一致,宏名無類型,其參數也沒有類型。
4) 函數只有一個返回值,而宏可以得到幾個結果
5) 宏替換不佔運行時間,只佔編譯時間,而函數調用占運行時間
2. 文件包含處理
#include "文件1" 就是將文件1的全部內容復制插入到#include位置,作為一個源文件進行編譯。
在#include命令中,文件名可以用" "也可以用< >,假如現在file1.c中包含file2.h文件," "表示系統先在file1.c所在目錄中找file2.h,如果找不到,再按系統指定的標准方式檢索目錄,< >表示系統直接按指定的標准方式檢索目錄。所以用" "保險一點。
3. 條件編譯
條件編譯指不對整個程序都編譯,而是編譯滿足條件的那部分。條件編譯有以下幾種形式:
1)#ifdef 標識符
程序段1
#else
程序段2
#endif
它的作用:當標識符在前面已經被定義過(一般用#define),則對程序段1編譯,否則對程序段2編譯。
2)#ifndef 標識符
程序段1
#else
程序段2
#endif
它的作用和#ifdef相反,當標識符沒被定義過,對程序段1編譯,否則對程序段2編譯。
3)#if 表達式
程序段1
#else
程序段2
#endif
它的作用:當表達式值為真(非0)時,對程序段1編譯,否則對程序段2編譯。
http://spaces.msn.com/lxj5816778/Blog/cns!1pmxrkmy9J0DF4J21zFuHFzQ!134.entry
C. 求C語言的學習心得 或者 方法總結 什麼的
* 掌握C語言的基本語法和規定。 * 掌握程序設計基本演算法和思路,開拓思路, * 提高上機操作能力,掌握上機調試程序的方法 * 培養自學能力,強調自主學習。 * 養成良好的程序設計習慣。 通過總結多年的教學經驗,總結學生在學習過程中具有規律性的特點,可以發現,在本課程學習過程中學生經常出現下面這些問題: * 注重理論學習,忽視上機編程實踐,造成"只能用筆在紙上編程"的奇怪現象。特別是一些女同學,一到機器前面就手忙腳亂,如果程序再出現錯誤,就更不知道該如何查找錯誤,如何排除錯誤了。 *入門時自以為難度大,產生畏難情緒,總是怕,最後因為怕學不好而導致沒有學好。 *前期沒有抓緊,希望通過突擊完成課程學習。本課程要靠平時的積累,幾乎不能靠臨時突擊,由於前面基礎補扎實,到了後面已經無法彌補。 *太注重學習語句的語法規定,忽視了對編程的思路和方法的訓練。有些同學再學習結束的感覺就是:對每一個語句的語法和每一條規定都明白,就是面對實際問題的時候不知道該如何思考,該如何編程。 *急於求成,總想編寫綜合性的程序,忽視基本概念,忽視基本功的訓練和練習。在編寫程序中發現問題,一追根源,全是概念或基礎問題。 1.不要看到別人的回復第一句話就說:給個代碼吧!你應該想想為什麼。當你自己想 出來再參考別人的提示,你就知道自己和別人思路的差異。 2.初學者請不要看太多太多的書那會誤人子弟的,先找本系統的學,很多人用了很久 都是只對部分功能熟悉而已,不系統還是不夠的。 3.看幫助,不要因為很難而自己是初學者所以就不看;幫助永遠是最好的參考手冊, 雖然幫助的文字有時候很難看懂,總覺得不夠直觀。 4.不要被對象、屬性、方法等詞彙所迷惑;最根本的是先了解最基礎知識。 5.不要放過任何一個看上去很簡單的小問題--他們往往並不那麼簡單,或者可以引伸 出很多知識點;不會舉一反三你就永遠學不會。 6.知道一點東西,並不能說明你會寫腳本,腳本是需要經驗積累的。 7.學腳本並不難,JSP、ASP、PHP等等也不過如此--難的是長期堅持實踐和不遺餘力的博覽 群書; 8.看再多的書是學不全腳本的,要多實踐 9.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡; 10.學習腳本最好的方法之一就是多練習; 11.在任何時刻都不要認為自己手中的書已經足夠了; 12.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看; 13.別指望看第一遍書就能記住和掌握什麼--請看第二遍、第三遍; 14.請把書上的例子親手到電腦上實踐,即使配套光碟中有源文件; 15.把在書中看到的有意義的例子擴充;並將其切實的運用到自己的工作中; 16.不要漏掉書中任何一個練習--請全部做完並記錄下思路; 17.當你用腳本到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將余 下的部分粗略的完成以保證這個代碼的完整性,然後分析自己的錯誤並重新編寫和工 作。 18.別心急,寫腳本確實不容易;水平是在不斷的實踐中完善和發展的; 19.每學到一個腳本難點的時候,嘗試著對別人講解這個知識點並讓他理解----你能 講清楚才說明你真的理解了; 20.記錄下在和別人交流時發現的自己忽視或不理解的知識點; 21.保存好你做過的所有的源文件----那是你最好的積累之一; 22.對於網路,還是希望大家能多利用一下,很多問題不是非要到論壇來問的,首先 你要學會自己找答案,比如google、網路都是很好的搜索引擎,你只要輸入關鍵字就 能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶! 23.到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問 題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己 的帖子沒人回的。 24.雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方, 如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的 才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你 討論呢。能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶! 25.到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問 題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己 的帖子沒人回的。 26.雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方, 如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的 才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你 討論呢。 別做浮躁的人 浮躁的人容易問:我到底該學什麼;----別問,學就對了; 浮躁的人容易問:JS有錢途嗎;----建議你去搶銀行; 浮躁的人容易說:我要中文版!我英文不行!----不行?學呀! 浮躁的人分兩種:只觀望而不學的人;只學而不堅持的人; 浮躁的人永遠不是一個
D. C語言學習方法和心得
1、學習C語言,要從入門到精通,需要讀哪些書(從簡單的到難的排序,越詳細越好,最好都能注釋下選擇這本書的理由)?
入門階段:還是老譚那本。
理由:雖然不能說它寫得有多好,但是你現在要做的是入門,要快速的掌握c的基本語法,這本書很好理解,能夠讓你在最短的時間內大致掌握這門語言的概更。
第二階段:《c程序設計語言》(The C Programming Language)和《C語言解惑》(The C puzzle book)
理由:《the c programming language》號稱c語言聖經。其實它也只是一本介紹基礎語法的書,不做入門教程是因為對於初學者來說,它難度稍大,之所以推薦,是因為它能讓你---系統而嚴密的---把C語言知識構架整理一遍。《c語言解惑》,系統的整理了c語法中容易讓你產生迷惑或容易犯錯的地方(如a+++++b等),這時候你才算真正開始學習c語言了.(以上兩本現在出重印了,應該在書店可以買到)
第三階段:《C陷阱與缺陷》(C Traps and Pitfalls)和《高質量c/c++編程指南》
理由:《c陷阱與缺陷》是讓對c的理解有質變得一本書,如如何理解(*(void(*)())0)()等問題,我的感覺是看完這本書讓我真正從小菜鳥變成了老菜鳥。《高質量...》,終於有一本國產的了,呵呵,我認為這本書是把你從土匪變成正規軍的最好指南,該書涉及編程風格、效率、重載、健壯性等一些列之前很難注意的問題。(以上兩本《c陷阱...》已絕版,不過網上可以下載到中英文版,《高質量...》本身就是網路書,很容易找到)
其它推薦書:《c專家編程》《c和指針》
說實話這兩本書我並沒有看過(或看完),但有口皆碑,都是經典之作,不過都已經絕版,仔細找找網上有下載的。
2、有哪些好的C語言練習(越難的越好)?
對語言本身的練習其實就是你對它的理解,用得多了,注意得多了,自然就ok了。其它思維上的練習主要是演算法和數據結構方面的,嚴老的《數據結構題集(C語言版)》如果你能做完就相當了不起了。
3、要學精C語言,還要具備哪些條件?
其實c語言也只是一個工具而已,就像鋤頭一樣,你每天挖地鋤田自然就精通它了。只要不是白痴,應該都沒有問題。
4、C語言學完後接下去要學哪些語言好?
這個我就沒有資格回答了,因為除了少量匯編和c++,我大部分只用到了c,不過也許是一脈相承的c++吧。c是面向過程的語言,學習c++面向對象的思想。
E. 尋求學習C語言的心得
上回說的是一些小問題,真正編東西,學東西還有許多要注意的地方。
由於本人也是剛學不久,水平有限,說錯的地方望大家原諒。謝謝!
一、多看代碼
在有一定基礎以後一定要多看別人的代碼。注意代碼中的演算法和數據結構。畢竟學C之後的關口就是演算法和數據結構。提到數據結構,指針是其中重要的一環,絕大多數的數據結構是建立在指針之上的,如鏈表、隊列、樹、圖等等,所以只有學好指針才能真正學好C。別的方面也要關注一下,諸如變數的命名、庫函數的用法等等。有些庫函數是經常用到的。對於這些函數的用法就要牢牢記住。
二、要自己動手
編程序是個實乾的活,光說不練不行。剛開始學的時候可以多練習書上的習題。對於自己不明白的地方,自己編個小程序實驗一下是最好的方法,能給自己留下深刻的印象。自己動手的過程中要不斷糾正自己不好的編程習慣和認識錯誤。有一定的基礎以後可以嘗試編一點小游戲,文曲星之類的電子詞典上小游戲很多,照著編作為練習。基礎很扎實的時候,可以編一些關於數據結構方面的東西,諸如最經典的學生管理系統。之後.....學匯編、硬體知識。
三、選擇一個好的編譯器
本人前段時間就遭受了一個編譯器的折磨。這個編譯器帶了個自運行程序,自動修改IE主頁。叫什麼名字就不說了。言歸正傳,英文版Turbo C v2.0沒話說,最經典的C編譯器(下載地址:http://www4.skycn.com/soft/2151.html),其次推薦一個win-tc 1.91,支持windows下的編譯器。(下載地址:http://www4.skycn.com/soft/17869.html)
四、關於養成良好的編程習慣
基本上每本C教材上都要提到。作為新手這條一定要時時遵守。記的一位網友發過評論:高手寫一堆亂七八糟的代碼就是藝術,新手寫一堆亂七八糟的代碼就是垃圾。就象古代賢人寫錯字叫通假字,小學生寫錯字叫錯別字,一個道理。具體方面:
1、在比較復雜的代碼後面要有注釋。如果光溜溜一堆代碼,別人就不可能看懂你的代碼,而且也不利於查找錯誤。除非你一直編東西給自己看。能在代碼里說明白的就一定要在代碼里體現。比如變數名、函數名,在命名的時候盡量說明是干什麼用的。
2、注意語句的嵌套不能過長,一般來說,一段代碼里Tab要少於8個。簡單說就是語句最多8個嵌套。對於新手來說,這個標准還要下降。有一個好習慣是,把主函數盡量寫簡短。經常看到別人的代碼是主函數只有幾行,幾個函數調用,而定義全在主函數外部。這樣一是減少了主函數內部的嵌套,二是比較精簡,容易讀懂。
3、注意語句的選擇。並不是分支語句就用if循環就用while、for。在適當的情況下switch和do while語句也是要用的。在某些時候,switch語句比if語句更加精練明了,而do while比while少一個循環。
F. c語言1到100求和心得體會
摘要 c語言學習心得體會篇1
G. 學習C語言心得
學習C語言,我自己認為我還學得不錯,但是其實比起THQ來說那又算什麼喲!但是我並沒有灰心,還是堅持於自己的執著...
其實學習任何東西都要有一種堅持不懈精神;其次,要對他培養出一種興趣愛好.(興趣是最大的老師)
我就是先了解它是個什麼,在了解它能做什麼,能做出什麼好的什麼...(這樣可以鉤起一種好奇的心理)
樓上那位說得對,這些東西要多寫代碼,也就是要多實踐.
還有,我建議多到書店裡去看看相關的書籍(因為我就經常新華書店看書,一看就是幾個小時.)
H. C語言學完後的心得體會
1.編程模型
所有計算機均由兩種元素組成:代碼和數據.精確的說,有些程序是圍繞著"什麼正在發生"而編寫,有些則是圍繞"誰正在受影響"而編寫的.
第一種編程方式叫做"面向過程的模型",按這種模型編寫的程序以一系列的線性步驟(代碼)為特徵,可被理解為作用於數據的代碼.如 C 等過程化語言.
第二種編程方式叫做"面向對象的模型",按這種模型編寫的程序圍繞著程序的數據(對象)和針對該對象而嚴格定義的介面來組織程序,它的特點是數據控制代碼的訪問.通過把控制權轉移到數據上,面向對象的模型在組織方式上有:抽象,封裝,繼承和多態的好處.
2.抽象
面向對象程序設計的基本要素是抽象,程序員通過抽象來管理復雜性.
管理抽象的有效方法是使用層次式的分類特性,這種方法允許用戶根據物理含義分解一個復雜的系統,把它劃分成更容易管理的塊.例如,一個計算機系統是一個獨立的對象.而在計算機系統內部由幾個子系統組成:顯示器,鍵盤,硬碟驅動器,DVD-ROM,軟盤,音響等,這些子系統每個又由專門的部件組成.關鍵是需要使用層次抽象來管理計算機系統(或其他任何復雜系統)的復雜性.
面向對象程序設計的本質:這些抽象的對象可以被看作具體的實體,這些實體對用來告訴我們作什麼的消息進行響應.
/* (我的理解)
*計算機是一個實體,我要輸入字元,顯示器顯示出來,那麼
*計算機(對象).輸入(鍵盤屬性).顯示(顯示方法)
*使用分層來引用,操作.而不用管計算機內部如何處理.
*只要有計算機對象,它就能響應我的操作,而我敲鍵盤,
*計算機對象就把這個消息傳給屏幕,屏幕顯示.
*/
計算機對象包含了它所有的屬性,以及操作,這就是面向對象程序設計的三大原則之一:封裝.
3.封裝
封裝是一種把代碼和代碼所操作的數據捆綁在一起,使這兩者不受外界干擾和誤用的機制.封裝可被理解為一種用做保護的包裝器,以防止代碼和數據被包裝器外部所定義的其他代碼任意訪問.對包裝器內部代碼與數據的訪問通過一個明確定義的介面來控制.封裝代碼的好處是每個人都知道怎樣訪問代碼,進而無需考慮實現細節就能直接使用它,同時不用擔心不可預料的副作用.
在JAVA中,最基本的封裝單元是類,一個類定義著將由一組對象所共享的行為(數據和代碼).一個類的每個對象均包含它所定義的結構與行為,這些對象就好象是一個模子鑄造出來的.所以對象也叫做類的實例.
在定義一個類時,需要指定構成該類的代碼與數據.特別是,類所定義的對象叫做成員變數或實例變數.操作數據的代碼叫做成員方法.方法定義怎樣使用成員變數,這意味著類的行為和介面要由操作實例數據的方法來定義.
由於類的用途是封裝復雜性,所以類的內部有隱藏實現復雜性的機制.所以JAVA中提供了私有和公有的訪問模式,類的公有介面代表外部的用戶應該知道或可以知道的每件東西.私有的方法數據只能通過該類的成員代碼來訪問.這就可以確保不會發生不希望的事情.
4.繼承
繼承是指一個對象從另一個對象中獲得屬性的過程.是面向對象程序設計的三大原則之二,它支持按層次分類的概念.例如,波斯貓是貓的一種,貓又是哺乳動物的一種,哺乳動物又是動物的一種.如果不使用層次的概念,每個對象需要明確定義各自的全部特徵.通過層次分類方式,一個對象只需要在它的類中定義是它成為唯一的 各個屬性,然後從父類中繼承它的通用屬性.因此,正是由於繼承機制,才使得一個對象可以成為一個通用類的一個特定實例.一個深度繼承的子類將繼承它在類層次中的每個祖先的所有屬性.
繼承與封裝可以互相作用.如果一個給定的類封裝了某些屬性,它的任何子類將會含有同樣得屬性,另加各個子類所有得屬性.這是面向對象程序在復雜性上呈線性而非幾何增長的一個重要概念.新的子類繼承其所有祖先的所有屬性.子類和系統中的其他代碼不會產生無法預料的交互作用.
5.多態
多態是指一個方法只能有一個名稱,但可以有許多形態,也就是程序中可以定義多個同名的方法,用"一個介面,多個方法"來描述.可以通過方法的參數和類型引用.
6.封裝,繼承,多態的組合使用
在由封裝,繼承,多態所組成的環境中,程序員可以編寫出比面向過程模型更健壯,更具擴展性的程序.經過仔細設計的類層次結構是重用代碼的基礎.封裝能讓程序員不必修改公有介面的代碼即可實現程序的移植.多態能使程序員開發出簡潔,易懂,易修改的代碼.例如:汽車
從繼承的角度看,駕駛員都依靠繼承性來駕駛不同類型(子類)的汽車,無論這輛車是轎車還是卡車,是賓士牌還是菲亞特牌,駕駛員都能找到方向盤,手剎,換檔器.經過一段時間駕駛後,都能知道手動檔與自動檔之間的差別,因為他們實際上都知道這兩者的共同超類:傳動裝置.
從封裝的角度看,駕駛員總是看到封裝好的特性.剎車隱藏了許多復雜性,其外觀如此簡單,用腳就能操作它.發動機,手剎,輪胎大小的實現對與剎車類的定義沒有影響.
從多態的角度看,剎車系統有正鎖反鎖之分,駕駛員只用腳踩剎車停車,同樣的介面可以用來控制若干種不同的實現(正鎖或反鎖).
這樣各個獨立的構件才被轉換為汽車這個對象的.同樣,通過使用面向對象的設計原則,程序員可以把一個復雜程序的各個構件組合在一起,形成一個一致,健壯,可維護的程序
I. 大一第一學期C語言實訓心得500字左右,急 急 急,在線等
樓主在這中間加減點東西,就可以用
過C語言實訓,讓我加深了對C語言的了解,而不只是單單的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編寫,變的生動有趣,而在自己動手的過程中,出現的問題很多,比理論要難的多,當一個程序寫完以後,經常會有很多錯誤而沒法解決。不過,通過幾天的實訓,逐漸積攢了一些經驗,有些錯誤可以很快就看出來。
這次實訓有很大的收獲,讓我對C語言有了更深的認識,平時在課堂上學到的東西可以自己動手編寫,將其轉化成一些實用的技能。如果是一個程序寫完一處錯誤也沒有,會有種成就感,於是興趣就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技能,讓我對C語言有了濃厚的興趣和更深層的認識。
C語言是一個有序的學習,學了最基本的替換,然後擴展到循環,嵌套,條理很清楚,不是一個零散的知識,實際上所有的課程都如此,不過通過實訓我也知道了自己的不足,存在的很多問題。
比如自己寫的寫的小程序出了問題,不會解決了就叫老師幫忙,雖然說一定意義上增加了師生之間的感情,但是會養成一種依賴的心理,碰到問題了個想到的是求助而不是自己獨立解決,所以以後要多多鍛煉自己的信心和增加自己的能力,爭取做到老師不在身邊的時候也可以完成一些簡單的程序編寫與錯誤排除。
還有自己的基礎知識不扎實,遇到的問題,沒有很好的邏輯思維,親自編寫一個陌生的程序的時候會有種無法下手的感覺,找不到突破口。通過實訓,逐漸理清了順序,對於簡單的程序和一些相對比較繁瑣的嵌套,循環,不在是看著一頭霧水。其實只要理清了思路,把基礎知識掌握了,然後有條不紊的分析,一步一步理解,C語言還是很有意思的課程。
自己親自動手編寫程序讓我增加了對C語言程序開發環境的了解,在上課的時候老師就講,學習C語言最重要的是學習C語言的邏輯思維,不管以後從事什麼行業,學習C語言都對自己的職業很有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以後的編程工作可能不用C語言,但是擁有扎實的C語言基礎是對工作很有用的。
當初在初步接觸C語言的時候,看著一堆「奇形怪狀」的符號,覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態!
感謝學校安排這次實訓和老師的耐心講解,讓我學到了很多知識,在實訓過程中,同學之間的相互探討,老師的循循善誘,最終讓我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之間的感情。希望以後還會有更多類似的實訓課程,在有限的大學時間內學到更多的實用技能,為以後的工作打下一個良好的基礎
J. c語言學習總結300字
1.最初接觸C語言時要弄清楚各種變數的定義方法,特別是常用的類型,int、float、char等等,還要掌握各種類型的輸入、輸出格式。這一步做到後,上機就沒有多大的問題了。
2.在對函數的學習過程中,一定要弄明白函數的作用和具體格式。值得強調的是在寫循環程序時,一定要弄清楚循環的條件。
3.對每一個知識點,都應該立即編出對應的程序,有時可能還會有語法錯誤,碰到更好的方法也可以試一下,很多時候你想想代碼怎麼寫和你真的寫出來了是有很大的差距的。
4.學習時一定有很多疑惑的,要及時弄清楚。
5.找一本好的課本,我並不推薦譚浩強的《C語言程序設計》,因為這本書把知識點講的太細碎太理論。我推薦《c語言程序設計:現代方法》這本書,書中奧妙非凡,值得深讀體驗。
6.不要認為上課認真聽課有用,寫程序不可能從課堂上學會太多的,偉大的程序員或者是很多的黑客,不是老師教出來的,你的有自己的想法自己的思路自己的,學習一門語言才有用,也才會得到別人傳教不了的東西。