zoukankan      html  css  js  c++  java
  • 寒假作业(一)——随笔

    写在前面的话

    这是第一次开博客、写博客。无论事情的起因是什么样的,只希望自己所发出的动作都能给自己带来一定的收获而不是只是为了应付差事而匆匆完事。这第一篇随笔是写关于自己的成长经验和程序设计课程的结合,并由此收获的感想,也是自己在一学期里对学习程序设计这门基础课程的总结和领悟。

    在人生技能道路上,你有没有专长的高超技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)可以结合一下,特别要和下学期的《面向对象程序设计》课程要结合起来。

    你有什么技能比大多人(超过70%以上)更好?针对这个技能的获取你有什么成功的经验?

    谈及是否有专长的高超技能,感到十分的惭愧。从小到大虽然对许多事物都感兴趣,但是绝大多数的都是略知一二,为数不多的真正感兴趣的,最终也都应为种种原因没能坚持下来,所以至今都没有真正能拿得出手的专长。但是经历过,尝试过这么多的不同的实物,反而能能总结出很多的道理。有一些事物很复杂的,想要完成并不容易,当你面对它的时候,个体对它的第一印象就会产生畏惧之感,想要逃避。但是当你真正的下定决心直面它的时候,你就会真切的感受到一切都是有步骤去执行的,渐渐熟悉之后也就发现这一切都是有必然的联系的。从陌生到接触再到渐渐熟悉,这就是一个不断学习的过程,而你是否能够完成这一过程从很大程度上取决于是否有决心敢于去面对。刚刚学习C语言的时候感到很吃力。零基础,对课本上的讲解也不是很明白,所以刚开始的一段时间有些排斥。但是老师布置了作业要去完成,所以又不得不硬着头皮去接触它,理解它,熟悉它。遇到问题时好在有同学的帮助,渐渐的发现C语言也并不是不可捉摸的,它也有自己的规则和逻辑,明白了之后就会发现也不是很难。因此,我认为下学期的课程应该也是如此。所以,接触新事物之前克服恐惧是很重要的,不懂得要去尝试,要去请教。干着急不动手是不能够解决问题的。

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

    在学习C语言的时候,以课本为主,理解规则是很重要的,其次就是一些逻辑方面需要注意。因为第一学期没有带电脑所以大部分的上机操作都是利用上机课,手机完成的,所以除了完成作业,真正的实验机会不是很多。每次上课尽量跟上老师的讲解,不清楚的内容要及时利用资源解决掉。C语言的特殊性在于它是一门写给机器看的指令,在表达上面必须遵守机器语言。在初学的时候会经常在格式等方面遇到错误,而且还找不出在哪里错了。但是久而久之也能摸清其中的一些套路,错误量也就减少了。但是算法上的硬伤也就无能为力了。

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

    目前为止写的代码都局限于老师挂出的题目,粗略估计一下应该写的代码行数在两千左右。通过这些题目,让我对最基础的C语言有了基本了解,但是对于指针,结构体等还是留下了一些问题需要解决。

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

    • 数组指针是指指向数组的指针;
    • 指针数组是指数组是由指针构成的,即数组储存的是指针;
    • 函数指针是指指向函数的指针;
    • 指针函数是指返回值为指针的函数;

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

    讲真,真不知道这些的区别和联系,但是查阅资料,可以知道:

    文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。但是,流是一串字符没有结构的数据。对象间进行信息或者数据的交换时总是先将对象或数据转换为某种形式的流,再通过流的传输,到达目的对象后再将流转换为对象数据。所以,可以把流看作是一种数据的载体,通过它可以实现数据交换和传输。

    说起来很抽象,也很陌生,但是举最简单的例子当你在网上看视频的时候,向网站传送了你要看的节目的请求,让后就从线上传输出流文件提供观看。
    文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,以二进制形式存储。在区分这两类文件上,只是判断一下文件的内容中是否含有0x00-0x07这八个字符内容,如果有的话,就是二进制文件文本文件和二进制文件。文本文件和二进制文件并无本质的差别,他们的区别在于打开这个文件的程序在对其内容的解释上,我们可以把一个典型的所谓二进制文件(bmp)当作文本文件来打开,是同样可以的,只是得到的内容就是一些乱七八糟的符号了。反过来,也是同样成立。
    不知道怎么编程操作这两种文件,还要请大腿赐教。

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

    面向过程是一种以过程为中心的编程思想,分析出解决问题的步骤后一步步执行最后解决问题。解决问题的重要方法是就是模块化的思想方法。

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

    模块就是在程序中完成指定功能的部分。比如利用自定义函数能够完成一个指定功能就是一个功能模块。能力和水平有限,还没写过多个源文件的程序。

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

    计算机导论中讲过高聚低耦。一个模块内各元素联系的越紧密,则它的内聚性就越高。高内聚是指一个模块是由相关性很强的代码组成,只负责一项任务。低耦合指让每个模块尽可能的独立完成摸个特定的子功能,减小每个模块之间的联系程度,这样能够对后续的设计开发和维护带来便利和降低成本。

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

    int A[10],B[10],i;   //假设A,B都是含有十个元素的数组 
    printf("请输入数组A
    ");
    for(i=0;i<10;i++)
      {
     	scanf("%d",&A[i]);
      }
    for(i=0;i<10;i++)
      {
    	B[i]=A[i];
      }
    
    对于字符数组可以直接使用strcpy函数实现。
    int A[10],i;   //假设A是含有十个元素的数组 
    	printf("请输入数组A
    ");
    	for(i=0;i<10;i++)
          {
          	scanf("%d",&A[i]);
    	  }
    	for(i=0;i<10;i++)
    	  {
    	     if(A[i]==5)
    	       break;
    	  }
    	  if(i<=9) printf("该数组有数字5");
    	  else printf("该数组没有数字5");
    

    排序问题可以使用冒泡法

    int A[10],i,j,temp;   //假设A是含有十个元素的数组 ,从小到大排列 
    	printf("请输入数组A
    ");
    	for(i=0;i<10;i++)
          {
          	scanf("%d",&A[i]);
    	  }
    	printf("
    ");
    	for(i=0;i<9;i++)
    	  {
    	  	for(j=0;j<9-i;j++)
    	     {
    	     	if(A[j]>A[j+1])
    	     	 {
    	     	 	temp=A[j];A[j]=A[j+1];A[j+1]=temp;
    			  }
    		 }
    	  }
    	for(i=0;i<10;i++)
    	{
    		printf("%d ",A[i]);
    	}
    
    从大到小排列只需把后边比较的大小关系更改一下即可,在这里就不赘述了。
    https://github.com/huabei-li/wintervacationhomework/tree/master

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

    这个就真的超出能力范围之内了,不知道该怎么写。在网上搜了一下发现也并不能看懂,所以还是有很多的东西要学,代码以后会补上来的。

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

    其实我又不知道什么是断点(自己怎么啥都不知道啊,crying)但是我又去百度了一下(百度真是工作学习的好帮手)。断点是在调试过程中起作用,它能够让程序中断在需要的地方,从而方便分析和操作,同时节省时间。不知道怎么调试,感到无助。

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

    俗话说师傅领进门,修行靠个人。C语言给我们提供了涉入编程邻域的入口,那面向对象的程序设计就将让我们对编程有更深入的理解。说起具体目标,因为还没有都这门课有进一步的了解,所以就建立在C语言的基础上谈一下目标。首先就是掌握课本知识,参透课本不留疑惑,认真完成作业,下学期带了电脑之后会增加练习量。提升设计能力和培养计算思维可以通过相关书籍,比如图书馆就有很多关于程序设计和问题求解的资料文献,这些对于积累解决方法都是有益的,同时要学会发散知识,总结出自己关于问题求解的方法和技巧。Learning By Doing的核心思想在于doing,在掌握相关知识之后只有进行不断的实践才能够对自己的技能有所提升。熟能生巧,顶尖的运动员都是经过长年累月的练习才使自己自己得到提高,行家也是通过长年的反复才使自己的手艺达到炉火纯青的程度。所以,练习时学习,巩固,提升自己的能力的最好方式。光获得知识是不够的,只有通过应用才能使获得的知识得以价值和意义。所以,纸上得来终觉浅,绝知此事要躬行。在实践中学习,可以解决出在实践中的解决问题,为以后的编程积累经验,等到真正需要利用的时候不至于漏洞百出。

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

    自我感觉文学素养还行吧,语文也没有拖了自己的后腿,写的文章能够直观的阐述、表达出自己的想法,但这都建立在我知道自己想说什么的基础上。要想提高自己的写作能力,首先要做到明确自己的思路,知道自己想要说什么,逻辑过于混乱即不便于自己的表达,也不利于读者的理解。其次要多阅读,积累写作语言和写作技巧,等到运用时不至于语言、结构过于平淡。因此,想要提高必须在阅读和写作方面双管齐下,也可以实践做中学的技巧,这样就可以使自己的写作技能得到提高。
  • 相关阅读:
    梦断代码阅读笔记03
    用户场景分析
    学习进度8
    学习进度7
    梦断代码阅读笔记02
    学习进度6
    随堂小测app(nabcd)
    梦断代码阅读笔记01
    《构建之法》-6
    《构建之法》-5
  • 原文地址:https://www.cnblogs.com/031602418matt/p/6287751.html
Copyright © 2011-2022 走看看