Java学习总结——程序控制结构

2023-11-16

柒——程序执行方向

一、程序逻辑

结构化程序设计(Structured programming)是一种经典的编程模式,在1960年开始发展,其思想最早是由荷兰著名计算机科学家 E.W. Dijkstra 提出的,他设计了一套规则,使程序设计具有合理的结构,用以保证程序的正确性。这套规则要求程序设计者按照一定的结构形式来设计和编写程序,而不是“天马行空”地根据程序员的意愿来编写。早期的程序员广泛使用 GOTO 语句,而自从结构化编程思想推广以来,它已经日益淡出程序设计的舞台。

GOTO 语句也称无条件转移语句,它破坏了程序设计结构性,导致程序流程的混乱,使理解和调试程序都产生困难。1966年5月 Djikstra 在著名学术期刊《Communications of the ACM》发表论文,说明任何一个有 goto 指令的程序,可以改为完全不使用 goto 指令的程序,即 “ 所有有意义的程序流程都可以使用三种基本的结构来构成 ”。1968年 Dijkstra 等发表了著名的论文《GOTO语句有害论》(Go To Statement Considered Harmtul)。

自此人们的编程方式发生重大变化,每种语言都提供这些基本控制结构的实现方式,并提供把数据访问局部化的能力,以及某种形式的模块化编译机制。正是这个原因,在 Java 程序设计中,虽然 goto 作为关键字保留了下来,但是一直没有启用。

结构化程序设计语言,强调用模块化、积木式的方法来建立程序。采用结构化程序设计方法,可使程序的逻辑结构清晰、层次分明、可读性好、可靠性强,从而提高了程序的开发效率,保证了程序质量,改善了程序的可靠性。

一般来说程序的结构包含以下 3 种:

(1)顺序结构。

(2)选择结构。

(3)循环结构。

这 3 种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个运行出口。程序中使用了上面这些结构的好处是这些单一的入口、出口可让程序可控、易读、好维护。

1.顺序结构

结构化程序的最简单的结构就是顺序结构。所谓顺序结构程序就是按书写顺序执行的语句构成的程序段。

通常情况下,顺序结构是指按照程序语句出现的先后顺序一句一句地执行。但有一些程序并不按顺序执行语句,这个过程称为“控制的转移”,它涉及到了另外两类程序的控制结构,即分支结构和循环结构。

2.分支结构

选择结构也称为分支结构,在许多实际问题的程序设计中,根据输入数据和中间结果的不同,需要选择不同的语句组执行。在这种情况下,必须根据某个变量或表达式的值作出判断,以决定执行哪些语句和不执行哪些语句。

选择结构是根据给定的条件进行判断,决定执行哪个分支的程序段。条件分支不是我们常说的“兵分两路”,而条件分支在执行主要用于两个分支的选择,由 if 语句和 if … else 语句来实现。

if … else 语句可以依据判断条件的结果,来决定要执行的语句。

3.循环结构

循环结构是程序中的另一种重要结构,它和顺序结构、选择结构共同作为各种复杂程序的基本构造部件。循环结构的特点是在给定条件成立时,反复执行某个程序段。通常我们称给定条件为循环条件,称反复执行的程序段为循环体。循环体可以是复合语句、单个语句或空语句。在循环体中也可以包含循环语句,实现循环的嵌套。

二、选择结构

Java 语言中的选择结构提供了以下两种类型的分支结构。

条件分支:根据给定的条件进行判断,决定执行某个分支的程序段。

开关分支:根据给定整型表达式的值进行判断,然后决定执行多路分支中的一支。

条件分支主要用于两个分支的选择,由 if 语句和 if … else 语句来实现。开关分支用于多个分支的选择,由 switch 语句来实现。

1.if 语句

if 语句(if - then Statement)用于实现条件分支结构,它在可选动作中作出选择,执行某个分支的程序段。if 语句有两种格式在使用中供选择。要根据判断的结构来执行不同的语句时,使用 if 语句是一个很好的选择,它会准确地检测判断条件成立与否,再决定是否要执行后面的语句。

if 语句的格式如下:       

        if(判断条件){

            语句1 
            …
            语句n
        }

若是在 if 语句主体中要处理的语句只有 1 个,可省略左、右大括号。但不利于阅读和检查错误。

2. if … else 语句

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java学习总结——程序控制结构 的相关文章

