20165315 C语言学习情况与Java学习目标

一、出色技能的获取经验

我从小便是一个中规中矩的人,在很多方面都是让成绩尽量保持在前百分之二十到三十这个范围内,比如我比较擅长的唱歌和乒乓球,但也不能算十分优秀,唯一算很擅长的大概也就是英语的学习了。

我最开始接触英语要回溯到幼儿园时期,那时候父母就让我上的双语班,还记得每天早上想要进教室必须通过老师的单词考核,这对于一个四五岁的儿童已经是很不容易了。接着还有小学二年级就报了英语辅导班,一直补习到六年级,毕业时靠着我扎实的功底考上了全市最好的外国语初中。这种从小的耳濡目染带给我了对英语学习的热情与信心,在之后的学习中我也丝毫没有松懈,每个阶段都为自己定下了阶段目标,英语就这样一直作为我最拿手的科目陪伴我跨入了大学。

我之所以能将英语掌握得这么好,表面上是我从小就一直与英语课堂打交道,其实更深层次的原因是我通过这些课堂不断地巩固基础,并且在平时得测试中得到了优异得成绩,这些反馈给我了继续前行的动力。

阅读了娄老师的学习经验后,我发现老师的经验与我有许多共同点:

  • 学习一门技能需要大量的练习巩固基础;
  • 学习一门技能需要需要兴趣爱好入门;
  • 学习一门技能需要阶段目标循序渐进;
  • 学习一门技能需要即时的反馈;
  • 学习一门技能需要毅力坚持到底;
  • ... ...

学习这件事,和健身一样,做得好的永远不停止,做不好的永远不开始。

--引用自《每天一万步,一周瘦十斤

二、C语言学习情况

  • 我主要是通过三种途径学习C语言这门课程。第一,上课听讲,学习新知识;第二,下课完成老师布置的代码任务(还记得要求是完成2000分的题目);第三,暑假的时候购买了计算机二级C语言部分的相关学习材料,刷题学习。当时觉得这已经算是足够“对付”这门课了,但现在想来是完全不够的。我对于英语的学习态度永远是精益求精,力争上游,而对于C语言的态度则是达标就好,得过且过。这主要还是由于我对C语言不重视也没热情,平时练习量远远不够。我希望在寒假的学习过程中,将C语言与Java结合起来,循序渐进深入学习,最后能爱上这门课程。
  • 以前我确实没有统计代码行数的习惯,只能粗略模糊的估算。参考他人的编写代码量,我大概编写了2000到3000行的代码?我对基础的代码编写还是比较熟练的,但是一旦涉及指针的概念,我就会有点混淆不清,我平时对指针的态度也是能不使用就不使用。对编程类的课程想要完全掌握是非常需要练习量的,这个量是要根据具体情况来控制,掌握得不好的部分更需要多加练习。而且不能为了量多就一味胡乱编写或者抄袭代码,一定要做到量多质优,才能提高学习质量。
  • C语言中基本概念理解
    • 数组指针指的是定义一个指针变量,使它指向一个数组,数组中的元素并不是指针,例如int (*a)[5];,数组中元素都是int型;而指针数组指的是定义一个数组,这个数组里面的元素都是指针,指向的类型相同,例如int *a[5];,数组中指针都指向int型。
    • 函数指针指的是定义一个指针变量,使它指向一个函数,函数的返回值不是指针,例如int (*lrd)(int a,int p);,此函数返回值是int型;而指针函数指的是定义一个函数,函数的返回值是指针,例如int *lrd(int a,int p);,返回的指针指向int型。
    • 对于文件和流这一块,学习C语言时老师并没有细讲,因为这部分不属于期末考试范围。我通过翻阅教材,了解到文件是可以重复使用并永久保存数据的抽象存取方法,分为文本文件和二进制文件,而在教材上也被称为字节流,流对文件的存取是以字节为单位,输入输出仅受程序控制,而C语言文件也被称为流式文件。流的概念比文件广,流除了有文件流,还包含了其他类型。
    • 文本文件二进制文件的差别在于存储数值型数据的方式不同。文本文件中每一位数字都单独占用一个字节的存储空间,而二进制文件中的所有数字全部作为一个二进制数来存储。可以通过占用的存储空间来区分,占用空间大的是文本文件,占用空间小的是二进制文件。编程操作时,文本文件的后缀名为“.txt”,而二进制文件的为“.bin”,打开方式前者为“w”、“r”、“a”等,后者为“wb”、“rb”、“ab”等。
    • 对于面向过程程序设计我并不很了解,在查阅教材和资料后,我理解为这是一种模块化、过程化的设计,即是将问题一项项列出来后,调用函数一项项解决的过程设计思路。
    • 我认为模块就是C语言程序中拥有不同功能的“区域”,例如函数就是程序中模块。我目前C语言掌握的一般,编写偏向简单化,没有尝试过编写多个源文件的程序。
    • 高内聚,低耦合”这个概念是我在学习计算机二级C语言部分的时候接触的,当时就比较感兴趣的查阅了有关资料,“高内聚”指的是模块内部联系十分紧密,为实现这个模块的功能相互作用、运行;“低耦合”指的是不同模块之间的相互作用与影响非常小,各个模块相互独立。在进行高质量程序设计时,我们要尽量将程序进行清晰的模块化,在修改、维护程序时更加方便,避免了思路混乱、修改时“牵一发而动全身”的问题。
    • C语言程序设计

