网购哪个网站质量好又便宜/推广赚佣金项目
文章目录
- 6.1 结构程序设计
- 6.2 人机界面设计
- 6.3 过程设计的工具
- 6.3.1 程序流程图(程序框图)
- 6.3.2 盒图(N-S图)
- 6.3.3 PAD图(问题分析图)
- 6.3.4 判定表
- 6.3.5 判断树
- 6.3.6 过程设计语言
- 6.4 面向数据结构的设计方法
- 6.4.1 Jackson图
- 6.4.2 改进的Jackson图
- 6.5 程序复杂程度的定量度量
- 6.5.1 McCabe方法
- 6.5.2 Halstead方法
- 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统
- 详细设计阶段的任务不是具体地编写程序
- 详细设计不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
- 结构程序设计技术是实现详细设计目标的关键技术,也是详细设计的逻辑基础。
6.1 结构程序设计
- 经典定义
- 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
- 程序设计新定义:
- 结构程序设计方法是尽可能少用GO TO语句的程序设计方法。
- 控制结构
- (1)基本控制结构
- 三种基本的控制结构是“顺序”“选择”和“循环”,它们的流程图分别为
- 【注意】牢记三种基本控制结构,此为常考内容。
- 3种基本控制结构保证每个代码块单入口和单出口,结构程序设计是详细设计的逻辑基础。
- (2)扩展的控制结构
- DO UNTIL和DO CASE的流程图分别是
- (1)基本控制结构
- 如果只允许使用顺序、IF_THEN_ELSE型分支、DO_WHILE型循环这三种基本控制结构,为经典结构程序设计
- 还允许使用DO_CASE型多分支结构和DO_UNTIL型循环结构,为扩展的结构程序设计
- 如果还允许使用LEAVE(或BREAK)结构,为修正的结构程序设计
6.2 人机界面设计
- 重要性
- 人机界面设计是接口设计的重要组成部分
- 对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。
- 人机界面的质量直接影响用户对软件产品的接受程度。
- 设计问题
- (1)系统响应时间;
- (2)用户帮助设施;
- (3)出错信息处理;
- (4)命令交互。
- 设计过程
- 用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。
- 人机界面设计指南
- 有助于设计者设计出友好、高效的人机界面
- 一般交互指南
- 信息显示指南
- 数据输入指南
6.3 过程设计的工具
- 过程设计的工具,描述程序处理过程的工具,可以分为图形、表格、语言三类
6.3.1 程序流程图(程序框图)
- (1)符号表示
- 程序流程图中使用的符号表示如图所示。
- (2)优点
- 对控制流程的描绘很直观,便于初学者掌握。
- (3)缺点
- ① 没遵循逐步求精的原则,它诱使程序员过早地考虑程序的控制流程, 而不去考虑程序的全局结构。
- ② 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以随意转移控制。
- ③ 程序流程图不易表示数据结构。
6.3.2 盒图(N-S图)
- (1)特点
- ① 功能域明确;
- ② 不可能任意转移控制;
- ③ 很容易确定局部和全程数据的作用域;
- ④ 很容易表示嵌套关系,也可以表示模块的层次结构。
- (2)表示
- 下图给出了结构化控制结构的盒图表示,也给出了调用子程序的盒图表示方法。
- (3)优点
- ① 盒图没有箭头,因此不允许随意转移控制。
- ② 盒图可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。
6.3.3 PAD图(问题分析图)
- (1)符号表示
- PAD图用二维树形结构的图来表示程序的控制流,下图给出PAD图的基本符号。
- (2)优点
- ① 使用PAD符号所设计出来的程序必然是结构化程序。
- ② PAD图所描绘的程序结构十分清晰。
- ③ 用PAD图表现程序逻辑,易读、易懂、易记。
- ④ 容易使用软件工具将PAD图自动转换成高级语言源程序,提高了软件可靠性和软件生产率。
- ⑤ 即可用于表示程序逻辑,也可用于描绘数据结构。
- ⑥ PAD图的符号支持自顶向下、逐步求精方法的使用。
- 【注意】PAD图中竖线的总条数就是程序的层次数。
- PAD图是面向高级程序设计语言的,为每种常用的高级程序设计语言提供了一整套相应的图形符号
6.3.4 判定表
- (1)适用性
- 算法中包含多重嵌套的条件选择时使用判定表。
- 判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
- (2)组成
- ① 左上部列出所有条件;
- ② 左下部是所有可能做的动作;
- ③ 右上部是表示各种条件组合的一个矩阵;
- ④ 右下部是和每种条件组合相对应的动作。
- 【注意】判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。
6.3.5 判断树
- 判定树是判定表的变种,能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
6.3.6 过程设计语言
- (1)定义
- 过程设计语言(PDL),即伪码,它是用正文形式表示数据和处理过程的设计工具。
- (2)优点
- ① 可作为注释直接插在源程序中,有助于保持文档和程序的一致性,提高文档的质量。
- ② 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
- ③ 已经有自动处理PDL的程序存在,且可以自动由PDL生成程序代码。
- (3)缺点
- 不如图形工具形象直观,不如判定表清晰简单。
6.4 面向数据结构的设计方法
6.4.1 Jackson图
- (1)分类
- Jackson图根据程序中数据元素彼此间的逻辑关系可分为顺序结构、选择结构和重复结构3类,具体如下:
- ① 顺序结构
- 【注意】图中每个元素只出现一次,出现的次序依次是B、C和D。
- ② 选择结构
- 【注意】在B、C和D的右上角有小圆圈做标记。
- ③ 重复结构
- 【注意】在B的右上角有星号标记。
- (2)优点
- ① 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。
- ② 形象直观可读性好。
- ③ 既能表示数据结构也能表示程序结构。
- (3)缺点
- ① 图中无法表示选择条件或循环结束条件,影响了图的表达能力,也不易直接把图翻译成程序。
- ② 框间连线为斜线,不易在行式打印机上输出。
6.4.2 改进的Jackson图
- (1)表示
- 改进的Jackson图。
- (a)顺序结构:B、C、D中任一个都不能是选择出现或重复出现的数据元素。
- (b)选择结构:S右面括号中的数字i是分支条件的编号。
- (c)可选结构:A或者是元素B或者不出现。
- (d)重复结构:循环结束条件的编号为i。
- (2)与层次图的比较
- ① 层次图中的一个方框代表一个模块;而Jackson图中一个方框并不代表一个模块。
- ② 层次图表现的是调用关系;而Jackson图表现的是组成关系。
6.5 程序复杂程度的定量度量
6.5.1 McCabe方法
- (1)流图
- ① 定义
- 流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件。
- ② 程序流程图映射成流图
- 下图说明了把程序流程图映射成流图的方法。
- a.流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。
- b.流图中的箭头线称为边,代表控制流。流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句。
- c.由边和结点围成的面积称为区域,计算区域数时应包括图外部未被围起来的区域。
- ③ PDL翻译成流图
- a.基本情况
- 下图是用PDL表示的处理过程及与之对应的流图。
- b.包含复合条件
- 复合条件,就是在条件中包含了一个或多个布尔运算符。下图是由包含复合条件的PDL片段翻译成的流图。
- a.基本情况
- ① 定义
- (2)环形复杂度
- ① 定义
- McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,度量出的结果称为程序的环形复杂度。
- ② 计算方法
- 环形复杂度定量度量程序的逻辑复杂度,可以用下述3种方法中的任何一种来计算环形复杂度:
- a.流图中线性无关的区域数等于环形复杂度。
- b.流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
- c.流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
- 环形复杂度定量度量程序的逻辑复杂度,可以用下述3种方法中的任何一种来计算环形复杂度:
- ① 定义
- 环形复杂度V(G)=10是模块规模的合理上限。
6.5.2 Halstead方法
- (1)定义
- Halstead方法是根据程序中运算符和操作数的总数来度量程序的复杂程度。
- (2)方法
- ① 程序长度N定义(N1为程序中运算符出现的总次数,N2为操作数出现的总次数):N=N1+N2;
- ② 预测程序长度的公式(使用的不同运算符的个数n1,不同操作数的个数n2):H=n1log2(n1)+n2log2(n2);
- ③ 预测程序中包含错误的个数的公式:E=Nlog2(n1+n2)/3000。
相关文章:

