预备作业2
预备作业2
你有什么技能比大多人(超过90%以上)更好?
看到这个问题,我想了一下,好像我没什么技能比超过9成的人更好。。。自己掌握的大部分技能基本上属于中等水平,仔细想了想原因,总觉得是多方面的。举个简单的例子,小时候因为各种原因,我学习了长笛这个乐器,一直到初中前因为当时学业并不忙碌所以练习的时间比较多,在我五年级的时候就考到了6级,在我六年级的时候,虽然看到身边有些和我一样学习长笛的同学都去考9级了,但是由于自己实在不想再经历一次练习6级那样枯燥的过程便放弃了。后来上了初中以后,练习的时间好像变得越来越少,而且就算是有较多娱乐时间,也没有选择用来练习长笛,慢慢地,我也感觉到自己的长笛水平已经远不如以前了。最近,我在寝室里听到了16级的学妹们的乐器声,让我想起了被自己放到角落里的长笛。。。
针对这个技能的获取你有什么成功的经验?
毕竟我没有这个技能。。。我只能分享一下这学期我对于英语听力的练习经历。因为当时考英语四级的时候,我的总分听力是最差的一部分,当时考虑到这学期还要考六级,我便下定决心好好练习一下英语听力,之后我就下载了扇贝听力APP在手机上,监督自己只要睡前想玩手机就听听力。在之后的两个月中,每当我睡前拿起手机,我就会先打开扇贝听力,努力劝自己先把该做的听力练习做好后再玩耍。通过两个月的练习,我便把六级听力练习中句子练习听完,几套真题听力做完,具体成果见下图:
虽然我不确定最终的六级考试听力是否还是我最糟糕的一部分,但是这种坚持的练习还是让我受益匪浅的!
与老师博客中的学习经验有什么共通之处?
在英语听力练习的过程中,我有两点体会比较深刻。
- 第一点是坚持,正如老师的博客中所说的,一天走几万步不是一件难事,难的是天天走一万步。对于听力我感觉也是一样的,一天听2个小时并不是一件难事,难的是每天都坚持听40分钟。在晚上睡觉前1个小时,每当我想玩手机的时候,我就和自己说先把听力听了,听完之后再刷微博,不断地逼迫自己先选择把该做的事做了对自己的坚持也是很有好处的。
- 第二点是循序渐进。在最开始的时候我就选择了六级的篇章听力,其实这是很不好的,因为自己的听力水平较低,几遍听下来,对于文章的基调都没听懂,这对我的自信心和毅力打击都比较大。于是,之后我就果断放弃篇章听力,选择了句子训练,先从基本的句子开始听,句子的难度也是逐步增加,这样不仅不会对自我的打击太大,还有利于自己继续坚持下来,绝不能让自己进入恐慌区。
- 第三点是学会总结。正如老师所说,学习提升要有反馈。在听力的过程中,我发现有些连读是有规律的,而因为毕竟英语不是我们的母语,我们的日常发音很少注意连音,因此最开始的时候,明明是很简单的单词,但是只要一连读我就听不懂了,通过多日的听力,我发现了这点,并同时记住常见的几个连音的发音,在之后的听力中,虽然有许多连音我还是听不出来,但是比起之前我还是能听出几个连音,有了一点点的长进。
有关C语言学习的调查
1.你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
对于C语言的学习,我觉得我还是学的比较认真的。对于作业,我98%以上都是自己独立完成的,当时老师让我们每天在作业系统上编15道C语言的题目,因为出于当时对C语言的兴趣,我还是坚持得比较好,最终的系统得分也上了4000分,总共编了大概400道题左右。对于课堂上的实验,我们基本上都是课下进行编程,课堂上的实验课基本用来考试,课下的编程我一般都是先根据自己的思路编写出来,刚开始学的时候,难免有许多错误,所以当时学习看系统提示的错误也很重要,它可以让我有目的性地去寻找我的出错点,当然实验上也会遇到一些瓶颈,我一般会选择上网看其他人的编程方法,分析理解后自己再进行编写,一般这个过程比较耗时间,对我的耐心与理解力有较大考验。对于教材的使用,我基本上不会只对着看,使用教材的同时基本上都会打开codeblocks进行编写,因为但看教材实在是无聊,坚持看的时间一般都很短,而且有些细节性的东西如果不是自己亲手编基本上都不会注意。
2.目前为止估算自己写过多少行C代码?理解的情况如何?
目前为止,估计自己总共编了450道题左右,题目难的行数较多,简单的行数自然也比较少,但是在这些题目中,相似的题目也占了一定的数量。但在这学期的信息安全数学基础的三个实验中都是用C编程的,个人觉得三道题难度都属于中上,需要不断进行调试,对自己C的水平是很好的锻炼。理解情况而言,基本的函数,数组,指针,结构体都会使用,但是对于链表,文件方面因为当时老师讲得较快自己这方面针对练习做得也比较少,因此这两方面相对而言比较薄弱。
3.学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
我的理解是数组指针指的是一个指向数组的指针变量,但是指针数组是指一个数组,里面存放的每个变量都是指针;类似的,函数指针指的是指向子函数首行地址的一个指针变量,但是指针函数指的是一个函数,但他的返回值是指针。我的总体感觉是这四个概念前两个字是定语,后两个字才是主语。。。不知道这个理解对不对。。。。
4.学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
通过相关资料的查询,我的理解是文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。二进制文件是按二进制的编码方式来存放文件的。
5.学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
我不是很清楚面向过程与面向对象的区别是什么。C语言的模块化设计给我留下比较深的印象,特别是在编程的时候,把一个过程写成一个子函数的形式,让主函数进行调用,这种编程的思维感觉比较好。目前为止,我个人对于C语言解决问题方法的理解是首先必须要知道算法是什么,在确定算法的基础上,知道程序的流程是什么,把这些流程分成一个一个的任务,这些任务在子函数中去解决,而把这些子函数串起来与输入输出这些事情让主函数进行解决。
6.在C语言里面,什么是模块?你写过多个源文件的程序吗?
我觉得模块就是专门来解决具体一个任务的程序的集合,这个任务可能是一个程序中若干个任务的其中一个。我没有写过多个源文件的程序,因为大一下的C语言课上老师没有进行相关方面的讲解,自己课下也没有进行相关的学习,在这方面希望老师可以多多指教。
7.学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
“高内聚,低耦合”的官方解释是耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。耦合指一个软件结构内不同模块之间互连程度的度量。对于低耦合即一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。
我个人对于“高内聚,低耦合”应用于C语言的理解是程序中每一个模块都要解决一个具体的问题,二这些模块之间尽量相互不要有太多的影响,连接的地方尽量地少。
8.学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
数组A的内容复制到数组B中:
一维数组
int a[100]={0},b[100],i;
for(i=0;i<=99;i++)
b[i]=a[i];
二维数组
int a[100][100]={0},b[100][100],i,j;
for(i=0;i<=99;i++)
for(j=0;j<=99;j++)
b[i][j]=a[i][j];
如何查找整数数组A中有没有数字5:
int a[100]={1,1,1,5,0,0,0,0},i;
for(i=0;i<=99;i++)
if(a[i]==5)
printf("此数组中有5");
如何对整数数组A进行排序(从小到大,从大到小)
由小到大:
int a[100]={1,1,1,5,0,0,0,0},i,j,k;
for(i=0;i<=98;i++)
for(j=i+1;j<=99;j++)
if(a[i]>=a[j])
{
a[i]=k;
k=a[j];
a[j]=a[i];
}
由大到小:
int a[100]={1,1,1,5,0,0,0,0},i,j,k;
for(i=0;i<=98;i++)
for(j=i+1;j<=99;j++)
if(a[i]<=a[j])
{
a[i]=k;
k=a[j];
a[j]=a[i];
}
9.写一个程序,统计自己C语言共写了多少行代码。
#include <stdio.h>
int main()
{
int ch,hangshu,xuanze;
FILE *fp;
char name[100];
printf("请输入需统计行数的文件名:");
while(scanf("%s",name) == 1)
{
fp = fopen(name,"rt");
if(fp == NULL)
{
printf("无法打开文件:%s\n",name);
printf("是否需要继续统计?需要请输入1,不需要请输入0");
scanf("%d",&xuanze);
if(xuanze==1)
{
printf("输入文件名:");
continue;
}
else
break;
}
hangshu = 0;
while((ch = fgetc(fp)) != EOF)
{
if(ch == \'\n\') hangshu++;
}
fclose(fp);
printf("%s文件的行数是%d\n",name,hangshu);
printf("是否需要继续统计?需要请输入1,不需要请输入0");
scanf("%d",&xuanze);
if(xuanze==1)
printf("输入文件名:");
else
break;
}
}
10.你知道什么是断点吗?给出自己调试程序的例子。
断点是指我们可以在程序中的某一个地方设置一个断点,在调试的时候,程序到该处时就会停下来。我自己在这学期信息安全数学基础的“中国剩余定理”、“勒让德符号”、“生成元的求解”中都调试过相应的程序。
对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
对于java这门课,我希望自己能在学会java基础知识下学会自己独立地编写一个规模较大的、条理化的程序,培养自己深入思考的能力。对于通过刻意训练来提高程序设计能力和培养计算思维这方面,我个人的想法是我可以给自己定一个目标,要么每天坚持编写5道java题(3道难度中等偏下,2道难度中等偏上,希望老师可以提前给我们筛选一下),要么每天坚持阅读与算法、编程有关的优秀书籍,不仅要看作者的实现方法,更要自己主动地进行思考。对于“做中学”,我的想法是首先自己要学会坚持下来,在坚持的基础上不断地去对每天的练习进行反思与总结,只有在每天不断地进阶式学习中才较有可能实现我对java这门课的目标。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
我觉得自己的公文写作能力属于中等水平,初高中写的文体基本上是记叙文与议论文,在大一期间,系里院里都有举办相关的活动来指导与培养大家的公文写作能力,目前我也能根据要求进行写作,懂得公文写作一定的格式与套路,但是写后的质量还有很大的提升空间。我个人认为对于写作而言,一定量的阅读是必不可少的,正如语文老师所说,读是写的基础,不读是没有办法写的,读得不够是没法写好的。因此,我希望自己在之后的学习生活中可以每天坚持看一些与公文写作相关的文章、报纸和杂志,学会模仿优秀的公文进行写作,掌握常用的公文用语并在阅读中提高理解能力与写作水平。