关于做中学的理解及技能训练的思考

在写这篇博客之前,我首先阅读了娄老师的博客,对做中学的概念很感兴趣。我们常说知识要学以致用,做中学强调的是在用的过程中有新的收获和体会来进一步巩固学习。细数我学过的课程,不在少数,学跳舞、学英语、弹钢琴、打乒乓球等都已经是小学时的事,在阅读了娄老师对重拾乒乓球运动的回忆和体会,我想就学英语这件事说说我学英语的经验和要改进的地方。

背景

小学的时候,为了更好地学习英语,我就开始上英语的课外兴趣班。学习的第一课是学习音标。与学校严肃的氛围不同,兴趣班的老师会拿着小卡片,做着夸张的动作来激发我们学习英语的兴趣。我们也会学着老师做的动作练习发音。老师还会通过做游戏的形式让我们记住单词和对话,这一切都让我觉得学英语是一件特别有趣的事情。兴趣是最好的老师,在小学期间,英语是我引以为傲的学科。

但是,上初中之后,我就不再主动背单词了,或者不再是因为兴趣学习英语。表面上看,成绩也都还过得去,但是因为缺少练习,英语的应用能力越来越差。直到后来再去拜访小时候的英语老师,提到我现在的学习,她说:“学习语言,就是在体验其他人的生活,你生活中的一切他们都有。学习的关键,在于你能用语言和文字描述你看到的东西。”也就是做中学。就像娄老师在博客中提到的,

有人让李笑来老师(知笔墨,微博,知乎,[微信公众号:xiaolai-xuexi])在微博中用140字总结如何学好英语,他说可以用一个字总结「用」。读研究生时由于不堪忍受读把「class library」译成「班级图书馆」式的技术图书(很高兴现在看不到邱仲潘老师的书了),自己花了三个月读完了上千页的 《Windows程序设计(Programming Windows)》,第一次感到「用」英语和「学」英语的不同,这个经历让我突破了一个很多人都有的心理障碍:对用英语的恐惧。

先在生活中用了,才能知道自己的不足并加以改进。这之后,我会在无聊的时候把我眼前看到的用英语表达出来,或是在听英语歌、看英语视频的时候有意识地记住一些发音有趣和常用的词汇。慢慢的,词汇量也开始提高,我也更自信了。

我认为可以这样学英语

  • 音标很重要

在大学以前,大多数人的童年阴影就是英语听写了。很多人觉得单词背了就过了,但我认为,和拼音一样,音标也同样重要。熟悉音标能更好地掌握单词的发音,也能更好地理解单词。

  • 记熟前后缀

英语中常用的表示否定的、同义的前后缀很多,记熟这些能更好地理解单词的意思

  • 看英文字幕

路上的指示牌通常都有英语的标识,刚开始的时候可以先看英语的解释,找到自己不会的部分再看中文,慢慢的就会熟悉。同样的,在看英语视频的时候,也可以先看英文字幕来理解整体的含义。

我的不足

  • 练习不够,碎片时间没有充分利用。
  • 词汇量还很匮乏。

我眼中的c语言

在上一篇博客中,老师让我们回忆自己学习C语言的体会,我写道

考完试后,这些知识就被淡忘了,并没有让我感觉到有什么与实际相关的东西。

但在阅读了老师的几篇博客之后,我意识到并不是与实际不相关,而是我们没有学会如何去运用。做为一种编程语言,c语言主要是帮助我们用计算机语言来解决生活中的问题。但是,我们现在更多是用笔来计算题目,能用到c语言的地方不多,所以渐渐地就淡忘了c语言的知识。

我这样学习C语言(作业,实验,教材,其他),与我前面提到的技能相比,C语言的学习有这些经验和教训。

c语言是我学习的第一种编程语言。课程一开始,我觉得是一件特别有趣的事,能编出简单的程序,上课学习也更有动力。就好像我小时候开始学英语一样。学习c语言的过程中有一项作业是要刷题。刚开始的时候充满干劲,觉得一天15题完全没问题。但渐渐地,上课开始听不懂,题也开始做不出来,就像我上面提到的学习英语的懈怠期,慢慢地也就不再尝试新的题型。

