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

一、有关学习技能的经历

掌握一项技能,我认为最重要的是练习和认真程度。

我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢琴产生了浓厚的兴趣,开始练习钢琴。或许是电子琴的底子在,我练习接受的速度就很快。

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

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

像打乒乓球一样的道理,弹钢琴如果只是练习一两遍可能会把一小段弹出来,可是效果绝对不会和练习十遍的效果一样。所以我初中的时候,每天会坚持抽出一个小时的时间练习钢琴,先从最简单的指法然后再练习老师的作业以及原来学习过的曲子。日积月累,在不经意之间已经背下来很多曲子的谱子,手已经有记忆力了,自然而然的可以弹出曲子,感觉很奇妙。后来上高中了,时间比较紧张就没有再上钢琴课了,不过有时候我还会自娱自乐一下。

为了锻炼身体,高考之后我学习了游泳。最开始的基础学习进程很快,最后一步“换气”我学习几天、喝了不少水可是还是不会。回到家之后我在网上找了教学视频,又想了想教练说的要领,发现自己还是对水有害怕的情绪,不敢再水里做动作,害怕喝到水,身体过于僵硬,所以总是找不到感觉。后来在多次尝试、练习下终于学会,不敢说我的游泳技能有多么强,不过从一开始怕水到现在克服恐惧还是有些进步的。

大一暑假回家我坚持每天去健身房游泳,一开始每天800m,很累,后来逐步每天加50m,适量的练习强度是必要的,我自己能明显感觉我的速度以及耐力有所提升。虽然还不是很快,但是我还会在今年夏天继续练习的。

二、有关C语言的学习

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

我的C大部分是自学的,结合老师上课讲的,课下自己看书,结合书上的例子在C的系统上做题,还有通过实验练习。C的练习还有依靠大二上的密数实验,编写了几个较长的程序,对他的理解进一步加深。

一项技能的掌握程度分为:新手/高级初学者/合格者/精通/专家

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

我认为我的C的水平勉强算一个高级初学者,还有很多知识不会,我认为还是练习量不够。仅仅依靠作业的练习量是能够应付过期末考试的,但是离真正掌握还相差甚远。

  • 2.目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?

很惭愧的说,我没有统计过C的代码的行数,也没有将以前练习的文件保存,但是离老师要求的10000行代码还相差甚远。我认为想要理解一门语言还是需要练习,简单的程序我可以写出来。量变引起质变,保持一定量的练习再加上理解分析比较才能更好地提高C的水平。

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

数组指针:它的本质是一个指针,即指向数组的一个指针。

指针数组:它的本质是一个数组,即数组的每个元素都是指针。

图片引用自《C语言指针数组和数组指针

我在网上找了一个例子来说明数组指针和指针数组的区别,显然很容易能判断出p1为指针数组,p2为数组指针。

函数指针:本质是一个指针,是一个指向函数的指针变量。以整数型为例写一个声明格式:int (*p1)(int a,int b);

指针函数:本质是一个函数,它的返回值为某一类型的指针(一个地址值)。以整数型为例写一个声明格式:int *p2(int a,int b);

注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。

--引用自《指针函数与函数指针的区别

我认为这个方法同样也适用于指针数组和数组指针的区别。

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

流(stream):磁盘或其它外围设备中存储的数据的源点或终点,它提供或储存数据。

数据流将整个文件内的数据看作一串连续的字符(字节),数据流借助文件指针的移动来访问数据,文件指针目前所指的位置即是要处理的数据,经过访问后文件指针会自动向后移动。

--引用自《「C语言」文件的概念与简单数据流的读写函数

流就相当于一个文件指针,有流水的意思。

文件(file):存储在计算机外部存储器中的数据的集合。文件是字符构成的序列,以字节的形式进行储存。

根据文件的储存形式,分为文本文件(ASCII文件)和二进制文件。

文本文件:文本文件在磁盘上储存的是字节所对应的ASCII码,可以在显示器上读出来,可以读懂文件内容。文本文件所占用的空间较大。

二进制文件:是按照二进制代码进行存放的,用0\1表示,虽然也可以在显示器上显示,但我们不知道内容是什么意思。二进制文件所占用的空间较小。

要打开指定的文件可以使用fopen()函数

FILE *fopen(const char *filename,const char *mode);

图片引用自《C中的文件操作

  • 5.学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

面向过程是以过程为中心的编程思想。解决方法:分析出程序所需要的步骤,然后用函数把每一个步骤写出来,最后再依次调用。

参考:《面向过程

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

我认为模块是指将一个程序分成多个步骤来完成,分别编程实现每个步骤,就是模块。函数就可以看作模块。我没有写过多个源文件的程序。

  • 7.学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

高内聚是模块内各个元素彼此结合的紧密程度高,一个模块只负责一项任务,即单一负责原则。低耦合是指程序中各个模块之间联系较少,每个模块的相对独立性很高,模块与模块之间的接口少而简单,这样就很容易改变各个模块的程序。

