结构化程序设计PPT课件
合集下载
第3章 结构化程序设计

循环体
是 P2 否
图3.7直到型循环结构示意图 直到型循环结构示意图
3.3 表述算法
• 通常用自然语言、计算机语言(代码)、伪代码[1]、传统流程图、 通常用自然语言、计算机语言(代码)、伪代码 、传统流程图、 )、伪代码 N-S流程图、PAD图等不同的方法来描述算法。 流程图、 图等不同的方法来描述算法。 流程图 图等不同的方法来描述算法 • 在例 中,采用了自然语言来表示算法。自然语言就是人们日常使 在例3.1中 采用了自然语言来表示算法。 用的语言,可以是汉语、英语,或其他语言。 用的语言,可以是汉语、英语,或其他语言。用自然语言表示算法通 俗易懂,但文字冗长,容易出现歧义性。自然语言表示的含义往往不 俗易懂,但文字冗长,容易出现歧义性。 太严格,要根据上下文才能判断其正确含义。此外, 太严格,要根据上下文才能判断其正确含义。此外,用自然语言来描 述包含分支和循环的算法,很不方便。因此, 述包含分支和循环的算法,很不方便。因此,除了那些很简单的问题 以外,一般不用自然语言描述算法。 以外,一般不用自然语言描述算法。 • [1] 伪代码是介于自然语言与计算机语言之间的文字符号。一般借助 伪代码是介于自然语言与计算机语言之间的文字符号。 一种高级语言的控制结构,而中间的操作用自然语言描述。 一种高级语言的控制结构,而中间的操作用自然语言描述。
P1 是 循环体
否
• 图3.6当型循环结构示意图 当型循环结构示意图
(2)直到型循环的执行过程为: )直到型循环的执行过程为: • 先执行循环体一次,然后判断控制循环的条件。 先执行循环体一次,然后判断控制循环的条件。 • 条件 成立,则继续上述循环体,直到条件不成立时,结束循环。 条件P2成立,则继续上述循环体,直到条件不成立时,结束循环。 成立
4.1.2结构化程序设计思想和方法

“自顶向下,逐步细化”的优点
结构良好,各模块间的关系清晰简单, 每一模块都由基本单元组成。
清晰易读,可理解性好,容易设计,容 易验证其正确性,也容易维护。
能有效地组织人们的智力,有利于软件 的工程化开发。
实践
请同学们利用这种思想方法为书店 设计一个“销售管理系统”,并思 考这个系统能实现哪些功能?
教学目标
理解结构化程序设计的思想 掌握结构化程序设计的方法
结构化程序设计思想
所谓结构化程序设计思想,就是 要使所设计的程序给人一种一目 了然的感觉。条理清晰,模块化, 自粗到精,逐步细化。
结构化程序设计思想的三个方面
以模块化设计为中心 三种基本结构 实施方法
模块化
(1)把一个较大的程序划分为若干子程序,每一 个子程序总是独立成为一个模块;
条件P 不成立N 成立Y
语句A
先判断条件是否满足(成立), 满足就执行循环体,每执行完一次 就判断一次,直到条件不满足停止。
三种基本结构的共同特征
语句A 语句B 语句C
成立Y
不成立N 条件P
语句A
语句B
条件P 不成立N 成立Y
语句A
(1)单入口和单出口,即只有一个入口和一个出口。 (2)没有无用的部分,即结构中所有部分都有被执行的机会。 (3)不存在“死循环”(无终止的循环),即执行时间是有限的。
如图所示:执
行顺序结构的程序
语句A
时,按语句在程序 语句B
中的顺序逐条执行,
没有分支,没有转
语句C
移。
选择结构
又称分支结
构,根据给定条
成立Y
不成立N
件是否满足而去
条件P
执行不同的语句,
如图所示,给定 条件P,如果满足
程序的三种基本结构.ppt

