20155322 阅读“做中学”有感

阅读“做中学”相关博客有感


我的技能

说道我的技能的话,我想确实有挺多的。我个人兴趣比较广泛,例如绘画、书法、跑步太极等等,并且并不是单纯的从“心理”上喜欢他们,而是付出了实践的喜欢,并且,他们没有让我失望的给予了我许多收获。下面我就谈谈太极给我带来的一些帮助。
 我的太极只能说一般般,参加过首都业余的比赛,德国一些奖,但是肯定没有办法和那些专业的太极运动员相比,但是较大多数人来说,我的太极还算是有一定基础的。说道这里就有必要说一下我学习太极的初衷,我以前是一个很难集中注意力的人,做某些事的时候总是想另一件事导致学习效率很低(这也在我的第一篇博客里提到过)。因此我十分羡慕那些做事效率很高的人,当我听说太极可以锻炼人的专注力的时候,便十分期望有一天能够学习。
 学习太极给我带来许多好的经验,首先便是专注力的提高,这对于下学期学习JAVA甚至是其他各个方面都有很大帮助的。因为像JAVA程序设计这样的课程,是需要长时间的安静来去学习的,持久的专注力能够保持这样一种高效率的学习写代码和调试代码的。其次是变得更加有耐心,当一个程序误语法错误但是一直实现不了需要的效果的时候,就需要耐心调试了。
这样的一种收获和老师博客中所提到的学习乒乓球有所共通之处:
 
 1.通过学习这项技能多了一项特长
 2.通过学习这项技能提高了自己其他方面的能力。
 3.通过学习这项技能使得自己感到愉悦和满足

关于C语言的调查

1.关于C的学习

我是通过老师的讲课,教材学习和题库里大量的习题来学习C语言的。与我学习太极相比,有许多经验可以借鉴。例如太极对人的下肢力量要求比较高,所以要进行大量的站桩和马步练习,没有下肢力量,打太极之时会腿抖,从而影响你的发挥。而C语言也是如此,为了将课堂上所学习的各种语句熟练运用,我们需要进行大量的练习来巩固,如果不练习,将无法将其流畅的运用于实际问题。

2.代码量

我其实记不清我写了多少行C语言代码,在题库中我的得分是1200多分,平均下来也就是100+道题,本学期的密码学数学基础课实验的三个实验都是200+的代码量,所以大约有4000行左右的代码量。通过这些练习,我对于C语言的部分语句能够熟练的掌握,并且能够解决一些简单的实际问题。

3.相关概念

我能够熟练的分清楚数组指针,指针数组;函数指针,指针函数这些概念,并且能运用到解决简单问题上。

4.关于文件和流

上个学期我们学习到了文件的简单调用,但是这个概念我们的C语言老师只是简单的提了一下(或许是我忘记了)。于是我在网络上了解了一下文件与流。文本文件与二进制文件的区别在于:就数值型数据而言,文本文件按照一个字符对应一个字节来储存的,即每一个字符都单独占用一个字节的储存空间;二进制文件,顾名思义,就是将数值型数据这样一整个数字作为一个二进制数来储存的(只要出超过范围)。关于这两种文件的操作因为确实没有相关练习和应用所以就比较生疏,今后会计划补上的。

5.面向过程程序设计

在我的理解中,面向过程程序设计就如同我们在code::block这类的编译器中写代码,将实际问题拆分成不同的元素,通过写相关函数去模拟和实现这个问题的这样一个过程叫做面向过程程序设计。

6.模块

我认为模块就是将实际问题按照离散元素分成许多部分单独实现,然后再组装起来,每一个部分即为模块。我没有写过多个源文件的程序,这一点我将在未来有计划的补上一定量的练习。

7.高内聚,低耦合

这个说法我是第一次见,上网了解了一下,我觉得按照网络上的解释,就是将每个模块尽量精简,是功能不出现重复冗余,没有双向调用。我参考源自百度

8.数组

(1)答题思路为:在一个循环中,设置一个过程变量temp,先将数组A的值赋给temp,然后A[]=B[],再把temp中的A[]的值赋给B[]。相应程序如下:

#include<stdio.h>
#define N 5
int main()
{
int a[N],b[N],temp;
int i;
printf("请输入a:\n");
for(i=0;i<N;i++)
	scanf("%d",&a[i]);
printf("请输入b:\n");
for(i=0;i<N;i++)
	scanf("%d",&b[i]);
printf("交换后的数组元素为:\n");
for(i=0;i<N;i++)
{
	temp=a[i];
	a[i]=b[i];
	b[i]=temp;
}
for(i=0;i<N;i++)
	printf("%3d",a[i]);

for(i=0;i<N;i++)
	printf("%3d",b[i]);

}