在程序设计中,将每一个步骤模块化,擅长使用已经存在的函数简化程序。

  • 8.学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

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

#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(){
int a[N],b[N];
int i,n;
printf("请输入n:\n");
scanf("%d",&n);
printf("请输入数组a:\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
b[i]=a[i];
}
printf("请输出数组b:\n");
for(i=0;i<n;i++){
printf("%d ",b[i]);
}
return 0;
}

查找整数数组A中有没有数字5:

    int a[100];
int i,n,flag=0;
scanf("%d",&n);
printf("请输入数组a:\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(a[i]==5){
printf("此数组中有5.");
flag=1;
}
}
if(flag==0){
printf("此数组中没有5.");
}
return 0;

对整数数组A进行排序(从小到大,从大到小):

int main(){
int a[100];
int i,j,n,flag=0;
int temp;
printf("请输入n:\n");
scanf("%d",&n);
printf("请输入数组a:\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)//从大到小{
for(j=i+1;j<n;j++){
if(a[i]<a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("请从大到小输出a:\n");
for(i=0;i<n;i++){
printf("%d\n",a[i]);
}
for(i=0;i<n-1;i++)//从小到大{
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("请从小到大输出a:\n");
for(i=0;i<n;i++){
printf("%d\n",a[i]);
}
return 0;
}
  • 9.写一个程序,统计自己C语言共写了多少行代码。

能力有限,没能自己写出程序。我在网上找了相关的知识,找到了一段代码,现在能看懂了。不过我还是想尝试自己写出来。

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

断点:在程序的某行代码处设置断点,程序运行到就停止,开始单步调试。

单步调试数组从大到小排列的例子

三、有关JAVA的学习

1.有关ppt上的问题

  • (1)在第一章ppt中,安装jdk在D盘,而设置环境变量JAVA_HOME、path、classpath时却在E盘,我认为这里应该是jdk安装的路径,而非E盘。我在实际操作中按照我自己的想法更改了ppt的做法,事实证明我的想法是正确的。但是我不知道设置在E盘是否正确,如果在E盘也存在一个JDK,那应该是可以行得通的。



  • (2)在第二章ppt、2.3类型转换运算中,基本数据类型精度排列,float变量占4byte,long变量占8byte。我认为排序应该是:byte char short int float long double。而ppt中是:

后来我查阅了资料:java----基本数据类型精度的研究与使用(char,byte,int等)。发现自己错了,那字节数和精度之间是否有联系呢?

  • (3)在第二章ppt中,输入基本型数据,Scanner reader=new Scanner(System.in);我没有看懂这个是什么意思。可能需要几个例子来理解一下。
  • (4)在第三章ppt中,自增自减运算符中:

int f=2;

int m=2;

int y=(f*++m)+m; //y=9;

我计算的y=8,在第二个m是取m=2(原值)还是取m=3(前面m运算后的值)?

  • (5)
class Lader
{ float above,area;
float computerArea()
{ area=(above+bottom)*height/2;
return area;
}
float bottom;
void setHeight(float h)
{ height=h;
}
float height;
}

这段代码中,bottom、height是局部变量还是成员变量呢?我比较偏向于成员变量,因为他不在方法体中。那这样是否就代表了成员变量的声明可以在方法之后?和位置无关?

  • (6)
      int add(int x,int y,int z)
{ return x+y+z;
}

在这段代码中的意思是声明有参数的方法头,显而易见x、y、z为局部变量,局部变量是没有默认值的。在使用局部变量的时候我们要保证其有具体的值,那这个是如何直接return x+y+z的呢?

  • (7)
class Circle
{ double rad;
void changeRad(double newRad)
{ rad=newRad;
}
}
class Test
{ public static void main(String args[])
{ Circle cir=new Circle(10);
cir.changeRad(100);
}
}

在这段代码中,cir.changeRad(100);表达的意思是什么呢?我理解的意思是调用方法changeRad,其引用值是100,那是否rad的值由10变成100?

  • (8)在第五章中,子类是如何继承父类的方法?在ppt中没有看到具体的例子。
  • (9)在第六章中,程序设计中的“开-闭”原则是什么?
  • (10)在第七章中,异常类(exception)和error有什么区别?

后续的ppt我还没有阅读完,前面的ppt中已经有很多不懂的地方,没有前面的基础后面的就更不容易理解,我会在以后自学的时候及时补充我的疑问。

2.有关JAVA的学习

相比较C的学习,我会加大JAVA练习的程度。通过这几天的自学速读ppt,我觉得理解JAVA相比较C而言更困难,万事开头难,我会努力克服困难的,主张问题自己解答。在阅读ppt的同时,我也看了视频,我觉得视频中讲解的更加通俗易懂,并且讲到了很多ppt中没有的小细节,是自学理解的好办法。当然还需要实践,我自己尝试运行了Hello.java,虽然成功运行出来了,但是中间出了很多我意想不到的小问题,比如需要大写的我打的小写,因为一个小小的错误无法编译,所以下一步学习中我会多自己尝试着运行程序,结合教学视频尽多的掌握知识。我也会在后续的学习中积极补充我的问题。看过如何提问我受益很多,我会多结合自己的思考提出更有价值的问题。

20165312 C语言基础调查和JAVA学习展望的更多相关文章

  1. 20165318 预备作业二 学习基础和C语言基础调查

    20165318 学习基础和C语言基础调查 技能学习经验 我们这一代人,或多或少的都上过各种兴趣班,舞蹈钢琴画画书法,我也是如此.可这些技能中,唯一能拿的出手的就是舞蹈了.按照<优秀的教学方法- ...

  2. 20165230 学习基础和C语言基础调查

    20165230 学习基础和C语言基础调查 技能学习经验 我擅长弹钢琴.小时候我曾上过很多兴趣班,比如钢琴.跳舞.书法.绘画等等,唯一坚持至今的只有钢琴.仔细一算学习钢琴至今已有12年,不能说已经精通 ...

  3. 20165237 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习与特长 你有什么技能比大多人(超过90%以上)更好? 我的爱好和技能说实话挺广泛的.如果要挑出来一个很擅长的话,我觉得应该是钢琴. 针对这个技能的获取你有什么成功 ...

  4. 20165234 预备作业2 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...

  5. 20165337学习基础和C语言基础调查

    20165337学习基础和C语言基础调查 你有什么技能比大多人(超过90%以上)更好? 讲道理我感觉我自己没有什么能比90%以上的人都做得好的技能,我就瘸子里面拔将军挑一个我自认为还不错的技能吧. 我 ...

  6. 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.一种比大多数人(超过90%以上)更好的技能 说句实话,我还没有那种特别特别自信的.说我能拿得出手的.所谓能超过百分之九十以上的人的技能.毕竟人外有人,天外有天. 姑且算上 ...

  7. 20165323 学习基础和C语言基础调查

    20165323 学习基础和C语言基础调查 一.技能学习心得 1.你有什么技能比大多人更好? 我觉得我羽毛球打的还行,不能说打得比大多数人好,但是对于一些打羽毛球的要领还是掌握的. 2.针对这个技能的 ...

  8. 20165235 学习基础和C语言基础调查

    20165235 学习基础和C语言基础调查 首先第一个问题:你有什么技能比大多人(超过90%以上)更好?感觉很难回答这种问题,其实我对很多东西挺感兴趣的,如果非要拿出一种比较突出的技能的话我感觉就是象 ...

  9. 20165317 学习基础和C语言基础调查

    学习基础和C语言基础调查 关于优势技能 说来惭愧,读书多年,爱好不少,但是真的能拿的出手的.能被叫做特长的不多.至今,能在同龄人中处于较领先位置的也只有从四年级开始练起的乒乓球.记得开始练习乒乓球是从 ...

随机推荐

  1. 关于Spring IOC的学习和理解

    面向对象——三层架构(表现层.业务层.持久层) 三层架构:即表现层.业务层.持久层. ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持 ...

  2. pipenv 方便的python 开发工作流工具

    pipenv 将 composer.bundler.npm.yarn.cargo 等比较方便的包管理工具添加到了python 语言中,可以 帮助我们自动的管理virtualenv ,同时可以方便的从p ...

  3. gevent原理

    未看 http://blog.csdn.net/yueguanghaidao/article/details/24281751

  4. operator <<”不明确

    在声明重载的输出运算符<< 时,如果声明时的返回类型是std::ostream,而不是std::ostream&,但是定义的时候又加了引用的话,那么就会报“operator < ...

  5. new和delete重载

    1. 简介 new/delete关键字,其本质是预定义的操作符,因此支持重载 默认new和delete的行为: new:    ①获取内存空间(默认为堆空间):②在获取的空间中调用构造函数创建对象 d ...

  6. 【java_需阅读】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  7. 【java】public,private和protected

    public表示紧随其后的元素对任何人都是可用的,而private这个关键字表示除类型创建者和类型内部方法之外的任何人都不能访问的元素.protected关键字与private作用相当,差别仅在于继承 ...

  8. python 多线程 并发socket实例

    sever side: import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self ...

  9. DLL的晚绑定与早绑定

    调用DLL中的函数可分为早绑定与晚绑定! 早绑定是指在编译期就已经确定函数地址! 晚绑定是指在运行期动态加载dll,并根据查表的方式获取dll内exports函数的地址,由于早绑定比较简单,在此不再讲 ...

  10. WPF实现打印用户界面功能

    方式一:public bool Print(string pathStr) { try { if (File.Exists(pathStr) == false) return false; var p ...