B
真 P假 AB
多分支选择结构
k
k=k1 k=k2
A1
A2 ...
k=kn k=ki
Ai ... An
循环结构 当型循环结构
假 P
真
A
当P为真 A
直到型循环结构
A
假 P 真
A 直到P为真
注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构
第5章 选择语句
• 5.1 if 条件语句 • 5.2 switch多分支选择语句 • 5.3 程序举例
1. 输入一个分数score
2 .score<60
输出 E
3 .60<=score <70 输出 D
4. 70<=score <80 输出 C
5 .80<=score <90 输出 B
6 .90<=score
输出 A
#include<stdio.h>
main( )
{ int score;
程序
scanf(“%d”, &score);
0(N) 表达式
1(Y)
if (x < 0) y = 3 - x ;
语句Biblioteka printf(“y= %6.2f”, y );
}
任给a,b,c三个数,按从小到大的顺序输出。
分析: (1)对于a,b任意两个数:
若a<b,则输出 a , b ; 否则输出 b , a ;
( 2 ) 对于三个数,有6种可能: a<b<c a<c<b b<a<c b<c<a c<a<b c<b<a
1.1.4结构化程序设计

条件表达 式
• 不满足
• 满足
图1-5 直到型循环(b)
循环体
直到条件满足时
③.循环结构
•图1-5是直到循环结构, •该循环的特点是: 执行循环体,直到指定的条件满足 (成立),就不再执行循环。
•由以上3种基本结构组成的算法结 构可以解决任何复杂的问题,由它
们所构成的算法称为结构化算法,
由它们所构成的程序称为结构化程 序。
感谢您的观看
•什么是选择结构呢?
②.选择结构
•选择结构根据不同的条件去执行不同 分支中的语句。
选择结构可用图1-3所示的流程图表示
其中图1-3(a)是流程图,1-3(b)是N-S结构图
条件表达式 满足
语句1
语句2
图1-3(a)
图1-3 选择结构(b)
条件表达式
满足
不满足
语句1
语句2
请思考
•什么是循环结构呢?
第一章 程序设计和C语言 1.1 程序设计的基本概念
1.1.4 结构化程序设计
•结构化程序主要由以下三种基本控制结 构组成,分别是
•①.顺序结构
•②.选择结构•③.循来自结构请思考 •什么是顺序结构呢?
•顺序结构可用图1-2所示的流程图表示。 •其中图1-2(a)是流程图,1-2(b)是N-S结构 图
③.循环结构
•定义:
•循环结构就是根据各自的条件,使 同一组语句重复执行多次。
条件表达 式
满足
循环体
图1-4
当型循 环(a)
图1-4 当型循环(b)
当条件满足时 循环体
③.循环结构
•图1-4是当型循环,这种循环的特点是:
当指定的条件满足时(成立),就执行循环体; 否则就不行
C语言程序设计教程ppt课件(2024)

