个人一项拿得出手的技能是绘画,从 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语言的过程当中,我有一个特别好的方法,就是对于同一个问题,去用多个办法解决,好比对于排序问题,能够用冒泡排序、选择排序、插入排序等,也能够直接用库函数解决,这样能够加深理解。