收藏 分享(赏)

第3章 程序设计初步.ppt

上传人:hwpkd79526 文档编号:8159724 上传时间:2019-06-11 格式:PPT 页数:113 大小:493KB
下载 相关 举报
第3章  程序设计初步.ppt_第1页
第1页 / 共113页
第3章  程序设计初步.ppt_第2页
第2页 / 共113页
第3章  程序设计初步.ppt_第3页
第3页 / 共113页
第3章  程序设计初步.ppt_第4页
第4页 / 共113页
第3章  程序设计初步.ppt_第5页
第5页 / 共113页
点击查看更多>>
资源描述

1、第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型,第2篇 面向过程的程序设计,第3章 程序设计初步,3.1 面向过程的程序设计和算法 3.2 +程序和语句 3.3 赋值语句 3.4 C+的输入与输出 3.5 编写顺序结构的程序 3.6 关系运算和逻辑运算 3.7 选择结构和语句 3.8 条件运算符和条件表达式 3.9 多分支选择结构和switch语句 3.10 编写选择结构的程序 3.11 循环结构和循环语句 3.12 循环的嵌套 3.13 break语句和continue语句 3.14 编写循环结构的程序,在面向过程的程序设计中,程序设计者必须指

2、定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题,根据程序要“做什么”的要求,写出一个个语句,安排好它们的执行顺序。怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题。,3.1 面向过程的程序设计和算法,一个面向过程的程序应包括以下两方面内容: (1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 (2) 对操作的描述。即操作步骤,也就是算法(algorithm)。 对于面向过程的程序,可以用下面的公式表示: 程序=算法+数据结构 作为程序设计人员,必须认真考虑和设计数据结

3、构和操作步骤(即算法)。 算法是处理问题的一系列的步骤。算法必须具体地指出在执行时每一步应当怎样做。,3.1.1 算法的概念,不要认为只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。 计算机算法可分为两大类别:数值算法和非数值算法。数值算法的目的是求数值解。非数值算法包括的面十分广泛,最常见的是用于事务管理领域。目前,计算机在非数值方面的应用远远超过了在数值方面的应用。 C+既支持面向过程的程序设计,又支持面向对象的程序设计。无论面向过程的程序设计还是面向对象的程序设计,都离不开算法设计。,1. 自然语言 用中文或英文等自然语言描述算法。但容易产生歧义性

4、,在程序设计中一般不用自然语言表示算法。 2. 流程图 可以用传统的流程图或结构化流程图。用图的形式表示算法,比较形象直观,但修改算法时显得不大方便。 3. 伪代码(pseudo code) 伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。如,3.1.2 算法的表示,if x is positive thenprint x else print-x 用伪代码写算法并无固定的、严格的语法规则,只需把意思表达清楚,并且书写的格式要写成清晰易读的形式。它不用图形符号,因此书写方便、格式紧凑,容易修改,便于向计算机语言算法(即程序)过渡。 4. 用计算机语言表示算法 用一种计算机语言去描

5、述算法,这就是计算机程序。,由第1章已知,一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件)。每一个程序单位由以下几个部分组成: (1) 预处理命令。如#include命令和#define命令。 (2) 声明部分。例如对数据类型和函数的声明,以及对变量的定义。 (3) 函数。包括函数首部和函数体,在函数体中可以包含若干声明语句和执行语句。 如下面是一个完整的C+程序:,3.2 C+程序和语句,#include /预处理命令 using namespace std; /在函数之外的声明部分 int a=3; /在函数之外的声明部分 int main( ) /函数首部 float b;

6、 /函数内的声明部分b=4.5; /执行语句coutab; /执行语句return 0; /执行语句 如果一个变量在函数之外进行声明,此变量是全局变量,它的有效范围是从该行开始到本程序单位结束。如果一个变量在函数内声明,此变量是局部变量,它的有效范围是从该行开始到本函数结束。C+程序结构可以用图31表示。,图3.1,程序应该包括数据描述(由声明语句来实现)和数据操作(由执行语句来实现)。数据描述主要包括数据类型的声明、函数和变量的定义、变量的初始化等。数据操作的任务是对已提供的数据进行加工。 C+程序中最小的独立单位是语句(statement)。它相当于一篇文章中的一个句子。句子是用句号结束的

