结构化程序设计——系统设计思想(输入输出)

news/2025/3/18 21:09:16/文章来源:https://www.cnblogs.com/haohai9309/p/18779742

一、结构化程序设计概述

结构化程序设计(Structured Programming)是由计算机科学家 Edsger W. Dijkstra 于 20 世纪 60 年代提出的编程方法论。其核心思想是通过 顺序结构选择结构循环结构 三种基本控制结构,构建出逻辑清晰、易于理解和维护的程序。结构化程序设计强调程序的模块化、清晰性和可维护性,避免使用“goto”语句,以减少程序中的控制复杂度。
Python 作为一种高级语言,天然支持结构化程序设计的范式。接下来,将分别介绍结构化程序的三种基本结构,并通过 Python 代码示例进行演示。

注意一个入口一个出口

二、三种基本结构及 Python 示例

注意一个入口一个出口

1. 顺序结构(Sequence)

顺序结构 是程序中最基本的执行方式,按照代码的书写顺序,从上到下依次执行每一条指令。

示例:计算两个数的和

# 定义两个变量
a = 5
b = 3
# 计算它们的和
sum = a + b
# 输出结果
print("Sum:", sum)

解释:
依次执行赋值、加法运算和输出操作。
代码按顺序依次执行,不涉及跳转和分支。

2. 选择结构(Selection)

选择结构 是根据条件的判断来决定程序的执行路径。常见的选择结构包括 if...else 和 if...elif...else。
示例:判断一个数是奇数还是偶数

# 输入一个整数
num = int(input("Enter a number: "))
# 判断奇偶性
if num % 2 == 0:print(f"{num} 是偶数")
else:print(f"{num} 是奇数")

解释:
使用 if...else 结构,根据条件 num % 2 == 0 判断,选择不同的执行路径。
如果条件成立,执行 if 块;否则执行 else 块。

3. 循环结构(Loop)

循环结构 用于在满足特定条件时重复执行某段代码,常见的循环包括 for 循环和 while 循环。
示例:用 for 循环计算前 10 个自然数的和

total = 0
for i in range(1, 11):total += i
print("Sum of first 10 natural numbers:", total)

示例:用 while 循环打印 1 到 5 的数字

i = 1
while i <= 5:print(i)i += 1

解释:
for 循环适用于已知循环次数的情况。
while 循环适用于在满足某个条件时重复执行代码。

三、递归程序示例(整合三种基本结构)

递归是一种特殊的程序控制结构,它允许一个函数在其定义中调用自身。递归在本质上可以看作是通过 选择结构 和 顺序结构 来判断终止条件,通过 循环结构 来重复调用自身。
示例:用递归求解斐波那契数列

def fibonacci(n):if n <= 0:return 0elif n == 1:return 1else:return fibonacci(n - 1) + fibonacci(n - 2)
# 输出前 10 个斐波那契数
for i in range(10):print(fibonacci(i), end=" ")

解释:
顺序结构: 函数调用和返回值操作是顺序结构。
选择结构: 使用 if...elif...else 判断终止条件。
循环结构: 使用递归和 for 循环输出前 10 个斐波那契数。

四、总结

结构化程序设计通过顺序、选择和循环三种基本结构,能够构建出大部分复杂程序。

  • 顺序结构 保证程序的逻辑性和执行顺序。
  • 选择结构 增强程序的灵活性和智能性。
  • 循环结构 实现重复性任务的自动化。
    递归程序是结构化程序设计的重要延伸,结合了三种基本结构的特点,能够简洁地解决复杂的递推问题。结构化程序设计不仅提高了代码的可读性和可维护性,也为程序的模块化和扩展性提供了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901115.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20244111 2024-2025-2 《Python程序设计》实验一报告

20244111 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2441 姓名: 韩金婕 学号:20244111 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容熟悉Python开发环境;练习Python运行、调试技能;编写程序,练习变量和类型…

20244226 实验一《Python程序设计》实验报告

