《2022年2022年计算器C程序设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算器C程序设计报告 .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算器 C 程序设计报告一. 设计要求运用 C语言所具有的函数,模仿画出计算器的界面,并实现计算器的基本功能:浮点数加、减、乘、除、乘方和求模运算。(1) 收集资料,全面分析课题,分析问题,形成总体编程思路。(2) 深入分析各个小问题,编写各部分程序模块并进行具体介绍。(如初始化函数、主窗口函数、计算器函数等等。 )(3) 上机调试,修改出现的错误,确保程序能正确运行。二. 设计的作用、目的(1)通过课程设计全面掌握 C 语言程序设计 关键知识点,掌握 C 语言中数组、 指针、结构体、各种函数等方面的基本知识。(2)通过课程设计了解并掌握C 语言程序设计的方法, 熟悉 C 程序设计的开发环境及
2、C程序的调试过程。(3)培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。(4)通过自己动手,培养、提高对编程的兴趣,为将来从事相关工作打好基础。三. 课题分析要实现计算器功能,先要输出计算器的样式,再是通过按键的方式实现数值的运算,故程序大致可分两部分实现,一部分是显示计算器,另一部分是实现计算功能。Turbo C提供了 PC系统环境下扩充的屏幕和图形支持系统,利用系统提供的字符屏幕处理函数和图形系统的有关信息以及函数的实现,这样就可以显示计算器了。计算功能主要解决的是接收按键信息的处理和进行识别,如果按键是数字符号, 要将其转变为操作数,如果
3、是运算操作符,则进行相应的处理。四. 设计的具体实现1系统组成模块结构及功能(1)Main 主函数设置了程序的流程, 首先初始化图形系统, 然后调用计算器 computer() 函数进行计算,当从计算器程序返回时,关闭图形系统,程序结束。(2)Initialize()初始化函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - Turbo C 通常的工作方式是字符文本模式,要显示图形,调用图形函数,则必须进入图形工作方式, 应首先
4、调用函数initgraph(&GraphDriver,&GraphMode,)初始化图形系统,并装入相应的图形驱动器。(3)Mwindow() 主窗口函数设置视口大小为当前窗口的一半,再调用drawboder() 函数画出边框。我们将可以在屏幕的左上角看到本程序的运行结果视口;(4)Drawboder() 画边框函数通过 getviewsettings(&vp) 函数把当前视口的信息装入由vp 所指向的结构中。 vp是 struct viewporttype类型,其结构定义如下:struct viewporttype int left,top,right,bottom;int clip;voi
5、d far rectangle(int left,int top,int right,int bottom);void far setlinestyle(int linestype,unsigned upattern); 域 left、top 、right 、bottom 中存放视口左上角和右下角的坐标。当clip为 0 时,不进行对超出视口边界输出的剪裁,否则,执行剪裁以防止超出边界。字符屏幕操作和图形函数的核心是窗口,它是屏幕的活动部分,在这个活动窗口中将显示输出。为保持两个系统的独立性,Turbo C 在字符屏幕和图形系统之间用了两个不同的术语。字符屏幕的函数提供了窗口,而图形系统提供了
6、视口, 但是当屏幕用字符模式时,左上角坐标为( 1,1) ,而在图形状态下,左上角坐标为(0,0) 。根据视口坐标,利用rectangle()函数画出矩形边框线。我们将可以在屏幕的左上角看到程序运行的窗口;(5)Computer() 计算器函数计算器函数是本程序的主要函数部分,其流程是先调用mwindow()主窗口函数显示一黄色边框的窗口,再在窗口中显示计算器,最后接收按键进行计算。为了合理布局、方便操作,根据窗口的大小设计按钮的大小和位置。读取当前窗口的大小后,设置了两个单位变量 width 和 height ,图形显示以这两个单位变量为计算单位,布局如下图所示:名师资料总结 - - -精品
7、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 注:w表示 width ;h表示 height 图中的符号按钮利用函数setfillstyle()设置用绿色实体进行填充,然后用bar() 函数画一个二维矩形条, setcolor()函数设置边框颜色, retangle()函数画一个矩形边框线,利用 outtextxy()函数将预先存储在strl中的字符串中的字符输出,因为outtextxy()输出的是字符串,所以先要用sprintf()函数将输出的字符写
8、入字符数组str2 ,转变为字符串,再输出。界面设置完成后,首先在第一个按钮位置显示光标,此时可以移动和按下光标,当按下 Alt+X 键时可以结束程序,否则执行循环判断移动的是哪一个光标键,变量m和 n 分别记录光标的坐标( x,y )位置,光标移动到某个位置按回车键后,则程序判断所按的是哪个字符,并进行相应的处理:当所选为数字或小数点,则先判断是否为负数,如果是负数则将符号连接到字符串中,否则只连接所选的数字或小数点,并显示数据;当所选为“ -”时,先判断有无操作数,如果没有操作则表示负数,组负数标记,否则是做减法,做减法标志,并将当前的操作数保存;当所选为“ +” 、 “*” 、 “/ ”
9、 、 “” 、 “% ”时,处理方式与( b)步骤一样,均是先保存第一个操作数,做为运算标志。准备接收第二个操作数;当所选为“ =”时,根据运算符号标志act 进行相应的运算,并结果显示;当所选为“ c”时,表示归零,所以将第一和第二操作数均置0;当所选为“ Q ”时,则结束运算,桌面切换到原程序桌面状态;(6)Arrow()设计图形鼠标函数由于在图形函数方式下,光标是不可见的,所以为了能正确地选择按钮,自己设计一个光标图形。方法是用fillpoly(8,raw)画一个由 raw 所指向的数组定义的8 个(x,y )坐标点所围成的封闭图形,用当前填充颜色对该形状进行填充后形状像鼠标的光标,利用
10、函2.5w h/2 w/2 h/2 h/2 1.5w 1 2 3 0 . 4 5 6 + - 7 8 9 * / Q C = % 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 数 imagesize() 测试图像和函数putimage(x,y,rar,XOR_PUT)操作实现光标图像的显示和隐藏;(7)Specialkey()读取特殊键函数利用函数 bioskey() 读取所按键的信息, int bioskey(int cm
11、d)函数原型在 bios.h中功能是完成直接键盘操作。如果 cmd是 0,bioskey() 返回下一个在键盘输入的值(它将等待到下一个按键)。它返回严格 16 位的二进制数,包括两种不同的值。当按下“普通键”时,它的低8 位数存放在该字符的 ASCII 码;对于“特殊键”,低 8 位为 0。特殊键包括箭头键、功能键等。高8 位字节存放该键的扫描码,所以程序中用到了语句key=bioskey(0),表示返回下一个在键盘上按下的键,并保存在变量key 中,key=key&0 xff:key8,对所按的键进行判断,如果 key&0 xff 为真,即低 8 位不为 0,则说明按下的是“普通键” ,因
12、为 0 xff16 进制数代表的二进制码高 8 位为 0,低 8 位为 1,和 0 相遇,结果为 0,和 1 相遇,结果保持原数,这样就将低 8 位(也就是该字符的ASCII 码值)赋给 key。如果 key&0 xff 为假,即低 8 位为0,署名按下的是“特殊键” ,将 key 右移 8 位后,也就是将其高8 位值赋给 key。Cmd 如果是 1,bioskey() 查询是否按下一个键时返回非0 值,否则返回 0 值,所以用while(bioskey(1)=0)语句等待按键。2系统程序结构及流程图有错开始初始化图形系统有错?进入图形系统输入 mun1、 mun2 和符号判断符号显示结果输入
13、 Q 结束输入 C 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 3重要函数介绍(1)int main() initialize(); computer(); closegraph(); return(0); 主函数,内有数个分函数。它规划了该程序的设计思路。首先初始化图形系统,然后调用计算器 computer() 函数进行计算,当从计算器程序返回时,关闭图形系统,程序结束。(2)void initialize(void)
14、getpalette( &palette ); MaxColors = getmaxcolor() + 1; MaxX = getmaxx(); MaxY = getmaxy(); getaspectratio( &xasp, &yasp ); AspectRatio = (double)xasp/(double)yasp; 进入图形模式,并设置模块大小,颜色等信息初始化图形。(3)while(v=specialkey()!=45) while(v=specialkey()!=ENTER) putimage(x,y,rar,XOR_PUT); if(v=RIGHT) if(x=x0+6*wid
15、th) x=x0; m=0; else x=x+width+width/2; m+; if(v=LEFT), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - if(v=UP), if(v=DOWN), putimage(x,y,rar,XOR_PUT); 显示光标并设置光标的上、下、左、右移动规则。(4)if(c=+) num1=atof(str2); /*将第一个操作数转换为浮点数*/ strcpy(str2,); /*将
16、str2 清空*/ act=1; /*做计算加法标志值 */ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,0.); /*显示字符串 */ if(c=-), if(c=*),if(c=/),if(c=),if(c=%),if(c=),if(c=c),if(c=Q),设置加、减、乘、除、归零和退出的功能(5)int arrow() int size; int raw=4,4,4,8,6,8,14,16,16,16,8,6
17、,8,4,4,4; setfillstyle(SOLID_FILL,2); fillpoly(8,raw); size=imagesize(4,4,16,16); rar=malloc(size); getimage(4,4,16,16,rar); putimage(4,4,rar,XOR_PUT); return 0; 设置鼠标图形(6)int specialkey(void) int key; while(bioskey(1)=0); key=bioskey(0); key=key&0 xff? key&0 xff:key8; return(key); 设置键盘的输入名师资料总结 - -
18、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 4程序代码编写及注释#include /*DOS接口函数 */ #include /*数学函数的定义 */ #include /*屏幕操作函数 */ #include /*I/O函数*/ #include /*库函数 */ #include /*变量长度参数表 */ #include /*图形函数 */ #include /*字符串函数 */ #include /*字符操作函数 */ #define
19、UP 0 x48 /*光标上移键 */ #define DOWN 0 x50 /*光标下移键 */ #define LEFT 0 x4b /*光标左移键 */ #define RIGHT 0 x4d /*光标右移键 */ #define ENTER 0 x0d /*回车键 */ void *rar; /*全局变量,保存光标图象 */ struct palettetype palette; /*使用调色板信息 */ int GraphDriver; /* 图形设备驱动 */ int GraphMode; /* 图形模式值 */ int ErrorCode; /* 错误代码 */ int MaxC
20、olors; /* 可用颜色的最大数值 */ int MaxX, MaxY; /* 屏幕的最大分辨率 */ double AspectRatio; /* 屏幕的像素比 */ void drawboder(void); /*画边框函数 */ void initialize(void); /*初始化函数 */ void computer(void); /*计算器计算函数 */ void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/ void mwindow(char *header); /*窗口函数 */
21、int specialkey(void) ; /*获取特殊键函数 */ int arrow(); /*设置箭头光标函数 */ /* 主函数*/ int main() initialize();/*设置系统进入图形模式 */ computer(); /* 运行计算器 */ closegraph();/*系统关闭图形模式返回文本模式*/ return(0); /*结束程序 */ /* 设置系统进入图形模式 */ void initialize(void) int xasp, yasp; /* 用于读 x 和 y 方向纵横比 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
22、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - GraphDriver = DETECT; /*自动检测显示器 */ initgraph( &GraphDriver, &GraphMode, ); /* 初始化图形系统 */ ErrorCode = graphresult(); /* 读初始化结果 */ if( ErrorCode != grOk ) /*如果初始化时出现错误 */ printf(Graphics System Error: %sn, grapherrormsg( ErrorC
23、ode ) ); /*显示错误代码 */ exit( 1 ); /*退出*/ getpalette( &palette ); /* 读面板信息 */ MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值 */ MaxX = getmaxx(); /* 读屏幕尺寸 */ MaxY = getmaxy(); /* 读屏幕尺寸*/ getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中 */ AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值 */ /* 计算器函数 */ void co
24、mputer(void) struct viewporttype vp; /*定义视口类型变量 */ int color, height, width; int x, y,x0,y0, i, j,v,m,n,act,flag=1; float num1=0,num2=0,result; /*操作数和计算结果变量 */ char cnum5,str220=,c,temp20=; char str1=1230.456+-789*/Qc=%;/* 定义字符串在按钮图形上显示的符号 */ mwindow( Calculator ); /* 显示主窗口 */ color = 7; /*设置灰颜色值 */
25、 getviewsettings( &vp ); /* 读取当前窗口的大小 */ width=(vp.right+1)/10; /* 设置按钮宽度 */ height=(vp.bottom-10)/10 ; /*设置按钮高度 */ x = width /2; /*设置 x 的坐标值 */ y = height/2; /* 设置 y 的坐标值 */ setfillstyle(SOLID_FILL, color+3); bar( x+width*2, y, x+7*width, y+height ); /*画一个二维矩形条显示运算数和结果*/ setcolor( color+3 ); /*设置淡绿
26、颜色边框线 */ rectangle( x+width*2, y, x+7*width, y+height ); /*画一个矩形边框线 */ setcolor(RED); /*设置颜色为红色 */ outtextxy(x+3*width,y+height/2,0.); /*输出字符串 0.*/ x =2*width-width/2; /*设置 x 的坐标值 */ y =2*height+height/2; /*设置 y 的坐标值 */ for( j=0 ; j4 ; +j ) /*画按钮 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
27、 - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - for( i=0 ; i=x0+6*width) /*如果右移,移到尾,则移动到最左边字符位置*/ x=x0; m=0; else x=x+width+width/2; m+; /*否则,右移到下一个字符位置*/ if(v=LEFT) /*左移箭头时新位置计算 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - -
28、- if(x=x0) x=x0+6*width; m=4; /*如果移到头,再左移,则移动到最右边字符位置*/ else x=x-width-width/2; m-; /*否则,左移到前一个字符位置*/ if(v=UP) /*上移箭头时新位置计算 */ if(y=7*height) y=y0; n=0; /*如果移到尾,再下移,则移动到最上边字符位置*/ else y=y+height+height/2; n+; /*否则,移到下边一个字符位置*/ putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ c=str1n*5+m; /*将字符保存到变量c 中*/ i
29、f(isdigit(c)|c=.) /*判断是否是数字或小数点*/ if(flag=-1) /*如果标志为 -1,表明为负数 */ strcpy(str2,-); /*将负号连接到字符串中 */ flag=1; /*将标志值恢复为 1*/ sprintf(temp,%c,c); /*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将 temp中的字符串连接到str2 中*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - -
30、 - - - - - - - setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,str2); /*显示字符串 */ if(c=+) num1=atof(str2); /*将第一个操作数转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=1; /*做计算加法标志值 */ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2
31、,15*width/2,3*height/2); outtextxy(5*width,height,0.); /*显示字符串 */ if(c=-) if(strcmp(str2,)=0) /*如果 str2 为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志 */ else num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=2; /*做计算减法标志值 */ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*wi
32、dth/2,3*height/2); /*画矩形 */ outtextxy(5*width,height,0.); /*显示字符串 */ if(c=*) num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=3; /*做计算乘法标志值 */ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,0.); /*显示字符串 */ if(c=/) nu
33、m1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=4; /*做计算除法标志值 */ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,0.); /*显示字符串 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17
34、 页 - - - - - - - - - if(c=) num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=5; /*做计算乘方标志值 */ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充 */ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形 */ outtextxy(5*width,height,0.); /*显示字符串 */ if(c=%) num1=atof(str2); /*将第二个操作数
35、转换为浮点数*/ strcpy(str2,); /*将 str2 清空*/ act=6; /*做计算模运算乘方标志值 */ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充 */ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形 */ outtextxy(5*width,height,0.); /*显示字符串 */ if(c=) num2=atof(str2); /*将第二个操作数转换为浮点数*/ switch(act) /*根据运算符号计算 */ case 1:result=num
36、1+num2;break; /*做加法 */ case 2:result=num1-num2;break; /*做减法 */ case 3:result=num1*num2;break; /*做乘法 */ case 4:result=num1/num2;break; /*做除法 */ case 5:result=pow(num1,num2);break; /*做 x 的 y 次方*/ case 6:result=fmod(num1,num2);break; /*做模运算 */ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充 */ bar(2*wid
37、th+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区 */ sprintf(temp,%f,result); /*将结果保存到 temp 中*/ outtextxy(5*width,height,temp); /*显示结果 */ if(c=c) num1=0; /*将两个操作数复位 0,符号标志为 1*/ num2=0; flag=1; strcpy(str2,); /*将 str2 清空*/ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充 */ bar(2*width+width/2,height
38、/2,15*width/2,3*height/2); /*覆盖结果区 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - outtextxy(5*width,height,0.); /*显示字符串 */ if(c=Q)exit(0); /*如果选择了 q 回车,结束计算程序 */ putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/ return; /*返回*/ /* 窗口函数 */ voi
39、d mwindow( char *header ) int height; cleardevice(); /* 清除图形屏幕 */ setcolor( MaxColors - 1 ); /* 设置当前颜色为白色 */ setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); /* 设置视口大小 */ height = textheight( H ); /* 读取基本文本大小 */ settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式 */ settextjustify( CENTER_TEXT, TOP_TEXT );
40、/*设置字符排列方式 */ outtextxy( MaxX/4, 2, header ); /*输出标题 */ setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小 */ drawboder(); /*画边框 */ void drawboder(void) /*画边框 */ struct viewporttype vp; /*定义视口类型变量 */ setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*/ setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设
41、置画线方式 */ getviewsettings( &vp );/*将当前视口信息装入vp 所指的结构中 */ rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*画矩形边框 */ /* 设计鼠标图形函数 */ int arrow() int size; int raw=4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4; /*定义多边形坐标 */ setfillstyle(SOLID_FILL,2); /*设置填充模式 */ fillpoly(8,raw); /*画出一光标箭头 */ size=imagesiz
42、e(4,4,16,16); /*测试图象大小 */ rar=malloc(size); /*分配内存区域 */ getimage(4,4,16,16,rar); /*存放光标箭头图象 */ putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象 */ return 0; /* 按键函数 */ int specialkey(void) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - int key; whi
43、le(bioskey(1)=0); /*等待键盘输入 */ key=bioskey(0); /*键盘输入 */ key=key&0 xff? key&0 xff:key8; /*只取特殊键的扫描值,其余为0*/ return(key); /*返回键值 */ 5软件调试问题分析及解决方法第一次找到计算器的程序后匆忙运行,出现8 个错误,而且都看不懂,经查找,才发现是因为编程语言不对,选用了java 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - -
44、 - - - - - 第二次又由于疏忽,在最后少加了一个大括号6. 软件运行结果在 TC上编写计算器程序检查程序没有错误名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - 计算器程序运行界面输入 1+2运行结果四心得体会及建议通过此次 C语言程序设计实践 , 本人实在是获益不浅 !C 语言是上个学期开的课程 , 所以这个学期并没怎么看过, 当要开始设计的时候 , 还真不知从哪下手 ! 结果 , 第一次上机 , 我坐名师资料总结
45、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 了一个下午 , 只找到个源程序,而且也看不懂,什么也没干! 回去以后 , 我想, 这样不行 , 这样下去还得了 ! 我就重新学了一遍我们上个学期的教材, 发觉自已有许多都遗忘了! 经过温习,和资料的查找,再去看源程序终于觉得有些头绪了。通过这次课程设计,理解了一些编译程序的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上
46、学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。使我对C语言的使用得到了的提高。我觉得对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的。一个好的结构在运行中能够充分的发挥程序的功能。结构设计的合理性决定了这个程序的价值。在今后的学习中我要注意这方面,使得我的编程能力能有进一步的提高。这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。我觉得编写类似的程序其中最重要的一个方面就是要认真, 认真编写代码可以大大减少错误的出现;其次是要有耐心,勇于克服困难, 不断解决问题, 面对困难要永不退缩, 迎难而上; 再次是要有清晰的思维,能够理清各个函数之间的关系,明确各个函数的职能;最后还要和同学多交流合作,多参考书籍。五参考文献(1) 郭翠英C语言课程设计案例精编中国水利水电出版社 2004.3 (2) 谭浩强C程序设计 ( 第二版 ) 清华大学出版社 2005.8 (3)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -