软件设计方法实习报告Word下载.docx
- 文档编号:19470118
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:13
- 大小:19.95KB
软件设计方法实习报告Word下载.docx
《软件设计方法实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《软件设计方法实习报告Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
(一)、在LINUX下Shell命令行内执行四则运算
1、在Linux根目录root下创建自己的工作目录:
[root@localhost~]#mkdirstd
[root@localhoststd]#cdstd
[root@localhoststd]#mkdircalculate
[root@localhostcalculate]#cdcalculate
[root@localhostcalculate]#mkdiraddsubmuldiv
[root@localhostcalculate]#ls
adddivmulsub
2.在上述的工作目录下编写四则运算的代码。
(1)add目录下
[root@localhostadd]#viadd.c
floatadd(floata,floatb)
{
{returna+b;
}
[root@localhostadd]#viadd.h
#ifndefADD_H_
#defineADD_H_
floatadd(floata,floatb);
#endif
[root@localhostadd]#vimakefile
add.o:
add.c
cc-c-oadd.oadd.c
(2)sub目录下
[root@localhostsub]#visub.c
floatsub(floata,floatb)
{
returna-b;
[root@localhostsub]#visub.h
#ifndefSUB_H_
#defineSUB_H_
floatsub(floata,floatb);
[root@localhostsub]#vimakefile
sub.o:
sub.c
cc-c-osub.osub.c
(3)mul目录下
[root@localhostmul]#vimul.c
floatmul(floata,floatb)
returna*b;
[root@localhostmul]#vimul.h
#ifndefMUL_H_
#defineMUL_H_
floatmul(floata,floatb);
[root@localhostmul]#vimakefile
mul.o:
mul.c
cc-c-omul.omul.c
(4)div目录下
[root@localhostdiv]#vidiv.c
floatdiv(floata,floatb)
returna/b;
[root@localhostdiv]#vidiv.h
#ifndefDIV_H_
#defineDIV_H_
floatdiv(floatx,floaty);
[root@localhostdiv]#vimakefile
div.o:
div.c
cc-c-odiv.odiv.c
(5)calculate目录下
[root@localhostcalculate]#vical.c
#include<
stdio.h>
#include"
add.h"
sub.h"
div.h"
mul.h"
intmain(void)
intm=1;
floata=0;
floatb=0;
floatsum=0;
floatminus=0;
floatmulti=0;
floatdivide=0;
charc=0;
constfloatEPSILON=1e-10;
while(m==1)
printf("
请输入两个实数:
\n"
);
scanf("
%f%f"
&
a,&
b);
运算符号是:
scanf("
%s"
c);
switch(c)
case'
+'
:
sum=add(a,b);
%f+%f=%f\n"
a,b,sum);
break;
-'
minus=sub(a,b);
%f-%f=%f\n"
a,b,minus);
*'
multi=mul(a,b);
%f*%f=%f\n"
a,b,multi);
/'
if((b>
=-EPSILON)&
&
(b<
=EPSILON))
错误,除数不能为0!
}
else
divide=div(a,b);
%f/%f=%f\n"
a,b,divide);
default:
未知运算符!
输入1继续,输入其他退出程序!
%d"
m);
return0;
[root@localhostcalculate]#vimakefile
vpath%add.cadd
vpath%add.hadd
vpath%sub.csub
vpath%sub.hsub
vpath%mul.cmul
vpath%mul.hmul
vpath%div.cdiv
vpath%div.hdiv
obj=cal.oadd.osub.omul.odiv.o
test:
$(obj)
cc-otest$(obj)
cal.o:
cal.cadd.hsub.hmul.hdiv.h
cc-ccal.c-Iadd-Isub-Imul-Idiv
clean:
rm-rf*.o
上述程序中使用了gcc与makefile:
①在LINUX的终端命令中有gcc指令
◆预处理(Pre-Processing)
使用-E参数可以让GCC在预处理结束后停止编译过程:
#gcc-Ehello.c-ohello.i
◆编译(Compiling)
下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:
#gcc-xcpp-output–chello.i-ohello.o
或者
#gcc-chello.i-ohello.o
◆汇编(Assembling)
◆链接(Linking)
#gcchello.o-ohello
②Makefile就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译。
make命令执行时,需要一个
Makefile
文件,以告诉make命令需要怎么样的去编译和链接程序。
Makefile的规则:
target
...
:
prerequisites
...
command
target也就是一个目标文件,可以是Object
File,也可以是执行文件。
还可以是一个标签(Label)。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。
这是一个文件的依赖关系,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。
prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。
make是如何工作的:
输入make命令。
那么,
1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2、如果找到,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目标文件。
3、如果edit文件不存在,或是edit所依赖的后面的
.o
文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。
4、如果edit所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。
5、C文件和H文件存在时make会生成
文件,然后再用
文件生命make的终极任务,也就是执行文件edit了。
这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。
在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。
make只管文件的依赖性。
Vpath
Makefile中如果没有指明vpath这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。
如果定义了这个变量,那么,make就会在当当前目录找不到的情况下,到所指定的目录中去找寻文件了。
Vpath的使用方法:
vpath<
pattern>
<
directories>
为符合模式<
的文件指定搜索目录<
。
vapth使用方法中的<
需要包含“%”字符。
“%”的意思是匹配零或若干字符,(需引用“%”,使用“\%"
)例如,“%.h”表示所有以“.h”结尾的文件。
<
指定了要搜索的文件集,而<
则指定了<
pattern>
的文件集的搜索的目录。
(如果某文件在当前目录没有找到的话)我们可以连续地使用vpath语句,以指定不同搜索策略。
如果连续的vpath语句中出现了相同的<
,或是被重复了的<
,那么,make会按照vpath语句的先后顺序来执行搜索。
3.在calculate目录下使用make指令
[root@localhostcalculate]#make
cc-ccal.c-Iadd-Isub-Imul-Idiv
cc-c-oadd.oadd/add.c
cc-c-osub.osub/sub.c
cc-c-omul.omul/mul.c
cc-c-odiv.odiv/div.c
cc-otestcal.oadd.osub.omul.odiv.o
4.运行四则运算程序
[root@localhostcalculate]#./test
54
+
5.000000+4.000000=9.000000
1
-
5.000000-4.000000=1.000000
*
5.000000*4.000000=20.000000
50
/
2
(二)、Eclipse的学习使用
在Eclipse下,编写程序,完成实数的四则运算功能
(1)、点击file下的新建(new)一个C工程(cproject);
(2)、在出现的对话框中,输入projectname,点Finsh,完成project的创建;
(3)、新建C源程序:
file->
new->
Csource;
(4)、新建头文件:
file->
Cheadfile;
(5)、在sourcefile中输入filename,输入文件名要加上后缀.c或.h;
(6)、在Eclipse窗口中输入需要的C程序和各个头文件,复制上述代码即可;
(7)、单击“Build'
Debug'
forproject'
test'
”,然后再单击“Runtest”运行。
(三)、其他可展示功能程序
十进制正整数转换为二进制或八进制
math.h>
intten_two(intnum)
inti=0;
intarr[20]={};
for(i=0;
1;
i++)
arr[i]=num%2;
num=num/2;
if(num==0)
for(;
i>
=0;
i--)
arr[i]);
returnarr[20];
intten_eight(intnum)
arr[i]=num%8;
num=num/8;
intmain(void)
intselect=0;
intnum=0;
inta[20]={};
请输入一个十进制整数\n"
num);
1-十进制转二进制,2-十进制转八进制\n"
select);
switch(select)
case1:
转换为二进制:
ten_two(num);
case2:
转换为八进制:
ten_eight(num);
您的输入有误,请重新输入!
运行结果如下:
请输入一个十进制数
8
1-十进制转二进制,2-十进制转八进制
1000
10
12
三、小结
这一周的课程设计是本学期所有课程设计里最令我纠结的一个,归根结底还是个大问题:
一个是基础知识掌握不牢;
二是就是设计时粗心大意,小错误不断;
三是检错能力差,不能根据报错结果找出错误原因。
以下是我设计时遇到的问题及解决方法:
1.编辑头文件时,分号容易漏掉,导致语法性错误
2.Makefile时gcc前面的空格一定要用TAB键,否则检测会报“缺少分隔符”
3.GCC的调试中出现了一些语法错误,gcc有很多种写法规则,因为类别太多导致容易混
淆。
4.编写Makefile不规范,错误很多,多目录下的makefile与同目录下的makefile虽然不同,但也有相同之处,不能做到举一反三。
5.关于如何在主程序下的makefile中引用add、sub等的makefile,通过查资料在陈浩编写的“跟我一起写Makefile”找到了答案。
问题看上去虽然不多,但每一个问题都曾使我焦头烂额很长时间,一直到星期四下午才把一切都弄好。
这次课程设计虽然给我带来了很多麻烦,但也同时激发了我对软件设计的挑战和兴趣,这次设计是结束了,但我会在课余时间继续专研,扩展自己该领域的知识面,不断的前进与挑战自我。
成绩
日期
批阅人
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 方法 实习 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)