5分而治之-模块化程序设计2
高级语言程序设计
第5章 分而治之 —模块化程序设计(3)
5分而治之-模块化程序设计2
复习函数的调用
5分而治之-模块化程序设计2
今天要解决的问题
问题5: 大规模问题求解 问题6: 简单的计算机绘图
5分而治之-模块化程序设计2
目标
熟悉多文件程序设计的方法(命令行、工程、 makefile) 理解文件模块的意义、变量或函数的文件作用 域(static 全局变量,extern外部变量、 static函数和外部函数) 知道接口的概念
5分而治之-模块化程序设计2
问题5: 大规模问题求解
很多实际问题的规模都比较大,可能要分解出很 多函数模块, 这些模块如果都和main函数放在一个源文件中, 不易管理和维护, 常常把它们划分到多个文件中 多文件如何编译、链接?
5分而治之-模块化程序设计2
(1)算术练习软件
设计一个2位整数的算术练习软件。要求首先显示如下的用户界面: 欢迎您参加算术练习,请选择: ======================= 1 加法 2 减法 3 乘法 4 除法 0 退出 ======================= 根据用户选择的1~4,为用户提供加法、减法、乘法或除法练习服 务。每次随机出题,用户回答,如果回答不正确请重做,如果正确, 问继续否y/Y or n/N?如果回答y/Y,继续出下一道题,否则重新显 示用户界面,等待用户选择。
5分而治之-模块化程序设计2
算法设计(顶层算法/主流程)
1 显示菜单界面 2 用户选择(1-4 或 0) 3 如果选择1 加法练习,继续?如果继续到(1)否则 到(9) 4 如果选择2 减法练习,继续?如果继续到(1)否则 到(9) 5 如果选择3 减法练习,继续?如果继续到(1)否则 到(9) 6 如果选择4 减法练习,继续?如果继续到(1)否则 到(9) 7 如果选择0 到(9) 8 如果输入了其它字符无效 9 结束
5分而治之-模块化程序设计2
算法设计(加法练习模块)
1 生成两个2位随机整数 2 列出加法算式 3 用户输入答案 4 如果答案正确 (5)否则输出错误信息返回 (2) 5 继续?如果继续返回(1)否则返回到主函 数
5分而治之-模块化程序设计2
算法实现(主函数)
int main(void) { char a; start: srand(time(NULL)); meau(); a=getch(); switch(a) { case '1':addtion();break; case '2':substraction();break; case '3':multiplication();break; case '4':division();break; case '0':exit(0); default:break; } goto start; return 0; }
5分而治之-模块化程序设计2
算法实现(加法练习函数)
void addtion(void) { int c; char d; do { make2Number(); printf("%d+%d=",x,y); scanf("%d",&c); while ( c != x+y ){ printf("wrong! try again please!\n"); printf("%d+%d=",x,y); scanf("%d",&c); } printf("right! continue?\n"); d=getch(); } while(d=='y'||d=='Y'); }
5分而治之-模块化程序设计2
单文件版
arithall.c 不足:程序不易维护
5分而治之-模块化程序设计2
多文件版
把程序分割为几个文件
arithmain.c arithfuncs.c arithfuncs.h查看代码 并注意几个不同的地方(static 变 量和static函数)
5分而治之-模块化程序设计2
几个新问题
全局变量(外部变量和文件作用域的全局变量) static 全局变量是只在所在的文件中使用 extern 变量在其它文件中也可以使用 外部函数(全局函数) extern 函数在所有的文件中都可以使用 内部函数(私有函数) static 函数是只在所在的文件中使用
5分而治之-模块化程序设计2
变量的链接(linkage)
外部链接 全局变量 内部链接 静态全局变量 无链接 静态局部变量
5分而治之-模块化程序设计2
多文件应用程序的编译和链接 ----命令行方法
分别编译 gcc –c arithmain.c gcc –c arithfuncs.c 然后链接 gcc –o arith.exe arithmain.o arithfuncs.o 也可以gcc –o arith.exe arithmain.c arithfuncs.c
5分而治之-模块化程序设计2
多文件应用程序的编译和链接 ----在集成环境中建立一个工程
新建一个console project 把 arithmain.c arithfuncs.c arithfuncs.h 添加到工程中 然后编译链接
…… 此处隐藏:150字,全部文档内容请下载后查看。喜欢就下载吧 ……