個人一項拿得出手的技能是繪畫,從 5 歲學到了 13 歲。 國畫、素描、水粉、水彩都包括在內,雖然水平不一,可是繪畫技巧是相通的。
8 年時間,它帶給了我不少,最重要的一點,就是對<span style="color:red">基本功</span>的掌握。舉個例子,我剛學國畫的時候,趙XY老師讓咱們用小白雲畫同心圓,從最內圈開始不間斷,直到畫完最外圈,宣紙上要畫滿,天天最少一張。固然,前幾張的圓都慘不忍睹,直到過了一個月左右,纔好看些。趙老師的目的其實不是讓咱們練習畫圓,而是讓咱們充分掌握毛筆的筆鋒和手感,練的時間久了,這些天然就有了。這和婁老師博客中提到的是一樣的道理:html
套路(Kata)指針對某一種特定技術或技能進行重複性的練習,從而將其熟練掌握。這個概念借鑑於武術,指的是能夠獨自或多人共同練習的一系列動做、招式。
體育運動的初學者練習時候都須要重複動做,好比「學習打乒乓球時」要練習揮拍,揮拍成千上萬遍以後動做就會定型,也就是教練常說的「肌肉有了記憶能力」,之後實戰中能夠不假思索地作出來。編程
-- 引用自婁老師《優秀的教學方法---作教練與作中學》數組
可是若是沒有<span style="color:red">興趣</span>做爲驅動,也就不會有日復一日的練習。個人爺爺在我很小的時候,教我用毛筆畫蝦,興趣大概就是從那時候培養起來的吧。
說實話,我也有一段時間遇到瓶頸以爲堅持不下去了,有過放棄的念頭,然而正如婁老師所說:函數
現實生活中,只有極少部分人有意志力能長時間大量重複枯燥的基礎練習。半途而廢是許多人都常常面臨的事情。學習
-- 引用自婁老師《作中學之乒乓球刻意訓練一年總結》
可否從入門到精通,就看有沒有<span style="color:red">毅力</span>堅持下來,將量變積累成質變。 想成功又不去付出,是毫不可能的。ui
此外,趙老師能給個人最大幫助,就是課上在我練習的時候可以及時糾正我手法上的錯誤。這也就是婁老師所說的<span style="color:red">及時反饋</span>。我在畫鳥雀時有個別人都不會出現的毛病,我畫出來的全部鳥都長得同樣**>_<...**後來在趙老師屢次手把手的糾正下最終克服了。能夠說,僅憑本身是很難作到的。編碼
我認爲學Java也應當如此。spa
Q:你是怎麼學習C語言的?(做業,實驗,教材,其餘),與你的高超技能相比,C語言的學習有什麼經驗和教訓?
A:去年寒假我買了一本C語言的書提早自學的,開學後又用教材、做業系統進行鞏固。期間編寫了2個版本的成績管理系統,綜合性很強,收穫很大。C語言的學習就是反覆練習的過程,當咱們編寫綜合性強的程序時,不少語句都是不須要停下來動腦子想的,好比冒泡排序、結構體等。設計
Q:目前爲止估算本身寫過多少行C代碼?理解的狀況如何?量變引發質變,如何平衡質和量?
A:我大概寫過5000行以上的C代碼。量變到達足夠程度才能引發質變,可是要注意的是,必定要把握度,好比練習選擇排序,當已經可以熟練運用時,就基本表明掌握了,沒必要再刻意的反覆練習。我認爲質變的標準是:可以在編寫一個程序時不假思索的寫出這些語句。指針
Q:學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?
A:分得清啊。
數組指針是一個指向數組的指針,本質是指針;
數組指針:(* p)[數組大小]
指針數組是一個包含若干個指針的數組,本質是數組;
指針數組:* p[數組大小]
函數指針是一個指向函數的指針,本質是指針;
函數指針:(* p)(參數)
指針函數是一個返回值爲指針的函數,本質是函數。
指針函數:* p(參數)
Q:學過了C語言,你明白文件和流的區別和聯繫嗎?如何區分文本文件和二進制文件?如何編程操做這兩種文件?
A:程序在和文件交互時,是經過數據流的形式進行的。打開文件時,數據流先從磁盤到緩衝區,再從緩衝區到程序,關閉文件時正相反。
文本文件是以某種經常使用字符編碼方式編碼的,定長的,好比 ASCII ;而二進制文件是用自定義的編碼方式編碼的,不定長,打開二進制文件會顯示一堆亂碼。但它們在物理層面上都是二進制編碼。我沒有實際操做過這兩種文件......
Q:學過了C語言,你知道什麼叫面向過程程序設計嗎?它解決問題的方法是什麼?
A:C語言是<span style="color:red">面向過程</span>的,而Java是<span style="color:red">面向對象</span>的。
舉個例子:
<span style="color:red">面向過程</span>是定義三個事件:吃早飯、吃午餐、吃晚飯。再肯定由 Bob 來作,也就是參數是 Bob ,重點是把過程寫出來;
而<span style="color:red">面向對象</span>是先定義 Bob ,再肯定他要作什麼,重點是這個對象怎麼作。
Q:在C語言裏面,什麼是模塊?你寫過多個源文件的程序嗎?
A:模塊就是可以實現必定功能的源文件。我尚未寫過過個源文件的程序...
Q:學過了C語言,你知道什麼是「高內聚,低耦合」嗎?這個原則如何應用到高質量程序設計中?
A:高內聚就是每一個模塊獨立性強,所實現的功能具備專注性,內部各要素緊密結合;低耦合就是各個模塊之間的聯繫弱,接口較爲簡單,相互影響程度小。
Q:學過了C語言,你如何把數組A的內容複製到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。
A:
一、把數組A的內容複製到數組B
#include<stdio.h> #include<string.h> #define N 100 int main() { char A[N]={"afisniuiksnfinai"},B[N]; memcpy(B,A,strlen(A)); printf("%s\n",B); return 0; }
二、查找整數數組A中有沒有數字5
#include<stdio.h> int main() { int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19}; int i; for(i=0;i<20;i++) { if(A[i]==5) { printf("數組中有 5 !\n"); break; } } return 0; }
三、對整數數組A進行排序(從小到大,從大到小)
<span style="color:red">冒泡排序</span>
#include<stdio.h> void Sortup(int N[]); void Sortdown(int N[]); int main() { int i; int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19}; Sortup(A); for(i=0;i<20;i++) { printf("%d ",A[i]); } Sortdown(A); for(i=0;i<20;i++) { printf("%d ",A[i]); } return 0; } void Sortup(int N[]) { int i,j,temp; for(i=0;i<20;i++) { for(j=i+1;j<20;j++) { if(N[i]>N[j]) { temp=N[i]; N[i]=N[j]; N[j]=temp; } } } } void Sortdown(int N[]) { int i,j,temp; for(i=0;i<20;i++) { for(j=i+1;j<20;j++) { if(N[i]<N[j]) { temp=N[i]; N[i]=N[j]; N[j]=temp; } } } }
<span style="color:red">選擇排序</span>
#include<stdio.h> void Sortup(int N[]); void Sortdown(int N[]); int main() { int i; int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19}; Sortup(A); for(i=0;i<20;i++) { printf("%d ",A[i]); } Sortdown(A); for(i=0;i<20;i++) { printf("%d ",A[i]); } return 0; } void Sortup(int N[]) { int i,j,k,temp; for(i=0;i<19;i++) { k=i; for(j=i+1;j<20;j++) { if(N[k]>N[j]) { k=j; } } if(i!=k) { temp=N[i]; N[i]=N[k]; N[k]=temp; } } } void Sortdown(int N[]) { int i,j,k,temp; for(i=0;i<19;i++) { k=i; for(j=i+1;j<20;j++) { if(N[k]<N[j]) { k=j; } } if(i!=k) { temp=N[i]; N[i]=N[k]; N[k]=temp; } } }
Q:寫一個程序,統計本身C語言共寫了多少行代碼。
A:上一次做業統計過了。
Q:你知道什麼是斷點嗎?給出本身調試程序的例子。
A:斷點就是當咱們運行程序時,到斷點處會中止,以便逐步檢查程序。
Q:對比C語言的學習,你對《Java程序設計》的學習有什麼具體目標?如何經過刻意訓練提升程序設計能力和培養計算思惟?如何經過「作中學」實現你的目標? A:在學習Java時,我要堅持每週寫必定量的代碼,並在博客寫上本身的學習心得,經過進度條監督本身。 在學習C語言的過程當中,我有一個特別好的方法,就是對於同一個問題,去用多個辦法解決,好比對於排序問題,能夠用冒泡排序、選擇排序、插入排序等,也能夠直接用庫函數解決,這樣能夠加深理解。