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

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

一、关于个人技能

阅读了娄老师关于做中学的文章,我想起了自己之前学习技能的经历。

从小到大我学过的东西不少,除学校的教育课程外,我还参加过各种兴趣班,书法、绘画、舞蹈、吉他、羽毛球、珠心算等等,可以说是涉猎极广。但惭愧的是,我从未在这其中一项上取得过大的成就,仿佛我的兴趣都是头脑一时发热罢了。

究其原因,我认为是我的学习目标不够坚定,而我本身又缺乏毅力了。

姑且用我学习羽毛球的经历来举例吧。文中提到的[肌肉记忆]是体育学习中一个重要的环节。上千次的挥拍练习,在你看到球的一瞬间,身体就能做出本能的反应,肌肉和手腕自动对力度和角度进行调整,或搓或吊或杀,配合步伐,完全就能hold住全场。

做中学,在我看来就是实践和理论结合的一个简洁概括,认知和实践的循环,以至于能达到完全的理解与掌握。我之前从没有发现过技能学习之间的相通之处

二、关于c语言学习基础

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

我是通过自己阅读教材对示例代码进行理解,然后自己动手编写调试代码,有疑问的地方询问老师或同学,最后达到代码正确以及理解知识点来学习的。我认为c语言的学习就是需要不断的练习和理解。

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

如果硬要估算的话我觉得在一千行以内吧,理解可能不是非常透彻。量是保证基础的一个方式,而质变是在量变之上进行的,多看多写有助于自己思考理解知识的代码,我觉得这个才是好的平衡方式。

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

分得清。数组指针:指向数组的指针;指针数组:数组元素全为指针的数组;函数指针:指向函数的指针;指针函数:返回类型是某一指针的函数。

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

不明白。

文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

参考二进制文件与文本文件的区别:通过编码方式区分。

Windows中,程序中是" ",对应的文件内容是" ";而二进制文件的写入和读取按其原样。Linux中,文本文件和二进制文件没有任何区别。

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

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

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

C语言中的“模块”就是能实现不同功能的一块块的区域。没有。

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

不知道。

高内聚,低耦合:系统中模块与模块之间独立存在而模块中各元素联系紧密。
应用:尽量每个功能写一个模块,方便系统的维护。

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

把数组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:");
    for(i=0;i<n;i++)
    {
        scanf("%d",&A[i]);
        B[i]=A[i];
    }
    for(i=0;i<n;i++)
        printf("%d",B[i]);
    return 0;

}

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

#include <stdio.h>
#define N 10
int main()
{
int A[N],i,j=0;
printf("input A:
");
for(i=0;i<N;i++)
{
    scanf("%d",&A[i]);
    if(A[i]==5)
        j++;
}
if(j>0)
    printf("yes
");
else
    printf("no
");
}

从小到大

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

for(i=0;i<N;i++)
    printf("%d
",A[i]);
}

从大到小
(原理与从小到大排列相同),其中一语句改为如下即可

if(A[m]<A[n])
  • 写一个程序,统计自己C语言共写了多少行代码。

不会写,通过查询资料像这样的,大概思路应该是先遍历有代码的格式的文件(如txt,main.c等),再从其中处理掉缓冲区所占的行数,进行统计。

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

在调试程序时,程序运行到有断点的某行代码时会自动停止,就可以对代码进行逐步调试了。

三、初步学习

读完老师关于怎样快速阅读一本书以及快速翻阅了ppt之后,我有如下问题:

  • 反编译是什么?其指令又是以何种方式实现的?
  • java和c语言与有许多共通之处,再实际编程中如何区别?
  • 位运算符和instanseof运算符的更详尽的使用方法和环境?
  • 新的概念"方法"可否在c语言中找到类比概念?理解有困难。
  • 变量隐藏和重写的实际应用?继承关系的多重性?
  • 接口和模块调用是否可以类比?多态和参数的真正含义?
  • 断言和和断点的使用原理有几分类似,具体如何实现?
  • string类和stringbuffer类使用的具体区别?
  • GUI的细化方法?
  • 介绍认识了不同类类型的流,储存及运转方式?
  • MySQL关系数据库管理系统,其存放数据的形式是什么样的?
  • 线程如何脱离并形成独立周期?
  • 网络编程这些步骤之中的具体联系?
  • java制作类似fl studio的程序如何实现?
  • “泛型”为何为“参数化类型”?编译器编译时与其他基本类型有何不同?

四、java学习规划

通过此前的学习经验,在未来对java这门课程的学习中我觉得因该做到有目标,有要求,有规划,在学习的过程中摆正心态,脚踏实地的做题,不断理解和进步,在做题中学习知识,在做题中感受深层次的知识内涵,融汇贯通,不满足于现阶段所能达到的成就,提高了练习的难度,增强思维的活跃度,这样才能真正的学好一门课。

原文地址:https://www.cnblogs.com/Czzzz/p/8414495.html