学习基础和C语言基础调查 一.你有什么技能比大多人(超过90%以上)更好? 二.针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 三.有关C语言学习的调查 四.参考怎样快速阅读一本书,快速阅读一遍教材,每章提出一个问题 五.Java学习目标

由于小时候体弱多病,并没有培养什么爱好(最喜欢的还是去读书);后来长大了,学习任务又紧张,也就没什么爱好,所以我并没有什么技能比大部分人都好。只能说自己掌握的东西的水平处于中上罢了。不过最割舍不下的就是阅读了。我想这可能也是我为数不多的几个长处吧。

二.针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处?

既然我并没有什么技能,那我就谈谈学习方面我的一点浅见吧。

(一)坚持

    娄老师文章中有这样一句话“做的好的永不停止,做不好的永远不开始”,我觉得这句话很有道理,也很适合我们。什么事情不怕你不做,就怕你半途而废,学习更是这样。当你刚开始抱着热情去学习的时候,你会十分努力;可当你不断遇到困难的时候,你的热情和动力就会不断消减,这个时候就是能看出一个人是否能成功了,你只有坚持下去,你才会走向希望。正如楼老师《减肥》这篇文章中说道的一样“每天走一万步不难,难的是天天走一万步”。学习更是如此,学一点不难,难的是日日学习。所以我觉得坚持是学习中不可或缺的一部分。

(二)循序渐进

  在学习同样重要的一方面就是要根据自身能力,循序渐进地去学习,不要妄想速成。我国近现代著名的数学家华罗庚老先生就曾经犯过这样的错误,当时华罗庚教授在研究高等数学问题时,并没有去系统地学习初等数学有关方面的知识,导致最后做出的是“夹生饭”,后来华老认识到这个问题,从头学起,才得以解决。这就告诫我们要循序渐进,认真打牢基础,这样才能为以后的学习奠定坚实的基础。

(三)记录与总结

学习从来就不是一个短的过程,它贯穿与我们整个人生当中,而人的记忆是受时间影响的,所以想要学好,就必须及时记录,并加以总结。记录这件事情不只是在课堂上,而是在我们生活学习中每一个时刻,及时记录对自己有启发,有帮助的东西,毕竟“好记性不如烂笔头”。而与此同时,总结也显得非常重要,我们记录下来的东西必然是没有那么有条理性的,这就需要我们课后或者空闲的时候及时整理总结,这样不仅是对自己所学的一次整理,更是一种复习与升华。

三.有关C语言学习的调查

(一)你是怎么学习C语言的?

1.上课认真听讲并及时提问

老师上课时认真听讲,遇到问题大胆提出并及时记录永远是学习的不二法门。

2.下课及时复习整理

课下及时整理笔记,老师解题思路,自己的感想,帮助自己理解课程,同时也为自己以后复习提供方便。

3.积极主动思考

在学习这件事上,任何别的帮助与引导都比不上自己的思考,只有通过自己思考得来的才是最珍贵的。

(二)目前为止估算自己写过多少行C代码?理解的情况如何?

在上一篇博客中我就提到了,大概是不低于6000行(虽然可能大部分都很简单),但正是通过这些简单的代码的练习,我才能有基础去继续学习,去思考。大一下的学习时光中,我会及时练习并加以思考,及时找出自己的不足,同时向他人提问。而这其中让我觉得最重要的就是无论所学的东西有多么简单,都需要自己去练习,不然一些细小的问题,你很难注意到,而这就为以后的学习思考埋下了隐患,所以多实践多思考多提问,是我觉得最重要的。
(三)学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

时间有点远了,所以只能大致记得其定义:

数组指针就是指数组首地址的指针。

指针数组是指若数组中元素全是指针类型数据,则这个数组叫指针数组。

函数指针是指向函数的指针。

指针函数是形如*p的函数。

(四)你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

当时老师上课关于这个方面没有详细讲解,所以理解的不是很透彻。所以我查阅了相关资料

文件是指计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。

流是字节序列的抽象概念。

文本文件是指ASCII文件。

二进制文件是按二进制的编码方式来存放文件的文件。

据资料上说,可以利用库中的函数来进行使用这两种文件。

(五)你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

在我看来这就是指设计程序的过程中要提前规划好设计思路,画好流程图,做到准备充分,心中有底。我觉得设计程序是,首先得知道算法,这是最基础也是最重要的一个环节;与此同时,将程序模块化就会方便我们进行思考与编译。

(六)什么是模块?你写过多个源文件的程序吗?

模块指的是具有基础功能的组件。由于这方面老师没有讲解,我也没有找到相关资料,所以我并未书写过多个源文件的程序。

(七)你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

这个知识点我不太清晰,所以查阅了资料。
“高内聚,低耦合”的官方解释是:耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。耦合指一个软件结构内不同模块之间互连程度的度量。对于低耦合即一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。
所以我个人觉得应该就是在设计程序时,模块各自的功能最好尽可能相互独立。

(八)你如何把数组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中一些代码。
但我会尽最大的努力,结合“做中学”的学习方法,将实践与思考结合,按时按质按量完成老师的要求。对于培养程序设计能力,我觉得可以多看看专业书籍,积累专业知识;独立思考,培养专业程序设计思维;及时提问,向高手学习经验与教训。