软件设计方法课程设计.doc_第1页
软件设计方法课程设计.doc_第2页
软件设计方法课程设计.doc_第3页
软件设计方法课程设计.doc_第4页
软件设计方法课程设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 习 报 告电子与信息工程学院实 习 报 告(20010 2011 学年 第 2 学期)课程名称: 软件设计方法 班 级: 电子 学 号: 姓 名: 指导教师: 牟峰 2012年 12月一、目的1、熟悉Linux下Shell命令的使用,能创建工作目录,并在相应的工作目录下创建子目录,学会使用makefile调用子目录中的makefile;2、用make指令编译四则运算的程序,实现实数的四则运算;3、学习Eclipse开发环境的使用,学会在Eclipse环境下对C语言的基本操作。二、内容和要求1 学习并掌握GCC 编译程序过程和方法;2 学习并掌握GDB 调试程序的方法;3 学习并掌握Make工程管理器的基本使用方法;4 学习并掌握工程中,文件和路径的安排;5 使用上述知识和技能,编写程序,完成实数的四则运算功能。/std/calculate/cal.c makefile /add/add.c add.h makefile /sub/sub.c sub.h makefile /mul/mul.c mul.h makefile /div/div.c div.h makefile一、 提高要求1 安装Eclipse开发环境;2 学习Eclipse开发环境的使用;3 在Eclipse下,编写程序,完成实数的四则运算功能;4 在Eclipse下,编写程序,完成1024点的FFT程序。二、 发挥部分根据自己的程序开发水平,完成其他可展示功能程序。三过程1、路径安排根据实验要求新建文件夹,在根目录下新建一个总文件加std,在其内新建calculate文件夹。在calculate下面新建分别建立主函数main.c主makefile以及加减乘除对应add sub multi divide几个子文件夹,在每一个子文件夹中又分别有.c和.h以及分makefile程序。/std/calculate/main.c makefile /add/add.c add.h makefile /sub/sub.c sub.h makefile /multi/multi.c multi.h makefile /divide/divide.c divide.h makefile2、各种程序代码(1) 加法 add.cfloat add (float number1, float number2) return number1 + number2;Add.h#ifndef ADD_H_#define ADD_H_float add(float a, float b);# endifmakefileadd.o:add.ccc -c -o add.o add.c(2) 减法 subsub.cfloat sub(float number1, float number2)return number1-number2;Sub.h#ifndef SUB_H_#define SUB_H_float sub (float number1, float number2);#endifMakefilesub.o:sub.ccc -c -o sub.o sub.c(3)乘法multimulti.cfloat multi(float number1,float number2)return number1*number2;Multi.h#ifndef MULTI_H_#define MULTI_H_float multi(float number1,float number2);#endifMakefilemulti.o:multi.ccc -c -o multi.o multi.c (4) 除法 dividedivide.cfloat divide (float number1,float number2)return number1/number2;Divide.h#ifndef DIVIDE_H_#define DIVIDE_H_float divide(float number1,float number2);#endifMakefiledivide.o:divide.ccc -c -o divide.o divide.c(5)主函数main.cmain.c#include#includeadd/add.h#includesub/sub.h#includedivide/divide.h#includemulti/multi.hint main(void) float number1 , number2; float one , two , three , four; printf(input 2 numbers:n); scanf(%f %f , &number1, &number2); one = add(number1,number2); two = sub(number1,number2); three = multi(number1,number2); printf(%f+%f=%fn,number1,number2,one); printf(%f-%f=%fn,number1,number2,two); printf(%f*%f=%fn,number1,number2,three); double e=10e-10; if(number2e) | (number2new- C source;(4)、新建头文件:file-new- C headfile;(5)、在source file中输入file name,这里要注意的是输入文件名一定要加上后缀.c或.h,否则编译不通过;(6)、在Eclipse窗口中可以输入我们需要的C程序和各个头文件 由于在LINUX的Shell命令中已经执行四则运算的功能,此处不再重复。 三、其他可展示功能程序 我的发挥部分是求最大公约数。 rootlocalhost # cd fahuirootlocalhost fahui# lsfun main main.c main.o makefilerootlocalhost fahui# cd funrootlocalhost fun# lsfun.c fun.h fun.o makefileFun.cint fun(int a,int b)int r,t;if(ab)t=a;a=b;b=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;return(b);Fun.hifndef FUN_H_#define FUN_H_int fun(int a,int b);#endifMakefilefun.o:fun.c cc -c -o fun.o fun.c Main.c #include#includefun/fun.hint main(void)int num1,num2,a;printf(input num1 num2: );scanf(%d%d,&num1,&num2);printf(num1= %d num2=%dnn,num1,num2);a=fun(num1,num2);printf(The maximum common divisor is %dnn,a);Makefileobj = main.o fun/fun.omain: $(obj) cc -o main $(obj)main.o:main.c cc -c -o main.o main.crootlocalhost fahui# ./maininput num1 num2: 49 21num1= 49 num2=21The maximum common divisor is 7四、小结本次实验我是第一个被检查的,说实在的打击蛮大的 ,但是与此同时收获也是蛮大的,当时老师检查我是发现我的问题是makefile没有实现完全调用可是我事后检查发现我的是可以调用的,只是当时老师检查时由于紧张,删完.o以后我是在std文件下make的 所以出现以下的问题:rootlocalhost std# makemake: * 没有指明目标并且找不到 makefile。 停止。下面我再次删除我的.o文件然后调试rootlocalhost std# makemake: * 没有指明目标并且找不到 makefile。 停止。rootlocalhost std# cd calculaterootlocalhost calculate# cd addrootlocalhost add# rm -rf add.orootlocalhost add# lsadd.c add.h makefilerootlocalhost add# cd .rootlocalhost calculate# cd subrootlocalhost sub# rm -rf sub.orootlocalhost sub# lsmakefile sub.c sub.hrootlocalhost sub# cd .rootlocalhost calculate# cd multirootlocalhost multi# rm -rf multi.orootlocalhost multi# lsmakefile multi.c multi.hrootlocalhost multi# cd .rootlocalhost calculate# cd dividerootlocalhost divide# rm -rf divide.orootlocalhost divide# lsdivide.c divide.h makefilerootlocalhost divide# cd .rootlocalhost calculate# makecc -c -o add/add.o add/add.ccc -c -o sub/sub.o sub/sub.ccc -c -o multi/multi.o multi/multi.ccc -c -o divide/divide.o divide/divide.ccc -o main main.o add/add.o sub/sub.o multi/multi.o divide/divide.orootlocalhost calculate# ./maininput 2 numbers:32 4332.000000+43.000000=75.00000032.000000-43.000000=-11.00000032.000000*43.000000=1376.00000032.000000/43.000000=0.744186总makefileobj = main.o add/add.o sub/sub.o multi/multi.o divide/divide.omain: $(obj) cc -o main $(obj)main.o:main.c cc -c -o main.o main.c所以我的实验是可以实现总makefile调用子makefile的。当然这个主要是我的操作还是不够熟练的,这主要是平时练习的不够导致的。此外,我还特地查找了关于#ifndef DIVIDE_H_#define DIVIDE_H_的知识,因为老师问我这个问题时我回答不上来。#ifndef DIVIDE_H_ /判断是否预定义标识符DIVIDE_H_,没有的话执行下面语句#define DIVIDE_H_ /预定义标识符#define指令 该指令有三种用法: 第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用; 第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,因为:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误 ); 第三种是定义函数,如#define get_max(a, b)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论