授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》

Slides:



Advertisements
Similar presentations
1 第 3 章 C++ 中的条件与循环 第 3 次见面! acm.nefu.edu.cn/C++_03.ppt.
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
C语言程序设计 主讲教师 :张群燕 电话:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
第三章 控制结构.
程式設計實作.
第一章 程序设计入门.
复习与总结.
第5章 函数与预处理 《 C语言程序设计》 (Visual C++ 6.0环境) 本章导读
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
授课老师:龚涛 信息科学与技术学院 2018年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第二章 C# 基础知识.
C++Primer 3rd edition 中文版 Chap 5
C++程序设计 第二讲 清华大学软件学院.
第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.3 函数参数和函数的值 4.4 函数的调用 *4.5 内置函数
C程序设计.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第三章 程序的流程控制 胡昊 南京大学计算机系软件所.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
第7章 编译预处理 本章要求: 本章重点: 本章难点: 掌握用#define定义无参数宏和带有参数宏定义和调用方法;
Introduction to the C Programming Language
第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
第二章Java基本程序设计.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第三章 C++的语句和简单的程序设计 主要内容:
第 二 章 数据类型、运算符与表达式.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
Oop8 function函式.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第二章 基本数据类型 ——数据的表示.
第二讲 基本数据类 型及数组等 此为封面页,需列出课程编码、课程名称和课程开发室名称。
程序设计基础.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第七章  数 组.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
单片机应用技术 (C语言版) 第4章 C51程序设计入门
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
迴圈(重複性結構) for while do while.
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
Presentation transcript:

授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》

第3章 预处理和语句 预处理功能 语句 选择语句 循环语句 转向语句 东华大学信息科学与技术学院 龚涛

第3章 预处理和语句 3.1 预处理功能 C++语言程序是由若干个文件组成的,文件又是由若干个函数组成的,而函数便是由若干个语句组成。每条语句实现一个操作,若干个语句实现一种功能。 C++语句的预处理功能是指C++语言源程序中可以包含使用的各种编译命令,而这些编译命令由于它们是在程序被正常编译之前执行的,故称为预处理命令(或指令)。这些命令所实现的功能称为预处理功能。 预处理命令是编译命令,它不是语句,不要用分号结束。 文件包含命令 条件编译命令 宏定义命令 东华大学信息科学与技术学院 龚涛

3.1 预处理功能 3.1.1 文件包含命令 文件包含命令格式如下: #include <文件名> 或者 3.1 预处理功能 3.1.1 文件包含命令 文件包含命令格式如下: #include <文件名> 或者 #include "文件名" 文件名以尖括号(<>)括起是指那些由系统提供的并放在指定子目录中的头文件;文件名以双括号("")括起是指那些由用户自己定义的放在当前目录或其他目录下的头文件或其他源文件。 一条文件包含命令只能包含一个文件。若想包含多个文件,则必须用多条文件包含命令。 在被包含的文件中还可以使用文件包含命令,文件包含命令可以嵌套使用。 包含不宜太多。 东华大学信息科学与技术学院 龚涛

3.1 预处理功能 3.1.2 条件编译命令 条件编译命令是用来定义某些编译内容要在满足一定条件下才参与编译,否则将不参与编译。因此,利用条件编译命令可以使同一个源程序在不同的编译条件下产生不同的目标代码。 利用条件编译可在调试程序时增加一些调试语句,以达到跟踪的目的。当程序调试好后,重新编译时,再让调试语句不参与编译。 (1) 格式一 #ifdef <标识符> <程序段1> #else <程序段2> #endif 东华大学信息科学与技术学院 龚涛

3.1 预处理功能 3.1.2 条件编译命令 (2) 格式二 #ifndef <标识符> <程序段1> #else 3.1 预处理功能 3.1.2 条件编译命令 (2) 格式二 #ifndef <标识符> <程序段1> #else <程序段2> #endif (3) 格式二 #if <产量表达式1> #elif <产量表达式2> <程序段3> 东华大学信息科学与技术学院 龚涛

宏定义命令用来将一个标识符定义为一个字符串。该标识符被称为宏名,被定义的字符串称为替换文本。 3.1 预处理功能 3.1.3 宏定义命令 宏定义命令用来将一个标识符定义为一个字符串。该标识符被称为宏名,被定义的字符串称为替换文本。 (1) 简单的宏定义 #define <宏名> <字符串> 一个标识符被宏定义后,该标识符便是一个宏名。在程序中出现的是宏名。在该程序被编译时,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译。宏替换是简单的代换。 东华大学信息科学与技术学院 龚涛

