20155313 预备作业二
你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处?
说到一个比90%的人要强的技能,我一下子很惆怅,说起来,从小家长就要求我全面发展,德智体美琴棋书画样样精通,就像唐伯虎那样的四大才子,而品行又得和孔孟比肩,所以最后也是落下个门门不精的结局。但是,毕竟在望子成龙的母亲督促下花了比别人更多的精力与钱财,如今至少还能拿得出一手尚且能登大雅之堂的钢琴作为一项技能。至于从这项技能中所学到的,如今已经长大成年的我,还是不得不感谢我的母亲,如果没有她的督促,童年非常贪玩的我可能也不会有这个优雅的技能,不过我自己在学习过程中的坚持也占了一小部分功劳,所以我想,坚持是很重要的。我们的坚持或许基于兴趣,也或许基于传承,但是如今在电科院的我们,作为机要密码事业的接班人,我们的坚持不再为了个人,而是为了机要密码事业,为了我们国家的安定与发展。因此,我认为无论是在今后的学习还是未来的工作中,坚持才是我们个人还是集体发展的根本力量。老师的学习经验中,减肥过程中的坚持确实与我钢琴学习的过程有很大的共同之处。众所周知,吃胖难,减肥更难,而减肥最最最关键的一点就是:坚持。老师减肥时的坚持与我当时练琴时的坚持都是在自己潜意识极不情愿的情况下进行的,但是,我们为了达成某个目标,我们告诉自己:要坚持下去。也许很多人说过这句话,但是很少人成功了,而成功的人,他们收获了成果,收获了坚持带来的坚定信念。所以,如果你有梦想,请坚持下去。
有关C语言学习的调查
-
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
上学期C语言的任课老师徐老师选择的教学方法是:作业方面用的是C语言作业系统,每天选择15个以内的题目作答并提交,正确就有分数;几次实验变成上机考试,这也是一种督促我学习的方法;教材主要提供一些定义和基础算法,主要还是依靠老师上课讲的内容学习新知识。通过一学期的学期,我认识到任何知识的获取都不可能是不劳而获的,需要日积月累的付出。在接下来的学习中,我会再努力一点,争取做到完成每日任务。
-
目前为止估算自己写过多少行C代码?理解的情况如何?
前几章学习的内容相对简单,类似循环,判断之类的,每个简单程序20行,后几章函数、指针、数组复杂程序每个算做70行,在作业系统中完成的程序大致超过3000行。前几章学习任务相对轻松,提交的程序都是自己一行一行打上去的,后几章尤其是数组的使用对我来说有点复杂难懂,所以参考了部分网上的程序,理解程度没法达到百分之百。
-
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针:指向数组的指针
指针数组:存储指针的数组
函数指针:指向函数的指针包含函数的地址
指针函数:函数声明其返回值为某个指针时,给函数返回地址
-
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
文件:是计算机管理数据的基本单位,同时也是是应用程序保存和读取数据的一个重要场所。
流:是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
文本文件:也称ASCII文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
二进制文件:二进制文件是按二进制的编码方式来存放文件的。
区别:一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'\n',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
-
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
个人理解“面向过程程序设计”是得到设计任务时先充分理解自己要做的内容是什么,然后将每个小任务完成,再整合到主线中完成。
-
在C语言里面,什么是模块?你写过多个源文件的程序吗?
依照功能,将一个程序拆分成多个部分,分步完成后再整合到主程序中。截止到目前的学习,我还没尝试过多个源文件的程序。
-
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
高内聚:一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
应用:将一个大程序分割成多个模块,模块与模块之间联系紧密,具有高度相关性;而每个模块所负责的功能尽可能细化以保证错误更少的出现。
-
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
数组A复制到数组B:
#include <stdio.h>
void main()
{
int n,i,a[100],b[100],j;
printf("Input n:");
scanf("%d",&n );
printf("数组A的元素:\n");
for (i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
printf("数组B的元素:\n");
for (j=0; j<n; j++) {
b[j]=a[j];
printf("%d",b[j]);
}
}
在A中查找数字5:
#include <stdio.h>
void main()
{
int a[30],i,b=0;
for(i=0;i<30;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]==5){
b=1;
printf("数组A中第%d个元素是5",i);}
}
if(b==0)
printf("数组A中没有元素5\n");
}
对A进行排序(从小到大):
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
对A进行排序(从大到小):
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
-
写一个程序,统计自己C语言共写了多少行代码
#include <stdio.h>
void main()
{
char str[4096];
int StringBracket(char *str)//删除空格和制表符
{
int i,j,len;
len=strlen(str);
j=0;
for(i=0; i<len; i++)
{
if(str[i]!=' ' && str[i]!='\t')
{
str[j]=str[i];
j=j+1;
}
}
str[j]='\0';
if(str[0]=='\n') return 0;
else return j;
}
void main()
{
int all=0,zs=0,kg=0,j,k=0;
FILE *fp;
char filename[100];
printf("\nEnter a filepath/filename:\n");
gets(filename);
fp=fopen(filename, "rt");
if(fp==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(str,4096,fp)) //读取一行,并判断文件是否结束
{
j=StringBracket(str);
if(k==0)
{
if(j==0) kg++;
else if(str[0]=='/')
{
if(strstr(str,"/*")) k=1;
if(strstr(str, "*/"))k=0;
zs++;
}
}
else
{
if(strstr(str, "*/"))k=0;
zs++;
}
all++;
}
fclose(fp);
printf("filename:%s 代码行数:%d 注释行:%d 空行:%d",filename,all-zs-kg,zs,kg);
}
-
你知道什么是断点吗?给出自己调试程序的例子.
断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。
调试方法:
1)设置断点:在程序代码编辑框(能打代码的地方)外双击,就成功设置了一断点(可以看到有一点在那里)。
2)开始调试按F5,程序运行到断点之后,按F10就会执行当前程序行。
对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
相比之前的C语言,因为再以前没有接触过任何的编程类语言的学习,而且本人在去年的学习中并不积极主动,所以错失了很多提高自己的机会,去年C语言的成绩也不是特别的好。但是,一年的荒废让我意识到了我来到大学需要什么,让我能正视自己的人生,谋求更好的发展。而本次Java语言的学习给了我一次重新认真对待语言类课程的学习机会,本次课程中,我会更加积极主动地去完成一些课外的学习,将大学的自主学习机会更多的进行利用。同时,Java语言的娄老师的教学风格是我之前从来没有遇见过的,我很欣赏不拘泥于传统教学套路的老师,并很期待在以后的课程中与娄老师有更多的交流,在交流中学习与成长是我很向往的一种学习方式。刻意训练是快速学习的一种方式,为了应对考试或是检验学习成果,从小到大我们确实经历了很多刻意训练,然而,不同刻意训练的方法也会造就不同的结果,因此,选择合适的方法是有效进行刻意训练的思路。我认为,去年C语言学习中,老师通过让我们刷每日在线题库来进行的刻意训练容易导致两级分化严重,认真学习的同学则会高质量地完成老师的任务,而不认真的同学则会进行不同程度的偷工减料,因此也导致上课时老师检验学生学习成果时参差不齐。因此,我认为本次的Java学习中,我们是否可以采取在一定期间内完成一个较为大型的独立作品为我们平时练习的标准。这样无论是对掌握Java语言实用性学习、连续性学习以及自主性学习都有一定的帮助。高中时期我们就很忌讳题海战术,即多不意味着行,同样的,我认为将Java语言的学习落于实际运用会更大程度地帮助我们深入地了解与使用这个强大的语言程序。所谓“做中学”在我们刚结束的HDL的实验考试中我已经粗略地领略到。这次HDL的考试中,我抽到的试题中使用了两个我之前学习中完成没有使用过的硬件,4X4矩阵键盘与蜂鸣器。但是,老师既然出了这个题目必然有他们的道理,于是,在之后两个星期的编译过程中,我和合作的同学对这个“新面孔”进行了不停地尝试,期间也请教了老师(当然老师知道是考试,也不会透露太多的信息)。最后,在各方共同努力下,我们成功按要求编译调试出了正确结果,这给我很大的成就感,同时也领悟了“做中学”的有趣之处。“做中学”需要我们投入更多的耐心与精力,它不是按部就班的学习,这点与娄老师向我们传达的学习精神相同,所以,要保持一个积极的学习心态是通过“做中学”完成目标的关键。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
我觉得公文写作分为大体的两个方面,一个是形式,一个是内容。对于形式来说,因为我还没有聚焦公文写作的写作格式与文本格式,所以可能在形式方面并不是特别规范,这同时也是我们大学生普遍缺乏的一种能力,同时也是一种很重要的公务员基本素质。因此,在未来的学习生活中,我应该开始着重学习公文写作中的形式部分。至于如何提高,我认为更多的应该在“做中学”,即多练习多使用,在平时实验课中写实验报告的时候,在学生工作中写策划的时候,在帮老师进行资料整理的时候多注重格式的书写的。另一方面,公文写作中的重点还是公文的内容。当今社会总是倡导要基于传统但不拘泥于传统,同样的,公文写作也是如此,我们基于传统,但是要在传统上发展,无论是形式还是内容,要敢于提出新颖的想法。同时,为了达到这种高度,我们应该在平日里积累更多的经验,并勤于思考、频于交流,思考带来深度,交流带来宽度,我相信只要做好这几点,我们的公文写作办事能力都会有很大的提升。