经验

  • 通过刷题,不断地练同一种编程方法,巩固了我对一些常用语句的用法,比如switch,循环语句等等。
  • 在学习的过程中,我会设计简单的游戏来使学习更有趣。

不足

  • 学习热度只有三分钟,没有认真坚持。
  • 只会设计简单的程序,没有举一反三。

估算我写了这么多行代码

上学期的刷题过程中,我一编了大概150道题总的来说大概一共写了5000行代码。写过的代码我会一行行调试,弄懂每一行代码的作用。

我对数组指针、指针数组、函数指针、指针函数的理解

在我看来,

  • 数组指针是某一数组的地址;
  • 指针数组是一组指向地址的数组;
  • 函数指针指向某一函数的地址;
  • 指针函数变量是指针的函数。

文件和流的区别和联系,区分文本文件和二进制文件

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

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

是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

文本文件是基于字符编码的文件。

二进制文件是基于值编码的文件,可以根据具体应用,指定某个值是什么意思。

面向过程程序设计

百度的解释是

“面向过程”是一种以过程为中心的编程思想。 也就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

在我看来,就是走一步设计一步,具体代码视要实现的功能而定。

对模块、“高内聚、低耦合”的理解

模块

老师曾说过,每个函数都是模块,那么模块的定义是什么?我查阅了相关资料,了解到

按照功能将一个软件切分成许多部分单独开发,然后再组装起来,每一个部分即为模块

模块是在内核空间运行的程序,实际上是一种目标对象文件

通俗的说,也就是组成每个程序的大部分,那么在一个程序中,一个个的函数就是我们所理解的模块。

高内聚、低耦合

高内聚   

内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。   所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

低耦合   

耦合是一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。

也就是说在一个模块中元素联系越密切,模块与模块之间越独立,这样的程序就会更高效,也是设计程序时追求的目标。

设计程序

  • 把数组A的内容复制到数组B中

#include <stdio.h>
#include <stdlib.h>
#define N 50 int main()
{
char a[N],b[N],i,j;
printf("请输入第一个数组:\n");
gets(a);
printf("请输入第二个数组:\n");
gets(b);
printf("最终数组为:\n");
for(i=0,j=0;a[i]!=0;i++)
{
a[i]=b[j];
j++;
}
puts(a);
}
  • 查找整数数组A中有没有数字5

#include <stdio.h>
#include <stdlib.h>
#define N 50 int main()
{
char a[N],i,c=0;;
printf("请输入一个数组:\n");
gets(a);
for(i=0;a[i]!=0;i++)
{
if(a[i]=='5')
{
c=1;
break;
}
}
if(c==1) printf("存在数字5");
if(c==0) printf("不存在数字5");
}
  • 将数组A进行排序(从小到大)

