结构控制程序设计

合集下载

第四章 控制结构程序设计.ppt

第四章 控制结构程序设计.ppt
t=x x=y y=t
IF <条件> Then <语句组>
2019年8月21
感谢你的观看
12
块结构条件语句 单分支和双分支选择的块形式
x < y False
True
t=x x=y y=t
T
表达式
F
语句组1
语句组2
If <条件> Then
<语句组>
End If
2019年8月21
If <条件> Then <语句组1>
感谢你的观看
14
条件语句
a=3 b=2 if a>b then
msgbox “a大于b” Else
msgbox “a小于b” End if
2019年8月21
感谢你的观看
15
条件语句
a=3 b=2 c=1 if a>b and a>c then
msgbox “a最大” End if
2019年8月21
If Ucase(strC) >= "A" And Ucase(strC) <="Z" Then Print strC + "是字母字符"
ElseIf strC >="0" And strC <= "9" Then Print strC + "是数字字符"
Else Print strC + "是其它字符"
End If
2019年8月21
感谢你的观看
21
程序的基本组成
程序设计的一般步骤:

C语言程序设计教程课件:程序控制结构

C语言程序设计教程课件:程序控制结构
分析:设顾客的购物款为x,打折后的货款为y,优惠公 式为:
程序控制结构
程序控制结构
因为case后面的常量表达式不能写成一个表示范围的逻 辑表达式,因此可以将switch表达式设为(int)x/1000,结果 正好是一个整数;当x在3000≤x<5000范围内时,表达式 (int)x/1000的值可能为3,也可能为4,这时两个case子句可 以共用同一个语句组。
3.1.2 空语句 空语句是一个只由分号组成的语句。其形式为: ; 空语句什么都不做,当程序中某个位置在语法上需要一
条语句,但在语义上又不要求执行任何操作时,可在此处使 用一条空语句。空语句常用于循环语句中的循环体,表示循 环体什么都不做。如:
for(i=1;i<=1000;i++); /*表示循环空转1000次,可用来 延时*/
程序控制结构
图3-9 for语句流程图
程序控制结构
【例3-12】 求n!,即计算1*2*3*…*n的值。 分析:求多个数累积与累加和的算法思想类似,只是要 注意存放累积数的变量初值应该为1。
程序控制结构
程序控制结构
【例3-13】 输出所有的水仙花数。水仙花数是指一个 三位数,其各位数字的立方和等于该数本身,如153是一个 水仙花数,153=13+53+33。
for(表达式1;表达式2;表达式3) 循环体语句
程序控制结构
for语句的执行流程是: (1) 先计算“表达式1”的值。 (2) 再计算“表达式2”的值,并判断其是否为真,若为 真(非0),则执行循环体语句;若为假(0),则跳出循环,执 行for语句的后续语句。 (3) 循环体语句执行后,计算“表达式3”的值,然后转 到步骤(2)重复执行。 其流程图如图3-9所示。

结构控制程序设计

结构控制程序设计
• (3) 修改Waveform Chart 的图例标记, 如图3-1 6 所示。
• 3.2.3 程序框图设计
• (1) 在程序框图中添加While 循环(选择Function s→Programming→Structures 命令), 创
3.1 While Loop 结构
• 3.1.5 反馈节点
• 当循环边框比较大时, 使用移位寄存器会造成过长的连线, 因此L abVIEW 提供了反馈节点(Feedback Node), 其 在功能上完全等价于移位寄存器。
• 在循环中, 当把一个节点的输出连接到它的输入时, 连线中会自动 插入一个反馈节点, 同时自动创建了一个初始化接线端(可对反馈 节点进行初始化, 若不需要初始化可用右键取消), 如图3-14 所示。
• 3.2.1 任务描述
• 在工业现场环境下, 温度传感器输出的温度电压往往会叠加了工频 干扰。这种工频干扰由于频率低, 很难用滤波器滤掉(除非采用体 积特别大的滤波器, 而且效果不一定好), 采用软件滤波的方案是 一种比较好的方案。这里应用移位寄存器求最近4 次温度测量值的 平均值, 并以波形的形式显示这一平均值。
• 在反馈节点上右击, 在弹出的快捷菜单中选择Change Dir ection 命令可改变方向。反馈节点和移位寄存器可以互换, 在反馈节点上右击, 在弹出的快捷菜单中选择Replace Wi th Shift Register 命令即可。
上一页
返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波
上一页 下一页 返回
3.1 While Loop 结构
• 移位寄存器在程序框图上用在循环边框上相应的一对端子来表示。右 边的端子中存储了一轮循环结束时的数据。在下一轮循环开始时, 右端子的数据将移位到左边的端子, 参与下一轮循环的运算。移位 寄存器可以移位各种类型的数据, 如数值、布尔数、数组、字符串 等。在第一个对象接入移位寄存器时, 会自动刷新数据, 图3-1 0 表示了它的工作过程。

控制结构程序设计实验报告

控制结构程序设计实验报告

