20165231 预备作业二:学习基础和C语言基础调查
微信文章感想
读了娄老师微信公众号中的文章,老师给我们的启示首先就是要坚持,万事开头难,但是只要肯坚持就一定会有所成就,不管是学习还是生活方面。其中最有触动的就是减肥了,是我三四年来一直难以完成的目标。如果可以再立个flag,2018我要瘦。
老师在文章中提到我们以后必备的技能——五笔输入和英语单词量。一个是作为单位职员必要的技能,信息化办公打字速度快就决定工作效率比别人高,领导当然喜欢一个办事效率高的人。五笔输入从小就是看着就切换的,完全不懂其用法,小学大力提倡学习汉语拼音所以最最习惯的还是拼音输入,为了效率我觉得还是可以去尝试一下五笔输入法;再有一个就是英语单词的积累量,作为与计算机有关专业的学生,拥有海量的单词积累非常有用。毕竟计算机是美国人发明的,操作系统,处理器,内存等等也用的美国人的,核心技术以及重要文献大多都是英文写的,程序语言大多基于英文来开发,学好英文有了大量单词积累了不至于看到一篇文献成了“睁眼瞎”。
个人技能
如果你有类似的技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)
如果游戏也算是的话我觉得大多数男生都具备这个技能吧。但是对于我来说我的游戏技能不算是比大多人好,游泳我很确信应该是我很拿手的技能。毕竟就有相当一些人还不会游泳,我在起跑线上就赢了。对于游泳的经验,我觉得就是喜欢,多游多练习。小学时课业轻松,夏天周末或者暑假外公基本上晴天就会带着我去游泳馆去,一是避暑,二是锻炼身体吧,三是我们家乡雨季多发大水,会游泳也是个保命技能吧。我学会游泳没有刻意去请教练或者跟教学班,自己去大池子里带浮力板自然而然就会。但是会了并不代表就优秀,在我学会游泳以后我就会和一些游得不错的同龄人或者大人交流切磋玩耍,自然而然就越来越好了。在我初中时参加游泳比赛获得丙组50米冠军,并以47秒50米的成绩刷新纪录。成功的经验大概就是得喜爱,然后才能多做多练。不喜欢逼着来也不会有太多效果。
与老师博客中经验共通之处就是,贵在坚持。还是那句万事开头难,我学游泳是在大泳池里学的,就靠一漂浮版,脚也触不到地,呛水,淹翻无数次。不经历一些困难磨难,就学会那还有什么意思呢。、
C语言学习调查
- 大一时人比较松懈学得并不好,绝大多数就是看看课本然后去平台刷题,前期刷的不多,大多数题都是后期为了凑平时分刷完了所有非常简单和简单题,所以基础感觉很是薄弱。与我游泳技能比不值一提。我自己也不知道写过多少代码,期末刷进平台前十。让我看代码应该看得懂,写的话可能我逻辑不严密会导致错误百出。
量变是质变的必要准备,质变是量变的必然结果。
质变不仅可以完成量变,而且为新的量变开辟道路
——《马克思主义基本原理概论》
想要有个好的质变那就先得好好准备量变。
-
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
学完C语言,再经过大二上学期半年的洗礼,C语言感觉忘得差不多了函数、数组、指针还有些印象,能知道大致干啥。
数组指针:重点在指针,表示它是一个指针,它指向的是一个数组。
指针函数:重点在函数,表示它是一个函数,它的返回值是指针。
函数指针:重点在指针,表示它是一个指针,它指向的是一个函数。
指针数组:重点在数组,表示它是一个数组,它包含的元素是指针。
-
学完C语言,明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
文件和流,文本文件和二进制文件等等概念已经模糊了,于是我去百度了一下
文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。
二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。在C语言中,文本文件操作都是由库函数来完成的。二进制文件一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件。
-
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
“面向过程”是一种以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.比如拿学生早上起来的事情来说说这种面向过程吧.粗略的可以将过程拟为: (1)起床 (2)穿衣 (3)洗脸刷牙 (4)去学校 ,而这4步就是一步一步的完成,它的顺序很重要,你只须一个一个的实现就行了.
——源于百度知道
-
在C语言里面,什么是模块?你写过多个源文件的程序吗?
模块化就是在设计一个较大的程序时,往往把它分成若干个程序模块,每一个模块由一个函数实现一个特定的功能。一个C语言程序可由若干个其他函数构成,通过函数调用实现其程序功能。由于C语言缺乏有难度的练习,我做过的模块化的程序就是四则运算计算器了,将加减乘除各写为一个函数,主函数按需求输入指定命令调用实现加减乘除功能,缺点是无法同时运算,每次运算只能算一次然后需要重新指定算法。
-
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
高内聚,低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。耦合是影响软件复杂程度和设计质量的一个重要因素,为提高模块的独立性,应建立模块间尽可能松散的系统,在设计上我们应采用以下原则:若模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范围,尽量避免内容耦合。在模块划分时,要遵循“一个模块,一个功能”的原则,尽可能使模块达到功能内聚。
——《百度百科》
- 数组A内容复制到数组B中
#include <stdio.h>
int main()
{
int a[10],b[10],n;
int i = 0,j=0;
printf("输入个数:\n");
scanf("%d",&n);
printf("输入值:\n");
for(i = 0;i<n;i++){
printf("%d\n",&a[i]);
}
for(j=0;j<n;j++){
b[j]=a[j];
}
return 0;
}
-
整数数组A中有没有数字5?
#include <stdio.h>
void main()
{
int x,i,find=0;
int a[10]={6,8,2,9,3,4,5,10,7};
printf("输入要查找的数x: ");
scanf("%d",&x);
for(i=0;i<10;i++)
if(x==a[i])
{find=1;break;
}
if(find==1)
printf("%d是数组元素\n",x);
else
printf("没有找到%d",x);
}
输入5,显示:5是数组元素。
-
对整数数组A进行排序
从小到大
#include <stdio.h>
#define N 5
main()
{
int i,j,t,a[N];
for(i=0;i<N;i++)
{ printf("Enter No.%2d:",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<N-1;i++)
for(j=0;j<N-i-1;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<N;i++)
printf("%d",a[i]);
}
从大到小
#include <stdio.h>
#define N 10
main()
{
int a[N];
int i,j,k,t;
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)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<9;i++)
printf("%d ",a[i]);
}
-
写一个程序,统计自己C语言共写了多少行代码
老师,我并不知道怎么用程序统计自己以前C语言写了多少代码,之前的计算都是估算。如果下学期的Java程序可以设计出这样的程序,我愿意尝试一下。
-
你知道什么是断点吗?给出自己调试程序的例子
分解质因数程序
经过这一总结感觉自己遗忘的太多,假期需要补习一番了。
章节提问
1、Java程序编写是在文本编辑器编写,命令运行,那怎么知道该程序的错误以及错误位置?
2、C语言的数据类型和数组与Java中的是否互通?
3、instanceof 运算符的运用有没有特殊的要求?一般用于什么情况?
4、方法与对象有没有什么联系?import 语句可以用于除了引入包中类以外的情况吗?
5、子类继承用于什么情况?面向抽象编程程序上有什么特别之处?
6、面向接口编程程序上有什么特别之处?
7、内部类、匿名类和异常类声明方法是否相同?
8、各种常用实用类该怎么理解?使用上有什么异同?
9、GUI程序适用于安卓系统上吗?
10、Java里的流与C语言中的流一样吗?
11、JDBC数据库操作是否是建立服务器的基础?
12、Java多线程是指多个任务同时进行还是一个任务分不同模块同时进行?
13、Java 远程调用如何操作实现?
14、Java绘制钟表如何让它和现实时间走得一样?
15、Java中遍历链表与C语言是否类似?
学习目标
首先,我应该端正学习态度,明确学习是为了自己的未来,明确自己最终想要的结果。其次,学习计算机这种尖端的科学技术,就应该有持之以恒的决心和毅力。认真听好每一次课,疑问和缺漏及时查补,坚持每天练习Java代码,做好每一次作业,在做好基本知识情况下积极做拓展,多了解一些知识。期望在《Java程序设计》学习结束后能够写出自己设计的能在安卓手机上运行的小程序。
老师在“做中学”公众号中发表的文章都是一些对生活学习未来很有帮助的经验或者建议。仔细阅读对自我的提升有很大的帮助。