软件工程专业的“乐趣”


学号:16340072
数据科学与计算机学院


目录

  • 软件工程专业的乐趣

    • Helloworld作业
    • 浮点数二进制表示
    • vmatrix作业评分系统
    • 制作小游戏

1.Helloworld作业

“Helloworld”–最简单的程序。或者说是一个让初学者感受程序乐趣的程序。程序内容就是在显示器显示”Helloworld”的字幕。

在软件工程专业课第一次上机,作业就是“Helloworld”程序。当时老师给我们的代码模样就是这样。

# include <stdio.h>int main()
{printf("Helloworld");return 0;
}

然后我很天真地把代码“复制”地打到中大的vmatrix,提交后让中大作业评分系统评分。我满怀自信,这样“复制”,肯定有100分。结果却事与愿违,80分。我想这怎么可能,肯定系统出错,然后我在提交了一次。结果一样是80分。“系统错误,肯定是系统错误”,于是我就什么代码都不打,直接提交。Feekback:0;好吧,系统没有错误。所以我只好问一下拿了100分的同学,答案是什么。看了看,噢,原来Hello与world之间有个逗号。

# include <stdio.h>int main()
{printf("Hello,world");return 0;
}

于是我把这个提交,结果还是没有100分。我再问一下同学。。。当我听后,一脸懵B,坑。。。原来world前面还有空格。。

# include <stdio.h>int main()
{printf("Hello, world");return 0;
}

经过辛苦的尝试,我终于拿了100分。。。
然后我得了个结论:
其实“Helloworld”,好“难”。


2.浮点数二进制表示

浮点数(其实是正数与小数的结合吧,例如3.14)。因为计算机只能识别0,1(机器语言)。所以数据的储存也是以二进制保存。
以十进制与二进制相互转化为例。
(01110001)2转化十进制。
根据公式:
∑ni=1di∗R(n−i)\sum_{i=1}^n d_i*R^{(n-i)}=d1*R(n-1)+d2*R(n-2)+……+dn*R0;

(01110001)2=0*27+1*26+……1*20=113;

十进制转化为二进制,就是不断除2取余数。这里就不详细说了

而浮点数转化为二进制储存更为复杂。第一次听课时,因为老师讲得太快,根本听不懂。于是我就上网查,想弄明白。结果搞了一个晚上,还是一脸懵B。最后就把转化的步骤记住就算了。

浮点数二进制由符号位、阶码、尾数 。

类型 符号位长度 阶码长度 尾数长度
float 1 8 23
double 1 11 52

以下通过几个例子讲解浮点数如何转换为二进制数例一:已知:double类型38414.4。求:其对应的二进制表示。
分析:double类型共计64位,折合8字节。由最高到最低位分别是第63、62、61、……、0位:
最高位63位是符号位,1表示该数为负,0表示该数为正;
62-52位,一共11位是指数位;
51-0位,一共52位是尾数位。

步骤:按照IEEE浮点数表示法,下面先把38414.4转换为十六进制数。
把整数部和小数部分开处理:整数部直接化十六进制:960E。小数的处理:1
0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够53位就行了。隐藏位技术:最高位的1不写入内存(最终保留下来的还是52位)。

如果你耐心的话:
38414.4(10)=1001011000001110.0110011001100110011001100110011001100(检查时会数数数到斗鸡眼)

或者可以如下理解:
1.001011000001110 0110011001100110011001100110011001100×2^15

于是来看阶码,按IEEE标准一共11位,可以表示范围是-1024 ~ 1023。因为指数可以为负,为了便于计算,规定都先加上1023(2^10-1),在这里,阶码:15+1023=1038。二进制表示为:100 00001110;

符号位:因为38414.4为正对应 为0;
合在一起(注:尾数二进制最高位的1不要):
01000000 11100010 11000001 110 01100 11001100 11001100 11001100 11001100

就是这么“简单”。2


3.vmatrix作业评分系统

这节是我对学校vmatrix作业评分系统的吐槽。

这是vmatrix上的一道练习题。当时我遵循题目打了一套代码如下