《测绘程序设计()》上机实验报告(Visual C++.Net)班级:学号:姓名:序号:二零一零年三月实验2 控制结构程序设计一、实验目的掌握VC++.net语言的基本语法;理解顺序结构、选择结构和循环结构程序设计的特点及应用;掌握对基于对话框的MFC应用程序设计方法;掌握一些简单算法二、实验内容1)编写后方交会的程序设计思路:通过反正切求得的角度范围是“-90—90”,而方位角的取值范围是“0—360”,因此需要通过方位角的象限来进行转换。

还有一点不容忽视,反正切函数求出的角度是弧度,而需要得到的方位角显示的是度、分、秒。

因此需要转换。

当dx>0时dy>0,nQuadrant=1,Rad=atan(dy/dx)*180/PIdy<0, nQuadrant==4, Rad=(atan(dy/dx)+2*PI)*180/PIdy=0, Rad=0;当dx<0时,dy>0,nQuadrant=2,Rad=(atan(dy/dx)+PI)*180/PI dy<0, nQuadrant=3, Rad=(atan(dy/dx)+PI)*180/PIdy=0,Rad=180当dx=0时dy>0,Rad=90dy<0,Rad=270dy=0,则两点重合,方位角不存在了计算出弧度(Rad)后,再将其转化为度分秒输出就完成了。

界面设计:界面由5个文本框、5个静态框和2个命令按钮组成,需要完成输入2点坐标,输出方位角的功能其中文本控件属性设置为:主要代码:文件名TriAzimuthDlg.cpp#include"stdafx.h"#include"TriAzimuth.h"#include"TriAzimuthDlg.h"#include"math.h"…….void CTriAzimuthDlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码OnCancel();}const double PI=3.1415926;void CTriAzimuthDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//OnOK();}//将弧度转化成度分秒形式double Rad_To_Dms(double Rad){double dDeg,dDms; //十进制角度及度分秒格式角度,控制变量//用于存放度分秒三个值的变量int iDegree,iMin;double dSec;double dTmp;dDeg=Rad*180/PI; //弧度转化为度//度转化成度分秒iDegree=int(dDeg);dTmp=(dDeg-iDegree)*60;iMin=int(dTmp);dSec=(dTmp-iMin)*60;dDms=iDegree+double(iMin)/100+dSec/10000;return dDms;}void CTriAzimuthDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);double dx,dy;double Rad; //弧度,控制变量dx=X2-X1;dy=Y2-Y1;if(dx>0){if(dy>0)Rad=atan(dy/dx); //A为第一象限角else if(dy<0)Rad=atan(dy/dx)+2*PI; //A为第四象限角elseRad=0; //A=0度}else if(dx<0){if(dy>0)Rad=atan(dy/dx)+PI; //A为第二象限角else if(dy<0)Rad=atan(dy/dx)+PI; //A为第三象限角elseRad=180; //A=180度}else{if(dy>0)Rad=90; //A=90度else if(dy<0)Rad=270; //A=270度elseMessageBox(_T("两点重合,无方位角"));}A=Rad_To_Dms(Rad); //将弧度转化为度分秒形式UpdateData(FALSE);}运行结果:输入两点坐标之后,单击计算,可得方位角,以上方位角表示的是45°00′0000276342″2)空间直角坐标系与大地坐标系的相互转换设计思路:大地坐标系转化为笛卡尔坐标系:首先通过已知的长半径a和扁率α求出偏心率e和卯酉圈曲率半径N;再根据下列公式可求得笛卡尔坐标。

程序设计语言中常见的三种控制结构

程序设计语言中常见的三种控制结构

程序设计语言中常见的三种控制结构在程序设计语言中,控制结构是指用于控制程序执行流程的语句或语法。

常见的控制结构有三种,分别是顺序结构、选择结构和循环结构。

一、顺序结构顺序结构是指程序按照代码的书写顺序依次执行,没有任何跳转或分支。

这种结构是最简单的结构,也是程序中最基本的结构。

在顺序结构中,每一条语句都会被依次执行,直到程序结束。

例如,下面的代码就是一个简单的顺序结构:```a = 1b = 2c = a + bprint(c)```这段代码中,首先给变量a赋值为1,然后给变量b赋值为2,接着将a和b相加并将结果赋值给变量c,最后输出变量c的值。

这些语句按照书写顺序依次执行,没有任何跳转或分支。

二、选择结构选择结构是指程序根据条件的不同而选择不同的执行路径。

在选择结构中,程序会根据条件的真假来决定执行哪一条语句或语句块。

常见的选择结构有if语句和switch语句。

1. if语句if语句是最常见的选择结构,它的语法如下:```if 条件:语句块1else:语句块2```其中,条件是一个表达式,如果表达式的值为True,则执行语句块1;否则执行语句块2。

if语句可以嵌套使用,例如:```if 条件1:语句块1elif 条件2:语句块2else:语句块3```这段代码中,如果条件1为True,则执行语句块1;如果条件1为False,但条件2为True,则执行语句块2;否则执行语句块3。

2. switch语句switch语句是一种多分支选择结构,它的语法如下:```switch 表达式:case 值1:语句块1breakcase 值2:语句块2break...default:语句块n```其中,表达式是一个值,case后面跟着的是一个常量或表达式,如果表达式的值等于case后面的值,则执行对应的语句块。

