版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浦江学院实习报告( 2010 2011 学年 第 2 学期)课程名称:软件设计方法班级:学号:_姓名:_指导教师:_2011 年06 月实习报告一、内容和要求(一)、 基本要求1学习并掌握 GCC 编译程序过程和方法;2学习并掌握 GDB 调试程序的方法;3学习并掌握 Make 工程管理器的基本使用方法;4学习并掌握工程中,文件和路径的安排;5使用上述知识和技能,编写程序,完成实数的四则运算功能。/std/calculate/cal.cmakefile/add/add.cadd.h makefile/sub/sub.csub.hmakefile/mul/mul.c mul.h makefile
2、/div/div.c div.h makefile(二)、 提高要求1安装 Eclipse 开发环境;2学习 Eclipse 开发环境的使用;3在 Eclipse 下,编写程序,完成实数的四则运算功能;(三)、发挥部分根据自己的程序开发水平,完成其他可展示功能程序。-1-实习报告二过程(如实际程序开发、电子制作,详细说明有关原理、开发过程、调试过程、结果)(一)、在 LINUX 下 Shell 命令行内执行四则运算1、在 Linux 根目录 root 下创建自己的工作目录:rootlocalhost # mkdir stdrootlocalhost std# cd stdrootlocalho
3、st std#mkdir calculaterootlocalhost calculate#cd calculaterootlocalhost calculate#mkdir add sub mul divrootlocalhost calculate#lsadddivmulsub2.在上述的工作目录下编写四则运算的代码。(1) add 目录下rootlocalhost add# vi add.cfloat add(float a,float b)return a+b;rootlocalhost add# vi add.h#ifndef ADD_H_#define ADD_H_float ad
4、d(float a,float b);#endifrootlocalhost add# vi makefileadd.o: add.ccc -c -o add.oadd.c(2)sub目录下rootlocalhost sub# vi sub.cfloat sub(float a,float b)return a-b;- 11-实习报告rootlocalhost sub# vi sub.h#ifndef SUB_H_#define SUB_H_float sub(float a,float b);#endifrootlocalhost sub# vi makefilesub.o:sub.ccc
5、-c -o sub.osub.c(3) mul 目录下rootlocalhost mul# vi mul.cfloat mul(float a,float b)returna * b;rootlocalhost mul# vi mul.h#ifndef MUL_H_#define MUL_H_float mul(float a,float b);#endifrootlocalhost mul# vi makefilemul.o: mul.ccc -c -o mul.o mul.c rootlocalhost mul# vi makefile(4) div 目录下rootlocalhost di
6、v# vi div.cfloat div(float a,float b)return a/b;rootlocalhost div# vi div.h-12-实习报告#ifndef DIV_H_#define DIV_H_float div(float x,float y);#endifrootlocalhost div# vi makefilediv.o:div.ccc -c -o div.o div.c(5) calculate目录下rootlocalhost calculate#vi cal.c#include#includeadd.h#includesub.h#includediv.h
7、#includemul.hint main (void)int m= 1;float a= 0;float b =0;float sum= 0 ;float minus= 0;float multi= 0 ;float divide= 0;charc= 0;constfloat EPSILON = 1e-10;while(m=1)printf( 请输入两个实数 :n);scanf(%f %f,&a,&b);printf( 运算符号是 :n);scanf(%s,&c);switch (c)-1-实习报告case+ : sum = add(a,b);printf(%f+%f=%fn,a,b,sum
8、); break;case- : minus =sub (a,b);printf(%f-%f=%fn,a,b,minus); break;case* : multi =mul(a,b);printf(%f*%f=%fn,a,b,multi);break;case/ : if (b= -EPSILON)&(b= EPSILON)printf( 错误,除数不能为 0 !n);break;elsedivide = div (a,b);printf(%f/%f=%fn,a,b,divide);divide = div (a,b);printf(%f/%f=%fn,a,b,divide);break;d
9、efault : printf( 未知运算符! n);printf( 输入 1 继续,输入其他退出程序 !n);scanf(%d,&m);return 0;rootlocalhost calculate#vi makefilevpath %add.caddvpath %add.h addvpath %sub.csubvpath %sub.hsubvpath %mul.c mul-1-实习报告vpath %mul.h mulvpath %div.c divvpath %div.h divobj = cal.o add.osub.omul.o div.otest:$(obj)cc -o test$
10、(obj)cal.o :cal.c add.hsub.hmul.h div.hcc -c cal.c -I add -I sub -I mul -I divclean:rm -rf *.o上述程序中使用了gcc 与 makefile :在 LINUX 的终端命令中有gcc 指令 预处理 (Pre-Processing)使用 -E 参数可以让 GCC 在预处理结束后停止编译过程:# gcc -E hello.c -o hello.i 编译 (Compiling)下一步是将 hello.i 编译为目标代码 ,这可以通过使用 -c 参数来完成 :# gcc -x cpp-output c hello
11、.i -o hello.o或者# gcc -c hello.i -o hello.o 汇编 (Assembling) 链接 (Linking)# gcc hello.o -o hello Makefile 就是“自动化编译 ”,一旦写好,只需要一个 make 命令,整个工程完全自动编译。make 命令执行时,需要一个 Makefile 文件,以告诉 make 命令需要怎么样的去编译和链接程序。Makefile 的规则 :target . : mand.target 也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签( Labe
12、l)。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是 make 需要执行的命令。这是一个文件的依赖关系, target 这一个或多个的目标文件依赖于 prerequisites中的文件,其生成规则定义在 command中。 prerequisites中如果有一个以上的文件比 target 文件要新的话, command所定义的命令就会被执行。make 是如何工作的 :输入 make 命令。那么,-1-实习报告1、make 会在当前目录下找名字叫 “ Makefile或”“ makefile的”文件。2、如果找到,它会找文件中的第一个目标文件(
13、target),并把这个文件作为最终的目标文件。3、如果 edit 文件不存在,或是 edit 所依赖的后面的 .o 文件的文件修改时间要比 edit 这个文件新,那么,他就会执行后面所定义的命令来生成 edit 这个文件。4、如果 edit 所依赖的 .o 文件也存在,那么 make 会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。5、C 文件和 H 文件存在时 make 会生成 .o 文件,然后再用 .o 文件生命 make 的终极任务,也就是执行文件 edit 了。这就是整个 make 的依赖性, make 会一层又一层地去找文件的依赖关系,直到最
14、终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么 make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功, make 根本不理。 make 只管文件的依赖性。VpathMakefile 中如果没有指明 vpath 这个变量, make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么, make就会在当当前目录找不到的情况下,到所指定的目录中去找寻文件了。Vpath 的使用方法: vpath为符合模式 的文件指定搜索目录 。vapth 使用方法中的 需要包含“ %”字符。“ %”的意思是匹配零或若干字符,(需引用“ %”
15、,使用“ %)例如,“ %.h”表示所有以 “.h ”结尾的文件。 指定了要搜索的文件集,而 则指定了 的文件集的搜索的目录。(如果某文件在当前目录没有找到的话) 我们可以连续地使用 vpath 语句,以指定不同搜索策略。如果连续的 vpath 语句中出现了相同的 ,或是被重复了的 ,那么, make会按照 vpath 语句的先后顺序来执行搜索。3. 在 calculate 目录下使用 make 指令rootlocalhost calculate# makecc -c cal.c -I add -I sub -I mul -I divcc-c -o add.oadd/add.ccc-c -o
16、sub.osub/sub.ccc-c -o mul.o mul/mul.ccc-c -o div.o div/div.ccc -o testcal.o add.osub.omul.o div.o4. 运行四则运算程序rootlocalhost calculate# ./test请输入两个实数:5 4运算符号是 :+-1-实习报告5.000000+4.000000=9.000000输入 1 继续,输入其他退出程序!1请输入两个实数:5 4运算符号是 :-5.000000-4.000000=1.000000输入 1 继续,输入其他退出程序!1请输入两个实数:5 4运算符号是 :*5.000000*
17、4.000000=20.000000输入 1 继续,输入其他退出程序!1请输入两个实数:5 0运算符号是 :/错误,除数不能为0 !输入 1 继续,输入其他退出程序!2(二)、Eclipse 的学习使用在 Eclipse 下,编写程序,完成实数的四则运算功能( 1)、点击file 下的新建 (new)一个 C 工程( c project);( 2)、在出现的对话框中,输入 project name,点 Finsh,完成 project 的创建;( 3)、新建C 源程序: file-new- C source;( 4)、新建头文件:file-new- C headfile;( 5)、在sourc
18、e file 中输入 file name,输入文件名要加上后缀 .c 或 .h;( 6)、在Eclipse 窗口中输入需要的 C 程序和各个头文件,复制上述代码即可;(7)、单击“Build Debugfor project test” ,然后再单击“ Run test”运行。(三)、其他可展示功能程序十进制正整数转换为二进制或八进制#include#include-1-实习报告int ten_two(int num)inti=0;int arr20=;for( i = 0 ; 1 ; i+)arri = num % 2;num = num / 2;if(num = 0)break;for(;
19、 i=0;i-)printf(%d,arri);printf(n);return arr20;int ten_eight(int num)int i=0;int arr20=;for( i = 0 ; 1 ; i+)arri = num % 8;num = num / 8;if(num = 0)break;for(; i=0;i-)printf(%d,arri);printf(n);return arr20;int main(void)-1-实习报告int select= 0;int num = 0;int select= 0;int num = 0;int a20=;int i=0;printf( 请输入一个十进制整数 n);scanf(%d,&num);printf(1 - 十进制转二进制, 2 - 十进制转八进制 n);scanf(%d,&select);switch(select)case1 : printf( 转换为二进制 :n);ten_two (num);break;case2 : printf( 转换为八进制 :n);ten_eight(num);break;default : printf( 您的输入有误,请重新
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三级(高级)电子商务师理论测试题库及答案
- 2025年癌症放疗科放射治疗计划审核考核模拟试题及答案解析
- 学校安全整改报告
- 建设工程施工合同纠纷要素式起诉状模板拒绝无效格式
- 2026 年无财产离婚协议书规范模板
- 2026 年离婚协议书规范权威模板
- 物业公司员工培训管理制度
- 麻醉授权管理制度守则
- 职业卫生评价考试题库及答案
- 全国执业兽医资格证考试题库及答案(兽医公共卫生学)
- DB31T+1661-2025公共区域电子屏播控安全管理要求
- 医疗联合体儿童保健服务模式创新
- 2026年书记员考试题库附答案
- 中国高尿酸血症与痛风诊疗指南(2024更新版)课件
- 2025至2030中国专用车行业发展分析及投资前景与战略规划报告
- DB13∕T 6066.3-2025 国资数智化 第3部分:数据治理规范
- 2025郑州餐饮行业市场深度调研及发展前景与投资前景研究报告
- JBP计划培训课件
- 2025年白山辅警招聘考试题库及答案1套
- 特种设备外借协议书
- 三元股份财务风险控制研究
评论
0/150
提交评论