[软件工程导论(第六版)]第6章 详细设计(复习笔记)
文章目录6.1 结构程序设计6.2 人机界面设计6.3 过程设计的工具6.3.1 程序流程图(程序框图)6.3.2 盒图(N-S图)6.3.3 PAD图(问题分析图)6.3.4 判定表6.3.5 判断树6.3.6 过程设计语言6.4 面向数据结构的设计方…...

RabbitMQ核心内容:实战教程(java)
文章目录一、安装二、入门1.分类2.核心概念3.工作原理4.六大模式三、模式一:"Hello World!"1.依赖2.生产者代码3.消费者代码四、模式二:Work Queues1.工作原理2.工具类代码:连接工厂3.消费者代码4.生产者代码5.分发策略不公平分发预…...

RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法
平台U-Boot 版本Linux SDK 版本RK356x2017.09v1.2.3文章目录 一、设备树与config配置二、pci命令的定义三、nvme命令的定义四、pci与nvme命令的用法3.1 pci总线扫描3.2 nvme设备信息3.3 nvme设备读写一、设备树与config配置 RK3568支持PCIe接口,例如ROC-RK3568-PC: 原理图如…...

微信头像昵称获取能力的变化导致了我半年没更新小程序
背景 2022年9月份,微信更改了获取头像昵称的规则,回收了原有 wx.getUserProfile 中的部分能力,为了减小对【微点记账】小程序的影响,长达半年未做任何更新,今天为了增加这个聊天机器人的功能,不得不重新查…...