如果没有任何一个case的值与表达式的值相等,则执行default后面的语句块。

break语句用于跳出switch语句。

结构化程序设计的基本控制结构

结构化程序设计的基本控制结构

结构化程序设计的三种基本控制结构介绍如下:
结构化程序的三种基本控制结构是顺序结构,选择结构,循码乎环结构,分别介绍如下:
1、顺序结构:顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

2、选择结构:选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程迟敏悉序的流程。

3、循环结构:循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。

它由循环体中的条件,判断继续执行某个功能还是退出循环。

根据判断条件,循环结构又可细分为以下两种形式,先判断后执行的循环结构和先执行后判断的循环结构。

4、循环图:数据流图是SA方法中用于表示逻辑系统模型的一种工具,它从数据传递和加工的角度,以图形的方式来刻画数拿哗据流从输入到输出的变换过程。

数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中
流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

数据流图是需求分析阶段产生的结果。

Python程序设计第3章+程序控制结构

Python程序设计第3章+程序控制结构

3.1 程序的基本结构
图3-1 流程图的7种基本元素
3.2 顺序结构
顺序结构是程序的基础,是程序设计中最简单的,只要按照解决问题的 顺序写出相应的语句就可以。它的执行从上而下,依次执行,如图3-2所示。
图3-2 顺序结构的流程图
【例3.1】计算军犬速度
军犬的耐力是非常有名的。有关资料 显示,第一次世界大战期间为传达命令, 一只军犬50分钟跑完了21.7km的路程。算 一算,这只军犬平均每分跑多少米?
3.5 实例:控制结构灵活运用
3.5.2 猜数字游戏
【例3.7】编写猜数字游戏程序。
#猜数字游戏 import random x=random.randint(1,10) for i in range(1,4):
m=eval(input("请输入一个整数:")) if x == m:
print("恭喜,猜对了,一共猜了{}次".format(i)) break elif m<x: print("猜小了") else: print("猜大了") if i == 3: print("游戏结束")
根据会员情况,输出最后应付的金额。
#不同消费者买单3 #会员编号(2:金卡会员,1:普通会员,其他:非会员) #不同的会员消费者买单 consume=eval(input(“请输入消费额:”)) flag=int(input(“请输入会员编号:”)) if flag == 2:
consume *= 0.9 elif flag ==1:
consume *= 0.95 else:
consume *= 0.99 print("用户应付费: {:.2f}".format(consume))

基本控制结构程序设计

基本控制结构程序设计

基本控制结构程序设计程序设计的基本控制结构是指控制计算机程序流程的一些基本结构。

这些结构包括顺序结构、选择结构和循环结构。

通过合理地使用这些控制结构,可以实现复杂的程序逻辑和流程控制。

首先,顺序结构是程序中最简单的结构,也是最基本的结构。

程序按照代码的书写顺序依次执行,每行代码只执行一次。

此结构适用于简单的程序段,不需要进行任何判断,没有分支执行路径。

其次,选择结构用于根据条件的真假来选择执行特定的代码块。

在编程语言中,条件运算符和条件语句是实现选择结构的常用方式。

条件运算符通过判定条件的真假来选择执行其中的一次或多次操作。

条件语句根据条件的真假来选择执行不同的代码块。

常见的条件语句有if-else语句和switch语句。

if-else语句根据条件的真假来执行不同的代码块,如果条件为真,则执行if代码块,如果条件为假,则执行else代码块。

switch语句通过匹配不同的case来选择执行的代码块。

最后,循环结构是为了反复执行其中一段代码而设计的结构。

循环结构有两种常见的形式,分别是for循环和while循环。

for循环在已知循环次数的情况下使用,通过指定初始值、终止条件和迭代操作来控制循环次数和流程。

while循环则在未知循环次数的情况下使用,只要条件为真,就会一直执行循环体中的代码。

在循环结构中还经常使用break和continue语句来控制循环的中断和跳过。

1. 计算一个整数数组的平均值。

通过for循环遍历数组元素,累加求和,然后除以数组长度得到平均值。

2. 判断一个数字是否为素数。

使用for循环从2到该数字的平方根进行遍历,判断是否能被整除。

如果存在能被整除的数,则该数字不是素数。

3. 根据用户输入的分数输出其等级。

使用if-else语句对不同的分数范围进行判断,在不同的范围输出不同的等级。

4. 打印九九乘法表。

使用两个嵌套的for循环来遍历每个乘法表的元素,并格式化输出。

总结起来,基本控制结构程序设计是实现程序流程控制的基础。

第4章 结构化程序设计和控制结构[68页]

