一、计算器的概述
在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算工具也经历了由简单到复杂,由低级向高级的发展变化。进入20世纪后,人们发明了计算器。计算器的出现解决了很多比较复杂的计算问题。计算器的使用非常简单,它的运算规则是从左往右算,输入数据后可以一眨眼就得出结果。
二、计算器的构成
计算器内部采用的基本逻辑是算术逻辑单元(ALU),这是一种执行二进制运算的逻辑电路。ALU可以接受两个二进制数作为输入,并根据特定的操作码执行相应的运算,如加法、减法、与运算、或运算等。这些操作码通常由用户输入的运算符决定。
计算器还配备了存储器,用于存储用户输入的数字、运算符以及计算结果。存储器可以是随机存取存储器(RAM)或只读存储器(ROM)等类型。RAM用于存储临时数据,如用户输入的数字和计算结果,而ROM则用于存储计算器的固件程序,即控制计算器工作的指令集。
三、计算器的原理
1. 输入:用户通过计算器上的键盘输入需要计算的数字和运算符,这些信息被存储在计算器的内存中。
2. 解析:计算器会解析用户输入的信息,将其转化为计算机能够理解的二进制代码。解析过程中,计算器会识别出数字和运算符,并将它们存储在适当的内存位置。
3. 计算:在解析完用户输入后,计算器会执行相应的计算操作。对于基本的四则运算,计算器会采用预设的算法来进行计算,如加法、减法、乘法和除法等。对于更复杂的运算,如三角函数、对数等,计算器会使用更高级的算法或调用外部库来完成计算。
4. 输出:计算完成后,计算器会将结果显示在屏幕上,供用户查看。
四、计算器的编写过程
1.用visual statio创建一个项目
2.创建一个窗体,在窗体上添加一些控件、文本框等(创建成一个跟计算器模型一样的窗体),创建完成后如图所示:
五、代码的编写
namespace 窗体计算器
{
public partial class Form1 : Form
{
private double fistNumber;
private string currentCal;
private double secondNumber;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.Text = "1";
}
private void button2_Click(object sender, EventArgs e)
{
this.textBox1.Text = "2";
}
private void button3_Click(object sender, EventArgs e)
{
this.textBox1.Text = "3";
}
private void button4_Click(object sender, EventArgs e)
{
this.textBox1.Text = "4";
}
private void button5_Click(object sender, EventArgs e)
{
this.textBox1.Text = "5";
}
private void button6_Click(object sender, EventArgs e)
{
this.textBox1.Text = "6";
}
private void button7_Click(object sender, EventArgs e)
{
this.textBox1.Text = "7";
}
private void button8_Click(object sender, EventArgs e)
{
this.textBox1.Text = "8";
}
private void button9_Click(object sender, EventArgs e)
{
this.textBox1.Text = "9";
}
private void button10_Click(object sender, EventArgs e)
{
this.textBox1.Text = "0";
}
private void button11_Click(object sender, EventArgs e)
{
this.textBox1.Text = "";
}
private void button12_Click(object sender, EventArgs e)
{
string strNumber = this.textBox1.Text;
fistNumber = double.Parse(strNumber);
currentCal = "+";
this.textBox1.Text = "";
}
private void button16_Click(object sender, EventArgs e)
{
string strNumber = this.textBox1.Text;
secondNumber = double.Parse(strNumber);
if(currentCal.Equals("+"))
{
double result = fistNumber + secondNumber;
this.textBox1.Text = result.ToString();
}
}
private void button13_Click(object sender, EventArgs e)
{
this.textBox1.Text = "-";
}
private void button14_Click(object sender, EventArgs e)
{
this.textBox1.Text = "*";
}
private void button15_Click(object sender, EventArgs e)
{
this.textBox1.Text = "/";
}
private void button17_Click(object sender, EventArgs e)
{
this.textBox1.Text = "";
}
}
}