3.1 预处理功能 3.1.3 宏定义命令 使用简单的宏定义可以定义符号常量,但在C++语言中,常用const来定义符号常量。两种方法是有区别的,其主要区别有: ① const将产生一个具有类型的符号,用#define命令仅产生文本替换,而不管内容是否正确。 ② 使用const可以定义一个局部常量,使其作用域局限在一个函数体内。而用#define定义的常量,尽管在某个函数体内,但它的作用域是从定义时开始,直到使用#undef取消其定义时为止;如果不取消其定义,则直到整个文件结束。 ③ 使用const定义常量是一个说明语句,以分号结束;而用#define定义常量是一个预处理命令,不能用分号结束。 东华大学信息科学与技术学院 龚涛

#define <宏名>(<参数表>) <宏体> 3.1 预处理功能 3.1.3 宏定义命令 (2) 带参数的宏定义 #define <宏名>(<参数表>) <宏体> <参数表>中可以有一个参数,也可以有多个参数,多个参数用逗号分隔。在替换时,<宏体>中与参数表中相同的标识符的字符序列将被程序中引用这个宏定义时提供的与该标识符对应的字符序列所替换。 在宏定义时出现的参数称为形参,在程序中引用宏定义时出现的参数称为实参。在宏替换时,将用实参来替换<宏体>中所出现的形参。 东华大学信息科学与技术学院 龚涛

3.1 预处理功能 3.1.3 宏定义命令 例3.5 分析下列程序的输出结果。 #include <iostream.h> void main() { int b(5); #define b 2 #define f(x) b*(x) int y(3); cout<<f(y+1)<<endl; #undef b #define b 3 } 程序中出现了#define和#undef预处理命令。在宏定义中,有简单的,也有带参数的。在宏定义#define f(x) b*(x)中,如果对b的宏定义没有取消,那么b是符号常量b,而不是变量b,因为预处理命令在编译之前执行。 东华大学信息科学与技术学院 龚涛

C++语言提供了丰富的语句,这些语句足以组成结构化程序设计所需要的3种基本控制结构:连续结构、选择结构和循环结构。 第3章 预处理和语句 3.2 语句 C++语言提供了丰富的语句,这些语句足以组成结构化程序设计所需要的3种基本控制结构:连续结构、选择结构和循环结构。 C++语言所提供的语句包括如下几种: 表达式语句和空语句; 复合语句; 选择语句; 循环语句; 转向语句。 东华大学信息科学与技术学院 龚涛

C++语言中任何一个表达式加上分号(“;”)便是表达式语句。空语句是指只有一个分号的语句。 3.2 语句 3.2.1 表达式语句和空语句 C++语言中任何一个表达式加上分号(“;”)便是表达式语句。空语句是指只有一个分号的语句。 a=3*b; x=a|b&c; y=x<=5; a=3, b=5, a+b; !a&&b||c; f(a,b); y=fun(&a,&b); 东华大学信息科学与技术学院 龚涛

复合语句常用来作为if语句的if体、else体,或者作为循环语句的循环体等。 3.2 语句 3.2.2 复合语句和空语句 复合语句是由两条或两条以上的语句组成,并由一对花括号({ })括起来的语句。复合语句在语法上相当于一条语句,复合语句又称为块语句。复合语句可以嵌套,即复合语句中还可以包含复合语句。含有一条或多条说明语句的复合语句称为分程序,也称为块结构。 复合语句常用来作为if语句的if体、else体,或者作为循环语句的循环体等。 东华大学信息科学与技术学院 龚涛

选择语句是C++语言程序经常使用的语句,可用它构成选择结构。 选择语句有两种: 一种是条件语句,即if语句; 第3章 预处理和语句 3.3 选择语句 选择语句是C++语言程序经常使用的语句,可用它构成选择结构。 选择语句有两种: 一种是条件语句,即if语句; 另一种是开关语句,即switch语句。 它们都可以用来实现多路分支。这种语句具有一定的判断能力,它可以根据给定的条件来决定执行哪些语句,不执行哪些语句。 东华大学信息科学与技术学院 龚涛

if(<条件1>) <语句1> else if(<条件2>) <语句2> 3.3 选择语句 3.3.1 条件语句 条件语句具有如下格式: if(<条件1>) <语句1> else if(<条件2>) <语句2> else if(<条件3>) <语句3> … else if(<条件n>) <语句n> else <语句n+1> 其中,if, else if, else是关键字。 if (<条件>) <语句> 东华大学信息科学与技术学院 龚涛

3.3 选择语句 3.3.1 条件语句 例3.6 比较两个数的大小。 #include <iostream.h> 3.3 选择语句 3.3.1 条件语句 例3.6 比较两个数的大小。 #include <iostream.h> void main() { int x,y; cout<<"Input x,y:"; cin>>x>>y; if(x!=y) if(x>y) cout<<"x>y"<<endl; else cout<<"x<y\n"; cout<<"x=y\n"; } 东华大学信息科学与技术学院 龚涛