(2)大体思路为:通过循环,循环值为数组下标,设置一个if条件来判断是否为5,是的话返回1,否的话返回0。相应程序如下:

#include <stdio.h>
function(int a[]);
int main()
 {
    int a[10];
    int i,find,result;
    for(i=0;i<10+i++)
 {
    scanf("%d",a[i]);
 }
scanf("%d",find);
result=function(a);
if (result==0)
   printf("the number is not find.\n");
else
   printf(the number is found.\n");
}
function(int a[])
{
    int k;
    for(k=0;k<10;k++)
        if (a[k]==5) return 1;
    return 0;
}

(3)答题思路为:常见的冒泡排序。相应程序如下:

#include <stdio.h>
int functionsort(int *a)
{
   int i=0,j,t;
   for(i=0;i<10;i++)
      {
          for(j=0;j<10-i-1;j++)
             {
                if(a[j]>a[j+1])
                   {
                       t=a[j];
                       a[j]=a[j+1];
                       a[j+1]=t;
                    }
              }
       }
}
int main()
{
    int a[10]={-1,2,3,7,12,8,0,-8,19,10};
    int i=0;
    functionsort(a);
    for(i=0;i<10;i++)
      {
         printf("%d ",a[i]);
      }
    return 0;
}

9.统计代码

#include <stdio.h>
#include <string.h>
/*正确的输入文件名及路径,如D:\java works\textjava.c 表示在D:\java works目录下textjava.c文件。*/
int Stringfunction(char *str);
int  main()
{
    int    all=0,zhushi=0,konghang=0,j,k=0;//filename,all-zhushi-konghang,zhushi为注释,konghang为空行
    FILE   *fp;
    char   filename[100];
    char   str[4096];
    printf("Enter a filepath/filename:\n");
    gets(filename);
    fp=fopen(filename, "rt");//打开文件
    if(fp==NULL)//判断文件是否正确打开
    {
        printf("Failure to open. \n");
        exit(0);//如果错误终止程序
    }
    while (fgets(str,4096,fp))  //读取一行,并判断文件是否结束
    {
        j=Stringfunction(str);//删除空格和制表符
        if(k==0)
        {
            if(j==0) konghang++;
            else if(str[0]=='/')
            {
                if(strstr(str,"/*")) k=1;//strstr函数:判断字符串str2是否是str1的子串
                if(strstr(str, "*/")) k=0;
                zhushi++;
            }
        }
        else
        {
            if(strstr(str, "*/")) k=0;
            zhushi++;
        }
        all++;
    }
    fclose(fp);
    printf("filename:%s 代码行数:%d 注释行:%d 空行:%d",filename,all-zhushi-konghang,zhushi,konghang);
}

int Stringfunction(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;
}

10.断点

断点就是调试程序时,当程序运行了设定断点的行,就会暂停,并且可以查看变量的值,一般用于检查程序逻辑和语法错误。但是我一般调试程序时没有使用过断点,而是直接一步步调试的,这样的缺点是比较费时,但是胜在详细稳重

JAVA课的目标

在我的设想中,我学习本课的目标主要是想掌握一门新的语言,了解一下JAVA这种面向对象的程序设计语言的基本思想。并且通过自己的学习能够解决一些实际问题。关于如何学习和培养程序设计能力和计算思维的话,我觉得从两个方面入手比较好:

(1)从理论上了解,学习其中的逻辑关系和程序设计的相关理念。
(2)从实际上熟练,使用大量的练习训练,以及对不同算法风格的观察和理解。

按照如上的两个大方向,在加上一些系统的具体的小方向,也许就是我自己的“做中学”的方法了。

我的写作能力

1.我的公文写作能力
我认为我的写作能力还是有一定水平的,但是只是局限于高中范围的文体写作。在高中阶段有幸担任语文课代表,经常和语文老师有一些交流,对于学习语文以及作文这方面获得学习机会比较多,对于这方面有一些自己的经验,所以对于自己的写作能力有一定的信心。但是对于公文这个新的文体,我并没有过多的了解。
2.怎样提高
有信心并不是代表没有提高的地方,我认为我需要提高的地方有三点:

(1)对于文章主题的把握,想要我些什么我就能够些什么,不偏题
(2)写作风格的多样化,能够写出各种各样的语句特色
(3)对于各种文体的格式熟练掌握,例如公文中的标题、正文、日期、署名之类的各种要求。

posted @ 2016-12-18 23:37  blackay03  阅读(266)  评论(5编辑  收藏  举报
Live2D
*/