20165206学习基础和C语言基础调查
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;
}
- 断点的意思就是指程序执行到设置的断点处终止。我在上学期的密码学数学基础的中国剩余定理实验中,曾用断点调试过,进行逐步检查程序。
– 提出的问题
- Java中如何保存文件?
- length字段的使用是什么意思?
- break和continue是如何使用的?
- 类和对象在使用上区别都有什么?
- 继承性是如何应用的?
- 接口要如何理解和应用?
- 如何自定义异常类?
- StringBuffer类是如何使用的?
- 各种事件处理该如何入手和区分?
- 各种流要如何连接和使用?
- JDBC数据库应如何进行连接?
- 线程的创立应该注意什么?
- 套接字的连接是如何实现的?
- 绘制基本图形和播放音频要注意什么?
- 泛型类和普通类的区别是什么?
– Java学习目标
目标的话首先是掌握基本的概念和知识点,能够完成基本的代码的编写。然后,希望可以学到Java与其他语言不同的设计思路或者说是思考方式。而要实现这些目标的话,课上的认真听讲是必须的,然后课下也要进行相应的练习,坚持每周写一定量的代码这个计划。同时,对于不会的地方和不是很熟练的地方多问,多尝试,多交流,从而增加理解,实现目标。