没有了自主,学习的小船说翻就翻——读《做中学》有感 20155318

没有了自主,学习的小船说翻就翻

——读《做中学》有感 20155318

读了rocedu公众号中优秀的学习方法--做中学(Learning By Doing)这篇文章后,深有感触,我回想到很多自己之前打算做却没做的事情,总是因为各种原因不了了之,究其根源,是自己的懒惰。就拿刚刚过去的四级考试来说吧,因为作文题干要求中的单词不认识,导致我对整个题目理解的偏差。题目中要求在state-owned businessjoint venture做出选择,我却理解成在创业和稳定工作中做选择(╥﹏╥)然而这又能怪谁呢,只能怨自己平时不注重单词的积累,学习多数情况下是为了最终的考试,这和做中学的学习方法大相径庭。英语的学习,在某种程度上来看和程序语言的学习有很大的相似性,都需要不断的练习,重复的练习不是机械无用的,而是让自己的大脑熟悉那种环境,在面对问题形成条件反射式,自然而然地做出解答。用现在非常流行的话来说,这就是所谓的“套路”

你有什么技能比大多人(超过90%以上)更好?

坦白的讲,我不是个勤奋的人,也不是个毅力强的人。我学过很多东西,可是真正坚持下来的却什么也没有。如果一定要说我有稍稍比别人略微强一点的地方,也许是我的理解能力吧,我学东西比较快(当然啦,学的也比较浅),我的反映也比较快,高中的时候做数学卷子,有时候考试进行一半的时候我就做完了;上课时候,我经常会脑补出一些不同于老师讲解的其他方法便于自己理解和记忆。这些学习方法,大部分得益于高中时的主体课堂教学模式。

没有了自主,学习的小船说翻就翻。

——引用自母校2016年毕业典礼上朱丹校长的致辞

记得高中的时候,因为在主体课堂实验班学习,每天每个学科要完成《学习指导书》(预习新课)、《习题集》(复习)两本作业,还要看一本叫做《精讲集》的指导书,那时候每天都在抱怨作业好多多多多……老师上课的40min,前10min让我们自学指导书,中间10min让我们针对指导书在班级里讨论,然后用5min解答我们没有讨论出来的问题,最后15min讲解一下这节课的知识框架和重难点,和课后的几道例题。一开始当我得知,一节课40分钟的内容被压缩到15分钟讲完,我是拒绝的。后来发现自己挺喜欢这种模式的,虽然我不是参与讨论的一员,但是在听别人问题的时候,常常有意外的惊喜,“天呐,这个问题还可以这么想!”起初我还担心老师讲的少,会不会少学很多东西啊,后来发现并没有,就算老师满堂课的讲,真正认真听的时候也不会超过一半时间……这种学习模式是将更多学习的从课上转移到课下,只要做好了课前预习工作,熟悉了要讲的内容,每堂课就会有种上成论坛的感觉。(当然了,有这种感觉很大程度上也是因为大家迫于高考的压力,每个人都希望能从课堂上学到东西,而不是白白浪费一节课的时间,但是相似的课堂模式放在大学感觉不一定奏效) 同时,大量的练习,包括课前的和课后的,帮助我们反复记忆和理解,就像艾宾浩斯遗忘曲线中体现的那样。

针对这个技能的获取你有什么成功的经验?

因为听讲的时候有自己的思考,我可以学到一些书本之外的知识,而且听课能够比较清楚的意识到自己哪里掌握的好哪里掌握的不好;此外,我还喜欢动手操作,记忆力是我的硬伤,但是通过动手操作,我可以将东西记得更牢;我认为这些经验可以运用在下学期学习的java课程上,单纯的看懂代码、听懂老师的课程,不代表我们可以独自将代码编写出来,学习更需要思考,同时也需要更多的练习,反复上手,将知识牢牢印在脑海中。

与老师博客中的学习经验有什么共通之处?

阅读老师博客中的几篇学习经验心得,我感觉到老师是个意志力非常强的的人,同时也很擅长从学习中收获乐趣。此外,我还非常赞同老师做中学的学习方法,在我的理解中,做中学主要是通过不断的实践来学习,这和通过自己动手实践增强记忆力是相通的。

有关C语言学习的调查

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

我是通过看书和写代码学习C语言的,C语言刚开课的时候,自己因为跟不上,没有好好听课,然后自己赶紧认真写了老师布置的每天15道题的代码,从中找到了规律;渐渐地找到了课程的节奏,开始听老师课堂上讲解编代码时的各种注意事项。整体来说,我的C语言学的时好时坏……课后练习确实帮了我不少忙,如果重新再来一遍的话,我一定做好课前预习,这样就不会跟不上老师的课了。

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

写过电脑上保存了近200个程序,代码有复杂有简单的,如果取平均每个程序25行的话,就是5000行;对C语言整体知识框架的理解还可以,但是一些细节,特别是后面几个章节的(结构体,文件,链表)可能就不记得了~啊,不,应该是说忘完了……

  • 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

数组和指针是重点考察的,当然也是重点练习的,翻书确认之后,总结如下:

数组指针

数组指针,也称行指针,是一个指针变量,指针变量保存的是一个数组的首地址。定义为int (*a)[N];

指针数组

指针数组是一个数组,数组的每个元素都是指向相同数据类型的指针。定义为char*temp[N];注意使用指针数组前必须对其进行初始化。例如:char *ptr[]={"china","Japan"};

函数指针

函数指针及指向函数的指针,储存的是一个函数在内存中的入口地址,可以通过它来调用函数。声明格式为:类型说明符 (*函数名)(参数)。例如:void (*fptr)();

指针函数