7、。语句一般是用分号结束的(复合语句是以右花括号结束的)。 C+语句可以分为以下4种:,1. 声明语句 如int a,b;在C语言中,只有产生实际操作的才称为语句,对变量的定义不作为语句,而且要求对变量的定义必须出现在本块中所有程序语句之前。因此C程序员已经养成了一个习惯: 在函数或块的开头位置定义全部变量。在C+中,对变量(以及其他对象)的定义被认为是一条语句,并且可以出现在函数中的任何行,即可以放在其他程序语句可以出现的地方,也可以放在函数之外。这样更加灵活,可以很方便地实现变量的局部化(变量的作用范围从声明语句开始到本函数或本块结束)。,2. 执行语句 通知计算机完成一定的操作。执行语句包

8、括: (1) 控制语句,完成一定的控制功能。C+有9种控制语句,即 if( )else (条件语句) for( ) (循环语句) while( ) (循环语句) dowhile( ) (循环语句) continue (结束本次循环语句) break (中止执行或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句),(2) 函数和流对象调用语句。函数调用语句由一次函数调用加一个分号构成一个语句,例如 sort(x,y,z); /假设已定义了sort函数,它有3个参数 coutxendl; /流对象调用语句 (3) 表达式语句。由一个表达式加一个分

9、号构成一个语句。最典型的是: 由赋值表达式构成一个赋值语句。 i=i+1 /是一个赋值表达式 i=i+1; /是一个赋值语句 任何一个表达式的最后加一个分号都可以成为一个语句。一个语句必须在最后出现分号。 表达式能构成语句是C和C+语言的一个重要特色。C+程序中大多数语句是表达式语句(包括函数调用语句)。,3. 空语句 下面是一个空语句: ; 即只有一个分号的语句,它什么也不做。有时用来做被转向点,或循环语句中的循环体。,4. 复合语句 可以用 把一些语句括起来成为复合语句。如下面是一个复合语句。 z=x+y; if(z100) z=z-100; coutz; 注意:复合语句中最后一个语句中最

10、后的分号不能省略。 在本章中将介绍几种顺序执行的语句,在执行这些语句的过程中不会发生流程的控制转移。,前面已介绍,赋值语句是由赋值表达式加上一个分号构成。 (1)C+的赋值语句具有其他高级语言的赋值语句的功能。但不同的是: C+中的赋值号“”是一个运算符,可以写成 a=b=c=d; 而在其他大多数语言中赋值号不是运算符,上面的写法是不合法的。,3.3 赋值语句,(2) 关于赋值表达式与赋值语句的概念。在C+中,赋值表达式可以包括在其他表达式之中,例如 if(a=b)0) cout000) cout0endl; 因为在if的条件中不能包含赋值语句。C+把赋值语句和赋值表达式区别开来,增加了表达式

11、的种类,能实现其他语言中难以实现的功能。,输入和输出并不是C+语言中的正式组成成分。C和C+本身都没有为输入和输出提供专门的语句结构。输入输出不是由C+本身定义的,而是在编译系统提供的I/O库中定义的。 C+的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C+通过流进行输入输出的过程。,3.4 C+的输入与输出,图3.2图3.3,有关流对象cin、cout和流运算符的定义等信息是存放在C+的输入输出流库中的,因此如果在程序中使用cin、cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中: #include 尽管cin和cout不是C+本身提供的

12、语句,但是在不致混淆的情况下,为了叙述方便,常常把由cin和流提取运算符“”实现输入的语句称为输入语句或cin语句,把由cout和流插入运算符“”实现输出的语句称为输出语句或cout语句。根据C+的语法,凡是能实现某种操作而且最后以分号结束的都是语句。,cout语句的一般格式为cout变量1变量2变量n; 在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行cout语句时,先把插入的数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或n,ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备

13、(一般为显示器)输出。,*3.4.1 输入流与输出流的基本操作,一个cout语句可以分写成若干行。如 coutThis is a simple C+ program.endl; 可以写成 coutThis is /注意行末尾无分号 a C+ program. endl; /语句最后有分号 也可写成多个cout语句,即 coutThis is ; /语句末尾有分号 cout a C+ ; cout program.; coutendl; 以上3种情况的输出均为,This is a simple C+ program. 注意 不能用一个插入运算符“abcd;,可以写成cina /注意行末尾无分号

