20165215 学习基础和c语言基础调查

学习基础和c语言基础调查


《做中学》读后感与技能学习心得

读后感

Don't watch the clock. Do what it does. Keep going.

不要只看时钟,要效仿时钟,一直前行。

——山姆·勒文森

  • 读完老师的博客,实在是钦佩老师的毅力和行动力。减肥、背单词、学五笔这些事情我也都曾尝试过,但结果都是无疾而终,若是执行时能有如老师一般的毅力,想必现在也能有所收获。由此可见,学习过程中的毅力是多么的重要,想要达到质的飞跃,量变的积累是必不可少的,有热情和想法只是开始,实际的执行才是达成目标的关键。

迈出 「舒适区」,只在 「学习区」 学习,注意循序渐进,不能进入 「恐慌区」 。心理学家把人的知识和技能分为层层嵌套的三个圆形区域:最内一层是「舒适区」,是我们已经熟练掌握的各种技能;最外一层是「恐慌区」,是我们暂时无法学会的技能,二者中间则是「学习区」。 只有在学习区里面练习,一个人才可能进步。 有效的练习任务必须精确的在受训者的「学习区」内进行,具有高度的针对性。

  • 这段话让我想起蔡康永老师说过的「如果只看合乎自己口味的书,那你永远只能知道你已经知道」,在学习时我们只有离开「舒适区」,进入「学习区」才能掌握更多的技能。

技能学习心得

  • 小时候上过挺多兴趣班,但被问到有什么技能是超过90%的人的时候却捉襟见肘,感觉并没有什么特别突出的技能。主要原因得归结于我学东西通常都是三分钟热度有始无终,但好在还有一样舞蹈算是我比较拿得出手的技能。
  • 成功的经验中最重要的就是坚持,曾经看到一句话大致的意思是「大部分人都到不了拼天赋的程度,努力就够用了」。这句话很符合我学习舞蹈的过程,用舞蹈老师的话说我是属于硬的那种,因此在软开度的训练上吃很大的亏,但长期的练习下来,虽然和专业舞者相比有很大差距,但也足以应对一些舞台表演。
  • 学跳舞和学Java的相通之处有很多,例如都需要课后花时间练习,光靠上课的时间是远远不够的,更重要的是你课后时间和精力的投入。还有很重要的一点是都需要你自己的思考和理解,舞蹈的动作不能仅是机械的记忆,你得赋予它感情才能使整个作品变得生动,Java的学习更是如此,算法的用法是多变,只有理解透彻了才能灵活使用。

c语言学习基础的调查

1.你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?

  • c语言主要是通过教材和作业来学习的,教材和老师课上的讲解是我学习知识点的渠道,平时的练习在巩固知识点和应用方面具有较大作用。c语言学习到目前为止最大的教训就是要及时温故,不管你当时学得如何,这么长时间以来若是没有再适当巩固,所学的知识点便遗忘了很多,使用起来也就相当吃力。
    2.目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
  • 对自己写过多少行代码真的没有什么概念,估摸着应该能有三千行。理解的情况只能说是很基础,写过的代码里也没有什么高难度的语句,都是一些很基础的算法拼接而成,解题时大致能有自己的逻辑图,但和别人的相比起来往往显得有些拖沓。
  • 量变引起质变,首先这里的量得有是功效的,其次我认为二者转变过程中很重要的一点就是「悟」,即和每个人的悟性高低是有关系的。在该方面悟性高的人相对而言更容易完成量的积累,从而达到质的转变,悟性低一点的人则需要花更多的时间和精力在量的积累上,但量变一定会引起质变,就如一万小时定律,只要付出足够多的努力,就一定可以完成从平凡到卓越的转变。
    3.学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
  • 数组指针即本质是指针,指向数组;指针数组即本质是数组,数组的每一个元素都是指针。
  • 函数指针即本质是指针,指向函数;指针函数即本质是函数,但函数返回值是一个指针。
    4.学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

惭愧地说并不清楚,下面这些是我查询资料后的理解。

  • 文件是一些具有永久存储及特定顺序的字节组成的一个有序的,具有名称的集合,流是提供一种向后备存储器写入字节和从后备存储器读取字节的方式。文件是抽象的流的一种具体化。
  • 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等,二进制文件则是基于值编码的文件。在对一个文件操作时,就是要注意用相应的方式打开。