指针函数是一个返回值为指针的函数。声明格式为:类型说明符 * 函数名(参数)。例如:int *GetDate(int n);

  • 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

文件(File)和流(Stream)是既有区别又有联系的两个概念。

  • 文件(file)是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。文件的常见属性如下:hide(隐藏) system(系统) read(只读) write(可写) Archive(存档)。
  • (stream)是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

文件是一个由字节组成的有序的命名集合,它具有永久存储。 在处理文件时,你将处理目录路径、磁盘存储、文件和目录名称。 相反,流是一个字节序列,可用于对后备存储进行读取和写入操作,后备存储可以是多个存储媒介之一(例如,磁盘或内存)。 正如存在除磁盘之外的多种后备存储一样,也存在除文件流之外的多种流(如网络、内存和管道流)。
——选自《文件和流 I/O》

文本文件和二进制文件的区别

二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放,也就是说存放的是数据的原形式。文本文件是把数据的终端形式的二进制数据输出到磁盘上存放,也就是说存放的是数据的终端形式。几篇文章可以参考:

  1. 文本文件和二进制文件的区别?请举例说明。
  2. 二进制文件与文本文件的区别

面向过程(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。……“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

——选自《百度百科》

  • 在C语言里面,什么是模块?你写过多个源文件的程序吗?

  • 我认为函数能体现C语言的模块化思想,将一个大程序分成不同的模块,通过函数调用的方式使用。一个程序可由若干个其他函数构成。由主函数调用其他函数,其他函数也可相互调用。同一个函数可以被一个或多个函数任意调用多次。
  • 我没有写过多个源文件的程序,如果下学期需要这方面的知识,我会利用假期的时间重新学习。
  • 学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

参考资料高内聚低耦合原则总结如下:

  • 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合
    内聚,故名思议,表示内部间聚集、关联的长度,那么高内聚就是指他们之间的关系要简单明了,不要有很强的关系。
    耦合度是对模块间关联程度的度量,模块间联系越多,其耦合性越强。
    “高内聚,低耦合”主要是阐述的面向对象系统中,各个类需要职责分离的思想。
  • 想要程序更高效,就要降低耦合度,结合所学知识,可以从以下几个方面考虑:
  1. 模块的功能化分尽可能的单一;
  2. 遵循一个定义只在一个地方出现;
  3. 少使用全局变量。
  • 学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

1. 数组A的内容复制到数组B
#include <stdio.h>// 数组A的内容复制到数组B
#define N 100
void fuzhi(int n,int a[],int b[]);
int main()
{
    int a[N],b[N],n,i;
    printf("Please input the number of a:");
    scanf("%d",&n);
    printf("Please input a:\n");
    for(i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    fuzhi(n,a,b);
    for(i=0;i<n;i++)
    {
        printf("b[%d]=%d\n",i,b[i]);
    }
    return 0;
}
void fuzhi(int n,int a[],int b[])
{
    int i;
    for(i=0;i<n;i++)
    {
        b[i]=a[i];
    }
}
2. 查找整数数组A中有无数字5
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int a[100],i,n;
    int flag=0;
    printf("Input the number of a:");
    scanf("%d",&n);
    printf("Input a:\n");
    for(i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        if(a[i]==N)
        {
            flag=1;
            break;
        }
    }
    if(flag==1) printf("There is 5 in a\n");
    else printf("There isn't 5 in a\n");
    return 0;
}
3. 对整数数组A进行排序(从小到大,从大到小)
#include <stdio.h>//对整数数组A进行排序
void shengxu(int a[],int n)
{
    int i,j,temp;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
}
void jiangxu(int a[],int n)
{
    int i,j,temp;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]<a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
}
int main()
{
    int a[100],i,n,flag;
    printf("Input the number of a:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    printf("Do you want to set them from small to big(0) or big to small(1)?\n");
    scanf("%d",&flag);
    if(flag==0) shengxu(a,n);
    if(flag==1) jiangxu(a,n);
    printf("After sort:");
    for(i=0;i<n;i++)
    {
        printf("%d    ",a[i]);
    }
    return 0;
}
  • 写一个程序,统计自己C语言共写了多少行代码

不知道如何调用自己的各个文件里的代码,如果判断行数的话,应该是统计分号的个数来代替吧。

  • 你知道什么是断点吗?给出自己调试程序的例子。

断点(BreakPoint)在某行代码处设置断点后调试程序,程序运行到该行代码时会自动停止。以刚才的排序代码为例:

对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

为了学好《Java程序设计》这门课,我将和C语言一样,在课下多编代码做练习,通过写博客复习学过的知识,并及时预习后续课程的内容。我也会增强学习的自主性,“做中学”更多强调的就是自主与实践。自身不足的地方,比如懒惰和不预习也要马上改正。

毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?

我的写作能力一般,原因在于我读书读的少,也不擅长表达自我,在高考之前,除了作文,自己几乎从不写作;上大学以来,许多课程要求有东西呈现出来,慢慢逼着自己去写一些东西。上学期选修了学院的应用写作这门选修课,给我很大启发,姬老师耐心细致的讲解让我对公文用语习惯和格式都有一定的了解。要想提高写作能力,我觉得就从两个方面入手,一个是读一个是写。坚持一周读完一本书,坚持一周写一篇文章,这些说起来容易,真正做起来可能会非常难。当然,我还有很多其他地方需要积累,比如多关心时事,看新闻热评,虚心向前辈们请教,争取早日做到“提笔能写,开口能说,问策能对,遇事能办”。

posted @ 2016-12-18 18:10  lxy1997  阅读(282)  评论(2编辑  收藏  举报