一.你有什么技能比大多人(超过90%以上)更好?
由于小时候体弱多病,并没有培养什么爱好(最喜欢的还是去读书);后来长大了,学习任务又紧张,也就没什么爱好,所以我并没有什么技能比大部分人都好。只能说自己掌握的东西的水平处于中上罢了。不过最割舍不下的就是阅读了。我想这可能也是我为数不多的几个长处吧。
二.针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处?
既然我并没有什么技能,那我就谈谈学习方面我的一点浅见吧。
(一)坚持
娄老师文章中有这样一句话“做的好的永不停止,做不好的永远不开始”,我觉得这句话很有道理,也很适合我们。什么事情不怕你不做,就怕你半途而废,学习更是这样。当你刚开始抱着热情去学习的时候,你会十分努力;可当你不断遇到困难的时候,你的热情和动力就会不断消减,这个时候就是能看出一个人是否能成功了,你只有坚持下去,你才会走向希望。正如楼老师《减肥》这篇文章中说道的一样“每天走一万步不难,难的是天天走一万步”。学习更是如此,学一点不难,难的是日日学习。所以我觉得坚持是学习中不可或缺的一部分。
(二)循序渐进
在学习同样重要的一方面就是要根据自身能力,循序渐进地去学习,不要妄想速成。我国近现代著名的数学家华罗庚老先生就曾经犯过这样的错误,当时华罗庚教授在研究高等数学问题时,并没有去系统地学习初等数学有关方面的知识,导致最后做出的是“夹生饭”,后来华老认识到这个问题,从头学起,才得以解决。这就告诫我们要循序渐进,认真打牢基础,这样才能为以后的学习奠定坚实的基础。
(三)记录与总结
学习从来就不是一个短的过程,它贯穿与我们整个人生当中,而人的记忆是受时间影响的,所以想要学好,就必须及时记录,并加以总结。记录这件事情不只是在课堂上,而是在我们生活学习中每一个时刻,及时记录对自己有启发,有帮助的东西,毕竟“好记性不如烂笔头”。而与此同时,总结也显得非常重要,我们记录下来的东西必然是没有那么有条理性的,这就需要我们课后或者空闲的时候及时整理总结,这样不仅是对自己所学的一次整理,更是一种复习与升华。
三.有关C语言学习的调查
(一)你是怎么学习C语言的?
1.上课认真听讲并及时提问
老师上课时认真听讲,遇到问题大胆提出并及时记录永远是学习的不二法门。
2.下课及时复习整理
课下及时整理笔记,老师解题思路,自己的感想,帮助自己理解课程,同时也为自己以后复习提供方便。
3.积极主动思考
在学习这件事上,任何别的帮助与引导都比不上自己的思考,只有通过自己思考得来的才是最珍贵的。
(二)目前为止估算自己写过多少行C代码?理解的情况如何?
在上一篇博客中我就提到了,大概是不低于6000行(虽然可能大部分都很简单),但正是通过这些简单的代码的练习,我才能有基础去继续学习,去思考。大一下的学习时光中,我会及时练习并加以思考,及时找出自己的不足,同时向他人提问。而这其中让我觉得最重要的就是无论所学的东西有多么简单,都需要自己去练习,不然一些细小的问题,你很难注意到,而这就为以后的学习思考埋下了隐患,所以多实践多思考多提问,是我觉得最重要的。
(三)学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
时间有点远了,所以只能大致记得其定义:
1.数组指针就是指数组首地址的指针。
2.指针数组是指若数组中元素全是指针类型数据,则这个数组叫指针数组。
3.函数指针是指向函数的指针。
4.指针函数是形如*p的函数。
(四)你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
当时老师上课关于这个方面没有详细讲解,所以理解的不是很透彻。所以我查阅了相关资料
1.文件是指计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
2.流是字节序列的抽象概念。
3.文本文件是指ASCII文件。
4.二进制文件是按二进制的编码方式来存放文件的文件。
据资料上说,可以利用库中的函数来进行使用这两种文件。
(五)你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
在我看来这就是指设计程序的过程中要提前规划好设计思路,画好流程图,做到准备充分,心中有底。我觉得设计程序是,首先得知道算法,这是最基础也是最重要的一个环节;与此同时,将程序模块化就会方便我们进行思考与编译。
(六)什么是模块?你写过多个源文件的程序吗?
模块指的是具有基础功能的组件。由于这方面老师没有讲解,我也没有找到相关资料,所以我并未书写过多个源文件的程序。
(七)你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
这个知识点我不太清晰,所以查阅了资料。
“高内聚,低耦合”的官方解释是:耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。耦合指一个软件结构内不同模块之间互连程度的度量。对于低耦合即一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。
所以我个人觉得应该就是在设计程序时,模块各自的功能最好尽可能相互独立。
(八)你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?
只写了关键步骤:
1.数组复制:
一维数组:
int a[100],b[100],i,j,n;
printf("input n:");
scanf("%d",&n);
printf("input a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<n;j++)
{
b[j]=a[j];
}
二维数组:
int a[100][100],b[100][100],i,j,n,m;
printf("input n,m:");
scanf("%d%d",&n,&m);
printf("input a:");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[i][j]=a[i][j];
}
}
2.如何查找整数数组A中有没有数字5:
int a[100],i;
printf("input a:");
for(i=0;i<=99;i++);
{
scanf("%d",&a[i]);
}
for(i=0;i<=99;i++)
{
if(a[i]==5)
{
printf("此数组中有5");
}
}
3.如何对整数数组A进行排序(从小到大,从大到小)
(1)从大到小:
int a[100],i,j,k,n,t;
printf("input n:");
scanf("%d",&n);
printf("input a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(k=0;k<n-1;k++)
{
for(j=k+1;j<n;j++)
{
if(a[j]>a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
}
(2)从小到大:
int a[100],i,j,k,n,t;
printf("input n:");
scanf("%d",&n);
printf("input a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(k=0;k<n-1;k++)
{
for(j=k+1;j<n;j++)
{
if(a[j]<a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
}
(九)写一个程序,统计自己C语言共写了多少行代码。
这方面我并不熟悉,而且老师上课也并未详细讲解,此时恐怕力不从心。但我会在以后努力补上这一短板。
(十)你知道什么是断点吗?给出自己调试程序的例子。
断点是指我们可以在程序中的某一个地方设置一个断点,在调试的时候,程序到该处时就会停下来。我自己在这学期信息安全数学基础的“中国剩余定理”、“勒让德符号”、“生成元的求解”中都调试过相应的程序。
四.参考怎样快速阅读一本书,快速阅读一遍教材,每章提出一个问题
1.学习Java怎样开始?
2.Java的数据类型与C语言的异同和学习方式?(inreger ,scanner,score,boolean的表示和输入输出方式)
3.Java的语句表达与C语言的异同和学习方式?(match,random的学习与使用应该注意哪些)
4.类与对象的异同点有哪些?(成员变量,类的定义,命名方式,public与class的掌握与使用,什么是自定义类?)
5.子类与继承该怎样理解与运用?(构造方法的特点)
6.接口与实现中学习的重点有哪些?(接口不同形式的学习重点)
7.内部类与异常类的异同和该如何理解学习?
8.常用实用类该如何熟练运用?
9.组件与事件处理该如何入手?(异常的处理方式,error与expection的异同点)
10.输入与输出流该如何理解学习?(字符与域字节流)
11.数据库该怎样掌握其方法?
12.Java多线程机制的理解与掌握?(包的应用方法)
13Java网络编程该如何学习和运用?
14.图形,图像和音频在Java学习中的作用?
15.泛型与集合该如何理解学习掌握?
五.Java学习目标
我的水平并不是很高,所以我并不准备给自己定多高的标准:
1.独立思考老师提出的问题并尽量自主解决。
2.及时提出自己的问题。
3.能够独立编写Java中一些代码。
但我会尽最大的努力,结合“做中学”的学习方法,将实践与思考结合,按时按质按量完成老师的要求。对于培养程序设计能力,我觉得可以多看看专业书籍,积累专业知识;独立思考,培养专业程序设计思维;及时提问,向高手学习经验与教训。