20155315庄艺霖--对做中学的理解及对c语言和Java的看法
关于做中学的理解及技能训练的思考
在写这篇博客之前,我首先阅读了娄老师的博客,对做中学的概念很感兴趣。我们常说知识要学以致用,做中学强调的是在用的过程中有新的收获和体会来进一步巩固学习。细数我学过的课程,不在少数,学跳舞、学英语、弹钢琴、打乒乓球等都已经是小学时的事,在阅读了娄老师对重拾乒乓球运动的回忆和体会,我想就学英语这件事说说我学英语的经验和要改进的地方。
背景
小学的时候,为了更好地学习英语,我就开始上英语的课外兴趣班。学习的第一课是学习音标。与学校严肃的氛围不同,兴趣班的老师会拿着小卡片,做着夸张的动作来激发我们学习英语的兴趣。我们也会学着老师做的动作练习发音。老师还会通过做游戏的形式让我们记住单词和对话,这一切都让我觉得学英语是一件特别有趣的事情。兴趣是最好的老师,在小学期间,英语是我引以为傲的学科。
但是,上初中之后,我就不再主动背单词了,或者不再是因为兴趣学习英语。表面上看,成绩也都还过得去,但是因为缺少练习,英语的应用能力越来越差。直到后来再去拜访小时候的英语老师,提到我现在的学习,她说:“学习语言,就是在体验其他人的生活,你生活中的一切他们都有。学习的关键,在于你能用语言和文字描述你看到的东西。”也就是做中学。就像娄老师在博客中提到的,
有人让李笑来老师(知笔墨,微博,知乎,[微信公众号: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的看法的更多相关文章
- 20155315庄艺霖第三次作业之Linux初体验
Linux初体验 安装Linux三两事 老师的作业要求基于VirtualBox安装Linux系统,我一开始下载了VB但是电脑运行不了,后来看网上的教程下载了VMware,才算开始了我的Linux之旅. ...
- 做中学(Learning by Doing)之背单词-扇贝网推荐
做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...
- 做中学之Vim实践教程
做中学之Vim实践教程 Vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器--Vim这 ...
- 做中学learning by doing——个人感想20155312张竞予
做中学learning by doing--个人感想 概要 阅读五篇博客后的感触 我的个人技能 个人经验的类比与总结 c语言学习情况 java学习目标及规划 公文写作能力 我的感触 仔细阅读了老师公众 ...
- "做中学"之“极客时间”课程学习指导
目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...
- 预备作业02 : 体会做中学(Learning By Doing)
1.你有什么技能比大多人(超过班级90%以上)更好? 我认为我是一个比较爱摄影和绘画的人,虽然说说不上技术精湛,但还是能拿出手的. 2.针对这个技能的获取你有什么成功的经验? 接触摄影和绘画都是因为喜 ...
- 预备作业02 : 体会做中学(Learning By Doing)
1.你有什么技能比大多人(超过班级90%以上)更好? 如果说不算上玩玻璃球在诸如此类不登大雅之堂的技能,我想我是没有什么比大多数人更好的.我的兴趣还算广泛,但很多东西也只是学到了皮毛而已. 在我上初中 ...
- python做中学(一)全局变量的用法
一段时间没有使用python来写代码,就发现以前学习的很多语法都忘了.看来还是当初这方面的项目做的好不够多,没有系统性的运用和学习,导致了很多语法不能顺手拈来.在接下来的这个项目中, 一定要把遇到的一 ...
- 【做中学】第一个 Go 语言程序:漫画下载器
原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...
随机推荐
- js 数组,字符串,json互相转换
数组转字符串 var arr = [1,2,3,4,'巴德','merge']; var str = arr.join(','); console.log(str); // 1,2,3,4,巴德,me ...
- Android 获得AndroidManifest文件里自定义的meta标签内容
try { ApplicationInfo appInfo= this.getPackageManager().getApplicationInfo(getPackageName(),PackageM ...
- DispatcherServlet 和 ContextLoaderListener 的关系,到底用哪个?
我们先看下这两个东东的配置方法: 对于contextConfigLocation参数,有2个地方可以配置: 1)context-param 是全局性配置 2)servlet下的init-param 是 ...
- 使用JSOM检查文件或文件夹是否存在
How to Check with SharePoint JSOM if File or Folder Exists Here's a code snippet showing how to use ...
- iOS三种正则表达式
1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@.com": NSString *regex = @ ...
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- 【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 ...
- “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. ...
- 序言<EntityFramework6.0>
Entity Framework是微软战略性的数据访问技术,不同与早期访问技术,Entity Framework并不耦合在Visual Studio中,它提供了一个全面的, 基于模型的生态系统,使您能 ...
- F#之旅2 - 我有特别的学F#技巧
原文地址:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/learning-fsharp/ Learning F#Functio ...