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