📌目录
- [⚖️ 结构化程序设计技术:构建清晰代码的基石](#⚖️ 结构化程序设计技术:构建清晰代码的基石)
-
- [🎯 一、结构化程序设计概述](#🎯 一、结构化程序设计概述)
- [📦 二、基本控制结构](#📦 二、基本控制结构)
- [🌐 三、结构化程序设计的原则](#🌐 三、结构化程序设计的原则)
- [📊 四、结构化程序设计的方法](#📊 四、结构化程序设计的方法)
- [💡 五、结构化程序设计的工具](#💡 五、结构化程序设计的工具)
- [📋 六、结构化程序设计的优缺点](#📋 六、结构化程序设计的优缺点)
- [📝 七、结构化程序设计实例](#📝 七、结构化程序设计实例)
- [📝 总结](#📝 总结)

⚖️ 结构化程序设计技术:构建清晰代码的基石
结构化程序设计(Structured Programming)是一种程序设计方法学,它采用自顶向下、逐步求精的设计方法,使用顺序、选择、循环三种基本控制结构来编写程序。本文将详细介绍结构化程序设计的概念、原则、方法和技术要点。

🎯 一、结构化程序设计概述
(一)结构化程序设计的定义
结构化程序设计是一种程序设计方法学,它采用自顶向下、逐步求精的设计方法,使用顺序、选择、循环三种基本控制结构来编写程序。
概念理解:
#mermaid-svg-frfiKWXGDS4WeNgf{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-frfiKWXGDS4WeNgf .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-frfiKWXGDS4WeNgf .error-icon{fill:#552222;}#mermaid-svg-frfiKWXGDS4WeNgf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-frfiKWXGDS4WeNgf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-frfiKWXGDS4WeNgf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-frfiKWXGDS4WeNgf .marker.cross{stroke:#333333;}#mermaid-svg-frfiKWXGDS4WeNgf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-frfiKWXGDS4WeNgf p{margin:0;}#mermaid-svg-frfiKWXGDS4WeNgf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-frfiKWXGDS4WeNgf .cluster-label text{fill:#333;}#mermaid-svg-frfiKWXGDS4WeNgf .cluster-label span{color:#333;}#mermaid-svg-frfiKWXGDS4WeNgf .cluster-label span p{background-color:transparent;}#mermaid-svg-frfiKWXGDS4WeNgf .label text,#mermaid-svg-frfiKWXGDS4WeNgf span{fill:#333;color:#333;}#mermaid-svg-frfiKWXGDS4WeNgf .node rect,#mermaid-svg-frfiKWXGDS4WeNgf .node circle,#mermaid-svg-frfiKWXGDS4WeNgf .node ellipse,#mermaid-svg-frfiKWXGDS4WeNgf .node polygon,#mermaid-svg-frfiKWXGDS4WeNgf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-frfiKWXGDS4WeNgf .rough-node .label text,#mermaid-svg-frfiKWXGDS4WeNgf .node .label text,#mermaid-svg-frfiKWXGDS4WeNgf .image-shape .label,#mermaid-svg-frfiKWXGDS4WeNgf .icon-shape .label{text-anchor:middle;}#mermaid-svg-frfiKWXGDS4WeNgf .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-frfiKWXGDS4WeNgf .rough-node .label,#mermaid-svg-frfiKWXGDS4WeNgf .node .label,#mermaid-svg-frfiKWXGDS4WeNgf .image-shape .label,#mermaid-svg-frfiKWXGDS4WeNgf .icon-shape .label{text-align:center;}#mermaid-svg-frfiKWXGDS4WeNgf .node.clickable{cursor:pointer;}#mermaid-svg-frfiKWXGDS4WeNgf .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-frfiKWXGDS4WeNgf .arrowheadPath{fill:#333333;}#mermaid-svg-frfiKWXGDS4WeNgf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-frfiKWXGDS4WeNgf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-frfiKWXGDS4WeNgf .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-frfiKWXGDS4WeNgf .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-frfiKWXGDS4WeNgf .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-frfiKWXGDS4WeNgf .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-frfiKWXGDS4WeNgf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-frfiKWXGDS4WeNgf .cluster text{fill:#333;}#mermaid-svg-frfiKWXGDS4WeNgf .cluster span{color:#333;}#mermaid-svg-frfiKWXGDS4WeNgf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-frfiKWXGDS4WeNgf .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-frfiKWXGDS4WeNgf rect.text{fill:none;stroke-width:0;}#mermaid-svg-frfiKWXGDS4WeNgf .icon-shape,#mermaid-svg-frfiKWXGDS4WeNgf .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-frfiKWXGDS4WeNgf .icon-shape p,#mermaid-svg-frfiKWXGDS4WeNgf .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-frfiKWXGDS4WeNgf .icon-shape .label rect,#mermaid-svg-frfiKWXGDS4WeNgf .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-frfiKWXGDS4WeNgf .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-frfiKWXGDS4WeNgf .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-frfiKWXGDS4WeNgf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 结构化程序设计
自顶向下
逐步求精
基本控制结构
从顶层开始设计
逐步细化实现
顺序、选择、循环
(二)结构化程序设计的提出
历史背景:
| 时间 | 事件 | 人物 |
|---|---|---|
| 1965年 | 提出goto语句有害论 | Dijkstra |
| 1966年 | 证明基本控制结构 | Bohm和Jacopini |
| 1970年代 | 结构化程序设计普及 | Wirth等 |
(三)结构化程序设计的特点
设计特点:
| 特点 | 说明 |
|---|---|
| 自顶向下 | 从顶层开始设计 |
| 逐步求精 | 逐步细化实现 |
| 模块化 | 程序分解为模块 |
| 结构化 | 使用基本控制结构 |
📦 二、基本控制结构
(一)三种基本控制结构
基本控制结构:
结构化程序设计使用三种基本控制结构。
#mermaid-svg-fVlC7KLVn8E55GHW{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fVlC7KLVn8E55GHW .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fVlC7KLVn8E55GHW .error-icon{fill:#552222;}#mermaid-svg-fVlC7KLVn8E55GHW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fVlC7KLVn8E55GHW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fVlC7KLVn8E55GHW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fVlC7KLVn8E55GHW .marker.cross{stroke:#333333;}#mermaid-svg-fVlC7KLVn8E55GHW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fVlC7KLVn8E55GHW p{margin:0;}#mermaid-svg-fVlC7KLVn8E55GHW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fVlC7KLVn8E55GHW .cluster-label text{fill:#333;}#mermaid-svg-fVlC7KLVn8E55GHW .cluster-label span{color:#333;}#mermaid-svg-fVlC7KLVn8E55GHW .cluster-label span p{background-color:transparent;}#mermaid-svg-fVlC7KLVn8E55GHW .label text,#mermaid-svg-fVlC7KLVn8E55GHW span{fill:#333;color:#333;}#mermaid-svg-fVlC7KLVn8E55GHW .node rect,#mermaid-svg-fVlC7KLVn8E55GHW .node circle,#mermaid-svg-fVlC7KLVn8E55GHW .node ellipse,#mermaid-svg-fVlC7KLVn8E55GHW .node polygon,#mermaid-svg-fVlC7KLVn8E55GHW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fVlC7KLVn8E55GHW .rough-node .label text,#mermaid-svg-fVlC7KLVn8E55GHW .node .label text,#mermaid-svg-fVlC7KLVn8E55GHW .image-shape .label,#mermaid-svg-fVlC7KLVn8E55GHW .icon-shape .label{text-anchor:middle;}#mermaid-svg-fVlC7KLVn8E55GHW .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fVlC7KLVn8E55GHW .rough-node .label,#mermaid-svg-fVlC7KLVn8E55GHW .node .label,#mermaid-svg-fVlC7KLVn8E55GHW .image-shape .label,#mermaid-svg-fVlC7KLVn8E55GHW .icon-shape .label{text-align:center;}#mermaid-svg-fVlC7KLVn8E55GHW .node.clickable{cursor:pointer;}#mermaid-svg-fVlC7KLVn8E55GHW .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fVlC7KLVn8E55GHW .arrowheadPath{fill:#333333;}#mermaid-svg-fVlC7KLVn8E55GHW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fVlC7KLVn8E55GHW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fVlC7KLVn8E55GHW .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fVlC7KLVn8E55GHW .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fVlC7KLVn8E55GHW .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fVlC7KLVn8E55GHW .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fVlC7KLVn8E55GHW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fVlC7KLVn8E55GHW .cluster text{fill:#333;}#mermaid-svg-fVlC7KLVn8E55GHW .cluster span{color:#333;}#mermaid-svg-fVlC7KLVn8E55GHW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fVlC7KLVn8E55GHW .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fVlC7KLVn8E55GHW rect.text{fill:none;stroke-width:0;}#mermaid-svg-fVlC7KLVn8E55GHW .icon-shape,#mermaid-svg-fVlC7KLVn8E55GHW .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fVlC7KLVn8E55GHW .icon-shape p,#mermaid-svg-fVlC7KLVn8E55GHW .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fVlC7KLVn8E55GHW .icon-shape .label rect,#mermaid-svg-fVlC7KLVn8E55GHW .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fVlC7KLVn8E55GHW .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fVlC7KLVn8E55GHW .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fVlC7KLVn8E55GHW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 基本控制结构
顺序结构
选择结构
循环结构
按顺序执行
条件选择
重复执行
(二)顺序结构
顺序结构是最基本的控制结构,按顺序执行。
顺序结构特点:
| 特点 | 说明 |
|---|---|
| 顺序执行 | 按顺序依次执行 |
| 单入口单出口 | 一个入口,一个出口 |
| 无分支 | 没有分支选择 |
顺序结构示例:
#mermaid-svg-JOVHebCEswCXnm89{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JOVHebCEswCXnm89 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JOVHebCEswCXnm89 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JOVHebCEswCXnm89 .error-icon{fill:#552222;}#mermaid-svg-JOVHebCEswCXnm89 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JOVHebCEswCXnm89 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JOVHebCEswCXnm89 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JOVHebCEswCXnm89 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JOVHebCEswCXnm89 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JOVHebCEswCXnm89 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JOVHebCEswCXnm89 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JOVHebCEswCXnm89 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JOVHebCEswCXnm89 .marker.cross{stroke:#333333;}#mermaid-svg-JOVHebCEswCXnm89 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JOVHebCEswCXnm89 p{margin:0;}#mermaid-svg-JOVHebCEswCXnm89 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JOVHebCEswCXnm89 .cluster-label text{fill:#333;}#mermaid-svg-JOVHebCEswCXnm89 .cluster-label span{color:#333;}#mermaid-svg-JOVHebCEswCXnm89 .cluster-label span p{background-color:transparent;}#mermaid-svg-JOVHebCEswCXnm89 .label text,#mermaid-svg-JOVHebCEswCXnm89 span{fill:#333;color:#333;}#mermaid-svg-JOVHebCEswCXnm89 .node rect,#mermaid-svg-JOVHebCEswCXnm89 .node circle,#mermaid-svg-JOVHebCEswCXnm89 .node ellipse,#mermaid-svg-JOVHebCEswCXnm89 .node polygon,#mermaid-svg-JOVHebCEswCXnm89 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JOVHebCEswCXnm89 .rough-node .label text,#mermaid-svg-JOVHebCEswCXnm89 .node .label text,#mermaid-svg-JOVHebCEswCXnm89 .image-shape .label,#mermaid-svg-JOVHebCEswCXnm89 .icon-shape .label{text-anchor:middle;}#mermaid-svg-JOVHebCEswCXnm89 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JOVHebCEswCXnm89 .rough-node .label,#mermaid-svg-JOVHebCEswCXnm89 .node .label,#mermaid-svg-JOVHebCEswCXnm89 .image-shape .label,#mermaid-svg-JOVHebCEswCXnm89 .icon-shape .label{text-align:center;}#mermaid-svg-JOVHebCEswCXnm89 .node.clickable{cursor:pointer;}#mermaid-svg-JOVHebCEswCXnm89 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JOVHebCEswCXnm89 .arrowheadPath{fill:#333333;}#mermaid-svg-JOVHebCEswCXnm89 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JOVHebCEswCXnm89 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JOVHebCEswCXnm89 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JOVHebCEswCXnm89 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JOVHebCEswCXnm89 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JOVHebCEswCXnm89 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JOVHebCEswCXnm89 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JOVHebCEswCXnm89 .cluster text{fill:#333;}#mermaid-svg-JOVHebCEswCXnm89 .cluster span{color:#333;}#mermaid-svg-JOVHebCEswCXnm89 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JOVHebCEswCXnm89 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JOVHebCEswCXnm89 rect.text{fill:none;stroke-width:0;}#mermaid-svg-JOVHebCEswCXnm89 .icon-shape,#mermaid-svg-JOVHebCEswCXnm89 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JOVHebCEswCXnm89 .icon-shape p,#mermaid-svg-JOVHebCEswCXnm89 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JOVHebCEswCXnm89 .icon-shape .label rect,#mermaid-svg-JOVHebCEswCXnm89 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JOVHebCEswCXnm89 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JOVHebCEswCXnm89 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JOVHebCEswCXnm89 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 开始
语句1
语句2
语句3
结束
代码示例:
python
# 顺序结构示例
a = 10 # 语句1
b = 20 # 语句2
c = a + b # 语句3
print(c) # 语句4
(三)选择结构
选择结构根据条件选择执行路径。
选择结构类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| if结构 | 单分支选择 | if (条件) 语句 |
| if-else结构 | 双分支选择 | if (条件) 语句1 else 语句2 |
| switch结构 | 多分支选择 | switch (变量) case ... |
if-else结构示例:
#mermaid-svg-Ox1muIjYG7R11MKv{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Ox1muIjYG7R11MKv .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Ox1muIjYG7R11MKv .error-icon{fill:#552222;}#mermaid-svg-Ox1muIjYG7R11MKv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Ox1muIjYG7R11MKv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Ox1muIjYG7R11MKv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Ox1muIjYG7R11MKv .marker.cross{stroke:#333333;}#mermaid-svg-Ox1muIjYG7R11MKv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Ox1muIjYG7R11MKv p{margin:0;}#mermaid-svg-Ox1muIjYG7R11MKv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Ox1muIjYG7R11MKv .cluster-label text{fill:#333;}#mermaid-svg-Ox1muIjYG7R11MKv .cluster-label span{color:#333;}#mermaid-svg-Ox1muIjYG7R11MKv .cluster-label span p{background-color:transparent;}#mermaid-svg-Ox1muIjYG7R11MKv .label text,#mermaid-svg-Ox1muIjYG7R11MKv span{fill:#333;color:#333;}#mermaid-svg-Ox1muIjYG7R11MKv .node rect,#mermaid-svg-Ox1muIjYG7R11MKv .node circle,#mermaid-svg-Ox1muIjYG7R11MKv .node ellipse,#mermaid-svg-Ox1muIjYG7R11MKv .node polygon,#mermaid-svg-Ox1muIjYG7R11MKv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Ox1muIjYG7R11MKv .rough-node .label text,#mermaid-svg-Ox1muIjYG7R11MKv .node .label text,#mermaid-svg-Ox1muIjYG7R11MKv .image-shape .label,#mermaid-svg-Ox1muIjYG7R11MKv .icon-shape .label{text-anchor:middle;}#mermaid-svg-Ox1muIjYG7R11MKv .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Ox1muIjYG7R11MKv .rough-node .label,#mermaid-svg-Ox1muIjYG7R11MKv .node .label,#mermaid-svg-Ox1muIjYG7R11MKv .image-shape .label,#mermaid-svg-Ox1muIjYG7R11MKv .icon-shape .label{text-align:center;}#mermaid-svg-Ox1muIjYG7R11MKv .node.clickable{cursor:pointer;}#mermaid-svg-Ox1muIjYG7R11MKv .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Ox1muIjYG7R11MKv .arrowheadPath{fill:#333333;}#mermaid-svg-Ox1muIjYG7R11MKv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Ox1muIjYG7R11MKv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Ox1muIjYG7R11MKv .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Ox1muIjYG7R11MKv .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Ox1muIjYG7R11MKv .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Ox1muIjYG7R11MKv .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Ox1muIjYG7R11MKv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Ox1muIjYG7R11MKv .cluster text{fill:#333;}#mermaid-svg-Ox1muIjYG7R11MKv .cluster span{color:#333;}#mermaid-svg-Ox1muIjYG7R11MKv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Ox1muIjYG7R11MKv .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Ox1muIjYG7R11MKv rect.text{fill:none;stroke-width:0;}#mermaid-svg-Ox1muIjYG7R11MKv .icon-shape,#mermaid-svg-Ox1muIjYG7R11MKv .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Ox1muIjYG7R11MKv .icon-shape p,#mermaid-svg-Ox1muIjYG7R11MKv .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Ox1muIjYG7R11MKv .icon-shape .label rect,#mermaid-svg-Ox1muIjYG7R11MKv .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Ox1muIjYG7R11MKv .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Ox1muIjYG7R11MKv .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Ox1muIjYG7R11MKv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
开始
条件?
语句1
语句2
结束
代码示例:
python
# 选择结构示例
score = 85
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
else:
grade = 'D'
print(f"成绩等级: {grade}")
(四)循环结构
循环结构重复执行某段代码。
循环结构类型:
| 类型 | 说明 | 特点 |
|---|---|---|
| while循环 | 先判断后执行 | 可能不执行 |
| do-while循环 | 先执行后判断 | 至少执行一次 |
| for循环 | 计数循环 | 适合已知次数 |
while循环示例:
#mermaid-svg-NUbBw4MByI4YnewH{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-NUbBw4MByI4YnewH .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NUbBw4MByI4YnewH .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NUbBw4MByI4YnewH .error-icon{fill:#552222;}#mermaid-svg-NUbBw4MByI4YnewH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NUbBw4MByI4YnewH .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NUbBw4MByI4YnewH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NUbBw4MByI4YnewH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NUbBw4MByI4YnewH .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NUbBw4MByI4YnewH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NUbBw4MByI4YnewH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NUbBw4MByI4YnewH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NUbBw4MByI4YnewH .marker.cross{stroke:#333333;}#mermaid-svg-NUbBw4MByI4YnewH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NUbBw4MByI4YnewH p{margin:0;}#mermaid-svg-NUbBw4MByI4YnewH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NUbBw4MByI4YnewH .cluster-label text{fill:#333;}#mermaid-svg-NUbBw4MByI4YnewH .cluster-label span{color:#333;}#mermaid-svg-NUbBw4MByI4YnewH .cluster-label span p{background-color:transparent;}#mermaid-svg-NUbBw4MByI4YnewH .label text,#mermaid-svg-NUbBw4MByI4YnewH span{fill:#333;color:#333;}#mermaid-svg-NUbBw4MByI4YnewH .node rect,#mermaid-svg-NUbBw4MByI4YnewH .node circle,#mermaid-svg-NUbBw4MByI4YnewH .node ellipse,#mermaid-svg-NUbBw4MByI4YnewH .node polygon,#mermaid-svg-NUbBw4MByI4YnewH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NUbBw4MByI4YnewH .rough-node .label text,#mermaid-svg-NUbBw4MByI4YnewH .node .label text,#mermaid-svg-NUbBw4MByI4YnewH .image-shape .label,#mermaid-svg-NUbBw4MByI4YnewH .icon-shape .label{text-anchor:middle;}#mermaid-svg-NUbBw4MByI4YnewH .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NUbBw4MByI4YnewH .rough-node .label,#mermaid-svg-NUbBw4MByI4YnewH .node .label,#mermaid-svg-NUbBw4MByI4YnewH .image-shape .label,#mermaid-svg-NUbBw4MByI4YnewH .icon-shape .label{text-align:center;}#mermaid-svg-NUbBw4MByI4YnewH .node.clickable{cursor:pointer;}#mermaid-svg-NUbBw4MByI4YnewH .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NUbBw4MByI4YnewH .arrowheadPath{fill:#333333;}#mermaid-svg-NUbBw4MByI4YnewH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NUbBw4MByI4YnewH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NUbBw4MByI4YnewH .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NUbBw4MByI4YnewH .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NUbBw4MByI4YnewH .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NUbBw4MByI4YnewH .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NUbBw4MByI4YnewH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NUbBw4MByI4YnewH .cluster text{fill:#333;}#mermaid-svg-NUbBw4MByI4YnewH .cluster span{color:#333;}#mermaid-svg-NUbBw4MByI4YnewH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NUbBw4MByI4YnewH .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NUbBw4MByI4YnewH rect.text{fill:none;stroke-width:0;}#mermaid-svg-NUbBw4MByI4YnewH .icon-shape,#mermaid-svg-NUbBw4MByI4YnewH .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NUbBw4MByI4YnewH .icon-shape p,#mermaid-svg-NUbBw4MByI4YnewH .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NUbBw4MByI4YnewH .icon-shape .label rect,#mermaid-svg-NUbBw4MByI4YnewH .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NUbBw4MByI4YnewH .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NUbBw4MByI4YnewH .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NUbBw4MByI4YnewH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
开始
条件?
循环体
结束
代码示例:
python
# while循环示例
i = 1
sum = 0
while i <= 100:
sum = sum + i
i = i + 1
print(f"1到100的和: {sum}")
# for循环示例
sum = 0
for i in range(1, 101):
sum = sum + i
print(f"1到100的和: {sum}")
🌐 三、结构化程序设计的原则
(一)自顶向下原则
自顶向下原则:
从顶层开始设计,逐步细化。
#mermaid-svg-iUqAK5KHopuRhPCv{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-iUqAK5KHopuRhPCv .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-iUqAK5KHopuRhPCv .error-icon{fill:#552222;}#mermaid-svg-iUqAK5KHopuRhPCv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-iUqAK5KHopuRhPCv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-iUqAK5KHopuRhPCv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-iUqAK5KHopuRhPCv .marker.cross{stroke:#333333;}#mermaid-svg-iUqAK5KHopuRhPCv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-iUqAK5KHopuRhPCv p{margin:0;}#mermaid-svg-iUqAK5KHopuRhPCv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-iUqAK5KHopuRhPCv .cluster-label text{fill:#333;}#mermaid-svg-iUqAK5KHopuRhPCv .cluster-label span{color:#333;}#mermaid-svg-iUqAK5KHopuRhPCv .cluster-label span p{background-color:transparent;}#mermaid-svg-iUqAK5KHopuRhPCv .label text,#mermaid-svg-iUqAK5KHopuRhPCv span{fill:#333;color:#333;}#mermaid-svg-iUqAK5KHopuRhPCv .node rect,#mermaid-svg-iUqAK5KHopuRhPCv .node circle,#mermaid-svg-iUqAK5KHopuRhPCv .node ellipse,#mermaid-svg-iUqAK5KHopuRhPCv .node polygon,#mermaid-svg-iUqAK5KHopuRhPCv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-iUqAK5KHopuRhPCv .rough-node .label text,#mermaid-svg-iUqAK5KHopuRhPCv .node .label text,#mermaid-svg-iUqAK5KHopuRhPCv .image-shape .label,#mermaid-svg-iUqAK5KHopuRhPCv .icon-shape .label{text-anchor:middle;}#mermaid-svg-iUqAK5KHopuRhPCv .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-iUqAK5KHopuRhPCv .rough-node .label,#mermaid-svg-iUqAK5KHopuRhPCv .node .label,#mermaid-svg-iUqAK5KHopuRhPCv .image-shape .label,#mermaid-svg-iUqAK5KHopuRhPCv .icon-shape .label{text-align:center;}#mermaid-svg-iUqAK5KHopuRhPCv .node.clickable{cursor:pointer;}#mermaid-svg-iUqAK5KHopuRhPCv .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-iUqAK5KHopuRhPCv .arrowheadPath{fill:#333333;}#mermaid-svg-iUqAK5KHopuRhPCv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-iUqAK5KHopuRhPCv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-iUqAK5KHopuRhPCv .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iUqAK5KHopuRhPCv .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-iUqAK5KHopuRhPCv .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iUqAK5KHopuRhPCv .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-iUqAK5KHopuRhPCv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-iUqAK5KHopuRhPCv .cluster text{fill:#333;}#mermaid-svg-iUqAK5KHopuRhPCv .cluster span{color:#333;}#mermaid-svg-iUqAK5KHopuRhPCv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-iUqAK5KHopuRhPCv .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-iUqAK5KHopuRhPCv rect.text{fill:none;stroke-width:0;}#mermaid-svg-iUqAK5KHopuRhPCv .icon-shape,#mermaid-svg-iUqAK5KHopuRhPCv .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iUqAK5KHopuRhPCv .icon-shape p,#mermaid-svg-iUqAK5KHopuRhPCv .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-iUqAK5KHopuRhPCv .icon-shape .label rect,#mermaid-svg-iUqAK5KHopuRhPCv .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iUqAK5KHopuRhPCv .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-iUqAK5KHopuRhPCv .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-iUqAK5KHopuRhPCv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 顶层模块
第二层模块
第二层模块
第三层模块
第三层模块
第三层模块
(二)逐步求精原则
逐步求精原则:
逐步细化,从抽象到具体。
#mermaid-svg-0ED40HC1Y3d5AGD4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0ED40HC1Y3d5AGD4 .error-icon{fill:#552222;}#mermaid-svg-0ED40HC1Y3d5AGD4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0ED40HC1Y3d5AGD4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .marker.cross{stroke:#333333;}#mermaid-svg-0ED40HC1Y3d5AGD4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0ED40HC1Y3d5AGD4 p{margin:0;}#mermaid-svg-0ED40HC1Y3d5AGD4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster-label text{fill:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster-label span{color:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster-label span p{background-color:transparent;}#mermaid-svg-0ED40HC1Y3d5AGD4 .label text,#mermaid-svg-0ED40HC1Y3d5AGD4 span{fill:#333;color:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .node rect,#mermaid-svg-0ED40HC1Y3d5AGD4 .node circle,#mermaid-svg-0ED40HC1Y3d5AGD4 .node ellipse,#mermaid-svg-0ED40HC1Y3d5AGD4 .node polygon,#mermaid-svg-0ED40HC1Y3d5AGD4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .rough-node .label text,#mermaid-svg-0ED40HC1Y3d5AGD4 .node .label text,#mermaid-svg-0ED40HC1Y3d5AGD4 .image-shape .label,#mermaid-svg-0ED40HC1Y3d5AGD4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-0ED40HC1Y3d5AGD4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .rough-node .label,#mermaid-svg-0ED40HC1Y3d5AGD4 .node .label,#mermaid-svg-0ED40HC1Y3d5AGD4 .image-shape .label,#mermaid-svg-0ED40HC1Y3d5AGD4 .icon-shape .label{text-align:center;}#mermaid-svg-0ED40HC1Y3d5AGD4 .node.clickable{cursor:pointer;}#mermaid-svg-0ED40HC1Y3d5AGD4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .arrowheadPath{fill:#333333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0ED40HC1Y3d5AGD4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0ED40HC1Y3d5AGD4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0ED40HC1Y3d5AGD4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster text{fill:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 .cluster span{color:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0ED40HC1Y3d5AGD4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0ED40HC1Y3d5AGD4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-0ED40HC1Y3d5AGD4 .icon-shape,#mermaid-svg-0ED40HC1Y3d5AGD4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0ED40HC1Y3d5AGD4 .icon-shape p,#mermaid-svg-0ED40HC1Y3d5AGD4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0ED40HC1Y3d5AGD4 .icon-shape .label rect,#mermaid-svg-0ED40HC1Y3d5AGD4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0ED40HC1Y3d5AGD4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0ED40HC1Y3d5AGD4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0ED40HC1Y3d5AGD4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 抽象描述
第一层细化
第二层细化
第三层细化
具体实现
(三)模块化原则
模块化原则:
将程序分解为独立模块。
| 要求 | 说明 |
|---|---|
| 功能独立 | 模块功能独立 |
| 接口简单 | 模块接口简单 |
| 高内聚 | 模块内部紧密 |
| 低耦合 | 模块间依赖少 |
(四)限制使用goto语句
限制goto原则:
goto语句使程序结构混乱,应限制使用。
goto的问题:
| 问题 | 说明 |
|---|---|
| 结构混乱 | 破坏程序结构 |
| 难以理解 | 程序难以理解 |
| 难以维护 | 程序难以维护 |
| 难以测试 | 程序难以测试 |
📊 四、结构化程序设计的方法
(一)设计方法
设计方法:
#mermaid-svg-TX8BamVLGl8TLWeI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-TX8BamVLGl8TLWeI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-TX8BamVLGl8TLWeI .error-icon{fill:#552222;}#mermaid-svg-TX8BamVLGl8TLWeI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-TX8BamVLGl8TLWeI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-TX8BamVLGl8TLWeI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-TX8BamVLGl8TLWeI .marker.cross{stroke:#333333;}#mermaid-svg-TX8BamVLGl8TLWeI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-TX8BamVLGl8TLWeI p{margin:0;}#mermaid-svg-TX8BamVLGl8TLWeI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-TX8BamVLGl8TLWeI .cluster-label text{fill:#333;}#mermaid-svg-TX8BamVLGl8TLWeI .cluster-label span{color:#333;}#mermaid-svg-TX8BamVLGl8TLWeI .cluster-label span p{background-color:transparent;}#mermaid-svg-TX8BamVLGl8TLWeI .label text,#mermaid-svg-TX8BamVLGl8TLWeI span{fill:#333;color:#333;}#mermaid-svg-TX8BamVLGl8TLWeI .node rect,#mermaid-svg-TX8BamVLGl8TLWeI .node circle,#mermaid-svg-TX8BamVLGl8TLWeI .node ellipse,#mermaid-svg-TX8BamVLGl8TLWeI .node polygon,#mermaid-svg-TX8BamVLGl8TLWeI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-TX8BamVLGl8TLWeI .rough-node .label text,#mermaid-svg-TX8BamVLGl8TLWeI .node .label text,#mermaid-svg-TX8BamVLGl8TLWeI .image-shape .label,#mermaid-svg-TX8BamVLGl8TLWeI .icon-shape .label{text-anchor:middle;}#mermaid-svg-TX8BamVLGl8TLWeI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-TX8BamVLGl8TLWeI .rough-node .label,#mermaid-svg-TX8BamVLGl8TLWeI .node .label,#mermaid-svg-TX8BamVLGl8TLWeI .image-shape .label,#mermaid-svg-TX8BamVLGl8TLWeI .icon-shape .label{text-align:center;}#mermaid-svg-TX8BamVLGl8TLWeI .node.clickable{cursor:pointer;}#mermaid-svg-TX8BamVLGl8TLWeI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-TX8BamVLGl8TLWeI .arrowheadPath{fill:#333333;}#mermaid-svg-TX8BamVLGl8TLWeI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-TX8BamVLGl8TLWeI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-TX8BamVLGl8TLWeI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TX8BamVLGl8TLWeI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-TX8BamVLGl8TLWeI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TX8BamVLGl8TLWeI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-TX8BamVLGl8TLWeI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-TX8BamVLGl8TLWeI .cluster text{fill:#333;}#mermaid-svg-TX8BamVLGl8TLWeI .cluster span{color:#333;}#mermaid-svg-TX8BamVLGl8TLWeI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-TX8BamVLGl8TLWeI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-TX8BamVLGl8TLWeI rect.text{fill:none;stroke-width:0;}#mermaid-svg-TX8BamVLGl8TLWeI .icon-shape,#mermaid-svg-TX8BamVLGl8TLWeI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TX8BamVLGl8TLWeI .icon-shape p,#mermaid-svg-TX8BamVLGl8TLWeI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-TX8BamVLGl8TLWeI .icon-shape .label rect,#mermaid-svg-TX8BamVLGl8TLWeI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TX8BamVLGl8TLWeI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-TX8BamVLGl8TLWeI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-TX8BamVLGl8TLWeI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 结构化设计方法
自顶向下
逐步求精
模块化
从顶层开始
逐步细化
分解为模块
(二)设计步骤
设计步骤:
| 步骤 | 任务 | 产出 |
|---|---|---|
| 1 | 分析问题 | 问题分析 |
| 2 | 设计顶层 | 顶层结构 |
| 3 | 逐层细化 | 细化结构 |
| 4 | 编写代码 | 程序代码 |
| 5 | 测试调试 | 测试结果 |
(三)设计实例
实例:计算学生成绩
问题分析:
- 输入:学生成绩列表
- 处理:计算平均分、最高分、最低分
- 输出:统计结果
自顶向下设计:
主程序
├── 输入成绩
├── 计算统计
│ ├── 计算平均分
│ ├── 计算最高分
│ └── 计算最低分
└── 输出结果
逐步求精:
python
# 第一层:主程序框架
def main():
scores = input_scores()
stats = calculate_statistics(scores)
output_results(stats)
# 第二层:细化各模块
def input_scores():
# 输入成绩
pass
def calculate_statistics(scores):
# 计算统计
pass
def output_results(stats):
# 输出结果
pass
# 第三层:具体实现
def input_scores():
scores = []
n = int(input("请输入学生人数: "))
for i in range(n):
score = float(input(f"请输入第{i+1}个学生的成绩: "))
scores.append(score)
return scores
def calculate_statistics(scores):
avg = sum(scores) / len(scores)
max_score = max(scores)
min_score = min(scores)
return {'average': avg, 'max': max_score, 'min': min_score}
def output_results(stats):
print(f"平均分: {stats['average']:.2f}")
print(f"最高分: {stats['max']:.2f}")
print(f"最低分: {stats['min']:.2f}")
if __name__ == "__main__":
main()
💡 五、结构化程序设计的工具
(一)流程图
流程图是描述程序结构的图形工具。
流程图符号:
| 符号 | 含义 | 说明 |
|---|---|---|
| 椭圆 | 开始/结束 | 流程的开始和结束 |
| 矩形 | 处理 | 处理步骤 |
| 菱形 | 判断 | 条件判断 |
| 平行四边形 | 输入/输出 | 数据输入输出 |
| 箭头 | 流向 | 流程方向 |
流程图示例:
#mermaid-svg-GUJfJMk3yaUpz7AI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-GUJfJMk3yaUpz7AI .error-icon{fill:#552222;}#mermaid-svg-GUJfJMk3yaUpz7AI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GUJfJMk3yaUpz7AI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GUJfJMk3yaUpz7AI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GUJfJMk3yaUpz7AI .marker.cross{stroke:#333333;}#mermaid-svg-GUJfJMk3yaUpz7AI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GUJfJMk3yaUpz7AI p{margin:0;}#mermaid-svg-GUJfJMk3yaUpz7AI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster-label text{fill:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster-label span{color:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster-label span p{background-color:transparent;}#mermaid-svg-GUJfJMk3yaUpz7AI .label text,#mermaid-svg-GUJfJMk3yaUpz7AI span{fill:#333;color:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI .node rect,#mermaid-svg-GUJfJMk3yaUpz7AI .node circle,#mermaid-svg-GUJfJMk3yaUpz7AI .node ellipse,#mermaid-svg-GUJfJMk3yaUpz7AI .node polygon,#mermaid-svg-GUJfJMk3yaUpz7AI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GUJfJMk3yaUpz7AI .rough-node .label text,#mermaid-svg-GUJfJMk3yaUpz7AI .node .label text,#mermaid-svg-GUJfJMk3yaUpz7AI .image-shape .label,#mermaid-svg-GUJfJMk3yaUpz7AI .icon-shape .label{text-anchor:middle;}#mermaid-svg-GUJfJMk3yaUpz7AI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-GUJfJMk3yaUpz7AI .rough-node .label,#mermaid-svg-GUJfJMk3yaUpz7AI .node .label,#mermaid-svg-GUJfJMk3yaUpz7AI .image-shape .label,#mermaid-svg-GUJfJMk3yaUpz7AI .icon-shape .label{text-align:center;}#mermaid-svg-GUJfJMk3yaUpz7AI .node.clickable{cursor:pointer;}#mermaid-svg-GUJfJMk3yaUpz7AI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-GUJfJMk3yaUpz7AI .arrowheadPath{fill:#333333;}#mermaid-svg-GUJfJMk3yaUpz7AI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GUJfJMk3yaUpz7AI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GUJfJMk3yaUpz7AI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GUJfJMk3yaUpz7AI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-GUJfJMk3yaUpz7AI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GUJfJMk3yaUpz7AI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster text{fill:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI .cluster span{color:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GUJfJMk3yaUpz7AI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-GUJfJMk3yaUpz7AI rect.text{fill:none;stroke-width:0;}#mermaid-svg-GUJfJMk3yaUpz7AI .icon-shape,#mermaid-svg-GUJfJMk3yaUpz7AI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GUJfJMk3yaUpz7AI .icon-shape p,#mermaid-svg-GUJfJMk3yaUpz7AI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-GUJfJMk3yaUpz7AI .icon-shape .label rect,#mermaid-svg-GUJfJMk3yaUpz7AI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GUJfJMk3yaUpz7AI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-GUJfJMk3yaUpz7AI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-GUJfJMk3yaUpz7AI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
开始
输入成绩
计算平均分
平均分>=60?
输出及格
输出不及格
结束
(二)盒图(N-S图)
盒图是结构化的流程图。
盒图特点:
| 特点 | 说明 |
|---|---|
| 结构化 | 强制使用结构化控制结构 |
| 无箭头 | 不使用箭头表示流向 |
| 嵌套 | 通过嵌套表示层次 |
盒图示例:
┌─────────────────────────────────┐
│ 输入成绩 │
├─────────────────────────────────┤
│ 计算平均分 │
├─────────────────────────────────┤
│ if 平均分 >= 60 │
│ ┌─────────────────────────────┐ │
│ │ 输出及格 │ │
│ └─────────────────────────────┘ │
│ else │
│ ┌─────────────────────────────┐ │
│ │ 输出不及格 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────┘
(三)PAD图
PAD图(Problem Analysis Diagram)是问题分析图。
PAD图特点:
| 特点 | 说明 |
|---|---|
| 树形结构 | 自左向右展开 |
| 层次清晰 | 层次关系清晰 |
| 易于转换 | 易于转换为代码 |
PAD图示例:
开始
├─ 输入成绩
├─ 计算平均分
├─ if 平均分 >= 60
│ └─ 输出及格
│ else
│ └─ 输出不及格
└─ 结束
(四)伪代码
伪代码是介于自然语言和编程语言之间的代码表示。
伪代码示例:
// 计算学生成绩统计
function calculateStatistics(scores):
sum = 0
max = scores[0]
min = scores[0]
for each score in scores:
sum = sum + score
if score > max:
max = score
if score < min:
min = score
average = sum / length(scores)
return {average, max, min}
📋 六、结构化程序设计的优缺点
(一)优点
优点:
| 优点 | 说明 |
|---|---|
| 结构清晰 | 程序结构清晰 |
| 易于理解 | 程序易于理解 |
| 易于维护 | 程序易于维护 |
| 易于测试 | 程序易于测试 |
| 提高效率 | 提高开发效率 |
(二)缺点
缺点:
| 缺点 | 说明 |
|---|---|
| 效率问题 | 可能影响效率 |
| 局限性 | 不适合所有场景 |
| 复杂性 | 复杂系统难以应用 |
(三)适用场景
适用场景:
| 场景 | 说明 |
|---|---|
| 数据处理 | 数据处理程序 |
| 业务逻辑 | 业务逻辑程序 |
| 教学程序 | 教学示例程序 |
📝 七、结构化程序设计实例
(一)实例背景
项目:学生成绩管理系统
功能:
- 输入学生成绩
- 计算统计信息
- 输出统计结果
(二)设计过程
自顶向下设计:
主程序
├── 初始化
├── 主循环
│ ├── 显示菜单
│ ├── 获取选择
│ └── 处理选择
│ ├── 输入成绩
│ ├── 计算统计
│ ├── 输出结果
│ └── 退出系统
└── 结束处理
(三)代码实现
完整代码:
python
def main():
scores = []
running = True
while running:
# 显示菜单
print("\n=== 学生成绩管理系统 ===")
print("1. 输入成绩")
print("2. 计算统计")
print("3. 输出结果")
print("4. 退出系统")
# 获取选择
choice = input("请选择操作(1-4): ")
# 处理选择
if choice == '1':
scores = input_scores()
elif choice == '2':
if len(scores) > 0:
stats = calculate_statistics(scores)
print("统计完成")
else:
print("请先输入成绩")
elif choice == '3':
if len(scores) > 0:
output_results(stats)
else:
print("请先输入成绩")
elif choice == '4':
running = False
print("感谢使用,再见!")
else:
print("无效选择,请重新输入")
def input_scores():
scores = []
n = int(input("请输入学生人数: "))
for i in range(n):
while True:
try:
score = float(input(f"请输入第{i+1}个学生的成绩: "))
if 0 <= score <= 100:
scores.append(score)
break
else:
print("成绩必须在0-100之间")
except ValueError:
print("请输入有效的数字")
return scores
def calculate_statistics(scores):
avg = sum(scores) / len(scores)
max_score = max(scores)
min_score = min(scores)
return {'average': avg, 'max': max_score, 'min': min_score}
def output_results(stats):
print("\n=== 统计结果 ===")
print(f"平均分: {stats['average']:.2f}")
print(f"最高分: {stats['max']:.2f}")
print(f"最低分: {stats['min']:.2f}")
if __name__ == "__main__":
main()
📝 总结
结构化程序设计是一种重要的程序设计方法学。
🎯 设计定义:采用自顶向下、逐步求精的设计方法,使用顺序、选择、循环三种基本控制结构来编写程序。
📦 基本控制结构:
- 顺序结构:按顺序依次执行
- 选择结构:根据条件选择执行路径(if、if-else、switch)
- 循环结构:重复执行某段代码(while、do-while、for)
🌐 设计原则:
- 自顶向下:从顶层开始设计
- 逐步求精:逐步细化实现
- 模块化:程序分解为模块
- 限制goto:避免使用goto语句
💡 设计方法:自顶向下、逐步求精、模块化设计。
📋 设计工具:流程图、盒图(N-S图)、PAD图、伪代码。
核心启示:结构化程序设计是程序设计的基础,"万丈高楼平地起"。掌握结构化程序设计技术,能够编写出结构清晰、易于理解和维护的程序。在实际工作中,我们需要注意:第一,熟练掌握三种基本控制结构;第二,遵循自顶向下、逐步求精的设计方法;第三,合理使用设计工具(流程图、盒图、PAD图等);第四,限制使用goto语句,保持程序结构清晰;第五,重视代码的可读性和可维护性。虽然现代编程语言提供了更多的高级特性,但结构化程序设计的基本思想仍然具有重要价值。理解结构化程序设计,有助于我们更好地理解程序设计的本质,提高编程能力。记住:好的程序不仅是能运行的程序,更是结构清晰、易于理解和维护的程序。