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

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

技能学习经验

我擅长弹钢琴。小时候我曾上过很多兴趣班,比如钢琴、跳舞、书法、绘画等等,唯一坚持至今的只有钢琴。仔细一算学习钢琴至今已有12年,不能说已经精通,但已比大多数人更加熟练这项技能。对于弹钢琴最重要的就是需要反复的练习和有持之以恒的毅力。最开始练习弹钢琴时是非常枯燥无味的,因为练习的曲目是最基本最简单的音符,并不能一开始就练习你喜欢的曲目。只有通过不断的练习抬指和固定手型,才能拥有扎实的基本功,进而能在日后练习难度更大的曲目时得心应手。这和娄老师博客中提到的经验有共通之处:

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

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

弹钢琴是一个量变到质变的过程,从手型的固定到五线谱的识谱,都只有通过不断的练习才能掌握并且熟练。正如娄老师所说:

实践要具备一定的量才能引起质变

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

低水平重复是不行的,训练时间再长都没用

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

在枯燥的练习过程中还必须做到一点:专注。做任何事如果做不到专注于其中,一心二用甚至三用,练习再多也只是做无用功。不走心的练习总是徒劳的,这一点我深有体会。在刚开始学习弹钢琴时,每天父母都会要求我弹一小时琴,弹完钢琴后才能出去和别的小朋友玩,当我贪玩时我就会很不情愿的练琴,有时还会发脾气,心里想:为什么我要在这做这么无聊又枯燥的事。不仅不能专注于其中,还带着负面情绪去练琴,效果可想而知。正如娄老师所说:

练习时,必须高度集中注意力。所有学生都了解一个道理:真正决定你水平的不是全班一起上的课,而是单独学习的时间。不专注,效果会很差。

-- 引用自《做中学之乒乓球刻意训练一年总结》

说实话,坚持是一件不容易的事情。在学习钢琴的过程中,我也曾经历过瓶颈期,有过放弃的念头,但在父母的监督与帮助下,我做到了持之以恒。在这里,我想感谢我的父母,是他们在我快要放弃的时候给予我最大的鼓励与陪伴,是他们陪着我度过一个又一个的难关,顺利考得了钢琴十级证书。我们都在这个过程中收获着,进步着,坚持着。

  • 我认为学习Java也应当像我学习弹钢琴一样。需要我反复不断的练习,只有通过一定量的积累才能达到质的飞跃,同时还应该培养对《java》课程的兴趣,老师将会像我的父母一样在学习中起监督作用,在遇到困难时,要及时寻求老师同学的帮助。

C语言基础

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

    A:通过课前预习课本,课上跟着老师的思路认真听并记笔记,课下及时复习并在作业系统和实验中不断的练习与反思来学习。只有通过大量的练习才能熟练,对代码才能得心应手,要养成每日写代码的习惯,绝不能为了应付老师,在截止日期的前一天草草写完代码了事。

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

    A:大约写了4000行左右的c代码。能做到大部分理解写过的代码。在写代码的过程中,如果不能理解,我会通过自学课本和寻求老师同学的帮助来深入对代码的理解。只有达到了一定的量变才能引起质变,这个过程就像是烧开水,如果烧到了99℃,如果不坚持最后那1℃,水永远不会烧开。只有持之以恒的不断练习才能做到得心应手。

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

    A:分得清。

    数组指针是一个指向数组的指针,本质是指针;

    指针数组是一个包含若干个指针的数组,本质是数组;

    函数指针是一个指向函数的指针,本质是指针;

    指针函数是一个返回值为指针的函数,本质是函数。

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

    A:抱歉,我不明白,我通过上网查询来了解该知识并回答这个问题。

文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。

流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

参阅:文件和流的区别和联系

文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。

参阅:文本文件和二进制文件的区别

通过查阅文本文件和二进制文件的处理,了解了对两种文件的操作

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

"面向过程"是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.

参阅:什么是面向过程的程序设计

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

    A:模块就是能够实现各个功能的源文件,可以通过在主函数中调用模块来实现一定的功能。我还没有写过多个源文件的程序。

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

    A:“高内聚,低耦合”是指一个程序中每个模块的独立性强,各个模块之间的联系尽量少,相互影响程度小。

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

1、把数组A的内容复制到数组B

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

运行结果如下:

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

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

#include<stdio.h>
int main()
{
int A[100];
int i,n;
printf("input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&A[i]);
} for(i=0;i<n;i++)
{
if(A[i]==5)
{
printf("数组中数字有 5 !\n");
exit(0);
}
}
printf("数组中数字没有 5 !\n");
return 0; }

运行结果如下:

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

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

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

  1. 对A进行排序(从小到大):
#include <stdio.h>
main()
{
int a[100],i,j,n,t;
printf("input n:");
scanf("%d",&n);
printf("input a:");
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[j]<a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0; i<n; i++)
{
printf("%d\n",a[i]);
}
}

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

2.对A进行排序(从大到小):

#include <stdio.h>
main()
{
int a[100],i,j,n,t;
printf("input n:");
scanf("%d",&n);
printf("input a:");
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[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0; i<n; i++)
{
printf("%d\n",a[i]);
}
}

运行结果如下:

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

  • Q:写一个程序,统计自己C语言共写了多少行代码。

    A:抱歉,我不会写。

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

    A:断点就是我们在调试程序中设置的中断处,程序运行到断点会停止,以便逐步检查程序。示例如下:

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

  • Q:Java各章问题

  1. 源文件的结构是什么?
  2. java中的数据类型与数组与C语言中的数据类型与数组有什么区别与联系吗?
  3. instanceof运算符的作用是什么?
  4. 类方法与实例方法在实际运用中各有什么优缺点?
  5. 面向抽象编程如何具体实现?
  6. 面向借口编程与面向抽象编程有何区别?
  7. 具体如何声明自定义异常类?
  8. 如何使用StringTokenizer对象?
  9. 监视器如何通过接口来实现?
  10. 不同子类创建的对象有何不同以及它们的应用是什么?
  11. 数据库是什么?如何使用JDBC技术进行数据库设计?
  12. 怎样使用wait()方法和notifyAll()方法?
  13. UDP和TCP是什么?
  14. 能绘制3D图形吗?
  15. 泛型类有什么优缺点?
  • Q:对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

    A:首先要养成每日写代码的习惯,利用好老师为我们提供的蓝墨云班课和博客园来督促自己不断的学习。通过大量的练习掌握java语言,达到老师对我们代码行数要求。跟紧老师的步伐,多学多问多思考。要做到像老师所说才能提高程序设计能力和培养计算思维:

迈出 「舒适区」,只在 「学习区」 学习,注意循序渐进,不能进入 「恐慌区」 。

把训练的内容切分成一小块一小块,分别进行针对性练习。 这些针对性的小块练习,要大量重复地进行

-- 引用自《做中学之乒乓球刻意训练一年总结》

只有通过大量的实践,在做中学,勤思考,常总结,才能实现目标。

在实践中发现问题,解决问题,在实践中提高,在实践中迭代,技能才能不断提高

-- 引用自《做中学之乒乓球刻意训练一年总结》

上一篇:Xcode使用心得01:断点中断问题和调整编译目标


下一篇:MySQL主从关系设置(转)