第二篇 面向过程的程序设计
程序设计初步
根据程序设计的要求编写程序,安排好它们的执行顺序,并且保证它的正确性和高效性。这就是算法需要解决的问题。
一个面向过程的程序应包括:对数据的描述和对操作的描述;即数据结构和操作步骤(也就是算法)。
程序=算法+数据结构
算法:处理问题的一系列的步骤。
可分为数值算法和非数值算法。
算法的表示:(1)自然语言;(2)流程图;(3)伪代码,是用介于自然语言和计算机语言之间的文字和符号来描述算法;(4)计算机语言,即计算机程序。
程序单位由预处理命令、声明部分和函数组成。
程序应该包括数据描述(由声明语句来实现)和数据操作(由执行语句来实现)。数据描述主要包括数据类型的声明、函数和变量的定义、变量的初始化等。数据操作的任务是对已提供的数据进行加工。
C++语句可以分为以下4种:
1、声明语句
2、执行语句
(1)控制语句,完成一定的控制功能
(2)函数和流对象调用语句
(3)表达式语句(由表达式加一个分号组成)
3、空语句(只有一个分号的语句,或循环语句中的循环体)
4、复合语句(可以用{}把一些语句括起来成为复合语句)
赋值语句
由赋值表达式加上一个分号构成。
1、C++的赋值语句具有其他高级语言的赋值语句的功能,但在C++中,“=”是一个运算符,可以写成a=b=c=d。
2、在C++中,赋值表达式可以包括在其他表达式之中。
C++的输入输出
**注:**输入和输出并不是C++语言的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。在C语言中,输入和输出的功能是通过调用scanf函数和printf函数来实现的,在C++中是通过调用输入输出流库中的流对象cin和cout实现的。即输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。
C++的输入和输出是用流“stream”的方式实现的。“流”指的是来自设备或传给设备的一个数据流。
“<<” 流插入运算符
“>>” 流提取运算符
在程序中是用cin、cout和流运算符必须使用预处理命令把头文件stream包含到本文件中。
输入输出要注意变量的类型,按照相应的格式输入。
在输入流与输出流中使用控制符
如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。
用getchar和putchar函数进行输入输出
putchar函数(字符输出函数):向终端输出一个字符(可以输出转义字符)
getchar函数(字符输入函数):从输入设备得到的字符
用scanf和printf函数进行输入输出
scanf(格式控制,输出表列)
printf(格式控制,输出表列)
关系运算和逻辑运算
运算符之间的优先级(由高到低):
(!)
算术运算符
关系运算符
(&&和||)
赋值运算符
任何表达式都应该有一个确定的值。算术表达式的值是一个数值,赋值表达式的值是赋予变量的值,关系表达式的值是一个逻辑值(1代表真,0代表假)。
逻辑性数据:逻辑常量和逻辑变量
逻辑型常量只有两个,即false和true。(又称为布尔常量)
逻辑型变量要用类型标识符bool来定义,它的值只能是false和true之一。(又称为布尔变量)
在编译系统处理逻辑型数据时,将false处理为0,true处理为1;因此,逻辑型数据可以与数值型数据进行算术运算。
逻辑运算符优先级:!(非)>&&(与)>||(或)
三目运算符 表达式1?表达式2:表达式3
break语句和continue语句
break语句作用为使流程从循环体内跳出循环体,即提前结束循环,接着执行循环体下面的语句。(只用于循环语句和switch语句内)
continue语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
区别:continue直接输本次循环,而不是终止整个循环的执行,而break则是结束整个循环过程,不再判断执行循环的条件是否成立。
函数与预处理
在C++面向对象的程序设计中,主函数以外的函数大多是被封装在类中的。主函数