# include <stdio.h>int main()
{double p[10000];int N;int i,j,k,t;double M;double v;t=-1;scanf("%d %lf",&N,&M);int a =(N>=2 && N<=20);//&&表示"与",当括号内正确时,a==1.int b =(M>=0.5 && M<=1);if(a==1 &&b ==1)//判断M,N是否符合题目要求。for(i=2;i<=N;i++){for(j=1;j<i;j++){t++;p[t] = (double)j / (double)i;k = t-1;if(p[t] == p[0] && (t)!=0)continue;while(p[t]!=p[k] && k>0){k--;}if(k!=0 && (t)!=0)continue;if(p[t]<=M)printf("%d/%d\n",j,i);}}return 0;
}

结果评分系统给了我99分。。。,说我的程序太复杂。于是我就删除了一些,改成如下。

# include <stdio.h>int main()
{double p[10000];int N;int i,j,k,t;double M;double v;t=-1;scanf("%d %lf",&N,&M);for(i=2;i<=N;i++){for(j=1;j<i;j++){t++;p[t] = (double)j / (double)i;k = t-1;if(p[t] == p[0] && (t)!=0)continue;while(p[t]!=p[k] && k>0){k--;}if(k!=0 && (t)!=0)continue;if(p[t]<=M)printf("%d/%d\n",j,i);}}return 0;
}

就是少了判断M,N的取值范围。结果评分为100分。汗。
这个网上交作业。。网上评分好像是我们师兄大牛们做出来的,我们是第一届使用的,可能问题多多。所以就钻了几个空子拿100分。哈哈!!
希望师兄能改善一下评分系统吧,这样就能规范我的代码了。


4.制作小游戏

软件导论课最有趣的作业就是制作游戏。Constuct 2软件,让一个小白也会做游戏。虽然游戏有点无聊,但做出来挺有成就感。因为不会导出,所以无法让读者尝试了。我只能用图片来描述一下:

首先是游戏画面,然而一个开始键的设计就有好多讲究。

接着就是游戏开始画面了,鼠标单击是射出一发子弹。

当分数达到10时。会出现小泡。然后吃了之后就变成了super plane..
鼠标单击会射出三发子弹。

最终就是boss的出现了。(哈哈 好中二)

制作这个游戏最烦就是收集素材,然后还要PS,弄flash。。。所以制作游戏其实要通才的。
几个小时才能完成一个无聊的小游戏。。(其中还有上网看视频看怎么做)

最后希望读者能评论一下,你懂的!!

(最后就是希望读者能评论一下,你懂的!!)


  1. IEEE,全称是Institute of Electrical and Electronics Engineers,电气电子工程师学会。 ↩
  2. 详细解析:
    http://zhidao.baidu.com/link?url=-qB9OpwMaFfwaclpMWb9KXRWMzTWgtYKaCPRE5zZVUNUnXYaeuRSOgrI_A0UO-pR2vmSdWo7eJzvtMyFtIah04L7W2Dd1lckT_O8nGrrdZ3 ↩

