开发板编程四则运算计算器流程图
四则运算计算器
基于单片机实现的四则运算计算器姓名学号:班级:专业名称:测控技术与仪器指导教师:东北大学2016年1月课程设计(论文)任务书目录课程设计(论文)任务书................................................................................................ i i 摘要 (1)第1章绪论 (2)1.1计算器简介 (2)1.2设计主要内容 (2)第2章系统硬件设计 (4)2.1硬件组成 (4)2.2输入模块 (4)2.3输出模块 (5)2.4运算模块 (5)第3章系统软件设计 (7)3.1 主程序 (7)3.1.1主程序框图及初始化 (7)3.1.2LCD程序框图及初始化 (8)3.1.3键盘程序框图及初始化 (9)3.1.4运算程序框图 (10)第4章调试测试与实验分析 (11)4.1 计算器调试 (11)参考文献 (12)心得体会 (13)附录硬件原理图及PCB图 (14)附录程序清单 (15)附录实物照片 (28)摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本设计是基于89C52RC单片机来进行的四则运算计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除的基本四则运算,并在LCD1602液晶显示屏上显示相应的结果。
本电路采用89C52RC单片机为主要控制电路,利用4*4矩阵键盘作为计算器以及运算符的输入。
显示采用字符LCD静态显示。
软件用C语言编程,并用开发板进行演示。
关键词:计算器,89C52RC单片机,LCD,矩阵键盘第1章绪论1.1计算器简介计算器是现代人们发明的可以进行数字运算的电子机器。
现代的电子计算器能进行数学运算的手持电子机器,除显示计算结果外,还常有溢出指示、错误指示等,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易和学习计算中,是必备的学习和办公用品之一[1]。
C++课件案例三四则运算计算器
本课件将介绍如何用C++编写一个能进行四则运算的计算器。我们将学习输入 和输出的基本原理、不同的数据类型、各种运算符,以及实现一个完整的计 算器的方法。
输入
接收用户输入
理解用户输入并将其用 于计算。
验证输入
确保输入符合预期的格 式与范围。
错误处理
处理无效的或错误的输 入,避免程序崩溃。
小结
学习了四则运算的 基本原理
掌握了输入、数据类型 和运算符的应用。
实现了一个简单的 计算器
了解了计算器的核心算 法和实现方法。
准备迈向更高级的 计算机编程
为进一步学习提供了扎 实的基础。
2
中缀表达式求值
将中缀表达式转换为后缀表达式,然后进行运算。
3
后缀表达式求值
根据后缀表达式的规则进行运算,并得到最终结果。
计算器核心算法
栈的应用
使用栈来实现表达式求值 的算法,保证运算符和操 作数的顺序。
递归思想
利用递归来处理嵌套的表 达式,实现复杂运算。
优先级与结合性
考虑运算符的优先级和结 合性,避免运算结果出现 错误。
数据类型
整数类型
用于存储整数,支持基本的算术运算。
浮点数类型
用于存储小数,支持精确的数学运算。
字符类型
用于存储单个字符,可以进行逻辑运算。
字符串类型
用于存储文本,支持字符串连接与比较。
运算符
1 加法 3 乘法2 减法4 除法计算器实现1
前缀表达式求值
根据前缀表达式的规则进行运算,并得到最终结果。
第6章 四则运算计算器
第6章四则运算计算器本章介绍的项目是大家十分熟悉的计算器,通过该项目的实践,我们将学习状态图的一些基本知识、C# 中方法的概念和应用以及键盘事件的运用,同时,训练编写一个略微复杂的Windows应用程序的设计思路。
为了使读者能够循序渐进地学习此类项目的设计,我们根据难度的不同,分为三个项目分别实现,首先完成项目一:整数的四则运算计算器,然后在此基础上完善,实现项目二:实数四则运算计算器,最后添加记忆功能,完成项目三:带记功能的实数四则运算计算器。
6.1 项目一:整数四则运算计算器设计6.1.1 工作目标终极目标:完成一个整数四则运算的计算器,界面如图6.1所示:图6.1 整数四则运算计算器促成目标:1.完成整数四则运算计算器整体设计——状态机分析;2.完成整数四则运算模块设计——流程分析;3.完成整数四则运算计算器的程序界面设计及属性设置;4.完成整数四则运算器的程序编码;5.对整数四则运算计算器进行必要的运行测试,如有错误进行调试修改。
6.1.2 工作任务工作任务一:构建计算器的状态图;工作任务二:设计程序模块的流程图;工作任务三:设计界面完成窗体及控件的属性设置;工作任务四:编写程序代码;工作任务五:测试软件,对错误进行调试修改。
6.1.3 工作任务一:构建计算器的状态图1、知识准备——状态图状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的。
状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。
状态机由状态组成,各状态由转移链接在一起。
状态是对象执行某项活动或等待某个事件时的条件。
转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。
图6.2描绘了状态机的各种元素。
图6.2 状态机的各种元素一个简单的编辑器可被视为有限的状态机,其状态为Empty(空)、Waiting for a command(等待命令)和Waiting for text(等待文本)。
简单WINDOWS小程序设计——四则运算计算器
简单WINDOWS小程序设计——四则运算计算器实验一:简单WINDOWS小程序——四则运算计算器题目基本要求:创建一个Windows程序,在文本框中输入两个整数,按“计算”按钮后输出这两个整数的和、差、积、商。
程序运行范例参见所提供的范例。
程序设计的具体要求如下:(1)用户在两个文本框中输入2个整数后单击“计算”按钮,可在标签框中显示计算结果。
(2)要求计算结果标签框中的内容分行显示(3)当除数输入为0以及输入的是非数值时,观察程序的运行状态,为什么?程序提示:(1)每个一在窗体中的控件都应该是一个对象,其中name属性为该控件在程序中的名字。
(不能使用汉字)(2)文本框控件为:Textbox,其中text属性即为用户输入的文本,其类型为字符串类型(3)字符串String 为系统已经定义的一个类,其中有很多可以直接使用的方法,如:字符串连接、字符串复制等等。
(4)通过文本框输入的数据类型是字符串,并不能直接用于数值计算,同理,计算之后的结果也不能直接显示在文本框或者标签中,需要转换!相关代码和使用到的方法如下:int.Parse(txtNumber1.Text)//将字符串txtNumber1.Text转换为相应的整数,不考虑字符串输入错误,不能转换为整数的情况。
int x = 5;txtNumber1.Text =x.ToString();//将整数转换成字符串并赋值给文本框的text属性。
(5)和C语言一样,在C#/C++中,整数和整数相除仍然得整数。
(6)要分行显示,可以使用回车,但它是转义字符,为\n,比如:string s1=”abc”+”\n”+”efg”,可以实现字母的分行显示(7)所谓文本框清空,也就是文本框的text属性值为空串。
也可以使用clear()事件(8)在Windows窗体程序中,经常使用label控件(标签)完成显示和输出,属性text 用于显示,类型为字符串。
(9)C#中,类的全部属性和方法定义都是放在类中的。
Python编程基础与应用 简单四则运算计算器[3页]
简单四则运算计算器【案例描述】使用面向对象编程思想,编写一个简单的四则运算器。
可以通过数值的输入,进行整数四则运算,并且能够反复运算,直至输入退出信息为止。
【案例分析】1)按要求设计一个计算器类,包含四个运算方法。
2)为了使程序可以反复运算,直到选择退出为止,可以使用while循环语句实现。
3)开始运行时,需要用户输入两个需要计算的数,和输入需要运算的法则。
4)创建一个计算器对象,根据运算的法则调用对象中相应的方法,完成计算任务。
它用到的技术点有以下几方面:定义计算器类,定义类的方法和属性。
通过选择判断结构选择对象对应的方法执行运算。
【实施步骤】新建Python文件“computer.py”,输入以下代码。
class Computer:one=0two=0op=''result=0#构造函数def __init__(self,sone,stwo):self.one=soneself.two=stwo#定义加法def addone(self):result=one+tworeturn result#定义减法def minus(self):result = one - tworeturn result#定义乘法def multiply(self):result = one * tworeturn result#定义除法def division(self):result = one / tworeturn result#实例化类,调用它进行计算print("本程序是一个简易的四则运算计数器.")flag = Truewhile flag:one = int(input("请输入第一个数:"))two = int(input("请输入第二个数:"))operation = input("请输入要执行的四则运算(+-*/):")cp=Computer(one,two)if operation == '+':print(cp.addone())elif operation == '-':print(cp.minus())elif operation == '*' or operation == 'x':print(cp.multiply())elif operation == '/' or operation == '÷':print(cp.division())else:print("输入有误!")while True:Continue = input("是否继续?y/n:")if Continue == 'y':breakelif Continue == 'n':while_condition = Falsebreakelse:print("输入有误,请重新输入!")【调试结果】可以直接在文件夹路径中双击“computer.py”文件,即可调用,输入需要运算的两个数以及运算符号后,程序会自动进行计算,效果如图1所示。
简单的四则运算计算器程序
简单的四则运算计算器程序
实验目的与要求: 目的: 1、掌握类、构造函数/析构函数、栈等概念,掌握字符串操作; 2、步了解类的设计方法,初步了解词法分析、表达式求值的算符优先算法等 内容。 要求:
cout<<"程序错误,0作为除数出现!";
} else
a=a/b; }break; case '+':a=a+b;break; case '-':a=a-b;break; default:{}break; } Operand oper(a); sOperand.push(oper);
//cout<<"计算,并将结果压:"<<sOperand.getTop().get()<<"入栈\n";
char ch=temp[0]; double a,b; if(ch=='(') {
Operator oper('('); sOperator.push(oper);
//cout<<"符号:"<<sOperator.getTop().get()<<"入栈\n";
} else if(ch==')') {
//cout<<"计算,并将结果压:"<<sOperand.getTop().get()<<"入栈\n";
2四则运算计算器
四则运算计算器本案例知识要点● Visual C++ 6.0下创建MFC AppWizard (exe )并运行的方法● 利用常用控件来设计程序界面● 为控件添加事件处理程序一、案例需求1.案例描述设计一个四则运算器,要求能够进行加、减、乘、除运算。
2.案例效果图四则运算计算器运行效果如图3-1所示。
从前两个文本框中分别输入参加运算的两个操作数,鼠标点击下边的运算方式按钮时,在第三个文本框中显示运算结果。
3.功能说明(1)通过操作界面输入参加运算的操作数并选择运算符,将运算结果显示出来。
(2)能够进行整数运算和小数运算。
二、案例分析本案例通过简单的MFC 来实现四则运算,由于系统界面相对较为简单,所以通过建立简单的单文档类型的应用程序来实现系统操作界面。
通过文本框控件来获得用户输入和显示计算结果,通过按钮控件来实现运算方式选择以及相应的事件处理程序代码来实现具体运算过程。
三、案例设计基于上述分析,定义一个calculators 类来实现两个数据的四则运算,calculators 类结构如图3-2所示。
● 数据成员double Number1用来表示参加运算的第一个操作数。
double Number2用来表示参加运算的第二个操作数。
本例可执行文件下载: 下载函数成员void calculators(double dNumber1,double dNumber2)构造函数,用来初始化参加运算的两个操作数。
double Add()实现两个操作数的加法运算并返回运算结果。
double Sub()实现两个操作数的减法运算并返回运算结果。
double Mul()实现两个操作数的乘法运算并返回运算结果。
double Div()实现两个操作数的除法运算并返回运算结果。
四、上机过程利用MFC在Visual C++ 6.0环境下创建应用程序,是Visual C++强大功能最有力的体现。
利用MFC,可以创建“多文档类型”、“单文档类型”、“基于对话框类型”等不同类型和规模的应用程序。
四则运算计算器程序设计javagui
四则运算计算器程序设计(java-gui) 四则运算计算器程序是一种常见的计算机程序,用于执行基本的数学运算,包括加法、减法、乘法和除法。
本文将介绍如何设计一个使用Java GUI实现的四则运算计算器程序。
首先,我们需要创建一个Java GUI窗体,用于显示计算器的界面。
可以使用Java Swing或JavaFX来创建窗体,本文以Java Swing为例。
可以使用JFrame类来创建一个窗体,并添加各种组件,如按钮、标签和文本框等。
在窗体中,我们需要添加一个文本框用于输入表达式和显示结果。
可以使用JTextField类来创建一个文本框,并设置合适的大小和位置。
另外,我们还需要添加一些按钮来表示数字和运算符,可以使用JButton类来创建按钮,并将其添加到窗体中。
接下来,我们需要为按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
例如,当用户点击数字按钮时,我们需要将相应的数字添加到文本框中;当用户点击运算符按钮时,我们需要将相应的运算符添加到文本框中;当用户点击等号按钮时,我们需要解析文本框中的表达式,并执行相应的运算。
为了实现四则运算,我们可以使用Java的数学库来执行相应的运算。
例如,可以使用Integer.parseInt方法将文本框中的字符串转换为整数,使用加法运算符执行加法运算,使用乘法运算符执行乘法运算等。
在解析和执行表达式时,我们需要考虑一些错误情况,例如除数为零或表达式不合法等。
可以使用try-catch语句来捕获这些异常,并显示相应的错误信息。
最后,我们需要将计算结果显示在文本框中,并提供清除按钮,以便用户可以清除文本框中的内容。
可以使用setText方法将计算结果显示在文本框中,使用setText("")方法来清除文本框中的内容。
综上所述,一个基本的四则运算计算器程序的设计包括创建窗体、添加组件、添加事件监听器、解析和执行表达式、处理异常和显示结果等步骤。
四则运算训练器软件C语言开发(软件代码+软件说明)
软件名称:四则运算训练器软件功能介绍:该软件主要用于训练并测试使用者的四则运算能力。
进入软件主界面,界面上会显示3个选项,分别是:1.10以内的四则运算训练。
2.20以内的四则运算训练。
0.退出。
使用者根据自己的需要选择不同的选项:按“1”进入10以内的四则运算训练;按“2”进入20以内的四则运算训练;按“0”退出程序主界面。
10以内的四则运算和20以内的四则运算均为10题一组;在这10个题中,加减乘除均有,操作数均为整数,且加减乘除出现的顺序不定,除法给出的两个操作数能除尽。
对于给出的题目,当操作者计算正确时,操作界面上无特殊显示;当操作者计算错误时,操作界面上会显示“FAULT!”,提示操作者该题计算错误并同时进入下一题。
操作者每做完10道题,界面上会显示此轮计算的正确率,并询问操作者是否继续。
此时操作者可根据自己的需要,按“1”进入10以内的四则运算训练;按“2”进入20以内的四则运算训练;按“0”退出程序主界面。
程序代码:#include <stdio.h>#include <stdlib.h>#include <time.h>void calculation1();void calculation2();void main(){int number;char m;redo:printf("\t\t\t欢迎进入四则运算训练营!\n\n\n\n"); printf("<1>.10以内的四则运算系列.\n");printf("<2>.20以内的四则运算训练.\n");printf("<0>.退出.\n\n");printf("请选择功能号( 1 / 2 / 0 ): ");scanf("%d",&number);srand((unsigned)time(0));loop: if(number==1) calculation1();else if(number==2) calculation2();else exit(0);printf("\n\n");printf("继续吗?(Y/N):");getchar();scanf("%c",&m);if(m=='Y') goto loop;if(m=='N') goto redo;}void calculation1(){int i,j,n=0;int a1,a2,result;float rate;char c='%';printf("您选择的是10以内的四则运算。
四则运算计算器数字电路设计
四则运算运算计算器数字电路设计由于加减乘除计算器的各电路较复杂,就不将其组合在一起了,以下是各个加法,减法,乘法,除法计算器的单独电路图,其中输入均采用二进制四位输入。
一.加法计算器这个较为简单,可以直接利用中规模四位全加器74LS283,即可制成加法计算器。
电路图:A4 A3 A2 A1 为二进制被加数;B4 B3 B2 B1 为二进制加数;SUM4 SUM3 SUM2 SUM1 为二进制得数。
加上输入输出后如图所示:仿真图形为:前四个图像为被加数,中间四位为加数,后四位为得数。
由此可看出,已成功制成加法计算器。
二.减法计算器电路图:利用数据选择器和四输入与非门,可以实现减法计算器的功能,其中,C1 C2 C3 C4为四位二进制被减数输入端;B1 B2 B3 B4 为四位二进制减数输入端;输出端 27 26 25 24 为得数。
加上输入输出后如图所示:仿真图形如下:前四位为被减数,中间四位为减数,最下面四位为得数,由仿真图形可看出,已成功制成减法计算器。
三.乘法计算器利用中规模四位全加器74LS283和而输入与门可以实现乘法计算器功能。
其中,输入端4 3 2 1 为二进制四位被乘数,输入端5 6 7 8 为二进制四位乘数,输出端54 50 51 52 53 49 48 46 47为得数。
电路图如下:加上输入输出后:仿真图形为:1被乘数和乘数:2得数:由仿真图形可以看出,已成功制成了乘法计算器。
四.除法计算器这个实在是太难了,想了好久也没想到怎么设计,作业催的紧,就只好先不做了,请老师见谅,哈!以上就是四则计算器的数字电路设计与仿真。
ASP 四则混合运算计算器
<td><input type="text" size=5 name="ca">
/ <input type="text" name="cb" size=5></td>
<td> = <input type="text" name="total3" size=5></td>
<td><input type="button" value="计算" onClick="equa3()"></td>
<tr><td>
<input type="text" size=5 name="aa">
- <input type="text" name="ab" size=5>
</td>
<td> = <input type="text" name="total1" size=5></td>
<td><input type="button" value="计算" onClick="equa1()"></td>
(2)左键单击【文件】|【存】命令,弹出另存为对话框。在对话框的【文件名】中输入Calculator.asp,【保存类型】的下拉列表框中选择“Active Server Pages(*.asp;*.asa)”,单击【保存(S)】按钮。
四则运算计算器程序设计(java-GUI)
三、 布局设计
如右图所示的布局方式, 整体分为三部分,使用三个 中间容器即可实现此种布局。 构造方法用于布局的实现, 在构造方法中申明和初始化 三个中间容器 p1、p2、p3, 其中 p1 存放显示控件,位于 窗体的上部;p2 存放数字键, 位于窗体的左部;p3 存放功能键和运算符按钮,位于窗体的右部。p1 使用 FlowLayout 布局, 并设置对齐方式为左对齐;p2 和 p3 使用 GridLayout 布局,网格规模分别为 4*3 和 3*3。窗 体布局使用 BorderLayout 布局,按图所示分别使 p1 在 NORTH 位置,p2 在 WEST 位置,p3 在 CENTER 位置。
布局的方式有多种多样,读者可以有自己的创新,不局限与这一种布局方式。
四、 事件处理响应
通过实现 ActionListener 接口中的 public void actionPerformed(ActionEvent e)方法,将事 件处理全部集中在 actionPerformed(ActionEvent e)方法中。首先在构造方法中为所有的 JButton 对象添加监听器,在 actionPerformed(ActionEvent e)方法中,首先有一个 JButton 类 型的变量用来获取事件源的引用,然后程序根据事件源的不同做出不同的响应。
for( i=0 ; i<11 ; i++)//为所有的按钮添加监听器 button_num[i].addActionListener(this);
for( i=0 ; i<7 ; i++) button_bol[i].addActionListener(this);
四则运算计算器的程序编写
四则运算计算器一、程序功能简介可以计算整数四则运算,例如:7+5*(3+4)二、课程设计要求(1)按要求在提供的框架程序源程序的基础上对程序进行修改、补充,并调试通过。
(2)修改主程序结构,使程序可以反复运算,直到选择退出为止。
(3)增加文件的输入输出功能,是计算过的式子和结果可以根据需要设置命令存储到文件中,同时也可以直接从文件中输入四则运算的式子,运算后,结果输出到原文件中。
(4)扩充程序功能,使程序适合实型数运算。
(5)增加程序的判断功能,当有非法的输入时(如字母等),给出提示信息并退出运算。
(6)扩充程序功能,使程序可以进行关系表达式(>=,>,<=,<,==等)的运算,运算结果为TRUE 或FALSE 。
在VC++6 环境下编译已经完美实现上述功能注:包含Debug 的语句如:if (Debug) printf(""); 都可以忽略,这些显示是编写工程中需要观察的信息,如果要打开,请在主菜单下输入大写的'D'。
Log:20060703 开始分析框架程序,并规划程序结构20060704 计算的核心部分基本完成,并封装成Operation()20060705 编写Menu_Sel() Do_Press() strChk() Do_File() FileCHK() Nexus() 整体功能和界面基本完成20060706 强化strChk(),增加Debug 模式,修正符号优先级问题。
20060707 郁闷,在英化程序-_-/// ...在Do_File() 增加输出文件另存功能...20060708 ....20060709 ....20060710 强化strChk(),增加结果整形识别,增加'!=' 处理,文件名非法字符校验。
最后更新20060710*//* =============================================== *//* 头文件声明*/#include <stdio.h> /* In Out printf().. */#include <math.h> /* pow(M,n) 开M^n */#include <string.h> /* strcpy... */#include <stdlib.h> /* atof... */#include <conio.h> /* getch()... */#define Max 256 /* 表达式长度定义,可以在这里调节*//* =============================================== *//* 函数声明*//* 计算字符串(不带括号的),计算的核心部分*/char*Calculate_f(char*chpString);/* 主操作过程,输入式子串,返回double 型结果*/double Operation(char*chpString);/* Source1、Source2 加起来到Destination 中*/char*AddStrings_f(char*chpDestination,char*chpSource1,char*chpSource2);/* 寻找char_to_find 在Source 中的位置,后移一位*/int FindChar(char*chpSource,char chCharToFind);/* 获取字符串的长度*/int Len_f(char*chpSource);/* 将Source 左边Length 个字符放在Destination 中*/char*Left_f(char*chpSource,char*chpDestination,int nLength);/* 将Source 右边Length 个字符放在Destination 中*/char*Right_f(char*chpSource,char*chpDestination,int nLength);/* 将Source 中从Start 开始Length 长度的字符串截下来放在Destination 中*/ char*Midstr_f(char*chpSource,char*chpDestination,int nStart,int nLength);/* 在字符串中删除一个字符del '+' */void DelChar(char*chpString,int sPos);/* 在字符串中插入一个字符*/int InsChar(char*chpString,int sPos,char sChar);/* 替换字符串中的某个字符*/void StrReplace(char*chpString,char strOld ,char strNew);/* 将实数值变为字符串*/char*Str_f(double nV alue,char*chpDestination);/* 计算字符串的值,返回实数值*/double V al_f(char*chpSource);/* =============================================== *//* 主菜单... */int Menu_Sel();/* 手工输入表达式求值*/int Do_Press();/* 文件导入表达式求值*/int Do_File();/* 文件检查0 重新输入,1 继续*/int FileChk(char*FN);/* 式子的合法性检查0 含有非法字符,1 正常2 关系运算*/int StrChk(char*chpSource);/* 关系运算*/int Nexus(char strIn[]);/* 显示关于*/void Show_About();/* =============================================== *//* 全局变量声明*/int Debug=0;/* 调试信息显示开关0 不显示,1 显示*/char*TF_Info[3]={"FALSE","TURE","Error"};/* 关系运算信息*//* 将Source 左边Length 个字符放在Destination 中*/char*Left_f(char*chpSource,char*chpDestination,int nLength){*(chpDestination+--nLength+1)=0;/* 设置目标字符串最后一个为NULL*/while(nLength>=0)/* 直到目标字符串的最后一个*/{*(chpDestination+nLength)=*(chpSource+nLength--);}return chpDestination;}/* 将Source 中从Start 开始Length 长度的字符串截下来放在Destination 中*/char*Midstr_f(char*chpSource,char*chpDestination,int nStart,int nLength){chpSource+=nStart-1;/* 设置源起点*/*(chpDestination+--nLength+1)=0;/* 设置目标字符串最后一个为NULL */while(nLength>=0)/* 直到目标字符串的最后一个*/{*(chpDestination+nLength)=*(chpSource+nLength--);}return chpDestination;}/* 将Source 右边Length 个字符放在Destination 中*/char*Right_f(char*chpSource,char*chpDestination,int nLength){while(*chpSource !=0){chpSource++;}/* 将源指针移到最后*/chpSource-=nLength;/* 将源指针跳到开始复制点*/ *(chpDestination+--nLength+1)=0;/* 设置目标字符串最后一个为NULL */while(nLength>=0)/* 直到目标字符串的最后一个*/{*(chpDestination+nLength)=*(chpSource+nLength--);}return chpDestination;}/* 在字符串中删除一个字符del '+' */void DelChar(char*chpString,int sPos){char sBuf[Max];int nCount;strcpy(sBuf,chpString);for(nCount=sPos;sBuf[nCount];nCount++){sBuf[nCount]=sBuf[nCount+1];}strcpy(chpString,sBuf);}/* 在字符串中插入一个字符*/int InsChar(char*chpString,int sPos,char sChar){char sBuf[Max];int iLen;int nCount;strcpy(sBuf,chpString);iLen=strlen(sBuf);if(iLen<Max){sBuf[iLen+1]='\0';for(nCount=iLen;nCount>=sPos;nCount--){sBuf[nCount+1]=sBuf[nCount];}sBuf[sPos]=sChar;strcpy(chpString,sBuf);}elsereturn0;return1;}/* 替换字符串中的某个字符'#' to '-' */void StrReplace(char*chpString,char strOld ,char strNew){char sBuf[Max];int nCount=0;strcpy(sBuf,chpString);while(sBuf[nCount]){if(sBuf[nCount]==strOld) sBuf[nCount]=strNew;nCount++;}strcpy(chpString,sBuf);}/* 寻找char_to_find 在Source 中的位置,后移一位*/int FindChar(char*chpSource,char chCharToFind){int nPos=0;while(*(chpSource+nPos)!=0)/* 直到目标字符串的最后一个*/ {if(chCharToFind ==*(chpSource+nPos++))/* 比较.. */{return nPos;/* 返回第一个出现点,加一*/ }}return0;}/* 获取字符串的长度*/int Len_f(char*chpSource){int nRetval=0;/* 初始化长度*/while(*(chpSource+nRetval++)!=0){}/* 移动指针到Null */return--nRetval;}/* 将实数值变为字符串*/char*Str_f(double nV alue,char*chpDestination){char strTmp[Max];gcvt(nV alue,sizeof(double)+1,strTmp);/* 实数值转字符串*/if(strTmp[0]=='-')/* 将'-' 负号转译为'#' */{strTmp[0]='#';}strcpy(chpDestination,strTmp);if(Debug) printf("...Conversion Double to String:%f - >%s\n",nV alue,chpDestination);return chpDestination;}/* Source1、Source2 加起来到Destination 中*/char*AddStrings_f(char*chpDestination,char*chpSource1,char*chpSource2){char*chpTempdest=chpDestination;while(*chpSource1!=0)/* 先把chpSource1 放入chpDestination */{*(chpTempdest++)=*(chpSource1++);}while(*chpSource2!=0)/* 在chpDestination 后继续写入chpSource2 */{*(chpTempdest++)=*(chpSource2++);}*chpTempdest=0;/* 指针位置归零*/return chpDestination;}/* 计算字符串的值,返回实数值*/double V al_f(char*chpSource){double nResult=0.;char strTmp[Max];strcpy(strTmp,chpSource);if(strTmp[0]=='#')/* 将'#' 转译为'-' 负号*/{strTmp[0]='-';}nResult=atof(strTmp);/* 字符串转为实数*/if(Debug)printf("...Conversion String to Double:%s -> %s -> %f\n",chpSource,strTmp,nResult);return nResult;}。
软件设计四则运算子程序设计思想及流程图
当它创建一个用于做数学的软件时,如加,减,乘,除,都是建立趣
和逻辑的程序结构。
想象一下这个节目就像一个很酷的,有条理的谜题,每一个作品都完美地组合在一起!主要思想是让程序的不同部分易于反复使用,使所有程序都顺利运行。
程序应该能够处理各种数字,如常规整数,微妙的小数,甚至花样分数。
并且不要忘记处理错误——确保程序能够赶上错误并检查输入是否都很好,这是非常重要的。
这样,无论怎样,这个程序都将是强大和可靠的。
超级酷和超强的RAD四个算术操作软件就像一个神奇的数学巫师!
它会要求您输入两个数字以及您想要做的数学类型(比如加,减,乘,或除)。
它重复检查一切,以确保你没有做任何opsie—disies(比
如试图用0除以零或打入一些怪事)。
一旦一切检查出来,它就会打破其数学技能,并根据你要求它做的数学魔法。
当这一切完成后,它会告诉你答案,并给你一个选择,让数学派对继续或者和平结束。
这
就像有一个数学伙伴右你的截肢!
简而言之,在创建用于做诸如加法,减法,乘法和分法等基本数学的
软件时,必须让人们容易理解和使用。
计划应该组织起来,如果出了
问题,应该容易解决。
通过思考方案将如何运作和制定计划,我们可
以确保它能满足人们的需要,并且易于他们使用。
汇编语言课程设计四则运算计算器
汇编语言课程设计报告( 2010 -- 2011 年度第2 学期)课题名称:实现加减乘除四则运算的计算器专业计算机科学与技术学生姓名郑诗霖班级B计算机092学号**********指导教师王志宏完成日期2011年6月24日目录1 设计目的 (1)2 设计内容 (1)3 实现方法 (1)3.1 系统目标 (1)3.2程序流程图及说明 (2)3.2 主体功能 (4)4程序调试 (4)4.1 运行界面分析 (4)4.2 调试过程及分析 (4)5 小结 (6)参考文献 (7)附录 (8)附录1 源程序清单 (8)实现加减乘除四则运算的计算器1 设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。
2 设计内容课题名称:实现加减乘除四则运算的计算器主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+253 实现方法3.1 系统目标本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
比如,十进制数的加减乘除四则运算。
我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,我要解决的是输入时是用INT 21H的10号功能调用还是用INT 21H 的1号功能调用来进行输入。
python实现简单四则运算计算器
python实现简单四则运算计算器基本需求:1. 实现加减乘除及拓号优先级解析2. ⽤户输⼊ 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须⾃⼰解析⾥⾯的(),+,-,*,/符号和公式(不能调⽤eval等类似功能偷懒实现),运算后得出结果正确。
基本思路:1. 根据运算优先级,先处理公⽰内所含括号中的运算。
2. 利⽤正则表达式,对输⼊的内容进⾏解析(加减乘除、数字等)3. 通过循环遍历,或者递归对待处理部分进⾏充分运算处理流程图:略直接上代码1#!/usr/bin/env python2#-*- coding:utf-8 -*-3"""4四则运算,版本1.05"""6import re7def re_set(item):8"""9对输⼊的公式进⾏规范化处理,符号转化10"""11 item = str(item)12 item = item.replace("+-","-")13 item = item.replace("-+","-")14 item = item.replace("--","+")15 item = item.replace("++","+")16 item = item.replace("*+","*")17 item = item.replace("/+","/")18return item19def multiple(item_mult):20"""21公⽰中乘除运算22 :param item_mult:23 :return:24"""25while True:26 item_mult = re_set(item_mult)27if ("*"in item_mult) or ("/"in item_mult) :28if ("*-"in item_mult) or ("/-"in item_mult):29 R_0_formula = re.search("([0-9]+\.[0-9]+|[0-9]+)((\*\-)|(\/\-))([0-9]+\.[0-9]+|[0-9]+)", item_mult).group()30else:31 R_0_formula = re.search("([0-9]+\.[0-9]+|[0-9]+)(\*|\/)([0-9]+\.[0-9]+|[0-9]+)", item_mult).group()32 num1 = re.search("^(([0-9]+\.[0-9]+)|[0-9]+)", R_0_formula).group()33 num2 = re.search("(([0-9]+\.[0-9]+)|[0-9]+)$", R_0_formula).group()34 R_1_formula = (float(num1) * float(num2)) if ("*"in R_0_formula) else (float(num1) / float(num2))35if"-"in R_0_formula:36 R_1_formula = "-" + str(R_1_formula)37 item_mult = item_mult.replace(R_0_formula,str(R_1_formula))38else:break39return item_mult40def comb(item_comb):41"""42完成加减运算、结果合并43 :param item_comb:44 :return:45"""46while True:47 item_comb = re_set(item_comb)48if ("*"in item_comb) or ("/"in item_comb):49 item_comb = multiple(item_comb)50elif ("+"in item_comb[1:]) or ("-"in item_comb[1:]):51 R_0_formula = re.search("([0-9]+\.[0-9]+|[0-9]+)(\+|\-)([0-9]+\.[0-9]+|[0-9]+)", item_comb).group()52 num1 = re.search("^(([0-9]+\.[0-9]+)|[0-9]+)", R_0_formula).group()53 num2 = re.search("(([0-9]+\.[0-9]+)|[0-9]+)$", R_0_formula).group()54if"-"in item_comb[0]:55 R_1_formula = float(num1) - float(num2) if ("+"in R_0_formula) else float(num1) + float(num2)56else:57 R_1_formula = float(num1) + float(num2) if ("+"in R_0_formula) else float(num1) - float(num2)58 item_comb = item_comb.replace(R_0_formula,str(R_1_formula))59else:60break61return item_comb62def sp(item_sp):63"""64对运算中的括号进⾏处理65 :param item_sp:66 :return:67"""68while True:69if"("in item_sp:70 R_0_formula = re.search("\(([^\(|\)]*)\)",item_sp).group()71 R_1_formula = comb(R_0_formula.replace("(","").replace(")",""))72 item_sp = item_sp.replace(R_0_formula,str(R_1_formula))73else:74break75return item_sp76def coms(item_coms):77"""78最终合并79 :param item_coms:80 :return:81"""82 item_coms = re_set(item_coms)83 item_coms = sp(item_coms)84 item_coms = comb(item_coms)85return item_coms86 formula = input("请输⼊计算公式——>:").strip()87 formula = formula.replace("","")88print(eval(formula))89print(coms(formula))四则计算器1.01#!/usr/bin/env python2# -*- coding : utf-8 -*-3"""4⽤于常规四则运算,版本1.15"""6import re7def func_reset(func):8"""9对输⼊的公式进⾏规范化处理,符号转化10 :param func: 输⼊的原始公式11 :return: 符号等价替换完成的公⽰12"""13 func = str(func)14 func = func.replace("+-","-").replace("-+","-").replace("++","+").replace("--","+").replace("*+","*") 15return func16def multiple(func_mul):17"""18公⽰中乘除运算19 :param func_mul: 待处理,含有*,/ 运算符号的公⽰20 :return: 将* ,/ 运算完成的结果21"""22while ("*"in func_mul) or ("/"in func_mul):23 func_mul = func_reset(func_mul)24if ("*-"in func_mul) or ("/-"in func_mul):25 Re_0_func = re.search("([0-9]+(\.[0-9]+)?)((\*\-)|(\/\-))([0-9]+(\.[0-9]+)?)",func_mul).group() 26else:Re_0_func = re.search("([0-9]+(\.[0-9]+)?)(\*|\/)([0-9]+(\.[0-9]+)?)",func_mul).group()27 num_0 = re.search("^([0-9]+(\.[0-9]+)?)",Re_0_func).group()28 num_1 = re.search("([0-9]+(\.[0-9]+)?)$",Re_0_func).group()29 Re_1_func = (float(num_0)*float(num_1)) if ("*"in Re_0_func) else (float(num_0)/float(num_1)) 30if"-"in Re_0_func:31 Re_1_func = "-" + str(Re_1_func)32 func_mul = func_mul.replace(Re_0_func, str(Re_1_func))33return func_mul3435def comb(func_coms):36"""37完成加减运算、结果合并38 :param func_coms: 待处理公⽰39 :return: 处理完成+,-的结果40"""41while True:42 func_coms = func_reset(func_coms)43if ("*"in func_coms) or ("/"in func_coms):44 func_coms = multiple(func_coms)45elif ("+"in func_coms[1:]) or ("-"in func_coms[1:]):46 func_coms = func_reset(func_coms)47 Re_0_func = re.search("([0-9]+(\.[0-9]+)?)(\+|\-)([0-9]+(\.[0-9]+)?)",func_coms).group()48 num_0 = re.search("^([0-9]+(\.[0-9]+)?)",Re_0_func).group()49 num_1 = re.search("([0-9]+(\.[0-9]+)?)$",Re_0_func).group()50if"-"in func_coms[0] :51 Re_1_item = (float(num_0)-float(num_1)) if("+"in Re_0_func) else (float(num_0)+float(num_1)) 52else:53 Re_1_item = (float(num_0)+float(num_1)) if("+"in Re_0_func) else (float(num_0)-float(num_1))54 func_coms = func_coms.replace(Re_0_func,str(Re_1_item))55else:56return func_coms5758def spl(func_spl):59"""60对运算中的括号进⾏处理61 :param func_spl: 对运算中的括号进⾏处理,可以⽤循环,或者递归62 :return: 公式内包含的括号及其内部运算处理完成63"""64while"("in func_spl:65 spl_0_func = re.search("\([^\(|\)]*\)",func_spl).group()66 spl_1_func = comb(spl_0_func.replace("(","").replace(")",""))67 func_spl = func_spl.replace(spl_0_func,str(spl_1_func))68return func_spl69while True:70 formula = input("请输⼊计算公式,退出(q)——>").strip()71 formula = formula.replace("","")72if formula == "q":73break74elif re.search("[^\d|\(|\)|\+|\-|\*|\/]*",formula).group():75print("输⼊有误,仅⽀持四则运算----->",re.search("[^\d|\(|\)|\+|\-|\*|\/]*",formula).group())76break77print(eval(formula)) # ⽤于输出检验结果78 formula = spl(formula)79 formula = comb(formula)80print(formula)四则计算器1.1待续……。
易语言四则运算小程序手把手教你编写
易语言四则运算小程序我用易语言做了个四则运算小程序,下面一步步的带大家编写。
目录第一部分界面制作 (1)第二部分程序编写 (6)第三部分实例演示 (7)第一部分界面制作第一步,打开易语言新建一个windows程序,进入下图界面。
第二步,点击下图框内程序选项卡第三步,点击下图框内启动窗口,进入下图界面第四步,点击下图框内组件,拖动到左边的窗口第五步,拖动四次,形成下图界面第六步,点击其中一个按钮,注意左边框内,可以修改名称第七步,我们从上往下依此修改为:加、减、乘、除,如下图第八步,我们选中右边,下图框内组件第九步,拖动然后复制3次,如下图第十步,选中右边下图框内组件第十一步,按照前面的经验,制作如下图界面第二部分程序编写第一步,双击下图框内加按钮,我们输入:编辑框2.内容=到文本 (到整数 (编辑框1.内容) +到整数 (编辑框3.内容))如图:第二步,我们按照同样的办法,把加、减、乘、除搞定如图:只是改变下运算符号第三部分实例演示第一步,我们点击下图框内图标,运行程序第二步,界面如下第三步,我们在分别在参数一、二输入数字第四步,我们点击加按钮,如图第五步,我们点击减按钮,如图第六步,我们点击乘按钮,如图第七步,我们点击除按钮,如图特别提醒:我这个四则运算有缺陷,就是做小数运算会出错,比如:1.2+1.2结果显示为2,如下图这个是因为,我是输入的是文本,易语言要转换成其他数据类型才能四则运算,我涂方便就转换成整数类型,结果1.2就转换成1,这样就出错了,我做这个教程是帮助大家入门的,后续教程会慢慢完善。