第4章 结构化程序设计和控制结构[68页]
(d) 循环
测试 假 条件
真 子任务
选择
– if – if-else – switch
控制结构
循环
– while – for – do-while
if (条件) 行为;
if
条件
F
条件 ,一个C表达式, TRUE (non-zero) 或 FALSE (zero). 行为 ,一条C语句, 简单语句或复合语句.
do-while
do 循环体;
while (条件);
循环体
在循环体被执行一次之后再计算
条件
条件表达式的值
T
F
示例
i=0; do {
printf ("%d\n" , i); i=i+1; } while ( i < 10 );
编程风格
• 对于以上三种类型的循环结构,哪些情况下 采用while,哪些情况采用for,哪些情况采用 do-while?
if (key == ‘K’)
numK++;
if (month= =4 | | month= =6 | | month= =9 | | month= =11)
printf ("The month has 30 days\n");
常见错误
if(18<= age <=25)
num++;
/*此条件总是为真*/
#include <stdio.h> int main(){
int i; for (i=0;i<10;i++)
printf ("%d ",i); }
示例
• /*---这个循环会输出什么?---*/ for (i=0; i<=10; i++)

C语言程序设计-控制结构程序设计实验报告

C语言程序设计-控制结构程序设计实验报告

C语言程序设计-控制结构程序设计实验报告实验报告实验课程名称C C 语言程序设计实验项目名称控制结构程序设计年级专业姓学生姓名学号实验时间:年月日学生所在学院:专业:班级:姓名学号实验组实验时间指导教师成绩实验项目名称控制结构程序设计实验目的及要求:目的:(1). 以简单例证熟悉scanf()、printf()函数的使用及顺序结构程序设计。

(2). 用if-else 语句及其嵌套形式编写一个选择结构问题的程序设计。

(3). 用switch 语句实现一个多分支选择的应用问题程序设计。

(4). for 语句、while 语句、do…while 语句的应用设计,包括多重循环问题。

要求:能熟练掌握采用选择控制语句(if 语句、switch 语句)、循环控制语句(for 语句、while 语句、do…while 语句)进行程序设计;掌握break 语句、continue 语句;掌握控制结构的嵌套。

要求用流程图表示算法。

实验(或算法)原理:在许多问题中需要用到循环控制。

循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。

循环分为两种:无休止循环和有终止循环。

构成有效循环的条件:循环体和循环结束条件。

实验硬件及软件平台:计算机Viscual VC++6.0实验步骤:1.分析题目,写出算法;2.用C 语言写出程序;3.检查并改进所写程序;4.编译并连接,运行程序,若有错误,再检查并修改。

)实验内容(包括实验具体内容、算法分析、源代码等等):(1 1 )数据加密算法分析、源代码如下:# includestdio.h void main() {char c1="c",c2="h",c3="i",c4="n",c5="a";c1=c1+16;c2=c2+12;c3=c3-5;c4=c4-5;c5=c5+14;printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 实验结果如下:((2 )成绩等级判定算法分析、源代码如下:#includestdio.h main() {int score;scanf("%d",score);printf("score=%d:",score);switch(score/10) {case 10:printf("very good\n");case 9:printf("A\n");case 8:printf("B\n");case 7:printf("C\n");case 6:printf("D\n");case 5:printf(" 挂科\n");} } 实验结果如下:((3))***-*****0011k k kkk k算法分析、源代码如下:#include stdio.h main() {int i;double s=0;for(i=1;ii++)s+=i;for(i=1;ii++)s+=i*i;for(i=1;ii++)s+=1.0/i;printf("%lf\n",s);} 实验结果如下:((4 )不多于5 位的正整数的操作(P113.7 )算法分析、源代码如下:#include stdio.h #include string.h main() {char a,b; int n,i; printf(" 输入一个不多于五位的正整数:"); scanf("%s",a); n=strlen(a); printf(" 它的位数是:%d\n",n); printf(" 它的各位数字是:\n"); for(i=0;ii++) printf("%c\t",a[i]); printf("\n"); for(i=0;ii++) b[n-i-1]=a[i]; b[n]=0; printf(" 它的逆序是:\n"); puts(b); } 实验结果如下:((5 )生成水仙花数#include stdio.h main() {int i,k,j; long s,q; for(i=1;ii++)for(k=0;kk++)for(j=0;jj++){s=i*100+k*10+j;q=i*i*i+j*j*j+k*k*k;if(s==q)printf("%ld\n",s);} } 实验结果如下:实验结果与讨论:经过上次的实验操作,这次的实验虽然难了点。

第四章结构化程序设计控制结构

第四章结构化程序设计控制结构


PRINT*,‘X1=’,X1,’,X2=’,X2

40 RETURN
• END SUBROUTINE
3. IF 块
IF 块的构造形式为:

IF condition THEN

block1

[ELSE

blockE]

END IF
其中,condition是一个逻辑表达式,其结果不外乎真或假。 block1 和 blockE是语句块,当条件为真,block1 被执行; 否则,blockE 被执行。ELSE 块是可选的。

[CASE DEFAULT

blockD]

END SELECT
其中expr 必须是整型、字符型或者逻辑型变量。Selector 可以是同一类型, 非交叉的值或值范围(:用来规定值的范围)的列表。用CASE块统计 学生得分如下:
SELECT CASE ( INT(Final))

CASE (90:)

case default

PRINT*,‘Consonant’

END SELECT

ELSE

