《做中学》读后感及C语言学习调查
读《做中学》有感
娄老师在文章中多次提到「做中学(Learning By Doing)」的概念,并通过娄老师自己的减肥经历、五笔练习经历、乒乓球练习经历和背英文单词的经历为读者更加详细地阐明了「做中学(Learning By Doing)」的重要性。
在实践中发现问题,解决问题,在实践中提高,在实践中迭代,技能才能不断提高。
-- 引用自《做中学之乒乓球刻意训练一年总结》
在我看来「做中学(Learning By Doing)」是指在学习过程中要注重实践,要多动手,想法不要只停留在脑中或口中。
我是一个特别喜欢打篮球的人。从初一便开始接触了这门运动。现在的水平在业余水准里还算可以。之所以能取得进步,我觉得与以下几点密不可分。
-
无比的热爱
- 因为充满对篮球的热爱,才使我对篮球的学习与练习充满动力。这是成功的第一步。
-
频繁的练习
- 上学时每天中午与放学后都要和同学约一场球,周末和放假的时候更是如此。
-
名师的指点
- 我有幸遇到了高中的篮球教练胡老师与大学的篮球教练王老师和张老师。因为有专业人士的指点,我才能更顺利地不断超越自我。
总结后发现与娄老师提出的「做中学(Learning By Doing)」的理念是有一些共通之处的。在娄老师的《优秀的教学方法---做教练与做中学》一文中提出实践要具备一定的量才能引起质变和调过程序的都知道,如果知道哪错了,改起来是很容易的,定位错误在很难,这就是老师(教练)的价值。这两点与我的认识相同,都强调了不断练习与导师指点的重要性。
除此之外,娄老师还提出了学习是要思考的,仅仅实践是不够的与技能是分层次的这两个观点。这是我之前没有认识到的,读后受益良多。
C语言学习调查
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
- 我c语言大部分的知识来源于教材与课后作业。通过读教材来初步了解c语言的基本内容,通过课后题库的反复练习来学习写程序。c语言的学习让明白了反复练习的重要性,也让我懂得了不要一味的刷简单题,要不断提升难度,高效率地学习。
目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
- 我达到了c语言平时作业的最低要求,应该有4000行左右。但是绝大部分是简单代码,对于更深的内容理解还有很多不足。
- 一定是要有充足的「量」才能产生质变。但是「量」是要不断提升水准的,而不是一味的追求数量。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
- 数组指针是一个指针变量,用来指向二维数组;指针数组是一个数组,里面存放了多个指针变量。
- 指针函数是带指针的函数,返回值是指针;函数指针是指指向函数的指针变量,函数指针指向函数的入口地址。
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
- 不明白。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
- 不知道...
在C语言里面,什么是模块?你写过多个源文件的程序吗?
- 依照功能,将一个程序拆分成多个部分,分步完成后再整合到主程序中。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
- 不清楚
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
- 把数组A的内容复制到数组B
#include <stdio.h>
#define N 50
main()
{
char a[N],b[N];
int i,n;
printf("Input A:\n");
gets(a);
for(i=0;a[i]=='0';i++)
{
n=1;
}
for(i=0;i<=n;i++)
{
b[i]=a[i];
}
printf("B=");
gets(b);
}
- 查找数组a中有没有5
#include <stdio.h>
#define N 50
main()
{
int a[N]={0,1,2,3,4,5,6,7,8,9},i;
for(i=0;i<=N-1;i++)
if(a[i]==5)
printf("数组中有5");
}
- 对整数数组A进行排序
从小到大
#include <stdio.h>
main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
从大到小
#include <stdio.h>
main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
写一个程序,统计自己C语言共写了多少行代码。
- 没有思路。
你知道什么是断点吗?给出自己调试程序的例子。
- 断点是在程序进行过程中,计算机中断该程序而去执行其他程序。
- 在编程中设置断点,运行到断点时自动停止编译,可以用来检查程序,很方便。
参考怎样快速阅读一本书,快速阅读一下云班课中有PPT,每章提出一个问题
- 第一章:为什么JRE的安装路径不能和JDK的安装路径相同?
- 第二章:关于int型常量赋值给byte型变量时,精度缺失的问题。
- 第三章:switch语句不写default,执行程序时会怎样?
- 第四章:成员变量的默认值是多少?
- 第五章:不理解抽象类
- 第六章:接口为什么不能含有变量?
- 第七章:内部类中声明的类能编译出字节码文件吗?
- 第八章:为什么可以把String常量的引用赋值给一个String对象?
- 第九章:JFrame如何构造
- 第十章:如果不关闭输入流或输出流会怎样?
- 第十一章:next()方法移动到最后一行的最后位置是直接返回false吗?
- 第十二章:线程消亡指什么?
- 第十三章:URL类的构造方法
- 第十四章:矩形形状的组件其默认值为(0,0),是人为规定还是系统默认?
- 第十五章:声明泛型类的好处在哪里?
对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
- 通过c语言的学习经验取长补短,在以后的java学习中要多写代码,多动手,多注重平时。
- 提高程序设计能力首先要多写程序,写多了也就熟悉了,有些程序就可以随手就来。对于更深的内容,要反复理解,只有理解了,才能正确运用。计算机思维就是在不断地实践和理解中潜移默化形成的。
- 像做中学所说,要反复「刻意训练」,要多向教练(老师)请教问题,要有更高的目标,量变产生质变。说白了,对我来说就是多写代码。