3.3 选择语句 3.3.1 条件语句 例3.7 分析下列程序的输出结果。 #include <iostream.h> void main() { int a,b; a=b=5; if(a==1) if(b==5) a+=b; cout<<a<<endl; } else a-=b; cout<<a+b<<endl; 该程序中出现了if语句的嵌套,这里只有一个else,它显然应该属于距它最近的if,即属于if(b==5)的else。 东华大学信息科学与技术学院 龚涛

3.3 选择语句 3.3.2 开关语句 开关语句具有如下格式: switch(<整型表达式>) { 3.3 选择语句 3.3.2 开关语句 开关语句具有如下格式: switch(<整型表达式>) { case <整常型表达式1>: <语句序列1> case <整常型表达式2>: <语句序列2> … case <整常型表达式n>: <语句序列n> default: <语句序列n+1> }; 其中,先计算switch后面括号内的表达式的值,然后,将该值与花括号内case后面的<整常型表达式>的值进行比较。 东华大学信息科学与技术学院 龚涛

3.3 选择语句 3.3.2 开关语句 case '5': case '6': case '7': case '8': case '9': ++ndigit[c-'0']; break; default: ++nother; } cin>>c; cout<<"digiter="; for(i=0;i<10;i++) cout<<ndigit[i]<<' '; cout<<"\nother="<<nother<<endl; 例3.9 编程统计从键盘上输入的数字中每种数字的个数和其他字符的个数,并以字符‘$’作为输入结束符。 #include <iostream.h> void main() { char c; int nother(0),ndigit[10]; for(int i=0;i<10;i++) ndigit[i]=0; cin>>c; while(c!='$') switch(c) case '0': case '1': case '2': case '3': case '4': 东华大学信息科学与技术学院 龚涛

第3章 预处理和语句 3.4 循环语句 C++语言中提供了3种循环语句:一种是while循环语句,一种是do-while循环语句,另一种是for循环语句。它们的共同特点是根据循环条件来判断是否执行循环体。 3.4.1 while循环语句 该语句格式如下: while (<条件>) <语句> 其中,该条件给出了一个表达式,通过计算该表达式,可决定是否执行循环体。当表达式的值为非零时,执行循环体;否则退出该循环,即执行该循环后边的语句。 东华大学信息科学与技术学院 龚涛

3.4 循环语句 3.4.1 while循环语句 例3.11 编程求出自然数1~10之和。 3.4 循环语句 3.4.1 while循环语句 例3.11 编程求出自然数1~10之和。 #include <iostream.h> void main() { int i(1),sum(0); while(i<=10) sum+=i; i++; } cout<<"sum="<<sum<<endl; 东华大学信息科学与技术学院 龚涛

3.4 循环语句 3.4.2 do-while循环语句 该循环语句具有如下格式: do <语句> 3.4 循环语句 3.4.2 do-while循环语句 该循环语句具有如下格式: do <语句> while (<条件>); 该循环语句的功能如下: 先执行一次<语句>(即循环体),然后计算<条件>所给出的表达式值。如果其值为非零,则再次执行循环体,直到其值为零才退出该循环,并执行该循环后边的语句。 do-while循环与while循环的区别在于do-while循环至少执行一次循环体,而while循环可能一次也不执行循环体。 东华大学信息科学与技术学院 龚涛

3.4 循环语句 3.4.2 do-while循环语句 例3.12 用do-while循环编程求出自然数1~10之和。 3.4 循环语句 3.4.2 do-while循环语句 例3.12 用do-while循环编程求出自然数1~10之和。 #include <iostream.h> void main() { int i(1),sum(0); do sum+=i++; } while(i<=10); cout<<"sum="<<sum<<endl; } 东华大学信息科学与技术学院 龚涛

for (d1;d2;d3) <语句> 3.4 循环语句 3.4.3 for循环语句 该循环语句具有如下格式: for (d1;d2;d3) <语句> d1表达式用来表示给循环变量初始化;d2表达式用来表示循环是否结束的条件,若该表达式值为非零,则执行循环体,否则退出循环;d3表达式用来作为循环变量的增、减量。 在for循环中,d1表达式只计算一次,可以放在for循环前面;d3表达式每执行完循环体后计算一次,可放在循环体中,因此for循环格式可以与while循环互换。 东华大学信息科学与技术学院 龚涛

所谓多重循环是指在循环体内还有循环语句,这又称为循环的嵌套。 3.4 循环语句 3.4.4 多重循环 所谓多重循环是指在循环体内还有循环语句,这又称为循环的嵌套。 C++语言中提出的上述3种循环不仅可以自身嵌套,而且可以相互嵌套。嵌套时应该注意的是要在一个循环体内包含另一个完整的循环结构。 do-while循环的自身嵌套 for循环内嵌套while循环 while循环内嵌套for循环,for循环又自身嵌套 while循环内嵌套do-while循环 for循环内嵌套while循环和do-while循环 东华大学信息科学与技术学院 龚涛