打印九九乘法表
使用嵌套的for循环打印九九乘法表。
23
04
数组与字符串处理
2024/1/30
24
一维数组定义和操作
2024/1/30
01
一维数组定义
类型说明符 数组名
[常量表达式];
02
一维数组初始化
在定义数组时对数 组元素赋以初值;
04
一维数组操作
包括赋值、输入输
03
出、排序、查找等
。
一维数组引用
do-while循环
与while循环类似,但至少会执行一次 循环体。
示例
int i = 0; do { printf("%d ", i); i; } while (i < 10);
语法
do { // code to be executed } while (condition);
2024/1/30
19
赋值运算符
包括赋值运算符(=)和复合赋 值运算符(+=、-=、*=、/=、 %=),用于为变量赋值或进行 运算后赋值。
12
类型转换与运算顺序
2024/1/30
类型转换
当不同类型的数据进行运算时,需要进行类型转换,包括自 动类型转换和强制类型转换。自动类型转换由编译器自动完 成,而强制类型转换需要使用类型转换运算符。
0。
free函数
用于释放已分配的内存空间 ,避免内存泄漏。
2024/1/30
36
指针在数组、字符串等数据结构中应用
指针与数组
数组名本质上是一个指向数组首元素的指针;通过指针可 以访问和修改数组元素。
指针与字符串
字符串在C语言中以字符数组的形式存储,指针可以方便 地操作字符串。
使用嵌套的for循环打印九九乘法表。
23
04
数组与字符串处理
2024/1/30
24
一维数组定义和操作
2024/1/30
01
一维数组定义
类型说明符 数组名
[常量表达式];
02
一维数组初始化
在定义数组时对数 组元素赋以初值;
04
一维数组操作
包括赋值、输入输
03
出、排序、查找等
。
一维数组引用
do-while循环
与while循环类似,但至少会执行一次 循环体。
示例
int i = 0; do { printf("%d ", i); i; } while (i < 10);
语法
do { // code to be executed } while (condition);
2024/1/30
19
赋值运算符
包括赋值运算符(=)和复合赋 值运算符(+=、-=、*=、/=、 %=),用于为变量赋值或进行 运算后赋值。
12
类型转换与运算顺序
2024/1/30
类型转换
当不同类型的数据进行运算时,需要进行类型转换,包括自 动类型转换和强制类型转换。自动类型转换由编译器自动完 成,而强制类型转换需要使用类型转换运算符。
0。
free函数
用于释放已分配的内存空间 ,避免内存泄漏。
2024/1/30
36
指针在数组、字符串等数据结构中应用
指针与数组
数组名本质上是一个指向数组首元素的指针;通过指针可 以访问和修改数组元素。
指针与字符串
字符串在C语言中以字符数组的形式存储,指针可以方便 地操作字符串。
第三讲 结构化程序设计

Randomize ‘初始化随机数种子 int(rnd*100)+1
rnd:[0,1)的随机小数
产生[a,b]间的随机整数
a+int(rnd*(b-a+1))
排序方法
选择法 冒泡法
选择排序法
每次选出待排序数列 (长度为n)中的最 大(小)值和队列中 的第一个数进行交换。 将首位数排除在外, 继续对剩余队列(长 度为n-1)进行以上操 作。
多分支结构 用法说明
测试表达式:为数值表达式或字符串表达式。 表达式列表:多个表达式用逗号间隔即为表达式列表。表达式可 以是单个表达式(单值)或“表达式 To 表达式”(多个整数 值)。 如:1 1,3,5,7 To15,20 都是合法的表达式列表。 如果比较测试表达式与其他表达式的关系,则用符号“Is”表示测 试表达式的值。 执行流程: 自上而下顺序地判断测试表达式的值与表达式列表中的哪一个匹 配,如有匹配则执行相应语句块,然后转到End Select的下一语 句。 若所有的值都不匹配,执行Case Else所对应的语句块,如省略 Case Else,则直接转移到End Select的下一语句。
Do/Loop语句
格式1:Do [{While|Until}<条件>] ' 先判断条件、后执行循环体 循环体 Loop 格式2:Do ' 先执行循环体、后判断条件 循环体 Loop [{While|Until}<条件>] (1) 选项“While”当条件为真时执行循环体,选项“Until”当条件 为假时执行循环体。 (2) 循环体中可以出现语句“Exit Do”,将控制转移到DO/LOOP结 构后一语句。
rnd:[0,1)的随机小数
产生[a,b]间的随机整数
a+int(rnd*(b-a+1))
排序方法
选择法 冒泡法
选择排序法
每次选出待排序数列 (长度为n)中的最 大(小)值和队列中 的第一个数进行交换。 将首位数排除在外, 继续对剩余队列(长 度为n-1)进行以上操 作。
多分支结构 用法说明
测试表达式:为数值表达式或字符串表达式。 表达式列表:多个表达式用逗号间隔即为表达式列表。表达式可 以是单个表达式(单值)或“表达式 To 表达式”(多个整数 值)。 如:1 1,3,5,7 To15,20 都是合法的表达式列表。 如果比较测试表达式与其他表达式的关系,则用符号“Is”表示测 试表达式的值。 执行流程: 自上而下顺序地判断测试表达式的值与表达式列表中的哪一个匹 配,如有匹配则执行相应语句块,然后转到End Select的下一语 句。 若所有的值都不匹配,执行Case Else所对应的语句块,如省略 Case Else,则直接转移到End Select的下一语句。
Do/Loop语句
格式1:Do [{While|Until}<条件>] ' 先判断条件、后执行循环体 循环体 Loop 格式2:Do ' 先执行循环体、后判断条件 循环体 Loop [{While|Until}<条件>] (1) 选项“While”当条件为真时执行循环体,选项“Until”当条件 为假时执行循环体。 (2) 循环体中可以出现语句“Exit Do”,将控制转移到DO/LOOP结 构后一语句。
c语言程序设计ppt课件

01
1. 使用有意义的变量名和函数名,以清晰 地表达其功能。
03
02
详细描述
04
2. 避免使用缩写或简写,除非它们是广为 人知的。
3. 使用大括号包围所有代码块,并保持左 括号在同一行。
05
06
4. 对于长代码行,使用反斜杠进行折行, 并在括号内换行。
异常处理和错误恢复
总结词:异常处理和错误恢复是编程中不可或缺的一部分 ,可以确保程序的稳定性和可靠性。
文件操作和错误处理
文件的基本概念
文件是一个包含数据的文本或二进制文件, 可以存储在磁盘上。
文件的读写操作
使用fscanf()函数读取文件内容,使用 fprintf()函数写入文件内容。
文件的打开和关闭
使用fopen()函数打开文件,使用fclose()函 数关闭文件。
错误处理
通过检查文件是否成功打开、读写等操作来 处理错误。
c语言进阶知识
指针和地址操作
指针的基本概念
指针是一个变量,它存储了另一个变量的内 存地址。
指针的解引用
通过使用解引用操作符(*)可以从指针中获取 其指向变量的值。
指针的运算
指针可以进行加、减等运算,以访问数组中 的元素或函数中的参数。
动态内存分配
使用malloc()函数可以动态分配内存,以创 建动态数组或链表。
02
1. 使用循环和数组来优化查找
和排序算法。
03
2. 通过减少变量和函数的复杂
度来提高代码的可读性。
04
3. 使用位操作来优化数据结构
和算法。
05
4. 通过重构来消除重复代码和
提高代码的可维护性。
06
c语言跨平台编程实践
第4章 结构化程序设计

9
4.2.1 空语句
空语句是一种最简单的语句,它不实现任何功能,C#
的空语句的形式如下:
; 即只有一个分号的语句。在不需要执行任何操作但又 需要一条语句时,可以采用空语句来表示。
10
4.2.2 复合语句
可以用{}把一些语句包括起来成为复合语句,或者称 为块。例如,下面就是一条复合语句: {
13
4.2.4 顺序结构的实例
上面这段程序就是一个典型的顺序结构。
在Circle类的Main方法中,程序根据语句出现的顺序依次 执行,先是在程序中输入一个半径值,然后根据计算公式 计算出圆的面积,最后将圆的面积的值进行输出。
14
4.3 选择结构
在实际的运算中,往往要进行复杂的逻辑判定,即 给出一些条件,让程序判定是否满足条件,并按不 同的情况让程序进行不同的处理。 比如,输入一个考试成绩,判定它是优、良、中、 及格或不及格等。或者输入两个字母,比较其ASCII 码的大小,然后根据不同的情况进行相应的处理。 这些问题是需要由程序按给定的条件进行比较和判 定,并按判定后的不同情况进行处理,这时就需要 用到选择结构。
23
4.3.1 条件语句
如果程序的逻辑判定关系比较复杂,通常会用到if…else嵌套 语句,if语句可以嵌套使用,即在判定之中又有判定。其一般 形式如下: if(表达式1) if(表达式2) if(表达式3) ... 语句1; else 语句2; else 语句3; else 语句4;
在应用这种if…else结构时, 要注意else和if的配对关系,此配 对关系是:从第1个else开始,一 个else总是和它上面离它最近的 可配对的if配对。