在人生技能道路上,你有沒有專長的高超技能獲取的成功經驗(學習,棋類,球類,樂器,藝術,游戲,......)可以結合一下,特別要和下學期的《面向對象程序設計》課程要結合起來。 你有什么技能比大多人(超過70%以上)更好?
針對這個技能的獲取你有什么成功的經驗?
答: 關於這個問題 , 我認為自己是比較普通,沒什么高超技能也沒什么特長可以好講的,硬是要說些什么的話,從小就對電腦方面比較感興趣,無論是游戲還是一些技術,都比較擅長點。 游戲的話,要想玩的好:
- 首先就得去了解這個游戲的游戲規則
- 其次是找出通關的條件
- 最后就是靠技術多練,多玩去熟悉游戲。
所以,我認為對於下學期所要學習的課程《面向對象程序設計》我想也是差不多的,學習相比於游戲,學習大綱就差不多是游戲規則,學習目標就是游戲通關的條件,達到目標也就意味着你學會了這門課程,然后就是多練多敲代碼,熟悉它。除了游戲,我還會一些mysql滲透之類的技術,不過也只是略懂。這些也都是靠搜索引擎可以找到的,學一門新課程,新知識,難免會有不懂的,所以多看課外資料,多看大神們的代碼,也是很有必要的,要知道獲取新知識就是螺旋式上升的過程,游戲失敗了可以重來,學習也一樣,堅持不要放棄很關鍵。
有關C語言學習的調查
你是怎么學習C語言的?(作業,實驗,教材,其他),與你的高超技能相比,C語言的學習有什么經驗和教訓?
目前為止估算自己寫過多少行C代碼?理解的情況如何?
答: 學習c語言的話 , 剛開始我是先去看格式, 就是一個代碼是長什么樣的,就像你小學剛開始寫作文,你總得知道自己要寫些什么才算一篇作文吧。知道了何為一個有效的代碼,接來下就是多練多去做題,題目做的越來越多之后,我就會發覺自己的懂的就越少,能用的算法也寥寥無幾,這時候我就去接着看書看資料,數據結構、二叉樹、前序遍歷、圖之類的內容。后面的話,說是在學習C語言更確切的是在學c++ ,因為c 是入門嘛。 跟游戲相比,就好像你通過了第一關,第二關開啟,又是一片新地圖,新內容。經驗之談,就是多做題目,習慣思想。
代碼的話,如果算上以前敲的,五六千行左右吧,中間有段空白期,具體也不清楚。 理解的話,基礎知識應該都能掌握了。
學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?
答: 先看數組指針跟指針數組這組名詞, 就舉個例子來看吧。 int (*a) [6] 、int *a[6] 前者是數組指針后者是指針數組, 也就是着重點在后兩個字上,數組指針也就是指針,這個指針指向的是數組a ,而指針數組呢,就是數組a,用來存放int型的指針。函數指針跟指針函數也是同理,函數指針也就是指向函數的一個指針,聲明的方法就是 int (*f)(int a, int b) 這里可以看出函數名是一個指針了,而指針函數是返回值為指針的函數,聲明的方法 int* f(int a,int b) 可以很清楚的看到 int跟*連在一起,也就是指針的類型。
學過了C語言,你明白文件和流的區別和聯系嗎?如何區分文本文件和二進制文件?如何編程操作這兩種文件?
答: 這兩個名詞我也只是聽過,具體什么區別聯系我也不懂。這里我只能通過網上查找的一些資料總結之后得出。
- 文件是計算機管理數據的基本單位,同時也是應用程序保存和讀取數據的一個重要場所。
- 流是字節序列的抽象概念,例如文件、輸入/輸出設備、內部進程通信管道等。流提供一種向后備存儲器寫入字節和從后備存儲器讀取字節的方式。
-
1. 能存儲的數據類型不同
文本文件只能存儲char型字符變量。
二進制文件可以存儲char/int/short/long/float/……各種變量值。
2. 每條數據的長度
文本文件每條數據通常是固定長度的。以ASCII為例,每條數據(每個字符)都是1個字節。
二進制文件每條數據不固定。如short占兩個字節,int占四個字節,float占8個字節……
3. 讀取的軟件不同
文本文件編輯器就可以讀寫。比如記事本、NotePad++、Vim等。
二進制文件需要特別的解碼器。比如bmp文件需要圖像查看器,rmvb需要播放器……
4. 操作系統對換行符('\n')的處理不同 (不重要)
文本文件,操作系統會對'\n'進行一些隱式變換,因此文本文件直接跨平台使用會出問題。
- 在Windows下,寫入'\n'時,操作系統會隱式的將'\n'轉換為"\r\n",再寫入到文件中;讀的時候,會把“\r\n”隱式轉化為'\n',再讀到變量中。
- 在Linux下,寫入'\n'時,操作系統不做隱式變換。
二進制文件,操作系統不會對'\n'進行隱式變換,很多二進制文件(如電影、圖片等)可以跨平台使用。
參考資料 有興趣的自己也可以看看。
學過了C語言,你知道什么叫面向過程程序設計嗎?它解決問題的方法是什么?
答:打個比方 ,你做一道菜過程是洗菜,開火,放油,放菜,炒菜.......然后面向過程就是針對這些一個一個過程具體分析,火的溫度要多少,洗菜用什么水洗,放油放一勺還是兩勺......如此如此的。解決問題的話,就是先分析這個問題有幾個步驟,排列取值交換運算?考慮完步驟后用函數吧每一步都實現就ok了。
在C語言里面,什么是模塊?你寫過多個源文件的程序嗎?
答:在C語言里模塊和多個源文件我都還沒寫過,但是學java的時候寫過。模塊這個具體什么含義,我也講不清楚,就暫且認為是一個函數,模塊編程也就是用一個一個不同功能的函數來實現最終目的的編程。而且多個源文件的程序的話,我在c里面沒寫過,java里倒是經常寫,比如一個team,每個人都寫了各自的代碼,但是我看你的有個函數寫的很好,總不能,我去找你的文件然后復制粘貼吧,當然這也是一種方法,不過如果代碼很多很復雜呢,再加上又是別人寫的,看都看的一臉懵逼別說找出關鍵要用的代碼了。這時候就可以用include來共享代碼,也就是引用別人代碼里的函數(一個模塊)。(前提要放在一個文件夾下)
學過了C語言,你知道什么是“高內聚,低耦合”嗎?這個原則如何應用到高質量程序設計中?
答:這個名詞我也不是很懂,還是需要去查閱資料。(之前提到的經驗,搜索引擎真的很強大)
- 耦合性:也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。
- 內聚性:又稱塊內聯系。指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。若一個模塊內各元素(語名之間、程序段之間)聯系的越緊密,則它的內聚性就越高。
由此看來,高內聚、低耦合原則就是讓一個程序每個模塊的獨立性更強。
- 在模塊划分時,要遵循“一個模塊,一個功能”的原則,盡可能使模塊達到功能內聚。(這個是為了做到高內聚)
- 若模塊間必須存在耦合,應盡量使用數據耦合,少用控制耦合,慎用或有控制地使用公共耦合,並限制公共耦合的范圍,盡量避免內容耦合。(這個是為了做到低耦合)
學過了C語言,你如何把數組A的內容復制到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。0
答:把數組A的內容復制到數組B中的話,就直接同時進行掃描然后復制。查找數組A中有沒有數字5,也同理掃描然后判斷數組中的值。排序呢也有很多種方法,冒泡快排選擇排序等等,具體看我貼的代碼。
#include <iostream> using namespace std; int n; void copy(int a[],int b[]) { int i; for(i=0;i<n;i++) { b[i]=a[i]; } } int search(int a[],int m) { int i; for(i=0;i<n;i++) { if(a[i]==m) { return 1; break; } else if(i==n-1)return 0; } } void sort(int a[]) { int i=1,lastchange,j,temp; while((i<n)) { lastchange=n; for(j=n;j>=i;j--)//從后向前比較 if(a[j]<a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; lastchange=j; } i=lastchange; } for(i=1;i<=n;i++) cout<<a[i]<<' '; } int main() { int c,f,h; cout<<"先輸入數組的大小:"<<endl; cin>>n; int a[n],b[n]; cout<<"輸入數組A"<<endl; for(int i=0;i<n;i++) cin>>a[i]; cout<<"輸入你要進行的內容:1->復制 2->查找 3->排序"<<endl; cin>> c; switch(c) { case 1: copy(a,b); cout<<"復制完畢!"<<endl; for(h=0;h<n;h++) cout <<b[h]<<' '; break; case 2: cout<<"輸入你要查找的數"<<endl; cin>>f; if(search(a,f)){cout<<"存在"<<f<<endl;break;} else cout<<"不存在!!"<<endl; break; case 3: sort(a);break; default: exit(0); } system("pause"); }
寫一個程序,統計自己C語言共寫了多少行代碼。(這里我就寫了一個最簡單的程序,功能單一)
#include <iostream> using namespace std; int main() { char c; int count=1; freopen("1.cpp","r",stdin); freopen("1的行數.txt","w",stdout); for(c=getchar();c!=EOF;c=getchar()) if(c=='\n') count ++ ; cout<<count<<endl; }
你知道什么是斷點嗎?給出自己調試程序的例子。我就給出我上面代碼在調試的截圖。
對比C語言的學習,你對《面向對象程序設計》的學習有什么具體目標?如何通過刻意訓練提高程序設計能力和培養計算思維?如何通過“做中學”實現你的目標?
答:目標的話 就是把新知識學好學精,如何做的話 多說也無益,最主要就是多獨立思考,並且堅持不放棄。
畢業后大多數人從事的工作的要求是“提筆能寫,開口能說,問策能對,遇事能辦”,非常重要的技能是公文寫作能力,你覺得自己寫作能力如何?要怎么提高?
答:文筆的話,我作為一個理工男,我覺得我寫作能力非常差的,高中語文作文最高也就53、52。而且從上面隨筆可以看出我也並不擅長寫作。提高的話,我會多去看別人寫的博客,看一些大神的書籍、論文,去學習他們的寫作方式。
(第一次寫博客,望指點)