3.4 循环语句 3.4.4 多重循环 例3.15 分析下列程序的输出结果。 #include <iostream.h> 3.4 循环语句 3.4.4 多重循环 例3.15 分析下列程序的输出结果。 #include <iostream.h> void main() { int i(1),a(0); for(;i<=5;i++) do{ i++; a++; } while(i<3); } cout<<a<<","<<i<<endl; 东华大学信息科学与技术学院 龚涛

3.4 循环语句 3.4.4 多重循环 例3.16 编程求出50~100之内的素数。 #include <iostream.h> 3.4 循环语句 3.4.4 多重循环 例3.16 编程求出50~100之内的素数。 #include <iostream.h> #include <math.h> #define MIN 51 #define MAX 100 void main() { int i,j,k,n(0); for(i=MIN;i<=MAX;i+=2) k=(int)sqrt(double(i)); for(j=2;j<=k;j++) if(i%j==0) break; if(j>=k+1) if(n%6==0) cout<<endl; n++; cout<<" "<<i; } cout<<endl; 东华大学信息科学与技术学院 龚涛

goto语句:goto <语句标号>; break语句:break; 用于退出开关语句;用于退出该重循环。 第3章 预处理和语句 3.5 转向语句 C++语言中提供了goto、break和continue等转向语句。其中,goto是非结构化控制语句,而break和continue是半结构化控制语句,它们会改变语句的执行顺序,因此,应在程序中尽量少用。 goto语句:goto <语句标号>; break语句:break; 用于退出开关语句;用于退出该重循环。 continue语句:continue; 该语句只在循环体中用来结束该次循环。 东华大学信息科学与技术学院 龚涛

3.5 转向语句 3.5.1 goto语句 例3.18 编程程序,从一个已知的二维数组中查找出第一次出现负数的数组元素。 3.5 转向语句 3.5.1 goto语句 例3.18 编程程序,从一个已知的二维数组中查找出第一次出现负数的数组元素。 #include <iostream.h> void main() { int j,num[2][3]; cout<<"Input 6 digiters:"; for(int i=0;i<2;i++) for(j=0;j<3;j++) cin>>num[i][j]; for(i=0;i<2;i++) if(num[i][j]<0) goto found; cout<<"not found!\n"; goto end; found: cout<<"num["<<i<<"]["<<j<<"]"<<num[i][j]<<endl; end: ; } 东华大学信息科学与技术学院 龚涛

3.5 转向语句 3.5.1 goto语句 例3.18 不用goto语句编程从已知的二维数组中查找出第一次出现负数的数组元素。 3.5 转向语句 3.5.1 goto语句 例3.18 不用goto语句编程从已知的二维数组中查找出第一次出现负数的数组元素。 #include <iostream.h> void main() { int j,num[2][3], flag=0; cout<<"Input 6 digiters:"; for(int i=0;i<2;i++) for(j=0;j<3;j++) cin>>num[i][j]; for(i=0;i<2&&flag==0;i++) for(j=0;j<3&&flag==0;j++) if(num[i][j]<0) flag=1; cout<<"num["<<i<<"]["<<j<<"]"<<num[i][j]<<endl; } if(flag==0) cout<<"not found!\n"; 东华大学信息科学与技术学院 龚涛

3.5 转向语句 3.5.2 break语句 例3.19 编程将从键盘上输入的若干个正数求和,遇到负数则终止程序,并且输入的数不超过10个。 3.5 转向语句 3.5.2 break语句 例3.19 编程将从键盘上输入的若干个正数求和,遇到负数则终止程序,并且输入的数不超过10个。 #include <iostream.h> #define M 10 void main() { int num, sum(0); cout<<"Input number:"; for(int i=0;i<M;i++) cin>>num; if(num<0) break; sum+=num; } cout<<"sum="<<sum<<endl; 东华大学信息科学与技术学院 龚涛

3.5 转向语句 3.5.3 continue语句 例3.20 编程计算从键盘上输入的10个数中的所有整数之和,对负数不进行计算,并显示求和结果。 #include <iostream.h> #define M 10 void main() { int num, sum(0); cout<<"Input number:"; for(int i=0;i<M;i++) cin>>num; if(num<0) continue; sum+=num; } cout<<"sum="<<sum<<endl; 东华大学信息科学与技术学院 龚涛

答疑联系信息 办公室电话:021-67792312 手机:18201798064 E-mail:taogong@dhu.edu.cn 办公室地址:2号学院楼518室 东华大学信息科学与技术学院 龚涛