足球运动训练心得及经验分析-c语言学习调查

在准备预备作业02之前,我参考娄老师的提示,阅读了《[做中学(Learning By Doing)]之乒乓球刻意训练一年总结》一文。
在文章描述的字里行间,给予我的印象是系统、负责,娄老师重拾乒乓技能的经历让我联想到了自己。
以下分享我进行足球运动的经验和反思。


· 背景简介

在初中二年级的某个下午,我在学校操场上接触到了足球,并且很快的喜欢上了这项运动。
作为一名爱好者,这一项竞技体育,让我感受到了运动的快乐。
很快,球场上技术的缺陷让我明白了训练的重要性,当然,课余训练也局限倒脚和射门。但即使是基础而简单的训练也让我受益匪浅
初中毕业那年的暑假,三两好友约上一起参加了当地组织的市级中学生足球比赛。真正站在赛场上相较娱乐是另一种体验。团队压力以及高比赛强度的的确确让我的技术得到提升。
进入高中后,每天下午踢足球成为了习惯。加入了校足球队和业余足球队后,比赛机会也更加频繁了。我通过不断的练习逐渐提升水平。
另外,闲时观看职业足球联赛、阅读足球杂志、玩足球类电子游戏让我认识到了阅读比赛,分析比赛战术,学习攻防套路的重要性。

· 收获的经验

足够的训练时间是个人能力提升的前提,“一万小时”理论绝非纸上谈兵。

处于一定的竞争压力与强度的环境下,更能促进水平提高。

掌握正确的训练方法能够少走弯路。

通过不同渠道的比照与验证能够使能力更加综合全面。

拥有一个互相鼓励、良性竞争的氛围,能够彼此激励。

· 自身存在的不足

抗压能力不够。

比赛强度与个人的失误率成正相关。侧面反应了技术短板的存在。

训练计划不完善。

就足球这项运动而言,还有类似球感等许多方面缺少肌肉记忆的锻炼。这个问题一定程度上降低了个人的抗压能力。应正确使用训练器材制定适合自己的刻意训练。

基础能力缺乏更新。

思考了娄老师在乒乓球刻意训练上的经验,我认为通过摄像-分析-改进,逐渐雕琢自己的技术动作是一个非常好的方法,值得借鉴。
平时虽然偶尔会浏览教学集锦,但还未量化,制定训练总结是一个可行的对策。

视野不开阔。

在比赛进行过程中,对比赛当前进行状态分析还不到位,无法准确控制比赛节奏。



对c语言学习调查的反馈

·如何学习c语言

模仿参考书上的代码然后逐步理解代码含义。在无法实现任务功能时,求教老师或和同学探讨。通过举例模拟程序运行过程,核对并验证程序。
完成后思考代码是否有繁杂冗长部分。偶尔思考优化程序运行复杂度,修改完善代码,但的确次数不多。借鉴优质代码写法。

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

大一下学期开始,总体代码行数方差较大,从一开始的“hallo world”到最近230行的中国剩余定理算法,行数均值大概在40~50行,程序总数应该180左右,代码总量应该在7500行。(摊手)
课程学习方面,在二维数组、链表、文件方面明显存在弱势,关于指针,理解得不够透彻。

·学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗

经过一个学期,概念确实模糊了,故参考了《c语言程序设计(第3版)》

数组指针:

int (*p)[n];//定义一个指向n个元素 一维整型数组 的指针变量

指针数组:

char *p[n]//定义一个 有n个字符型指针 的字符指针数组

函数指针:

int (*function)(int a,int b);//定义一个指针变量,指向一个2个整型形参、返回值为整型的函数,在程序中 通过调用function函数名来调用函数

指针函数:

int *function(int a,int b);//定义一个函数,有2个整型形参并 返回整型指针/地址

·学过了C语言,你明白文件和流的区别和联系吗 如何区分文本文件和二进制文件 如何编程操作这两种文件

抽象基类 Stream 支持读取和写入字节。
所有表示流的类都继承自 Stream 类。 Stream 类及其派生类提供数据源和存储库的常见视图,使程序员不必了解操作系统和基础设备的具体细节。
流涉及三个基本操作:
· 读取 - 将数据从流传输到数据结构(如字节数组)中。//可以将数据从流传输到数据结构(字节数组)中,进而保存到文件中
· 写入 - 将数据从数据源传输到流。//文件可以作为流的一个数据源
· 查找 - 对流中的当前位置进行查询和修改。
文件是一个由字节组成的有序的命名集合,它具有永久存储。
在处理文件时,你将处理目录路径、磁盘存储、文件和目录名称。
相反,流是一个字节序列,可用于对后备存储进行读取和写入操作,后备存储可以是多个存储媒介之一(例如,磁盘或内存)。
正如存在除磁盘之外的多种后备存储一样,也存在除文件流之外的多种流(如网络、内存和管道流)。
参考Microsoft Developer Network
https://msdn.microsoft.com/zh-cn/library/k3352a4t(v=vs.110).aspx

c语言文件有两种类型:文本文件(也称ASCⅡ码文件)和二进制文件。起差别在于储存数值型数据的方式不同。
在二进制文件中,数值型数据是以二进制形式储存的;而文本文件中,则是将数值型数据的每一位数字作为一个字符以其ASCⅡ码的形式储存的。
操作方法:

...
FILE *fp;//定义指向FILE结构类型的指针变量
if((fp=fopen("demo.txt","w"))=NULL)
//判断以只写方式打开文本文件是否成功,操作二进制文件是将后缀替换为.bin
{
printf("Failure to open demo.txt!\n");
exit(0);
}
...
fclose(fp);//关闭由函数fopen()打开的fp指向的文件
...

