20165226 学习基础和C语言基础调查

心得体会

  • 驱动迭代

    学习是一个老师与学生互动的过程,二者关系又恰如健身教练与学员,在进行基础知识的培训后还需借助工具加强相关方面的训练。学习提升的过程离不开学生在实践中发现问题并在老师的帮助下解决问题这一环节。及时反馈是学习的有效驱动力,对技能的学习便在此迭代之下提升。

  • 由小及大

技能是分层次的。实践要具备一定的量才能引起质变。技能的提升要刻意训练

-- 引用自《做中学》

掌握一个技能或开发新领域,是一个循序渐进的过程。急不得,但也需要我们在起初有个期许,有个目标。然后便是进行这一阶段的练习,勤能补拙,相信在不断的有效练习后,熟能生巧。那么问题便是如何保证目标的合理制定以及有效执行。我想,由小及大这个词诠释得正好,这显示出了量化目标以及持之以恒的重要性。不积跬步无以至千里,所持态度与目标的量化关系到是否能持续执行,而执行的有效性最重要的是毅力,不是一次性的大量付出,二是不断地付出。


技能与学习

  • 关于技能

    年轻,倒是接触了不少技能,像主持、舞蹈、钢琴、小记者、篮球、游泳。。。要说超过90%以上,大概是舞蹈吧。13年的坚持,不仅收获一定演出经验及奖项(其中包含全国一等奖),更重要的是,在这个过程中,自身身体素质的提升以及艺术情商的培养。而在这方面,最重要的是不断地练习,以及能忍受练习时肌肉拉伸的疼痛感。

  • 同学习关系

  • 事物皆相通,舞蹈是肌肉记忆与毅力的基础之上同音乐相融合的表达,刚接触舞蹈时,首要的便是练习基本功,基本功是舞蹈的基础更是保证,以至于在以后的舞蹈练习中也将基本功视为第一要务。然后便是学习与模仿动作,接着将所学片段连起来便构成了一支舞的完整动作,随着音乐的引入,动作与音乐的不断磨合到最后相融便能算是一支完整的舞了,若能在此基础上结合自己的情感再加练习,最终用自然的肢体表达去展现舞蹈的灵魂与情感,如此为佳。

    • 我想这与老师博客中的学习经验是大抵相通的。对所学之事有所期许,然后便是对其量化而后进行基础训练,在不断地练习与反馈的迭代中加强对此技能的掌握并不断提升。




C语言的学习

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

    • 我是通过教材、实验、视频、作业来进行C语言的学习的。
    • 和之前所学技能相比,在C语言的练习环节相对薄弱。
  • 目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?

    大概是3000-5000吧。能理解70%~90%吧。质和量其实是相辅相成的,当量积累到一定程度之后便行成了质,而在达到质之后,又能再进行新一轮的量的累积,如此循环往复以致无穷。
  • 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

    • 数组指针即指向一维数组的指针,* (a+i)即a[i]。
    • 指针数组即元素均为指针类型数据的数组。即* P[N]。
    • 函数指针是指向函数的指针。
    • 指针函数是一个返回值为地址值的函数,且返回值必须用同类型的指针变量来接受。
  • 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

    • 文件是计算机管理数据的基本单位,是各种存储介质中永久存储的数据的有序集合,是数据读写操作的基本对象。
    • 流是字节序列的抽象概念,提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
    • 文本文件中数值型数据的每一个数字是作为一个字符以ASCII码的形式存储的,即每一位数字都单独占用一个字节的存储空间。二进制文件则是把整个数字作为一个二进制数来存储的,并非每一位数字都占用单独的存储空间。
  • 参考了一下教材,打开文件使用函数fopen()进行,而函数fgetc()用于从一个以只读或读写方式打开的文件上读字符。

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

    应该是以过程为导向来进行程序设计。将一个任务分成几个版块按一定顺序用函数进行编程,然后在需要的时候再调用。

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

    - 按定义是:可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令。

    - 目前还没写过多个源文件的程序。

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

    “高内聚”是指各模块功能相对独立,各自执行一项明确的任务。“低耦合”是指模块之间相互影响较小,适时可进行调用。

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

    • 将数组A的内容复制到数组B
