20165206学习基础和C语言基础调查

- 技能

我的一项可以拿的出手的技能是萨克斯。但不敢说有多厉害,更不敢说比大多数人更好,只能说是还可以。我学萨克斯有5年左右的时间吧,这5年里印象最深刻的还是前两年。前两年主要是基础训练。我从最基础的音阶开始练习,每天练,练很多遍,之后开始稍微复杂一点,但还是比较基础的东西。就是这些基础反复练,练到很熟的程度以后才开始后面曲子的学习。开始我还很不理解为什么要进行这么长时间的基础的练习,但在之后的学习中却发现了其重要性。基础越牢,越熟练,在后面的学习就会越轻松,也就会越来越好。这个和娄老师博客中提到的套路和肌肉记忆是一个道理:

套路(Kata)指针对某一种特定技术或技能进行重复性的练习,从而将其熟练掌握。这个概念借鉴于武术,指的是可以独自或多人共同练习的一系列动作、招式。

体育运动的初学者练习时候都需要重复动作,比如「学习打乒乓球时」要练习挥拍,挥拍成千上万遍之后动作就会定型,也就是教练常说的「肌肉有了记忆能力」,以后实战中可以不假思索地做出来。

-- 引用自《优秀的教学方法---做教练与做中学》

所以,我认为Java的学习也同样是这个道理。只有对每个知识点都进行不断的练习,才能有所掌握。碰上一些比较难的内容,也不至于手足无措。同时,遇到问题要及时提问,尝试解决问题,使问题不累积。

- c语言学习的调查

  • 我学习c语言,就是先弄清楚各种概念,理解课本上的例题,然后再去做网上的作业题。遇到不会的就查找答案,然后进行分析和学习。但在c语言上,我对自己的自我要求不是很高,就使得一些难题并不懂,c语言基础不是很牢固。
  • 自己大约写过4000行左右的代码。写过的基础的基本都理解了,但现在也忘的差不多了。量和质都很重要,既不能忽视量,也不能忽视质。如果只重视量,简单程序重复化,很显然就不能达到一定的高度;如果只重视质,只做一些难题,没有量的积累,就必然出现一些知识上的盲点。所以,可以先通过一定量的练习来掌握一个知识点,然后再去尝试解决难题。从而达到平衡量变和质量的目的。
  • 这个只能大致分清。数组指针和函数指针是指针,分别指向某个地址和某个函数的地址。指针数组是指一组地址,指针函数是指可以返回某个地址的函数。
  • 这几点并不能分清,我百度查了一下,都大致了解了一点。文件是计算机管理数据的基本单位,流是字节序列的抽象概念。文本文件本质上也是一种二进制文件,但二进制文件全都是0和1组成的,而文本文件是由字母、数字、符号等组成,可以通过这一点来进行区分。通过c语言或是Java等编辑得到文本文件,然后再经过编辑、翻译软件处理得到二进制文件。
  • 这个也并不了解。我百度查了一下,理解的意思就是这是一种以过程为核心的编程思想。它解决问题时,就是先根据问题分析解决的步骤,然后用函数设计来一步一步的实现,然后使用的时候再一一调用。
  • 对于模块我的理解是一个完整的程序中,具有独立功能的一部分程序。我并没有写过多个源文件的程序。
  • 这个我也不了解。我百度查了一下,大致有了些印象。内聚是指模块内部的联系,耦合是指模块之间的关系。高质量的程序设计中,模块内部联系紧密,关联性强;模块之间相互独立,各自分别完成自己的功能。
  • 把数组A的内容复制到数组B中:
#include<string.h>
#define N 100
int main( )
{
int A[N],B[N],i;
for(i=0;i<=N;i++)
{
scanf("%d",&A[i]);
B[i]=A[i];
}
printf("%d",&B[i]);
return 0;
}
  • 查找整数数组A中有没有数字5:
#include<string.h>
#define N 100
int main( )
{
int A[N],i;
for(i=0;i<=N;i++)
{
if(A[i]==5)
printf("数组A中有5!\n");
break;
}
return 0;
}
  • 对整数数组A进行排序:

    (从大到小)
#include<string.h>
#define N 100
int main( )
{
int A[N],i,j,max,t;
for(i=0;i<=N;i++)
{
max=i;
for(j=i;j<=N;j++)
{
if(A[max]<A[j])
max=j;
}
if(max!=i)
t=A[i];
A[i]=A[max];
A[max]=t;
}
for(i=0;i<=N;i++)
{
printf("%d ",A[i]);
}
return 0;
}
  • 对整数数组A进行排序:

    (从小到大)
#include<string.h>
#define N 100
int main( )
{
int A[N],i,j,min,t;
for(i=0;i<=N;i++)
{
min=i;
for(j=i;j<=N;j++)
{
if(A[min]>A[j])
min=j;
}
if(min!=i)
t=A[i];
A[i]=A[min];
A[min]=t;
}
for(i=0;i<=N;i++)
{
printf("%d ",A[i]);
}
return 0;
}
  • 我的想法是统计程序中出现“;”的次数,但这个肯定比代码的总行数要少,但如何进行全部的统计就不清楚了。我百度了一下,看了一下别人的代码,是统计输入了多少行的。
int main()
{
int cnt = 1;
int c;
while((c = getchar())!=EOF)
{
if(c == '\n') cnt++;//统计行数。
}
printf("%d\n",cnt); return 0;
}
  • 断点的意思就是指程序执行到设置的断点处终止。我在上学期的密码学数学基础的中国剩余定理实验中,曾用断点调试过,进行逐步检查程序。

- 提出的问题

  1. Java中如何保存文件?
  2. length字段的使用是什么意思?
  3. break和continue是如何使用的?
  4. 类和对象在使用上区别都有什么?
  5. 继承性是如何应用的?
  6. 接口要如何理解和应用?
  7. 如何自定义异常类?
  8. StringBuffer类是如何使用的?
  9. 各种事件处理该如何入手和区分?
  10. 各种流要如何连接和使用?
  11. JDBC数据库应如何进行连接?
  12. 线程的创立应该注意什么?
  13. 套接字的连接是如何实现的?
  14. 绘制基本图形和播放音频要注意什么?
  15. 泛型类和普通类的区别是什么?

- Java学习目标

目标的话首先是掌握基本的概念和知识点,能够完成基本的代码的编写。然后,希望可以学到Java与其他语言不同的设计思路或者说是思考方式。而要实现这些目标的话,课上的认真听讲是必须的,然后课下也要进行相应的练习,坚持每周写一定量的代码这个计划。同时,对于不会的地方和不是很熟练的地方多问,多尝试,多交流,从而增加理解,实现目标。

上一篇:20165226 学习基础和C语言基础调查


下一篇:配置maven