20244226 2024-2025-2 《Python程序设计》实验一报告 1.实验内容 课程:《Python程序设计》 班级: 2442 姓名: 张毓格 学号:20244226 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编…

2025“钉耙编程”中国大学生算法设计春季联赛(2)(2 4 5,补3 6 8)

2025“钉耙编程”中国大学生算法设计春季联赛(2)(2 4 5,补3 6 8) 1002:烂人方法 #include<bits/stdc++.h> #define N 1005 #define mod 998244353 using namespace std; typedef long long ll; string a[] = {"jia","yi","bing",&quo…

.NET周刊【3月第2期 2025-03-09】

国内文章 记一次.NET内存居高不下排查解决与启示 https://www.cnblogs.com/huangsheng/p/18731382 本文讲述了一个ASP.NET Core gRPC服务迁移到Kubernetes后的内存管理问题。服务在K8s上遇到了高内存占用与副本扩展的问题,经过排查发现服务的内存请求设置正确,但未设定上限。…

Agent 智能体创作大赛+参赛小分队召集

与大家分享一个 agent 比赛「智能体全球创作大赛」。你可以用任何趁手的工具打造一个 agent,分享你对人机协作未来的畅想。大赛公告发布出去后,不少社区伙伴都表示有兴趣参与,所以我们决定建一个「RTE 参赛小分队」微信群 ,愿意一起分享想法和讨论技术,一起赶 deadline(3…

HTML打包EXE离线一机一码使用详细教程

近期有些朋友对于HTML打包EXE的网络一机一码验证和离线一机一码验证不太理解,本篇文章主要介绍离线一机一码的使用。相较于需要联网验证的方案,离线版本的优势在于无需连接服务器,通过本地生成的机器码与激活码即可完成授权验证,更适合对数据安全性要求较高,无法联网的项目…

Breach2.1

Breach2.1 信息收集 全端口扫描 ┌──(root㉿kali)-[~/vulnhub/Breach2.1] └─# nmap -sS 192.168.110.151 -p 1-65535 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-18 09:39 CST Stats: 0:00:13 elapsed; 0 hosts completed (0 up), 1 undergoing ARP Ping Scan…

Breach2

Breach2.1 信息收集 全端口扫描 ┌──(root㉿kali)-[~/vulnhub/Breach2.1] └─# nmap -sS 192.168.110.151 -p 1-65535 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-18 09:39 CST Stats: 0:00:13 elapsed; 0 hosts completed (0 up), 1 undergoing ARP Ping Scan…

HTML打包工具EXE工具一机一码激活码计算器小程序版

近期我们收到一些HTML一键打包EXE工具老用户反馈, 他们在使用一机一码离线功能的时候, 遇到如下的问题:外调试时突然需要激活码,手边没电脑急死人!客户现场网络受限,手机能操作就好了每次都要开电脑太麻烦,能移动端解决吗? 解决方案 针对用户集中反馈的"离线激活码…

20222227 实验一《Python程序设计》实验报告

20222227 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2222 姓名: 赫连紫阳 学号: 20222227 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一、实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的…

【STM32】超好用的开源按键状态系统lwbtn,以及超详细的移植教程

在 button_event_handler 按钮事件处理函数中,按键按下分为:按下,释放;按下类型又分为:单击、双击、持续按下。 这每一个状态/事件,进行过后,其都会进行一次回调,即回到主函数一次,故也是分为了1、按下 2、释放 3、单击 4、双击 5、持续按下 五个回调状态。 你可以在 …

rp2040笔记[1]-使用embassy实现呼吸灯并通过命令行切换状态

使用rust的embassy在rp2040芯片核心板实现呼吸灯.摘要 使用rust的embassy在rp2040芯片核心板实现呼吸灯. 关键词 rust;embassy;rp2040;blink;pwm; 关键信息项目地址:[https://github.com/ByeIO/byeefree.rp2040_quad.embassy][package] edition = "2021" name = &quo…