第五章分支结构程序设计
高中信息技术算法与程序设计教案粤教版选修

高中信息技术算法与程序设计教案粤教版选修一、第一章:算法与程序设计概述1. 教学目标了解算法的概念、特性以及算法与程序的关系。
掌握算法描述的方法,如伪代码和流程图。
理解程序设计的基本概念,如编程语言、编译器和解释器。
2. 教学内容算法定义及特性算法描述方法:伪代码和流程图程序设计基本概念3. 教学方法采用案例分析法,以具体的编程语言为例,让学生理解算法与程序设计的关系。
采用任务驱动法,让学生通过实际编写代码,体验算法实现的过程。
4. 教学步骤介绍算法的概念和特性,结合实例进行分析。
讲解伪代码和流程图的表示方法,引导学生学会使用这两种工具描述算法。
讲解程序设计的基本概念,如编程语言、编译器和解释器。
5. 课后作业结合本章内容,让学生编写一个简单的程序,实现一个基本的算法。
二、第二章:顺序结构程序设计1. 教学目标掌握顺序结构程序设计的基本语法和技巧。
理解顺序结构程序设计的原则,能够编写清晰、高效的程序。
2. 教学内容顺序结构程序设计的基本语法顺序结构程序设计的原则3. 教学方法采用案例分析法,通过分析具体的程序案例,让学生理解顺序结构程序设计的方法。
采用任务驱动法,让学生通过实际编写代码,掌握顺序结构程序设计技巧。
4. 教学步骤讲解顺序结构程序设计的基本语法,如变量声明、数据类型、输出语句等。
讲解顺序结构程序设计的原则,如代码清晰、可读性强、模块化等。
5. 课后作业结合本章内容,让学生编写一个简单的顺序结构程序,实现特定的功能。
三、第三章:分支结构程序设计1. 教学目标掌握分支结构程序设计的基本语法和技巧。
理解分支结构程序设计的原则,能够编写清晰、高效的程序。
2. 教学内容分支结构程序设计的基本语法分支结构程序设计的原则3. 教学方法采用案例分析法,通过分析具体的程序案例,让学生理解分支结构程序设计的方法。
采用任务驱动法,让学生通过实际编写代码,掌握分支结构程序设计技巧。
4. 教学步骤讲解分支结构程序设计的基本语法,如条件语句、循环语句等。
第五章--分支结构PPT课件