软件工程专业的“乐趣“相关推荐

  1. 计算机软件专业的中期目标,计算机软件工程专业职业生涯设计.doc

    计算机软件工程专业职业生涯设计.doc 计算机软件工程专业职业生涯设计 每个人都对自己的将来有个美好的憧憬和期盼,但是要有实际的行动,现在在学校期间的努力就是最好的实际行动,我的人生我自己来掌控当然要 ...

  2. 计算机科学软件工程专业大学排名,2020软件工程专业大学排名及录取分数汇总(2021理科生参考)...

    选择科目 测一测我能上哪些大学 选择科目 领取你的专属报告 > 选择省份 关闭 请选择科目 确定 v> 计算机科学与技术和软件工程专业都是国内比较热门的大学专业,那么2020年软件工程专业 ...

  3. 让思考成为一种习惯:一位软件工程专业学生的大学生涯规划

    背景 三年前误打误撞进入一所二流大学,接着糊里糊涂的转入软件工程专业,由此而成为IT界的一员.浑浑噩噩的过完两年,发现自己把自己给弄丢了,很迷茫,很颓废,很屌丝.一次巧合的机会接触了我真正的第一门编程 ...

  4. 杭州电子科技大学保研计算机,杭州电子科技大学计算机学院软件工程(专业学位)保研条件...

    杭州电子科技大学计算机学院软件工程(专业学位)保研条件信息,是考研之前需要获取相应的考研信息,比如考试大纲.招考专业.招考目录等等基本信息,这些内容是进行考研前期工作的必要准备.考生可以从各院校的研招 ...

  5. 软件工程领域相关的技术标准_女生是否适合学习软件工程专业,以及是否能够有好的就业机会...

    首先,当前IT互联网行业有很多女性从业者,这些女性从业者的岗位分布也非常广泛,包括程序员岗位.产品经理岗位.UI设计岗位.测试岗位.运营岗位等等,所以当前女生学习计算机相关专业是完全可以的,未来的就业 ...

  6. 软件工程专业(互联网应用开发与优化方向)软件工程实践二环节教学大纲

    软件工程专业(互联网应用开发与优化方向)软件工程实践二环节教学大纲 培训课程 Phthon Web开发 实训公司 XXX 总周数 3周

  7. 软件工程专业实习可以做什么_想要获得软件工程实习机会? 这里有一些想法可以帮助您...

    软件工程专业实习可以做什么 by Tatiana Doyle 塔蒂亚娜·道尔(Tatiana Doyle) 想要获得软件工程实习机会? 这里有一些想法可以帮助您. (Looking to land a ...

  8. 带你一起学习实用计算机英语!(IT行业、四六级党记起来)《软件工程专业英语》第二单元的重点词汇+名词缩写+重难句+软件需求规格说明

      英语是全球IT行业的行业语言,英语技能是IT行业最基本的技能之一.因此熟练掌握相关英语技能对于发展职业生涯具有积极的作用.   <软件工程专业英语>适用于高等院校软件工程.计算机科学及 ...

  9. 带你一起学软件工程的专业英语!(IT行业、四六级党快记起来)《软件工程专业英语》第一单元:启动软件项目——单词、短语、名词缩写、难句、备忘录的基本格式样本(必备技能)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究)   英语是全球IT ...

最新文章

  1. (六)Amazon Lightsail 部署LAMP应用程序之升级到Amazon EC2
  2. 折线分割平面[HDU2050]
  3. C++ vector容器类型
  4. 大型项目使用Automake/Autoconf完成编译配置
  5. 一文读懂 | 进程怎么绑定 CPU
  6. 阿里云服务器安装JDK指南
  7. FastDFS分布式文件系统
  8. Linux下JDK、Tomcat的安装及配置
  9. pycharm打开脚本报错Gtk-Message: Failed to load module canberra-gtk-module
  10. 【转】Python之装饰器
  11. Android源码中常用的系统广播
  12. java native方法_深入理解Java虚拟机
  13. mysql序列号生成软件_GitHub - spcent/seq: 基于mysql的序列号生成器
  14. 零基础个人网站搭建教程(一个完全的新人如何搭建自己的个人网站)
  15. Http——超文本传输协议
  16. Graphic32中TBitmap32.TextOut性能分析[转载]
  17. 为程序添加windows注册表
  18. 输入月份、年份判断天数:1、3、5、7、8、10、12 -------- 31天4、6 、9、11--------30天 2------------28/29天
  19. HTG至少评论了Ouya游戏机:非常适合模拟器
  20. 2017计算机应用基础统考,计算机应用基础统考练习题「附答案」

热门文章

  1. 实现网站中的一键分享功能
  2. 内网渗透-常用工具免杀
  3. [校园网]UDP绕过校园网,纯手工搭建Linux版
  4. 如何导入outlook联系人到BlackBerry 10
  5. 调试LPC2300单片机时出现error: L6236E: No section matches selector - no section to be FIRST/LAST.
  6. i511260h和i511400h区别
  7. freemind思维导图使用总结_持续更新...
  8. 绝对好使的二十条电脑超级技巧
  9. 精确店铺人群标签,着重分析自然流量
  10. 2022-08-13 零基础吉他入门知识(三) 六线谱,和弦图和爬格子的知识补充,吉他中的和弦:大三和弦的各个和弦图理解