14、b /这样写可能看起来清晰些cd; 也可以写成 cina; cinb; cinc; cind; 以上3种情况均可以从键盘输入: 1 2 3 4 也可以分多行输入数据:,1 2 3 4 在用cin输入时,系统也会根据变量的类型从输入流中提取相应长度的字节。如有 char c1,c2; int a; float b; cinc1c2ab; 如果输入 1234 56.78,注意: 34后面应该有空格以便和56.78分隔开。也可以按下面格式输入: 1 2 34 56.78 (在1和2之间有空格) 不能用cin语句把空格字符和回车换行符作为字符输入给字符变量,它们将被跳过。如果想将空格字符或回车换行符(

15、或任何其他键盘上的字符)输入给字符变量,可以用3.4.3节介绍的getchar函数。 在组织输入流数据时,要仔细分析cin语句中变量的类型,按照相应的格式输入,否则容易出错。,上面介绍的是使用cout和cin时的默认格式。但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C+提供了在输入输出流中使用的控制符(有的书中称为操纵符),见书中表3.1。 需要注意的是: 如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。 举例: 输出双精度数。,*3.4.2 在输入流与输出流中使用控制符,double

16、 a=123.456789012345;对a赋初值 (1) couta;输出: 123.456 (2) coutsetprecision(9)a;输出: 123.456789 (3) coutsetprecision(6);恢复默认格式(精度为6) (4) cout setiosflags(iosfixed);输出: 123.456789 (5) coutsetiosflags(iosfixed)setprecision(8)a;输出: 123.45678901 (6) coutsetiosflags(iosscientific)a;输出: 1.234568e+02 (7) coutsetio

17、sflags(iosscientific)setprecision(4)a; 输出: 1.2346e02 下面是整数输出的例子: int b=123456;对b赋初值 (1) coutb;输出: 123456 (2) couthexb; 输出: 1e240 (3) coutsetiosflags(iosuppercase)b;输出: 1E240 (4) coutsetw(10)b,b; 输出: 123456,123456 (5) coutsetfill(*)setw(10)b;输出: * 123456 (6) coutsetiosflags(iosshowpos)b;输出: +123456,如

18、果在多个cout语句中使用相同的setw(n),并使用setiosflags(iosright),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。 例3.1 各行小数点对齐。 #include #include using namespace std; int main( ) double a=123.456,b=3.14159,c=-3214.67; coutsetiosflags(iosfixed)setiosflags(iosright)setprecision(2);coutsetw(10)aendl;coutsetw(10)bendl;coutsetw(10)ce

19、ndl; return 0; ,输出如下:123.46 (字段宽度为10,右对齐,取两位小数)3.14-3214.67 先统一设置定点形式输出、取两位小数、右对齐。这些设置对其后的输出均有效(除非重新设置),而setw只对其后一个输出项有效,因此必须在输出a,b,c之前都要写setw(10)。,C+还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和putchar函数。 1. putchar函数(字符输出函数) putchar函数的作用是向终端输出一个字符。例如 putchar(c); 它输出字符变量的值。,3.4.3 用getchar和putchar

20、函数进行字符的输入和输出,例3.2 输出单个字符。 #include /或者包含头文件stdio.h: #include using namespace std; int main( ) char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);putchar(66);putchar(79);putchar(89);putchar(10);return 0; 运行结果为 BOY BOY,可以看到: 用putchar可以输出转义字符,putchar(n)的作用是输出一个换行符,使输出的当前位置移到下一行的开头。putchar(66)的作用是将66作为ASCII码转换为字符输出,66是字母B的ASCII码,因此putchar(66)输出字母B。其余类似。putchar(10)中的10是换行符的ASCII码,putchar(10)输出一个换行符,作用与putchar(n) 相同。 也可以输出其他转义字符,如putchar(101) (输出字符A,八进制的101是A的ASCII码)putchar() (输出单引号字符)putchar(015) (输出回车,不换行,使输出的当前位置移到本行开头),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报