2021/7/22
8
例2.用cond函数来描述下列计算式: x 0≤x<2
F(x)=
x2 2≤x<5 x3 5≤x<7
ex x≥7
程序为:
(initget 7)
(setq x (getreal “Enter x=? (x >= 0)”))
(setq fx (cond ((and (>= x 0) (< x 2)) x)
可以是表。
2021/7/22
5
2.〈测试—表达式〉的值不一定必须为T才算成立,因为从逻辑角度来说任何 非 nil 的 表 达 式 都 与 T 等 效 , 只 要 其 值 为 非 nil 即 可 , 例 如 〈 测 试 — 表 达 式 〉 为 1.2.“text”,(List 1 2 3),(setq a 3.0) (+ 13 8),(print “a”),a(已赋值)等,其值虽非T, 但为非nil,固测试均成立。并进行〈则—表达式〉。只有〈测试—表达式〉的值 为nil,如/(),(and (< 4 1) (> 3 2))测试不成功,则进行〈否则—表达式〉。
执行该函数时对表达式依次求值,只要有一个表达式的值为非nil则返回T。
只有2全021部/7/2表2 达式的值为nil,才返回nil,例如:
3
(or 1 2 3 nil)
返回值T
(or (< 5 3) (= 2 1) (/= 2 2) (> 3 5)
返回值nil
(or a b c d)
返回值nil
;(a b c d均未赋值)
((and (>= x 2) (< x 5)) (* x x))
((and (>= x 5) (< x 7)) (expt x 3))
分支结构程序设计54页PPT

15会再掉进坑里。——黑格尔 32、希望的灯一旦熄灭,生活刹那间变成了一片黑暗。——普列姆昌德 33、希望是人生的乳母。——科策布 34、形成天才的决定因素应该是勤奋。——郭沫若 35、学到很多东西的诀窍,就是一下子不要学很多。——洛克
分支结构程序设计
11、战争满足了,或曾经满足过人的 好斗的 本能, 但它同 时还满 足了人 对掠夺 ,破坏 以及残 酷的纪 律和专 制力的 欲望。 ——查·埃利奥 特 12、不应把纪律仅仅看成教育的手段 。纪律 是教育 过程的 结果, 首先是 学生集 体表现 在一切 生活领 域—— 生产、 日常生 活、学 校、文 化等领 域中努 力的结 果。— —马卡 连柯(名 言网)
第5章 汇编语言程序

Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。
分支结构程序设计

分支结构程序设计
教学目标
知识与技能:理解程序设计的分支结构基本思想
掌握分支结构语句特点
过程与方法:培养用算法分析问题的能力
能够使用分支结构绘制流程图和编写简单的程序解决具体问题
情感态度与价值观:
体会用结构化方法解决数学问题的便捷性
明确结构化在程序设计中的重要作用
激励尝试使用多种方法解决问题,明确实践是检验真理的唯一标准
培养良好的编程习惯和态度,增强集体观念,在合作学习时,尊重别人的意见和劳动,培养学生相互
协作的集体精神。
教学重点:
理解程序设计的分支结构基本思想
教学难点:
分支结构实现语句的格式和功能
编写简单的程序的过程
教学过程:
从例题中引出分支结构的概念:根据给定
条件是否成立而决定执行A或B框中的算法步
2
(学生可能不一定将判断条件写成a>b,相应的分支语句也要变化。
)
流程图:
(注意判断条件的写法,是根据分段函数的定义来确定的。
)
流程图:
4
【例7】分支嵌套学会划分条件。
●分析问题:
输入什么数据?(输入乘车的人数person与乘车的站数n)
●流程图:
【练习2】的选用比较接近高一学生的数学知
识,既可以锻炼他们对分支结构的认识,
又可以实践将数学问题用计算机解决。
●流程图:略。
【例8】说明一题多解。
算法1
6
算法2:抓大放小逐步判断。
●部分代码:
IF a>=b THEN
IF a>=c THEN
max=a
ELSE
max=c
8。
微机原理第五章 程序设计-dsh

INT
COSEG
21H
ENDS END START
第三节 分支程序
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由 CS和 IP决定的,当程序 的转移仅在同一段内进行时,只需修改偏移地址 IP的 值;如果程序的转移是在不同的段之间进行,则段基 址 CS和偏移地址 IP均需要修改。 转移指令分为无条件转移指令和条件转移指令。 在进行分支程序设计时,首先要根据处理的问题用比 较、测试的方式,或者用算术运算、逻辑运算使标志 寄存器产生相应的标志位,根据转移条件选择转移指 令。
INC INC DEC JNZ
BX BX CX LOP ; ;控制部分
修改部分
MOV YY,AX MOV AH,4CH INT CODE ENDS 21H
END
START
一.循环的基本结构
1.先执行,后判断结构
流程图如右:
入口
初始化部分
循环体
修改部分
N
循环 结束? Y 出口
例2. 编程统计数据块中正数的个数,
Y
RS END (DX)
DATA
SEGMENT
D1
COUNT RS DATA CODE
DB,-1,-3,5,7,-9,·,-6 · ·
EQU DW ENDS SEGMENT ASSUME CS:CODE,DS:DATA $-D1 ?
START:
MOV
AX,DATA
MOV
MOV MOV MOV
DS,AX
JMP JUS2
BIGD: JG JUS1 ;x>0转移 ;x=0
MOV AL, 0
JMP
JUS1: JUS2:
JUS2
VF 第5章 结构化程序设计

5.4 程序设计的三种基本结构
按照结构化程序设计的观点,任何 算法都可通过三种基本程序结构的组 合来完成。这三种基本程序结构分别 是:顺序结构、分支结构和循环结构。 5.4.1 结构化程序设计概述 5.4.2 选择结构 5.4.3 循环结构
5.4.1 结构化程序设计概述
结构化程序设计的提出 为了便于阅读和修改程序 方法:严格按照三种基本程序结构编写程序 程序模块化,尽量减少各模块间关联 自顶向下逐步求精:整体->部分->更小部分 程序的三种基本结构 顺序结构 选择结构 循环结构
5.1.2 程序文件的基本组成
程序一般由以下要素组成:
变量:保存中间结果,参与运算。
普通语句:操作数据库的命令、输入输出
等。 程序流程语句:控制程序方向,如跳转、 选择等。 过程与函数:完成特定功能的子程序块
5.2 算法与流程图
算法是程序设计的重要环节,算法的 好坏直接影响到程序运行的效率和开销。 利用流程图描述算法是一种常用方法, 它可以使算法的描述直观形象,便于理 解。
5.2.3 算法的流程图描述(1)
在程序设计中,更经常是用流程图来 描述算法。用一些简单的几何框图表示 各种类型的操作,然后用带箭头的有向 流线将各个框图连结起来,以表示其执 行的先后顺序,这种框图称为“流程 图”。用流程图描述算法,直观形象, 易于理解。
5.2.3 算法的流程图描述(2)
最常用的流程图符号如下所示。 起止框:表示程序的开始和结束。
3.输入单字符语句: WAIT(2)
②WAIT语句只接收单个字符。若含有[TO <内存变量名>],则把该字符送内存变量, 内存变量是字符型的。 ③WAIT 语句的特点在于响应速度快,它常 用于程序中控制屏幕显示的暂停,使用户看 清屏幕上的内容之后,再按任一键让程序继 续执行。 例如:WAIT "请看清结果后按任一意键, 程序将继续运行"
《分支程序设计》课件

THANKS
感谢观看
解决方法
在设计分支程序时,应明确程序的逻辑关系,并仔细检查 每个条件判断和分支结构。同时,在编写代码时,应进行 充分测试,以发现并修正逻辑错误。
效率问题
总结词
效率问题是指程序在执行过程中消耗过多的计算资源或时间。
详细描述
分支程序设计中的效率问题可能包括过多的嵌套分支、重复计算等。这些因素会导致程序执行效率降低,影响程序的 性能。
分支程序设计的分类
根据分支结构的不同,分支程序设计可以分为单分支结构、双分支结构和多分支结构。单分支结构只有一个条件判断语句; 双分支结构有两个条件判断语句;多分支结构有多个条件判断语句。
根据分支条件的数量和复杂度,分支程序设计可以分为简单分支和复杂分支。简单分支是指只有一个或两个条件的分支;复 杂分支是指具有多个条件的分支,需要使用嵌套的if-else语句或switch语句来实现。
常见的多分支结构有if-else if语句和casebreak语句等。
循环结构
循环结构用于重复执行一段代码,直到满足某个条件 为止。它通常包含一个循环体和一个循环条件,根据 循环条件的值来决定是否继续执行循环体。
常见的循环结构有for循环、while循环和do-while循 环等。
嵌套结构
嵌套结构允许将一个完整的分支程序嵌套在另一个分支程序中,以实现更复杂的 逻辑控制。它通常包含一个外部分支结构和内部分支结构,通过嵌套来实现更复 杂的逻辑控制。
分支程序设计能够使程序更加灵活, 能够处理多种情况,提高程序的适应 性。
分支程序设计的基本原理
分支程序设计的基本原理是利用条件 判断语句,根据条件的真假,选择不 同的执行路径。当条件为真时,执行 某个分支的代码;当条件为假时,执 行另一个分支的代码。
C语言程序设计

>=90, A. (90-100)。 >=80, B. (80-89)。 >=70, C. (70-79)。 >=60, D. (60-69)。
>=0, E. (0-59)。 main( ) { float score; printf(“\n Enter a score(0-100):”); scanf(“%f”,&score); if (score>=90) printf(“A \n”); else if (score>=80) printf(“B \n”); else if (score>=70) printf(“C \n”); else if (score>=60) printf(“D \n”); else printf(“E \n”); }
次序任意
(4) 在switch开关分支语句结构中, default部分不是必须的, 如果没 有default部分, 则当e表达式的值与各case后的ci常量表达式的值 都不一致时, 则程序不执行该结构中的任何部分。 switch ( e ) { case c1: S1; break; case c2: S2; break; …… case cn: Sn; break; }
使用 switch-case 分支语句时,应注意以下几点: (1)switch 后面的e表达式 可以是整型常量或变量、字符型常量或变量、枚举 类型表达式。其结果值必须是整型数据或字符型数据。 switch ( e ) { case c1: S1; break; case c2: S2; break; …… case cn: Sn; break; default : Sn+1; break; } 例: main( ) { char a; switch (5+6/3) { .. .. } switch (a ) { .. .. } … }
汇编-循环与分支程序设计

方法A
MOV DL,0DH MOV AH,06H INT 21H MOV DL,0AH MOV AH,06H INT 21H
方法B
MOV DL,0AH MOV AH,06H INT 21H MOV DL,0DH MOV AH,06H INT 21H
记住以下ASCII值
退格:08H(即8) 空格:20H(即32) 换行:0AH(即10) 回车:0DH(即13) 0 :30H(即48) a :61H(即97) A :41H(即65)
程序流程图
开始
DX=A
DX=A+B BX=DX DX左移3位 BX左移1位
DX=BX+DX-500
结束
编写程序
DATA BUFA BUFB RESULT
SEGMENT DW ? DW ? DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CODE
➢ 循环控制部分:判断循环条件满足与否,常用方法:计数控制、特 征值控制、地址边界控制等。
➢ 常用指令
[1].LOOP,LOOPZ/LOOPE,LOOPNZ/LOOPNE;
[2].各种跳转指令;
特别要注意循环入口和循环次数的正确设置、地址指针及循环控
制条件的修改等。否则会得不到期望的结果。
➢ 多重循环程序设计循环嵌套
INT 21H
不回显在屏幕上
2.键盘一次输入一个字符串的方法:
串地➢址例存如入(,DS在:D数X)据、调区用定参义数的为字10送符A缓H冲区如下:
MOV MOV MOV MOV MOV
DABADDAXuHSX,f,,,TfASAO0eEXfArGf,Hsc/eSASBo/tBEuu设TCufnGRf置BftTMfueILeNIr/frENE/fGT/设e/NN/r/置BTB/2uu/1存ffBHDffDuD功入eefBBBrrf能字是的er参符存段的33?数串放地偏22 为的输址移D0最入U存地APH大字入址(长符D存S?度串入)并的DX存缓入冲B区uffer的首字节;
C语言程序设计教案第五章选择结构程序设计[修改版]
![C语言程序设计教案第五章选择结构程序设计[修改版]](https://img.taocdn.com/s3/m/12c4fb95f5335a8103d220da.png)
第一篇:C语言程序设计教案第五章选择结构程序设计第五章选择结构程序设计课题:教学目的: 教学重点:教学难点:第五章选择结构程序设计1、掌握实现选择结构的两种语句、一个运算符2、学会编写选择结构的程序if-else语句、switch语句、条件运算符嵌套if-else语句中的if与else匹配问题步骤一复习引导上一次课已经介绍了程序基本结构之一,但在大多数情况下都要用到选择结构。
步骤二讲授新课在C语言中实现选择结构的控制语句主要有if语句、switch语句一、条件语句1、if语句的三种形式语法1:if (表达式)语句; 如:#include main( ) { char ch; ch=getchar();if(ch>‟a‟&&chputchar(ch); }语法2:if (表达式)语句1;else语句2;如:#includemain(){ int a,b;scanf (“%d%d”,&a,&b);if(a>b) printf(“max=%d\n”,a);else printf (“max=%d\n”,b);}语法3:if (表达式1)语句1;else if (表达式2) 语句2;elseif (表达式3) 语句3;……else 语句n+1;例如:从键盘上输入字符,判别其分类:控制符、数字、大写字母、小写字母、其他字符。
#include “stdio.h”main( ) { char c; c=getchar( ); if (c< 32) printf(“This is a control character.\n”);else if (c>=…0‟&&celse if (c>=…A‟&&celse if (c>=…a‟&&celseprintf (“This is an other charater.\n”); 说明:1、三种形式的if 语句中,if 关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等);如:if (a=5) 语句;if (b) 语句;2、if 语句中,条件表达式必须用括号括起来,在语句后必须加分号;满足条件需执行一组语句时,该组语句必须用{ }括起来;如:if (a+b>c&&b+c>a&&a+c>b){ s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%6.2f\n”,area);}elseprintf(“It is not a trilateral.”);3、if 语句嵌套时,else 总是与它最靠近的if 匹配;如:有一数学函数:x0时,y=1 编写程序,输入x的值,输出相应y的值main( ) { int x,y;scanf(“%d”,&x);if (xelse if (x= =0) y=0;else y=1;printf(“x=%d,y=%d\n”,x,y);}说明:因为if 语句执行时总是简单地测试其中作为条件的“表达式”的值是0还是非0,便可利用这种特性来简化程序设计。
分支结构程序设计实验报告

分支结构程序设计实验报告实验目的本次实验旨在通过编写分支结构程序,加深对分支结构的理解,并提高编写程序的能力。
实验内容本次实验分为两个部分,分别为编写一个判断分数等级的程序和一个银行利率计算程序。
判断分数等级编写一个程序,根据输入的分数输出对应的等级。
等级规则如下:- 90分以上:优秀- 80-89分:良好- 70-79分:中等- 60-69分:及格- 60分以下:不及格银行利率计算编写一个程序,根据输入的存款金额和存款期限计算出存款到期后的本息合计。
假设银行利率为年利率,根据存款期限的不同,利率如下:- 存款期限小于等于1年:年利率为3%- 存款期限大于1年小于等于3年:年利率为4% - 存款期限大于3年:年利率为5%实验步骤判断分数等级程序思路1. 接收用户输入的分数。
2. 使用if-elif-else语句判断分数所处的等级范围。
3. 根据判断结果,输出对应的等级。
银行利率计算程序思路1. 接收用户输入的存款金额和存款期限。
2. 使用if-elif-else语句判断存款期限范围。
3. 根据判断结果,计算存款到期后的本息合计。
4. 输出存款到期后的本息合计。
实验代码判断分数等级程序代码pythonscore = float(input("请输入分数:"))if score >= 90:print("优秀")elif score >= 80:print("良好")elif score >= 70:print("中等")elif score >= 60:print("及格")else:print("不及格")银行利率计算程序代码pythonamount = float(input("请输入存款金额:")) period = float(input("请输入存款期限:"))if period <= 1:interest_rate = 0.03elif period <= 3:interest_rate = 0.04else:interest_rate = 0.05total_amount = amount * (1 + interest_rate)print("存款到期后的本息合计为:", total_amount)实验结果与分析判断分数等级程序当输入分数为85时,程序输出良好,符合预期。
结构化程序设计(分支结构)PPT教学课件

2020/12/10
19
典型试题(说出以下程序的运行结果)
a=10 b=20 c=30 If a>b
if c>a c=a+b
else c=a-b
endif Endif ?c
结果为:30
2020/12/10
20
PPT教学课件
谢谢观看
Thank You For Watching
Input “请从键盘上输入x的值:” to x
Do case
case x>0
Y=3*x+2
case x<0
y=3*x-2
otherwise
y=3
endcase
?“该分段函数的值为:”,y
2020/12/10
18
注意!
在双分支结构中,两个语句组必定会执 行其中一个!
在多分支结构中,可能不会执行其中任 何一个语句!
分支结构程序设计
2020/12/10
1
结构化程序设计
顺序结构 分支结构
单分支结构 双分支结构 多分支构
循环结构
2020/12/10
2
学习目标
了解三种分支结构的思想(知识目标) 掌握三种分支结构的语句格式及其功能
(知识目标)
理解三种分支结构的程序流程(知识目标) 能熟练利用三种分支结构进行程序设计
(4)当CASE中不止一个条件为真时,仅执行第一个条件为 真的语句后的命令组。
(5)DO CASE语句也可以与IF语句或循环语句嵌套,其嵌套 的原则与(3)相同。
思考:用DO CASE语句完成求学生成绩等级,
(90以上为“优秀”;80-90为“良好”;60-80为“及格”;60以下为“不及格”)。
第五章 循环与分支程序设计

continue: add loop mov loop ……
2. 分支程序设计
? ? … case 1 case 2 case n case 1 case 2 case n
CASE 结构
(1) 逻辑尺控制 (2) 条件控制
IF-THEN-ELSE 结构
(3) 地址跳跃表(值与地址有对应关系的表) 地址跳跃表(值与地址有对应关系的表)
13
x(x1,x2,…… x2,……,x10) 例:有数组 x(x1,x2,……,x10) 和 y(y1,y2,……,y10), (z1,z2,…… z2,……,z10) 编程计算 z(z1,z2,……,z10) z1 = x1 z2 = x2 z3 = x3 z4 = x4 z5 = x5 z6 = x6 z7 = x7 z8 = x8 z9 = x9 + y1 + y2 - y3 - y4 - y5 + y6 - y7 - y8 + y9
3
1. 循环程序设计
初始化
初始化
N N
控制条件
Y
循环体 控制条件
Y
循环体
DO-WHILE 结构
DO-UNTIL 结构
4
初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制
特征值控制 地址边界控制
5
例:把 BX 中的二进制数以十六进制的形式显示在屏幕上
BX
1
2 3
4je lea L: shr jnb jmp add1: add jmp continue: …… routine1: …… routine2: …… al, 0
(寄存器间接寻址) 寄存器间接寻址)
continue bx, branch_table ;逻辑右移 al, 1 逻辑右移 ;jnb=jnc add1 ;段内间接转移 word ptr[bx] bx, type branch_table L
3《分支结构程序设计》核心素养目标教学设计、教材分析与教学反思滇人版初中信息技术八年级第12册

《分支结构程序设计》教学设计方案一、教材内容分析本节课是在学生已经掌握顺序结构程序设计的基础上,进一步学习分支结构程序设计。
通过编写判断平年或闰年的程序,学生将学习if、if-else语句的使用,理解关系表达式和逻辑表达式的含义及运算结果,掌握字符串的索引操作。
这一内容不仅是对前面知识的巩固和拓展,更是为学生后续学习循环结构打下基础。
二、核心素养目标1.培养学生运用分支结构解决实际问题的能力,提升逻辑思维能力。
2.提高学生编写和理解条件语句的能力,加深对关系表达式和逻辑表达式的理解。
3.增强学生的编程实践能力,掌握基本的程序调试技巧。
三、教学重难点重点:掌握if、if-else语句的语法和使用方法,理解关系表达式和逻辑表达式的含义。
难点:根据实际问题编写正确的条件判断语句,处理复杂的逻辑关系。
四、教学过程(一)导入新课教师:同学们,我们已经学习了顺序结构程序设计,那么当程序需要根据不同条件执行不同操作时,我们应该怎么办呢?学生:使用分支结构。
教师:非常好!今天我们就来学习分支结构程序设计。
首先,我们来看一个实际问题:如何判断一个年份是平年还是闰年?(二)新课讲解1.分支结构基本概念教师:同学们,首先我们来了解一下什么是分支结构。
想象一下,你在回家的路上遇到了一个岔路口,这时候你需要根据路标或者自己的判断来决定走哪条路。
同样,在程序中,当需要根据不同的条件执行不同的操作时,我们就需要使用分支结构。
(教师在黑板上画出简单的流程图,展示分支结构的基本形式)教师:大家看,这就是一个基本的分支结构图。
它有一个起点,然后根据条件判断有两个或多个可能的执行路径。
在Python中,我们使用if、if-else语句来实现这种结构。
(教师在PPT上展示if、if-else语句的基本语法)教师:比如,如果我们想要判断一个数是否大于10,就可以这样写:python复制代码num = 15if num > 10:print("这个数大于10")如果num的值大于10,那么就会执行print语句,输出“这个数大于10”。
第五章用C语言进行结构化程序设计

顺序结构的程序设计 选择结构程序 循环控制 几种循环控制结构程序设计 break语句和continue语句
共 37页
第 1 页
5.1 顺序结构的程序设计
int main(void ) 顺序结构是结构化程序的基 { 本结构。本质上,问题求解过 int nA,nB,nC; 程都是顺序结构的。顺序结构 nA=5; 下程序将按照语句或模块出现 nB=6; 的先后依次执行,语句和语句 nC=nA+nB; 之间、模块和模块之间的先后 printf("nC is %d",nC); 决定了其执行的顺序。 return 0; 每一个模块都有一个数据入 } /*End of main()*/ 口和一个数据出口。
共 37页 第 7 页
选择结构分类
自然语言:如果… 那么… yes 二分支选择结构 P 否则… C语言: 选择(分支)语句 A 用什么语 句实现? no
yes
P
no
B
k
A
B
k=k1
多分支选择结构
A1
k=k2 A2
k=ki
...
k=kn
...
Ai
An
共 37页
第 8 页
用if语句设计选择结构程序
共 37页 第 12 页
2. 标准格式if…else…
if •格式: (表达式) •功能:表达式值非0时执行语句 (1)语句组3不属于if语句的语句组。它 { 组1,否则执行语句组2。 只有在语句组1或语句组2执行完后 语句组1 } 才可能被执行; …… 语句组1 else (2)语句组1或语句组2只有1条语句时 { if (nScore>60) 语句组2 ,对应的花括号对可以省略。 printf("及格\n"); } 语句组2 语句组3 else 条件? Yes No 语句组1 语句组2
第05讲 分支结构程序设计

");
分支结构程序设计分支结构程序设计-小结
分支结构是程序的三种控制结构之一 if语句的嵌套和多分支 语句的嵌套和多分支switch语句是初学 语句是初学 语句的嵌套和多分支 者较难掌握的内容 if语句和switch语句 语句和switch 利用if语句和switch语句设计分支结构程序 的基本方法, 的基本方法,能设计各种分支结构程序
三、switch 语句的综合应用
解决这个问题的过程可以分成两个阶段: 解决这个问题的过程可以分成两个阶段: 第一阶段为输入成绩和计算平均成绩阶段。 第一阶段为输入成绩和计算平均成绩阶段。 第二阶段为等级划分显示阶段。 第二阶段为等级划分显示阶段。由于成绩 分为五个等级,使用if if语句处理时层次过 分为五个等级,使用if语句处理时层次过 不够直观清晰,我们选用switch switch结构 深,不够直观清晰,我们选用switch结构 解决这一问题。首先将分布在[0,100]范围 解决这一问题。首先将分布在[0,100]范围 [0,100] 的平均成绩值,映射到[0,10] [0,10]的较小范围 的平均成绩值,映射到[0,10]的较小范围 然后使用case个数相对较少的switch case个数相对较少的 中,然后使用case个数相对较少的switch 语句进行分等显示
goto语句及综合应用 四、goto语句及综合应用
goto语句是一种无条件转移语句,主要用于控制 程序的执行方向,也可以利用它反复地执行同 一段程序。它的用法比较简单。一般格式如下: goto 语句标号; 例4-10 :输入一批自然数,求其中的偶数和,当 4 输入-1时,结束求和过程。
goto语句及综合应用 四、goto语句设计
第5讲 分支结构程序设计
本讲主要内容 if 语句的基本用法以及执行 过程 if 语句的综合应用 switch 语句的综合应用 goto语句及综合应用 goto语句及综合应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(无进位或借位转移)
注:通常在使用条件指令前,总有用于条件判断的 相关指令
例如:要测试寄存器AX的低四位是否全为0, 如果全为0,则CX=0,否则CX=-1 MOV CX,-1
TEST AX,0FH
;CX赋初值
;测试AX的低4位
JNZ
NZERO
;不全为0转NZERO
;全为0,置CX=0
MOV CX,0
start: mov ax,data
mov ds,ax
mov si,offset ary mov cx,9
NEXT: DEC CX
JNZ LOP
MOV MAX,AL
mov al,[si]
lop: inc si cmp al,[si]
MOV AH,4CH
INT 21H CODE ENDS END START
INT 21H
INT
21H
指令系统提供了两组指令,分别用于无符号数和有 符号数的比较。 无符号数比较,用A代表大于,用B代表小于,用E代 表等于
有符号数比较,用G代表大于,用L代表小于,用E代 表等于 (2)两个无符号数比较(X,Y)
① JB/JNAE/JC OPR X<Y转移
②JAE/JNB/JNC OPR
NZERO: ……
例5-6 AX和BX的值相等时输出“=”,不相等 时输出“#”。
AX>BX?
输出=
输出#
CMP AX,BX
JZ
NEXT1
MOV DL,’#’
MOV AH,2
INT 21H
2号调用,显示一个字符
NEXT2:MOV AH,4CH
JMP
NEXT2
NEXT1:MOV DL,’=‘
MOV AH,2
MOV AL,68H
NEXT:HLT
68H AL=______________
(4)CX的值为零转移
JCXZ OPR CX=0时转移
(5)ECX的值为零转移
JECXZ
OPR
ECX=0时转移
例:数据段的ARY数组中存放有10个无符 号数,试找出其中最大者送MAX单元。
data segment ary db 17,5,40,0,67,12,34,78, 32,10 max db ? data ends code segment assume cs:code,ds:data
⑤ JO OPR ; ⑥JNO OPR ; ⑦JP/JPE OPR; ⑧JNP/JPO ⑨JC OPR
OF=1转移 OF=0转移 PF=1转移
(结果溢出转移) (结果不溢出转移) (结果为偶转移)
OPR;PF=0转移 (结果为奇转移) ; CF=1转移 (有进位或借位转移)
⑩JNC OPR ;
CF=0转移
5.3 分支程序设计
5.3.1 转移指令
无条件转移指令
转移指令 有条件转移指令
1、无条件转移指令 功能是无条件转移到指定地址,执行从该地址 开始的指令。根据转移时是否重置CS的内容,
无条件转移指令
段内转移
段间转移
段内转移(近转移):转移时只改变IP寄 存器的内容,CS的值保持不变,条件转移和 循环指令只能实现段内转移。 段间转移(远转移):是在不同代码段之 间转移,不仅改变IP的值,也改变CS的值, 软中断和中断返回总是段间转移。
例5-12 根据AL中的值(0~4),执行不同的操 作,用逻辑分解法.
……
TEST AL,1 JZ NEXT1 NEXT1:TEST BL,1 JZ EXIT
TEST BL,1
MOV BUF1,BL
JZ
EXIT
MOV BUF2,AL
EXIT: MOV AH,4CH
INC BUF1
INC BUF2
JMP EXIT
INT 21H
……
JGE
NEG
NEXT
AL
;大于等于转NEX
; 小于0求绝对值
NEXT:MOV B,AL
MOV AH,4CH INT 21H
下面的程序段说明无符号数比较与有符号 数比较的区别: MOV AL,88H CMP JAE AL,68H NEXT MOV AL,88H
CMP
JGE
AL,68H
NEXT
MOV AL,68H NEXT:HLT AL=______________ 88H
;CX寄存器的内容送IP
JMP
WORD PTR [1234]
;字存储单元
[1234]的内容送IP
78 DS:1234H 56 …… JMP 原IP=×××× 34 12 …… 新IP=5678H MOV AX,1 ……
转移指令
(4)段间直接转移
格式:JMP FAR PTR OPR 功能:IP←OPR的偏移地址,CS←OPR的段地址 其中OPR是一个标号,所代表的指令与JMP指令 不在同一个代码段中,标号前的FAR PTR向汇 编程序说明这是段间转移。 无条件段间直接转移指令机器指令格式如下: 指令操作码 目标地址偏移 目标地址段值
MOV DL,’〈’ JMP EXIT
(3)两个有符号数的比较(X,Y) ① JL/JNGE OPR
②JGE/JNL OPR
X<Y转移
X>=Y转移
③JLE/JNG
④JG/JNLE
OPR
OPR
X<=Y转移
X>Y转移
例5-8 求A字节单元中数据的绝对值,结 果存放在B字节单元中。
MOV AL,A CMP AL,0 ;和0比较
③JBE/JNA OPR
X>= Y 转移
X<=Y转移
④JA/JNBE
OPR
X.>Y 转移
例 5-7 X为无符号数,X小于、等于、大于100时, 分别显示输出“<”、“=”、“>”。
MOV AL,X
CMP AL,100 JA JZ NEXT1 NEXT2
NEXT1:MOV DL,’〉
JMP EXIT NEXT2:MOV DL,’=‘ EXIT: MOV AH,2 INT 21H
ADDT DW 120H,130H,140H MOV SI,120H JMP SI
跳转至CS:120H执行 跳转至CS:120H执行 跳转至CS:130H执行
JMP ADDT JMP ADDT+2 JMP JMP
DWORD PTR ADDT 跳转至130H:120H执行 FAR PROGB
跳转至去执行PROGB
2.条件转移指令
条件转移只能实现段内转移,而且转移范围是 -128~127。
(1)单条件转移指令
根据标志位的值进行转移
格式
① JZ/JE OPR
转移条件
说明
; ZF=1转移 (结果为零或相等转移)
②JNZ/JNE OPR; ZF=0转移(结果不为零或不相等转) ③JS OPR ④JNS OPR ; ; SF=1转移(结果为负转移) SF=0转移 (结果为正转移)
;X=0转EQUL,否则
MOV Y,1 JMP NEXT
EQUL: MOV Y,0 NEXT: …… ……
例2 按ZF标志位状态转移 MOV AX,X
OR
JZ
AX,AX
BRANCH
;建立标志
;ZF=1转移
……
BRANCH:XCHG AX,BX
5.3.3、多分支程序设计 1、转移表法多分支程序设计
INT 21H
MOV AH,4CH
INT 21H
2、地址表法多分支程序设计 特点:把多分支程序的入口地址依次放在 一起,形成转移地址表。
转移算法:表地址=编号*2+地址表首地址
转移表法和地址表法类似,但 转移表法得到的是转移指令所在的 地址,而地址表法得到的是分支程 序的入口地址。
3、逻辑分解法实现多分支 特点:通过比较或测试指令设置某些标志 位后,用条件转移质量能够进行判断实现 分支。
例1:编写一程序段,计算以下公式:
1 Y= 0 -1 X>0 X=0 X<0 Y X=0? Y Y=0 N Y=1
X≥0? N Y=-1
NEXT
程序段如下: CMP X,0 JGE BIGER
;X≥0?
;若X≥0转BIGER ;若X<0,Y←-1
MOV Y,-1 JMP BIGER:JZ NEXT EQUL
特点:把转移到各分支程序的转移指令依次放 在一起,形成转移表。
要求:各转移指令的长度属性要求一致。
转移算法:
若转移指令为段内短转移:
表地址=模式字*2+转移表首地址
若转移指令为段内近转移:
表地址=模式字*3+转移表首地址
例5-10 根据输入值(0~4)的不同,执行不同的操作。 用转移表法编写程序。 CODE SEGMENT ASSUME CS:CODE START:LEA BX,BRATAB MOV AH,1 INT 21H 输入一个数(0~4)
A3127 A3126
跳转至此
10004 10003 10002
10001 10000
…… A3 00 01 27
JMP
远转移
例如: CODE2
SEGMENT ……
LAST: MOV AX,0 …… CODE1 SEGMENT
标号所代表 的指令在另一 个代码段中
……
JMP FAR PTR LAST
SUB AL,30H ADD AX,AX ADD BX,AX JMP BX 计算转移指令地址 ;转到BX指向单元执行
BRATAB:JMP SHORT MODE0
JMP SHORT MODE1
JMP SHORT MODE2
JMP SHORT MODE3