PRINT*,‘Something else’
CASE块的构造形式为:

SELECT CASE (expr)

CASE (selector1)

block1

CASE (selector2)

block2

D=D+1

ELSE

F=F+1

END IF
程序执行一旦发现某个逻辑条件为真,就不会再去判断其他

第三章 结构化程序设计控制结构

第三章 结构化程序设计控制结构

三. 多重判断IF-ELSE IF
IF (条件1) THEN …… 条件1成立时,执行这个模块程序 …… ELSE IF(条件2) THEN …… 条件2成立时,执行这个模块程序 …… ELSE IF(条件3) THEN …… 条件3成立时,执行这个模块程序 …… …… ELSE IF(条件4) THEN …… 条件4成立时,执行这个模块程序 …… ELSE ! ELSE这个模块可以省略 …… 每个条件都不成立时,才执行这个模块程序 …… END IF
PRINT *, "RAIN:" READ *, RAIN PRINT *, "WIND:" READ *, WINDSPEED IF ( RAIN>=500 .OR. WINDSPEED>=10) THEN PRINT *, "停止上班上课" ELSE PRINT *, "照常上班上课" END IF STOP END
* 逻辑运算符:
.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.
优先级由高到低依次为:算术运算符,关系运算 符和逻辑运算符。

例3-3
PROGRAM EX0403 IMPLICIT NONE INTEGER RAIN, WINDSPEED

例3-8判断象限
PROGRAM EX0308 IMPLICIT NONE REAL X,Y INTEGER ANS WRITE (*,*) "INPUT (X , Y)" READ (*,*) X,Y
IF ( X>0 ) THEN IF (Y>0) THEN ! X>0,Y>0 ANS=1 ELSE IF (Y<0) THEN ! X>0, Y<0 ANS=4 ELSE ! X>0, Y=0 ANS=0 END IF ELSE IF (X<0) THEN IF (Y>0) THEN ! X<0, Y>0 ANS=2 ELSE IF (Y<0) THEN ! X<0, Y<0 ANS=3 ELSE !X<0, Y=0 ANS=0 END IF

第5章-控制结构程序设计

第5章-控制结构程序设计
Else Print "不及格"
End If
4. Select Case语句(情况语句)
形式:
Select Case 变量或体现式
Case 体现式列表1
语句块1
Case 体现式列表2
语句块2
数值型或字符串体现式

[Case Else
语句块n+1]
End Select
功能:根据测试体现式旳值,从多种语句块中选择一 种符号条件旳语句块执行。
下面旳赋值语句都是错旳:
5=X
' 左边是常量。
Abs(X)=20 ' 左边是函数调用,即是体现式。
5. 赋值符号“=”两边旳数据类型一般要求应一致。
例5.1 设计一种应用程序,互换变量x,y旳值。
问题分析:该问题是提供数据x,y,变量x,y旳值 互换。在VB中两个变量互换需要借助于第三个变量 来完毕,互换旳过程如图所示。
x
y
t
图 1-3-8 两个数交换 过程
相应语句: t=x x=y y=t
5.2 选择构造
If-Then语句(单分支语句) If-Then-Else语句(双分支语句) If-Then-ElseIf语句(多分支语句) Select Case语句(情况语句)
对于If语句来说,每种语句有两种构造格式:
单行构造格式 块(多行)构造格式
Choose函数
Choose函数能够替代select case语句,合用于 简朴旳多重判断场合
格式:Choose(变量,值为1旳返回值,……, 值为n旳返回值)
其中变量旳类型必须是数值型,当变量旳值是 1~n中间旳非整数旳时候,系统自动取整。
Op=choose(Nop,“+”,“-”,“*”) 当NOP旳值为1是,op=“+”。 当NOP旳值为2是,op=“-”。 当NOP旳值为3是,op=“*”。

第4章控制结构程序设计

第4章控制结构程序设计
*
《解析C程序设计》第4章 控制结构程序设计
*
算法的五个特性
●有穷性:对任何合法的输入值,算法中每个步骤由计算机执行的次数及时间都是有限的。 ●确定性:算法中每个步骤含义明确,无二义性。在任何条件下,相同的输入,必有相同的输出。 ●可行性:算法中描述的操作都可通过有限次的基本运算来实现。 ●输入:一个算法应具有零个或多个输入。 (无输入情况:如求:1*2*3*4*5)。 ●输出:一个算法应具有一个或多个输入。
*
《解析C程序设计》第4章 控制结构程序设计
*
【例4-1】输入三个数,然后输出其中最大的数。 (1) 输入A,B,C。 (2) 若A > B,则MAX=A;否则MAX=B。 (3) 若C > MAX,则MAX=C。 (4) 输出MAX,MAX即为最大数。
*
《解析C程序设计》第4章 控制结构程序设计
*
常用算法
●递推化算法(牛顿迭代法、二分法、梯形法、穷举法等); ●排序算法(选择法、冒泡法); ●查找算法(顺序查找、折半查找); ●有序数列的插入、删除操作; ●存储区的动态分配与释放,单向线性链表的建立、查找、插入、删除操作; ●初等数论问题求解的有关算法(最大公约数、最小公倍数、素数等); ●递归算法(求最大公约数、阶乘等); ●字符串的处理(字符和字符串的插入、删除、字符串的连接、比较等)。
的算法。
开始
1 ==> sign
1 ==> sum
2 ==> deno
a
deno+1 ==> deno
(-1)*sign ==> sign
sign*(1/deno) ==> term
sum+term ==> sum

