代码改变世界

20155335俞昆的第2次随笔

2016-12-18 22:04  yukun20155335  阅读(168)  评论(2编辑  收藏  举报

第二次随笔——从技能获取到语言学习
从技能获取到语言学习
————————————————————————————————————————

你有什么技能比大多人(超过90%以上)更好?
比如辨别方向,跟据标牌与地图识路的能力要强过大多人。别的确实没有。

针对这个技能的获取你有什么成功的经验?
来源于家中墙上挂着的地图,给我一种抽像而感性的认知,后来随着自己阅历增多,知道自己从哪走到哪的方向是什么?走多少路程,其实就是用心。

与老师博客中的学习经验有什么共通之处?
正如鲁迅所言,哪里有什么天才,他把别人喝咖啡的功夫用到写作上了,所以成就了他这样一位大文豪,说实话,锲而不舍,金石可镂。小小班的学生之所以厉害是因为他们重复一个知识点次数多,所以没有一定的时间积累是远远不够的。

你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?

还是照搬与照抄,听课也是强迫自己听的,课下只好又强迫自己看标准答案,甚至用笔记下或死记硬背,一定程度上,这样掌握不好c语言,没有带着自己的思考去学,其实自己也不会编,实验还是照搬,自己只做到了看懂。只能提醒自己用心去学java了。我明白过来,最好是抓住自己的兴奋点与最佳精神状态去攻克难点,而不是干别的,我认为这样效率最高

目前为止估算自己写过多少行C代码?理解的情况如何?

大约3000行程序,因为里面大部分都是重复的,好多语句理解方法都一样,但是明自道理的不大多。其中算法思路完全理解。

学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针:一个指向数组的指针
指针数组:一个数组,内部每个元素都是指针
函数指针: 一个指向函数的指针
指针函数:一个函数,其返回值类型是指针
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

[ ] 文件是计算机管理数据的基本单位。
[ ] 流是由字节构成的序列。
[x] 文本文件是基于字符编码的文件。
[x] - 二进制文件是基于值编码的文件,
[x] 文本文件是数字中的每一位都以ASCII码值的形式存储,而二进制文件是数字作为一个整体以二进制的形式存储。
编程操作两种文件是在对文件进行打开,处理{读取,写}和关闭三步。

学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

面向过程程序设计是一种以过程为中心的编程思想,分析出解决问题所需要的步骤,然后用函数把这些步骤实现,它是通过主函数来调用一个个子函数,其方法由顺序、选择和循环这三种基本控制结构来表达。

在C语言里面,什么是模块?你写过多个源文件的程序吗?

模块就是一个函数里包含的小程序,我现在还没写过多个源文件的程序。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
”高内聚“就是一个函数内语句间高度集中紧密联系,”低耦合“就是函数间联系不要太紧密,这样是为了一个程序出问题时候把损失降到最小,便于修改。
学过了C语言,你如何把数组A的内容复制到数组B中?

include <stdio.h>

include <string.h>

main()
{
char a[1000],b[1000];
printf("输入数组a:\n");
gets(a);
printf("输入数组b:\n");
gets(b);
strcat(b,a);
}
如何查找整数数组A中有没有数字5?

include <stdio.h>

main()
{
char a[100];
int i;
printf("请输入数组:\n");
gets(a);
for(i=0; a[i]!='\0'; i++)
{
if(a[i]=='5')
{
printf("该数组中含有5");
}
}
}
如何对整数数组A进行排序(从小到大,从大到小)?

include<stdio.h>

int datesort(int a[],int);
int Printf(int a[],int);

define N 20

main()
{
int i,a[N],n;
printf("想对几个数排序: ");
scanf("%d",&n);
printf("请输入 %d 个数字\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
datesort(a,n);
printf("经处理后的顺序为\n");
Printf(a,n);
}
int datesort(int a[],int n)
{
int i,j,temp;
for(i=0;i<(n-1);i++)
{
for(j=i+1;j<n;j++)
{
if(a[j]>a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
}
int Printf(int a[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
if(a[i-1]==a[i]&&i>0)
{
continue;
}
printf("%d ",a[i]);
}
}
写一个程序,统计自己C语言共写了多少行代码。

include<stdio.h>

main()
{FILE fp,fp1;
int cap=0, i=1;
char mid,filename[10];
printf("Input the filename like *.txt!\n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))NULL)
{printf("打不开这个文件 \n");
exit (0);
}
if((fp1=fopen("stdout.txt","w+"))
NULL)
{printf("Can not open the file!\n");
exit (0);
}
while(!feof(fp))
{
mid=fgetc(fp);
if(mid'\n') cap++;
}
fclose(fp);
if((fp=fopen(filename,"r"))
NULL)
{printf("打不开这个文件!\n");
exit (0);
}
fprintf(fp1,"%d ",i++);
while(!feof(fp))
{
if(fputc(fgetc(fp),fp1)=='\n')
fprintf(fp1,"%d ",i++);
}
printf("cap=%d \n",cap+1);
fclose(fp);
fclose(fp1);
}
你知道什么是断点吗?给出自己调试程序的例子。
断点就是设定一个点,然后运行程序时候到那个点就停住了,这时候可以进入函数内部一点一点一步一步观察程序运行情况,非常厉害。常用于解决逻辑问题中。

对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
我既然学习这门课,就一定要学好它,java水平不拖班级后腿,遇困难主动联系老师答疑。一般小程序会编译,而且方法要做到有效,而不过多耗费时间。每天坚持练习,不会的开始时可允许自己照搬和模仿,毕竟将自己定位为初学者,所以也不能妄下狂言,下学期编大约5000行程序,做到比c语言程序多,精,专。
“做中学”要求我要理论与实践相统一,有机结合基础上进行再创造。

毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
我相信在各行各业具有超强写作作能力的人车载斗量,自己就太一般,我认为自己很多时候用词不是很恰当,根据思路与逻辑的顺序体现出的语序也不太正确,哈哈。言归正传,既然我以后要进行公文写作,那就应该多请教有经验的同事,不厌烦反复与多次,就像之前说的,将其变为兴趣时候才能促使你去不厌其烦的坚持。