学习,学中做 ——20155215宣言
写在前面
我在本篇博客中回顾了自己C语言学习中的一些经历和体验,还了解了什么是“学中做”,对于如何更好地学习有了更深刻的体验。
我的技能
如果要问我有什么技能比身边的大多数人好的话,那我可能会想到是演讲与辩论。空口无凭,既然说自这些技能相对较好,那我总要拿出一些凭证来,能够在演讲比赛中获奖,能够成为院辩论队中的一员,我想,应该能够作为一定程度上的证明了吧。
我的第一次演讲经历应该是在小学三年级左右。那个时候参加比赛的自己其实是懵懵懂懂的,最后比赛的结果自然也是不值一提,但是这应当还是给自己埋下了一颗种子。后来慢慢地又有了一些类似的经历,然后就开始获奖了。
说实话,我觉得我在演讲这件事情上,不光收获了口语表达的能力,还锻炼了自己的写作能力,因为一个好的演讲者,他都有好的演讲内容,这些,也是对写作能力的一个锻炼。这些收获都让我觉得很值得,
辩论,则是源于热爱。日常生活中,大家并不会喜欢那种咄咄逼人的说话方式,这只会让人敬而远之。但是辩论场上则不同,这是一个可以让你理所当然地打断别人,否定别人,说服别人的地方。我很享受那种唇枪舌战的感觉,每打完一场辩论,我都会觉得痛痛快快酣畅淋漓。这也是为什么我喜欢辩论,也享受辩论的原因。也正是因为喜欢,所以我总是不放弃参加辩论赛的机会,抓住每一次能够锻炼自己的机会。看别人的辩论赛,揣摩他们的辩论技巧,从而提高自己的水平。
阅读了娄老师公众号上《做中学》等文章之后,再结合自己的经历,我觉得学习某项技能时,尤其是自学时,很重要的一点,就是自身的主观能动性。你想要达成什么成就,比如减肥,比如学英语,你首先就必须让这件事情成为你非常想去做到的事情,不管是哪种原因让你非常想去完成这件事,喜欢也好,为了自我提高也好。你有了主观强烈的意愿之后,自然就会想尽各种办法来提高自己的本项技能,这是第一点。其次,就是要能够持之以恒,没有事情是可以一蹴而就的,也没有事情是“三天打鱼两天晒网”还能完成的。你做一件事情,必须要明确的目标和计划,这样才能更好地去完成这些事情。就像娄老师为了减肥,给自己制定每天一万步的目标,然后为了保证能够做到,还建立了微信群,建立监督制度。我觉得娄老师使用的微信群的这个方法很有意思。最后,我们还应该要有足够的自制力。自我控制,是自我管理中最重要的一步,学会自控,才不会浪费时间和精力,才不会虚度光阴,才能够学有所成,不仅是针对在学校在课堂的学习,所有的事情都是一样的。
C语言
我学习C语言时,首先是老师在课堂上讲的内容,其次就是我自己课后的一个自学,有些不够理解的内容,我会在课下研读课本,温习重点,然后使用C语言题库,刷对应知识点的题目。我觉得题库对于我学习C语言来说,起到了很大的作用,他帮助我熟悉了很多编程的套路,从而达到熟练地编写基础程序的目的。但是在,C语言中的一个教训可能就是学习的不够扎实,满足于一知半解的程度,有时候只是为了应付考试,没有真正地学会,学懂。
我在大一下时题库刷了大概有200道题,再加上平时的各种练习和实验,以及这个学期的一些实验和练习,我大概写了有7000多行代码。基本的C语言程序能够理解,但是在指针,文件,以及结构体上可能会相对薄弱。
C语言中的相关概念,诸如数组指针,指针数组,以及函数指针,指针函数等,基本都能分清。
文件和流:
- 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
- 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
关于文本文件和二进制文件我不太能够区分,所以我了解了一下:
文本文件是基于字符编码的文件,
二进制文件是基于值编码的文件。
文本方式和二进制方式的最大区别在于文本方式对于'\n'换行符的理解不同,在DOS平台下,该字符会被展开成两个控制字符(相当于"\r\n"),在 ASCII字符集下是0DH,0AH,而在UNIX平台下,仅仅是,不会展开。而在二进制方式下,不管是什么平台,'\n'都是精确的。
而面向过程的程序设计指的是是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
C语言中的模块,大概意思就是将你要编的系统按功能进行划分,再对各个子功能进行编程。其中的每个子功能就可以叫模块。
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
要做到高内聚低耦合,重点并不是代码的编写,而是整体程序的设计阶段。
程序设计时,要先将要实现的功能列出来,然后设计模块。
模块设计后,再进行代码实现。
要做到高内聚低耦合,设计模块时需要做到:
1 各个模块之间的功能必须明确;
2 各个功能模块间实现的功能不可以有交叉;
3 不允许出现模块间的相互调用;
4 如果必须出现模块间调用,那么只允许单向调用,即A可以调用B,B不可以调用A。
复制:
#include <stdio.h>
main()
{
int a[10],b[10];
int i;
for(i = 0; i < 10; i ++)
b[i] = a[i];
}
查找
#include <stdio.h>
main()
{
int a[50];
int n,i,j;
printf("input n:");
scanf("%d",&n);
printf("input a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<n;j++)
{
if(a[j]==5)
printf("数组中有5!");
}
}
排序:
从小到大
#include <stdio.h>
#define N 100
int main()
{
int a[N],i,j,n,t;
printf(" Input n:");
scanf("%d",&n );
printf("Input a:\n");
for (i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for (i=0; i<n; i++)
{
for (j=i+1; j<n; j++)
{
if (a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for (i=0; i<n; i++)
{
printf("%d ",a[i]);
}
}
从大到小
for(k=0;k<n-1;k++)/*从小到大*/
{
for(j=k+1;j<n;j++)
{
if(a[j]<a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
关于搜索一共写了多少行代码,我不是很理解题目要求。理解上应该是写一个循环体进行计数,循环体内用IF-ELSE 进行判断。
断点指的是,你在某行代码处设置断点后,调试程序时,程序运行到该行代码时会自动停止然后就可以在这进行逐步调试了。
我曾经在编写C语言实验时使用过。
关于JAVA
回顾了自己整个C语言学习的过程之后,我发现我有很多的不足需要去完善,希望我能吸取C语言学习中的教训,更好地学习JAVA。能够更扎实地吸收JAVA的知识,实现我的目标。
公文写作
我曾经在暑假时在报社实习过一段时间,期间也发表过文章,觉得自己的写作能力尚可,但是如果是写正式的公文可能还会有所欠缺,所以,我觉得可以在未来的学习生活中增加公文写作方面的训练,提高自己的能力。