第三章 基本控制结构程序设计

第三章 基本控制结构程序设计

第三章 基本控制结构程序设计结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。

本章将介绍分支结构和循环结构的设计方法。

这两种结构分别用C++提供的两个流程控制语句分支语句和循环语句来实现。

所谓流程控制语句,是专门用来控制程序执行流程的语句,也称为过程化语句。

在介绍分支语句、循环语句及其程序设计的同时,还将介绍一些常用算法,并通过实例实践结构化程序设计的方法。

3.1 分支结构程序设计分支结构程序设计通过分支语句实现。

3.1.1 if 语句if 语句称为分支语句,或条件语句,其功能是根据给定的条件,选择程序的执行方向。

if 语句的基本格式为:if (表达式) 语句1; else 语句2;其中的表达式称为条件表达式,可以是C++中的任意合法表达式,如算术表达式、关系表达式、逻辑表达式或逗号表达式等。

语句1和语句2也称为内嵌语句,在语法上各自表现为一个语句,可以是单一语句,也可以是复合语句,还可以是空语句。

该语句的执行流程是,先计算表达式的值,若表达式的值为真(或非0),则执行语句1,否则(表达式的值为假,或为0),执行语句2。

分支语句在一次执行中只能执行语句1或语句2中的一个。

如果语句2是空语句,else 也可以省略。

这种情况下当条件表达式的值为假时,将不产生任何操作,直接执行分支语句之后的语句。

例如,对于下列分支函数:⎩⎨⎧≥+<=0x x 3x 0 x 0 y 3用if 语句可以描述为:if (x<0) y=0;else y=x*x*x+3*x;也可以这样描述:y=0;if (x>=0) y=x*x*x+3*x;这种描述的思想是,令y 的值为0,如果x>=0,重新计算y 的值,否则(即x<0),y 的值不变。

【例3.1】 输入一个年份,判断是否为闰年。

分析:假定年份为year, 闰年的条件是:year%4==0&&year%100!=0||year%400==0。

实验6 控制结构综合程序设计1.doc1

实验6 控制结构综合程序设计1.doc1

实验6 控制结构综合程序设计【实验目的】(1)熟练掌握分支结构、循环结构的综合应用。

(2)熟练掌握使用函数编写程序的方法。

(3)熟练掌握结构化程序设计的思想及方法。

(4)熟练掌握C 程序的调试方法。

【实验内容】一、调试示例改正下列程序中的错误。

根据下式求π的值,直到某一项小于610-。

1!2!3!!1...233535735 (21)i i π=+++++⨯⨯⨯⨯⨯⨯⨯+ 源程序(有错误的程序)1 #include <stdio.h>2 int fact(int n);3 int multi(int n);4 int main(void)5 {6 int i;7 double sum,item,eps;89 eps=1E-6;10 sum=1;11 item=1;12 for(i=1;item>=eps;i++){13 item=fact(i)/multi(2*i+1);14 sum=sum+item;15 } //调试时设置断点16 printf("PI=%0.5lf\n",sum*2);1718 return 0;19 }2021 int fact(int n)22 {23 int i;24 int res;2526 res=1;27 for(i=0;i<=n;i++)28 res=res*i;2930 return res; //调试时设置断点31 }3233 int multi(int n)34 {35 int i;36 int res;3738 res=1;39 for(i=3;i<=n;i=i+2)40 res=res*i;4142 return res; //调试时设置断点43 }运行结果(改正后程序的运行结果)PI=3.14159(1)对程序进行编译和连接,没有出现错误信息。

(2)运行程序,结果如下。

PI=2.00000结果显然错误,说明程序存在逻辑错误,需要调试修改。

程序的控制结构及结构化程序设计方法.

程序的控制结构及结构化程序设计方法.