#include <stdio.h>

#define N 20

int main()

{
int a[N],b[N]; int i,n; printf("请输入a数组值\n"); for(i=0;i<n;i++) { scanf("%d",&a[i]); b[i]=a[i]; printf("%d ",b[i]); } return 0; }
  • 查找数组A中是否有数字5

#include <stdio.h>
int main()
{
int a[5];
int i,m=0;
printf("请输入a数组中的值\n");
for(i=0;i<=4;i++)
{
scanf("%d",&a[i]);
if(a[i]==5)
{
m=1;break;
}
}
if(m==1)
{
printf("数组a中有数值为5的数");
}
else
{
printf("数组a中无数值为5的数");
}
return 0;
}
  • 对整数数组A进行排序(从小到大,从大到小)
    • 从小到大

#include <stdio.h>
#define N 30
int shengxu(int a[],int n);
int main()
{
int a[N],n,i;
printf("n的值为:");
scanf("%d",&n);
printf("请输入数组a中的值");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
shengxu(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
void shengxu(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
  • 从大到小
#include <stdio.h>
#define N 30
int jiangxu(int a[],int n);
int main()
{
int a[N],n,i;
printf("n的值为:");
scanf("%d",&n);
printf("请输入数组a中的值");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
jiangxu(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
Void jiangxu(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
  • 写一个程序,统计自己C语言共写了多少行代码。
include <stdio.h>
int main()
{
int t=1; int c;
while((c=getchar())!=EOF)
{
if(c==’\n') t++;
}
printf("%d\n",t);
return 0;
}
  • 你知道什么是断点吗?给出自己调试程序的例子。

下面是进行调试的例子

20165226 学习基础和C语言基础调查




Java

  • 章节提问

    1、如何使用Java虚拟机的解释器。

    2、C语言中很多和Java格式相同,却有很多细节不同,如何实现从C到Java的过渡。

    3、instanceof 运算符的使用条件和规则不是太懂。

    4、方法类型前面不加关键字static的是实例方法、关键字static的是类方法。这两种方法的运用与实例不是太明白。

    5、通过重写隐藏已继承的实例方法的同时,需要使用super关键字操作被隐藏的成员变量,那么在什么情况下隐藏、又在什么情况之下调用成员变量和方法呢,隐藏是否有必要。

    6、接口回调与元件例化、函数调用的区别是什么。

    7、在Java中出现异常时,应使用try~catch语句,但try部分和catch部分在具体实例中是如何进行编写的。

    8、用format方法进行数字格式化,但是为什么要格式化呢。

    9、Java处理事件的模式中事件源、监视器、处理事件的接口部分感觉有些抽象。

    10、使用对象流写入或读入对象时,要保证对象是序列化的。如果不是序列化,会出现什么情况。

    11、清楚了用户的需求之后,就需要进行数据库设计,而设计过程中第四部是视图,如何使用程序来提供视图。

    12、线程同步是指几个线程都需要调用同一个同步方法(用synchronized修饰的方法)。那么请问如何使用wait()方法和notifyAll()方法。

    13、RMI是一种分布式技术,使用RMI可以让一个虚拟机(JVM)上的应用程序请求调用位于网络上另一处的JVM上的对象方法RMI是一种分布式技术。远程只能使用RMI吗。

    14、如何使用Graphics类或其子类Grapgics2D类绘制各种基本图形图像。

    15、请问HashMap对象为散列映射,TreeSet类创建的对象称作树集,这两种的集合框架使用范围和条件是什么。

  • 对比C语言的学习,在之后《Java程序设计》的学习中我希望能掌握并能熟练运用Java。

    • 首先是打好基础,书中知识点应及时整理消化。接着便是勤练,针对一个任务,可以要求自己在一定时间范围之内进行编写以提高速度,然后再通过不断调试提高编写的正确率。
    • “做中学”中所提到的目标量化十分重要,将目标细分后一步步脚踏实地练习。随时注意及时反馈,如此迭代之下能有效提高对技能的掌握程度。
上一篇:Python学习---基础函数的学习


下一篇:20165206学习基础和C语言基础调查