20165232 学习基础和c语言基础调查

做中学读后感

学习是要思考的,仅仅实践是不够的:
不光会动手,还要理解背后的原理
不光会用工具,还要理解支撑的理论
技能是分层次的:
一项技能的掌握程度分为:新手/高级初学者/合格者/精通/专家
对技能要有个期许,不能有了高级初学者的水平就满足了,要有当专家的梦想
实践要具备一定的量才能引起质变:
学乒乓球,没有10万次的练习掌握不了一个动作
学好编程?没有10000行代码的训练量是不够的
技能的提升要「刻意训练」
低水平重复是不行的,训练时间再长都没用
要摆脱「舒适区」,进入「学习区」学习
要循序渐进,不能进入「恐慌区」
学习提升要有反馈
当老师最好的方法是做教练
调过程序的都知道,如果知道哪错了,改起来是很容易的,定位错误在很难,这就是老师(教练)的价值

-- 引用自《做中学

我认为学习不是一个简单的听取知识的过程, 真正掌握理解知识需要自身的不断练习,只有不断的“做”,才能消化并吸收所听取的知识,就像C语言的学习,当我们知道各种代码的意义时,我们仅仅处于初级阶段,想要更加熟练地运用,就需要我们不断去练习,并掌握一定的套路。

正如做中学中所说的:套路(Kata)指针对某一种特定技术或技能进行重复性的练习,从而将其熟练掌握。这个概念借鉴于武术,指的是可以独自或多人共同练习的一系列动作、招式。

只有掌握了一定的套路,学习才算是达到了一定的境界,在此之前我们需要不断练习,通过量的积累来达到质的改变。

技能

我小时候学过很多东西,但稍微突出一些的只有小提琴和游泳,不敢说有多厉害,也不敢说比90%以上的人好,只是作为一个兴趣在培养。对于学习技能这件事情上,我认为成功的唯一方法就是多加练习,练的越多,收获也越多;相反,如果三天打鱼两天晒网,不管天资多么聪慧,也不会有多大的成就。

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

我认为JAVA学习也是这个道理,作为一门语言,它只有靠勤学多练,才能有所掌握,这样在我们碰到较难的问题时,也能通过牢靠的基础而一步步推出结果。不漏下每一个知识点,使问题不要积累,这样才能学好一门技术,一门语言。

c语言学习的调查

  • 学习c语言,我一般就是直接看题,遇到不会的再翻书查概念,然后再做下一题,实在不会的就看答案。在c语言方面,我对自己没有严格要求,以致于到了最后还是有很多不会的地方,c语言基础不是很牢靠。
  • 自己大约写过2000行代码,基础的代码基本都可以理解,但是后面较难的就不太会了。我认为和质都很重要,我们不能忽视量,也不能忽视质。如果只重视量,程序稍微复杂一些就不会了,很显然就不能达到一定的高度;如果只重视质,只做一些难题,没有量的积累,那么薄弱的基础必然导致换一个题型就不会做。所以,我们要在量的基础上适当拔高,从而达到平衡量变和质量的目的。
  • 这个基本分得清,数组指针和函数指针是指针,分别指向某个地址和某个函数的地址。指针数组是指一组地址,指针函数是指可以返回某个地址的函数。
  • 这个我不能分清,经过查阅资料,我大致了解了一点。文件是计算机管理数据的基本单位,流是字节序列的抽象概念。文本文件本质上也是一种二进制文件,但二进制文件全都是0和1组成的,而文本文件是由字母、数字、符号等组成,可以通过这一点来进行区分。通过c语言或是Java等编辑得到文本文件,然后再经过编辑、翻译软件处理得到二进制文件。
  • 这个我不明白,经过查阅资料,面向过程程序设计大致就是以过程为中心的编程思想。但不明白解决问题的方法。
  • 我认为模块是一个完整的程序中,具有独立功能的一部分程序。我没有写过多个源文件的程序。
  • 这个我也不了解。经过查阅资料,内聚是指模块内部的联系,耦合是指模块之间的关系。高质量的程序设计中,模块内部联系紧密,关联性强;模块之间相互独立,各自分别完成自己的功能。
  • 把数组A的内容复制到数组B中:
#include <stdio.h>
int main()
{
    int a[10],b[10],n;
    int i = 0,j=0;
    
    printf("输入个数:
");
    scanf("%d",&n);
    printf("输入值:
");
    for(i = 0;i<n;i++){
        printf("%d
",&a[i]);
    }
    for(j=0;j<n;j++){
        b[j]=a[j];
    }
    
    return 0;
}
  • 整数数组A中有没有数字5?
- #include <stdio.h>
#define N 100
int main()
{
char A[N];
int i,n=1;
gets(A);
for(i=0;A[i]!='';i++)
{
   if(A[i]=='5')
   {
       printf("有数字5");
       n=0;
       break;
   }
}
if(n)
    printf("没有数字5");
}
- 
  • 对整数数组A进行排序
  • 从小到大
#include<stdio.h>
main()
{
    int a[10];
    int i,j,t;
    printf("Input 10 numbers:
");
    for(j=0; j<10; j++)
        scanf("%d",&a[j]);
    printf("
");
    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
",a[j]);
    printf("
");
}
  • 从大到小
- #include <stdio.h>
#define N 10
main()
{
    int a[N];
    int i,j,k,t;
    for(i=0;i<9;i++)
    {       k=i;
            for(j=i+1;j<10;j++)
                if(a[j]>a[k])    k=j; 
            if(k!=i) 
            {
                t=a[k]; 
                a[k]=a[i]; 
                a[i]=t;
            }
    }
    for(i=0;i<9;i++)
            printf("%d ",a[i]);
  • 写一个程序,统计自己C语言共写了多少行代码。

这个程序毫无思路,不会写,在今后的学习中会留意此类代码

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

不知道,查阅资料后大致明白: 断点是人为设置的,意思就是让程序执行到此“停住”,不再往下执行,然后主动权就交给调试者了,此时你可以做调试软件支持的任何事情(那要看调试软件的能够提供的功能了,例如查看、修改、单步跟踪、继续执行、设置下一个断点以及断点次数和条件断点设置等等)。

  • 提出问题
  1. path是windows程序文件目录,classpath是类文件目录,用系统属性目的是把classpath放到了path中吗?
  2. java里有没有按位 与 或 异或?
  3. java数组里有传值吗?还是都是传地址?
  4. java语言中的位移运算问题
  5. java如何保存文件
  6. 子类继承用于什么情况?面向抽象编程程序上有什么特别之处?
  7. Java 远程调用如何操作实现?
  8. 如何使用java操作 ppt转图片
  9. JDBC数据库操作是否是建立服务器的基础?
  10. StringBuffer类是如何使用的?
  11. 线程的创立应该注意什么?
  12. 后台(java)如何将聊天信息保存至数据库
  13. Java如何利用foreach对数组的遍历
  14. java调用接口时怎么添加证书认证
  15. java中怎么执行sql语句
  • Java学习目标

掌握基本的概念和知识点,能够完成基本的作业,课后多练习,多思考,认真完成每一次实验。

原文地址:https://www.cnblogs.com/heyanda/p/8397889.html