算法的特性 1.有穷性:在有限的时间内,操作步骤能够终止。
2.确定性:每一步操作的含义必须明确,不允许有歧义性。
3.有效性:每一步都应当能有效地进行并得到确定的结果。 4.有0个或多个输入。 5.有1个或多个输出。
简单算法举例
第 三 章
求12345
算法一 S1:求12 ,得2; 算法二 S1:p=1
算法: if a>b 将a与b对换 main( ) { float a,b,c,t;
程 序 的 控 制 结 构 与 结 构 化 程 序 设 计 方 法
if a>c 将a与c对换 if b>c 将b与c对换
通过上述步骤使a,b,c中的数由小到大。
scanf(“%f,%f,%f”,a,b,c);
if (a>b) {t=a;a=b;b=t;}
例: if (a>b) max=a;
else max=b;
第 三 章
3. else~if 形式
if (表达式1) 语句 1 else if (表达式 2) 语句 2
程 序 的 控 制 结 构 与 结 构 化 程 序 设 计 方 法
else if (表达式 3) 语句 3 ……
表达式1

假 假 假
表达式2
程 序 的 控 制 结 构 与 结 构 化 程 序 设 计 方 法
优先级: 优先级:算术关系赋值
关系运算:是判断两个量大小、相等的操作。
结合方向:自左右 关系表达式 : a > b+c, a != b 关系表达式的值为逻辑值 真:1(非0即为真) 假:0
运算符和表达式
第 三 章
——逻辑运算符和逻辑表达式
第 三 章
第三章
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• While 循环控制程序反复执行一段代码, 直到某个条件发生。
• 3.1.1 While Loop 的组成与创建
• While Loop 是LabVIEW 的基本循环结构之一, 类似 于C 语言中的do…while 循环结构:
• 选择Functions→Programming→Struct ures 选项, 从中选择While Loop, 如图3-1 所示 。
• 为了存取前几轮循环的数据, 可以通过增加循环框左端子元素来实 现。这个功能对于计算数据均值非常有用。方法是右击左边端子, 在弹出的快捷菜单中选择Add Element 命令。例如, 如果 某个移位寄存器左边的端口含有3 个元素, 那么就可以访问到最近 3 轮循环的数据, 如图3-11 所示。
上一页 下一页 返回
上一页
返回
3.5 综合案例3-2: 温度超限报 警系统
• 3.5.1 任务描述
• 创建一个VI, 连续以每500 ms 一次的速率测量温度, 如果高 于或者低于设定的范围,告警灯显示“红色”, 同时驱动蜂鸣器报 警, 工作状态栏显示为warning; 若检测温度在正常范围内 , 告警灯显示“绿色”, 工作状态栏显示为normally。温 度以历史曲线格式显示, 同时将上、下限设定值也显示在图表中。
• 在反馈节点上右击, 在弹出的快捷菜单中选择Change Dir ection 命令可改变方向。反馈节点和移位寄存器可以互换, 在反馈节点上右击, 在弹出的快捷菜单中选择Replace Wi th Shift Register 命令即可。
上一页
返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波
• 3.1.2 While 循环的编程要点
• 1.条件端子的选择 • 右击While 循环的条件WA 端子, 弹出快捷菜单, LabVI
EW 默认的循环判断条件是Stopif True 命令(只要循环 条件端子输入为真, 则停止循环)。若选择Continue if True 命令, 此时循环条件端子符号变成空心的, 如图3-4 所 示。
下一页 返回
3.1 While Loop 结构
• While Loop 可以反复执行循环体的程序, 直至特定的条件 不满足才停止循环。While 循环如图3-2 所示, 循环变量表 示当前循环次数, 从0 开始计数(i= 0), 先执行循环体, 而 后i+1, 如果循环只执行一次, 那么循环输出值i=0。条件端 子用于控制循环的执行或停止,循环至少要运行一次。
3.1 While Loop 结构
• 3.1.5 反馈节点
• 当循环边框比较大时, 使用移位寄存器会造成过长的连线, 因此L abVIEW 提供了反馈节点(Feedback Node), 其 在功能上完全等价于移位寄存器。
• 在循环中, 当把一个节点的输出连接到初始化接线端(可对反馈 节点进行初始化, 若不需要初始化可用右键取消), 如图3-14 所示。
上一页 下一页 返回
3.1 While Loop 结构
• 如果将显示控件连接到反馈节点输入接线端, 显示最后一次循环结 束后得到的值, 如图3-15 (a) 所示, 输出结果为10; 如 果将显示控件连接到反馈节点输出接线端, 如图3-15 (b) 所 示, 显示最后一次循环前得到的值, 输出结果为9。
上一页 下一页 返回
3.1 While Loop 结构
• 移位寄存器在程序框图上用在循环边框上相应的一对端子来表示。右 边的端子中存储了一轮循环结束时的数据。在下一轮循环开始时, 右端子的数据将移位到左边的端子, 参与下一轮循环的运算。移位 寄存器可以移位各种类型的数据, 如数值、布尔数、数组、字符串 等。在第一个对象接入移位寄存器时, 会自动刷新数据, 图3-1 0 表示了它的工作过程。
理超出选项范围的情况,除非能够为每个可能的选择值都设置一个子 程序框图。 • 当显示默认子程序框图时, 在条件结构边框上右击, 在弹出的快捷 菜单中选择Make This The Default Case 命 令。如要取消默认选项, 在条件边框上右击, 在快捷菜单中选择R emove Default 命令。
上一页 下一页 返回
3.1 While Loop 结构
• 在调出的快捷菜单中选择Properties 命令, 如图3-6 所示, 选择Operator 选项卡, 列出了按钮的6 种动作方式 , 旁边是选中的动作方式的图解和文字说明。图解第一行(m) 表 示鼠标的动作; 图解第二行(v) 表示控制量的值; 图解第三行是 开关符号或程序读取控制量值的时间点(RD)。
这个数据的隧道都可以;但是从Case 结构边框向外输出数据时 , 各个子程序框图都必须为这个隧道连接数据, 如图3-26(a ) 所示; 否则隧道图标是中空的, 程序运行按钮也是断开的, 如图 3-26 (b) 所示。 • 右击隧道, 在弹出的快捷菜单中选择Used Default If Unwired 命令, 使没有连线的子程序框图输出相应数据类型 的默认值。
• N: 计数端(输入), 用于指定循环执行的次数。 • i: 循环变量(输出端子), 含有循环已经执行的次数。 • 在程序运行前, N 必须赋值。通常情况下, 该值为整型数。循环计
数变量i 的步长是固定不变的。
上一页 下一页 返回
3.3 For Loop 结构
• 3.3.2 For 循环的自动索引
单元3 结构控制程序设计
• 3.1 While Loop 结构 • 3.2 综合案例3-1: 温度信号工频干扰的
软件滤波 • 3.3 For Loop 结构 • 3.4 分支结构 • 3.5 综合案例3-2: 温度超限报警系统 • 3.6 顺序结构 • 3.7 公式节点
返回
3.1 While Loop 结构
12…20” 会自动合并成“5…20” )。 • ④开区间, 如“…1” “9…”。 • (2) 字符型和枚举型选项值的设置。 • 设置方式同数值型, 但在标签中会被自动加上双引号。
上一页 下一页 返回
3.4 分支结构
• 3.隧道的要求 • 向Case 结构边框内输入数据时, 各个子程序框图连接或不连接
下一页 返回
3.4 分支结构
• 类似于带else 的if 语句:
• 上述C 语言程序编写的分段函数, 可以用LabVIEW 的Cas e 结构编写为图3-24 所示。
上一页 下一页 返回
3.4 分支结构
• 3.4.2 Case 结构的设置
• 1.默认选项的设置 • LabVIEW 中使用条件结构, 必须设置一个默认子程序框图处
• 布尔控件的机械属性选项及功能说明见表3-1。
• 3.1.4 移位寄存器
• 移位寄存器(Shift Register) 可以将数据从一轮循 环周期传递到下一轮循环。在程序设计中, 经常要用到它。创建一 个移位寄存器的方法是, 右击循环的左边或者右边, 在弹出的快捷 菜单中选择Add Shift Register 命令, 如图3-9 所示。
• LabVIEW 循环的一个最大特点在于它使用了自动索引功能。 自动索引非常有用, 有时并不知道一个数组的元素个数, 只关心怎 样取出它的各元素来进行处理, 或者是要把每次循环后的单个元素 进行累加输出, 这时就需要用到自动索引。自动索引的一个典型应 用程序如图3-21 所示, 可以看出, 左边的两个嵌套For 循环 体中, 里层的循环每次循环产生一维数组0~3, 外层的循环每次 将一维数组加上重复端子i, 最后输出一个5 行4 列的二维数组, 显示结果见图3-21 (b) 中的“显示数据”。在右边的两个嵌 套For 循环体中, 外层的循环每次从二维数组中产生出一行索引 , 里层的循环每次从一维数组中产生出一个元素索引, 所有元素显 示见图3-21 (b) 中的“索引数据”。
• 3.2.1 任务描述
• 在工业现场环境下, 温度传感器输出的温度电压往往会叠加了工频 干扰。这种工频干扰由于频率低, 很难用滤波器滤掉(除非采用体 积特别大的滤波器, 而且效果不一定好), 采用软件滤波的方案是 一种比较好的方案。这里应用移位寄存器求最近4 次温度测量值的 平均值, 并以波形的形式显示这一平均值。
• 3.2.4 运行与调试
• 按Ctrl+R 组合键程序运行。在图形显示器中显示两条覆盖的 曲线, 可以通过定制波形图指示器将其区分, 本例中将plot 0 线形修改为白色实线, 将plot 1 的线形修改为红色点。
上一页
返回
3.3 For Loop 结构
• For Loop 控制一段程序代码执行设定的次数。
上一页
返回
3.4 分支结构
• 3.4.1 Case 结构的创建
• 选择Programming→Structures 选项, Ca se 结构的多个子程序框图重叠在一起, 任何时候只显示其中的一 个, 如图3-23 所示。条件结构边框的顶部是Select La bel (条件选择器标签), 默认有两个布尔型的选项True 和 False, 对应两个子程序框图。可通过左右箭头选择, 或单击 向下箭头选择。当选择某一个选项, 可以显示此选项对应的子程序 框图, 并能对框图进行编辑。Case 结构左侧边框上带“?” 的 图标是条件端子(Case Selector), 用于连接边框外 的输入值。将输入值和Select Label 的各选项值进行比 较, 从而判断执行哪一个子程序框图的代码。Select Lab el 默认为布尔型, 但也可以是其他类型。
Add Shift Register 命令。 • ②右击寄存器的左端子, 在弹出的快捷菜单中选择Add Elem
ent 命令, 添加一个寄存器。用同样的方法创建第三个元素。 • (2) 如图3-17 所示, 完成程序框图的编辑。
上一页 下一页 返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波
相关文档
最新文档