(1)把数组A的内容复制到数组B中

#include <stdio.h>
#define N 100 int main()
{
int A[N],B[N],n,i;
printf("input n:");
scanf("%d",&n);
printf("input A[n]:");
for(i=0;i<n;i++)
{
scanf("%d",&A[i]);
B[i]=A[i];
printf("%d ",B[i]);
}
}

(2)查找整数数组A中有没有数字5

#include <stdio.h>
#define N 100 int main()
{
int A[N],n=0,i;
for(i=0;i<N;i++)
{
scanf("%d",&A[i]);
if(A[i]==5)
n++;
}
if(n>0)
printf("数组里有数字5");
else
printf("数组里没有数字5");
}

(3)对整数数组A进行排序

(从小到大)

#include <stdio.h>
#define N 100 int main()
{
int A[N],i,j,m,q,temp;
for(i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(j=0;j<N-1;j++)
{
for(m=j+1;m<N;m++)
{
if(A[j]>A[m])
{
temp=A[j];
A[j]=A[m];
A[m]=temp;
}
}
}
for(q=0;q<N;q++)
printf("%d ",A[q]);
}

(从大到小)

#include <stdio.h>
#define N 10 int main()
{
int A[N],i,j,m,q,temp;
for(i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(j=0;j<N-1;j++)
{
for(m=j+1;m<N;m++)
{
if(A[m]>A[j])
{
temp=A[j];
A[j]=A[m];
A[m]=temp;
}
}
}
for(q=0;q<N;q++)
printf("%d ",A[q]);
}

(4)统计代码行数

这块代码需要运用到文件部分的知识,有一定难度,我只能叙述一下我的思路,希望老师给予指导。

先将电脑里的所有后缀带".c"的代码文件一一扫描,每个文件中以"\n"为标识,遇到"\n"就让计数器加一,而且还要考虑空格、注释、tab键等因素。

  • 断点就是人为设置的,在调试程序时切入的点,程序会从断点开始逐步运行。当程序出现问题时,可以通过设置断点一步步调试程序的方法找出并纠正问题。

    • 设置断点

    • 点击"Run to cursor"键,黄色三角标识出现在断点上

    • 不断点击"Next line"键,直到输入数据

    • 打开"Debugging windows"中的"Watches"窗口,观察各变量变化

    • 如果需要进入子函数,则在黄色三角标识跳到调用函数的地方时,点击"Step into"键,三角标识就会跳入子函数中

三、对教材内容的提问

  • 第一章:什么是反编译?
  • 第二章:在输入基本型数据时,必须每输入一个数据就按一次回车键吗?还是只有例三中才是这样要求的?
  • 第三章:instanceof运算符具体在什么时候使用?怎么使用?
  • 第四章:每次编程固定要写的语句有哪些?比如package语句、new运算符是一定要使用的吗?
  • 第五章:所有的类都有自己的子类吗?
  • 第六章:什么时候要使用接口?
  • 第七章:如何启用和关闭断言语句?
  • 第八章-第十五章:其实我从第四章开始就开始越看越吃力,新的概念和定义汹涌而来,这么短短一周半的时间里想要认真看完全部ppt并理解对我来说很困难,况且我目前还没有尝试自己写Java程序,也不清楚应该怎么写,所以也不知道该提出什么问题。我接下来细心看ppt会有问题补充的。我认为对于这样一门全新的,有点难度的编程语言,只看ppt没有什么显著效果,真的可能看完就忘了,非常需要平时的练习、老师的指导和提点,也需要时间。我这些天大致看完了这十五章的内容,发现要学习记忆的东西还是很多,主要是要在做中学,才能掌握得更好。还有想问老师一点:除了大量练习之外,老师有没有什么学习这门课程的小方法呢?(比如方便记忆的小妙招之类的)

四、对Java学习的具体目标

体育运动的初学者练习时候都需要重复动作,比如「学习打乒乓球时」要练习挥拍,挥拍成千上万遍之后动作就会定型,也就是教练常说的「肌肉有了记忆能力」,以后实战中可以不假思索地做出来。

--选自《优秀的教学方法---做教练与做中学

学习和运动一样,需要大量的练习才能有记忆。我学习Java的具体目标就是养成每天编程的习惯,无论多少,质量要得到保障,实现在“做中学”。

技能的提升要「刻意训练」

  • 低水平重复是不行的,训练时间再长都没用
  • 要摆脱「舒适区」,进入「学习区」学习
  • 要循序渐进,不能进入「恐慌区」

--选自《优秀的教学方法---做教练与做中学

我在学习C语言时的心态完全是为应付期末考试而学,不考的内容我就粗略带过甚至完全不去了解,这种学习态度给我带来了恶果。所以在学习Java时,我希望我不仅仅是成为一名“合格的初学者”,要在日常练习中摆脱“舒适区”,进入“学习区”,平时多和老师同学交流。我真心希望我能熟练掌握Java这门语言,而不是想大一下学期末一样自食恶果。

我希望我能将理论和练习相结合起来,平时多巩固基础,循序渐进,及时向老师反馈学习情况,真正做到在“做中学”。

20165315 C语言学习情况与Java学习目标的更多相关文章

  1. 20165312 C语言基础调查和JAVA学习展望

    C语言基础调查和JAVA学习展望 一.有关学习技能的经历 掌握一项技能,我认为最重要的是练习和认真程度. 我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢 ...

  2. Java学习路线图,Java学习计划建议

    怎么学习Java,这是很多新手经常遇到的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:     首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...

  3. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  4. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  5. 【强烈推荐】可能是最适合你的 Java 学习路线和方法

    如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...

  6. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  7. java学习笔记9--内部类总结

    java学习笔记系列: java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对 ...

  8. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

  9. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

随机推荐

  1. pandas 笔记

    删除: del df["A"]  # 原地修改 df.drop("a")  # 返回修改后的新对象 df.drop(["a", " ...

  2. Linux:条件变量

    条件变量:     条件变量本身不是锁!但它也可以造成线程阻塞.通常与互斥锁配合使用.给多线程提供一个会合的场所. 主要应用函数:     pthread_cond_init函数     pthrea ...

  3. Centos上安装配置docker(命令集)

    导出镜像存储: docker save house/redis:3.2 > redis_img.tar   (也可以使用镜像ID) 导入镜像存储: docker load < redis_ ...

  4. webpack 自动发现 entry 的配置和引用方式

    假定我们的项目目录为如下的样子: - root/ - assets/ - app/ - global.js - index/ - index.js - auth/ - login.js - regis ...

  5. 二叉堆复习(包括d堆)

    要期中考了……我真的是什么也不会啊,书都没看过TAT. 好吧整理一下二叉堆,这里就以最大堆为例好了. 首先二叉堆其实是一棵CBT,满足父节点的键值大于左右子节点的键值(wikipedia把这个叫键值, ...

  6. ES6的export和import

    export import 的4种搭配 非默认 拿函数举例,常量,变量,类也可以 // 1 可以多个export--------import带上{} export var a="123&qu ...

  7. Spark安装过程纪录

    1 Scala安装 1.1 master 机器 修改 scala 目录所属用户和用户组. sudo chown -R hadoop:hadoop scala 修改环境变量文件 .bashrc , 添加 ...

  8. 浅析SQL Server 中的SOS_SCHEDULER_YIELD类型的等待

    本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊 ...

  9. jQuery添加添加时间与时间戳相互转换组件

    时间与时间戳的格式相互转换(转换主要兼容ie8,ie8不支持new Date()) (function($) { $.extend({ myTime: { CurTime: function () { ...

  10. kafka 删除topic

    两种方法: 一.修改配置文件server.properties 添加如下配置: delete.topic.enable=true 说明:官方给的文档说明“Enables delete topic. D ...