学习基础和C语言基础调查
一、技能学习经验
-
有什么技能比90%的人更好?
说来惭愧,我并不认为自己有什么技能能超过90%的人。我从小喜爱水彩画和推理解谜,在自己一些闲余时间的练习与学习下,应该可以超过75%的人。
-
针对技能谈一下成功的经验。
- 兴趣是最好的老师,我从不认同“学海无涯苦作舟”这句老话,好的兴趣会促使你主动地去学习,不仅不觉得苦和累,反而是一种放松,甚至能从中获得成就感和无穷乐趣。
- 刻意地专项提升自己的能力。说来有趣,绘画完全是我自己闲来无事与同学们一同玩乐时的兴趣,不知怎么就钻研在其中,自己反复地练习某样东西或部位的画法,有朋友问我:"你怎样把人物的两只眼睛画得一样大、对称?"我告诉她,没有特殊的方法,多练、多观察。而推理则是因为加入了一个社团,为了更好地举办活动,花了很多心思学习各种方向地推理常识,并锻炼自己的观察力。
- 发现问题,请教专家。很早就发现自己的绘画水平停滞不前,逐渐就意识到,是自己的基础水平跟不上了(因为是兴趣一直以来都是自己琢磨画着玩,并不专业)。于是趁着高考完的暑假赶紧报了一个素描班,老师一针见血地指出我的线条不流畅,要有方向地勤加练习,纠正过来多线条叠加的坏习惯。
-
与老师博客的共通之处
我在学习的过程中发现自己的不足之处,就想办法学习和解决,这是在学习中思考的体现。我在绘画中反复练习简单的步骤,这是量变引起质变的体现。我发现自己基础跟不上后,寻求专业老师的帮助,这是我学习的刻意训练。我比较擅长的都是效果显著(绘画能直接体现出水平的提升、推理能力则体现在做推理题上,这是及时反馈。但我还不知道其他,尤其是较为枯燥的学习能看到明显反馈的方法,这也导致了我在很多事上半途而废,成效不高。
二、有关C语言学习的调查
-
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
我将考试部分的教材通读了2遍。先把课本上的代码照着敲一遍,尝试自己理解它的意思。每看完一章教材,就在题库里刷相应的题。但是我阅读、理解代码较多,自己主动思索解决方案和动手量却远远不足,导致我现在能看懂代码,拿到一个问题却不知从何下手。
对C语言的学习起初有很浓厚的兴趣,因此很快阅读了教材,但自己解决一类新的实际问题时,却发现被自己的数学基础拖了后腿,这让我很是沮丧,在很多问题前手足无措。导致我后期练习不足,缺乏主动思考解决方案的能力。 -
目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
总的代码应该有2000-3000行,但就有效地训练量来看,完全依靠自己思考动手的代码应该只有1500行左右。教材上结构体部分理解但不会应用,文件和链表则没有学会。(应该算是我为了应付考试的损失吧)。在自己能熟练地应对一类问题时,可以停止重复这类问题的练习,开始推进新的学习进度。
-
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
能够分得清。数组指针:存放着一个数组的首地址的指针;指针数组:数组中的所有元素都是指针类型的。指针函数:返回类型是某一类型指针的函数;函数指针:指向某一函数的指针变量。
-
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
不明白。。
参考文件和流得知:文件(FileStream)是流(Stream)的一种,或者说是流的派生,主要指存放于硬存储器的二进制序列。且流是读取文件的一种方式,假如文件太大,用流可以“分段操作”,这样可以有效减少当前的内存占用。
参考文本文件及二进制文件得知:文本文件即ASCLL文件,在磁盘中存放时,每个ASCLL码译出的字符对应一个字节;二进制文件也称“流式文件”,每8个2进制码占一个字节。例如" "在文本文件中被认为是结束符,而在二进制文件中则会当成两个字符读取。 -
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
他是一种以过程为中心的编程思想。分析问题解决的步骤,然后用函数将这些步骤一一实现,运行时依次调用。
-
在C语言里面,什么是模块?你写过多个源文件的程序吗?
以函数为小模块,文件为中模块,库为大模块,分级实现模块化。没有T T。。
-
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
我理解为模块内代码关联性强,模块间关联性弱。尽量少重复同样的代码。
-
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
数组A复制到数组B
#include <stdio.h>
#include <stdlib.h>
#define N 100
void find(int a[],int n);
void max(int a[],int n);
void min(int a[],int n);
int main()
{
int a[N],b[N];
int n,i;
printf("How many numbers?
");
scanf("%d",&n);
printf("Please input numbers:
");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];//数组复制
}
find(a,n);//查找数组中是否有5
max(a,n);//从大到小排序
for(i=0; i<n; i++)
{
printf("%d ",a[i]);
}
printf("
");
min(a,n);//从小到大排序
for(i=0; i<n; i++)
{
printf("%d ",a[i]);
}
return 0;
}
查找数字5
void find(int a[],int n)
{
int i,m=0;
for(i=0;i<n;i++)
{
if(a[i]==5)
{
m=1;
break;
}
}
if(m==0)
{
printf("no find
");
}
else
{
printf("find 5
");
}
}
从大到小排序
void max(int a[],int n)
{
int i,j,m,temp;
for(i=0;i<n;i++)
{
m=i
for(j=i;j<n;j++)
{
if(a[m]<a[j])
{
m=j;
}
}
if(m!=i)
{
temp=a[i];
a[i]=a[m];
a[m]=temp;
}
}
}
从小到大排序
void min(int a[],int n)
{
int i,j,m,temp;
for(i=0;i<n;i++)
{
m=i
for(j=i;j<n;j++)
{
if(a[m]>a[j])
{
m=j;
}
}
if(m!=i)
{
temp=a[i];
a[i]=a[m];
a[m]=temp;
}
}
}
-
写一个程序,统计自己C语言共写了多少行代码。
不会写这个程序,我尝试着阅读了江振思学长的博客,思路大概是查找并打开文件格式为".c"的文件,去掉空行、制表符等内容,统计行数。。
-
你知道什么是断点吗?给出自己调试程序的例子。
断点可以使程序运行到断点处暂停,并进行单步调试查找错误。我用这个办法查找过错误,印象中有一次在for循环中查找错误,单步调试了好久才查出错误。。可能对断点应用理解还不够,浪费了好多精力。
三、参考怎样快速阅读一本书,快速阅读一下云班课中有PPT,每章提出一个问题
Q1:Java中的类是否与C语言编程中函数相类似?这是否是结构化的思想?
Q2:我查找到关于Java引用型变量的解释中解释道:引用类型变量里面存放的是数据的地址。这是否与指针的概念相同?
Q3:在用各种语法编程时,我认为利用的还是面向过程的思想。Java面向对象程序设计的特点体现在什么方面?
Q4:创建对象是必须要包括对象的声明和为声明的对象分配变量两步吗?他们是紧挨着写的吗?是否与C语言函数声明类似?
Q5:子类不能继承多个父类,能否由爷爷类继承给父类,再继承给子类?形成多重包含关系?
Q6:不明白抽象类(abstract类)与接口之间的关系。此外抽象方法与接口又有何关系?
Q7:异常类是否可以用if语句来处理异常?
并不擅长速读,,看到这里脑子可以说是非常爆炸了T T 感觉提的问题越来越蠢..有时候ppt要看好几遍才能大概看懂,只有概念没有实际操作感觉太抽象了。。后面几章的问题我尽量提,估计要好好梳理一下速读的内容。
Q8:StringBuffer可以实现实体的变化,为什么还要保留Sting类?
Q9:如何将类、窗口、组件、布局等内容结合联系起来?
Q10:不同类型的流是否对应不同类型的类?他们是怎样对应的?
Q11:连接数据库时会将用户名和密码编入代码,其他人经过反编译是否就可查看数据库中内容?安全性是否可靠?
Q12:线程的中断与恢复为什么可以节省系统的开销,不会耗费更多的时间来使他中断又重新排队等待cpu分配吗?
Q13:互联网网址是不是运用了Java的网络编程?
Q14:是否可以用Java制作一个类似于photoshop的软件?
Q15:假如没有泛型,链表、散列映射的数据结构还能正常建立吗?如果能,会有什么缺陷吗?
四、对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
我希望在一个学期的学期中能编写一个简单的软件程序,比如闹钟或者备忘录。在阅读课本知识后,寻找一些相应课题或者简单项目,在自主查找知识和思索解决方案的过程中学习并提出新的疑问,尽量多与老师沟通交流,对编程语言和计算机有更深的理解。