#include <stdio.h>
#include <stdlib.h>
#define N 50 int main()
{
char a[N],i,j,temp;
printf("请输入一个数组:\n");
gets(a);
for(i=0;a[i]!=0;i++)
{
for(j=i+1;a[j]!=0;j++)
{
if(a[i]>a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
printf("将数组从小到大进行排列:\n");
puts(a);
}
  • 将数组A进行排序(从大到小)

#include <stdio.h>
#include <stdlib.h>
#define N 50 int main()
{
char a[N],i,j,temp;
printf("请输入一个数组:\n");
gets(a);
for(i=0;a[i]!=0;i++)
{
for(j=i+1;a[j]!=0;j++)
{
if(a[i]<a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
printf("将数组从大到小进行排列:\n");
puts(a);
}
  • 统计自己C语言共写了多少行代码

#include <stdio.h>
#include <stdlib.h> int main()
{
int m,n;
printf("请输入程序的总个数:\n");
scanf("%d",&m);
printf("请输入平均每个程序的代码行数:\n");
scanf("%d",&n);
printf("总行数为:\n%d",m*n);
}

暂时只会用这样的方式编程,等到把文件的那一章再巩固一下在用文件实现编程。

  • 断点

如图所示,图中的红点就是断点。

对《Java程序设计》的学习的具体目标,通过刻意训练提高程序设计能力和培养计算思维,通过“做中学”实现我的目标。

学习目标

对给出的题目能编出程序来解决问题,可以用Java像用c语言那设计一些简单的游戏,能够用Java编出实验的程序,能熟练运用Java中的语言点。

刻意训练

希望能够坚持一天一道来培养编程思维提高编程能力。

与做中学的联系

可以用Java试着编能用c语言设计的程序,通过这样的尝试发现自己的不足并加以改正。

我的写作能力的现状和提高

毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力。我的写作能力只算一般,文采不见得好,有时候组织语言要很久。

提高

看了电影《你的名字》之后,我开始每天坚持写日记。刚开始的时候是记流水账,后来开始慢慢注意词组的搭配和表达流畅性。在之后的日子里,我也会继续坚持,更注重语境的转化来提高自己的写作水平。

20155315庄艺霖--对做中学的理解及对c语言和Java的看法的更多相关文章

  1. 20155315庄艺霖第三次作业之Linux初体验

    Linux初体验 安装Linux三两事 老师的作业要求基于VirtualBox安装Linux系统,我一开始下载了VB但是电脑运行不了,后来看网上的教程下载了VMware,才算开始了我的Linux之旅. ...

  2. 做中学(Learning by Doing)之背单词-扇贝网推荐

    做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...

  3. 做中学之Vim实践教程

    做中学之Vim实践教程 Vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器--Vim这 ...

  4. 做中学learning by doing——个人感想20155312张竞予

    做中学learning by doing--个人感想 概要 阅读五篇博客后的感触 我的个人技能 个人经验的类比与总结 c语言学习情况 java学习目标及规划 公文写作能力 我的感触 仔细阅读了老师公众 ...

  5. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  6. 预备作业02 : 体会做中学(Learning By Doing)

    1.你有什么技能比大多人(超过班级90%以上)更好? 我认为我是一个比较爱摄影和绘画的人,虽然说说不上技术精湛,但还是能拿出手的. 2.针对这个技能的获取你有什么成功的经验? 接触摄影和绘画都是因为喜 ...

  7. 预备作业02 : 体会做中学(Learning By Doing)

    1.你有什么技能比大多人(超过班级90%以上)更好? 如果说不算上玩玻璃球在诸如此类不登大雅之堂的技能,我想我是没有什么比大多数人更好的.我的兴趣还算广泛,但很多东西也只是学到了皮毛而已. 在我上初中 ...

  8. python做中学(一)全局变量的用法

    一段时间没有使用python来写代码,就发现以前学习的很多语法都忘了.看来还是当初这方面的项目做的好不够多,没有系统性的运用和学习,导致了很多语法不能顺手拈来.在接下来的这个项目中, 一定要把遇到的一 ...

  9. 【做中学】第一个 Go 语言程序:漫画下载器

    原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...

随机推荐

  1. js 数组,字符串,json互相转换

    数组转字符串 var arr = [1,2,3,4,'巴德','merge']; var str = arr.join(','); console.log(str); // 1,2,3,4,巴德,me ...

  2. Android 获得AndroidManifest文件里自定义的meta标签内容

    try { ApplicationInfo appInfo= this.getPackageManager().getApplicationInfo(getPackageName(),PackageM ...

  3. DispatcherServlet 和 ContextLoaderListener 的关系,到底用哪个?

    我们先看下这两个东东的配置方法: 对于contextConfigLocation参数,有2个地方可以配置: 1)context-param 是全局性配置 2)servlet下的init-param 是 ...

  4. 使用JSOM检查文件或文件夹是否存在

    How to Check with SharePoint JSOM if File or Folder Exists Here's a code snippet showing how to use ...

  5. iOS三种正则表达式

    1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@.com": NSString *regex = @ ...

  6. Java面试常见知识点总结(三)

    21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:   (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...

  7. 【leetcode】Remove Nth Node From End of List

    题目简述: Given a linked list, remove the nth node from the end of list and return its head. For example ...

  8. “Operation is not valid due to the current state of the object.”

    将Repeater单页显示的2000条数据一次性提交的时候出现这个错误: Operation is not valid due to the current state of the object. ...

  9. 序言<EntityFramework6.0>

    Entity Framework是微软战略性的数据访问技术,不同与早期访问技术,Entity Framework并不耦合在Visual Studio中,它提供了一个全面的, 基于模型的生态系统,使您能 ...

  10. F#之旅2 - 我有特别的学F#技巧

    原文地址:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/learning-fsharp/ Learning F#Functio ...