1.程序的编写其最终目的就是为了解决一个实际问题,所以在程序设计之前只有对所解决的问题有正确的理解,才能写出有实际效用的程序。
2.从窗口中获取数字表达式并实现加减乘除四则运算,并且在运算的过程中必须考虑到优先级问题以及括号的作用,最终输出符合规则的正确结果。
3.将大问题在细节方面细分为小问题,1)可以利用手头的工具或函数库等其他辅助手段
2)。。。
4.防止功能蔓延,并且我们会常常自以为完全理解了我们的问题,此时在这个小的有限的程序上,我们可以进行分析和设计实现,做种深刻理解要求解的问题。(原型prototype)
5.“功能蔓延”指在已实现的基本功能版本上进一步添加暂时非必要的“漂亮特性”,一旦这种思维开始,便很难停下来,人们总是追求完美,但此时是不恰当的时刻。
6.软件开发的三个主要阶段是:分析,设计,实现。
7.“用例”指的是展现程序最低限度应该实现的功能的例子
8.查找并排除错误,生成正确、可维护的程序。
9.Number只是由浮点数字构成,在四个类型中结构最简单。Primary关键在于将括号里的表达式可以单独出来进行计算。
Term主要用来解决乘除取余问题,保证了乘除以及取余的运算优先于加减。Expression通过加减构筑整个运算式的整体框架。
10.17与4是Number所以是Primary也是Term也是Expression,Expression+Term是Expression,所以17+4是Expression,又因为括号中间加Expression是Primary,所以(17+4)是Primary,同理(5-1)也是Primary,因为Primary是Term,所以(17+4)/(5-1)符合Term/Primary所以是Term,因为Term是Expression,所以整个表达式就是Expression
11.因为C++语言机器标准库已经提供了整数及其加、减、乘、除和模等运算。
12.单词是用来表示一个基本单元的一个字符序列。例如数字或者运算符。利用“分词(动词)”读取输入字符并组合为单词。
13.文法(grammar):类似于一种语言的语法规则,例如一个句子最基本的就是动词+名词。文法规则就是指定义一个满足一个文法的条件。
14.一个类就是一个用户自定义类型,它定义了所需要的数据以及对数据能执行的有效操作。用户自主定义一个类满足用户自己的需要的类型与操作,这可以弥补本语言及其标准函数库的不足
15.构造函数用于初始化类对象
16.若Expression语法规则中,若其前后没有+、-符号,则单独的Term就是Expression,而Term归根结底就是Number,所以最终还是退回单词。
17.???
18.putback()函数的功能是将其参数放回Token_Stream的缓冲区内,即若预读取的类没有用上则放回到输入流中。
19.计算器在计算的过程中会涉及浮点数的运算,但是取模运算中只定义了整型的浮点运算,没有对浮点数定义模运算。
20.kind用来存储所读入的数据类型,并且如果读入的是正数,则value用来存储相应的数值。
21.public(公有接口:用户方便使用类型所属的,只包含用户需要的内容)private(具体实现:实现类型所需)
22.将缓冲区的单词拿出来进行运算
23.";"和“q”作为程序运行的特殊意义字符需要单独列出来,当switch选择出这两个字符时,则执行程序设定给他们各自的任务。
24.代码编写并调试成功后进行测试
25.用户自定义类型就是非内置的类型,通过自定义类型,我们可以更直接的表达我们的思想。
26.对于一个C++用户自定义类型,其接口是用public标识,提供给了用户如何使用的具体细节,而隐藏了具体的代码。
27.代码库实现了一些我们需要解决的问题的一部分,直接拿来使用可以节省我们的精力,做更多的事。
函数原型:类似函数定义时的函数头,又称函数声明。
class:表示定义一个“用户自定义类型”
数据成员:一个用户自定义类型可以有成员函数(操作)和数据成员。 ??类成员
成员函数:用户自定义类型中对数据成员的操作
语法分析:根据文法规则读取单词流的方式,实现该方式的程序称为语法分析器。
设计:做出系统的整体结构图,并确定具体的实现内容以及他们之间的相互联系,还要考虑那些工具(如函数库)有助于实现程序的结构。