参考《c语言程序设计(第3版)》

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

我认为面向过程程序设计,就是“步步为营”
1.将项目划分为一系列流程
2.分步实现每一种情况的要求
3.将各个部分整合按逻辑顺序整合

按照思路是下棋的流程进行编程, 也就是我们通常习惯使用的自低向上, 逐层精确的编程思想。
这种编程的主导思想是在设计时就把实现的细节考虑好了, 从而在低层就实现了程序满足应用软件要求的目的。
参考博客fuleying http://www.cnblogs.com/fuleying/archive/2011/08/09/2131647.html

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

在C语言中,我们可以将一个.c文件称为一个模块(Module);
所谓模块化开发,是指一个程序包含了多个源文件(.c 文件)以及头文件(.h 文件)。
参考c语言中文网 http://c.biancheng.net/cpp/u/c16/

目前为止,我还没有在一个程序调用过多个源文件。(捂脸)

·学过了C语言,你知道什么是“高内聚,低耦合”吗 这个原则如何应用到高质量程序设计中

耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

高内聚低耦合能够提高模块的独立性,为设计高质量的软件结构奠定基础。
参考博客my memory http://www.cnblogs.com/robnetcn/archive/2012/04/15/2449008.html

·学过了C语言,你如何把数组A的内容复制到数组B中 如何查找整数数组A中有没有数字5 如何对整数数组A进行排序(从小到大,从大到小) 写出相应的程序。

#include <stdio.h>
#include <stdlib.h>

int enter(int *a)//输入数组函数
{
    int i;
    printf("Please enter the number: \n");
    for(i=10; i; i--)
    {
        scanf("%d",a);
        a++;
    }
}

int find(int *a)//查找数字5函数
{
    int re=0,i;
    for(i=10; i; i--)
    {
        if(*(a+i-1)==5)
            re=1;
    }
    return re;
}

int copy(int *a,int *b)//将数组a复制给数组b
{
    int i;
    for(i=10; i; i--)
    {
        *b=*a;
        a++;
        b++;
    }
}

int sortdown(int *a)//降序算法(升序算法将>替换为<)
{
    int i,j,k,temp;
    for(i=0; i<9; i++)
    {
        k=i;
        for(j=i+1; j<10; j++)
        {
            if(*(a+j)>*(a+k))
                k=j;
        }

        if(k!=i)
        {
            temp=*(a+k);
            *(a+k)=*(a+i);
            *(a+i)=temp;
        }
    }
}

int main()
{
    int from[10],to[10],i;//定义数组、计数变量

    enter(from);//输入数组from

    if(find(from))//判断判断数组中是否存在5
        printf("5 is exist!\n");
    else
        printf("no exist!\n");

    copy(from,to);//将数组from复制给to

    sortdown(from);//降序排列from,输出from
    for(i=10; i; i--)
    {
        printf("%d  ",*(from+10-i));
    }

    return 0;
}

·写一个程序,统计自己C语言共写了多少行代码。

将代码储存到项目文件下的文本内,用以下程序计算

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch;
    int count=1;
    if((fp=fopen("demo.txt","r"))==NULL)//以只读方式打开代码文本文件
    {
        printf("Failure to open demo.txt!\n");
        exit(0);
    }
    while((ch=fgetc(fp))!=EOF)//按字符读入文件
    {
        if(ch=='\n')//换行时计数加一,忽略注释和空行
            count++;
    }
    printf("%d",count);
    fclose(fp);
    return 0;
}

·你知道什么是断点吗 给出自己调试程序的例子。

INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断。
INT 3 (或者DebugBreak(),或者Debugger.Break())指令是我们自己在代码里面硬编码进去的,因此我们在Visual Studio里,在相应的代码行里面点一下,出现一个小红球,也就是说Visual Studio在程序指令集某个地方动态地添加了一个INT 3指令。
参考博客Jacky Song http://www.cnblogs.com/songzibin/archive/2010/01/07/1640920.html
大一下学期,徐小青老师在课上有教授过断点和单步调试的应用。
但因个人原因,平常习惯在代码中插入printf语句检查变量值或将问题代码注释掉来检验运行,断点运用的比较少。(摊手)

就行数统计程序进行调试,检查fp、ch、count值,如图↓↓↓

·对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

具体目标

着手能写,能够深入理解概念,打好基础。逐步精简代码。能将想法创意表达出来。

提高程序设计能力和培养计算思维

我觉得在系统、勤奋的能力训练下,也同时培养自己的想象力,类似运用思维导图等方法将创意具现化。
勤奋是基础,保持求知的心和百折不挠的毅力。
系统是辅助,我从“做中学”中认识到了,系统的训练方法并非高高在上,一步步开始,逐渐将自己的训练方式规范化确实能够做到事倍功半。
想象力是动力,真正的将编程语言作为自己表达创意的工具,而不是束缚自己能力的枷锁。

·毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?

大一下学期,我选修了姬瑞环老师的《应用写作》课程。期末考核成绩85。
作为中国高教学会秘书学专业委员会理事、北京市人事考试中心专家组成员、国家秘书职业资格鉴定专家委员会委员,姬瑞环老师在公文写作上造诣颇深,并且给予了我许多帮助。
姬老师要求我们多看多写多思考,规范格式,雕琢语言。我觉得个人在公文写作能力方面积淀还不够,日常中应当多注意学习学校、网络上发布的公文。

以上

posted @ 2016-12-14 21:27  曾士轩  阅读(1065)  评论(2编辑  收藏  举报