【深度学习编译器系列】1. 为什么需要深度学习编译器?
本系列是自学深度学习编译器过程中的一些笔记和总结,参考文献在文末。 1. 概述 深度学习(DL)编译器的产生有两方面的因素:深度学习模型的广泛应用,以及深度学习芯片的层出不穷。 一方面,我们现在有非常多…...

数据结构与算法总结整理(超级全的哦!)
数据结构与算法基础大O表示法时间复杂度大O表示法时间复杂度排序:最坏时间复杂度时间复杂度的几条基本计算规则内存工作原理什么是内存内存主要分为三种存储器随机存储器(RAM)只读存储器(ROM)高速缓存(Cach…...

DPDK — MALLOC 堆内存管理组件
目录 文章目录 目录MALLOC 堆内存管理组件rte_malloc() 接口malloc_heap 结构体malloc_elem 结构体内存初始化流程内存申请流程内存释放流程MALLOC 堆内存管理组件 MALLOC(堆内存管理组件)基于 hugetlbfs 内核文件系统来实现,能够从 HugePage 中分配一块连续的物理大页内存…...

分享113个HTML艺术时尚模板,总有一款适合您
分享113个HTML艺术时尚模板,总有一款适合您 113个HTML艺术时尚模板下载链接:https://pan.baidu.com/s/1ReoPNIRjkYov-SjsPo0vhg?pwdjk4a 提取码:jk4a Python采集代码下载链接:采集代码.zip - 蓝奏云 女性化妆用品网页模板 粉…...

2023年美赛C题Wordle预测问题一建模及Python代码详细讲解
相关链接 (1)2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 (2)2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 (3)2023年美赛C题Wordle预测问题三、四建模及Python代码详细讲解 &…...

小米12s ultra,索尼xperia1 iv,数码相机 拍照对比
首先说明所有的测试结果和拍摄数据我放到百度网盘了(地址在结尾) 为什么做这个测试 我一直想知道现在的手机和相机差距有多大,到底差在哪儿? 先说结论: 1.1英寸的手机cmos(2022年) 6年前(2016)的入门款相机(m43画幅) 2.手机 不能换镜头,只能在特定的拍摄距离才能发挥出全…...

C++笔记 模板的进阶知识
目录 1. 非类型模板参数 2.模板的特化 2.1 函数模板的特化 2.2 类模板的特化 2.2.1 全特化 2.2.2 偏特化 3.模板的分离编译 3.1 什么是分离编译? 3.2 模板的分离编译 4.模板的总结 模板的初阶内容:(594条消息) C模板的原理和使用_全貌的博客-CSD…...

基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像
基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像Linux 环境说明Debian 简介Debian 发行版本关于 Debian 11Linux 常用基础工具Dockerfile 中 RUN 指令RUN 语法格式RUN 语义说明编写 Dockerfile 构建 Runtime 基础镜像ASP.NET Core Runtime 基础镜像Dockerfile 编写Windo…...

【无人机路径规划】基于IRM和RRTstar进行无人机路径规划(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Spring Boot中使用@Autowire装配接口是怎么回事?
在学习使用Spring Boot框架时候,发现了一个特别的现象UserMapper是一个接口,在另一个类中好像直接使用Autowired装配了一个UserMapper对象???我纳闷了一会儿,接口居然可以直接实例对象吗?根据我…...

23种设计模式介绍(Python示例讲解)
文章目录一、概述二、设计模式七种原则三、设计模式示例讲解1)创建型模式1、工厂模式(Factory Method)【1】简单工厂模式(不属于GOF设计模式之一)【2】工厂方法模式2、抽象工厂模式(AbstractFactory&#x…...

初识Hadoop,走进大数据世界
文章目录数据!数据!遇到的问题Hadoop的出现相较于其他系统的优势关系型数据库网格计算本文章属于Hadoop系列文章,分享Hadoop相关知识。后续文章中会继续分享Hadoop的组件、MapReduce、HDFS、Hbase、Flume、Pig、Spark、Hadoop集群管理系统以及…...

加油站会员管理小程序实战开发教程14 会员充值
我们上篇介绍了会员开卡的业务,开卡是为了创建会员卡的信息。有了会员卡信息后我们就可以给会员进行充值。当然了充值这个业务是由会员自主发起的。 按照我们的产品原型,我们在我的页面以轮播图的形式循环展示当前会员的所有卡信息。这个会员卡信息需要先用变量从数据源读取…...

leetcode 1792. 最大平均通过率
一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。给你一个二维数组 classes ,其中 classes[i] [passi, totali] ,表示你提前知道了第 i 个班级总共有 totali 个学生,其中只有 passi 个学…...

15-基础加强-2-xml(约束)枚举注解
文章目录1.xml1.1概述【理解】(不用看)1.2标签的规则【应用】1.3语法规则【应用】1.4xml解析【应用】1.5DTD约束【理解】1.5.1 引入DTD约束的三种方法1.5.2 DTD语法(会阅读,然后根据约束来写)1.6 schema约束【理解】1.6.1 编写schema约束1.6.…...

13:高级篇 - CTK 事件管理机制(signal/slot)
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在《12:高级篇 - CTK 事件管理机制(sendEvent/postEvent)》一文中,我们介绍了如何进行插件间通信 - sendEvent()/postEvent() + ctkEventHandler。然而,除了这种方式之外,EventAdmin 还提供了另一种方…...

群晖-第1章-IPV6的DDNS
群晖-第1章-IPV6的DDNS 方案:腾讯云群晖DS920 本文参考群晖ipv6 DDNS-go教程-牧野狂歌,感谢原作者的分享。 这篇文章只记录了我需要的部分,其他的可以查看原文,原文还记录了更多的内容,可能帮到你。 一、购买域名 …...

centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考
文章目录硬件要求可省略的步骤配置虚拟机ip设置阿里镜像源各服务器初始化配置配置主节点的主机名称配置从节点的主机名称配置各节点的Host文件关闭各节点的防火墙关闭selinux永久禁用各节点的交换分区同步各节点的时间将桥接的IPv4流量传递到iptables的链(三台都执行…...

帮助指令 man ,help及文档常用管理指令
帮助指令 man,help 1. man 当我们想要了解某个命令如何使用,及选项的含义是什么以及配置文件的帮助信息时,可以使用 man [命令或配置文件],这样便可以获得到帮助提示信息了。 语法格式:man [命令或者配置文件] 比如…...

电子科技大学操作系统期末复习笔记(五):文件管理
目录 前言 文件管理:基础 基本概念 文件 文件系统 文件系统的实现模型 文件的组成 文件名 文件分类 文件结构 逻辑结构 物理结构 练习题 文件管理:目录 文件控制块FCB FCB:File Control Block FCB信息 目录 基本概念 目…...

SpringBoot+ActiveMQ-发布订阅模式(生产端)
SpringBootActiveMQ-发布订阅模式(生产端)Topic 主题* 消息消费者(订阅方式)消费该消息* 消费生产者将发布到topic中,同时有多个消息消费者(订阅)消费该消息* 这种方式和点对点方式不同…...

Android实例仿真之三
目录 四 Android架构探究 五 大骨架仿真 六 Android实例分析思路拓展 四 Android架构探究 首先,Android系统所带来的好处,就在于它本身代码的开放性,这提供了一个学习、借鉴的平台。这对分析仿真而言,本身就是一大利好…...

关于MySQL的limit优化
1、前提 提示:只适用于InnoDB引擎 2、InnoDB存储特点 它把索引和数据放在了一个文件中,就是聚集索引。这与MyISAM引擎是不一样的。 3、SQL示例 -- 给cve字段建立索引 select * from cnnvd where cveCVE-2022-24808 limit 300000,10;由于M…...

Java-Stream流基本使用
collection.stream将会破坏原有的数据结构,可以通过collect方法收集,可以用Collectors提供的构造器,add等方法构造形成新的数据结构。 HashSet<List<Integer>> rs new HashSet<>(); rs.stream().toList();Collection集合转…...

Liunx(狂神课堂笔记)
一.常用命令 1. cd 切换目录 cd ./* 当前目录cd /* 绝对路径cd .. 返回上一级目录cd ~ 回到当前目录pwd …...

【史上最全面esp32教程】点灯大师篇
文章目录前言ESP32简介认识arduino的两个函数点灯步骤函数介绍LED灯闪烁流水灯总结前言 esp32有很多的功能,例如wifi,蓝牙等,这节我们学习最简单的点灯。 提示:以下是本篇文章正文内容,下面案例可供参考 ESP32简介 …...