参考链接:文件和流的区别文本文件和二进制文件比较
5.学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

  • 面向过程是一种以过程为中心的编程思想,就把问题分解成一环环有关联的步骤,然后按顺序依次解决。
    6.在C语言里面,什么是模块?你写过多个源文件的程序吗?
  • 我理解的模块就是把复杂的问题拆解成的一个个环节,例如函数就是一个基本的模块。自己并没有写过多个源文件的程序。
    7.学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
  • 这些名词上课时听老师讲过,高内聚是说模块内部要高度聚合,低耦合是说模块与模块之间的藕合度要尽量低。在程序设计中,就是要做到模块间的借口清晰、明确,模块内部密封性强。

参考链接 浅谈高内聚低耦合
8.学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

#include <stdio.h>
#include <stdlib.h>
#define N 100
void find (int a[N],int n)//查找整数数组a中有没有整数5
{
    int i;
    int flag=0;
    for(i=0;i<n;i++)
    {
        if(a[i]=='5')
            flag=1;
    }
    if(flag==1)
        printf("数组A中存在整数5\n");
    else
        printf("数组A中不存在整数5\n");
}
void inturn (int a[N],int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
       {
           if(a[j]>a[j+1])
        {
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
       }
     }
     for(i=0;i<n-1;i++)
     {
         printf("%d",a[i]);//从小到大排序
     }
     printf("\n");
     for(i=n-1;i>=0;i--)
     {
         printf("%d",a[i]);//从大到小排序
     }
     printf ("\n");
}
int main()
{
int a[N],b[N];
int i,n;
printf("输入个数:\n");
scanf ("%d",&n);
printf("输入数组a:\n");
if(n<1||n>100)
    printf("error!\n");
else
{
    for(i=0;i<n;i++)
   {
     scanf("%d",&a[i]);
   }
    for(i=0;i<n;i++)
   {
     b[i]=a[i];
     printf("%d",b[i]);//数组内容复制
   }
    printf("\n");
    find(a,n);
    inturn(a,n);
}
return 0;
}

9.写一个程序,统计自己C语言共写了多少行代码。

  • 这个程序超出了我的水平范围,看了别人的代码也还是有许多不理解的地方,只好先码住统计c语言代码行数的程序慢慢学习。
    10.你知道什么是断点吗?给出自己调试程序的例子。
  • 在某行代码处设置断点后,调试程序时,程序运行到该行代码时会自动停止,然后就可以由此开始进行逐步调试,可以直接观察数据的变化,方便我们理解程序和查找错误。
  • 很遗憾我的电脑可能是由于兼容性问题,断点的设置从来就没有成功过,只在实验室的电脑上跟着老师做过程序的断点调试。

章节提问

  1. 反编译出的.java是否和编译器中的.java文件完全一致?若是不一致,又该如何还原代码?
  2. 数组为什么是引用型变量?除了8种基本数据类型,其他是否都属于引用数据类型?
  3. PPT中关于instanceof运算符的描述,是说判断左面是否是右面的类或子类创建的对象,具体是怎么应用的?
  4. 实体对象作为参数时是值传递还是引用传递?
  5. 子类和父类的面向对象之间有什么联系?能否互相转化?
  6. 接口与类的区别和联系是什么?
  7. 匿名类是一个没有类名的子类,那要使用匿名类创建对象时的构建方法是什么?
  8. String类和StringBuffer之间存在联系,那么它们是否可以互相转换?可以的话又该如何转化?
  9. JFrame构建方法?如何判断各种事件的类别?
  10. 各种流之间能否并行处理?
  11. JDBC中有哪些重要的借口?
  12. 如何解决线程的中断问题?
  13. 如何使用网络套接字?
  14. 图形布尔运算的规则是什么?
  15. 链表的使用和C语言有哪些差别和联系?

学习展望

  • 通过学习Java希望自己能增强逻辑性,现实一点则是希望在例如在大创、毕业设计等需要使用的时候能够通过自己的能力解决面临的问题。
  • 首先得要求自己迈出「舒适区」,在 「学习区」里学习,不是重复使用自己会的简单算法,而是不断学习更多更简便的方法,激发自己的思考。其次,进行大量的有针对性的练习,加深对知识点的理解和使用。以及定期反馈、交流,和别人探讨自己的理解,相互促进,引起思想火花的碰撞。
  • 想要实现目标最根本的途径就是实践,光说不练假把式,自己动手写程序去解决问题,在尝试过程中不断思考、改进,能力自然也就提高了。
posted @ 2018-02-04 00:27  匪夷所思05  阅读(231)  评论(1编辑  收藏  举报