关于自己的技能
·比别人略胜一筹的技能
其实想想我们这一代的许多人,好像从小学,甚至说不到幼儿园开始就已经参加了各种各样的培训班。我小学的时候学过国画与毛笔字,当时的作品还被老师拿出来展示了,只可惜没有保持练习到现在。从前也学过电子琴,还考到了六级。但如果要说能超过大多数人的技能的话,应该算英语了。
·get这个技能过程中的经验
也是从小到大运气比较好的原因,一个关系很好的亲戚是英语老师。虽说当时在小县城里读的小学,但所幸有小学老师和那位亲戚的帮助,英语也不会下滑。其实印象最深刻的是小学的时候,当地来了几个外教,我和一个发小也时常能和他们打交道,甚至还到家里吃饭,互赠礼物。听他们说自己国家的习俗与饮食习惯,虽然当时还小,也还是在心里种下了想去看看他们口中的国家的种子。所以很幸运,从来没有把学英语当作一门需要应付考试的学科,而是勤勤恳恳,当作一种文化来学习。对文字是每个国家的文化符号这句话的理解,学习英语在其中也起了不小的作用。
如我自己的上一篇博客所说,我认为只有在自己愿意去花心思学习的时候,那样的学习才能成为真正有效的学习。我对英语的兴趣自认为比较强,平时也喜欢看英文电影。从前买过莎翁的《十四行诗》的中英文对照版,感叹两门语言各自的灿烂美好。根据我自己学习英语的经验来说,英语对我们而言不应该只是一门需要应对四六级等各类考试的课程。如果带着了解西方文化的兴趣去学习,或许会使英语水平更上一层楼。
·与老师学习过程的共通之处
娄老师在「做中学(Learning By Doing)」之乒乓球刻意训练一年总结中提到,自己在进行一年的乒乓球刻意训练过程中,逐渐将自己的打球动作规范化。这一点让我想起我的英语写作过程。说来惭愧,自从上大学后,对英文写作的重视程度逐渐降低,在今年六月考四级之前,英语老师告诉我,写的一篇作文过于口语化。虽说看起来也还算流畅,但书面表达不够规范。从那以后我开始注重各种句式的运用与文章逻辑层次的突出,逐渐改掉了过于口语化的坏习惯。
与《每天一万步,一周减十斤》中相似的学习经历,就是毅力真的很重要。有一个用得很多的比喻,把英语的学习过程比作建造一栋大楼,单词就是不可缺少的那一砖一瓦。如果词汇量没有增加,虽说文章也能写,就是不会太精彩。而词汇量的积累源自日常的背单词,单词需在理解的基础上进行记忆。只有积累的足够的量变,才能引发质变。
关于C语言学习的调查
Q:你是怎么学习C语言的?与你的高超技能相比,C语言的学习有什么经验和教训?
A:学习C语言,除了理解与吸收老师课堂上的讲解以外,更多的是自己在课下的练习。多亏与徐小青老师平日对我们的严格要求,每天十五道的C语言编程题也算是坚持下来了。在自己编程的过程中,从对语法错误的修改,慢慢的自己进行一步步调试程序,逐渐将程序完善。一些自己需要花费很大功夫的东西,老师在课堂上会给出一些tips,对编程的思路会起到一定的启发作用。和我对英语的学习相比,C语言更多的是自己的摸索与改正过程,实践带来更多的进步。
Q:目前为止估算自己写过多少行代码?理解的情况如何?
A:按照上个学期老师的要求,进行了三个多月的训练,后期因为涉及的知识面增多,代码行数也逐渐增加,估计差不多也写了4700~5100行的样子吧...逐渐也有了自己的编程思路,只是因为上学期期末对有几个方面(例如结构体)没有考察,所以了解得不是很深刻。
Q:学过了C语言,你分得清数组指针,指针数组;函数指针,指针函数这些概念吗?
A:简单来说,数组指针的实质是一个指向二维数组的指针,而指针数组是由若干指针构成的数组,二者本质不同。与这二者有异曲同工之妙的是函数指针与指针函数,函数指针在本质上是一个指向函数的指针变量,而指针函数是一个带指针的函数,返回值是指针。
Q:学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
A:文件是一个由字节组成的有序的命名结合,而流是一个字节序列。处理文件时,将处理目录路径、磁盘存储、文件和目录名称;而流涉及的是读取、写入和查找三个基本操作。I/O操作是缓冲文件系统的,文件操作是非缓冲文件系统的。文本文件与二进制文件的区别在于存储数值型数据的方式不同:二进制文件把整个数字作为一个二进制数来存储,而文本文件将数值型数据的每一个数字作为一个字符,以其ASCII码的形式存储,每一个数字都单独占用一个字节的存储空间。
Q:学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
A:“面向过程”是一种最为实际的思考方式。运用在编程中,面向过程的程序设计是指:根据问题分析出解决问题需要的步骤,根据步骤编写函数,实现每一步需要的结果,在最后调用函数。一般的面向过程是自上而下步步求精,所以面向过程最重要的是模块化的思想方法。
Q:在C语言里面,什么是模块?你写过多个源文件的程序吗?
A:对于一个程序按照功能进行分割,实现的某一个具体功能就叫做模块。函数即可视为模块。并未编写过多个源文件的程序。
Q:学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
A:“高内聚,低耦合”是指在一个模块内部,各个元素彼此紧密结合;而在各模块之间,功能联系最少且接口简单。这句话可作为衡量一个程序质量高低的标准。设计程序时,首先注重的并不是局部的代码编写,而是整体程序的设计阶段。设计时先列出需要的功能,再根据功能不同划分模块,接着进行模块设计。需要注意的点是:各个模块之间功能明确,没有交叉;如果必须出现模块间的调用,只允许单向调用。
Q:写出相应程序:
把数组A的内容复制到数组B中:
#include<stdio.h>
#define N 300
main()
{
int i,n,a[N],b[N];
printf("数组A中有多少个数字?\n");
scanf("%d",&n);
printf("输入数组A:");
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
b[i]=a[i];
printf("数组B为:");
for (i=0;i<n;i++)
printf("%d ",b[i]);
}
查找整数数组A中有没有数字5:
#include<stdio.h>
#define N 300
main()
{
int i,n,a[N],flag=0;
printf("数组A中有多少个数字?\n");
scanf("%d",&n);
printf("输入数组A:");
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
if (a[i]==5) flag=1;
if (flag==1) printf("数组A中有数字5!");
else printf("数组A中没有数字5!");
}
对整数数组A进行从小到大排序:
#include<stdio.h>
#define N 300
main()
{
int i,j,n,a[N],temp;
printf("数组A中有多少个数字?\n");
scanf("%d",&n);
printf("输入数组A:\n");
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
{
for (j=i;j<n;j++)
{
if (a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
printf("按从小到大排序后的数组A为:\n");
for (i=0;i<n;i++)
printf("%d ",a[i]);
}
对整数数组A进行从大到小排序:
#include<stdio.h>
#define N 300
main()
{
int i,j,n,a[N],temp;
printf("数组A中有多少个数字?\n");
scanf("%d",&n);
printf("输入数组A:\n");
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
{
for (j=i;j<n;j++)
{
if (a[j]>a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
printf("按从小到大排序后的数组A为:\n");
for (i=0;i<n;i++)
printf("%d ",a[i]);
}
Q:你知道什么是断点吗?给出自己调试程序的例子。
A:断点是一个调试时使用的功能,可以让程序定位到任意位置,方便进行调试。在程序调试过程中,如果发现程序有逻辑错误,我会进行单步调试,使用断点从可能出错的地方开始测试。
Q:对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
A:C语言的学习过程中,占了很大一部分的是自己的练习与自我修正提高,但C语言还有一些细节与盲区是自己不太熟悉甚至难以运用的,希望在《Java程序设计》中能更全面的把握知识,又不仅是学习一门语言,而是掌握编程的思想。
在编程中,希望自己不会对难题望而却步,而是迎难而上,透彻思考。学会一门语言所带给我们的,不仅是知识上的丰富与充实,学习方法的上的提高才是最大的收获。“实践出真知”,希望自己能摸索出学习的道路。
Q:毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
A:虽说自己写作能力勉强还算好,但公文写作方面并没有进行过专业的训练。在课余时间里,我会去阅读关于公文写作的书籍,从各方面了解一些关于公文写作的格式与注意事项,不敢说让自己的公文写作水平得到多高的飞跃,只是希望能或多或少地为以后的工作打下基础。