随机推荐

  • Springboot程序开启远程DEBUG

    一 远程debug的原理 Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式 并在调试器中连接到程序所在的调试地址 从而实现对程序的远程调试 具体步骤如下 在运行Spring Boot程序时 在
  • 【2023考研】数据结构常考应用典型例题(含真题)

    前言 本文针对 数据结构 博主花了几天时间列出了考研常考的应用题型 讲解详细 方便复习 各类题型所涉及的知识点包括但不限于队列 二叉排序树 平衡二叉树 哈夫曼树及哈夫曼编码 图的存储 最小生成树 关键路径 排序算法等等 标题即为考点 例题出
  • P1010 [NOIP1998 普及组] 幂次方 递归模拟

    题目描述 任何一个正整数都可以用 2 的幂次方表示 例如 137 2 7 2 3 2 0 同时约定方次用括号来表示 即 a b可表示为a b 由此可知 137 可表示为 2 7 2 3 2 0 进一步 7 2 2 2 2 0 2 1 用 2
  • Macbook air 安装Windows 10 错误:no bootable device insert boot disk and press any key 终极解决办法

    macbook型号 air 2012 当前操作系统 Catalina 安装工具 boot camp assistant 要安装的双系统 windows 10专业版 下载来源于微软官方 出现问题 安装系统时提示 no bootable dev
  • 硬件描述测试软件库中74138,数字系统设计与Verilog HDL课后习题

    习题1 1 1现代EDA技术的特点有哪些 1 2什么是Top down设计方式 1 3数字系统的实现方式有哪些 各有什么优缺点 1 4什么是IP复用技术 IP核对EDA技术的应用和发展有什么意义 1 5用硬件描述语言设计数字电路的优势是什么
  • 关于SQLyog创建的数据库不显示的问题

    最初的问题是这样的 创建了很多数据库 然而只显示一个mysql 用show databases语句 所有的数据库又能显示出来 原因是 创建连接的时候数据 库的那一栏填了mysql 重新创建 不用填写即可 这样就好了 网上搜了好多解决办法 都
  • Sudo 堆缓冲区溢出致本地提权漏洞(CVE-2021-3156)

    1 漏洞描述 2021年1月26日 Sudo发布安全通告 修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞 当sudo通过 s或 i命令行选项在shell模式下运行命令时 它将在命令参数中使用反斜杠转义特殊字符
  • macbook pro换固态硬盘ssd与移植mac os x系统

    macbook买了一年多了 当时选择了macbook pro 2012 最近一段时间 开机越来越慢了差不多要2分钟 没办法只好给电脑硬盘升级了 准备 1 淘宝上700元左右200多G固态硬盘 2 一个空的移动 1T 硬盘用来系统备份移植 t
  • webpack打包报错:if (!scriptUrl) throw new Error(“Automatic publicPath is not supported in this browser“)

    翻车现场 ERROR in Error D Work test webpack demo 05 打包图片资源 src index html 104 if scriptUrl throw new Error Automatic publicP
  • tq210-kernel 3.0.8 NFS+文件系统

    2016 11 25 kernel 4 1 33的网卡驱动一直没有调通 先放一放 先利用板子带的kernel3 0 8来做个文件系统 busybox 是一个工具箱 单个bin文件实现常用的ls cd 等等命令 堪称瑞士军刀 编译很简单 看看
  • 《C++ primer》练习3.17:改写单词为大写

    最近看 C primer 有这样一个题目 从cin读入一组词并把它们存入一个vector 对象 然后设法把所有词都改写为大写形式 输出改变后的结果 每个词占一行 考察 怎么输入字符串 怎么存入vector对象 怎么对字符串字符处理 代码 i
  • Object.equals方法的重写

    简要说明下 重写equals 一般都需要重写Object hashCode方法 因为ObjectA equals ObjectB 时 按理说 ObjectA hashCode ObjectB hashCode 但是重写equals 不重写h
  • 查看linux用户密码

    需要root用户 用户名在 etc passwd这个文件中 密码在 etc shadow中 cat etc passwd cat etc shadow root 6 1WtyW6O0baQmTkDG o YXXTOZSb7hP4Hitigz
  • MATRIX: 1 ctf challenge

    MATRIX 1 About Release Back to the Top Name Matrix 1 Date release 19 Aug 2018 Author Ajay Verma Series Matrix Download B
  • OpenAI-ChatGPT最新官方接口《微调ChatGPT模型》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

    微调ChatGPT模型 前言 Introduction 导言 What models can be fine tuned 哪些模型可以微调 Installation 安装 Prepare training data 准备训练数据 CLI d
  • VC下MFC程序自删除(自杀)几种方法的实践与探讨

    在VC下做了个MFC的程序 想让他运行后 自动删除自己 在网上看了些资料 方法也有一些 都实践了一下 感觉对MFC的程序 使用cmd exe可能更合适一些 其他的方法也蛮好 蛮经典的 不过我感觉用在MFC程序上就不太合适了 我实践的方法有三
  • 程序设计职工管理系统

    需求分析 1 1 设计系统的目的分析 本系统要求用 C 语言建立一个职工信息管理系统 本职工信息管理系统可以实现对众多员工信息的管理 包含对职工信息进行添加 查询 删除 修改 1 2系统的界面要求 按任意键便可以进入主菜单 在主菜单上显示出
  • 主线程消息处理

    写程序过程中 往往会遇到在按钮时间中执行一个循环事件 for while 耗费比较长的时候 这个时候会造成界面的假死想象 对于经常写程序的人来说 解决起来相对比较容易 创建一个子线程 然后把事件放到子线程执行 但是对于初学者而言 创建子线程
  • 【项目】Vue3+TS 动态路由 面包屑 查询重置 列表

    项目 Vue3 TS 动态路由 面包屑 查询重置 列表 东非不开森的主页 热烈的不是青春 而是我们 如有错误或不足之处 希望可以指正 非常感谢 项目 一 动态路由 二 面包屑 三 搭建搜索框 四 搭建用户列表 一 动态路由 动态获取所有的路
  • Java学习总结——程序控制结构

    柒 程序执行方向 一 程序逻辑 结构化程序设计 Structured programming 是一种经典的编程模式 在1960年开始发展 其思想最早是由荷兰著名计算机科学家 E W Dijkstra 提出的 他设计了一套规则 使程序设计具有